helia 4.0.0-e554493 → 4.0.1-31cdfa8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.min.js +20 -26
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/package.json +31 -31
- package/src/version.ts +1 -1
package/dist/index.min.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
(function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Helia = factory()}(typeof self !== 'undefined' ? self : this, function () {
|
|
2
|
-
"use strict";var Helia=(()=>{var cI=Object.create;var Wu=Object.defineProperty;var lI=Object.getOwnPropertyDescriptor;var uI=Object.getOwnPropertyNames;var fI=Object.getPrototypeOf,dI=Object.prototype.hasOwnProperty;var Oe=(r,e)=>()=>(r&&(e=r(r=0)),e);var me=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),oe=(r,e)=>{for(var t in e)Wu(r,t,{get:e[t],enumerable:!0})},F8=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of uI(e))!dI.call(r,o)&&o!==t&&Wu(r,o,{get:()=>e[o],enumerable:!(n=lI(e,o))||n.enumerable});return r};var Ue=(r,e,t)=>(t=r!=null?cI(fI(r)):{},F8(e||!r||!r.__esModule?Wu(t,"default",{value:r,enumerable:!0}):t,r)),zu=r=>F8(Wu({},"__esModule",{value:!0}),r);var l5=me((Cq,c5)=>{c5.exports=a5;var i5=128,JI=127,ZI=~JI,ek=Math.pow(2,31);function a5(r,e,t){e=e||[],t=t||0;for(var n=t;r>=ek;)e[t++]=r&255|i5,r/=128;for(;r&ZI;)e[t++]=r&255|i5,r>>>=7;return e[t]=r|0,a5.bytes=t-n+1,e}});var d5=me((Nq,f5)=>{f5.exports=h2;var tk=128,u5=127;function h2(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw h2.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&u5)<<o:(i&u5)*Math.pow(2,o),o+=7}while(i>=tk);return h2.bytes=s-n,t}});var p5=me((Bq,h5)=>{var rk=Math.pow(2,7),nk=Math.pow(2,14),ok=Math.pow(2,21),sk=Math.pow(2,28),ik=Math.pow(2,35),ak=Math.pow(2,42),ck=Math.pow(2,49),lk=Math.pow(2,56),uk=Math.pow(2,63);h5.exports=function(r){return r<rk?1:r<nk?2:r<ok?3:r<sk?4:r<ik?5:r<ak?6:r<ck?7:r<lk?8:r<uk?9:10}});var y5=me((Lq,m5)=>{m5.exports={encode:l5(),decode:d5(),encodingLength:p5()}});var w5=me((Oq,b5)=>{"use strict";var g5=y5();b5.exports=r=>{if(!(r instanceof Uint8Array))throw new Error("arg needs to be a Uint8Array");let e=[];for(;r.length>0;){let t=g5.decode(r);e.push(t),r=r.slice(g5.decode.bytes)}return e}});var p2=me((Kq,E5)=>{var oa=1e3,sa=oa*60,ia=sa*60,Xs=ia*24,fk=Xs*7,dk=Xs*365.25;E5.exports=function(r,e){e=e||{};var t=typeof r;if(t==="string"&&r.length>0)return hk(r);if(t==="number"&&isFinite(r))return e.long?mk(r):pk(r);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(r))};function hk(r){if(r=String(r),!(r.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(r);if(e){var t=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return t*dk;case"weeks":case"week":case"w":return t*fk;case"days":case"day":case"d":return t*Xs;case"hours":case"hour":case"hrs":case"hr":case"h":return t*ia;case"minutes":case"minute":case"mins":case"min":case"m":return t*sa;case"seconds":case"second":case"secs":case"sec":case"s":return t*oa;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return t;default:return}}}}function pk(r){var e=Math.abs(r);return e>=Xs?Math.round(r/Xs)+"d":e>=ia?Math.round(r/ia)+"h":e>=sa?Math.round(r/sa)+"m":e>=oa?Math.round(r/oa)+"s":r+"ms"}function mk(r){var e=Math.abs(r);return e>=Xs?Ju(r,e,Xs,"day"):e>=ia?Ju(r,e,ia,"hour"):e>=sa?Ju(r,e,sa,"minute"):e>=oa?Ju(r,e,oa,"second"):r+" ms"}function Ju(r,e,t,n){var o=e>=t*1.5;return Math.round(r/t)+" "+n+(o?"s":"")}});var v5=me((Mq,x5)=>{function yk(r){t.debug=t,t.default=t,t.coerce=c,t.disable=s,t.enable=o,t.enabled=i,t.humanize=p2(),t.destroy=l,Object.keys(r).forEach(f=>{t[f]=r[f]}),t.names=[],t.skips=[],t.formatters={};function e(f){let u=0;for(let d=0;d<f.length;d++)u=(u<<5)-u+f.charCodeAt(d),u|=0;return t.colors[Math.abs(u)%t.colors.length]}t.selectColor=e;function t(f){let u,d=null,y,p;function m(...g){if(!m.enabled)return;let b=m,E=Number(new Date),w=E-(u||E);b.diff=w,b.prev=u,b.curr=E,u=E,g[0]=t.coerce(g[0]),typeof g[0]!="string"&&g.unshift("%O");let _=0;g[0]=g[0].replace(/%([a-zA-Z%])/g,(k,D)=>{if(k==="%%")return"%";_++;let A=t.formatters[D];if(typeof A=="function"){let C=g[_];k=A.call(b,C),g.splice(_,1),_--}return k}),t.formatArgs.call(b,g),(b.log||t.log).apply(b,g)}return m.namespace=f,m.useColors=t.useColors(),m.color=t.selectColor(f),m.extend=n,m.destroy=t.destroy,Object.defineProperty(m,"enabled",{enumerable:!0,configurable:!1,get:()=>d!==null?d:(y!==t.namespaces&&(y=t.namespaces,p=t.enabled(f)),p),set:g=>{d=g}}),typeof t.init=="function"&&t.init(m),m}function n(f,u){let d=t(this.namespace+(typeof u>"u"?":":u)+f);return d.log=this.log,d}function o(f){t.save(f),t.namespaces=f,t.names=[],t.skips=[];let u,d=(typeof f=="string"?f:"").split(/[\s,]+/),y=d.length;for(u=0;u<y;u++)d[u]&&(f=d[u].replace(/\*/g,".*?"),f[0]==="-"?t.skips.push(new RegExp("^"+f.slice(1)+"$")):t.names.push(new RegExp("^"+f+"$")))}function s(){let f=[...t.names.map(a),...t.skips.map(a).map(u=>"-"+u)].join(",");return t.enable(""),f}function i(f){if(f[f.length-1]==="*")return!0;let u,d;for(u=0,d=t.skips.length;u<d;u++)if(t.skips[u].test(f))return!1;for(u=0,d=t.names.length;u<d;u++)if(t.names[u].test(f))return!0;return!1}function a(f){return f.toString().substring(2,f.toString().length-2).replace(/\.\*\?$/,"*")}function c(f){return f instanceof Error?f.stack||f.message:f}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return t.enable(t.load()),t}x5.exports=yk});var m2=me((mr,Zu)=>{mr.formatArgs=bk;mr.save=wk;mr.load=Ek;mr.useColors=gk;mr.storage=xk();mr.destroy=(()=>{let r=!1;return()=>{r||(r=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();mr.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function gk(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function bk(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Zu.exports.humanize(this.diff),!this.useColors)return;let e="color: "+this.color;r.splice(1,0,e,"color: inherit");let t=0,n=0;r[0].replace(/%[a-zA-Z%]/g,o=>{o!=="%%"&&(t++,o==="%c"&&(n=t))}),r.splice(n,0,e)}mr.log=console.debug||console.log||(()=>{});function wk(r){try{r?mr.storage.setItem("debug",r):mr.storage.removeItem("debug")}catch{}}function Ek(){let r;try{r=mr.storage.getItem("debug")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function xk(){try{return localStorage}catch{}}Zu.exports=v5()(mr);var{formatters:vk}=Zu.exports;vk.j=function(r){try{return JSON.stringify(r)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var R5=me((eH,S5)=>{S5.exports=b2;var _5=128,Ak=127,Ik=~Ak,kk=Math.pow(2,31);function b2(r,e,t){if(Number.MAX_SAFE_INTEGER&&r>Number.MAX_SAFE_INTEGER)throw b2.bytes=0,new RangeError("Could not encode varint");e=e||[],t=t||0;for(var n=t;r>=kk;)e[t++]=r&255|_5,r/=128;for(;r&Ik;)e[t++]=r&255|_5,r>>>=7;return e[t]=r|0,b2.bytes=t-n+1,e}});var k5=me((tH,I5)=>{I5.exports=w2;var Tk=128,A5=127;function w2(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a||o>49)throw w2.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&A5)<<o:(i&A5)*Math.pow(2,o),o+=7}while(i>=Tk);return w2.bytes=s-n,t}});var D5=me((rH,T5)=>{var Dk=Math.pow(2,7),Pk=Math.pow(2,14),Ck=Math.pow(2,21),Nk=Math.pow(2,28),Bk=Math.pow(2,35),Lk=Math.pow(2,42),Ok=Math.pow(2,49),Kk=Math.pow(2,56),Mk=Math.pow(2,63);T5.exports=function(r){return r<Dk?1:r<Pk?2:r<Ck?3:r<Nk?4:r<Bk?5:r<Lk?6:r<Ok?7:r<Kk?8:r<Mk?9:10}});var C5=me((nH,P5)=>{P5.exports={encode:R5(),decode:k5(),encodingLength:D5()}});var ei=me((oG,r6)=>{"use strict";function t6(r,e){for(let t in e)Object.defineProperty(r,t,{value:e[t],enumerable:!0,configurable:!0});return r}function vT(r,e,t){if(!r||typeof r=="string")throw new TypeError("Please pass an Error to err-code");t||(t={}),typeof e=="object"&&(t=e,e=""),e&&(t.code=e);try{return t6(r,t)}catch{t.message=r.message,t.stack=r.stack;let o=function(){};return o.prototype=Object.create(Object.getPrototypeOf(r)),t6(new o,t)}}r6.exports=vT});var i6=me((SG,s6)=>{"use strict";s6.exports=function(){return Date.now()}});var c6=me((RG,a6)=>{"use strict";var p1=i6(),j2=class{constructor(e,t,n){let o=this;this._started=p1(),this._rescheduled=0,this._scheduled=t,this._args=n,this._triggered=!1,this._timerWrapper=()=>{o._rescheduled>0?(o._scheduled=o._rescheduled-(p1()-o._started),o._schedule(o._scheduled)):(o._triggered=!0,e.apply(null,o._args))},this._timer=setTimeout(this._timerWrapper,t)}reschedule(e){e||(e=this._scheduled);let t=p1();t+e-(this._started+this._scheduled)<0?(clearTimeout(this._timer),this._schedule(e)):this._triggered?this._schedule(e):(this._started=t,this._rescheduled=e)}_schedule(e){this._triggered=!1,this._started=p1(),this._rescheduled=0,this._scheduled=e,this._timer=setTimeout(this._timerWrapper,e)}clear(){clearTimeout(this._timer)}};function BT(){if(typeof arguments[0]!="function")throw new Error("callback needed");if(typeof arguments[1]!="number")throw new Error("timeout needed");let r;if(arguments.length>0){r=new Array(arguments.length-2);for(var e=0;e<r.length;e++)r[e]=arguments[e+2]}return new j2(arguments[0],arguments[1],r)}a6.exports=BT});var f6=me((AG,u6)=>{"use strict";var{AbortController:LT}=globalThis,l6=c6(),X2=class r extends LT{constructor(e){super(),this._ms=e,this._timer=l6(()=>this.abort(),e),Object.setPrototypeOf(this,r.prototype)}abort(){return this._timer.clear(),super.abort()}clear(){this._timer.clear()}reset(){this._timer.clear(),this._timer=l6(()=>this.abort(),this._ms)}};u6.exports={TimeoutController:X2}});var b1=me((KG,e0)=>{"use strict";var ua=typeof Reflect=="object"?Reflect:null,g6=ua&&typeof ua.apply=="function"?ua.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)},y1;ua&&typeof ua.ownKeys=="function"?y1=ua.ownKeys:Object.getOwnPropertySymbols?y1=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:y1=function(e){return Object.getOwnPropertyNames(e)};function UT(r){console&&console.warn&&console.warn(r)}var w6=Number.isNaN||function(e){return e!==e};function Ve(){Ve.init.call(this)}e0.exports=Ve;e0.exports.once=HT;Ve.EventEmitter=Ve;Ve.prototype._events=void 0;Ve.prototype._eventsCount=0;Ve.prototype._maxListeners=void 0;var b6=10;function g1(r){if(typeof r!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof r)}Object.defineProperty(Ve,"defaultMaxListeners",{enumerable:!0,get:function(){return b6},set:function(r){if(typeof r!="number"||r<0||w6(r))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+r+".");b6=r}});Ve.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Ve.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||w6(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function E6(r){return r._maxListeners===void 0?Ve.defaultMaxListeners:r._maxListeners}Ve.prototype.getMaxListeners=function(){return E6(this)};Ve.prototype.emit=function(e){for(var t=[],n=1;n<arguments.length;n++)t.push(arguments[n]);var o=e==="error",s=this._events;if(s!==void 0)o=o&&s.error===void 0;else if(!o)return!1;if(o){var i;if(t.length>0&&(i=t[0]),i instanceof Error)throw i;var a=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw a.context=i,a}var c=s[e];if(c===void 0)return!1;if(typeof c=="function")g6(c,this,t);else for(var l=c.length,f=R6(c,l),n=0;n<l;++n)g6(f[n],this,t);return!0};function x6(r,e,t,n){var o,s,i;if(g1(t),s=r._events,s===void 0?(s=r._events=Object.create(null),r._eventsCount=0):(s.newListener!==void 0&&(r.emit("newListener",e,t.listener?t.listener:t),s=r._events),i=s[e]),i===void 0)i=s[e]=t,++r._eventsCount;else if(typeof i=="function"?i=s[e]=n?[t,i]:[i,t]:n?i.unshift(t):i.push(t),o=E6(r),o>0&&i.length>o&&!i.warned){i.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=r,a.type=e,a.count=i.length,UT(a)}return r}Ve.prototype.addListener=function(e,t){return x6(this,e,t,!1)};Ve.prototype.on=Ve.prototype.addListener;Ve.prototype.prependListener=function(e,t){return x6(this,e,t,!0)};function FT(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function v6(r,e,t){var n={fired:!1,wrapFn:void 0,target:r,type:e,listener:t},o=FT.bind(n);return o.listener=t,n.wrapFn=o,o}Ve.prototype.once=function(e,t){return g1(t),this.on(e,v6(this,e,t)),this};Ve.prototype.prependOnceListener=function(e,t){return g1(t),this.prependListener(e,v6(this,e,t)),this};Ve.prototype.removeListener=function(e,t){var n,o,s,i,a;if(g1(t),o=this._events,o===void 0)return this;if(n=o[e],n===void 0)return this;if(n===t||n.listener===t)--this._eventsCount===0?this._events=Object.create(null):(delete o[e],o.removeListener&&this.emit("removeListener",e,n.listener||t));else if(typeof n!="function"){for(s=-1,i=n.length-1;i>=0;i--)if(n[i]===t||n[i].listener===t){a=n[i].listener,s=i;break}if(s<0)return this;s===0?n.shift():VT(n,s),n.length===1&&(o[e]=n[0]),o.removeListener!==void 0&&this.emit("removeListener",e,a||t)}return this};Ve.prototype.off=Ve.prototype.removeListener;Ve.prototype.removeAllListeners=function(e){var t,n,o;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[e]),this;if(arguments.length===0){var s=Object.keys(n),i;for(o=0;o<s.length;++o)i=s[o],i!=="removeListener"&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(t=n[e],typeof t=="function")this.removeListener(e,t);else if(t!==void 0)for(o=t.length-1;o>=0;o--)this.removeListener(e,t[o]);return this};function _6(r,e,t){var n=r._events;if(n===void 0)return[];var o=n[e];return o===void 0?[]:typeof o=="function"?t?[o.listener||o]:[o]:t?qT(o):R6(o,o.length)}Ve.prototype.listeners=function(e){return _6(this,e,!0)};Ve.prototype.rawListeners=function(e){return _6(this,e,!1)};Ve.listenerCount=function(r,e){return typeof r.listenerCount=="function"?r.listenerCount(e):S6.call(r,e)};Ve.prototype.listenerCount=S6;function S6(r){var e=this._events;if(e!==void 0){var t=e[r];if(typeof t=="function")return 1;if(t!==void 0)return t.length}return 0}Ve.prototype.eventNames=function(){return this._eventsCount>0?y1(this._events):[]};function R6(r,e){for(var t=new Array(e),n=0;n<e;++n)t[n]=r[n];return t}function VT(r,e){for(;e+1<r.length;e++)r[e]=r[e+1];r.pop()}function qT(r){for(var e=new Array(r.length),t=0;t<e.length;++t)e[t]=r[t].listener||r[t];return e}function HT(r,e){return new Promise(function(t,n){function o(i){r.removeListener(e,s),n(i)}function s(){typeof r.removeListener=="function"&&r.removeListener("error",o),t([].slice.call(arguments))}A6(r,e,s,{once:!0}),e!=="error"&&$T(r,o,{once:!0})})}function $T(r,e,t){typeof r.on=="function"&&A6(r,"error",e,t)}function A6(r,e,t,n){if(typeof r.on=="function")n.once?r.once(e,t):r.on(e,t);else if(typeof r.addEventListener=="function")r.addEventListener(e,function o(s){n.once&&r.removeEventListener(e,o),t(s)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof r)}});var C6=me((D6,P6)=>{"use strict";var GT=Math.exp;D6=P6.exports=function(e){if(typeof e!="number")throw new Error("must provide a timespan to the moving average constructor");if(e<=0)throw new Error("must provide a timespan > 0 to the moving average constructor");let t,n=0,o=0,s=0,i,a={};function c(l,f){return 1-GT(-(l-f)/e)}return a.push=function(f,u){if(i){let d=c(f,i),y=u-t,p=d*y;t=d*u+(1-d)*t,n=(1-d)*(n+y*p),o=Math.sqrt(n),s=t+d*y}else t=u;i=f},a.movingAverage=function(){return t},a.variance=function(){return n},a.deviation=function(){return o},a.forecast=function(){return s},a}});var Ng=me(xa=>{"use strict";var kP="[object ArrayBuffer]",bo=class r{static isArrayBuffer(e){return Object.prototype.toString.call(e)===kP}static toArrayBuffer(e){return this.isArrayBuffer(e)?e:e.byteLength===e.buffer.byteLength||e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:this.toUint8Array(e.buffer).slice(e.byteOffset,e.byteOffset+e.byteLength).buffer}static toUint8Array(e){return this.toView(e,Uint8Array)}static toView(e,t){if(e.constructor===t)return e;if(this.isArrayBuffer(e))return new t(e);if(this.isArrayBufferView(e))return new t(e.buffer,e.byteOffset,e.byteLength);throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'")}static isBufferSource(e){return this.isArrayBufferView(e)||this.isArrayBuffer(e)}static isArrayBufferView(e){return ArrayBuffer.isView(e)||e&&this.isArrayBuffer(e.buffer)}static isEqual(e,t){let n=r.toUint8Array(e),o=r.toUint8Array(t);if(n.length!==o.byteLength)return!1;for(let s=0;s<n.length;s++)if(n[s]!==o[s])return!1;return!0}static concat(...e){let t;Array.isArray(e[0])&&!(e[1]instanceof Function)||Array.isArray(e[0])&&e[1]instanceof Function?t=e[0]:e[e.length-1]instanceof Function?t=e.slice(0,e.length-1):t=e;let n=0;for(let i of t)n+=i.byteLength;let o=new Uint8Array(n),s=0;for(let i of t){let a=this.toUint8Array(i);o.set(a,s),s+=a.length}return e[e.length-1]instanceof Function?this.toView(o,e[e.length-1]):o.buffer}},M0="string",TP=/^[0-9a-f]+$/i,DP=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,PP=/^[a-zA-Z0-9-_]+$/,G1=class{static fromString(e){let t=unescape(encodeURIComponent(e)),n=new Uint8Array(t.length);for(let o=0;o<t.length;o++)n[o]=t.charCodeAt(o);return n.buffer}static toString(e){let t=bo.toUint8Array(e),n="";for(let s=0;s<t.length;s++)n+=String.fromCharCode(t[s]);return decodeURIComponent(escape(n))}},Br=class{static toString(e,t=!1){let n=bo.toArrayBuffer(e),o=new DataView(n),s="";for(let i=0;i<n.byteLength;i+=2){let a=o.getUint16(i,t);s+=String.fromCharCode(a)}return s}static fromString(e,t=!1){let n=new ArrayBuffer(e.length*2),o=new DataView(n);for(let s=0;s<e.length;s++)o.setUint16(s*2,e.charCodeAt(s),t);return n}},Y1=class r{static isHex(e){return typeof e===M0&&TP.test(e)}static isBase64(e){return typeof e===M0&&DP.test(e)}static isBase64Url(e){return typeof e===M0&&PP.test(e)}static ToString(e,t="utf8"){let n=bo.toUint8Array(e);switch(t.toLowerCase()){case"utf8":return this.ToUtf8String(n);case"binary":return this.ToBinary(n);case"hex":return this.ToHex(n);case"base64":return this.ToBase64(n);case"base64url":return this.ToBase64Url(n);case"utf16le":return Br.toString(n,!0);case"utf16":case"utf16be":return Br.toString(n);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromString(e,t="utf8"){if(!e)return new ArrayBuffer(0);switch(t.toLowerCase()){case"utf8":return this.FromUtf8String(e);case"binary":return this.FromBinary(e);case"hex":return this.FromHex(e);case"base64":return this.FromBase64(e);case"base64url":return this.FromBase64Url(e);case"utf16le":return Br.fromString(e,!0);case"utf16":case"utf16be":return Br.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){let t=bo.toUint8Array(e);if(typeof btoa<"u"){let n=this.ToString(t,"binary");return btoa(n)}else return Buffer.from(t).toString("base64")}static FromBase64(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64(t))throw new TypeError("Argument 'base64Text' is not Base64 encoded");return typeof atob<"u"?this.FromBinary(atob(t)):new Uint8Array(Buffer.from(t,"base64")).buffer}static FromBase64Url(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64Url(t))throw new TypeError("Argument 'base64url' is not Base64Url encoded");return this.FromBase64(this.Base64Padding(t.replace(/\-/g,"+").replace(/\_/g,"/")))}static ToBase64Url(e){return this.ToBase64(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=/g,"")}static FromUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.FromBinary(e);case"utf8":return G1.fromString(e);case"utf16":case"utf16be":return Br.fromString(e);case"utf16le":case"usc2":return Br.fromString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.ToBinary(e);case"utf8":return G1.toString(e);case"utf16":case"utf16be":return Br.toString(e);case"utf16le":case"usc2":return Br.toString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromBinary(e){let t=e.length,n=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=e.charCodeAt(o);return n.buffer}static ToBinary(e){let t=bo.toUint8Array(e),n="";for(let o=0;o<t.length;o++)n+=String.fromCharCode(t[o]);return n}static ToHex(e){let t=bo.toUint8Array(e),n="",o=t.length;for(let s=0;s<o;s++){let i=t[s];i<16&&(n+="0"),n+=i.toString(16)}return n}static FromHex(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isHex(t))throw new TypeError("Argument 'hexString' is not HEX encoded");t.length%2&&(t=`0${t}`);let n=new Uint8Array(t.length/2);for(let o=0;o<t.length;o=o+2){let s=t.slice(o,o+2);n[o/2]=parseInt(s,16)}return n.buffer}static ToUtf16String(e,t=!1){return Br.toString(e,t)}static FromUtf16String(e,t=!1){return Br.fromString(e,t)}static Base64Padding(e){let t=4-e.length%4;if(t<4)for(let n=0;n<t;n++)e+="=";return e}static formatString(e){return e?.replace(/[\n\r\t ]/g,"")||""}};Y1.DEFAULT_UTF8_ENCODING="utf8";function CP(r,...e){let t=arguments[0];for(let n=1;n<arguments.length;n++){let o=arguments[n];for(let s in o)t[s]=o[s]}return t}function NP(...r){let e=r.map(o=>o.byteLength).reduce((o,s)=>o+s),t=new Uint8Array(e),n=0;return r.map(o=>new Uint8Array(o)).forEach(o=>{for(let s of o)t[n++]=s}),t.buffer}function BP(r,e){if(!(r&&e)||r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let o=0;o<r.byteLength;o++)if(t[o]!==n[o])return!1;return!0}xa.BufferSourceConverter=bo;xa.Convert=Y1;xa.assign=CP;xa.combine=NP;xa.isEqual=BP});var Kf=me((_X,Z0)=>{var vX=function(){typeof Z0<"u"&&(Z0.exports=m);var r=86400,e=3200,t=146097*e/400,n=r*t,o=1e3*n,s=864e13,i=4294967296,a=1e6,c="000000000",l=Math.trunc||function(A){var C=A-A%1;return C==0&&(A<0||A===0&&1/A!=1/0)?-0:C},f=m.prototype,u=(m.fromDate=function(A){return new m(+A)},m.fromInt64BE=_(0,1,2,3,0,4),m.fromInt64LE=_(3,2,1,0,4,0),m.fromString=function(L){var C,U=new m,L=(L+="").replace(/^\s*[+\-]?\d+/,function(H){var H=+H,re=1970+(H-1970)%400;return U.year=H-re,re}).replace(/(?:Z|([+\-]\d{2}):?(\d{2}))$/,function(F,H,re){return H<0&&(re*=-1),C=6e4*(60*+H+ +re),""}).replace(/\.\d+$/,function(F){return U.nano=+(F+c).substr(1,9),""}).split(/\D+/);if(1<L.length?L[1]--:L[1]=0,U.time=C=Date.UTC.apply(Date,L)-(C||0),isNaN(C))throw new TypeError("Invalid Date");return g(U)},m.fromTimeT=function(A){return E(A,0)},f.year=0,f.time=0,f.nano=0,f.addNano=function(A){return this.nano+=+A||0,this},f.getNano=function(){var A=g(this);return(A.time%1e3*a+ +A.nano+1e9)%1e9},f.getTimeT=function(){var C=g(this),A=Math.floor(C.time/1e3),C=C.year;return C&&(A+=C*t*r/e),A},f.getYear=function(){return this.toDate().getUTCFullYear()+this.year},f.toDate=function(){return b(g(this).time)},f.toJSON=function(){return this.toString().replace(/0{1,6}Z$/,"Z")},f.toString=function(A){var C=this,U=C.toDate(),L={H:function(){return k(U.getUTCHours())},L:function(){return D(U.getUTCMilliseconds(),3)},M:function(){return k(U.getUTCMinutes())},N:function(){return D(C.getNano(),9)},S:function(){return k(U.getUTCSeconds())},Y:function(){var F=C.getYear();return 999999<F?"+"+F:9999<F?"+"+D(F,6):0<=F?D(F,4):-999999<=F?"-"+D(-F,6):F},a:function(){return y[U.getUTCDay()]},b:function(){return d[U.getUTCMonth()]},d:function(){return k(U.getUTCDate())},e:function(){return function(F){return(9<F?"":" ")+(0|F)}(U.getUTCDate())},m:function(){return k(U.getUTCMonth()+1)}};return function F(H){return H.replace(/%./g,function(re){var N=re[1],T=p[N],N=L[N];return T?F(T):N?N():re})}(A||u)},f.writeInt64BE=w(0,1,2,3,0,4),f.writeInt64LE=w(3,2,1,0,4,0),"%Y-%m-%dT%H:%M:%S.%NZ"),d=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],y=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],p={"%":"%",F:"%Y-%m-%d",n:`
|
|
3
|
-
`,R:"%H:%M",T:"%H:%M:%S",t:" ",X:"%T",Z:"GMT",z:"+0000"};return m;function m(A,C,U){var L=this;if(!(L instanceof m))return new m(A,C,U);L.time=+A||0,L.nano=+C||0,L.year=+U||0,g(L)}function g(A){var C,U,L,F=A.year,H=A.time,re=A.nano,T=((re<0||a<=re)&&(re-=(U=Math.floor(re/a))*a,H+=U,U=1),F%e);return(H<-s||s<H||T)&&((C=l(H/o))&&(F+=C*e,H-=C*o),(L=b(H)).setUTCFullYear(T+L.getUTCFullYear()),L=(H=+L)+(C=l((F-=T)/e))*o,C&&-s<=L&&L<=s&&(F-=C*e,H=L),U=1),U&&(A.year=F,A.time=H,A.nano=re),A}function b(A){var C=new Date(0);return C.setTime(A),C}function E(F,L){F=+F||0;var U=l((L=(L|0)*i)/n)+l(F/n),L=L%n+F%n,F=l(L/n);return F&&(U+=F,L-=F*n),new m(1e3*L,0,U*e)}function w(A,C,U,L,F,H){return function(T,N){var P=g(this);T=T||new Array(8),I(T,N|=0);var R=Math.floor(P.time/1e3),P=P.year*(t*r/e),Y=l(P/i)+l(R/i),P=P%i+R%i,R=Math.floor(P/i);return R&&(Y+=R,P-=R*i),re(T,N+F,Y),re(T,N+H,P),T};function re(T,N,Y){T[N+A]=Y>>24&255,T[N+C]=Y>>16&255,T[N+U]=Y>>8&255,T[N+L]=255&Y}}function _(A,C,U,L,F,H){return function(T,N){I(T,N|=0);var Y=re(T,N+F);return E(re(T,N+H),Y)};function re(T,N){return 16777216*T[N+A]+(T[N+C]<<16|T[N+U]<<8|T[N+L])}}function I(A,C){if(A=A&&A.length,A==null)throw new TypeError("Invalid Buffer");if(A<C+8)throw new RangeError("Out of range")}function k(A){return(9<A?"":"0")+(0|A)}function D(A,C){return(c+(0|A)).substr(-C)}}()});var rb=me((oJ,um)=>{"use strict";var ZC=Object.prototype.hasOwnProperty,Zt="~";function Al(){}Object.create&&(Al.prototype=Object.create(null),new Al().__proto__||(Zt=!1));function eN(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function tb(r,e,t,n,o){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new eN(t,n||r,o),i=Zt?Zt+e:e;return r._events[i]?r._events[i].fn?r._events[i]=[r._events[i],s]:r._events[i].push(s):(r._events[i]=s,r._eventsCount++),r}function ed(r,e){--r._eventsCount===0?r._events=new Al:delete r._events[e]}function zt(){this._events=new Al,this._eventsCount=0}zt.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)ZC.call(t,n)&&e.push(Zt?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};zt.prototype.listeners=function(e){var t=Zt?Zt+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var o=0,s=n.length,i=new Array(s);o<s;o++)i[o]=n[o].fn;return i};zt.prototype.listenerCount=function(e){var t=Zt?Zt+e:e,n=this._events[t];return n?n.fn?1:n.length:0};zt.prototype.emit=function(e,t,n,o,s,i){var a=Zt?Zt+e:e;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,f,u;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,o),!0;case 5:return c.fn.call(c.context,t,n,o,s),!0;case 6:return c.fn.call(c.context,t,n,o,s,i),!0}for(u=1,f=new Array(l-1);u<l;u++)f[u-1]=arguments[u];c.fn.apply(c.context,f)}else{var d=c.length,y;for(u=0;u<d;u++)switch(c[u].once&&this.removeListener(e,c[u].fn,void 0,!0),l){case 1:c[u].fn.call(c[u].context);break;case 2:c[u].fn.call(c[u].context,t);break;case 3:c[u].fn.call(c[u].context,t,n);break;case 4:c[u].fn.call(c[u].context,t,n,o);break;default:if(!f)for(y=1,f=new Array(l-1);y<l;y++)f[y-1]=arguments[y];c[u].fn.apply(c[u].context,f)}}return!0};zt.prototype.on=function(e,t,n){return tb(this,e,t,n,!1)};zt.prototype.once=function(e,t,n){return tb(this,e,t,n,!0)};zt.prototype.removeListener=function(e,t,n,o){var s=Zt?Zt+e:e;if(!this._events[s])return this;if(!t)return ed(this,s),this;var i=this._events[s];if(i.fn)i.fn===t&&(!o||i.once)&&(!n||i.context===n)&&ed(this,s);else{for(var a=0,c=[],l=i.length;a<l;a++)(i[a].fn!==t||o&&!i[a].once||n&&i[a].context!==n)&&c.push(i[a]);c.length?this._events[s]=c.length===1?c[0]:c:ed(this,s)}return this};zt.prototype.removeAllListeners=function(e){var t;return e?(t=Zt?Zt+e:e,this._events[t]&&ed(this,t)):(this._events=new Al,this._eventsCount=0),this};zt.prototype.off=zt.prototype.removeListener;zt.prototype.addListener=zt.prototype.on;zt.prefixed=Zt;zt.EventEmitter=zt;typeof um<"u"&&(um.exports=zt)});var hE=me(Xl=>{(function(){var r,e,t,n,o,s,i,a;a=function(c){var l,f,u,d;return l=(c&255<<24)>>>24,f=(c&255<<16)>>>16,u=(c&65280)>>>8,d=c&255,[l,f,u,d].join(".")},i=function(c){var l,f,u,d,y,p;for(l=[],u=d=0;d<=3&&c.length!==0;u=++d){if(u>0){if(c[0]!==".")throw new Error("Invalid IP");c=c.substring(1)}p=e(c),y=p[0],f=p[1],c=c.substring(f),l.push(y)}if(c.length!==0)throw new Error("Invalid IP");switch(l.length){case 1:if(l[0]>4294967295)throw new Error("Invalid IP");return l[0]>>>0;case 2:if(l[0]>255||l[1]>16777215)throw new Error("Invalid IP");return(l[0]<<24|l[1])>>>0;case 3:if(l[0]>255||l[1]>255||l[2]>65535)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2])>>>0;case 4:if(l[0]>255||l[1]>255||l[2]>255||l[3]>255)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2]<<8|l[3])>>>0;default:throw new Error("Invalid IP")}},t=function(c){return c.charCodeAt(0)},n=t("0"),s=t("a"),o=t("A"),e=function(c){var l,f,u,d,y;for(d=0,l=10,f="9",u=0,c.length>1&&c[u]==="0"&&(c[u+1]==="x"||c[u+1]==="X"?(u+=2,l=16):"0"<=c[u+1]&&c[u+1]<="9"&&(u++,l=8,f="7")),y=u;u<c.length;){if("0"<=c[u]&&c[u]<=f)d=d*l+(t(c[u])-n)>>>0;else if(l===16)if("a"<=c[u]&&c[u]<="f")d=d*l+(10+t(c[u])-s)>>>0;else if("A"<=c[u]&&c[u]<="F")d=d*l+(10+t(c[u])-o)>>>0;else break;else break;if(d>4294967295)throw new Error("too large");u++}if(u===y)throw new Error("empty octet");return[d,u]},r=function(){function c(l,f){var u,d,y,p;if(typeof l!="string")throw new Error("Missing `net' parameter");if(f||(p=l.split("/",2),l=p[0],f=p[1]),f||(f=32),typeof f=="string"&&f.indexOf(".")>-1){try{this.maskLong=i(f)}catch(m){throw u=m,new Error("Invalid mask: "+f)}for(d=y=32;y>=0;d=--y)if(this.maskLong===4294967295<<32-d>>>0){this.bitmask=d;break}}else if(f||f===0)this.bitmask=parseInt(f,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(i(l)&this.maskLong)>>>0}catch(m){throw u=m,new Error("Invalid net address: "+l)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+f);this.size=Math.pow(2,32-this.bitmask),this.base=a(this.netLong),this.mask=a(this.maskLong),this.hostmask=a(~this.maskLong),this.first=this.bitmask<=30?a(this.netLong+1):this.base,this.last=this.bitmask<=30?a(this.netLong+this.size-2):a(this.netLong+this.size-1),this.broadcast=this.bitmask<=30?a(this.netLong+this.size-1):void 0}return c.prototype.contains=function(l){return typeof l=="string"&&(l.indexOf("/")>0||l.split(".").length!==4)&&(l=new c(l)),l instanceof c?this.contains(l.base)&&this.contains(l.broadcast||l.last):(i(l)&this.maskLong)>>>0===(this.netLong&this.maskLong)>>>0},c.prototype.next=function(l){return l==null&&(l=1),new c(a(this.netLong+this.size*l),this.mask)},c.prototype.forEach=function(l){var f,u,d;for(d=i(this.first),u=i(this.last),f=0;d<=u;)l(a(d),d,f),f++,d++},c.prototype.toString=function(){return this.base+"/"+this.bitmask},c}(),Xl.ip2long=i,Xl.long2ip=a,Xl.Netmask=r}).call(Xl)});var Nx=me((Vue,Cx)=>{function iO(){return!!(typeof window<"u"&&typeof window.process=="object"&&window.process.type==="renderer"||typeof process<"u"&&typeof process.versions=="object"&&process.versions.electron||typeof navigator=="object"&&typeof navigator.userAgent=="string"&&navigator.userAgent.indexOf("Electron")>=0)}Cx.exports=iO});var Pv=me((Xde,Dv)=>{Dv.exports=function(r){if(!r)throw Error("hashlru must have a max value, of type number, greater than 0");var e=0,t=Object.create(null),n=Object.create(null);function o(s,i){t[s]=i,e++,e>=r&&(e=0,n=t,t=Object.create(null))}return{has:function(s){return t[s]!==void 0||n[s]!==void 0},remove:function(s){t[s]!==void 0&&(t[s]=void 0),n[s]!==void 0&&(n[s]=void 0)},get:function(s){var i=t[s];if(i!==void 0)return i;if((i=n[s])!==void 0)return o(s,i),i},set:function(s,i){t[s]!==void 0?t[s]=i:o(s,i)},clear:function(){t=Object.create(null),n=Object.create(null)}}}});var h_=me((w0e,d_)=>{"use strict";d_.exports=r=>{if(Object.prototype.toString.call(r)!=="[object Object]")return!1;let e=Object.getPrototypeOf(r);return e===null||e===Object.prototype}});var w_=me((g_,b_)=>{"use strict";var Hh=h_(),{hasOwnProperty:m_}=Object.prototype,{propertyIsEnumerable:LK}=Object,mc=(r,e,t)=>Object.defineProperty(r,e,{value:t,writable:!0,enumerable:!0,configurable:!0}),OK=g_,p_={concatArrays:!1,ignoreUndefined:!1},$h=r=>{let e=[];for(let t in r)m_.call(r,t)&&e.push(t);if(Object.getOwnPropertySymbols){let t=Object.getOwnPropertySymbols(r);for(let n of t)LK.call(r,n)&&e.push(n)}return e};function yc(r){return Array.isArray(r)?KK(r):Hh(r)?MK(r):r}function KK(r){let e=r.slice(0,0);return $h(r).forEach(t=>{mc(e,t,yc(r[t]))}),e}function MK(r){let e=Object.getPrototypeOf(r)===null?Object.create(null):{};return $h(r).forEach(t=>{mc(e,t,yc(r[t]))}),e}var y_=(r,e,t,n)=>(t.forEach(o=>{typeof e[o]>"u"&&n.ignoreUndefined||(o in r&&r[o]!==Object.getPrototypeOf(r)?mc(r,o,Qy(r[o],e[o],n)):mc(r,o,yc(e[o])))}),r),UK=(r,e,t)=>{let n=r.slice(0,0),o=0;return[r,e].forEach(s=>{let i=[];for(let a=0;a<s.length;a++)m_.call(s,a)&&(i.push(String(a)),s===r?mc(n,o++,s[a]):mc(n,o++,yc(s[a])));n=y_(n,s,$h(s).filter(a=>!i.includes(a)),t)}),n};function Qy(r,e,t){return t.concatArrays&&Array.isArray(r)&&Array.isArray(e)?UK(r,e,t):!Hh(e)||!Hh(r)?yc(e):y_(r,e,$h(e),t)}b_.exports=function(...r){let e=Qy(yc(p_),this!==OK&&this||{},p_),t={_:{}};for(let n of r)if(n!==void 0){if(!Hh(n))throw new TypeError("`"+n+"` is not an Option Object");t=Qy(t,{_:n},e)}return t._}});var v_=me((x0e,x_)=>{"use strict";function FK(r){return r>=55296&&r<=56319}function VK(r){return r>=56320&&r<=57343}x_.exports=function(e,t,n){if(typeof t!="string")throw new Error("Input must be string");for(var o=t.length,s=0,i,a,c=0;c<o;c+=1){if(i=t.charCodeAt(c),a=t[c],FK(i)&&VK(t.charCodeAt(c+1))&&(c+=1,a+=t[c]),s+=e(a),s===n)return t.slice(0,c+1);if(s>n)return t.slice(0,c-a.length+1)}return t}});var S_=me((v0e,__)=>{"use strict";function qK(r){return r>=55296&&r<=56319}function HK(r){return r>=56320&&r<=57343}__.exports=function(e){if(typeof e!="string")throw new Error("Input must be string");for(var t=e.length,n=0,o=null,s=null,i=0;i<t;i++)o=e.charCodeAt(i),HK(o)?s!=null&&qK(s)?n+=1:n+=3:o<=127?n+=1:o>=128&&o<=2047?n+=2:o>=2048&&o<=65535&&(n+=3),s=o;return n}});var A_=me((_0e,R_)=>{"use strict";var $K=v_(),GK=S_();R_.exports=$K.bind(null,GK)});var T_=me((S0e,k_)=>{"use strict";var YK=A_(),WK=/[\/\?<>\\:\*\|"]/g,zK=/[\x00-\x1f\x80-\x9f]/g,jK=/^\.+$/,XK=/^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i,QK=/[\. ]+$/;function I_(r,e){if(typeof r!="string")throw new Error("Input must be string");var t=r.replace(WK,e).replace(zK,e).replace(jK,e).replace(XK,e).replace(QK,e);return YK(t,255)}k_.exports=function(r,e){var t=e&&e.replacement||"",n=I_(r,t);return t===""?n:I_(n,"")}});var oS=me((F3e,nS)=>{"use strict";function OM(r){if(r.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),t=0;t<e.length;t++)e[t]=255;for(var n=0;n<r.length;n++){var o=r.charAt(n),s=o.charCodeAt(0);if(e[s]!==255)throw new TypeError(o+" is ambiguous");e[s]=n}var i=r.length,a=r.charAt(0),c=Math.log(i)/Math.log(256),l=Math.log(256)/Math.log(i);function f(y){if(y instanceof Uint8Array||(ArrayBuffer.isView(y)?y=new Uint8Array(y.buffer,y.byteOffset,y.byteLength):Array.isArray(y)&&(y=Uint8Array.from(y))),!(y instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(y.length===0)return"";for(var p=0,m=0,g=0,b=y.length;g!==b&&y[g]===0;)g++,p++;for(var E=(b-g)*l+1>>>0,w=new Uint8Array(E);g!==b;){for(var _=y[g],I=0,k=E-1;(_!==0||I<m)&&k!==-1;k--,I++)_+=256*w[k]>>>0,w[k]=_%i>>>0,_=_/i>>>0;if(_!==0)throw new Error("Non-zero carry");m=I,g++}for(var D=E-m;D!==E&&w[D]===0;)D++;for(var A=a.repeat(p);D<E;++D)A+=r.charAt(w[D]);return A}function u(y){if(typeof y!="string")throw new TypeError("Expected String");if(y.length===0)return new Uint8Array;var p=0;if(y[p]!==" "){for(var m=0,g=0;y[p]===a;)m++,p++;for(var b=(y.length-p)*c+1>>>0,E=new Uint8Array(b);y[p];){var w=e[y.charCodeAt(p)];if(w===255)return;for(var _=0,I=b-1;(w!==0||_<g)&&I!==-1;I--,_++)w+=i*E[I]>>>0,E[I]=w%256>>>0,w=w/256>>>0;if(w!==0)throw new Error("Non-zero carry");g=_,p++}if(y[p]!==" "){for(var k=b-g;k!==b&&E[k]===0;)k++;for(var D=new Uint8Array(m+(b-k)),A=m;k!==b;)D[A++]=E[k++];return D}}}function d(y){var p=u(y);if(p)return p;throw new Error("Non-base"+i+" character")}return{encode:f,decodeUnsafe:u,decode:d}}nS.exports=OM});var sp=me((V3e,sS)=>{"use strict";var KM=new TextDecoder,MM=r=>KM.decode(r),UM=new TextEncoder,FM=r=>UM.encode(r);function VM(r,e){let t=new Uint8Array(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return t}sS.exports={decodeText:MM,encodeText:FM,concat:VM}});var aS=me((q3e,iS)=>{"use strict";var{encodeText:qM}=sp(),g4=class{constructor(e,t,n,o){this.name=e,this.code=t,this.codeBuf=qM(this.code),this.alphabet=o,this.codec=n(o)}encode(e){return this.codec.encode(e)}decode(e){for(let t of e)if(this.alphabet&&this.alphabet.indexOf(t)<0)throw new Error(`invalid character '${t}' in '${e}'`);return this.codec.decode(e)}};iS.exports=g4});var lS=me((H3e,cS)=>{"use strict";var HM=(r,e,t)=>{let n={};for(let l=0;l<e.length;++l)n[e[l]]=l;let o=r.length;for(;r[o-1]==="=";)--o;let s=new Uint8Array(o*t/8|0),i=0,a=0,c=0;for(let l=0;l<o;++l){let f=n[r[l]];if(f===void 0)throw new SyntaxError("Invalid character "+r[l]);a=a<<t|f,i+=t,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=t||255&a<<8-i)throw new SyntaxError("Unexpected end of data");return s},$M=(r,e,t)=>{let n=e[e.length-1]==="=",o=(1<<t)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,s+=e[o&a>>i];if(i&&(s+=e[o&a<<t-i]),n)for(;s.length*t&7;)s+="=";return s},GM=r=>e=>({encode(t){return $M(t,e,r)},decode(t){return HM(t,e,r)}});cS.exports={rfc4648:GM}});var hS=me(($3e,dS)=>{"use strict";var Pu=oS(),YM=aS(),{rfc4648:Ft}=lS(),{decodeText:WM,encodeText:zM}=sp(),jM=()=>({encode:WM,decode:zM}),uS=[["identity","\0",jM,""],["base2","0",Ft(1),"01"],["base8","7",Ft(3),"01234567"],["base10","9",Pu,"0123456789"],["base16","f",Ft(4),"0123456789abcdef"],["base16upper","F",Ft(4),"0123456789ABCDEF"],["base32hex","v",Ft(5),"0123456789abcdefghijklmnopqrstuv"],["base32hexupper","V",Ft(5),"0123456789ABCDEFGHIJKLMNOPQRSTUV"],["base32hexpad","t",Ft(5),"0123456789abcdefghijklmnopqrstuv="],["base32hexpadupper","T",Ft(5),"0123456789ABCDEFGHIJKLMNOPQRSTUV="],["base32","b",Ft(5),"abcdefghijklmnopqrstuvwxyz234567"],["base32upper","B",Ft(5),"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"],["base32pad","c",Ft(5),"abcdefghijklmnopqrstuvwxyz234567="],["base32padupper","C",Ft(5),"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567="],["base32z","h",Ft(5),"ybndrfg8ejkmcpqxot1uwisza345h769"],["base36","k",Pu,"0123456789abcdefghijklmnopqrstuvwxyz"],["base36upper","K",Pu,"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"],["base58btc","z",Pu,"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"],["base58flickr","Z",Pu,"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"],["base64","m",Ft(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"],["base64pad","M",Ft(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="],["base64url","u",Ft(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"],["base64urlpad","U",Ft(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_="]],fS=uS.reduce((r,e)=>(r[e[0]]=new YM(e[0],e[1],e[2],e[3]),r),{}),XM=uS.reduce((r,e)=>(r[e[1]]=fS[e[0]],r),{});dS.exports={names:fS,codes:XM}});var yS=me((Ho,mS)=>{"use strict";var xc=hS(),{encodeText:QM,decodeText:ip,concat:pS}=sp();function JM(r,e){if(!e)throw new Error("requires an encoded Uint8Array");let{name:t,codeBuf:n}=$i(r);return rU(t,e),pS([n,e],n.length+e.length)}function ZM(r,e){let t=$i(r),n=QM(t.encode(e));return pS([t.codeBuf,n],t.codeBuf.length+n.length)}function eU(r){r instanceof Uint8Array&&(r=ip(r));let e=r[0];return["f","F","v","V","t","T","b","B","c","C","h","k","K"].includes(e)&&(r=r.toLowerCase()),$i(r[0]).decode(r.substring(1))}function tU(r){if(r instanceof Uint8Array&&(r=ip(r)),Object.prototype.toString.call(r)!=="[object String]")return!1;try{return $i(r[0]).name}catch{return!1}}function rU(r,e){$i(r).decode(ip(e))}function $i(r){if(Object.prototype.hasOwnProperty.call(xc.names,r))return xc.names[r];if(Object.prototype.hasOwnProperty.call(xc.codes,r))return xc.codes[r];throw new Error(`Unsupported encoding: ${r}`)}function nU(r){return r instanceof Uint8Array&&(r=ip(r)),$i(r[0])}Ho=mS.exports=JM;Ho.encode=ZM;Ho.decode=eU;Ho.isEncoded=tU;Ho.encoding=$i;Ho.encodingFromData=nU;var oU=Object.freeze(xc.names),sU=Object.freeze(xc.codes);Ho.names=oU;Ho.codes=sU});var ES=me((G3e,wS)=>{wS.exports=bS;var gS=128,iU=127,aU=~iU,cU=Math.pow(2,31);function bS(r,e,t){e=e||[],t=t||0;for(var n=t;r>=cU;)e[t++]=r&255|gS,r/=128;for(;r&aU;)e[t++]=r&255|gS,r>>>=7;return e[t]=r|0,bS.bytes=t-n+1,e}});var _S=me((Y3e,vS)=>{vS.exports=b4;var lU=128,xS=127;function b4(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw b4.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&xS)<<o:(i&xS)*Math.pow(2,o),o+=7}while(i>=lU);return b4.bytes=s-n,t}});var RS=me((W3e,SS)=>{var uU=Math.pow(2,7),fU=Math.pow(2,14),dU=Math.pow(2,21),hU=Math.pow(2,28),pU=Math.pow(2,35),mU=Math.pow(2,42),yU=Math.pow(2,49),gU=Math.pow(2,56),bU=Math.pow(2,63);SS.exports=function(r){return r<uU?1:r<fU?2:r<dU?3:r<hU?4:r<pU?5:r<mU?6:r<yU?7:r<gU?8:r<bU?9:10}});var IS=me((z3e,AS)=>{AS.exports={encode:ES(),decode:_S(),encodingLength:RS()}});var TS=me((j3e,kS)=>{"use strict";var wU=Object.freeze({identity:0,sha1:17,"sha2-256":18,"sha2-512":19,"sha3-512":20,"sha3-384":21,"sha3-256":22,"sha3-224":23,"shake-128":24,"shake-256":25,"keccak-224":26,"keccak-256":27,"keccak-384":28,"keccak-512":29,blake3:30,"murmur3-128":34,"murmur3-32":35,"dbl-sha2-256":86,md4:212,md5:213,bmt:214,"sha2-256-trunc254-padded":4114,"ripemd-128":4178,"ripemd-160":4179,"ripemd-256":4180,"ripemd-320":4181,x11:4352,kangarootwelve:7425,"sm3-256":21325,"blake2b-8":45569,"blake2b-16":45570,"blake2b-24":45571,"blake2b-32":45572,"blake2b-40":45573,"blake2b-48":45574,"blake2b-56":45575,"blake2b-64":45576,"blake2b-72":45577,"blake2b-80":45578,"blake2b-88":45579,"blake2b-96":45580,"blake2b-104":45581,"blake2b-112":45582,"blake2b-120":45583,"blake2b-128":45584,"blake2b-136":45585,"blake2b-144":45586,"blake2b-152":45587,"blake2b-160":45588,"blake2b-168":45589,"blake2b-176":45590,"blake2b-184":45591,"blake2b-192":45592,"blake2b-200":45593,"blake2b-208":45594,"blake2b-216":45595,"blake2b-224":45596,"blake2b-232":45597,"blake2b-240":45598,"blake2b-248":45599,"blake2b-256":45600,"blake2b-264":45601,"blake2b-272":45602,"blake2b-280":45603,"blake2b-288":45604,"blake2b-296":45605,"blake2b-304":45606,"blake2b-312":45607,"blake2b-320":45608,"blake2b-328":45609,"blake2b-336":45610,"blake2b-344":45611,"blake2b-352":45612,"blake2b-360":45613,"blake2b-368":45614,"blake2b-376":45615,"blake2b-384":45616,"blake2b-392":45617,"blake2b-400":45618,"blake2b-408":45619,"blake2b-416":45620,"blake2b-424":45621,"blake2b-432":45622,"blake2b-440":45623,"blake2b-448":45624,"blake2b-456":45625,"blake2b-464":45626,"blake2b-472":45627,"blake2b-480":45628,"blake2b-488":45629,"blake2b-496":45630,"blake2b-504":45631,"blake2b-512":45632,"blake2s-8":45633,"blake2s-16":45634,"blake2s-24":45635,"blake2s-32":45636,"blake2s-40":45637,"blake2s-48":45638,"blake2s-56":45639,"blake2s-64":45640,"blake2s-72":45641,"blake2s-80":45642,"blake2s-88":45643,"blake2s-96":45644,"blake2s-104":45645,"blake2s-112":45646,"blake2s-120":45647,"blake2s-128":45648,"blake2s-136":45649,"blake2s-144":45650,"blake2s-152":45651,"blake2s-160":45652,"blake2s-168":45653,"blake2s-176":45654,"blake2s-184":45655,"blake2s-192":45656,"blake2s-200":45657,"blake2s-208":45658,"blake2s-216":45659,"blake2s-224":45660,"blake2s-232":45661,"blake2s-240":45662,"blake2s-248":45663,"blake2s-256":45664,"skein256-8":45825,"skein256-16":45826,"skein256-24":45827,"skein256-32":45828,"skein256-40":45829,"skein256-48":45830,"skein256-56":45831,"skein256-64":45832,"skein256-72":45833,"skein256-80":45834,"skein256-88":45835,"skein256-96":45836,"skein256-104":45837,"skein256-112":45838,"skein256-120":45839,"skein256-128":45840,"skein256-136":45841,"skein256-144":45842,"skein256-152":45843,"skein256-160":45844,"skein256-168":45845,"skein256-176":45846,"skein256-184":45847,"skein256-192":45848,"skein256-200":45849,"skein256-208":45850,"skein256-216":45851,"skein256-224":45852,"skein256-232":45853,"skein256-240":45854,"skein256-248":45855,"skein256-256":45856,"skein512-8":45857,"skein512-16":45858,"skein512-24":45859,"skein512-32":45860,"skein512-40":45861,"skein512-48":45862,"skein512-56":45863,"skein512-64":45864,"skein512-72":45865,"skein512-80":45866,"skein512-88":45867,"skein512-96":45868,"skein512-104":45869,"skein512-112":45870,"skein512-120":45871,"skein512-128":45872,"skein512-136":45873,"skein512-144":45874,"skein512-152":45875,"skein512-160":45876,"skein512-168":45877,"skein512-176":45878,"skein512-184":45879,"skein512-192":45880,"skein512-200":45881,"skein512-208":45882,"skein512-216":45883,"skein512-224":45884,"skein512-232":45885,"skein512-240":45886,"skein512-248":45887,"skein512-256":45888,"skein512-264":45889,"skein512-272":45890,"skein512-280":45891,"skein512-288":45892,"skein512-296":45893,"skein512-304":45894,"skein512-312":45895,"skein512-320":45896,"skein512-328":45897,"skein512-336":45898,"skein512-344":45899,"skein512-352":45900,"skein512-360":45901,"skein512-368":45902,"skein512-376":45903,"skein512-384":45904,"skein512-392":45905,"skein512-400":45906,"skein512-408":45907,"skein512-416":45908,"skein512-424":45909,"skein512-432":45910,"skein512-440":45911,"skein512-448":45912,"skein512-456":45913,"skein512-464":45914,"skein512-472":45915,"skein512-480":45916,"skein512-488":45917,"skein512-496":45918,"skein512-504":45919,"skein512-512":45920,"skein1024-8":45921,"skein1024-16":45922,"skein1024-24":45923,"skein1024-32":45924,"skein1024-40":45925,"skein1024-48":45926,"skein1024-56":45927,"skein1024-64":45928,"skein1024-72":45929,"skein1024-80":45930,"skein1024-88":45931,"skein1024-96":45932,"skein1024-104":45933,"skein1024-112":45934,"skein1024-120":45935,"skein1024-128":45936,"skein1024-136":45937,"skein1024-144":45938,"skein1024-152":45939,"skein1024-160":45940,"skein1024-168":45941,"skein1024-176":45942,"skein1024-184":45943,"skein1024-192":45944,"skein1024-200":45945,"skein1024-208":45946,"skein1024-216":45947,"skein1024-224":45948,"skein1024-232":45949,"skein1024-240":45950,"skein1024-248":45951,"skein1024-256":45952,"skein1024-264":45953,"skein1024-272":45954,"skein1024-280":45955,"skein1024-288":45956,"skein1024-296":45957,"skein1024-304":45958,"skein1024-312":45959,"skein1024-320":45960,"skein1024-328":45961,"skein1024-336":45962,"skein1024-344":45963,"skein1024-352":45964,"skein1024-360":45965,"skein1024-368":45966,"skein1024-376":45967,"skein1024-384":45968,"skein1024-392":45969,"skein1024-400":45970,"skein1024-408":45971,"skein1024-416":45972,"skein1024-424":45973,"skein1024-432":45974,"skein1024-440":45975,"skein1024-448":45976,"skein1024-456":45977,"skein1024-464":45978,"skein1024-472":45979,"skein1024-480":45980,"skein1024-488":45981,"skein1024-496":45982,"skein1024-504":45983,"skein1024-512":45984,"skein1024-520":45985,"skein1024-528":45986,"skein1024-536":45987,"skein1024-544":45988,"skein1024-552":45989,"skein1024-560":45990,"skein1024-568":45991,"skein1024-576":45992,"skein1024-584":45993,"skein1024-592":45994,"skein1024-600":45995,"skein1024-608":45996,"skein1024-616":45997,"skein1024-624":45998,"skein1024-632":45999,"skein1024-640":46e3,"skein1024-648":46001,"skein1024-656":46002,"skein1024-664":46003,"skein1024-672":46004,"skein1024-680":46005,"skein1024-688":46006,"skein1024-696":46007,"skein1024-704":46008,"skein1024-712":46009,"skein1024-720":46010,"skein1024-728":46011,"skein1024-736":46012,"skein1024-744":46013,"skein1024-752":46014,"skein1024-760":46015,"skein1024-768":46016,"skein1024-776":46017,"skein1024-784":46018,"skein1024-792":46019,"skein1024-800":46020,"skein1024-808":46021,"skein1024-816":46022,"skein1024-824":46023,"skein1024-832":46024,"skein1024-840":46025,"skein1024-848":46026,"skein1024-856":46027,"skein1024-864":46028,"skein1024-872":46029,"skein1024-880":46030,"skein1024-888":46031,"skein1024-896":46032,"skein1024-904":46033,"skein1024-912":46034,"skein1024-920":46035,"skein1024-928":46036,"skein1024-936":46037,"skein1024-944":46038,"skein1024-952":46039,"skein1024-960":46040,"skein1024-968":46041,"skein1024-976":46042,"skein1024-984":46043,"skein1024-992":46044,"skein1024-1000":46045,"skein1024-1008":46046,"skein1024-1016":46047,"skein1024-1024":46048,"poseidon-bls12_381-a2-fc1":46081,"poseidon-bls12_381-a2-fc1-sc":46082});kS.exports={names:wU}});function EU(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(t[i]!==255)throw new TypeError(s+" is ambiguous");t[i]=o}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),f=Math.log(256)/Math.log(a);function u(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var m=0,g=0,b=0,E=p.length;b!==E&&p[b]===0;)b++,m++;for(var w=(E-b)*f+1>>>0,_=new Uint8Array(w);b!==E;){for(var I=p[b],k=0,D=w-1;(I!==0||k<g)&&D!==-1;D--,k++)I+=256*_[D]>>>0,_[D]=I%a>>>0,I=I/a>>>0;if(I!==0)throw new Error("Non-zero carry");g=k,b++}for(var A=w-g;A!==w&&_[A]===0;)A++;for(var C=c.repeat(m);A<w;++A)C+=r.charAt(_[A]);return C}function d(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var m=0;if(p[m]!==" "){for(var g=0,b=0;p[m]===c;)g++,m++;for(var E=(p.length-m)*l+1>>>0,w=new Uint8Array(E);p[m];){var _=t[p.charCodeAt(m)];if(_===255)return;for(var I=0,k=E-1;(_!==0||I<b)&&k!==-1;k--,I++)_+=a*w[k]>>>0,w[k]=_%256>>>0,_=_/256>>>0;if(_!==0)throw new Error("Non-zero carry");b=I,m++}if(p[m]!==" "){for(var D=E-b;D!==E&&w[D]===0;)D++;for(var A=new Uint8Array(g+(E-D)),C=g;D!==E;)A[C++]=w[D++];return A}}}function y(p){var m=d(p);if(m)return m;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:d,decode:y}}var xU,vU,DS,PS=Oe(()=>{xU=EU,vU=xU,DS=vU});var Q3e,CS,$o,NS,BS,Fs=Oe(()=>{Q3e=new Uint8Array(0),CS=(r,e)=>{if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0},$o=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")},NS=r=>new TextEncoder().encode(r),BS=r=>new TextDecoder().decode(r)});var w4,E4,x4,OS,v4,vc,Vs,_U,SU,ut,En=Oe(()=>{PS();Fs();w4=class{constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},E4=class{constructor(e,t,n){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return OS(this,e)}},x4=class{constructor(e){this.decoders=e}or(e){return OS(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},OS=(r,e)=>new x4({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}}),v4=class{constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new w4(e,t,n),this.decoder=new E4(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}},vc=({name:r,prefix:e,encode:t,decode:n})=>new v4(r,e,t,n),Vs=({prefix:r,name:e,alphabet:t})=>{let{encode:n,decode:o}=DS(t,e);return vc({prefix:r,name:e,encode:n,decode:s=>$o(o(s))})},_U=(r,e,t,n)=>{let o={};for(let f=0;f<e.length;++f)o[e[f]]=f;let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*t/8|0),a=0,c=0,l=0;for(let f=0;f<s;++f){let u=o[r[f]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|u,a+=t,a>=8&&(a-=8,i[l++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return i},SU=(r,e,t)=>{let n=e[e.length-1]==="=",o=(1<<t)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,s+=e[o&a>>i];if(i&&(s+=e[o&a<<t-i]),n)for(;s.length*t&7;)s+="=";return s},ut=({name:r,prefix:e,bitsPerChar:t,alphabet:n})=>vc({prefix:e,name:r,encode(o){return SU(o,n,t)},decode(o){return _U(o,n,t,r)}})});var _4={};oe(_4,{identity:()=>RU});var RU,KS=Oe(()=>{En();Fs();RU=vc({prefix:"\0",name:"identity",encode:r=>BS(r),decode:r=>NS(r)})});var S4={};oe(S4,{base2:()=>AU});var AU,MS=Oe(()=>{En();AU=ut({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1})});var R4={};oe(R4,{base8:()=>IU});var IU,US=Oe(()=>{En();IU=ut({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3})});var A4={};oe(A4,{base10:()=>kU});var kU,FS=Oe(()=>{En();kU=Vs({prefix:"9",name:"base10",alphabet:"0123456789"})});var I4={};oe(I4,{base16:()=>TU,base16upper:()=>DU});var TU,DU,VS=Oe(()=>{En();TU=ut({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),DU=ut({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4})});var k4={};oe(k4,{base32:()=>_c,base32hex:()=>BU,base32hexpad:()=>OU,base32hexpadupper:()=>KU,base32hexupper:()=>LU,base32pad:()=>CU,base32padupper:()=>NU,base32upper:()=>PU,base32z:()=>MU});var _c,PU,CU,NU,BU,LU,OU,KU,MU,T4=Oe(()=>{En();_c=ut({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),PU=ut({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),CU=ut({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),NU=ut({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),BU=ut({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),LU=ut({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),OU=ut({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),KU=ut({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),MU=ut({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5})});var D4={};oe(D4,{base36:()=>UU,base36upper:()=>FU});var UU,FU,qS=Oe(()=>{En();UU=Vs({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),FU=Vs({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"})});var P4={};oe(P4,{base58btc:()=>eo,base58flickr:()=>VU});var eo,VU,C4=Oe(()=>{En();eo=Vs({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),VU=Vs({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"})});var N4={};oe(N4,{base64:()=>qU,base64pad:()=>HU,base64url:()=>$U,base64urlpad:()=>GU});var qU,HU,$U,GU,HS=Oe(()=>{En();qU=ut({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),HU=ut({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),$U=ut({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),GU=ut({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6})});var B4={};oe(B4,{base256emoji:()=>XU});function zU(r){return r.reduce((e,t)=>(e+=YU[t],e),"")}function jU(r){let e=[];for(let t of r){let n=WU[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var $S,YU,WU,XU,GS=Oe(()=>{En();$S=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),YU=$S.reduce((r,e,t)=>(r[t]=e,r),[]),WU=$S.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);XU=vc({prefix:"\u{1F680}",name:"base256emoji",encode:zU,decode:jU})});function zS(r,e,t){e=e||[],t=t||0;for(var n=t;r>=eF;)e[t++]=r&255|YS,r/=128;for(;r&ZU;)e[t++]=r&255|YS,r>>>=7;return e[t]=r|0,zS.bytes=t-n+1,e}function L4(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw L4.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&WS)<<o:(i&WS)*Math.pow(2,o),o+=7}while(i>=rF);return L4.bytes=s-n,t}var QU,YS,JU,ZU,eF,tF,rF,WS,nF,oF,sF,iF,aF,cF,lF,uF,fF,dF,hF,pF,Cu,jS=Oe(()=>{QU=zS,YS=128,JU=127,ZU=~JU,eF=Math.pow(2,31);tF=L4,rF=128,WS=127;nF=Math.pow(2,7),oF=Math.pow(2,14),sF=Math.pow(2,21),iF=Math.pow(2,28),aF=Math.pow(2,35),cF=Math.pow(2,42),lF=Math.pow(2,49),uF=Math.pow(2,56),fF=Math.pow(2,63),dF=function(r){return r<nF?1:r<oF?2:r<sF?3:r<iF?4:r<aF?5:r<cF?6:r<lF?7:r<uF?8:r<fF?9:10},hF={encode:QU,decode:tF,encodingLength:dF},pF=hF,Cu=pF});var Nu,Sc,Rc,cp=Oe(()=>{jS();Nu=(r,e=0)=>[Cu.decode(r,e),Cu.decode.bytes],Sc=(r,e,t=0)=>(Cu.encode(r,e,t),e),Rc=r=>Cu.encodingLength(r)});var Gi,XS,QS,Ac,Lu=Oe(()=>{Fs();cp();Gi=(r,e)=>{let t=e.byteLength,n=Rc(r),o=n+Rc(t),s=new Uint8Array(o+t);return Sc(r,s,0),Sc(t,s,n),s.set(e,o),new Ac(r,t,e,s)},XS=r=>{let e=$o(r),[t,n]=Nu(e),[o,s]=Nu(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new Ac(t,o,i,e)},QS=(r,e)=>r===e?!0:r.code===e.code&&r.size===e.size&&CS(r.bytes,e.bytes),Ac=class{constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}}});var K4,O4,M4=Oe(()=>{Lu();K4=({name:r,code:e,encode:t})=>new O4(r,e,t),O4=class{constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?Gi(this.code,t):t.then(n=>Gi(this.code,n))}else throw Error("Unknown type, must be binary type")}}});var U4={};oe(U4,{sha256:()=>mF,sha512:()=>yF});var ZS,mF,yF,eR=Oe(()=>{M4();ZS=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),mF=K4({name:"sha2-256",code:18,encode:ZS("SHA-256")}),yF=K4({name:"sha2-512",code:19,encode:ZS("SHA-512")})});var F4={};oe(F4,{identity:()=>wF});var tR,gF,rR,bF,wF,nR=Oe(()=>{Fs();Lu();tR=0,gF="identity",rR=$o,bF=r=>Gi(tR,rR(r)),wF={code:tR,name:gF,encode:rR,digest:bF}});var oR=Oe(()=>{Fs()});var bye,wye,sR=Oe(()=>{bye=new TextEncoder,wye=new TextDecoder});var fp,vF,_F,SF,Ou,RF,iR,aR,lp,up,AF,IF,kF,cR=Oe(()=>{cp();Lu();C4();T4();Fs();fp=class r{constructor(e,t,n,o){this.code=t,this.version=e,this.multihash=n,this.bytes=o,this.byteOffset=o.byteOffset,this.byteLength=o.byteLength,this.asCID=this,this._baseCache=new Map,Object.defineProperties(this,{byteOffset:up,byteLength:up,code:lp,version:lp,multihash:lp,bytes:lp,_baseCache:up,asCID:up})}toV0(){switch(this.version){case 0:return this;default:{let{code:e,multihash:t}=this;if(e!==Ou)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==RF)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=Gi(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}equals(e){return e&&this.code===e.code&&this.version===e.version&&QS(this.multihash,e.multihash)}toString(e){let{bytes:t,version:n,_baseCache:o}=this;switch(n){case 0:return _F(t,o,e||eo.encoder);default:return SF(t,o,e||_c.encoder)}}toJSON(){return{code:this.code,version:this.version,hash:this.multihash.bytes}}get[Symbol.toStringTag](){return"CID"}[Symbol.for("nodejs.util.inspect.custom")](){return"CID("+this.toString()+")"}static isCID(e){return IF(/^0\.0/,kF),!!(e&&(e[aR]||e.asCID===e))}get toBaseEncodedString(){throw new Error("Deprecated, use .toString()")}get codec(){throw new Error('"codec" property is deprecated, use integer "code" property instead')}get buffer(){throw new Error("Deprecated .buffer property, use .bytes to get Uint8Array instead")}get multibaseName(){throw new Error('"multibaseName" property is deprecated')}get prefix(){throw new Error('"prefix" property is deprecated')}static asCID(e){if(e instanceof r)return e;if(e!=null&&e.asCID===e){let{version:t,code:n,multihash:o,bytes:s}=e;return new r(t,n,o,s||iR(t,n,o.bytes))}else if(e!=null&&e[aR]===!0){let{version:t,multihash:n,code:o}=e,s=XS(n);return r.create(t,o,s)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");switch(e){case 0:{if(t!==Ou)throw new Error(`Version 0 CID must use dag-pb (code: ${Ou}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=iR(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Ou,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=$o(e.subarray(n,n+t.multihashSize));if(o.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=o.subarray(t.multihashSize-t.digestSize),i=new Ac(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[u,d]=Nu(e.subarray(t));return t+=d,u},o=n(),s=Ou;if(o===18?(o=0,t=0):o===1&&(s=n()),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=t,a=n(),c=n(),l=t+c,f=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:f,size:l}}static parse(e,t){let[n,o]=vF(e,t),s=r.decode(o);return s._baseCache.set(n,e),s}},vF=(r,e)=>{switch(r[0]){case"Q":{let t=e||eo;return[eo.prefix,t.decode(`${eo.prefix}${r}`)]}case eo.prefix:{let t=e||eo;return[eo.prefix,t.decode(r)]}case _c.prefix:{let t=e||_c;return[_c.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}},_F=(r,e,t)=>{let{prefix:n}=t;if(n!==eo.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let o=e.get(n);if(o==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return o},SF=(r,e,t)=>{let{prefix:n}=t,o=e.get(n);if(o==null){let s=t.encode(r);return e.set(n,s),s}else return o},Ou=112,RF=18,iR=(r,e,t)=>{let n=Rc(r),o=n+Rc(e),s=new Uint8Array(o+t.byteLength);return Sc(r,s,0),Sc(e,s,n),s.set(t,o),s},aR=Symbol.for("@ipld/js-cid/CID"),lp={writable:!1,configurable:!1,enumerable:!0},up={writable:!1,enumerable:!1,configurable:!1},AF="0.0.0-dev",IF=(r,e)=>{if(r.test(AF))console.warn(e);else throw new Error(e)},kF=`CID.isCID(v) is deprecated and will be removed in the next major release.
|
|
2
|
+
"use strict";var Helia=(()=>{var tx=Object.create;var Ac=Object.defineProperty;var rx=Object.getOwnPropertyDescriptor;var nx=Object.getOwnPropertyNames;var ox=Object.getPrototypeOf,sx=Object.prototype.hasOwnProperty;var Ie=(r,e)=>()=>(r&&(e=r(r=0)),e);var ae=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),me=(r,e)=>{for(var t in e)Ac(r,t,{get:e[t],enumerable:!0})},Q3=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of nx(e))!sx.call(r,o)&&o!==t&&Ac(r,o,{get:()=>e[o],enumerable:!(n=rx(e,o))||n.enumerable});return r};var ke=(r,e,t)=>(t=r!=null?tx(ox(r)):{},Q3(e||!r||!r.__esModule?Ac(t,"default",{value:r,enumerable:!0}):t,r)),Ic=r=>Q3(Ac({},"__esModule",{value:!0}),r);var b4=ae((QO,w4)=>{w4.exports=y4;var g4=128,Wx=127,zx=~Wx,Gx=Math.pow(2,31);function y4(r,e,t){e=e||[],t=t||0;for(var n=t;r>=Gx;)e[t++]=r&255|g4,r/=128;for(;r&zx;)e[t++]=r&255|g4,r>>>=7;return e[t]=r|0,y4.bytes=t-n+1,e}});var v4=ae((jO,x4)=>{x4.exports=Df;var Yx=128,E4=127;function Df(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw Df.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&E4)<<o:(i&E4)*Math.pow(2,o),o+=7}while(i>=Yx);return Df.bytes=s-n,t}});var S4=ae((ZO,_4)=>{var Xx=Math.pow(2,7),Qx=Math.pow(2,14),jx=Math.pow(2,21),Zx=Math.pow(2,28),Jx=Math.pow(2,35),ev=Math.pow(2,42),tv=Math.pow(2,49),rv=Math.pow(2,56),nv=Math.pow(2,63);_4.exports=function(r){return r<Xx?1:r<Qx?2:r<jx?3:r<Zx?4:r<Jx?5:r<ev?6:r<tv?7:r<rv?8:r<nv?9:10}});var A4=ae((JO,R4)=>{R4.exports={encode:b4(),decode:v4(),encodingLength:S4()}});var T4=ae((eP,D4)=>{"use strict";var I4=A4();D4.exports=r=>{if(!(r instanceof Uint8Array))throw new Error("arg needs to be a Uint8Array");let e=[];for(;r.length>0;){let t=I4.decode(r);e.push(t),r=r.slice(I4.decode.bytes)}return e}});var Tf=ae((tP,k4)=>{var $s=1e3,Hs=$s*60,qs=Hs*60,Yo=qs*24,ov=Yo*7,sv=Yo*365.25;k4.exports=function(r,e){e=e||{};var t=typeof r;if(t==="string"&&r.length>0)return iv(r);if(t==="number"&&isFinite(r))return e.long?cv(r):av(r);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(r))};function iv(r){if(r=String(r),!(r.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(r);if(e){var t=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return t*sv;case"weeks":case"week":case"w":return t*ov;case"days":case"day":case"d":return t*Yo;case"hours":case"hour":case"hrs":case"hr":case"h":return t*qs;case"minutes":case"minute":case"mins":case"min":case"m":return t*Hs;case"seconds":case"second":case"secs":case"sec":case"s":return t*$s;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return t;default:return}}}}function av(r){var e=Math.abs(r);return e>=Yo?Math.round(r/Yo)+"d":e>=qs?Math.round(r/qs)+"h":e>=Hs?Math.round(r/Hs)+"m":e>=$s?Math.round(r/$s)+"s":r+"ms"}function cv(r){var e=Math.abs(r);return e>=Yo?Cc(r,e,Yo,"day"):e>=qs?Cc(r,e,qs,"hour"):e>=Hs?Cc(r,e,Hs,"minute"):e>=$s?Cc(r,e,$s,"second"):r+" ms"}function Cc(r,e,t,n){var o=e>=t*1.5;return Math.round(r/t)+" "+n+(o?"s":"")}});var N4=ae((rP,C4)=>{function lv(r){t.debug=t,t.default=t,t.coerce=c,t.disable=s,t.enable=o,t.enabled=i,t.humanize=Tf(),t.destroy=l,Object.keys(r).forEach(d=>{t[d]=r[d]}),t.names=[],t.skips=[],t.formatters={};function e(d){let u=0;for(let f=0;f<d.length;f++)u=(u<<5)-u+d.charCodeAt(f),u|=0;return t.colors[Math.abs(u)%t.colors.length]}t.selectColor=e;function t(d){let u,f=null,m,h;function p(...y){if(!p.enabled)return;let w=p,E=Number(new Date),b=E-(u||E);w.diff=b,w.prev=u,w.curr=E,u=E,y[0]=t.coerce(y[0]),typeof y[0]!="string"&&y.unshift("%O");let S=0;y[0]=y[0].replace(/%([a-zA-Z%])/g,(A,D)=>{if(A==="%%")return"%";S++;let _=t.formatters[D];if(typeof _=="function"){let k=y[S];A=_.call(w,k),y.splice(S,1),S--}return A}),t.formatArgs.call(w,y),(w.log||t.log).apply(w,y)}return p.namespace=d,p.useColors=t.useColors(),p.color=t.selectColor(d),p.extend=n,p.destroy=t.destroy,Object.defineProperty(p,"enabled",{enumerable:!0,configurable:!1,get:()=>f!==null?f:(m!==t.namespaces&&(m=t.namespaces,h=t.enabled(d)),h),set:y=>{f=y}}),typeof t.init=="function"&&t.init(p),p}function n(d,u){let f=t(this.namespace+(typeof u>"u"?":":u)+d);return f.log=this.log,f}function o(d){t.save(d),t.namespaces=d,t.names=[],t.skips=[];let u,f=(typeof d=="string"?d:"").split(/[\s,]+/),m=f.length;for(u=0;u<m;u++)f[u]&&(d=f[u].replace(/\*/g,".*?"),d[0]==="-"?t.skips.push(new RegExp("^"+d.slice(1)+"$")):t.names.push(new RegExp("^"+d+"$")))}function s(){let d=[...t.names.map(a),...t.skips.map(a).map(u=>"-"+u)].join(",");return t.enable(""),d}function i(d){if(d[d.length-1]==="*")return!0;let u,f;for(u=0,f=t.skips.length;u<f;u++)if(t.skips[u].test(d))return!1;for(u=0,f=t.names.length;u<f;u++)if(t.names[u].test(d))return!0;return!1}function a(d){return d.toString().substring(2,d.toString().length-2).replace(/\.\*\?$/,"*")}function c(d){return d instanceof Error?d.stack||d.message:d}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return t.enable(t.load()),t}C4.exports=lv});var kf=ae((zt,Nc)=>{zt.formatArgs=dv;zt.save=fv;zt.load=hv;zt.useColors=uv;zt.storage=pv();zt.destroy=(()=>{let r=!1;return()=>{r||(r=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();zt.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function uv(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function dv(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Nc.exports.humanize(this.diff),!this.useColors)return;let e="color: "+this.color;r.splice(1,0,e,"color: inherit");let t=0,n=0;r[0].replace(/%[a-zA-Z%]/g,o=>{o!=="%%"&&(t++,o==="%c"&&(n=t))}),r.splice(n,0,e)}zt.log=console.debug||console.log||(()=>{});function fv(r){try{r?zt.storage.setItem("debug",r):zt.storage.removeItem("debug")}catch{}}function hv(){let r;try{r=zt.storage.getItem("debug")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function pv(){try{return localStorage}catch{}}Nc.exports=N4()(zt);var{formatters:mv}=Nc.exports;mv.j=function(r){try{return JSON.stringify(r)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var L4=ae((wP,P4)=>{P4.exports=Of;var O4=128,bv=127,Ev=~bv,xv=Math.pow(2,31);function Of(r,e,t){if(Number.MAX_SAFE_INTEGER&&r>Number.MAX_SAFE_INTEGER)throw Of.bytes=0,new RangeError("Could not encode varint");e=e||[],t=t||0;for(var n=t;r>=xv;)e[t++]=r&255|O4,r/=128;for(;r&Ev;)e[t++]=r&255|O4,r>>>=7;return e[t]=r|0,Of.bytes=t-n+1,e}});var U4=ae((bP,M4)=>{M4.exports=Pf;var vv=128,B4=127;function Pf(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a||o>49)throw Pf.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&B4)<<o:(i&B4)*Math.pow(2,o),o+=7}while(i>=vv);return Pf.bytes=s-n,t}});var V4=ae((EP,F4)=>{var _v=Math.pow(2,7),Sv=Math.pow(2,14),Rv=Math.pow(2,21),Av=Math.pow(2,28),Iv=Math.pow(2,35),Dv=Math.pow(2,42),Tv=Math.pow(2,49),kv=Math.pow(2,56),Cv=Math.pow(2,63);F4.exports=function(r){return r<_v?1:r<Sv?2:r<Rv?3:r<Av?4:r<Iv?5:r<Dv?6:r<Tv?7:r<kv?8:r<Cv?9:10}});var $4=ae((xP,K4)=>{K4.exports={encode:L4(),decode:U4(),encodingLength:V4()}});var Zo=ae((SB,f8)=>{"use strict";function d8(r,e){for(let t in e)Object.defineProperty(r,t,{value:e[t],enumerable:!0,configurable:!0});return r}function h_(r,e,t){if(!r||typeof r=="string")throw new TypeError("Please pass an Error to err-code");t||(t={}),typeof e=="object"&&(t=e,e=""),e&&(t.code=e);try{return d8(r,t)}catch{t.message=r.message,t.stack=r.stack;let o=function(){};return o.prototype=Object.create(Object.getPrototypeOf(r)),d8(new o,t)}}f8.exports=h_});var g8=ae((qB,m8)=>{"use strict";m8.exports=function(){return Date.now()}});var w8=ae((WB,y8)=>{"use strict";var Yc=g8(),fh=class{constructor(e,t,n){let o=this;this._started=Yc(),this._rescheduled=0,this._scheduled=t,this._args=n,this._triggered=!1,this._timerWrapper=()=>{o._rescheduled>0?(o._scheduled=o._rescheduled-(Yc()-o._started),o._schedule(o._scheduled)):(o._triggered=!0,e.apply(null,o._args))},this._timer=setTimeout(this._timerWrapper,t)}reschedule(e){e||(e=this._scheduled);let t=Yc();t+e-(this._started+this._scheduled)<0?(clearTimeout(this._timer),this._schedule(e)):this._triggered?this._schedule(e):(this._started=t,this._rescheduled=e)}_schedule(e){this._triggered=!1,this._started=Yc(),this._rescheduled=0,this._scheduled=e,this._timer=setTimeout(this._timerWrapper,e)}clear(){clearTimeout(this._timer)}};function R_(){if(typeof arguments[0]!="function")throw new Error("callback needed");if(typeof arguments[1]!="number")throw new Error("timeout needed");let r;if(arguments.length>0){r=new Array(arguments.length-2);for(var e=0;e<r.length;e++)r[e]=arguments[e+2]}return new fh(arguments[0],arguments[1],r)}y8.exports=R_});var x8=ae((zB,E8)=>{"use strict";var{AbortController:A_}=globalThis,b8=w8(),hh=class r extends A_{constructor(e){super(),this._ms=e,this._timer=b8(()=>this.abort(),e),Object.setPrototypeOf(this,r.prototype)}abort(){return this._timer.clear(),super.abort()}clear(){this._timer.clear()}reset(){this._timer.clear(),this._timer=b8(()=>this.abort(),this._ms)}};E8.exports={TimeoutController:hh}});var Zc=ae((nM,yh)=>{"use strict";var Ys=typeof Reflect=="object"?Reflect:null,I8=Ys&&typeof Ys.apply=="function"?Ys.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)},Qc;Ys&&typeof Ys.ownKeys=="function"?Qc=Ys.ownKeys:Object.getOwnPropertySymbols?Qc=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Qc=function(e){return Object.getOwnPropertyNames(e)};function k_(r){console&&console.warn&&console.warn(r)}var T8=Number.isNaN||function(e){return e!==e};function Ne(){Ne.init.call(this)}yh.exports=Ne;yh.exports.once=P_;Ne.EventEmitter=Ne;Ne.prototype._events=void 0;Ne.prototype._eventsCount=0;Ne.prototype._maxListeners=void 0;var D8=10;function jc(r){if(typeof r!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof r)}Object.defineProperty(Ne,"defaultMaxListeners",{enumerable:!0,get:function(){return D8},set:function(r){if(typeof r!="number"||r<0||T8(r))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+r+".");D8=r}});Ne.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Ne.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||T8(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function k8(r){return r._maxListeners===void 0?Ne.defaultMaxListeners:r._maxListeners}Ne.prototype.getMaxListeners=function(){return k8(this)};Ne.prototype.emit=function(e){for(var t=[],n=1;n<arguments.length;n++)t.push(arguments[n]);var o=e==="error",s=this._events;if(s!==void 0)o=o&&s.error===void 0;else if(!o)return!1;if(o){var i;if(t.length>0&&(i=t[0]),i instanceof Error)throw i;var a=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw a.context=i,a}var c=s[e];if(c===void 0)return!1;if(typeof c=="function")I8(c,this,t);else for(var l=c.length,d=L8(c,l),n=0;n<l;++n)I8(d[n],this,t);return!0};function C8(r,e,t,n){var o,s,i;if(jc(t),s=r._events,s===void 0?(s=r._events=Object.create(null),r._eventsCount=0):(s.newListener!==void 0&&(r.emit("newListener",e,t.listener?t.listener:t),s=r._events),i=s[e]),i===void 0)i=s[e]=t,++r._eventsCount;else if(typeof i=="function"?i=s[e]=n?[t,i]:[i,t]:n?i.unshift(t):i.push(t),o=k8(r),o>0&&i.length>o&&!i.warned){i.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=r,a.type=e,a.count=i.length,k_(a)}return r}Ne.prototype.addListener=function(e,t){return C8(this,e,t,!1)};Ne.prototype.on=Ne.prototype.addListener;Ne.prototype.prependListener=function(e,t){return C8(this,e,t,!0)};function C_(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function N8(r,e,t){var n={fired:!1,wrapFn:void 0,target:r,type:e,listener:t},o=C_.bind(n);return o.listener=t,n.wrapFn=o,o}Ne.prototype.once=function(e,t){return jc(t),this.on(e,N8(this,e,t)),this};Ne.prototype.prependOnceListener=function(e,t){return jc(t),this.prependListener(e,N8(this,e,t)),this};Ne.prototype.removeListener=function(e,t){var n,o,s,i,a;if(jc(t),o=this._events,o===void 0)return this;if(n=o[e],n===void 0)return this;if(n===t||n.listener===t)--this._eventsCount===0?this._events=Object.create(null):(delete o[e],o.removeListener&&this.emit("removeListener",e,n.listener||t));else if(typeof n!="function"){for(s=-1,i=n.length-1;i>=0;i--)if(n[i]===t||n[i].listener===t){a=n[i].listener,s=i;break}if(s<0)return this;s===0?n.shift():N_(n,s),n.length===1&&(o[e]=n[0]),o.removeListener!==void 0&&this.emit("removeListener",e,a||t)}return this};Ne.prototype.off=Ne.prototype.removeListener;Ne.prototype.removeAllListeners=function(e){var t,n,o;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[e]),this;if(arguments.length===0){var s=Object.keys(n),i;for(o=0;o<s.length;++o)i=s[o],i!=="removeListener"&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(t=n[e],typeof t=="function")this.removeListener(e,t);else if(t!==void 0)for(o=t.length-1;o>=0;o--)this.removeListener(e,t[o]);return this};function O8(r,e,t){var n=r._events;if(n===void 0)return[];var o=n[e];return o===void 0?[]:typeof o=="function"?t?[o.listener||o]:[o]:t?O_(o):L8(o,o.length)}Ne.prototype.listeners=function(e){return O8(this,e,!0)};Ne.prototype.rawListeners=function(e){return O8(this,e,!1)};Ne.listenerCount=function(r,e){return typeof r.listenerCount=="function"?r.listenerCount(e):P8.call(r,e)};Ne.prototype.listenerCount=P8;function P8(r){var e=this._events;if(e!==void 0){var t=e[r];if(typeof t=="function")return 1;if(t!==void 0)return t.length}return 0}Ne.prototype.eventNames=function(){return this._eventsCount>0?Qc(this._events):[]};function L8(r,e){for(var t=new Array(e),n=0;n<e;++n)t[n]=r[n];return t}function N_(r,e){for(;e+1<r.length;e++)r[e]=r[e+1];r.pop()}function O_(r){for(var e=new Array(r.length),t=0;t<e.length;++t)e[t]=r[t].listener||r[t];return e}function P_(r,e){return new Promise(function(t,n){function o(i){r.removeListener(e,s),n(i)}function s(){typeof r.removeListener=="function"&&r.removeListener("error",o),t([].slice.call(arguments))}B8(r,e,s,{once:!0}),e!=="error"&&L_(r,o,{once:!0})})}function L_(r,e,t){typeof r.on=="function"&&B8(r,"error",e,t)}function B8(r,e,t,n){if(typeof r.on=="function")n.once?r.once(e,t):r.on(e,t);else if(typeof r.addEventListener=="function")r.addEventListener(e,function o(s){n.once&&r.removeEventListener(e,o),t(s)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof r)}});var $8=ae((V8,K8)=>{"use strict";var B_=Math.exp;V8=K8.exports=function(e){if(typeof e!="number")throw new Error("must provide a timespan to the moving average constructor");if(e<=0)throw new Error("must provide a timespan > 0 to the moving average constructor");let t,n=0,o=0,s=0,i,a={};function c(l,d){return 1-B_(-(l-d)/e)}return a.push=function(d,u){if(i){let f=c(d,i),m=u-t,h=f*m;t=f*u+(1-f)*t,n=(1-f)*(n+m*h),o=Math.sqrt(n),s=t+f*m}else t=u;i=d},a.movingAverage=function(){return t},a.variance=function(){return n},a.deviation=function(){return o},a.forecast=function(){return s},a}});var Zm=ae(ai=>{"use strict";var SR="[object ArrayBuffer]",In=class r{static isArrayBuffer(e){return Object.prototype.toString.call(e)===SR}static toArrayBuffer(e){return this.isArrayBuffer(e)?e:e.byteLength===e.buffer.byteLength||e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:this.toUint8Array(e.buffer).slice(e.byteOffset,e.byteOffset+e.byteLength).buffer}static toUint8Array(e){return this.toView(e,Uint8Array)}static toView(e,t){if(e.constructor===t)return e;if(this.isArrayBuffer(e))return new t(e);if(this.isArrayBufferView(e))return new t(e.buffer,e.byteOffset,e.byteLength);throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'")}static isBufferSource(e){return this.isArrayBufferView(e)||this.isArrayBuffer(e)}static isArrayBufferView(e){return ArrayBuffer.isView(e)||e&&this.isArrayBuffer(e.buffer)}static isEqual(e,t){let n=r.toUint8Array(e),o=r.toUint8Array(t);if(n.length!==o.byteLength)return!1;for(let s=0;s<n.length;s++)if(n[s]!==o[s])return!1;return!0}static concat(...e){let t;Array.isArray(e[0])&&!(e[1]instanceof Function)||Array.isArray(e[0])&&e[1]instanceof Function?t=e[0]:e[e.length-1]instanceof Function?t=e.slice(0,e.length-1):t=e;let n=0;for(let i of t)n+=i.byteLength;let o=new Uint8Array(n),s=0;for(let i of t){let a=this.toUint8Array(i);o.set(a,s),s+=a.length}return e[e.length-1]instanceof Function?this.toView(o,e[e.length-1]):o.buffer}},s0="string",RR=/^[0-9a-f]+$/i,AR=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,IR=/^[a-zA-Z0-9-_]+$/,Rl=class{static fromString(e){let t=unescape(encodeURIComponent(e)),n=new Uint8Array(t.length);for(let o=0;o<t.length;o++)n[o]=t.charCodeAt(o);return n.buffer}static toString(e){let t=In.toUint8Array(e),n="";for(let s=0;s<t.length;s++)n+=String.fromCharCode(t[s]);return decodeURIComponent(escape(n))}},hr=class{static toString(e,t=!1){let n=In.toArrayBuffer(e),o=new DataView(n),s="";for(let i=0;i<n.byteLength;i+=2){let a=o.getUint16(i,t);s+=String.fromCharCode(a)}return s}static fromString(e,t=!1){let n=new ArrayBuffer(e.length*2),o=new DataView(n);for(let s=0;s<e.length;s++)o.setUint16(s*2,e.charCodeAt(s),t);return n}},Al=class r{static isHex(e){return typeof e===s0&&RR.test(e)}static isBase64(e){return typeof e===s0&&AR.test(e)}static isBase64Url(e){return typeof e===s0&&IR.test(e)}static ToString(e,t="utf8"){let n=In.toUint8Array(e);switch(t.toLowerCase()){case"utf8":return this.ToUtf8String(n);case"binary":return this.ToBinary(n);case"hex":return this.ToHex(n);case"base64":return this.ToBase64(n);case"base64url":return this.ToBase64Url(n);case"utf16le":return hr.toString(n,!0);case"utf16":case"utf16be":return hr.toString(n);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromString(e,t="utf8"){if(!e)return new ArrayBuffer(0);switch(t.toLowerCase()){case"utf8":return this.FromUtf8String(e);case"binary":return this.FromBinary(e);case"hex":return this.FromHex(e);case"base64":return this.FromBase64(e);case"base64url":return this.FromBase64Url(e);case"utf16le":return hr.fromString(e,!0);case"utf16":case"utf16be":return hr.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){let t=In.toUint8Array(e);if(typeof btoa<"u"){let n=this.ToString(t,"binary");return btoa(n)}else return Buffer.from(t).toString("base64")}static FromBase64(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64(t))throw new TypeError("Argument 'base64Text' is not Base64 encoded");return typeof atob<"u"?this.FromBinary(atob(t)):new Uint8Array(Buffer.from(t,"base64")).buffer}static FromBase64Url(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64Url(t))throw new TypeError("Argument 'base64url' is not Base64Url encoded");return this.FromBase64(this.Base64Padding(t.replace(/\-/g,"+").replace(/\_/g,"/")))}static ToBase64Url(e){return this.ToBase64(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=/g,"")}static FromUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.FromBinary(e);case"utf8":return Rl.fromString(e);case"utf16":case"utf16be":return hr.fromString(e);case"utf16le":case"usc2":return hr.fromString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.ToBinary(e);case"utf8":return Rl.toString(e);case"utf16":case"utf16be":return hr.toString(e);case"utf16le":case"usc2":return hr.toString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromBinary(e){let t=e.length,n=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=e.charCodeAt(o);return n.buffer}static ToBinary(e){let t=In.toUint8Array(e),n="";for(let o=0;o<t.length;o++)n+=String.fromCharCode(t[o]);return n}static ToHex(e){let t=In.toUint8Array(e),n="",o=t.length;for(let s=0;s<o;s++){let i=t[s];i<16&&(n+="0"),n+=i.toString(16)}return n}static FromHex(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isHex(t))throw new TypeError("Argument 'hexString' is not HEX encoded");t.length%2&&(t=`0${t}`);let n=new Uint8Array(t.length/2);for(let o=0;o<t.length;o=o+2){let s=t.slice(o,o+2);n[o/2]=parseInt(s,16)}return n.buffer}static ToUtf16String(e,t=!1){return hr.toString(e,t)}static FromUtf16String(e,t=!1){return hr.fromString(e,t)}static Base64Padding(e){let t=4-e.length%4;if(t<4)for(let n=0;n<t;n++)e+="=";return e}static formatString(e){return e?.replace(/[\n\r\t ]/g,"")||""}};Al.DEFAULT_UTF8_ENCODING="utf8";function DR(r,...e){let t=arguments[0];for(let n=1;n<arguments.length;n++){let o=arguments[n];for(let s in o)t[s]=o[s]}return t}function TR(...r){let e=r.map(o=>o.byteLength).reduce((o,s)=>o+s),t=new Uint8Array(e),n=0;return r.map(o=>new Uint8Array(o)).forEach(o=>{for(let s of o)t[n++]=s}),t.buffer}function kR(r,e){if(!(r&&e)||r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let o=0;o<r.byteLength;o++)if(t[o]!==n[o])return!1;return!0}ai.BufferSourceConverter=In;ai.Convert=Al;ai.assign=DR;ai.combine=TR;ai.isEqual=kR});var gu=ae((h$,S0)=>{var f$=function(){typeof S0<"u"&&(S0.exports=p);var r=86400,e=3200,t=146097*e/400,n=r*t,o=1e3*n,s=864e13,i=4294967296,a=1e6,c="000000000",l=Math.trunc||function(_){var k=_-_%1;return k==0&&(_<0||_===0&&1/_!=1/0)?-0:k},d=p.prototype,u=(p.fromDate=function(_){return new p(+_)},p.fromInt64BE=S(0,1,2,3,0,4),p.fromInt64LE=S(3,2,1,0,4,0),p.fromString=function(N){var k,O=new p,N=(N+="").replace(/^\s*[+\-]?\d+/,function(F){var F=+F,Y=1970+(F-1970)%400;return O.year=F-Y,Y}).replace(/(?:Z|([+\-]\d{2}):?(\d{2}))$/,function(P,F,Y){return F<0&&(Y*=-1),k=6e4*(60*+F+ +Y),""}).replace(/\.\d+$/,function(P){return O.nano=+(P+c).substr(1,9),""}).split(/\D+/);if(1<N.length?N[1]--:N[1]=0,O.time=k=Date.UTC.apply(Date,N)-(k||0),isNaN(k))throw new TypeError("Invalid Date");return y(O)},p.fromTimeT=function(_){return E(_,0)},d.year=0,d.time=0,d.nano=0,d.addNano=function(_){return this.nano+=+_||0,this},d.getNano=function(){var _=y(this);return(_.time%1e3*a+ +_.nano+1e9)%1e9},d.getTimeT=function(){var k=y(this),_=Math.floor(k.time/1e3),k=k.year;return k&&(_+=k*t*r/e),_},d.getYear=function(){return this.toDate().getUTCFullYear()+this.year},d.toDate=function(){return w(y(this).time)},d.toJSON=function(){return this.toString().replace(/0{1,6}Z$/,"Z")},d.toString=function(_){var k=this,O=k.toDate(),N={H:function(){return A(O.getUTCHours())},L:function(){return D(O.getUTCMilliseconds(),3)},M:function(){return A(O.getUTCMinutes())},N:function(){return D(k.getNano(),9)},S:function(){return A(O.getUTCSeconds())},Y:function(){var P=k.getYear();return 999999<P?"+"+P:9999<P?"+"+D(P,6):0<=P?D(P,4):-999999<=P?"-"+D(-P,6):P},a:function(){return m[O.getUTCDay()]},b:function(){return f[O.getUTCMonth()]},d:function(){return A(O.getUTCDate())},e:function(){return function(P){return(9<P?"":" ")+(0|P)}(O.getUTCDate())},m:function(){return A(O.getUTCMonth()+1)}};return function P(F){return F.replace(/%./g,function(Y){var C=Y[1],I=h[C],C=N[C];return I?P(I):C?C():Y})}(_||u)},d.writeInt64BE=b(0,1,2,3,0,4),d.writeInt64LE=b(3,2,1,0,4,0),"%Y-%m-%dT%H:%M:%S.%NZ"),f=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],m=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],h={"%":"%",F:"%Y-%m-%d",n:`
|
|
3
|
+
`,R:"%H:%M",T:"%H:%M:%S",t:" ",X:"%T",Z:"GMT",z:"+0000"};return p;function p(_,k,O){var N=this;if(!(N instanceof p))return new p(_,k,O);N.time=+_||0,N.nano=+k||0,N.year=+O||0,y(N)}function y(_){var k,O,N,P=_.year,F=_.time,Y=_.nano,I=((Y<0||a<=Y)&&(Y-=(O=Math.floor(Y/a))*a,F+=O,O=1),P%e);return(F<-s||s<F||I)&&((k=l(F/o))&&(P+=k*e,F-=k*o),(N=w(F)).setUTCFullYear(I+N.getUTCFullYear()),N=(F=+N)+(k=l((P-=I)/e))*o,k&&-s<=N&&N<=s&&(P-=k*e,F=N),O=1),O&&(_.year=P,_.time=F,_.nano=Y),_}function w(_){var k=new Date(0);return k.setTime(_),k}function E(P,N){P=+P||0;var O=l((N=(N|0)*i)/n)+l(P/n),N=N%n+P%n,P=l(N/n);return P&&(O+=P,N-=P*n),new p(1e3*N,0,O*e)}function b(_,k,O,N,P,F){return function(I,C){var T=y(this);I=I||new Array(8),R(I,C|=0);var v=Math.floor(T.time/1e3),T=T.year*(t*r/e),$=l(T/i)+l(v/i),T=T%i+v%i,v=Math.floor(T/i);return v&&($+=v,T-=v*i),Y(I,C+P,$),Y(I,C+F,T),I};function Y(I,C,$){I[C+_]=$>>24&255,I[C+k]=$>>16&255,I[C+O]=$>>8&255,I[C+N]=255&$}}function S(_,k,O,N,P,F){return function(I,C){R(I,C|=0);var $=Y(I,C+P);return E(Y(I,C+F),$)};function Y(I,C){return 16777216*I[C+_]+(I[C+k]<<16|I[C+O]<<8|I[C+N])}}function R(_,k){if(_=_&&_.length,_==null)throw new TypeError("Invalid Buffer");if(_<k+8)throw new RangeError("Out of range")}function A(_){return(9<_?"":"0")+(0|_)}function D(_,k){return(c+(0|_)).substr(-k)}}()});var x7=ae((YH,L0)=>{"use strict";var XA=Object.prototype.hasOwnProperty,Pt="~";function Ua(){}Object.create&&(Ua.prototype=Object.create(null),new Ua().__proto__||(Pt=!1));function QA(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function E7(r,e,t,n,o){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new QA(t,n||r,o),i=Pt?Pt+e:e;return r._events[i]?r._events[i].fn?r._events[i]=[r._events[i],s]:r._events[i].push(s):(r._events[i]=s,r._eventsCount++),r}function Ou(r,e){--r._eventsCount===0?r._events=new Ua:delete r._events[e]}function Ct(){this._events=new Ua,this._eventsCount=0}Ct.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)XA.call(t,n)&&e.push(Pt?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};Ct.prototype.listeners=function(e){var t=Pt?Pt+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var o=0,s=n.length,i=new Array(s);o<s;o++)i[o]=n[o].fn;return i};Ct.prototype.listenerCount=function(e){var t=Pt?Pt+e:e,n=this._events[t];return n?n.fn?1:n.length:0};Ct.prototype.emit=function(e,t,n,o,s,i){var a=Pt?Pt+e:e;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,d,u;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,o),!0;case 5:return c.fn.call(c.context,t,n,o,s),!0;case 6:return c.fn.call(c.context,t,n,o,s,i),!0}for(u=1,d=new Array(l-1);u<l;u++)d[u-1]=arguments[u];c.fn.apply(c.context,d)}else{var f=c.length,m;for(u=0;u<f;u++)switch(c[u].once&&this.removeListener(e,c[u].fn,void 0,!0),l){case 1:c[u].fn.call(c[u].context);break;case 2:c[u].fn.call(c[u].context,t);break;case 3:c[u].fn.call(c[u].context,t,n);break;case 4:c[u].fn.call(c[u].context,t,n,o);break;default:if(!d)for(m=1,d=new Array(l-1);m<l;m++)d[m-1]=arguments[m];c[u].fn.apply(c[u].context,d)}}return!0};Ct.prototype.on=function(e,t,n){return E7(this,e,t,n,!1)};Ct.prototype.once=function(e,t,n){return E7(this,e,t,n,!0)};Ct.prototype.removeListener=function(e,t,n,o){var s=Pt?Pt+e:e;if(!this._events[s])return this;if(!t)return Ou(this,s),this;var i=this._events[s];if(i.fn)i.fn===t&&(!o||i.once)&&(!n||i.context===n)&&Ou(this,s);else{for(var a=0,c=[],l=i.length;a<l;a++)(i[a].fn!==t||o&&!i[a].once||n&&i[a].context!==n)&&c.push(i[a]);c.length?this._events[s]=c.length===1?c[0]:c:Ou(this,s)}return this};Ct.prototype.removeAllListeners=function(e){var t;return e?(t=Pt?Pt+e:e,this._events[t]&&Ou(this,t)):(this._events=new Ua,this._eventsCount=0),this};Ct.prototype.off=Ct.prototype.removeListener;Ct.prototype.addListener=Ct.prototype.on;Ct.prefixed=Pt;Ct.EventEmitter=Ct;typeof L0<"u"&&(L0.exports=Ct)});var Hg=ae(Qa=>{(function(){var r,e,t,n,o,s,i,a;a=function(c){var l,d,u,f;return l=(c&255<<24)>>>24,d=(c&255<<16)>>>16,u=(c&65280)>>>8,f=c&255,[l,d,u,f].join(".")},i=function(c){var l,d,u,f,m,h;for(l=[],u=f=0;f<=3&&c.length!==0;u=++f){if(u>0){if(c[0]!==".")throw new Error("Invalid IP");c=c.substring(1)}h=e(c),m=h[0],d=h[1],c=c.substring(d),l.push(m)}if(c.length!==0)throw new Error("Invalid IP");switch(l.length){case 1:if(l[0]>4294967295)throw new Error("Invalid IP");return l[0]>>>0;case 2:if(l[0]>255||l[1]>16777215)throw new Error("Invalid IP");return(l[0]<<24|l[1])>>>0;case 3:if(l[0]>255||l[1]>255||l[2]>65535)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2])>>>0;case 4:if(l[0]>255||l[1]>255||l[2]>255||l[3]>255)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2]<<8|l[3])>>>0;default:throw new Error("Invalid IP")}},t=function(c){return c.charCodeAt(0)},n=t("0"),s=t("a"),o=t("A"),e=function(c){var l,d,u,f,m;for(f=0,l=10,d="9",u=0,c.length>1&&c[u]==="0"&&(c[u+1]==="x"||c[u+1]==="X"?(u+=2,l=16):"0"<=c[u+1]&&c[u+1]<="9"&&(u++,l=8,d="7")),m=u;u<c.length;){if("0"<=c[u]&&c[u]<=d)f=f*l+(t(c[u])-n)>>>0;else if(l===16)if("a"<=c[u]&&c[u]<="f")f=f*l+(10+t(c[u])-s)>>>0;else if("A"<=c[u]&&c[u]<="F")f=f*l+(10+t(c[u])-o)>>>0;else break;else break;if(f>4294967295)throw new Error("too large");u++}if(u===m)throw new Error("empty octet");return[f,u]},r=function(){function c(l,d){var u,f,m,h;if(typeof l!="string")throw new Error("Missing `net' parameter");if(d||(h=l.split("/",2),l=h[0],d=h[1]),d||(d=32),typeof d=="string"&&d.indexOf(".")>-1){try{this.maskLong=i(d)}catch(p){throw u=p,new Error("Invalid mask: "+d)}for(f=m=32;m>=0;f=--m)if(this.maskLong===4294967295<<32-f>>>0){this.bitmask=f;break}}else if(d||d===0)this.bitmask=parseInt(d,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(l)&this.maskLong)>>>0}catch(p){throw u=p,new Error("Invalid net address: "+l)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+d);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(l){return typeof l=="string"&&(l.indexOf("/")>0||l.split(".").length!==4)&&(l=new c(l)),l instanceof c?this.contains(l.base)&&this.contains(l.broadcast||l.last):(i(l)&this.maskLong)>>>0===(this.netLong&this.maskLong)>>>0},c.prototype.next=function(l){return l==null&&(l=1),new c(a(this.netLong+this.size*l),this.mask)},c.prototype.forEach=function(l){var d,u,f;for(f=i(this.first),u=i(this.last),d=0;f<=u;)l(a(f),f,d),d++,f++},c.prototype.toString=function(){return this.base+"/"+this.bitmask},c}(),Qa.ip2long=i,Qa.long2ip=a,Qa.Netmask=r}).call(Qa)});var $9=ae((KJ,K9)=>{function qD(){return!!(typeof window<"u"&&typeof window.process=="object"&&window.process.type==="renderer"||typeof process<"u"&&typeof process.versions=="object"&&process.versions.electron||typeof navigator=="object"&&typeof navigator.userAgent=="string"&&navigator.userAgent.indexOf("Electron")>=0)}K9.exports=qD});var hy=ae((Mte,fy)=>{fy.exports=function(r){if(!r)throw Error("hashlru must have a max value, of type number, greater than 0");var e=0,t=Object.create(null),n=Object.create(null);function o(s,i){t[s]=i,e++,e>=r&&(e=0,n=t,t=Object.create(null))}return{has:function(s){return t[s]!==void 0||n[s]!==void 0},remove:function(s){t[s]!==void 0&&(t[s]=void 0),n[s]!==void 0&&(n[s]=void 0)},get:function(s){var i=t[s];if(i!==void 0)return i;if((i=n[s])!==void 0)return o(s,i),i},set:function(s,i){t[s]!==void 0?t[s]=i:o(s,i)},clear:function(){t=Object.create(null),n=Object.create(null)}}}});var Iy=ae((Xne,Ay)=>{"use strict";Ay.exports=r=>{if(Object.prototype.toString.call(r)!=="[object Object]")return!1;let e=Object.getPrototypeOf(r);return e===null||e===Object.prototype}});var Oy=ae((Cy,Ny)=>{"use strict";var ad=Iy(),{hasOwnProperty:Ty}=Object.prototype,{propertyIsEnumerable:ET}=Object,Bi=(r,e,t)=>Object.defineProperty(r,e,{value:t,writable:!0,enumerable:!0,configurable:!0}),xT=Cy,Dy={concatArrays:!1,ignoreUndefined:!1},cd=r=>{let e=[];for(let t in r)Ty.call(r,t)&&e.push(t);if(Object.getOwnPropertySymbols){let t=Object.getOwnPropertySymbols(r);for(let n of t)ET.call(r,n)&&e.push(n)}return e};function Mi(r){return Array.isArray(r)?vT(r):ad(r)?_T(r):r}function vT(r){let e=r.slice(0,0);return cd(r).forEach(t=>{Bi(e,t,Mi(r[t]))}),e}function _T(r){let e=Object.getPrototypeOf(r)===null?Object.create(null):{};return cd(r).forEach(t=>{Bi(e,t,Mi(r[t]))}),e}var ky=(r,e,t,n)=>(t.forEach(o=>{typeof e[o]>"u"&&n.ignoreUndefined||(o in r&&r[o]!==Object.getPrototypeOf(r)?Bi(r,o,yp(r[o],e[o],n)):Bi(r,o,Mi(e[o])))}),r),ST=(r,e,t)=>{let n=r.slice(0,0),o=0;return[r,e].forEach(s=>{let i=[];for(let a=0;a<s.length;a++)Ty.call(s,a)&&(i.push(String(a)),s===r?Bi(n,o++,s[a]):Bi(n,o++,Mi(s[a])));n=ky(n,s,cd(s).filter(a=>!i.includes(a)),t)}),n};function yp(r,e,t){return t.concatArrays&&Array.isArray(r)&&Array.isArray(e)?ST(r,e,t):!ad(e)||!ad(r)?Mi(e):ky(r,e,cd(e),t)}Ny.exports=function(...r){let e=yp(Mi(Dy),this!==xT&&this||{},Dy),t={_:{}};for(let n of r)if(n!==void 0){if(!ad(n))throw new TypeError("`"+n+"` is not an Option Object");t=yp(t,{_:n},e)}return t._}});var By=ae((jne,Ly)=>{"use strict";function RT(r){return r>=55296&&r<=56319}function AT(r){return r>=56320&&r<=57343}Ly.exports=function(e,t,n){if(typeof t!="string")throw new Error("Input must be string");for(var o=t.length,s=0,i,a,c=0;c<o;c+=1){if(i=t.charCodeAt(c),a=t[c],RT(i)&&AT(t.charCodeAt(c+1))&&(c+=1,a+=t[c]),s+=e(a),s===n)return t.slice(0,c+1);if(s>n)return t.slice(0,c-a.length+1)}return t}});var Uy=ae((Zne,My)=>{"use strict";function IT(r){return r>=55296&&r<=56319}function DT(r){return r>=56320&&r<=57343}My.exports=function(e){if(typeof e!="string")throw new Error("Input must be string");for(var t=e.length,n=0,o=null,s=null,i=0;i<t;i++)o=e.charCodeAt(i),DT(o)?s!=null&&IT(s)?n+=1:n+=3:o<=127?n+=1:o>=128&&o<=2047?n+=2:o>=2048&&o<=65535&&(n+=3),s=o;return n}});var Vy=ae((Jne,Fy)=>{"use strict";var TT=By(),kT=Uy();Fy.exports=TT.bind(null,kT)});var Hy=ae((eoe,$y)=>{"use strict";var CT=Vy(),NT=/[\/\?<>\\:\*\|"]/g,OT=/[\x00-\x1f\x80-\x9f]/g,PT=/^\.+$/,LT=/^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i,BT=/[\. ]+$/;function Ky(r,e){if(typeof r!="string")throw new Error("Input must be string");var t=r.replace(NT,e).replace(OT,e).replace(PT,e).replace(LT,e).replace(BT,e);return CT(t,255)}$y.exports=function(r,e){var t=e&&e.replacement||"",n=Ky(r,t);return t===""?n:Ky(n,"")}});var ww=ae((die,yw)=>{"use strict";function xk(r){if(r.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),t=0;t<e.length;t++)e[t]=255;for(var n=0;n<r.length;n++){var o=r.charAt(n),s=o.charCodeAt(0);if(e[s]!==255)throw new TypeError(o+" is ambiguous");e[s]=n}var i=r.length,a=r.charAt(0),c=Math.log(i)/Math.log(256),l=Math.log(256)/Math.log(i);function d(m){if(m instanceof Uint8Array||(ArrayBuffer.isView(m)?m=new Uint8Array(m.buffer,m.byteOffset,m.byteLength):Array.isArray(m)&&(m=Uint8Array.from(m))),!(m instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(m.length===0)return"";for(var h=0,p=0,y=0,w=m.length;y!==w&&m[y]===0;)y++,h++;for(var E=(w-y)*l+1>>>0,b=new Uint8Array(E);y!==w;){for(var S=m[y],R=0,A=E-1;(S!==0||R<p)&&A!==-1;A--,R++)S+=256*b[A]>>>0,b[A]=S%i>>>0,S=S/i>>>0;if(S!==0)throw new Error("Non-zero carry");p=R,y++}for(var D=E-p;D!==E&&b[D]===0;)D++;for(var _=a.repeat(h);D<E;++D)_+=r.charAt(b[D]);return _}function u(m){if(typeof m!="string")throw new TypeError("Expected String");if(m.length===0)return new Uint8Array;var h=0;if(m[h]!==" "){for(var p=0,y=0;m[h]===a;)p++,h++;for(var w=(m.length-h)*c+1>>>0,E=new Uint8Array(w);m[h];){var b=e[m.charCodeAt(h)];if(b===255)return;for(var S=0,R=w-1;(b!==0||S<y)&&R!==-1;R--,S++)b+=i*E[R]>>>0,E[R]=b%256>>>0,b=b/256>>>0;if(b!==0)throw new Error("Non-zero carry");y=S,h++}if(m[h]!==" "){for(var A=w-y;A!==w&&E[A]===0;)A++;for(var D=new Uint8Array(p+(w-A)),_=p;A!==w;)D[_++]=E[A++];return D}}}function f(m){var h=u(m);if(h)return h;throw new Error("Non-base"+i+" character")}return{encode:d,decodeUnsafe:u,decode:f}}yw.exports=xk});var vd=ae((fie,bw)=>{"use strict";var vk=new TextDecoder,_k=r=>vk.decode(r),Sk=new TextEncoder,Rk=r=>Sk.encode(r);function Ak(r,e){let t=new Uint8Array(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return t}bw.exports={decodeText:_k,encodeText:Rk,concat:Ak}});var xw=ae((hie,Ew)=>{"use strict";var{encodeText:Ik}=vd(),Mp=class{constructor(e,t,n,o){this.name=e,this.code=t,this.codeBuf=Ik(this.code),this.alphabet=o,this.codec=n(o)}encode(e){return this.codec.encode(e)}decode(e){for(let t of e)if(this.alphabet&&this.alphabet.indexOf(t)<0)throw new Error(`invalid character '${t}' in '${e}'`);return this.codec.decode(e)}};Ew.exports=Mp});var _w=ae((pie,vw)=>{"use strict";var Dk=(r,e,t)=>{let n={};for(let l=0;l<e.length;++l)n[e[l]]=l;let o=r.length;for(;r[o-1]==="=";)--o;let s=new Uint8Array(o*t/8|0),i=0,a=0,c=0;for(let l=0;l<o;++l){let d=n[r[l]];if(d===void 0)throw new SyntaxError("Invalid character "+r[l]);a=a<<t|d,i+=t,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=t||255&a<<8-i)throw new SyntaxError("Unexpected end of data");return s},Tk=(r,e,t)=>{let n=e[e.length-1]==="=",o=(1<<t)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,s+=e[o&a>>i];if(i&&(s+=e[o&a<<t-i]),n)for(;s.length*t&7;)s+="=";return s},kk=r=>e=>({encode(t){return Tk(t,e,r)},decode(t){return Dk(t,e,r)}});vw.exports={rfc4648:kk}});var Iw=ae((mie,Aw)=>{"use strict";var gc=ww(),Ck=xw(),{rfc4648:vt}=_w(),{decodeText:Nk,encodeText:Ok}=vd(),Pk=()=>({encode:Nk,decode:Ok}),Sw=[["identity","\0",Pk,""],["base2","0",vt(1),"01"],["base8","7",vt(3),"01234567"],["base10","9",gc,"0123456789"],["base16","f",vt(4),"0123456789abcdef"],["base16upper","F",vt(4),"0123456789ABCDEF"],["base32hex","v",vt(5),"0123456789abcdefghijklmnopqrstuv"],["base32hexupper","V",vt(5),"0123456789ABCDEFGHIJKLMNOPQRSTUV"],["base32hexpad","t",vt(5),"0123456789abcdefghijklmnopqrstuv="],["base32hexpadupper","T",vt(5),"0123456789ABCDEFGHIJKLMNOPQRSTUV="],["base32","b",vt(5),"abcdefghijklmnopqrstuvwxyz234567"],["base32upper","B",vt(5),"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"],["base32pad","c",vt(5),"abcdefghijklmnopqrstuvwxyz234567="],["base32padupper","C",vt(5),"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567="],["base32z","h",vt(5),"ybndrfg8ejkmcpqxot1uwisza345h769"],["base36","k",gc,"0123456789abcdefghijklmnopqrstuvwxyz"],["base36upper","K",gc,"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"],["base58btc","z",gc,"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"],["base58flickr","Z",gc,"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"],["base64","m",vt(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"],["base64pad","M",vt(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="],["base64url","u",vt(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"],["base64urlpad","U",vt(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_="]],Rw=Sw.reduce((r,e)=>(r[e[0]]=new Ck(e[0],e[1],e[2],e[3]),r),{}),Lk=Sw.reduce((r,e)=>(r[e[1]]=Rw[e[0]],r),{});Aw.exports={names:Rw,codes:Lk}});var kw=ae((zn,Tw)=>{"use strict";var $i=Iw(),{encodeText:Bk,decodeText:_d,concat:Dw}=vd();function Mk(r,e){if(!e)throw new Error("requires an encoded Uint8Array");let{name:t,codeBuf:n}=Cs(r);return Kk(t,e),Dw([n,e],n.length+e.length)}function Uk(r,e){let t=Cs(r),n=Bk(t.encode(e));return Dw([t.codeBuf,n],t.codeBuf.length+n.length)}function Fk(r){r instanceof Uint8Array&&(r=_d(r));let e=r[0];return["f","F","v","V","t","T","b","B","c","C","h","k","K"].includes(e)&&(r=r.toLowerCase()),Cs(r[0]).decode(r.substring(1))}function Vk(r){if(r instanceof Uint8Array&&(r=_d(r)),Object.prototype.toString.call(r)!=="[object String]")return!1;try{return Cs(r[0]).name}catch{return!1}}function Kk(r,e){Cs(r).decode(_d(e))}function Cs(r){if(Object.prototype.hasOwnProperty.call($i.names,r))return $i.names[r];if(Object.prototype.hasOwnProperty.call($i.codes,r))return $i.codes[r];throw new Error(`Unsupported encoding: ${r}`)}function $k(r){return r instanceof Uint8Array&&(r=_d(r)),Cs(r[0])}zn=Tw.exports=Mk;zn.encode=Uk;zn.decode=Fk;zn.isEncoded=Vk;zn.encoding=Cs;zn.encodingFromData=$k;var Hk=Object.freeze($i.names),qk=Object.freeze($i.codes);zn.names=Hk;zn.codes=qk});var Pw=ae((gie,Ow)=>{Ow.exports=Nw;var Cw=128,Wk=127,zk=~Wk,Gk=Math.pow(2,31);function Nw(r,e,t){e=e||[],t=t||0;for(var n=t;r>=Gk;)e[t++]=r&255|Cw,r/=128;for(;r&zk;)e[t++]=r&255|Cw,r>>>=7;return e[t]=r|0,Nw.bytes=t-n+1,e}});var Mw=ae((yie,Bw)=>{Bw.exports=Up;var Yk=128,Lw=127;function Up(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw Up.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&Lw)<<o:(i&Lw)*Math.pow(2,o),o+=7}while(i>=Yk);return Up.bytes=s-n,t}});var Fw=ae((wie,Uw)=>{var Xk=Math.pow(2,7),Qk=Math.pow(2,14),jk=Math.pow(2,21),Zk=Math.pow(2,28),Jk=Math.pow(2,35),eC=Math.pow(2,42),tC=Math.pow(2,49),rC=Math.pow(2,56),nC=Math.pow(2,63);Uw.exports=function(r){return r<Xk?1:r<Qk?2:r<jk?3:r<Zk?4:r<Jk?5:r<eC?6:r<tC?7:r<rC?8:r<nC?9:10}});var Kw=ae((bie,Vw)=>{Vw.exports={encode:Pw(),decode:Mw(),encodingLength:Fw()}});var Hw=ae((Eie,$w)=>{"use strict";var oC=Object.freeze({identity:0,sha1:17,"sha2-256":18,"sha2-512":19,"sha3-512":20,"sha3-384":21,"sha3-256":22,"sha3-224":23,"shake-128":24,"shake-256":25,"keccak-224":26,"keccak-256":27,"keccak-384":28,"keccak-512":29,blake3:30,"murmur3-128":34,"murmur3-32":35,"dbl-sha2-256":86,md4:212,md5:213,bmt:214,"sha2-256-trunc254-padded":4114,"ripemd-128":4178,"ripemd-160":4179,"ripemd-256":4180,"ripemd-320":4181,x11:4352,kangarootwelve:7425,"sm3-256":21325,"blake2b-8":45569,"blake2b-16":45570,"blake2b-24":45571,"blake2b-32":45572,"blake2b-40":45573,"blake2b-48":45574,"blake2b-56":45575,"blake2b-64":45576,"blake2b-72":45577,"blake2b-80":45578,"blake2b-88":45579,"blake2b-96":45580,"blake2b-104":45581,"blake2b-112":45582,"blake2b-120":45583,"blake2b-128":45584,"blake2b-136":45585,"blake2b-144":45586,"blake2b-152":45587,"blake2b-160":45588,"blake2b-168":45589,"blake2b-176":45590,"blake2b-184":45591,"blake2b-192":45592,"blake2b-200":45593,"blake2b-208":45594,"blake2b-216":45595,"blake2b-224":45596,"blake2b-232":45597,"blake2b-240":45598,"blake2b-248":45599,"blake2b-256":45600,"blake2b-264":45601,"blake2b-272":45602,"blake2b-280":45603,"blake2b-288":45604,"blake2b-296":45605,"blake2b-304":45606,"blake2b-312":45607,"blake2b-320":45608,"blake2b-328":45609,"blake2b-336":45610,"blake2b-344":45611,"blake2b-352":45612,"blake2b-360":45613,"blake2b-368":45614,"blake2b-376":45615,"blake2b-384":45616,"blake2b-392":45617,"blake2b-400":45618,"blake2b-408":45619,"blake2b-416":45620,"blake2b-424":45621,"blake2b-432":45622,"blake2b-440":45623,"blake2b-448":45624,"blake2b-456":45625,"blake2b-464":45626,"blake2b-472":45627,"blake2b-480":45628,"blake2b-488":45629,"blake2b-496":45630,"blake2b-504":45631,"blake2b-512":45632,"blake2s-8":45633,"blake2s-16":45634,"blake2s-24":45635,"blake2s-32":45636,"blake2s-40":45637,"blake2s-48":45638,"blake2s-56":45639,"blake2s-64":45640,"blake2s-72":45641,"blake2s-80":45642,"blake2s-88":45643,"blake2s-96":45644,"blake2s-104":45645,"blake2s-112":45646,"blake2s-120":45647,"blake2s-128":45648,"blake2s-136":45649,"blake2s-144":45650,"blake2s-152":45651,"blake2s-160":45652,"blake2s-168":45653,"blake2s-176":45654,"blake2s-184":45655,"blake2s-192":45656,"blake2s-200":45657,"blake2s-208":45658,"blake2s-216":45659,"blake2s-224":45660,"blake2s-232":45661,"blake2s-240":45662,"blake2s-248":45663,"blake2s-256":45664,"skein256-8":45825,"skein256-16":45826,"skein256-24":45827,"skein256-32":45828,"skein256-40":45829,"skein256-48":45830,"skein256-56":45831,"skein256-64":45832,"skein256-72":45833,"skein256-80":45834,"skein256-88":45835,"skein256-96":45836,"skein256-104":45837,"skein256-112":45838,"skein256-120":45839,"skein256-128":45840,"skein256-136":45841,"skein256-144":45842,"skein256-152":45843,"skein256-160":45844,"skein256-168":45845,"skein256-176":45846,"skein256-184":45847,"skein256-192":45848,"skein256-200":45849,"skein256-208":45850,"skein256-216":45851,"skein256-224":45852,"skein256-232":45853,"skein256-240":45854,"skein256-248":45855,"skein256-256":45856,"skein512-8":45857,"skein512-16":45858,"skein512-24":45859,"skein512-32":45860,"skein512-40":45861,"skein512-48":45862,"skein512-56":45863,"skein512-64":45864,"skein512-72":45865,"skein512-80":45866,"skein512-88":45867,"skein512-96":45868,"skein512-104":45869,"skein512-112":45870,"skein512-120":45871,"skein512-128":45872,"skein512-136":45873,"skein512-144":45874,"skein512-152":45875,"skein512-160":45876,"skein512-168":45877,"skein512-176":45878,"skein512-184":45879,"skein512-192":45880,"skein512-200":45881,"skein512-208":45882,"skein512-216":45883,"skein512-224":45884,"skein512-232":45885,"skein512-240":45886,"skein512-248":45887,"skein512-256":45888,"skein512-264":45889,"skein512-272":45890,"skein512-280":45891,"skein512-288":45892,"skein512-296":45893,"skein512-304":45894,"skein512-312":45895,"skein512-320":45896,"skein512-328":45897,"skein512-336":45898,"skein512-344":45899,"skein512-352":45900,"skein512-360":45901,"skein512-368":45902,"skein512-376":45903,"skein512-384":45904,"skein512-392":45905,"skein512-400":45906,"skein512-408":45907,"skein512-416":45908,"skein512-424":45909,"skein512-432":45910,"skein512-440":45911,"skein512-448":45912,"skein512-456":45913,"skein512-464":45914,"skein512-472":45915,"skein512-480":45916,"skein512-488":45917,"skein512-496":45918,"skein512-504":45919,"skein512-512":45920,"skein1024-8":45921,"skein1024-16":45922,"skein1024-24":45923,"skein1024-32":45924,"skein1024-40":45925,"skein1024-48":45926,"skein1024-56":45927,"skein1024-64":45928,"skein1024-72":45929,"skein1024-80":45930,"skein1024-88":45931,"skein1024-96":45932,"skein1024-104":45933,"skein1024-112":45934,"skein1024-120":45935,"skein1024-128":45936,"skein1024-136":45937,"skein1024-144":45938,"skein1024-152":45939,"skein1024-160":45940,"skein1024-168":45941,"skein1024-176":45942,"skein1024-184":45943,"skein1024-192":45944,"skein1024-200":45945,"skein1024-208":45946,"skein1024-216":45947,"skein1024-224":45948,"skein1024-232":45949,"skein1024-240":45950,"skein1024-248":45951,"skein1024-256":45952,"skein1024-264":45953,"skein1024-272":45954,"skein1024-280":45955,"skein1024-288":45956,"skein1024-296":45957,"skein1024-304":45958,"skein1024-312":45959,"skein1024-320":45960,"skein1024-328":45961,"skein1024-336":45962,"skein1024-344":45963,"skein1024-352":45964,"skein1024-360":45965,"skein1024-368":45966,"skein1024-376":45967,"skein1024-384":45968,"skein1024-392":45969,"skein1024-400":45970,"skein1024-408":45971,"skein1024-416":45972,"skein1024-424":45973,"skein1024-432":45974,"skein1024-440":45975,"skein1024-448":45976,"skein1024-456":45977,"skein1024-464":45978,"skein1024-472":45979,"skein1024-480":45980,"skein1024-488":45981,"skein1024-496":45982,"skein1024-504":45983,"skein1024-512":45984,"skein1024-520":45985,"skein1024-528":45986,"skein1024-536":45987,"skein1024-544":45988,"skein1024-552":45989,"skein1024-560":45990,"skein1024-568":45991,"skein1024-576":45992,"skein1024-584":45993,"skein1024-592":45994,"skein1024-600":45995,"skein1024-608":45996,"skein1024-616":45997,"skein1024-624":45998,"skein1024-632":45999,"skein1024-640":46e3,"skein1024-648":46001,"skein1024-656":46002,"skein1024-664":46003,"skein1024-672":46004,"skein1024-680":46005,"skein1024-688":46006,"skein1024-696":46007,"skein1024-704":46008,"skein1024-712":46009,"skein1024-720":46010,"skein1024-728":46011,"skein1024-736":46012,"skein1024-744":46013,"skein1024-752":46014,"skein1024-760":46015,"skein1024-768":46016,"skein1024-776":46017,"skein1024-784":46018,"skein1024-792":46019,"skein1024-800":46020,"skein1024-808":46021,"skein1024-816":46022,"skein1024-824":46023,"skein1024-832":46024,"skein1024-840":46025,"skein1024-848":46026,"skein1024-856":46027,"skein1024-864":46028,"skein1024-872":46029,"skein1024-880":46030,"skein1024-888":46031,"skein1024-896":46032,"skein1024-904":46033,"skein1024-912":46034,"skein1024-920":46035,"skein1024-928":46036,"skein1024-936":46037,"skein1024-944":46038,"skein1024-952":46039,"skein1024-960":46040,"skein1024-968":46041,"skein1024-976":46042,"skein1024-984":46043,"skein1024-992":46044,"skein1024-1000":46045,"skein1024-1008":46046,"skein1024-1016":46047,"skein1024-1024":46048,"poseidon-bls12_381-a2-fc1":46081,"poseidon-bls12_381-a2-fc1-sc":46082});$w.exports={names:oC}});function sC(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(t[i]!==255)throw new TypeError(s+" is ambiguous");t[i]=o}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),d=Math.log(256)/Math.log(a);function u(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 p=0,y=0,w=0,E=h.length;w!==E&&h[w]===0;)w++,p++;for(var b=(E-w)*d+1>>>0,S=new Uint8Array(b);w!==E;){for(var R=h[w],A=0,D=b-1;(R!==0||A<y)&&D!==-1;D--,A++)R+=256*S[D]>>>0,S[D]=R%a>>>0,R=R/a>>>0;if(R!==0)throw new Error("Non-zero carry");y=A,w++}for(var _=b-y;_!==b&&S[_]===0;)_++;for(var k=c.repeat(p);_<b;++_)k+=r.charAt(S[_]);return k}function f(h){if(typeof h!="string")throw new TypeError("Expected String");if(h.length===0)return new Uint8Array;var p=0;if(h[p]!==" "){for(var y=0,w=0;h[p]===c;)y++,p++;for(var E=(h.length-p)*l+1>>>0,b=new Uint8Array(E);h[p];){var S=t[h.charCodeAt(p)];if(S===255)return;for(var R=0,A=E-1;(S!==0||R<w)&&A!==-1;A--,R++)S+=a*b[A]>>>0,b[A]=S%256>>>0,S=S/256>>>0;if(S!==0)throw new Error("Non-zero carry");w=R,p++}if(h[p]!==" "){for(var D=E-w;D!==E&&b[D]===0;)D++;for(var _=new Uint8Array(y+(E-D)),k=y;D!==E;)_[k++]=b[D++];return _}}}function m(h){var p=f(h);if(p)return p;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:f,decode:m}}var iC,aC,qw,Ww=Ie(()=>{iC=sC,aC=iC,qw=aC});var vie,zw,Gn,Gw,Yw,Fo=Ie(()=>{vie=new Uint8Array(0),zw=(r,e)=>{if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0},Gn=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")},Gw=r=>new TextEncoder().encode(r),Yw=r=>new TextDecoder().decode(r)});var Fp,Vp,Kp,Qw,$p,Hi,Vo,cC,lC,je,Qr=Ie(()=>{Ww();Fo();Fp=class{constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},Vp=class{constructor(e,t,n){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Qw(this,e)}},Kp=class{constructor(e){this.decoders=e}or(e){return Qw(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},Qw=(r,e)=>new Kp({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}}),$p=class{constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new Fp(e,t,n),this.decoder=new Vp(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}},Hi=({name:r,prefix:e,encode:t,decode:n})=>new $p(r,e,t,n),Vo=({prefix:r,name:e,alphabet:t})=>{let{encode:n,decode:o}=qw(t,e);return Hi({prefix:r,name:e,encode:n,decode:s=>Gn(o(s))})},cC=(r,e,t,n)=>{let o={};for(let d=0;d<e.length;++d)o[e[d]]=d;let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*t/8|0),a=0,c=0,l=0;for(let d=0;d<s;++d){let u=o[r[d]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|u,a+=t,a>=8&&(a-=8,i[l++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return i},lC=(r,e,t)=>{let n=e[e.length-1]==="=",o=(1<<t)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,s+=e[o&a>>i];if(i&&(s+=e[o&a<<t-i]),n)for(;s.length*t&7;)s+="=";return s},je=({name:r,prefix:e,bitsPerChar:t,alphabet:n})=>Hi({prefix:e,name:r,encode(o){return lC(o,n,t)},decode(o){return cC(o,n,t,r)}})});var Hp={};me(Hp,{identity:()=>uC});var uC,jw=Ie(()=>{Qr();Fo();uC=Hi({prefix:"\0",name:"identity",encode:r=>Yw(r),decode:r=>Gw(r)})});var qp={};me(qp,{base2:()=>dC});var dC,Zw=Ie(()=>{Qr();dC=je({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1})});var Wp={};me(Wp,{base8:()=>fC});var fC,Jw=Ie(()=>{Qr();fC=je({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3})});var zp={};me(zp,{base10:()=>hC});var hC,eb=Ie(()=>{Qr();hC=Vo({prefix:"9",name:"base10",alphabet:"0123456789"})});var Gp={};me(Gp,{base16:()=>pC,base16upper:()=>mC});var pC,mC,tb=Ie(()=>{Qr();pC=je({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),mC=je({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4})});var Yp={};me(Yp,{base32:()=>qi,base32hex:()=>bC,base32hexpad:()=>xC,base32hexpadupper:()=>vC,base32hexupper:()=>EC,base32pad:()=>yC,base32padupper:()=>wC,base32upper:()=>gC,base32z:()=>_C});var qi,gC,yC,wC,bC,EC,xC,vC,_C,Xp=Ie(()=>{Qr();qi=je({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),gC=je({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),yC=je({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),wC=je({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),bC=je({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),EC=je({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),xC=je({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),vC=je({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),_C=je({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5})});var Qp={};me(Qp,{base36:()=>SC,base36upper:()=>RC});var SC,RC,rb=Ie(()=>{Qr();SC=Vo({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),RC=Vo({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"})});var jp={};me(jp,{base58btc:()=>pn,base58flickr:()=>AC});var pn,AC,Zp=Ie(()=>{Qr();pn=Vo({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),AC=Vo({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"})});var Jp={};me(Jp,{base64:()=>IC,base64pad:()=>DC,base64url:()=>TC,base64urlpad:()=>kC});var IC,DC,TC,kC,nb=Ie(()=>{Qr();IC=je({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),DC=je({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),TC=je({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),kC=je({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6})});var e3={};me(e3,{base256emoji:()=>LC});function OC(r){return r.reduce((e,t)=>(e+=CC[t],e),"")}function PC(r){let e=[];for(let t of r){let n=NC[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var ob,CC,NC,LC,sb=Ie(()=>{Qr();ob=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}"),CC=ob.reduce((r,e,t)=>(r[t]=e,r),[]),NC=ob.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);LC=Hi({prefix:"\u{1F680}",name:"base256emoji",encode:OC,decode:PC})});function cb(r,e,t){e=e||[],t=t||0;for(var n=t;r>=FC;)e[t++]=r&255|ib,r/=128;for(;r&UC;)e[t++]=r&255|ib,r>>>=7;return e[t]=r|0,cb.bytes=t-n+1,e}function t3(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw t3.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&ab)<<o:(i&ab)*Math.pow(2,o),o+=7}while(i>=KC);return t3.bytes=s-n,t}var BC,ib,MC,UC,FC,VC,KC,ab,$C,HC,qC,WC,zC,GC,YC,XC,QC,jC,ZC,JC,yc,lb=Ie(()=>{BC=cb,ib=128,MC=127,UC=~MC,FC=Math.pow(2,31);VC=t3,KC=128,ab=127;$C=Math.pow(2,7),HC=Math.pow(2,14),qC=Math.pow(2,21),WC=Math.pow(2,28),zC=Math.pow(2,35),GC=Math.pow(2,42),YC=Math.pow(2,49),XC=Math.pow(2,56),QC=Math.pow(2,63),jC=function(r){return r<$C?1:r<HC?2:r<qC?3:r<WC?4:r<zC?5:r<GC?6:r<YC?7:r<XC?8:r<QC?9:10},ZC={encode:BC,decode:VC,encodingLength:jC},JC=ZC,yc=JC});var wc,Wi,zi,Rd=Ie(()=>{lb();wc=(r,e=0)=>[yc.decode(r,e),yc.decode.bytes],Wi=(r,e,t=0)=>(yc.encode(r,e,t),e),zi=r=>yc.encodingLength(r)});var Ns,ub,db,Gi,Ec=Ie(()=>{Fo();Rd();Ns=(r,e)=>{let t=e.byteLength,n=zi(r),o=n+zi(t),s=new Uint8Array(o+t);return Wi(r,s,0),Wi(t,s,n),s.set(e,o),new Gi(r,t,e,s)},ub=r=>{let e=Gn(r),[t,n]=wc(e),[o,s]=wc(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new Gi(t,o,i,e)},db=(r,e)=>r===e?!0:r.code===e.code&&r.size===e.size&&zw(r.bytes,e.bytes),Gi=class{constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}}});var n3,r3,o3=Ie(()=>{Ec();n3=({name:r,code:e,encode:t})=>new r3(r,e,t),r3=class{constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?Ns(this.code,t):t.then(n=>Ns(this.code,n))}else throw Error("Unknown type, must be binary type")}}});var s3={};me(s3,{sha256:()=>eN,sha512:()=>tN});var hb,eN,tN,pb=Ie(()=>{o3();hb=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),eN=n3({name:"sha2-256",code:18,encode:hb("SHA-256")}),tN=n3({name:"sha2-512",code:19,encode:hb("SHA-512")})});var i3={};me(i3,{identity:()=>oN});var mb,rN,gb,nN,oN,yb=Ie(()=>{Fo();Ec();mb=0,rN="identity",gb=Gn,nN=r=>Ns(mb,gb(r)),oN={code:mb,name:rN,encode:gb,digest:nN}});var wb=Ie(()=>{Fo()});var Hie,qie,bb=Ie(()=>{Hie=new TextEncoder,qie=new TextDecoder});var Dd,aN,cN,lN,xc,uN,Eb,xb,Ad,Id,dN,fN,hN,vb=Ie(()=>{Rd();Ec();Zp();Xp();Fo();Dd=class r{constructor(e,t,n,o){this.code=t,this.version=e,this.multihash=n,this.bytes=o,this.byteOffset=o.byteOffset,this.byteLength=o.byteLength,this.asCID=this,this._baseCache=new Map,Object.defineProperties(this,{byteOffset:Id,byteLength:Id,code:Ad,version:Ad,multihash:Ad,bytes:Ad,_baseCache:Id,asCID:Id})}toV0(){switch(this.version){case 0:return this;default:{let{code:e,multihash:t}=this;if(e!==xc)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==uN)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=Ns(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}equals(e){return e&&this.code===e.code&&this.version===e.version&&db(this.multihash,e.multihash)}toString(e){let{bytes:t,version:n,_baseCache:o}=this;switch(n){case 0:return cN(t,o,e||pn.encoder);default:return lN(t,o,e||qi.encoder)}}toJSON(){return{code:this.code,version:this.version,hash:this.multihash.bytes}}get[Symbol.toStringTag](){return"CID"}[Symbol.for("nodejs.util.inspect.custom")](){return"CID("+this.toString()+")"}static isCID(e){return fN(/^0\.0/,hN),!!(e&&(e[xb]||e.asCID===e))}get toBaseEncodedString(){throw new Error("Deprecated, use .toString()")}get codec(){throw new Error('"codec" property is deprecated, use integer "code" property instead')}get buffer(){throw new Error("Deprecated .buffer property, use .bytes to get Uint8Array instead")}get multibaseName(){throw new Error('"multibaseName" property is deprecated')}get prefix(){throw new Error('"prefix" property is deprecated')}static asCID(e){if(e instanceof r)return e;if(e!=null&&e.asCID===e){let{version:t,code:n,multihash:o,bytes:s}=e;return new r(t,n,o,s||Eb(t,n,o.bytes))}else if(e!=null&&e[xb]===!0){let{version:t,multihash:n,code:o}=e,s=ub(n);return r.create(t,o,s)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");switch(e){case 0:{if(t!==xc)throw new Error(`Version 0 CID must use dag-pb (code: ${xc}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=Eb(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,xc,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=Gn(e.subarray(n,n+t.multihashSize));if(o.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=o.subarray(t.multihashSize-t.digestSize),i=new Gi(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[u,f]=wc(e.subarray(t));return t+=f,u},o=n(),s=xc;if(o===18?(o=0,t=0):o===1&&(s=n()),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=t,a=n(),c=n(),l=t+c,d=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:d,size:l}}static parse(e,t){let[n,o]=aN(e,t),s=r.decode(o);return s._baseCache.set(n,e),s}},aN=(r,e)=>{switch(r[0]){case"Q":{let t=e||pn;return[pn.prefix,t.decode(`${pn.prefix}${r}`)]}case pn.prefix:{let t=e||pn;return[pn.prefix,t.decode(r)]}case qi.prefix:{let t=e||qi;return[qi.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}},cN=(r,e,t)=>{let{prefix:n}=t;if(n!==pn.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let o=e.get(n);if(o==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return o},lN=(r,e,t)=>{let{prefix:n}=t,o=e.get(n);if(o==null){let s=t.encode(r);return e.set(n,s),s}else return o},xc=112,uN=18,Eb=(r,e,t)=>{let n=zi(r),o=n+zi(e),s=new Uint8Array(o+t.byteLength);return Wi(r,s,0),Wi(e,s,n),s.set(t,o),s},xb=Symbol.for("@ipld/js-cid/CID"),Ad={writable:!1,configurable:!1,enumerable:!0},Id={writable:!1,enumerable:!1,configurable:!1},dN="0.0.0-dev",fN=(r,e)=>{if(r.test(dN))console.warn(e);else throw new Error(e)},hN=`CID.isCID(v) is deprecated and will be removed in the next major release.
|
|
4
4
|
Following code pattern:
|
|
5
5
|
|
|
6
6
|
if (CID.isCID(value)) {
|
|
@@ -14,17 +14,12 @@ if (cid) {
|
|
|
14
14
|
// Make sure to use cid instead of value
|
|
15
15
|
doSomethingWithCID(cid)
|
|
16
16
|
}
|
|
17
|
-
`});var lR=Oe(()=>{cR();cp();Fs();M4();Lu()});var V4,Iye,uR=Oe(()=>{KS();MS();US();FS();VS();T4();qS();C4();HS();GS();eR();nR();oR();sR();lR();V4={..._4,...S4,...R4,...A4,...I4,...k4,...D4,...P4,...N4,...B4},Iye={...U4,...F4}});function Ic(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}var dp=Oe(()=>{});function hp(r=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?Ic(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}var q4=Oe(()=>{dp()});function dR(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var fR,H4,TF,pp,$4=Oe(()=>{uR();q4();fR=dR("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),H4=dR("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=hp(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),TF={utf8:fR,"utf-8":fR,hex:V4.base16,latin1:H4,ascii:H4,binary:H4,...V4},pp=TF});var hR={};oe(hR,{toString:()=>DF});function DF(r,e="utf8"){let t=pp[e];if(!t)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(r.buffer,r.byteOffset,r.byteLength).toString("utf8"):t.encoder.encode(r).substring(1)}var pR=Oe(()=>{$4()});var mR={};oe(mR,{fromString:()=>PF});function PF(r,e="utf8"){let t=pp[e];if(!t)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?Ic(globalThis.Buffer.from(r,"utf-8")):t.decoder.decode(`${t.prefix}${r}`)}var yR=Oe(()=>{$4();dp()});var gR={};oe(gR,{concat:()=>CF});function CF(r,e){e||(e=r.reduce((o,s)=>o+s.length,0));let t=hp(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return Ic(t)}var bR=Oe(()=>{q4();dp()});var Y4=me((Fye,SR)=>{"use strict";var wR=yS(),kc=IS(),{names:Ku}=TS(),{toString:mp}=(pR(),zu(hR)),{fromString:NF}=(yR(),zu(mR)),{concat:BF}=(bR(),zu(gR)),Tc={};for(let r in Ku){let e=r;Tc[Ku[e]]=e}Object.freeze(Tc);function LF(r){if(!(r instanceof Uint8Array))throw new Error("must be passed a Uint8Array");return mp(r,"base16")}function OF(r){return NF(r,"base16")}function KF(r){if(!(r instanceof Uint8Array))throw new Error("must be passed a Uint8Array");return mp(wR.encode("base58btc",r)).slice(1)}function MF(r){let e=r instanceof Uint8Array?mp(r):r;return wR.decode("z"+e)}function ER(r){if(!(r instanceof Uint8Array))throw new Error("multihash must be a Uint8Array");if(r.length<2)throw new Error("multihash too short. must be > 2 bytes.");let e=kc.decode(r);if(!vR(e))throw new Error(`multihash unknown function code: 0x${e.toString(16)}`);r=r.slice(kc.decode.bytes);let t=kc.decode(r);if(t<0)throw new Error(`multihash invalid length: ${t}`);if(r=r.slice(kc.decode.bytes),r.length!==t)throw new Error(`multihash length inconsistent: 0x${mp(r,"base16")}`);return{code:e,name:Tc[e],length:t,digest:r}}function UF(r,e,t){if(!r||e===void 0)throw new Error("multihash encode requires at least two args: digest, code");let n=xR(e);if(!(r instanceof Uint8Array))throw new Error("digest should be a Uint8Array");if(t==null&&(t=r.length),t&&r.length!==t)throw new Error("digest length should be equal to specified length.");let o=kc.encode(n),s=kc.encode(t);return BF([o,s,r],o.length+s.length+r.length)}function xR(r){let e=r;if(typeof r=="string"){if(Ku[r]===void 0)throw new Error(`Unrecognized hash function named: ${r}`);e=Ku[r]}if(typeof e!="number")throw new Error(`Hash function code should be a number. Got: ${e}`);if(Tc[e]===void 0&&!G4(e))throw new Error(`Unrecognized function code: ${e}`);return e}function G4(r){return r>0&&r<16}function vR(r){return!!(G4(r)||Tc[r])}function _R(r){ER(r)}function FF(r){return _R(r),r.subarray(0,2)}SR.exports={names:Ku,codes:Tc,toHexString:LF,fromHexString:OF,toB58String:KF,fromB58String:MF,decode:ER,encode:UF,coerceCode:xR,isAppCode:G4,validate:_R,prefix:FF,isValidCode:vR}});var VR=me(wp=>{"use strict";Object.defineProperty(wp,"__esModule",{value:!0});var X4=class{constructor(){this.pullQueue=[],this.pushQueue=[],this.eventHandlers={},this.isPaused=!1,this.isStopped=!1}push(e){if(this.isStopped)return;let t={value:e,done:!1};if(this.pullQueue.length){let n=this.pullQueue.shift();n&&n.resolve(t)}else this.pushQueue.push(Promise.resolve(t)),this.highWaterMark!==void 0&&this.pushQueue.length>=this.highWaterMark&&!this.isPaused&&(this.isPaused=!0,this.eventHandlers.highWater?this.eventHandlers.highWater():console&&console.warn(`EventIterator queue reached ${this.pushQueue.length} items`))}stop(){if(!this.isStopped){this.isStopped=!0,this.remove();for(let e of this.pullQueue)e.resolve({value:void 0,done:!0});this.pullQueue.length=0}}fail(e){if(!this.isStopped)if(this.isStopped=!0,this.remove(),this.pullQueue.length){for(let t of this.pullQueue)t.reject(e);this.pullQueue.length=0}else{let t=Promise.reject(e);t.catch(()=>{}),this.pushQueue.push(t)}}remove(){Promise.resolve().then(()=>{this.removeCallback&&this.removeCallback()})}[Symbol.asyncIterator](){return{next:e=>{let t=this.pushQueue.shift();return t?(this.lowWaterMark!==void 0&&this.pushQueue.length<=this.lowWaterMark&&this.isPaused&&(this.isPaused=!1,this.eventHandlers.lowWater&&this.eventHandlers.lowWater()),t):this.isStopped?Promise.resolve({value:void 0,done:!0}):new Promise((n,o)=>{this.pullQueue.push({resolve:n,reject:o})})},return:()=>(this.isStopped=!0,this.pushQueue.length=0,this.remove(),Promise.resolve({value:void 0,done:!0}))}}},bp=class{constructor(e,{highWaterMark:t=100,lowWaterMark:n=1}={}){let o=new X4;o.highWaterMark=t,o.lowWaterMark=n,o.removeCallback=e({push:s=>o.push(s),stop:()=>o.stop(),fail:s=>o.fail(s),on:(s,i)=>{o.eventHandlers[s]=i}})||(()=>{}),this[Symbol.asyncIterator]=()=>o[Symbol.asyncIterator](),Object.freeze(this)}};wp.EventIterator=bp;wp.default=bp});var qR=me(Mu=>{"use strict";Object.defineProperty(Mu,"__esModule",{value:!0});var Q4=VR();Mu.EventIterator=Q4.EventIterator;function zF(r,e,t){return new Q4.EventIterator(({push:n})=>(this.addEventListener(r,n,e),()=>this.removeEventListener(r,n,e)),t)}Mu.subscribe=zF;Mu.default=Q4.EventIterator});var FA=me((I6e,UA)=>{"use strict";UA.exports=MA;var DV=p2(),Hs=MA.prototype,PV=new Date%1e9;function CV(){return(Math.random()*1e9>>>0)+PV++}function MA(r){r=r||{},this.id=r.id||CV(),this.max=r.max||1/0,this.items=r.items||[],this._lookup={},this.size=this.items.length,this.lastModified=new Date(r.lastModified||new Date);for(var e,t,n=this.items.length;n--;)e=this.items[n],t=new Date(e.expires)-new Date,this._lookup[e.key]=e,t>0?this.expire(e.key,t):t<=0&&this.delete(e.key)}Hs.has=function(r){return r in this._lookup};Hs.get=function(r){if(!this.has(r))return null;var e=this._lookup[r];return e.refresh&&this.expire(r,e.refresh),this.items.splice(this.items.indexOf(e),1),this.items.push(e),e.value};Hs.meta=function(r){if(!this.has(r))return null;var e=this._lookup[r];return"meta"in e?e.meta:null};Hs.set=function(r,e,t){var n=this._lookup[r],o=this._lookup[r]={key:r,value:e};return this.lastModified=new Date,n?(clearTimeout(n.timeout),this.items.splice(this.items.indexOf(n),1,o)):(this.size>=this.max&&this.delete(this.items[0].key),this.items.push(o),this.size++),t&&("ttl"in t&&this.expire(r,t.ttl),"meta"in t&&(o.meta=t.meta),t.refresh&&(o.refresh=t.ttl)),this};Hs.delete=function(r){var e=this._lookup[r];return e?(this.lastModified=new Date,this.items.splice(this.items.indexOf(e),1),clearTimeout(e.timeout),delete this._lookup[r],this.size--,this):!1};Hs.expire=function(r,e){var t=e||0,n=this._lookup[r];if(!n)return this;if(typeof t=="string"&&(t=DV(e)),typeof t!="number")throw new TypeError("Expiration time must be a string or number.");return clearTimeout(n.timeout),n.timeout=setTimeout(this.delete.bind(this,n.key),t),n.expires=Number(new Date)+t,this};Hs.clear=function(){for(var r=this.items.length;r--;)this.delete(this.items[r].key);return this};Hs.toJSON=function(){for(var r=new Array(this.items.length),e,t=r.length;t--;)e=this.items[t],r[t]={key:e.key,meta:e.meta,value:e.value,expires:e.expires,refresh:e.refresh};return{id:this.id,max:isFinite(this.max)?this.max:void 0,lastModified:this.lastModified,items:r}}});var JV={};oe(JV,{createHelia:()=>XV,libp2pDefaults:()=>vp});function Rt(r){let e=new globalThis.AbortController;function t(){e.abort();for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",t)}for(let s of r){if(s?.aborted===!0){t();break}s?.addEventListener!=null&&s.addEventListener("abort",t)}function n(){for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",t)}let o=e.signal;return o.clear=n,o}function hI(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:o=>{n.push(o)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var Zi=hI;function pI(r){return r[Symbol.asyncIterator]!=null}function V8(r){return r?.then!=null}function mI(r,e){if(pI(r))return async function*(){for await(let a of r){let c=e(a);V8(c)&&await c,yield a}}();let t=Zi(r),{value:n,done:o}=t.next();if(o===!0)return function*(){}();if(typeof e(n)?.then=="function")return async function*(){yield n;for await(let a of t){let c=e(a);V8(c)&&await c,yield a}}();let i=e;return function*(){yield n;for(let a of t)i(a),yield a}()}var Ys=mI;var t2={};oe(t2,{base32:()=>vt,base32hex:()=>_I,base32hexpad:()=>RI,base32hexpadupper:()=>AI,base32hexupper:()=>SI,base32pad:()=>xI,base32padupper:()=>vI,base32upper:()=>z8,base32z:()=>II});var oq=new Uint8Array(0);function q8(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function io(r){if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")}function H8(r){return new TextEncoder().encode(r)}function $8(r){return new TextDecoder().decode(r)}function yI(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(t[i]!==255)throw new TypeError(s+" is ambiguous");t[i]=o}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),f=Math.log(256)/Math.log(a);function u(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var m=0,g=0,b=0,E=p.length;b!==E&&p[b]===0;)b++,m++;for(var w=(E-b)*f+1>>>0,_=new Uint8Array(w);b!==E;){for(var I=p[b],k=0,D=w-1;(I!==0||k<g)&&D!==-1;D--,k++)I+=256*_[D]>>>0,_[D]=I%a>>>0,I=I/a>>>0;if(I!==0)throw new Error("Non-zero carry");g=k,b++}for(var A=w-g;A!==w&&_[A]===0;)A++;for(var C=c.repeat(m);A<w;++A)C+=r.charAt(_[A]);return C}function d(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var m=0;if(p[m]!==" "){for(var g=0,b=0;p[m]===c;)g++,m++;for(var E=(p.length-m)*l+1>>>0,w=new Uint8Array(E);p[m];){var _=t[p.charCodeAt(m)];if(_===255)return;for(var I=0,k=E-1;(_!==0||I<b)&&k!==-1;k--,I++)_+=a*w[k]>>>0,w[k]=_%256>>>0,_=_/256>>>0;if(_!==0)throw new Error("Non-zero carry");b=I,m++}if(p[m]!==" "){for(var D=E-b;D!==E&&w[D]===0;)D++;for(var A=new Uint8Array(g+(E-D)),C=g;D!==E;)A[C++]=w[D++];return A}}}function y(p){var m=d(p);if(m)return m;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:d,decode:y}}var gI=yI,bI=gI,Y8=bI;var Qp=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},Jp=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return W8(this,e)}},Zp=class{decoders;constructor(e){this.decoders=e}or(e){return W8(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function W8(r,e){return new Zp({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var e2=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new Qp(e,t,n),this.decoder=new Jp(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function ea({name:r,prefix:e,encode:t,decode:n}){return new e2(r,e,t,n)}function Wo({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=Y8(t,r);return ea({prefix:e,name:r,encode:n,decode:s=>io(o(s))})}function wI(r,e,t,n){let o={};for(let f=0;f<e.length;++f)o[e[f]]=f;let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*t/8|0),a=0,c=0,l=0;for(let f=0;f<s;++f){let u=o[r[f]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|u,a+=t,a>=8&&(a-=8,i[l++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return i}function EI(r,e,t){let n=e[e.length-1]==="=",o=(1<<t)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<t-i]),n)for(;s.length*t&7;)s+="=";return s}function ot({name:r,prefix:e,bitsPerChar:t,alphabet:n}){return ea({prefix:e,name:r,encode(o){return EI(o,n,t)},decode(o){return wI(o,n,t,r)}})}var vt=ot({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),z8=ot({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),xI=ot({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),vI=ot({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),_I=ot({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),SI=ot({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),RI=ot({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),AI=ot({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),II=ot({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var r2={};oe(r2,{base58btc:()=>ie,base58flickr:()=>kI});var ie=Wo({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),kI=Wo({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var kr={};oe(kr,{Digest:()=>Ws,create:()=>Jr,decode:()=>Zr,equals:()=>o2});var TI=Q8,j8=128,DI=127,PI=~DI,CI=Math.pow(2,31);function Q8(r,e,t){e=e||[],t=t||0;for(var n=t;r>=CI;)e[t++]=r&255|j8,r/=128;for(;r&PI;)e[t++]=r&255|j8,r>>>=7;return e[t]=r|0,Q8.bytes=t-n+1,e}var NI=n2,BI=128,X8=127;function n2(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw n2.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&X8)<<o:(i&X8)*Math.pow(2,o),o+=7}while(i>=BI);return n2.bytes=s-n,t}var LI=Math.pow(2,7),OI=Math.pow(2,14),KI=Math.pow(2,21),MI=Math.pow(2,28),UI=Math.pow(2,35),FI=Math.pow(2,42),VI=Math.pow(2,49),qI=Math.pow(2,56),HI=Math.pow(2,63),$I=function(r){return r<LI?1:r<OI?2:r<KI?3:r<MI?4:r<UI?5:r<FI?6:r<VI?7:r<qI?8:r<HI?9:10},GI={encode:TI,decode:NI,encodingLength:$I},YI=GI,Fc=YI;function Vc(r,e=0){return[Fc.decode(r,e),Fc.decode.bytes]}function ta(r,e,t=0){return Fc.encode(r,e,t),e}function ra(r){return Fc.encodingLength(r)}function Jr(r,e){let t=e.byteLength,n=ra(r),o=n+ra(t),s=new Uint8Array(o+t);return ta(r,s,0),ta(t,s,n),s.set(e,o),new Ws(r,t,e,s)}function Zr(r){let e=io(r),[t,n]=Vc(e),[o,s]=Vc(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new Ws(t,o,i,e)}function o2(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&q8(r.bytes,t.bytes)}}var Ws=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};function J8(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return zI(t,s2(r),e??ie.encoder);default:return jI(t,s2(r),e??vt.encoder)}}var Z8=new WeakMap;function s2(r){let e=Z8.get(r);if(e==null){let t=new Map;return Z8.set(r,t),t}return e}var de=class r{code;version;multihash;bytes;"/";constructor(e,t,n,o){this.code=t,this.version=e,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==qc)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==XI)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=Jr(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&o2(e.multihash,n.multihash)}toString(e){return J8(this,e)}toJSON(){return{"/":J8(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:o,multihash:s,bytes:i}=t;return new r(n,o,s,i??e5(n,o,s.bytes))}else if(t[QI]===!0){let{version:n,multihash:o,code:s}=t,i=Zr(o);return r.create(n,s,i)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==qc)throw new Error(`Version 0 CID must use dag-pb (code: ${qc}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=e5(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,qc,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=io(e.subarray(n,n+t.multihashSize));if(o.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=o.subarray(t.multihashSize-t.digestSize),i=new Ws(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[u,d]=Vc(e.subarray(t));return t+=d,u},o=n(),s=qc;if(o===18?(o=0,t=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=t,a=n(),c=n(),l=t+c,f=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:f,size:l}}static parse(e,t){let[n,o]=WI(e,t),s=r.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return s2(s).set(n,e),s}};function WI(r,e){switch(r[0]){case"Q":{let t=e??ie;return[ie.prefix,t.decode(`${ie.prefix}${r}`)]}case ie.prefix:{let t=e??ie;return[ie.prefix,t.decode(r)]}case vt.prefix:{let t=e??vt;return[vt.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function zI(r,e,t){let{prefix:n}=t;if(n!==ie.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let o=e.get(n);if(o==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return o}function jI(r,e,t){let{prefix:n}=t,o=e.get(n);if(o==null){let s=t.encode(r);return e.set(n,s),s}else return o}var qc=112,XI=18;function e5(r,e,t){let n=ra(r),o=n+ra(e),s=new Uint8Array(o+t.byteLength);return ta(r,s,0),ta(e,s,n),s.set(t,o),s}var QI=Symbol.for("@ipld/js-cid/CID");var i2=class extends Map{metric;constructor(e){super();let{name:t,metrics:n}=e;this.metric=n.registerMetric(t),this.updateComponentMetric()}set(e,t){return super.set(e,t),this.updateComponentMetric(),this}delete(e){let t=super.delete(e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function xn(r){let{name:e,metrics:t}=r,n;return t!=null?n=new i2({name:e,metrics:t}):n=new Map,n}var t5=Symbol.for("@libp2p/connection");var vn=Symbol.for("@libp2p/content-routing");var zs=Symbol.for("@libp2p/peer-discovery");var a2=Symbol.for("@libp2p/peer-id");function na(r){return r!=null&&!!r[a2]}var _n=Symbol.for("@libp2p/peer-routing");var r5="keep-alive";var Sn=Symbol.for("@libp2p/transport");var zo;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(zo||(zo={}));var en=class r extends Error{code;type;constructor(e="The operation was aborted"){super(e),this.code=r.code,this.type=r.type}static code="ABORT_ERR";static type="aborted"},h=class extends Error{code;props;constructor(e,t,n){super(e),this.code=t,this.name=n?.name??"CodeError",this.props=n??{}}},Xu=class extends AggregateError{code;props;constructor(e,t,n,o){super(e,t),this.code=n,this.name=o?.name??"AggregateCodeError",this.props=o??{}}};var ao="ERR_TIMEOUT";var n5="ERR_NOT_FOUND",js="ERR_INVALID_MESSAGE";var Fe=class extends EventTarget{#e=new Map;listenerCount(e){let t=this.#e.get(e);return t==null?0:t.length}addEventListener(e,t,n){super.addEventListener(e,t,n);let o=this.#e.get(e);o==null&&(o=[],this.#e.set(e,o)),o.push({callback:t,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(e,t,n){super.removeEventListener(e.toString(),t??null,n);let o=this.#e.get(e);o!=null&&(o=o.filter(({callback:s})=>s!==t),this.#e.set(e,o))}dispatchEvent(e){let t=super.dispatchEvent(e),n=this.#e.get(e.type);return n==null||(n=n.filter(({once:o})=>!o),this.#e.set(e.type,n)),t}safeDispatchEvent(e,t={}){return this.dispatchEvent(new Ct(e,t))}},c2=class extends Event{detail;constructor(e,t){super(e,t),this.detail=t?.detail}},Ct=globalThis.CustomEvent??c2;var Ce=(r,...e)=>{try{[...e]}catch{}};function Qu(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function jo(...r){let e=[];for(let t of r)Qu(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStart!=null&&await t.beforeStart()})),await Promise.all(e.map(async t=>{await t.start()})),await Promise.all(e.map(async t=>{t.afterStart!=null&&await t.afterStart()}))}async function Xo(...r){let e=[];for(let t of r)Qu(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStop!=null&&await t.beforeStop()})),await Promise.all(e.map(async t=>{await t.stop()})),await Promise.all(e.map(async t=>{t.afterStop!=null&&await t.afterStop()}))}var d2={};oe(d2,{sha256:()=>K,sha512:()=>f2});function u2({name:r,code:e,encode:t}){return new l2(r,e,t)}var l2=class{name;code;encode;constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?Jr(this.code,t):t.then(n=>Jr(this.code,n))}else throw Error("Unknown type, must be binary type")}};function s5(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var K=u2({name:"sha2-256",code:18,encode:s5("SHA-256")}),f2=u2({name:"sha2-512",code:19,encode:s5("SHA-512")});var j5=Ue(w5(),1);var yr=Ue(m2(),1);var g2={};oe(g2,{base64:()=>Ge,base64pad:()=>_k,base64url:()=>y2,base64urlpad:()=>Sk});var Ge=ot({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),_k=ot({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),y2=ot({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Sk=ot({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});yr.default.formatters.b=r=>r==null?"undefined":ie.baseEncode(r);yr.default.formatters.t=r=>r==null?"undefined":vt.baseEncode(r);yr.default.formatters.m=r=>r==null?"undefined":Ge.baseEncode(r);yr.default.formatters.p=r=>r==null?"undefined":r.toString();yr.default.formatters.c=r=>r==null?"undefined":r.toString();yr.default.formatters.k=r=>r==null?"undefined":r.toString();yr.default.formatters.a=r=>r==null?"undefined":r.toString();function Rk(r){let e=()=>{};return e.enabled=!1,e.color="",e.diff=0,e.log=()=>{},e.namespace=r,e.destroy=()=>!0,e.extend=()=>e,e}function Qo(){return{forComponent(r){return jt(r)}}}function jt(r){let e=Rk(`${r}:trace`);return yr.default.enabled(`${r}:trace`)&&yr.default.names.map(t=>t.toString()).find(t=>t.includes(":trace"))!=null&&(e=(0,yr.default)(`${r}:trace`)),Object.assign((0,yr.default)(r),{error:(0,yr.default)(`${r}:error`),trace:e})}function O(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}var Qs=class{_refCounter;cid;priority;wantType;constructor(e,t,n){this._refCounter=1,this.cid=e,this.priority=t??1,this.wantType=n}inc(){this._refCounter+=1}dec(){this._refCounter=Math.max(0,this._refCounter-1)}hasRefs(){return this._refCounter>0}get[Symbol.toStringTag](){return`WantlistEntry <key: ${this.cid.toString(ie)}, priority: ${this.priority}, refs: ${this._refCounter}>`}equals(e){return this._refCounter===e._refCounter&&this.cid.equals(e.cid)&&this.priority===e.priority&&this.wantType===e.wantType}};var Jo=class{entry;cancel;sendDontHave;constructor(e,t,n,o,s){this.entry=new Qs(e,t,n),this.cancel=!!o,this.sendDontHave=!!s}get cid(){return this.entry.cid}set cid(e){this.entry.cid=e}get priority(){return this.entry.priority}set priority(e){this.entry.priority=e}get wantType(){return this.entry.wantType}set wantType(e){this.entry.wantType=e}get[Symbol.toStringTag](){return`BitswapMessageEntry ${this.cid.toString(ie)} <cancel: ${this.cancel}, priority: ${this.priority}>`}equals(e){return this.cancel===e.cancel&&this.sendDontHave===e.sendDontHave&&this.wantType===e.wantType&&this.entry.equals(e.entry)}};var Tr=(r,e)=>{let t=["bitswap"];return e!=null&&t.push(e),r!=null&&t.push(`${r.toString().slice(0,8)}`),jt(t.join(":"))};var e1=(r,e)=>{if(r.size!==e.size)return!1;for(let[t,n]of r){let o=e.get(t);if(o===void 0||n instanceof Uint8Array&&o instanceof Uint8Array&&!O(n,o)||n instanceof Jo&&o instanceof Jo&&!n.equals(o))return!1}return!0};var Hc=Ue(C5(),1);function Uk(r){let e=new Uint8Array(r.reduce((n,o)=>n+Hc.default.encodingLength(o),0)),t=0;for(let n of r)e=Hc.encode(n,e,t),t+=Hc.default.encodingLength(n);return e}var N5=Uk;var E2=new Float32Array([-0]),Zo=new Uint8Array(E2.buffer);function B5(r,e,t){E2[0]=r,e[t]=Zo[0],e[t+1]=Zo[1],e[t+2]=Zo[2],e[t+3]=Zo[3]}function L5(r,e){return Zo[0]=r[e],Zo[1]=r[e+1],Zo[2]=r[e+2],Zo[3]=r[e+3],E2[0]}var x2=new Float64Array([-0]),$t=new Uint8Array(x2.buffer);function O5(r,e,t){x2[0]=r,e[t]=$t[0],e[t+1]=$t[1],e[t+2]=$t[2],e[t+3]=$t[3],e[t+4]=$t[4],e[t+5]=$t[5],e[t+6]=$t[6],e[t+7]=$t[7]}function K5(r,e){return $t[0]=r[e],$t[1]=r[e+1],$t[2]=r[e+2],$t[3]=r[e+3],$t[4]=r[e+4],$t[5]=r[e+5],$t[6]=r[e+6],$t[7]=r[e+7],x2[0]}var Fk=BigInt(Number.MAX_SAFE_INTEGER),Vk=BigInt(Number.MIN_SAFE_INTEGER),sr=class r{lo;hi;constructor(e,t){this.lo=e|0,this.hi=t|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(t+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(BigInt(t)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){let e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){let e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){let e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?t===0?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return Js;if(e<Fk&&e>Vk)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,o=e-(n<<32n);return t&&(n=~n|0n,o=~o|0n,++o>M5&&(o=0n,++n>M5&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(e){if(e===0)return Js;let t=e<0;t&&(e=-e);let n=e>>>0,o=(e-n)/4294967296>>>0;return t&&(o=~o>>>0,n=~n>>>0,++n>4294967295&&(n=0,++o>4294967295&&(o=0))),new r(n,o)}static from(e){return typeof e=="number"?r.fromNumber(e):typeof e=="bigint"?r.fromBigInt(e):typeof e=="string"?r.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new r(e.low>>>0,e.high>>>0):Js}},Js=new sr(0,0);Js.toBigInt=function(){return 0n};Js.zzEncode=Js.zzDecode=function(){return this};Js.length=function(){return 1};var M5=4294967296n;function U5(r){let e=0,t=0;for(let n=0;n<r.length;++n)t=r.charCodeAt(n),t<128?e+=1:t<2048?e+=2:(t&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function F5(r,e,t){if(t-e<1)return"";let o,s=[],i=0,a;for(;e<t;)a=r[e++],a<128?s[i++]=a:a>191&&a<224?s[i++]=(a&31)<<6|r[e++]&63:a>239&&a<365?(a=((a&7)<<18|(r[e++]&63)<<12|(r[e++]&63)<<6|r[e++]&63)-65536,s[i++]=55296+(a>>10),s[i++]=56320+(a&1023)):s[i++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,i>8191&&((o??(o=[])).push(String.fromCharCode.apply(String,s)),i=0);return o!=null?(i>0&&o.push(String.fromCharCode.apply(String,s.slice(0,i))),o.join("")):String.fromCharCode.apply(String,s.slice(0,i))}function v2(r,e,t){let n=t,o,s;for(let i=0;i<r.length;++i)o=r.charCodeAt(i),o<128?e[t++]=o:o<2048?(e[t++]=o>>6|192,e[t++]=o&63|128):(o&64512)===55296&&((s=r.charCodeAt(i+1))&64512)===56320?(o=65536+((o&1023)<<10)+(s&1023),++i,e[t++]=o>>18|240,e[t++]=o>>12&63|128,e[t++]=o>>6&63|128,e[t++]=o&63|128):(e[t++]=o>>12|224,e[t++]=o>>6&63|128,e[t++]=o&63|128);return t-n}function tn(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function t1(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var _2=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(e){this.buf=e,this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,tn(this,10);return e}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw tn(this,4);return t1(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw tn(this,4);return t1(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw tn(this,4);let e=L5(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw tn(this,4);let e=K5(this.buf,this.pos);return this.pos+=8,e}bytes(){let e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw tn(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return F5(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw tn(this,e);this.pos+=e}else do if(this.pos>=this.len)throw tn(this);while(this.buf[this.pos++]&128);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new sr(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw tn(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<t*7)>>>0,e}if(this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw tn(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw tn(this,8);let e=t1(this.buf,this.pos+=4),t=t1(this.buf,this.pos+=4);return new sr(e,t)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){return this.readLongVarint().toNumber(!0)}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 S2(r){return new _2(r instanceof Uint8Array?r:r.subarray())}function X(r,e){let t=S2(r);return e.decode(t)}function Rn(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}function ft(r=0){return globalThis.Buffer?.alloc!=null?Rn(globalThis.Buffer.alloc(r)):new Uint8Array(r)}function nt(r=0){return globalThis.Buffer?.allocUnsafe!=null?Rn(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}var R2={};oe(R2,{base10:()=>qk});var qk=Wo({prefix:"9",name:"base10",alphabet:"0123456789"});var A2={};oe(A2,{base16:()=>Hk,base16upper:()=>$k});var Hk=ot({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),$k=ot({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var I2={};oe(I2,{base2:()=>Gk});var Gk=ot({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var k2={};oe(k2,{base256emoji:()=>Xk});var q5=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}"),Yk=q5.reduce((r,e,t)=>(r[t]=e,r),[]),Wk=q5.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function zk(r){return r.reduce((e,t)=>(e+=Yk[t],e),"")}function jk(r){let e=[];for(let t of r){let n=Wk[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var Xk=ea({prefix:"\u{1F680}",name:"base256emoji",encode:zk,decode:jk});var T2={};oe(T2,{base36:()=>es,base36upper:()=>Qk});var es=Wo({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Qk=Wo({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var D2={};oe(D2,{base8:()=>Jk});var Jk=ot({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var P2={};oe(P2,{identity:()=>Zk});var Zk=ea({prefix:"\0",name:"identity",encode:r=>$8(r),decode:r=>H8(r)});var _H=new TextEncoder,SH=new TextDecoder;var H5=512;var r1=85;var N2={};oe(N2,{identity:()=>Xe});var G5=0,eT="identity",Y5=io;function tT(r){return Jr(G5,Y5(r))}var Xe={code:G5,name:eT,encode:Y5,digest:tT};var Dr={...P2,...I2,...D2,...R2,...A2,...t2,...T2,...r2,...g2,...k2},OH={...d2,...N2};function z5(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var W5=z5("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),B2=z5("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=nt(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),rT={utf8:W5,"utf-8":W5,hex:Dr.base16,latin1:B2,ascii:B2,binary:B2,...Dr},n1=rT;function x(r,e="utf8"){let t=n1[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?Rn(globalThis.Buffer.from(r,"utf-8")):t.decoder.decode(`${t.prefix}${r}`)}function L2(r){let e=r??8192,t=e>>>1,n,o=e;return function(i){if(i<1||i>t)return nt(i);o+i>e&&(n=nt(e),o=0);let a=n.subarray(o,o+=i);return o&7&&(o=(o|7)+1),a}}var Zs=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function O2(){}var M2=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},nT=L2();function oT(r){return globalThis.Buffer!=null?nt(r):nT(r)}var Yc=class{len;head;tail;states;constructor(){this.len=0,this.head=new Zs(O2,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new Zs(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new U2((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push($c,10,sr.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=sr.fromBigInt(e);return this._push($c,t.length(),t)}uint64Number(e){let t=sr.fromNumber(e);return this._push($c,t.length(),t)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){let t=sr.fromBigInt(e).zzEncode();return this._push($c,t.length(),t)}sint64Number(e){let t=sr.fromNumber(e).zzEncode();return this._push($c,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(K2,1,e?1:0)}fixed32(e){return this._push(Gc,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=sr.fromBigInt(e);return this._push(Gc,4,t.lo)._push(Gc,4,t.hi)}fixed64Number(e){let t=sr.fromNumber(e);return this._push(Gc,4,t.lo)._push(Gc,4,t.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push(B5,4,e)}double(e){return this._push(O5,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(K2,1,0):this.uint32(t)._push(iT,t,e)}string(e){let t=U5(e);return t!==0?this.uint32(t)._push(v2,t,e):this._push(K2,1,0)}fork(){return this.states=new M2(this),this.head=this.tail=new Zs(O2,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 Zs(O2,0,0),this.len=0),this}ldelim(){let e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=t,this.len+=n),this}finish(){let e=this.head.next,t=oT(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function K2(r,e,t){e[t]=r&255}function sT(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var U2=class extends Zs{next;constructor(e,t){super(sT,e,t),this.next=void 0}};function $c(r,e,t){for(;r.hi!==0;)e[t++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)e[t++]=r.lo&127|128,r.lo=r.lo>>>7;e[t++]=r.lo}function Gc(r,e,t){e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24}function iT(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(Yc.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(aT,e,r),this},Yc.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(cT,e,r),this});function aT(r,e,t){e.set(r,t)}function cT(r,e,t){r.length<40?v2(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(x(r),t)}function F2(){return new Yc}function Q(r,e){let t=F2();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var aa;(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"})(aa||(aa={}));function o1(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function Re(r){function e(o){if(r[o.toString()]==null)throw new Error("Invalid enum value");return r[o]}let t=function(s,i){let a=e(s);i.int32(a)},n=function(s){let i=s.int32();return e(i)};return o1("enum",aa.VARINT,t,n)}function J(r,e){return o1("message",aa.LENGTH_DELIMITED,r,e)}var Wc=class extends Error{code;constructor(e,t,n){super(e,n),this.code=t}};var ir;(function(r){let e;(function(a){let c;(function(d){d.Block="Block",d.Have="Have"})(c=a.WantType||(a.WantType={}));let l;(function(d){d[d.Block=0]="Block",d[d.Have=1]="Have"})(l||(l={})),function(d){d.codec=()=>Re(l)}(c=a.WantType||(a.WantType={}));let f;(function(d){let y;d.codec=()=>(y==null&&(y=J((p,m,g={})=>{g.lengthDelimited!==!1&&m.fork(),p.block!=null&&p.block.byteLength>0&&(m.uint32(10),m.bytes(p.block)),p.priority!=null&&p.priority!==0&&(m.uint32(16),m.int32(p.priority)),p.cancel!=null&&p.cancel!==!1&&(m.uint32(24),m.bool(p.cancel)),p.wantType!=null&&l[p.wantType]!==0&&(m.uint32(32),r.Wantlist.WantType.codec().encode(p.wantType,m)),p.sendDontHave!=null&&p.sendDontHave!==!1&&(m.uint32(40),m.bool(p.sendDontHave)),g.lengthDelimited!==!1&&m.ldelim()},(p,m)=>{let g={block:new Uint8Array(0),priority:0,cancel:!1,wantType:c.Block,sendDontHave:!1},b=m==null?p.len:p.pos+m;for(;p.pos<b;){let E=p.uint32();switch(E>>>3){case 1:g.block=p.bytes();break;case 2:g.priority=p.int32();break;case 3:g.cancel=p.bool();break;case 4:g.wantType=r.Wantlist.WantType.codec().decode(p);break;case 5:g.sendDontHave=p.bool();break;default:p.skipType(E&7);break}}return g})),y),d.encode=p=>Q(p,d.codec()),d.decode=p=>X(p,d.codec())})(f=a.Entry||(a.Entry={}));let u;a.codec=()=>(u==null&&(u=J((d,y,p={})=>{if(p.lengthDelimited!==!1&&y.fork(),d.entries!=null)for(let m of d.entries)y.uint32(10),r.Wantlist.Entry.codec().encode(m,y);d.full!=null&&d.full!==!1&&(y.uint32(16),y.bool(d.full)),p.lengthDelimited!==!1&&y.ldelim()},(d,y)=>{let p={entries:[],full:!1},m=y==null?d.len:d.pos+y;for(;d.pos<m;){let g=d.uint32();switch(g>>>3){case 1:p.entries.push(r.Wantlist.Entry.codec().decode(d,d.uint32()));break;case 2:p.full=d.bool();break;default:d.skipType(g&7);break}}return p})),u),a.encode=d=>Q(d,a.codec()),a.decode=d=>X(d,a.codec())})(e=r.Wantlist||(r.Wantlist={}));let t;(function(a){let c;a.codec=()=>(c==null&&(c=J((l,f,u={})=>{u.lengthDelimited!==!1&&f.fork(),l.prefix!=null&&l.prefix.byteLength>0&&(f.uint32(10),f.bytes(l.prefix)),l.data!=null&&l.data.byteLength>0&&(f.uint32(18),f.bytes(l.data)),u.lengthDelimited!==!1&&f.ldelim()},(l,f)=>{let u={prefix:new Uint8Array(0),data:new Uint8Array(0)},d=f==null?l.len:l.pos+f;for(;l.pos<d;){let y=l.uint32();switch(y>>>3){case 1:u.prefix=l.bytes();break;case 2:u.data=l.bytes();break;default:l.skipType(y&7);break}}return u})),c),a.encode=l=>Q(l,a.codec()),a.decode=l=>X(l,a.codec())})(t=r.Block||(r.Block={}));let n;(function(a){a.Have="Have",a.DontHave="DontHave"})(n=r.BlockPresenceType||(r.BlockPresenceType={}));let o;(function(a){a[a.Have=0]="Have",a[a.DontHave=1]="DontHave"})(o||(o={})),function(a){a.codec=()=>Re(o)}(n=r.BlockPresenceType||(r.BlockPresenceType={}));let s;(function(a){let c;a.codec=()=>(c==null&&(c=J((l,f,u={})=>{u.lengthDelimited!==!1&&f.fork(),l.cid!=null&&l.cid.byteLength>0&&(f.uint32(10),f.bytes(l.cid)),l.type!=null&&o[l.type]!==0&&(f.uint32(16),r.BlockPresenceType.codec().encode(l.type,f)),u.lengthDelimited!==!1&&f.ldelim()},(l,f)=>{let u={cid:new Uint8Array(0),type:n.Have},d=f==null?l.len:l.pos+f;for(;l.pos<d;){let y=l.uint32();switch(y>>>3){case 1:u.cid=l.bytes();break;case 2:u.type=r.BlockPresenceType.codec().decode(l);break;default:l.skipType(y&7);break}}return u})),c),a.encode=l=>Q(l,a.codec()),a.decode=l=>X(l,a.codec())})(s=r.BlockPresence||(r.BlockPresence={}));let i;r.codec=()=>(i==null&&(i=J((a,c,l={})=>{if(l.lengthDelimited!==!1&&c.fork(),a.wantlist!=null&&(c.uint32(10),r.Wantlist.codec().encode(a.wantlist,c)),a.blocks!=null)for(let f of a.blocks)c.uint32(18),c.bytes(f);if(a.payload!=null)for(let f of a.payload)c.uint32(26),r.Block.codec().encode(f,c);if(a.blockPresences!=null)for(let f of a.blockPresences)c.uint32(34),r.BlockPresence.codec().encode(f,c);a.pendingBytes!=null&&a.pendingBytes!==0&&(c.uint32(40),c.int32(a.pendingBytes)),l.lengthDelimited!==!1&&c.ldelim()},(a,c)=>{let l={blocks:[],payload:[],blockPresences:[],pendingBytes:0},f=c==null?a.len:a.pos+c;for(;a.pos<f;){let u=a.uint32();switch(u>>>3){case 1:l.wantlist=r.Wantlist.codec().decode(a,a.uint32());break;case 2:l.blocks.push(a.bytes());break;case 3:l.payload.push(r.Block.codec().decode(a,a.uint32()));break;case 4:l.blockPresences.push(r.BlockPresence.codec().decode(a,a.uint32()));break;case 5:l.pendingBytes=a.int32();break;default:a.skipType(u&7);break}}return l})),i),r.encode=a=>Q(a,r.codec()),r.decode=a=>X(a,r.codec())})(ir||(ir={}));var Gt=class r{static Entry=Jo;static WantType={Block:ir.Wantlist.WantType.Block,Have:ir.Wantlist.WantType.Have};static BlockPresenceType={Have:ir.BlockPresenceType.Have,DontHave:ir.BlockPresenceType.DontHave};static deserialize=async(e,t)=>{let n=ir.decode(e),o=n.wantlist?.full===!0,s=new r(o);return n.wantlist?.entries.forEach(i=>{if(i.block==null)return;let a=de.decode(i.block);s.addEntry(a,i.priority??0,i.wantType,!!i.cancel,!!i.sendDontHave)}),n.blockPresences.forEach(i=>{if(i.cid==null)return;let a=de.decode(i.cid);i.type===r.BlockPresenceType.Have?s.addHave(a):s.addDontHave(a)}),n.blocks.length>0?(await Promise.all(n.blocks.map(async i=>{let a=await K.digest(i),c=de.createV0(a);s.addBlock(c,i)})),s):(n.payload.length>0&&(await Promise.all(n.payload.map(async i=>{if(i.prefix==null||i.data==null)return;let a=(0,j5.default)(i.prefix),c=a[0],l=a[1],f=a[2],u=f===K.code?K:await t?.getHasher(f);if(u==null)throw new h("Unknown hash algorithm","ERR_UNKNOWN_HASH_ALG");let d=await u.digest(i.data),y=de.create(c,l,d);s.addBlock(y,i.data)})),s.setPendingBytes(n.pendingBytes)),s)};static blockPresenceSize=e=>e.bytes.length+1;full;wantlist;blocks;blockPresences;pendingBytes;constructor(e){this.full=e,this.wantlist=new Map,this.blocks=new Map,this.blockPresences=new Map,this.pendingBytes=0}get empty(){return this.blocks.size===0&&this.wantlist.size===0&&this.blockPresences.size===0}addEntry(e,t,n,o,s){n==null&&(n=r.WantType.Block);let i=e.toString(ie),a=this.wantlist.get(i);a!=null?(a.wantType===n&&(a.priority=t),o===!0&&(a.cancel=!!o),s===!0&&(a.sendDontHave=!!s),n===r.WantType.Block&&a.wantType===r.WantType.Have&&(a.wantType=n)):this.wantlist.set(i,new Jo(e,t,n,o,s))}addBlock(e,t){let n=e.toString(ie);this.blocks.set(n,t)}addHave(e){let t=e.toString(ie);this.blockPresences.has(t)||this.blockPresences.set(t,r.BlockPresenceType.Have)}addDontHave(e){let t=e.toString(ie);this.blockPresences.has(t)||this.blockPresences.set(t,r.BlockPresenceType.DontHave)}cancel(e){let t=e.toString(ie);this.wantlist.delete(t),this.addEntry(e,0,r.WantType.Block,!0,!1)}setPendingBytes(e){this.pendingBytes=e}serializeToBitswap100(){return ir.encode({wantlist:{entries:Array.from(this.wantlist.values()).map(e=>({block:e.cid.bytes,priority:Number(e.priority),cancel:!!e.cancel,wantType:ir.Wantlist.WantType.Block,sendDontHave:!1})),full:!!this.full},blocks:Array.from(this.blocks.values())})}serializeToBitswap110(){let e={wantlist:{entries:Array.from(this.wantlist.values()).map(t=>({block:t.cid.bytes,priority:Number(t.priority),wantType:t.wantType,cancel:!!t.cancel,sendDontHave:!!t.sendDontHave})),full:!!this.full},blockPresences:[],payload:[],pendingBytes:this.pendingBytes,blocks:[]};for(let[t,n]of this.blocks.entries()){let o=de.parse(t),s=o.version,i=o.code,a=o.multihash.code,c=o.multihash.digest.length,l=N5([s,i,a,c]);e.payload.push({prefix:l,data:n})}for(let[t,n]of this.blockPresences)e.blockPresences.push({cid:de.parse(t).bytes,type:n});return this.pendingBytes>0&&(e.pendingBytes=this.pendingBytes),ir.encode(e)}equals(e){return!(this.full!==e.full||this.pendingBytes!==e.pendingBytes||!e1(this.wantlist,e.wantlist)||!e1(this.blocks,e.blocks)||!e1(this.blockPresences,e.blockPresences))}get[Symbol.toStringTag](){let e=Array.from(this.wantlist.keys()),t=Array.from(this.blocks.keys());return`BitswapMessage <full: ${this.full}, list: ${e}, blocks: ${t}>`}};var X5={Block:ir.Wantlist.WantType.Block,Have:ir.Wantlist.WantType.Have},lT=(r,e)=>Array.prototype.slice.call(e,0).sort((t,n)=>{let o=r(t),s=r(n);return o<s?-1:o>s?1:0}),ts=class{static Entry=Qs;set;_stats;constructor(e,t){this.set=t!=null?xn({name:"ipfs_bitswap_wantlist",metrics:t.metrics}):new Map,this._stats=e}get length(){return this.set.size}add(e,t,n){let o=e.toString(ie),s=this.set.get(o);s!=null?(s.inc(),s.priority=t,s.wantType===X5.Have&&n===X5.Block&&(s.wantType=n)):(this.set.set(o,new Qs(e,t,n)),this._stats!=null&&this._stats.push(void 0,"wantListSize",1))}remove(e){let t=e.toString(ie),n=this.set.get(t);n!=null&&(n.dec(),!n.hasRefs()&&(this.set.delete(t),this._stats!=null&&this._stats.push(void 0,"wantListSize",-1)))}removeForce(e){this.set.has(e)&&this.set.delete(e)}forEach(e){this.set.forEach(e)}entries(){return this.set.entries()}sortedEntries(){return new Map(lT(e=>e[1].key,Array.from(this.set.entries())))}contains(e){let t=e.toString(ie);return this.set.has(t)}get(e){let t=e.toString(ie);return this.set.get(t)}};var s1=class{partner;wantlist;exchangeCount;accounting;lastExchange;constructor(e){this.partner=e,this.wantlist=new ts,this.exchangeCount=0,this.accounting={bytesSent:0,bytesRecv:0}}sentBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.accounting.bytesSent+=e}receivedBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.accounting.bytesRecv+=e}wants(e,t,n){this.wantlist.add(e,t,n)}cancelWant(e){this.wantlist.remove(e)}wantlistContains(e){return this.wantlist.get(e)}debtRatio(){return this.accounting.bytesSent/(this.accounting.bytesRecv+1)}};var zc=class extends Map{_cmp;_keys;constructor(e,t){super(),this._cmp=t??this._defaultSort,this._keys=[];for(let[n,o]of e??[])this.set(n,o)}update(e){if(e<0||e>=this._keys.length)return;let t=this._keys[e];this._keys.splice(e,1);let n=this._find(t);this._keys.splice(n,0,t)}set(e,t){if(this.has(e)){let o=this.indexOf(e);this._keys.splice(o,1)}super.set(e,t);let n=this._find(e);return this._keys.splice(n,0,e),this}clear(){super.clear(),this._keys=[]}delete(e){if(!this.has(e))return!1;let t=this.indexOf(e);return this._keys.splice(t,1),super.delete(e)}indexOf(e){if(!this.has(e))return-1;let t=this._find(e);if(this._keys[t]===e)return t;for(let n=1;n<this._keys.length;n++){if(this._keys[t+n]===e)return t+n;if(this._keys[t-n]===e)return t-n}return-1}_find(e){let t=0,n=this._keys.length;for(;t<n;){let o=t+n>>>1,s=this._kCmp(this._keys[o],e);if(s<0)t=o+1;else if(s>0)n=o;else return o}return t}*keys(){for(let e of this._keys)yield e}*values(){for(let e of this._keys)yield this.get(e)}*entries(){for(let e of this._keys)yield[e,this.get(e)]}*[Symbol.iterator](){yield*this.entries()}forEach(e,t=this){if(e!=null)for(let n of this._keys){let o=this.get(n);if(o==null)throw new Error("Value cannot be undefined");e.apply(t,[[n,o]])}}_defaultSort(e,t){return e[0]<t[0]?-1:t[0]<e[0]?1:0}_kCmp(e,t){return this._cmp([e,this.get(e)],[t,this.get(t)])}};var uT={hasNewInfo(){return!1},merge(){}},i1=class{_taskMerger;_byPeer;constructor(e=uT){this._taskMerger=e,this._byPeer=new zc([],a1.compare)}pushTasks(e,t){let n=this._byPeer.get(e.toString());n==null&&(n=new a1(e,this._taskMerger)),n.pushTasks(t),this._byPeer.set(e.toString(),n)}popTasks(e){let t=this._head();if(t===void 0)return{tasks:[],pendingSize:0};let{tasks:n,pendingSize:o}=t.popTasks(e);if(n.length===0)return{tasks:n,pendingSize:o};let s=t.peerId;return t.isIdle()?this._byPeer.delete(s.toString()):this._byPeer.update(0),{peerId:s,tasks:n,pendingSize:o}}_head(){if(this._byPeer.size!==0)for(let[,e]of this._byPeer)return e}remove(e,t){this._byPeer.get(t.toString())?.remove(e)}tasksDone(e,t){let n=this._byPeer.get(e.toString());if(n==null)return;let o=this._byPeer.indexOf(e.toString());for(let s of t)n.taskDone(s);this._byPeer.update(o)}},a1=class{peerId;_taskMerger;_activeTotalSize;_pending;_active;constructor(e,t){this.peerId=e,this._taskMerger=t,this._activeTotalSize=0,this._pending=new V2,this._active=new Set}pushTasks(e){for(let t of e)this._pushTask(t)}_pushTask(e){if(!this._taskHasMoreInfoThanActiveTasks(e))return;let t=this._pending.get(e.topic);if(t!=null){e.priority>t.priority&&this._pending.updatePriority(e.topic,e.priority),this._taskMerger.merge(e,t);return}this._pending.add(e)}_taskHasMoreInfoThanActiveTasks(e){let t=[];for(let n of this._active)n.topic===e.topic&&t.push(n);return t.length===0?!0:this._taskMerger.hasNewInfo(e,t)}popTasks(e){let t=0,n=[],o=this._pending.tasks();for(let s=0;s<o.length&&t<e;s++){let i=o[s];n.push(i),t+=i.size,this._pending.delete(i.topic),this._activeTotalSize+=i.size,this._active.add(i)}return{tasks:n,pendingSize:this._pending.totalSize}}taskDone(e){this._active.has(e)&&(this._activeTotalSize-=e.size,this._active.delete(e))}remove(e){this._pending.delete(e)}isIdle(){return this._pending.length===0&&this._active.size===0}static compare(e,t){return e[1]._pending.length===0?1:t[1]._pending.length===0?-1:e[1]._activeTotalSize===t[1]._activeTotalSize?t[1]._pending.length-e[1]._pending.length:e[1]._activeTotalSize-t[1]._activeTotalSize}},V2=class{_tasks;constructor(){this._tasks=new zc([],this._compare)}get length(){return this._tasks.size}get totalSize(){return[...this._tasks.values()].reduce((e,t)=>e+t.task.size,0)}get(e){return this._tasks?.get(e)?.task}add(e){this._tasks.set(e.topic,{created:Date.now(),task:e})}delete(e){this._tasks.delete(e)}tasks(){return[...this._tasks.values()].map(e=>e.task)}updatePriority(e,t){let n=this._tasks.get(e);if(n==null)return;let o=this._tasks.indexOf(e);n.task.priority=t,this._tasks.update(o)}_compare(e,t){return e[1].task.priority===t[1].task.priority?e[1].created-t[1].created:t[1].task.priority-e[1].task.priority}};var Q5={hasNewInfo(r,e){let t=!1,n=!1;for(let o of e)o.data.haveBlock&&(t=!0),o.data.isWantBlock&&(n=!0);return!!(!n&&r.data.isWantBlock||!t&&r.data.haveBlock)},merge(r,e){let t=r.data,n=e.data;!n.haveBlock&&t.haveBlock&&(n.haveBlock=t.haveBlock,n.blockSize=t.blockSize),!n.isWantBlock&&t.isWantBlock&&(n.isWantBlock=!0,(!n.haveBlock||t.haveBlock)&&(n.haveBlock=t.haveBlock,e.size=r.size)),n.isWantBlock&&n.haveBlock&&(e.size=n.blockSize)}};var J5=Gt.WantType,fT=16*1024,dT=1024,c1=class{_log;blockstore;network;_stats;_opts;ledgerMap;_running;_requestQueue;constructor(e,t,n,o,s,i={}){this._log=Tr(e,"engine"),this.blockstore=t,this.network=n,this._stats=o,this._opts=this._processOpts(i),this.ledgerMap=xn({name:"ipfs_bitswap_ledger_map",metrics:s.metrics}),this._running=!1,this._requestQueue=new i1(Q5)}_processOpts(e){return{maxSizeReplaceHasWithBlock:dT,targetMessageSize:fT,...e}}_scheduleProcessTasks(){setTimeout(()=>{this._processTasks().catch(e=>{this._log.error("error processing stats",e)})})}async _processTasks(){if(!this._running)return;let{peerId:e,tasks:t,pendingSize:n}=this._requestQueue.popTasks(this._opts.targetMessageSize);if(t.length===0)return;let o=new Gt(!1);o.setPendingBytes(n);let s=[],i=new Map;for(let c of t){let l=de.parse(c.topic);c.data.haveBlock?c.data.isWantBlock?(s.push(l),i.set(c.topic,c.data)):o.addHave(l):o.addDontHave(l)}let a=await this._getBlocks(s);for(let[c,l]of i){let f=de.parse(c),u=a.get(c);u!=null?o.addBlock(f,u):l.sendDontHave&&o.addDontHave(f)}if(o.empty){e!=null&&this._requestQueue.tasksDone(e,t),this._scheduleProcessTasks();return}try{e!=null&&await this.network.sendMessage(e,o);for(let[c,l]of a.entries())e!=null&&this.messageSent(e,de.parse(c),l)}catch(c){this._log.error(c)}e!=null&&this._requestQueue.tasksDone(e,t),this._scheduleProcessTasks()}wantlistForPeer(e){let t=e.toString(),n=this.ledgerMap.get(t);return n!=null?n.wantlist.sortedEntries():new Map}ledgerForPeer(e){let t=e.toString(),n=this.ledgerMap.get(t);if(n!=null)return{peer:n.partner,value:n.debtRatio(),sent:n.accounting.bytesSent,recv:n.accounting.bytesRecv,exchanged:n.exchangeCount}}peers(){return Array.from(this.ledgerMap.values()).map(e=>e.partner)}receivedBlocks(e){if(e.length!==0){for(let t of this.ledgerMap.values())for(let{cid:n,block:o}of e){let s=t.wantlistContains(n);if(s==null)continue;let i=o.length,a=this._sendAsBlock(s.wantType,i),c=i;a||(c=Gt.blockPresenceSize(s.cid)),this._requestQueue.pushTasks(t.partner,[{topic:s.cid.toString(ie),priority:s.priority,size:c,data:{blockSize:i,isWantBlock:a,haveBlock:!0,sendDontHave:!1}}])}this._scheduleProcessTasks()}}async messageReceived(e,t){let n=this._findOrCreate(e);if(t.empty)return;if(t.full&&(n.wantlist=new ts),this._updateBlockAccounting(t.blocks,n),t.wantlist.size===0){this._scheduleProcessTasks();return}let o=[],s=[];t.wantlist.forEach(i=>{i.cancel?(n.cancelWant(i.cid),o.push(i.cid)):(n.wants(i.cid,i.priority,i.wantType),s.push(i))}),this._cancelWants(e,o),await this._addWants(e,s),this._scheduleProcessTasks()}_cancelWants(e,t){for(let n of t)this._requestQueue.remove(n.toString(ie),e)}async _addWants(e,t){let n=await this._getBlockSizes(t.map(s=>s.cid)),o=[];for(let s of t){let i=s.cid.toString(ie),a=n.get(i);if(a==null)s.sendDontHave&&o.push({topic:i,priority:s.priority,size:Gt.blockPresenceSize(s.cid),data:{isWantBlock:s.wantType===J5.Block,blockSize:0,haveBlock:!1,sendDontHave:s.sendDontHave}});else{let c=this._sendAsBlock(s.wantType,a),l=a;c||(l=Gt.blockPresenceSize(s.cid)),o.push({topic:i,priority:s.priority,size:l,data:{isWantBlock:c,blockSize:a,haveBlock:!0,sendDontHave:s.sendDontHave}})}this._requestQueue.pushTasks(e,o)}}_sendAsBlock(e,t){return e===J5.Block||t<=this._opts.maxSizeReplaceHasWithBlock}async _getBlockSizes(e){let t=await this._getBlocks(e);return new Map([...t].map(([n,o])=>[n,o.length]))}async _getBlocks(e){let t=new Map;return await Promise.all(e.map(async n=>{try{let o=await this.blockstore.get(n);t.set(n.toString(ie),o)}catch(o){o.code!=="ERR_NOT_FOUND"&&this._log.error("failed to query blockstore for %s: %s",n,o)}})),t}_updateBlockAccounting(e,t){for(let n of e.values())this._log("got block (%s bytes)",n.length),t.receivedBytes(n.length)}messageSent(e,t,n){let o=this._findOrCreate(e);o.sentBytes(n.length),o.wantlist.remove(t)}numBytesSentTo(e){return this._findOrCreate(e).accounting.bytesSent}numBytesReceivedFrom(e){return this._findOrCreate(e).accounting.bytesRecv}peerDisconnected(e){this.ledgerMap.delete(e.toString())}_findOrCreate(e){let t=e.toString(),n=this.ledgerMap.get(t);if(n!=null)return n;let o=new s1(e);return this.ledgerMap.set(t,o),this._stats!=null&&this._stats.push(t,"peerCount",1),o}start(){this._running=!0}stop(){this._running=!1}};function hT(r){return r[Symbol.asyncIterator]!=null}function pT(r){if(hT(r))return(async()=>{for await(let e of r);})();for(let e of r);}var Pr=pT;var mT=Math.pow(2,7),yT=Math.pow(2,14),gT=Math.pow(2,21),q2=Math.pow(2,28),H2=Math.pow(2,35),$2=Math.pow(2,42),G2=Math.pow(2,49),Ke=128,Yt=127;function Et(r){if(r<mT)return 1;if(r<yT)return 2;if(r<gT)return 3;if(r<q2)return 4;if(r<H2)return 5;if(r<$2)return 6;if(r<G2)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function bT(r,e,t=0){switch(Et(r)){case 8:e[t++]=r&255|Ke,r/=128;case 7:e[t++]=r&255|Ke,r/=128;case 6:e[t++]=r&255|Ke,r/=128;case 5:e[t++]=r&255|Ke,r/=128;case 4:e[t++]=r&255|Ke,r>>>=7;case 3:e[t++]=r&255|Ke,r>>>=7;case 2:e[t++]=r&255|Ke,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function wT(r,e,t=0){switch(Et(r)){case 8:e.set(t++,r&255|Ke),r/=128;case 7:e.set(t++,r&255|Ke),r/=128;case 6:e.set(t++,r&255|Ke),r/=128;case 5:e.set(t++,r&255|Ke),r/=128;case 4:e.set(t++,r&255|Ke),r>>>=7;case 3:e.set(t++,r&255|Ke),r>>>=7;case 2:e.set(t++,r&255|Ke),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function ET(r,e){let t=r[e],n=0;if(n+=t&Yt,t<Ke||(t=r[e+1],n+=(t&Yt)<<7,t<Ke)||(t=r[e+2],n+=(t&Yt)<<14,t<Ke)||(t=r[e+3],n+=(t&Yt)<<21,t<Ke)||(t=r[e+4],n+=(t&Yt)*q2,t<Ke)||(t=r[e+5],n+=(t&Yt)*H2,t<Ke)||(t=r[e+6],n+=(t&Yt)*$2,t<Ke)||(t=r[e+7],n+=(t&Yt)*G2,t<Ke))return n;throw new RangeError("Could not decode varint")}function xT(r,e){let t=r.get(e),n=0;if(n+=t&Yt,t<Ke||(t=r.get(e+1),n+=(t&Yt)<<7,t<Ke)||(t=r.get(e+2),n+=(t&Yt)<<14,t<Ke)||(t=r.get(e+3),n+=(t&Yt)<<21,t<Ke)||(t=r.get(e+4),n+=(t&Yt)*q2,t<Ke)||(t=r.get(e+5),n+=(t&Yt)*H2,t<Ke)||(t=r.get(e+6),n+=(t&Yt)*$2,t<Ke)||(t=r.get(e+7),n+=(t&Yt)*G2,t<Ke))return n;throw new RangeError("Could not decode varint")}function st(r,e,t=0){return e==null&&(e=nt(Et(r))),e instanceof Uint8Array?bT(r,e,t):wT(r,e,t)}function gr(r,e=0){return r instanceof Uint8Array?ET(r,e):xT(r,e)}function le(r,e){if(globalThis.Buffer!=null)return Rn(globalThis.Buffer.concat(r,e));e==null&&(e=r.reduce((o,s)=>o+s.length,0));let t=nt(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return Rn(t)}var e6=Symbol.for("@achingbrain/uint8arraylist");function Z5(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let o=t+n.byteLength;if(e<o)return{buf:n,index:e-t};t=o}throw new RangeError("index is out of bounds")}function l1(r){return!!r?.[e6]}var be=class r{bufs;length;[e6]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(l1(n))t+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(l1(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=Z5(this.bufs,e);return t.buf[t.index]}set(e,t){let n=Z5(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(l1(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:o}=this._subList(e,t);return le(n,o)}subarray(e,t){let{bufs:n,length:o}=this._subList(e,t);return n.length===1?n[0]:le(n,o)}sublist(e,t){let{bufs:n,length:o}=this._subList(e,t),s=new r;return s.length=o,s.bufs=[...n],s}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:this.bufs,length:this.length};let n=[],o=0;for(let s=0;s<this.bufs.length;s++){let i=this.bufs[s],a=o,c=a+i.byteLength;if(o=c,e>=c)continue;let l=e>=a&&e<c,f=t>a&&t<=c;if(l&&f){if(e===a&&t===c){n.push(i);break}let u=e-a;n.push(i.subarray(u,u+(t-e)));break}if(l){if(e===0){n.push(i);continue}n.push(i.subarray(e-a));continue}if(f){if(t===c){n.push(i);break}n.push(i.subarray(0,t-a));break}n.push(i)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!l1(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let s=256,i=new Int32Array(s);for(let u=0;u<s;u++)i[u]=-1;for(let u=0;u<o;u++)i[n[u]]=u;let a=i,c=this.byteLength-n.byteLength,l=n.byteLength-1,f;for(let u=t;u<=c;u+=f){f=0;for(let d=l;d>=0;d--){let y=this.get(u+d);if(n[d]!==y){f=Math.max(1,d-a[y]);break}}if(f===0)return u}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=nt(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let o=ft(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,t,n),this.write(o,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let o=ft(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,t,n),this.write(o,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let o=ft(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,t,n),this.write(o,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=nt(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let o=ft(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,t,n),this.write(o,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let o=ft(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,t,n),this.write(o,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let o=ft(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,t,n),this.write(o,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let o=ft(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,t,n),this.write(o,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let o=ft(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,t,n),this.write(o,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!O(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((o,s)=>o+s.byteLength,0)),n.length=t,n}};function u1(r){return r[Symbol.asyncIterator]!=null}var f1=r=>{let e=Et(r),t=nt(e);return st(r,t),f1.bytes=e,t};f1.bytes=0;function ar(r,e){e=e??{};let t=e.lengthEncoder??f1;function*n(o){let s=t(o.byteLength);s instanceof Uint8Array?yield s:yield*s,o instanceof Uint8Array?yield o:yield*o}return u1(r)?async function*(){for await(let o of r)yield*n(o)}():function*(){for(let o of r)yield*n(o)}()}ar.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??f1;return new be(t(r.byteLength),r)};var ca=Ue(ei(),1);var _T=8,ST=1024*1024*4,ti;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(ti||(ti={}));var Y2=r=>{let e=gr(r);return Y2.bytes=Et(e),e};Y2.bytes=0;function cr(r,e){let t=new be,n=ti.LENGTH,o=-1,s=e?.lengthDecoder??Y2,i=e?.maxLengthLength??_T,a=e?.maxDataLength??ST;function*c(){for(;t.byteLength>0;){if(n===ti.LENGTH)try{if(o=s(t),o<0)throw(0,ca.default)(new Error("invalid message length"),"ERR_INVALID_MSG_LENGTH");if(o>a)throw(0,ca.default)(new Error("message length too long"),"ERR_MSG_DATA_TOO_LONG");let l=s.bytes;t.consume(l),e?.onLength!=null&&e.onLength(o),n=ti.DATA}catch(l){if(l instanceof RangeError){if(t.byteLength>i)throw(0,ca.default)(new Error("message length length too long"),"ERR_MSG_LENGTH_TOO_LONG");break}throw l}if(n===ti.DATA){if(t.byteLength<o)break;let l=t.sublist(0,o);t.consume(o),e?.onData!=null&&e.onData(l),yield l,n=ti.LENGTH}}}return u1(r)?async function*(){for await(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw(0,ca.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}():function*(){for(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw(0,ca.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}()}cr.fromReader=(r,e)=>{let t=1,n=async function*(){for(;;)try{let{done:s,value:i}=await r.next(t);if(s===!0)return;i!=null&&(yield i)}catch(s){if(s.code==="ERR_UNDER_READ")return{done:!0,value:null};throw s}finally{t=1}}();return cr(n,{...e??{},onLength:s=>{t=s}})};function RT(r){return r[Symbol.asyncIterator]!=null}function AT(r,e){if(RT(r))return async function*(){for await(let a of r)yield e(a)}();let t=Zi(r),{value:n,done:o}=t.next();if(o===!0)return function*(){}();let s=e(n);if(typeof s.then=="function")return async function*(){yield await s;for await(let a of t)yield e(a)}();let i=e;return function*(){yield s;for(let a of t)yield i(a)}()}var rn=AT;function he(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var h1=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||e-1&e)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},la=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new h1(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){let t=this.head;this.head=t.next=new h1(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){let t=this.tail.next;this.tail.next=null,this.tail=t,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}};var W2=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function At(r={}){return IT(t=>{let n=t.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function IT(r,e){e=e??{};let t=e.onEnd,n=new la,o,s,i,a=he(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((g,b)=>{s=E=>{s=null,n.push(E);try{g(r(n))}catch(w){b(w)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=he()})}},l=g=>s!=null?s(g):(n.push(g),o),f=g=>(n=new la,s!=null?s({error:g}):(n.push({error:g}),o)),u=g=>{if(i)return o;if(e?.objectMode!==!0&&g?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:g})},d=g=>i?o:(i=!0,g!=null?f(g):l({done:!0})),y=()=>(n=new la,d(),{done:!0}),p=g=>(d(g),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:y,throw:p,push:u,end:d,get readableLength(){return n.size},onEmpty:async g=>{let b=g?.signal;if(b?.throwIfAborted(),n.isEmpty())return;let E,w;b!=null&&(E=new Promise((_,I)=>{w=()=>{I(new W2)},b.addEventListener("abort",w)}));try{await Promise.race([a.promise,E])}finally{w!=null&&b!=null&&b?.removeEventListener("abort",w)}}},t==null)return o;let m=o;return o={[Symbol.asyncIterator](){return this},next(){return m.next()},throw(g){return m.throw(g),t!=null&&(t(g),t=void 0),{done:!0}},return(){return m.return(),t!=null&&(t(),t=void 0),{done:!0}},push:u,end(g){return m.end(g),t!=null&&(t(g),t=void 0),o},get readableLength(){return m.readableLength},onEmpty:g=>m.onEmpty(g)},o}function kT(r){return r[Symbol.asyncIterator]!=null}function TT(...r){let e=[];for(let t of r)kT(t)||e.push(t);return e.length===r.length?function*(){for(let t of e)yield*t}():async function*(){let t=At({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(r.map(async n=>{for await(let o of n)t.push(o)})),t.end()}catch(n){t.end(n)}}),yield*t}()}var Xt=TT;function it(r,...e){if(r==null)throw new Error("Empty pipeline");if(z2(r)){let n=r;r=()=>n.source}else if(o6(r)||n6(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&z2(t[t.length-1])&&(t[t.length-1]=t[t.length-1].sink),t.length>2)for(let n=1;n<t.length-1;n++)z2(t[n])&&(t[n]=PT(t[n]));return DT(...t)}var DT=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},n6=r=>r?.[Symbol.asyncIterator]!=null,o6=r=>r?.[Symbol.iterator]!=null,z2=r=>r==null?!1:r.sink!=null&&r.source!=null,PT=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=At({objectMode:!0});t.then(()=>{n.end()},i=>{n.end(i)});let o,s=r.source;if(n6(s))o=async function*(){yield*s,n.end()};else if(o6(s))o=function*(){yield*s,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return Xt(n,o())}return r.source};function CT(r){return r[Symbol.asyncIterator]!=null}function NT(r,e){return CT(r)?async function*(){let t=0;if(!(e<1)){for await(let n of r)if(yield n,t++,t===e)return}}():function*(){let t=0;if(!(e<1)){for(let n of r)if(yield n,t++,t===e)return}}()}var rs=NT;var De=class extends Event{constructor(e,t){super(e),this.detail=t}};var y6=Ue(f6(),1);var d6=Math.pow(2,31)-1,h6=1e3,p6=1;var Q2="/ipfs/bitswap/1.0.0",J2="/ipfs/bitswap/1.1.0",Z2="/ipfs/bitswap/1.2.0",OT=1024,KT=1024,MT=3e4,m1=class{_log;_libp2p;_bitswap;_protocols;_stats;_running;_hashLoader;_maxInboundStreams;_maxOutboundStreams;_incomingStreamTimeout;_registrarIds;constructor(e,t,n,o={}){this._log=Tr(e.peerId,"network"),this._libp2p=e,this._bitswap=t,this._protocols=[Q2],o.b100Only!==!0&&(this._protocols.unshift(J2),this._protocols.unshift(Z2)),this._stats=n,this._running=!1,this._onPeerConnect=this._onPeerConnect.bind(this),this._onPeerDisconnect=this._onPeerDisconnect.bind(this),this._onConnection=this._onConnection.bind(this),this._hashLoader=o.hashLoader??{async getHasher(){throw new Error("Not implemented")}},this._maxInboundStreams=o.maxInboundStreams??OT,this._maxOutboundStreams=o.maxOutboundStreams??KT,this._incomingStreamTimeout=o.incomingStreamTimeout??MT}async start(){this._running=!0,await this._libp2p.handle(this._protocols,this._onConnection,{maxInboundStreams:this._maxInboundStreams,maxOutboundStreams:this._maxOutboundStreams});let e={onConnect:this._onPeerConnect,onDisconnect:this._onPeerDisconnect};this._registrarIds=[];for(let t of this._protocols)this._registrarIds.push(await this._libp2p.register(t,e));this._libp2p.getConnections().forEach(t=>{this._onPeerConnect(t.remotePeer)})}async stop(){if(this._running=!1,await this._libp2p.unhandle(this._protocols),this._registrarIds!=null){for(let e of this._registrarIds)this._libp2p.unregister(e);this._registrarIds=[]}}_onConnection(e){if(!this._running)return;let{stream:t,connection:n}=e,o=new y6.TimeoutController(this._incomingStreamTimeout);Promise.resolve().then(async()=>{this._log("incoming new bitswap %s connection from %p",t.protocol,n.remotePeer);let s=()=>{t.abort(new h("Incoming Bitswap stream timed out","ERR_TIMEOUT"))},i=AbortSignal.timeout(this._incomingStreamTimeout);i.addEventListener("abort",s),await it(t,a=>cr(a),async a=>{for await(let c of a){try{let l=await Gt.deserialize(c.subarray(),this._hashLoader);await this._bitswap._receiveMessage(n.remotePeer,l)}catch(l){this._bitswap._receiveError(l);break}i.removeEventListener("abort",s),i=AbortSignal.timeout(this._incomingStreamTimeout),i.addEventListener("abort",s)}}),await t.close({signal:i})}).catch(s=>{this._log(s),t.abort(s)}).finally(()=>{o.clear()})}_onPeerConnect(e){this._bitswap._onPeerConnected(e)}_onPeerDisconnect(e){this._bitswap._onPeerDisconnected(e)}findProviders(e,t={}){return t.onProgress?.(new De("bitswap:network:find-providers",e)),this._libp2p.contentRouting.findProviders(e,t)}async findAndConnect(e,t){await Pr(rs(rn(this.findProviders(e,t),async n=>this.connectTo(n.id,t).catch(o=>{this._log.error(o)})),3)).catch(n=>{this._log.error(n)})}async provide(e,t={}){t.onProgress?.(new De("bitswap:network:provide",e)),await this._libp2p.contentRouting.provide(e,t)}async sendMessage(e,t,n={}){if(!this._running)throw new Error("network isn't running");let o=e.toString();this._log("sendMessage to %s",o,t),n.onProgress?.(new De("bitswap:network:send-wantlist",e)),await this._writeMessage(e,t,n),this._updateSentStats(e,t.blocks)}async connectTo(e,t={}){if(!this._running)throw new Error("network isn't running");return t.onProgress?.(new De("bitswap:network:dial",e)),this._libp2p.dial(e,t)}_updateSentStats(e,t){let n=e.toString();if(this._stats!=null){for(let o of t.values())this._stats.push(n,"dataSent",o.length);this._stats.push(n,"blocksSent",t.size)}}async _writeMessage(e,t,n={}){let o=await this._libp2p.dialProtocol(e,[Z2,J2,Q2]);try{let s;switch(o.protocol){case Q2:s=t.serializeToBitswap100();break;case J2:case Z2:s=t.serializeToBitswap110();break;default:throw new Error(`Unknown protocol: ${o.protocol}`)}await it([s],i=>ar(i),o),await o.close()}catch(s){n.onProgress?.(new De("bitswap:network:send-wantlist:error",{peer:e,error:s})),this._log(s),o.abort(s)}}};var T6=Ue(b1(),1);function v(r,e="utf8"){let t=n1[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(r.buffer,r.byteOffset,r.byteLength).toString("utf8"):t.encoder.encode(r).substring(1)}var I6=r=>`unwant:${v(r.multihash.bytes,"base64")}`,k6=r=>`block:${v(r.multihash.bytes,"base64")}`,w1=class extends T6.EventEmitter{_log;constructor(e){super(),this.setMaxListeners(h6),this._log=Tr(e,"notif")}hasBlock(e,t){let n=k6(e);this._log(n),this.emit(n,t)}async wantBlock(e,t={}){if(e==null)throw new Error("Not a valid cid");let n=k6(e),o=I6(e);return this._log(`wantBlock:${e}`),new Promise((s,i)=>{let a=()=>{this.removeListener(n,c),t.onProgress?.(new De("bitswap:want-block:unwant",e)),i(new Error(`Block for ${e} unwanted`))},c=l=>{this.removeListener(o,a),t.onProgress?.(new De("bitswap:want-block:block",e)),s(l)};this.once(o,a),this.once(n,c),t.signal?.addEventListener("abort",()=>{this.removeListener(n,c),this.removeListener(o,a),i(new Error(`Want for ${e} aborted`))})})}unwantBlock(e){let t=I6(e);this._log(t),this.emit(t)}};var L6=Ue(b1(),1);var N6=Ue(b1(),1),t0=Ue(C6(),1),jc=class extends N6.EventEmitter{_options;_queue;_stats;_frequencyLastTime;_frequencyAccumulators;_movingAverages;_enabled;_timeout;constructor(e,t){super(),this._options=t,this._queue=[],this._stats={},this._frequencyLastTime=Date.now(),this._frequencyAccumulators={},this._movingAverages={},this._update=this._update.bind(this),e.forEach(n=>{this._stats[n]=BigInt(0),this._movingAverages[n]={},this._options.movingAverageIntervals.forEach(o=>{(this._movingAverages[n][o]=(0,t0.default)(o)).push(this._frequencyLastTime,0)})}),this._enabled=this._options.enabled}enable(){this._enabled=!0}disable(){this._enabled=!1}stop(){this._timeout!=null&&clearTimeout(this._timeout)}get snapshot(){return Object.assign({},this._stats)}get movingAverages(){return Object.assign({},this._movingAverages)}push(e,t){this._enabled&&(this._queue.push([e,t,Date.now()]),this._resetComputeTimeout())}_resetComputeTimeout(){this._timeout!=null&&clearTimeout(this._timeout),this._timeout=setTimeout(this._update,this._nextTimeout())}_nextTimeout(){let e=this._queue.length/this._options.computeThrottleMaxQueueSize;return Math.max(this._options.computeThrottleTimeout*(1-e),0)}_update(){if(this._timeout=void 0,this._queue.length>0){let e;for(;this._queue.length>0;){let t=e=this._queue.shift();t!=null&&this._applyOp(t)}e!=null&&this._updateFrequency(e[2]),this.emit("update",this._stats)}}_updateFrequency(e){let t=e-this._frequencyLastTime;t>0&&Object.keys(this._stats).forEach(n=>{this._updateFrequencyFor(n,t,e)}),this._frequencyLastTime=e}_updateFrequencyFor(e,t,n){let o=this._frequencyAccumulators[e]??0;this._frequencyAccumulators[e]=0;let s=o/t*1e3,i=this._movingAverages[e];i==null&&(i=this._movingAverages[e]={}),this._options.movingAverageIntervals.forEach(a=>{let c=i[a];c==null&&(c=i[a]=(0,t0.default)(a)),c.push(n,s)})}_applyOp(e){let t=e[0],n=e[1];if(typeof n!="number")throw new Error(`invalid increment number: ${n}`);Object.prototype.hasOwnProperty.call(this._stats,t)||(this._stats[t]=BigInt(0)),this._stats[t]=BigInt(this._stats[t])+BigInt(n),this._frequencyAccumulators[t]==null&&(this._frequencyAccumulators[t]=0),this._frequencyAccumulators[t]+=n}};var B6={enabled:!1,computeThrottleTimeout:1e3,computeThrottleMaxQueueSize:1e3,movingAverageIntervals:[60*1e3,5*60*1e3,15*60*1e3]},E1=class extends L6.EventEmitter{_initialCounters;_options;_enabled;_global;_peers;constructor(e,t=[],n=B6){super();let o=Object.assign({},B6,n);if(typeof o.computeThrottleTimeout!="number")throw new Error("need computeThrottleTimeout");if(typeof o.computeThrottleMaxQueueSize!="number")throw new Error("need computeThrottleMaxQueueSize");this._initialCounters=t,this._options=o,this._enabled=this._options.enabled,this._global=new jc(t,o),this._global.on("update",s=>this.emit("update",s)),this._peers=xn({name:"ipfs_bitswap_stats_peers",metrics:e.metrics})}enable(){this._enabled=!0,this._options.enabled=!0,this._global.enable()}disable(){this._enabled=!1,this._options.enabled=!1,this._global.disable()}stop(){this._enabled=!1,this._global.stop();for(let e of this._peers)e[1].stop()}get snapshot(){return this._global.snapshot}get movingAverages(){return this._global.movingAverages}forPeer(e){let t=e.toString();return this._peers.get(t)}push(e,t,n){if(this._enabled&&(this._global.push(t,n),e!=null)){let o=this._peers.get(e);o==null&&(o=new jc(this._initialCounters,this._options),this._peers.set(e,o)),o.push(t,n)}}disconnected(e){let t=e.toString(),n=this._peers.get(t);n!=null&&(n.stop(),this._peers.delete(t))}};var O6=YT;function YT(r,e,t){var n=null,o=null,s=function(){n&&(clearTimeout(n),o=null,n=null)},i=function(){var c=o;s(),c&&c()},a=function(){if(!e)return r.apply(this,arguments);var c=this,l=arguments,f=t&&!n;if(s(),o=function(){r.apply(c,l)},n=setTimeout(function(){if(n=null,!f){var u=o;return o=null,u()}},e),f)return o()};return a.cancel=s,a.flush=i,a}var x1=class{peerId;refcnt;network;_entries;_log;constructor(e,t,n){this.peerId=t,this.network=n,this.refcnt=1,this._entries=[],this._log=Tr(e,"msgqueue"),this.sendEntries=O6(this.sendEntries.bind(this),p6)}addMessage(e,t={}){e.empty||this.send(e,t)}addEntries(e,t={}){this._entries=this._entries.concat(e),this.sendEntries(t)}sendEntries(e={}){if(this._entries.length===0)return;let t=new Gt(!1);this._entries.forEach(n=>{n.cancel===!0?t.cancel(n.cid):t.addEntry(n.cid,n.priority)}),this._entries=[],this.addMessage(t,e)}async send(e,t={}){try{await this.network.connectTo(this.peerId,t)}catch(n){this._log.error("cant connect to peer %p: %s",this.peerId,n.message);return}this._log("sending message to peer %p",this.peerId),this.network.sendMessage(this.peerId,e,t).catch(n=>{this._log.error("send error",n)})}};var v1=class{peers;wantlist;network;_peerId;_log;constructor(e,t,n,o){this.peers=xn({name:"ipfs_bitswap_want_manager_peers",metrics:o.metrics}),this.wantlist=new ts(n,o),this.network=t,this._peerId=e,this._log=Tr(e,"want")}_addEntries(e,t,n,o={}){let s=e.map((i,a)=>new Gt.Entry(i,d6-a,Gt.WantType.Block,t));s.forEach(i=>{i.cancel?n===!0?this.wantlist.removeForce(i.cid.toString(ie)):this.wantlist.remove(i.cid):(this._log("adding to wantlist"),this.wantlist.add(i.cid,i.priority))});for(let i of this.peers.values())i.addEntries(s,o)}_startPeerHandler(e){let t=this.peers.get(e.toString());if(t!=null){t.refcnt++;return}t=new x1(this._peerId,e,this.network);let n=new Gt(!0);for(let o of this.wantlist.entries())n.addEntry(o[1].cid,o[1].priority);return t.addMessage(n),this.peers.set(e.toString(),t),t}_stopPeerHandler(e){let t=this.peers.get(e.toString());t!=null&&(t.refcnt--,!(t.refcnt>0)&&this.peers.delete(e.toString()))}wantBlocks(e,t={}){this._addEntries(e,!1,!1,t),t.signal?.addEventListener("abort",()=>{this.cancelWants(e)})}unwantBlocks(e){this._log("unwant blocks: %s",e.length),this._addEntries(e,!0,!0)}cancelWants(e){this._log("cancel wants: %s",e.length),this._addEntries(e,!0)}connectedPeers(){return Array.from(this.peers.keys())}connected(e){this._startPeerHandler(e)}disconnected(e){this._stopPeerHandler(e)}start(){}stop(){this.peers.forEach(e=>{this.disconnected(e.peerId)})}};var WT={async getHasher(){throw new Error("Not implemented")}},zT={maxInboundStreams:1024,maxOutboundStreams:1024,incomingStreamTimeout:3e4,hashLoader:WT,statsEnabled:!1,statsComputeThrottleTimeout:1e3,statsComputeThrottleMaxQueueSize:1e3},jT=["blocksReceived","dataReceived","dupBlksReceived","dupDataReceived","blocksSent","dataSent","providesBufferLength","wantListLength","peerCount"],_1=class{_libp2p;_log;stats;network;blockstore;engine;wm;notifications;started;constructor(e,t,n={}){this._libp2p=e,this._log=Tr(this.peerId),n=Object.assign({},zT,n),this.stats=new E1(e,jT,{enabled:n.statsEnabled,computeThrottleTimeout:n.statsComputeThrottleTimeout,computeThrottleMaxQueueSize:n.statsComputeThrottleMaxQueueSize}),this.network=new m1(e,this,this.stats,{hashLoader:n.hashLoader,maxInboundStreams:n.maxInboundStreams,maxOutboundStreams:n.maxOutboundStreams,incomingStreamTimeout:n.incomingStreamTimeout}),this.blockstore=t,this.engine=new c1(this.peerId,t,this.network,this.stats,e),this.wm=new v1(this.peerId,this.network,this.stats,e),this.notifications=new w1(this.peerId),this.started=!1}isStarted(){return this.started}get peerId(){return this._libp2p.peerId}async _receiveMessage(e,t){try{await this.engine.messageReceived(e,t)}catch{this._log("failed to receive message",t)}if(t.blocks.size===0)return;let n=[];for(let[o,s]of t.blocks.entries()){let i=de.parse(o);n.push({wasWanted:this.wm.wantlist.contains(i),cid:i,data:s})}this.wm.cancelWants(n.filter(({wasWanted:o})=>o).map(({cid:o})=>o)),await Promise.all(n.map(async({cid:o,wasWanted:s,data:i})=>{await this._handleReceivedBlock(e,o,i,s)}))}async _handleReceivedBlock(e,t,n,o){this._log("received block");let s=await this.blockstore.has(t);this._updateReceiveCounters(e.toString(),t,n,s),o&&await this.put(t,n)}_updateReceiveCounters(e,t,n,o){this.stats.push(e,"blocksReceived",1),this.stats.push(e,"dataReceived",n.length),o&&(this.stats.push(e,"dupBlksReceived",1),this.stats.push(e,"dupDataReceived",n.length))}_receiveError(e){this._log.error("ReceiveError",e)}_onPeerConnected(e){this.wm.connected(e)}_onPeerDisconnected(e){this.wm.disconnected(e),this.engine.peerDisconnected(e),this.stats.disconnected(e)}enableStats(){this.stats.enable()}disableStats(){this.stats.disable()}wantlistForPeer(e,t){return this.engine.wantlistForPeer(e)}ledgerForPeer(e){return this.engine.ledgerForPeer(e)}async want(e,t={}){let n=async(c,l)=>(this.wm.wantBlocks([c],l),this.notifications.wantBlock(c,l)),o=!1,s=async(c,l)=>{try{return await this.blockstore.get(c,l)}catch(f){if(f.code!=="ERR_NOT_FOUND")throw f;return o||(o=!0,this.network.findAndConnect(c,l).catch(u=>{this._log.error(u)})),await n(c,l)}},i=new AbortController,a=Rt([i.signal,t.signal]);try{return await Promise.race([this.notifications.wantBlock(e,{...t,signal:a}),s(e,{...t,signal:a})])}finally{i.abort(),a.clear()}}unwant(e){let t=Array.isArray(e)?e:[e];this.wm.unwantBlocks(t),t.forEach(n=>{this.notifications.unwantBlock(n)})}cancelWants(e){this.wm.cancelWants(Array.isArray(e)?e:[e])}async put(e,t,n){await this.blockstore.put(e,t),this.notify(e,t)}async*putMany(e,t){yield*this.blockstore.putMany(Ys(e,({cid:n,block:o})=>{this.notify(n,o)}),t)}notify(e,t,n={}){this.notifications.hasBlock(e,t),this.engine.receivedBlocks([{cid:e,block:t}]),this.network.provide(e,n).catch(o=>{this._log.error("Failed to provide: %s",o.message)})}getWantlist(){return this.wm.wantlist.entries()}get peers(){return this.engine.peers()}async start(){this.wm.start(),await this.network.start(),this.engine.start(),this.started=!0}async stop(){this.stats.stop(),this.wm.stop(),await this.network.stop(),this.engine.stop(),this.started=!1}};var K6=(r,e,t={})=>new _1(r,e,t);var r0=class{bitswap;started;constructor(e,t={}){let{libp2p:n,blockstore:o,hashers:s}=e;this.bitswap=K6(n,o,{hashLoader:{getHasher:async i=>{let a;if(typeof i=="string"?a=Object.values(s).find(c=>c.name===i):a=s[i],a!=null)return a;throw new Error(`Could not load hasher for code/name "${i}"`)}},...t}),this.started=!1}isStarted(){return this.started}async start(){await this.bitswap.start(),this.started=!0}async stop(){await this.bitswap.stop(),this.started=!1}announce(e,t,n){this.bitswap.notify(e,t,n)}async retrieve(e,{validateFn:t,...n}={}){return this.bitswap.want(e,n)}};function n0(r={}){return e=>new r0(e,r)}var S1=class{url;#e=0;#t=0;#r=0;#i=0;constructor(e){this.url=e instanceof URL?e:new URL(e)}async getRawBlock(e,t){let n=this.url;if(n.pathname=`/ipfs/${e.toString()}`,n.search="?format=raw",t?.aborted===!0)throw new Error(`Signal to fetch raw block for CID ${e} from gateway ${this.url} was aborted prior to fetch`);try{this.#e++;let o=await fetch(n.toString(),{signal:t,headers:{Accept:"application/vnd.ipld.raw"},cache:"force-cache"});if(!o.ok)throw this.#t++,new Error(`unable to fetch raw block for CID ${e} from gateway ${this.url}`);return this.#i++,new Uint8Array(await o.arrayBuffer())}catch{throw t?.aborted===!0?new Error(`fetching raw block for CID ${e} from gateway ${this.url} was aborted`):(this.#t++,new Error(`unable to fetch raw block for CID ${e}`))}}reliability(){return this.#e===0?1:this.#r>0?-1/0:this.#i/(this.#e+this.#t*3)}incrementInvalidBlocks(){this.#r++}};var R1=class{gateways;log;constructor(e,t={}){this.log=e.logger.forComponent("helia:trustless-gateway-block-broker"),this.gateways=(t.gateways??M6).map(n=>new S1(n))}async retrieve(e,t={}){let n=this.gateways.sort((s,i)=>i.reliability()-s.reliability()),o=[];for(let s of n){this.log("getting block for %c from %s",e,s.url);try{let i=await s.getRawBlock(e,t.signal);this.log.trace("got block for %c from %s",e,s.url);try{await t.validateFn?.(i)}catch(a){throw this.log.error("failed to validate block for %c from %s",e,s.url,a),s.incrementInvalidBlocks(),new Error(`unable to validate block for CID ${e} from gateway ${s.url}`)}return i}catch(i){if(this.log.error("failed to get block for %c from %s",e,s.url,i),i instanceof Error?o.push(i):o.push(new Error(`unable to fetch raw block for CID ${e} from gateway ${s.url}`)),t.signal?.aborted===!0){this.log.trace("request aborted while fetching raw block for CID %c from gateway %s",e,s.url);break}}}throw new AggregateError(o,`unable to fetch raw block for CID ${e} from any gateway`)}};var M6=["https://dweb.link","https://cf-ipfs.com","https://4everland.io"];function o0(r={}){return e=>new R1(e,r)}var XT=Symbol.for("nodejs.util.inspect.custom"),U6=Object.values(Dr).map(r=>r.decoder).reduce((r,e)=>r.or(e),Dr.identity.decoder),F6=114,s0=36,i0=37,Xc=class{type;multihash;privateKey;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,this.privateKey=e.privateKey,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[a2]=!0;toString(){return this.string==null&&(this.string=ie.encode(this.multihash.bytes).slice(1)),this.string}toCID(){return de.createV1(F6,this.multihash)}toBytes(){return this.multihash.bytes}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return O(this.multihash.bytes,e);if(typeof e=="string")return Ae(e).equals(this);if(e?.multihash?.bytes!=null)return O(this.multihash.bytes,e.multihash.bytes);throw new Error("not valid Id")}[XT](){return`PeerId(${this.toString()})`}},ri=class extends Xc{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},ni=class extends Xc{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.multihash.digest}},oi=class extends Xc{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.multihash.digest}};function V6(r){if(r.type==="RSA")return new ri(r);if(r.type==="Ed25519")return new ni(r);if(r.type==="secp256k1")return new oi(r);throw new h("Not a PeerId","ERR_INVALID_PARAMETERS")}function Ae(r,e){if(e=e??U6,r.charAt(0)==="1"||r.charAt(0)==="Q"){let t=Zr(ie.decode(`z${r}`));return r.startsWith("12D")?new ni({multihash:t}):r.startsWith("16U")?new oi({multihash:t}):new ri({multihash:t})}return at(U6.decode(r))}function at(r){try{let e=Zr(r);if(e.code===Xe.code){if(e.digest.length===s0)return new ni({multihash:e});if(e.digest.length===i0)return new oi({multihash:e})}if(e.code===K.code)return new ri({multihash:e})}catch{return QT(de.decode(r))}throw new Error("Supplied PeerID CID is invalid")}function QT(r){if(r==null||r.multihash==null||r.version==null||r.version===1&&r.code!==F6)throw new Error("Supplied PeerID CID is invalid");let e=r.multihash;if(e.code===K.code)return new ri({multihash:r.multihash});if(e.code===Xe.code){if(e.digest.length===s0)return new ni({multihash:r.multihash});if(e.digest.length===i0)return new oi({multihash:r.multihash})}throw new Error("Supplied PeerID CID is invalid")}async function It(r,e){return r.length===s0?new ni({multihash:Jr(Xe.code,r),privateKey:e}):r.length===i0?new oi({multihash:Jr(Xe.code,r),privateKey:e}):new ri({multihash:await K.digest(r),publicKey:r,privateKey:e})}var A1=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let t=this.index,n=e();return n===void 0&&(this.index=t),n}parseWith(e){let t=e();if(this.index===this.input.length)return t}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let t=this.readChar();if(t===e)return t})}readSeparator(e,t,n){return this.readAtomically(()=>{if(!(t>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,t,n,o){return this.readAtomically(()=>{let s=0,i=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",l=2**(8*o)-1;for(;;){let f=this.readAtomically(()=>{let u=this.readChar();if(u===void 0)return;let d=Number.parseInt(u,e);if(!Number.isNaN(d))return d});if(f===void 0)break;if(s*=e,s+=f,s>l||(i+=1,t!==void 0&&i>t))return}if(i!==0)return!n&&c&&i>1?void 0:s})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let t=0;t<e.length;t++){let n=this.readSeparator(".",t,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[t]=n}return e})}readIPv6Addr(){let e=t=>{for(let n=0;n<t.length/2;n++){let o=n*2;if(n<t.length-3){let i=this.readSeparator(":",n,()=>this.readIPv4Addr());if(i!==void 0)return t[o]=i[0],t[o+1]=i[1],t[o+2]=i[2],t[o+3]=i[3],[o+4,!0]}let s=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(s===void 0)return[o,!1];t[o]=s>>8,t[o+1]=s&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,o]=e(t);if(n===16)return t;if(o||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let s=new Uint8Array(14),i=16-(n+2),[a]=e(s.subarray(0,i));return t.set(s.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var q6=45,ZT=15,fa=new A1;function a0(r){if(!(r.length>ZT))return fa.new(r).parseWith(()=>fa.readIPv4Addr())}function c0(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>q6))return fa.new(r).parseWith(()=>fa.readIPv6Addr())}function I1(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>q6))return fa.new(r).parseWith(()=>fa.readIPAddr())}var WY=parseInt("0xFFFF",16),zY=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function da(r){return!!a0(r)}function ha(r){return!!c0(r)}function k1(r){return!!I1(r)}var G6=da,oD=ha,l0=function(r){let e=0;if(r=r.toString().trim(),G6(r)){let t=new Uint8Array(e+4);return r.split(/\./g).forEach(n=>{t[e++]=parseInt(n,10)&255}),t}if(oD(r)){let t=r.split(":",8),n;for(n=0;n<t.length;n++){let s=G6(t[n]),i;s&&(i=l0(t[n]),t[n]=v(i.slice(0,2),"base16")),i!=null&&++n<8&&t.splice(n,0,v(i.slice(2,4),"base16"))}if(t[0]==="")for(;t.length<8;)t.unshift("0");else if(t[t.length-1]==="")for(;t.length<8;)t.push("0");else if(t.length<8){for(n=0;n<t.length&&t[n]!=="";n++);let s=[n,1];for(n=9-t.length;n>0;n--)s.push("0");t.splice.apply(t,s)}let o=new Uint8Array(e+16);for(n=0;n<t.length;n++){let s=parseInt(t[n],16);o[e++]=s>>8&255,o[e++]=s&255}return o}throw new Error("invalid ip address")},Y6=function(r,e=0,t){e=~~e,t=t??r.length-e;let n=new DataView(r.buffer);if(t===4){let o=[];for(let s=0;s<t;s++)o.push(r[e+s]);return o.join(".")}if(t===16){let o=[];for(let s=0;s<t;s+=2)o.push(n.getUint16(e+s).toString(16));return o.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var pa={},u0={},iD=[[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"],[777,-1,"memory"]];iD.forEach(r=>{let e=aD(...r);u0[e.code]=e,pa[e.name]=e});function aD(r,e,t,n,o){return{code:r,size:e,name:t,resolvable:!!n,path:!!o}}function fe(r){if(typeof r=="number"){if(u0[r]!=null)return u0[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(pa[r]!=null)return pa[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var PW=fe("ip4"),CW=fe("ip6"),NW=fe("ipcidr");function d0(r,e){switch(fe(r).code){case 4:case 41:return lD(e);case 42:return j6(e);case 6:case 273:case 33:case 132:return Q6(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return j6(e);case 421:return hD(e);case 444:return X6(e);case 445:return X6(e);case 466:return dD(e);default:return v(e,"base16")}}function h0(r,e){switch(fe(r).code){case 4:return W6(e);case 41:return W6(e);case 42:return z6(e);case 6:case 273:case 33:case 132:return p0(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return z6(e);case 421:return uD(e);case 444:return pD(e);case 445:return mD(e);case 466:return fD(e);default:return x(e,"base16")}}var f0=Object.values(Dr).map(r=>r.decoder),cD=function(){let r=f0[0].or(f0[1]);return f0.slice(2).forEach(e=>r=r.or(e)),r}();function W6(r){if(!k1(r))throw new Error("invalid ip address");return l0(r)}function lD(r){let e=Y6(r,0,r.length);if(e==null)throw new Error("ipBuff is required");if(!k1(e))throw new Error("invalid ip address");return e}function p0(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r),new Uint8Array(e)}function Q6(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function z6(r){let e=x(r),t=Uint8Array.from(st(e.length));return le([t,e],t.length+e.length)}function j6(r){let e=gr(r);if(r=r.slice(Et(e)),r.length!==e)throw new Error("inconsistent lengths");return v(r)}function uD(r){let e;r[0]==="Q"||r[0]==="1"?e=Zr(ie.decode(`z${r}`)).bytes:e=de.parse(r).multihash.bytes;let t=Uint8Array.from(st(e.length));return le([t,e],t.length+e.length)}function fD(r){let e=cD.decode(r),t=Uint8Array.from(st(e.length));return le([t,e],t.length+e.length)}function dD(r){let e=gr(r),t=r.slice(Et(e));if(t.length!==e)throw new Error("inconsistent lengths");return"u"+v(t,"base64url")}function hD(r){let e=gr(r),t=r.slice(Et(e));if(t.length!==e)throw new Error("inconsistent lengths");return v(t,"base58btc")}function pD(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==16)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion address.`);let t=vt.decode("b"+e[0]),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=p0(n);return le([t,o],t.length+o.length)}function mD(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==56)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion3 address.`);let t=vt.decode(`b${e[0]}`),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=p0(n);return le([t,o],t.length+o.length)}function X6(r){let e=r.slice(0,r.length-2),t=r.slice(r.length-2),n=v(e,"base32"),o=Q6(t);return`${n}:${o}`}function J6(r){r=m0(r);let e=[],t=[],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=fe(i);if(a.size===0){e.push([a.code]),t.push([a.code]);continue}if(s++,s>=o.length)throw eg("invalid address: "+r);if(a.path===!0){n=m0(o.slice(s).join("/")),e.push([a.code,h0(a.code,n)]),t.push([a.code,n]);break}let c=h0(a.code,o[s]);e.push([a.code,c]),t.push([a.code,d0(a.code,c)])}return{string:Z6(t),bytes:g0(e),tuples:e,stringTuples:t,path:n}}function y0(r){let e=[],t=[],n=null,o=0;for(;o<r.length;){let s=gr(r,o),i=Et(s),a=fe(s),c=yD(a,r.slice(o+i));if(c===0){e.push([s]),t.push([s]),o+=i;continue}let l=r.slice(o+i,o+i+c);if(o+=c+i,o>r.length)throw eg("Invalid address Uint8Array: "+v(r,"base16"));e.push([s,l]);let f=d0(s,l);if(t.push([s,f]),a.path===!0){n=f;break}}return{bytes:Uint8Array.from(r),string:Z6(t),tuples:e,stringTuples:t,path:n}}function Z6(r){let e=[];return r.map(t=>{let n=fe(t[0]);return e.push(n.name),t.length>1&&t[1]!=null&&e.push(t[1]),null}),m0(e.join("/"))}function g0(r){return le(r.map(e=>{let t=fe(e[0]),n=Uint8Array.from(st(t.code));return e.length>1&&e[1]!=null&&(n=le([n,e[1]])),n}))}function yD(r,e){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let t=gr(e instanceof Uint8Array?e:Uint8Array.from(e));return t+Et(t)}}function m0(r){return"/"+r.trim().split("/").filter(e=>e).join("/")}function eg(r){return new Error("Error parsing address: "+r)}var gD=Symbol.for("nodejs.util.inspect.custom"),b0=Symbol.for("@multiformats/js-multiaddr/multiaddr"),bD=[fe("dns").code,fe("dns4").code,fe("dns6").code,fe("dnsaddr").code],T1=class r{bytes;#e;#t;#r;#i;[b0]=!0;constructor(e){e==null&&(e="");let t;if(e instanceof Uint8Array)t=y0(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);t=J6(e)}else if(ns(e))t=y0(e.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=t.bytes,this.#e=t.string,this.#t=t.tuples,this.#r=t.stringTuples,this.#i=t.path}toString(){return this.#e}toJSON(){return this.toString()}toOptions(){let e,t,n,o,s="",i=fe("tcp"),a=fe("udp"),c=fe("ip4"),l=fe("ip6"),f=fe("dns6"),u=fe("ip6zone");for(let[y,p]of this.stringTuples())y===u.code&&(s=`%${p??""}`),bD.includes(y)&&(t=i.name,o=443,n=`${p??""}${s}`,e=y===f.code?6:4),(y===i.code||y===a.code)&&(t=fe(y).name,o=parseInt(p??"")),(y===c.code||y===l.code)&&(t=fe(y).name,n=`${p??""}${s}`,e=y===l.code?6:4);if(e==null||t==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:e,host:n,transport:t,port:o}}protos(){return this.#t.map(([e])=>Object.assign({},fe(e)))}protoCodes(){return this.#t.map(([e])=>e)}protoNames(){return this.#t.map(([e])=>fe(e).name)}tuples(){return this.#t}stringTuples(){return this.#r}encapsulate(e){return e=new r(e),new r(this.toString()+e.toString())}decapsulate(e){let t=e.toString(),n=this.toString(),o=n.lastIndexOf(t);if(o<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${e.toString()}`);return new r(n.slice(0,o))}decapsulateCode(e){let t=this.tuples();for(let n=t.length-1;n>=0;n--)if(t[n][0]===e)return new r(g0(t.slice(0,n)));return this}getPeerId(){try{let e=[];this.stringTuples().forEach(([n,o])=>{n===pa.p2p.code&&e.push([n,o]),n===pa["p2p-circuit"].code&&(e=[])});let t=e.pop();if(t?.[1]!=null){let n=t[1];return n[0]==="Q"||n[0]==="1"?v(ie.decode(`z${n}`),"base58btc"):v(de.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#i}equals(e){return O(this.bytes,e.bytes)}async resolve(e){let t=this.protos().find(s=>s.resolvable);if(t==null)return[this];let n=D1.get(t.name);if(n==null)throw new h(`no available resolver for ${t.name}`,"ERR_NO_AVAILABLE_RESOLVER");return(await n(this,e)).map(s=>new r(s))}nodeAddress(){let e=this.toOptions();if(e.transport!=="tcp"&&e.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${e.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:e.family,address:e.host,port:e.port}}isThinWaistAddress(e){let t=(e??this).protos();return!(t.length!==2||t[0].code!==4&&t[0].code!==41||t[1].code!==6&&t[1].code!==273)}[gD](){return`Multiaddr(${this.#e})`}};var D1=new Map;function ns(r){return!!r?.[b0]}function se(r){return new T1(r)}async function*P1(r,e={}){let t=r.getReader();try{for(;;){let n=await t.read();if(n.done)return;yield n.value}}finally{e.preventCancel!==!0&&await t.cancel(),t.releaseLock()}}var K0={};oe(K0,{Ed25519PrivateKey:()=>li,Ed25519PublicKey:()=>rl,generateKeyPair:()=>IP,generateKeyPairFromSeed:()=>Tg,unmarshalEd25519PrivateKey:()=>RP,unmarshalEd25519PublicKey:()=>AP});function Cr(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function os(r){if(!Number.isSafeInteger(r)||r<0)throw new Error(`Wrong positive integer: ${r}`)}function wD(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function w0(r,...e){if(!wD(r))throw new Error("Expected Uint8Array");if(e.length>0&&!e.includes(r.length))throw new Error(`Expected Uint8Array of length ${e}, not of length=${r.length}`)}function si(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");os(r.outputLen),os(r.blockLen)}function ma(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function tg(r,e){w0(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var C1=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function rg(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}var ii=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),nn=(r,e)=>r<<32-e|r>>>e,ED=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!ED)throw new Error("Non little-endian hardware is not supported");var xD=async()=>{};async function ng(r,e,t){let n=Date.now();for(let o=0;o<r;o++){t(o);let s=Date.now()-n;s>=0&&s<e||(await xD(),n+=s)}}function E0(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function on(r){if(typeof r=="string"&&(r=E0(r)),!rg(r))throw new Error(`expected Uint8Array, got ${typeof r}`);return r}function N1(...r){let e=0;for(let n=0;n<r.length;n++){let o=r[n];if(!rg(o))throw new Error("Uint8Array expected");e+=o.length}let t=new Uint8Array(e);for(let n=0,o=0;n<r.length;n++){let s=r[n];t.set(s,o),o+=s.length}return t}var ya=class{clone(){return this._cloneInto()}},vD={}.toString;function og(r,e){if(e!==void 0&&vD.call(e)!=="[object Object]")throw new Error("Options should be object or undefined");return Object.assign(r,e)}function ga(r){let e=n=>r().update(on(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function dt(r=32){if(C1&&typeof C1.getRandomValues=="function")return C1.getRandomValues(new Uint8Array(r));throw new Error("crypto.getRandomValues must be defined")}function _D(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let o=BigInt(32),s=BigInt(4294967295),i=Number(t>>o&s),a=Number(t&s),c=n?4:0,l=n?0:4;r.setUint32(e+c,i,n),r.setUint32(e+l,a,n)}var ss=class extends ya{constructor(e,t,n,o){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=ii(this.buffer)}update(e){ma(this);let{view:t,buffer:n,blockLen:o}=this;e=on(e);let s=e.length;for(let i=0;i<s;){let a=Math.min(o-this.pos,s-i);if(a===o){let c=ii(e);for(;o<=s-i;i+=o)this.process(c,i);continue}n.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){ma(this),tg(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:s}=this,{pos:i}=this;t[i++]=128,this.buffer.subarray(i).fill(0),this.padOffset>o-i&&(this.process(n,0),i=0);for(let u=i;u<o;u++)t[u]=0;_D(n,o-8,BigInt(this.length*8),s),this.process(n,0);let a=ii(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let l=c/4,f=this.get();if(l>f.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<l;u++)a.setUint32(4*u,f[u],s)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:o,finished:s,destroyed:i,pos:a}=this;return e.length=o,e.pos=a,e.finished=s,e.destroyed=i,o%t&&e.buffer.set(n),e}};var B1=BigInt(4294967295),x0=BigInt(32);function sg(r,e=!1){return e?{h:Number(r&B1),l:Number(r>>x0&B1)}:{h:Number(r>>x0&B1)|0,l:Number(r&B1)|0}}function SD(r,e=!1){let t=new Uint32Array(r.length),n=new Uint32Array(r.length);for(let o=0;o<r.length;o++){let{h:s,l:i}=sg(r[o],e);[t[o],n[o]]=[s,i]}return[t,n]}var RD=(r,e)=>BigInt(r>>>0)<<x0|BigInt(e>>>0),AD=(r,e,t)=>r>>>t,ID=(r,e,t)=>r<<32-t|e>>>t,kD=(r,e,t)=>r>>>t|e<<32-t,TD=(r,e,t)=>r<<32-t|e>>>t,DD=(r,e,t)=>r<<64-t|e>>>t-32,PD=(r,e,t)=>r>>>t-32|e<<64-t,CD=(r,e)=>e,ND=(r,e)=>r,BD=(r,e,t)=>r<<t|e>>>32-t,LD=(r,e,t)=>e<<t|r>>>32-t,OD=(r,e,t)=>e<<t-32|r>>>64-t,KD=(r,e,t)=>r<<t-32|e>>>64-t;function MD(r,e,t,n){let o=(e>>>0)+(n>>>0);return{h:r+t+(o/2**32|0)|0,l:o|0}}var UD=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),FD=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,VD=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),qD=(r,e,t,n,o)=>e+t+n+o+(r/2**32|0)|0,HD=(r,e,t,n,o)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(o>>>0),$D=(r,e,t,n,o,s)=>e+t+n+o+s+(r/2**32|0)|0;var GD={fromBig:sg,split:SD,toBig:RD,shrSH:AD,shrSL:ID,rotrSH:kD,rotrSL:TD,rotrBH:DD,rotrBL:PD,rotr32H:CD,rotr32L:ND,rotlSH:BD,rotlSL:LD,rotlBH:OD,rotlBL:KD,add:MD,add3L:UD,add3H:FD,add4L:VD,add4H:qD,add5H:$D,add5L:HD},xe=GD;var[YD,WD]=xe.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(r=>BigInt(r))),is=new Uint32Array(80),as=new Uint32Array(80),v0=class extends ss{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){let{Ah:e,Al:t,Bh:n,Bl:o,Ch:s,Cl:i,Dh:a,Dl:c,Eh:l,El:f,Fh:u,Fl:d,Gh:y,Gl:p,Hh:m,Hl:g}=this;return[e,t,n,o,s,i,a,c,l,f,u,d,y,p,m,g]}set(e,t,n,o,s,i,a,c,l,f,u,d,y,p,m,g){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=o|0,this.Ch=s|0,this.Cl=i|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=f|0,this.Fh=u|0,this.Fl=d|0,this.Gh=y|0,this.Gl=p|0,this.Hh=m|0,this.Hl=g|0}process(e,t){for(let w=0;w<16;w++,t+=4)is[w]=e.getUint32(t),as[w]=e.getUint32(t+=4);for(let w=16;w<80;w++){let _=is[w-15]|0,I=as[w-15]|0,k=xe.rotrSH(_,I,1)^xe.rotrSH(_,I,8)^xe.shrSH(_,I,7),D=xe.rotrSL(_,I,1)^xe.rotrSL(_,I,8)^xe.shrSL(_,I,7),A=is[w-2]|0,C=as[w-2]|0,U=xe.rotrSH(A,C,19)^xe.rotrBH(A,C,61)^xe.shrSH(A,C,6),L=xe.rotrSL(A,C,19)^xe.rotrBL(A,C,61)^xe.shrSL(A,C,6),F=xe.add4L(D,L,as[w-7],as[w-16]),H=xe.add4H(F,k,U,is[w-7],is[w-16]);is[w]=H|0,as[w]=F|0}let{Ah:n,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:f,Eh:u,El:d,Fh:y,Fl:p,Gh:m,Gl:g,Hh:b,Hl:E}=this;for(let w=0;w<80;w++){let _=xe.rotrSH(u,d,14)^xe.rotrSH(u,d,18)^xe.rotrBH(u,d,41),I=xe.rotrSL(u,d,14)^xe.rotrSL(u,d,18)^xe.rotrBL(u,d,41),k=u&y^~u&m,D=d&p^~d&g,A=xe.add5L(E,I,D,WD[w],as[w]),C=xe.add5H(A,b,_,k,YD[w],is[w]),U=A|0,L=xe.rotrSH(n,o,28)^xe.rotrBH(n,o,34)^xe.rotrBH(n,o,39),F=xe.rotrSL(n,o,28)^xe.rotrBL(n,o,34)^xe.rotrBL(n,o,39),H=n&s^n&a^s&a,re=o&i^o&c^i&c;b=m|0,E=g|0,m=y|0,g=p|0,y=u|0,p=d|0,{h:u,l:d}=xe.add(l|0,f|0,C|0,U|0),l=a|0,f=c|0,a=s|0,c=i|0,s=n|0,i=o|0;let T=xe.add3L(U,F,re);n=xe.add3H(T,C,L,H),o=T|0}({h:n,l:o}=xe.add(this.Ah|0,this.Al|0,n|0,o|0)),{h:s,l:i}=xe.add(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=xe.add(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:f}=xe.add(this.Dh|0,this.Dl|0,l|0,f|0),{h:u,l:d}=xe.add(this.Eh|0,this.El|0,u|0,d|0),{h:y,l:p}=xe.add(this.Fh|0,this.Fl|0,y|0,p|0),{h:m,l:g}=xe.add(this.Gh|0,this.Gl|0,m|0,g|0),{h:b,l:E}=xe.add(this.Hh|0,this.Hl|0,b|0,E|0),this.set(n,o,s,i,a,c,l,f,u,d,y,p,m,g,b,E)}roundClean(){is.fill(0),as.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}};var Ye=ga(()=>new v0);var O1={};oe(O1,{bitGet:()=>eP,bitLen:()=>ZD,bitMask:()=>Qc,bitSet:()=>tP,bytesToHex:()=>uo,bytesToNumberBE:()=>fo,bytesToNumberLE:()=>an,concatBytes:()=>po,createHmacDrbg:()=>R0,ensureBytes:()=>We,equalBytes:()=>QD,hexToBytes:()=>ai,hexToNumber:()=>S0,isBytes:()=>sn,numberToBytesBE:()=>cs,numberToBytesLE:()=>ho,numberToHexUnpadded:()=>lg,numberToVarBytesBE:()=>XD,utf8ToBytes:()=>JD,validateObject:()=>Nr});var cg=BigInt(0),L1=BigInt(1),zD=BigInt(2);function sn(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}var jD=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function uo(r){if(!sn(r))throw new Error("Uint8Array expected");let e="";for(let t=0;t<r.length;t++)e+=jD[r[t]];return e}function lg(r){let e=r.toString(16);return e.length&1?`0${e}`:e}function S0(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return BigInt(r===""?"0":`0x${r}`)}var lo={_0:48,_9:57,_A:65,_F:70,_a:97,_f:102};function ig(r){if(r>=lo._0&&r<=lo._9)return r-lo._0;if(r>=lo._A&&r<=lo._F)return r-(lo._A-10);if(r>=lo._a&&r<=lo._f)return r-(lo._a-10)}function ai(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);let e=r.length,t=e/2;if(e%2)throw new Error("padded hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(t);for(let o=0,s=0;o<t;o++,s+=2){let i=ig(r.charCodeAt(s)),a=ig(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 fo(r){return S0(uo(r))}function an(r){if(!sn(r))throw new Error("Uint8Array expected");return S0(uo(Uint8Array.from(r).reverse()))}function cs(r,e){return ai(r.toString(16).padStart(e*2,"0"))}function ho(r,e){return cs(r,e).reverse()}function XD(r){return ai(lg(r))}function We(r,e,t){let n;if(typeof e=="string")try{n=ai(e)}catch(s){throw new Error(`${r} must be valid hex string, got "${e}". Cause: ${s}`)}else if(sn(e))n=Uint8Array.from(e);else throw new Error(`${r} must be hex string or Uint8Array`);let o=n.length;if(typeof t=="number"&&o!==t)throw new Error(`${r} expected ${t} bytes, got ${o}`);return n}function po(...r){let e=0;for(let o=0;o<r.length;o++){let s=r[o];if(!sn(s))throw new Error("Uint8Array expected");e+=s.length}let t=new Uint8Array(e),n=0;for(let o=0;o<r.length;o++){let s=r[o];t.set(s,n),n+=s.length}return t}function QD(r,e){if(r.length!==e.length)return!1;let t=0;for(let n=0;n<r.length;n++)t|=r[n]^e[n];return t===0}function JD(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function ZD(r){let e;for(e=0;r>cg;r>>=L1,e+=1);return e}function eP(r,e){return r>>BigInt(e)&L1}var tP=(r,e,t)=>r|(t?L1:cg)<<BigInt(e),Qc=r=>(zD<<BigInt(r-1))-L1,_0=r=>new Uint8Array(r),ag=r=>Uint8Array.from(r);function R0(r,e,t){if(typeof r!="number"||r<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof t!="function")throw new Error("hmacFn must be a function");let n=_0(r),o=_0(r),s=0,i=()=>{n.fill(1),o.fill(0),s=0},a=(...u)=>t(o,n,...u),c=(u=_0())=>{o=a(ag([0]),u),n=a(),u.length!==0&&(o=a(ag([1]),u),n=a())},l=()=>{if(s++>=1e3)throw new Error("drbg: tried 1000 values");let u=0,d=[];for(;u<e;){n=a();let y=n.slice();d.push(y),u+=n.length}return po(...d)};return(u,d)=>{i(),c(u);let y;for(;!(y=d(l()));)c();return i(),y}}var rP={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"||sn(r),isSafeInteger:r=>Number.isSafeInteger(r),array:r=>Array.isArray(r),field:(r,e)=>e.Fp.isValid(r),hash:r=>typeof r=="function"&&Number.isSafeInteger(r.outputLen)};function Nr(r,e,t={}){let n=(o,s,i)=>{let a=rP[s];if(typeof a!="function")throw new Error(`Invalid validator "${s}", expected function`);let c=r[o];if(!(i&&c===void 0)&&!a(c,r))throw new Error(`Invalid param ${String(o)}=${c} (${typeof c}), expected ${s}`)};for(let[o,s]of Object.entries(e))n(o,s,!1);for(let[o,s]of Object.entries(t))n(o,s,!0);return r}var _t=BigInt(0),Qe=BigInt(1),ci=BigInt(2),nP=BigInt(3),A0=BigInt(4),ug=BigInt(5),fg=BigInt(8),oP=BigInt(9),sP=BigInt(16);function Le(r,e){let t=r%e;return t>=_t?t:e+t}function I0(r,e,t){if(t<=_t||e<_t)throw new Error("Expected power/modulo > 0");if(t===Qe)return _t;let n=Qe;for(;e>_t;)e&Qe&&(n=n*r%t),r=r*r%t,e>>=Qe;return n}function ze(r,e,t){let n=r;for(;e-- >_t;)n*=n,n%=t;return n}function K1(r,e){if(r===_t||e<=_t)throw new Error(`invert: expected positive integers, got n=${r} mod=${e}`);let t=Le(r,e),n=e,o=_t,s=Qe,i=Qe,a=_t;for(;t!==_t;){let l=n/t,f=n%t,u=o-i*l,d=s-a*l;n=t,t=f,o=i,s=a,i=u,a=d}if(n!==Qe)throw new Error("invert: does not exist");return Le(o,e)}function iP(r){let e=(r-Qe)/ci,t,n,o;for(t=r-Qe,n=0;t%ci===_t;t/=ci,n++);for(o=ci;o<r&&I0(o,e,r)!==r-Qe;o++);if(n===1){let i=(r+Qe)/A0;return function(c,l){let f=c.pow(l,i);if(!c.eql(c.sqr(f),l))throw new Error("Cannot find square root");return f}}let s=(t+Qe)/ci;return function(a,c){if(a.pow(c,e)===a.neg(a.ONE))throw new Error("Cannot find square root");let l=n,f=a.pow(a.mul(a.ONE,o),t),u=a.pow(c,s),d=a.pow(c,t);for(;!a.eql(d,a.ONE);){if(a.eql(d,a.ZERO))return a.ZERO;let y=1;for(let m=a.sqr(d);y<l&&!a.eql(m,a.ONE);y++)m=a.sqr(m);let p=a.pow(f,Qe<<BigInt(l-y-1));f=a.sqr(p),u=a.mul(u,p),d=a.mul(d,f),l=y}return u}}function aP(r){if(r%A0===nP){let e=(r+Qe)/A0;return function(n,o){let s=n.pow(o,e);if(!n.eql(n.sqr(s),o))throw new Error("Cannot find square root");return s}}if(r%fg===ug){let e=(r-ug)/fg;return function(n,o){let s=n.mul(o,ci),i=n.pow(s,e),a=n.mul(o,i),c=n.mul(n.mul(a,ci),i),l=n.mul(a,n.sub(c,n.ONE));if(!n.eql(n.sqr(l),o))throw new Error("Cannot find square root");return l}}return r%sP,iP(r)}var dg=(r,e)=>(Le(r,e)&Qe)===Qe,cP=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function k0(r){let e={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},t=cP.reduce((n,o)=>(n[o]="function",n),e);return Nr(r,t)}function lP(r,e,t){if(t<_t)throw new Error("Expected power > 0");if(t===_t)return r.ONE;if(t===Qe)return e;let n=r.ONE,o=e;for(;t>_t;)t&Qe&&(n=r.mul(n,o)),o=r.sqr(o),t>>=Qe;return n}function uP(r,e){let t=new Array(e.length),n=e.reduce((s,i,a)=>r.is0(i)?s:(t[a]=s,r.mul(s,i)),r.ONE),o=r.inv(n);return e.reduceRight((s,i,a)=>r.is0(i)?s:(t[a]=r.mul(s,t[a]),r.mul(s,i)),o),t}function T0(r,e){let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}function M1(r,e,t=!1,n={}){if(r<=_t)throw new Error(`Expected Field ORDER > 0, got ${r}`);let{nBitLength:o,nByteLength:s}=T0(r,e);if(s>2048)throw new Error("Field lengths over 2048 bytes are not supported");let i=aP(r),a=Object.freeze({ORDER:r,BITS:o,BYTES:s,MASK:Qc(o),ZERO:_t,ONE:Qe,create:c=>Le(c,r),isValid:c=>{if(typeof c!="bigint")throw new Error(`Invalid field element: expected bigint, got ${typeof c}`);return _t<=c&&c<r},is0:c=>c===_t,isOdd:c=>(c&Qe)===Qe,neg:c=>Le(-c,r),eql:(c,l)=>c===l,sqr:c=>Le(c*c,r),add:(c,l)=>Le(c+l,r),sub:(c,l)=>Le(c-l,r),mul:(c,l)=>Le(c*l,r),pow:(c,l)=>lP(a,c,l),div:(c,l)=>Le(c*K1(l,r),r),sqrN:c=>c*c,addN:(c,l)=>c+l,subN:(c,l)=>c-l,mulN:(c,l)=>c*l,inv:c=>K1(c,r),sqrt:n.sqrt||(c=>i(a,c)),invertBatch:c=>uP(a,c),cmov:(c,l,f)=>f?l:c,toBytes:c=>t?ho(c,s):cs(c,s),fromBytes:c=>{if(c.length!==s)throw new Error(`Fp.fromBytes: expected ${s}, got ${c.length}`);return t?an(c):fo(c)}});return Object.freeze(a)}function hg(r,e){if(!r.isOdd)throw new Error("Field doesn't have isOdd");let t=r.sqrt(e);return r.isOdd(t)?r.neg(t):t}function pg(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let e=r.toString(2).length;return Math.ceil(e/8)}function D0(r){let e=pg(r);return e+Math.ceil(e/2)}function mg(r,e,t=!1){let n=r.length,o=pg(e),s=D0(e);if(n<16||n<s||n>1024)throw new Error(`expected ${s}-1024 bytes of input, got ${n}`);let i=t?fo(r):an(r),a=Le(i,e-Qe)+Qe;return t?ho(a,o):cs(a,o)}var dP=BigInt(0),P0=BigInt(1);function U1(r,e){let t=(o,s)=>{let i=s.negate();return o?i:s},n=o=>{let s=Math.ceil(e/o)+1,i=2**(o-1);return{windows:s,windowSize:i}};return{constTimeNegate:t,unsafeLadder(o,s){let i=r.ZERO,a=o;for(;s>dP;)s&P0&&(i=i.add(a)),a=a.double(),s>>=P0;return i},precomputeWindow(o,s){let{windows:i,windowSize:a}=n(s),c=[],l=o,f=l;for(let u=0;u<i;u++){f=l,c.push(f);for(let d=1;d<a;d++)f=f.add(l),c.push(f);l=f.double()}return c},wNAF(o,s,i){let{windows:a,windowSize:c}=n(o),l=r.ZERO,f=r.BASE,u=BigInt(2**o-1),d=2**o,y=BigInt(o);for(let p=0;p<a;p++){let m=p*c,g=Number(i&u);i>>=y,g>c&&(g-=d,i+=P0);let b=m,E=m+Math.abs(g)-1,w=p%2!==0,_=g<0;g===0?f=f.add(t(w,s[b])):l=l.add(t(_,s[E]))}return{p:l,f}},wNAFCached(o,s,i,a){let c=o._WINDOW_SIZE||1,l=s.get(o);return l||(l=this.precomputeWindow(o,c),c!==1&&s.set(o,a(l))),this.wNAF(c,l,i)}}}function Jc(r){return k0(r.Fp),Nr(r,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...T0(r.n,r.nBitLength),...r,p:r.Fp.ORDER})}var cn=BigInt(0),br=BigInt(1),F1=BigInt(2),hP=BigInt(8),pP={zip215:!0};function mP(r){let e=Jc(r);return Nr(r,{hash:"function",a:"bigint",d:"bigint",randomBytes:"function"},{adjustScalarBytes:"function",domain:"function",uvRatio:"function",mapToCurve:"function"}),Object.freeze({...e})}function V1(r){let e=mP(r),{Fp:t,n,prehash:o,hash:s,randomBytes:i,nByteLength:a,h:c}=e,l=F1<<BigInt(a*8)-br,f=t.create,u=e.uvRatio||((P,R)=>{try{return{isValid:!0,value:t.sqrt(P*t.inv(R))}}catch{return{isValid:!1,value:cn}}}),d=e.adjustScalarBytes||(P=>P),y=e.domain||((P,R,V)=>{if(R.length||V)throw new Error("Contexts/pre-hash are not supported");return P}),p=P=>typeof P=="bigint"&&cn<P,m=(P,R)=>p(P)&&p(R)&&P<R,g=P=>P===cn||m(P,l);function b(P,R){if(m(P,R))return P;throw new Error(`Expected valid scalar < ${R}, got ${typeof P} ${P}`)}function E(P){return P===cn?P:b(P,n)}let w=new Map;function _(P){if(!(P instanceof I))throw new Error("ExtendedPoint expected")}class I{constructor(R,V,$,j){if(this.ex=R,this.ey=V,this.ez=$,this.et=j,!g(R))throw new Error("x required");if(!g(V))throw new Error("y required");if(!g($))throw new Error("z required");if(!g(j))throw new Error("t required")}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static fromAffine(R){if(R instanceof I)throw new Error("extended point not allowed");let{x:V,y:$}=R||{};if(!g(V)||!g($))throw new Error("invalid affine point");return new I(V,$,br,f(V*$))}static normalizeZ(R){let V=t.invertBatch(R.map($=>$.ez));return R.map(($,j)=>$.toAffine(V[j])).map(I.fromAffine)}_setWindowSize(R){this._WINDOW_SIZE=R,w.delete(this)}assertValidity(){let{a:R,d:V}=e;if(this.is0())throw new Error("bad point: ZERO");let{ex:$,ey:j,ez:ue,et:pe}=this,_e=f($*$),ye=f(j*j),ge=f(ue*ue),$e=f(ge*ge),Me=f(_e*R),Dt=f(ge*f(Me+ye)),Pt=f($e+f(V*f(_e*ye)));if(Dt!==Pt)throw new Error("bad point: equation left != right (1)");let xt=f($*j),Ht=f(ue*pe);if(xt!==Ht)throw new Error("bad point: equation left != right (2)")}equals(R){_(R);let{ex:V,ey:$,ez:j}=this,{ex:ue,ey:pe,ez:_e}=R,ye=f(V*_e),ge=f(ue*j),$e=f($*_e),Me=f(pe*j);return ye===ge&&$e===Me}is0(){return this.equals(I.ZERO)}negate(){return new I(f(-this.ex),this.ey,this.ez,f(-this.et))}double(){let{a:R}=e,{ex:V,ey:$,ez:j}=this,ue=f(V*V),pe=f($*$),_e=f(F1*f(j*j)),ye=f(R*ue),ge=V+$,$e=f(f(ge*ge)-ue-pe),Me=ye+pe,Dt=Me-_e,Pt=ye-pe,xt=f($e*Dt),Ht=f(Me*Pt),so=f($e*Pt),Gs=f(Dt*Me);return new I(xt,Ht,Gs,so)}add(R){_(R);let{a:V,d:$}=e,{ex:j,ey:ue,ez:pe,et:_e}=this,{ex:ye,ey:ge,ez:$e,et:Me}=R;if(V===BigInt(-1)){let N8=f((ue-j)*(ge+ye)),B8=f((ue+j)*(ge-ye)),Xp=f(B8-N8);if(Xp===cn)return this.double();let L8=f(pe*F1*Me),O8=f(_e*F1*$e),K8=O8+L8,M8=B8+N8,U8=O8-L8,oI=f(K8*Xp),sI=f(M8*U8),iI=f(K8*U8),aI=f(Xp*M8);return new I(oI,sI,aI,iI)}let Dt=f(j*ye),Pt=f(ue*ge),xt=f(_e*$*Me),Ht=f(pe*$e),so=f((j+ue)*(ye+ge)-Dt-Pt),Gs=Ht-xt,Uc=Ht+xt,C8=f(Pt-V*Dt),eI=f(so*Gs),tI=f(Uc*C8),rI=f(so*C8),nI=f(Gs*Uc);return new I(eI,tI,nI,rI)}subtract(R){return this.add(R.negate())}wNAF(R){return A.wNAFCached(this,w,R,I.normalizeZ)}multiply(R){let{p:V,f:$}=this.wNAF(b(R,n));return I.normalizeZ([V,$])[0]}multiplyUnsafe(R){let V=E(R);return V===cn?D:this.equals(D)||V===br?this:this.equals(k)?this.wNAF(V).p:A.unsafeLadder(this,V)}isSmallOrder(){return this.multiplyUnsafe(c).is0()}isTorsionFree(){return A.unsafeLadder(this,n).is0()}toAffine(R){let{ex:V,ey:$,ez:j}=this,ue=this.is0();R==null&&(R=ue?hP:t.inv(j));let pe=f(V*R),_e=f($*R),ye=f(j*R);if(ue)return{x:cn,y:br};if(ye!==br)throw new Error("invZ was invalid");return{x:pe,y:_e}}clearCofactor(){let{h:R}=e;return R===br?this:this.multiplyUnsafe(R)}static fromHex(R,V=!1){let{d:$,a:j}=e,ue=t.BYTES;R=We("pointHex",R,ue);let pe=R.slice(),_e=R[ue-1];pe[ue-1]=_e&-129;let ye=an(pe);ye===cn||(V?b(ye,l):b(ye,t.ORDER));let ge=f(ye*ye),$e=f(ge-br),Me=f($*ge-j),{isValid:Dt,value:Pt}=u($e,Me);if(!Dt)throw new Error("Point.fromHex: invalid y coordinate");let xt=(Pt&br)===br,Ht=(_e&128)!==0;if(!V&&Pt===cn&&Ht)throw new Error("Point.fromHex: x=0 and x_0=1");return Ht!==xt&&(Pt=f(-Pt)),I.fromAffine({x:Pt,y:ye})}static fromPrivateKey(R){return L(R).point}toRawBytes(){let{x:R,y:V}=this.toAffine(),$=ho(V,t.BYTES);return $[$.length-1]|=R&br?128:0,$}toHex(){return uo(this.toRawBytes())}}I.BASE=new I(e.Gx,e.Gy,br,f(e.Gx*e.Gy)),I.ZERO=new I(cn,br,br,cn);let{BASE:k,ZERO:D}=I,A=U1(I,a*8);function C(P){return Le(P,n)}function U(P){return C(an(P))}function L(P){let R=a;P=We("private key",P,R);let V=We("hashed private key",s(P),2*R),$=d(V.slice(0,R)),j=V.slice(R,2*R),ue=U($),pe=k.multiply(ue),_e=pe.toRawBytes();return{head:$,prefix:j,scalar:ue,point:pe,pointBytes:_e}}function F(P){return L(P).pointBytes}function H(P=new Uint8Array,...R){let V=po(...R);return U(s(y(V,We("context",P),!!o)))}function re(P,R,V={}){P=We("message",P),o&&(P=o(P));let{prefix:$,scalar:j,pointBytes:ue}=L(R),pe=H(V.context,$,P),_e=k.multiply(pe).toRawBytes(),ye=H(V.context,_e,ue,P),ge=C(pe+ye*j);E(ge);let $e=po(_e,ho(ge,t.BYTES));return We("result",$e,a*2)}let T=pP;function N(P,R,V,$=T){let{context:j,zip215:ue}=$,pe=t.BYTES;P=We("signature",P,2*pe),R=We("message",R),o&&(R=o(R));let _e=an(P.slice(pe,2*pe)),ye,ge,$e;try{ye=I.fromHex(V,ue),ge=I.fromHex(P.slice(0,pe),ue),$e=k.multiplyUnsafe(_e)}catch{return!1}if(!ue&&ye.isSmallOrder())return!1;let Me=H(j,ge.toRawBytes(),ye.toRawBytes(),R);return ge.add(ye.multiplyUnsafe(Me)).subtract($e).clearCofactor().equals(I.ZERO)}return k._setWindowSize(8),{CURVE:e,getPublicKey:F,sign:re,verify:N,ExtendedPoint:I,utils:{getExtendedPublicKey:L,randomPrivateKey:()=>i(t.BYTES),precompute(P=8,R=I.BASE){return R._setWindowSize(P),R.multiply(BigInt(3)),R}}}}var Zc=BigInt(0),C0=BigInt(1);function yP(r){return Nr(r,{a:"bigint"},{montgomeryBits:"isSafeInteger",nByteLength:"isSafeInteger",adjustScalarBytes:"function",domain:"function",powPminus2:"function",Gu:"bigint"}),Object.freeze({...r})}function yg(r){let e=yP(r),{P:t}=e,n=w=>Le(w,t),o=e.montgomeryBits,s=Math.ceil(o/8),i=e.nByteLength,a=e.adjustScalarBytes||(w=>w),c=e.powPminus2||(w=>I0(w,t-BigInt(2),t));function l(w,_,I){let k=n(w*(_-I));return _=n(_-k),I=n(I+k),[_,I]}function f(w){if(typeof w=="bigint"&&Zc<=w&&w<t)return w;throw new Error("Expected valid scalar 0 < scalar < CURVE.P")}let u=(e.a-BigInt(2))/BigInt(4);function d(w,_){let I=f(w),k=f(_),D=I,A=C0,C=Zc,U=I,L=C0,F=Zc,H;for(let T=BigInt(o-1);T>=Zc;T--){let N=k>>T&C0;F^=N,H=l(F,A,U),A=H[0],U=H[1],H=l(F,C,L),C=H[0],L=H[1],F=N;let Y=A+C,P=n(Y*Y),R=A-C,V=n(R*R),$=P-V,j=U+L,ue=U-L,pe=n(ue*Y),_e=n(j*R),ye=pe+_e,ge=pe-_e;U=n(ye*ye),L=n(D*n(ge*ge)),A=n(P*V),C=n($*(P+n(u*$)))}H=l(F,A,U),A=H[0],U=H[1],H=l(F,C,L),C=H[0],L=H[1];let re=c(C);return n(A*re)}function y(w){return ho(n(w),s)}function p(w){let _=We("u coordinate",w,s);return i===32&&(_[31]&=127),an(_)}function m(w){let _=We("scalar",w),I=_.length;if(I!==s&&I!==i)throw new Error(`Expected ${s} or ${i} bytes, got ${I}`);return an(a(_))}function g(w,_){let I=p(_),k=m(w),D=d(I,k);if(D===Zc)throw new Error("Invalid private or public key received");return y(D)}let b=y(e.Gu);function E(w){return g(w,b)}return{scalarMult:g,scalarMultBase:E,getSharedSecret:(w,_)=>g(w,_),getPublicKey:w=>E(w),utils:{randomPrivateKey:()=>e.randomBytes(e.nByteLength)},GuBytes:b}}var el=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),gg=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),Oz=BigInt(0),gP=BigInt(1),N0=BigInt(2),bP=BigInt(5),bg=BigInt(10),wP=BigInt(20),EP=BigInt(40),wg=BigInt(80);function Eg(r){let e=el,n=r*r%e*r%e,o=ze(n,N0,e)*n%e,s=ze(o,gP,e)*r%e,i=ze(s,bP,e)*s%e,a=ze(i,bg,e)*i%e,c=ze(a,wP,e)*a%e,l=ze(c,EP,e)*c%e,f=ze(l,wg,e)*l%e,u=ze(f,wg,e)*l%e,d=ze(u,bg,e)*i%e;return{pow_p_5_8:ze(d,N0,e)*r%e,b2:n}}function xg(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function xP(r,e){let t=el,n=Le(e*e*e,t),o=Le(n*n*e,t),s=Eg(r*o).pow_p_5_8,i=Le(r*n*s,t),a=Le(e*i*i,t),c=i,l=Le(i*gg,t),f=a===r,u=a===Le(-r,t),d=a===Le(-r*gg,t);return f&&(i=c),(u||d)&&(i=l),dg(i,t)&&(i=Le(-i,t)),{isValid:f||u,value:i}}var mo=M1(el,void 0,!0),B0={a:BigInt(-1),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),Fp:mo,n:BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),h:BigInt(8),Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960"),hash:Ye,randomBytes:dt,adjustScalarBytes:xg,uvRatio:xP},we=V1(B0);function vg(r,e,t){if(e.length>255)throw new Error("Context is too big");return N1(E0("SigEd25519 no Ed25519 collisions"),new Uint8Array([t?1:0,e.length]),e,r)}var Kz=V1({...B0,domain:vg}),Mz=V1({...B0,domain:vg,prehash:Ye}),tl=yg({P:el,a:BigInt(486662),montgomeryBits:255,nByteLength:32,Gu:BigInt(9),powPminus2:r=>{let e=el,{pow_p_5_8:t,b2:n}=Eg(r);return Le(ze(t,BigInt(3),e)*n,e)},adjustScalarBytes:xg,randomBytes:dt});var vP=(mo.ORDER+BigInt(3))/BigInt(8),Uz=mo.pow(N0,vP),Fz=mo.sqrt(mo.neg(mo.ONE)),Vz=(mo.ORDER-BigInt(5))/BigInt(8),qz=BigInt(486662);var Hz=hg(mo,mo.neg(BigInt(486664)));var $z=BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235"),Gz=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),Yz=BigInt("1159843021668779879193775521855586647937357759715417654439879720876111806838"),Wz=BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952");var zz=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");var ba=32,yo=64,q1=32;function _g(){let r=we.utils.randomPrivateKey(),e=we.getPublicKey(r);return{privateKey:Ig(r,e),publicKey:e}}function Sg(r){if(r.length!==q1)throw new TypeError('"seed" must be 32 bytes in length.');if(!(r instanceof Uint8Array))throw new TypeError('"seed" must be a node.js Buffer, or Uint8Array.');let e=r,t=we.getPublicKey(e);return{privateKey:Ig(e,t),publicKey:t}}function Rg(r,e){let t=r.subarray(0,q1);return we.sign(e instanceof Uint8Array?e:e.subarray(),t)}function Ag(r,e,t){return we.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function Ig(r,e){let t=new Uint8Array(yo);for(let n=0;n<q1;n++)t[n]=r[n],t[q1+n]=e[n];return t}var Qt={get(r=globalThis){let e=r.crypto;if(e==null||e.subtle==null)throw Object.assign(new Error("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"),{code:"ERR_MISSING_WEB_CRYPTO"});return e}};var L0={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function kg(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,o=r?.digest??"SHA-256",s=r?.saltLength??16,i=r?.iterations??32767,a=Qt.get();t*=8;async function c(u,d){let y=a.getRandomValues(new Uint8Array(s)),p=a.getRandomValues(new Uint8Array(n)),m={name:e,iv:p};typeof d=="string"&&(d=x(d));let g;if(d.length===0){g=await a.subtle.importKey("jwk",L0,{name:"AES-GCM"},!0,["encrypt"]);try{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}catch{g=await a.subtle.importKey("jwk",L0,{name:"AES-GCM"},!0,["encrypt"])}}else{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}let b=await a.subtle.encrypt(m,g,u);return le([y,m.iv,new Uint8Array(b)])}async function l(u,d){let y=u.subarray(0,s),p=u.subarray(s,s+n),m=u.subarray(s+n),g={name:e,iv:p};typeof d=="string"&&(d=x(d));let b;if(d.length===0)try{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}catch{b=await a.subtle.importKey("jwk",L0,{name:"AES-GCM"},!0,["decrypt"])}else{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}let E=await a.subtle.decrypt(g,b,m);return new Uint8Array(E)}return{encrypt:c,decrypt:l}}async function wa(r,e){let n=await kg().encrypt(r,e);return Ge.encode(n)}var ht;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(ht||(ht={}));var O0;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(O0||(O0={}));(function(r){r.codec=()=>Re(O0)})(ht||(ht={}));var An;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),ht.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=ht.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(An||(An={}));var go;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),ht.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=ht.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(go||(go={}));var rl=class{_key;constructor(e){this._key=Ea(e,ba)}verify(e,t){return Ag(this._key,t,e)}marshal(){return this._key}get bytes(){return An.encode({Type:ht.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Cr(e)?e.then(({bytes:t})=>t):e.bytes}},li=class{_key;_publicKey;constructor(e,t){this._key=Ea(e,yo),this._publicKey=Ea(t,ba)}sign(e){return Rg(this._key,e)}get public(){return new rl(this._publicKey)}marshal(){return this._key}get bytes(){return go.encode({Type:ht.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return Cr(e)?{bytes:t}=await e:t=e.bytes,t}async id(){let e=Xe.digest(this.public.bytes);return ie.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return wa(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function RP(r){if(r.length>yo){r=Ea(r,yo+ba);let n=r.subarray(0,yo),o=r.subarray(yo,r.length);return new li(n,o)}r=Ea(r,yo);let e=r.subarray(0,yo),t=r.subarray(ba);return new li(e,t)}function AP(r){return r=Ea(r,ba),new rl(r)}async function IP(){let{privateKey:r,publicKey:e}=_g();return new li(r,e)}async function Tg(r){let{privateKey:e,publicKey:t}=Sg(r);return new li(e,t)}function Ea(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new h(`Key must be a Uint8Array of length ${e}, got ${r.length}`,"ERR_INVALID_KEY_TYPE");return r}var Y0={};oe(Y0,{MAX_RSA_KEY_SIZE:()=>hl,RsaPrivateKey:()=>_a,RsaPublicKey:()=>dl,fromJwk:()=>QP,generateKeyPair:()=>JP,unmarshalRsaPrivateKey:()=>$0,unmarshalRsaPublicKey:()=>XP});function ui(r){if(isNaN(r)||r<=0)throw new h("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return dt(r)}var ds={};oe(ds,{exportToPem:()=>GP,importFromPem:()=>YP,jwkToPkcs1:()=>VP,jwkToPkix:()=>HP,pkcs1ToJwk:()=>FP,pkixToJwk:()=>qP});var $1=class extends ya{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,si(e);let n=on(t);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let o=this.blockLen,s=new Uint8Array(o);s.set(n.length>o?e.create().update(n).digest():n);for(let i=0;i<s.length;i++)s[i]^=54;this.iHash.update(s),this.oHash=e.create();for(let i=0;i<s.length;i++)s[i]^=106;this.oHash.update(s),s.fill(0)}update(e){return ma(this),this.iHash.update(e),this}digestInto(e){ma(this),w0(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));let{oHash:t,iHash:n,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},ls=(r,e,t)=>new $1(r,e).update(t).digest();ls.create=(r,e)=>new $1(r,e);function Dg(r,e,t,n){si(r);let o=og({dkLen:32,asyncTick:10},n),{c:s,dkLen:i,asyncTick:a}=o;if(os(s),os(i),os(a),s<1)throw new Error("PBKDF2: iterations (c) should be >= 1");let c=on(e),l=on(t),f=new Uint8Array(i),u=ls.create(r,c),d=u._cloneInto().update(l);return{c:s,dkLen:i,asyncTick:a,DK:f,PRF:u,PRFSalt:d}}function Pg(r,e,t,n,o){return r.destroy(),e.destroy(),n&&n.destroy(),o.fill(0),t}function Cg(r,e,t,n){let{c:o,dkLen:s,DK:i,PRF:a,PRFSalt:c}=Dg(r,e,t,n),l,f=new Uint8Array(4),u=ii(f),d=new Uint8Array(a.outputLen);for(let y=1,p=0;p<s;y++,p+=a.outputLen){let m=i.subarray(p,p+a.outputLen);u.setInt32(0,y,!1),(l=c._cloneInto(l)).update(f).digestInto(d),m.set(d.subarray(0,m.length));for(let g=1;g<o;g++){a._cloneInto(l).update(d).digestInto(d);for(let b=0;b<m.length;b++)m[b]^=d[b]}}return Pg(a,c,i,l,d)}async function pt(r,e,t,n){let{c:o,dkLen:s,asyncTick:i,DK:a,PRF:c,PRFSalt:l}=Dg(r,e,t,n),f,u=new Uint8Array(4),d=ii(u),y=new Uint8Array(c.outputLen);for(let p=1,m=0;m<s;p++,m+=c.outputLen){let g=a.subarray(m,m+c.outputLen);d.setInt32(0,p,!1),(f=l._cloneInto(f)).update(u).digestInto(y),g.set(y.subarray(0,g.length)),await ng(o-1,i,()=>{c._cloneInto(f).update(y).digestInto(y);for(let b=0;b<g.length;b++)g[b]^=y[b]})}return Pg(c,l,a,f,y)}var ke=Ue(Ng());function fi(r,e){let t=0;if(r.length===1)return r[0];for(let n=r.length-1;n>=0;n--)t+=r[r.length-1-n]*Math.pow(2,e*n);return t}function us(r,e,t=-1){let n=t,o=r,s=0,i=Math.pow(2,e);for(let a=1;a<8;a++){if(r<i){let c;if(n<0)c=new ArrayBuffer(a),s=a;else{if(n<a)return new ArrayBuffer(0);c=new ArrayBuffer(n),s=n}let l=new Uint8Array(c);for(let f=a-1;f>=0;f--){let u=Math.pow(2,f*e);l[s-f-1]=Math.floor(o/u),o-=l[s-f-1]*u}return c}i*=Math.pow(2,e)}return new ArrayBuffer(0)}function W1(...r){let e=0,t=0;for(let s of r)e+=s.length;let n=new ArrayBuffer(e),o=new Uint8Array(n);for(let s of r)o.set(s,t),t+=s.length;return o}function U0(){let r=new Uint8Array(this.valueHex);if(this.valueHex.byteLength>=2){let a=r[0]===255&&r[1]&128,c=r[0]===0&&(r[1]&128)===0;(a||c)&&this.warnings.push("Needlessly long format")}let e=new ArrayBuffer(this.valueHex.byteLength),t=new Uint8Array(e);for(let a=0;a<this.valueHex.byteLength;a++)t[a]=0;t[0]=r[0]&128;let n=fi(t,8),o=new ArrayBuffer(this.valueHex.byteLength),s=new Uint8Array(o);for(let a=0;a<this.valueHex.byteLength;a++)s[a]=r[a];return s[0]&=127,fi(s,8)-n}function Bg(r){let e=r<0?r*-1:r,t=128;for(let n=1;n<8;n++){if(e<=t){if(r<0){let i=t-e,a=us(i,8,n),c=new Uint8Array(a);return c[0]|=128,a}let o=us(e,8,n),s=new Uint8Array(o);if(s[0]&128){let i=o.slice(0),a=new Uint8Array(i);o=new ArrayBuffer(o.byteLength+1),s=new Uint8Array(o);for(let c=0;c<i.byteLength;c++)s[c+1]=a[c];s[0]=0}return o}t*=Math.pow(2,8)}return new ArrayBuffer(0)}function Lg(r,e){if(r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let o=0;o<t.length;o++)if(t[o]!==n[o])return!1;return!0}function lr(r,e){let t=r.toString(10);if(e<t.length)return"";let n=e-t.length,o=new Array(n);for(let i=0;i<n;i++)o[i]="0";return o.join("").concat(t)}var vj=Math.log(2);function z1(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function F0(r){let e=0,t=0;for(let o=0;o<r.length;o++){let s=r[o];e+=s.byteLength}let n=new Uint8Array(e);for(let o=0;o<r.length;o++){let s=r[o];n.set(new Uint8Array(s),t),t+=s.byteLength}return n.buffer}function xo(r,e,t,n){return e instanceof Uint8Array?e.byteLength?t<0?(r.error="Wrong parameter: inputOffset less than zero",!1):n<0?(r.error="Wrong parameter: inputLength less than zero",!1):e.byteLength-t-n<0?(r.error="End of input reached before message was fully decoded (inconsistent offset and length values)",!1):!0:(r.error="Wrong parameter: inputBuffer has zero length",!1):(r.error="Wrong parameter: inputBuffer must be 'Uint8Array'",!1)}var ol=class{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return F0(this.items)}},nl=[new Uint8Array([1])],Og="0123456789";var va="",ln=new ArrayBuffer(0),V0=new Uint8Array(0),sl="EndOfContent",Mg="OCTET STRING",Ug="BIT STRING";function vo(r){var e;return e=class extends r{constructor(...n){var o;super(...n);let s=n[0]||{};this.isHexOnly=(o=s.isHexOnly)!==null&&o!==void 0?o:!1,this.valueHexView=s.valueHex?ke.BufferSourceConverter.toUint8Array(s.valueHex):V0}get valueHex(){return this.valueHexView.slice().buffer}set valueHex(n){this.valueHexView=new Uint8Array(n)}fromBER(n,o,s){let i=n instanceof ArrayBuffer?new Uint8Array(n):n;if(!xo(this,i,o,s))return-1;let a=o+s;return this.valueHexView=i.subarray(o,a),this.valueHexView.length?(this.blockLength=s,a):(this.warnings.push("Zero buffer length"),o)}toBER(n=!1){return this.isHexOnly?n?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.byteLength===this.valueHexView.buffer.byteLength?this.valueHexView.buffer:this.valueHexView.slice().buffer:(this.error="Flag 'isHexOnly' is not set, abort",ln)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:ke.Convert.ToHex(this.valueHexView)}}},e.NAME="hexBlock",e}var wo=class{constructor({blockLength:e=0,error:t=va,warnings:n=[],valueBeforeDecode:o=V0}={}){this.blockLength=e,this.error=t,this.warnings=n,this.valueBeforeDecodeView=ke.BufferSourceConverter.toUint8Array(o)}static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(e){this.valueBeforeDecodeView=new Uint8Array(e)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:ke.Convert.ToHex(this.valueBeforeDecodeView)}}};wo.NAME="baseBlock";var Wt=class extends wo{fromBER(e,t,n){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}toBER(e,t){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}};Wt.NAME="valueBlock";var j1=class extends vo(wo){constructor({idBlock:e={}}={}){var t,n,o,s;super(),e?(this.isHexOnly=(t=e.isHexOnly)!==null&&t!==void 0?t:!1,this.valueHexView=e.valueHex?ke.BufferSourceConverter.toUint8Array(e.valueHex):V0,this.tagClass=(n=e.tagClass)!==null&&n!==void 0?n:-1,this.tagNumber=(o=e.tagNumber)!==null&&o!==void 0?o:-1,this.isConstructed=(s=e.isConstructed)!==null&&s!==void 0?s:!1):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}toBER(e=!1){let t=0;switch(this.tagClass){case 1:t|=0;break;case 2:t|=64;break;case 3:t|=128;break;case 4:t|=192;break;default:return this.error="Unknown tag class",ln}if(this.isConstructed&&(t|=32),this.tagNumber<31&&!this.isHexOnly){let o=new Uint8Array(1);if(!e){let s=this.tagNumber;s&=31,t|=s,o[0]=t}return o.buffer}if(!this.isHexOnly){let o=us(this.tagNumber,7),s=new Uint8Array(o),i=o.byteLength,a=new Uint8Array(i+1);if(a[0]=t|31,!e){for(let c=0;c<i-1;c++)a[c+1]=s[c]|128;a[i]=s[i-1]}return a.buffer}let n=new Uint8Array(this.valueHexView.byteLength+1);if(n[0]=t|31,!e){let o=this.valueHexView;for(let s=0;s<o.length-1;s++)n[s+1]=o[s]|128;n[this.valueHexView.byteLength]=o[o.length-1]}return n.buffer}fromBER(e,t,n){let o=ke.BufferSourceConverter.toUint8Array(e);if(!xo(this,o,t,n))return-1;let s=o.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;switch(s[0]&192){case 0:this.tagClass=1;break;case 64:this.tagClass=2;break;case 128:this.tagClass=3;break;case 192:this.tagClass=4;break;default:return this.error="Unknown tag class",-1}this.isConstructed=(s[0]&32)===32,this.isHexOnly=!1;let a=s[0]&31;if(a!==31)this.tagNumber=a,this.blockLength=1;else{let c=1,l=this.valueHexView=new Uint8Array(255),f=255;for(;s[c]&128;){if(l[c-1]=s[c]&127,c++,c>=s.length)return this.error="End of input reached before message was fully decoded",-1;if(c===f){f+=255;let d=new Uint8Array(f);for(let y=0;y<l.length;y++)d[y]=l[y];l=this.valueHexView=new Uint8Array(f)}}this.blockLength=c+1,l[c-1]=s[c]&127;let u=new Uint8Array(c);for(let d=0;d<c;d++)u[d]=l[d];l=this.valueHexView=new Uint8Array(c),l.set(u),this.blockLength<=9?this.tagNumber=fi(l,7):(this.isHexOnly=!0,this.warnings.push("Tag too long, represented as hex-coded"))}if(this.tagClass===1&&this.isConstructed)switch(this.tagNumber){case 1:case 2:case 5:case 6:case 9:case 13:case 14:case 23:case 24:case 31:case 32:case 33:case 34:return this.error="Constructed encoding used for primitive type",-1}return t+this.blockLength}toJSON(){return{...super.toJSON(),tagClass:this.tagClass,tagNumber:this.tagNumber,isConstructed:this.isConstructed}}};j1.NAME="identificationBlock";var X1=class extends wo{constructor({lenBlock:e={}}={}){var t,n,o;super(),this.isIndefiniteForm=(t=e.isIndefiniteForm)!==null&&t!==void 0?t:!1,this.longFormUsed=(n=e.longFormUsed)!==null&&n!==void 0?n:!1,this.length=(o=e.length)!==null&&o!==void 0?o:0}fromBER(e,t,n){let o=ke.BufferSourceConverter.toUint8Array(e);if(!xo(this,o,t,n))return-1;let s=o.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;if(s[0]===255)return this.error="Length block 0xFF is reserved by standard",-1;if(this.isIndefiniteForm=s[0]===128,this.isIndefiniteForm)return this.blockLength=1,t+this.blockLength;if(this.longFormUsed=!!(s[0]&128),this.longFormUsed===!1)return this.length=s[0],this.blockLength=1,t+this.blockLength;let i=s[0]&127;if(i>8)return this.error="Too big integer",-1;if(i+1>s.length)return this.error="End of input reached before message was fully decoded",-1;let a=t+1,c=o.subarray(a,a+i);return c[i-1]===0&&this.warnings.push("Needlessly long encoded length"),this.length=fi(c,8),this.longFormUsed&&this.length<=127&&this.warnings.push("Unnecessary usage of long length form"),this.blockLength=i+1,t+this.blockLength}toBER(e=!1){let t,n;if(this.length>127&&(this.longFormUsed=!0),this.isIndefiniteForm)return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=128),t;if(this.longFormUsed){let o=us(this.length,8);if(o.byteLength>127)return this.error="Too big length",ln;if(t=new ArrayBuffer(o.byteLength+1),e)return t;let s=new Uint8Array(o);n=new Uint8Array(t),n[0]=o.byteLength|128;for(let i=0;i<o.byteLength;i++)n[i+1]=s[i];return t}return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=this.length),t}toJSON(){return{...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,longFormUsed:this.longFormUsed,length:this.length}}};X1.NAME="lengthBlock";var Z={},Nt=class extends wo{constructor({name:e=va,optional:t=!1,primitiveSchema:n,...o}={},s){super(o),this.name=e,this.optional=t,n&&(this.primitiveSchema=n),this.idBlock=new j1(o),this.lenBlock=new X1(o),this.valueBlock=s?new s(o):new Wt(o)}fromBER(e,t,n){let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),o)}toBER(e,t){let n=t||new ol;t||Fg(this);let o=this.idBlock.toBER(e);if(n.write(o),this.lenBlock.isIndefiniteForm)n.write(new Uint8Array([128]).buffer),this.valueBlock.toBER(e,n),n.write(new ArrayBuffer(2));else{let s=this.valueBlock.toBER(e);this.lenBlock.length=s.byteLength;let i=this.lenBlock.toBER(e);n.write(i),n.write(s)}return t?ln:n.final()}toJSON(){let e={...super.toJSON(),idBlock:this.idBlock.toJSON(),lenBlock:this.lenBlock.toJSON(),valueBlock:this.valueBlock.toJSON(),name:this.name,optional:this.optional};return this.primitiveSchema&&(e.primitiveSchema=this.primitiveSchema.toJSON()),e}toString(e="ascii"){return e==="ascii"?this.onAsciiEncoding():ke.Convert.ToHex(this.toBER())}onAsciiEncoding(){return`${this.constructor.NAME} : ${ke.Convert.ToHex(this.valueBlock.valueBeforeDecodeView)}`}isEqual(e){if(this===e)return!0;if(!(e instanceof this.constructor))return!1;let t=this.toBER(),n=e.toBER();return Lg(t,n)}};Nt.NAME="BaseBlock";function Fg(r){if(r instanceof Z.Constructed)for(let e of r.valueBlock.value)Fg(e)&&(r.lenBlock.isIndefiniteForm=!0);return!!r.lenBlock.isIndefiniteForm}var Q1=class extends Nt{constructor({value:e=va,...t}={},n){super(t,n),e&&this.fromString(e)}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}fromBER(e,t,n){let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(this.fromBuffer(this.valueBlock.valueHexView),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),o)}onAsciiEncoding(){return`${this.constructor.NAME} : '${this.valueBlock.value}'`}};Q1.NAME="BaseStringBlock";var J1=class extends vo(Wt){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}};J1.NAME="PrimitiveValueBlock";var Vg,Z1=class extends Nt{constructor(e={}){super(e,J1),this.idBlock.isConstructed=!1}};Vg=Z1;Z.Primitive=Vg;Z1.NAME="PRIMITIVE";function OP(r,e){if(r instanceof e)return r;let t=new e;return t.idBlock=r.idBlock,t.lenBlock=r.lenBlock,t.warnings=r.warnings,t.valueBeforeDecodeView=r.valueBeforeDecodeView,t}function Nf(r,e=0,t=r.length){let n=e,o=new Nt({},Wt),s=new wo;if(!xo(s,r,e,t))return o.error=s.error,{offset:-1,result:o};if(!r.subarray(e,e+t).length)return o.error="Zero buffer length",{offset:-1,result:o};let a=o.idBlock.fromBER(r,e,t);if(o.idBlock.warnings.length&&o.warnings.concat(o.idBlock.warnings),a===-1)return o.error=o.idBlock.error,{offset:-1,result:o};if(e=a,t-=o.idBlock.blockLength,a=o.lenBlock.fromBER(r,e,t),o.lenBlock.warnings.length&&o.warnings.concat(o.lenBlock.warnings),a===-1)return o.error=o.lenBlock.error,{offset:-1,result:o};if(e=a,t-=o.lenBlock.blockLength,!o.idBlock.isConstructed&&o.lenBlock.isIndefiniteForm)return o.error="Indefinite length form used for primitive encoding form",{offset:-1,result:o};let c=Nt;switch(o.idBlock.tagClass){case 1:if(o.idBlock.tagNumber>=37&&o.idBlock.isHexOnly===!1)return o.error="UNIVERSAL 37 and upper tags are reserved by ASN.1 standard",{offset:-1,result:o};switch(o.idBlock.tagNumber){case 0:if(o.idBlock.isConstructed&&o.lenBlock.length>0)return o.error="Type [UNIVERSAL 0] is reserved",{offset:-1,result:o};c=Z.EndOfContent;break;case 1:c=Z.Boolean;break;case 2:c=Z.Integer;break;case 3:c=Z.BitString;break;case 4:c=Z.OctetString;break;case 5:c=Z.Null;break;case 6:c=Z.ObjectIdentifier;break;case 10:c=Z.Enumerated;break;case 12:c=Z.Utf8String;break;case 13:c=Z.RelativeObjectIdentifier;break;case 14:c=Z.TIME;break;case 15:return o.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:o};case 16:c=Z.Sequence;break;case 17:c=Z.Set;break;case 18:c=Z.NumericString;break;case 19:c=Z.PrintableString;break;case 20:c=Z.TeletexString;break;case 21:c=Z.VideotexString;break;case 22:c=Z.IA5String;break;case 23:c=Z.UTCTime;break;case 24:c=Z.GeneralizedTime;break;case 25:c=Z.GraphicString;break;case 26:c=Z.VisibleString;break;case 27:c=Z.GeneralString;break;case 28:c=Z.UniversalString;break;case 29:c=Z.CharacterString;break;case 30:c=Z.BmpString;break;case 31:c=Z.DATE;break;case 32:c=Z.TimeOfDay;break;case 33:c=Z.DateTime;break;case 34:c=Z.Duration;break;default:{let l=o.idBlock.isConstructed?new Z.Constructed:new Z.Primitive;l.idBlock=o.idBlock,l.lenBlock=o.lenBlock,l.warnings=o.warnings,o=l}}break;case 2:case 3:case 4:default:c=o.idBlock.isConstructed?Z.Constructed:Z.Primitive}return o=OP(o,c),a=o.fromBER(r,e,o.lenBlock.isIndefiniteForm?t:o.lenBlock.length),o.valueBeforeDecodeView=r.subarray(n,n+o.blockLength),{offset:a,result:o}}function Ee(r){if(!r.byteLength){let e=new Nt({},Wt);return e.error="Input buffer has zero length",{offset:-1,result:e}}return Nf(ke.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength)}function KP(r,e){return r?1:e}var In=class extends Wt{constructor({value:e=[],isIndefiniteForm:t=!1,...n}={}){super(n),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,n){let o=ke.BufferSourceConverter.toUint8Array(e);if(!xo(this,o,t,n))return-1;if(this.valueBeforeDecodeView=o.subarray(t,t+n),this.valueBeforeDecodeView.length===0)return this.warnings.push("Zero buffer length"),t;let s=t;for(;KP(this.isIndefiniteForm,n)>0;){let i=Nf(o,s,n);if(i.offset===-1)return this.error=i.result.error,this.warnings.concat(i.result.warnings),-1;if(s=i.offset,this.blockLength+=i.result.blockLength,n-=i.result.blockLength,this.value.push(i.result),this.isIndefiniteForm&&i.result.constructor.NAME===sl)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===sl?this.value.pop():this.warnings.push("No EndOfContent block encoded")),s}toBER(e,t){let n=t||new ol;for(let o=0;o<this.value.length;o++)this.value[o].toBER(e,n);return t?ln:n.final()}toJSON(){let e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let t of this.value)e.value.push(t.toJSON());return e}};In.NAME="ConstructedValueBlock";var qg,fs=class extends Nt{constructor(e={}){super(e,In),this.idBlock.isConstructed=!0}fromBER(e,t,n){this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm;let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),o)}onAsciiEncoding(){let e=[];for(let n of this.valueBlock.value)e.push(n.toString("ascii").split(`
|
|
17
|
+
`});var _b=Ie(()=>{vb();Rd();Fo();o3();Ec()});var a3,Zie,Sb=Ie(()=>{jw();Zw();Jw();eb();tb();Xp();rb();Zp();nb();sb();pb();yb();wb();bb();_b();a3={...Hp,...qp,...Wp,...zp,...Gp,...Yp,...Qp,...jp,...Jp,...e3},Zie={...s3,...i3}});function Yi(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}var Td=Ie(()=>{});function kd(r=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?Yi(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}var c3=Ie(()=>{Td()});function Ab(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var Rb,l3,pN,Cd,u3=Ie(()=>{Sb();c3();Rb=Ab("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),l3=Ab("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=kd(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),pN={utf8:Rb,"utf-8":Rb,hex:a3.base16,latin1:l3,ascii:l3,binary:l3,...a3},Cd=pN});var Ib={};me(Ib,{toString:()=>mN});function mN(r,e="utf8"){let t=Cd[e];if(!t)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(r.buffer,r.byteOffset,r.byteLength).toString("utf8"):t.encoder.encode(r).substring(1)}var Db=Ie(()=>{u3()});var Tb={};me(Tb,{fromString:()=>gN});function gN(r,e="utf8"){let t=Cd[e];if(!t)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?Yi(globalThis.Buffer.from(r,"utf-8")):t.decoder.decode(`${t.prefix}${r}`)}var kb=Ie(()=>{u3();Td()});var Cb={};me(Cb,{concat:()=>yN});function yN(r,e){e||(e=r.reduce((o,s)=>o+s.length,0));let t=kd(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return Yi(t)}var Nb=Ie(()=>{c3();Td()});var f3=ae((dae,Ub)=>{"use strict";var Ob=kw(),Xi=Kw(),{names:vc}=Hw(),{toString:Nd}=(Db(),Ic(Ib)),{fromString:wN}=(kb(),Ic(Tb)),{concat:bN}=(Nb(),Ic(Cb)),Qi={};for(let r in vc){let e=r;Qi[vc[e]]=e}Object.freeze(Qi);function EN(r){if(!(r instanceof Uint8Array))throw new Error("must be passed a Uint8Array");return Nd(r,"base16")}function xN(r){return wN(r,"base16")}function vN(r){if(!(r instanceof Uint8Array))throw new Error("must be passed a Uint8Array");return Nd(Ob.encode("base58btc",r)).slice(1)}function _N(r){let e=r instanceof Uint8Array?Nd(r):r;return Ob.decode("z"+e)}function Pb(r){if(!(r instanceof Uint8Array))throw new Error("multihash must be a Uint8Array");if(r.length<2)throw new Error("multihash too short. must be > 2 bytes.");let e=Xi.decode(r);if(!Bb(e))throw new Error(`multihash unknown function code: 0x${e.toString(16)}`);r=r.slice(Xi.decode.bytes);let t=Xi.decode(r);if(t<0)throw new Error(`multihash invalid length: ${t}`);if(r=r.slice(Xi.decode.bytes),r.length!==t)throw new Error(`multihash length inconsistent: 0x${Nd(r,"base16")}`);return{code:e,name:Qi[e],length:t,digest:r}}function SN(r,e,t){if(!r||e===void 0)throw new Error("multihash encode requires at least two args: digest, code");let n=Lb(e);if(!(r instanceof Uint8Array))throw new Error("digest should be a Uint8Array");if(t==null&&(t=r.length),t&&r.length!==t)throw new Error("digest length should be equal to specified length.");let o=Xi.encode(n),s=Xi.encode(t);return bN([o,s,r],o.length+s.length+r.length)}function Lb(r){let e=r;if(typeof r=="string"){if(vc[r]===void 0)throw new Error(`Unrecognized hash function named: ${r}`);e=vc[r]}if(typeof e!="number")throw new Error(`Hash function code should be a number. Got: ${e}`);if(Qi[e]===void 0&&!d3(e))throw new Error(`Unrecognized function code: ${e}`);return e}function d3(r){return r>0&&r<16}function Bb(r){return!!(d3(r)||Qi[r])}function Mb(r){Pb(r)}function RN(r){return Mb(r),r.subarray(0,2)}Ub.exports={names:vc,codes:Qi,toHexString:EN,fromHexString:xN,toB58String:vN,fromB58String:_N,decode:Pb,encode:SN,coerceCode:Lb,isAppCode:d3,validate:Mb,prefix:RN,isValidCode:Bb}});var tE=ae(Bd=>{"use strict";Object.defineProperty(Bd,"__esModule",{value:!0});var g3=class{constructor(){this.pullQueue=[],this.pushQueue=[],this.eventHandlers={},this.isPaused=!1,this.isStopped=!1}push(e){if(this.isStopped)return;let t={value:e,done:!1};if(this.pullQueue.length){let n=this.pullQueue.shift();n&&n.resolve(t)}else this.pushQueue.push(Promise.resolve(t)),this.highWaterMark!==void 0&&this.pushQueue.length>=this.highWaterMark&&!this.isPaused&&(this.isPaused=!0,this.eventHandlers.highWater?this.eventHandlers.highWater():console&&console.warn(`EventIterator queue reached ${this.pushQueue.length} items`))}stop(){if(!this.isStopped){this.isStopped=!0,this.remove();for(let e of this.pullQueue)e.resolve({value:void 0,done:!0});this.pullQueue.length=0}}fail(e){if(!this.isStopped)if(this.isStopped=!0,this.remove(),this.pullQueue.length){for(let t of this.pullQueue)t.reject(e);this.pullQueue.length=0}else{let t=Promise.reject(e);t.catch(()=>{}),this.pushQueue.push(t)}}remove(){Promise.resolve().then(()=>{this.removeCallback&&this.removeCallback()})}[Symbol.asyncIterator](){return{next:e=>{let t=this.pushQueue.shift();return t?(this.lowWaterMark!==void 0&&this.pushQueue.length<=this.lowWaterMark&&this.isPaused&&(this.isPaused=!1,this.eventHandlers.lowWater&&this.eventHandlers.lowWater()),t):this.isStopped?Promise.resolve({value:void 0,done:!0}):new Promise((n,o)=>{this.pullQueue.push({resolve:n,reject:o})})},return:()=>(this.isStopped=!0,this.pushQueue.length=0,this.remove(),Promise.resolve({value:void 0,done:!0}))}}},Ld=class{constructor(e,{highWaterMark:t=100,lowWaterMark:n=1}={}){let o=new g3;o.highWaterMark=t,o.lowWaterMark=n,o.removeCallback=e({push:s=>o.push(s),stop:()=>o.stop(),fail:s=>o.fail(s),on:(s,i)=>{o.eventHandlers[s]=i}})||(()=>{}),this[Symbol.asyncIterator]=()=>o[Symbol.asyncIterator](),Object.freeze(this)}};Bd.EventIterator=Ld;Bd.default=Ld});var rE=ae(_c=>{"use strict";Object.defineProperty(_c,"__esModule",{value:!0});var y3=tE();_c.EventIterator=y3.EventIterator;function PN(r,e,t){return new y3.EventIterator(({push:n})=>(this.addEventListener(r,n,e),()=>this.removeEventListener(r,n,e)),t)}_c.subscribe=PN;_c.default=y3.EventIterator});var OE=ae((tue,NE)=>{"use strict";NE.exports=CE;var YN=Tf(),Ko=CE.prototype,XN=new Date%1e9;function QN(){return(Math.random()*1e9>>>0)+XN++}function CE(r){r=r||{},this.id=r.id||QN(),this.max=r.max||1/0,this.items=r.items||[],this._lookup={},this.size=this.items.length,this.lastModified=new Date(r.lastModified||new Date);for(var e,t,n=this.items.length;n--;)e=this.items[n],t=new Date(e.expires)-new Date,this._lookup[e.key]=e,t>0?this.expire(e.key,t):t<=0&&this.delete(e.key)}Ko.has=function(r){return r in this._lookup};Ko.get=function(r){if(!this.has(r))return null;var e=this._lookup[r];return e.refresh&&this.expire(r,e.refresh),this.items.splice(this.items.indexOf(e),1),this.items.push(e),e.value};Ko.meta=function(r){if(!this.has(r))return null;var e=this._lookup[r];return"meta"in e?e.meta:null};Ko.set=function(r,e,t){var n=this._lookup[r],o=this._lookup[r]={key:r,value:e};return this.lastModified=new Date,n?(clearTimeout(n.timeout),this.items.splice(this.items.indexOf(n),1,o)):(this.size>=this.max&&this.delete(this.items[0].key),this.items.push(o),this.size++),t&&("ttl"in t&&this.expire(r,t.ttl),"meta"in t&&(o.meta=t.meta),t.refresh&&(o.refresh=t.ttl)),this};Ko.delete=function(r){var e=this._lookup[r];return e?(this.lastModified=new Date,this.items.splice(this.items.indexOf(e),1),clearTimeout(e.timeout),delete this._lookup[r],this.size--,this):!1};Ko.expire=function(r,e){var t=e||0,n=this._lookup[r];if(!n)return this;if(typeof t=="string"&&(t=YN(e)),typeof t!="number")throw new TypeError("Expiration time must be a string or number.");return clearTimeout(n.timeout),n.timeout=setTimeout(this.delete.bind(this,n.key),t),n.expires=Number(new Date)+t,this};Ko.clear=function(){for(var r=this.items.length;r--;)this.delete(this.items[r].key);return this};Ko.toJSON=function(){for(var r=new Array(this.items.length),e,t=r.length;t--;)e=this.items[t],r[t]={key:e.key,meta:e.meta,value:e.value,expires:e.expires,refresh:e.refresh};return{id:this.id,max:isFinite(this.max)?this.max:void 0,lastModified:this.lastModified,items:r}}});var gO={};me(gO,{createHelia:()=>pO,libp2pDefaults:()=>Fd});function lt(r){let e=new globalThis.AbortController;function t(){e.abort();for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",t)}for(let s of r){if(s?.aborted===!0){t();break}s?.addEventListener!=null&&s.addEventListener("abort",t)}function n(){for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",t)}let o=e.signal;return o.clear=n,o}function ix(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:o=>{n.push(o)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var Ms=ix;function ax(r){return r[Symbol.asyncIterator]!=null}function j3(r){return r?.then!=null}function cx(r,e){if(ax(r))return async function*(){for await(let a of r){let c=e(a);j3(c)&&await c,yield a}}();let t=Ms(r),{value:n,done:o}=t.next();if(o===!0)return function*(){}();if(typeof e(n)?.then=="function")return async function*(){yield n;for await(let a of t){let c=e(a);j3(c)&&await c,yield a}}();let i=e;return function*(){yield n;for(let a of t)i(a),yield a}()}var qo=cx;var gf={};me(gf,{base32:()=>it,base32hex:()=>gx,base32hexpad:()=>wx,base32hexpadupper:()=>bx,base32hexupper:()=>yx,base32pad:()=>px,base32padupper:()=>mx,base32upper:()=>o4,base32z:()=>Ex});var vO=new Uint8Array(0);function Z3(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function gn(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 J3(r){return new TextEncoder().encode(r)}function e4(r){return new TextDecoder().decode(r)}function lx(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(t[i]!==255)throw new TypeError(s+" is ambiguous");t[i]=o}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),d=Math.log(256)/Math.log(a);function u(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 p=0,y=0,w=0,E=h.length;w!==E&&h[w]===0;)w++,p++;for(var b=(E-w)*d+1>>>0,S=new Uint8Array(b);w!==E;){for(var R=h[w],A=0,D=b-1;(R!==0||A<y)&&D!==-1;D--,A++)R+=256*S[D]>>>0,S[D]=R%a>>>0,R=R/a>>>0;if(R!==0)throw new Error("Non-zero carry");y=A,w++}for(var _=b-y;_!==b&&S[_]===0;)_++;for(var k=c.repeat(p);_<b;++_)k+=r.charAt(S[_]);return k}function f(h){if(typeof h!="string")throw new TypeError("Expected String");if(h.length===0)return new Uint8Array;var p=0;if(h[p]!==" "){for(var y=0,w=0;h[p]===c;)y++,p++;for(var E=(h.length-p)*l+1>>>0,b=new Uint8Array(E);h[p];){var S=t[h.charCodeAt(p)];if(S===255)return;for(var R=0,A=E-1;(S!==0||R<w)&&A!==-1;A--,R++)S+=a*b[A]>>>0,b[A]=S%256>>>0,S=S/256>>>0;if(S!==0)throw new Error("Non-zero carry");w=R,p++}if(h[p]!==" "){for(var D=E-w;D!==E&&b[D]===0;)D++;for(var _=new Uint8Array(y+(E-D)),k=y;D!==E;)_[k++]=b[D++];return _}}}function m(h){var p=f(h);if(p)return p;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:f,decode:m}}var ux=lx,dx=ux,r4=dx;var ff=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},hf=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return n4(this,e)}},pf=class{decoders;constructor(e){this.decoders=e}or(e){return n4(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function n4(r,e){return new pf({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var mf=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new ff(e,t,n),this.decoder=new hf(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function Us({name:r,prefix:e,encode:t,decode:n}){return new mf(r,e,t,n)}function Xn({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=r4(t,r);return Us({prefix:e,name:r,encode:n,decode:s=>gn(o(s))})}function fx(r,e,t,n){let o={};for(let d=0;d<e.length;++d)o[e[d]]=d;let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*t/8|0),a=0,c=0,l=0;for(let d=0;d<s;++d){let u=o[r[d]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|u,a+=t,a>=8&&(a-=8,i[l++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return i}function hx(r,e,t){let n=e[e.length-1]==="=",o=(1<<t)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<t-i]),n)for(;s.length*t&7;)s+="=";return s}function We({name:r,prefix:e,bitsPerChar:t,alphabet:n}){return Us({prefix:e,name:r,encode(o){return hx(o,n,t)},decode(o){return fx(o,n,t,r)}})}var it=We({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),o4=We({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),px=We({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),mx=We({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),gx=We({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),yx=We({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),wx=We({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),bx=We({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Ex=We({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var yf={};me(yf,{base58btc:()=>ce,base58flickr:()=>xx});var ce=Xn({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),xx=Xn({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var ir={};me(ir,{Digest:()=>Wo,create:()=>Ir,decode:()=>Dr,equals:()=>bf});var vx=a4,s4=128,_x=127,Sx=~_x,Rx=Math.pow(2,31);function a4(r,e,t){e=e||[],t=t||0;for(var n=t;r>=Rx;)e[t++]=r&255|s4,r/=128;for(;r&Sx;)e[t++]=r&255|s4,r>>>=7;return e[t]=r|0,a4.bytes=t-n+1,e}var Ax=wf,Ix=128,i4=127;function wf(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw wf.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&i4)<<o:(i&i4)*Math.pow(2,o),o+=7}while(i>=Ix);return wf.bytes=s-n,t}var Dx=Math.pow(2,7),Tx=Math.pow(2,14),kx=Math.pow(2,21),Cx=Math.pow(2,28),Nx=Math.pow(2,35),Ox=Math.pow(2,42),Px=Math.pow(2,49),Lx=Math.pow(2,56),Bx=Math.pow(2,63),Mx=function(r){return r<Dx?1:r<Tx?2:r<kx?3:r<Cx?4:r<Nx?5:r<Ox?6:r<Px?7:r<Lx?8:r<Bx?9:10},Ux={encode:vx,decode:Ax,encodingLength:Mx},Fx=Ux,na=Fx;function oa(r,e=0){return[na.decode(r,e),na.decode.bytes]}function Fs(r,e,t=0){return na.encode(r,e,t),e}function Vs(r){return na.encodingLength(r)}function Ir(r,e){let t=e.byteLength,n=Vs(r),o=n+Vs(t),s=new Uint8Array(o+t);return Fs(r,s,0),Fs(t,s,n),s.set(e,o),new Wo(r,t,e,s)}function Dr(r){let e=gn(r),[t,n]=oa(e),[o,s]=oa(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new Wo(t,o,i,e)}function bf(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&Z3(r.bytes,t.bytes)}}var Wo=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};function c4(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return Kx(t,Ef(r),e??ce.encoder);default:return $x(t,Ef(r),e??it.encoder)}}var l4=new WeakMap;function Ef(r){let e=l4.get(r);if(e==null){let t=new Map;return l4.set(r,t),t}return e}var oe=class r{code;version;multihash;bytes;"/";constructor(e,t,n,o){this.code=t,this.version=e,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==sa)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==Hx)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=Ir(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&bf(e.multihash,n.multihash)}toString(e){return c4(this,e)}toJSON(){return{"/":c4(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:o,multihash:s,bytes:i}=t;return new r(n,o,s,i??u4(n,o,s.bytes))}else if(t[qx]===!0){let{version:n,multihash:o,code:s}=t,i=Dr(o);return r.create(n,s,i)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==sa)throw new Error(`Version 0 CID must use dag-pb (code: ${sa}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=u4(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,sa,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=gn(e.subarray(n,n+t.multihashSize));if(o.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=o.subarray(t.multihashSize-t.digestSize),i=new Wo(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[u,f]=oa(e.subarray(t));return t+=f,u},o=n(),s=sa;if(o===18?(o=0,t=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=t,a=n(),c=n(),l=t+c,d=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:d,size:l}}static parse(e,t){let[n,o]=Vx(e,t),s=r.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return Ef(s).set(n,e),s}};function Vx(r,e){switch(r[0]){case"Q":{let t=e??ce;return[ce.prefix,t.decode(`${ce.prefix}${r}`)]}case ce.prefix:{let t=e??ce;return[ce.prefix,t.decode(r)]}case it.prefix:{let t=e??it;return[it.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function Kx(r,e,t){let{prefix:n}=t;if(n!==ce.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let o=e.get(n);if(o==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return o}function $x(r,e,t){let{prefix:n}=t,o=e.get(n);if(o==null){let s=t.encode(r);return e.set(n,s),s}else return o}var sa=112,Hx=18;function u4(r,e,t){let n=Vs(r),o=n+Vs(e),s=new Uint8Array(o+t.byteLength);return Fs(r,s,0),Fs(e,s,n),s.set(t,o),s}var qx=Symbol.for("@ipld/js-cid/CID");var xf=class extends Map{metric;constructor(e){super();let{name:t,metrics:n}=e;this.metric=n.registerMetric(t),this.updateComponentMetric()}set(e,t){return super.set(e,t),this.updateComponentMetric(),this}delete(e){let t=super.delete(e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function jr(r){let{name:e,metrics:t}=r,n;return t!=null?n=new xf({name:e,metrics:t}):n=new Map,n}var d4=Symbol.for("@libp2p/connection");var Zr=Symbol.for("@libp2p/content-routing");var zo=Symbol.for("@libp2p/peer-discovery");var vf=Symbol.for("@libp2p/peer-id");function Ks(r){return r!=null&&!!r[vf]}var Jr=Symbol.for("@libp2p/peer-routing");var f4="keep-alive";var en=Symbol.for("@libp2p/transport");var Qn;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(Qn||(Qn={}));var Tr=class r extends Error{code;type;constructor(e="The operation was aborted"){super(e),this.code=r.code,this.type=r.type}static code="ABORT_ERR";static type="aborted"},g=class extends Error{code;props;constructor(e,t,n){super(e),this.code=t,this.name=n?.name??"CodeError",this.props=n??{}}},Tc=class extends AggregateError{code;props;constructor(e,t,n,o){super(e,t),this.code=n,this.name=o?.name??"AggregateCodeError",this.props=o??{}}};var yn="ERR_TIMEOUT";var h4="ERR_NOT_FOUND",Go="ERR_INVALID_MESSAGE";var Ce=class extends EventTarget{#e=new Map;listenerCount(e){let t=this.#e.get(e);return t==null?0:t.length}addEventListener(e,t,n){super.addEventListener(e,t,n);let o=this.#e.get(e);o==null&&(o=[],this.#e.set(e,o)),o.push({callback:t,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(e,t,n){super.removeEventListener(e.toString(),t??null,n);let o=this.#e.get(e);o!=null&&(o=o.filter(({callback:s})=>s!==t),this.#e.set(e,o))}dispatchEvent(e){let t=super.dispatchEvent(e),n=this.#e.get(e.type);return n==null||(n=n.filter(({once:o})=>!o),this.#e.set(e.type,n)),t}safeDispatchEvent(e,t={}){return this.dispatchEvent(new mt(e,t))}},_f=class extends Event{detail;constructor(e,t){super(e,t),this.detail=t?.detail}},mt=globalThis.CustomEvent??_f;var ve=(r,...e)=>{try{[...e]}catch{}};function kc(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function jn(...r){let e=[];for(let t of r)kc(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStart!=null&&await t.beforeStart()})),await Promise.all(e.map(async t=>{await t.start()})),await Promise.all(e.map(async t=>{t.afterStart!=null&&await t.afterStart()}))}async function Zn(...r){let e=[];for(let t of r)kc(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStop!=null&&await t.beforeStop()})),await Promise.all(e.map(async t=>{await t.stop()})),await Promise.all(e.map(async t=>{t.afterStop!=null&&await t.afterStop()}))}var If={};me(If,{sha256:()=>Re,sha512:()=>Af});function Rf({name:r,code:e,encode:t}){return new Sf(r,e,t)}var Sf=class{name;code;encode;constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?Ir(this.code,t):t.then(n=>Ir(this.code,n))}else throw Error("Unknown type, must be binary type")}};function m4(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var Re=Rf({name:"sha2-256",code:18,encode:m4("SHA-256")}),Af=Rf({name:"sha2-512",code:19,encode:m4("SHA-512")});var s8=ke(T4(),1);var Gt=ke(kf(),1);var Nf={};me(Nf,{base64:()=>ar,base64pad:()=>gv,base64url:()=>Cf,base64urlpad:()=>yv});var ar=We({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),gv=We({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Cf=We({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),yv=We({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});Gt.default.formatters.b=r=>r==null?"undefined":ce.baseEncode(r);Gt.default.formatters.t=r=>r==null?"undefined":it.baseEncode(r);Gt.default.formatters.m=r=>r==null?"undefined":ar.baseEncode(r);Gt.default.formatters.p=r=>r==null?"undefined":r.toString();Gt.default.formatters.c=r=>r==null?"undefined":r.toString();Gt.default.formatters.k=r=>r==null?"undefined":r.toString();Gt.default.formatters.a=r=>r==null?"undefined":r.toString();function wv(r){let e=()=>{};return e.enabled=!1,e.color="",e.diff=0,e.log=()=>{},e.namespace=r,e.destroy=()=>!0,e.extend=()=>e,e}function Jn(){return{forComponent(r){return Nt(r)}}}function Nt(r){let e=wv(`${r}:trace`);return Gt.default.enabled(`${r}:trace`)&&Gt.default.names.map(t=>t.toString()).find(t=>t.includes(":trace"))!=null&&(e=(0,Gt.default)(`${r}:trace`)),Object.assign((0,Gt.default)(r),{error:(0,Gt.default)(`${r}:error`),trace:e})}function j(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}var Xo=class{_refCounter;cid;priority;wantType;constructor(e,t,n){this._refCounter=1,this.cid=e,this.priority=t??1,this.wantType=n}inc(){this._refCounter+=1}dec(){this._refCounter=Math.max(0,this._refCounter-1)}hasRefs(){return this._refCounter>0}get[Symbol.toStringTag](){return`WantlistEntry <key: ${this.cid.toString(ce)}, priority: ${this.priority}, refs: ${this._refCounter}>`}equals(e){return this._refCounter===e._refCounter&&this.cid.equals(e.cid)&&this.priority===e.priority&&this.wantType===e.wantType}};var eo=class{entry;cancel;sendDontHave;constructor(e,t,n,o,s){this.entry=new Xo(e,t,n),this.cancel=!!o,this.sendDontHave=!!s}get cid(){return this.entry.cid}set cid(e){this.entry.cid=e}get priority(){return this.entry.priority}set priority(e){this.entry.priority=e}get wantType(){return this.entry.wantType}set wantType(e){this.entry.wantType=e}get[Symbol.toStringTag](){return`BitswapMessageEntry ${this.cid.toString(ce)} <cancel: ${this.cancel}, priority: ${this.priority}>`}equals(e){return this.cancel===e.cancel&&this.sendDontHave===e.sendDontHave&&this.wantType===e.wantType&&this.entry.equals(e.entry)}};var cr=(r,e)=>{let t=["bitswap"];return e!=null&&t.push(e),r!=null&&t.push(`${r.toString().slice(0,8)}`),Nt(t.join(":"))};var Oc=(r,e)=>{if(r.size!==e.size)return!1;for(let[t,n]of r){let o=e.get(t);if(o===void 0||n instanceof Uint8Array&&o instanceof Uint8Array&&!j(n,o)||n instanceof eo&&o instanceof eo&&!n.equals(o))return!1}return!0};var ia=ke($4(),1);function Nv(r){let e=new Uint8Array(r.reduce((n,o)=>n+ia.default.encodingLength(o),0)),t=0;for(let n of r)e=ia.encode(n,e,t),t+=ia.default.encodingLength(n);return e}var H4=Nv;function tn(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}function Ze(r=0){return globalThis.Buffer?.alloc!=null?tn(globalThis.Buffer.alloc(r)):new Uint8Array(r)}function qe(r=0){return globalThis.Buffer?.allocUnsafe!=null?tn(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}var Ov=Math.pow(2,7),Pv=Math.pow(2,14),Lv=Math.pow(2,21),Lf=Math.pow(2,28),Bf=Math.pow(2,35),Mf=Math.pow(2,42),Uf=Math.pow(2,49),De=128,At=127;function Fe(r){if(r<Ov)return 1;if(r<Pv)return 2;if(r<Lv)return 3;if(r<Lf)return 4;if(r<Bf)return 5;if(r<Mf)return 6;if(r<Uf)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Ff(r,e,t=0){switch(Fe(r)){case 8:e[t++]=r&255|De,r/=128;case 7:e[t++]=r&255|De,r/=128;case 6:e[t++]=r&255|De,r/=128;case 5:e[t++]=r&255|De,r/=128;case 4:e[t++]=r&255|De,r>>>=7;case 3:e[t++]=r&255|De,r>>>=7;case 2:e[t++]=r&255|De,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function Bv(r,e,t=0){switch(Fe(r)){case 8:e.set(t++,r&255|De),r/=128;case 7:e.set(t++,r&255|De),r/=128;case 6:e.set(t++,r&255|De),r/=128;case 5:e.set(t++,r&255|De),r/=128;case 4:e.set(t++,r&255|De),r>>>=7;case 3:e.set(t++,r&255|De),r>>>=7;case 2:e.set(t++,r&255|De),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function Vf(r,e){let t=r[e],n=0;if(n+=t&At,t<De||(t=r[e+1],n+=(t&At)<<7,t<De)||(t=r[e+2],n+=(t&At)<<14,t<De)||(t=r[e+3],n+=(t&At)<<21,t<De)||(t=r[e+4],n+=(t&At)*Lf,t<De)||(t=r[e+5],n+=(t&At)*Bf,t<De)||(t=r[e+6],n+=(t&At)*Mf,t<De)||(t=r[e+7],n+=(t&At)*Uf,t<De))return n;throw new RangeError("Could not decode varint")}function Mv(r,e){let t=r.get(e),n=0;if(n+=t&At,t<De||(t=r.get(e+1),n+=(t&At)<<7,t<De)||(t=r.get(e+2),n+=(t&At)<<14,t<De)||(t=r.get(e+3),n+=(t&At)<<21,t<De)||(t=r.get(e+4),n+=(t&At)*Lf,t<De)||(t=r.get(e+5),n+=(t&At)*Bf,t<De)||(t=r.get(e+6),n+=(t&At)*Mf,t<De)||(t=r.get(e+7),n+=(t&At)*Uf,t<De))return n;throw new RangeError("Could not decode varint")}function ze(r,e,t=0){return e==null&&(e=qe(Fe(r))),e instanceof Uint8Array?Ff(r,e,t):Bv(r,e,t)}function Yt(r,e=0){return r instanceof Uint8Array?Vf(r,e):Mv(r,e)}var Kf=new Float32Array([-0]),to=new Uint8Array(Kf.buffer);function q4(r,e,t){Kf[0]=r,e[t]=to[0],e[t+1]=to[1],e[t+2]=to[2],e[t+3]=to[3]}function W4(r,e){return to[0]=r[e],to[1]=r[e+1],to[2]=r[e+2],to[3]=r[e+3],Kf[0]}var $f=new Float64Array([-0]),It=new Uint8Array($f.buffer);function z4(r,e,t){$f[0]=r,e[t]=It[0],e[t+1]=It[1],e[t+2]=It[2],e[t+3]=It[3],e[t+4]=It[4],e[t+5]=It[5],e[t+6]=It[6],e[t+7]=It[7]}function G4(r,e){return It[0]=r[e],It[1]=r[e+1],It[2]=r[e+2],It[3]=r[e+3],It[4]=r[e+4],It[5]=r[e+5],It[6]=r[e+6],It[7]=r[e+7],$f[0]}var Uv=BigInt(Number.MAX_SAFE_INTEGER),Fv=BigInt(Number.MIN_SAFE_INTEGER),Xt=class r{lo;hi;constructor(e,t){this.lo=e|0,this.hi=t|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(t+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(BigInt(t)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){let e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){let e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){let e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?t===0?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return Qo;if(e<Uv&&e>Fv)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,o=e-(n<<32n);return t&&(n=~n|0n,o=~o|0n,++o>Y4&&(o=0n,++n>Y4&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(e){if(e===0)return Qo;let t=e<0;t&&(e=-e);let n=e>>>0,o=(e-n)/4294967296>>>0;return t&&(o=~o>>>0,n=~n>>>0,++n>4294967295&&(n=0,++o>4294967295&&(o=0))),new r(n,o)}static from(e){return typeof e=="number"?r.fromNumber(e):typeof e=="bigint"?r.fromBigInt(e):typeof e=="string"?r.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new r(e.low>>>0,e.high>>>0):Qo}},Qo=new Xt(0,0);Qo.toBigInt=function(){return 0n};Qo.zzEncode=Qo.zzDecode=function(){return this};Qo.length=function(){return 1};var Y4=4294967296n;function X4(r){let e=0,t=0;for(let n=0;n<r.length;++n)t=r.charCodeAt(n),t<128?e+=1:t<2048?e+=2:(t&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function Q4(r,e,t){if(t-e<1)return"";let o,s=[],i=0,a;for(;e<t;)a=r[e++],a<128?s[i++]=a:a>191&&a<224?s[i++]=(a&31)<<6|r[e++]&63:a>239&&a<365?(a=((a&7)<<18|(r[e++]&63)<<12|(r[e++]&63)<<6|r[e++]&63)-65536,s[i++]=55296+(a>>10),s[i++]=56320+(a&1023)):s[i++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,i>8191&&((o??(o=[])).push(String.fromCharCode.apply(String,s)),i=0);return o!=null?(i>0&&o.push(String.fromCharCode.apply(String,s.slice(0,i))),o.join("")):String.fromCharCode.apply(String,s.slice(0,i))}function Hf(r,e,t){let n=t,o,s;for(let i=0;i<r.length;++i)o=r.charCodeAt(i),o<128?e[t++]=o:o<2048?(e[t++]=o>>6|192,e[t++]=o&63|128):(o&64512)===55296&&((s=r.charCodeAt(i+1))&64512)===56320?(o=65536+((o&1023)<<10)+(s&1023),++i,e[t++]=o>>18|240,e[t++]=o>>12&63|128,e[t++]=o>>6&63|128,e[t++]=o&63|128):(e[t++]=o>>12|224,e[t++]=o>>6&63|128,e[t++]=o&63|128);return t-n}function kr(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function Pc(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var qf=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(e){this.buf=e,this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,kr(this,10);return e}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw kr(this,4);return Pc(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw kr(this,4);return Pc(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw kr(this,4);let e=W4(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw kr(this,4);let e=G4(this.buf,this.pos);return this.pos+=8,e}bytes(){let e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw kr(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return Q4(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw kr(this,e);this.pos+=e}else do if(this.pos>=this.len)throw kr(this);while(this.buf[this.pos++]&128);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new Xt(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw kr(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<t*7)>>>0,e}if(this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw kr(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw kr(this,8);let e=Pc(this.buf,this.pos+=4),t=Pc(this.buf,this.pos+=4);return new Xt(e,t)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let e=Vf(this.buf,this.pos);return this.pos+=Fe(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}};function Wf(r){return new qf(r instanceof Uint8Array?r:r.subarray())}function J(r,e,t){let n=Wf(r);return e.decode(n,void 0,t)}var zf={};me(zf,{base10:()=>Vv});var Vv=Xn({prefix:"9",name:"base10",alphabet:"0123456789"});var Gf={};me(Gf,{base16:()=>Kv,base16upper:()=>$v});var Kv=We({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),$v=We({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Yf={};me(Yf,{base2:()=>Hv});var Hv=We({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Xf={};me(Xf,{base256emoji:()=>Yv});var Z4=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}"),qv=Z4.reduce((r,e,t)=>(r[t]=e,r),[]),Wv=Z4.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function zv(r){return r.reduce((e,t)=>(e+=qv[t],e),"")}function Gv(r){let e=[];for(let t of r){let n=Wv[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var Yv=Us({prefix:"\u{1F680}",name:"base256emoji",encode:zv,decode:Gv});var Qf={};me(Qf,{base36:()=>ro,base36upper:()=>Xv});var ro=Xn({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Xv=Xn({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var jf={};me(jf,{base8:()=>Qv});var Qv=We({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Zf={};me(Zf,{identity:()=>jv});var jv=Us({prefix:"\0",name:"identity",encode:r=>e4(r),decode:r=>J3(r)});var HP=new TextEncoder,qP=new TextDecoder;var J4=512;var Lc=85;var eh={};me(eh,{identity:()=>lr});var t8=0,Zv="identity",r8=gn;function Jv(r){return Ir(t8,r8(r))}var lr={code:t8,name:Zv,encode:r8,digest:Jv};var ur={...Zf,...Yf,...jf,...zf,...Gf,...gf,...Qf,...yf,...Nf,...Xf},rL={...If,...eh};function o8(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var n8=o8("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),th=o8("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=qe(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),e_={utf8:n8,"utf-8":n8,hex:ur.base16,latin1:th,ascii:th,binary:th,...ur},Bc=e_;function L(r,e="utf8"){let t=Bc[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?tn(globalThis.Buffer.from(r,"utf-8")):t.decoder.decode(`${t.prefix}${r}`)}function rh(r){let e=r??8192,t=e>>>1,n,o=e;return function(i){if(i<1||i>t)return qe(i);o+i>e&&(n=qe(e),o=0);let a=n.subarray(o,o+=i);return o&7&&(o=(o|7)+1),a}}var jo=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function nh(){}var sh=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},t_=rh();function r_(r){return globalThis.Buffer!=null?qe(r):t_(r)}var ca=class{len;head;tail;states;constructor(){this.len=0,this.head=new jo(nh,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new jo(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new ih((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(Mc,10,Xt.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=Xt.fromBigInt(e);return this._push(Mc,t.length(),t)}uint64Number(e){return this._push(Ff,Fe(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){let t=Xt.fromBigInt(e).zzEncode();return this._push(Mc,t.length(),t)}sint64Number(e){let t=Xt.fromNumber(e).zzEncode();return this._push(Mc,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(oh,1,e?1:0)}fixed32(e){return this._push(aa,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=Xt.fromBigInt(e);return this._push(aa,4,t.lo)._push(aa,4,t.hi)}fixed64Number(e){let t=Xt.fromNumber(e);return this._push(aa,4,t.lo)._push(aa,4,t.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push(q4,4,e)}double(e){return this._push(z4,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(oh,1,0):this.uint32(t)._push(o_,t,e)}string(e){let t=X4(e);return t!==0?this.uint32(t)._push(Hf,t,e):this._push(oh,1,0)}fork(){return this.states=new sh(this),this.head=this.tail=new jo(nh,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 jo(nh,0,0),this.len=0),this}ldelim(){let e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=t,this.len+=n),this}finish(){let e=this.head.next,t=r_(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function oh(r,e,t){e[t]=r&255}function n_(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var ih=class extends jo{next;constructor(e,t){super(n_,e,t),this.next=void 0}};function Mc(r,e,t){for(;r.hi!==0;)e[t++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)e[t++]=r.lo&127|128,r.lo=r.lo>>>7;e[t++]=r.lo}function aa(r,e,t){e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24}function o_(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(ca.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(s_,e,r),this},ca.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(i_,e,r),this});function s_(r,e,t){e.set(r,t)}function i_(r,e,t){r.length<40?Hf(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(L(r),t)}function ah(){return new ca}function ee(r,e){let t=ah();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var Ws;(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"})(Ws||(Ws={}));function Uc(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function Ve(r){function e(o){if(r[o.toString()]==null)throw new Error("Invalid enum value");return r[o]}let t=function(s,i){let a=e(s);i.int32(a)},n=function(s){let i=s.int32();return e(i)};return Uc("enum",Ws.VARINT,t,n)}function te(r,e){return Uc("message",Ws.LENGTH_DELIMITED,r,e)}var la=class extends Error{code;constructor(e,t,n){super(e,n),this.code=t}};var Bt;(function(r){let e;(function(a){let c;(function(f){f.Block="Block",f.Have="Have"})(c=a.WantType||(a.WantType={}));let l;(function(f){f[f.Block=0]="Block",f[f.Have=1]="Have"})(l||(l={})),function(f){f.codec=()=>Ve(l)}(c=a.WantType||(a.WantType={}));let d;(function(f){let m;f.codec=()=>(m==null&&(m=te((h,p,y={})=>{y.lengthDelimited!==!1&&p.fork(),h.block!=null&&h.block.byteLength>0&&(p.uint32(10),p.bytes(h.block)),h.priority!=null&&h.priority!==0&&(p.uint32(16),p.int32(h.priority)),h.cancel!=null&&h.cancel!==!1&&(p.uint32(24),p.bool(h.cancel)),h.wantType!=null&&l[h.wantType]!==0&&(p.uint32(32),r.Wantlist.WantType.codec().encode(h.wantType,p)),h.sendDontHave!=null&&h.sendDontHave!==!1&&(p.uint32(40),p.bool(h.sendDontHave)),y.lengthDelimited!==!1&&p.ldelim()},(h,p)=>{let y={block:new Uint8Array(0),priority:0,cancel:!1,wantType:c.Block,sendDontHave:!1},w=p==null?h.len:h.pos+p;for(;h.pos<w;){let E=h.uint32();switch(E>>>3){case 1:y.block=h.bytes();break;case 2:y.priority=h.int32();break;case 3:y.cancel=h.bool();break;case 4:y.wantType=r.Wantlist.WantType.codec().decode(h);break;case 5:y.sendDontHave=h.bool();break;default:h.skipType(E&7);break}}return y})),m),f.encode=h=>ee(h,f.codec()),f.decode=h=>J(h,f.codec())})(d=a.Entry||(a.Entry={}));let u;a.codec=()=>(u==null&&(u=te((f,m,h={})=>{if(h.lengthDelimited!==!1&&m.fork(),f.entries!=null)for(let p of f.entries)m.uint32(10),r.Wantlist.Entry.codec().encode(p,m);f.full!=null&&f.full!==!1&&(m.uint32(16),m.bool(f.full)),h.lengthDelimited!==!1&&m.ldelim()},(f,m)=>{let h={entries:[],full:!1},p=m==null?f.len:f.pos+m;for(;f.pos<p;){let y=f.uint32();switch(y>>>3){case 1:h.entries.push(r.Wantlist.Entry.codec().decode(f,f.uint32()));break;case 2:h.full=f.bool();break;default:f.skipType(y&7);break}}return h})),u),a.encode=f=>ee(f,a.codec()),a.decode=f=>J(f,a.codec())})(e=r.Wantlist||(r.Wantlist={}));let t;(function(a){let c;a.codec=()=>(c==null&&(c=te((l,d,u={})=>{u.lengthDelimited!==!1&&d.fork(),l.prefix!=null&&l.prefix.byteLength>0&&(d.uint32(10),d.bytes(l.prefix)),l.data!=null&&l.data.byteLength>0&&(d.uint32(18),d.bytes(l.data)),u.lengthDelimited!==!1&&d.ldelim()},(l,d)=>{let u={prefix:new Uint8Array(0),data:new Uint8Array(0)},f=d==null?l.len:l.pos+d;for(;l.pos<f;){let m=l.uint32();switch(m>>>3){case 1:u.prefix=l.bytes();break;case 2:u.data=l.bytes();break;default:l.skipType(m&7);break}}return u})),c),a.encode=l=>ee(l,a.codec()),a.decode=l=>J(l,a.codec())})(t=r.Block||(r.Block={}));let n;(function(a){a.Have="Have",a.DontHave="DontHave"})(n=r.BlockPresenceType||(r.BlockPresenceType={}));let o;(function(a){a[a.Have=0]="Have",a[a.DontHave=1]="DontHave"})(o||(o={})),function(a){a.codec=()=>Ve(o)}(n=r.BlockPresenceType||(r.BlockPresenceType={}));let s;(function(a){let c;a.codec=()=>(c==null&&(c=te((l,d,u={})=>{u.lengthDelimited!==!1&&d.fork(),l.cid!=null&&l.cid.byteLength>0&&(d.uint32(10),d.bytes(l.cid)),l.type!=null&&o[l.type]!==0&&(d.uint32(16),r.BlockPresenceType.codec().encode(l.type,d)),u.lengthDelimited!==!1&&d.ldelim()},(l,d)=>{let u={cid:new Uint8Array(0),type:n.Have},f=d==null?l.len:l.pos+d;for(;l.pos<f;){let m=l.uint32();switch(m>>>3){case 1:u.cid=l.bytes();break;case 2:u.type=r.BlockPresenceType.codec().decode(l);break;default:l.skipType(m&7);break}}return u})),c),a.encode=l=>ee(l,a.codec()),a.decode=l=>J(l,a.codec())})(s=r.BlockPresence||(r.BlockPresence={}));let i;r.codec=()=>(i==null&&(i=te((a,c,l={})=>{if(l.lengthDelimited!==!1&&c.fork(),a.wantlist!=null&&(c.uint32(10),r.Wantlist.codec().encode(a.wantlist,c)),a.blocks!=null)for(let d of a.blocks)c.uint32(18),c.bytes(d);if(a.payload!=null)for(let d of a.payload)c.uint32(26),r.Block.codec().encode(d,c);if(a.blockPresences!=null)for(let d of a.blockPresences)c.uint32(34),r.BlockPresence.codec().encode(d,c);a.pendingBytes!=null&&a.pendingBytes!==0&&(c.uint32(40),c.int32(a.pendingBytes)),l.lengthDelimited!==!1&&c.ldelim()},(a,c)=>{let l={blocks:[],payload:[],blockPresences:[],pendingBytes:0},d=c==null?a.len:a.pos+c;for(;a.pos<d;){let u=a.uint32();switch(u>>>3){case 1:l.wantlist=r.Wantlist.codec().decode(a,a.uint32());break;case 2:l.blocks.push(a.bytes());break;case 3:l.payload.push(r.Block.codec().decode(a,a.uint32()));break;case 4:l.blockPresences.push(r.BlockPresence.codec().decode(a,a.uint32()));break;case 5:l.pendingBytes=a.int32();break;default:a.skipType(u&7);break}}return l})),i),r.encode=a=>ee(a,r.codec()),r.decode=a=>J(a,r.codec())})(Bt||(Bt={}));var Dt=class r{static Entry=eo;static WantType={Block:Bt.Wantlist.WantType.Block,Have:Bt.Wantlist.WantType.Have};static BlockPresenceType={Have:Bt.BlockPresenceType.Have,DontHave:Bt.BlockPresenceType.DontHave};static deserialize=async(e,t)=>{let n=Bt.decode(e),o=n.wantlist?.full===!0,s=new r(o);return n.wantlist?.entries.forEach(i=>{if(i.block==null)return;let a=oe.decode(i.block);s.addEntry(a,i.priority??0,i.wantType,!!i.cancel,!!i.sendDontHave)}),n.blockPresences.forEach(i=>{if(i.cid==null)return;let a=oe.decode(i.cid);i.type===r.BlockPresenceType.Have?s.addHave(a):s.addDontHave(a)}),n.blocks.length>0?(await Promise.all(n.blocks.map(async i=>{let a=await Re.digest(i),c=oe.createV0(a);s.addBlock(c,i)})),s):(n.payload.length>0&&(await Promise.all(n.payload.map(async i=>{if(i.prefix==null||i.data==null)return;let a=(0,s8.default)(i.prefix),c=a[0],l=a[1],d=a[2],u=d===Re.code?Re:await t?.getHasher(d);if(u==null)throw new g("Unknown hash algorithm","ERR_UNKNOWN_HASH_ALG");let f=await u.digest(i.data),m=oe.create(c,l,f);s.addBlock(m,i.data)})),s.setPendingBytes(n.pendingBytes)),s)};static blockPresenceSize=e=>e.bytes.length+1;full;wantlist;blocks;blockPresences;pendingBytes;constructor(e){this.full=e,this.wantlist=new Map,this.blocks=new Map,this.blockPresences=new Map,this.pendingBytes=0}get empty(){return this.blocks.size===0&&this.wantlist.size===0&&this.blockPresences.size===0}addEntry(e,t,n,o,s){n==null&&(n=r.WantType.Block);let i=e.toString(ce),a=this.wantlist.get(i);a!=null?(a.wantType===n&&(a.priority=t),o===!0&&(a.cancel=!!o),s===!0&&(a.sendDontHave=!!s),n===r.WantType.Block&&a.wantType===r.WantType.Have&&(a.wantType=n)):this.wantlist.set(i,new eo(e,t,n,o,s))}addBlock(e,t){let n=e.toString(ce);this.blocks.set(n,t)}addHave(e){let t=e.toString(ce);this.blockPresences.has(t)||this.blockPresences.set(t,r.BlockPresenceType.Have)}addDontHave(e){let t=e.toString(ce);this.blockPresences.has(t)||this.blockPresences.set(t,r.BlockPresenceType.DontHave)}cancel(e){let t=e.toString(ce);this.wantlist.delete(t),this.addEntry(e,0,r.WantType.Block,!0,!1)}setPendingBytes(e){this.pendingBytes=e}serializeToBitswap100(){return Bt.encode({wantlist:{entries:Array.from(this.wantlist.values()).map(e=>({block:e.cid.bytes,priority:Number(e.priority),cancel:!!e.cancel,wantType:Bt.Wantlist.WantType.Block,sendDontHave:!1})),full:!!this.full},blocks:Array.from(this.blocks.values())})}serializeToBitswap110(){let e={wantlist:{entries:Array.from(this.wantlist.values()).map(t=>({block:t.cid.bytes,priority:Number(t.priority),wantType:t.wantType,cancel:!!t.cancel,sendDontHave:!!t.sendDontHave})),full:!!this.full},blockPresences:[],payload:[],pendingBytes:this.pendingBytes,blocks:[]};for(let[t,n]of this.blocks.entries()){let o=oe.parse(t),s=o.version,i=o.code,a=o.multihash.code,c=o.multihash.digest.length,l=H4([s,i,a,c]);e.payload.push({prefix:l,data:n})}for(let[t,n]of this.blockPresences)e.blockPresences.push({cid:oe.parse(t).bytes,type:n});return this.pendingBytes>0&&(e.pendingBytes=this.pendingBytes),Bt.encode(e)}equals(e){return!(this.full!==e.full||this.pendingBytes!==e.pendingBytes||!Oc(this.wantlist,e.wantlist)||!Oc(this.blocks,e.blocks)||!Oc(this.blockPresences,e.blockPresences))}get[Symbol.toStringTag](){let e=Array.from(this.wantlist.keys()),t=Array.from(this.blocks.keys());return`BitswapMessage <full: ${this.full}, list: ${e}, blocks: ${t}>`}};var i8={Block:Bt.Wantlist.WantType.Block,Have:Bt.Wantlist.WantType.Have},a_=(r,e)=>Array.prototype.slice.call(e,0).sort((t,n)=>{let o=r(t),s=r(n);return o<s?-1:o>s?1:0}),no=class{static Entry=Xo;set;_stats;constructor(e,t){this.set=t!=null?jr({name:"ipfs_bitswap_wantlist",metrics:t.metrics}):new Map,this._stats=e}get length(){return this.set.size}add(e,t,n){let o=e.toString(ce),s=this.set.get(o);s!=null?(s.inc(),s.priority=t,s.wantType===i8.Have&&n===i8.Block&&(s.wantType=n)):(this.set.set(o,new Xo(e,t,n)),this._stats!=null&&this._stats.push(void 0,"wantListSize",1))}remove(e){let t=e.toString(ce),n=this.set.get(t);n!=null&&(n.dec(),!n.hasRefs()&&(this.set.delete(t),this._stats!=null&&this._stats.push(void 0,"wantListSize",-1)))}removeForce(e){this.set.has(e)&&this.set.delete(e)}forEach(e){this.set.forEach(e)}entries(){return this.set.entries()}sortedEntries(){return new Map(a_(e=>e[1].key,Array.from(this.set.entries())))}contains(e){let t=e.toString(ce);return this.set.has(t)}get(e){let t=e.toString(ce);return this.set.get(t)}};var Fc=class{partner;wantlist;exchangeCount;accounting;lastExchange;constructor(e){this.partner=e,this.wantlist=new no,this.exchangeCount=0,this.accounting={bytesSent:0,bytesRecv:0}}sentBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.accounting.bytesSent+=e}receivedBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.accounting.bytesRecv+=e}wants(e,t,n){this.wantlist.add(e,t,n)}cancelWant(e){this.wantlist.remove(e)}wantlistContains(e){return this.wantlist.get(e)}debtRatio(){return this.accounting.bytesSent/(this.accounting.bytesRecv+1)}};var ua=class extends Map{_cmp;_keys;constructor(e,t){super(),this._cmp=t??this._defaultSort,this._keys=[];for(let[n,o]of e??[])this.set(n,o)}update(e){if(e<0||e>=this._keys.length)return;let t=this._keys[e];this._keys.splice(e,1);let n=this._find(t);this._keys.splice(n,0,t)}set(e,t){if(this.has(e)){let o=this.indexOf(e);this._keys.splice(o,1)}super.set(e,t);let n=this._find(e);return this._keys.splice(n,0,e),this}clear(){super.clear(),this._keys=[]}delete(e){if(!this.has(e))return!1;let t=this.indexOf(e);return this._keys.splice(t,1),super.delete(e)}indexOf(e){if(!this.has(e))return-1;let t=this._find(e);if(this._keys[t]===e)return t;for(let n=1;n<this._keys.length;n++){if(this._keys[t+n]===e)return t+n;if(this._keys[t-n]===e)return t-n}return-1}_find(e){let t=0,n=this._keys.length;for(;t<n;){let o=t+n>>>1,s=this._kCmp(this._keys[o],e);if(s<0)t=o+1;else if(s>0)n=o;else return o}return t}*keys(){for(let e of this._keys)yield e}*values(){for(let e of this._keys)yield this.get(e)}*entries(){for(let e of this._keys)yield[e,this.get(e)]}*[Symbol.iterator](){yield*this.entries()}forEach(e,t=this){if(e!=null)for(let n of this._keys){let o=this.get(n);if(o==null)throw new Error("Value cannot be undefined");e.apply(t,[[n,o]])}}_defaultSort(e,t){return e[0]<t[0]?-1:t[0]<e[0]?1:0}_kCmp(e,t){return this._cmp([e,this.get(e)],[t,this.get(t)])}};var c_={hasNewInfo(){return!1},merge(){}},Vc=class{_taskMerger;_byPeer;constructor(e=c_){this._taskMerger=e,this._byPeer=new ua([],Kc.compare)}pushTasks(e,t){let n=this._byPeer.get(e.toString());n==null&&(n=new Kc(e,this._taskMerger)),n.pushTasks(t),this._byPeer.set(e.toString(),n)}popTasks(e){let t=this._head();if(t===void 0)return{tasks:[],pendingSize:0};let{tasks:n,pendingSize:o}=t.popTasks(e);if(n.length===0)return{tasks:n,pendingSize:o};let s=t.peerId;return t.isIdle()?this._byPeer.delete(s.toString()):this._byPeer.update(0),{peerId:s,tasks:n,pendingSize:o}}_head(){if(this._byPeer.size!==0)for(let[,e]of this._byPeer)return e}remove(e,t){this._byPeer.get(t.toString())?.remove(e)}tasksDone(e,t){let n=this._byPeer.get(e.toString());if(n==null)return;let o=this._byPeer.indexOf(e.toString());for(let s of t)n.taskDone(s);this._byPeer.update(o)}},Kc=class{peerId;_taskMerger;_activeTotalSize;_pending;_active;constructor(e,t){this.peerId=e,this._taskMerger=t,this._activeTotalSize=0,this._pending=new ch,this._active=new Set}pushTasks(e){for(let t of e)this._pushTask(t)}_pushTask(e){if(!this._taskHasMoreInfoThanActiveTasks(e))return;let t=this._pending.get(e.topic);if(t!=null){e.priority>t.priority&&this._pending.updatePriority(e.topic,e.priority),this._taskMerger.merge(e,t);return}this._pending.add(e)}_taskHasMoreInfoThanActiveTasks(e){let t=[];for(let n of this._active)n.topic===e.topic&&t.push(n);return t.length===0?!0:this._taskMerger.hasNewInfo(e,t)}popTasks(e){let t=0,n=[],o=this._pending.tasks();for(let s=0;s<o.length&&t<e;s++){let i=o[s];n.push(i),t+=i.size,this._pending.delete(i.topic),this._activeTotalSize+=i.size,this._active.add(i)}return{tasks:n,pendingSize:this._pending.totalSize}}taskDone(e){this._active.has(e)&&(this._activeTotalSize-=e.size,this._active.delete(e))}remove(e){this._pending.delete(e)}isIdle(){return this._pending.length===0&&this._active.size===0}static compare(e,t){return e[1]._pending.length===0?1:t[1]._pending.length===0?-1:e[1]._activeTotalSize===t[1]._activeTotalSize?t[1]._pending.length-e[1]._pending.length:e[1]._activeTotalSize-t[1]._activeTotalSize}},ch=class{_tasks;constructor(){this._tasks=new ua([],this._compare)}get length(){return this._tasks.size}get totalSize(){return[...this._tasks.values()].reduce((e,t)=>e+t.task.size,0)}get(e){return this._tasks?.get(e)?.task}add(e){this._tasks.set(e.topic,{created:Date.now(),task:e})}delete(e){this._tasks.delete(e)}tasks(){return[...this._tasks.values()].map(e=>e.task)}updatePriority(e,t){let n=this._tasks.get(e);if(n==null)return;let o=this._tasks.indexOf(e);n.task.priority=t,this._tasks.update(o)}_compare(e,t){return e[1].task.priority===t[1].task.priority?e[1].created-t[1].created:t[1].task.priority-e[1].task.priority}};var a8={hasNewInfo(r,e){let t=!1,n=!1;for(let o of e)o.data.haveBlock&&(t=!0),o.data.isWantBlock&&(n=!0);return!!(!n&&r.data.isWantBlock||!t&&r.data.haveBlock)},merge(r,e){let t=r.data,n=e.data;!n.haveBlock&&t.haveBlock&&(n.haveBlock=t.haveBlock,n.blockSize=t.blockSize),!n.isWantBlock&&t.isWantBlock&&(n.isWantBlock=!0,(!n.haveBlock||t.haveBlock)&&(n.haveBlock=t.haveBlock,e.size=r.size)),n.isWantBlock&&n.haveBlock&&(e.size=n.blockSize)}};var c8=Dt.WantType,l_=16*1024,u_=1024,$c=class{_log;blockstore;network;_stats;_opts;ledgerMap;_running;_requestQueue;constructor(e,t,n,o,s,i={}){this._log=cr(e,"engine"),this.blockstore=t,this.network=n,this._stats=o,this._opts=this._processOpts(i),this.ledgerMap=jr({name:"ipfs_bitswap_ledger_map",metrics:s.metrics}),this._running=!1,this._requestQueue=new Vc(a8)}_processOpts(e){return{maxSizeReplaceHasWithBlock:u_,targetMessageSize:l_,...e}}_scheduleProcessTasks(){setTimeout(()=>{this._processTasks().catch(e=>{this._log.error("error processing stats",e)})})}async _processTasks(){if(!this._running)return;let{peerId:e,tasks:t,pendingSize:n}=this._requestQueue.popTasks(this._opts.targetMessageSize);if(t.length===0)return;let o=new Dt(!1);o.setPendingBytes(n);let s=[],i=new Map;for(let c of t){let l=oe.parse(c.topic);c.data.haveBlock?c.data.isWantBlock?(s.push(l),i.set(c.topic,c.data)):o.addHave(l):o.addDontHave(l)}let a=await this._getBlocks(s);for(let[c,l]of i){let d=oe.parse(c),u=a.get(c);u!=null?o.addBlock(d,u):l.sendDontHave&&o.addDontHave(d)}if(o.empty){e!=null&&this._requestQueue.tasksDone(e,t),this._scheduleProcessTasks();return}try{e!=null&&await this.network.sendMessage(e,o);for(let[c,l]of a.entries())e!=null&&this.messageSent(e,oe.parse(c),l)}catch(c){this._log.error(c)}e!=null&&this._requestQueue.tasksDone(e,t),this._scheduleProcessTasks()}wantlistForPeer(e){let t=e.toString(),n=this.ledgerMap.get(t);return n!=null?n.wantlist.sortedEntries():new Map}ledgerForPeer(e){let t=e.toString(),n=this.ledgerMap.get(t);if(n!=null)return{peer:n.partner,value:n.debtRatio(),sent:n.accounting.bytesSent,recv:n.accounting.bytesRecv,exchanged:n.exchangeCount}}peers(){return Array.from(this.ledgerMap.values()).map(e=>e.partner)}receivedBlocks(e){if(e.length!==0){for(let t of this.ledgerMap.values())for(let{cid:n,block:o}of e){let s=t.wantlistContains(n);if(s==null)continue;let i=o.length,a=this._sendAsBlock(s.wantType,i),c=i;a||(c=Dt.blockPresenceSize(s.cid)),this._requestQueue.pushTasks(t.partner,[{topic:s.cid.toString(ce),priority:s.priority,size:c,data:{blockSize:i,isWantBlock:a,haveBlock:!0,sendDontHave:!1}}])}this._scheduleProcessTasks()}}async messageReceived(e,t){let n=this._findOrCreate(e);if(t.empty)return;if(t.full&&(n.wantlist=new no),this._updateBlockAccounting(t.blocks,n),t.wantlist.size===0){this._scheduleProcessTasks();return}let o=[],s=[];t.wantlist.forEach(i=>{i.cancel?(n.cancelWant(i.cid),o.push(i.cid)):(n.wants(i.cid,i.priority,i.wantType),s.push(i))}),this._cancelWants(e,o),await this._addWants(e,s),this._scheduleProcessTasks()}_cancelWants(e,t){for(let n of t)this._requestQueue.remove(n.toString(ce),e)}async _addWants(e,t){let n=await this._getBlockSizes(t.map(s=>s.cid)),o=[];for(let s of t){let i=s.cid.toString(ce),a=n.get(i);if(a==null)s.sendDontHave&&o.push({topic:i,priority:s.priority,size:Dt.blockPresenceSize(s.cid),data:{isWantBlock:s.wantType===c8.Block,blockSize:0,haveBlock:!1,sendDontHave:s.sendDontHave}});else{let c=this._sendAsBlock(s.wantType,a),l=a;c||(l=Dt.blockPresenceSize(s.cid)),o.push({topic:i,priority:s.priority,size:l,data:{isWantBlock:c,blockSize:a,haveBlock:!0,sendDontHave:s.sendDontHave}})}this._requestQueue.pushTasks(e,o)}}_sendAsBlock(e,t){return e===c8.Block||t<=this._opts.maxSizeReplaceHasWithBlock}async _getBlockSizes(e){let t=await this._getBlocks(e);return new Map([...t].map(([n,o])=>[n,o.length]))}async _getBlocks(e){let t=new Map;return await Promise.all(e.map(async n=>{try{let o=await this.blockstore.get(n);t.set(n.toString(ce),o)}catch(o){o.code!=="ERR_NOT_FOUND"&&this._log.error("failed to query blockstore for %s: %s",n,o)}})),t}_updateBlockAccounting(e,t){for(let n of e.values())this._log("got block (%s bytes)",n.length),t.receivedBytes(n.length)}messageSent(e,t,n){let o=this._findOrCreate(e);o.sentBytes(n.length),o.wantlist.remove(t)}numBytesSentTo(e){return this._findOrCreate(e).accounting.bytesSent}numBytesReceivedFrom(e){return this._findOrCreate(e).accounting.bytesRecv}peerDisconnected(e){this.ledgerMap.delete(e.toString())}_findOrCreate(e){let t=e.toString(),n=this.ledgerMap.get(t);if(n!=null)return n;let o=new Fc(e);return this.ledgerMap.set(t,o),this._stats!=null&&this._stats.push(t,"peerCount",1),o}start(){this._running=!0}stop(){this._running=!1}};function d_(r){return r[Symbol.asyncIterator]!=null}function f_(r){if(d_(r))return(async()=>{for await(let e of r);})();for(let e of r);}var Mt=f_;function _e(r,e){if(globalThis.Buffer!=null)return tn(globalThis.Buffer.concat(r,e));e==null&&(e=r.reduce((o,s)=>o+s.length,0));let t=qe(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return tn(t)}var u8=Symbol.for("@achingbrain/uint8arraylist");function l8(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let o=t+n.byteLength;if(e<o)return{buf:n,index:e-t};t=o}throw new RangeError("index is out of bounds")}function Hc(r){return!!r?.[u8]}var de=class r{bufs;length;[u8]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(Hc(n))t+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(Hc(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=l8(this.bufs,e);return t.buf[t.index]}set(e,t){let n=l8(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(Hc(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:o}=this._subList(e,t);return _e(n,o)}subarray(e,t){let{bufs:n,length:o}=this._subList(e,t);return n.length===1?n[0]:_e(n,o)}sublist(e,t){let{bufs:n,length:o}=this._subList(e,t),s=new r;return s.length=o,s.bufs=[...n],s}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:this.bufs,length:this.length};let n=[],o=0;for(let s=0;s<this.bufs.length;s++){let i=this.bufs[s],a=o,c=a+i.byteLength;if(o=c,e>=c)continue;let l=e>=a&&e<c,d=t>a&&t<=c;if(l&&d){if(e===a&&t===c){n.push(i);break}let u=e-a;n.push(i.subarray(u,u+(t-e)));break}if(l){if(e===0){n.push(i);continue}n.push(i.subarray(e-a));continue}if(d){if(t===c){n.push(i);break}n.push(i.subarray(0,t-a));break}n.push(i)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!Hc(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let s=256,i=new Int32Array(s);for(let u=0;u<s;u++)i[u]=-1;for(let u=0;u<o;u++)i[n[u]]=u;let a=i,c=this.byteLength-n.byteLength,l=n.byteLength-1,d;for(let u=t;u<=c;u+=d){d=0;for(let f=l;f>=0;f--){let m=this.get(u+f);if(n[f]!==m){d=Math.max(1,f-a[m]);break}}if(d===0)return u}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=qe(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let o=Ze(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,t,n),this.write(o,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let o=Ze(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,t,n),this.write(o,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let o=Ze(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,t,n),this.write(o,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=qe(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let o=Ze(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,t,n),this.write(o,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let o=Ze(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,t,n),this.write(o,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let o=Ze(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,t,n),this.write(o,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let o=Ze(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,t,n),this.write(o,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let o=Ze(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,t,n),this.write(o,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!j(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((o,s)=>o+s.byteLength,0)),n.length=t,n}};function qc(r){return r[Symbol.asyncIterator]!=null}var Wc=r=>{let e=Fe(r),t=qe(e);return ze(r,t),Wc.bytes=e,t};Wc.bytes=0;function Ut(r,e){e=e??{};let t=e.lengthEncoder??Wc;function*n(o){let s=t(o.byteLength);s instanceof Uint8Array?yield s:yield*s,o instanceof Uint8Array?yield o:yield*o}return qc(r)?async function*(){for await(let o of r)yield*n(o)}():function*(){for(let o of r)yield*n(o)}()}Ut.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??Wc;return new de(t(r.byteLength),r)};var zs=ke(Zo(),1);var p_=8,m_=1024*1024*4,Jo;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(Jo||(Jo={}));var lh=r=>{let e=Yt(r);return lh.bytes=Fe(e),e};lh.bytes=0;function Ft(r,e){let t=new de,n=Jo.LENGTH,o=-1,s=e?.lengthDecoder??lh,i=e?.maxLengthLength??p_,a=e?.maxDataLength??m_;function*c(){for(;t.byteLength>0;){if(n===Jo.LENGTH)try{if(o=s(t),o<0)throw(0,zs.default)(new Error("invalid message length"),"ERR_INVALID_MSG_LENGTH");if(o>a)throw(0,zs.default)(new Error("message length too long"),"ERR_MSG_DATA_TOO_LONG");let l=s.bytes;t.consume(l),e?.onLength!=null&&e.onLength(o),n=Jo.DATA}catch(l){if(l instanceof RangeError){if(t.byteLength>i)throw(0,zs.default)(new Error("message length length too long"),"ERR_MSG_LENGTH_TOO_LONG");break}throw l}if(n===Jo.DATA){if(t.byteLength<o)break;let l=t.sublist(0,o);t.consume(o),e?.onData!=null&&e.onData(l),yield l,n=Jo.LENGTH}}}return qc(r)?async function*(){for await(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw(0,zs.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}():function*(){for(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw(0,zs.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}()}Ft.fromReader=(r,e)=>{let t=1,n=async function*(){for(;;)try{let{done:s,value:i}=await r.next(t);if(s===!0)return;i!=null&&(yield i)}catch(s){if(s.code==="ERR_UNDER_READ")return{done:!0,value:null};throw s}finally{t=1}}();return Ft(n,{...e??{},onLength:s=>{t=s}})};function g_(r){return r[Symbol.asyncIterator]!=null}function y_(r,e){if(g_(r))return async function*(){for await(let a of r)yield e(a)}();let t=Ms(r),{value:n,done:o}=t.next();if(o===!0)return function*(){}();let s=e(n);if(typeof s.then=="function")return async function*(){yield await s;for await(let a of t)yield e(a)}();let i=e;return function*(){yield s;for(let a of t)yield i(a)}()}var Cr=y_;function se(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var Gc=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||e-1&e)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},Gs=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new Gc(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){let t=this.head;this.head=t.next=new Gc(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){let t=this.tail.next;this.tail.next=null,this.tail=t,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}};var uh=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function nt(r={}){return w_(t=>{let n=t.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function w_(r,e){e=e??{};let t=e.onEnd,n=new Gs,o,s,i,a=se(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((y,w)=>{s=E=>{s=null,n.push(E);try{y(r(n))}catch(b){w(b)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=se()})}},l=y=>s!=null?s(y):(n.push(y),o),d=y=>(n=new Gs,s!=null?s({error:y}):(n.push({error:y}),o)),u=y=>{if(i)return o;if(e?.objectMode!==!0&&y?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:y})},f=y=>i?o:(i=!0,y!=null?d(y):l({done:!0})),m=()=>(n=new Gs,f(),{done:!0}),h=y=>(f(y),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:m,throw:h,push:u,end:f,get readableLength(){return n.size},onEmpty:async y=>{let w=y?.signal;if(w?.throwIfAborted(),n.isEmpty())return;let E,b;w!=null&&(E=new Promise((S,R)=>{b=()=>{R(new uh)},w.addEventListener("abort",b)}));try{await Promise.race([a.promise,E])}finally{b!=null&&w!=null&&w?.removeEventListener("abort",b)}}},t==null)return o;let p=o;return o={[Symbol.asyncIterator](){return this},next(){return p.next()},throw(y){return p.throw(y),t!=null&&(t(y),t=void 0),{done:!0}},return(){return p.return(),t!=null&&(t(),t=void 0),{done:!0}},push:u,end(y){return p.end(y),t!=null&&(t(y),t=void 0),o},get readableLength(){return p.readableLength},onEmpty:y=>p.onEmpty(y)},o}function b_(r){return r[Symbol.asyncIterator]!=null}function E_(...r){let e=[];for(let t of r)b_(t)||e.push(t);return e.length===r.length?function*(){for(let t of e)yield*t}():async function*(){let t=nt({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(r.map(async n=>{for await(let o of n)t.push(o)})),t.end()}catch(n){t.end(n)}}),yield*t}()}var Tt=E_;function Ge(r,...e){if(r==null)throw new Error("Empty pipeline");if(dh(r)){let n=r;r=()=>n.source}else if(p8(r)||h8(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&dh(t[t.length-1])&&(t[t.length-1]=t[t.length-1].sink),t.length>2)for(let n=1;n<t.length-1;n++)dh(t[n])&&(t[n]=v_(t[n]));return x_(...t)}var x_=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},h8=r=>r?.[Symbol.asyncIterator]!=null,p8=r=>r?.[Symbol.iterator]!=null,dh=r=>r==null?!1:r.sink!=null&&r.source!=null,v_=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=nt({objectMode:!0});t.then(()=>{n.end()},i=>{n.end(i)});let o,s=r.source;if(h8(s))o=async function*(){yield*s,n.end()};else if(p8(s))o=function*(){yield*s,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return Tt(n,o())}return r.source};function __(r){return r[Symbol.asyncIterator]!=null}function S_(r,e){return __(r)?async function*(){let t=0;if(!(e<1)){for await(let n of r)if(yield n,t++,t===e)return}}():function*(){let t=0;if(!(e<1)){for(let n of r)if(yield n,t++,t===e)return}}()}var oo=S_;var Ee=class extends Event{constructor(e,t){super(e),this.detail=t}};var A8=ke(x8(),1);var v8=Math.pow(2,31)-1,_8=1e3,S8=1;var ph="/ipfs/bitswap/1.0.0",mh="/ipfs/bitswap/1.1.0",gh="/ipfs/bitswap/1.2.0",I_=1024,D_=1024,T_=3e4,Xc=class{_log;_libp2p;_bitswap;_protocols;_stats;_running;_hashLoader;_maxInboundStreams;_maxOutboundStreams;_incomingStreamTimeout;_registrarIds;constructor(e,t,n,o={}){this._log=cr(e.peerId,"network"),this._libp2p=e,this._bitswap=t,this._protocols=[ph],o.b100Only!==!0&&(this._protocols.unshift(mh),this._protocols.unshift(gh)),this._stats=n,this._running=!1,this._onPeerConnect=this._onPeerConnect.bind(this),this._onPeerDisconnect=this._onPeerDisconnect.bind(this),this._onConnection=this._onConnection.bind(this),this._hashLoader=o.hashLoader??{async getHasher(){throw new Error("Not implemented")}},this._maxInboundStreams=o.maxInboundStreams??I_,this._maxOutboundStreams=o.maxOutboundStreams??D_,this._incomingStreamTimeout=o.incomingStreamTimeout??T_}async start(){this._running=!0,await this._libp2p.handle(this._protocols,this._onConnection,{maxInboundStreams:this._maxInboundStreams,maxOutboundStreams:this._maxOutboundStreams});let e={onConnect:this._onPeerConnect,onDisconnect:this._onPeerDisconnect};this._registrarIds=[];for(let t of this._protocols)this._registrarIds.push(await this._libp2p.register(t,e));this._libp2p.getConnections().forEach(t=>{this._onPeerConnect(t.remotePeer)})}async stop(){if(this._running=!1,await this._libp2p.unhandle(this._protocols),this._registrarIds!=null){for(let e of this._registrarIds)this._libp2p.unregister(e);this._registrarIds=[]}}_onConnection(e){if(!this._running)return;let{stream:t,connection:n}=e,o=new A8.TimeoutController(this._incomingStreamTimeout);Promise.resolve().then(async()=>{this._log("incoming new bitswap %s connection from %p",t.protocol,n.remotePeer);let s=()=>{t.abort(new g("Incoming Bitswap stream timed out","ERR_TIMEOUT"))},i=AbortSignal.timeout(this._incomingStreamTimeout);i.addEventListener("abort",s),await Ge(t,a=>Ft(a),async a=>{for await(let c of a){try{let l=await Dt.deserialize(c.subarray(),this._hashLoader);await this._bitswap._receiveMessage(n.remotePeer,l)}catch(l){this._bitswap._receiveError(l);break}i.removeEventListener("abort",s),i=AbortSignal.timeout(this._incomingStreamTimeout),i.addEventListener("abort",s)}}),await t.close({signal:i})}).catch(s=>{this._log(s),t.abort(s)}).finally(()=>{o.clear()})}_onPeerConnect(e){this._bitswap._onPeerConnected(e)}_onPeerDisconnect(e){this._bitswap._onPeerDisconnected(e)}findProviders(e,t={}){return t.onProgress?.(new Ee("bitswap:network:find-providers",e)),this._libp2p.contentRouting.findProviders(e,t)}async findAndConnect(e,t){await Mt(oo(Cr(this.findProviders(e,t),async n=>this.connectTo(n.id,t).catch(o=>{this._log.error(o)})),3)).catch(n=>{this._log.error(n)})}async provide(e,t={}){t.onProgress?.(new Ee("bitswap:network:provide",e)),await this._libp2p.contentRouting.provide(e,t)}async sendMessage(e,t,n={}){if(!this._running)throw new Error("network isn't running");let o=e.toString();this._log("sendMessage to %s",o,t),n.onProgress?.(new Ee("bitswap:network:send-wantlist",e)),await this._writeMessage(e,t,n),this._updateSentStats(e,t.blocks)}async connectTo(e,t={}){if(!this._running)throw new Error("network isn't running");return t.onProgress?.(new Ee("bitswap:network:dial",e)),this._libp2p.dial(e,t)}_updateSentStats(e,t){let n=e.toString();if(this._stats!=null){for(let o of t.values())this._stats.push(n,"dataSent",o.length);this._stats.push(n,"blocksSent",t.size)}}async _writeMessage(e,t,n={}){let o=await this._libp2p.dialProtocol(e,[gh,mh,ph]);try{let s;switch(o.protocol){case ph:s=t.serializeToBitswap100();break;case mh:case gh:s=t.serializeToBitswap110();break;default:throw new Error(`Unknown protocol: ${o.protocol}`)}await Ge([s],i=>Ut(i),o),await o.close()}catch(s){n.onProgress?.(new Ee("bitswap:network:send-wantlist:error",{peer:e,error:s})),this._log(s),o.abort(s)}}};var F8=ke(Zc(),1);function B(r,e="utf8"){let t=Bc[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(r.buffer,r.byteOffset,r.byteLength).toString("utf8"):t.encoder.encode(r).substring(1)}var M8=r=>`unwant:${B(r.multihash.bytes,"base64")}`,U8=r=>`block:${B(r.multihash.bytes,"base64")}`,Jc=class extends F8.EventEmitter{_log;constructor(e){super(),this.setMaxListeners(_8),this._log=cr(e,"notif")}hasBlock(e,t){let n=U8(e);this._log(n),this.emit(n,t)}async wantBlock(e,t={}){if(e==null)throw new Error("Not a valid cid");let n=U8(e),o=M8(e);return this._log(`wantBlock:${e}`),new Promise((s,i)=>{let a=()=>{this.removeListener(n,c),t.onProgress?.(new Ee("bitswap:want-block:unwant",e)),i(new Error(`Block for ${e} unwanted`))},c=l=>{this.removeListener(o,a),t.onProgress?.(new Ee("bitswap:want-block:block",e)),s(l)};this.once(o,a),this.once(n,c),t.signal?.addEventListener("abort",()=>{this.removeListener(n,c),this.removeListener(o,a),i(new Error(`Want for ${e} aborted`))})})}unwantBlock(e){let t=M8(e);this._log(t),this.emit(t)}};var W8=ke(Zc(),1);var H8=ke(Zc(),1),wh=ke($8(),1),da=class extends H8.EventEmitter{_options;_queue;_stats;_frequencyLastTime;_frequencyAccumulators;_movingAverages;_enabled;_timeout;constructor(e,t){super(),this._options=t,this._queue=[],this._stats={},this._frequencyLastTime=Date.now(),this._frequencyAccumulators={},this._movingAverages={},this._update=this._update.bind(this),e.forEach(n=>{this._stats[n]=BigInt(0),this._movingAverages[n]={},this._options.movingAverageIntervals.forEach(o=>{(this._movingAverages[n][o]=(0,wh.default)(o)).push(this._frequencyLastTime,0)})}),this._enabled=this._options.enabled}enable(){this._enabled=!0}disable(){this._enabled=!1}stop(){this._timeout!=null&&clearTimeout(this._timeout)}get snapshot(){return Object.assign({},this._stats)}get movingAverages(){return Object.assign({},this._movingAverages)}push(e,t){this._enabled&&(this._queue.push([e,t,Date.now()]),this._resetComputeTimeout())}_resetComputeTimeout(){this._timeout!=null&&clearTimeout(this._timeout),this._timeout=setTimeout(this._update,this._nextTimeout())}_nextTimeout(){let e=this._queue.length/this._options.computeThrottleMaxQueueSize;return Math.max(this._options.computeThrottleTimeout*(1-e),0)}_update(){if(this._timeout=void 0,this._queue.length>0){let e;for(;this._queue.length>0;){let t=e=this._queue.shift();t!=null&&this._applyOp(t)}e!=null&&this._updateFrequency(e[2]),this.emit("update",this._stats)}}_updateFrequency(e){let t=e-this._frequencyLastTime;t>0&&Object.keys(this._stats).forEach(n=>{this._updateFrequencyFor(n,t,e)}),this._frequencyLastTime=e}_updateFrequencyFor(e,t,n){let o=this._frequencyAccumulators[e]??0;this._frequencyAccumulators[e]=0;let s=o/t*1e3,i=this._movingAverages[e];i==null&&(i=this._movingAverages[e]={}),this._options.movingAverageIntervals.forEach(a=>{let c=i[a];c==null&&(c=i[a]=(0,wh.default)(a)),c.push(n,s)})}_applyOp(e){let t=e[0],n=e[1];if(typeof n!="number")throw new Error(`invalid increment number: ${n}`);Object.prototype.hasOwnProperty.call(this._stats,t)||(this._stats[t]=BigInt(0)),this._stats[t]=BigInt(this._stats[t])+BigInt(n),this._frequencyAccumulators[t]==null&&(this._frequencyAccumulators[t]=0),this._frequencyAccumulators[t]+=n}};var q8={enabled:!1,computeThrottleTimeout:1e3,computeThrottleMaxQueueSize:1e3,movingAverageIntervals:[60*1e3,5*60*1e3,15*60*1e3]},el=class extends W8.EventEmitter{_initialCounters;_options;_enabled;_global;_peers;constructor(e,t=[],n=q8){super();let o=Object.assign({},q8,n);if(typeof o.computeThrottleTimeout!="number")throw new Error("need computeThrottleTimeout");if(typeof o.computeThrottleMaxQueueSize!="number")throw new Error("need computeThrottleMaxQueueSize");this._initialCounters=t,this._options=o,this._enabled=this._options.enabled,this._global=new da(t,o),this._global.on("update",s=>this.emit("update",s)),this._peers=jr({name:"ipfs_bitswap_stats_peers",metrics:e.metrics})}enable(){this._enabled=!0,this._options.enabled=!0,this._global.enable()}disable(){this._enabled=!1,this._options.enabled=!1,this._global.disable()}stop(){this._enabled=!1,this._global.stop();for(let e of this._peers)e[1].stop()}get snapshot(){return this._global.snapshot}get movingAverages(){return this._global.movingAverages}forPeer(e){let t=e.toString();return this._peers.get(t)}push(e,t,n){if(this._enabled&&(this._global.push(t,n),e!=null)){let o=this._peers.get(e);o==null&&(o=new da(this._initialCounters,this._options),this._peers.set(e,o)),o.push(t,n)}}disconnected(e){let t=e.toString(),n=this._peers.get(t);n!=null&&(n.stop(),this._peers.delete(t))}};var z8=M_;function M_(r,e,t){var n=null,o=null,s=function(){n&&(clearTimeout(n),o=null,n=null)},i=function(){var c=o;s(),c&&c()},a=function(){if(!e)return r.apply(this,arguments);var c=this,l=arguments,d=t&&!n;if(s(),o=function(){r.apply(c,l)},n=setTimeout(function(){if(n=null,!d){var u=o;return o=null,u()}},e),d)return o()};return a.cancel=s,a.flush=i,a}var tl=class{peerId;refcnt;network;_entries;_log;constructor(e,t,n){this.peerId=t,this.network=n,this.refcnt=1,this._entries=[],this._log=cr(e,"msgqueue"),this.sendEntries=z8(this.sendEntries.bind(this),S8)}addMessage(e,t={}){e.empty||this.send(e,t)}addEntries(e,t={}){this._entries=this._entries.concat(e),this.sendEntries(t)}sendEntries(e={}){if(this._entries.length===0)return;let t=new Dt(!1);this._entries.forEach(n=>{n.cancel===!0?t.cancel(n.cid):t.addEntry(n.cid,n.priority)}),this._entries=[],this.addMessage(t,e)}async send(e,t={}){try{await this.network.connectTo(this.peerId,t)}catch(n){this._log.error("cant connect to peer %p: %s",this.peerId,n.message);return}this._log("sending message to peer %p",this.peerId),this.network.sendMessage(this.peerId,e,t).catch(n=>{this._log.error("send error",n)})}};var rl=class{peers;wantlist;network;_peerId;_log;constructor(e,t,n,o){this.peers=jr({name:"ipfs_bitswap_want_manager_peers",metrics:o.metrics}),this.wantlist=new no(n,o),this.network=t,this._peerId=e,this._log=cr(e,"want")}_addEntries(e,t,n,o={}){let s=e.map((i,a)=>new Dt.Entry(i,v8-a,Dt.WantType.Block,t));s.forEach(i=>{i.cancel?n===!0?this.wantlist.removeForce(i.cid.toString(ce)):this.wantlist.remove(i.cid):(this._log("adding to wantlist"),this.wantlist.add(i.cid,i.priority))});for(let i of this.peers.values())i.addEntries(s,o)}_startPeerHandler(e){let t=this.peers.get(e.toString());if(t!=null){t.refcnt++;return}t=new tl(this._peerId,e,this.network);let n=new Dt(!0);for(let o of this.wantlist.entries())n.addEntry(o[1].cid,o[1].priority);return t.addMessage(n),this.peers.set(e.toString(),t),t}_stopPeerHandler(e){let t=this.peers.get(e.toString());t!=null&&(t.refcnt--,!(t.refcnt>0)&&this.peers.delete(e.toString()))}wantBlocks(e,t={}){this._addEntries(e,!1,!1,t),t.signal?.addEventListener("abort",()=>{this.cancelWants(e)})}unwantBlocks(e){this._log("unwant blocks: %s",e.length),this._addEntries(e,!0,!0)}cancelWants(e){this._log("cancel wants: %s",e.length),this._addEntries(e,!0)}connectedPeers(){return Array.from(this.peers.keys())}connected(e){this._startPeerHandler(e)}disconnected(e){this._stopPeerHandler(e)}start(){}stop(){this.peers.forEach(e=>{this.disconnected(e.peerId)})}};var U_={async getHasher(){throw new Error("Not implemented")}},F_={maxInboundStreams:1024,maxOutboundStreams:1024,incomingStreamTimeout:3e4,hashLoader:U_,statsEnabled:!1,statsComputeThrottleTimeout:1e3,statsComputeThrottleMaxQueueSize:1e3},V_=["blocksReceived","dataReceived","dupBlksReceived","dupDataReceived","blocksSent","dataSent","providesBufferLength","wantListLength","peerCount"],nl=class{_libp2p;_log;stats;network;blockstore;engine;wm;notifications;started;constructor(e,t,n={}){this._libp2p=e,this._log=cr(this.peerId),n=Object.assign({},F_,n),this.stats=new el(e,V_,{enabled:n.statsEnabled,computeThrottleTimeout:n.statsComputeThrottleTimeout,computeThrottleMaxQueueSize:n.statsComputeThrottleMaxQueueSize}),this.network=new Xc(e,this,this.stats,{hashLoader:n.hashLoader,maxInboundStreams:n.maxInboundStreams,maxOutboundStreams:n.maxOutboundStreams,incomingStreamTimeout:n.incomingStreamTimeout}),this.blockstore=t,this.engine=new $c(this.peerId,t,this.network,this.stats,e),this.wm=new rl(this.peerId,this.network,this.stats,e),this.notifications=new Jc(this.peerId),this.started=!1}isStarted(){return this.started}get peerId(){return this._libp2p.peerId}async _receiveMessage(e,t){try{await this.engine.messageReceived(e,t)}catch{this._log("failed to receive message",t)}if(t.blocks.size===0)return;let n=[];for(let[o,s]of t.blocks.entries()){let i=oe.parse(o);n.push({wasWanted:this.wm.wantlist.contains(i),cid:i,data:s})}this.wm.cancelWants(n.filter(({wasWanted:o})=>o).map(({cid:o})=>o)),await Promise.all(n.map(async({cid:o,wasWanted:s,data:i})=>{await this._handleReceivedBlock(e,o,i,s)}))}async _handleReceivedBlock(e,t,n,o){this._log("received block");let s=await this.blockstore.has(t);this._updateReceiveCounters(e.toString(),t,n,s),o&&await this.put(t,n)}_updateReceiveCounters(e,t,n,o){this.stats.push(e,"blocksReceived",1),this.stats.push(e,"dataReceived",n.length),o&&(this.stats.push(e,"dupBlksReceived",1),this.stats.push(e,"dupDataReceived",n.length))}_receiveError(e){this._log.error("ReceiveError",e)}_onPeerConnected(e){this.wm.connected(e)}_onPeerDisconnected(e){this.wm.disconnected(e),this.engine.peerDisconnected(e),this.stats.disconnected(e)}enableStats(){this.stats.enable()}disableStats(){this.stats.disable()}wantlistForPeer(e,t){return this.engine.wantlistForPeer(e)}ledgerForPeer(e){return this.engine.ledgerForPeer(e)}async want(e,t={}){let n=async(c,l)=>(this.wm.wantBlocks([c],l),this.notifications.wantBlock(c,l)),o=!1,s=async(c,l)=>{try{return await this.blockstore.get(c,l)}catch(d){if(d.code!=="ERR_NOT_FOUND")throw d;return o||(o=!0,this.network.findAndConnect(c,l).catch(u=>{this._log.error(u)})),await n(c,l)}},i=new AbortController,a=lt([i.signal,t.signal]);try{return await Promise.race([this.notifications.wantBlock(e,{...t,signal:a}),s(e,{...t,signal:a})])}finally{i.abort(),a.clear()}}unwant(e){let t=Array.isArray(e)?e:[e];this.wm.unwantBlocks(t),t.forEach(n=>{this.notifications.unwantBlock(n)})}cancelWants(e){this.wm.cancelWants(Array.isArray(e)?e:[e])}async put(e,t,n){await this.blockstore.put(e,t),this.notify(e,t)}async*putMany(e,t){yield*this.blockstore.putMany(qo(e,({cid:n,block:o})=>{this.notify(n,o)}),t)}notify(e,t,n={}){this.notifications.hasBlock(e,t),this.engine.receivedBlocks([{cid:e,block:t}]),this.network.provide(e,n).catch(o=>{this._log.error("Failed to provide: %s",o.message)})}getWantlist(){return this.wm.wantlist.entries()}get peers(){return this.engine.peers()}async start(){this.wm.start(),await this.network.start(),this.engine.start(),this.started=!0}async stop(){this.stats.stop(),this.wm.stop(),await this.network.stop(),this.engine.stop(),this.started=!1}};var G8=(r,e,t={})=>new nl(r,e,t);var bh=class{bitswap;started;constructor(e,t={}){let{libp2p:n,blockstore:o,hashers:s}=e;this.bitswap=G8(n,o,{hashLoader:{getHasher:async i=>{let a;if(typeof i=="string"?a=Object.values(s).find(c=>c.name===i):a=s[i],a!=null)return a;throw new Error(`Could not load hasher for code/name "${i}"`)}},...t}),this.started=!1}isStarted(){return this.started}async start(){await this.bitswap.start(),this.started=!0}async stop(){await this.bitswap.stop(),this.started=!1}announce(e,t,n){this.bitswap.notify(e,t,n)}async retrieve(e,{validateFn:t,...n}={}){return this.bitswap.want(e,n)}};function Eh(r={}){return e=>new bh(e,r)}var ol=class{url;#e=0;#t=0;#r=0;#i=0;constructor(e){this.url=e instanceof URL?e:new URL(e)}async getRawBlock(e,t){let n=this.url;if(n.pathname=`/ipfs/${e.toString()}`,n.search="?format=raw",t?.aborted===!0)throw new Error(`Signal to fetch raw block for CID ${e} from gateway ${this.url} was aborted prior to fetch`);try{this.#e++;let o=await fetch(n.toString(),{signal:t,headers:{Accept:"application/vnd.ipld.raw"},cache:"force-cache"});if(!o.ok)throw this.#t++,new Error(`unable to fetch raw block for CID ${e} from gateway ${this.url}`);return this.#i++,new Uint8Array(await o.arrayBuffer())}catch{throw t?.aborted===!0?new Error(`fetching raw block for CID ${e} from gateway ${this.url} was aborted`):(this.#t++,new Error(`unable to fetch raw block for CID ${e}`))}}reliability(){return this.#e===0?1:this.#r>0?-1/0:this.#i/(this.#e+this.#t*3)}incrementInvalidBlocks(){this.#r++}};var sl=class{gateways;log;constructor(e,t={}){this.log=e.logger.forComponent("helia:trustless-gateway-block-broker"),this.gateways=(t.gateways??Y8).map(n=>new ol(n))}async retrieve(e,t={}){let n=this.gateways.sort((s,i)=>i.reliability()-s.reliability()),o=[];for(let s of n){this.log("getting block for %c from %s",e,s.url);try{let i=await s.getRawBlock(e,t.signal);this.log.trace("got block for %c from %s",e,s.url);try{await t.validateFn?.(i)}catch(a){throw this.log.error("failed to validate block for %c from %s",e,s.url,a),s.incrementInvalidBlocks(),new Error(`unable to validate block for CID ${e} from gateway ${s.url}`)}return i}catch(i){if(this.log.error("failed to get block for %c from %s",e,s.url,i),i instanceof Error?o.push(i):o.push(new Error(`unable to fetch raw block for CID ${e} from gateway ${s.url}`)),t.signal?.aborted===!0){this.log.trace("request aborted while fetching raw block for CID %c from gateway %s",e,s.url);break}}}throw new AggregateError(o,`unable to fetch raw block for CID ${e} from any gateway`)}};var Y8=["https://trustless-gateway.link","https://cloudflare-ipfs.com","https://4everland.io"];function xh(r={}){return e=>new sl(e,r)}var K_=Symbol.for("nodejs.util.inspect.custom"),X8=Object.values(ur).map(r=>r.decoder).reduce((r,e)=>r.or(e),ur.identity.decoder),Q8=114,vh=36,_h=37,fa=class{type;multihash;privateKey;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,this.privateKey=e.privateKey,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[vf]=!0;toString(){return this.string==null&&(this.string=ce.encode(this.multihash.bytes).slice(1)),this.string}toCID(){return oe.createV1(Q8,this.multihash)}toBytes(){return this.multihash.bytes}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return j(this.multihash.bytes,e);if(typeof e=="string")return ge(e).equals(this);if(e?.multihash?.bytes!=null)return j(this.multihash.bytes,e.multihash.bytes);throw new Error("not valid Id")}[K_](){return`PeerId(${this.toString()})`}},es=class extends fa{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},ts=class extends fa{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.multihash.digest}},rs=class extends fa{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.multihash.digest}};function j8(r){if(r.type==="RSA")return new es(r);if(r.type==="Ed25519")return new ts(r);if(r.type==="secp256k1")return new rs(r);throw new g("Not a PeerId","ERR_INVALID_PARAMETERS")}function ge(r,e){if(e=e??X8,r.charAt(0)==="1"||r.charAt(0)==="Q"){let t=Dr(ce.decode(`z${r}`));return r.startsWith("12D")?new ts({multihash:t}):r.startsWith("16U")?new rs({multihash:t}):new es({multihash:t})}return Ye(X8.decode(r))}function Ye(r){try{let e=Dr(r);if(e.code===lr.code){if(e.digest.length===vh)return new ts({multihash:e});if(e.digest.length===_h)return new rs({multihash:e})}if(e.code===Re.code)return new es({multihash:e})}catch{return $_(oe.decode(r))}throw new Error("Supplied PeerID CID is invalid")}function $_(r){if(r==null||r.multihash==null||r.version==null||r.version===1&&r.code!==Q8)throw new Error("Supplied PeerID CID is invalid");let e=r.multihash;if(e.code===Re.code)return new es({multihash:r.multihash});if(e.code===lr.code){if(e.digest.length===vh)return new ts({multihash:r.multihash});if(e.digest.length===_h)return new rs({multihash:r.multihash})}throw new Error("Supplied PeerID CID is invalid")}async function ut(r,e){return r.length===vh?new ts({multihash:Ir(lr.code,r),privateKey:e}):r.length===_h?new rs({multihash:Ir(lr.code,r),privateKey:e}):new es({multihash:await Re.digest(r),publicKey:r,privateKey:e})}var il=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let t=this.index,n=e();return n===void 0&&(this.index=t),n}parseWith(e){let t=e();if(this.index===this.input.length)return t}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let t=this.readChar();if(t===e)return t})}readSeparator(e,t,n){return this.readAtomically(()=>{if(!(t>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,t,n,o){return this.readAtomically(()=>{let s=0,i=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",l=2**(8*o)-1;for(;;){let d=this.readAtomically(()=>{let u=this.readChar();if(u===void 0)return;let f=Number.parseInt(u,e);if(!Number.isNaN(f))return f});if(d===void 0)break;if(s*=e,s+=d,s>l||(i+=1,t!==void 0&&i>t))return}if(i!==0)return!n&&c&&i>1?void 0:s})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let t=0;t<e.length;t++){let n=this.readSeparator(".",t,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[t]=n}return e})}readIPv6Addr(){let e=t=>{for(let n=0;n<t.length/2;n++){let o=n*2;if(n<t.length-3){let i=this.readSeparator(":",n,()=>this.readIPv4Addr());if(i!==void 0)return t[o]=i[0],t[o+1]=i[1],t[o+2]=i[2],t[o+3]=i[3],[o+4,!0]}let s=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(s===void 0)return[o,!1];t[o]=s>>8,t[o+1]=s&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,o]=e(t);if(n===16)return t;if(o||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let s=new Uint8Array(14),i=16-(n+2),[a]=e(s.subarray(0,i));return t.set(s.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var Z8=45,q_=15,Xs=new il;function Sh(r){if(!(r.length>q_))return Xs.new(r).parseWith(()=>Xs.readIPv4Addr())}function Rh(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Z8))return Xs.new(r).parseWith(()=>Xs.readIPv6Addr())}function al(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Z8))return Xs.new(r).parseWith(()=>Xs.readIPAddr())}var hU=parseInt("0xFFFF",16),pU=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function Qs(r){return!!Sh(r)}function js(r){return!!Rh(r)}function cl(r){return!!al(r)}var tm=Qs,X_=js,Ah=function(r){let e=0;if(r=r.toString().trim(),tm(r)){let t=new Uint8Array(e+4);return r.split(/\./g).forEach(n=>{t[e++]=parseInt(n,10)&255}),t}if(X_(r)){let t=r.split(":",8),n;for(n=0;n<t.length;n++){let s=tm(t[n]),i;s&&(i=Ah(t[n]),t[n]=B(i.slice(0,2),"base16")),i!=null&&++n<8&&t.splice(n,0,B(i.slice(2,4),"base16"))}if(t[0]==="")for(;t.length<8;)t.unshift("0");else if(t[t.length-1]==="")for(;t.length<8;)t.push("0");else if(t.length<8){for(n=0;n<t.length&&t[n]!=="";n++);let s=[n,1];for(n=9-t.length;n>0;n--)s.push("0");t.splice.apply(t,s)}let o=new Uint8Array(e+16);for(n=0;n<t.length;n++){let s=parseInt(t[n],16);o[e++]=s>>8&255,o[e++]=s&255}return o}throw new Error("invalid ip address")},rm=function(r,e=0,t){e=~~e,t=t??r.length-e;let n=new DataView(r.buffer);if(t===4){let o=[];for(let s=0;s<t;s++)o.push(r[e+s]);return o.join(".")}if(t===16){let o=[];for(let s=0;s<t;s+=2)o.push(n.getUint16(e+s).toString(16));return o.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var Zs={},Ih={},j_=[[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"],[777,-1,"memory"]];j_.forEach(r=>{let e=Z_(...r);Ih[e.code]=e,Zs[e.name]=e});function Z_(r,e,t,n,o){return{code:r,size:e,name:t,resolvable:!!n,path:!!o}}function Z(r){if(typeof r=="number"){if(Ih[r]!=null)return Ih[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(Zs[r]!=null)return Zs[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var jU=Z("ip4"),ZU=Z("ip6"),JU=Z("ipcidr");function Th(r,e){switch(Z(r).code){case 4:case 41:return eS(e);case 42:return sm(e);case 6:case 273:case 33:case 132:return am(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return sm(e);case 421:return oS(e);case 444:return im(e);case 445:return im(e);case 466:return nS(e);default:return B(e,"base16")}}function kh(r,e){switch(Z(r).code){case 4:return nm(e);case 41:return nm(e);case 42:return om(e);case 6:case 273:case 33:case 132:return Ch(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return om(e);case 421:return tS(e);case 444:return sS(e);case 445:return iS(e);case 466:return rS(e);default:return L(e,"base16")}}var Dh=Object.values(ur).map(r=>r.decoder),J_=function(){let r=Dh[0].or(Dh[1]);return Dh.slice(2).forEach(e=>r=r.or(e)),r}();function nm(r){if(!cl(r))throw new Error("invalid ip address");return Ah(r)}function eS(r){let e=rm(r,0,r.length);if(e==null)throw new Error("ipBuff is required");if(!cl(e))throw new Error("invalid ip address");return e}function Ch(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r),new Uint8Array(e)}function am(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function om(r){let e=L(r),t=Uint8Array.from(ze(e.length));return _e([t,e],t.length+e.length)}function sm(r){let e=Yt(r);if(r=r.slice(Fe(e)),r.length!==e)throw new Error("inconsistent lengths");return B(r)}function tS(r){let e;r[0]==="Q"||r[0]==="1"?e=Dr(ce.decode(`z${r}`)).bytes:e=oe.parse(r).multihash.bytes;let t=Uint8Array.from(ze(e.length));return _e([t,e],t.length+e.length)}function rS(r){let e=J_.decode(r),t=Uint8Array.from(ze(e.length));return _e([t,e],t.length+e.length)}function nS(r){let e=Yt(r),t=r.slice(Fe(e));if(t.length!==e)throw new Error("inconsistent lengths");return"u"+B(t,"base64url")}function oS(r){let e=Yt(r),t=r.slice(Fe(e));if(t.length!==e)throw new Error("inconsistent lengths");return B(t,"base58btc")}function sS(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==16)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion address.`);let t=it.decode("b"+e[0]),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=Ch(n);return _e([t,o],t.length+o.length)}function iS(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==56)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion3 address.`);let t=it.decode(`b${e[0]}`),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=Ch(n);return _e([t,o],t.length+o.length)}function im(r){let e=r.slice(0,r.length-2),t=r.slice(r.length-2),n=B(e,"base32"),o=am(t);return`${n}:${o}`}function cm(r){r=Nh(r);let e=[],t=[],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=Z(i);if(a.size===0){e.push([a.code]),t.push([a.code]);continue}if(s++,s>=o.length)throw um("invalid address: "+r);if(a.path===!0){n=Nh(o.slice(s).join("/")),e.push([a.code,kh(a.code,n)]),t.push([a.code,n]);break}let c=kh(a.code,o[s]);e.push([a.code,c]),t.push([a.code,Th(a.code,c)])}return{string:lm(t),bytes:Ph(e),tuples:e,stringTuples:t,path:n}}function Oh(r){let e=[],t=[],n=null,o=0;for(;o<r.length;){let s=Yt(r,o),i=Fe(s),a=Z(s),c=aS(a,r.slice(o+i));if(c===0){e.push([s]),t.push([s]),o+=i;continue}let l=r.slice(o+i,o+i+c);if(o+=c+i,o>r.length)throw um("Invalid address Uint8Array: "+B(r,"base16"));e.push([s,l]);let d=Th(s,l);if(t.push([s,d]),a.path===!0){n=d;break}}return{bytes:Uint8Array.from(r),string:lm(t),tuples:e,stringTuples:t,path:n}}function lm(r){let e=[];return r.map(t=>{let n=Z(t[0]);return e.push(n.name),t.length>1&&t[1]!=null&&e.push(t[1]),null}),Nh(e.join("/"))}function Ph(r){return _e(r.map(e=>{let t=Z(e[0]),n=Uint8Array.from(ze(t.code));return e.length>1&&e[1]!=null&&(n=_e([n,e[1]])),n}))}function aS(r,e){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let t=Yt(e instanceof Uint8Array?e:Uint8Array.from(e));return t+Fe(t)}}function Nh(r){return"/"+r.trim().split("/").filter(e=>e).join("/")}function um(r){return new Error("Error parsing address: "+r)}var cS=Symbol.for("nodejs.util.inspect.custom"),Lh=Symbol.for("@multiformats/js-multiaddr/multiaddr"),lS=[Z("dns").code,Z("dns4").code,Z("dns6").code,Z("dnsaddr").code],ll=class r{bytes;#e;#t;#r;#i;[Lh]=!0;constructor(e){e==null&&(e="");let t;if(e instanceof Uint8Array)t=Oh(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);t=cm(e)}else if(so(e))t=Oh(e.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=t.bytes,this.#e=t.string,this.#t=t.tuples,this.#r=t.stringTuples,this.#i=t.path}toString(){return this.#e}toJSON(){return this.toString()}toOptions(){let e,t,n,o,s="",i=Z("tcp"),a=Z("udp"),c=Z("ip4"),l=Z("ip6"),d=Z("dns6"),u=Z("ip6zone");for(let[m,h]of this.stringTuples())m===u.code&&(s=`%${h??""}`),lS.includes(m)&&(t=i.name,o=443,n=`${h??""}${s}`,e=m===d.code?6:4),(m===i.code||m===a.code)&&(t=Z(m).name,o=parseInt(h??"")),(m===c.code||m===l.code)&&(t=Z(m).name,n=`${h??""}${s}`,e=m===l.code?6:4);if(e==null||t==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:e,host:n,transport:t,port:o}}protos(){return this.#t.map(([e])=>Object.assign({},Z(e)))}protoCodes(){return this.#t.map(([e])=>e)}protoNames(){return this.#t.map(([e])=>Z(e).name)}tuples(){return this.#t}stringTuples(){return this.#r}encapsulate(e){return e=new r(e),new r(this.toString()+e.toString())}decapsulate(e){let t=e.toString(),n=this.toString(),o=n.lastIndexOf(t);if(o<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${e.toString()}`);return new r(n.slice(0,o))}decapsulateCode(e){let t=this.tuples();for(let n=t.length-1;n>=0;n--)if(t[n][0]===e)return new r(Ph(t.slice(0,n)));return this}getPeerId(){try{let e=[];this.stringTuples().forEach(([n,o])=>{n===Zs.p2p.code&&e.push([n,o]),n===Zs["p2p-circuit"].code&&(e=[])});let t=e.pop();if(t?.[1]!=null){let n=t[1];return n[0]==="Q"||n[0]==="1"?B(ce.decode(`z${n}`),"base58btc"):B(oe.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#i}equals(e){return j(this.bytes,e.bytes)}async resolve(e){let t=this.protos().find(s=>s.resolvable);if(t==null)return[this];let n=ul.get(t.name);if(n==null)throw new g(`no available resolver for ${t.name}`,"ERR_NO_AVAILABLE_RESOLVER");return(await n(this,e)).map(s=>new r(s))}nodeAddress(){let e=this.toOptions();if(e.transport!=="tcp"&&e.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${e.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:e.family,address:e.host,port:e.port}}isThinWaistAddress(e){let t=(e??this).protos();return!(t.length!==2||t[0].code!==4&&t[0].code!==41||t[1].code!==6&&t[1].code!==273)}[cS](){return`Multiaddr(${this.#e})`}};var ul=new Map;function so(r){return!!r?.[Lh]}function Q(r){return new ll(r)}async function*dl(r,e={}){let t=r.getReader();try{for(;;){let n=await t.read();if(n.done)return;yield n.value}}finally{e.preventCancel!==!0&&await t.cancel(),t.releaseLock()}}var pu={};me(pu,{Ed25519PrivateKey:()=>An,Ed25519PublicKey:()=>cs,MAX_RSA_KEY_SIZE:()=>ds,RsaPrivateKey:()=>wo,RsaPublicKey:()=>us,Secp256k1PrivateKey:()=>ps,Secp256k1PublicKey:()=>hs,generateEphemeralKeyPair:()=>Hm,generateKeyPair:()=>Ia,generateKeyPairFromSeed:()=>uA,importKey:()=>di,keyStretcher:()=>Ym,keysPBM:()=>si,marshalPrivateKey:()=>_0,marshalPublicKey:()=>v0,supportedKeys:()=>Pn,unmarshalPrivateKey:()=>mr,unmarshalPublicKey:()=>$r});var r0={};me(r0,{Ed25519PrivateKey:()=>An,Ed25519PublicKey:()=>cs,generateKeyPair:()=>yR,generateKeyPairFromSeed:()=>t0,unmarshalEd25519PrivateKey:()=>mR,unmarshalEd25519PublicKey:()=>gR});function Bh(r,e){let t=L(r,"base64urlpad");if(e!=null){if(t.length>e)throw new Error("byte array longer than desired length");t=_e([new Uint8Array(e-t.length),t])}return t}function dr(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function io(r){if(!Number.isSafeInteger(r)||r<0)throw new Error(`Wrong positive integer: ${r}`)}function uS(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Mh(r,...e){if(!uS(r))throw new Error("Expected Uint8Array");if(e.length>0&&!e.includes(r.length))throw new Error(`Expected Uint8Array of length ${e}, not of length=${r.length}`)}function ns(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");io(r.outputLen),io(r.blockLen)}function Js(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function dm(r,e){Mh(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var fl=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function fm(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}var os=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),Nr=(r,e)=>r<<32-e|r>>>e,dS=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!dS)throw new Error("Non little-endian hardware is not supported");var fS=async()=>{};async function hm(r,e,t){let n=Date.now();for(let o=0;o<r;o++){t(o);let s=Date.now()-n;s>=0&&s<e||(await fS(),n+=s)}}function Uh(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Or(r){if(typeof r=="string"&&(r=Uh(r)),!fm(r))throw new Error(`expected Uint8Array, got ${typeof r}`);return r}function hl(...r){let e=0;for(let n=0;n<r.length;n++){let o=r[n];if(!fm(o))throw new Error("Uint8Array expected");e+=o.length}let t=new Uint8Array(e);for(let n=0,o=0;n<r.length;n++){let s=r[n];t.set(s,o),o+=s.length}return t}var ei=class{clone(){return this._cloneInto()}},hS={}.toString;function pm(r,e){if(e!==void 0&&hS.call(e)!=="[object Object]")throw new Error("Options should be object or undefined");return Object.assign(r,e)}function ti(r){let e=n=>r().update(Or(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function ss(r=32){if(fl&&typeof fl.getRandomValues=="function")return fl.getRandomValues(new Uint8Array(r));throw new Error("crypto.getRandomValues must be defined")}function pS(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let o=BigInt(32),s=BigInt(4294967295),i=Number(t>>o&s),a=Number(t&s),c=n?4:0,l=n?0:4;r.setUint32(e+c,i,n),r.setUint32(e+l,a,n)}var ao=class extends ei{constructor(e,t,n,o){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=os(this.buffer)}update(e){Js(this);let{view:t,buffer:n,blockLen:o}=this;e=Or(e);let s=e.length;for(let i=0;i<s;){let a=Math.min(o-this.pos,s-i);if(a===o){let c=os(e);for(;o<=s-i;i+=o)this.process(c,i);continue}n.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Js(this),dm(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:s}=this,{pos:i}=this;t[i++]=128,this.buffer.subarray(i).fill(0),this.padOffset>o-i&&(this.process(n,0),i=0);for(let u=i;u<o;u++)t[u]=0;pS(n,o-8,BigInt(this.length*8),s),this.process(n,0);let a=os(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let l=c/4,d=this.get();if(l>d.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<l;u++)a.setUint32(4*u,d[u],s)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:o,finished:s,destroyed:i,pos:a}=this;return e.length=o,e.pos=a,e.finished=s,e.destroyed=i,o%t&&e.buffer.set(n),e}};var pl=BigInt(4294967295),Fh=BigInt(32);function mm(r,e=!1){return e?{h:Number(r&pl),l:Number(r>>Fh&pl)}:{h:Number(r>>Fh&pl)|0,l:Number(r&pl)|0}}function mS(r,e=!1){let t=new Uint32Array(r.length),n=new Uint32Array(r.length);for(let o=0;o<r.length;o++){let{h:s,l:i}=mm(r[o],e);[t[o],n[o]]=[s,i]}return[t,n]}var gS=(r,e)=>BigInt(r>>>0)<<Fh|BigInt(e>>>0),yS=(r,e,t)=>r>>>t,wS=(r,e,t)=>r<<32-t|e>>>t,bS=(r,e,t)=>r>>>t|e<<32-t,ES=(r,e,t)=>r<<32-t|e>>>t,xS=(r,e,t)=>r<<64-t|e>>>t-32,vS=(r,e,t)=>r>>>t-32|e<<64-t,_S=(r,e)=>e,SS=(r,e)=>r,RS=(r,e,t)=>r<<t|e>>>32-t,AS=(r,e,t)=>e<<t|r>>>32-t,IS=(r,e,t)=>e<<t-32|r>>>64-t,DS=(r,e,t)=>r<<t-32|e>>>64-t;function TS(r,e,t,n){let o=(e>>>0)+(n>>>0);return{h:r+t+(o/2**32|0)|0,l:o|0}}var kS=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),CS=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,NS=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),OS=(r,e,t,n,o)=>e+t+n+o+(r/2**32|0)|0,PS=(r,e,t,n,o)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(o>>>0),LS=(r,e,t,n,o,s)=>e+t+n+o+s+(r/2**32|0)|0;var BS={fromBig:mm,split:mS,toBig:gS,shrSH:yS,shrSL:wS,rotrSH:bS,rotrSL:ES,rotrBH:xS,rotrBL:vS,rotr32H:_S,rotr32L:SS,rotlSH:RS,rotlSL:AS,rotlBH:IS,rotlBL:DS,add:TS,add3L:kS,add3H:CS,add4L:NS,add4H:OS,add5H:LS,add5L:PS},fe=BS;var[MS,US]=fe.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(r=>BigInt(r))),co=new Uint32Array(80),lo=new Uint32Array(80),Vh=class extends ao{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){let{Ah:e,Al:t,Bh:n,Bl:o,Ch:s,Cl:i,Dh:a,Dl:c,Eh:l,El:d,Fh:u,Fl:f,Gh:m,Gl:h,Hh:p,Hl:y}=this;return[e,t,n,o,s,i,a,c,l,d,u,f,m,h,p,y]}set(e,t,n,o,s,i,a,c,l,d,u,f,m,h,p,y){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=o|0,this.Ch=s|0,this.Cl=i|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=d|0,this.Fh=u|0,this.Fl=f|0,this.Gh=m|0,this.Gl=h|0,this.Hh=p|0,this.Hl=y|0}process(e,t){for(let b=0;b<16;b++,t+=4)co[b]=e.getUint32(t),lo[b]=e.getUint32(t+=4);for(let b=16;b<80;b++){let S=co[b-15]|0,R=lo[b-15]|0,A=fe.rotrSH(S,R,1)^fe.rotrSH(S,R,8)^fe.shrSH(S,R,7),D=fe.rotrSL(S,R,1)^fe.rotrSL(S,R,8)^fe.shrSL(S,R,7),_=co[b-2]|0,k=lo[b-2]|0,O=fe.rotrSH(_,k,19)^fe.rotrBH(_,k,61)^fe.shrSH(_,k,6),N=fe.rotrSL(_,k,19)^fe.rotrBL(_,k,61)^fe.shrSL(_,k,6),P=fe.add4L(D,N,lo[b-7],lo[b-16]),F=fe.add4H(P,A,O,co[b-7],co[b-16]);co[b]=F|0,lo[b]=P|0}let{Ah:n,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:d,Eh:u,El:f,Fh:m,Fl:h,Gh:p,Gl:y,Hh:w,Hl:E}=this;for(let b=0;b<80;b++){let S=fe.rotrSH(u,f,14)^fe.rotrSH(u,f,18)^fe.rotrBH(u,f,41),R=fe.rotrSL(u,f,14)^fe.rotrSL(u,f,18)^fe.rotrBL(u,f,41),A=u&m^~u&p,D=f&h^~f&y,_=fe.add5L(E,R,D,US[b],lo[b]),k=fe.add5H(_,w,S,A,MS[b],co[b]),O=_|0,N=fe.rotrSH(n,o,28)^fe.rotrBH(n,o,34)^fe.rotrBH(n,o,39),P=fe.rotrSL(n,o,28)^fe.rotrBL(n,o,34)^fe.rotrBL(n,o,39),F=n&s^n&a^s&a,Y=o&i^o&c^i&c;w=p|0,E=y|0,p=m|0,y=h|0,m=u|0,h=f|0,{h:u,l:f}=fe.add(l|0,d|0,k|0,O|0),l=a|0,d=c|0,a=s|0,c=i|0,s=n|0,i=o|0;let I=fe.add3L(O,P,Y);n=fe.add3H(I,k,N,F),o=I|0}({h:n,l:o}=fe.add(this.Ah|0,this.Al|0,n|0,o|0)),{h:s,l:i}=fe.add(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=fe.add(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:d}=fe.add(this.Dh|0,this.Dl|0,l|0,d|0),{h:u,l:f}=fe.add(this.Eh|0,this.El|0,u|0,f|0),{h:m,l:h}=fe.add(this.Fh|0,this.Fl|0,m|0,h|0),{h:p,l:y}=fe.add(this.Gh|0,this.Gl|0,p|0,y|0),{h:w,l:E}=fe.add(this.Hh|0,this.Hl|0,w|0,E|0),this.set(n,o,s,i,a,c,l,d,u,f,m,h,p,y,w,E)}roundClean(){co.fill(0),lo.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}};var uo=ti(()=>new Vh);var gl={};me(gl,{bitGet:()=>WS,bitLen:()=>qS,bitMask:()=>ha,bitSet:()=>zS,bytesToHex:()=>En,bytesToNumberBE:()=>xn,bytesToNumberLE:()=>Lr,concatBytes:()=>_n,createHmacDrbg:()=>Hh,ensureBytes:()=>Be,equalBytes:()=>$S,hexToBytes:()=>is,hexToNumber:()=>$h,isBytes:()=>Pr,numberToBytesBE:()=>fo,numberToBytesLE:()=>vn,numberToHexUnpadded:()=>bm,numberToVarBytesBE:()=>KS,utf8ToBytes:()=>HS,validateObject:()=>fr});var wm=BigInt(0),ml=BigInt(1),FS=BigInt(2);function Pr(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}var VS=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function En(r){if(!Pr(r))throw new Error("Uint8Array expected");let e="";for(let t=0;t<r.length;t++)e+=VS[r[t]];return e}function bm(r){let e=r.toString(16);return e.length&1?`0${e}`:e}function $h(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return BigInt(r===""?"0":`0x${r}`)}var bn={_0:48,_9:57,_A:65,_F:70,_a:97,_f:102};function gm(r){if(r>=bn._0&&r<=bn._9)return r-bn._0;if(r>=bn._A&&r<=bn._F)return r-(bn._A-10);if(r>=bn._a&&r<=bn._f)return r-(bn._a-10)}function is(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);let e=r.length,t=e/2;if(e%2)throw new Error("padded hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(t);for(let o=0,s=0;o<t;o++,s+=2){let i=gm(r.charCodeAt(s)),a=gm(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 xn(r){return $h(En(r))}function Lr(r){if(!Pr(r))throw new Error("Uint8Array expected");return $h(En(Uint8Array.from(r).reverse()))}function fo(r,e){return is(r.toString(16).padStart(e*2,"0"))}function vn(r,e){return fo(r,e).reverse()}function KS(r){return is(bm(r))}function Be(r,e,t){let n;if(typeof e=="string")try{n=is(e)}catch(s){throw new Error(`${r} must be valid hex string, got "${e}". Cause: ${s}`)}else if(Pr(e))n=Uint8Array.from(e);else throw new Error(`${r} must be hex string or Uint8Array`);let o=n.length;if(typeof t=="number"&&o!==t)throw new Error(`${r} expected ${t} bytes, got ${o}`);return n}function _n(...r){let e=0;for(let o=0;o<r.length;o++){let s=r[o];if(!Pr(s))throw new Error("Uint8Array expected");e+=s.length}let t=new Uint8Array(e),n=0;for(let o=0;o<r.length;o++){let s=r[o];t.set(s,n),n+=s.length}return t}function $S(r,e){if(r.length!==e.length)return!1;let t=0;for(let n=0;n<r.length;n++)t|=r[n]^e[n];return t===0}function HS(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function qS(r){let e;for(e=0;r>wm;r>>=ml,e+=1);return e}function WS(r,e){return r>>BigInt(e)&ml}var zS=(r,e,t)=>r|(t?ml:wm)<<BigInt(e),ha=r=>(FS<<BigInt(r-1))-ml,Kh=r=>new Uint8Array(r),ym=r=>Uint8Array.from(r);function Hh(r,e,t){if(typeof r!="number"||r<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof t!="function")throw new Error("hmacFn must be a function");let n=Kh(r),o=Kh(r),s=0,i=()=>{n.fill(1),o.fill(0),s=0},a=(...u)=>t(o,n,...u),c=(u=Kh())=>{o=a(ym([0]),u),n=a(),u.length!==0&&(o=a(ym([1]),u),n=a())},l=()=>{if(s++>=1e3)throw new Error("drbg: tried 1000 values");let u=0,f=[];for(;u<e;){n=a();let m=n.slice();f.push(m),u+=n.length}return _n(...f)};return(u,f)=>{i(),c(u);let m;for(;!(m=f(l()));)c();return i(),m}}var GS={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"||Pr(r),isSafeInteger:r=>Number.isSafeInteger(r),array:r=>Array.isArray(r),field:(r,e)=>e.Fp.isValid(r),hash:r=>typeof r=="function"&&Number.isSafeInteger(r.outputLen)};function fr(r,e,t={}){let n=(o,s,i)=>{let a=GS[s];if(typeof a!="function")throw new Error(`Invalid validator "${s}", expected function`);let c=r[o];if(!(i&&c===void 0)&&!a(c,r))throw new Error(`Invalid param ${String(o)}=${c} (${typeof c}), expected ${s}`)};for(let[o,s]of Object.entries(e))n(o,s,!1);for(let[o,s]of Object.entries(t))n(o,s,!0);return r}var at=BigInt(0),Ke=BigInt(1),as=BigInt(2),YS=BigInt(3),qh=BigInt(4),Em=BigInt(5),xm=BigInt(8),XS=BigInt(9),QS=BigInt(16);function Ae(r,e){let t=r%e;return t>=at?t:e+t}function Wh(r,e,t){if(t<=at||e<at)throw new Error("Expected power/modulo > 0");if(t===Ke)return at;let n=Ke;for(;e>at;)e&Ke&&(n=n*r%t),r=r*r%t,e>>=Ke;return n}function Me(r,e,t){let n=r;for(;e-- >at;)n*=n,n%=t;return n}function yl(r,e){if(r===at||e<=at)throw new Error(`invert: expected positive integers, got n=${r} mod=${e}`);let t=Ae(r,e),n=e,o=at,s=Ke,i=Ke,a=at;for(;t!==at;){let l=n/t,d=n%t,u=o-i*l,f=s-a*l;n=t,t=d,o=i,s=a,i=u,a=f}if(n!==Ke)throw new Error("invert: does not exist");return Ae(o,e)}function jS(r){let e=(r-Ke)/as,t,n,o;for(t=r-Ke,n=0;t%as===at;t/=as,n++);for(o=as;o<r&&Wh(o,e,r)!==r-Ke;o++);if(n===1){let i=(r+Ke)/qh;return function(c,l){let d=c.pow(l,i);if(!c.eql(c.sqr(d),l))throw new Error("Cannot find square root");return d}}let s=(t+Ke)/as;return function(a,c){if(a.pow(c,e)===a.neg(a.ONE))throw new Error("Cannot find square root");let l=n,d=a.pow(a.mul(a.ONE,o),t),u=a.pow(c,s),f=a.pow(c,t);for(;!a.eql(f,a.ONE);){if(a.eql(f,a.ZERO))return a.ZERO;let m=1;for(let p=a.sqr(f);m<l&&!a.eql(p,a.ONE);m++)p=a.sqr(p);let h=a.pow(d,Ke<<BigInt(l-m-1));d=a.sqr(h),u=a.mul(u,h),f=a.mul(f,d),l=m}return u}}function ZS(r){if(r%qh===YS){let e=(r+Ke)/qh;return function(n,o){let s=n.pow(o,e);if(!n.eql(n.sqr(s),o))throw new Error("Cannot find square root");return s}}if(r%xm===Em){let e=(r-Em)/xm;return function(n,o){let s=n.mul(o,as),i=n.pow(s,e),a=n.mul(o,i),c=n.mul(n.mul(a,as),i),l=n.mul(a,n.sub(c,n.ONE));if(!n.eql(n.sqr(l),o))throw new Error("Cannot find square root");return l}}return r%QS,jS(r)}var vm=(r,e)=>(Ae(r,e)&Ke)===Ke,JS=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function zh(r){let e={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},t=JS.reduce((n,o)=>(n[o]="function",n),e);return fr(r,t)}function eR(r,e,t){if(t<at)throw new Error("Expected power > 0");if(t===at)return r.ONE;if(t===Ke)return e;let n=r.ONE,o=e;for(;t>at;)t&Ke&&(n=r.mul(n,o)),o=r.sqr(o),t>>=Ke;return n}function tR(r,e){let t=new Array(e.length),n=e.reduce((s,i,a)=>r.is0(i)?s:(t[a]=s,r.mul(s,i)),r.ONE),o=r.inv(n);return e.reduceRight((s,i,a)=>r.is0(i)?s:(t[a]=r.mul(s,t[a]),r.mul(s,i)),o),t}function Gh(r,e){let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}function wl(r,e,t=!1,n={}){if(r<=at)throw new Error(`Expected Field ORDER > 0, got ${r}`);let{nBitLength:o,nByteLength:s}=Gh(r,e);if(s>2048)throw new Error("Field lengths over 2048 bytes are not supported");let i=ZS(r),a=Object.freeze({ORDER:r,BITS:o,BYTES:s,MASK:ha(o),ZERO:at,ONE:Ke,create:c=>Ae(c,r),isValid:c=>{if(typeof c!="bigint")throw new Error(`Invalid field element: expected bigint, got ${typeof c}`);return at<=c&&c<r},is0:c=>c===at,isOdd:c=>(c&Ke)===Ke,neg:c=>Ae(-c,r),eql:(c,l)=>c===l,sqr:c=>Ae(c*c,r),add:(c,l)=>Ae(c+l,r),sub:(c,l)=>Ae(c-l,r),mul:(c,l)=>Ae(c*l,r),pow:(c,l)=>eR(a,c,l),div:(c,l)=>Ae(c*yl(l,r),r),sqrN:c=>c*c,addN:(c,l)=>c+l,subN:(c,l)=>c-l,mulN:(c,l)=>c*l,inv:c=>yl(c,r),sqrt:n.sqrt||(c=>i(a,c)),invertBatch:c=>tR(a,c),cmov:(c,l,d)=>d?l:c,toBytes:c=>t?vn(c,s):fo(c,s),fromBytes:c=>{if(c.length!==s)throw new Error(`Fp.fromBytes: expected ${s}, got ${c.length}`);return t?Lr(c):xn(c)}});return Object.freeze(a)}function _m(r,e){if(!r.isOdd)throw new Error("Field doesn't have isOdd");let t=r.sqrt(e);return r.isOdd(t)?r.neg(t):t}function Sm(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let e=r.toString(2).length;return Math.ceil(e/8)}function Yh(r){let e=Sm(r);return e+Math.ceil(e/2)}function Rm(r,e,t=!1){let n=r.length,o=Sm(e),s=Yh(e);if(n<16||n<s||n>1024)throw new Error(`expected ${s}-1024 bytes of input, got ${n}`);let i=t?xn(r):Lr(r),a=Ae(i,e-Ke)+Ke;return t?vn(a,o):fo(a,o)}var nR=BigInt(0),Xh=BigInt(1);function bl(r,e){let t=(o,s)=>{let i=s.negate();return o?i:s},n=o=>{let s=Math.ceil(e/o)+1,i=2**(o-1);return{windows:s,windowSize:i}};return{constTimeNegate:t,unsafeLadder(o,s){let i=r.ZERO,a=o;for(;s>nR;)s&Xh&&(i=i.add(a)),a=a.double(),s>>=Xh;return i},precomputeWindow(o,s){let{windows:i,windowSize:a}=n(s),c=[],l=o,d=l;for(let u=0;u<i;u++){d=l,c.push(d);for(let f=1;f<a;f++)d=d.add(l),c.push(d);l=d.double()}return c},wNAF(o,s,i){let{windows:a,windowSize:c}=n(o),l=r.ZERO,d=r.BASE,u=BigInt(2**o-1),f=2**o,m=BigInt(o);for(let h=0;h<a;h++){let p=h*c,y=Number(i&u);i>>=m,y>c&&(y-=f,i+=Xh);let w=p,E=p+Math.abs(y)-1,b=h%2!==0,S=y<0;y===0?d=d.add(t(b,s[w])):l=l.add(t(S,s[E]))}return{p:l,f:d}},wNAFCached(o,s,i,a){let c=o._WINDOW_SIZE||1,l=s.get(o);return l||(l=this.precomputeWindow(o,c),c!==1&&s.set(o,a(l))),this.wNAF(c,l,i)}}}function pa(r){return zh(r.Fp),fr(r,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...Gh(r.n,r.nBitLength),...r,p:r.Fp.ORDER})}var Br=BigInt(0),Qt=BigInt(1),El=BigInt(2),oR=BigInt(8),sR={zip215:!0};function iR(r){let e=pa(r);return fr(r,{hash:"function",a:"bigint",d:"bigint",randomBytes:"function"},{adjustScalarBytes:"function",domain:"function",uvRatio:"function",mapToCurve:"function"}),Object.freeze({...e})}function xl(r){let e=iR(r),{Fp:t,n,prehash:o,hash:s,randomBytes:i,nByteLength:a,h:c}=e,l=El<<BigInt(a*8)-Qt,d=t.create,u=e.uvRatio||((T,v)=>{try{return{isValid:!0,value:t.sqrt(T*t.inv(v))}}catch{return{isValid:!1,value:Br}}}),f=e.adjustScalarBytes||(T=>T),m=e.domain||((T,v,M)=>{if(v.length||M)throw new Error("Contexts/pre-hash are not supported");return T}),h=T=>typeof T=="bigint"&&Br<T,p=(T,v)=>h(T)&&h(v)&&T<v,y=T=>T===Br||p(T,l);function w(T,v){if(p(T,v))return T;throw new Error(`Expected valid scalar < ${v}, got ${typeof T} ${T}`)}function E(T){return T===Br?T:w(T,n)}let b=new Map;function S(T){if(!(T instanceof R))throw new Error("ExtendedPoint expected")}class R{constructor(v,M,V,q){if(this.ex=v,this.ey=M,this.ez=V,this.et=q,!y(v))throw new Error("x required");if(!y(M))throw new Error("y required");if(!y(V))throw new Error("z required");if(!y(q))throw new Error("t required")}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static fromAffine(v){if(v instanceof R)throw new Error("extended point not allowed");let{x:M,y:V}=v||{};if(!y(M)||!y(V))throw new Error("invalid affine point");return new R(M,V,Qt,d(M*V))}static normalizeZ(v){let M=t.invertBatch(v.map(V=>V.ez));return v.map((V,q)=>V.toAffine(M[q])).map(R.fromAffine)}_setWindowSize(v){this._WINDOW_SIZE=v,b.delete(this)}assertValidity(){let{a:v,d:M}=e;if(this.is0())throw new Error("bad point: ZERO");let{ex:V,ey:q,ez:ne,et:ie}=this,pe=d(V*V),le=d(q*q),ue=d(ne*ne),Le=d(ue*ue),Te=d(pe*v),ht=d(ue*d(Te+le)),pt=d(Le+d(M*d(pe*le)));if(ht!==pt)throw new Error("bad point: equation left != right (1)");let st=d(V*q),Rt=d(ne*ie);if(st!==Rt)throw new Error("bad point: equation left != right (2)")}equals(v){S(v);let{ex:M,ey:V,ez:q}=this,{ex:ne,ey:ie,ez:pe}=v,le=d(M*pe),ue=d(ne*q),Le=d(V*pe),Te=d(ie*q);return le===ue&&Le===Te}is0(){return this.equals(R.ZERO)}negate(){return new R(d(-this.ex),this.ey,this.ez,d(-this.et))}double(){let{a:v}=e,{ex:M,ey:V,ez:q}=this,ne=d(M*M),ie=d(V*V),pe=d(El*d(q*q)),le=d(v*ne),ue=M+V,Le=d(d(ue*ue)-ne-ie),Te=le+ie,ht=Te-pe,pt=le-ie,st=d(Le*ht),Rt=d(Te*pt),mn=d(Le*pt),Ho=d(ht*Te);return new R(st,Rt,Ho,mn)}add(v){S(v);let{a:M,d:V}=e,{ex:q,ey:ne,ez:ie,et:pe}=this,{ex:le,ey:ue,ez:Le,et:Te}=v;if(M===BigInt(-1)){let H3=d((ne-q)*(ue+le)),q3=d((ne+q)*(ue-le)),df=d(q3-H3);if(df===Br)return this.double();let W3=d(ie*El*Te),z3=d(pe*El*Le),G3=z3+W3,Y3=q3+H3,X3=z3-W3,jE=d(G3*df),ZE=d(Y3*X3),JE=d(G3*X3),ex=d(df*Y3);return new R(jE,ZE,ex,JE)}let ht=d(q*le),pt=d(ne*ue),st=d(pe*V*Te),Rt=d(ie*Le),mn=d((q+ne)*(le+ue)-ht-pt),Ho=Rt-st,ra=Rt+st,$3=d(pt-M*ht),GE=d(mn*Ho),YE=d(ra*$3),XE=d(mn*$3),QE=d(Ho*ra);return new R(GE,YE,QE,XE)}subtract(v){return this.add(v.negate())}wNAF(v){return _.wNAFCached(this,b,v,R.normalizeZ)}multiply(v){let{p:M,f:V}=this.wNAF(w(v,n));return R.normalizeZ([M,V])[0]}multiplyUnsafe(v){let M=E(v);return M===Br?D:this.equals(D)||M===Qt?this:this.equals(A)?this.wNAF(M).p:_.unsafeLadder(this,M)}isSmallOrder(){return this.multiplyUnsafe(c).is0()}isTorsionFree(){return _.unsafeLadder(this,n).is0()}toAffine(v){let{ex:M,ey:V,ez:q}=this,ne=this.is0();v==null&&(v=ne?oR:t.inv(q));let ie=d(M*v),pe=d(V*v),le=d(q*v);if(ne)return{x:Br,y:Qt};if(le!==Qt)throw new Error("invZ was invalid");return{x:ie,y:pe}}clearCofactor(){let{h:v}=e;return v===Qt?this:this.multiplyUnsafe(v)}static fromHex(v,M=!1){let{d:V,a:q}=e,ne=t.BYTES;v=Be("pointHex",v,ne);let ie=v.slice(),pe=v[ne-1];ie[ne-1]=pe&-129;let le=Lr(ie);le===Br||(M?w(le,l):w(le,t.ORDER));let ue=d(le*le),Le=d(ue-Qt),Te=d(V*ue-q),{isValid:ht,value:pt}=u(Le,Te);if(!ht)throw new Error("Point.fromHex: invalid y coordinate");let st=(pt&Qt)===Qt,Rt=(pe&128)!==0;if(!M&&pt===Br&&Rt)throw new Error("Point.fromHex: x=0 and x_0=1");return Rt!==st&&(pt=d(-pt)),R.fromAffine({x:pt,y:le})}static fromPrivateKey(v){return N(v).point}toRawBytes(){let{x:v,y:M}=this.toAffine(),V=vn(M,t.BYTES);return V[V.length-1]|=v&Qt?128:0,V}toHex(){return En(this.toRawBytes())}}R.BASE=new R(e.Gx,e.Gy,Qt,d(e.Gx*e.Gy)),R.ZERO=new R(Br,Qt,Qt,Br);let{BASE:A,ZERO:D}=R,_=bl(R,a*8);function k(T){return Ae(T,n)}function O(T){return k(Lr(T))}function N(T){let v=a;T=Be("private key",T,v);let M=Be("hashed private key",s(T),2*v),V=f(M.slice(0,v)),q=M.slice(v,2*v),ne=O(V),ie=A.multiply(ne),pe=ie.toRawBytes();return{head:V,prefix:q,scalar:ne,point:ie,pointBytes:pe}}function P(T){return N(T).pointBytes}function F(T=new Uint8Array,...v){let M=_n(...v);return O(s(m(M,Be("context",T),!!o)))}function Y(T,v,M={}){T=Be("message",T),o&&(T=o(T));let{prefix:V,scalar:q,pointBytes:ne}=N(v),ie=F(M.context,V,T),pe=A.multiply(ie).toRawBytes(),le=F(M.context,pe,ne,T),ue=k(ie+le*q);E(ue);let Le=_n(pe,vn(ue,t.BYTES));return Be("result",Le,a*2)}let I=sR;function C(T,v,M,V=I){let{context:q,zip215:ne}=V,ie=t.BYTES;T=Be("signature",T,2*ie),v=Be("message",v),o&&(v=o(v));let pe=Lr(T.slice(ie,2*ie)),le,ue,Le;try{le=R.fromHex(M,ne),ue=R.fromHex(T.slice(0,ie),ne),Le=A.multiplyUnsafe(pe)}catch{return!1}if(!ne&&le.isSmallOrder())return!1;let Te=F(q,ue.toRawBytes(),le.toRawBytes(),v);return ue.add(le.multiplyUnsafe(Te)).subtract(Le).clearCofactor().equals(R.ZERO)}return A._setWindowSize(8),{CURVE:e,getPublicKey:P,sign:Y,verify:C,ExtendedPoint:R,utils:{getExtendedPublicKey:N,randomPrivateKey:()=>i(t.BYTES),precompute(T=8,v=R.BASE){return v._setWindowSize(T),v.multiply(BigInt(3)),v}}}}var ma=BigInt(0),Qh=BigInt(1);function aR(r){return fr(r,{a:"bigint"},{montgomeryBits:"isSafeInteger",nByteLength:"isSafeInteger",adjustScalarBytes:"function",domain:"function",powPminus2:"function",Gu:"bigint"}),Object.freeze({...r})}function Am(r){let e=aR(r),{P:t}=e,n=b=>Ae(b,t),o=e.montgomeryBits,s=Math.ceil(o/8),i=e.nByteLength,a=e.adjustScalarBytes||(b=>b),c=e.powPminus2||(b=>Wh(b,t-BigInt(2),t));function l(b,S,R){let A=n(b*(S-R));return S=n(S-A),R=n(R+A),[S,R]}function d(b){if(typeof b=="bigint"&&ma<=b&&b<t)return b;throw new Error("Expected valid scalar 0 < scalar < CURVE.P")}let u=(e.a-BigInt(2))/BigInt(4);function f(b,S){let R=d(b),A=d(S),D=R,_=Qh,k=ma,O=R,N=Qh,P=ma,F;for(let I=BigInt(o-1);I>=ma;I--){let C=A>>I&Qh;P^=C,F=l(P,_,O),_=F[0],O=F[1],F=l(P,k,N),k=F[0],N=F[1],P=C;let $=_+k,T=n($*$),v=_-k,M=n(v*v),V=T-M,q=O+N,ne=O-N,ie=n(ne*$),pe=n(q*v),le=ie+pe,ue=ie-pe;O=n(le*le),N=n(D*n(ue*ue)),_=n(T*M),k=n(V*(T+n(u*V)))}F=l(P,_,O),_=F[0],O=F[1],F=l(P,k,N),k=F[0],N=F[1];let Y=c(k);return n(_*Y)}function m(b){return vn(n(b),s)}function h(b){let S=Be("u coordinate",b,s);return i===32&&(S[31]&=127),Lr(S)}function p(b){let S=Be("scalar",b),R=S.length;if(R!==s&&R!==i)throw new Error(`Expected ${s} or ${i} bytes, got ${R}`);return Lr(a(S))}function y(b,S){let R=h(S),A=p(b),D=f(R,A);if(D===ma)throw new Error("Invalid private or public key received");return m(D)}let w=m(e.Gu);function E(b){return y(b,w)}return{scalarMult:y,scalarMultBase:E,getSharedSecret:(b,S)=>y(b,S),getPublicKey:b=>E(b),utils:{randomPrivateKey:()=>e.randomBytes(e.nByteLength)},GuBytes:w}}var ga=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),Im=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),rV=BigInt(0),cR=BigInt(1),jh=BigInt(2),lR=BigInt(5),Dm=BigInt(10),uR=BigInt(20),dR=BigInt(40),Tm=BigInt(80);function km(r){let e=ga,n=r*r%e*r%e,o=Me(n,jh,e)*n%e,s=Me(o,cR,e)*r%e,i=Me(s,lR,e)*s%e,a=Me(i,Dm,e)*i%e,c=Me(a,uR,e)*a%e,l=Me(c,dR,e)*c%e,d=Me(l,Tm,e)*l%e,u=Me(d,Tm,e)*l%e,f=Me(u,Dm,e)*i%e;return{pow_p_5_8:Me(f,jh,e)*r%e,b2:n}}function Cm(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function fR(r,e){let t=ga,n=Ae(e*e*e,t),o=Ae(n*n*e,t),s=km(r*o).pow_p_5_8,i=Ae(r*n*s,t),a=Ae(e*i*i,t),c=i,l=Ae(i*Im,t),d=a===r,u=a===Ae(-r,t),f=a===Ae(-r*Im,t);return d&&(i=c),(u||f)&&(i=l),vm(i,t)&&(i=Ae(-i,t)),{isValid:d||u,value:i}}var Sn=wl(ga,void 0,!0),Zh={a:BigInt(-1),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),Fp:Sn,n:BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),h:BigInt(8),Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960"),hash:uo,randomBytes:ss,adjustScalarBytes:Cm,uvRatio:fR},ri=xl(Zh);function Nm(r,e,t){if(e.length>255)throw new Error("Context is too big");return hl(Uh("SigEd25519 no Ed25519 collisions"),new Uint8Array([t?1:0,e.length]),e,r)}var nV=xl({...Zh,domain:Nm}),oV=xl({...Zh,domain:Nm,prehash:uo}),ya=Am({P:ga,a:BigInt(486662),montgomeryBits:255,nByteLength:32,Gu:BigInt(9),powPminus2:r=>{let e=ga,{pow_p_5_8:t,b2:n}=km(r);return Ae(Me(t,BigInt(3),e)*n,e)},adjustScalarBytes:Cm,randomBytes:ss});var hR=(Sn.ORDER+BigInt(3))/BigInt(8),sV=Sn.pow(jh,hR),iV=Sn.sqrt(Sn.neg(Sn.ONE)),aV=(Sn.ORDER-BigInt(5))/BigInt(8),cV=BigInt(486662);var lV=_m(Sn,Sn.neg(BigInt(486664)));var uV=BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235"),dV=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),fV=BigInt("1159843021668779879193775521855586647937357759715417654439879720876111806838"),hV=BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952");var pV=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");var ni=32,Rn=64,vl=32;function Om(){let r=ri.utils.randomPrivateKey(),e=ri.getPublicKey(r);return{privateKey:Mm(r,e),publicKey:e}}function Pm(r){if(r.length!==vl)throw new TypeError('"seed" must be 32 bytes in length.');if(!(r instanceof Uint8Array))throw new TypeError('"seed" must be a node.js Buffer, or Uint8Array.');let e=r,t=ri.getPublicKey(e);return{privateKey:Mm(e,t),publicKey:t}}function Lm(r,e){let t=r.subarray(0,vl);return ri.sign(e instanceof Uint8Array?e:e.subarray(),t)}function Bm(r,e,t){return ri.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function Mm(r,e){let t=new Uint8Array(Rn);for(let n=0;n<vl;n++)t[n]=r[n],t[vl+n]=e[n];return t}var $e={get(r=globalThis){let e=r.crypto;if(e==null||e.subtle==null)throw Object.assign(new Error("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"),{code:"ERR_MISSING_WEB_CRYPTO"});return e}};var Jh={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function _l(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,o=r?.digest??"SHA-256",s=r?.saltLength??16,i=r?.iterations??32767,a=$e.get();t*=8;async function c(u,f){let m=a.getRandomValues(new Uint8Array(s)),h=a.getRandomValues(new Uint8Array(n)),p={name:e,iv:h};typeof f=="string"&&(f=L(f));let y;if(f.length===0){y=await a.subtle.importKey("jwk",Jh,{name:"AES-GCM"},!0,["encrypt"]);try{let E={name:"PBKDF2",salt:m,iterations:i,hash:{name:o}},b=await a.subtle.importKey("raw",f,{name:"PBKDF2"},!1,["deriveKey"]);y=await a.subtle.deriveKey(E,b,{name:e,length:t},!0,["encrypt"])}catch{y=await a.subtle.importKey("jwk",Jh,{name:"AES-GCM"},!0,["encrypt"])}}else{let E={name:"PBKDF2",salt:m,iterations:i,hash:{name:o}},b=await a.subtle.importKey("raw",f,{name:"PBKDF2"},!1,["deriveKey"]);y=await a.subtle.deriveKey(E,b,{name:e,length:t},!0,["encrypt"])}let w=await a.subtle.encrypt(p,y,u);return _e([m,p.iv,new Uint8Array(w)])}async function l(u,f){let m=u.subarray(0,s),h=u.subarray(s,s+n),p=u.subarray(s+n),y={name:e,iv:h};typeof f=="string"&&(f=L(f));let w;if(f.length===0)try{let b={name:"PBKDF2",salt:m,iterations:i,hash:{name:o}},S=await a.subtle.importKey("raw",f,{name:"PBKDF2"},!1,["deriveKey"]);w=await a.subtle.deriveKey(b,S,{name:e,length:t},!0,["decrypt"])}catch{w=await a.subtle.importKey("jwk",Jh,{name:"AES-GCM"},!0,["decrypt"])}else{let b={name:"PBKDF2",salt:m,iterations:i,hash:{name:o}},S=await a.subtle.importKey("raw",f,{name:"PBKDF2"},!1,["deriveKey"]);w=await a.subtle.deriveKey(b,S,{name:e,length:t},!0,["decrypt"])}let E=await a.subtle.decrypt(y,w,p);return new Uint8Array(E)}return{encrypt:c,decrypt:l}}async function oi(r,e){let n=await _l().encrypt(r,e);return ar.encode(n)}var si={};me(si,{KeyType:()=>Ue,PrivateKey:()=>Ur,PublicKey:()=>Mr});var Ue;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(Ue||(Ue={}));var e0;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(e0||(e0={}));(function(r){r.codec=()=>Ve(e0)})(Ue||(Ue={}));var Mr;(function(r){let e;r.codec=()=>(e==null&&(e=te((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Ue.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=Ue.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(Mr||(Mr={}));var Ur;(function(r){let e;r.codec=()=>(e==null&&(e=te((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Ue.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=Ue.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(Ur||(Ur={}));var cs=class{_key;constructor(e){this._key=ii(e,ni)}verify(e,t){return Bm(this._key,t,e)}marshal(){return this._key}get bytes(){return Mr.encode({Type:Ue.Ed25519,Data:this.marshal()}).subarray()}equals(e){return j(this.bytes,e.bytes)}hash(){let e=Re.digest(this.bytes);return dr(e)?e.then(({bytes:t})=>t):e.bytes}},An=class{_key;_publicKey;constructor(e,t){this._key=ii(e,Rn),this._publicKey=ii(t,ni)}sign(e){return Lm(this._key,e)}get public(){return new cs(this._publicKey)}marshal(){return this._key}get bytes(){return Ur.encode({Type:Ue.Ed25519,Data:this.marshal()}).subarray()}equals(e){return j(this.bytes,e.bytes)}async hash(){let e=Re.digest(this.bytes),t;return dr(e)?{bytes:t}=await e:t=e.bytes,t}async id(){let e=lr.digest(this.public.bytes);return ce.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return oi(this.bytes,e);throw new g(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function mR(r){if(r.length>Rn){r=ii(r,Rn+ni);let n=r.subarray(0,Rn),o=r.subarray(Rn,r.length);return new An(n,o)}r=ii(r,Rn);let e=r.subarray(0,Rn),t=r.subarray(ni);return new An(e,t)}function gR(r){return r=ii(r,ni),new cs(r)}async function yR(){let{privateKey:r,publicKey:e}=Om();return new An(r,e)}async function t0(r){let{privateKey:e,publicKey:t}=Pm(r);return new An(e,t)}function ii(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new g(`Key must be a Uint8Array of length ${e}, got ${r.length}`,"ERR_INVALID_KEY_TYPE");return r}var Fm={"P-256":256,"P-384":384,"P-521":521},wR=Object.keys(Fm),n0=wR.join(" / ");async function Vm(r){if(r!=="P-256"&&r!=="P-384"&&r!=="P-521")throw new g(`Unknown curve: ${r}. Must be ${n0}`,"ERR_INVALID_CURVE");let e=await $e.get().subtle.generateKey({name:"ECDH",namedCurve:r},!0,["deriveBits"]),t=async(s,i)=>{let a;i!=null?a=await $e.get().subtle.importKey("jwk",ER(r,i),{name:"ECDH",namedCurve:r},!1,["deriveBits"]):a=e.privateKey;let c=await $e.get().subtle.importKey("jwk",$m(r,s),{name:"ECDH",namedCurve:r},!1,[]),l=await $e.get().subtle.deriveBits({name:"ECDH",namedCurve:r,public:c},a,Fm[r]);return new Uint8Array(l,0,l.byteLength)},n=await $e.get().subtle.exportKey("jwk",e.publicKey);return{key:bR(n),genSharedKey:t}}var Km={"P-256":32,"P-384":48,"P-521":66};function bR(r){if(r.crv==null||r.x==null||r.y==null)throw new g("JWK was missing components","ERR_INVALID_PARAMETERS");if(r.crv!=="P-256"&&r.crv!=="P-384"&&r.crv!=="P-521")throw new g(`Unknown curve: ${r.crv}. Must be ${n0}`,"ERR_INVALID_CURVE");let e=Km[r.crv];return _e([Uint8Array.from([4]),Bh(r.x,e),Bh(r.y,e)],1+e*2)}function $m(r,e){if(r!=="P-256"&&r!=="P-384"&&r!=="P-521")throw new g(`Unknown curve: ${r}. Must be ${n0}`,"ERR_INVALID_CURVE");let t=Km[r];if(!j(e.subarray(0,1),Uint8Array.from([4])))throw new g("Cannot unmarshal public key - invalid key format","ERR_INVALID_KEY_FORMAT");return{kty:"EC",crv:r,x:B(e.subarray(1,t+1),"base64url"),y:B(e.subarray(1+t),"base64url"),ext:!0}}var ER=(r,e)=>({...$m(r,e.public),d:B(e.private,"base64url")});var Hm=Vm;async function qm(r,e){let t=ar.decode(r);return _l().decrypt(t,e)}var Wm={SHA1:20,SHA256:32,SHA512:64};var xR={SHA1:"SHA-1",SHA256:"SHA-256",SHA512:"SHA-512"},vR=async(r,e)=>{let t=await $e.get().subtle.sign({name:"HMAC"},r,e);return new Uint8Array(t,0,t.byteLength)};async function zm(r,e){let t=xR[r],n=await $e.get().subtle.importKey("raw",e,{name:"HMAC",hash:{name:t}},!1,["sign"]);return{async digest(o){return vR(n,o)},length:Wm[r]}}var Gm={"AES-128":{ivSize:16,keySize:16},"AES-256":{ivSize:16,keySize:32},Blowfish:{ivSize:8,keySize:32}};async function Ym(r,e,t){let n=Gm[r];if(n==null){let E=Object.keys(Gm).join(" / ");throw new g(`unknown cipher type '${r}'. Must be ${E}`,"ERR_INVALID_CIPHER_TYPE")}if(e==null)throw new g("missing hash type","ERR_MISSING_HASH_TYPE");let o=n.keySize,s=n.ivSize,i=20,a=L("key expansion"),c=2*(s+o+i),l=await zm(e,t),d=await l.digest(a),u=[],f=0;for(;f<c;){let E=await l.digest(_e([d,a])),b=E.length;f+b>c&&(b=c-f),u.push(E),f+=b,d=await l.digest(d)}let m=c/2,h=_e(u),p=h.subarray(0,m),y=h.subarray(m,c),w=E=>({iv:E.subarray(0,s),cipherKey:E.subarray(s,s+o),macKey:E.subarray(s+o)});return{k1:w(p),k2:w(y)}}var p0={};me(p0,{MAX_RSA_KEY_SIZE:()=>ds,RsaPrivateKey:()=>wo,RsaPublicKey:()=>us,fromJwk:()=>GR,generateKeyPair:()=>YR,unmarshalRsaPrivateKey:()=>f0,unmarshalRsaPublicKey:()=>zR});function Vt(r){if(isNaN(r)||r<=0)throw new g("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return ss(r)}var yo={};me(yo,{exportToPem:()=>$R,importFromPem:()=>d0,jwkToPkcs1:()=>UR,jwkToPkix:()=>VR,pkcs1ToJwk:()=>MR,pkixToJwk:()=>FR});var Sl=class extends ei{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,ns(e);let n=Or(t);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let o=this.blockLen,s=new Uint8Array(o);s.set(n.length>o?e.create().update(n).digest():n);for(let i=0;i<s.length;i++)s[i]^=54;this.iHash.update(s),this.oHash=e.create();for(let i=0;i<s.length;i++)s[i]^=106;this.oHash.update(s),s.fill(0)}update(e){return Js(this),this.iHash.update(e),this}digestInto(e){Js(this),Mh(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));let{oHash:t,iHash:n,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},ho=(r,e,t)=>new Sl(r,e).update(t).digest();ho.create=(r,e)=>new Sl(r,e);function Xm(r,e,t,n){ns(r);let o=pm({dkLen:32,asyncTick:10},n),{c:s,dkLen:i,asyncTick:a}=o;if(io(s),io(i),io(a),s<1)throw new Error("PBKDF2: iterations (c) should be >= 1");let c=Or(e),l=Or(t),d=new Uint8Array(i),u=ho.create(r,c),f=u._cloneInto().update(l);return{c:s,dkLen:i,asyncTick:a,DK:d,PRF:u,PRFSalt:f}}function Qm(r,e,t,n,o){return r.destroy(),e.destroy(),n&&n.destroy(),o.fill(0),t}function jm(r,e,t,n){let{c:o,dkLen:s,DK:i,PRF:a,PRFSalt:c}=Xm(r,e,t,n),l,d=new Uint8Array(4),u=os(d),f=new Uint8Array(a.outputLen);for(let m=1,h=0;h<s;m++,h+=a.outputLen){let p=i.subarray(h,h+a.outputLen);u.setInt32(0,m,!1),(l=c._cloneInto(l)).update(d).digestInto(f),p.set(f.subarray(0,p.length));for(let y=1;y<o;y++){a._cloneInto(l).update(f).digestInto(f);for(let w=0;w<p.length;w++)p[w]^=f[w]}}return Qm(a,c,i,l,f)}async function o0(r,e,t,n){let{c:o,dkLen:s,asyncTick:i,DK:a,PRF:c,PRFSalt:l}=Xm(r,e,t,n),d,u=new Uint8Array(4),f=os(u),m=new Uint8Array(c.outputLen);for(let h=1,p=0;p<s;h++,p+=c.outputLen){let y=a.subarray(p,p+c.outputLen);f.setInt32(0,h,!1),(d=l._cloneInto(d)).update(u).digestInto(m),y.set(m.subarray(0,y.length)),await hm(o-1,i,()=>{c._cloneInto(d).update(m).digestInto(m);for(let w=0;w<y.length;w++)y[w]^=m[w]})}return Qm(c,l,a,d,m)}var we=ke(Zm());function ls(r,e){let t=0;if(r.length===1)return r[0];for(let n=r.length-1;n>=0;n--)t+=r[r.length-1-n]*Math.pow(2,e*n);return t}function po(r,e,t=-1){let n=t,o=r,s=0,i=Math.pow(2,e);for(let a=1;a<8;a++){if(r<i){let c;if(n<0)c=new ArrayBuffer(a),s=a;else{if(n<a)return new ArrayBuffer(0);c=new ArrayBuffer(n),s=n}let l=new Uint8Array(c);for(let d=a-1;d>=0;d--){let u=Math.pow(2,d*e);l[s-d-1]=Math.floor(o/u),o-=l[s-d-1]*u}return c}i*=Math.pow(2,e)}return new ArrayBuffer(0)}function Il(...r){let e=0,t=0;for(let s of r)e+=s.length;let n=new ArrayBuffer(e),o=new Uint8Array(n);for(let s of r)o.set(s,t),t+=s.length;return o}function i0(){let r=new Uint8Array(this.valueHex);if(this.valueHex.byteLength>=2){let a=r[0]===255&&r[1]&128,c=r[0]===0&&(r[1]&128)===0;(a||c)&&this.warnings.push("Needlessly long format")}let e=new ArrayBuffer(this.valueHex.byteLength),t=new Uint8Array(e);for(let a=0;a<this.valueHex.byteLength;a++)t[a]=0;t[0]=r[0]&128;let n=ls(t,8),o=new ArrayBuffer(this.valueHex.byteLength),s=new Uint8Array(o);for(let a=0;a<this.valueHex.byteLength;a++)s[a]=r[a];return s[0]&=127,ls(s,8)-n}function Jm(r){let e=r<0?r*-1:r,t=128;for(let n=1;n<8;n++){if(e<=t){if(r<0){let i=t-e,a=po(i,8,n),c=new Uint8Array(a);return c[0]|=128,a}let o=po(e,8,n),s=new Uint8Array(o);if(s[0]&128){let i=o.slice(0),a=new Uint8Array(i);o=new ArrayBuffer(o.byteLength+1),s=new Uint8Array(o);for(let c=0;c<i.byteLength;c++)s[c+1]=a[c];s[0]=0}return o}t*=Math.pow(2,8)}return new ArrayBuffer(0)}function e6(r,e){if(r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let o=0;o<t.length;o++)if(t[o]!==n[o])return!1;return!0}function Kt(r,e){let t=r.toString(10);if(e<t.length)return"";let n=e-t.length,o=new Array(n);for(let i=0;i<n;i++)o[i]="0";return o.join("").concat(t)}var iK=Math.log(2);function Dl(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function a0(r){let e=0,t=0;for(let o=0;o<r.length;o++){let s=r[o];e+=s.byteLength}let n=new Uint8Array(e);for(let o=0;o<r.length;o++){let s=r[o];n.set(new Uint8Array(s),t),t+=s.byteLength}return n.buffer}function Cn(r,e,t,n){return e instanceof Uint8Array?e.byteLength?t<0?(r.error="Wrong parameter: inputOffset less than zero",!1):n<0?(r.error="Wrong parameter: inputLength less than zero",!1):e.byteLength-t-n<0?(r.error="End of input reached before message was fully decoded (inconsistent offset and length values)",!1):!0:(r.error="Wrong parameter: inputBuffer has zero length",!1):(r.error="Wrong parameter: inputBuffer must be 'Uint8Array'",!1)}var ba=class{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return a0(this.items)}},wa=[new Uint8Array([1])],t6="0123456789";var li="",Vr=new ArrayBuffer(0),c0=new Uint8Array(0),Ea="EndOfContent",n6="OCTET STRING",o6="BIT STRING";function Nn(r){var e;return e=class extends r{constructor(...n){var o;super(...n);let s=n[0]||{};this.isHexOnly=(o=s.isHexOnly)!==null&&o!==void 0?o:!1,this.valueHexView=s.valueHex?we.BufferSourceConverter.toUint8Array(s.valueHex):c0}get valueHex(){return this.valueHexView.slice().buffer}set valueHex(n){this.valueHexView=new Uint8Array(n)}fromBER(n,o,s){let i=n instanceof ArrayBuffer?new Uint8Array(n):n;if(!Cn(this,i,o,s))return-1;let a=o+s;return this.valueHexView=i.subarray(o,a),this.valueHexView.length?(this.blockLength=s,a):(this.warnings.push("Zero buffer length"),o)}toBER(n=!1){return this.isHexOnly?n?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.byteLength===this.valueHexView.buffer.byteLength?this.valueHexView.buffer:this.valueHexView.slice().buffer:(this.error="Flag 'isHexOnly' is not set, abort",Vr)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:we.Convert.ToHex(this.valueHexView)}}},e.NAME="hexBlock",e}var Dn=class{constructor({blockLength:e=0,error:t=li,warnings:n=[],valueBeforeDecode:o=c0}={}){this.blockLength=e,this.error=t,this.warnings=n,this.valueBeforeDecodeView=we.BufferSourceConverter.toUint8Array(o)}static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(e){this.valueBeforeDecodeView=new Uint8Array(e)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:we.Convert.ToHex(this.valueBeforeDecodeView)}}};Dn.NAME="baseBlock";var kt=class extends Dn{fromBER(e,t,n){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}toBER(e,t){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}};kt.NAME="valueBlock";var Tl=class extends Nn(Dn){constructor({idBlock:e={}}={}){var t,n,o,s;super(),e?(this.isHexOnly=(t=e.isHexOnly)!==null&&t!==void 0?t:!1,this.valueHexView=e.valueHex?we.BufferSourceConverter.toUint8Array(e.valueHex):c0,this.tagClass=(n=e.tagClass)!==null&&n!==void 0?n:-1,this.tagNumber=(o=e.tagNumber)!==null&&o!==void 0?o:-1,this.isConstructed=(s=e.isConstructed)!==null&&s!==void 0?s:!1):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}toBER(e=!1){let t=0;switch(this.tagClass){case 1:t|=0;break;case 2:t|=64;break;case 3:t|=128;break;case 4:t|=192;break;default:return this.error="Unknown tag class",Vr}if(this.isConstructed&&(t|=32),this.tagNumber<31&&!this.isHexOnly){let o=new Uint8Array(1);if(!e){let s=this.tagNumber;s&=31,t|=s,o[0]=t}return o.buffer}if(!this.isHexOnly){let o=po(this.tagNumber,7),s=new Uint8Array(o),i=o.byteLength,a=new Uint8Array(i+1);if(a[0]=t|31,!e){for(let c=0;c<i-1;c++)a[c+1]=s[c]|128;a[i]=s[i-1]}return a.buffer}let n=new Uint8Array(this.valueHexView.byteLength+1);if(n[0]=t|31,!e){let o=this.valueHexView;for(let s=0;s<o.length-1;s++)n[s+1]=o[s]|128;n[this.valueHexView.byteLength]=o[o.length-1]}return n.buffer}fromBER(e,t,n){let o=we.BufferSourceConverter.toUint8Array(e);if(!Cn(this,o,t,n))return-1;let s=o.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;switch(s[0]&192){case 0:this.tagClass=1;break;case 64:this.tagClass=2;break;case 128:this.tagClass=3;break;case 192:this.tagClass=4;break;default:return this.error="Unknown tag class",-1}this.isConstructed=(s[0]&32)===32,this.isHexOnly=!1;let a=s[0]&31;if(a!==31)this.tagNumber=a,this.blockLength=1;else{let c=1,l=this.valueHexView=new Uint8Array(255),d=255;for(;s[c]&128;){if(l[c-1]=s[c]&127,c++,c>=s.length)return this.error="End of input reached before message was fully decoded",-1;if(c===d){d+=255;let f=new Uint8Array(d);for(let m=0;m<l.length;m++)f[m]=l[m];l=this.valueHexView=new Uint8Array(d)}}this.blockLength=c+1,l[c-1]=s[c]&127;let u=new Uint8Array(c);for(let f=0;f<c;f++)u[f]=l[f];l=this.valueHexView=new Uint8Array(c),l.set(u),this.blockLength<=9?this.tagNumber=ls(l,7):(this.isHexOnly=!0,this.warnings.push("Tag too long, represented as hex-coded"))}if(this.tagClass===1&&this.isConstructed)switch(this.tagNumber){case 1:case 2:case 5:case 6:case 9:case 13:case 14:case 23:case 24:case 31:case 32:case 33:case 34:return this.error="Constructed encoding used for primitive type",-1}return t+this.blockLength}toJSON(){return{...super.toJSON(),tagClass:this.tagClass,tagNumber:this.tagNumber,isConstructed:this.isConstructed}}};Tl.NAME="identificationBlock";var kl=class extends Dn{constructor({lenBlock:e={}}={}){var t,n,o;super(),this.isIndefiniteForm=(t=e.isIndefiniteForm)!==null&&t!==void 0?t:!1,this.longFormUsed=(n=e.longFormUsed)!==null&&n!==void 0?n:!1,this.length=(o=e.length)!==null&&o!==void 0?o:0}fromBER(e,t,n){let o=we.BufferSourceConverter.toUint8Array(e);if(!Cn(this,o,t,n))return-1;let s=o.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;if(s[0]===255)return this.error="Length block 0xFF is reserved by standard",-1;if(this.isIndefiniteForm=s[0]===128,this.isIndefiniteForm)return this.blockLength=1,t+this.blockLength;if(this.longFormUsed=!!(s[0]&128),this.longFormUsed===!1)return this.length=s[0],this.blockLength=1,t+this.blockLength;let i=s[0]&127;if(i>8)return this.error="Too big integer",-1;if(i+1>s.length)return this.error="End of input reached before message was fully decoded",-1;let a=t+1,c=o.subarray(a,a+i);return c[i-1]===0&&this.warnings.push("Needlessly long encoded length"),this.length=ls(c,8),this.longFormUsed&&this.length<=127&&this.warnings.push("Unnecessary usage of long length form"),this.blockLength=i+1,t+this.blockLength}toBER(e=!1){let t,n;if(this.length>127&&(this.longFormUsed=!0),this.isIndefiniteForm)return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=128),t;if(this.longFormUsed){let o=po(this.length,8);if(o.byteLength>127)return this.error="Too big length",Vr;if(t=new ArrayBuffer(o.byteLength+1),e)return t;let s=new Uint8Array(o);n=new Uint8Array(t),n[0]=o.byteLength|128;for(let i=0;i<o.byteLength;i++)n[i+1]=s[i];return t}return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=this.length),t}toJSON(){return{...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,longFormUsed:this.longFormUsed,length:this.length}}};kl.NAME="lengthBlock";var W={},gt=class extends Dn{constructor({name:e=li,optional:t=!1,primitiveSchema:n,...o}={},s){super(o),this.name=e,this.optional=t,n&&(this.primitiveSchema=n),this.idBlock=new Tl(o),this.lenBlock=new kl(o),this.valueBlock=s?new s(o):new kt(o)}fromBER(e,t,n){let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),o)}toBER(e,t){let n=t||new ba;t||s6(this);let o=this.idBlock.toBER(e);if(n.write(o),this.lenBlock.isIndefiniteForm)n.write(new Uint8Array([128]).buffer),this.valueBlock.toBER(e,n),n.write(new ArrayBuffer(2));else{let s=this.valueBlock.toBER(e);this.lenBlock.length=s.byteLength;let i=this.lenBlock.toBER(e);n.write(i),n.write(s)}return t?Vr:n.final()}toJSON(){let e={...super.toJSON(),idBlock:this.idBlock.toJSON(),lenBlock:this.lenBlock.toJSON(),valueBlock:this.valueBlock.toJSON(),name:this.name,optional:this.optional};return this.primitiveSchema&&(e.primitiveSchema=this.primitiveSchema.toJSON()),e}toString(e="ascii"){return e==="ascii"?this.onAsciiEncoding():we.Convert.ToHex(this.toBER())}onAsciiEncoding(){return`${this.constructor.NAME} : ${we.Convert.ToHex(this.valueBlock.valueBeforeDecodeView)}`}isEqual(e){if(this===e)return!0;if(!(e instanceof this.constructor))return!1;let t=this.toBER(),n=e.toBER();return e6(t,n)}};gt.NAME="BaseBlock";function s6(r){if(r instanceof W.Constructed)for(let e of r.valueBlock.value)s6(e)&&(r.lenBlock.isIndefiniteForm=!0);return!!r.lenBlock.isIndefiniteForm}var Cl=class extends gt{constructor({value:e=li,...t}={},n){super(t,n),e&&this.fromString(e)}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}fromBER(e,t,n){let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(this.fromBuffer(this.valueBlock.valueHexView),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),o)}onAsciiEncoding(){return`${this.constructor.NAME} : '${this.valueBlock.value}'`}};Cl.NAME="BaseStringBlock";var Nl=class extends Nn(kt){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}};Nl.NAME="PrimitiveValueBlock";var i6,Ol=class extends gt{constructor(e={}){super(e,Nl),this.idBlock.isConstructed=!1}};i6=Ol;W.Primitive=i6;Ol.NAME="PRIMITIVE";function NR(r,e){if(r instanceof e)return r;let t=new e;return t.idBlock=r.idBlock,t.lenBlock=r.lenBlock,t.warnings=r.warnings,t.valueBeforeDecodeView=r.valueBeforeDecodeView,t}function fu(r,e=0,t=r.length){let n=e,o=new gt({},kt),s=new Dn;if(!Cn(s,r,e,t))return o.error=s.error,{offset:-1,result:o};if(!r.subarray(e,e+t).length)return o.error="Zero buffer length",{offset:-1,result:o};let a=o.idBlock.fromBER(r,e,t);if(o.idBlock.warnings.length&&o.warnings.concat(o.idBlock.warnings),a===-1)return o.error=o.idBlock.error,{offset:-1,result:o};if(e=a,t-=o.idBlock.blockLength,a=o.lenBlock.fromBER(r,e,t),o.lenBlock.warnings.length&&o.warnings.concat(o.lenBlock.warnings),a===-1)return o.error=o.lenBlock.error,{offset:-1,result:o};if(e=a,t-=o.lenBlock.blockLength,!o.idBlock.isConstructed&&o.lenBlock.isIndefiniteForm)return o.error="Indefinite length form used for primitive encoding form",{offset:-1,result:o};let c=gt;switch(o.idBlock.tagClass){case 1:if(o.idBlock.tagNumber>=37&&o.idBlock.isHexOnly===!1)return o.error="UNIVERSAL 37 and upper tags are reserved by ASN.1 standard",{offset:-1,result:o};switch(o.idBlock.tagNumber){case 0:if(o.idBlock.isConstructed&&o.lenBlock.length>0)return o.error="Type [UNIVERSAL 0] is reserved",{offset:-1,result:o};c=W.EndOfContent;break;case 1:c=W.Boolean;break;case 2:c=W.Integer;break;case 3:c=W.BitString;break;case 4:c=W.OctetString;break;case 5:c=W.Null;break;case 6:c=W.ObjectIdentifier;break;case 10:c=W.Enumerated;break;case 12:c=W.Utf8String;break;case 13:c=W.RelativeObjectIdentifier;break;case 14:c=W.TIME;break;case 15:return o.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:o};case 16:c=W.Sequence;break;case 17:c=W.Set;break;case 18:c=W.NumericString;break;case 19:c=W.PrintableString;break;case 20:c=W.TeletexString;break;case 21:c=W.VideotexString;break;case 22:c=W.IA5String;break;case 23:c=W.UTCTime;break;case 24:c=W.GeneralizedTime;break;case 25:c=W.GraphicString;break;case 26:c=W.VisibleString;break;case 27:c=W.GeneralString;break;case 28:c=W.UniversalString;break;case 29:c=W.CharacterString;break;case 30:c=W.BmpString;break;case 31:c=W.DATE;break;case 32:c=W.TimeOfDay;break;case 33:c=W.DateTime;break;case 34:c=W.Duration;break;default:{let l=o.idBlock.isConstructed?new W.Constructed:new W.Primitive;l.idBlock=o.idBlock,l.lenBlock=o.lenBlock,l.warnings=o.warnings,o=l}}break;case 2:case 3:case 4:default:c=o.idBlock.isConstructed?W.Constructed:W.Primitive}return o=NR(o,c),a=o.fromBER(r,e,o.lenBlock.isIndefiniteForm?t:o.lenBlock.length),o.valueBeforeDecodeView=r.subarray(n,n+o.blockLength),{offset:a,result:o}}function ui(r){if(!r.byteLength){let e=new gt({},kt);return e.error="Input buffer has zero length",{offset:-1,result:e}}return fu(we.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength)}function OR(r,e){return r?1:e}var rn=class extends kt{constructor({value:e=[],isIndefiniteForm:t=!1,...n}={}){super(n),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,n){let o=we.BufferSourceConverter.toUint8Array(e);if(!Cn(this,o,t,n))return-1;if(this.valueBeforeDecodeView=o.subarray(t,t+n),this.valueBeforeDecodeView.length===0)return this.warnings.push("Zero buffer length"),t;let s=t;for(;OR(this.isIndefiniteForm,n)>0;){let i=fu(o,s,n);if(i.offset===-1)return this.error=i.result.error,this.warnings.concat(i.result.warnings),-1;if(s=i.offset,this.blockLength+=i.result.blockLength,n-=i.result.blockLength,this.value.push(i.result),this.isIndefiniteForm&&i.result.constructor.NAME===Ea)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===Ea?this.value.pop():this.warnings.push("No EndOfContent block encoded")),s}toBER(e,t){let n=t||new ba;for(let o=0;o<this.value.length;o++)this.value[o].toBER(e,n);return t?Vr:n.final()}toJSON(){let e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let t of this.value)e.value.push(t.toJSON());return e}};rn.NAME="ConstructedValueBlock";var a6,mo=class extends gt{constructor(e={}){super(e,rn),this.idBlock.isConstructed=!0}fromBER(e,t,n){this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm;let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),o)}onAsciiEncoding(){let e=[];for(let n of this.valueBlock.value)e.push(n.toString("ascii").split(`
|
|
18
18
|
`).map(o=>` ${o}`).join(`
|
|
19
19
|
`));let t=this.idBlock.tagClass===3?`[${this.idBlock.tagNumber}]`:this.constructor.NAME;return e.length?`${t} :
|
|
20
20
|
${e.join(`
|
|
21
|
-
`)}`:`${t} :`}};qg=fs;Z.Constructed=qg;fs.NAME="CONSTRUCTED";var ef=class extends Wt{fromBER(e,t,n){return t}toBER(e){return ln}};ef.override="EndOfContentValueBlock";var Hg,tf=class extends Nt{constructor(e={}){super(e,ef),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};Hg=tf;Z.EndOfContent=Hg;tf.NAME=sl;var $g,Ne=class extends Nt{constructor(e={}){super(e,Wt),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(e,t,n){return this.lenBlock.length>0&&this.warnings.push("Non-zero length of value block for Null type"),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=n,t+n>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+n}toBER(e,t){let n=new ArrayBuffer(2);if(!e){let o=new Uint8Array(n);o[0]=5,o[1]=0}return t&&t.write(n),n}onAsciiEncoding(){return`${this.constructor.NAME}`}};$g=Ne;Z.Null=$g;Ne.NAME="NULL";var rf=class extends vo(Wt){constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=ke.BufferSourceConverter.toUint8Array(t.valueHex):this.valueHexView=new Uint8Array(1),e&&(this.value=e)}get value(){for(let e of this.valueHexView)if(e>0)return!0;return!1}set value(e){this.valueHexView[0]=e?255:0}fromBER(e,t,n){let o=ke.BufferSourceConverter.toUint8Array(e);return xo(this,o,t,n)?(this.valueHexView=o.subarray(t,t+n),n>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,U0.call(this),this.blockLength=n,t+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};rf.NAME="BooleanValueBlock";var Gg,nf=class extends Nt{constructor(e={}){super(e,rf),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}};Gg=nf;Z.Boolean=Gg;nf.NAME="BOOLEAN";var of=class extends vo(In){constructor({isConstructed:e=!1,...t}={}){super(t),this.isConstructed=e}fromBER(e,t,n){let o=0;if(this.isConstructed){if(this.isHexOnly=!1,o=In.prototype.fromBER.call(this,e,t,n),o===-1)return o;for(let s=0;s<this.value.length;s++){let i=this.value[s].constructor.NAME;if(i===sl){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(i!==Mg)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,o=super.fromBER(e,t,n),this.blockLength=n;return o}toBER(e,t){return this.isConstructed?In.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};of.NAME="OctetStringValueBlock";var Yg,Se=class r extends Nt{constructor({idBlock:e={},lenBlock:t={},...n}={}){var o,s;(o=n.isConstructed)!==null&&o!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},of),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(e,t,n){if(this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,n===0)return this.idBlock.error.length===0&&(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length===0&&(this.blockLength+=this.lenBlock.blockLength),t;if(!this.valueBlock.isConstructed){let s=(e instanceof ArrayBuffer?new Uint8Array(e):e).subarray(t,t+n);try{if(s.byteLength){let i=Nf(s,0,s.byteLength);i.offset!==-1&&i.offset===n&&(this.valueBlock.value=[i.result])}}catch{}}return super.fromBER(e,t,n)}onAsciiEncoding(){return this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length?fs.prototype.onAsciiEncoding.call(this):`${this.constructor.NAME} : ${ke.Convert.ToHex(this.valueBlock.valueHexView)}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;let e=[];for(let t of this.valueBlock.value)t instanceof r&&e.push(t.valueBlock.valueHexView);return ke.BufferSourceConverter.concat(e)}};Yg=Se;Z.OctetString=Yg;Se.NAME=Mg;var sf=class extends vo(In){constructor({unusedBits:e=0,isConstructed:t=!1,...n}={}){super(n),this.unusedBits=e,this.isConstructed=t,this.blockLength=this.valueHexView.byteLength}fromBER(e,t,n){if(!n)return t;let o=-1;if(this.isConstructed){if(o=In.prototype.fromBER.call(this,e,t,n),o===-1)return o;for(let a of this.value){let c=a.constructor.NAME;if(c===sl){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(c!==Ug)return this.error="BIT STRING may consists of BIT STRINGs only",-1;let l=a.valueBlock;if(this.unusedBits>0&&l.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=l.unusedBits}return o}let s=ke.BufferSourceConverter.toUint8Array(e);if(!xo(this,s,t,n))return-1;let i=s.subarray(t,t+n);if(this.unusedBits=i[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;if(!this.unusedBits){let a=i.subarray(1);try{if(a.byteLength){let c=Nf(a,0,a.byteLength);c.offset!==-1&&c.offset===n-1&&(this.value=[c.result])}}catch{}}return this.valueHexView=i.subarray(1),this.blockLength=i.length,t+n}toBER(e,t){if(this.isConstructed)return In.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength)return ln;let n=new Uint8Array(this.valueHexView.length+1);return n[0]=this.unusedBits,n.set(this.valueHexView,1),n.buffer}toJSON(){return{...super.toJSON(),unusedBits:this.unusedBits,isConstructed:this.isConstructed}}};sf.NAME="BitStringValueBlock";var Wg,kt=class extends Nt{constructor({idBlock:e={},lenBlock:t={},...n}={}){var o,s;(o=n.isConstructed)!==null&&o!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},sf),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(e,t,n){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(e,t,n)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return fs.prototype.onAsciiEncoding.call(this);{let e=[],t=this.valueBlock.valueHexView;for(let o of t)e.push(o.toString(2).padStart(8,"0"));let n=e.join("");return`${this.constructor.NAME} : ${n.substring(0,n.length-this.valueBlock.unusedBits)}`}}};Wg=kt;Z.BitString=Wg;kt.NAME=Ug;var zg;function MP(r,e){let t=new Uint8Array([0]),n=new Uint8Array(r),o=new Uint8Array(e),s=n.slice(0),i=s.length-1,a=o.slice(0),c=a.length-1,l=0,f=c<i?i:c,u=0;for(let d=f;d>=0;d--,u++){switch(!0){case u<a.length:l=s[i-u]+a[c-u]+t[0];break;default:l=s[i-u]+t[0]}switch(t[0]=l/10,!0){case u>=s.length:s=W1(new Uint8Array([l%10]),s);break;default:s[i-u]=l%10}}return t[0]>0&&(s=W1(t,s)),s}function Kg(r){if(r>=nl.length)for(let e=nl.length;e<=r;e++){let t=new Uint8Array([0]),n=nl[e-1].slice(0);for(let o=n.length-1;o>=0;o--){let s=new Uint8Array([(n[o]<<1)+t[0]]);t[0]=s[0]/10,n[o]=s[0]%10}t[0]>0&&(n=W1(t,n)),nl.push(n)}return nl[r]}function UP(r,e){let t=0,n=new Uint8Array(r),o=new Uint8Array(e),s=n.slice(0),i=s.length-1,a=o.slice(0),c=a.length-1,l,f=0;for(let u=c;u>=0;u--,f++)switch(l=s[i-f]-a[c-f]-t,!0){case l<0:t=1,s[i-f]=l+10;break;default:t=0,s[i-f]=l}if(t>0)for(let u=i-c+1;u>=0;u--,f++)if(l=s[i-f]-t,l<0)t=1,s[i-f]=l+10;else{t=0,s[i-f]=l;break}return s.slice()}var il=class extends vo(Wt){constructor({value:e,...t}={}){super(t),this._valueDec=0,t.valueHex&&this.setValueHex(),e!==void 0&&(this.valueDec=e)}setValueHex(){this.valueHexView.length>=4?(this.warnings.push("Too big Integer for decoding, hex only"),this.isHexOnly=!0,this._valueDec=0):(this.isHexOnly=!1,this.valueHexView.length>0&&(this._valueDec=U0.call(this)))}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(Bg(e))}get valueDec(){return this._valueDec}fromDER(e,t,n,o=0){let s=this.fromBER(e,t,n);if(s===-1)return s;let i=this.valueHexView;return i[0]===0&&i[1]&128?this.valueHexView=i.subarray(1):o!==0&&i.length<o&&(o-i.length>1&&(o=i.length+1),this.valueHexView=i.subarray(o-i.length)),s}toDER(e=!1){let t=this.valueHexView;switch(!0){case(t[0]&128)!==0:{let n=new Uint8Array(this.valueHexView.length+1);n[0]=0,n.set(t,1),this.valueHexView=n}break;case(t[0]===0&&(t[1]&128)===0):this.valueHexView=this.valueHexView.subarray(1);break}return this.toBER(e)}fromBER(e,t,n){let o=super.fromBER(e,t,n);return o===-1||this.setValueHex(),o}toBER(e){return e?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){let e=this.valueHexView.length*8-1,t=new Uint8Array(this.valueHexView.length*8/3),n=0,o,s=this.valueHexView,i="",a=!1;for(let c=s.byteLength-1;c>=0;c--){o=s[c];for(let l=0;l<8;l++){if((o&1)===1)switch(n){case e:t=UP(Kg(n),t),i="-";break;default:t=MP(t,Kg(n))}n++,o>>=1}}for(let c=0;c<t.length;c++)t[c]&&(a=!0),a&&(i+=Og.charAt(t[c]));return a===!1&&(i+=Og.charAt(0)),i}};zg=il;il.NAME="IntegerValueBlock";Object.defineProperty(zg.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var jg,B=class r extends Nt{constructor(e={}){super(e,il),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return z1(),BigInt(this.valueBlock.toString())}static fromBigInt(e){z1();let t=BigInt(e),n=new ol,o=t.toString(16).replace(/^-/,""),s=new Uint8Array(ke.Convert.FromHex(o));if(t<0){let a=new Uint8Array(s.length+(s[0]&128?1:0));a[0]|=128;let l=BigInt(`0x${ke.Convert.ToHex(a)}`)+t,f=ke.BufferSourceConverter.toUint8Array(ke.Convert.FromHex(l.toString(16)));f[0]|=128,n.write(f)}else s[0]&128&&n.write(new Uint8Array([0])),n.write(s);return new r({valueHex:n.final()})}convertToDER(){let e=new r({valueHex:this.valueBlock.valueHexView});return e.valueBlock.toDER(),e}convertFromDER(){return new r({valueHex:this.valueBlock.valueHexView[0]===0?this.valueBlock.valueHexView.subarray(1):this.valueBlock.valueHexView})}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()}`}};jg=B;Z.Integer=jg;B.NAME="INTEGER";var Xg,af=class extends B{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};Xg=af;Z.Enumerated=Xg;af.NAME="ENUMERATED";var al=class extends vo(Wt){constructor({valueDec:e=-1,isFirstSid:t=!1,...n}={}){super(n),this.valueDec=e,this.isFirstSid=t}fromBER(e,t,n){if(!n)return t;let o=ke.BufferSourceConverter.toUint8Array(e);if(!xo(this,o,t,n))return-1;let s=o.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,!!(s[a]&128));a++);let i=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)i[a]=this.valueHexView[a];return this.valueHexView=i,s[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=fi(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){z1();let t=BigInt(e).toString(2);for(;t.length%7;)t="0"+t;let n=new Uint8Array(t.length/7);for(let o=0;o<n.length;o++)n[o]=parseInt(t.slice(o*7,o*7+7),2)+(o+1<n.length?128:0);this.fromBER(n.buffer,0,n.length)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let o=this.valueHexView,s=new Uint8Array(this.blockLength);for(let i=0;i<this.blockLength-1;i++)s[i]=o[i]|128;return s[this.blockLength-1]=o[this.blockLength-1],s.buffer}let t=us(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",ln;let n=new Uint8Array(t.byteLength);if(!e){let o=new Uint8Array(t),s=t.byteLength-1;for(let i=0;i<s;i++)n[i]=o[i]|128;n[s]=o[s]}return n}toString(){let e="";if(this.isHexOnly)e=ke.Convert.ToHex(this.valueHexView);else if(this.isFirstSid){let t=this.valueDec;this.valueDec<=39?e="0.":this.valueDec<=79?(e="1.",t-=40):(e="2.",t-=80),e+=t.toString()}else e=this.valueDec.toString();return e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}};al.NAME="sidBlock";var cf=class extends Wt{constructor({value:e=va,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let o=t;for(;n>0;){let s=new al;if(o=s.fromBER(e,o,n),o===-1)return this.blockLength=0,this.error=s.error,o;this.value.length===0&&(s.isFirstSid=!0),this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return o}toBER(e){let t=[];for(let n=0;n<this.value.length;n++){let o=this.value[n].toBER(e);if(o.byteLength===0)return this.error=this.value[n].error,ln;t.push(o)}return F0(t)}fromString(e){this.value=[];let t=0,n=0,o="",s=!1;do if(n=e.indexOf(".",t),n===-1?o=e.substring(t):o=e.substring(t,n),t=n+1,s){let i=this.value[0],a=0;switch(i.valueDec){case 0:break;case 1:a=40;break;case 2:a=80;break;default:this.value=[];return}let c=parseInt(o,10);if(isNaN(c))return;i.valueDec=c+a,s=!1}else{let i=new al;if(o>Number.MAX_SAFE_INTEGER){z1();let a=BigInt(o);i.valueBigInt=a}else if(i.valueDec=parseInt(o,10),isNaN(i.valueDec))return;this.value.length||(i.isFirstSid=!0,s=!0),this.value.push(i)}while(n!==-1)}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let o=this.value[n].toString();n!==0&&(e=`${e}.`),t?(o=`{${o}}`,this.value[n].isFirstSid?e=`2.{${o} - 80}`:e+=o):e+=o}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};cf.NAME="ObjectIdentifierValueBlock";var Qg,ae=class extends Nt{constructor(e={}){super(e,cf),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};Qg=ae;Z.ObjectIdentifier=Qg;ae.NAME="OBJECT IDENTIFIER";var cl=class extends vo(wo){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,n){if(n===0)return t;let o=ke.BufferSourceConverter.toUint8Array(e);if(!xo(this,o,t,n))return-1;let s=o.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,!!(s[a]&128));a++);let i=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)i[a]=this.valueHexView[a];return this.valueHexView=i,s[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=fi(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let o=this.valueHexView,s=new Uint8Array(this.blockLength);for(let i=0;i<this.blockLength-1;i++)s[i]=o[i]|128;return s[this.blockLength-1]=o[this.blockLength-1],s.buffer}let t=us(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",ln;let n=new Uint8Array(t.byteLength);if(!e){let o=new Uint8Array(t),s=t.byteLength-1;for(let i=0;i<s;i++)n[i]=o[i]|128;n[s]=o[s]}return n.buffer}toString(){let e="";return this.isHexOnly?e=ke.Convert.ToHex(this.valueHexView):e=this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};cl.NAME="relativeSidBlock";var lf=class extends Wt{constructor({value:e=va,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let o=t;for(;n>0;){let s=new cl;if(o=s.fromBER(e,o,n),o===-1)return this.blockLength=0,this.error=s.error,o;this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return o}toBER(e,t){let n=[];for(let o=0;o<this.value.length;o++){let s=this.value[o].toBER(e);if(s.byteLength===0)return this.error=this.value[o].error,ln;n.push(s)}return F0(n)}fromString(e){this.value=[];let t=0,n=0,o="";do{n=e.indexOf(".",t),n===-1?o=e.substring(t):o=e.substring(t,n),t=n+1;let s=new cl;if(s.valueDec=parseInt(o,10),isNaN(s.valueDec))return!0;this.value.push(s)}while(n!==-1);return!0}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let o=this.value[n].toString();n!==0&&(e=`${e}.`),t&&(o=`{${o}}`),e+=o}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};lf.NAME="RelativeObjectIdentifierValueBlock";var Jg,uf=class extends Nt{constructor(e={}){super(e,lf),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};Jg=uf;Z.RelativeObjectIdentifier=Jg;uf.NAME="RelativeObjectIdentifier";var Zg,M=class extends fs{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};Zg=M;Z.Sequence=Zg;M.NAME="SEQUENCE";var e7,ff=class extends fs{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};e7=ff;Z.Set=e7;ff.NAME="SET";var df=class extends vo(Wt){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=va}toJSON(){return{...super.toJSON(),value:this.value}}};df.NAME="StringValueBlock";var hf=class extends df{};hf.NAME="SimpleStringValueBlock";var Jt=class extends Q1{constructor({...e}={}){super(e,hf)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,ke.BufferSourceConverter.toUint8Array(e))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=e.charCodeAt(o);this.valueBlock.value=e}};Jt.NAME="SIMPLE STRING";var pf=class extends Jt{fromBuffer(e){this.valueBlock.valueHexView=ke.BufferSourceConverter.toUint8Array(e);try{this.valueBlock.value=ke.Convert.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=ke.Convert.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(ke.Convert.FromUtf8String(e)),this.valueBlock.value=e}};pf.NAME="Utf8StringValueBlock";var t7,Eo=class extends pf{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};t7=Eo;Z.Utf8String=t7;Eo.NAME="UTF8String";var mf=class extends Jt{fromBuffer(e){this.valueBlock.value=ke.Convert.ToUtf16String(e),this.valueBlock.valueHexView=ke.BufferSourceConverter.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(ke.Convert.FromUtf16String(e))}};mf.NAME="BmpStringValueBlock";var r7,yf=class extends mf{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};r7=yf;Z.BmpString=r7;yf.NAME="BMPString";var gf=class extends Jt{fromBuffer(e){let t=ArrayBuffer.isView(e)?e.slice().buffer:e.slice(0),n=new Uint8Array(t);for(let o=0;o<n.length;o+=4)n[o]=n[o+3],n[o+1]=n[o+2],n[o+2]=0,n[o+3]=0;this.valueBlock.value=String.fromCharCode.apply(null,new Uint32Array(t))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t*4);for(let o=0;o<t;o++){let s=us(e.charCodeAt(o),8),i=new Uint8Array(s);if(i.length>4)continue;let a=4-i.length;for(let c=i.length-1;c>=0;c--)n[o*4+c+a]=i[c]}this.valueBlock.value=e}};gf.NAME="UniversalStringValueBlock";var n7,bf=class extends gf{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};n7=bf;Z.UniversalString=n7;bf.NAME="UniversalString";var o7,wf=class extends Jt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};o7=wf;Z.NumericString=o7;wf.NAME="NumericString";var s7,Ef=class extends Jt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};s7=Ef;Z.PrintableString=s7;Ef.NAME="PrintableString";var i7,xf=class extends Jt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};i7=xf;Z.TeletexString=i7;xf.NAME="TeletexString";var a7,vf=class extends Jt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};a7=vf;Z.VideotexString=a7;vf.NAME="VideotexString";var c7,_f=class extends Jt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};c7=_f;Z.IA5String=c7;_f.NAME="IA5String";var l7,Sf=class extends Jt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};l7=Sf;Z.GraphicString=l7;Sf.NAME="GraphicString";var u7,ll=class extends Jt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};u7=ll;Z.VisibleString=u7;ll.NAME="VisibleString";var f7,Rf=class extends Jt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};f7=Rf;Z.GeneralString=f7;Rf.NAME="GeneralString";var d7,Af=class extends Jt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};d7=Af;Z.CharacterString=d7;Af.NAME="CharacterString";var h7,ul=class extends ll{constructor({value:e,valueDate:t,...n}={}){if(super(n),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,e){this.fromString(e),this.valueBlock.valueHexView=new Uint8Array(e.length);for(let o=0;o<e.length;o++)this.valueBlock.valueHexView[o]=e.charCodeAt(o)}t&&(this.fromDate(t),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(e){this.fromString(String.fromCharCode.apply(null,ke.BufferSourceConverter.toUint8Array(e)))}toBuffer(){let e=this.toString(),t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let o=0;o<e.length;o++)n[o]=e.charCodeAt(o);return t}fromDate(e){this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(e){let n=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/ig.exec(e);if(n===null){this.error="Wrong input string for conversion";return}let o=parseInt(n[1],10);o>=50?this.year=1900+o:this.year=2e3+o,this.month=parseInt(n[2],10),this.day=parseInt(n[3],10),this.hour=parseInt(n[4],10),this.minute=parseInt(n[5],10),this.second=parseInt(n[6],10)}toString(e="iso"){if(e==="iso"){let t=new Array(7);return t[0]=lr(this.year<2e3?this.year-1900:this.year-2e3,2),t[1]=lr(this.month,2),t[2]=lr(this.day,2),t[3]=lr(this.hour,2),t[4]=lr(this.minute,2),t[5]=lr(this.second,2),t[6]="Z",t.join("")}return super.toString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.toDate().toISOString()}`}toJSON(){return{...super.toJSON(),year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second}}};h7=ul;Z.UTCTime=h7;ul.NAME="UTCTime";var p7,If=class extends ul{constructor(e={}){var t;super(e),(t=this.millisecond)!==null&&t!==void 0||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(e){super.fromDate(e),this.millisecond=e.getUTCMilliseconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond))}fromString(e){let t=!1,n="",o="",s=0,i,a=0,c=0;if(e[e.length-1]==="Z")n=e.substring(0,e.length-1),t=!0;else{let u=new Number(e[e.length-1]);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");n=e}if(t){if(n.indexOf("+")!==-1)throw new Error("Wrong input string for conversion");if(n.indexOf("-")!==-1)throw new Error("Wrong input string for conversion")}else{let u=1,d=n.indexOf("+"),y="";if(d===-1&&(d=n.indexOf("-"),u=-1),d!==-1){if(y=n.substring(d+1),n=n.substring(0,d),y.length!==2&&y.length!==4)throw new Error("Wrong input string for conversion");let p=parseInt(y.substring(0,2),10);if(isNaN(p.valueOf()))throw new Error("Wrong input string for conversion");if(a=u*p,y.length===4){if(p=parseInt(y.substring(2,4),10),isNaN(p.valueOf()))throw new Error("Wrong input string for conversion");c=u*p}}}let l=n.indexOf(".");if(l===-1&&(l=n.indexOf(",")),l!==-1){let u=new Number(`0${n.substring(l)}`);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");s=u.valueOf(),o=n.substring(0,l)}else o=n;switch(!0){case o.length===8:if(i=/(\d{4})(\d{2})(\d{2})/ig,l!==-1)throw new Error("Wrong input string for conversion");break;case o.length===10:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=60*s;this.minute=Math.floor(u),u=60*(u-this.minute),this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case o.length===12:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=60*s;this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case o.length===14:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=1e3*s;this.millisecond=Math.floor(u)}break;default:throw new Error("Wrong input string for conversion")}let f=i.exec(o);if(f===null)throw new Error("Wrong input string for conversion");for(let u=1;u<f.length;u++)switch(u){case 1:this.year=parseInt(f[u],10);break;case 2:this.month=parseInt(f[u],10);break;case 3:this.day=parseInt(f[u],10);break;case 4:this.hour=parseInt(f[u],10)+a;break;case 5:this.minute=parseInt(f[u],10)+c;break;case 6:this.second=parseInt(f[u],10);break;default:throw new Error("Wrong input string for conversion")}if(t===!1){let u=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=u.getUTCFullYear(),this.month=u.getUTCMonth(),this.day=u.getUTCDay(),this.hour=u.getUTCHours(),this.minute=u.getUTCMinutes(),this.second=u.getUTCSeconds(),this.millisecond=u.getUTCMilliseconds()}}toString(e="iso"){if(e==="iso"){let t=[];return t.push(lr(this.year,4)),t.push(lr(this.month,2)),t.push(lr(this.day,2)),t.push(lr(this.hour,2)),t.push(lr(this.minute,2)),t.push(lr(this.second,2)),this.millisecond!==0&&(t.push("."),t.push(lr(this.millisecond,3))),t.push("Z"),t.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};p7=If;Z.GeneralizedTime=p7;If.NAME="GeneralizedTime";var m7,kf=class extends Eo{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};m7=kf;Z.DATE=m7;kf.NAME="DATE";var y7,Tf=class extends Eo{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};y7=Tf;Z.TimeOfDay=y7;Tf.NAME="TimeOfDay";var g7,Df=class extends Eo{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};g7=Df;Z.DateTime=g7;Df.NAME="DateTime";var b7,Pf=class extends Eo{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};b7=Pf;Z.Duration=b7;Pf.NAME="Duration";var w7,Cf=class extends Eo{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};w7=Cf;Z.TIME=w7;Cf.NAME="TIME";function FP(r){let{result:e}=Ee(r),t=e.valueBlock.value;return{n:v(kn(t[1].toBigInt()),"base64url"),e:v(kn(t[2].toBigInt()),"base64url"),d:v(kn(t[3].toBigInt()),"base64url"),p:v(kn(t[4].toBigInt()),"base64url"),q:v(kn(t[5].toBigInt()),"base64url"),dp:v(kn(t[6].toBigInt()),"base64url"),dq:v(kn(t[7].toBigInt()),"base64url"),qi:v(kn(t[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function VP(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 h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new B({value:0}),B.fromBigInt(Tn(x(r.n,"base64url"))),B.fromBigInt(Tn(x(r.e,"base64url"))),B.fromBigInt(Tn(x(r.d,"base64url"))),B.fromBigInt(Tn(x(r.p,"base64url"))),B.fromBigInt(Tn(x(r.q,"base64url"))),B.fromBigInt(Tn(x(r.dp,"base64url"))),B.fromBigInt(Tn(x(r.dq,"base64url"))),B.fromBigInt(Tn(x(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function qP(r){let{result:e}=Ee(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:v(kn(t[0].toBigInt()),"base64url"),e:v(kn(t[1].toBigInt()),"base64url")}}function HP(r){if(r.n==null||r.e==null)throw new h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new kt({valueHex:new M({value:[B.fromBigInt(Tn(x(r.n,"base64url"))),B.fromBigInt(Tn(x(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function kn(r){let e=r.toString(16);e.length%2>0&&(e=`0${e}`);let t=e.length/2,n=new Uint8Array(t),o=0,s=0;for(;o<t;)n[o]=parseInt(e.slice(s,s+2),16),o+=1,s+=2;return n}function Tn(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}var $P=16,q0=32,H0=1e4;async function GP(r,e){let t=Qt.get(),o=new M({value:[new B({value:0}),new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new Se({valueHex:r.marshal()})]}).toBER(),s=new Uint8Array(o,0,o.byteLength),i=ui($P),a=await pt(Ye,e,i,{c:H0,dkLen:q0}),c=ui(16),l=await t.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),f=await t.subtle.encrypt({name:"AES-CBC",iv:c},l,s),u=new M({value:[new Se({valueHex:i}),new B({value:H0}),new B({value:q0}),new M({value:[new ae({value:"1.2.840.113549.2.11"}),new Ne]})]}),d=new M({value:[new ae({value:"1.2.840.113549.1.5.13"}),new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.5.12"}),u]}),new M({value:[new ae({value:"2.16.840.1.101.3.4.1.42"}),new Se({valueHex:c})]})]})]}),p=new M({value:[d,new Se({valueHex:f})]}).toBER(),m=new Uint8Array(p,0,p.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...v(m,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
|
|
22
|
-
`)}async function YP(r,e){let t=Qt.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o),{iv:i,salt:a,iterations:c,keySize:l,cipherText:f}=WP(s),u=await pt(Ye,e,a,{c,dkLen:l}),d=await t.subtle.importKey("raw",u,"AES-CBC",!1,["decrypt"]),y=fl(await t.subtle.decrypt({name:"AES-CBC",iv:i},d,f)),{result:p}=Ee(y);n=E7(p)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o);n=E7(s)}else throw new h("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return $0(n)}function WP(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new h("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new h("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let s=n.valueBlock.value[1],i=fl(s.valueBlock.value[0].getValue()),a=H0,c=q0;if(s.valueBlock.value.length===3)a=Number(s.valueBlock.value[1].toBigInt()),c=Number(s.valueBlock.value[2].toBigInt());else if(s.valueBlock.value.length===2)throw new h("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let l=e.valueBlock.value[1].valueBlock.value[1],f=l.valueBlock.value[0].toString();if(f!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(f!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new h("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let u=fl(l.valueBlock.value[1].getValue());return{cipherText:fl(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:u}}function E7(r){return fl(r.valueBlock.value[2].getValue())}function fl(r){return new Uint8Array(r,0,r.byteLength)}async function x7(r){let e=await Qt.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await S7(e);return{privateKey:t[0],publicKey:t[1]}}async function G0(r){let t=[await Qt.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await zP(r)],n=await S7({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function v7(r,e){let t=await Qt.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await Qt.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function _7(r,e,t){let n=await Qt.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return Qt.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function S7(r){if(r.privateKey==null||r.publicKey==null)throw new h("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([Qt.get().subtle.exportKey("jwk",r.privateKey),Qt.get().subtle.exportKey("jwk",r.publicKey)])}async function zP(r){return Qt.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function Bf(r){if(r.kty!=="RSA")throw new h("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new h("invalid key modulus","ERR_INVALID_KEY_MODULUS");return x(r.n,"base64url").length*8}var hl=8192,dl=class{_key;constructor(e){this._key=e}verify(e,t){return _7(this._key,t,e)}marshal(){return ds.jwkToPkix(this._key)}get bytes(){return An.encode({Type:ht.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Cr(e)?e.then(({bytes:t})=>t):e.bytes}},_a=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return ui(16)}sign(e){return v7(this._key,e)}get public(){if(this._publicKey==null)throw new h("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new dl(this._publicKey)}marshal(){return ds.jwkToPkcs1(this._key)}get bytes(){return go.encode({Type:ht.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Cr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return ds.exportToPem(this,e);if(t==="libp2p-key")return wa(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function $0(r){let e=ds.pkcs1ToJwk(r);if(Bf(e)>hl)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await G0(e);return new _a(t.privateKey,t.publicKey)}function XP(r){let e=ds.pkixToJwk(r);if(Bf(e)>hl)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new dl(e)}async function QP(r){if(Bf(r)>hl)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await G0(r);return new _a(e.privateKey,e.publicKey)}async function JP(r){if(r>hl)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await x7(r);return new _a(e.privateKey,e.publicKey)}var Q0={};oe(Q0,{Secp256k1PrivateKey:()=>ml,Secp256k1PublicKey:()=>pl,generateKeyPair:()=>hC,unmarshalSecp256k1PrivateKey:()=>fC,unmarshalSecp256k1PublicKey:()=>dC});var ZP=(r,e,t)=>r&e^~r&t,eC=(r,e,t)=>r&e^r&t^e&t,tC=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),hs=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),ps=new Uint32Array(64),W0=class extends ss{constructor(){super(64,32,8,!1),this.A=hs[0]|0,this.B=hs[1]|0,this.C=hs[2]|0,this.D=hs[3]|0,this.E=hs[4]|0,this.F=hs[5]|0,this.G=hs[6]|0,this.H=hs[7]|0}get(){let{A:e,B:t,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[e,t,n,o,s,i,a,c]}set(e,t,n,o,s,i,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,t){for(let u=0;u<16;u++,t+=4)ps[u]=e.getUint32(t,!1);for(let u=16;u<64;u++){let d=ps[u-15],y=ps[u-2],p=nn(d,7)^nn(d,18)^d>>>3,m=nn(y,17)^nn(y,19)^y>>>10;ps[u]=m+ps[u-7]+p+ps[u-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:l,H:f}=this;for(let u=0;u<64;u++){let d=nn(a,6)^nn(a,11)^nn(a,25),y=f+d+ZP(a,c,l)+tC[u]+ps[u]|0,m=(nn(n,2)^nn(n,13)^nn(n,22))+eC(n,o,s)|0;f=l,l=c,c=a,a=i+y|0,i=s,s=o,o=n,n=y+m|0}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,f=f+this.H|0,this.set(n,o,s,i,a,c,l,f)}roundClean(){ps.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var ms=ga(()=>new W0);function rC(r){let e=Jc(r);Nr(e,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:t,Fp:n,a:o}=e;if(t){if(!n.eql(o,n.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if(typeof t!="object"||typeof t.beta!="bigint"||typeof t.splitScalar!="function")throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...e})}var{bytesToNumberBE:nC,hexToBytes:oC}=O1,hi={Err:class extends Error{constructor(e=""){super(e)}},_parseInt(r){let{Err:e}=hi;if(r.length<2||r[0]!==2)throw new e("Invalid signature integer tag");let t=r[1],n=r.subarray(2,t+2);if(!t||n.length!==t)throw new e("Invalid signature integer: wrong length");if(n[0]&128)throw new e("Invalid signature integer: negative");if(n[0]===0&&!(n[1]&128))throw new e("Invalid signature integer: unnecessary leading zero");return{d:nC(n),l:r.subarray(t+2)}},toSig(r){let{Err:e}=hi,t=typeof r=="string"?oC(r):r;if(!sn(t))throw new Error("ui8a expected");let n=t.length;if(n<2||t[0]!=48)throw new e("Invalid signature tag");if(t[1]!==n-2)throw new e("Invalid signature: incorrect length");let{d:o,l:s}=hi._parseInt(t.subarray(2)),{d:i,l:a}=hi._parseInt(s);if(a.length)throw new e("Invalid signature: left bytes after parsing");return{r:o,s:i}},hexFromSig(r){let e=l=>Number.parseInt(l[0],16)&8?"00"+l:l,t=l=>{let f=l.toString(16);return f.length&1?`0${f}`:f},n=e(t(r.s)),o=e(t(r.r)),s=n.length/2,i=o.length/2,a=t(s),c=t(i);return`30${t(i+s+4)}02${c}${o}02${a}${n}`}},_o=BigInt(0),Lr=BigInt(1),zj=BigInt(2),R7=BigInt(3),jj=BigInt(4);function sC(r){let e=rC(r),{Fp:t}=e,n=e.toBytes||((p,m,g)=>{let b=m.toAffine();return po(Uint8Array.from([4]),t.toBytes(b.x),t.toBytes(b.y))}),o=e.fromBytes||(p=>{let m=p.subarray(1),g=t.fromBytes(m.subarray(0,t.BYTES)),b=t.fromBytes(m.subarray(t.BYTES,2*t.BYTES));return{x:g,y:b}});function s(p){let{a:m,b:g}=e,b=t.sqr(p),E=t.mul(b,p);return t.add(t.add(E,t.mul(p,m)),g)}if(!t.eql(t.sqr(e.Gy),s(e.Gx)))throw new Error("bad generator point: equation left != right");function i(p){return typeof p=="bigint"&&_o<p&&p<e.n}function a(p){if(!i(p))throw new Error("Expected valid bigint: 0 < bigint < curve.n")}function c(p){let{allowedPrivateKeyLengths:m,nByteLength:g,wrapPrivateKey:b,n:E}=e;if(m&&typeof p!="bigint"){if(sn(p)&&(p=uo(p)),typeof p!="string"||!m.includes(p.length))throw new Error("Invalid key");p=p.padStart(g*2,"0")}let w;try{w=typeof p=="bigint"?p:fo(We("private key",p,g))}catch{throw new Error(`private key must be ${g} bytes, hex or bigint, not ${typeof p}`)}return b&&(w=Le(w,E)),a(w),w}let l=new Map;function f(p){if(!(p instanceof u))throw new Error("ProjectivePoint expected")}class u{constructor(m,g,b){if(this.px=m,this.py=g,this.pz=b,m==null||!t.isValid(m))throw new Error("x required");if(g==null||!t.isValid(g))throw new Error("y required");if(b==null||!t.isValid(b))throw new Error("z required")}static fromAffine(m){let{x:g,y:b}=m||{};if(!m||!t.isValid(g)||!t.isValid(b))throw new Error("invalid affine point");if(m instanceof u)throw new Error("projective point not allowed");let E=w=>t.eql(w,t.ZERO);return E(g)&&E(b)?u.ZERO:new u(g,b,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(m){let g=t.invertBatch(m.map(b=>b.pz));return m.map((b,E)=>b.toAffine(g[E])).map(u.fromAffine)}static fromHex(m){let g=u.fromAffine(o(We("pointHex",m)));return g.assertValidity(),g}static fromPrivateKey(m){return u.BASE.multiply(c(m))}_setWindowSize(m){this._WINDOW_SIZE=m,l.delete(this)}assertValidity(){if(this.is0()){if(e.allowInfinityPoint&&!t.is0(this.py))return;throw new Error("bad point: ZERO")}let{x:m,y:g}=this.toAffine();if(!t.isValid(m)||!t.isValid(g))throw new Error("bad point: x or y not FE");let b=t.sqr(g),E=s(m);if(!t.eql(b,E))throw new Error("bad point: equation left != right");if(!this.isTorsionFree())throw new Error("bad point: not in prime-order subgroup")}hasEvenY(){let{y:m}=this.toAffine();if(t.isOdd)return!t.isOdd(m);throw new Error("Field doesn't support isOdd")}equals(m){f(m);let{px:g,py:b,pz:E}=this,{px:w,py:_,pz:I}=m,k=t.eql(t.mul(g,I),t.mul(w,E)),D=t.eql(t.mul(b,I),t.mul(_,E));return k&&D}negate(){return new u(this.px,t.neg(this.py),this.pz)}double(){let{a:m,b:g}=e,b=t.mul(g,R7),{px:E,py:w,pz:_}=this,I=t.ZERO,k=t.ZERO,D=t.ZERO,A=t.mul(E,E),C=t.mul(w,w),U=t.mul(_,_),L=t.mul(E,w);return L=t.add(L,L),D=t.mul(E,_),D=t.add(D,D),I=t.mul(m,D),k=t.mul(b,U),k=t.add(I,k),I=t.sub(C,k),k=t.add(C,k),k=t.mul(I,k),I=t.mul(L,I),D=t.mul(b,D),U=t.mul(m,U),L=t.sub(A,U),L=t.mul(m,L),L=t.add(L,D),D=t.add(A,A),A=t.add(D,A),A=t.add(A,U),A=t.mul(A,L),k=t.add(k,A),U=t.mul(w,_),U=t.add(U,U),A=t.mul(U,L),I=t.sub(I,A),D=t.mul(U,C),D=t.add(D,D),D=t.add(D,D),new u(I,k,D)}add(m){f(m);let{px:g,py:b,pz:E}=this,{px:w,py:_,pz:I}=m,k=t.ZERO,D=t.ZERO,A=t.ZERO,C=e.a,U=t.mul(e.b,R7),L=t.mul(g,w),F=t.mul(b,_),H=t.mul(E,I),re=t.add(g,b),T=t.add(w,_);re=t.mul(re,T),T=t.add(L,F),re=t.sub(re,T),T=t.add(g,E);let N=t.add(w,I);return T=t.mul(T,N),N=t.add(L,H),T=t.sub(T,N),N=t.add(b,E),k=t.add(_,I),N=t.mul(N,k),k=t.add(F,H),N=t.sub(N,k),A=t.mul(C,T),k=t.mul(U,H),A=t.add(k,A),k=t.sub(F,A),A=t.add(F,A),D=t.mul(k,A),F=t.add(L,L),F=t.add(F,L),H=t.mul(C,H),T=t.mul(U,T),F=t.add(F,H),H=t.sub(L,H),H=t.mul(C,H),T=t.add(T,H),L=t.mul(F,T),D=t.add(D,L),L=t.mul(N,T),k=t.mul(re,k),k=t.sub(k,L),L=t.mul(re,F),A=t.mul(N,A),A=t.add(A,L),new u(k,D,A)}subtract(m){return this.add(m.negate())}is0(){return this.equals(u.ZERO)}wNAF(m){return y.wNAFCached(this,l,m,g=>{let b=t.invertBatch(g.map(E=>E.pz));return g.map((E,w)=>E.toAffine(b[w])).map(u.fromAffine)})}multiplyUnsafe(m){let g=u.ZERO;if(m===_o)return g;if(a(m),m===Lr)return this;let{endo:b}=e;if(!b)return y.unsafeLadder(this,m);let{k1neg:E,k1:w,k2neg:_,k2:I}=b.splitScalar(m),k=g,D=g,A=this;for(;w>_o||I>_o;)w&Lr&&(k=k.add(A)),I&Lr&&(D=D.add(A)),A=A.double(),w>>=Lr,I>>=Lr;return E&&(k=k.negate()),_&&(D=D.negate()),D=new u(t.mul(D.px,b.beta),D.py,D.pz),k.add(D)}multiply(m){a(m);let g=m,b,E,{endo:w}=e;if(w){let{k1neg:_,k1:I,k2neg:k,k2:D}=w.splitScalar(g),{p:A,f:C}=this.wNAF(I),{p:U,f:L}=this.wNAF(D);A=y.constTimeNegate(_,A),U=y.constTimeNegate(k,U),U=new u(t.mul(U.px,w.beta),U.py,U.pz),b=A.add(U),E=C.add(L)}else{let{p:_,f:I}=this.wNAF(g);b=_,E=I}return u.normalizeZ([b,E])[0]}multiplyAndAddUnsafe(m,g,b){let E=u.BASE,w=(I,k)=>k===_o||k===Lr||!I.equals(E)?I.multiplyUnsafe(k):I.multiply(k),_=w(this,g).add(w(m,b));return _.is0()?void 0:_}toAffine(m){let{px:g,py:b,pz:E}=this,w=this.is0();m==null&&(m=w?t.ONE:t.inv(E));let _=t.mul(g,m),I=t.mul(b,m),k=t.mul(E,m);if(w)return{x:t.ZERO,y:t.ZERO};if(!t.eql(k,t.ONE))throw new Error("invZ was invalid");return{x:_,y:I}}isTorsionFree(){let{h:m,isTorsionFree:g}=e;if(m===Lr)return!0;if(g)return g(u,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:m,clearCofactor:g}=e;return m===Lr?this:g?g(u,this):this.multiplyUnsafe(e.h)}toRawBytes(m=!0){return this.assertValidity(),n(u,this,m)}toHex(m=!0){return uo(this.toRawBytes(m))}}u.BASE=new u(e.Gx,e.Gy,t.ONE),u.ZERO=new u(t.ZERO,t.ONE,t.ZERO);let d=e.nBitLength,y=U1(u,e.endo?Math.ceil(d/2):d);return{CURVE:e,ProjectivePoint:u,normPrivateKeyToScalar:c,weierstrassEquation:s,isWithinCurveOrder:i}}function iC(r){let e=Jc(r);return Nr(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function A7(r){let e=iC(r),{Fp:t,n}=e,o=t.BYTES+1,s=2*t.BYTES+1;function i(T){return _o<T&&T<t.ORDER}function a(T){return Le(T,n)}function c(T){return K1(T,n)}let{ProjectivePoint:l,normPrivateKeyToScalar:f,weierstrassEquation:u,isWithinCurveOrder:d}=sC({...e,toBytes(T,N,Y){let P=N.toAffine(),R=t.toBytes(P.x),V=po;return Y?V(Uint8Array.from([N.hasEvenY()?2:3]),R):V(Uint8Array.from([4]),R,t.toBytes(P.y))},fromBytes(T){let N=T.length,Y=T[0],P=T.subarray(1);if(N===o&&(Y===2||Y===3)){let R=fo(P);if(!i(R))throw new Error("Point is not on curve");let V=u(R),$=t.sqrt(V),j=($&Lr)===Lr;return(Y&1)===1!==j&&($=t.neg($)),{x:R,y:$}}else if(N===s&&Y===4){let R=t.fromBytes(P.subarray(0,t.BYTES)),V=t.fromBytes(P.subarray(t.BYTES,2*t.BYTES));return{x:R,y:V}}else throw new Error(`Point of length ${N} was invalid. Expected ${o} compressed bytes or ${s} uncompressed bytes`)}}),y=T=>uo(cs(T,e.nByteLength));function p(T){let N=n>>Lr;return T>N}function m(T){return p(T)?a(-T):T}let g=(T,N,Y)=>fo(T.slice(N,Y));class b{constructor(N,Y,P){this.r=N,this.s=Y,this.recovery=P,this.assertValidity()}static fromCompact(N){let Y=e.nByteLength;return N=We("compactSignature",N,Y*2),new b(g(N,0,Y),g(N,Y,2*Y))}static fromDER(N){let{r:Y,s:P}=hi.toSig(We("DER",N));return new b(Y,P)}assertValidity(){if(!d(this.r))throw new Error("r must be 0 < r < CURVE.n");if(!d(this.s))throw new Error("s must be 0 < s < CURVE.n")}addRecoveryBit(N){return new b(this.r,this.s,N)}recoverPublicKey(N){let{r:Y,s:P,recovery:R}=this,V=D(We("msgHash",N));if(R==null||![0,1,2,3].includes(R))throw new Error("recovery id invalid");let $=R===2||R===3?Y+e.n:Y;if($>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");let j=R&1?"03":"02",ue=l.fromHex(j+y($)),pe=c($),_e=a(-V*pe),ye=a(P*pe),ge=l.BASE.multiplyAndAddUnsafe(ue,_e,ye);if(!ge)throw new Error("point at infinify");return ge.assertValidity(),ge}hasHighS(){return p(this.s)}normalizeS(){return this.hasHighS()?new b(this.r,a(-this.s),this.recovery):this}toDERRawBytes(){return ai(this.toDERHex())}toDERHex(){return hi.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return ai(this.toCompactHex())}toCompactHex(){return y(this.r)+y(this.s)}}let E={isValidPrivateKey(T){try{return f(T),!0}catch{return!1}},normPrivateKeyToScalar:f,randomPrivateKey:()=>{let T=D0(e.n);return mg(e.randomBytes(T),e.n)},precompute(T=8,N=l.BASE){return N._setWindowSize(T),N.multiply(BigInt(3)),N}};function w(T,N=!0){return l.fromPrivateKey(T).toRawBytes(N)}function _(T){let N=sn(T),Y=typeof T=="string",P=(N||Y)&&T.length;return N?P===o||P===s:Y?P===2*o||P===2*s:T instanceof l}function I(T,N,Y=!0){if(_(T))throw new Error("first arg must be private key");if(!_(N))throw new Error("second arg must be public key");return l.fromHex(N).multiply(f(T)).toRawBytes(Y)}let k=e.bits2int||function(T){let N=fo(T),Y=T.length*8-e.nBitLength;return Y>0?N>>BigInt(Y):N},D=e.bits2int_modN||function(T){return a(k(T))},A=Qc(e.nBitLength);function C(T){if(typeof T!="bigint")throw new Error("bigint expected");if(!(_o<=T&&T<A))throw new Error(`bigint expected < 2^${e.nBitLength}`);return cs(T,e.nByteLength)}function U(T,N,Y=L){if(["recovered","canonical"].some(Me=>Me in Y))throw new Error("sign() legacy options not supported");let{hash:P,randomBytes:R}=e,{lowS:V,prehash:$,extraEntropy:j}=Y;V==null&&(V=!0),T=We("msgHash",T),$&&(T=We("prehashed msgHash",P(T)));let ue=D(T),pe=f(N),_e=[C(pe),C(ue)];if(j!=null){let Me=j===!0?R(t.BYTES):j;_e.push(We("extraEntropy",Me))}let ye=po(..._e),ge=ue;function $e(Me){let Dt=k(Me);if(!d(Dt))return;let Pt=c(Dt),xt=l.BASE.multiply(Dt).toAffine(),Ht=a(xt.x);if(Ht===_o)return;let so=a(Pt*a(ge+Ht*pe));if(so===_o)return;let Gs=(xt.x===Ht?0:2)|Number(xt.y&Lr),Uc=so;return V&&p(so)&&(Uc=m(so),Gs^=1),new b(Ht,Uc,Gs)}return{seed:ye,k2sig:$e}}let L={lowS:e.lowS,prehash:!1},F={lowS:e.lowS,prehash:!1};function H(T,N,Y=L){let{seed:P,k2sig:R}=U(T,N,Y),V=e;return R0(V.hash.outputLen,V.nByteLength,V.hmac)(P,R)}l.BASE._setWindowSize(8);function re(T,N,Y,P=F){let R=T;if(N=We("msgHash",N),Y=We("publicKey",Y),"strict"in P)throw new Error("options.strict was renamed to lowS");let{lowS:V,prehash:$}=P,j,ue;try{if(typeof R=="string"||sn(R))try{j=b.fromDER(R)}catch(xt){if(!(xt instanceof hi.Err))throw xt;j=b.fromCompact(R)}else if(typeof R=="object"&&typeof R.r=="bigint"&&typeof R.s=="bigint"){let{r:xt,s:Ht}=R;j=new b(xt,Ht)}else throw new Error("PARSE");ue=l.fromHex(Y)}catch(xt){if(xt.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(V&&j.hasHighS())return!1;$&&(N=e.hash(N));let{r:pe,s:_e}=j,ye=D(N),ge=c(_e),$e=a(ye*ge),Me=a(pe*ge),Dt=l.BASE.multiplyAndAddUnsafe(ue,$e,Me)?.toAffine();return Dt?a(Dt.x)===pe:!1}return{CURVE:e,getPublicKey:w,getSharedSecret:I,sign:H,verify:re,ProjectivePoint:l,Signature:b,utils:E}}function aC(r){return{hash:r,hmac:(e,...t)=>ls(r,e,N1(...t)),randomBytes:dt}}function I7(r,e){let t=n=>A7({...r,...aC(n)});return Object.freeze({...t(e),create:t})}var D7=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),k7=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),cC=BigInt(1),z0=BigInt(2),T7=(r,e)=>(r+e/z0)/e;function lC(r){let e=D7,t=BigInt(3),n=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%e,f=l*l*r%e,u=ze(f,t,e)*f%e,d=ze(u,t,e)*f%e,y=ze(d,z0,e)*l%e,p=ze(y,o,e)*y%e,m=ze(p,s,e)*p%e,g=ze(m,a,e)*m%e,b=ze(g,c,e)*g%e,E=ze(b,a,e)*m%e,w=ze(E,t,e)*f%e,_=ze(w,i,e)*p%e,I=ze(_,n,e)*l%e,k=ze(I,z0,e);if(!j0.eql(j0.sqr(k),r))throw new Error("Cannot find square root");return k}var j0=M1(D7,void 0,void 0,{sqrt:lC}),W=I7({a:BigInt(0),b:BigInt(7),Fp:j0,n:k7,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let e=k7,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-cC*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),o=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),s=t,i=BigInt("0x100000000000000000000000000000000"),a=T7(s*r,e),c=T7(-n*r,e),l=Le(r-a*t-c*o,e),f=Le(-a*n-c*s,e),u=l>i,d=f>i;if(u&&(l=e-l),d&&(f=e-f),l>i||f>i)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:u,k1:l,k2neg:d,k2:f}}}},ms),oX=BigInt(0);var sX=W.ProjectivePoint;function P7(){return W.utils.randomPrivateKey()}function C7(r,e){let t=K.digest(e instanceof Uint8Array?e:e.subarray());if(Cr(t))return t.then(({digest:n})=>W.sign(n,r).toDERRawBytes()).catch(n=>{throw new h(String(n),"ERR_INVALID_INPUT")});try{return W.sign(t.digest,r).toDERRawBytes()}catch(n){throw new h(String(n),"ERR_INVALID_INPUT")}}function N7(r,e,t){let n=K.digest(t instanceof Uint8Array?t:t.subarray());if(Cr(n))return n.then(({digest:o})=>W.verify(e,o,r)).catch(o=>{throw new h(String(o),"ERR_INVALID_INPUT")});try{return W.verify(e,n.digest,r)}catch(o){throw new h(String(o),"ERR_INVALID_INPUT")}}function B7(r){return W.ProjectivePoint.fromHex(r).toRawBytes(!0)}function L7(r){try{W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}function X0(r){try{W.ProjectivePoint.fromHex(r)}catch(e){throw new h(String(e),"ERR_INVALID_PUBLIC_KEY")}}function O7(r){try{return W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}var pl=class{_key;constructor(e){X0(e),this._key=e}verify(e,t){return N7(this._key,t,e)}marshal(){return B7(this._key)}get bytes(){return An.encode({Type:ht.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return Cr(e)?{bytes:t}=await e:t=e.bytes,t}},ml=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??O7(e),L7(this._key),X0(this._publicKey)}sign(e){return C7(this._key,e)}get public(){return new pl(this._publicKey)}marshal(){return this._key}get bytes(){return go.encode({Type:ht.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Cr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return wa(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function fC(r){return new ml(r)}function dC(r){return new pl(r)}async function hC(){let r=P7();return new ml(r)}var Lf={rsa:Y0,ed25519:K0,secp256k1:Q0};function pC(r){let e=Object.keys(Lf).join(" / ");return new h(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function J0(r){let e=An.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case ht.RSA:return Lf.rsa.unmarshalRsaPublicKey(t);case ht.Ed25519:return Lf.ed25519.unmarshalEd25519PublicKey(t);case ht.Secp256k1:return Lf.secp256k1.unmarshalSecp256k1PublicKey(t);default:throw pC(e.Type??"unknown")}}var zC=Ue(ei(),1);var So="/",K7=new TextEncoder().encode(So),Of=K7[0],qe=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=x(e);else if(e instanceof Uint8Array)this._buf=e;else throw new Error("Invalid key, should be String of Uint8Array");if(t==null&&(t=!0),t&&this.clean(),this._buf.byteLength===0||this._buf[0]!==Of)throw new Error("Invalid key")}toString(e="utf8"){return v(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(So))}static random(){return new r(Math.random().toString().substring(2))}static asKey(e){return e instanceof Uint8Array||typeof e=="string"?new r(e):typeof e.uint8Array=="function"?new r(e.uint8Array()):null}clean(){if((this._buf==null||this._buf.byteLength===0)&&(this._buf=K7),this._buf[0]!==Of){let e=new Uint8Array(this._buf.byteLength+1);e.fill(Of,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===Of;)this._buf=this._buf.subarray(0,-1)}less(e){let t=this.list(),n=e.list();for(let o=0;o<t.length;o++){if(n.length<o+1)return!1;let s=t[o],i=n[o];if(s<i)return!0;if(s>i)return!1}return t.length<n.length}reverse(){return r.withNamespaces(this.list().slice().reverse())}namespaces(){return this.list()}baseNamespace(){let e=this.namespaces();return e[e.length-1]}list(){return this.toString().split(So).slice(1)}type(){return mC(this.baseNamespace())}name(){return yC(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(So)||(e+=So),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(So):new r(e.slice(0,-1).join(So))}child(e){return this.toString()===So?e:e.toString()===So?this:new r(this.toString()+e.toString(),!1)}isAncestorOf(e){return e.toString()===this.toString()?!1:e.toString().startsWith(this.toString())}isDecendantOf(e){return e.toString()===this.toString()?!1:this.toString().startsWith(e.toString())}isTopLevel(){return this.list().length===1}concat(...e){return r.withNamespaces([...this.namespaces(),...gC(e.map(t=>t.namespaces()))])}};function mC(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function yC(r){let e=r.split(":");return e[e.length-1]}function gC(r){return[].concat(...r)}var jC=Ue(Kf(),1);var M7="ERR_IPNS_EXPIRED_RECORD",Mf="ERR_UNRECOGNIZED_VALIDITY";var Ro="ERR_SIGNATURE_VERIFICATION";var em="ERR_UNDEFINED_PARAMETER",U7="ERR_INVALID_RECORD_DATA",F7="ERR_INVALID_VALUE",V7="ERR_INVALID_EMBEDDED_KEY";var q7="ERR_RECORD_TOO_LARGE";var ur;(function(r){let e;(function(o){o.EOL="EOL"})(e=r.ValidityType||(r.ValidityType={}));let t;(function(o){o[o.EOL=0]="EOL"})(t||(t={})),function(o){o.codec=()=>Re(t)}(e=r.ValidityType||(r.ValidityType={}));let n;r.codec=()=>(n==null&&(n=J((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.value!=null&&(s.uint32(10),s.bytes(o.value)),o.signatureV1!=null&&(s.uint32(18),s.bytes(o.signatureV1)),o.validityType!=null&&(s.uint32(24),r.ValidityType.codec().encode(o.validityType,s)),o.validity!=null&&(s.uint32(34),s.bytes(o.validity)),o.sequence!=null&&(s.uint32(40),s.uint64(o.sequence)),o.ttl!=null&&(s.uint32(48),s.uint64(o.ttl)),o.pubKey!=null&&(s.uint32(58),s.bytes(o.pubKey)),o.signatureV2!=null&&(s.uint32(66),s.bytes(o.signatureV2)),o.data!=null&&(s.uint32(74),s.bytes(o.data)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.value=o.bytes();break;case 2:i.signatureV1=o.bytes();break;case 3:i.validityType=r.ValidityType.codec().decode(o);break;case 4:i.validity=o.bytes();break;case 5:i.sequence=o.uint64();break;case 6:i.ttl=o.uint64();break;case 7:i.pubKey=o.bytes();break;case 8:i.signatureV2=o.bytes();break;case 9:i.data=o.bytes();break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>Q(o,r.codec()),r.decode=o=>X(o,r.codec())})(ur||(ur={}));var bC=["string","number","bigint","symbol"],wC=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","HTMLElement","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function $7(r){if(r===null)return"null";if(r===void 0)return"undefined";if(r===!0||r===!1)return"boolean";let e=typeof r;if(bC.includes(e))return e;if(e==="function")return"Function";if(Array.isArray(r))return"Array";if(EC(r))return"Buffer";let t=xC(r);return t||"Object"}function EC(r){return r&&r.constructor&&r.constructor.isBuffer&&r.constructor.isBuffer.call(null,r)}function xC(r){let e=Object.prototype.toString.call(r).slice(8,-1);if(wC.includes(e))return e}var S=class{constructor(e,t,n){this.major=e,this.majorEncoded=e<<5,this.name=t,this.terminal=n}toString(){return`Type[${this.major}].${this.name}`}compare(e){return this.major<e.major?-1:this.major>e.major?1:0}};S.uint=new S(0,"uint",!0);S.negint=new S(1,"negint",!0);S.bytes=new S(2,"bytes",!0);S.string=new S(3,"string",!0);S.array=new S(4,"array",!1);S.map=new S(5,"map",!1);S.tag=new S(6,"tag",!1);S.float=new S(7,"float",!0);S.false=new S(7,"false",!0);S.true=new S(7,"true",!0);S.null=new S(7,"null",!0);S.undefined=new S(7,"undefined",!0);S.break=new S(7,"break",!0);var q=class{constructor(e,t,n){this.type=e,this.value=t,this.encodedLength=n,this.encodedBytes=void 0,this.byteValue=void 0}toString(){return`Token[${this.type}].${this.value}`}};var Sa=globalThis.process&&!globalThis.process.browser&&globalThis.Buffer&&typeof globalThis.Buffer.isBuffer=="function",vC=new TextDecoder,_C=new TextEncoder;function Uf(r){return Sa&&globalThis.Buffer.isBuffer(r)}function yl(r){return r instanceof Uint8Array?Uf(r)?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r:Uint8Array.from(r)}var z7=Sa?(r,e,t)=>t-e>64?globalThis.Buffer.from(r.subarray(e,t)).toString("utf8"):Y7(r,e,t):(r,e,t)=>t-e>64?vC.decode(r.subarray(e,t)):Y7(r,e,t),Ff=Sa?r=>r.length>64?globalThis.Buffer.from(r):G7(r):r=>r.length>64?_C.encode(r):G7(r),Dn=r=>Uint8Array.from(r),Ra=Sa?(r,e,t)=>Uf(r)?new Uint8Array(r.subarray(e,t)):r.slice(e,t):(r,e,t)=>r.slice(e,t),j7=Sa?(r,e)=>(r=r.map(t=>t instanceof Uint8Array?t:globalThis.Buffer.from(t)),yl(globalThis.Buffer.concat(r,e))):(r,e)=>{let t=new Uint8Array(e),n=0;for(let o of r)n+o.length>t.length&&(o=o.subarray(0,t.length-n)),t.set(o,n),n+=o.length;return t},X7=Sa?r=>globalThis.Buffer.allocUnsafe(r):r=>new Uint8Array(r);function Q7(r,e){if(Uf(r)&&Uf(e))return r.compare(e);for(let t=0;t<r.length;t++)if(r[t]!==e[t])return r[t]<e[t]?-1:1;return 0}function G7(r){let e=[],t=0;for(let n=0;n<r.length;n++){let o=r.charCodeAt(n);o<128?e[t++]=o:o<2048?(e[t++]=o>>6|192,e[t++]=o&63|128):(o&64512)===55296&&n+1<r.length&&(r.charCodeAt(n+1)&64512)===56320?(o=65536+((o&1023)<<10)+(r.charCodeAt(++n)&1023),e[t++]=o>>18|240,e[t++]=o>>12&63|128,e[t++]=o>>6&63|128,e[t++]=o&63|128):(e[t++]=o>>12|224,e[t++]=o>>6&63|128,e[t++]=o&63|128)}return e}function Y7(r,e,t){let n=[];for(;e<t;){let o=r[e],s=null,i=o>239?4:o>223?3:o>191?2:1;if(e+i<=t){let a,c,l,f;switch(i){case 1:o<128&&(s=o);break;case 2:a=r[e+1],(a&192)===128&&(f=(o&31)<<6|a&63,f>127&&(s=f));break;case 3:a=r[e+1],c=r[e+2],(a&192)===128&&(c&192)===128&&(f=(o&15)<<12|(a&63)<<6|c&63,f>2047&&(f<55296||f>57343)&&(s=f));break;case 4:a=r[e+1],c=r[e+2],l=r[e+3],(a&192)===128&&(c&192)===128&&(l&192)===128&&(f=(o&15)<<18|(a&63)<<12|(c&63)<<6|l&63,f>65535&&f<1114112&&(s=f))}}s===null?(s=65533,i=1):s>65535&&(s-=65536,n.push(s>>>10&1023|55296),s=56320|s&1023),n.push(s),e+=i}return tm(n)}var W7=4096;function tm(r){let e=r.length;if(e<=W7)return String.fromCharCode.apply(String,r);let t="",n=0;for(;n<e;)t+=String.fromCharCode.apply(String,r.slice(n,n+=W7));return t}var SC=256,gl=class{constructor(e=SC){this.chunkSize=e,this.cursor=0,this.maxCursor=-1,this.chunks=[],this._initReuseChunk=null}reset(){this.cursor=0,this.maxCursor=-1,this.chunks.length&&(this.chunks=[]),this._initReuseChunk!==null&&(this.chunks.push(this._initReuseChunk),this.maxCursor=this._initReuseChunk.length-1)}push(e){let t=this.chunks[this.chunks.length-1];if(this.cursor+e.length<=this.maxCursor+1){let o=t.length-(this.maxCursor-this.cursor)-1;t.set(e,o)}else{if(t){let o=t.length-(this.maxCursor-this.cursor)-1;o<t.length&&(this.chunks[this.chunks.length-1]=t.subarray(0,o),this.maxCursor=this.cursor-1)}e.length<64&&e.length<this.chunkSize?(t=X7(this.chunkSize),this.chunks.push(t),this.maxCursor+=t.length,this._initReuseChunk===null&&(this._initReuseChunk=t),t.set(e,0)):(this.chunks.push(e),this.maxCursor+=e.length)}this.cursor+=e.length}toBytes(e=!1){let t;if(this.chunks.length===1){let n=this.chunks[0];e&&this.cursor>n.length/2?(t=this.cursor===n.length?n:n.subarray(0,this.cursor),this._initReuseChunk=null,this.chunks=[]):t=Ra(n,0,this.cursor)}else t=j7(this.chunks,this.cursor);return e&&this.reset(),t}};var ne="CBOR decode error:",Aa="CBOR encode error:",bl=[];bl[23]=1;bl[24]=2;bl[25]=3;bl[26]=5;bl[27]=9;function Ao(r,e,t){if(r.length-e<t)throw new Error(`${ne} not enough data for type`)}var Tt=[24,256,65536,4294967296,BigInt("18446744073709551616")];function wr(r,e,t){Ao(r,e,1);let n=r[e];if(t.strict===!0&&n<Tt[0])throw new Error(`${ne} integer encoded in more bytes than necessary (strict decode)`);return n}function Er(r,e,t){Ao(r,e,2);let n=r[e]<<8|r[e+1];if(t.strict===!0&&n<Tt[1])throw new Error(`${ne} integer encoded in more bytes than necessary (strict decode)`);return n}function xr(r,e,t){Ao(r,e,4);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3];if(t.strict===!0&&n<Tt[2])throw new Error(`${ne} integer encoded in more bytes than necessary (strict decode)`);return n}function vr(r,e,t){Ao(r,e,8);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3],o=r[e+4]*16777216+(r[e+5]<<16)+(r[e+6]<<8)+r[e+7],s=(BigInt(n)<<BigInt(32))+BigInt(o);if(t.strict===!0&&s<Tt[3])throw new Error(`${ne} integer encoded in more bytes than necessary (strict decode)`);if(s<=Number.MAX_SAFE_INTEGER)return Number(s);if(t.allowBigInt===!0)return s;throw new Error(`${ne} integers outside of the safe integer range are not supported`)}function J7(r,e,t,n){return new q(S.uint,wr(r,e+1,n),2)}function Z7(r,e,t,n){return new q(S.uint,Er(r,e+1,n),3)}function e9(r,e,t,n){return new q(S.uint,xr(r,e+1,n),5)}function t9(r,e,t,n){return new q(S.uint,vr(r,e+1,n),9)}function Or(r,e){return Bt(r,0,e.value)}function Bt(r,e,t){if(t<Tt[0]){let n=Number(t);r.push([e|n])}else if(t<Tt[1]){let n=Number(t);r.push([e|24,n])}else if(t<Tt[2]){let n=Number(t);r.push([e|25,n>>>8,n&255])}else if(t<Tt[3]){let n=Number(t);r.push([e|26,n>>>24&255,n>>>16&255,n>>>8&255,n&255])}else{let n=BigInt(t);if(n<Tt[4]){let o=[e|27,0,0,0,0,0,0,0],s=Number(n&BigInt(4294967295)),i=Number(n>>BigInt(32)&BigInt(4294967295));o[8]=s&255,s=s>>8,o[7]=s&255,s=s>>8,o[6]=s&255,s=s>>8,o[5]=s&255,o[4]=i&255,i=i>>8,o[3]=i&255,i=i>>8,o[2]=i&255,i=i>>8,o[1]=i&255,r.push(o)}else throw new Error(`${ne} encountered BigInt larger than allowable range`)}}Or.encodedSize=function(e){return Bt.encodedSize(e.value)};Bt.encodedSize=function(e){return e<Tt[0]?1:e<Tt[1]?2:e<Tt[2]?3:e<Tt[3]?5:9};Or.compareTokens=function(e,t){return e.value<t.value?-1:e.value>t.value?1:0};function r9(r,e,t,n){return new q(S.negint,-1-wr(r,e+1,n),2)}function n9(r,e,t,n){return new q(S.negint,-1-Er(r,e+1,n),3)}function o9(r,e,t,n){return new q(S.negint,-1-xr(r,e+1,n),5)}var rm=BigInt(-1),s9=BigInt(1);function i9(r,e,t,n){let o=vr(r,e+1,n);if(typeof o!="bigint"){let s=-1-o;if(s>=Number.MIN_SAFE_INTEGER)return new q(S.negint,s,9)}if(n.allowBigInt!==!0)throw new Error(`${ne} integers outside of the safe integer range are not supported`);return new q(S.negint,rm-BigInt(o),9)}function Vf(r,e){let t=e.value,n=typeof t=="bigint"?t*rm-s9:t*-1-1;Bt(r,e.type.majorEncoded,n)}Vf.encodedSize=function(e){let t=e.value,n=typeof t=="bigint"?t*rm-s9:t*-1-1;return n<Tt[0]?1:n<Tt[1]?2:n<Tt[2]?3:n<Tt[3]?5:9};Vf.compareTokens=function(e,t){return e.value<t.value?1:e.value>t.value?-1:0};function wl(r,e,t,n){Ao(r,e,t+n);let o=Ra(r,e+t,e+t+n);return new q(S.bytes,o,t+n)}function a9(r,e,t,n){return wl(r,e,1,t)}function c9(r,e,t,n){return wl(r,e,2,wr(r,e+1,n))}function l9(r,e,t,n){return wl(r,e,3,Er(r,e+1,n))}function u9(r,e,t,n){return wl(r,e,5,xr(r,e+1,n))}function f9(r,e,t,n){let o=vr(r,e+1,n);if(typeof o=="bigint")throw new Error(`${ne} 64-bit integer bytes lengths not supported`);return wl(r,e,9,o)}function qf(r){return r.encodedBytes===void 0&&(r.encodedBytes=r.type===S.string?Ff(r.value):r.value),r.encodedBytes}function Ia(r,e){let t=qf(e);Bt(r,e.type.majorEncoded,t.length),r.push(t)}Ia.encodedSize=function(e){let t=qf(e);return Bt.encodedSize(t.length)+t.length};Ia.compareTokens=function(e,t){return AC(qf(e),qf(t))};function AC(r,e){return r.length<e.length?-1:r.length>e.length?1:Q7(r,e)}function El(r,e,t,n,o){let s=t+n;Ao(r,e,s);let i=new q(S.string,z7(r,e+t,e+s),s);return o.retainStringBytes===!0&&(i.byteValue=Ra(r,e+t,e+s)),i}function d9(r,e,t,n){return El(r,e,1,t,n)}function h9(r,e,t,n){return El(r,e,2,wr(r,e+1,n),n)}function p9(r,e,t,n){return El(r,e,3,Er(r,e+1,n),n)}function m9(r,e,t,n){return El(r,e,5,xr(r,e+1,n),n)}function y9(r,e,t,n){let o=vr(r,e+1,n);if(typeof o=="bigint")throw new Error(`${ne} 64-bit integer string lengths not supported`);return El(r,e,9,o,n)}var g9=Ia;function ka(r,e,t,n){return new q(S.array,n,t)}function b9(r,e,t,n){return ka(r,e,1,t)}function w9(r,e,t,n){return ka(r,e,2,wr(r,e+1,n))}function E9(r,e,t,n){return ka(r,e,3,Er(r,e+1,n))}function x9(r,e,t,n){return ka(r,e,5,xr(r,e+1,n))}function v9(r,e,t,n){let o=vr(r,e+1,n);if(typeof o=="bigint")throw new Error(`${ne} 64-bit integer array lengths not supported`);return ka(r,e,9,o)}function _9(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${ne} indefinite length items not allowed`);return ka(r,e,1,1/0)}function Hf(r,e){Bt(r,S.array.majorEncoded,e.value)}Hf.compareTokens=Or.compareTokens;Hf.encodedSize=function(e){return Bt.encodedSize(e.value)};function Ta(r,e,t,n){return new q(S.map,n,t)}function S9(r,e,t,n){return Ta(r,e,1,t)}function R9(r,e,t,n){return Ta(r,e,2,wr(r,e+1,n))}function A9(r,e,t,n){return Ta(r,e,3,Er(r,e+1,n))}function I9(r,e,t,n){return Ta(r,e,5,xr(r,e+1,n))}function k9(r,e,t,n){let o=vr(r,e+1,n);if(typeof o=="bigint")throw new Error(`${ne} 64-bit integer map lengths not supported`);return Ta(r,e,9,o)}function T9(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${ne} indefinite length items not allowed`);return Ta(r,e,1,1/0)}function $f(r,e){Bt(r,S.map.majorEncoded,e.value)}$f.compareTokens=Or.compareTokens;$f.encodedSize=function(e){return Bt.encodedSize(e.value)};function D9(r,e,t,n){return new q(S.tag,t,1)}function P9(r,e,t,n){return new q(S.tag,wr(r,e+1,n),2)}function C9(r,e,t,n){return new q(S.tag,Er(r,e+1,n),3)}function N9(r,e,t,n){return new q(S.tag,xr(r,e+1,n),5)}function B9(r,e,t,n){return new q(S.tag,vr(r,e+1,n),9)}function Gf(r,e){Bt(r,S.tag.majorEncoded,e.value)}Gf.compareTokens=Or.compareTokens;Gf.encodedSize=function(e){return Bt.encodedSize(e.value)};var CC=20,NC=21,BC=22,LC=23;function L9(r,e,t,n){if(n.allowUndefined===!1)throw new Error(`${ne} undefined values are not supported`);return n.coerceUndefinedToNull===!0?new q(S.null,null,1):new q(S.undefined,void 0,1)}function O9(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${ne} indefinite length items not allowed`);return new q(S.break,void 0,1)}function nm(r,e,t){if(t){if(t.allowNaN===!1&&Number.isNaN(r))throw new Error(`${ne} NaN values are not supported`);if(t.allowInfinity===!1&&(r===1/0||r===-1/0))throw new Error(`${ne} Infinity values are not supported`)}return new q(S.float,r,e)}function K9(r,e,t,n){return nm(om(r,e+1),3,n)}function M9(r,e,t,n){return nm(sm(r,e+1),5,n)}function U9(r,e,t,n){return nm(H9(r,e+1),9,n)}function Yf(r,e,t){let n=e.value;if(n===!1)r.push([S.float.majorEncoded|CC]);else if(n===!0)r.push([S.float.majorEncoded|NC]);else if(n===null)r.push([S.float.majorEncoded|BC]);else if(n===void 0)r.push([S.float.majorEncoded|LC]);else{let o,s=!1;(!t||t.float64!==!0)&&(V9(n),o=om(un,1),n===o||Number.isNaN(n)?(un[0]=249,r.push(un.slice(0,3)),s=!0):(q9(n),o=sm(un,1),n===o&&(un[0]=250,r.push(un.slice(0,5)),s=!0))),s||(OC(n),o=H9(un,1),un[0]=251,r.push(un.slice(0,9)))}}Yf.encodedSize=function(e,t){let n=e.value;if(n===!1||n===!0||n===null||n===void 0)return 1;if(!t||t.float64!==!0){V9(n);let o=om(un,1);if(n===o||Number.isNaN(n))return 3;if(q9(n),o=sm(un,1),n===o)return 5}return 9};var F9=new ArrayBuffer(9),Kr=new DataView(F9,1),un=new Uint8Array(F9,0);function V9(r){if(r===1/0)Kr.setUint16(0,31744,!1);else if(r===-1/0)Kr.setUint16(0,64512,!1);else if(Number.isNaN(r))Kr.setUint16(0,32256,!1);else{Kr.setFloat32(0,r);let e=Kr.getUint32(0),t=(e&2139095040)>>23,n=e&8388607;if(t===255)Kr.setUint16(0,31744,!1);else if(t===0)Kr.setUint16(0,(r&2147483648)>>16|n>>13,!1);else{let o=t-127;o<-24?Kr.setUint16(0,0):o<-14?Kr.setUint16(0,(e&2147483648)>>16|1<<24+o,!1):Kr.setUint16(0,(e&2147483648)>>16|o+15<<10|n>>13,!1)}}}function om(r,e){if(r.length-e<2)throw new Error(`${ne} not enough data for float16`);let t=(r[e]<<8)+r[e+1];if(t===31744)return 1/0;if(t===64512)return-1/0;if(t===32256)return NaN;let n=t>>10&31,o=t&1023,s;return n===0?s=o*2**-24:n!==31?s=(o+1024)*2**(n-25):s=o===0?1/0:NaN,t&32768?-s:s}function q9(r){Kr.setFloat32(0,r,!1)}function sm(r,e){if(r.length-e<4)throw new Error(`${ne} not enough data for float32`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,4).getFloat32(0,!1)}function OC(r){Kr.setFloat64(0,r,!1)}function H9(r,e){if(r.length-e<8)throw new Error(`${ne} not enough data for float64`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,8).getFloat64(0,!1)}Yf.compareTokens=Or.compareTokens;function Be(r,e,t){throw new Error(`${ne} encountered invalid minor (${t}) for major ${r[e]>>>5}`)}function Wf(r){return()=>{throw new Error(`${ne} ${r}`)}}var G=[];for(let r=0;r<=23;r++)G[r]=Be;G[24]=J7;G[25]=Z7;G[26]=e9;G[27]=t9;G[28]=Be;G[29]=Be;G[30]=Be;G[31]=Be;for(let r=32;r<=55;r++)G[r]=Be;G[56]=r9;G[57]=n9;G[58]=o9;G[59]=i9;G[60]=Be;G[61]=Be;G[62]=Be;G[63]=Be;for(let r=64;r<=87;r++)G[r]=a9;G[88]=c9;G[89]=l9;G[90]=u9;G[91]=f9;G[92]=Be;G[93]=Be;G[94]=Be;G[95]=Wf("indefinite length bytes/strings are not supported");for(let r=96;r<=119;r++)G[r]=d9;G[120]=h9;G[121]=p9;G[122]=m9;G[123]=y9;G[124]=Be;G[125]=Be;G[126]=Be;G[127]=Wf("indefinite length bytes/strings are not supported");for(let r=128;r<=151;r++)G[r]=b9;G[152]=w9;G[153]=E9;G[154]=x9;G[155]=v9;G[156]=Be;G[157]=Be;G[158]=Be;G[159]=_9;for(let r=160;r<=183;r++)G[r]=S9;G[184]=R9;G[185]=A9;G[186]=I9;G[187]=k9;G[188]=Be;G[189]=Be;G[190]=Be;G[191]=T9;for(let r=192;r<=215;r++)G[r]=D9;G[216]=P9;G[217]=C9;G[218]=N9;G[219]=B9;G[220]=Be;G[221]=Be;G[222]=Be;G[223]=Be;for(let r=224;r<=243;r++)G[r]=Wf("simple values are not supported");G[244]=Be;G[245]=Be;G[246]=Be;G[247]=L9;G[248]=Wf("simple values are not supported");G[249]=K9;G[250]=M9;G[251]=U9;G[252]=Be;G[253]=Be;G[254]=Be;G[255]=O9;var fn=[];for(let r=0;r<24;r++)fn[r]=new q(S.uint,r,1);for(let r=-1;r>=-24;r--)fn[31-r]=new q(S.negint,r,1);fn[64]=new q(S.bytes,new Uint8Array(0),1);fn[96]=new q(S.string,"",1);fn[128]=new q(S.array,0,1);fn[160]=new q(S.map,0,1);fn[244]=new q(S.false,!1,1);fn[245]=new q(S.true,!0,1);fn[246]=new q(S.null,null,1);function $9(r){switch(r.type){case S.false:return Dn([244]);case S.true:return Dn([245]);case S.null:return Dn([246]);case S.bytes:return r.value.length?void 0:Dn([64]);case S.string:return r.value===""?Dn([96]):void 0;case S.array:return r.value===0?Dn([128]):void 0;case S.map:return r.value===0?Dn([160]):void 0;case S.uint:return r.value<24?Dn([Number(r.value)]):void 0;case S.negint:if(r.value>=-24)return Dn([31-Number(r.value)])}}var MC={float64:!1,mapSorter:VC,quickEncodeToken:$9};function UC(){let r=[];return r[S.uint.major]=Or,r[S.negint.major]=Vf,r[S.bytes.major]=Ia,r[S.string.major]=g9,r[S.array.major]=Hf,r[S.map.major]=$f,r[S.tag.major]=Gf,r[S.float.major]=Yf,r}var G9=UC(),im=new gl,jf=class r{constructor(e,t){this.obj=e,this.parent=t}includes(e){let t=this;do if(t.obj===e)return!0;while(t=t.parent);return!1}static createCheck(e,t){if(e&&e.includes(t))throw new Error(`${Aa} object contains circular references`);return new r(t,e)}},ys={null:new q(S.null,null),undefined:new q(S.undefined,void 0),true:new q(S.true,!0),false:new q(S.false,!1),emptyArray:new q(S.array,0),emptyMap:new q(S.map,0)},gs={number(r,e,t,n){return!Number.isInteger(r)||!Number.isSafeInteger(r)?new q(S.float,r):r>=0?new q(S.uint,r):new q(S.negint,r)},bigint(r,e,t,n){return r>=BigInt(0)?new q(S.uint,r):new q(S.negint,r)},Uint8Array(r,e,t,n){return new q(S.bytes,r)},string(r,e,t,n){return new q(S.string,r)},boolean(r,e,t,n){return r?ys.true:ys.false},null(r,e,t,n){return ys.null},undefined(r,e,t,n){return ys.undefined},ArrayBuffer(r,e,t,n){return new q(S.bytes,new Uint8Array(r))},DataView(r,e,t,n){return new q(S.bytes,new Uint8Array(r.buffer,r.byteOffset,r.byteLength))},Array(r,e,t,n){if(!r.length)return t.addBreakTokens===!0?[ys.emptyArray,new q(S.break)]:ys.emptyArray;n=jf.createCheck(n,r);let o=[],s=0;for(let i of r)o[s++]=zf(i,t,n);return t.addBreakTokens?[new q(S.array,r.length),o,new q(S.break)]:[new q(S.array,r.length),o]},Object(r,e,t,n){let o=e!=="Object",s=o?r.keys():Object.keys(r),i=o?r.size:s.length;if(!i)return t.addBreakTokens===!0?[ys.emptyMap,new q(S.break)]:ys.emptyMap;n=jf.createCheck(n,r);let a=[],c=0;for(let l of s)a[c++]=[zf(l,t,n),zf(o?r.get(l):r[l],t,n)];return FC(a,t),t.addBreakTokens?[new q(S.map,i),a,new q(S.break)]:[new q(S.map,i),a]}};gs.Map=gs.Object;gs.Buffer=gs.Uint8Array;for(let r of"Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64".split(" "))gs[`${r}Array`]=gs.DataView;function zf(r,e={},t){let n=$7(r),o=e&&e.typeEncoders&&e.typeEncoders[n]||gs[n];if(typeof o=="function"){let i=o(r,n,e,t);if(i!=null)return i}let s=gs[n];if(!s)throw new Error(`${Aa} unsupported type: ${n}`);return s(r,n,e,t)}function FC(r,e){e.mapSorter&&r.sort(e.mapSorter)}function VC(r,e){let t=Array.isArray(r[0])?r[0][0]:r[0],n=Array.isArray(e[0])?e[0][0]:e[0];if(t.type!==n.type)return t.type.compare(n.type);let o=t.type.major,s=G9[o].compareTokens(t,n);return s===0&&console.warn("WARNING: complex key types used, CBOR key sorting guarantees are gone"),s}function Y9(r,e,t,n){if(Array.isArray(e))for(let o of e)Y9(r,o,t,n);else t[e.type.major](r,e,n)}function W9(r,e,t){let n=zf(r,t);if(!Array.isArray(n)&&t.quickEncodeToken){let o=t.quickEncodeToken(n);if(o)return o;let s=e[n.type.major];if(s.encodedSize){let i=s.encodedSize(n,t),a=new gl(i);if(s(a,n,t),a.chunks.length!==1)throw new Error(`Unexpected error: pre-calculated length for ${n} was wrong`);return yl(a.chunks[0])}}return im.reset(),Y9(im,n,e,t),im.toBytes(!0)}function Da(r,e){return e=Object.assign({},MC,e),W9(r,G9,e)}var qC={strict:!1,allowIndefinite:!0,allowUndefined:!0,allowBigInt:!0},am=class{constructor(e,t={}){this._pos=0,this.data=e,this.options=t}pos(){return this._pos}done(){return this._pos>=this.data.length}next(){let e=this.data[this._pos],t=fn[e];if(t===void 0){let n=G[e];if(!n)throw new Error(`${ne} no decoder for major type ${e>>>5} (byte 0x${e.toString(16).padStart(2,"0")})`);let o=e&31;t=n(this.data,this._pos,o,this.options)}return this._pos+=t.encodedLength,t}},xl=Symbol.for("DONE"),Xf=Symbol.for("BREAK");function HC(r,e,t){let n=[];for(let o=0;o<r.value;o++){let s=vl(e,t);if(s===Xf){if(r.value===1/0)break;throw new Error(`${ne} got unexpected break to lengthed array`)}if(s===xl)throw new Error(`${ne} found array but not enough entries (got ${o}, expected ${r.value})`);n[o]=s}return n}function $C(r,e,t){let n=t.useMaps===!0,o=n?void 0:{},s=n?new Map:void 0;for(let i=0;i<r.value;i++){let a=vl(e,t);if(a===Xf){if(r.value===1/0)break;throw new Error(`${ne} got unexpected break to lengthed map`)}if(a===xl)throw new Error(`${ne} found map but not enough entries (got ${i} [no key], expected ${r.value})`);if(n!==!0&&typeof a!="string")throw new Error(`${ne} non-string keys not supported (got ${typeof a})`);if(t.rejectDuplicateMapKeys===!0&&(n&&s.has(a)||!n&&a in o))throw new Error(`${ne} found repeat map key "${a}"`);let c=vl(e,t);if(c===xl)throw new Error(`${ne} found map but not enough entries (got ${i} [no value], expected ${r.value})`);n?s.set(a,c):o[a]=c}return n?s:o}function vl(r,e){if(r.done())return xl;let t=r.next();if(t.type===S.break)return Xf;if(t.type.terminal)return t.value;if(t.type===S.array)return HC(t,r,e);if(t.type===S.map)return $C(t,r,e);if(t.type===S.tag){if(e.tags&&typeof e.tags[t.value]=="function"){let n=vl(r,e);return e.tags[t.value](n)}throw new Error(`${ne} tag not supported (${t.value})`)}throw new Error("unsupported")}function cm(r,e){if(!(r instanceof Uint8Array))throw new Error(`${ne} data to decode must be a Uint8Array`);e=Object.assign({},qC,e);let t=e.tokenizer||new am(r,e),n=vl(t,e);if(n===xl)throw new Error(`${ne} did not find any content to decode`);if(n===Xf)throw new Error(`${ne} got unexpected break`);return[n,r.subarray(t.pos())]}function Mr(r,e){let[t,n]=cm(r,e);if(n.length>0)throw new Error(`${ne} too many terminals, data makes no sense`);return t}var _r=Ue(ei(),1);var z9=jt("ipns:utils"),j9=x("/ipns/"),GC=114,X9=async(r,e)=>{if(e==null||r==null){let n=new Error("one or more of the provided parameters are not defined");throw z9.error(n),(0,_r.default)(n,em)}let t;if(e.pubKey!=null){try{t=J0(e.pubKey)}catch(o){throw z9.error(o),o}if(!(await It(e.pubKey)).equals(r))throw(0,_r.default)(new Error("Embedded public key did not match PeerID"),V7)}else r.publicKey!=null&&(t=J0(r.publicKey));if(t!=null)return t;throw(0,_r.default)(new Error("no public key is available"),em)};var Q9=r=>{let e=x("ipns-signature:");return le([e,r])},_l=r=>"signatureV1"in r?ur.encode({value:x(r.value),signatureV1:r.signatureV1,validityType:r.validityType,validity:x(r.validity),sequence:r.sequence,ttl:r.ttl,pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data}):ur.encode({pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data});function Pn(r){let e=ur.decode(r);if(e.sequence!=null&&(e.sequence=BigInt(e.sequence)),e.ttl!=null&&(e.ttl=BigInt(e.ttl)),e.signatureV2==null||e.data==null)throw(0,_r.default)(new Error("missing data or signatureV2"),Ro);let t=Z9(e.data),n=YC(t.Value),o=v(t.Validity);if(e.value!=null&&e.signatureV1!=null)return WC(e),{value:n,validityType:ur.ValidityType.EOL,validity:o,sequence:t.Sequence,ttl:t.TTL,pubKey:e.pubKey,signatureV1:e.signatureV1,signatureV2:e.signatureV2,data:e.data};if(e.signatureV2!=null)return{value:n,validityType:ur.ValidityType.EOL,validity:o,sequence:t.Sequence,ttl:t.TTL,pubKey:e.pubKey,signatureV2:e.signatureV2,data:e.data};throw new Error("invalid record: does not include signatureV1 or signatureV2")}var lm=r=>le([j9,r.toBytes()]),J9=r=>at(r.slice(j9.length));var Z9=r=>{let e=Mr(r);if(e.ValidityType===0)e.ValidityType=ur.ValidityType.EOL;else throw(0,_r.default)(new Error("Unknown validity type"),Mf);return Number.isInteger(e.Sequence)&&(e.Sequence=BigInt(e.Sequence)),Number.isInteger(e.TTL)&&(e.TTL=BigInt(e.TTL)),e},YC=r=>{if(r!=null){if(na(r))return`/ipns/${r.toCID().toString(es)}`;if(r instanceof Uint8Array){let n=v(r);n.startsWith("/")&&(r=n)}let e=r.toString().trim();if(e.startsWith("/")&&e.length>1)return e;let t=de.asCID(r);if(t!=null)return t.code===GC?`/ipns/${t.toString(es)}`:`/ipfs/${t.toV1().toString()}`;try{return r instanceof Uint8Array?`/ipfs/${de.decode(r).toV1().toString()}`:`/ipfs/${de.parse(e).toV1().toString()}`}catch{}}throw(0,_r.default)(new Error("Value must be a valid content path starting with /"),F7)},WC=r=>{if(r.data==null)throw(0,_r.default)(new Error("Record data is missing"),U7);let e=Z9(r.data);if(!O(e.Value,r.value??new Uint8Array(0)))throw(0,_r.default)(new Error('Field "value" did not match between protobuf and CBOR'),Ro);if(!O(e.Validity,r.validity??new Uint8Array(0)))throw(0,_r.default)(new Error('Field "validity" did not match between protobuf and CBOR'),Ro);if(e.ValidityType!==r.validityType)throw(0,_r.default)(new Error('Field "validityType" did not match between protobuf and CBOR'),Ro);if(e.Sequence!==r.sequence)throw(0,_r.default)(new Error('Field "sequence" did not match between protobuf and CBOR'),Ro);if(e.TTL!==r.ttl)throw(0,_r.default)(new Error('Field "ttl" did not match between protobuf and CBOR'),Ro)};var VQ=jt("ipns"),qQ=Xe.code,XC="/ipns/",HQ=XC.length;var Sl=Ue(ei(),1),eb=Ue(Kf(),1);var Jf=jt("ipns:validator"),QC=1024*10,JC=async(r,e)=>{let t=Pn(e),n;try{let o=Q9(t.data);n=await r.verify(o,t.signatureV2)}catch{n=!1}if(!n)throw Jf.error("record signature verification failed"),(0,Sl.default)(new Error("record signature verification failed"),Ro);if(t.validityType===ur.ValidityType.EOL){if(eb.default.fromString(t.validity).toDate().getTime()<Date.now())throw Jf.error("record has expired"),(0,Sl.default)(new Error("record has expired"),M7)}else if(t.validityType!=null)throw Jf.error("unrecognized validity type"),(0,Sl.default)(new Error("unrecognized validity type"),Mf);Jf("ipns record for %s is valid",t.value)};async function Zf(r,e){if(e.byteLength>QC)throw(0,Sl.default)(new Error("record too large"),q7);let t=J9(r),n=Pn(e),o=await X9(t,n);await JC(o,e)}async function*Rl(r){let e=/\r?\n/,t=new TextDecoder("utf8"),n="";for await(let o of r){typeof o=="string"&&(o=new TextEncoder().encode(o)),n+=t.decode(o,{stream:!0});let s=n.split(e);n=s.pop()??"";for(let i=0;i<s.length;i++)yield JSON.parse(s[i])}n+=t.decode(),n!==""&&(yield JSON.parse(n))}var fm=Ue(rb(),1);var bs=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},dm=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},nb=r=>globalThis.DOMException===void 0?new dm(r):new DOMException(r),ob=r=>{let e=r.reason===void 0?nb("This operation was aborted."):r.reason;return e instanceof Error?e:nb(e)};function dn(r,e){let{milliseconds:t,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout}}=e,i,c=new Promise((l,f)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){let{signal:d}=e;d.aborted&&f(ob(d)),d.addEventListener("abort",()=>{f(ob(d))})}if(t===Number.POSITIVE_INFINITY){r.then(l,f);return}let u=new bs;i=s.setTimeout.call(void 0,()=>{if(n){try{l(n())}catch(d){f(d)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?l():o instanceof Error?f(o):(u.message=o??`Promise timed out after ${t} milliseconds`,f(u))},t),(async()=>{try{l(await r)}catch(d){f(d)}})()}).finally(()=>{c.clear()});return c.clear=()=>{s.clearTimeout.call(void 0,i),i=void 0},c}function hm(r,e,t){let n=0,o=r.length;for(;o>0;){let s=Math.trunc(o/2),i=n+s;t(r[i],e)<=0?(n=++i,o-=s+1):o=s}return n}var Il=class{#e=[];enqueue(e,t){t={priority:0,...t};let n={priority:t.priority,run:e};if(this.size&&this.#e[this.size-1].priority>=t.priority){this.#e.push(n);return}let o=hm(this.#e,n,(s,i)=>i.priority-s.priority);this.#e.splice(o,0,n)}dequeue(){return this.#e.shift()?.run}filter(e){return this.#e.filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return this.#e.length}};var Ur=class extends fm.default{#e;#t;#r=0;#i;#c;#p=0;#o;#l;#n;#m;#s=0;#u;#a;#y;timeout;constructor(e){if(super(),e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:Il,...e},!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap?.toString()??""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval?.toString()??""}\` (${typeof e.interval})`);this.#e=e.carryoverConcurrencyCount,this.#t=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#i=e.intervalCap,this.#c=e.interval,this.#n=new e.queueClass,this.#m=e.queueClass,this.concurrency=e.concurrency,this.timeout=e.timeout,this.#y=e.throwOnTimeout===!0,this.#a=e.autoStart===!1}get#w(){return this.#t||this.#r<this.#i}get#E(){return this.#s<this.#u}#x(){this.#s--,this.#f(),this.emit("next")}#v(){this.#b(),this.#g(),this.#l=void 0}get#_(){let e=Date.now();if(this.#o===void 0){let t=this.#p-e;if(t<0)this.#r=this.#e?this.#s:0;else return this.#l===void 0&&(this.#l=setTimeout(()=>{this.#v()},t)),!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.#a){let e=!this.#_;if(this.#w&&this.#E){let t=this.#n.dequeue();return t?(this.emit("active"),t(),e&&this.#g(),!0):!1}}return!1}#g(){this.#t||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.#e?this.#s:0,this.#d()}#d(){for(;this.#f(););}get concurrency(){return this.#u}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this.#u=e,this.#d()}async#S(e){return new Promise((t,n)=>{e.addEventListener("abort",()=>{n(e.reason)},{once:!0})})}async add(e,t={}){return t={timeout:this.timeout,throwOnTimeout:this.#y,...t},new Promise((n,o)=>{this.#n.enqueue(async()=>{this.#s++,this.#r++;try{t.signal?.throwIfAborted();let s=e({signal:t.signal});t.timeout&&(s=dn(Promise.resolve(s),{milliseconds:t.timeout})),t.signal&&(s=Promise.race([s,this.#S(t.signal)]));let i=await s;n(i),this.emit("completed",i)}catch(s){if(s instanceof bs&&!t.throwOnTimeout){n();return}o(s),this.emit("error",s)}finally{this.#x()}},t),this.emit("add"),this.#f()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#a?(this.#a=!1,this.#d(),this):this}pause(){this.#a=!0}clear(){this.#n=new this.#m}async onEmpty(){this.#n.size!==0&&await this.#h("empty")}async onSizeLessThan(e){this.#n.size<e||await this.#h("next",()=>this.#n.size<e)}async onIdle(){this.#s===0&&this.#n.size===0||await this.#h("idle")}async#h(e,t){return new Promise(n=>{let o=()=>{t&&!t()||(this.off(e,o),n())};this.on(e,o)})}get size(){return this.#n.size}sizeBy(e){return this.#n.filter(e).length}get pending(){return this.#s}get isPaused(){return this.#a}};function tN(r){return r[Symbol.asyncIterator]!=null}function rN(r){if(tN(r))return(async()=>{for await(let e of r)return e})();for(let e of r)return e}var mi=rN;var pm=x("/ipns/");function sb(r){return O(r.subarray(0,pm.byteLength),pm)}var ib=r=>at(r.slice(pm.length)),td=class{client;constructor(e){this.client=e}async*findProviders(e,t={}){yield*rn(this.client.getProviders(e,t),n=>({id:n.ID,multiaddrs:n.Addrs??[]}))}async provide(){}async put(e,t,n){if(!sb(e))return;let o=ib(e),s=Pn(t);await this.client.putIPNS(o,s,n)}async get(e,t){if(!sb(e))throw new h("Not found","ERR_NOT_FOUND");let n=ib(e);try{let o=await this.client.getIPNS(n,t);return _l(o)}catch(o){throw o.code==="ERR_BAD_RESPONSE"?new h("Not found","ERR_NOT_FOUND"):o}}},rd=class{client;constructor(e){this.client=e}async findPeer(e,t={}){let n=await mi(this.client.getPeers(e,t));if(n!=null)return{id:n.ID,multiaddrs:n.Addrs??[]};throw new h("Not found","ERR_NOT_FOUND")}async*getClosestPeers(e,t={}){}};var fr=jt("delegated-routing-v1-http-api-client"),ab={concurrentRequests:4,timeout:3e4},nd=class{started;httpQueue;shutDownController;clientUrl;timeout;contentRouting;peerRouting;constructor(e,t={}){this.started=!1,this.shutDownController=new AbortController,Ce(1/0,this.shutDownController.signal),this.httpQueue=new Ur({concurrency:t.concurrentRequests??ab.concurrentRequests}),this.clientUrl=e instanceof URL?e:new URL(e),this.timeout=t.timeout??ab.timeout,this.contentRouting=new td(this),this.peerRouting=new rd(this)}get[vn](){return this.contentRouting}get[_n](){return this.peerRouting}isStarted(){return this.started}start(){this.started=!0}stop(){this.httpQueue.clear(),this.shutDownController.abort(),this.started=!1}async*getProviders(e,t={}){fr("getProviders starts: %c",e);let n=Rt([this.shutDownController.signal,t.signal,AbortSignal.timeout(this.timeout)]),o=he(),s=he();this.httpQueue.add(async()=>(o.resolve(),s.promise));try{await o.promise;let i=`${this.clientUrl}routing/v1/providers/${e.toString()}`,c=await fetch(i,{headers:{Accept:"application/x-ndjson"},signal:n});if(c.status===404)throw new h("No matching records found.","ERR_NOT_FOUND");if(c.status===422)throw new h("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(c.body==null)throw new h("Routing response had no body","ERR_BAD_RESPONSE");if(c.headers.get("Content-Type")==="application/json"){let f=await c.json();for(let u of f.Providers){let d=this.#e(u);d!=null&&(yield d)}}else for await(let f of Rl(P1(c.body))){let u=this.#e(f);u!=null&&(yield u)}}catch(i){fr.error("getProviders errored:",i)}finally{n.clear(),s.resolve(),fr("getProviders finished: %c",e)}}async*getPeers(e,t={}){fr("getPeers starts: %c",e);let n=Rt([this.shutDownController.signal,t.signal,AbortSignal.timeout(this.timeout)]),o=he(),s=he();this.httpQueue.add(async()=>(o.resolve(),s.promise));try{await o.promise;let i=`${this.clientUrl}routing/v1/peers/${e.toCID().toString()}`,c=await fetch(i,{headers:{Accept:"application/x-ndjson"},signal:n});if(c.status===404)throw new h("No matching records found.","ERR_NOT_FOUND");if(c.status===422)throw new h("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(c.body==null)throw new h("Routing response had no body","ERR_BAD_RESPONSE");if(c.headers.get("Content-Type")==="application/json"){let f=await c.json();for(let u of f.Peers){let d=this.#e(u);d!=null&&(yield d)}}else for await(let f of Rl(P1(c.body))){let u=this.#e(f);u!=null&&(yield u)}}catch(i){fr.error("getPeers errored:",i)}finally{n.clear(),s.resolve(),fr("getPeers finished: %c",e)}}async getIPNS(e,t={}){fr("getIPNS starts: %c",e);let n=Rt([this.shutDownController.signal,t.signal,AbortSignal.timeout(this.timeout)]),o=he(),s=he();this.httpQueue.add(async()=>(o.resolve(),s.promise));let i=`${this.clientUrl}routing/v1/ipns/${e.toCID().toString()}`;try{await o.promise;let c=await fetch(i,{headers:{Accept:"application/vnd.ipfs.ipns-record"},signal:n});if(fr("getIPNS GET %s %d",i,c.status),c.status===404)throw new h("No matching records found.","ERR_NOT_FOUND");if(c.status===422)throw new h("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(c.body==null)throw new h("GET ipns response had no body","ERR_BAD_RESPONSE");let l=await c.arrayBuffer(),f=new Uint8Array(l,0,l.byteLength);return t.validate!==!1&&await Zf(lm(e),f),Pn(f)}catch(a){throw fr.error("getIPNS GET %s error:",i,a),a}finally{n.clear(),s.resolve(),fr("getIPNS finished: %c",e)}}async putIPNS(e,t,n={}){fr("putIPNS starts: %c",e);let o=Rt([this.shutDownController.signal,n.signal,AbortSignal.timeout(this.timeout)]),s=he(),i=he();this.httpQueue.add(async()=>(s.resolve(),i.promise));let a=`${this.clientUrl}routing/v1/ipns/${e.toCID().toString()}`;try{await s.promise;let c=_l(t),f=await fetch(a,{method:"PUT",headers:{"Content-Type":"application/vnd.ipfs.ipns-record"},body:c,signal:o});if(fr("putIPNS PUT %s %d",a,f.status),f.status!==200)throw new h("PUT ipns response had status other than 200","ERR_BAD_RESPONSE")}catch(c){throw fr.error("putIPNS PUT %s error:",a,c.stack),c}finally{o.clear(),i.resolve(),fr("putIPNS finished: %c",e)}}#e(e){let t=[],n=e.Addrs?.map(se)??[];return e.Protocols!=null&&t.push(...e.Protocols),e.Protocol!=null&&(t.push(e.Protocol),delete e.Protocol),{...e,Schema:"peer",ID:Ae(e.ID),Addrs:n,Protocols:t}}};function cb(r,e={}){return new nd(new URL(r),e)}var mm=class{libp2p;constructor(e){this.libp2p=e}async provide(e,t){await this.libp2p.contentRouting.provide(e,t)}async*findProviders(e,t){yield*this.libp2p.contentRouting.findProviders(e,t)}async put(e,t,n){await this.libp2p.contentRouting.put(e,t,n)}async get(e,t){return this.libp2p.contentRouting.get(e,t)}async findPeer(e,t){return this.libp2p.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t){yield*this.libp2p.peerRouting.getClosestPeers(e,t)}};function ym(r){return new mm(r)}var Pa={};oe(Pa,{abortedError:()=>aN,closeFailedError:()=>oN,deleteFailedError:()=>ub,getFailedError:()=>sN,hasFailedError:()=>iN,notFoundError:()=>kl,openFailedError:()=>nN,putFailedError:()=>lb});var Io=Ue(ei(),1);function nN(r){return r=r??new Error("Open failed"),(0,Io.default)(r,"ERR_OPEN_FAILED")}function oN(r){return r=r??new Error("Close failed"),(0,Io.default)(r,"ERR_CLOSE_FAILED")}function lb(r){return r=r??new Error("Put failed"),(0,Io.default)(r,"ERR_PUT_FAILED")}function sN(r){return r=r??new Error("Get failed"),(0,Io.default)(r,"ERR_GET_FAILED")}function ub(r){return r=r??new Error("Delete failed"),(0,Io.default)(r,"ERR_DELETE_FAILED")}function iN(r){return r=r??new Error("Has failed"),(0,Io.default)(r,"ERR_HAS_FAILED")}function kl(r){return r=r??new Error("Not Found"),(0,Io.default)(r,"ERR_NOT_FOUND")}function aN(r){return r=r??new Error("Aborted"),(0,Io.default)(r,"ERR_ABORTED")}var yi=class{has(e,t){return Promise.reject(new Error(".has is not implemented"))}put(e,t,n){return Promise.reject(new Error(".put is not implemented"))}async*putMany(e,t){for await(let{cid:n,block:o}of e)await this.put(n,o,t),yield n}get(e,t){return Promise.reject(new Error(".get is not implemented"))}async*getMany(e,t){for await(let n of e)yield{cid:n,block:await this.get(n,t)}}async delete(e,t){await Promise.reject(new Error(".delete is not implemented"))}async*deleteMany(e,t){for await(let n of e)await this.delete(n,t),yield n}async*getAll(e){throw new Error(".getAll is not implemented")}};var Tl=class extends yi{data;constructor(){super(),this.data=new Map}put(e,t){return this.data.set(vt.encode(e.multihash.bytes),t),e}get(e){let t=this.data.get(vt.encode(e.multihash.bytes));if(t==null)throw kl();return t}has(e){return this.data.has(vt.encode(e.multihash.bytes))}async delete(e){this.data.delete(vt.encode(e.multihash.bytes))}async*getAll(){for(let[e,t]of this.data.entries())yield{cid:de.createV1(r1,Zr(vt.decode(e))),block:t}}};function cN(r){return r[Symbol.asyncIterator]!=null}function lN(r,e){if(cN(r))return async function*(){for await(let a of r)await e(a)&&(yield a)}();let t=Zi(r),{value:n,done:o}=t.next();if(o===!0)return function*(){}();let s=e(n);if(typeof s.then=="function")return async function*(){await s&&(yield n);for await(let a of t)await e(a)&&(yield a)}();let i=e;return function*(){s===!0&&(yield n);for(let a of t)i(a)&&(yield a)}()}var hn=lN;var rZ=jt("blockstore:core:tiered");var iZ={...Pa};var fb=Ue(ei(),1);function od(r){return r=r??new Error("Not Found"),(0,fb.default)(r,"ERR_NOT_FOUND")}var db="SHARDING";function fN(r){return r[Symbol.asyncIterator]!=null}function dN(r){if(fN(r))return(async()=>{let t=[];for await(let n of r)t.push(n);return t})();let e=[];for(let t of r)e.push(t);return e}var Pl=dN;function hN(r){return r[Symbol.asyncIterator]!=null}function pN(r,e){return hN(r)?async function*(){yield*(await Pl(r)).sort(e)}():function*(){yield*Pl(r).sort(e)}()}var sd=pN;var ko=class{put(e,t,n){return Promise.reject(new Error(".put is not implemented"))}get(e,t){return Promise.reject(new Error(".get is not implemented"))}has(e,t){return Promise.reject(new Error(".has is not implemented"))}delete(e,t){return Promise.reject(new Error(".delete is not implemented"))}async*putMany(e,t={}){for await(let{key:n,value:o}of e)await this.put(n,o,t),yield n}async*getMany(e,t={}){for await(let n of e)yield{key:n,value:await this.get(n,t)}}async*deleteMany(e,t={}){for await(let n of e)await this.delete(n,t),yield n}batch(){let e=[],t=[];return{put(n,o){e.push({key:n,value:o})},delete(n){t.push(n)},commit:async n=>{await Pr(this.putMany(e,n)),e=[],await Pr(this.deleteMany(t,n)),t=[]}}}async*_all(e,t){throw new Error("._all is not implemented")}async*_allKeys(e,t){throw new Error("._allKeys is not implemented")}query(e,t){let n=this._all(e,t);if(e.prefix!=null){let o=e.prefix;n=hn(n,s=>s.key.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>hn(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>sd(o,s),n)),e.offset!=null){let o=0,s=e.offset;n=hn(n,()=>o++>=s)}return e.limit!=null&&(n=rs(n,e.limit)),n}queryKeys(e,t){let n=this._allKeys(e,t);if(e.prefix!=null){let o=e.prefix;n=hn(n,s=>s.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>hn(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>sd(o,s),n)),e.offset!=null){let o=e.offset,s=0;n=hn(n,()=>s++>=o)}return e.limit!=null&&(n=rs(n,e.limit)),n}};var gi=class extends ko{data;constructor(){super(),this.data=new Map}put(e,t){return this.data.set(e.toString(),t),e}get(e){let t=this.data.get(e.toString());if(t==null)throw od();return t}has(e){return this.data.has(e.toString())}delete(e){this.data.delete(e.toString())}*_all(){for(let[e,t]of this.data.entries())yield{key:new qe(e),value:t}}*_allKeys(){for(let e of this.data.keys())yield new qe(e)}};var OZ=new qe(db);var zZ=jt("datastore:core:tiered");var gm=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function id(r,e,t,n){let o=new gm(n?.errorMessage,n?.errorCode);return t?.aborted===!0?Promise.reject(o):new Promise((s,i)=>{let a=l=>{n?.filter?.(l)!==!1&&(r.removeEventListener(e,a),t?.removeEventListener("abort",c),s(l))},c=()=>{r.removeEventListener(e,a),t?.removeEventListener("abort",c),i(o)};r.addEventListener(e,a),t?.addEventListener("abort",c)})}var ad=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function dr(r,e,t){if(e==null)return r;if(e.aborted)return Promise.reject(new ad(t?.errorMessage,t?.errorCode));let n,o=new ad(t?.errorMessage,t?.errorCode);try{return await Promise.race([r,new Promise((s,i)=>{n=()=>{i(o)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var cd=class{deferred;signal;where;constructor(e,t){this.signal=t,this.deferred=he(),this.where=e,this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(new en)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function gN(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var ld=class{id;fn;options;priority;recipients;status;timeline;controller;constructor(e,t,n=0){this.id=gN(),this.status="queued",this.fn=e,this.priority=n,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,Ce(1/0,this.controller.signal),this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&this.controller.abort(new en)}async join(e={}){let t=new cd(new Error("where").stack,e.signal);return this.recipients.push(t),e.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await dr(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.signal?.removeEventListener("abort",this.onAbort)})}};function bN(r,e,t){let n=0,o=r.length;for(;o>0;){let s=Math.trunc(o/2),i=n+s;t(r[i],e)<=0?(n=++i,o-=s+1):o=s}return n}var To=class extends Fe{concurrency;queue;pending;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.pending=0,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.queue=[]}tryToStartAnother(){if(this.size===0)return queueMicrotask(()=>{this.safeDispatchEvent("empty")}),this.running===0&&queueMicrotask(()=>{this.safeDispatchEvent("idle")}),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){if(this.queue[this.size-1]?.priority>=e.priority){this.queue.push(e);return}let t=bN(this.queue,e,(n,o)=>o.priority-n.priority);this.queue.splice(t,0,e)}async add(e,t){t?.signal?.throwIfAborted();let n=new ld(e,t,t?.priority),o=n.join(t).then(s=>(this.safeDispatchEvent("completed",{detail:s}),s)).catch(s=>{throw this.safeDispatchEvent("error",{detail:s}),s});return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),o}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new en)}),this.clear()}async onEmpty(e){this.size!==0&&await id(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await id(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await id(this,"idle",e?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=At({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},o=c=>{c.detail!=null&&t.push(c.detail)},s=c=>{n(c.detail)},i=()=>{n()},a=()=>{n(new h("Queue aborted","ERR_QUEUE_ABORTED"))};this.addEventListener("completed",o),this.addEventListener("error",s),this.addEventListener("idle",i),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",o),this.removeEventListener("error",s),this.removeEventListener("idle",i),e?.signal?.removeEventListener("abort",a),n()}}};var gb="/pin/",pb="/pinned-block/",bm=es,mb=1;function yb(r){return r.version===0&&(r=r.toV1()),new qe(`${gb}${r.toString(bm)}`)}var ud=class{datastore;blockstore;dagWalkers;constructor(e,t,n){this.datastore=e,this.blockstore=t,this.dagWalkers=n}async*add(e,t={}){let n=yb(e);if(await this.datastore.has(n))throw new Error("Already pinned");let o=Math.round(t.depth??1/0);if(o<0)throw new Error("Depth must be greater than or equal to 0");let s=new To({concurrency:mb});for await(let a of this.#e(e,s,{...t,depth:o}))await this.#t(a,c=>c.pinnedBy.find(l=>O(l,e.bytes))!=null?!1:(c.pinCount++,c.pinnedBy.push(e.bytes),!0),t),yield a;let i={depth:o,metadata:t.metadata??{}};await this.datastore.put(n,Da(i),t)}async*#e(e,t,n){if(n.depth===-1)return;let o=this.dagWalkers[e.code];if(o==null)throw new Error(`No dag walker found for cid codec ${e.code}`);let s=await this.blockstore.get(e,n);yield e;for await(let i of o.walk(s))yield*await t.add(async()=>this.#e(i,t,{...n,depth:n.depth-1}))}async#t(e,t,n){let o=new qe(`${pb}${bm.encode(e.multihash.bytes)}`),s={pinCount:0,pinnedBy:[]};try{s=Mr(await this.datastore.get(o,n))}catch(a){if(a.code!=="ERR_NOT_FOUND")throw a}if(t(s)){if(s.pinCount===0&&await this.datastore.has(o)){await this.datastore.delete(o);return}await this.datastore.put(o,Da(s),n),n.onProgress?.(new De("helia:pin:add",e))}}async*rm(e,t={}){let n=yb(e),o=await this.datastore.get(n,t),s=Mr(o);await this.datastore.delete(n,t);let i=new To({concurrency:mb});for await(let a of this.#e(e,i,{...t,depth:s.depth}))await this.#t(a,c=>(c.pinCount--,c.pinnedBy=c.pinnedBy.filter(l=>O(l,e.bytes)),!0),{...t,depth:s.depth}),yield a}async*ls(e={}){for await(let{key:t,value:n}of this.datastore.query({prefix:gb+(e.cid!=null?`${e.cid.toString(es)}`:"")},e)){let o=de.parse(t.toString().substring(5),es),s=Mr(n);yield{cid:o,...s}}}async isPinned(e,t={}){let n=new qe(`${pb}${bm.encode(e.multihash.bytes)}`);return this.datastore.has(n,t)}};function Ca(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),o=n.value;return n.done===!0||o==null?{done:!0,value:void 0}:{done:!1,value:e(o)}}};return t}var Lt=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),n)}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return Ca(this.map.entries(),e=>[Ae(e[0]),e[1]])}forEach(e){this.map.forEach((t,n)=>{e(t,Ae(n),this)})}get(e){return this.map.get(e.toString())}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),t)}keys(){return Ca(this.map.keys(),e=>Ae(e))}values(){return this.map.values()}get size(){return this.map.size}};var mt=class r{set;constructor(e){if(this.set=new Set,e!=null)for(let t of e)this.set.add(t.toString())}get size(){return this.set.size}[Symbol.iterator](){return this.values()}add(e){this.set.add(e.toString())}clear(){this.set.clear()}delete(e){this.set.delete(e.toString())}entries(){return Ca(this.set.entries(),e=>{let t=Ae(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let n=Ae(t);e(n,n,this)})}has(e){return this.set.has(e.toString())}values(){return Ca(this.set.values(),e=>Ae(e))}intersection(e){let t=new r;for(let n of e)this.has(n)&&t.add(n);return t}difference(e){let t=new r;for(let n of this)e.has(n)||t.add(n);return t}union(e){let t=new r;for(let n of e)t.add(n);for(let n of this)t.add(n);return t}};var fd=class{log;routers;constructor(e,t){this.log=e.logger.forComponent("helia:routing"),this.routers=t.routers??[]}async start(){await jo(...this.routers)}async stop(){await Xo(...this.routers)}async*findProviders(e,t={}){if(this.routers.length===0)throw new h("No content routers available","ERR_NO_ROUTERS_AVAILABLE");let n=new mt;for await(let o of Xt(...Na(this.routers,"findProviders").map(s=>s.findProviders(e,t))))o!=null&&(n.has(o.id)||(n.add(o.id),yield o))}async provide(e,t={}){if(this.routers.length===0)throw new h("No content routers available","ERR_NO_ROUTERS_AVAILABLE");await Promise.all(Na(this.routers,"provide").map(async n=>{await n.provide(e,t)}))}async put(e,t,n){await Promise.all(Na(this.routers,"put").map(async o=>{await o.put(e,t,n)}))}async get(e,t){return Promise.any(Na(this.routers,"get").map(async n=>n.get(e,t)))}async findPeer(e,t){if(this.routers.length===0)throw new h("No peer routers available","ERR_NO_ROUTERS_AVAILABLE");let n=this,o=Xt(...Na(this.routers,"findPeer").map(s=>async function*(){try{yield await s.findPeer(e,t)}catch(i){n.log.error(i)}}()));for await(let s of o)if(s!=null)return s;throw new h("Could not find peer in routing","ERR_NOT_FOUND")}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new h("No peer routers available","ERR_NO_ROUTERS_AVAILABLE");let n=new mt;for await(let o of Xt(...Na(this.routers,"getClosestPeers").map(s=>s.getClosestPeers(e,t))))o!=null&&(n.has(o.id)||(n.add(o.id),yield o))}};function Na(r,e){return r.filter(t=>t[e]!=null)}var ws={},Ba=r=>{r.addEventListener("message",e=>{Ba.dispatchEvent("message",r,e)}),r.port!=null&&r.port.addEventListener("message",e=>{Ba.dispatchEvent("message",r,e)})};Ba.addEventListener=(r,e)=>{ws[r]==null&&(ws[r]=[]),ws[r].push(e)};Ba.removeEventListener=(r,e)=>{ws[r]!=null&&(ws[r]=ws[r].filter(t=>t===e))};Ba.dispatchEvent=function(r,e,t){ws[r]!=null&&ws[r].forEach(n=>n(e,t))};var wm=Ba;var Em="lock:worker:request-read",xm="lock:worker:release-read",vm="lock:master:grant-read",_m="lock:worker:request-write",Sm="lock:worker:release-write",Rm="lock:master:grant-write";var bb=(r=21)=>Math.random().toString().substring(2);var wb=(r,e,t,n,o)=>(s,i)=>{if(i.data.type!==t)return;let a={type:i.data.type,name:i.data.name,identifier:i.data.identifier};r.dispatchEvent(new MessageEvent(e,{data:{name:a.name,handler:async()=>{s.postMessage({type:o,name:a.name,identifier:a.identifier}),await new Promise(c=>{let l=f=>{if(f==null||f.data==null)return;let u={type:f.data.type,name:f.data.name,identifier:f.data.identifier};u.type===n&&u.identifier===a.identifier&&(s.removeEventListener("message",l),c())};s.addEventListener("message",l)})}}}))},Eb=(r,e,t,n)=>async()=>{let o=bb();return globalThis.postMessage({type:e,identifier:o,name:r}),new Promise(s=>{let i=a=>{if(a==null||a.data==null)return;let c={type:a.data.type,identifier:a.data.identifier};c.type===t&&c.identifier===o&&(globalThis.removeEventListener("message",i),s(()=>{globalThis.postMessage({type:n,identifier:o,name:r})}))};globalThis.addEventListener("message",i)})},wN={singleProcess:!1},xb=r=>{if(r=Object.assign({},wN,r),!!globalThis.document||r.singleProcess){let t=new EventTarget;return wm.addEventListener("message",wb(t,"requestReadLock",Em,xm,vm)),wm.addEventListener("message",wb(t,"requestWriteLock",_m,Sm,Rm)),t}return{isWorker:!0,readLock:t=>Eb(t,Em,vm,xm),writeLock:t=>Eb(t,_m,Rm,Sm)}};var bi={},Es;async function Am(r,e){let t,n=new Promise(o=>{t=o});return r.add(async()=>dn((async()=>{await new Promise(o=>{t(()=>{o()})})})(),{milliseconds:e.timeout})),n}var EN=(r,e)=>{if(Es.isWorker===!0)return{readLock:Es.readLock(r,e),writeLock:Es.writeLock(r,e)};let t=new Ur({concurrency:1}),n;return{async readLock(){if(n!=null)return Am(n,e);n=new Ur({concurrency:e.concurrency,autoStart:!1});let o=n,s=Am(n,e);return t.add(async()=>{o.start(),await o.onIdle().then(()=>{n===o&&(n=null)})}),s},async writeLock(){return n=null,Am(t,e)}}},xN={name:"lock",concurrency:1/0,timeout:846e5,singleProcess:!1};function Cl(r){let e=Object.assign({},xN,r);return Es==null&&(Es=xb(e),Es.isWorker!==!0&&(Es.addEventListener("requestReadLock",t=>{bi[t.data.name]!=null&&bi[t.data.name].readLock().then(async n=>t.data.handler().finally(()=>{n()}))}),Es.addEventListener("requestWriteLock",async t=>{bi[t.data.name]!=null&&bi[t.data.name].writeLock().then(async n=>t.data.handler().finally(()=>{n()}))}))),bi[e.name]==null&&(bi[e.name]=EN(e.name,e)),bi[e.name]}var dd=class{lock;child;pins;started;constructor(e,t,n={}){this.child=e,this.pins=t,this.lock=Cl({singleProcess:n.holdGcLock}),this.started=!1}isStarted(){return this.started}async start(){await jo(this.child),this.started=!0}async stop(){await Xo(this.child),this.started=!1}unwrap(){return this.child}async put(e,t,n={}){let o=await this.lock.readLock();try{return await this.child.put(e,t,n)}finally{o()}}async*putMany(e,t={}){let n=await this.lock.readLock();try{yield*this.child.putMany(e,t)}finally{n()}}async get(e,t={}){let n=await this.lock.readLock();try{return await this.child.get(e,t)}finally{n()}}async*getMany(e,t={}){let n=await this.lock.readLock();try{yield*this.child.getMany(e,t)}finally{n()}}async delete(e,t={}){let n=await this.lock.writeLock();try{if(await this.pins.isPinned(e))throw new Error("CID was pinned");await this.child.delete(e,t)}finally{n()}}async*deleteMany(e,t={}){let n=await this.lock.writeLock();try{let o=this;yield*this.child.deleteMany(async function*(){for await(let s of e){if(await o.pins.isPinned(s))throw new Error("CID was pinned");yield s}}(),t)}finally{n()}}async has(e,t={}){let n=await this.lock.readLock();try{return await this.child.has(e,t)}finally{n()}}async*getAll(e={}){let t=await this.lock.readLock();try{yield*this.child.getAll(e)}finally{t()}}};var _b=42;function vN(r){if(r.asCID!==r&&r["/"]!==r.bytes)return null;let e=de.asCID(r);if(!e)return null;let t=new Uint8Array(e.bytes.byteLength+1);return t.set(e.bytes,1),[new q(S.tag,_b),new q(S.bytes,t)]}function _N(){throw new Error("`undefined` is not supported by the IPLD Data Model and cannot be encoded")}function SN(r){if(Number.isNaN(r))throw new Error("`NaN` is not supported by the IPLD Data Model and cannot be encoded");if(r===1/0||r===-1/0)throw new Error("`Infinity` and `-Infinity` is not supported by the IPLD Data Model and cannot be encoded");return null}var vb={float64:!0,typeEncoders:{Object:vN,undefined:_N,number:SN}},lte={...vb,typeEncoders:{...vb.typeEncoders}};function RN(r){if(r[0]!==0)throw new Error("Invalid CID for CBOR tag 42; expected leading 0x00");return de.decode(r.subarray(1))}var Im={allowIndefinite:!1,coerceUndefinedToNull:!0,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};Im.tags[_b]=RN;var ute={...Im,tags:Im.tags.slice()};var Sb=113;var Rb=class extends Array{constructor(){super(),this.inRecursive=[]}prefix(e){let t=this.inRecursive[this.inRecursive.length-1];t&&(t.type===S.array&&(t.elements++,t.elements!==1&&e.push([44])),t.type===S.map&&(t.elements++,t.elements!==1&&(t.elements%2===1?e.push([44]):e.push([58]))))}[S.uint.major](e,t){this.prefix(e);let n=String(t.value),o=[];for(let s=0;s<n.length;s++)o[s]=n.charCodeAt(s);e.push(o)}[S.negint.major](e,t){this[S.uint.major](e,t)}[S.bytes.major](e,t){throw new Error(`${Aa} unsupported type: Uint8Array`)}[S.string.major](e,t){this.prefix(e);let n=Ff(JSON.stringify(t.value));e.push(n.length>32?yl(n):n)}[S.array.major](e,t){this.prefix(e),this.inRecursive.push({type:S.array,elements:0}),e.push([91])}[S.map.major](e,t){this.prefix(e),this.inRecursive.push({type:S.map,elements:0}),e.push([123])}[S.tag.major](e,t){}[S.float.major](e,t){if(t.type.name==="break"){let i=this.inRecursive.pop();if(i){if(i.type===S.array)e.push([93]);else if(i.type===S.map)e.push([125]);else throw new Error("Unexpected recursive type; this should not happen!");return}throw new Error("Unexpected break; this should not happen!")}if(t.value===void 0)throw new Error(`${Aa} unsupported type: undefined`);if(this.prefix(e),t.type.name==="true"){e.push([116,114,117,101]);return}else if(t.type.name==="false"){e.push([102,97,108,115,101]);return}else if(t.type.name==="null"){e.push([110,117,108,108]);return}let n=String(t.value),o=[],s=!1;for(let i=0;i<n.length;i++)o[i]=n.charCodeAt(i),!s&&(o[i]===46||o[i]===101||o[i]===69)&&(s=!0);s||(o.push(46),o.push(48)),e.push(o)}};var wi=class{constructor(e,t={}){this._pos=0,this.data=e,this.options=t,this.modeStack=["value"],this.lastToken=""}pos(){return this._pos}done(){return this._pos>=this.data.length}ch(){return this.data[this._pos]}currentMode(){return this.modeStack[this.modeStack.length-1]}skipWhitespace(){let e=this.ch();for(;e===32||e===9||e===13||e===10;)e=this.data[++this._pos]}expect(e){if(this.data.length-this._pos<e.length)throw new Error(`${ne} unexpected end of input at position ${this._pos}`);for(let t=0;t<e.length;t++)if(this.data[this._pos++]!==e[t])throw new Error(`${ne} unexpected token at position ${this._pos}, expected to find '${String.fromCharCode(...e)}'`)}parseNumber(){let e=this._pos,t=!1,n=!1,o=a=>{for(;!this.done();){let c=this.ch();if(a.includes(c))this._pos++;else break}};if(this.ch()===45&&(t=!0,this._pos++),this.ch()===48)if(this._pos++,this.ch()===46)this._pos++,n=!0;else return new q(S.uint,0,this._pos-e);if(o([48,49,50,51,52,53,54,55,56,57]),t&&this._pos===e+1)throw new Error(`${ne} unexpected token at position ${this._pos}`);if(!this.done()&&this.ch()===46){if(n)throw new Error(`${ne} unexpected token at position ${this._pos}`);n=!0,this._pos++,o([48,49,50,51,52,53,54,55,56,57])}!this.done()&&(this.ch()===101||this.ch()===69)&&(n=!0,this._pos++,!this.done()&&(this.ch()===43||this.ch()===45)&&this._pos++,o([48,49,50,51,52,53,54,55,56,57]));let s=String.fromCharCode.apply(null,this.data.subarray(e,this._pos)),i=parseFloat(s);return n?new q(S.float,i,this._pos-e):this.options.allowBigInt!==!0||Number.isSafeInteger(i)?new q(i>=0?S.uint:S.negint,i,this._pos-e):new q(i>=0?S.uint:S.negint,BigInt(s),this._pos-e)}parseString(){if(this.ch()!==34)throw new Error(`${ne} unexpected character at position ${this._pos}; this shouldn't happen`);this._pos++;for(let s=this._pos,i=0;s<this.data.length&&i<65536;s++,i++){let a=this.data[s];if(a===92||a<32||a>=128)break;if(a===34){let c=String.fromCharCode.apply(null,this.data.subarray(this._pos,s));return this._pos=s+1,new q(S.string,c,i)}}let e=this._pos,t=[],n=()=>{if(this._pos+4>=this.data.length)throw new Error(`${ne} unexpected end of unicode escape sequence at position ${this._pos}`);let s=0;for(let i=0;i<4;i++){let a=this.ch();if(a>=48&&a<=57)a-=48;else if(a>=97&&a<=102)a=a-97+10;else if(a>=65&&a<=70)a=a-65+10;else throw new Error(`${ne} unexpected unicode escape character at position ${this._pos}`);s=s*16+a,this._pos++}return s},o=()=>{let s=this.ch(),i=null,a=s>239?4:s>223?3:s>191?2:1;if(this._pos+a>this.data.length)throw new Error(`${ne} unexpected unicode sequence at position ${this._pos}`);let c,l,f,u;switch(a){case 1:s<128&&(i=s);break;case 2:c=this.data[this._pos+1],(c&192)===128&&(u=(s&31)<<6|c&63,u>127&&(i=u));break;case 3:c=this.data[this._pos+1],l=this.data[this._pos+2],(c&192)===128&&(l&192)===128&&(u=(s&15)<<12|(c&63)<<6|l&63,u>2047&&(u<55296||u>57343)&&(i=u));break;case 4:c=this.data[this._pos+1],l=this.data[this._pos+2],f=this.data[this._pos+3],(c&192)===128&&(l&192)===128&&(f&192)===128&&(u=(s&15)<<18|(c&63)<<12|(l&63)<<6|f&63,u>65535&&u<1114112&&(i=u))}i===null?(i=65533,a=1):i>65535&&(i-=65536,t.push(i>>>10&1023|55296),i=56320|i&1023),t.push(i),this._pos+=a};for(;!this.done();){let s=this.ch(),i;switch(s){case 92:if(this._pos++,this.done())throw new Error(`${ne} unexpected string termination at position ${this._pos}`);switch(i=this.ch(),this._pos++,i){case 34:case 39:case 92:case 47:t.push(i);break;case 98:t.push(8);break;case 116:t.push(9);break;case 110:t.push(10);break;case 102:t.push(12);break;case 114:t.push(13);break;case 117:t.push(n());break;default:throw new Error(`${ne} unexpected string escape character at position ${this._pos}`)}break;case 34:return this._pos++,new q(S.string,tm(t),this._pos-e);default:if(s<32)throw new Error(`${ne} invalid control character at position ${this._pos}`);s<128?(t.push(s),this._pos++):o()}}throw new Error(`${ne} unexpected end of string at position ${this._pos}`)}parseValue(){switch(this.ch()){case 123:return this.modeStack.push("obj-start"),this._pos++,new q(S.map,1/0,1);case 91:return this.modeStack.push("array-start"),this._pos++,new q(S.array,1/0,1);case 34:return this.parseString();case 110:return this.expect([110,117,108,108]),new q(S.null,null,4);case 102:return this.expect([102,97,108,115,101]),new q(S.false,!1,5);case 116:return this.expect([116,114,117,101]),new q(S.true,!0,4);case 45:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.parseNumber();default:throw new Error(`${ne} unexpected character at position ${this._pos}`)}}next(){switch(this.skipWhitespace(),this.currentMode()){case"value":return this.modeStack.pop(),this.parseValue();case"array-value":{if(this.modeStack.pop(),this.ch()===93)return this._pos++,this.skipWhitespace(),new q(S.break,void 0,1);if(this.ch()!==44)throw new Error(`${ne} unexpected character at position ${this._pos}, was expecting array delimiter but found '${String.fromCharCode(this.ch())}'`);return this._pos++,this.modeStack.push("array-value"),this.skipWhitespace(),this.parseValue()}case"array-start":return this.modeStack.pop(),this.ch()===93?(this._pos++,this.skipWhitespace(),new q(S.break,void 0,1)):(this.modeStack.push("array-value"),this.skipWhitespace(),this.parseValue());case"obj-key":if(this.ch()===125)return this.modeStack.pop(),this._pos++,this.skipWhitespace(),new q(S.break,void 0,1);if(this.ch()!==44)throw new Error(`${ne} unexpected character at position ${this._pos}, was expecting object delimiter but found '${String.fromCharCode(this.ch())}'`);this._pos++,this.skipWhitespace();case"obj-start":{if(this.modeStack.pop(),this.ch()===125)return this._pos++,this.skipWhitespace(),new q(S.break,void 0,1);let e=this.parseString();if(this.skipWhitespace(),this.ch()!==58)throw new Error(`${ne} unexpected character at position ${this._pos}, was expecting key/value delimiter ':' but found '${String.fromCharCode(this.ch())}'`);return this._pos++,this.modeStack.push("obj-value"),e}case"obj-value":return this.modeStack.pop(),this.modeStack.push("obj-key"),this.skipWhitespace(),this.parseValue();default:throw new Error(`${ne} unexpected parse state at position ${this._pos}; this shouldn't happen`)}}};function hd(r,e){return e=Object.assign({tokenizer:new wi(r,e)},e),Mr(r,e)}var kN={allowIndefinite:!1,allowUndefined:!1,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};kN.tags[42]=de.parse;var Ib=297;var Ite=new TextDecoder;var kte=new TextEncoder;var DN=new TextDecoder;function km(r,e){let t=0;for(let n=0;;n+=7){if(n>=64)throw new Error("protobuf: varint overflow");if(e>=r.length)throw new Error("protobuf: unexpected end of data");let o=r[e++];if(t+=n<28?(o&127)<<n:(o&127)*2**n,o<128)break}return[t,e]}function pd(r,e){let t;[t,e]=km(r,e);let n=e+t;if(t<0||n<0)throw new Error("protobuf: invalid length");if(n>r.length)throw new Error("protobuf: unexpected end of data");return[r.subarray(e,n),n]}function kb(r,e){let t;return[t,e]=km(r,e),[t&7,t>>3,e]}function PN(r){let e={},t=r.length,n=0;for(;n<t;){let o,s;if([o,s,n]=kb(r,n),s===1){if(e.Hash)throw new Error("protobuf: (PBLink) duplicate Hash section");if(o!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Hash`);if(e.Name!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Name before Hash");if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Hash");[e.Hash,n]=pd(r,n)}else if(s===2){if(e.Name!==void 0)throw new Error("protobuf: (PBLink) duplicate Name section");if(o!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Name`);if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Name");let i;[i,n]=pd(r,n),e.Name=DN.decode(i)}else if(s===3){if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) duplicate Tsize section");if(o!==0)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Tsize`);[e.Tsize,n]=km(r,n)}else throw new Error(`protobuf: (PBLink) invalid fieldNumber, expected 1, 2 or 3, got ${s}`)}if(n>t)throw new Error("protobuf: (PBLink) unexpected end of data");return e}function Tb(r){let e=r.length,t=0,n,o=!1,s;for(;t<e;){let a,c;if([a,c,t]=kb(r,t),a!==2)throw new Error(`protobuf: (PBNode) invalid wireType, expected 2, got ${a}`);if(c===1){if(s)throw new Error("protobuf: (PBNode) duplicate Data section");[s,t]=pd(r,t),n&&(o=!0)}else if(c===2){if(o)throw new Error("protobuf: (PBNode) duplicate Links section");n||(n=[]);let l;[l,t]=pd(r,t),n.push(PN(l))}else throw new Error(`protobuf: (PBNode) invalid fieldNumber, expected 1 or 2, got ${c}`)}if(t>e)throw new Error("protobuf: (PBNode) unexpected end of data");let i={};return s&&(i.Data=s),i.Links=n||[],i}var Dte=new TextEncoder,Pte=2**32,Cte=2**31;var Lte=new TextEncoder;var Db=112;function Pb(r){let e=Tb(r),t={};return e.Data&&(t.Data=e.Data),e.Links&&(t.Links=e.Links.map(n=>{let o={};try{o.Hash=de.decode(n.Hash)}catch{}if(!o.Hash)throw new Error("Invalid Hash field found in link, expected CID");return n.Name!==void 0&&(o.Name=n.Name),n.Tsize!==void 0&&(o.Tsize=n.Tsize),o})),t}var NN={codec:Db,*walk(r){yield*Pb(r).Links.map(t=>t.Hash)}},BN={codec:r1,*walk(){}},Cb=42,LN={codec:Sb,*walk(r){let e=[],t=[];t[Cb]=n=>{if(n[0]!==0)throw new Error("Invalid CID for CBOR tag 42; expected leading 0x00");let o=de.decode(n.subarray(1));return e.push(o),o},Mr(r,{tags:t}),yield*e}},Tm=class extends wi{tokenBuffer;constructor(e,t){super(e,t),this.tokenBuffer=[]}done(){return this.tokenBuffer.length===0&&super.done()}_next(){return this.tokenBuffer.length>0?this.tokenBuffer.pop():super.next()}next(){let e=this._next();if(e.type===S.map){let t=this._next();if(t.type===S.string&&t.value==="/"){let n=this._next();if(n.type===S.string){if(this._next().type!==S.break)throw new Error("Invalid encoded CID form");return this.tokenBuffer.push(n),new q(S.tag,42,0)}if(n.type===S.map){let o=this._next();if(o.type===S.string&&o.value==="bytes"){let s=this._next();if(s.type===S.string){for(let a=0;a<2;a++)if(this._next().type!==S.break)throw new Error("Invalid encoded Bytes form");let i=Ge.decode(`m${s.value}`);return new q(S.bytes,i,s.value.length)}this.tokenBuffer.push(s)}this.tokenBuffer.push(o)}this.tokenBuffer.push(n)}this.tokenBuffer.push(t)}return e}},ON={codec:Ib,*walk(r){let e=[],t=[];t[Cb]=n=>{let o=de.parse(n);return e.push(o),o},hd(r,{tags:t,tokenizer:new Tm(r,{tags:t,allowIndefinite:!0,allowUndefined:!0,allowNaN:!0,allowInfinity:!0,allowBigInt:!0,strict:!1,rejectDuplicateMapKeys:!1})}),yield*e}},KN={codec:H5,*walk(){}};function Nb(r=[]){let e={};return[NN,BN,LN,ON,KN,...r].forEach(t=>{e[t.codec]=t}),e}var Dm=new qe("/version"),Bb=1;async function Lb(r){if(!await r.has(Dm)){await r.put(Dm,x(`${Bb}`));return}let e=await r.get(Dm),t=v(e);if(parseInt(t,10)!==Bb)throw new Error("Unknown datastore version, a datastore migration may be required")}function Ob(r=[]){let e={};return[K,f2,Xe,...r].forEach(t=>{e[t.code]=t}),e}function MN(r){return typeof r.retrieve=="function"}function UN(r){return typeof r.announce=="function"}var md=class{child;blockRetrievers;blockAnnouncers;hashers;started;log;constructor(e){this.log=e.logger.forComponent("helia:networked-storage"),this.child=e.blockstore,this.blockRetrievers=(e.blockBrokers??[]).filter(MN),this.blockAnnouncers=(e.blockBrokers??[]).filter(UN),this.hashers=e.hashers??{},this.started=!1}isStarted(){return this.started}async start(){await jo(this.child,...new Set([...this.blockRetrievers,...this.blockAnnouncers])),this.started=!0}async stop(){await Xo(this.child,...new Set([...this.blockRetrievers,...this.blockAnnouncers])),this.started=!1}unwrap(){return this.child}async put(e,t,n={}){return await this.child.has(e)?(n.onProgress?.(new De("blocks:put:duplicate",e)),e):(n.onProgress?.(new De("blocks:put:providers:notify",e)),this.blockAnnouncers.forEach(o=>{o.announce(e,t,n)}),n.onProgress?.(new De("blocks:put:blockstore:put",e)),this.child.put(e,t,n))}async*putMany(e,t={}){let n=hn(e,async({cid:s})=>{let i=await this.child.has(s);return i&&t.onProgress?.(new De("blocks:put-many:duplicate",s)),!i}),o=Ys(n,({cid:s,block:i})=>{t.onProgress?.(new De("blocks:put-many:providers:notify",s)),this.blockAnnouncers.forEach(a=>{a.announce(s,i,t)})});t.onProgress?.(new De("blocks:put-many:blockstore:put-many")),yield*this.child.putMany(o,t)}async get(e,t={}){if(t.offline!==!0&&!await this.child.has(e)){t.onProgress?.(new De("blocks:get:providers:get",e));let n=await Kb(e,this.blockRetrievers,this.hashers[e.multihash.code],{...t,log:this.log});return t.onProgress?.(new De("blocks:get:blockstore:put",e)),await this.child.put(e,n,t),t.onProgress?.(new De("blocks:get:providers:notify",e)),this.blockAnnouncers.forEach(o=>{o.announce(e,n,t)}),n}return t.onProgress?.(new De("blocks:get:blockstore:get",e)),this.child.get(e,t)}async*getMany(e,t={}){t.onProgress?.(new De("blocks:get-many:blockstore:get-many")),yield*this.child.getMany(Ys(e,async n=>{if(t.offline!==!0&&!await this.child.has(n)){t.onProgress?.(new De("blocks:get-many:providers:get",n));let o=await Kb(n,this.blockRetrievers,this.hashers[n.multihash.code],{...t,log:this.log});t.onProgress?.(new De("blocks:get-many:blockstore:put",n)),await this.child.put(n,o,t),t.onProgress?.(new De("blocks:get-many:providers:notify",n)),this.blockAnnouncers.forEach(s=>{s.announce(n,o,t)})}}))}async delete(e,t={}){t.onProgress?.(new De("blocks:delete:blockstore:delete",e)),await this.child.delete(e,t)}async*deleteMany(e,t={}){t.onProgress?.(new De("blocks:delete-many:blockstore:delete-many")),yield*this.child.deleteMany(async function*(){for await(let n of e)yield n}(),t)}async has(e,t={}){return this.child.has(e,t)}async*getAll(e={}){e.onProgress?.(new De("blocks:get-all:blockstore:get-many")),yield*this.child.getAll(e)}},FN=(r,e)=>{if(e==null)throw new h(`No hasher configured for multihash code 0x${r.multihash.code.toString(16)}, please configure one. You can look up which hash this is at https://github.com/multiformats/multicodec/blob/master/table.csv`,"ERR_UNKNOWN_HASH_ALG");return async t=>{let n=await e.digest(t);if(!O(n.digest,r.multihash.digest))throw new h("Hash of downloaded block did not match multihash from passed CID","ERR_HASH_MISMATCH")}};async function Kb(r,e,t,n){let o=FN(r,t),s=new AbortController,i=Rt([s.signal,n.signal]);try{return await Promise.any(e.map(async a=>{try{let c=!1,l=await a.retrieve(r,{...n,signal:i,validateFn:async f=>{await o(f),c=!0}});return c||await o(l),l}catch(c){throw n.log.error("could not retrieve verified block for %c",r,c),c}}))}finally{i.clear()}}var yd=class{blockstore;datastore;pins;logger;routing;dagWalkers;hashers;log;constructor(e){this.logger=e.logger??Qo(),this.log=this.logger.forComponent("helia"),this.hashers=Ob(e.hashers),this.dagWalkers=Nb(e.dagWalkers);let t={blockstore:e.blockstore,datastore:e.datastore,hashers:this.hashers,dagWalkers:this.dagWalkers,logger:this.logger,blockBrokers:[],...e.components??{}};t.blockBrokers=e.blockBrokers.map(o=>o(t));let n=new md(t);this.pins=new ud(e.datastore,n,this.dagWalkers),this.blockstore=new dd(n,this.pins,{holdGcLock:e.holdGcLock??!0}),this.datastore=e.datastore,this.routing=new fd(t,{routers:(e.routers??[]).flatMap(o=>{let s=[o];return o[vn]!=null&&s.push(o[vn]),o[_n]!=null&&s.push(o[_n]),s})})}async start(){await Lb(this.datastore),await jo(this.blockstore,this.datastore,this.routing)}async stop(){await Xo(this.blockstore,this.datastore,this.routing)}async gc(e={}){let t=await this.blockstore.lock.writeLock();try{let n=this,o=this.blockstore.unwrap();this.log("gc start"),await Pr(o.deleteMany(async function*(){for await(let{cid:s}of o.getAll())try{if(await n.pins.isPinned(s,e))continue;yield s,e.onProgress?.(new De("helia:gc:deleted",s))}catch(i){n.log.error("Error during gc",i),e.onProgress?.(new De("helia:gc:error",i))}}()))}finally{t()}this.log("gc finished")}};var gd=class extends yd{libp2p;constructor(e){super({...e,components:{libp2p:e.libp2p}}),this.libp2p=e.libp2p}async start(){await super.start(),await this.libp2p.start()}async stop(){await super.stop(),await this.libp2p.stop()}};var Nm={};oe(Nm,{Ed25519PrivateKey:()=>Ei,Ed25519PublicKey:()=>Nl,generateKeyPair:()=>GN,generateKeyPairFromSeed:()=>$b,unmarshalEd25519PrivateKey:()=>HN,unmarshalEd25519PublicKey:()=>$N});function Fr(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var La=32,Do=64,bd=32;function Mb(){let r=we.utils.randomPrivateKey(),e=we.getPublicKey(r);return{privateKey:qb(r,e),publicKey:e}}function Ub(r){if(r.length!==bd)throw new TypeError('"seed" must be 32 bytes in length.');if(!(r instanceof Uint8Array))throw new TypeError('"seed" must be a node.js Buffer, or Uint8Array.');let e=r,t=we.getPublicKey(e);return{privateKey:qb(e,t),publicKey:t}}function Fb(r,e){let t=r.subarray(0,bd);return we.sign(e instanceof Uint8Array?e:e.subarray(),t)}function Vb(r,e,t){return we.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function qb(r,e){let t=new Uint8Array(Do);for(let n=0;n<bd;n++)t[n]=r[n],t[bd+n]=e[n];return t}var er={get(r=globalThis){let e=r.crypto;if(e==null||e.subtle==null)throw Object.assign(new Error("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"),{code:"ERR_MISSING_WEB_CRYPTO"});return e}};var Pm={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function Hb(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,o=r?.digest??"SHA-256",s=r?.saltLength??16,i=r?.iterations??32767,a=er.get();t*=8;async function c(u,d){let y=a.getRandomValues(new Uint8Array(s)),p=a.getRandomValues(new Uint8Array(n)),m={name:e,iv:p};typeof d=="string"&&(d=x(d));let g;if(d.length===0){g=await a.subtle.importKey("jwk",Pm,{name:"AES-GCM"},!0,["encrypt"]);try{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}catch{g=await a.subtle.importKey("jwk",Pm,{name:"AES-GCM"},!0,["encrypt"])}}else{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}let b=await a.subtle.encrypt(m,g,u);return le([y,m.iv,new Uint8Array(b)])}async function l(u,d){let y=u.subarray(0,s),p=u.subarray(s,s+n),m=u.subarray(s+n),g={name:e,iv:p};typeof d=="string"&&(d=x(d));let b;if(d.length===0)try{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}catch{b=await a.subtle.importKey("jwk",Pm,{name:"AES-GCM"},!0,["decrypt"])}else{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}let E=await a.subtle.decrypt(g,b,m);return new Uint8Array(E)}return{encrypt:c,decrypt:l}}async function Oa(r,e){let n=await Hb().encrypt(r,e);return Ge.encode(n)}var Je;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(Je||(Je={}));var Cm;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(Cm||(Cm={}));(function(r){r.codec=()=>Re(Cm)})(Je||(Je={}));var Cn;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Je.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=Je.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(Cn||(Cn={}));var Nn;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Je.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=Je.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(Nn||(Nn={}));var Nl=class{_key;constructor(e){this._key=Ka(e,La)}verify(e,t){return Vb(this._key,t,e)}marshal(){return this._key}get bytes(){return Cn.encode({Type:Je.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Fr(e)?e.then(({bytes:t})=>t):e.bytes}},Ei=class{_key;_publicKey;constructor(e,t){this._key=Ka(e,Do),this._publicKey=Ka(t,La)}sign(e){return Fb(this._key,e)}get public(){return new Nl(this._publicKey)}marshal(){return this._key}get bytes(){return Nn.encode({Type:Je.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return Fr(e)?{bytes:t}=await e:t=e.bytes,t}async id(){let e=Xe.digest(this.public.bytes);return ie.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Oa(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function HN(r){if(r.length>Do){r=Ka(r,Do+La);let n=r.subarray(0,Do),o=r.subarray(Do,r.length);return new Ei(n,o)}r=Ka(r,Do);let e=r.subarray(0,Do),t=r.subarray(La);return new Ei(e,t)}function $N(r){return r=Ka(r,La),new Nl(r)}async function GN(){let{privateKey:r,publicKey:e}=Mb();return new Ei(r,e)}async function $b(r){let{privateKey:e,publicKey:t}=Ub(r);return new Ei(e,t)}function Ka(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new h(`Key must be a Uint8Array of length ${e}, got ${r.length}`,"ERR_INVALID_KEY_TYPE");return r}var Mm={};oe(Mm,{MAX_RSA_KEY_SIZE:()=>Ol,RsaPrivateKey:()=>Ma,RsaPublicKey:()=>Ll,fromJwk:()=>nB,generateKeyPair:()=>oB,unmarshalRsaPrivateKey:()=>Om,unmarshalRsaPublicKey:()=>rB});function xi(r){if(isNaN(r)||r<=0)throw new h("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return dt(r)}var xs={};oe(xs,{exportToPem:()=>QN,importFromPem:()=>JN,jwkToPkcs1:()=>WN,jwkToPkix:()=>jN,pkcs1ToJwk:()=>YN,pkixToJwk:()=>zN});function YN(r){let{result:e}=Ee(r),t=e.valueBlock.value;return{n:v(Bn(t[1].toBigInt()),"base64url"),e:v(Bn(t[2].toBigInt()),"base64url"),d:v(Bn(t[3].toBigInt()),"base64url"),p:v(Bn(t[4].toBigInt()),"base64url"),q:v(Bn(t[5].toBigInt()),"base64url"),dp:v(Bn(t[6].toBigInt()),"base64url"),dq:v(Bn(t[7].toBigInt()),"base64url"),qi:v(Bn(t[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function WN(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 h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new B({value:0}),B.fromBigInt(Ln(x(r.n,"base64url"))),B.fromBigInt(Ln(x(r.e,"base64url"))),B.fromBigInt(Ln(x(r.d,"base64url"))),B.fromBigInt(Ln(x(r.p,"base64url"))),B.fromBigInt(Ln(x(r.q,"base64url"))),B.fromBigInt(Ln(x(r.dp,"base64url"))),B.fromBigInt(Ln(x(r.dq,"base64url"))),B.fromBigInt(Ln(x(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function zN(r){let{result:e}=Ee(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:v(Bn(t[0].toBigInt()),"base64url"),e:v(Bn(t[1].toBigInt()),"base64url")}}function jN(r){if(r.n==null||r.e==null)throw new h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new kt({valueHex:new M({value:[B.fromBigInt(Ln(x(r.n,"base64url"))),B.fromBigInt(Ln(x(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function Bn(r){let e=r.toString(16);e.length%2>0&&(e=`0${e}`);let t=e.length/2,n=new Uint8Array(t),o=0,s=0;for(;o<t;)n[o]=parseInt(e.slice(s,s+2),16),o+=1,s+=2;return n}function Ln(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}var XN=16,Bm=32,Lm=1e4;async function QN(r,e){let t=er.get(),o=new M({value:[new B({value:0}),new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new Se({valueHex:r.marshal()})]}).toBER(),s=new Uint8Array(o,0,o.byteLength),i=xi(XN),a=await pt(Ye,e,i,{c:Lm,dkLen:Bm}),c=xi(16),l=await t.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),f=await t.subtle.encrypt({name:"AES-CBC",iv:c},l,s),u=new M({value:[new Se({valueHex:i}),new B({value:Lm}),new B({value:Bm}),new M({value:[new ae({value:"1.2.840.113549.2.11"}),new Ne]})]}),d=new M({value:[new ae({value:"1.2.840.113549.1.5.13"}),new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.5.12"}),u]}),new M({value:[new ae({value:"2.16.840.1.101.3.4.1.42"}),new Se({valueHex:c})]})]})]}),p=new M({value:[d,new Se({valueHex:f})]}).toBER(),m=new Uint8Array(p,0,p.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...v(m,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
|
|
23
|
-
`)}async function JN(r,e){let t=er.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o),{iv:i,salt:a,iterations:c,keySize:l,cipherText:f}=ZN(s),u=await pt(Ye,e,a,{c,dkLen:l}),d=await t.subtle.importKey("raw",u,"AES-CBC",!1,["decrypt"]),y=Bl(await t.subtle.decrypt({name:"AES-CBC",iv:i},d,f)),{result:p}=Ee(y);n=Gb(p)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o);n=Gb(s)}else throw new h("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return Om(n)}function ZN(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new h("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new h("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let s=n.valueBlock.value[1],i=Bl(s.valueBlock.value[0].getValue()),a=Lm,c=Bm;if(s.valueBlock.value.length===3)a=Number(s.valueBlock.value[1].toBigInt()),c=Number(s.valueBlock.value[2].toBigInt());else if(s.valueBlock.value.length===2)throw new h("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let l=e.valueBlock.value[1].valueBlock.value[1],f=l.valueBlock.value[0].toString();if(f!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(f!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new h("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let u=Bl(l.valueBlock.value[1].getValue());return{cipherText:Bl(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:u}}function Gb(r){return Bl(r.valueBlock.value[2].getValue())}function Bl(r){return new Uint8Array(r,0,r.byteLength)}async function Yb(r){let e=await er.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await jb(e);return{privateKey:t[0],publicKey:t[1]}}async function Km(r){let t=[await er.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await eB(r)],n=await jb({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function Wb(r,e){let t=await er.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await er.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function zb(r,e,t){let n=await er.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return er.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function jb(r){if(r.privateKey==null||r.publicKey==null)throw new h("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([er.get().subtle.exportKey("jwk",r.privateKey),er.get().subtle.exportKey("jwk",r.publicKey)])}async function eB(r){return er.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function Ed(r){if(r.kty!=="RSA")throw new h("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new h("invalid key modulus","ERR_INVALID_KEY_MODULUS");return x(r.n,"base64url").length*8}var Ol=8192,Ll=class{_key;constructor(e){this._key=e}verify(e,t){return zb(this._key,t,e)}marshal(){return xs.jwkToPkix(this._key)}get bytes(){return Cn.encode({Type:Je.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Fr(e)?e.then(({bytes:t})=>t):e.bytes}},Ma=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return xi(16)}sign(e){return Wb(this._key,e)}get public(){if(this._publicKey==null)throw new h("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new Ll(this._publicKey)}marshal(){return xs.jwkToPkcs1(this._key)}get bytes(){return Nn.encode({Type:Je.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Fr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return xs.exportToPem(this,e);if(t==="libp2p-key")return Oa(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function Om(r){let e=xs.pkcs1ToJwk(r);if(Ed(e)>Ol)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await Km(e);return new Ma(t.privateKey,t.publicKey)}function rB(r){let e=xs.pkixToJwk(r);if(Ed(e)>Ol)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new Ll(e)}async function nB(r){if(Ed(r)>Ol)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await Km(r);return new Ma(e.privateKey,e.publicKey)}async function oB(r){if(r>Ol)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await Yb(r);return new Ma(e.privateKey,e.publicKey)}var Fm={};oe(Fm,{Secp256k1PrivateKey:()=>Ml,Secp256k1PublicKey:()=>Kl,generateKeyPair:()=>cB,unmarshalSecp256k1PrivateKey:()=>iB,unmarshalSecp256k1PublicKey:()=>aB});function Xb(){return W.utils.randomPrivateKey()}function Qb(r,e){let t=K.digest(e instanceof Uint8Array?e:e.subarray());if(Fr(t))return t.then(({digest:n})=>W.sign(n,r).toDERRawBytes()).catch(n=>{throw new h(String(n),"ERR_INVALID_INPUT")});try{return W.sign(t.digest,r).toDERRawBytes()}catch(n){throw new h(String(n),"ERR_INVALID_INPUT")}}function Jb(r,e,t){let n=K.digest(t instanceof Uint8Array?t:t.subarray());if(Fr(n))return n.then(({digest:o})=>W.verify(e,o,r)).catch(o=>{throw new h(String(o),"ERR_INVALID_INPUT")});try{return W.verify(e,n.digest,r)}catch(o){throw new h(String(o),"ERR_INVALID_INPUT")}}function Zb(r){return W.ProjectivePoint.fromHex(r).toRawBytes(!0)}function ew(r){try{W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}function Um(r){try{W.ProjectivePoint.fromHex(r)}catch(e){throw new h(String(e),"ERR_INVALID_PUBLIC_KEY")}}function tw(r){try{return W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}var Kl=class{_key;constructor(e){Um(e),this._key=e}verify(e,t){return Jb(this._key,t,e)}marshal(){return Zb(this._key)}get bytes(){return Cn.encode({Type:Je.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return Fr(e)?{bytes:t}=await e:t=e.bytes,t}},Ml=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??tw(e),ew(this._key),Um(this._publicKey)}sign(e){return Qb(this._key,e)}get public(){return new Kl(this._publicKey)}marshal(){return this._key}get bytes(){return Nn.encode({Type:Je.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Fr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Oa(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function iB(r){return new Ml(r)}function aB(r){return new Kl(r)}async function cB(){let r=Xb();return new Ml(r)}var vi={rsa:Mm,ed25519:Nm,secp256k1:Fm};function rw(r){let e=Object.keys(vi).join(" / ");return new h(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function nw(r){let e=Cn.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case Je.RSA:return vi.rsa.unmarshalRsaPublicKey(t);case Je.Ed25519:return vi.ed25519.unmarshalEd25519PublicKey(t);case Je.Secp256k1:return vi.secp256k1.unmarshalSecp256k1PublicKey(t);default:throw rw(e.Type??"unknown")}}async function Vm(r){let e=Nn.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case Je.RSA:return vi.rsa.unmarshalRsaPrivateKey(t);case Je.Ed25519:return vi.ed25519.unmarshalEd25519PrivateKey(t);case Je.Secp256k1:return vi.secp256k1.unmarshalSecp256k1PrivateKey(t);default:throw rw(e.Type??"RSA")}}var qm=class{needNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.needNext=he(),this.haveNext=he()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("Have next but next was undefined");let e=this.nextResult;return this.nextResult=void 0,this.needNext.resolve(),this.needNext=he(),e}async throw(e){return this.ended=!0,e!=null&&this.haveNext.reject(e),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return await this._push(void 0),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw new Error("Cannot push value onto an ended pushable");this.nextResult!=null&&await this.needNext.promise,e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=he(),await dr(this.needNext.promise,t?.signal,t)}};function ow(){return new qm}var xd=class extends Error{code;constructor(e,t){super(e),this.code=t}},Hm=class extends xd{type;constructor(e){super(e,"ABORT_ERR"),this.type="aborted"}};function sw(r,e){let t=ow();r.sink(t).catch(async i=>{await t.end(i)}),r.sink=async i=>{for await(let a of i)await t.push(a);await t.end()};let n=r.source;r.source[Symbol.iterator]!=null?n=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(n=r.source[Symbol.asyncIterator]());let o=new be;return{read:async(i,a)=>{a?.signal?.throwIfAborted();let c,l=new Promise((f,u)=>{c=()=>{u(new Hm("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(i==null){let{done:u,value:d}=await Promise.race([n.next(),l]);return u===!0?new be:d}for(;o.byteLength<i;){let{value:u,done:d}=await Promise.race([n.next(),l]);if(d===!0)throw new xd("unexpected end of input","ERR_UNEXPECTED_EOF");o.append(u)}let f=o.sublist(0,i);return o.consume(i),f}finally{c!=null&&a?.signal?.removeEventListener("abort",c)}},write:async(i,a)=>{a?.signal?.throwIfAborted(),i instanceof Uint8Array?await t.push(i,a):await t.push(i.subarray(),a)},unwrap:()=>{if(o.byteLength>0){let i=r.source;r.source=async function*(){e?.yieldBytes===!1?yield o:yield*o,yield*i}()}return r}}}var vd=class extends Error{code;constructor(e,t){super(e),this.code=t}};function On(r,e={}){let t=sw(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=Et(e.maxDataLength));let n=e?.lengthDecoder??gr,o=e?.lengthEncoder??st;return{read:async i=>{let a=-1,c=new be;for(;;){c.append(await t.read(1,i));try{a=n(c)}catch(l){if(l instanceof RangeError)continue;throw l}if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new vd("message length length too long","ERR_MSG_LENGTH_TOO_LONG");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new vd("message length too long","ERR_MSG_DATA_TOO_LONG");return t.read(a,i)},write:async(i,a)=>{await t.write(new be(o(i.byteLength),i),a)},writeV:async(i,a)=>{let c=new be(...i.flatMap(l=>[o(l.byteLength),l]));await t.write(c,a)},unwrap:()=>t.unwrap()}}function $m(){let r=he(),e=!1;return{sink:async t=>{if(e)throw new Error("already piped");e=!0,r.resolve(t)},source:async function*(){yield*await r.promise}()}}function iw(){let r=$m(),e=$m();return[{source:r.source,sink:e.sink},{source:e.source,sink:r.sink}]}var Ua=!!globalThis.process?.env?.DUMP_SESSION_KEYS;var Po=r=>new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4));function aw(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}var cw=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),lB=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!lB)throw new Error("Non little-endian hardware is not supported");function _d(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Sd(r){if(typeof r=="string")r=_d(r);else if(aw(r))r=r.slice();else throw new Error(`expected Uint8Array, got ${typeof r}`);return r}var uB=r=>Object.prototype.toString.call(r)==="[object Object]"&&r.constructor===Object;function lw(r,e){if(e!==void 0&&(typeof e!="object"||!uB(e)))throw new Error("options must be object or undefined");return Object.assign(r,e)}function _i(r,e){if(!aw(r))throw new Error("Uint8Array expected");if(typeof e=="number"&&r.length!==e)throw new Error(`Uint8Array length ${e} expected`)}function uw(r,e){if(r.length!==e.length)return!1;let t=0;for(let n=0;n<r.length;n++)t|=r[n]^e[n];return t===0}var Gm=(r,e)=>(Object.assign(e,r),e);function Ym(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let o=BigInt(32),s=BigInt(4294967295),i=Number(t>>o&s),a=Number(t&s),c=n?4:0,l=n?0:4;r.setUint32(e+c,i,n),r.setUint32(e+l,a,n)}function Rd(r){if(!Number.isSafeInteger(r)||r<0)throw new Error(`wrong positive integer: ${r}`)}function Wm(r){if(typeof r!="boolean")throw new Error(`boolean expected, not ${r}`)}function fB(r){return r!=null&&typeof r=="object"&&(r instanceof Uint8Array||r.constructor.name==="Uint8Array")}function Fa(r,...e){if(!fB(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function zm(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function fw(r,e){Fa(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Ot=(r,e)=>r[e++]&255|(r[e++]&255)<<8,jm=class{constructor(e){this.blockLen=16,this.outputLen=16,this.buffer=new Uint8Array(16),this.r=new Uint16Array(10),this.h=new Uint16Array(10),this.pad=new Uint16Array(8),this.pos=0,this.finished=!1,e=Sd(e),_i(e,32);let t=Ot(e,0),n=Ot(e,2),o=Ot(e,4),s=Ot(e,6),i=Ot(e,8),a=Ot(e,10),c=Ot(e,12),l=Ot(e,14);this.r[0]=t&8191,this.r[1]=(t>>>13|n<<3)&8191,this.r[2]=(n>>>10|o<<6)&7939,this.r[3]=(o>>>7|s<<9)&8191,this.r[4]=(s>>>4|i<<12)&255,this.r[5]=i>>>1&8190,this.r[6]=(i>>>14|a<<2)&8191,this.r[7]=(a>>>11|c<<5)&8065,this.r[8]=(c>>>8|l<<8)&8191,this.r[9]=l>>>5&127;for(let f=0;f<8;f++)this.pad[f]=Ot(e,16+2*f)}process(e,t,n=!1){let o=n?0:2048,{h:s,r:i}=this,a=i[0],c=i[1],l=i[2],f=i[3],u=i[4],d=i[5],y=i[6],p=i[7],m=i[8],g=i[9],b=Ot(e,t+0),E=Ot(e,t+2),w=Ot(e,t+4),_=Ot(e,t+6),I=Ot(e,t+8),k=Ot(e,t+10),D=Ot(e,t+12),A=Ot(e,t+14),C=s[0]+(b&8191),U=s[1]+((b>>>13|E<<3)&8191),L=s[2]+((E>>>10|w<<6)&8191),F=s[3]+((w>>>7|_<<9)&8191),H=s[4]+((_>>>4|I<<12)&8191),re=s[5]+(I>>>1&8191),T=s[6]+((I>>>14|k<<2)&8191),N=s[7]+((k>>>11|D<<5)&8191),Y=s[8]+((D>>>8|A<<8)&8191),P=s[9]+(A>>>5|o),R=0,V=R+C*a+U*(5*g)+L*(5*m)+F*(5*p)+H*(5*y);R=V>>>13,V&=8191,V+=re*(5*d)+T*(5*u)+N*(5*f)+Y*(5*l)+P*(5*c),R+=V>>>13,V&=8191;let $=R+C*c+U*a+L*(5*g)+F*(5*m)+H*(5*p);R=$>>>13,$&=8191,$+=re*(5*y)+T*(5*d)+N*(5*u)+Y*(5*f)+P*(5*l),R+=$>>>13,$&=8191;let j=R+C*l+U*c+L*a+F*(5*g)+H*(5*m);R=j>>>13,j&=8191,j+=re*(5*p)+T*(5*y)+N*(5*d)+Y*(5*u)+P*(5*f),R+=j>>>13,j&=8191;let ue=R+C*f+U*l+L*c+F*a+H*(5*g);R=ue>>>13,ue&=8191,ue+=re*(5*m)+T*(5*p)+N*(5*y)+Y*(5*d)+P*(5*u),R+=ue>>>13,ue&=8191;let pe=R+C*u+U*f+L*l+F*c+H*a;R=pe>>>13,pe&=8191,pe+=re*(5*g)+T*(5*m)+N*(5*p)+Y*(5*y)+P*(5*d),R+=pe>>>13,pe&=8191;let _e=R+C*d+U*u+L*f+F*l+H*c;R=_e>>>13,_e&=8191,_e+=re*a+T*(5*g)+N*(5*m)+Y*(5*p)+P*(5*y),R+=_e>>>13,_e&=8191;let ye=R+C*y+U*d+L*u+F*f+H*l;R=ye>>>13,ye&=8191,ye+=re*c+T*a+N*(5*g)+Y*(5*m)+P*(5*p),R+=ye>>>13,ye&=8191;let ge=R+C*p+U*y+L*d+F*u+H*f;R=ge>>>13,ge&=8191,ge+=re*l+T*c+N*a+Y*(5*g)+P*(5*m),R+=ge>>>13,ge&=8191;let $e=R+C*m+U*p+L*y+F*d+H*u;R=$e>>>13,$e&=8191,$e+=re*f+T*l+N*c+Y*a+P*(5*g),R+=$e>>>13,$e&=8191;let Me=R+C*g+U*m+L*p+F*y+H*d;R=Me>>>13,Me&=8191,Me+=re*u+T*f+N*l+Y*c+P*a,R+=Me>>>13,Me&=8191,R=(R<<2)+R|0,R=R+V|0,V=R&8191,R=R>>>13,$+=R,s[0]=V,s[1]=$,s[2]=j,s[3]=ue,s[4]=pe,s[5]=_e,s[6]=ye,s[7]=ge,s[8]=$e,s[9]=Me}finalize(){let{h:e,pad:t}=this,n=new Uint16Array(10),o=e[1]>>>13;e[1]&=8191;for(let a=2;a<10;a++)e[a]+=o,o=e[a]>>>13,e[a]&=8191;e[0]+=o*5,o=e[0]>>>13,e[0]&=8191,e[1]+=o,o=e[1]>>>13,e[1]&=8191,e[2]+=o,n[0]=e[0]+5,o=n[0]>>>13,n[0]&=8191;for(let a=1;a<10;a++)n[a]=e[a]+o,o=n[a]>>>13,n[a]&=8191;n[9]-=8192;let s=(o^1)-1;for(let a=0;a<10;a++)n[a]&=s;s=~s;for(let a=0;a<10;a++)e[a]=e[a]&s|n[a];e[0]=(e[0]|e[1]<<13)&65535,e[1]=(e[1]>>>3|e[2]<<10)&65535,e[2]=(e[2]>>>6|e[3]<<7)&65535,e[3]=(e[3]>>>9|e[4]<<4)&65535,e[4]=(e[4]>>>12|e[5]<<1|e[6]<<14)&65535,e[5]=(e[6]>>>2|e[7]<<11)&65535,e[6]=(e[7]>>>5|e[8]<<8)&65535,e[7]=(e[8]>>>8|e[9]<<5)&65535;let i=e[0]+t[0];e[0]=i&65535;for(let a=1;a<8;a++)i=(e[a]+t[a]|0)+(i>>>16)|0,e[a]=i&65535}update(e){zm(this);let{buffer:t,blockLen:n}=this;e=Sd(e);let o=e.length;for(let s=0;s<o;){let i=Math.min(n-this.pos,o-s);if(i===n){for(;n<=o-s;s+=n)this.process(e,s);continue}t.set(e.subarray(s,s+i),this.pos),this.pos+=i,s+=i,this.pos===n&&(this.process(t,0,!1),this.pos=0)}return this}destroy(){this.h.fill(0),this.r.fill(0),this.buffer.fill(0),this.pad.fill(0)}digestInto(e){zm(this),fw(e,this),this.finished=!0;let{buffer:t,h:n}=this,{pos:o}=this;if(o){for(t[o++]=1;o<16;o++)t[o]=0;this.process(t,0,!0)}this.finalize();let s=0;for(let i=0;i<8;i++)e[s++]=n[i]>>>0,e[s++]=n[i]>>>8;return e}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}};function dB(r){let e=(n,o)=>r(o).update(Sd(n)).digest(),t=r(new Uint8Array(32));return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=n=>r(n),e}var dw=dB(r=>new jm(r));var hB=_d("expand 16-byte k"),pB=_d("expand 32-byte k"),mB=Po(hB),yB=Po(pB);function te(r,e){return r<<e|r>>>32-e}function Xm(r){return r.byteOffset%4===0}var Ad=64,gB=16,pw=2**32-1,hw=new Uint32Array;function bB(r,e,t,n,o,s,i,a){let c=o.length,l=new Uint8Array(Ad),f=Po(l),u=Xm(o)&&Xm(s),d=u?Po(o):hw,y=u?Po(s):hw;for(let p=0;p<c;i++){if(r(e,t,n,f,i,a),i>=pw)throw new Error("arx: counter overflow");let m=Math.min(Ad,c-p);if(u&&m===Ad){let g=p/4;if(p%4!==0)throw new Error("arx: invalid block position");for(let b=0,E;b<gB;b++)E=g+b,y[E]=d[E]^f[b];p+=Ad;continue}for(let g=0,b;g<m;g++)b=p+g,s[b]=o[b]^l[g];p+=m}}function Qm(r,e){let{allowShortKeys:t,extendNonceFn:n,counterLength:o,counterRight:s,rounds:i}=lw({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},e);if(typeof r!="function")throw new Error("core must be a function");return Rd(o),Rd(i),Wm(s),Wm(t),(a,c,l,f,u=0)=>{Fa(a),Fa(c),Fa(l);let d=l.length;if(f||(f=new Uint8Array(d)),Fa(f),Rd(u),u<0||u>=pw)throw new Error("arx: counter overflow");if(f.length<d)throw new Error(`arx: output (${f.length}) is shorter than data (${d})`);let y=[],p=a.length,m,g;if(p===32)m=a.slice(),y.push(m),g=yB;else if(p===16&&t)m=new Uint8Array(32),m.set(a),m.set(a,16),g=mB,y.push(m);else throw new Error(`arx: invalid 32-byte key, got length=${p}`);Xm(c)||(c=c.slice(),y.push(c));let b=Po(m);if(n){if(c.length!==24)throw new Error("arx: extended nonce must be 24 bytes");n(g,b,Po(c.subarray(0,16)),b),c=c.subarray(16)}let E=16-o;if(E!==c.length)throw new Error(`arx: nonce must be ${E} or 16 bytes`);if(E!==12){let _=new Uint8Array(12);_.set(c,s?0:12-c.length),c=_,y.push(c)}let w=Po(c);for(bB(r,g,b,w,l,f,u,i);y.length>0;)y.pop().fill(0);return f}}function gw(r,e,t,n,o,s=20){let i=r[0],a=r[1],c=r[2],l=r[3],f=e[0],u=e[1],d=e[2],y=e[3],p=e[4],m=e[5],g=e[6],b=e[7],E=o,w=t[0],_=t[1],I=t[2],k=i,D=a,A=c,C=l,U=f,L=u,F=d,H=y,re=p,T=m,N=g,Y=b,P=E,R=w,V=_,$=I;for(let ue=0;ue<s;ue+=2)k=k+U|0,P=te(P^k,16),re=re+P|0,U=te(U^re,12),k=k+U|0,P=te(P^k,8),re=re+P|0,U=te(U^re,7),D=D+L|0,R=te(R^D,16),T=T+R|0,L=te(L^T,12),D=D+L|0,R=te(R^D,8),T=T+R|0,L=te(L^T,7),A=A+F|0,V=te(V^A,16),N=N+V|0,F=te(F^N,12),A=A+F|0,V=te(V^A,8),N=N+V|0,F=te(F^N,7),C=C+H|0,$=te($^C,16),Y=Y+$|0,H=te(H^Y,12),C=C+H|0,$=te($^C,8),Y=Y+$|0,H=te(H^Y,7),k=k+L|0,$=te($^k,16),N=N+$|0,L=te(L^N,12),k=k+L|0,$=te($^k,8),N=N+$|0,L=te(L^N,7),D=D+F|0,P=te(P^D,16),Y=Y+P|0,F=te(F^Y,12),D=D+F|0,P=te(P^D,8),Y=Y+P|0,F=te(F^Y,7),A=A+H|0,R=te(R^A,16),re=re+R|0,H=te(H^re,12),A=A+H|0,R=te(R^A,8),re=re+R|0,H=te(H^re,7),C=C+U|0,V=te(V^C,16),T=T+V|0,U=te(U^T,12),C=C+U|0,V=te(V^C,8),T=T+V|0,U=te(U^T,7);let j=0;n[j++]=i+k|0,n[j++]=a+D|0,n[j++]=c+A|0,n[j++]=l+C|0,n[j++]=f+U|0,n[j++]=u+L|0,n[j++]=d+F|0,n[j++]=y+H|0,n[j++]=p+re|0,n[j++]=m+T|0,n[j++]=g+N|0,n[j++]=b+Y|0,n[j++]=E+P|0,n[j++]=w+R|0,n[j++]=_+V|0,n[j++]=I+$|0}function wB(r,e,t,n){let o=r[0],s=r[1],i=r[2],a=r[3],c=e[0],l=e[1],f=e[2],u=e[3],d=e[4],y=e[5],p=e[6],m=e[7],g=t[0],b=t[1],E=t[2],w=t[3];for(let I=0;I<20;I+=2)o=o+c|0,g=te(g^o,16),d=d+g|0,c=te(c^d,12),o=o+c|0,g=te(g^o,8),d=d+g|0,c=te(c^d,7),s=s+l|0,b=te(b^s,16),y=y+b|0,l=te(l^y,12),s=s+l|0,b=te(b^s,8),y=y+b|0,l=te(l^y,7),i=i+f|0,E=te(E^i,16),p=p+E|0,f=te(f^p,12),i=i+f|0,E=te(E^i,8),p=p+E|0,f=te(f^p,7),a=a+u|0,w=te(w^a,16),m=m+w|0,u=te(u^m,12),a=a+u|0,w=te(w^a,8),m=m+w|0,u=te(u^m,7),o=o+l|0,w=te(w^o,16),p=p+w|0,l=te(l^p,12),o=o+l|0,w=te(w^o,8),p=p+w|0,l=te(l^p,7),s=s+f|0,g=te(g^s,16),m=m+g|0,f=te(f^m,12),s=s+f|0,g=te(g^s,8),m=m+g|0,f=te(f^m,7),i=i+u|0,b=te(b^i,16),d=d+b|0,u=te(u^d,12),i=i+u|0,b=te(b^i,8),d=d+b|0,u=te(u^d,7),a=a+c|0,E=te(E^a,16),y=y+E|0,c=te(c^y,12),a=a+c|0,E=te(E^a,8),y=y+E|0,c=te(c^y,7);let _=0;n[_++]=o,n[_++]=s,n[_++]=i,n[_++]=a,n[_++]=g,n[_++]=b,n[_++]=E,n[_++]=w}var EB=Qm(gw,{counterRight:!1,counterLength:4,allowShortKeys:!1}),xB=Qm(gw,{counterRight:!1,counterLength:8,extendNonceFn:wB,allowShortKeys:!1});var vB=new Uint8Array(16),mw=(r,e)=>{r.update(e);let t=e.length%16;t&&r.update(vB.subarray(t))},_B=new Uint8Array(32);function yw(r,e,t,n,o){let s=r(e,t,_B),i=dw.create(s);o&&mw(i,o),mw(i,n);let a=new Uint8Array(16),c=cw(a);Ym(c,0,BigInt(o?o.length:0),!0),Ym(c,8,BigInt(n.length),!0),i.update(a);let l=i.digest();return s.fill(0),l}var bw=r=>(e,t,n)=>(_i(e,32),_i(t),{encrypt:(s,i)=>{let a=s.length,c=a+16;i?_i(i,c):i=new Uint8Array(c),r(e,t,s,i,1);let l=yw(r,e,t,i.subarray(0,-16),n);return i.set(l,a),i},decrypt:(s,i)=>{let a=s.length,c=a-16;if(a<16)throw new Error("encrypted data must be at least 16 bytes");i?_i(i,c):i=new Uint8Array(c);let l=s.subarray(0,-16),f=s.subarray(-16),u=yw(r,e,t,l,n);if(!uw(f,u))throw new Error("invalid tag");return r(e,t,l,i,1),i}}),Jm=Gm({blockSize:64,nonceLength:12,tagLength:16},bw(EB)),Wne=Gm({blockSize:64,nonceLength:24,tagLength:16},bw(xB));function Ew(r,e,t){return si(r),t===void 0&&(t=new Uint8Array(r.outputLen)),ls(r,on(t),on(e))}var Zm=new Uint8Array([0]),ww=new Uint8Array;function xw(r,e,t,n=32){if(si(r),os(n),n>255*r.outputLen)throw new Error("Length should be <= 255*HashLen");let o=Math.ceil(n/r.outputLen);t===void 0&&(t=ww);let s=new Uint8Array(o*r.outputLen),i=ls.create(r,e),a=i._cloneInto(),c=new Uint8Array(i.outputLen);for(let l=0;l<o;l++)Zm[0]=l+1,a.update(l===0?ww:c).update(t).update(Zm).digestInto(c),s.set(c,r.outputLen*l),i._cloneInto(a);return i.destroy(),a.destroy(),c.fill(0),Zm.fill(0),s.slice(0,n)}var e3={hashSHA256(r){return ms(r.subarray())},getHKDF(r,e){let t=Ew(ms,e,r),o=xw(ms,t,void 0,96),s=o.subarray(0,32),i=o.subarray(32,64),a=o.subarray(64,96);return[s,i,a]},generateX25519KeyPair(){let r=tl.utils.randomPrivateKey();return{publicKey:tl.getPublicKey(r),privateKey:r}},generateX25519KeyPairFromSeed(r){return{publicKey:tl.getPublicKey(r),privateKey:r}},generateX25519SharedKey(r,e){return tl.getSharedSecret(r.subarray(),e.subarray())},chaCha20Poly1305Encrypt(r,e,t,n){return Jm(n,e,t).encrypt(r.subarray())},chaCha20Poly1305Decrypt(r,e,t,n,o){return Jm(n,e,t).decrypt(r.subarray(),o)}};var vw=e3;function _w(r){return{generateKeypair:r.generateX25519KeyPair,dh:(e,t)=>r.generateX25519SharedKey(e.privateKey,t).subarray(0,32),encrypt:r.chaCha20Poly1305Encrypt,decrypt:r.chaCha20Poly1305Decrypt,hash:r.hashSHA256,hkdf:r.getHKDF}}var Va=r=>{let e=nt(2);return e[0]=r>>8,e[1]=r,e};Va.bytes=2;var Ul=r=>{if(r.length<2)throw RangeError("Could not decode int16BE");if(r instanceof Uint8Array){let e=0;return e+=r[0]<<8,e+=r[1],e}return r.getUint16(0)};Ul.bytes=2;function Sw(r){return{xxHandshakeSuccesses:r.registerCounter("libp2p_noise_xxhandshake_successes_total",{help:"Total count of noise xxHandshakes successes_"}),xxHandshakeErrors:r.registerCounter("libp2p_noise_xxhandshake_error_total",{help:"Total count of noise xxHandshakes errors"}),encryptedPackets:r.registerCounter("libp2p_noise_encrypted_packets_total",{help:"Total count of noise encrypted packets successfully"}),decryptedPackets:r.registerCounter("libp2p_noise_decrypted_packets_total",{help:"Total count of noise decrypted packets"}),decryptErrors:r.registerCounter("libp2p_noise_decrypt_errors_total",{help:"Total count of noise decrypt errors"})}}function t3(r,e){!e.enabled||!Ua||(r?(e(`LOCAL_STATIC_PUBLIC_KEY ${v(r.publicKey,"hex")}`),e(`LOCAL_STATIC_PRIVATE_KEY ${v(r.privateKey,"hex")}`)):e("Missing local static keys."))}function r3(r,e){!e.enabled||!Ua||(r?(e(`LOCAL_PUBLIC_EPHEMERAL_KEY ${v(r.publicKey,"hex")}`),e(`LOCAL_PRIVATE_EPHEMERAL_KEY ${v(r.privateKey,"hex")}`)):e("Missing local ephemeral keys."))}function Rw(r,e){!e.enabled||!Ua||e(r?`REMOTE_STATIC_PUBLIC_KEY ${v(r.subarray(),"hex")}`:"Missing remote static public key.")}function n3(r,e){!e.enabled||!Ua||e(r?`REMOTE_EPHEMERAL_PUBLIC_KEY ${v(r.subarray(),"hex")}`:"Missing remote ephemeral keys.")}function o3(r,e,t){!t.enabled||!Ua||(t(`CIPHER_STATE_1 ${r.n.getUint64()} ${r.k&&v(r.k,"hex")}`),t(`CIPHER_STATE_2 ${e.n.getUint64()} ${e.k&&v(e.k,"hex")}`))}function Id(r,e){if(globalThis.Buffer!=null)return globalThis.Buffer.compare(r,e);for(let t=0;t<r.byteLength;t++){if(r[t]<e[t])return-1;if(r[t]>e[t])return 1}return r.byteLength>e.byteLength?1:r.byteLength<e.byteLength?-1:0}function Co(r,e){if(r.length!==e.length)throw new Error("Inputs should have the same length");let t=nt(r.length);for(let n=0;n<r.length;n++)t[n]=r[n]^e[n];return Rn(t)}var kd=class r extends Error{code;constructor(e="Unexpected Peer"){super(e),this.code=r.code}static code="ERR_UNEXPECTED_PEER"},qa=class r extends Error{code;constructor(e="Invalid crypto exchange"){super(e),this.code=r.code}static code="ERR_INVALID_CRYPTO_EXCHANGE"};var SB=0,RB=4294967295,AB="Cipherstate has reached maximum n, a new handshake must be performed",Td=class{n;bytes;view;constructor(e=SB){this.n=e,this.bytes=ft(12),this.view=new DataView(this.bytes.buffer,this.bytes.byteOffset,this.bytes.byteLength),this.view.setUint32(4,e,!0)}increment(){this.n++,this.view.setUint32(4,this.n,!0)}getBytes(){return this.bytes}getUint64(){return this.n}assertValue(){if(this.n>RB)throw new Error(AB)}};var Si=ft(0),Ha=class{k;n;crypto;constructor(e,t=void 0,n=0){this.crypto=e,this.k=t,this.n=new Td(n)}hasKey(){return!!this.k}encryptWithAd(e,t){if(!this.hasKey())return t;this.n.assertValue();let n=this.crypto.encrypt(t,this.n.getBytes(),e,this.k);return this.n.increment(),n}decryptWithAd(e,t,n){if(!this.hasKey())return t;this.n.assertValue();let o=this.crypto.decrypt(t,this.n.getBytes(),e,this.k,n);return this.n.increment(),o}},s3=class{cs;ck;h;crypto;constructor(e,t){this.crypto=e;let n=x(t,"utf-8");this.h=IB(e,n),this.ck=this.h,this.cs=new Ha(e)}mixKey(e){let[t,n]=this.crypto.hkdf(this.ck,e);this.ck=t,this.cs=new Ha(this.crypto,n)}mixHash(e){this.h=this.crypto.hash(new be(this.h,e))}encryptAndHash(e){let t=this.cs.encryptWithAd(this.h,e);return this.mixHash(t),t}decryptAndHash(e){let t=this.cs.decryptWithAd(this.h,e);return this.mixHash(e),t}split(){let[e,t]=this.crypto.hkdf(this.ck,Si);return[new Ha(this.crypto,e),new Ha(this.crypto,t)]}},i3=class{ss;s;e;rs;re;initiator;crypto;constructor(e){let{crypto:t,protocolName:n,prologue:o,initiator:s,s:i,e:a,rs:c,re:l}=e;this.crypto=t,this.ss=new s3(t,n),this.ss.mixHash(o),this.initiator=s,this.s=i,this.e=a,this.rs=c,this.re=l}writeE(){if(this.e)throw new Error("ephemeral keypair is already set");let e=this.crypto.generateKeypair();return this.ss.mixHash(e.publicKey),this.e=e,e.publicKey}writeS(){if(!this.s)throw new Error("static keypair is not set");return this.ss.encryptAndHash(this.s.publicKey)}writeEE(){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.re))}writeES(){if(this.initiator){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}else{if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}}writeSE(){if(this.initiator){if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}else{if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}}readE(e,t=0){if(this.re)throw new Error("remote ephemeral public key is already set");if(e.byteLength<t+32)throw new Error("message is not long enough");this.re=e.sublist(t,t+32),this.ss.mixHash(this.re)}readS(e,t=0){if(this.rs)throw new Error("remote static public key is already set");let n=32+(this.ss.cs.hasKey()?16:0);if(e.byteLength<t+n)throw new Error("message is not long enough");let o=e.sublist(t,t+n);return this.rs=this.ss.decryptAndHash(o),n}readEE(){this.writeEE()}readES(){this.writeES()}readSE(){this.writeSE()}},Fl=class extends i3{writeMessageA(e){return new be(this.writeE(),this.ss.encryptAndHash(e))}writeMessageB(e){let t=this.writeE();this.writeEE();let n=this.writeS();return this.writeES(),new be(t,n,this.ss.encryptAndHash(e))}writeMessageC(e){let t=this.writeS();return this.writeSE(),new be(t,this.ss.encryptAndHash(e))}readMessageA(e){try{return this.readE(e),this.ss.decryptAndHash(e.sublist(32))}catch(t){throw new qa(`handshake stage 0 validation fail: ${t.message}`)}}readMessageB(e){try{this.readE(e),this.readEE();let t=this.readS(e,32);return this.readES(),this.ss.decryptAndHash(e.sublist(32+t))}catch(t){throw new qa(`handshake stage 1 validation fail: ${t.message}`)}}readMessageC(e){try{let t=this.readS(e);return this.readSE(),this.ss.decryptAndHash(e.sublist(t))}catch(t){throw new qa(`handshake stage 2 validation fail: ${t.message}`)}}};function IB(r,e){if(e.length<=32){let t=ft(32);return t.set(e),t}else return r.hash(e)}var Dd;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.webtransportCerthashes!=null)for(let s of t.webtransportCerthashes)n.uint32(10),n.bytes(s);o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={webtransportCerthashes:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.webtransportCerthashes.push(t.bytes());break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(Dd||(Dd={}));var Vl;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.identityKey!=null&&t.identityKey.byteLength>0&&(n.uint32(10),n.bytes(t.identityKey)),t.identitySig!=null&&t.identitySig.byteLength>0&&(n.uint32(18),n.bytes(t.identitySig)),t.extensions!=null&&(n.uint32(34),Dd.codec().encode(t.extensions,n)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={identityKey:ft(0),identitySig:ft(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.identityKey=t.bytes();break}case 2:{o.identitySig=t.bytes();break}case 4:{o.extensions=Dd.codec().decode(t,t.uint32());break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(Vl||(Vl={}));async function a3(r,e,t){let n=await r.sign(Aw(e));return Vl.encode({identityKey:r.public.bytes,identitySig:n,extensions:t})}async function c3(r,e,t){try{let n=Vl.decode(r);if(t){let i=t.subarray();if(!O(i,n.identityKey))throw new Error(`Payload identity key ${v(n.identityKey,"hex")} does not match expected remote identity key ${v(i,"hex")}`)}if(!e)throw new Error("Remote static does not exist");let o=Aw(e);if(!await nw(n.identityKey).verify(o,n.identitySig))throw new Error("Invalid payload signature");return n}catch(n){throw new kd(n.message)}}function Aw(r){let e=x("noise-libp2p-static-key:");return r instanceof Uint8Array?le([e,r],e.length+r.length):(r.prepend(e),r)}async function Iw(r){let{log:e,connection:t,crypto:n,privateKey:o,prologue:s,s:i,remoteIdentityKey:a,extensions:c}=r,l=await a3(o,i.publicKey,c),f=new Fl({crypto:n,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!0,prologue:s,s:i});t3(f.s,e),e.trace("Stage 0 - Initiator starting to send first message."),await t.write(f.writeMessageA(Si)),e.trace("Stage 0 - Initiator finished sending first message."),r3(f.e,e),e.trace("Stage 1 - Initiator waiting to receive first message from responder...");let u=f.readMessageB(await t.read());e.trace("Stage 1 - Initiator received the message."),n3(f.re,e),Rw(f.rs,e),e.trace("Initiator going to check remote's signature...");let d=await c3(u,f.rs,a);e.trace("All good with the signature!"),e.trace("Stage 2 - Initiator sending third handshake message."),await t.write(f.writeMessageC(l)),e.trace("Stage 2 - Initiator sent message with signed payload.");let[y,p]=f.ss.split();return o3(y,p,e),{payload:d,encrypt:m=>y.encryptWithAd(Si,m),decrypt:(m,g)=>p.decryptWithAd(Si,m,g)}}async function kw(r){let{log:e,connection:t,crypto:n,privateKey:o,prologue:s,s:i,remoteIdentityKey:a,extensions:c}=r,l=await a3(o,i.publicKey,c),f=new Fl({crypto:n,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!1,prologue:s,s:i});t3(f.s,e),e.trace("Stage 0 - Responder waiting to receive first message."),f.readMessageA(await t.read()),e.trace("Stage 0 - Responder received first message."),n3(f.re,e),e.trace("Stage 1 - Responder sending out first message with signed payload and static key."),await t.write(f.writeMessageB(l)),e.trace("Stage 1 - Responder sent the second handshake message with signed payload."),r3(f.e,e),e.trace("Stage 2 - Responder waiting for third handshake message...");let u=f.readMessageC(await t.read());e.trace("Stage 2 - Responder received the message, finished handshake.");let d=await c3(u,f.rs,a),[y,p]=f.ss.split();return o3(y,p,e),{payload:d,encrypt:m=>p.encryptWithAd(Si,m),decrypt:(m,g)=>y.decryptWithAd(Si,m,g)}}var Dw=16;function Pw(r,e){return async function*(t){for await(let n of t)for(let o=0;o<n.length;o+=65519){let s=o+65519;s>n.length&&(s=n.length);let i;n instanceof Uint8Array?i=r.encrypt(n.subarray(o,s)):i=r.encrypt(n.sublist(o,s)),e?.encryptedPackets.increment(),yield new be(Va(i.byteLength),i)}}}function Cw(r,e){return async function*(t){for await(let n of t)for(let o=0;o<n.length;o+=65535){let s=o+65535;if(s>n.length&&(s=n.length),s-Dw<o)throw new Error("Invalid chunk");let i=n.sublist(o,s),a=n.subarray(o,s-Dw);try{let c=r.decrypt(i,a);e?.decryptedPackets.increment(),yield c}catch(c){throw e?.decryptErrors.increment(),c}}}}var Pd=class{protocol="/noise";crypto;prologue;staticKey;extensions;metrics;components;constructor(e,t={}){let{staticNoiseKey:n,extensions:o,crypto:s,prologueBytes:i}=t,{metrics:a}=e;this.components=e;let c=s??vw;this.crypto=_w(c),this.extensions=o,this.metrics=a?Sw(a):void 0,n?this.staticKey=c.generateX25519KeyPairFromSeed(n):this.staticKey=c.generateX25519KeyPair(),this.prologue=i??ft(0)}async secureOutbound(e,t,n){let o=On(t,{lengthEncoder:Va,lengthDecoder:Ul,maxDataLength:65535});if(!e.privateKey)throw new h("local peerId does not contain private key","ERR_NO_PRIVATE_KEY");let s=await Vm(e.privateKey),i=n?.publicKey,a=await this.performHandshakeInitiator(o,s,i),c=await this.createSecureConnection(o,a);return t.source=c.source,t.sink=c.sink,{conn:t,remoteExtensions:a.payload.extensions,remotePeer:await It(a.payload.identityKey)}}async secureInbound(e,t,n){let o=On(t,{lengthEncoder:Va,lengthDecoder:Ul,maxDataLength:65535});if(!e.privateKey)throw new h("local peerId does not contain private key","ERR_NO_PRIVATE_KEY");let s=await Vm(e.privateKey),i=n?.publicKey,a=await this.performHandshakeResponder(o,s,i),c=await this.createSecureConnection(o,a);return t.source=c.source,t.sink=c.sink,{conn:t,remoteExtensions:a.payload.extensions,remotePeer:await It(a.payload.identityKey)}}async performHandshakeInitiator(e,t,n){let o;try{o=await Iw({connection:e,privateKey:t,remoteIdentityKey:n,log:this.components.logger.forComponent("libp2p:noise:xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:this.extensions}),this.metrics?.xxHandshakeSuccesses.increment()}catch(s){throw this.metrics?.xxHandshakeErrors.increment(),s}return o}async performHandshakeResponder(e,t,n){let o;try{o=await kw({connection:e,privateKey:t,remoteIdentityKey:n,log:this.components.logger.forComponent("libp2p:noise:xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:this.extensions}),this.metrics?.xxHandshakeSuccesses.increment()}catch(s){throw this.metrics?.xxHandshakeErrors.increment(),s}return o}async createSecureConnection(e,t){let[n,o]=iw(),s=e.unwrap();return await it(n,Pw(t,this.metrics),s,i=>cr(i,{lengthDecoder:Ul}),Cw(t,this.metrics),n),o}};function $a(r={}){return e=>new Pd(e,r)}function Cd(r){if(r!=null){if(typeof r[Symbol.iterator]=="function")return r[Symbol.iterator]();if(typeof r[Symbol.asyncIterator]=="function")return r[Symbol.asyncIterator]();if(typeof r.next=="function")return r}throw new Error("argument is not an iterator or iterable")}var Ga="ERR_INVALID_FRAME",l3="ERR_UNREQUESTED_PING",u3="ERR_NOT_MATCHING_PING",f3="ERR_STREAM_ALREADY_EXISTS",d3="ERR_DECODE_INVALID_VERSION",h3="ERR_BOTH_CLIENTS",p3="ERR_RECV_WINDOW_EXCEEDED",Nw=new Set([Ga,l3,u3,f3,d3,h3,p3]),vs="ERR_INVALID_CONFIG",Nd="ERR_MUXER_LOCAL_CLOSED",m3="ERR_MUXER_REMOTE_CLOSED";var Bw="ERR_STREAM_ABORT",Lw="ERROR_MAX_OUTBOUND_STREAMS_EXCEEDED",Ow="ERR_DECODE_IN_PROGRESS",Hl=256*1024,Kw=16*1024*1024;var Mw={enableKeepAlive:!0,keepAliveInterval:3e4,maxInboundStreams:1e3,maxOutboundStreams:1e3,initialStreamWindowSize:Hl,maxStreamWindowSize:Kw,maxMessageSize:64*1024};function Uw(r){if(r.keepAliveInterval<=0)throw new h("keep-alive interval must be positive",vs);if(r.maxInboundStreams<0)throw new h("max inbound streams must be larger or equal 0",vs);if(r.maxOutboundStreams<0)throw new h("max outbound streams must be larger or equal 0",vs);if(r.initialStreamWindowSize<Hl)throw new h("InitialStreamWindowSize must be larger or equal 256 kB",vs);if(r.maxStreamWindowSize<r.initialStreamWindowSize)throw new h("MaxStreamWindowSize must be larger than the InitialStreamWindowSize",vs);if(r.maxStreamWindowSize>2**32-1)throw new h("MaxStreamWindowSize must be less than equal MAX_UINT32",vs);if(r.maxMessageSize<1024)throw new h("MaxMessageSize must be greater than a kilobyte",vs)}var ct;(function(r){r[r.Data=0]="Data",r[r.WindowUpdate=1]="WindowUpdate",r[r.Ping=2]="Ping",r[r.GoAway=3]="GoAway"})(ct||(ct={}));var Ze;(function(r){r[r.SYN=1]="SYN",r[r.ACK=2]="ACK",r[r.FIN=4]="FIN",r[r.RST=8]="RST"})(Ze||(Ze={}));var _se=Object.values(Ze).filter(r=>typeof r!="string"),Fw=0,Vr;(function(r){r[r.NormalTermination=0]="NormalTermination",r[r.ProtocolError=1]="ProtocolError",r[r.InternalError=2]="InternalError"})(Vr||(Vr={}));var _s=12;var Vw=2**24;function kB(r){if(r[0]!==Fw)throw new h("Invalid frame version",d3);return{type:r[1],flag:(r[2]<<8)+r[3],streamID:r[4]*Vw+(r[5]<<16)+(r[6]<<8)+r[7],length:r[8]*Vw+(r[9]<<16)+(r[10]<<8)+r[11]}}var Bd=class{source;buffer;frameInProgress;constructor(e){this.source=TB(e),this.buffer=new be,this.frameInProgress=!1}async*emitFrames(){for await(let e of this.source)for(this.buffer.append(e);;){let t=this.readHeader();if(t===void 0)break;let{type:n,length:o}=t;n===ct.Data?(this.frameInProgress=!0,yield{header:t,readData:this.readBytes.bind(this,o)}):yield{header:t}}}readHeader(){if(this.frameInProgress)throw new h("decoding frame already in progress",Ow);if(this.buffer.length<_s)return;let e=kB(this.buffer.subarray(0,_s));return this.buffer.consume(_s),e}async readBytes(e){if(this.buffer.length<e){for await(let n of this.source)if(this.buffer.append(n),this.buffer.length>=e)break}let t=this.buffer.sublist(0,e);return this.buffer.consume(e),this.frameInProgress=!1,t}};function TB(r){if(r[Symbol.iterator]!==void 0){let e=r[Symbol.iterator]();return e.return=void 0,{[Symbol.iterator](){return e}}}else if(r[Symbol.asyncIterator]!==void 0){let e=r[Symbol.asyncIterator]();return e.return=void 0,{[Symbol.asyncIterator](){return e}}}else throw new Error("a source must be either an iterable or an async iterable")}function y3(r){let e=new Uint8Array(_s);return e[1]=r.type,e[2]=r.flag>>>8,e[3]=r.flag,e[4]=r.streamID>>>24,e[5]=r.streamID>>>16,e[6]=r.streamID>>>8,e[7]=r.streamID,e[8]=r.length>>>24,e[9]=r.length>>>16,e[10]=r.length>>>8,e[11]=r.length,e}function qw(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function Ld(r,e){let t=Cd(r).return?.();qw(t)&&t.catch(n=>{e.error("could not cause iterator to return",n)})}var DB="ERR_STREAM_RESET",PB="ERR_SINK_INVALID_STATE",CB=5e3;function g3(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var Ss=class{id;direction;timeline;protocol;metadata;source;status;readStatus;writeStatus;log;sinkController;sinkEnd;closed;endErr;streamSource;onEnd;onCloseRead;onCloseWrite;onReset;onAbort;sendCloseWriteTimeout;constructor(e){this.sinkController=new AbortController,this.sinkEnd=he(),this.closed=he(),this.log=e.log,this.status="open",this.readStatus="ready",this.writeStatus="ready",this.id=e.id,this.metadata=e.metadata??{},this.direction=e.direction,this.timeline={open:Date.now()},this.sendCloseWriteTimeout=e.sendCloseWriteTimeout??CB,this.onEnd=e.onEnd,this.onCloseRead=e?.onCloseRead,this.onCloseWrite=e?.onCloseWrite,this.onReset=e?.onReset,this.onAbort=e?.onAbort,this.source=this.streamSource=At({onEnd:t=>{t!=null?this.log.trace("source ended with error",t):this.log.trace("source ended"),this.onSourceEnd(t)}}),this.sink=this.sink.bind(this)}async sink(e){if(this.writeStatus!=="ready")throw new h(`writable end state is "${this.writeStatus}" not "ready"`,PB);try{this.writeStatus="writing";let t={signal:this.sinkController.signal};if(this.direction==="outbound"){let o=this.sendNewStream(t);g3(o)&&await o}let n=()=>{Ld(e,this.log)};try{this.sinkController.signal.addEventListener("abort",n),this.log.trace("sink reading from source");for await(let o of e){o=o instanceof Uint8Array?new be(o):o;let s=this.sendData(o,t);g3(s)&&await s}}finally{this.sinkController.signal.removeEventListener("abort",n)}this.log.trace('sink finished reading from source, write status is "%s"',this.writeStatus),this.writeStatus==="writing"&&(this.writeStatus="closing",this.log.trace("send close write to remote"),await this.sendCloseWrite({signal:AbortSignal.timeout(this.sendCloseWriteTimeout)}),this.writeStatus="closed"),this.onSinkEnd()}catch(t){throw this.log.trace("sink ended with error, calling abort with error",t),this.abort(t),t}finally{this.log.trace("resolve sink end"),this.sinkEnd.resolve()}}onSourceEnd(e){this.timeline.closeRead==null&&(this.timeline.closeRead=Date.now(),this.readStatus="closed",e!=null&&this.endErr==null&&(this.endErr=e),this.onCloseRead?.(),this.timeline.closeWrite!=null?(this.log.trace("source and sink ended"),this.timeline.close=Date.now(),this.status!=="aborted"&&this.status!=="reset"&&(this.status="closed"),this.onEnd!=null&&this.onEnd(this.endErr),this.closed.resolve()):this.log.trace("source ended, waiting for sink to end"))}onSinkEnd(e){this.timeline.closeWrite==null&&(this.timeline.closeWrite=Date.now(),this.writeStatus="closed",e!=null&&this.endErr==null&&(this.endErr=e),this.onCloseWrite?.(),this.timeline.closeRead!=null?(this.log.trace("sink and source ended"),this.timeline.close=Date.now(),this.status!=="aborted"&&this.status!=="reset"&&(this.status="closed"),this.onEnd!=null&&this.onEnd(this.endErr),this.closed.resolve()):this.log.trace("sink ended, waiting for source to end"))}async close(e){this.log.trace("closing gracefully"),this.status="closing",await Promise.all([this.closeRead(e),this.closeWrite(e)]),await dr(this.closed.promise,e?.signal),this.status="closed",this.log.trace("closed gracefully")}async closeRead(e={}){if(this.readStatus==="closing"||this.readStatus==="closed")return;this.log.trace('closing readable end of stream with starting read status "%s"',this.readStatus);let t=this.readStatus;this.readStatus="closing",this.status!=="reset"&&this.status!=="aborted"&&this.timeline.closeRead==null&&(this.log.trace("send close read to remote"),await this.sendCloseRead(e)),t==="ready"&&(this.log.trace("ending internal source queue with %d queued bytes",this.streamSource.readableLength),this.streamSource.end()),this.log.trace("closed readable end of stream")}async closeWrite(e={}){this.writeStatus==="closing"||this.writeStatus==="closed"||(this.log.trace('closing writable end of stream with starting write status "%s"',this.writeStatus),this.writeStatus==="ready"&&(this.log.trace("sink was never sunk, sink an empty array"),await dr(this.sink([]),e.signal)),this.writeStatus==="writing"&&await new Promise((t,n)=>{queueMicrotask(()=>{this.log.trace("aborting source passed to .sink"),this.sinkController.abort(),dr(this.sinkEnd.promise,e.signal).then(t,n)})}),this.writeStatus="closed",this.log.trace("closed writable end of stream"))}abort(e){if(this.status==="closed"||this.status==="aborted"||this.status==="reset")return;this.log("abort with error",e),this.log("try to send reset to remote");let t=this.sendReset();g3(t)&&t.catch(n=>{this.log.error("error sending reset message",n)}),this.status="aborted",this.timeline.abort=Date.now(),this._closeSinkAndSource(e),this.onAbort?.(e)}reset(){if(this.status==="closed"||this.status==="aborted"||this.status==="reset")return;let e=new h("stream reset",DB);this.status="reset",this.timeline.reset=Date.now(),this._closeSinkAndSource(e),this.onReset?.()}_closeSinkAndSource(e){this._closeSink(e),this._closeSource(e)}_closeSink(e){this.writeStatus==="writing"&&(this.log.trace("end sink source"),this.sinkController.abort()),this.onSinkEnd(e)}_closeSource(e){this.readStatus!=="closing"&&this.readStatus!=="closed"&&(this.log.trace("ending source with %d bytes to be read by consumer",this.streamSource.readableLength),this.readStatus="closing",this.streamSource.end(e))}remoteCloseWrite(){if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("received remote close write but local source is already closed");return}this.log.trace("remote close write"),this._closeSource()}remoteCloseRead(){if(this.writeStatus==="closing"||this.writeStatus==="closed"){this.log("received remote close read but local sink is already closed");return}this.log.trace("remote close read"),this._closeSink()}destroy(){if(this.status==="closed"||this.status==="aborted"||this.status==="reset"){this.log("received destroy but we are already closed");return}this.log.trace("stream destroyed"),this._closeSinkAndSource()}sourcePush(e){this.streamSource.push(e)}sourceReadableLength(){return this.streamSource.readableLength}};var qr;(function(r){r[r.Init=0]="Init",r[r.SYNSent=1]="SYNSent",r[r.SYNReceived=2]="SYNReceived",r[r.Established=3]="Established",r[r.Finished=4]="Finished"})(qr||(qr={}));var Od=class extends Ss{name;state;config;_id;sendWindowCapacity;sendWindowCapacityUpdate;recvWindow;recvWindowCapacity;epochStart;getRTT;sendFrame;constructor(e){super({...e,onEnd:t=>{this.state=qr.Finished,e.onEnd?.(t)}}),this.config=e.config,this._id=parseInt(e.id,10),this.name=e.name,this.state=e.state,this.sendWindowCapacity=Hl,this.recvWindow=this.config.initialStreamWindowSize,this.recvWindowCapacity=this.recvWindow,this.epochStart=Date.now(),this.getRTT=e.getRTT,this.sendFrame=e.sendFrame,this.source=Ys(this.source,()=>{this.sendWindowUpdate()})}async sendNewStream(){}async sendData(e,t={}){for(e=e.sublist();e.byteLength!==0;){if(this.sendWindowCapacity===0&&await this.waitForSendWindowCapacity(t),this.status!=="open")return;let n=Math.min(this.sendWindowCapacity,this.config.maxMessageSize-_s,e.length),o=this.getSendFlags();this.sendFrame({type:ct.Data,flag:o,streamID:this._id,length:n},e.sublist(0,n)),this.sendWindowCapacity-=n,e.consume(n)}}async sendReset(){this.sendFrame({type:ct.WindowUpdate,flag:Ze.RST,streamID:this._id,length:0})}async sendCloseWrite(){let e=this.getSendFlags()|Ze.FIN;this.sendFrame({type:ct.WindowUpdate,flag:e,streamID:this._id,length:0})}async sendCloseRead(){}async waitForSendWindowCapacity(e={}){if(this.sendWindowCapacity>0)return;let t,n,o=()=>{this.status==="open"?n(new h("stream aborted",Bw)):t()};e.signal?.addEventListener("abort",o);try{await new Promise((s,i)=>{this.sendWindowCapacityUpdate=()=>{s()},n=i,t=s})}finally{e.signal?.removeEventListener("abort",o)}}handleWindowUpdate(e){this.log?.trace("stream received window update id=%s",this._id),this.processFlags(e.flag);let t=this.sendWindowCapacity;this.sendWindowCapacity+=e.length,t===0&&e.length>0&&this.sendWindowCapacityUpdate?.()}async handleData(e,t){if(this.log?.trace("stream received data id=%s",this._id),this.processFlags(e.flag),this.recvWindowCapacity<e.length)throw new h("receive window exceeded",p3,{available:this.recvWindowCapacity,recv:e.length});let n=await t();this.recvWindowCapacity-=e.length,this.sourcePush(n)}processFlags(e){(e&Ze.ACK)===Ze.ACK&&this.state===qr.SYNSent&&(this.state=qr.Established),(e&Ze.FIN)===Ze.FIN&&this.remoteCloseWrite(),(e&Ze.RST)===Ze.RST&&this.reset()}getSendFlags(){switch(this.state){case qr.Init:return this.state=qr.SYNSent,Ze.SYN;case qr.SYNReceived:return this.state=qr.Established,Ze.ACK;default:return 0}}sendWindowUpdate(){let e=this.getSendFlags(),t=Date.now(),n=this.getRTT();if(e===0&&n>-1&&t-this.epochStart<n*4&&(this.recvWindow=Math.min(this.recvWindow*2,this.config.maxStreamWindowSize)),this.recvWindowCapacity>=this.recvWindow&&e===0)return;let o=this.recvWindow-this.recvWindowCapacity;this.recvWindowCapacity=this.recvWindow,this.epochStart=t,this.sendFrame({type:ct.WindowUpdate,flag:e,streamID:this._id,length:o})}};var Hw="/yamux/1.0.0",NB=500,Kd=class{protocol=Hw;_components;_init;constructor(e,t={}){this._components=e,this._init=t}createStreamMuxer(e){return new b3(this._components,{...this._init,...e})}},b3=class{protocol=Hw;source;sink;config;log;logger;closeController;nextStreamID;_streams;nextPingID;activePing;rtt;client;localGoAway;remoteGoAway;numInboundStreams;numOutboundStreams;onIncomingStream;onStreamEnd;constructor(e,t){this.client=t.direction==="outbound",this.config={...Mw,...t},this.logger=e.logger,this.log=this.logger.forComponent("libp2p:yamux"),Uw(this.config),this.closeController=new AbortController,Ce(1/0,this.closeController.signal),this.onIncomingStream=t.onIncomingStream,this.onStreamEnd=t.onStreamEnd,this._streams=new Map,this.source=At({onEnd:()=>{this.log?.trace("muxer source ended"),this._streams.forEach(n=>{n.destroy()})}}),this.sink=async n=>{let o=()=>{let a=Cd(n);if(a.return!=null){let c=a.return();BB(c)&&c.catch(l=>{this.log?.("could not cause sink source to return",l)})}},s,i;try{let a=new Bd(n);try{this.closeController.signal.addEventListener("abort",o);for await(let c of a.emitFrames())await this.handleFrame(c.header,c.readData)}finally{this.closeController.signal.removeEventListener("abort",o)}s=Vr.NormalTermination}catch(a){let c=a.code;Nw.has(c)?(this.log?.error("protocol error in sink",a),s=Vr.ProtocolError):(this.log?.error("internal error in sink",a),s=Vr.InternalError),i=a}this.log?.trace("muxer sink ended"),i!=null?this.abort(i,s):await this.close({reason:s})},this.numInboundStreams=0,this.numOutboundStreams=0,this.nextStreamID=this.client?1:2,this.nextPingID=0,this.rtt=-1,this.log?.trace("muxer created"),this.config.enableKeepAlive&&this.keepAliveLoop().catch(n=>this.log?.error("keepalive error: %s",n)),this.ping().catch(n=>this.log?.error("ping error: %s",n))}get streams(){return Array.from(this._streams.values())}newStream(e){if(this.remoteGoAway!==void 0)throw new h("muxer closed remotely",m3);if(this.localGoAway!==void 0)throw new h("muxer closed locally",Nd);let t=this.nextStreamID;if(this.nextStreamID+=2,this.numOutboundStreams>=this.config.maxOutboundStreams)throw new h("max outbound streams exceeded",Lw);this.log?.trace("new outgoing stream id=%s",t);let n=this._newStream(t,e,qr.Init,"outbound");return this._streams.set(t,n),this.numOutboundStreams++,n.sendWindowUpdate(),n}async ping(){if(this.remoteGoAway!==void 0)throw new h("muxer closed remotely",m3);if(this.localGoAway!==void 0)throw new h("muxer closed locally",Nd);if(this.activePing===void 0){let e=()=>{};this.activePing={id:this.nextPingID++,promise:new Promise((o,s)=>{let i=()=>{s(new h("muxer closed locally",Nd))};this.closeController.signal.addEventListener("abort",i,{once:!0}),e=()=>{this.closeController.signal.removeEventListener("abort",i),o()}}),resolve:e};let t=Date.now();this.sendPing(this.activePing.id);try{await this.activePing.promise}finally{delete this.activePing}let n=Date.now();this.rtt=n-t}else await this.activePing.promise;return this.rtt}getRTT(){return this.rtt}async close(e={}){if(this.closeController.signal.aborted)return;let t=e?.reason??Vr.NormalTermination;if(this.log?.trace("muxer close reason=%s",t),e.signal==null){let n=AbortSignal.timeout(NB);Ce(1/0,n),e={...e,signal:n}}try{await Promise.all([...this._streams.values()].map(async n=>n.close(e))),this.sendGoAway(t),this._closeMuxer()}catch(n){this.abort(n)}}abort(e,t){if(!this.closeController.signal.aborted){t=t??Vr.InternalError,this.log?.error("muxer abort reason=%s error=%s",t,e);for(let n of this._streams.values())n.abort(e);this.sendGoAway(t),this._closeMuxer()}}isClosed(){return this.closeController.signal.aborted}_closeMuxer(){this.closeController.abort(),this.source.end()}_newStream(e,t,n,o){if(this._streams.get(e)!=null)throw new h("Stream already exists",f3,{id:e});let s=new Od({id:e.toString(),name:t,state:n,direction:o,sendFrame:this.sendFrame.bind(this),onEnd:()=>{this.closeStream(e),this.onStreamEnd?.(s)},log:this.logger.forComponent(`libp2p:yamux:${o}:${e}`),config:this.config,getRTT:this.getRTT.bind(this)});return s}closeStream(e){this.client===(e%2===0)?this.numInboundStreams--:this.numOutboundStreams--,this._streams.delete(e)}async keepAliveLoop(){let e=new Promise((t,n)=>{this.closeController.signal.addEventListener("abort",n,{once:!0})});for(this.log?.trace("muxer keepalive enabled interval=%s",this.config.keepAliveInterval);;){let t;try{await Promise.race([e,new Promise(n=>{t=setTimeout(n,this.config.keepAliveInterval)})]),this.ping().catch(n=>this.log?.error("ping error: %s",n))}catch{clearInterval(t);return}}}async handleFrame(e,t){let{streamID:n,type:o,length:s}=e;if(this.log?.trace("received frame %o",e),n===0)switch(o){case ct.Ping:{this.handlePing(e);return}case ct.GoAway:{this.handleGoAway(s);return}default:throw new h("Invalid frame type",Ga,{header:e})}else switch(e.type){case ct.Data:case ct.WindowUpdate:{await this.handleStreamMessage(e,t);return}default:throw new h("Invalid frame type",Ga,{header:e})}}handlePing(e){if(e.flag===Ze.SYN)this.log?.trace("received ping request pingId=%s",e.length),this.sendPing(e.length,Ze.ACK);else if(e.flag===Ze.ACK)this.log?.trace("received ping response pingId=%s",e.length),this.handlePingResponse(e.length);else throw new h("Invalid frame flag",Ga,{header:e})}handlePingResponse(e){if(this.activePing===void 0)throw new h("ping not requested",l3);if(this.activePing.id!==e)throw new h("ping doesn't match our id",u3);this.activePing.resolve()}handleGoAway(e){this.log?.trace("received GoAway reason=%s",Vr[e]??"unknown"),this.remoteGoAway=e;for(let t of this._streams.values())t.reset();this._closeMuxer()}async handleStreamMessage(e,t){let{streamID:n,flag:o,type:s}=e;(o&Ze.SYN)===Ze.SYN&&this.incomingStream(n);let i=this._streams.get(n);if(i===void 0){if(s===ct.Data){if(this.log?.("discarding data for stream id=%s",n),t===void 0)throw new Error("unreachable");await t()}else this.log?.("frame for missing stream id=%s",n);return}switch(s){case ct.WindowUpdate:{i.handleWindowUpdate(e);return}case ct.Data:{if(t===void 0)throw new Error("unreachable");await i.handleData(e,t);return}default:throw new Error("unreachable")}}incomingStream(e){if(this.client!==(e%2===0))throw new h("both endpoints are clients",h3);if(this._streams.has(e))return;if(this.log?.trace("new incoming stream id=%s",e),this.localGoAway!==void 0){this.sendFrame({type:ct.WindowUpdate,flag:Ze.RST,streamID:e,length:0});return}if(this.numInboundStreams>=this.config.maxInboundStreams){this.log?.("maxIncomingStreams exceeded, forcing stream reset"),this.sendFrame({type:ct.WindowUpdate,flag:Ze.RST,streamID:e,length:0});return}let t=this._newStream(e,void 0,qr.SYNReceived,"inbound");this.numInboundStreams++,this._streams.set(e,t),this.onIncomingStream?.(t)}sendFrame(e,t){if(this.log?.trace("sending frame %o",e),e.type===ct.Data){if(t===void 0)throw new h("invalid frame",Ga);this.source.push(new be(y3(e),t))}else this.source.push(y3(e))}sendPing(e,t=Ze.SYN){t===Ze.SYN?this.log?.trace("sending ping request pingId=%s",e):this.log?.trace("sending ping response pingId=%s",e),this.sendFrame({type:ct.Ping,flag:t,streamID:0,length:e})}sendGoAway(e=Vr.NormalTermination){this.log?.("sending GoAway reason=%s",Vr[e]),this.localGoAway=e,this.sendFrame({type:ct.GoAway,flag:0,streamID:0,length:e})}};function BB(r){return r!=null&&typeof r.then=="function"}function $w(r={}){return e=>new Kd(e,r)}var v3={};oe(v3,{Ed25519PrivateKey:()=>Ri,Ed25519PublicKey:()=>$l,generateKeyPair:()=>UB,generateKeyPairFromSeed:()=>Qw,unmarshalEd25519PrivateKey:()=>KB,unmarshalEd25519PublicKey:()=>MB});function Hr(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var Ya=32,No=64,Md=32;function Gw(){let r=we.utils.randomPrivateKey(),e=we.getPublicKey(r);return{privateKey:jw(r,e),publicKey:e}}function Yw(r){if(r.length!==Md)throw new TypeError('"seed" must be 32 bytes in length.');if(!(r instanceof Uint8Array))throw new TypeError('"seed" must be a node.js Buffer, or Uint8Array.');let e=r,t=we.getPublicKey(e);return{privateKey:jw(e,t),publicKey:t}}function Ww(r,e){let t=r.subarray(0,Md);return we.sign(e instanceof Uint8Array?e:e.subarray(),t)}function zw(r,e,t){return we.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function jw(r,e){let t=new Uint8Array(No);for(let n=0;n<Md;n++)t[n]=r[n],t[Md+n]=e[n];return t}var tr={get(r=globalThis){let e=r.crypto;if(e==null||e.subtle==null)throw Object.assign(new Error("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"),{code:"ERR_MISSING_WEB_CRYPTO"});return e}};var w3={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function Xw(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,o=r?.digest??"SHA-256",s=r?.saltLength??16,i=r?.iterations??32767,a=tr.get();t*=8;async function c(u,d){let y=a.getRandomValues(new Uint8Array(s)),p=a.getRandomValues(new Uint8Array(n)),m={name:e,iv:p};typeof d=="string"&&(d=x(d));let g;if(d.length===0){g=await a.subtle.importKey("jwk",w3,{name:"AES-GCM"},!0,["encrypt"]);try{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}catch{g=await a.subtle.importKey("jwk",w3,{name:"AES-GCM"},!0,["encrypt"])}}else{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}let b=await a.subtle.encrypt(m,g,u);return le([y,m.iv,new Uint8Array(b)])}async function l(u,d){let y=u.subarray(0,s),p=u.subarray(s,s+n),m=u.subarray(s+n),g={name:e,iv:p};typeof d=="string"&&(d=x(d));let b;if(d.length===0)try{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}catch{b=await a.subtle.importKey("jwk",w3,{name:"AES-GCM"},!0,["decrypt"])}else{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}let E=await a.subtle.decrypt(g,b,m);return new Uint8Array(E)}return{encrypt:c,decrypt:l}}async function Wa(r,e){let n=await Xw().encrypt(r,e);return Ge.encode(n)}var Kt;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(Kt||(Kt={}));var E3;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(E3||(E3={}));(function(r){r.codec=()=>Re(E3)})(Kt||(Kt={}));var Rs;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Kt.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=Kt.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(Rs||(Rs={}));var As;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Kt.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=Kt.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(As||(As={}));var $l=class{_key;constructor(e){this._key=za(e,Ya)}verify(e,t){return zw(this._key,t,e)}marshal(){return this._key}get bytes(){return Rs.encode({Type:Kt.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Hr(e)?e.then(({bytes:t})=>t):e.bytes}},Ri=class{_key;_publicKey;constructor(e,t){this._key=za(e,No),this._publicKey=za(t,Ya)}sign(e){return Ww(this._key,e)}get public(){return new $l(this._publicKey)}marshal(){return this._key}get bytes(){return As.encode({Type:Kt.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return Hr(e)?{bytes:t}=await e:t=e.bytes,t}async id(){let e=Xe.digest(this.public.bytes);return ie.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Wa(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function KB(r){if(r.length>No){r=za(r,No+Ya);let n=r.subarray(0,No),o=r.subarray(No,r.length);return new Ri(n,o)}r=za(r,No);let e=r.subarray(0,No),t=r.subarray(Ya);return new Ri(e,t)}function MB(r){return r=za(r,Ya),new $l(r)}async function UB(){let{privateKey:r,publicKey:e}=Gw();return new Ri(r,e)}async function Qw(r){let{privateKey:e,publicKey:t}=Yw(r);return new Ri(e,t)}function za(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new h(`Key must be a Uint8Array of length ${e}, got ${r.length}`,"ERR_INVALID_KEY_TYPE");return r}var I3={};oe(I3,{MAX_RSA_KEY_SIZE:()=>Wl,RsaPrivateKey:()=>ja,RsaPublicKey:()=>Yl,fromJwk:()=>QB,generateKeyPair:()=>JB,unmarshalRsaPrivateKey:()=>R3,unmarshalRsaPublicKey:()=>XB});function Ai(r){if(isNaN(r)||r<=0)throw new h("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return dt(r)}var Is={};oe(Is,{exportToPem:()=>GB,importFromPem:()=>YB,jwkToPkcs1:()=>VB,jwkToPkix:()=>HB,pkcs1ToJwk:()=>FB,pkixToJwk:()=>qB});function FB(r){let{result:e}=Ee(r),t=e.valueBlock.value;return{n:v(Kn(t[1].toBigInt()),"base64url"),e:v(Kn(t[2].toBigInt()),"base64url"),d:v(Kn(t[3].toBigInt()),"base64url"),p:v(Kn(t[4].toBigInt()),"base64url"),q:v(Kn(t[5].toBigInt()),"base64url"),dp:v(Kn(t[6].toBigInt()),"base64url"),dq:v(Kn(t[7].toBigInt()),"base64url"),qi:v(Kn(t[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function VB(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 h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new B({value:0}),B.fromBigInt(Mn(x(r.n,"base64url"))),B.fromBigInt(Mn(x(r.e,"base64url"))),B.fromBigInt(Mn(x(r.d,"base64url"))),B.fromBigInt(Mn(x(r.p,"base64url"))),B.fromBigInt(Mn(x(r.q,"base64url"))),B.fromBigInt(Mn(x(r.dp,"base64url"))),B.fromBigInt(Mn(x(r.dq,"base64url"))),B.fromBigInt(Mn(x(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function qB(r){let{result:e}=Ee(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:v(Kn(t[0].toBigInt()),"base64url"),e:v(Kn(t[1].toBigInt()),"base64url")}}function HB(r){if(r.n==null||r.e==null)throw new h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new kt({valueHex:new M({value:[B.fromBigInt(Mn(x(r.n,"base64url"))),B.fromBigInt(Mn(x(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function Kn(r){let e=r.toString(16);e.length%2>0&&(e=`0${e}`);let t=e.length/2,n=new Uint8Array(t),o=0,s=0;for(;o<t;)n[o]=parseInt(e.slice(s,s+2),16),o+=1,s+=2;return n}function Mn(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}var $B=16,_3=32,S3=1e4;async function GB(r,e){let t=tr.get(),o=new M({value:[new B({value:0}),new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new Se({valueHex:r.marshal()})]}).toBER(),s=new Uint8Array(o,0,o.byteLength),i=Ai($B),a=await pt(Ye,e,i,{c:S3,dkLen:_3}),c=Ai(16),l=await t.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),f=await t.subtle.encrypt({name:"AES-CBC",iv:c},l,s),u=new M({value:[new Se({valueHex:i}),new B({value:S3}),new B({value:_3}),new M({value:[new ae({value:"1.2.840.113549.2.11"}),new Ne]})]}),d=new M({value:[new ae({value:"1.2.840.113549.1.5.13"}),new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.5.12"}),u]}),new M({value:[new ae({value:"2.16.840.1.101.3.4.1.42"}),new Se({valueHex:c})]})]})]}),p=new M({value:[d,new Se({valueHex:f})]}).toBER(),m=new Uint8Array(p,0,p.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...v(m,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
|
|
24
|
-
`)}async function YB(r,e){let t=tr.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o),{iv:i,salt:a,iterations:c,keySize:l,cipherText:f}=WB(s),u=await pt(Ye,e,a,{c,dkLen:l}),d=await t.subtle.importKey("raw",u,"AES-CBC",!1,["decrypt"]),y=Gl(await t.subtle.decrypt({name:"AES-CBC",iv:i},d,f)),{result:p}=Ee(y);n=Jw(p)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o);n=Jw(s)}else throw new h("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return R3(n)}function WB(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new h("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new h("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let s=n.valueBlock.value[1],i=Gl(s.valueBlock.value[0].getValue()),a=S3,c=_3;if(s.valueBlock.value.length===3)a=Number(s.valueBlock.value[1].toBigInt()),c=Number(s.valueBlock.value[2].toBigInt());else if(s.valueBlock.value.length===2)throw new h("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let l=e.valueBlock.value[1].valueBlock.value[1],f=l.valueBlock.value[0].toString();if(f!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(f!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new h("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let u=Gl(l.valueBlock.value[1].getValue());return{cipherText:Gl(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:u}}function Jw(r){return Gl(r.valueBlock.value[2].getValue())}function Gl(r){return new Uint8Array(r,0,r.byteLength)}async function Zw(r){let e=await tr.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await rE(e);return{privateKey:t[0],publicKey:t[1]}}async function A3(r){let t=[await tr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await zB(r)],n=await rE({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function eE(r,e){let t=await tr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await tr.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function tE(r,e,t){let n=await tr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return tr.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function rE(r){if(r.privateKey==null||r.publicKey==null)throw new h("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([tr.get().subtle.exportKey("jwk",r.privateKey),tr.get().subtle.exportKey("jwk",r.publicKey)])}async function zB(r){return tr.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function Ud(r){if(r.kty!=="RSA")throw new h("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new h("invalid key modulus","ERR_INVALID_KEY_MODULUS");return x(r.n,"base64url").length*8}var Wl=8192,Yl=class{_key;constructor(e){this._key=e}verify(e,t){return tE(this._key,t,e)}marshal(){return Is.jwkToPkix(this._key)}get bytes(){return Rs.encode({Type:Kt.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Hr(e)?e.then(({bytes:t})=>t):e.bytes}},ja=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return Ai(16)}sign(e){return eE(this._key,e)}get public(){if(this._publicKey==null)throw new h("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new Yl(this._publicKey)}marshal(){return Is.jwkToPkcs1(this._key)}get bytes(){return As.encode({Type:Kt.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Hr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return Is.exportToPem(this,e);if(t==="libp2p-key")return Wa(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function R3(r){let e=Is.pkcs1ToJwk(r);if(Ud(e)>Wl)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await A3(e);return new ja(t.privateKey,t.publicKey)}function XB(r){let e=Is.pkixToJwk(r);if(Ud(e)>Wl)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new Yl(e)}async function QB(r){if(Ud(r)>Wl)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await A3(r);return new ja(e.privateKey,e.publicKey)}async function JB(r){if(r>Wl)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await Zw(r);return new ja(e.privateKey,e.publicKey)}var T3={};oe(T3,{Secp256k1PrivateKey:()=>jl,Secp256k1PublicKey:()=>zl,generateKeyPair:()=>rL,unmarshalSecp256k1PrivateKey:()=>eL,unmarshalSecp256k1PublicKey:()=>tL});function nE(){return W.utils.randomPrivateKey()}function oE(r,e){let t=K.digest(e instanceof Uint8Array?e:e.subarray());if(Hr(t))return t.then(({digest:n})=>W.sign(n,r).toDERRawBytes()).catch(n=>{throw new h(String(n),"ERR_INVALID_INPUT")});try{return W.sign(t.digest,r).toDERRawBytes()}catch(n){throw new h(String(n),"ERR_INVALID_INPUT")}}function sE(r,e,t){let n=K.digest(t instanceof Uint8Array?t:t.subarray());if(Hr(n))return n.then(({digest:o})=>W.verify(e,o,r)).catch(o=>{throw new h(String(o),"ERR_INVALID_INPUT")});try{return W.verify(e,n.digest,r)}catch(o){throw new h(String(o),"ERR_INVALID_INPUT")}}function iE(r){return W.ProjectivePoint.fromHex(r).toRawBytes(!0)}function aE(r){try{W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}function k3(r){try{W.ProjectivePoint.fromHex(r)}catch(e){throw new h(String(e),"ERR_INVALID_PUBLIC_KEY")}}function cE(r){try{return W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}var zl=class{_key;constructor(e){k3(e),this._key=e}verify(e,t){return sE(this._key,t,e)}marshal(){return iE(this._key)}get bytes(){return Rs.encode({Type:Kt.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return Hr(e)?{bytes:t}=await e:t=e.bytes,t}},jl=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??cE(e),aE(this._key),k3(this._publicKey)}sign(e){return oE(this._key,e)}get public(){return new zl(this._publicKey)}marshal(){return this._key}get bytes(){return As.encode({Type:Kt.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Hr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Wa(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function eL(r){return new jl(r)}function tL(r){return new zl(r)}async function rL(){let r=nE();return new jl(r)}var lE={rsa:I3,ed25519:v3,secp256k1:T3};function nL(r){let e=Object.keys(lE).join(" / ");return new h(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function D3(r){if(r=r.toLowerCase(),r==="rsa"||r==="ed25519"||r==="secp256k1")return lE[r];throw nL(r)}async function uE(r,e){return D3(r).generateKeyPair(e??2048)}function fE(r,e){return e=(e??"rsa").toLowerCase(),D3(e),r.bytes}function dE(r,e){return e=(e??"rsa").toLowerCase(),D3(e),r.bytes}var Fd=async()=>{let r=await uE("Ed25519"),e=await oL(r);if(e.type==="Ed25519")return e;throw new Error(`Generated unexpected PeerId type "${e.type}"`)};async function oL(r){return It(fE(r.public),dE(r))}var pE=Ue(hE(),1),sL=["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"],iL=sL.map(r=>new pE.Netmask(r));function aL(r){for(let e of iL)if(e.contains(r))return!0;return!1}function cL(r){return/^::$/.test(r)||/^::1$/.test(r)||/^::f{4}:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^::f{4}:0.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.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 $r(r){return da(r)?aL(r):ha(r)?cL(r):void 0}var Vd=globalThis.CustomEvent??Event;async function*Bo(r,e={}){let t=e.concurrency??1/0;t<1&&(t=1/0);let n=e.ordered==null?!1:e.ordered,o=new EventTarget,s=[],i=he(),a=he(),c=!1,l,f=!1;o.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let p of r){if(s.length===t&&(i=he(),await i.promise),f)break;let m={done:!1};s.push(m),p().then(g=>{m.done=!0,m.ok=!0,m.value=g,o.dispatchEvent(new Vd("task-complete"))},g=>{m.done=!0,m.err=g,o.dispatchEvent(new Vd("task-complete"))})}c=!0,o.dispatchEvent(new Vd("task-complete"))}catch(p){l=p,o.dispatchEvent(new Vd("task-complete"))}});function u(){return n?s[0]?.done:!!s.find(p=>p.done)}function*d(){for(;s.length>0&&s[0].done;){let p=s[0];if(s.shift(),p.ok)yield p.value;else throw f=!0,i.resolve(),p.err;i.resolve()}}function*y(){for(;u();)for(let p=0;p<s.length;p++)if(s[p].done){let m=s[p];if(s.splice(p,1),p--,m.ok)yield m.value;else throw f=!0,i.resolve(),m.err;i.resolve()}}for(;;){if(u()||(a=he(),await a.promise),l!=null)throw l;if(n?yield*d():yield*y(),c&&s.length===0)break}}var mE="libp2p",yE="autonat",gE="1.0.0";var ve;(function(r){let e;(function(l){l.DIAL="DIAL",l.DIAL_RESPONSE="DIAL_RESPONSE"})(e=r.MessageType||(r.MessageType={}));let t;(function(l){l[l.DIAL=0]="DIAL",l[l.DIAL_RESPONSE=1]="DIAL_RESPONSE"})(t||(t={})),function(l){l.codec=()=>Re(t)}(e=r.MessageType||(r.MessageType={}));let n;(function(l){l.OK="OK",l.E_DIAL_ERROR="E_DIAL_ERROR",l.E_DIAL_REFUSED="E_DIAL_REFUSED",l.E_BAD_REQUEST="E_BAD_REQUEST",l.E_INTERNAL_ERROR="E_INTERNAL_ERROR"})(n=r.ResponseStatus||(r.ResponseStatus={}));let o;(function(l){l[l.OK=0]="OK",l[l.E_DIAL_ERROR=100]="E_DIAL_ERROR",l[l.E_DIAL_REFUSED=101]="E_DIAL_REFUSED",l[l.E_BAD_REQUEST=200]="E_BAD_REQUEST",l[l.E_INTERNAL_ERROR=300]="E_INTERNAL_ERROR"})(o||(o={})),function(l){l.codec=()=>Re(o)}(n=r.ResponseStatus||(r.ResponseStatus={}));let s;(function(l){let f;l.codec=()=>(f==null&&(f=J((u,d,y={})=>{if(y.lengthDelimited!==!1&&d.fork(),u.id!=null&&(d.uint32(10),d.bytes(u.id)),u.addrs!=null)for(let p of u.addrs)d.uint32(18),d.bytes(p);y.lengthDelimited!==!1&&d.ldelim()},(u,d)=>{let y={addrs:[]},p=d==null?u.len:u.pos+d;for(;u.pos<p;){let m=u.uint32();switch(m>>>3){case 1:y.id=u.bytes();break;case 2:y.addrs.push(u.bytes());break;default:u.skipType(m&7);break}}return y})),f),l.encode=u=>Q(u,l.codec()),l.decode=u=>X(u,l.codec())})(s=r.PeerInfo||(r.PeerInfo={}));let i;(function(l){let f;l.codec=()=>(f==null&&(f=J((u,d,y={})=>{y.lengthDelimited!==!1&&d.fork(),u.peer!=null&&(d.uint32(10),r.PeerInfo.codec().encode(u.peer,d)),y.lengthDelimited!==!1&&d.ldelim()},(u,d)=>{let y={},p=d==null?u.len:u.pos+d;for(;u.pos<p;){let m=u.uint32();switch(m>>>3){case 1:y.peer=r.PeerInfo.codec().decode(u,u.uint32());break;default:u.skipType(m&7);break}}return y})),f),l.encode=u=>Q(u,l.codec()),l.decode=u=>X(u,l.codec())})(i=r.Dial||(r.Dial={}));let a;(function(l){let f;l.codec=()=>(f==null&&(f=J((u,d,y={})=>{y.lengthDelimited!==!1&&d.fork(),u.status!=null&&(d.uint32(8),r.ResponseStatus.codec().encode(u.status,d)),u.statusText!=null&&(d.uint32(18),d.string(u.statusText)),u.addr!=null&&(d.uint32(26),d.bytes(u.addr)),y.lengthDelimited!==!1&&d.ldelim()},(u,d)=>{let y={},p=d==null?u.len:u.pos+d;for(;u.pos<p;){let m=u.uint32();switch(m>>>3){case 1:y.status=r.ResponseStatus.codec().decode(u);break;case 2:y.statusText=u.string();break;case 3:y.addr=u.bytes();break;default:u.skipType(m&7);break}}return y})),f),l.encode=u=>Q(u,l.codec()),l.decode=u=>X(u,l.codec())})(a=r.DialResponse||(r.DialResponse={}));let c;r.codec=()=>(c==null&&(c=J((l,f,u={})=>{u.lengthDelimited!==!1&&f.fork(),l.type!=null&&(f.uint32(8),r.MessageType.codec().encode(l.type,f)),l.dial!=null&&(f.uint32(18),r.Dial.codec().encode(l.dial,f)),l.dialResponse!=null&&(f.uint32(26),r.DialResponse.codec().encode(l.dialResponse,f)),u.lengthDelimited!==!1&&f.ldelim()},(l,f)=>{let u={},d=f==null?l.len:l.pos+f;for(;l.pos<d;){let y=l.uint32();switch(y>>>3){case 1:u.type=r.MessageType.codec().decode(l);break;case 2:u.dial=r.Dial.codec().decode(l,l.uint32());break;case 3:u.dialResponse=r.DialResponse.codec().decode(l,l.uint32());break;default:l.skipType(y&7);break}}return u})),c),r.encode=l=>Q(l,r.codec()),r.decode=l=>X(l,r.codec())})(ve||(ve={}));var P3=4,qd=class{components;startupDelay;refreshInterval;protocol;timeout;maxInboundStreams;maxOutboundStreams;verifyAddressTimeout;started;log;constructor(e,t){this.components=e,this.log=e.logger.forComponent("libp2p:autonat"),this.started=!1,this.protocol=`/${t.protocolPrefix??mE}/${yE}/${gE}`,this.timeout=t.timeout??3e4,this.maxInboundStreams=t.maxInboundStreams??1,this.maxOutboundStreams=t.maxOutboundStreams??1,this.startupDelay=t.startupDelay??5e3,this.refreshInterval=t.refreshInterval??6e4,this._verifyExternalAddresses=this._verifyExternalAddresses.bind(this)}isStarted(){return this.started}async start(){this.started||(await this.components.registrar.handle(this.protocol,e=>{this.handleIncomingAutonatStream(e).catch(t=>{this.log.error("error handling incoming autonat stream",t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}),this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.startupDelay),this.started=!0)}async stop(){await this.components.registrar.unhandle(this.protocol),clearTimeout(this.verifyAddressTimeout),this.started=!1}async handleIncomingAutonatStream(e){let t=AbortSignal.timeout(this.timeout),n=()=>{e.stream.abort(new h("handleIncomingAutonatStream timeout",ao))};t.addEventListener("abort",n,{once:!0}),Ce(1/0,t);let o=this.components.addressManager.getAddresses().map(s=>s.toOptions().host);try{let s=this;await it(e.stream,i=>cr(i),async function*(i){let a=await mi(i);if(a==null){s.log("no message received"),yield ve.encode({type:ve.MessageType.DIAL_RESPONSE,dialResponse:{status:ve.ResponseStatus.E_BAD_REQUEST,statusText:"No message was sent"}});return}let c;try{c=ve.decode(a)}catch(m){s.log.error("could not decode message",m),yield ve.encode({type:ve.MessageType.DIAL_RESPONSE,dialResponse:{status:ve.ResponseStatus.E_BAD_REQUEST,statusText:"Could not decode message"}});return}let l=c.dial;if(l==null){s.log.error("dial was missing from message"),yield ve.encode({type:ve.MessageType.DIAL_RESPONSE,dialResponse:{status:ve.ResponseStatus.E_BAD_REQUEST,statusText:"No Dial message found in message"}});return}let f,u=l.peer;if(u==null||u.id==null){s.log.error("PeerId missing from message"),yield ve.encode({type:ve.MessageType.DIAL_RESPONSE,dialResponse:{status:ve.ResponseStatus.E_BAD_REQUEST,statusText:"missing peer info"}});return}try{f=at(u.id)}catch(m){s.log.error("invalid PeerId",m),yield ve.encode({type:ve.MessageType.DIAL_RESPONSE,dialResponse:{status:ve.ResponseStatus.E_BAD_REQUEST,statusText:"bad peer id"}});return}if(s.log("incoming request from %p",f),!e.connection.remotePeer.equals(f)){s.log("target peer %p did not equal sending peer %p",f,e.connection.remotePeer),yield ve.encode({type:ve.MessageType.DIAL_RESPONSE,dialResponse:{status:ve.ResponseStatus.E_BAD_REQUEST,statusText:"peer id mismatch"}});return}let d=u.addrs.map(m=>se(m)).filter(m=>{let g=m.toOptions().host===e.connection.remoteAddr.toOptions().host;return s.log.trace("request to dial %a was sent from %a is same host %s",m,e.connection.remoteAddr,g),g}).filter(m=>{let g=m.toOptions().host,b=!($r(g)??!1);return s.log.trace("host %s was public %s",g,b),b}).filter(m=>{let g=m.toOptions().host,b=!o.includes(g);return s.log.trace("host %s was not our host %s",g,b),b}).filter(m=>{let g=!!s.components.transportManager.transportForMultiaddr(m);return s.log.trace("transport for %a is supported %s",m,g),g}).map(m=>(m.getPeerId()==null&&(m=m.encapsulate(`/p2p/${f.toString()}`)),m));if(d.length===0){s.log("no valid multiaddrs for %p in message",f),yield ve.encode({type:ve.MessageType.DIAL_RESPONSE,dialResponse:{status:ve.ResponseStatus.E_DIAL_REFUSED,statusText:"no dialable addresses"}});return}s.log("dial multiaddrs %s for peer %p",d.map(m=>m.toString()).join(", "),f);let y="",p=d[0];for await(let m of d){let g;p=m;try{if(g=await s.components.connectionManager.openConnection(m,{signal:t}),!g.remoteAddr.equals(m))throw s.log.error("tried to dial %a but dialed %a",m,g.remoteAddr),new Error("Unexpected remote address");s.log("Success %p",f),yield ve.encode({type:ve.MessageType.DIAL_RESPONSE,dialResponse:{status:ve.ResponseStatus.OK,addr:g.remoteAddr.decapsulateCode(fe("p2p").code).bytes}});return}catch(b){s.log("could not dial %p",f,b),y=b.message}finally{g!=null&&await g.close()}}yield ve.encode({type:ve.MessageType.DIAL_RESPONSE,dialResponse:{status:ve.ResponseStatus.E_DIAL_ERROR,statusText:y,addr:p.bytes}})},i=>ar(i),e.stream)}catch(s){this.log.error("error handling incoming autonat stream",s)}finally{t.removeEventListener("abort",n)}}_verifyExternalAddresses(){this.verifyExternalAddresses().catch(e=>{this.log.error("error verifying external address",e)})}async verifyExternalAddresses(){if(clearTimeout(this.verifyAddressTimeout),!this.isStarted())return;let e=this.components.addressManager,t=e.getObservedAddrs().filter(s=>{let i=s.toOptions();return!($r(i.host)??!1)});if(t.length===0){this.log("no public addresses found, not requesting verification"),this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.refreshInterval);return}let n=AbortSignal.timeout(this.timeout);Ce(1/0,n);let o=this;try{this.log("verify multiaddrs %s",t.map(u=>u.toString()).join(", "));let s=ve.encode({type:ve.MessageType.DIAL,dial:{peer:{id:this.components.peerId.toBytes(),addrs:t.map(u=>u.bytes)}}}),a=(await Fd()).toBytes(),c={},l=[],f=async u=>{let d=()=>{};try{this.log("asking %p to verify multiaddr",u.id);let y=await o.components.connectionManager.openConnection(u.id,{signal:n}),p=await y.newStream(this.protocol,{signal:n});d=()=>{p.abort(new h("verifyAddress timeout",ao))},n.addEventListener("abort",d,{once:!0});let m=await it([s],b=>ar(b),p,b=>cr(b),async b=>mi(b));if(m==null){this.log("no response received from %p",y.remotePeer);return}let g=ve.decode(m);if(g.type!==ve.MessageType.DIAL_RESPONSE||g.dialResponse==null){this.log("invalid autonat response from %p",y.remotePeer);return}if(g.dialResponse.status===ve.ResponseStatus.OK){let b=y.remoteAddr.toOptions(),E;if(b.family===4)E=b.host.split(".")[0];else if(b.family===6)E=b.host.split(":")[0];else{this.log('remote address "%s" was not IP4 or IP6?',b.host);return}if(l.includes(E)){this.log("already have response from network segment %d - %s",E,b.host);return}l.push(E)}return g.dialResponse}catch(y){this.log.error("error asking remote to verify multiaddr",y)}finally{n.removeEventListener("abort",d)}};for await(let u of Bo(rn(this.components.peerRouting.getClosestPeers(a,{signal:n}),d=>async()=>f(d)),{concurrency:P3}))try{if(u==null)continue;let d=u.addr==null?t[0]:se(u.addr);if(this.log("autonat response for %a is %s",d,u.status),u.status===ve.ResponseStatus.E_BAD_REQUEST||u.status===ve.ResponseStatus.E_DIAL_REFUSED||u.addr==null&&t.length>1)continue;if(!t.some(p=>p.equals(d))){this.log("peer reported %a as %s but it was not in our observed address list",d,u.status);continue}let y=d.toString();if(c[y]==null&&(c[y]={success:0,failure:0}),u.status===ve.ResponseStatus.OK?c[y].success++:u.status===ve.ResponseStatus.E_DIAL_ERROR&&c[y].failure++,c[y].success===P3){this.log("%a is externally dialable",d),e.confirmObservedAddr(d);return}if(c[y].failure===P3){this.log("%a is not externally dialable",d),e.removeObservedAddr(d);return}}catch(d){this.log.error("could not verify external address",d)}}finally{this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.refreshInterval)}}};function bE(r={}){return e=>new qd(e,r)}var pL=z("dns4"),mL=z("dns6"),yL=z("dnsaddr"),Ts=yt(z("dns"),yL,pL,mL),Hd=yt(z("ip4"),z("ip6")),Xa=yt(ce(Hd,z("tcp")),ce(Ts,z("tcp"))),$d=ce(Hd,z("udp")),gL=ce($d,z("utp")),bL=ce($d,z("quic")),wL=ce($d,z("quic-v1")),C3=yt(ce(Xa,z("ws")),ce(Ts,z("ws"))),Qa=yt(ce(C3,z("p2p")),C3),N3=yt(ce(Xa,z("wss")),ce(Ts,z("wss")),ce(Xa,z("tls"),z("ws")),ce(Ts,z("tls"),z("ws"))),Ii=yt(ce(N3,z("p2p")),N3),B3=yt(ce(Xa,z("http")),ce(Hd,z("http")),ce(Ts,z("http"))),L3=yt(ce(Xa,z("https")),ce(Hd,z("https")),ce(Ts,z("https"))),wE=ce($d,z("webrtc-direct"),z("certhash")),vE=yt(ce(wE,z("p2p")),wE),EE=ce(wL,z("webtransport"),z("certhash"),z("certhash")),_E=yt(ce(EE,z("p2p")),EE),SE=yt(ce(Qa,z("p2p-webrtc-star"),z("p2p")),ce(Ii,z("p2p-webrtc-star"),z("p2p")),ce(Qa,z("p2p-webrtc-star")),ce(Ii,z("p2p-webrtc-star"))),Lae=yt(ce(Qa,z("p2p-websocket-star"),z("p2p")),ce(Ii,z("p2p-websocket-star"),z("p2p")),ce(Qa,z("p2p-websocket-star")),ce(Ii,z("p2p-websocket-star"))),RE=yt(ce(B3,z("p2p-webrtc-direct"),z("p2p")),ce(L3,z("p2p-webrtc-direct"),z("p2p")),ce(B3,z("p2p-webrtc-direct")),ce(L3,z("p2p-webrtc-direct"))),ki=yt(C3,N3,B3,L3,SE,RE,Xa,gL,bL,Ts,vE,_E),Oae=yt(ce(ki,z("p2p-stardust"),z("p2p")),ce(ki,z("p2p-stardust"))),ks=yt(ce(ki,z("p2p")),SE,RE,vE,_E,z("p2p")),xE=yt(ce(ks,z("p2p-circuit"),ks),ce(ks,z("p2p-circuit")),ce(z("p2p-circuit"),ks),ce(ki,z("p2p-circuit")),ce(z("p2p-circuit"),ki),z("p2p-circuit")),AE=()=>yt(ce(xE,AE),xE),pn=AE(),IE=yt(ce(pn,ks,pn),ce(ks,pn),ce(pn,ks),pn,ks);var Kae=yt(ce(pn,z("webrtc"),z("p2p")),ce(pn,z("webrtc")),ce(ki,z("webrtc"),z("p2p")),ce(ki,z("webrtc")),z("webrtc"));function kE(r){function e(t){let n;try{n=se(t)}catch{return!1}let o=r(n.protoNames());return o===null?!1:o===!0||o===!1?o:o.length===0}return e}function ce(...r){function e(t){if(t.length<r.length)return null;let n=t;return r.some(o=>(n=typeof o=="function"?o().partialMatch(t):o.partialMatch(t),Array.isArray(n)&&(t=n),n===null)),n}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:kE(e),partialMatch:e}}function yt(...r){function e(n){let o=null;return r.some(s=>{let i=typeof s=="function"?s().partialMatch(n):s.partialMatch(n);return i!=null?(o=i,!0):!1}),o}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:kE(e),partialMatch:e}}function z(r){let e=r;function t(o){let s;try{s=se(o)}catch{return!1}let i=s.protoNames();return i.length===1&&i[0]===e}function n(o){return o.length===0?null:o[0]===e?o.slice(1):null}return{toString:function(){return e},matches:t,partialMatch:n}}var EL="bootstrap",xL=50,vL=12e4,_L=1e3,O3=class extends Fe{static tag="bootstrap";log;timer;list;timeout;components;_init;constructor(e,t={list:[]}){if(t.list==null||t.list.length===0)throw new Error("Bootstrap requires a list of peer addresses");super(),this.components=e,this.log=e.logger.forComponent("libp2p:bootstrap"),this.timeout=t.timeout??_L,this.list=[];for(let n of t.list){if(!IE.matches(n)){this.log.error("Invalid multiaddr");continue}let o=se(n),s=o.getPeerId();if(s==null){this.log.error("Invalid bootstrap multiaddr without peer id");continue}let i={id:Ae(s),multiaddrs:[o]};this.list.push(i)}this._init=t}[zs]=this;[Symbol.toStringTag]="@libp2p/bootstrap";isStarted(){return!!this.timer}start(){this.isStarted()||(this.log("Starting bootstrap node discovery, discovering peers after %s ms",this.timeout),this.timer=setTimeout(()=>{this._discoverBootstrapPeers().catch(e=>{this.log.error(e)})},this.timeout))}async _discoverBootstrapPeers(){if(this.timer!=null)for(let e of this.list){if(await this.components.peerStore.merge(e.id,{tags:{[this._init.tagName??EL]:{value:this._init.tagValue??xL,ttl:this._init.tagTTL??vL}}}),this.timer==null)return;this.safeDispatchEvent("peer",{detail:e})}}stop(){this.timer!=null&&clearTimeout(this.timer),this.timer=void 0}};function DE(r){return e=>new O3(e,r)}var U3={};oe(U3,{Ed25519PrivateKey:()=>Ti,Ed25519PublicKey:()=>Ql,generateKeyPair:()=>kL,generateKeyPairFromSeed:()=>KE,unmarshalEd25519PrivateKey:()=>AL,unmarshalEd25519PublicKey:()=>IL});function Gr(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var Ja=32,Lo=64,Gd=32;function PE(){let r=we.utils.randomPrivateKey(),e=we.getPublicKey(r);return{privateKey:LE(r,e),publicKey:e}}function CE(r){if(r.length!==Gd)throw new TypeError('"seed" must be 32 bytes in length.');if(!(r instanceof Uint8Array))throw new TypeError('"seed" must be a node.js Buffer, or Uint8Array.');let e=r,t=we.getPublicKey(e);return{privateKey:LE(e,t),publicKey:t}}function NE(r,e){let t=r.subarray(0,Gd);return we.sign(e instanceof Uint8Array?e:e.subarray(),t)}function BE(r,e,t){return we.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function LE(r,e){let t=new Uint8Array(Lo);for(let n=0;n<Gd;n++)t[n]=r[n],t[Gd+n]=e[n];return t}var rr={get(r=globalThis){let e=r.crypto;if(e==null||e.subtle==null)throw Object.assign(new Error("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"),{code:"ERR_MISSING_WEB_CRYPTO"});return e}};var K3={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function OE(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,o=r?.digest??"SHA-256",s=r?.saltLength??16,i=r?.iterations??32767,a=rr.get();t*=8;async function c(u,d){let y=a.getRandomValues(new Uint8Array(s)),p=a.getRandomValues(new Uint8Array(n)),m={name:e,iv:p};typeof d=="string"&&(d=x(d));let g;if(d.length===0){g=await a.subtle.importKey("jwk",K3,{name:"AES-GCM"},!0,["encrypt"]);try{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}catch{g=await a.subtle.importKey("jwk",K3,{name:"AES-GCM"},!0,["encrypt"])}}else{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}let b=await a.subtle.encrypt(m,g,u);return le([y,m.iv,new Uint8Array(b)])}async function l(u,d){let y=u.subarray(0,s),p=u.subarray(s,s+n),m=u.subarray(s+n),g={name:e,iv:p};typeof d=="string"&&(d=x(d));let b;if(d.length===0)try{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}catch{b=await a.subtle.importKey("jwk",K3,{name:"AES-GCM"},!0,["decrypt"])}else{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}let E=await a.subtle.decrypt(g,b,m);return new Uint8Array(E)}return{encrypt:c,decrypt:l}}async function Za(r,e){let n=await OE().encrypt(r,e);return Ge.encode(n)}var et;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(et||(et={}));var M3;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(M3||(M3={}));(function(r){r.codec=()=>Re(M3)})(et||(et={}));var Un;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),et.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=et.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(Un||(Un={}));var Fn;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),et.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=et.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(Fn||(Fn={}));var Ql=class{_key;constructor(e){this._key=ec(e,Ja)}verify(e,t){return BE(this._key,t,e)}marshal(){return this._key}get bytes(){return Un.encode({Type:et.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Gr(e)?e.then(({bytes:t})=>t):e.bytes}},Ti=class{_key;_publicKey;constructor(e,t){this._key=ec(e,Lo),this._publicKey=ec(t,Ja)}sign(e){return NE(this._key,e)}get public(){return new Ql(this._publicKey)}marshal(){return this._key}get bytes(){return Fn.encode({Type:et.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return Gr(e)?{bytes:t}=await e:t=e.bytes,t}async id(){let e=Xe.digest(this.public.bytes);return ie.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Za(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function AL(r){if(r.length>Lo){r=ec(r,Lo+Ja);let n=r.subarray(0,Lo),o=r.subarray(Lo,r.length);return new Ti(n,o)}r=ec(r,Lo);let e=r.subarray(0,Lo),t=r.subarray(Ja);return new Ti(e,t)}function IL(r){return r=ec(r,Ja),new Ql(r)}async function kL(){let{privateKey:r,publicKey:e}=PE();return new Ti(r,e)}async function KE(r){let{privateKey:e,publicKey:t}=CE(r);return new Ti(e,t)}function ec(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new h(`Key must be a Uint8Array of length ${e}, got ${r.length}`,"ERR_INVALID_KEY_TYPE");return r}var $3={};oe($3,{MAX_RSA_KEY_SIZE:()=>eu,RsaPrivateKey:()=>tc,RsaPublicKey:()=>Zl,fromJwk:()=>FL,generateKeyPair:()=>VL,unmarshalRsaPrivateKey:()=>q3,unmarshalRsaPublicKey:()=>UL});function Di(r){if(isNaN(r)||r<=0)throw new h("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return dt(r)}var Ds={};oe(Ds,{exportToPem:()=>BL,importFromPem:()=>LL,jwkToPkcs1:()=>DL,jwkToPkix:()=>CL,pkcs1ToJwk:()=>TL,pkixToJwk:()=>PL});function TL(r){let{result:e}=Ee(r),t=e.valueBlock.value;return{n:v(Vn(t[1].toBigInt()),"base64url"),e:v(Vn(t[2].toBigInt()),"base64url"),d:v(Vn(t[3].toBigInt()),"base64url"),p:v(Vn(t[4].toBigInt()),"base64url"),q:v(Vn(t[5].toBigInt()),"base64url"),dp:v(Vn(t[6].toBigInt()),"base64url"),dq:v(Vn(t[7].toBigInt()),"base64url"),qi:v(Vn(t[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function DL(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 h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new B({value:0}),B.fromBigInt(qn(x(r.n,"base64url"))),B.fromBigInt(qn(x(r.e,"base64url"))),B.fromBigInt(qn(x(r.d,"base64url"))),B.fromBigInt(qn(x(r.p,"base64url"))),B.fromBigInt(qn(x(r.q,"base64url"))),B.fromBigInt(qn(x(r.dp,"base64url"))),B.fromBigInt(qn(x(r.dq,"base64url"))),B.fromBigInt(qn(x(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function PL(r){let{result:e}=Ee(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:v(Vn(t[0].toBigInt()),"base64url"),e:v(Vn(t[1].toBigInt()),"base64url")}}function CL(r){if(r.n==null||r.e==null)throw new h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new kt({valueHex:new M({value:[B.fromBigInt(qn(x(r.n,"base64url"))),B.fromBigInt(qn(x(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function Vn(r){let e=r.toString(16);e.length%2>0&&(e=`0${e}`);let t=e.length/2,n=new Uint8Array(t),o=0,s=0;for(;o<t;)n[o]=parseInt(e.slice(s,s+2),16),o+=1,s+=2;return n}function qn(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}var NL=16,F3=32,V3=1e4;async function BL(r,e){let t=rr.get(),o=new M({value:[new B({value:0}),new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new Se({valueHex:r.marshal()})]}).toBER(),s=new Uint8Array(o,0,o.byteLength),i=Di(NL),a=await pt(Ye,e,i,{c:V3,dkLen:F3}),c=Di(16),l=await t.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),f=await t.subtle.encrypt({name:"AES-CBC",iv:c},l,s),u=new M({value:[new Se({valueHex:i}),new B({value:V3}),new B({value:F3}),new M({value:[new ae({value:"1.2.840.113549.2.11"}),new Ne]})]}),d=new M({value:[new ae({value:"1.2.840.113549.1.5.13"}),new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.5.12"}),u]}),new M({value:[new ae({value:"2.16.840.1.101.3.4.1.42"}),new Se({valueHex:c})]})]})]}),p=new M({value:[d,new Se({valueHex:f})]}).toBER(),m=new Uint8Array(p,0,p.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...v(m,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
|
|
25
|
-
`)}async function LL(r,e){let t=rr.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o),{iv:i,salt:a,iterations:c,keySize:l,cipherText:f}=OL(s),u=await pt(Ye,e,a,{c,dkLen:l}),d=await t.subtle.importKey("raw",u,"AES-CBC",!1,["decrypt"]),y=Jl(await t.subtle.decrypt({name:"AES-CBC",iv:i},d,f)),{result:p}=Ee(y);n=ME(p)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o);n=ME(s)}else throw new h("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return q3(n)}function OL(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new h("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new h("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let s=n.valueBlock.value[1],i=Jl(s.valueBlock.value[0].getValue()),a=V3,c=F3;if(s.valueBlock.value.length===3)a=Number(s.valueBlock.value[1].toBigInt()),c=Number(s.valueBlock.value[2].toBigInt());else if(s.valueBlock.value.length===2)throw new h("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let l=e.valueBlock.value[1].valueBlock.value[1],f=l.valueBlock.value[0].toString();if(f!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(f!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new h("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let u=Jl(l.valueBlock.value[1].getValue());return{cipherText:Jl(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:u}}function ME(r){return Jl(r.valueBlock.value[2].getValue())}function Jl(r){return new Uint8Array(r,0,r.byteLength)}async function UE(r){let e=await rr.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await qE(e);return{privateKey:t[0],publicKey:t[1]}}async function H3(r){let t=[await rr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await KL(r)],n=await qE({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function FE(r,e){let t=await rr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await rr.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function VE(r,e,t){let n=await rr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return rr.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function qE(r){if(r.privateKey==null||r.publicKey==null)throw new h("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([rr.get().subtle.exportKey("jwk",r.privateKey),rr.get().subtle.exportKey("jwk",r.publicKey)])}async function KL(r){return rr.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function Wd(r){if(r.kty!=="RSA")throw new h("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new h("invalid key modulus","ERR_INVALID_KEY_MODULUS");return x(r.n,"base64url").length*8}var eu=8192,Zl=class{_key;constructor(e){this._key=e}verify(e,t){return VE(this._key,t,e)}marshal(){return Ds.jwkToPkix(this._key)}get bytes(){return Un.encode({Type:et.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Gr(e)?e.then(({bytes:t})=>t):e.bytes}},tc=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return Di(16)}sign(e){return FE(this._key,e)}get public(){if(this._publicKey==null)throw new h("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new Zl(this._publicKey)}marshal(){return Ds.jwkToPkcs1(this._key)}get bytes(){return Fn.encode({Type:et.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Gr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return Ds.exportToPem(this,e);if(t==="libp2p-key")return Za(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function q3(r){let e=Ds.pkcs1ToJwk(r);if(Wd(e)>eu)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await H3(e);return new tc(t.privateKey,t.publicKey)}function UL(r){let e=Ds.pkixToJwk(r);if(Wd(e)>eu)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new Zl(e)}async function FL(r){if(Wd(r)>eu)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await H3(r);return new tc(e.privateKey,e.publicKey)}async function VL(r){if(r>eu)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await UE(r);return new tc(e.privateKey,e.publicKey)}var Y3={};oe(Y3,{Secp256k1PrivateKey:()=>ru,Secp256k1PublicKey:()=>tu,generateKeyPair:()=>GL,unmarshalSecp256k1PrivateKey:()=>HL,unmarshalSecp256k1PublicKey:()=>$L});function HE(){return W.utils.randomPrivateKey()}function $E(r,e){let t=K.digest(e instanceof Uint8Array?e:e.subarray());if(Gr(t))return t.then(({digest:n})=>W.sign(n,r).toDERRawBytes()).catch(n=>{throw new h(String(n),"ERR_INVALID_INPUT")});try{return W.sign(t.digest,r).toDERRawBytes()}catch(n){throw new h(String(n),"ERR_INVALID_INPUT")}}function GE(r,e,t){let n=K.digest(t instanceof Uint8Array?t:t.subarray());if(Gr(n))return n.then(({digest:o})=>W.verify(e,o,r)).catch(o=>{throw new h(String(o),"ERR_INVALID_INPUT")});try{return W.verify(e,n.digest,r)}catch(o){throw new h(String(o),"ERR_INVALID_INPUT")}}function YE(r){return W.ProjectivePoint.fromHex(r).toRawBytes(!0)}function WE(r){try{W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}function G3(r){try{W.ProjectivePoint.fromHex(r)}catch(e){throw new h(String(e),"ERR_INVALID_PUBLIC_KEY")}}function zE(r){try{return W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}var tu=class{_key;constructor(e){G3(e),this._key=e}verify(e,t){return GE(this._key,t,e)}marshal(){return YE(this._key)}get bytes(){return Un.encode({Type:et.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return Gr(e)?{bytes:t}=await e:t=e.bytes,t}},ru=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??zE(e),WE(this._key),G3(this._publicKey)}sign(e){return $E(this._key,e)}get public(){return new tu(this._publicKey)}marshal(){return this._key}get bytes(){return Fn.encode({Type:et.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Gr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Za(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function HL(r){return new ru(r)}function $L(r){return new tu(r)}async function GL(){let r=HE();return new ru(r)}var Pi={rsa:$3,ed25519:U3,secp256k1:Y3};function jE(r){let e=Object.keys(Pi).join(" / ");return new h(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function XE(r){let e=Un.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case et.RSA:return Pi.rsa.unmarshalRsaPublicKey(t);case et.Ed25519:return Pi.ed25519.unmarshalEd25519PublicKey(t);case et.Secp256k1:return Pi.secp256k1.unmarshalSecp256k1PublicKey(t);default:throw jE(e.Type??"unknown")}}async function QE(r){let e=Fn.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case et.RSA:return Pi.rsa.unmarshalRsaPrivateKey(t);case et.Ed25519:return Pi.ed25519.unmarshalEd25519PrivateKey(t);case et.Secp256k1:return Pi.secp256k1.unmarshalSecp256k1PrivateKey(t);default:throw jE(e.Type??"RSA")}}var JE={ERR_SIGNATURE_NOT_VALID:"ERR_SIGNATURE_NOT_VALID"};var nu;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.publicKey!=null&&t.publicKey.byteLength>0&&(n.uint32(10),n.bytes(t.publicKey)),t.payloadType!=null&&t.payloadType.byteLength>0&&(n.uint32(18),n.bytes(t.payloadType)),t.payload!=null&&t.payload.byteLength>0&&(n.uint32(26),n.bytes(t.payload)),t.signature!=null&&t.signature.byteLength>0&&(n.uint32(42),n.bytes(t.signature)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={publicKey:new Uint8Array(0),payloadType:new Uint8Array(0),payload:new Uint8Array(0),signature:new Uint8Array(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.publicKey=t.bytes();break;case 2:o.payloadType=t.bytes();break;case 3:o.payload=t.bytes();break;case 5:o.signature=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(nu||(nu={}));var mn=class r{static createFromProtobuf=async e=>{let t=nu.decode(e),n=await It(t.publicKey);return new r({peerId:n,payloadType:t.payloadType,payload:t.payload,signature:t.signature})};static seal=async(e,t)=>{if(t.privateKey==null)throw new Error("Missing private key");let n=e.domain,o=e.codec,s=e.marshal(),i=ZE(n,o,s),c=await(await QE(t.privateKey)).sign(i.subarray());return new r({peerId:t,payloadType:o,payload:s,signature:c})};static openAndCertify=async(e,t)=>{let n=await r.createFromProtobuf(e);if(!await n.validate(t))throw new h("envelope signature is not valid for the given domain",JE.ERR_SIGNATURE_NOT_VALID);return n};peerId;payloadType;payload;signature;marshaled;constructor(e){let{peerId:t,payloadType:n,payload:o,signature:s}=e;this.peerId=t,this.payloadType=n,this.payload=o,this.signature=s}marshal(){if(this.peerId.publicKey==null)throw new Error("Missing public key");return this.marshaled==null&&(this.marshaled=nu.encode({publicKey:this.peerId.publicKey,payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(e){return O(this.marshal(),e.marshal())}async validate(e){let t=ZE(e,this.payloadType,this.payload);if(this.peerId.publicKey==null)throw new Error("Missing public key");return XE(this.peerId.publicKey).verify(t.subarray(),this.signature)}},ZE=(r,e,t)=>{let n=x(r),o=st(n.byteLength),s=st(e.length),i=st(t.length);return new be(o,n,s,e,i,t)};function ex(r,e){let t=(n,o)=>n.toString().localeCompare(o.toString());return r.length!==e.length?!1:(e.sort(t),r.sort(t).every((n,o)=>e[o].equals(n)))}var tx="libp2p-peer-record",rx=Uint8Array.from([3,1]);var ou;(function(r){let e;(function(n){let o;n.codec=()=>(o==null&&(o=J((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)=>{let a={multiaddr:new Uint8Array(0)},c=i==null?s.len:s.pos+i;for(;s.pos<c;){let l=s.uint32();switch(l>>>3){case 1:a.multiaddr=s.bytes();break;default:s.skipType(l&7);break}}return a})),o),n.encode=s=>Q(s,n.codec()),n.decode=s=>X(s,n.codec())})(e=r.AddressInfo||(r.AddressInfo={}));let t;r.codec=()=>(t==null&&(t=J((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)=>{let s={peerId:new Uint8Array(0),seq:0n,addresses:[]},i=o==null?n.len:n.pos+o;for(;n.pos<i;){let a=n.uint32();switch(a>>>3){case 1:s.peerId=n.bytes();break;case 2:s.seq=n.uint64();break;case 3:s.addresses.push(r.AddressInfo.codec().decode(n,n.uint32()));break;default:n.skipType(a&7);break}}return s})),t),r.encode=n=>Q(n,r.codec()),r.decode=n=>X(n,r.codec())})(ou||(ou={}));var Sr=class r{static createFromProtobuf=e=>{let t=ou.decode(e),n=at(t.peerId),o=(t.addresses??[]).map(i=>se(i.multiaddr)),s=t.seq;return new r({peerId:n,multiaddrs:o,seqNumber:s})};static DOMAIN=tx;static CODEC=rx;peerId;multiaddrs;seqNumber;domain=r.DOMAIN;codec=r.CODEC;marshaled;constructor(e){let{peerId:t,multiaddrs:n,seqNumber:o}=e;this.peerId=t,this.multiaddrs=n??[],this.seqNumber=o??BigInt(Date.now())}marshal(){return this.marshaled==null&&(this.marshaled=ou.encode({peerId:this.peerId.toBytes(),seq:BigInt(this.seqNumber),addresses:this.multiaddrs.map(e=>({multiaddr:e.bytes}))})),this.marshaled}equals(e){return!(!(e instanceof r)||!this.peerId.equals(e.peerId)||this.seqNumber!==e.seqNumber||!ex(this.multiaddrs,e.multiaddrs))}};function lt(r,e){let t=On(r,e),n={read:async(o,s)=>{let i=await t.read(s);return o.decode(i)},write:async(o,s,i)=>{await t.write(s.encode(o),i)},writeV:async(o,s,i)=>{await t.writeV(o.map(a=>s.encode(a)),i)},pb:o=>({read:async s=>n.read(o,s),write:async(s,i)=>n.write(s,o,i),writeV:async(s,i)=>n.writeV(s,o,i),unwrap:()=>n}),unwrap:()=>t.unwrap()};return n}var nx="/libp2p/relay";var ox="circuit-relay-relay";var hle=BigInt(131072),Ci="/libp2p/circuit/relay/0.2.0/hop",W3="/libp2p/circuit/relay/0.2.0/stop",ple=30*1e3,mle=30*1e3,z3=300;var j3="ERR_RELAYED_DIAL",sx="ERR_HOP_REQUEST_FAILED";var Ps;(function(r){let e;(function(o){o.RESERVE="RESERVE",o.CONNECT="CONNECT",o.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(o){o[o.RESERVE=0]="RESERVE",o[o.CONNECT=1]="CONNECT",o[o.STATUS=2]="STATUS"})(t||(t={})),function(o){o.codec=()=>Re(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=J((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.peer!=null&&(s.uint32(18),rc.codec().encode(o.peer,s)),o.reservation!=null&&(s.uint32(26),zd.codec().encode(o.reservation,s)),o.limit!=null&&(s.uint32(34),nc.codec().encode(o.limit,s)),o.status!=null&&(s.uint32(40),Mt.codec().encode(o.status,s)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.type=r.Type.codec().decode(o);break;case 2:i.peer=rc.codec().decode(o,o.uint32());break;case 3:i.reservation=zd.codec().decode(o,o.uint32());break;case 4:i.limit=nc.codec().decode(o,o.uint32());break;case 5:i.status=Mt.codec().decode(o);break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>Q(o,r.codec()),r.decode=o=>X(o,r.codec())})(Ps||(Ps={}));var Hn;(function(r){let e;(function(o){o.CONNECT="CONNECT",o.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(o){o[o.CONNECT=0]="CONNECT",o[o.STATUS=1]="STATUS"})(t||(t={})),function(o){o.codec=()=>Re(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=J((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.peer!=null&&(s.uint32(18),rc.codec().encode(o.peer,s)),o.limit!=null&&(s.uint32(26),nc.codec().encode(o.limit,s)),o.status!=null&&(s.uint32(32),Mt.codec().encode(o.status,s)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.type=r.Type.codec().decode(o);break;case 2:i.peer=rc.codec().decode(o,o.uint32());break;case 3:i.limit=nc.codec().decode(o,o.uint32());break;case 4:i.status=Mt.codec().decode(o);break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>Q(o,r.codec()),r.decode=o=>X(o,r.codec())})(Hn||(Hn={}));var rc;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.addrs!=null)for(let s of t.addrs)n.uint32(18),n.bytes(s);o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={id:new Uint8Array(0),addrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.id=t.bytes();break;case 2:o.addrs.push(t.bytes());break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(rc||(rc={}));var zd;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.expire!=null&&t.expire!==0n&&(n.uint32(8),n.uint64(t.expire)),t.addrs!=null)for(let s of t.addrs)n.uint32(18),n.bytes(s);t.voucher!=null&&(n.uint32(26),n.bytes(t.voucher)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={expire:0n,addrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.expire=t.uint64();break;case 2:o.addrs.push(t.bytes());break;case 3:o.voucher=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(zd||(zd={}));var nc;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.duration!=null&&(n.uint32(8),n.uint32(t.duration)),t.data!=null&&(n.uint32(16),n.uint64(t.data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.duration=t.uint32();break;case 2:o.data=t.uint64();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(nc||(nc={}));var Mt;(function(r){r.UNUSED="UNUSED",r.OK="OK",r.RESERVATION_REFUSED="RESERVATION_REFUSED",r.RESOURCE_LIMIT_EXCEEDED="RESOURCE_LIMIT_EXCEEDED",r.PERMISSION_DENIED="PERMISSION_DENIED",r.CONNECTION_FAILED="CONNECTION_FAILED",r.NO_RESERVATION="NO_RESERVATION",r.MALFORMED_MESSAGE="MALFORMED_MESSAGE",r.UNEXPECTED_MESSAGE="UNEXPECTED_MESSAGE"})(Mt||(Mt={}));var X3;(function(r){r[r.UNUSED=0]="UNUSED",r[r.OK=100]="OK",r[r.RESERVATION_REFUSED=200]="RESERVATION_REFUSED",r[r.RESOURCE_LIMIT_EXCEEDED=201]="RESOURCE_LIMIT_EXCEEDED",r[r.PERMISSION_DENIED=202]="PERMISSION_DENIED",r[r.CONNECTION_FAILED=203]="CONNECTION_FAILED",r[r.NO_RESERVATION=204]="NO_RESERVATION",r[r.MALFORMED_MESSAGE=400]="MALFORMED_MESSAGE",r[r.UNEXPECTED_MESSAGE=401]="UNEXPECTED_MESSAGE"})(X3||(X3={}));(function(r){r.codec=()=>Re(X3)})(Mt||(Mt={}));var ix;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.relay!=null&&t.relay.byteLength>0&&(n.uint32(10),n.bytes(t.relay)),t.peer!=null&&t.peer.byteLength>0&&(n.uint32(18),n.bytes(t.peer)),t.expiration!=null&&t.expiration!==0n&&(n.uint32(24),n.uint64(t.expiration)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={relay:new Uint8Array(0),peer:new Uint8Array(0),expiration:0n},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.relay=t.bytes();break;case 2:o.peer=t.bytes();break;case 3:o.expiration=t.uint64();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(ix||(ix={}));async function ax(r){let e=new TextEncoder().encode(r),t=await K.digest(e);return de.createV0(t)}function Q3(r){let e=r*BigInt(1e3),t=new Date().getTime();return Number(e-BigInt(t))}var jd=class extends Fe{peerId;peerStore;contentRouting;registrar;started;topologyId;log;constructor(e){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:discover-relays"),this.started=!1,this.peerId=e.peerId,this.peerStore=e.peerStore,this.contentRouting=e.contentRouting,this.registrar=e.registrar}isStarted(){return this.started}async start(){this.topologyId=await this.registrar.register(Ci,{notifyOnTransient:!0,onConnect:e=>{this.safeDispatchEvent("relay:discover",{detail:e})}}),this.started=!0}afterStart(){this.discover().catch(e=>{this.log.error("error discovering relays",e)})}stop(){this.topologyId!=null&&this.registrar.unregister(this.topologyId),this.started=!1}async discover(){this.log("searching peer store for relays");let e=await this.peerStore.all({filters:[t=>t.protocols.includes(Ci)],orders:[()=>Math.random()<.5?1:-1]});for(let t of e)this.log("found relay peer %p in content peer store",t.id),this.safeDispatchEvent("relay:discover",{detail:t.id});this.log("found %d relay peers in peer store",e.length);try{this.log("searching content routing for relays");let t=await ax(nx),n=0;for await(let o of this.contentRouting.findProviders(t))if(o.multiaddrs.length>0&&!o.id.equals(this.peerId)){let s=o.id;n++,await this.peerStore.merge(s,{multiaddrs:o.multiaddrs}),this.log("found relay peer %p in content routing",s),this.safeDispatchEvent("relay:discover",{detail:s})}this.log("found %d relay peers in content routing",n)}catch(t){this.log.error("failed when finding relays on the network",t)}}};var Cs=class extends To{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var WL=60*1e3*10,zL=60*1e3*5,jL=30*1e3,Xd=class extends Fe{peerId;connectionManager;transportManager;peerStore;events;reserveQueue;reservations;maxDiscoveredRelays;maxReservationQueueLength;reservationCompletionTimeout;started;log;constructor(e,t){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:reservation-store"),this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.peerStore=e.peerStore,this.events=e.events,this.reservations=new Lt,this.maxDiscoveredRelays=t?.discoverRelays??0,this.maxReservationQueueLength=t?.maxReservationQueueLength??100,this.reservationCompletionTimeout=t?.reservationCompletionTimeout??1e4,this.started=!1,this.reserveQueue=new Cs({concurrency:t?.reservationConcurrency??1,metricName:"libp2p_relay_reservation_queue",metrics:e.metrics}),this.events.addEventListener("peer:disconnect",n=>{this.#t(n.detail)})}isStarted(){return this.started}start(){this.started=!0}stop(){this.reserveQueue.clear(),this.reservations.forEach(({timeout:e})=>{clearTimeout(e)}),this.reservations.clear(),this.started=!1}async addRelay(e,t){if(this.peerId.equals(e)){this.log("not trying to use self as relay");return}if(this.reserveQueue.size>this.maxReservationQueueLength){this.log("not adding relay as the queue is full");return}if(this.reserveQueue.has(e)){this.log("relay peer is already in the reservation queue");return}this.log("add relay %p",e),await this.reserveQueue.add(async()=>{try{let n=this.reservations.get(e);if(n!=null){if(Q3(n.reservation.expire)>WL){this.log("already have reservation on relay peer %p and it expires in more than 10 minutes",e);return}clearTimeout(n.timeout),this.reservations.delete(e)}if(t==="discovered"&&[...this.reservations.values()].reduce((f,u)=>(u.type==="discovered"&&f++,f),0)>=this.maxDiscoveredRelays){this.log("already have enough discovered relays");return}let o=AbortSignal.timeout(this.reservationCompletionTimeout),s=await this.connectionManager.openConnection(e,{signal:o});if(s.remoteAddr.protoNames().includes("p2p-circuit")){this.log("not creating reservation over relayed connection");return}let i=await this.#e(s,{signal:o});this.log("created reservation on relay peer %p",e);let a=Q3(i.expire),c=Math.min(Math.max(a-zL,jL),Math.pow(2,31)-1),l=setTimeout(()=>{this.addRelay(e,t).catch(f=>{this.log.error("could not refresh reservation to relay %p",e,f)})},c);this.reservations.set(e,{timeout:l,reservation:i,type:t}),await this.peerStore.merge(e,{tags:{[ox]:{value:1,ttl:a}}}),await this.transportManager.listen([se(`/p2p/${e.toString()}/p2p-circuit`)])}catch(n){this.log.error("could not reserve slot on %p",e,n);let o=this.reservations.get(e);o!=null&&clearTimeout(o.timeout),this.reservations.delete(e)}},{peerId:e})}hasReservation(e){return this.reservations.has(e)}getReservation(e){return this.reservations.get(e)?.reservation}async#e(e,t){t.signal?.throwIfAborted(),this.log("requesting reservation from %p",e.remotePeer);let n=await e.newStream(Ci,t),s=lt(n).pb(Ps);await s.write({type:Ps.Type.RESERVE},t);let i;try{i=await s.read(t)}catch(c){throw this.log.error("error parsing reserve message response from %p because",e.remotePeer,c),n.abort(c),c}finally{await n.close()}if(i.status===Mt.OK&&i.reservation!=null){let c=!1,l=e.remoteAddr.bytes;for(let f of i.reservation.addrs)if(O(l,f)){c=!0;break}return c||i.reservation.addrs.push(l),i.reservation}let a=`reservation failed with status ${i.status??"undefined"}`;throw this.log.error(a),new Error(a)}#t(e){let t=this.reservations.get(e);t!=null&&(this.log("connection to relay %p closed, removing reservation from local store",e),clearTimeout(t.timeout),this.reservations.delete(e),this.safeDispatchEvent("relay:removed",{detail:e}),this.reservations.size<this.maxDiscoveredRelays&&(this.log("not enough relays %d/%d",this.reservations.size,this.maxDiscoveredRelays),this.safeDispatchEvent("relay:not-enough-relays",{})))}};function J3(r){let{stream:e,remoteAddr:t,logger:n}=r,o=n.forComponent("libp2p:stream:converter"),s=!1,i=!1,a=e.close.bind(e);e.close=async d=>{await a(d),u(!0)};let c=e.abort.bind(e);e.abort=d=>{c(d),u(!0)};let l=e.sink.bind(e);e.sink=async d=>{try{await l(d)}catch(y){y.type!=="aborted"&&o.error("%s error in sink",t,y)}finally{i=!0,u()}};let f={log:o,sink:e.sink,source:async function*(){try{for await(let d of e.source)d instanceof Uint8Array?yield d:yield*d}finally{s=!0,u()}}(),remoteAddr:t,timeline:{open:Date.now(),close:void 0},close:e.close,abort:e.abort};function u(d){d===!0&&(s=!0,i=!0),s&&i&&f.timeline.close==null&&(f.timeline.close=Date.now())}return f}var Z3=class extends Fe{connectionManager;relayStore;listeningAddrs;log;constructor(e){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:listener"),this.connectionManager=e.connectionManager,this.relayStore=e.relayStore,this.listeningAddrs=new Lt,this.relayStore.addEventListener("relay:removed",this._onRemoveRelayPeer)}_onRemoveRelayPeer=e=>{this.#e(e.detail)};async listen(e){this.log("listen on %a",e);let t=e.decapsulate("/p2p-circuit"),n=await this.connectionManager.openConnection(t);if(!this.relayStore.hasReservation(n.remotePeer)){this.log("making reservation on peer %p",n.remotePeer),await this.relayStore.addRelay(n.remotePeer,"configured");return}let o=this.relayStore.getReservation(n.remotePeer);if(o==null)throw new h("Did not have reservation after making reservation","ERR_NO_RESERVATION");if(this.listeningAddrs.has(n.remotePeer)){this.log("already listening on relay %p",n.remotePeer);return}this.listeningAddrs.set(n.remotePeer,o.addrs.map(s=>se(s).encapsulate("/p2p-circuit"))),this.safeDispatchEvent("listening",{})}getAddrs(){return[...this.listeningAddrs.values()].flat()}async close(){}#e(e){let t=this.listeningAddrs.has(e);this.log("relay peer removed %p - had reservation",e,t),this.listeningAddrs.delete(e),t&&(this.log.trace("removing relay event listener for peer %p",e),this.relayStore.removeEventListener("relay:removed",this._onRemoveRelayPeer),this.safeDispatchEvent("close",{}))}};function cx(r){return new Z3(r)}var QL=r=>{if(r.peer==null)return!1;try{r.peer.addrs.forEach(se)}catch{return!1}return!0},ey={maxInboundStopStreams:z3,maxOutboundStopStreams:z3,stopTimeout:3e4},Qd=class{discovery;registrar;peerStore;connectionManager;transportManager;peerId;upgrader;addressManager;connectionGater;reservationStore;logger;maxInboundStopStreams;maxOutboundStopStreams;stopTimeout;started;log;constructor(e,t){this.log=e.logger.forComponent("libp2p:circuit-relay:transport"),this.registrar=e.registrar,this.peerStore=e.peerStore,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.logger=e.logger,this.peerId=e.peerId,this.upgrader=e.upgrader,this.addressManager=e.addressManager,this.connectionGater=e.connectionGater,this.maxInboundStopStreams=t.maxInboundStopStreams??ey.maxInboundStopStreams,this.maxOutboundStopStreams=t.maxOutboundStopStreams??ey.maxOutboundStopStreams,this.stopTimeout=t.stopTimeout??ey.stopTimeout,t.discoverRelays!=null&&t.discoverRelays>0&&(this.discovery=new jd(e),this.discovery.addEventListener("relay:discover",n=>{this.reservationStore.addRelay(n.detail,"discovered").catch(o=>{this.log.error("could not add discovered relay %p",n.detail,o)})})),this.reservationStore=new Xd(e,t),this.reservationStore.addEventListener("relay:not-enough-relays",()=>{this.discovery?.discover().catch(n=>{this.log.error("could not discover relays",n)})}),this.started=!1}isStarted(){return this.started}async start(){this.reservationStore.start(),await this.registrar.handle(W3,e=>{this.onStop(e).catch(t=>{this.log.error("error while handling STOP protocol",t),e.stream.abort(t)})},{maxInboundStreams:this.maxInboundStopStreams,maxOutboundStreams:this.maxOutboundStopStreams,runOnTransientConnection:!0}),await this.discovery?.start(),this.started=!0}afterStart(){this.discovery?.afterStart()}async stop(){this.discovery?.stop(),this.reservationStore.stop(),await this.registrar.unhandle(W3),this.started=!1}[Sn]=!0;[Symbol.toStringTag]="libp2p/circuit-relay-v2";async dial(e,t={}){if(e.protoCodes().filter(p=>p===290).length!==1){let p="Invalid circuit relay address";throw this.log.error(p,e),new h(p,j3)}let n=e.toString().split("/p2p-circuit"),o=se(n[0]),s=se(n[n.length-1]),i=o.getPeerId(),a=s.getPeerId();if(i==null||a==null){let p=`Circuit relay dial to ${e.toString()} failed as address did not have peer ids`;throw this.log.error(p),new h(p,j3)}let c=Ae(i),l=Ae(a),f=!1,d=this.connectionManager.getConnections(c)[0];d==null&&(await this.peerStore.merge(c,{multiaddrs:[o]}),d=await this.connectionManager.openConnection(c,t),f=!0);let y;try{return y=await d.newStream(Ci),await this.connectV2({stream:y,connection:d,destinationPeer:l,destinationAddr:s,relayAddr:o,ma:e,disconnectOnFailure:f})}catch(p){throw this.log.error("circuit relay dial to destination %p via relay %p failed",l,c,p),y?.abort(p),f&&await d.close(),p}}async connectV2({stream:e,connection:t,destinationPeer:n,destinationAddr:o,relayAddr:s,ma:i,disconnectOnFailure:a}){try{let c=lt(e),l=c.pb(Ps);await l.write({type:Ps.Type.CONNECT,peer:{id:n.toBytes(),addrs:[se(o).bytes]}});let f=await l.read();if(f.status!==Mt.OK)throw new h(`failed to connect via relay with status ${f?.status?.toString()??"undefined"}`,sx);let u=J3({stream:c.unwrap(),remoteAddr:i,localAddr:s.encapsulate(`/p2p-circuit/p2p/${this.peerId.toString()}`),logger:this.logger});return this.log("new outbound transient connection %a",u.remoteAddr),await this.upgrader.upgradeOutbound(u,{transient:!0})}catch(c){throw this.log.error(`Circuit relay dial to destination ${n.toString()} via relay ${t.remotePeer.toString()} failed`,c),a&&await t.close(),c}}createListener(e){return cx({connectionManager:this.connectionManager,relayStore:this.reservationStore,logger:this.logger})}filter(e){return e=Array.isArray(e)?e:[e],e.filter(t=>pn.matches(t))}async onStop({connection:e,stream:t}){if(!this.reservationStore.hasReservation(e.remotePeer))try{this.log("dialed via relay we did not have a reservation on, start listening on that relay address"),await this.transportManager.listen([e.remoteAddr.encapsulate("/p2p-circuit")])}catch(f){this.log.error("failed to listen on a relay peer we were dialed via but did not have a reservation on",f)}let n=AbortSignal.timeout(this.stopTimeout),o=lt(t).pb(Hn),s=await o.read({signal:n});if(this.log("new circuit relay v2 stop stream from %p with type %s",e.remotePeer,s.type),s?.type===void 0){this.log.error("type was missing from circuit v2 stop protocol request from %s",e.remotePeer),await o.write({type:Hn.Type.STATUS,status:Mt.MALFORMED_MESSAGE},{signal:n}),await t.close();return}if(s.type!==Hn.Type.CONNECT){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await o.write({type:Hn.Type.STATUS,status:Mt.UNEXPECTED_MESSAGE},{signal:n}),await t.close();return}if(!QL(s)){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await o.write({type:Hn.Type.STATUS,status:Mt.MALFORMED_MESSAGE},{signal:n}),await t.close();return}let i=at(s.peer.id);if(await this.connectionGater.denyInboundRelayedConnection?.(e.remotePeer,i)===!0){this.log.error("connection gater denied inbound relayed connection from %p",e.remotePeer),await o.write({type:Hn.Type.STATUS,status:Mt.PERMISSION_DENIED},{signal:n}),await t.close();return}this.log.trace("sending success response to %p",e.remotePeer),await o.write({type:Hn.Type.STATUS,status:Mt.OK},{signal:n});let a=e.remoteAddr.encapsulate(`/p2p-circuit/p2p/${i.toString()}`),c=this.addressManager.getAddresses()[0],l=J3({stream:o.unwrap().unwrap(),remoteAddr:a,localAddr:c,logger:this.logger});this.log("new inbound transient connection %a",l.remoteAddr),await this.upgrader.upgradeInbound(l,{transient:!0}),this.log("%s connection %a upgraded","inbound",l.remoteAddr)}};function ty(r={}){return e=>new Qd(e,r)}var lx=()=>{let r=new Error("Delay aborted");return r.name="AbortError",r},JL=new WeakMap;function ZL({clearTimeout:r,setTimeout:e}={}){return(t,{value:n,signal:o}={})=>{if(o?.aborted)return Promise.reject(lx());let s,i,a,c=r??clearTimeout,l=()=>{c(s),a(lx())},f=()=>{o&&o.removeEventListener("abort",l)},u=new Promise((d,y)=>{i=()=>{f(),d(n)},a=y,s=(e??setTimeout)(i,t)});return o&&o.addEventListener("abort",l,{once:!0}),JL.set(u,()=>{c(s),s=null,i()}),u}}var eO=ZL(),Jd=eO;var yn;(function(r){let e;(function(o){o.UNUSED="UNUSED",o.CONNECT="CONNECT",o.SYNC="SYNC"})(e=r.Type||(r.Type={}));let t;(function(o){o[o.UNUSED=0]="UNUSED",o[o.CONNECT=100]="CONNECT",o[o.SYNC=300]="SYNC"})(t||(t={})),function(o){o.codec=()=>Re(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=J((o,s,i={})=>{if(i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.observedAddresses!=null)for(let a of o.observedAddresses)s.uint32(18),s.bytes(a);i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={observedAddresses:[]},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.type=r.Type.codec().decode(o);break;case 2:i.observedAddresses.push(o.bytes());break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>Q(o,r.codec()),r.decode=o=>X(o,r.codec())})(yn||(yn={}));var tO=r=>r.toString().split("/").slice(1),su=r=>({match:e=>e.length<1?!1:r(e[0])?e.slice(1):!1,pattern:"fn"}),gt=r=>({match:e=>su(t=>t===r).match(e),pattern:r}),th=()=>({match:r=>su(e=>typeof e=="string").match(r),pattern:"{string}"}),ux=()=>({match:r=>su(e=>!isNaN(parseInt(e))).match(r),pattern:"{number}"}),Yr=()=>({match:r=>{if(r.length<2||r[0]!=="p2p"&&r[0]!=="ipfs")return!1;if(r[1].startsWith("Q")||r[1].startsWith("1"))try{ie.decode(`z${r[1]}`)}catch{return!1}else return!1;return r.slice(2)},pattern:"/p2p/{peerid}"}),Zd=()=>({match:r=>{if(r.length<2||r[0]!=="certhash")return!1;try{y2.decode(r[1])}catch{return!1}return r.slice(2)},pattern:"/certhash/{certhash}"}),$n=r=>({match:e=>{let t=r.match(e);return t===!1?e:t},pattern:`optional(${r.pattern})`}),Gn=(...r)=>({match:e=>{let t;for(let n of r){let o=n.match(e);o!==!1&&(t==null||o.length<t.length)&&(t=o)}return t??!1},pattern:`or(${r.map(e=>e.pattern).join(", ")})`}),bt=(...r)=>({match:e=>{for(let t of r){let n=t.match(e);if(n===!1)return!1;e=n}return e},pattern:`and(${r.map(e=>e.pattern).join(", ")})`});function St(...r){function e(o){let s=tO(o);for(let i of r){let a=i.match(s);if(a===!1)return!1;s=a}return s}function t(o){return e(o)!==!1}function n(o){let s=e(o);return s===!1?!1:s.length===0}return{matches:t,exactMatch:n}}var ny=bt(gt("dns4"),th()),oy=bt(gt("dns6"),th()),sy=bt(gt("dnsaddr"),th()),fx=bt(gt("dns"),th()),hue=St(ny),pue=St(oy),mue=St(sy),dx=St(Gn(fx,sy,ny,oy)),hx=bt(gt("ip4"),su(da)),px=bt(gt("ip6"),su(ha)),mx=Gn(hx,px),iu=Gn(mx,fx,ny,oy,sy),yx=St(iu),yue=St(hx),gue=St(px),gx=St(mx),rh=bt(iu,gt("tcp"),ux()),au=bt(iu,gt("udp"),ux()),rO=Gn(rh,au),bue=St(rh),wue=St(au),iy=bt(au,gt("quic")),nh=bt(au,gt("quic-v1")),nO=Gn(iy,nh),Eue=St(iy),xue=St(nh),ry=Gn(iu,rh,au,iy,nh),bx=Gn(bt(ry,gt("ws"),$n(Yr()))),vue=St(bx),wx=Gn(bt(ry,gt("wss"),$n(Yr())),bt(ry,gt("tls"),gt("ws"),$n(Yr()))),_ue=St(wx),Ex=bt(rO,gt("webrtc-direct"),Zd(),$n(Zd()),$n(Yr())),xx=St(Ex),vx=bt(nh,gt("webtransport"),Zd(),Zd(),$n(Yr())),oh=St(vx),eh=Gn(bx,wx,bt(rh,$n(Yr())),bt(nO,$n(Yr())),bt(iu,$n(Yr())),Ex,vx,Yr()),Sue=St(eh),oO=bt(eh,gt("p2p-circuit"),Yr()),cu=St(oO),sO=Gn(bt(eh,gt("p2p-circuit"),gt("webrtc"),Yr()),bt(eh,gt("webrtc"),$n(Yr())),gt("webrtc")),_x=St(sO);function ay(r,e){return cu.matches(r)||e.transportForMultiaddr(r)==null?!1:dx.matches(r)?!0:gx.matches(r)?$r(r.toOptions().host)===!1:!1}var Sx=1024*4,Rx=100,sh={timeout:5e3,retries:3,maxInboundStreams:1,maxOutboundStreams:1},ih=class{started;timeout;retries;maxInboundStreams;maxOutboundStreams;peerStore;registrar;connectionManager;addressManager;transportManager;topologyId;log;constructor(e,t){this.log=e.logger.forComponent("libp2p:dcutr"),this.started=!1,this.peerStore=e.peerStore,this.registrar=e.registrar,this.addressManager=e.addressManager,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.timeout=t.timeout??sh.timeout,this.retries=t.retries??sh.retries,this.maxInboundStreams=t.maxInboundStreams??sh.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??sh.maxOutboundStreams}isStarted(){return this.started}async start(){this.started||(this.topologyId=await this.registrar.register(lu,{notifyOnTransient:!0,onConnect:(e,t)=>{t.transient&&t.direction==="inbound"&&this.upgradeInbound(t).catch(n=>{this.log.error("error during outgoing DCUtR attempt",n)})}}),await this.registrar.handle(lu,e=>{this.handleIncomingUpgrade(e.stream,e.connection).catch(t=>{this.log.error("error during incoming DCUtR attempt",t),e.stream.abort(t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:!0}),this.started=!0)}async stop(){await this.registrar.unhandle(lu),this.topologyId!=null&&this.registrar.unregister(this.topologyId),this.started=!1}async upgradeInbound(e){if(await this.attemptUnilateralConnectionUpgrade(e))return;let t;for(let n=0;n<this.retries;n++){let o={signal:AbortSignal.timeout(this.timeout)};try{t=await e.newStream([lu],{signal:o.signal,runOnTransientConnection:!0});let s=lt(t,{maxDataLength:Sx}).pb(yn);this.log("B sending connect to %p",e.remotePeer);let i=Date.now();await s.write({type:yn.Type.CONNECT,observedAddresses:this.addressManager.getAddresses().map(u=>u.bytes)},o),this.log("B receiving connect from %p",e.remotePeer);let a=await s.read(o);if(a.type!==yn.Type.CONNECT)throw this.log("A sent wrong message type"),new h("DCUtR message type was incorrect",js);let c=this.getDialableMultiaddrs(a.observedAddresses);if(c.length===0)throw this.log("A did not have any dialable multiaddrs"),new h("DCUtR connect message had no multiaddrs",js);let l=Date.now()-i;this.log("A sending sync, rtt %dms",l),await s.write({type:yn.Type.SYNC,observedAddresses:[]},o),this.log("A waiting for half RTT"),await Jd(l/2),this.log("B dialing",c);let f=await this.connectionManager.openConnection(c,{signal:o.signal,priority:Rx});this.log("DCUtR to %p succeeded to address %a, closing relayed connection",e.remotePeer,f.remoteAddr),await e.close(o);break}catch(s){if(this.log.error("error while attempting DCUtR on attempt %d of %d",n+1,this.retries,s),t?.abort(s),n===this.retries)throw s}finally{t!=null&&await t.close(o)}}}async attemptUnilateralConnectionUpgrade(e){let n=(await this.peerStore.get(e.remotePeer)).addresses.map(o=>{let s=o.multiaddr;return s.getPeerId()==null?s.encapsulate(`/p2p/${e.remotePeer}`):s}).filter(o=>ay(o,this.transportManager));if(n.length>0){let o=AbortSignal.timeout(this.timeout);try{this.log("attempting unilateral connection upgrade to %a",n);let s=await this.connectionManager.openConnection(n,{signal:o,force:!0});if(s.transient)throw new Error("Could not open a new, non-transient, connection");return this.log("unilateral connection upgrade to %p succeeded via %a, closing relayed connection",e.remotePeer,s.remoteAddr),await e.close({signal:o}),!0}catch(s){this.log.error("unilateral connection upgrade to %p on addresses %a failed",e.remotePeer,n,s)}}else this.log("peer %p has no public addresses, not attempting unilateral connection upgrade",e.remotePeer);return!1}async handleIncomingUpgrade(e,t){let n={signal:AbortSignal.timeout(this.timeout)};try{let o=lt(e,{maxDataLength:Sx}).pb(yn);this.log("A receiving connect");let s=await o.read(n);if(s.type!==yn.Type.CONNECT)throw this.log("B sent wrong message type"),new h("DCUtR message type was incorrect",js);if(s.observedAddresses.length===0)throw this.log("B sent no multiaddrs"),new h("DCUtR connect message had no multiaddrs",js);let i=this.getDialableMultiaddrs(s.observedAddresses);if(i.length===0)throw this.log("B had no dialable multiaddrs"),new h("DCUtR connect message had no dialable multiaddrs",js);if(this.log("A sending connect"),await o.write({type:yn.Type.CONNECT,observedAddresses:this.addressManager.getAddresses().map(l=>l.bytes)}),this.log("A receiving sync"),(await o.read(n)).type!==yn.Type.SYNC)throw new h("DCUtR message type was incorrect",js);this.log("A dialing",i);let c=await this.connectionManager.openConnection(i,{signal:n.signal,priority:Rx,force:!0});this.log("DCUtR to %p succeeded via %a, closing relayed connection",t.remotePeer,c.remoteAddr),await t.close(n)}catch(o){this.log.error("incoming DCUtR from %p failed",t.remotePeer,o),e.abort(o)}finally{await e.close(n)}}getDialableMultiaddrs(e){let t=[];for(let n of e)if(!(n==null||n.length===0))try{let o=se(n);if(!ay(o,this.transportManager))continue;t.push(o)}catch{}return t}};var lu="/libp2p/dcutr";function Ax(r={}){return e=>new ih(e,r)}var Ix="0.1.0",kx="id",Tx="id/push",Dx="1.0.0",Px="1.0.0";var Bx=Ue(Nx(),1),cy=typeof window=="object"&&typeof document=="object"&&document.nodeType===9,ah=(0,Bx.default)(),ch=cy&&!ah,Lx=ah&&!cy,Ox=ah&&cy,Kx=typeof globalThis.process<"u"&&typeof globalThis.process.release<"u"&&globalThis.process.release.name==="node"&&!ah,lh=typeof importScripts=="function"&&typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,que=typeof globalThis.process<"u"&&typeof globalThis.process.env<"u"&&globalThis.process.env["NODE"+"_"+"ENV"]==="test",Mx=typeof navigator<"u"&&navigator.product==="ReactNative";var Ni;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.protocolVersion!=null&&(n.uint32(42),n.string(t.protocolVersion)),t.agentVersion!=null&&(n.uint32(50),n.string(t.agentVersion)),t.publicKey!=null&&(n.uint32(10),n.bytes(t.publicKey)),t.listenAddrs!=null)for(let s of t.listenAddrs)n.uint32(18),n.bytes(s);if(t.observedAddr!=null&&(n.uint32(34),n.bytes(t.observedAddr)),t.protocols!=null)for(let s of t.protocols)n.uint32(26),n.string(s);t.signedPeerRecord!=null&&(n.uint32(66),n.bytes(t.signedPeerRecord)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={listenAddrs:[],protocols:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 5:o.protocolVersion=t.string();break;case 6:o.agentVersion=t.string();break;case 1:o.publicKey=t.bytes();break;case 2:o.listenAddrs.push(t.bytes());break;case 4:o.observedAddr=t.bytes();break;case 3:o.protocols.push(t.string());break;case 8:o.signedPeerRecord=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(Ni||(Ni={}));var ly=1024*8,Wr={protocolPrefix:"ipfs",timeout:6e4,maxInboundStreams:1,maxOutboundStreams:1,maxPushIncomingStreams:1,maxPushOutgoingStreams:1,maxObservedAddresses:10,maxIdentifyMessageSize:8192,runOnConnectionOpen:!0,runOnTransientConnection:!0},uh=class{identifyProtocolStr;identifyPushProtocolStr;host;started;timeout;peerId;peerStore;registrar;connectionManager;addressManager;maxInboundStreams;maxOutboundStreams;maxPushIncomingStreams;maxPushOutgoingStreams;maxIdentifyMessageSize;maxObservedAddresses;events;runOnTransientConnection;log;constructor(e,t={}){this.started=!1,this.peerId=e.peerId,this.peerStore=e.peerStore,this.registrar=e.registrar,this.addressManager=e.addressManager,this.connectionManager=e.connectionManager,this.events=e.events,this.log=e.logger.forComponent("libp2p:identify"),this.identifyProtocolStr=`/${t.protocolPrefix??Wr.protocolPrefix}/${kx}/${Dx}`,this.identifyPushProtocolStr=`/${t.protocolPrefix??Wr.protocolPrefix}/${Tx}/${Px}`,this.timeout=t.timeout??Wr.timeout,this.maxInboundStreams=t.maxInboundStreams??Wr.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??Wr.maxOutboundStreams,this.maxPushIncomingStreams=t.maxPushIncomingStreams??Wr.maxPushIncomingStreams,this.maxPushOutgoingStreams=t.maxPushOutgoingStreams??Wr.maxPushOutgoingStreams,this.maxIdentifyMessageSize=t.maxIdentifyMessageSize??Wr.maxIdentifyMessageSize,this.maxObservedAddresses=t.maxObservedAddresses??Wr.maxObservedAddresses,this.runOnTransientConnection=t.runOnTransientConnection??Wr.runOnTransientConnection,this.host={protocolVersion:`${t.protocolPrefix??Wr.protocolPrefix}/${Ix}`,agentVersion:t.agentVersion??`${e.nodeInfo.name}/${e.nodeInfo.version}`},(t.runOnConnectionOpen??Wr.runOnConnectionOpen)&&e.events.addEventListener("connection:open",n=>{let o=n.detail;this.identify(o).catch(s=>{this.log.error("error during identify trigged by connection:open",s)})}),e.events.addEventListener("self:peer:update",n=>{this.push().catch(o=>{this.log.error(o)})}),this.host.agentVersion===`${e.nodeInfo.name}/${e.nodeInfo.version}`&&(Kx||Lx?this.host.agentVersion+=` UserAgent=${globalThis.process.version}`:(ch||lh||Ox||Mx)&&(this.host.agentVersion+=` UserAgent=${globalThis.navigator.userAgent}`))}isStarted(){return this.started}async start(){this.started||(await this.peerStore.merge(this.peerId,{metadata:{AgentVersion:x(this.host.agentVersion),ProtocolVersion:x(this.host.protocolVersion)}}),await this.registrar.handle(this.identifyProtocolStr,e=>{this._handleIdentify(e).catch(t=>{this.log.error(t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:this.runOnTransientConnection}),await this.registrar.handle(this.identifyPushProtocolStr,e=>{this._handlePush(e).catch(t=>{this.log.error(t)})},{maxInboundStreams:this.maxPushIncomingStreams,maxOutboundStreams:this.maxPushOutgoingStreams,runOnTransientConnection:this.runOnTransientConnection}),this.started=!0)}async stop(){await this.registrar.unhandle(this.identifyProtocolStr),await this.registrar.unhandle(this.identifyPushProtocolStr),this.started=!1}async pushToConnections(e){let t=this.addressManager.getAddresses().map(f=>f.decapsulateCode(fe("p2p").code)),n=new Sr({peerId:this.peerId,multiaddrs:t}),o=await mn.seal(n,this.peerId),s=this.registrar.getProtocols(),i=await this.peerStore.get(this.peerId),a=v(i.metadata.get("AgentVersion")??x(this.host.agentVersion)),c=v(i.metadata.get("ProtocolVersion")??x(this.host.protocolVersion)),l=e.map(async f=>{let u,d=AbortSignal.timeout(this.timeout);Ce(1/0,d);try{u=await f.newStream(this.identifyPushProtocolStr,{signal:d,runOnTransientConnection:this.runOnTransientConnection}),await lt(u,{maxDataLength:this.maxIdentifyMessageSize??ly}).pb(Ni).write({listenAddrs:t.map(p=>p.bytes),signedPeerRecord:o.marshal(),protocols:s,agentVersion:a,protocolVersion:c},{signal:d}),await u.close({signal:d})}catch(y){this.log.error("could not push identify update to peer",y),u?.abort(y)}});await Promise.all(l)}async push(){if(!this.isStarted())return;let e=[];await Promise.all(this.connectionManager.getConnections().map(async t=>{try{if(!(await this.peerStore.get(t.remotePeer)).protocols.includes(this.identifyPushProtocolStr))return;e.push(t)}catch(n){if(n.code!==n5)throw n}})),await this.pushToConnections(e)}async _identify(e,t={}){let n;if(t.signal==null){let o=AbortSignal.timeout(this.timeout);Ce(1/0,o),t={...t,signal:o}}try{n=await e.newStream(this.identifyProtocolStr,{...t,runOnTransientConnection:this.runOnTransientConnection});let s=await lt(n,{maxDataLength:this.maxIdentifyMessageSize??ly}).pb(Ni).read(t);return await n.close(t),s}catch(o){throw this.log.error("error while reading identify message",o),n?.abort(o),o}}async identify(e,t={}){let n=await this._identify(e,t),{publicKey:o,protocols:s,observedAddr:i}=n;if(o==null)throw new h("public key was missing from identify message","ERR_MISSING_PUBLIC_KEY");let a=await It(o);if(!e.remotePeer.equals(a))throw new h("identified peer does not match the expected peer","ERR_INVALID_PEER");if(this.peerId.equals(a))throw new h("identified peer is our own peer id?","ERR_INVALID_PEER");let c=aO(i);return this.log("identify completed for peer %p and protocols %o",a,s),this.log("our observed address is %a",c),c!=null&&this.addressManager.getObservedAddrs().length<(this.maxObservedAddresses??1/0)&&(this.log("storing our observed address %a",c),this.addressManager.addObservedAddr(c)),this.#e(e,n)}async _handleIdentify(e){let{connection:t,stream:n}=e,o=AbortSignal.timeout(this.timeout);Ce(1/0,o);try{let s=this.peerId.publicKey??new Uint8Array(0),i=await this.peerStore.get(this.peerId),a=this.addressManager.getAddresses().map(u=>u.decapsulateCode(fe("p2p").code)),c=i.peerRecordEnvelope;if(a.length>0&&c==null){let u=new Sr({peerId:this.peerId,multiaddrs:a});c=(await mn.seal(u,this.peerId)).marshal().subarray()}let l=t.remoteAddr.bytes;yx.matches(t.remoteAddr)||(l=void 0),await lt(n).pb(Ni).write({protocolVersion:this.host.protocolVersion,agentVersion:this.host.agentVersion,publicKey:s,listenAddrs:a.map(u=>u.bytes),signedPeerRecord:c,observedAddr:l,protocols:i.protocols},{signal:o}),await n.close({signal:o})}catch(s){this.log.error("could not respond to identify request",s),n.abort(s)}}async _handlePush(e){let{connection:t,stream:n}=e;try{if(this.peerId.equals(t.remotePeer))throw new Error("received push from ourselves?");let o={signal:AbortSignal.timeout(this.timeout)},i=await lt(n,{maxDataLength:this.maxIdentifyMessageSize??ly}).pb(Ni).read(o);await n.close(o),await this.#e(t,i)}catch(o){this.log.error("received invalid message",o),n.abort(o);return}this.log("handled push from %p",t.remotePeer)}async#e(e,t){if(this.log("received identify from %p",e.remotePeer),t==null)throw new h("message was null or undefined","ERR_INVALID_MESSAGE");let n={};if(t.listenAddrs.length>0&&(n.addresses=t.listenAddrs.map(i=>({isCertified:!1,multiaddr:se(i)}))),t.protocols.length>0&&(n.protocols=t.protocols),t.publicKey!=null&&(n.publicKey=t.publicKey,!(await It(t.publicKey)).equals(e.remotePeer)))throw new h("public key did not match remote PeerId","ERR_INVALID_PUBLIC_KEY");let o;if(t.signedPeerRecord!=null){this.log("received signedPeerRecord from %p",e.remotePeer);let i=t.signedPeerRecord,a=await mn.openAndCertify(i,Sr.DOMAIN),c=Sr.createFromProtobuf(a.payload);if(!c.peerId.equals(a.peerId))throw new h("signing key does not match PeerId in the PeerRecord","ERR_INVALID_SIGNING_KEY");if(!e.remotePeer.equals(c.peerId))throw new h("signing key does not match remote PeerId","ERR_INVALID_PEER_RECORD_KEY");let l;try{l=await this.peerStore.get(c.peerId)}catch(f){if(f.code!=="ERR_NOT_FOUND")throw f}if(l!=null&&(n.metadata=l.metadata,l.peerRecordEnvelope!=null)){let f=await mn.createFromProtobuf(l.peerRecordEnvelope),u=Sr.createFromProtobuf(f.payload);u.seqNumber>=c.seqNumber&&(this.log("sequence number was lower or equal to existing sequence number - stored: %d received: %d",u.seqNumber,c.seqNumber),c=u,i=l.peerRecordEnvelope)}n.peerRecordEnvelope=i,n.addresses=c.multiaddrs.map(f=>({isCertified:!0,multiaddr:f})),o={seq:c.seqNumber,addresses:c.multiaddrs}}else this.log("%p did not send a signed peer record",e.remotePeer);if(this.log("patching %p with",e.remotePeer,n),await this.peerStore.patch(e.remotePeer,n),t.agentVersion!=null||t.protocolVersion!=null){let i={};t.agentVersion!=null&&(i.AgentVersion=x(t.agentVersion)),t.protocolVersion!=null&&(i.ProtocolVersion=x(t.protocolVersion)),this.log("merging %p metadata",e.remotePeer,i),await this.peerStore.merge(e.remotePeer,{metadata:i})}let s={peerId:e.remotePeer,protocolVersion:t.protocolVersion,agentVersion:t.agentVersion,publicKey:t.publicKey,listenAddrs:t.listenAddrs.map(i=>se(i)),observedAddr:t.observedAddr==null?void 0:se(t.observedAddr),protocols:t.protocols,signedPeerRecord:o,connection:e};return this.events.safeDispatchEvent("peer:identify",{detail:s}),s}};function aO(r){if(r!=null&&r.length>0)try{return se(r)}catch{}}function Ux(r={}){return e=>new uh(e,r)}var Fx="/ipfs/kad/1.0.0",Vx="/dht/record",uy="/dht/provider";var qx;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.key!=null&&(n.uint32(10),n.bytes(t.key)),t.value!=null&&(n.uint32(18),n.bytes(t.value)),t.author!=null&&(n.uint32(26),n.bytes(t.author)),t.signature!=null&&(n.uint32(34),n.bytes(t.signature)),t.timeReceived!=null&&(n.uint32(42),n.string(t.timeReceived)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.key=t.bytes();break}case 2:{o.value=t.bytes();break}case 3:{o.author=t.bytes();break}case 4:{o.signature=t.bytes();break}case 5:{o.timeReceived=t.string();break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(qx||(qx={}));var Ie;(function(r){r.PUT_VALUE="PUT_VALUE",r.GET_VALUE="GET_VALUE",r.ADD_PROVIDER="ADD_PROVIDER",r.GET_PROVIDERS="GET_PROVIDERS",r.FIND_NODE="FIND_NODE",r.PING="PING"})(Ie||(Ie={}));var fh;(function(r){r[r.PUT_VALUE=0]="PUT_VALUE",r[r.GET_VALUE=1]="GET_VALUE",r[r.ADD_PROVIDER=2]="ADD_PROVIDER",r[r.GET_PROVIDERS=3]="GET_PROVIDERS",r[r.FIND_NODE=4]="FIND_NODE",r[r.PING=5]="PING"})(fh||(fh={}));(function(r){r.codec=()=>Re(fh)})(Ie||(Ie={}));var sc;(function(r){r.NOT_CONNECTED="NOT_CONNECTED",r.CONNECTED="CONNECTED",r.CAN_CONNECT="CAN_CONNECT",r.CANNOT_CONNECT="CANNOT_CONNECT"})(sc||(sc={}));var fy;(function(r){r[r.NOT_CONNECTED=0]="NOT_CONNECTED",r[r.CONNECTED=1]="CONNECTED",r[r.CAN_CONNECT=2]="CAN_CONNECT",r[r.CANNOT_CONNECT=3]="CANNOT_CONNECT"})(fy||(fy={}));(function(r){r.codec=()=>Re(fy)})(sc||(sc={}));var oc;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.multiaddrs!=null)for(let s of t.multiaddrs)n.uint32(18),n.bytes(s);t.connection!=null&&(n.uint32(24),sc.codec().encode(t.connection,n)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={id:ft(0),multiaddrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.id=t.bytes();break}case 2:{o.multiaddrs.push(t.bytes());break}case 3:{o.connection=sc.codec().decode(t);break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(oc||(oc={}));var zr;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.type!=null&&fh[t.type]!==0&&(n.uint32(8),Ie.codec().encode(t.type,n)),t.clusterLevel!=null&&(n.uint32(80),n.int32(t.clusterLevel)),t.key!=null&&(n.uint32(18),n.bytes(t.key)),t.record!=null&&(n.uint32(26),n.bytes(t.record)),t.closer!=null)for(let s of t.closer)n.uint32(66),oc.codec().encode(s,n);if(t.providers!=null)for(let s of t.providers)n.uint32(74),oc.codec().encode(s,n);o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={type:Ie.PUT_VALUE,closer:[],providers:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.type=Ie.codec().decode(t);break}case 10:{o.clusterLevel=t.int32();break}case 2:{o.key=t.bytes();break}case 3:{o.record=t.bytes();break}case 8:{o.closer.push(oc.codec().decode(t,t.uint32()));break}case 9:{o.providers.push(oc.codec().decode(t,t.uint32()));break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(zr||(zr={}));function dy(r,e={}){let t={...r,name:"SEND_QUERY",type:0,messageName:r.type,messageType:Ie[r.type]};return e.onProgress?.(new Ct("kad-dht:query:send-query",{detail:t})),t}function uu(r,e={}){let t={...r,name:"PEER_RESPONSE",type:1,messageName:r.messageType,closer:r.closer!=null?r.closer:[],providers:r.providers!=null?r.providers:[]};return e.onProgress?.(new Ct("kad-dht:query:peer-response",{detail:t})),t}function dh(r,e={}){let t={...r,name:"FINAL_PEER",type:2};return e.onProgress?.(new Ct("kad-dht:query:final-peer",{detail:t})),t}function Rr(r,e={}){let t={...r,name:"QUERY_ERROR",type:3};return e.onProgress?.(new Ct("kad-dht:query:query-error",{detail:t})),t}function hy(r,e={}){let t={...r,name:"PROVIDER",type:4};return e.onProgress?.(new Ct("kad-dht:query:provider",{detail:t})),t}function fu(r,e={}){let t={...r,name:"VALUE",type:5};return e.onProgress?.(new Ct("kad-dht:query:value",{detail:t})),t}function py(r,e={}){let t={...r,name:"DIAL_PEER",type:7};return e.onProgress?.(new Ct("kad-dht:query:dial-peer",{detail:t})),t}var du;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.key!=null&&t.key.byteLength>0&&(n.uint32(10),n.bytes(t.key)),t.value!=null&&t.value.byteLength>0&&(n.uint32(18),n.bytes(t.value)),t.timeReceived!=null&&t.timeReceived!==""&&(n.uint32(42),n.string(t.timeReceived)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={key:new Uint8Array(0),value:new Uint8Array(0),timeReceived:""},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.key=t.bytes();break;case 2:o.value=t.bytes();break;case 5:o.timeReceived=t.string();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(du||(du={}));function Hx(r){let e=r.getUTCFullYear(),t=String(r.getUTCMonth()+1).padStart(2,"0"),n=String(r.getUTCDate()).padStart(2,"0"),o=String(r.getUTCHours()).padStart(2,"0"),s=String(r.getUTCMinutes()).padStart(2,"0"),i=String(r.getUTCSeconds()).padStart(2,"0"),a=r.getUTCMilliseconds(),c=String(a*1e3*1e3).padStart(9,"0");return`${e}-${t}-${n}T${o}:${s}:${i}.${c}Z`}function $x(r){let e=new RegExp("(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})\\.(\\d+)Z"),t=String(r).trim().match(e);if(t==null)throw new Error("Invalid format");let n=parseInt(t[1],10),o=parseInt(t[2],10)-1,s=parseInt(t[3],10),i=parseInt(t[4],10),a=parseInt(t[5],10),c=parseInt(t[6],10),l=parseInt(t[7].slice(0,-6),10);return new Date(Date.UTC(n,o,s,i,a,c,l))}var Ut=class r{key;value;timeReceived;constructor(e,t,n){if(!(e instanceof Uint8Array))throw new Error("key must be a Uint8Array");if(!(t instanceof Uint8Array))throw new Error("value must be a Uint8Array");this.key=e,this.value=t,this.timeReceived=n}serialize(){return du.encode(this.prepareSerialize())}prepareSerialize(){return{key:this.key,value:this.value,timeReceived:Hx(this.timeReceived)}}static deserialize(e){let t=du.decode(e);return new r(t.key,t.value,new Date(t.timeReceived))}static fromDeserialized(e){let t=$x(e.timeReceived);if(e.key==null)throw new Error("key missing from deserialized object");if(e.value==null)throw new Error("value missing from deserialized object");return new r(e.key,e.value,t)}};function Gx(r,e,t){if(t.length===0){let i="No records given";throw new h(i,"ERR_NO_RECORDS_RECEIVED")}let o=v(e).split("/");if(o.length<3){let i="Record key does not have a selector function";throw new h(i,"ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY")}let s=r[o[1].toString()];if(s==null){let i=`No selector function configured for key type "${o[1]}"`;throw new h(i,"ERR_UNRECOGNIZED_KEY_PREFIX")}return t.length===1?0:s(e,t)}function lO(r,e){return 0}var Yx={pk:lO};async function ic(r,e){let t=e.key,o=v(t).split("/");if(o.length<3)return;let s=r[o[1].toString()];if(s==null){let i=`No validator available for key type "${o[1]}"`;throw new h(i,"ERR_INVALID_RECORD_KEY_TYPE")}await s(t,e.value)}var uO=async(r,e)=>{if(!(r instanceof Uint8Array))throw new h('"key" must be a Uint8Array',"ERR_INVALID_RECORD_KEY_NOT_BUFFER");if(r.byteLength<5)throw new h("invalid public key record","ERR_INVALID_RECORD_KEY_TOO_SHORT");if(v(r.subarray(0,4))!=="/pk/")throw new h("key was not prefixed with /pk/","ERR_INVALID_RECORD_KEY_BAD_PREFIX");let n=r.slice(4),o=await K.digest(e);if(!O(n,o.bytes))throw new h("public key does not match passed in key","ERR_INVALID_RECORD_HASH_MISMATCH")},Wx={pk:uO};var fO=x("/pk/");function zx(r){return{...r,multiaddrs:r.multiaddrs.filter(e=>{let[[t,n]]=e.stringTuples();if(t===53||t===54||t===55)return n!=="localhost";if(t!==4&&t!==6||n==null)return!1;let o=$r(n);return o==null?!0:!o})}}async function Ns(r){return(await K.digest(r)).digest}async function gn(r){return Ns(r.toBytes())}function Oo(r){return new qe(`${Vx}/${v(r,"base32")}`,!1)}function jx(r){return le([fO,r.toBytes()])}function Xx(r){return v(r.subarray(0,4))==="/pk/"}function Qx(r){return at(r.subarray(4))}function my(r,e){let t=new Date;return new Ut(r,e,t).serialize()}function Jx(r,e=100){let t;return()=>{clearTimeout(t),t=setTimeout(()=>{r()},e)}}var dO=290,hO=54,pO=55,mO=56,yO=4,gO=41;function Zx(r){let e=r.stringTuples();for(let t of e)if(t[0]===dO)return!1;if(e[0][0]===hO||e[0][0]===pO||e[0][0]===mO)return!0;if(e[0][0]===yO||e[0][0]===gO){let t=$r(`${e[0][1]}`);return t==null||!t}return!1}var hh=class{log;components;validators;selectors;peerRouting;queryManager;network;constructor(e,t){let{validators:n,selectors:o,peerRouting:s,queryManager:i,network:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-fetching`),this.validators=n,this.selectors=o,this.peerRouting=s,this.queryManager=i,this.network=a}async putLocal(e,t){let n=Oo(e);await this.components.datastore.put(n,t)}async getLocal(e){this.log("getLocal %b",e);let t=Oo(e);this.log("fetching record for key %k",t);let n=await this.components.datastore.get(t);this.log("found %k in local datastore",t);let o=Ut.deserialize(n);return await ic(this.validators,o),o}async*sendCorrectionRecord(e,t,n,o={}){this.log("sendCorrection for %b",e);let s=my(e,n);for(let{value:i,from:a}of t){if(O(i,n)){this.log("record was ok");continue}if(this.components.peerId.equals(a)){try{let f=Oo(e);this.log(`Storing corrected record for key ${f.toString()}`),await this.components.datastore.put(f,s.subarray())}catch(f){this.log.error("Failed error correcting self",f)}continue}let c=!1,l={type:Ie.PUT_VALUE,key:e,record:s};for await(let f of this.network.sendRequest(a,l,o))f.name==="PEER_RESPONSE"&&f.record!=null&&O(f.record.value,Ut.deserialize(s).value)&&(c=!0),yield f;c||(yield Rr({from:a,error:new h("value not put correctly","ERR_PUT_VALUE_INVALID")},o)),this.log.error("Failed error correcting entry")}}async*put(e,t,n={}){this.log("put key %b value %b",e,t);let o=my(e,t),s=Oo(e);this.log(`storing record for key ${s.toString()}`),await this.components.datastore.put(s,o.subarray()),yield*it(this.peerRouting.getClosestPeers(e,{signal:n.signal}),i=>rn(i,a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[],l={type:Ie.PUT_VALUE,key:e,record:o};this.log("send put to %p",a.peer.id);for await(let f of this.network.sendRequest(a.peer.id,l,n))c.push(f),f.name==="PEER_RESPONSE"&&(f.record!=null&&O(f.record.value,Ut.deserialize(o).value)||c.push(Rr({from:a.peer.id,error:new h("value not put correctly","ERR_PUT_VALUE_INVALID")},n)));return c}),i=>Bo(i,{ordered:!1,concurrency:3}),async function*(i){for await(let a of i)yield*a})}async*get(e,t={}){this.log("get %b",e);let n=[];for await(let a of this.getMany(e,t))a.name==="VALUE"&&n.push(a),yield a;if(n.length===0)return;let o=n.map(a=>a.value),s=0;try{s=Gx(this.selectors,e,o)}catch(a){if(a.code!=="ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY")throw a}let i=o[s];if(this.log("GetValue %b %b",e,i),i==null)throw new h("best value was not found","ERR_NOT_FOUND");yield*this.sendCorrectionRecord(e,n,i,t),yield n[s]}async*getMany(e,t={}){this.log("getMany values for %b",e);try{let s=await this.getLocal(e);yield fu({value:s.value,from:this.components.peerId},t)}catch(s){this.log("error getting local value for %b",e,s)}let n=this,o=async function*({peer:s,signal:i}){for await(let a of n.peerRouting.getValueOrPeers(s,e,{signal:i}))yield a,a.name==="PEER_RESPONSE"&&a.record!=null&&(yield fu({from:s,value:a.record.value},t))};yield*this.queryManager.run(e,o,t)}};function ev(r,e){return{id:r.id.toBytes(),multiaddrs:(r.multiaddrs??[]).map(n=>n.bytes),connection:e}}function hu(r){if(r.id==null)throw new Error("Invalid peer in message");return{id:at(r.id),multiaddrs:(r.multiaddrs??[]).map(e=>se(e))}}var ph=class{log;components;network;peerRouting;queryManager;routingTable;providers;constructor(e,t){let{network:n,peerRouting:o,queryManager:s,routingTable:i,providers:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-routing`),this.network=n,this.peerRouting=o,this.queryManager=s,this.routingTable=i,this.providers=a}async*provide(e,t,n={}){this.log("provide %s",e),await this.providers.addProvider(e,this.components.peerId);let o={type:Ie.ADD_PROVIDER,key:e.multihash.bytes,providers:[ev({id:this.components.peerId,multiaddrs:t})]},s=0,i=a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[];this.log("putProvider %s to %p",e,a.peer.id);try{this.log("sending provider record for %s to %p",e,a.peer.id);for await(let l of this.network.sendMessage(a.peer.id,o,n))l.name==="PEER_RESPONSE"&&(this.log("sent provider record for %s to %p",e,a.peer.id),s++),c.push(l)}catch(l){this.log.error("error sending provide record to peer %p",a.peer.id,l),c.push(Rr({from:a.peer.id,error:l},n))}return c};yield*it(this.peerRouting.getClosestPeers(e.multihash.bytes,n),a=>rn(a,c=>i(c)),a=>Bo(a,{ordered:!1,concurrency:3}),async function*(a){for await(let c of a)yield*c}),this.log("sent provider records to %d peers",s)}async*findProviders(e,t){let n=this.routingTable.kBucketSize,o=e.multihash.bytes,s=this;this.log("findProviders %c",e);let i=await this.providers.getProviders(e);if(i.length>0){let l=[];for(let f of i.slice(0,n))try{let u=await this.components.peerStore.get(f);l.push({id:f,multiaddrs:u.addresses.map(({multiaddr:d})=>d)})}catch(u){if(u.code!=="ERR_NOT_FOUND")throw u;this.log("no peer store entry for %p",f)}yield uu({from:this.components.peerId,messageType:Ie.GET_PROVIDERS,providers:l},t),yield hy({from:this.components.peerId,providers:l},t)}if(i.length>=n)return;let a=async function*({peer:l,signal:f}){let u={type:Ie.GET_PROVIDERS,key:o};yield*s.network.sendRequest(l,u,{...t,signal:f})},c=new mt(i);for await(let l of this.queryManager.run(o,a,t))if(yield l,l.name==="PEER_RESPONSE"){this.log("Found %d provider entries for %c and %d closer peers",l.providers.length,e,l.closer.length);let f=[];for(let u of l.providers)c.has(u.id)||(c.add(u.id),f.push(u));if(f.length>0&&(yield hy({from:l.from,providers:f},t)),c.size===n)return}}};var mh=class extends Fe{log;protocol;running;components;constructor(e,t){super();let{protocol:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:network`),this.running=!1,this.protocol=n}async start(){this.running||(this.running=!0)}async stop(){this.running=!1}isStarted(){return this.running}async*sendRequest(e,t,n={}){if(!this.running)return;let o=t.type;if(o==null)throw new Wc("Message type was missing","ERR_INVALID_PARAMETERS");this.log("sending %s to %p",t.type,e),yield py({peer:e},n),yield dy({to:e,type:o},n);let s;try{let a=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n),c=await this._writeReadMessage(a,t,n);yield uu({from:e,messageType:c.type,closer:c.closer.map(hu),providers:c.providers.map(hu),record:c.record==null?void 0:Ut.deserialize(c.record)},n)}catch(i){this.log.error("could not send %s to %p",t.type,e,i),yield Rr({from:e,error:i},n)}finally{s!=null&&await s.close()}}async*sendMessage(e,t,n={}){if(!this.running)return;let o=t.type;if(o==null)throw new Wc("Message type was missing","ERR_INVALID_PARAMETERS");this.log("sending %s to %p",t.type,e),yield py({peer:e},n),yield dy({to:e,type:o},n);let s;try{let a=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n);await this._writeMessage(a,t,n),yield uu({from:e,messageType:o},n)}catch(i){yield Rr({from:e,error:i},n)}finally{s!=null&&await s.close()}}async _writeMessage(e,t,n){let o=lt(e);await o.write(t,zr,n),await o.unwrap().close(n)}async _writeReadMessage(e,t,n){let o=lt(e);await o.write(t,zr,n);let s=await o.read(zr,n);return await o.unwrap().close(n),s.closer.forEach(i=>{this.safeDispatchEvent("peer",{detail:hu(i)})}),s.providers.forEach(i=>{this.safeDispatchEvent("peer",{detail:hu(i)})}),s}};var tt={get(r=globalThis){let e=r.crypto;if(e==null||e.subtle==null)throw Object.assign(new Error("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"),{code:"ERR_MISSING_WEB_CRYPTO"});return e}};var tv={SHA1:20,SHA256:32,SHA512:64};var bO={SHA1:"SHA-1",SHA256:"SHA-256",SHA512:"SHA-512"},wO=async(r,e)=>{let t=await tt.get().subtle.sign({name:"HMAC"},r,e);return new Uint8Array(t,0,t.byteLength)};async function rv(r,e){let t=bO[r],n=await tt.get().subtle.importKey("raw",e,{name:"HMAC",hash:{name:t}},!1,["sign"]);return{async digest(o){return wO(n,o)},length:tv[r]}}var wh={};oe(wh,{Ed25519PrivateKey:()=>Mo,Ed25519PublicKey:()=>Bi,MAX_RSA_KEY_SIZE:()=>Oi,RsaPrivateKey:()=>Ls,RsaPublicKey:()=>Li,Secp256k1PrivateKey:()=>Mi,Secp256k1PublicKey:()=>Ki,generateEphemeralKeyPair:()=>hv,generateKeyPair:()=>$O,generateKeyPairFromSeed:()=>GO,importKey:()=>jO,keyStretcher:()=>yv,keysPBM:()=>lc,marshalPrivateKey:()=>zO,marshalPublicKey:()=>WO,supportedKeys:()=>Uo,unmarshalPrivateKey:()=>kv,unmarshalPublicKey:()=>YO});var vy={};oe(vy,{Ed25519PrivateKey:()=>Mo,Ed25519PublicKey:()=>Bi,generateKeyPair:()=>SO,generateKeyPairFromSeed:()=>xy,unmarshalEd25519PrivateKey:()=>vO,unmarshalEd25519PublicKey:()=>_O});function by(r,e){let t=x(r,"base64urlpad");if(e!=null){if(t.length>e)throw new Error("byte array longer than desired length");t=le([new Uint8Array(e-t.length),t])}return t}function jr(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var ac=32,Ko=64,yh=32;function nv(){let r=we.utils.randomPrivateKey(),e=we.getPublicKey(r);return{privateKey:av(r,e),publicKey:e}}function ov(r){if(r.length!==yh)throw new TypeError('"seed" must be 32 bytes in length.');if(!(r instanceof Uint8Array))throw new TypeError('"seed" must be a node.js Buffer, or Uint8Array.');let e=r,t=we.getPublicKey(e);return{privateKey:av(e,t),publicKey:t}}function sv(r,e){let t=r.subarray(0,yh);return we.sign(e instanceof Uint8Array?e:e.subarray(),t)}function iv(r,e,t){return we.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function av(r,e){let t=new Uint8Array(Ko);for(let n=0;n<yh;n++)t[n]=r[n],t[yh+n]=e[n];return t}var wy={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function gh(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,o=r?.digest??"SHA-256",s=r?.saltLength??16,i=r?.iterations??32767,a=tt.get();t*=8;async function c(u,d){let y=a.getRandomValues(new Uint8Array(s)),p=a.getRandomValues(new Uint8Array(n)),m={name:e,iv:p};typeof d=="string"&&(d=x(d));let g;if(d.length===0){g=await a.subtle.importKey("jwk",wy,{name:"AES-GCM"},!0,["encrypt"]);try{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}catch{g=await a.subtle.importKey("jwk",wy,{name:"AES-GCM"},!0,["encrypt"])}}else{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}let b=await a.subtle.encrypt(m,g,u);return le([y,m.iv,new Uint8Array(b)])}async function l(u,d){let y=u.subarray(0,s),p=u.subarray(s,s+n),m=u.subarray(s+n),g={name:e,iv:p};typeof d=="string"&&(d=x(d));let b;if(d.length===0)try{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}catch{b=await a.subtle.importKey("jwk",wy,{name:"AES-GCM"},!0,["decrypt"])}else{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}let E=await a.subtle.decrypt(g,b,m);return new Uint8Array(E)}return{encrypt:c,decrypt:l}}async function cc(r,e){let n=await gh().encrypt(r,e);return Ge.encode(n)}var lc={};oe(lc,{KeyType:()=>je,PrivateKey:()=>wn,PublicKey:()=>bn});var je;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(je||(je={}));var Ey;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(Ey||(Ey={}));(function(r){r.codec=()=>Re(Ey)})(je||(je={}));var bn;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),je.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=je.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(bn||(bn={}));var wn;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),je.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=je.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(wn||(wn={}));var Bi=class{_key;constructor(e){this._key=uc(e,ac)}verify(e,t){return iv(this._key,t,e)}marshal(){return this._key}get bytes(){return bn.encode({Type:je.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return jr(e)?e.then(({bytes:t})=>t):e.bytes}},Mo=class{_key;_publicKey;constructor(e,t){this._key=uc(e,Ko),this._publicKey=uc(t,ac)}sign(e){return sv(this._key,e)}get public(){return new Bi(this._publicKey)}marshal(){return this._key}get bytes(){return wn.encode({Type:je.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return jr(e)?{bytes:t}=await e:t=e.bytes,t}async id(){let e=Xe.digest(this.public.bytes);return ie.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return cc(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function vO(r){if(r.length>Ko){r=uc(r,Ko+ac);let n=r.subarray(0,Ko),o=r.subarray(Ko,r.length);return new Mo(n,o)}r=uc(r,Ko);let e=r.subarray(0,Ko),t=r.subarray(ac);return new Mo(e,t)}function _O(r){return r=uc(r,ac),new Bi(r)}async function SO(){let{privateKey:r,publicKey:e}=nv();return new Mo(r,e)}async function xy(r){let{privateKey:e,publicKey:t}=ov(r);return new Mo(e,t)}function uc(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new h(`Key must be a Uint8Array of length ${e}, got ${r.length}`,"ERR_INVALID_KEY_TYPE");return r}var lv={"P-256":256,"P-384":384,"P-521":521},RO=Object.keys(lv),_y=RO.join(" / ");async function uv(r){if(r!=="P-256"&&r!=="P-384"&&r!=="P-521")throw new h(`Unknown curve: ${r}. Must be ${_y}`,"ERR_INVALID_CURVE");let e=await tt.get().subtle.generateKey({name:"ECDH",namedCurve:r},!0,["deriveBits"]),t=async(s,i)=>{let a;i!=null?a=await tt.get().subtle.importKey("jwk",IO(r,i),{name:"ECDH",namedCurve:r},!1,["deriveBits"]):a=e.privateKey;let c=await tt.get().subtle.importKey("jwk",dv(r,s),{name:"ECDH",namedCurve:r},!1,[]),l=await tt.get().subtle.deriveBits({name:"ECDH",namedCurve:r,public:c},a,lv[r]);return new Uint8Array(l,0,l.byteLength)},n=await tt.get().subtle.exportKey("jwk",e.publicKey);return{key:AO(n),genSharedKey:t}}var fv={"P-256":32,"P-384":48,"P-521":66};function AO(r){if(r.crv==null||r.x==null||r.y==null)throw new h("JWK was missing components","ERR_INVALID_PARAMETERS");if(r.crv!=="P-256"&&r.crv!=="P-384"&&r.crv!=="P-521")throw new h(`Unknown curve: ${r.crv}. Must be ${_y}`,"ERR_INVALID_CURVE");let e=fv[r.crv];return le([Uint8Array.from([4]),by(r.x,e),by(r.y,e)],1+e*2)}function dv(r,e){if(r!=="P-256"&&r!=="P-384"&&r!=="P-521")throw new h(`Unknown curve: ${r}. Must be ${_y}`,"ERR_INVALID_CURVE");let t=fv[r];if(!O(e.subarray(0,1),Uint8Array.from([4])))throw new h("Cannot unmarshal public key - invalid key format","ERR_INVALID_KEY_FORMAT");return{kty:"EC",crv:r,x:v(e.subarray(1,t+1),"base64url"),y:v(e.subarray(1+t),"base64url"),ext:!0}}var IO=(r,e)=>({...dv(r,e.public),d:v(e.private,"base64url")});var hv=uv;async function pv(r,e){let t=Ge.decode(r);return gh().decrypt(t,e)}var mv={"AES-128":{ivSize:16,keySize:16},"AES-256":{ivSize:16,keySize:32},Blowfish:{ivSize:8,keySize:32}};async function yv(r,e,t){let n=mv[r];if(n==null){let E=Object.keys(mv).join(" / ");throw new h(`unknown cipher type '${r}'. Must be ${E}`,"ERR_INVALID_CIPHER_TYPE")}if(e==null)throw new h("missing hash type","ERR_MISSING_HASH_TYPE");let o=n.keySize,s=n.ivSize,i=20,a=x("key expansion"),c=2*(s+o+i),l=await rv(e,t),f=await l.digest(a),u=[],d=0;for(;d<c;){let E=await l.digest(le([f,a])),w=E.length;d+w>c&&(w=c-d),u.push(E),d+=w,f=await l.digest(f)}let y=c/2,p=le(u),m=p.subarray(0,y),g=p.subarray(y,c),b=E=>({iv:E.subarray(0,s),cipherKey:E.subarray(s,s+o),macKey:E.subarray(s+o)});return{k1:b(m),k2:b(g)}}var Ty={};oe(Ty,{MAX_RSA_KEY_SIZE:()=>Oi,RsaPrivateKey:()=>Ls,RsaPublicKey:()=>Li,fromJwk:()=>MO,generateKeyPair:()=>UO,unmarshalRsaPrivateKey:()=>Iy,unmarshalRsaPublicKey:()=>KO});function Yn(r){if(isNaN(r)||r<=0)throw new h("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return dt(r)}var Bs={};oe(Bs,{exportToPem:()=>NO,importFromPem:()=>Ay,jwkToPkcs1:()=>TO,jwkToPkix:()=>PO,pkcs1ToJwk:()=>kO,pkixToJwk:()=>DO});function kO(r){let{result:e}=Ee(r),t=e.valueBlock.value;return{n:v(Wn(t[1].toBigInt()),"base64url"),e:v(Wn(t[2].toBigInt()),"base64url"),d:v(Wn(t[3].toBigInt()),"base64url"),p:v(Wn(t[4].toBigInt()),"base64url"),q:v(Wn(t[5].toBigInt()),"base64url"),dp:v(Wn(t[6].toBigInt()),"base64url"),dq:v(Wn(t[7].toBigInt()),"base64url"),qi:v(Wn(t[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function TO(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 h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new B({value:0}),B.fromBigInt(zn(x(r.n,"base64url"))),B.fromBigInt(zn(x(r.e,"base64url"))),B.fromBigInt(zn(x(r.d,"base64url"))),B.fromBigInt(zn(x(r.p,"base64url"))),B.fromBigInt(zn(x(r.q,"base64url"))),B.fromBigInt(zn(x(r.dp,"base64url"))),B.fromBigInt(zn(x(r.dq,"base64url"))),B.fromBigInt(zn(x(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function DO(r){let{result:e}=Ee(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:v(Wn(t[0].toBigInt()),"base64url"),e:v(Wn(t[1].toBigInt()),"base64url")}}function PO(r){if(r.n==null||r.e==null)throw new h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new kt({valueHex:new M({value:[B.fromBigInt(zn(x(r.n,"base64url"))),B.fromBigInt(zn(x(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function Wn(r){let e=r.toString(16);e.length%2>0&&(e=`0${e}`);let t=e.length/2,n=new Uint8Array(t),o=0,s=0;for(;o<t;)n[o]=parseInt(e.slice(s,s+2),16),o+=1,s+=2;return n}function zn(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}var CO=16,Sy=32,Ry=1e4;async function NO(r,e){let t=tt.get(),o=new M({value:[new B({value:0}),new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new Se({valueHex:r.marshal()})]}).toBER(),s=new Uint8Array(o,0,o.byteLength),i=Yn(CO),a=await pt(Ye,e,i,{c:Ry,dkLen:Sy}),c=Yn(16),l=await t.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),f=await t.subtle.encrypt({name:"AES-CBC",iv:c},l,s),u=new M({value:[new Se({valueHex:i}),new B({value:Ry}),new B({value:Sy}),new M({value:[new ae({value:"1.2.840.113549.2.11"}),new Ne]})]}),d=new M({value:[new ae({value:"1.2.840.113549.1.5.13"}),new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.5.12"}),u]}),new M({value:[new ae({value:"2.16.840.1.101.3.4.1.42"}),new Se({valueHex:c})]})]})]}),p=new M({value:[d,new Se({valueHex:f})]}).toBER(),m=new Uint8Array(p,0,p.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...v(m,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
|
|
26
|
-
`)}async function Ay(r,e){let t=tt.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o),{iv:i,salt:a,iterations:c,keySize:l,cipherText:f}=BO(s),u=await pt(Ye,e,a,{c,dkLen:l}),d=await t.subtle.importKey("raw",u,"AES-CBC",!1,["decrypt"]),y=pu(await t.subtle.decrypt({name:"AES-CBC",iv:i},d,f)),{result:p}=Ee(y);n=gv(p)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o);n=gv(s)}else throw new h("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return Iy(n)}function BO(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new h("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new h("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let s=n.valueBlock.value[1],i=pu(s.valueBlock.value[0].getValue()),a=Ry,c=Sy;if(s.valueBlock.value.length===3)a=Number(s.valueBlock.value[1].toBigInt()),c=Number(s.valueBlock.value[2].toBigInt());else if(s.valueBlock.value.length===2)throw new h("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let l=e.valueBlock.value[1].valueBlock.value[1],f=l.valueBlock.value[0].toString();if(f!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(f!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new h("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let u=pu(l.valueBlock.value[1].getValue());return{cipherText:pu(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:u}}function gv(r){return pu(r.valueBlock.value[2].getValue())}function pu(r){return new Uint8Array(r,0,r.byteLength)}async function bv(r){let e=await tt.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await xv(e);return{privateKey:t[0],publicKey:t[1]}}async function ky(r){let t=[await tt.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await LO(r)],n=await xv({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function wv(r,e){let t=await tt.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await tt.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function Ev(r,e,t){let n=await tt.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return tt.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function xv(r){if(r.privateKey==null||r.publicKey==null)throw new h("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([tt.get().subtle.exportKey("jwk",r.privateKey),tt.get().subtle.exportKey("jwk",r.publicKey)])}async function LO(r){return tt.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function bh(r){if(r.kty!=="RSA")throw new h("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new h("invalid key modulus","ERR_INVALID_KEY_MODULUS");return x(r.n,"base64url").length*8}var Oi=8192,Li=class{_key;constructor(e){this._key=e}verify(e,t){return Ev(this._key,t,e)}marshal(){return Bs.jwkToPkix(this._key)}get bytes(){return bn.encode({Type:je.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return jr(e)?e.then(({bytes:t})=>t):e.bytes}},Ls=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return Yn(16)}sign(e){return wv(this._key,e)}get public(){if(this._publicKey==null)throw new h("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new Li(this._publicKey)}marshal(){return Bs.jwkToPkcs1(this._key)}get bytes(){return wn.encode({Type:je.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return jr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return Bs.exportToPem(this,e);if(t==="libp2p-key")return cc(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function Iy(r){let e=Bs.pkcs1ToJwk(r);if(bh(e)>Oi)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await ky(e);return new Ls(t.privateKey,t.publicKey)}function KO(r){let e=Bs.pkixToJwk(r);if(bh(e)>Oi)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new Li(e)}async function MO(r){if(bh(r)>Oi)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await ky(r);return new Ls(e.privateKey,e.publicKey)}async function UO(r){if(r>Oi)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await bv(r);return new Ls(e.privateKey,e.publicKey)}var Py={};oe(Py,{Secp256k1PrivateKey:()=>Mi,Secp256k1PublicKey:()=>Ki,generateKeyPair:()=>HO,unmarshalSecp256k1PrivateKey:()=>VO,unmarshalSecp256k1PublicKey:()=>qO});function vv(){return W.utils.randomPrivateKey()}function _v(r,e){let t=K.digest(e instanceof Uint8Array?e:e.subarray());if(jr(t))return t.then(({digest:n})=>W.sign(n,r).toDERRawBytes()).catch(n=>{throw new h(String(n),"ERR_INVALID_INPUT")});try{return W.sign(t.digest,r).toDERRawBytes()}catch(n){throw new h(String(n),"ERR_INVALID_INPUT")}}function Sv(r,e,t){let n=K.digest(t instanceof Uint8Array?t:t.subarray());if(jr(n))return n.then(({digest:o})=>W.verify(e,o,r)).catch(o=>{throw new h(String(o),"ERR_INVALID_INPUT")});try{return W.verify(e,n.digest,r)}catch(o){throw new h(String(o),"ERR_INVALID_INPUT")}}function Rv(r){return W.ProjectivePoint.fromHex(r).toRawBytes(!0)}function Av(r){try{W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}function Dy(r){try{W.ProjectivePoint.fromHex(r)}catch(e){throw new h(String(e),"ERR_INVALID_PUBLIC_KEY")}}function Iv(r){try{return W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}var Ki=class{_key;constructor(e){Dy(e),this._key=e}verify(e,t){return Sv(this._key,t,e)}marshal(){return Rv(this._key)}get bytes(){return bn.encode({Type:je.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return jr(e)?{bytes:t}=await e:t=e.bytes,t}},Mi=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??Iv(e),Av(this._key),Dy(this._publicKey)}sign(e){return _v(this._key,e)}get public(){return new Ki(this._publicKey)}marshal(){return this._key}get bytes(){return wn.encode({Type:je.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return jr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return cc(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function VO(r){return new Mi(r)}function qO(r){return new Ki(r)}async function HO(){let r=vv();return new Mi(r)}var Uo={rsa:Ty,ed25519:vy,secp256k1:Py};function Cy(r){let e=Object.keys(Uo).join(" / ");return new h(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function Ny(r){if(r=r.toLowerCase(),r==="rsa"||r==="ed25519"||r==="secp256k1")return Uo[r];throw Cy(r)}async function $O(r,e){return Ny(r).generateKeyPair(e??2048)}async function GO(r,e,t){if(r.toLowerCase()!=="ed25519")throw new h("Seed key derivation is unimplemented for RSA or secp256k1","ERR_UNSUPPORTED_KEY_DERIVATION_TYPE");return xy(e)}function YO(r){let e=bn.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case je.RSA:return Uo.rsa.unmarshalRsaPublicKey(t);case je.Ed25519:return Uo.ed25519.unmarshalEd25519PublicKey(t);case je.Secp256k1:return Uo.secp256k1.unmarshalSecp256k1PublicKey(t);default:throw Cy(e.Type??"unknown")}}function WO(r,e){return e=(e??"rsa").toLowerCase(),Ny(e),r.bytes}async function kv(r){let e=wn.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case je.RSA:return Uo.rsa.unmarshalRsaPrivateKey(t);case je.Ed25519:return Uo.ed25519.unmarshalEd25519PrivateKey(t);case je.Secp256k1:return Uo.secp256k1.unmarshalSecp256k1PrivateKey(t);default:throw Cy(e.Type??"RSA")}}function zO(r,e){return e=(e??"rsa").toLowerCase(),Ny(e),r.bytes}async function jO(r,e){try{let t=await pv(r,e);return await kv(t)}catch{}if(!r.includes("BEGIN"))throw new h("Encrypted key was not a libp2p-key or a PEM file","ERR_INVALID_IMPORT_FORMAT");return Ay(r,e)}var By=(r,e)=>r<<e|r>>>32-e>>>0,XO=(r,e,t)=>r&e^~r&t,QO=(r,e,t)=>r&e^r&t^e&t,mu=new Uint32Array([1732584193,4023233417,2562383102,271733878,3285377520]),Os=new Uint32Array(80),Ly=class extends ss{constructor(){super(64,20,8,!1),this.A=mu[0]|0,this.B=mu[1]|0,this.C=mu[2]|0,this.D=mu[3]|0,this.E=mu[4]|0}get(){let{A:e,B:t,C:n,D:o,E:s}=this;return[e,t,n,o,s]}set(e,t,n,o,s){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=s|0}process(e,t){for(let c=0;c<16;c++,t+=4)Os[c]=e.getUint32(t,!1);for(let c=16;c<80;c++)Os[c]=By(Os[c-3]^Os[c-8]^Os[c-14]^Os[c-16],1);let{A:n,B:o,C:s,D:i,E:a}=this;for(let c=0;c<80;c++){let l,f;c<20?(l=XO(o,s,i),f=1518500249):c<40?(l=o^s^i,f=1859775393):c<60?(l=QO(o,s,i),f=2400959708):(l=o^s^i,f=3395469782);let u=By(n,5)+l+a+f+Os[c]|0;a=i,i=s,s=By(o,30),o=n,n=u}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,this.set(n,o,s,i,a)}roundClean(){Os.fill(0)}destroy(){this.set(0,0,0,0,0),this.buffer.fill(0)}},Tv=ga(()=>new Ly);var Eh=class{originDhtKey;capacity;peerDistances;constructor(e,t){this.originDhtKey=e,this.capacity=t,this.peerDistances=[]}get length(){return this.peerDistances.length}get peers(){return this.peerDistances.map(e=>e.peerId)}async add(e){if(this.peerDistances.find(o=>o.peerId.equals(e))!=null)return;let t=await gn(e),n={peerId:e,distance:Co(this.originDhtKey,t)};this.peerDistances.push(n),this.peerDistances.sort((o,s)=>Id(o.distance,s.distance)),this.peerDistances=this.peerDistances.slice(0,this.capacity)}async anyCloser(e){if(e.length===0)return!1;if(this.length===0)return!0;let t=await Promise.all(e.map(gn)),n=this.peerDistances[this.peerDistances.length-1].distance;for(let o of t){let s=Co(this.originDhtKey,o);if(Id(s,n)<0)return!0}return!1}};var xh=class{log;routingTable;network;validators;queryManager;peerStore;peerId;constructor(e,t){let{routingTable:n,network:o,validators:s,queryManager:i,logPrefix:a}=t;this.routingTable=n,this.network=o,this.validators=s,this.queryManager=i,this.peerStore=e.peerStore,this.peerId=e.peerId,this.log=e.logger.forComponent(`${a}:peer-routing`)}async findPeerLocal(e){let t,n=await this.routingTable.find(e);if(n!=null){this.log("findPeerLocal found %p in routing table",e);try{t=await this.peerStore.get(n)}catch(o){if(o.code!=="ERR_NOT_FOUND")throw o}}if(t==null)try{t=await this.peerStore.get(e)}catch(o){if(o.code!=="ERR_NOT_FOUND")throw o}if(t!=null)return this.log("findPeerLocal found %p in peer store",e),{id:t.id,multiaddrs:t.addresses.map(o=>o.multiaddr)}}async*_getValueSingle(e,t,n={}){let o={type:Ie.GET_VALUE,key:t};yield*this.network.sendRequest(e,o,n)}async*getPublicKeyFromNode(e,t={}){let n=jx(e);for await(let o of this._getValueSingle(e,n,t))if(yield o,o.name==="PEER_RESPONSE"&&o.record!=null){let s=await It(wh.marshalPublicKey({bytes:o.record.value}));if(!s.equals(e))throw new h("public key does not match id","ERR_PUBLIC_KEY_DOES_NOT_MATCH_ID");if(s.publicKey==null)throw new h("public key missing","ERR_PUBLIC_KEY_MISSING");yield fu({from:e,value:s.publicKey},t)}throw new h(`Node not responding with its public key: ${e.toString()}`,"ERR_INVALID_RECORD")}async*findPeer(e,t={}){if(this.log("findPeer %p",e),t.useCache!==!1){let o=await this.findPeerLocal(e);if(o!=null){this.log("found local"),yield dh({from:this.peerId,peer:o},t);return}}let n=!1;if(t.useNetwork!==!1){let o=this,s=async function*({peer:i,signal:a}){let c={type:Ie.FIND_NODE,key:e.toBytes()};for await(let l of o.network.sendRequest(i,c,{...t,signal:a}))if(yield l,l.name==="PEER_RESPONSE"){let f=l.closer.find(u=>u.id.equals(e));f!=null&&(yield dh({from:l.from,peer:f},t))}};for await(let i of this.queryManager.run(e.toBytes(),s,t))i.name==="FINAL_PEER"&&(n=!0),yield i}n||(yield Rr({from:this.peerId,error:new h("Not found","ERR_NOT_FOUND")},t))}async*getClosestPeers(e,t={}){this.log("getClosestPeers to %b",e);let n=await Ns(e),o=this.routingTable.closestPeers(n),s=this,i=new Eh(n,this.routingTable.kBucketSize);await Promise.all(o.map(async c=>{await i.add(c)}));let a=async function*({peer:c,signal:l}){s.log("closerPeersSingle %s from %p",v(e,"base32"),c);let f={type:Ie.FIND_NODE,key:e};yield*s.network.sendRequest(c,f,{...t,signal:l})};for await(let c of this.queryManager.run(e,a,t))yield c,c.name==="PEER_RESPONSE"&&await Promise.all(c.closer.map(async l=>{await i.add(l.id)}));this.log("found %d peers close to %b",i.length,e);for(let c of i.peers)try{let l=await this.peerStore.get(c);yield dh({from:this.peerId,peer:{id:c,multiaddrs:l.addresses.map(({multiaddr:f})=>f)}},t)}catch(l){if(l.code!=="ERR_NOT_FOUND")throw l}}async*getValueOrPeers(e,t,n={}){for await(let o of this._getValueSingle(e,t,n)){if(o.name==="PEER_RESPONSE"&&o.record!=null)try{await this._verifyRecordOnline(o.record)}catch{let i="invalid record received, discarded";this.log(i),yield Rr({from:o.from,error:new h(i,"ERR_INVALID_RECORD")},n);continue}yield o}}async _verifyRecordOnline(e){if(e.timeReceived==null)throw new h("invalid record received","ERR_INVALID_RECORD");await ic(this.validators,new Ut(e.key,e.value,e.timeReceived))}async getCloserPeersOffline(e,t){let n=await Ns(e),o=this.routingTable.closestPeers(n),s=[];for(let i of o)if(!i.equals(t))try{let a=await this.peerStore.get(i);s.push({id:i,multiaddrs:a.addresses.map(({multiaddr:c})=>c)})}catch(a){if(a.code!=="ERR_NOT_FOUND")throw a}return s.length>0?this.log("getCloserPeersOffline found %d peer(s) closer to %b than %p",s.length,e,t):this.log("getCloserPeersOffline could not find peer closer to %b than %p",e,t),s}};var Cv=Ue(Pv(),1);var vh=class{log;datastore;cache;cleanupInterval;provideValidity;syncQueue;started;cleaner;constructor(e,t={}){let{cacheSize:n,cleanupInterval:o,provideValidity:s}=t;this.log=e.logger.forComponent("libp2p:kad-dht:providers"),this.datastore=e.datastore,this.cleanupInterval=o??36e5,this.provideValidity=s??864e5,this.cache=(0,Cv.default)(n??256),this.syncQueue=new Ur({concurrency:1}),this.started=!1}isStarted(){return this.started}async start(){this.started||(this.started=!0,this.cleaner=setInterval(()=>{this._cleanup().catch(e=>{this.log.error(e)})},this.cleanupInterval))}async stop(){this.started=!1,this.cleaner!=null&&(clearInterval(this.cleaner),this.cleaner=void 0)}async _cleanup(){await this.syncQueue.add(async()=>{let e=Date.now(),t=0,n=0,o=new Map,s=this.datastore.batch(),i=this.datastore.query({prefix:uy});for await(let a of i)try{let{cid:c,peerId:l}=Nv(a.key),f=Bv(a.value).getTime(),u=Date.now(),d=u-f,y=d>this.provideValidity;if(this.log("comparing: %d - %d = %d > %d %s",u,f,d,this.provideValidity,y?"(expired)":""),y){n++,s.delete(a.key);let p=o.get(c)??new Set;p.add(l),o.set(c,p)}t++}catch(c){this.log.error(c.message)}o.size>0?(this.log("deleting %d / %d entries",n,t),await s.commit()):this.log("nothing to delete");for(let[a,c]of o){let l=yu(a),f=this.cache.get(l);if(f!=null){for(let u of c)f.delete(u);f.size===0?this.cache.remove(l):this.cache.set(l,f)}}this.log("Cleanup successful (%dms)",Date.now()-e)})}async _getProvidersMap(e){let t=yu(e),n=this.cache.get(t);return n==null&&(n=await rK(this.datastore,e),this.cache.set(t,n)),n}async addProvider(e,t){await this.syncQueue.add(async()=>{this.log("%p provides %s",t,e);let n=await this._getProvidersMap(e);this.log("loaded %s provs",n.size);let o=new Date;n.set(t.toString(),o);let s=yu(e);this.cache.set(s,n),await tK(this.datastore,e,t,o)})}async getProviders(e){return this.syncQueue.add(async()=>(this.log("get providers for %s",e),[...(await this._getProvidersMap(e)).keys()].map(n=>Ae(n))),{throwOnTimeout:!0})}};function yu(r){let e=typeof r=="string"?r:v(r.multihash.bytes,"base32");return`${uy}/${e}`}async function tK(r,e,t,n){let o=[yu(e),"/",t.toString()].join(""),s=new qe(o),i=st(n.getTime());await r.put(s,i)}function Nv(r){let e=r.toString().split("/");if(e.length!==5)throw new Error(`incorrectly formatted provider entry key in datastore: ${r.toString()}`);return{cid:e[3],peerId:e[4]}}async function rK(r,e){let t=new Map,n=r.query({prefix:yu(e)});for await(let o of n){let{peerId:s}=Nv(o.key);t.set(s,Bv(o.value))}return t}function Bv(r){return new Date(gr(r))}async function*Lv(r,e,t,n){let o=At({objectMode:!0}),s=u=>{n("clean up queue, results %d, queue size %d, pending tasks %d",o.readableLength,r.size,r.pending),r.clear(),o.end(u)},i=u=>{u!=null&&o.push(u)},a=u=>{n("queue error",u),s(u)},c=()=>{n("queue idle"),s()},l=()=>{n("abort queue"),s(new h("Query aborted","ERR_QUERY_ABORTED"))},f=()=>{s()};r.on("completed",i),r.on("error",a),r.on("idle",c),e.addEventListener("abort",l),t.addEventListener("cleanup",f);try{yield*o}finally{r.removeListener("completed",i),r.removeListener("error",a),r.removeListener("idle",c),e.removeEventListener("abort",l),t.removeEventListener("cleanup",f)}}var nK=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");async function*Ov(r){let{key:e,startingPeer:t,ourPeerId:n,signal:o,query:s,alpha:i,pathIndex:a,numPaths:c,cleanUp:l,queryFuncTimeout:f,log:u,peersSeen:d}=r,y=new Ur({concurrency:i}),p=await Ns(e);function m(g,b){if(g==null)return;d.add(g);let E=BigInt("0x"+v(Co(b,p),"base16"));y.add(async()=>{let w=[o];f!=null&&w.push(AbortSignal.timeout(f));let _=Rt(w);try{for await(let I of s({key:e,peer:g,signal:_,pathIndex:a,numPaths:c})){if(_.aborted)return;if(I.name==="PEER_RESPONSE")for(let k of I.closer){if(d.has(k.id)){u("already seen %p in query",k.id);continue}if(n.equals(k.id)){u("not querying ourselves");continue}let D=await gn(k.id);if(BigInt("0x"+v(Co(D,p),"base16"))>E){u("skipping %p as they are not closer to %b than %p",k.id,e,g);continue}u("querying closer peer %p",k.id),m(k.id,D)}y.emit("completed",I)}}catch(I){if(!o.aborted)return Rr({from:g,error:I},r)}finally{_.clear()}},{priority:nK-E}).catch(w=>{u.error(w)})}m(t,await gn(t)),yield*Lv(y,o,l,u)}var _h=class{disjointPaths;alpha;shutDownController;running;queries;logger;peerId;routingTable;initialQuerySelfHasRun;logPrefix;metrics;constructor(e,t){let{disjointPaths:n=20,alpha:o=3,logPrefix:s}=t;this.logPrefix=s,this.disjointPaths=n??20,this.running=!1,this.alpha=o??3,this.queries=0,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.routingTable=t.routingTable,this.logger=e.logger,this.peerId=e.peerId,e.metrics!=null&&(this.metrics={runningQueries:e.metrics.registerMetric(`${s.replaceAll(":","_")}_running_queries`),queryTime:e.metrics.registerMetric(`${s.replaceAll(":","_")}_query_time_seconds`)}),this.shutDownController=new AbortController,Ce(1/0,this.shutDownController.signal)}isStarted(){return this.running}async start(){this.running=!0}async stop(){this.running=!1,this.shutDownController.abort()}async*run(e,t,n={}){if(!this.running)throw new Error("QueryManager not started");let o=this.metrics?.queryTime.timer();if(n.signal==null){let u=AbortSignal.timeout(3e4);Ce(1/0,u),n={...n,signal:u}}let s=new AbortController;Ce(1/0,s.signal);let i=Rt([this.shutDownController.signal,s.signal,n.signal]);Ce(1/0,i);let a=this.logger.forComponent(`${this.logPrefix}:query:`+v(e,"base58btc")),c=Date.now(),l=new Fe,f=!1;try{n.isSelfQuery!==!0&&this.initialQuerySelfHasRun!=null&&(a("waiting for initial query-self query before continuing"),await dr(this.initialQuerySelfHasRun.promise,i),this.initialQuerySelfHasRun=void 0),a("query:start"),this.queries++,this.metrics?.runningQueries.update(this.queries);let u=await Ns(e),d=this.routingTable.closestPeers(u),y=d.slice(0,Math.min(this.disjointPaths,d.length));if(d.length===0){a.error("Running query with no peers");return}let p=new mt,m=y.map((g,b)=>Ov({key:e,startingPeer:g,ourPeerId:this.peerId,signal:i,query:t,pathIndex:b,numPaths:y.length,alpha:this.alpha,cleanUp:l,queryFuncTimeout:n.queryFuncTimeout,log:a,peersSeen:p,onProgress:n.onProgress}));for await(let g of Xt(...m))g.name==="QUERY_ERROR"&&a.error("query error",g.error),yield g;f=!0}catch(u){if(!(!this.running&&u.code==="ERR_QUERY_ABORTED"))throw u}finally{f||(a("query exited early"),s.abort()),i.clear(),this.queries--,this.metrics?.runningQueries.update(this.queries),o?.(),l.dispatchEvent(new Ct("cleanup")),a("query:done in %dms",Date.now()-c)}}};function oK(r){return r[Symbol.asyncIterator]!=null}function sK(r){if(oK(r))return(async()=>{let e=0;for await(let t of r)e++;return e})();{let e=0;for(let t of r)e++;return e}}var Sh=sK;var iK=r=>{let e=r.on||r.addListener||r.addEventListener,t=r.off||r.removeListener||r.removeEventListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function aK(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:f}=iK(r),u=(...y)=>{let p=t.multiArgs?y:y[0];t.filter&&!t.filter(p)||(c.push(p),t.count===c.length&&(n(),s(c)))},d=y=>{n(),i(y)};n=()=>{for(let y of a)f(y,u);for(let y of t.rejectionEvents)f(y,d)};for(let y of a)l(y,u);for(let y of t.rejectionEvents)l(y,d);t.signal&&t.signal.addEventListener("abort",()=>{d(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=dn(o,{milliseconds:t.timeout});return s.cancel=n,s}return o}function gu(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=aK(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}var Rh=class{log;peerId;peerRouting;routingTable;count;interval;initialInterval;queryTimeout;started;timeoutId;controller;initialQuerySelfHasRun;querySelfPromise;constructor(e,t){let{peerRouting:n,logPrefix:o,count:s,interval:i,queryTimeout:a,routingTable:c}=t;this.peerId=e.peerId,this.log=e.logger.forComponent(`${o}:query-self`),this.started=!1,this.peerRouting=n,this.routingTable=c,this.count=s??20,this.interval=i??3e5,this.initialInterval=t.initialInterval??1e3,this.queryTimeout=a??5e3,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun}isStarted(){return this.started}start(){this.started||(this.started=!0,clearTimeout(this.timeoutId),this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.initialInterval))}stop(){this.started=!1,this.timeoutId!=null&&clearTimeout(this.timeoutId),this.controller!=null&&this.controller.abort()}async querySelf(){if(!this.started){this.log("skip self-query because we are not started");return}if(this.querySelfPromise!=null)return this.log("joining existing self query"),this.querySelfPromise.promise;if(this.querySelfPromise=he(),this.started){this.controller=new AbortController;let e=Rt([this.controller.signal,AbortSignal.timeout(this.queryTimeout)]);Ce(1/0,e);try{this.routingTable.size===0&&(this.log("routing table was empty, waiting for some peers before running query"),await gu(this.routingTable,"peer:add",{signal:e})),this.log("run self-query, look for %d peers timing out after %dms",this.count,this.queryTimeout);let t=Date.now(),n=await it(this.peerRouting.getClosestPeers(this.peerId.toBytes(),{signal:e,isSelfQuery:!0}),o=>rs(o,this.count),async o=>Sh(o));this.log("self-query found %d peers in %dms",n,Date.now()-t)}catch(t){this.log.error("self-query error",t)}finally{e.clear(),this.initialQuerySelfHasRun!=null&&(this.initialQuerySelfHasRun.resolve(),this.initialQuerySelfHasRun=void 0)}}this.querySelfPromise.resolve(),this.querySelfPromise=void 0,this.started&&(this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.interval))}};function Mv(r,e){if(r===e)return!0;if(r.length!==e.length)return!1;for(let t=0,n=r.length;t<n;++t)if(r[t]!==e[t])return!1;return!0}function Oy(){return{contacts:[],dontSplit:!1,left:null,right:null}}function bu(r,e){if(!(e instanceof Uint8Array))throw new TypeError(r+" is not a Uint8Array")}var Ah=class r extends Fe{localNodeId;root;numberOfNodesPerKBucket;numberOfNodesToPing;distance;arbiter;constructor(e){super(),this.localNodeId=e.localNodeId,this.numberOfNodesPerKBucket=e.numberOfNodesPerKBucket??20,this.numberOfNodesToPing=e.numberOfNodesToPing??3,this.distance=e.distance??r.distance,this.arbiter=e.arbiter??r.arbiter,bu("option.localNodeId as parameter 1",this.localNodeId),this.root=Oy()}static arbiter(e,t){return(e.vectorClock??0)>(t.vectorClock??0)?e:t}static distance(e,t){let n=0,o=0,s=Math.min(e.length,t.length),i=Math.max(e.length,t.length);for(;o<s;++o)n=n*256+(e[o]^t[o]);for(;o<i;++o)n=n*256+255;return n}add(e){bu("contact.id",e?.id);let t=0,n=this.root;for(;n.contacts===null;)n=this._determineNode(n,e.id,t++);let o=this._indexOf(n,e.id);return o>=0?(this._update(n,o,e),this):n.contacts.length<this.numberOfNodesPerKBucket?(n.contacts.push(e),this.safeDispatchEvent("added",{detail:e}),this):n.dontSplit?(this.safeDispatchEvent("ping",{detail:{oldContacts:n.contacts.slice(0,this.numberOfNodesToPing),newContact:e}}),this):(this._split(n,t),this.add(e))}closest(e,t=1/0){if(bu("id",e),!Number.isInteger(t)&&t!==1/0||t<=0)throw new TypeError("n is not positive number");let n=[];for(let o=[this.root],s=0;o.length>0&&n.length<t;){let i=o.pop();if(i!=null)if(i.contacts===null){let a=this._determineNode(i,e,s++);o.push(i.left===a?i.right:i.left),o.push(a)}else n=n.concat(i.contacts)}return n.map(o=>({distance:this.distance(o.id,e),contact:o})).sort((o,s)=>o.distance-s.distance).slice(0,t).map(o=>o.contact)}count(){let e=0;for(let t=[this.root];t.length>0;){let n=t.pop();n!=null&&(n.contacts===null?t.push(n.right,n.left):e+=n.contacts.length)}return e}_determineNode(e,t,n){let o=n>>3,s=n%8;return t.length<=o&&s!==0?e.left:t[o]&1<<7-s?e.right:e.left}get(e){bu("id",e);let t=0,n=this.root;for(;n.contacts===null;)n=this._determineNode(n,e,t++);let o=this._indexOf(n,e);return o>=0?n.contacts[o]:void 0}_indexOf(e,t){for(let n=0;n<e.contacts.length;++n)if(Mv(e.contacts[n].id,t))return n;return-1}remove(e){bu("the id as parameter 1",e);let t=0,n=this.root;for(;n.contacts===null;)n=this._determineNode(n,e,t++);let o=this._indexOf(n,e);if(o>=0){let s=n.contacts.splice(o,1)[0];this.safeDispatchEvent("removed",{detail:s})}return this}_split(e,t){e.left=Oy(),e.right=Oy();for(let s of e.contacts)this._determineNode(e,s.id,t).contacts.push(s);e.contacts=null;let n=this._determineNode(e,this.localNodeId,t),o=e.left===n?e.right:e.left;o.dontSplit=!0}toArray(){let e=[];for(let t=[this.root];t.length>0;){let n=t.pop();n!=null&&(n.contacts===null?t.push(n.right,n.left):e=e.concat(n.contacts))}return e}*toIterable(){for(let e=[this.root];e.length>0;){let t=e.pop();t!=null&&(t.contacts===null?e.push(t.right,t.left):yield*t.contacts)}}_update(e,t,n){if(!Mv(e.contacts[t].id,n.id))throw new Error("wrong index for _update");let o=e.contacts[t],s=this.arbiter(o,n);s===o&&o!==n||(e.contacts.splice(t,1),e.contacts.push(s),this.safeDispatchEvent("updated",{detail:{incumbent:o,selection:s}}))}};var cK="kad-close",lK=50,Uv=20,uK=1e4,fK=10,Ih=class extends Fe{kBucketSize;kb;pingQueue;log;components;pingTimeout;pingConcurrency;running;protocol;tagName;tagValue;metrics;constructor(e,t){super();let{kBucketSize:n,pingTimeout:o,logPrefix:s,pingConcurrency:i,protocol:a,tagName:c,tagValue:l}=t;this.components=e,this.log=e.logger.forComponent(`${s}:routing-table`),this.kBucketSize=n??Uv,this.pingTimeout=o??uK,this.pingConcurrency=i??fK,this.running=!1,this.protocol=a,this.tagName=c??cK,this.tagValue=l??lK,this.pingQueue=new Cs({concurrency:this.pingConcurrency,metricName:`${s.replaceAll(":","_")}_ping_queue`,metrics:this.components.metrics}),this.pingQueue.addEventListener("error",f=>{this.log.error("error pinging peer",f.detail)}),this.components.metrics!=null&&(this.metrics={routingTableSize:this.components.metrics.registerMetric(`${s.replaceAll(":","_")}_routing_table_size`)})}isStarted(){return this.running}async start(){this.running=!0;let e=new Ah({localNodeId:await gn(this.components.peerId),numberOfNodesPerKBucket:this.kBucketSize,numberOfNodesToPing:1});this.kb=e,e.addEventListener("ping",t=>{this._onPing(t).catch(n=>{this.log.error("could not process k-bucket ping event",n)})}),this._tagPeers(e)}async stop(){this.running=!1,this.pingQueue.clear(),this.kb=void 0}_tagPeers(e){let t=new mt,n=Jx(()=>{let o=new mt(e.closest(e.localNodeId,Uv).map(a=>a.peer)),s=o.difference(t),i=t.difference(o);Promise.resolve().then(async()=>{for(let a of s)await this.components.peerStore.merge(a,{tags:{[this.tagName]:{value:this.tagValue}}});for(let a of i)await this.components.peerStore.merge(a,{tags:{[this.tagName]:void 0}})}).catch(a=>{this.log.error("Could not update peer tags",a)}),t=o});e.addEventListener("added",o=>{n(),this.safeDispatchEvent("peer:add",{detail:o.detail.peer})}),e.addEventListener("removed",o=>{n(),this.safeDispatchEvent("peer:remove",{detail:o.detail.peer})})}async _onPing(e){if(!this.running)return;let{oldContacts:t,newContact:n}=e.detail,s=(await Promise.all(t.map(async i=>{let a=this.pingQueue.find(i.peer);return a!=null?a.join():this.pingQueue.add(async()=>{let c;try{let l={signal:AbortSignal.timeout(this.pingTimeout)};this.log("pinging old contact %p",i.peer),c=await(await this.components.connectionManager.openConnection(i.peer,l)).newStream(this.protocol,l);let u=lt(c);await u.write({type:Ie.PING},zr,l);let d=await u.read(zr,l);if(await u.unwrap().close(),d.type!==Ie.PING)throw new h(`Incorrect message type received, expected PING got ${d.type}`,"ERR_BAD_PING_RESPONSE");return!0}catch(l){return this.running&&this.kb!=null&&(this.log.error("could not ping peer %p",i.peer,l),this.log("evicting old contact after ping failed %p",i.peer),this.kb.remove(i.id)),c?.abort(l),!1}finally{this.metrics?.routingTableSize.update(this.size)}},{peerId:i.peer})}))).filter(i=>i).length;this.running&&s<t.length&&this.kb!=null&&(this.log("adding new contact %p",n.peer),this.kb.add(n))}get size(){return this.kb==null?0:this.kb.count()}async find(e){let t=await gn(e),n=this.closestPeer(t);if(n!=null&&e.equals(n))return n}closestPeer(e){let t=this.closestPeers(e,1);if(t.length>0)return t[0]}closestPeers(e,t=this.kBucketSize){return this.kb==null?[]:this.kb.closest(e,t).map(o=>o.peer)}async add(e){if(this.kb==null)throw new Error("RoutingTable is not started");let t=await gn(e);this.kb.add({id:t,peer:e}),this.log("added %p with kad id %b",e,t),this.metrics?.routingTableSize.update(this.size)}async remove(e){if(this.kb==null)throw new Error("RoutingTable is not started");let t=await gn(e);this.kb.remove(t),this.metrics?.routingTableSize.update(this.size)}};var Fv=[77591,22417,43971,28421,740,29829,71467,228973,196661,78537,27689,36431,44415,14362,19456,106025,96308,2882,49509,21149,87173,131409,75844,23676,121838,30291,17492,2953,7564,110620,129477,127283,53113,72417,165166,109690,21200,102125,24049,71504,90342,25307,72039,26812,26715,32264,133800,71161,88956,171987,51779,24425,16671,30251,186294,247761,14202,2121,8465,35024,4876,85917,169730,3638,256836,96184,943,18678,6583,52907,35807,112254,214097,18796,11595,9243,23554,887,268203,382004,24590,111335,11625,16619,29039,102425,69006,97976,92362,32552,63717,41433,128974,137630,59943,10019,13986,35430,33665,108037,43799,43280,38195,29078,58629,18265,14425,46832,235538,40830,77881,110717,58937,3463,325358,51300,47623,117252,19007,10170,20540,91237,294813,4951,79841,56232,36270,128547,69209,66275,100156,32063,73531,34439,80937,28892,44466,88595,216307,32583,49620,16605,82127,45807,21630,78726,20235,40163,111007,96926,5567,72083,21665,58844,39419,179767,48328,42662,51550,5251,37811,49608,81056,50854,55513,20922,18891,197409,164656,32593,71449,220474,58919,85682,67854,13758,35066,3565,61905,214793,119572,141419,21504,10302,27354,67003,46131,32668,15165,64871,34450,17821,2757,11452,34189,5160,12257,85523,560,53385,65887,119549,135620,312353,115979,122356,10867,193231,124537,54783,90675,120791,4715,142253,50943,17271,43358,25331,4917,120566,34580,12878,33786,160528,32523,4869,301307,104817,81491,23276,8832,97911,31265,52065,7998,49622,9715,43998,34091,84587,20664,69041,29419,53205,10838,58288,116145,6185,5154,141795,35924,21307,144738,43730,12085,8279,10002,119,133779,199668,72938,31768,39176,67875,38453,9700,44144,4121,116048,41733,12868,82669,92308,128,34262,11332,7712,90764,36141,13553,71312,77470,117314,96549,49135,23602,54468,28605,6327,62308,17171,67531,21319,14105,894,107722,46157,8503,51069,100472,45138,15246,14577,35609,191464,1757,13364,161349,32067,91705,81144,52339,5408,91066,21983,14157,100545,4372,26630,129112,1423,29676,213626,4397,88436,99190,6877,49958,26122,114348,60661,29818,293118,50042,179738,16400,163423,89627,31040,43973,36638,45952,5153,1894,109322,1898,134021,12402,112077,68309,190269,69866,31938,107383,11522,105232,11248,14868,39852,71707,186525,16530,38162,106212,11700,5130,16608,26998,59586,108399,230033,43683,48135,82179,2073,5015,196684,189293,16378,23452,8301,35640,11632,214551,29240,57644,33137,91949,55157,52384,117313,5090,17717,89668,49363,82238,241035,66216,29066,184088,97206,62820,26595,4241,135635,173672,8202,459,71355,146294,29587,3008,135385,141203,14803,6634,45094,69362,50925,546,51884,62011,83296,234584,44515,56050,89476,87751,19373,12691,149923,19794,13833,35846,87557,58339,2884,19145,25647,12224,11024,77338,64608,122297,53025,7205,36189,36294,170779,21750,7739,173883,75192,35664,224240,113121,30181,26267,27036,117827,92015,106516,55628,203549,67949,60462,60844,35911,20457,1820,920,19773,8738,73173,181993,38521,98254,76257,46008,92796,5384,26868,151566,22124,2411,15919,186872,180021,28099,152961,78811,80237,62352,102653,74259,184890,16792,123702,224945,29940,19512,75283,14059,112691,92811,233329,20411,138569,53341,109802,50600,134528,66747,5529,166531,31578,64732,67189,1596,126357,967,167999,206598,109752,119431,207825,78791,91938,10301,27311,24233,252343,28831,32812,66002,112267,90895,8786,8095,16824,22866,21813,60507,174833,19549,130985,117051,52110,6938,81923,123864,38061,919,18680,53534,46739,112893,161529,85429,26761,11900,81121,91968,15390,217947,56524,1713,6654,37089,85630,138866,61850,16491,75577,16884,98296,73523,6140,44645,6062,36366,29844,57946,37932,42472,5266,20834,19309,33753,127182,134259,35810,41805,45878,312001,14881,47757,49251,120050,44252,3708,25856,107864,120347,1228,36550,41682,34496,47025,8393,173365,246526,12894,161607,35670,90785,126572,2095,124731,157033,58694,554,12786,9642,4817,16136,47864,174698,66992,4639,69284,10625,40710,27763,51738,30404,264105,137904,109882,52487,42824,57514,2740,10479,146799,107390,16586,88038,174951,9410,16185,44158,5568,40658,46108,12763,97385,26175,108859,664,230732,67470,46663,14395,50750,141320,93140,15361,47997,55784,6791,307840,118569,107326,18056,58281,260415,54691,8790,73332,45633,7511,45674,143373,14031,11799,94491,35646,96544,14560,26049,32983,25791,83814,42094,231370,63955,139212,2359,169908,3108,183486,105867,28197,32941,124968,26402,88267,149768,23053,3078,19091,52924,25383,19209,111548,97361,3959,24880,235061,9099,24921,161254,151405,20508,7159,34381,20133,11434,74036,19974,34769,36585,1076,22454,17354,38727,235160,111547,96454,117448,156940,91330,37299,7310,26915,117060,51369,22620,61861,322264,106850,111694,15091,2624,40345,300446,177064,1707,27389,54792,327783,132669,183543,59003,17744,20603,151134,106923,53084,71803,279424,319816,11579,21946,16728,38274,72711,5085,83391,88646,40159,25027,34680,10752,12988,54126,30365,18338,100445,230674,44874,84974,143877,123253,139372,28082,91477,144002,13096,219729,46016,50029,42377,14601,6660,58244,58978,23918,88206,113611,64452,17541,41032,10942,12021,49189,10978,40175,37156,10947,71709,106894,112538,57007,137486,150608,152719,40615,7746,279716,13101,19524,28708,40578,72320,1096,182051,94527,51275,22833,45164,81917,77519,48508,5421,140302,37845,149830,5587,27579,5357,428725,248187,6326,206760,39814,32585,89923,44341,288753,284443,96368,31201,94189,119504,20359,52073,103216,179,27934,32801,96035,34111,34309,101326,18198,20704,210266,37643,27880,141873,106e3,19414,56614,167714,66483,107885,86602,4379,20796,75467,4987,5017,118857,26003,34308,114428,29198,6686,29697,73632,3739,69795,16798,41504,7207,30722,21436,36735,28067,28545,3239,11221,36031,41889,100010,19247,317673,29495,174554,6424,129725,53845,94986,7955,59676,2604,191497,19735,102214,62954,23844,11872,179525,261436,34492,428,78404,142035,16747,17246,27578,37021,33672,57944,26056,135760,2369,61674,122066,31327,19374,157065,40553,130982,69619,71290,38855,72100,92903,95940,51422,165999,65713,57873,50726,7288,20272,2081,42326,22624,81120,57914,79352,19447,1684,72302,11774,302559,161481,96396,13692,414988,3721,79066,56627,46883,21150,11747,12184,5856,113458,176117,84416,52079,27933,3354,59765,141359,2212,216309,2555,23458,196722,142463,45701,44548,28798,19418,215,29916,9396,10574,114226,84475,13520,18694,34056,4524,90302,62930,13539,19407,77209,7728,38088,9535,2263,23875,183945,17750,26274,67172,10585,28042,22199,7478,51331,66030,26774,192929,31434,25850,50197,52926,178158,4679,181256,70184,229600,9959,105594,72158,73974,2726,35085,78087,23284,35568,51713,155676,5401,27254,11966,17569,223253,71993,103357,111477,55722,30504,26034,46774,35392,36285,214814,41143,163465,1051,16094,81044,6636,76489,179102,20712,39178,35683,125177,54219,30617,52994,25324,50123,2543,87529,58995,10688,125199,12388,60158,125481,131646,7642,133350,65874,3438,97277,101450,10075,56344,116821,50778,60547,98016,106135,13859,14255,16300,77373,173521,8285,45932,37426,4054,114295,55947,7703,39114,52,51119,128135,19714,60715,9554,50492,88180,2823,118271,52993,122625,97919,23859,37895,25040,33614,32102,20431,3577,9275,15686,43031,157741,110358,1884,40291,125391,13736,5008,64881,87336,77381,70711,43032,49155,118587,70494,4318,10168,30126,12580,10524,280104,104001,145413,2862,84140,6603,106005,13566,12780,11251,42830,571,179910,82443,13146,469,42714,32591,265217,424024,92553,54721,134100,6007,15242,114681,59030,16718,85465,200214,85982,55174,165013,23493,56964,82529,109150,32706,27568,82442,5350,14976,13165,44890,60021,21343,33978,17264,4655,22328,27819,75730,16567,55483,14510,17926,45827,150609,3704,7385,272531,161543,76904,122163,52405,2039,19165,41623,14423,228354,3369,176360,85491,7122,35789,303724,4465,13628,2233,55311,118771,20713,10006,221519,45115,71021,35650,29775,7337,10864,20665,21142,1746,15080,1624,32449,10905,105743,229797,7701,3940,22997,178467,57208,389057,39683,59403,63344,63125,54847,69691,18336,56448,3362,37202,18282,29648,138224,35867,10495,5911,28814,26653,31514,176702,26550,45621,11734,4525,40543,73944,121080,27858,155561,14887,44670,30742,8796,107455,113472,56369,75581,183777,240095,133699,153299,8768,160464,26058,49078,103971,21875,71486,44888,17156,9678,89541,123019,102337,3972,83930,21245,87852,109660,287918,183019,686,10100,39177,283941,11274,24736,26793,26214,25995,77011,141580,4070,23742,46285,46632,30700,26669,19056,35951,115575,174034,56097,35463,87425,24575,44245,38701,82317,85922,281616,100333,147697,61503,7730,84330,8530,59917,61597,17173,9092,32658,90288,193136,39023,20381,56654,31132,7779,1919,1375,117128,30819,11169,40938,23935,115201,101155,151034,4835,11231,74550,89388,59951,91704,107312,167882,115062,12732,72738,88703,464019,158267,57995,60496,737,14371,123867,4174,243339,159946,7568,16025,134556,110916,38103,191,80226,88794,29688,27230,10454,76308,57647,77409,113483,66864,14745,19808,12023,46583,84805,16015,17102,2231,20611,3547,95740,250131,34559,108894,8498,15853,159169,148920,20942,2813,93160,45188,210613,45531,52587,149062,39782,28194,57849,60965,84954,89766,84453,100927,16501,27658,165311,103841,54192,207341,19558,20084,319622,5672,205467,98462,61849,36279,13609,147177,24726,165015,209489,59591,31157,6551,117580,75060,141146,277310,21072,22023,106474,63041,137443,122965,68371,5383,42146,98961,113467,30863,23794,4843,99630,30392,82679,13699,241612,33601,93146,24319,18643,32155,95669,40440,15333,34089,67799,142144,58245,38633,114531,117400,77861,188726,5507,2568,8853,10987,107222,2663,2421,11530,13345,30075,41785,118661,104786,17459,12490,16281,71936,193555,17431,5944,71758,26485,77317,20803,367167,158,7362,93430,11735,172445,46002,11532,54482,930,62911,2235,23004,179236,4764,101859,208113,22477,55163,95579,14098,67320,162556,90709,156949,3826,57492,4025,34092,87442,104565,6718,186015,28214,14209,10039,107186,233912,58877,81637,55265,39828,6194,145813,50831,105849,4974,88319,122296,10272,197216,95714,51540,72418,23324,91555,8743,140452,250249,51666,34124,7229,38592,129641,78169,174242,22464,149964,51450,14034,10026,95376,26190,120062,14401,8700,265,31386,143573,7203,229889,61567,4227,140981,2466,72052,10787,10062,30958,6099,38471,30103,23202,208101,70847,467,58934,32271,32984,36637,24107,30771,17109,73353,13650,2098,157040,67366,66904,106018,265380,107238,18535,44025,32681,144983,62505,91295,56120,3082,77508,10322,63023,36700,81885,224127,16721,45023,239261,111272,13852,7866,149243,204199,32309,22084,42029,38316,126644,104973,14406,43454,67322,61310,15789,40285,24026,181047,6301,70927,23319,115823,27248,66693,115875,278566,63007,146844,56841,59007,87368,180001,22370,42114,80605,12022,10374,308,25079,14689,12618,63368,7936,264973,212291,136713,95999,105801,18965,32075,48700,52230,35119,96912,32992,8586,16606,101333,101812,14969,39930,759,193090,27387,42914,12937,5058,62646,64528,38624,25743,37502,3716,4435,30352,178687,26461,132611,42002,138442,35833,59582,16345,8048,60319,49349,309,47800,49739,90482,26405,34470,63786,32479,85028,39866,47846,11649,23934,29466,2816,42864,31828,7410,74885,49632,47629,111801,90749,19536,18767,105764,59606,21223,10746,76298,22220,39408,7190,79654,64856,11602,82156,272765,17079,70089,245473,51813,184407,384678,1576,122249,5064,27481,6188,25790,74361,27541,318284,45430,31488,620,93579,45723,192118,22670,51913,4162,70244,35966,26397,16199,50899,209613,121702,287507,2993,36101,132229,67345,33062,76295,118628,78705,52316,34375,107083,107454,44863,127561,33964,3073,154010,190914,55967,39074,6272,31047,5550,41123,26154,98638,47110,19998,148091,50229,31329,59900,195442,19106,61347,73497,70015,682,45850,25776,38022,148951,6288,37411,232526,109277,27286,32342,9262,5220,16651,23175,46740,129438,78614,121925,66914,88710,127952,5563,21500,34521,10739,14863,191006,62956,17359,16749,67027,56284,69134,43301,35039,58883,54466,60823,404451,75743,59856,86979,7923,34273,83785,32142,7693,268986,197428,282681,17049,22346,22990,92245,107180,3357,37104,96724,49153,7683,31197,43267,82231,164276,23696,20848,188364,22309,24821,158707,1018,22514,70922,27792,45589,59709,10765,736,35218,63479,51987,24275,63588,55361,92929,81964,4658,20122,12330,44058,13065,311456,72224,8337,211229,38979,22590,138478,52757,32595,133600,8838,31549,94412,43391,90056,1585,94802,127271,6223,31889,137038,132910,2165,57616,230152,6080,10748,36737,74579,134062,50525,180532,119270,34556,76155,82394,52595,29258,31435,87820,67996,26943,183878,38007,2410,13526,180297,69856,3503,187396,167700,7838,16701,9199,56267,3661,37407,65994,23767,5708,62508,221700,67088,86978,46776,84434,32088,5612,9149,88244,21685,95151,46750,189612,2979,506311,2594,3628,40074,105039,78243,28523,6651,38058,71999,30992,12764,68261,108991,6165,26450,61961,13400,22426,7490,60890,109623,2070,12958,50355,67979,257096,7213,42578,52121,35716,65461,7516,124758,39268,302,64712,14977,1467,219452,2840,34229,11121,21602,19270,63574,8024,1532,17331,79839,78885,52029,180767,57957,6069,91265,61380,55767,8927,32881,287603,22149,35029,68876,6428,199567,46926,13412,104132,21434,366616,45060,110046,81924,128910,45886,52821,130416,29416,77342,21762,67329,121432,79924,11724,38625,81006,102033,28338,13326,3250,82056,82526,38212,21112,12382,111495,3263,7414,86274,93490,40844,30224,45212,24019,48411,71367,24941,76729,57776,3769,38114,202019,197745,31953,237533,33270,201580,255648,100798,44741,32241,98468,106931,10085,15090,170358,33154,66787,18819,69760,25061,234005,82660,6295,131975,16874,9076,4094,25005,17740,40908,19533,220019,44330,99792,50040,19619,13950,55228,24423,31253,95308,103177,184795,28590,82285,5059,3210,75525,49894,70007,56178,10580,36051,139681,21617,98736,3555,106306,164189,37352,63915,47824,24883,145530,61904,28444,11483,19837,145446,30420,112972,85939,11835,191233,2262,20705,58630,1753,148334,1197,144714,6887,11223,107667,60879,77914,4151,57417,81594,96681,169430,1784,20444,95138,254041,27038,596,7117,72808,13759,3353,126776,21074,55322,27081,36942,39547,139830,179275,4453,713,8722,71399,19204,25785,22794,23923,104114,11291,25458,102309,88396,75288,230440,206396,104551,58447,130857,37247,94734,31548,176529,226077,65159,20104,10096,66881,94191,237909,27109,37404,1520,27421,25220,113003,23423,24884,50585,6286,231877,150800,11789,3226,90004,60642,5053,202400,61442,132531,175329,57138,30116,103847,9973,75367,16452,32360,59119,21246,10191,164804,23305,61051,37348,154530,13214,5468,50403,66754,130976,50559,80515,14436,155492,84017,5472,43107,41240,2890,90431,70188,382,76234,48040,50211,281038,237007,32115,142178,1536,22761,96429,1811,31243,1679,49143,55209,17402,235054,61494,7462,77030,34925,87609,78002,9499,9027,73289,201078,101379,63544,27666,5469,10642,30029,49816,132979,95620,58086,351930,116300,2110,2043,30845,6154,11279,16727,4122,2277,27281,4971,3650,39060,61970,65951,39674,75686,38151,11370,130809,177895,32665,63725,122267,7857,39618,118483,44792,157755,178624,136994,24260,41308,22471,12404,21707,12486,30473,52781,50246,20247,39065,909,56825,103158,128603,31542,1089,41935,32744,12428,37963,84420,33134,72921,208449,42622,168151,127335,147107,46699,38216,12591,94342,85814,31423,24944,2605,87542,67473,192551,4496,56321,91819,17630,6300,256183,114569,202090,33209,35289,34897,24967,40520,43470,5344,10199,34810,14283,10381,10017,62923,49924,23233,64539,13051,35686,19698,11570,135555,120868,44924,87065,52318,52335,47586,140906,245885,109834,78668,9065,46990,25258,72022,61243,40838,4545,146387,10537,11557,17470,36930,68104,46711,24264,79401,81043,18225,120488,24746,84338,81652,28266,13776,21878,46973,1047,230465,73357,95777,24973,210160,62210,58404,110633,169651,6937,41870,9909,26822,191062,76553,27519,96256,239070,2478,205678,67955,58532,20601,50120,19148,78501,195724,110740,8249,109665,27446,30568,57631,31425,49752,32820,65504,50079,3663,102256,219898,23849,211315,14645,4359,91767,9528,12449,49366,7941,49763,107848,8930,27086,50686,9744,10447,81935,39513,46514,1670,29229,6172,22312,137280,97759,9806,14445,22976,56458,73391,34983,93760,174219,52573,33149,59747,2429,136277,75123,165263,91040,7446,57632,48633,97140,246081,84766,151684,79918,93268,120346,54059,54875,77858,32996,103590,45276,11968,19600,25849,17159,132907,42828,16817,4913,99462,103303,27395,5737,74184,20749,21160,14377,77062,131403,158735,10999,27799,77785,9320,34366,51593,61070,33746,47048,29268,36675,30262,53297,9832,82e3,20188,122292,39917,7331,18160,68301,185935,134830,15031,4935,10004,165845,185534,46923,30109,44134,122631,18874,22903,112790,26561,18549,348902,82871,140345,255565,135390,63556,103747,145055,179600,145662,296111,61661,211987,23952,52342,126343,48450,32919,44277,82185,9591,62139,205363,376969,394874,108461,18040,120885,14798,39863,16571,16794,58271,81025,55206,14640,118656,6361,44092,85970,6262,153863,108244,180200,72264,79947,38044,10050,5735,61221,80712,5471,115689,11391,11661,184257,20010,60116,30320,19327,134598,45455,27542,18004,125092,452272,1549,91523,46567,180063,156026,2608,11174,58848,37788,65907,80194,30490,5786,40775,119519,106241,11323,156297,8425,61495,2617,29675,2425,59886,112582,49142,59618,4863,50597,86710,50650,168632,27693,85641,83643,18993,25768,84284,28090,93592,36627,312804,43381,9887,9402,100931,97165,3311,173330,66805,28935,4963,184460,3201,78102,19126,21607,37496,24938,22615,16153,32862,134792,153318,61120,6067,2812,12826,12792,23825,37559,64662,202250,102694,155488,85881,149193,46233,65383,15521,106982,11358,176786,25752,39717,34208,24510,32464,77742,39371,72028,138229,60688,71386,102834,132477,2208,11548,63670,271279,28351,30338,38620,32491,99845,143885,152266,13252,2825,178663,108097,1775,78201,14897,113573,163346,62292,171129,22183,96598,38733,64971,166776,117445,9968,146393,44677,74867,20908,97328,12761,25656,26785,9148,112344,26115,99176,110121,22437,49547,6180,79320,5835,31392,43328,33377,75870,119860,69497,80273,7325,155219,43167,111173,28347,20222,3763,71752,55041,47252,14618,28088,15012,97805,194698,54636,2036,41349,6173,96604,61530,51859,43782,13361,24334,22668,24792,7070,23441,16789,3209,36211,208475,26242,32880,122181,182407,21444,31060,88459,29929,77907,12716,10934,97005,20599,31690,8403,58445,30303,22700,10336,86731,103115,337709,72556,46788,112566,47684,67089,53548,36874,56487,41387,125985,26893,40071,106683,73712,18787,40105,72992,67246,137276,50802,36790,70328,138827,22466,39263,183295,29858,50975,9322,57397,10654,24364,30383,55799,41600,23584,127295,296610,129078,143558,244131,86397,36049,1085,80677,3820,108139,5476,34767,24683,7758,13060,7239,131671,250593,59556,103392,29810,4188,252323,39404,116877,7651,43600,40338,13554,157253,39196,25978,144387,61211,234,50104,6129,10449,93777,9240,356378,274148,4439,72970,3724,147770,78680,62570,115877,40027,40547,36817,224392,64609,34795,165027,67440,2477,37206,23431,50754,164797,46018,94995,170982,27051,7957,22767,3674,27900,56419,18930,60701,41302,2692,84749,339721,61996,111094,80221,50129,1045,8153,62945,19202,8250,37208,37418,32560,79477,41106,88569,33963,36693,5892,30570,1581,66471,49647,11922,160717,29442,5643,114865,82962,95982,132098,22633,22838,94726,54556,28566,205039,162340,33216,16849,35847,221339,94851,26533,71469,1805,3804,12935,45483,71020,36310,65381,192960,34240,35165,59773,1248,46954,155332,96864,4246,388800,16129,57133,74592,44807,442014,38203,42574,80818,91592,26377,36424,65760,977,77387,22628,147610,28018,30561,98454,6969,119628,63648,18170,36854,26601,64018,22027,37279,51395,152934,21153,9430,58760,194742,5330,55115,34158,28917,174111,13171,122326,1526,43896,66094,25325,4234,148354,11450,275,18999,112191,44365,22723,68409,8733,57746,96565,75007,14196,108844,29475,88599,177563,100792,106156,86323,93726,14248,135341,194131,40126,47099,14779,8272,39597,95983,171398,65882,28052,10393,47213,40689,22120,72212,106829,34964,109146,753,648,21660,30047,17527,181025,5619,145357,4085,216883,9359,186951,24779,53931,24545,36197,223296,62628,168101,4243,107313,30321,26642,13049,51059,31027,107912,807,73550,26551,84369,122422,165872,49754,74213,234264,33151,52014,33100,87183,22365,52500,40013,23302,5652,72723,21404,26107,48434,587,94049,168493,96418,32871,70860,31709,25128,443,71597,166253,15670,70994,26341,133675,28280,75491,54756,47955,56028,26182,11952,113272,472197,64640,110753,17919,337,50642,22576,142,87371,53391,93210,126694,15285,19642,85667,14148,1506,42092,52962,33243,11970,20734,135843,57044,58880,13002,219134,22876,64754,232519,4257,43120,321573,24799,64526,124728,52579,81472,70831,276848,17403,74359,23021,182101,74597,23744,148267,12055,7976,5349,11772,67540,167347,65318,18720,127832,108238,22828,90233,9987,259080,118185,73209,79270,13775,90100,137742,90799,70569,15699,19961,9087,67475,57872,39731,8810,134897,131868,146849,19898,3334,2281,167061,91073,60356,467742,74712,188,53179,137679,92769,29241,9537,132595,80119,1041,88962,5976,40171,44911,102859,139059,104558,98987,47761,19272,71472,113864,175377,73338,10857,23402,23758,1591,139864,5644,4076,118760,16427,134198,18853,20291,100849,37423,22038,36677,19071,195521,57445,11069,31869,55718,66882,148490,44,41296,75242,49704,166810,9906,20943,122258,49112,105667,15969,10344,6408,187694,21399,72742,58970,14867,14376,81889,41856,23225,15042,56993,16074,131389,74276,72407,53875,383108,53597,37363,68993,44854,122548,430927,198279,38430,80409,12245,2981,628,2818,17760,37437,238229,7968,46892,2200,3730,34190,65983,37959,112291,87850,70827,6522,20750,73913,111621,41652,19587,2780,58668,25916,85259,18200,168962,95781,42445,102050,7776,57662,103313,47742,96358,41964,66174,100396,29069,204735,19679,27978,7479,40264,22534,61183,36081,107436,58223,14680,23002,101311,24716,124108,12908,5646,31750,40380,14215,232799,102772,14122,96775,61398,50917,12096,149880,67833,598749,124194,155871,49216,790,14677,65319,56917,7440,145744,95701,12206,49405,129269,76199,45732,9767,11058,9047,210885,11051,7392,26307,2130,8132,147526,20802,232698,115660,50060,59789,57344,107623,80343,112676,23291,9866,160971,34032,118291,15719,59730,164911,28975,2659,58046,78480,21854,66209,53863,109085,116045,29021,46481,107552,22130,18764,70254,31272,11300,52460,43933,84738,20721,53869,190840,79673,105300,7561,321817,66924,13940,33281,101046,183181,32176,71878,5678,62924,79535,56646,40303,19559,27703,93042,73368,42187,3670,37376,46440,7023,36816,109628,20680,5940,276440,275233,170848,112093,136996,14984,20226,111441,77693,112960,48577,39370,55707,50314,123404,26570,54281,61372,123391,4857,35928,246740,132507,106646,44241,7196,92258,9825,37688,51197,303141,5590,15476,132986,10955,85782,34486,26696,7991,28813,18858,39546,11703,11365,38185,5716,93555,11925,40121,60002,6985,10976,171384,3887,43394,13337,56346,6381,252336,39573,75042,53711,1028,31781,44295,95925,131713,7214,68125,43571,70954,213234,1628,8760,13391,65485,17320,56038,1710,25248,60803,57399,19839,3870,326,281556,50945,72400,21460,316244,75619,56246,98775,481,13513,55765,50427,7388,123519,32929,57908,27124,61316,101097,57467,30228,48792,10788,20402,37318,50526,155730,34456,158065,145305,17832,43733,64052,4506,35072,205355,177028,184004,187081,68616,35938,83703,10367,36892,93186,260137,51934,89970,4985,23445,26755,21558,7948,78741,23376,124405,85594,68596,57536,49351,12619,56593,132668,99924,109728,71844,71935,196018,65464,17617,14987,89701,143773,33997,8687,22701,33258,2914,4436,72108,85610,9671,49067,2327,82988,1361,1672,44033,35777,30269,24057,10605,82236,616,15793,13919,47249,112086,116698,9484,80207,90574,33304,68624,93127,56101,42210,160929,4827,38995,38095,4701,125119,5027,33680,9236,231236,14135,87837,23318,70261,78893,30151,81482,14332,1084,74256,27532,46644,79185,3148,62615,6981,55672,31668,36825,1849,14536,37446,14738,23779,43058,162749,72199,1168,21346,5592,85932,85302,9668,18351,57135,150360,2080,228015,77953,34670,119302,151751,31009,106725,84265,45214,59289,74178,113071,263206,111009,4021,44449,188119,192629,123592,392506,292847,114487,12831,205858,9852,20780,79648,75767,357014,97721,18166,21005,67950,33226,204009,16536,2987,11335,66717,144910,47950,17262,55060,15063,2934,51038,26775,178497,66008,3427,49433,128592,20036,157553,63861,3089,23015,51210,28696,35933,49942,71135,231518,99620,17248,21835,176536,20676,16944,38700,165831,233253,295625,36723,13023,52745,10907,19423,67972,125868,95473,82875,1183,108455,52685,33417,64095,21433,52438,33191,127809,44505,211823,7810,2752,95548,162031,7185,91196,47563,61721,33359,17897,23682,42806,178101,22874,49707,199897,75419,82456,8618,11171,79712,116847,18783,44190,46564,5346,59046,95032,7893,14916,3214,26800,24172,121453,34362,10250,17408,18888,4840,68696,22831,13162,36005,32512,14800,62357,41723,45046,27247,37486,5372,2564,34261,298500,66509,133920,89138,31305,117697,19097,108304,81386,84106,23802,46411,63304,946,51417,41777,41041,19501,115864,60743,294354,37955,94165,18116,1156,17937,20645,57114,90804,58042,48643,92288,9861,2557,88546,61333,101008,12853,5148,87856,4152,144503,73841,18718,9789,147565,10846,42085,12789,30223,8993,56352,67203,2448,28215,6052,23540,126319,75933,36689,80235,23231,23561,21383,38800,77548,102798,21234,31468,158608,46188,63960,191679,8051,67014,11185,170078,42186,28827,34777,41930,212079,12421,34750,24111,110344,73918,45171,70826,141949,40063,23979,24254,37309,26724,27179,24718,83648,54938,14591,17425,29525,102675,48975,48654,12316,8929,60640,41709,50168,63264,89812,50716,48632,38755,138583,160123,55579,71829,24230,233277,46322,39650,166388,34718,24108,98252,7031,106695,62498,18258,35062,217827,78731,34824,33354,19520,60852,2432,60224,8587,2836,62955,702,20227,42285,40560,95592,62486,11094,53035,143291,18842,46177,77994,1770,9657,107422,172915,32655,128716,25886,25164,156740,119928,165875,85817,11007,89110,33956,12652,65156,180266,8494,36889,19958,20955,96,1264,118288,135769,44754,86671,5632,19026,168220,289120,33569,93821,66144,70635,7687,5642,2714,55445,56636,71545,184182,93133,7332,37389,12643,52315,22729,11014,158742,17050,152889,50178,34601,41945,52136,9948,26914,63548,95721,115951,40759,8960,158258,38938,49232,48325,42234,81523,253019,66128,40978,20048,238048,38760,62928,122560,118532,43687,137472,163689,26680,9878,17448,51035,16211,60834,36749,29178,14241,59868,150086,2305,26477,42422,34342,165341,83279,33894,14257,29928,12743,13957,125571,89134,66712,10952,16507,147839,30146,7249,16565,45399,39874,114565,215780,31990,230881,171477,102,196546,44538,10880,84948,281705,86651,10617,31395,2342,453658,43569,60561,132901,21845,17727,58556,258242,22262,58728,4008,77997,11806,37431,30599,81375,109137,185787,114085,217292,97453,169085,30593,60212,11544,102056,65580,2384,91655,4855,95725,7295,157994,16228,20669,53276,141590,105246,17334,25440,76067,17967,39321,38911,11362,28559,63807,21627,26468,85816,40120,1025,15234,58319,69516,66512,124548,75845,78873,22137,46681,51242,85683,32909,76747,35555,43396,101465,1765,73094,1077,2962,39028,66777,57831,42048,15828,13962,36041,63657,52412,5242,58846,2141,5506,219012,134451,3936,182230,17558,17153,152237,22621,49377,170216,35257,68233,65374,6510,11126,212151,7184,2480,22517,3437,33073,30156,16557,3768,55067,86829,91e3,12350,148650,66017,79424,70885,49066,28250,21369,51213,34533,11510,3258,18176,18465,84413,6315,36411,163765,4346,356,107618,598,13727,285026,162695,8749,14583,7132,63521,184253,32378,25991,5604,30961,53675,4874,84693,5086,34811,26978,56564,7904,33519,51221,113942,69253,6664,125563,22055,220680,102008,742,51930,19494,176108,44424,35123,13025,75685,11759,74335,22250,181453,131147,16984,132115,154311,11991,76452,52609,85351,196,30969,9198,74919,2529,56838,71779,29187,116304,3504,62330,41190,86153,28393,254926,104228,105189,13264,84359,3574,12415,8534,57147,10175,188174,59504,60932,66318,16407,107921,17638,99103,49278,28403,39786,145865,8462,3558,43406,142271,29139,21989,36552,93955,72365,7176,13556,106185,37957,321774,17782,129017,51154,27938,24952,1935,39366,2791,33489,41582,56078,24558,9311,5449,218786,27808,190429,68013,36020,86003,29735,3404,87348,119357,115714,2324,86796,81973,40992,43376,93621,28784,16808,36367,2517,2909,191926,24978,55303,53308,205724,60068,3098,21375,64784,23949,26579,63121,12319,80145,39967,97861,6757,70143,67642,37082,34698,69140,122883,46151,62187,80934,429,19437,135071,137885,222647,13331,154065,327,61778,74257,40116,37493,14855,85079,237641,42342,102164,199965,71204,4662,29368,5042,113914,122214,8955,13149,102503,43173,5659,163787,69003,307084,63392,171080,21390,81918,86666,36622,24126,28887,5736,28054,207170,163428,79891,346467,95363,38980,111806,80828,9200,19288,294896,114468,87405,111715,141705,7015,72754,68463,48738,243147,33397,101210,37051,98801,82847,20397,4940,185559,18716,54718,83491,11725,40803,1128,12128,23060,5174,7745,67007,46701,1571,27807,180186,256996,18975,16837,7877,212758,250379,15440,87954,57755,24719,124057,83461,258,50864,8874,29038,71289,31627,15429,9005,4061,113851,107716,82819,13651,79656,117851,17539,111446,12938,39724,190787,4352,15402,21070,62708,8539,23777,73853,13552,38810,86117,16285,56400,1718,75342,142863,29033,378,110113,180321,32586,23606,26393,160984,207987,23783,8406,16904,24596,47274,11693,46539,60524,78595,48423,31718,20170,9009,146268,15183,191060,172765,1349,138436,37365,10970,40509,225817,20021,70394,152138,21541,66559,66544,89352,2725,17258,91345,7313,3815,115868,8660,40362,4071,103524,39388,118275,21950,6549,38226,32754,209574,29201,43495,18028,20296,40597,18370,47520,202450,24134,2219,8195,69545,38041,136934,46374,19041,159811,84865,58620,846,98749,13569,30714,97246,32186,4479,27355,92973,35214,151491,75963,37631,1561,27200,238083,23182,60756,12291,25766,39355,102333,87362,65741,59906,19538,201575,48772,102938,24438,292580,39964,66366,9004,61379,50548,37622,38732,28379,68180,76622,17488,69849,5963,7219,48143,43413,55358,540,58691,29506,19245,52193,48621,5518,13048,118625,44755,191081,42061,89197,2259,60665,66994,71210,51232,3585,142096,55024,7892,8345,58653,463307,65658,64319,137941,136323,53499,12746,43492,6978,95163,29925,60175,5128,7352,41463,184756,121146,20473,18426,4598,5309,54580,14277,121151,10691,56711,43880,63409,76682,11830,172218,264898,32632,66536,81062,31649,25788,92774,60222,11100,63159,9432,224657,25240,53613,152,138620,163829,2397,85345,12501,37507,64932,38575,43522,65789,80198,78796,35226,3851,108891,73311,3060,28391,93671,39663,46142,30982,66041,37281,68157,26553,71872,81142,211527,39747,118119,22695,2859,11066,20232,168911,7933,197005,17066,111071,44434,133994,120798,12766,227798,45756,132852,29917,36076,55352,65281,129800,41958,18944,84678,18580,168093,132621,39997,54092,27740,32354,3770,114118,103242,43918,15899,18574,145944,3190,123469,219903,24169,100571,62403,16776,92779,14535,17168,16475,14304,37231,1712,28218,242754,61688,28980,1318,51359,222657,99200,67989,31772,23932,35351,201251,49041,27306,19128,40135,3986,77333,19649,120683,151927,21081,7076,78375,77501,101599,8011,89585,96715,58179,5378,102138,106793,26051,217276,4197,16297,27014,46721,13322,22806,5278,29629,70632,9647,71519,58818,40603,128530,8903,36770,56900,31483,26935,43845,34265,34920,87658,6114,84767,64250,47318,50720,19264,162514,33357,13117,6705,46696,75032,71054,87004,42035,69138,11903,99854,102328,19611,34525,69312,6431,49842,101600,133178,108751,41829,89939,225664,48916,99556,9195,130387,5960,36857,116724,53518,94002,39077,53996,6945,22261,64291,8314,152785,57588,16522,9091,5048,87671,35441,39509,1945,12423,158923,178413,37549,14095,1475,73188,62878,4819,24012,68534,42606,4010,120809,57497,59564,101758,103718,32701,80116,12345,95834,46918,21468,53213,15665,31200,3867,5140,96013,250744,21016,10069,13968,35449,180829,27683,39704,59956,22893,3115,26293,32785,75934,62445,141162,62720,2018,83638,19949,114012,95006,3330,99829,130935,309272,9565,55874,121727,37017,23586,319858,40970,27602,8625,112329,61060,100088,118525,25922,16232,1907,60671,51583,44553,80993,5262,94679,8676,940,20736,11823,3020,16476,12340,152600,97416,3703,25744,66826,16245,16876,46446,84798,74227,176020,45192,61955,75496,23946,23626,40372,26036,6149,11822,30582,16541,41914,82385,232823,40921,80773,14930,3631,7517,39619,4348,36180,126106,138939,62611,1477,113512,47321,25052,14546,118881,29060,23589,128322,36795,18401,137921,104699,267929,36194,172791,18113,4766,188215,30083,332586,94089,5805,77909,22194,68234,154976,43220,40660,70001,184893,138095,11128,103010,22663,5108,212615,8485,5565,49222,54614,26530,42639,16319,55062,152662,105595,21114,22216,10294,68158,10436,86950,7206,62115,3977,3657,59874,456,118617,18156,106663,112229,80992,17442,8217,55551,5133,34344,251927,51153,39364,201321,7816,66803,23057,156724,145664,14276,95705,979,2796,6875,13429,212525,50602,26276,28284,3424,19465,52397,46963,31420,51399,206476,92317,48851,637,100820,83349,10317,60227,21972,6908,282439,32857,224767,95629,83882,42106,87338,69757,29840,68709,37665,45244,114577,49188,175943,54009,186746,106158,70168,3358,234002,50555,9221,129338,9562,20118,32923,78479,118280,65752,4977,10474,102174,60947,129006,10570,83451,8598,8078,159367,123785,80438,16742,5905,5281,181513,42402,6977,163136,93179,42191,14968,50421,112401,105440,33456,57347,121611,4221,94954,36517,24046,27796,6255,33394,72990,135408,116627,1233,57874,25654,95419,68156,401399,313338,55208,45573,93124,119251,47200,38196,11909,130667,45391,73904,64964,167846,4137,115606,52036,62214,7969,160925,7187,1132,134835,40309,73195,64494,80472,444841,61111,26500,45323,40743,53625,52797,22659,15631,29739,36706,28841,39147,102836,26794,10536,14845,87305,45874,12241,127587,83833,57183,79722,30844,41304,84655,20825,92500,3722,25655,27811,10157,81634,31362,34088,92487,70123,22190,185100,72658,139035,192523,88241,2078,230490,44528,85638,100198,22088,29982,291233,241062,13865,4445,137791,37835,107218,31726,19718,38234,72528,23046,19177,66695,5109,17251,28077,5617,21554,47839,72425,133825,1486,73065,181275,141508,21768,62971,63082,2512,34200,9904,120309,6392,91243,68416,268253,41199,116757,138551,185526,41246,28986,4093,19057,17295,4148,245766,122360,35356,112075,20301,75441,10998,7977,19769,62922,937,63547,100196,26427,157820,20983,236696,22935,8140,90315,156004,47204,140973,7726,45097,52725,22636,23436,257282,105247,522,88389,216031,202204,46812,211666,19693,68828,81691,45925,11256,30292,372,5236,167826,88328,232776,151611,5360,82104,18841,80393,25465,18285,20320,72377,31730,33160,45803,38715,27705,37379,24163,18360,103586,4015,32305,269494,91252,20080,36567,54650,7797,57073,12650,31164,42209,6375,261663,105528,81661,106002,2800,5375,17247,43151,4442,15727,194619,100855,144898,62320,78465,39929,16454,1967,28311,61363,17219,9395,8745,121445,76939,80385,162380,22009,54191,44248,16299,122830,48151,74429,78291,64755,14238,44966,2511,17712,67954,93583,829,105899,49935,84750,11591,33185,85447,42717,27409,208542,28965,62052,52525,5597,25694,65594,16343,63224,276188,12475,9331,127507,38522,57287,24128,133161,79723,105548,133695,48917,27558,43278,46520,13778,141954,110785,83366,17715,46317,105763,66298,147013,41086,94180,16478,220447,44611,730,19722,78975,117889,125643,26254,16574,18480,65006,15806,38549,246418,46052,36056,8440,34984,30170,3163,59800,4458,115442,4283,41970,33507,104078,1653,22,121158,276486,3655,6338,24048,133421,23641,2161,24422,36006,8086,10675,181474,12307,29514,59143,14729,52509,87128,122470,19446,80852,33314,24573,119864,14237,9652,57779,6612,51851,15284,98871,90581,124466,156831,21190,22015,71380,161906,87247,69201,18392,17908,108470,72962,40719,14338,17911,95260,43339,20610,78916,20710,72451,11315,31448,17263,58853,178878,48111,116002,45497,80506,82605,85880,36300,121755,25215,36118,301929,88728,405223,276136,553,34704,212438,49970,78329,922,20711,25036,257130,38295,145369,18128,15385,30829,55656,48345,8012,3561,28004,122041,192900,58338,112508,41085,29976,87040,47117,23905,4336,92061,138880,97407,42083,172121,6256,25192,172671,5,93568,1420,12677,31605,56743,40620,6015,78415,231077,31298,80026,13902,19048,24924,170586,32955,176119,87859,36731,6773,27711,24658,26475,115216,133207,93250,95820,88522,8317,5714,124047,55219,86860,19677,23961,22928,162209,8904,225992,359835,56084,96201,29392,96558,86071,93643,55114,13347,8183,95129,82012,2017,123336,34219,115554,157159,47747,101684,41008,18735,193781,104151,226906,7552,179874,124113,31159,21162,44010,14771,51268,166128,31382,73124,77438,92830,205709,12113,1292,38937,13114,1334,2118,15597,69581,14449,21934,76618,48728,67038,14967,51495,24243,87736,147249,26720,11119,46063,43749,5843,44147,152629,133428,65703,14269,45604,57982,28672,55616,45957,8438,95433,37698,220862,132034,39456,61870,4161,26501,73560,56418,9845,4654,20916,10456,88920,119358,9015,65931,96507,48029,38534,21676,109081,43078,34943,25089,6131,28766,23665,5477,10255,16695,67,45778,42443,42770,29534,23733,100513,62617,42630,48746,14191,43753,50295,26007,8792,57243,43119,54725,164253,58250,112304,131796,25165,4651,3188,24831,47748,3705,19540,13211,102095,5593,18699,23666,32005,117571,33541,60584,74573,86311,99443,25172,27222,168938,7143,11853,53560,18834,19960,86522,28217,53266,117700,72989,34323,18721,66450,34346,74056,47217,202002,46269,9429,68582,75458,37823,82843,96652,32549,145144,27958,19820,158086,31955,201406,135379,31207,192545,12950,51704,9094,248263,76147,64028,110009,79407,89345,99284,223492,47966,26848,15359,201137,2861,110507,71231,72297,31851,118777,71039,151051,240855,16333,50766,14727,7939,4149,80908,418780,88378,59276,1327,7284,38576,79814,65820,42199,84860,49574,62596,12396,70598,40117,8648,7994,16836,7630,14047,359699,106878,525,29037,28064,13380,11675,50669,74216,103539,180314,27449,56299,172344,19274,7301,246099,32043,19422,36506,129317,6806,30140,4614,46639,66926,932,86600,6322,27847,233103,10541,39025,34887,3517,12972,26220,2031,66561,115015,48658,47596,12714,33845,3893,16165,35237,89983,14769,11962,147224,47018,29977,27979,5552,82338,86023,131368,1218,24853,237840,132193,15455,40873,3668,65351,53388,15229,59889,272245,47934,11858,34347,18038,90853,86981,300602,19343,114181,29362,84921,6095,106059,79472,38015,1206,48741,6208,8e4,21916,17423,6002,108083,24479,34931,56661,9511,26995,100694,163853,35997,81254,58321,18919,171890,86877,91341,74503,70477,53412,7027,59281,39892,131302,5864,15947,61301,67466,162369,47956,27874,35624,282324,21270,111847,102548,41482,30955,116737,28264,8592,55458,22301,75090,29821,30697,51709,3041,19208,8038,24634,30467,87509,126428,19389,18814,152686,20701,83474,45832,80891,105808,11378,153223,120770,98186,150633,49838,9141,12755,30962,5260,74490,21256,31678,65062,33326,289838,187831,20595,89768,2805,58535,10844,70085,12090,2451,138068,98544,24461,4511,6754,41684,28203,3383,65355,82833,30161,83924,234361,128424,28921,222594,33975,125491,34069,11508,67464,144226,41850,98703,34371,7901,21254,38398,65651,23549,53883,213340,123269,12028,71764,177701,28758,2623,68395,11549,15232,68603,9660,63116,36079,57093,31198,20475,48467,89984,35619,186847,107469,31389,43631,73867,41949,68841,114250,1605,30564,63403,17588,27680,99533,12641,70325,50428,73426,78379,11855,91651,72081,91720,60198,15743,12065,83398,140046,6761,46598,45900,5068,886,62448,148968,37347,19405,9680,15819,43496,63370,75667,163700,37639,3633,22774,34341,183131,134335,37200,23915,7054,14194,12970,26438,13350,285521,25594,8219,104410,91039,168804,138480,149734,15907,33818,61132,60082,4622,110187,56736,13551,73571,3945,73463,65498,17758,263266,17593,2710,27585,54469,38200,45367,63754,28881,3473,12791,98287,31895,65787,4463,94536,24951,36332,59901,28803,52130,86403,7668,181822,74831,18977,9850,177206,145485,109798,7292,31421,26280,77211,58511,12507,127004,11113,147,8729,56208,43066,79926,129937,31345,83947,39915,46146,98763,42566,1337,13192,18323,105163,80570,117753,16555,72883,11077,159438,40764,70933,83329,26066,12276,72059,21655,173836,126713,69454,153482,91585,70644,102558,110483,6764,127864,190133,3961,101798,20945,71138,82402,90884,69669,44753,923,16939,59700,164258,25969,27082,31399,43846,6306,246093,51342,6153,151581,202801,182731,56475,162188,89426,141356,14355,121815,27536,28023,65257,77523,106668,127314,24947,12790,38796,169698,23555,10725,44573,183083,42088,62716,43265,105958,32050,44067,50118,1668,3874,6243,318411,16599,1691,94999,52378,28671,216728,123258,2059,34969,69225,5913,136280,171443,141515,91662,22175,135282,80020,92270,1663,4808,4482,3495,34691,5226,109830,108512,17342,107488,11606,123190,100247,29666,146527,113014,15794,30894,13224,39585,243192,22351,9903,7836,47699,11078,25468,122291,48821,26780,122679,75521,81450,630,4895,92900,55074,74293,17441,3563,111657,103102,51613,12318,52370,36191,68245,34269,40445,41354,122901,168604,182500,62012,42557,11259,24428,115113,86345,12362,3909,78430,86852,134602,20459,47853,93879,22577,7659,3688,38555,13349,17381,56715,91639,12493,10895,92438,3142,37057,28928,2004,36427,32268,34222,209974,10432,67436,41989,173518,107930,27079,62729,30908,55558,5828,45031,14902,53546,8204,144263,60255,14520,88212,86582,109589,69356,8064,47449,8505,66558,16886,4844,52817,111260,215129,12941,91118,650,20770,6273,73089,40618,62790,2873,35002,14023,97208,19386,102646,36993,143736,135457,35385,113601,17893,32627,84439,100619,56016,6581,57264,172160,45452,111710,203627,70131,24100,322787,1996,35665,70078,22358,90922,83658,4097,63200,58499,14542,99153,52159,6615,12414,63415,31986,16823,1579,65405,137809,8841,16898,48082,259,33014,42375,12260,179850,73667,91389,98882,29532,17311,326251,41092,5928,20742,44964,48019,43505,9317,49265,6643,192712,48424,163487,19861,20113,70848,31928,105333,23685,78563,14638,54755,7158,24142,44018,20774,125255,20331,24280,10163,1285,2336,39851,4299,117269,46714,63816,87779,159624,11731,9971,990,137317,108831,50994,74554,162680,23640,131597,146962,170620,34829,91205,21184,1913,63616,18427,93136,156592,17519,67565,115882,138220,78622,88535,18115,2711,33554,109492,54298,971,24914,25863,36363,45715,27099,194995,14299,178181,111488,72395,322385,157719,130787,11897,81843,83999,11369,49280,118604,40922,61332,110343,53407,75639,40582,300440,54722,25637,13694,48248,48278,194521,56203,52779,48783,72627,10953,376,16733,280238,26351,230789,15132,25168,137270,3588,63704,73376,94031,74284,19443,159557,9697,39901,13351,119050,15406,146455,3460,29556,75195,37673,102524,92329,47289,98413,15311,100684,56345,7116,95480,11590,7200,167,23610,58426,17730,136656,27944,53151,2701,8824,103124,3017,90744,113588,53216,79736,65940,26931,498,29568,80540,143543,21292,1740,59268,16561,180816,42323,50174,40890,52866,10703,57169,4700,17191,4424,93511,49698,166650,26972,48631,165169,82879,69326,202970,4007,2376,231325,139592,22119,62851,37504,68816,58345,67398,186643,43331,277416,53749,15746,23102,17432,4793,151138,48822,54265,48203,198688,14305,54287,2291,18018,113378,123260,7180,97549,87027,120085,2920,76080,8190,102005,5641,64580,14955,59802,54028,58884,19367,81779,412567,85957,97053,103637,78871,29364,27637,141728,4767,30686,112738,130146,42745,12730,105040,14844,232,210944,36581,152317,135543,29744,3129,55647,58149,46319,27265,17499,28005,59948,7170,34138,5702,293047,110892,408,91760,218674,18469,46095,81403,14389,4610,35672,73060,11006,74848,104820,118143,190357,20043,105358,141735,5115,27093,45924,123073,52599,29433,9616,238350,78610,24851,58858,26769,31969,24613,18294,4982,32735,39639,143563,112073,202205,12567,4873,88601,44897,81503,101648,81362,34662,85277,17574,48173,21435,221188,40215,39576,80786,26544,64668,81841,10731,37733,247986,149188,127703,495,18382,54388,72446,43071,30974,198723,89608,41360,190,33045,8386,31658,19992,237838,119015,137622,50890,100913,6460,116233,267230,26621,104129,65114,14190,41542,14888,85962,23342,23041,26453,43725,71809,45186,4770,46452,53894,56616,221286,18973,9038,109299,55365,19366,26863,18808,60909,69353,41738,83463,12100,68561,72860,3980,13796,49340,12332,31311,27418,4255,53430,18976,45523,510,14224,30477,26581,4530,3651,101663,139840,22709,150861,31996,63923,120623,262522,3076,10528,2929,14672,130238,18087,9816,121894,100308,25085,55111,14565,18952,53293,2042,369988,23674,61789,133529,28783,108293,35477,47119,36448,71049,40015,33055,78598,198442,1833,159937,40654,77444,189245,113153,8621,18599,38553,35223,166072,2375,11659,21786,89523,6032,12116,63046,159398,18454,3678,32521,47626,11411,103527,38896,42946,15696,26370,10185,8413,37080,165583,4331,63555,14907,72220,50056,6623,62236,36565,49783,10049,17503,100581,55951,146244,24724,9626,17969,25524,109300,173965,99994,101056,46459,43647,53737,277968,8347,123521,74858,33829,44762,77574,877,81377,222525,123532,30602,43881,53145,2973,16284,81940,61281,127044,63620,9875,14756,114829,19032,9202,52759,119141,23928,120551,19607,3599,33401,76821,73233,117430,39968,36539,7071,5446,121735,194059,15206,45283,6706,15603,65615,1207,165723,92275,34773,104447,8396,32353,205240,164323,13600,60555,79205,25532,22907,33410,57480,107111,69630,32137,47832,70913,33161,20321,2371,117348,10714,86246,1625,11763,17900,268,78457,99175,97940,101092,86660,32221,14041,128504,125080,53744,124263,31017,13897,403,31859,21964,5633,111630,5547,77329,17961,18241,84995,25984,12983,67491,62168,47262,5241,297,51191,7351,8967,147212,82060,16821,782,11033,82431,62957,5026,43459,77963,203477,53528,6247,191852,87774,74164,215654,13467,1522,219964,28589,244104,16242,117821,67725,72570,156792,17186,15979,26990,44128,193014,35276,57125,16212,166451,68017,6905,77608,16364,53777,75921,76426,37975,26203,269296,64099,84122,12077,38533,830,4407,20139,963,43028,38902,42911,37503,83343,85045,16979,1165,60835,137387,58380,86990,110066,134540,56331,193845,81238,17922,163093,38744,110641,12502,56404,34862,26865,125964,12965,111648,25547,7771,27196,136980,9555,29551,107158,57885,18831,37705,35505,101742,13970,102109,62548,124657,23328,11124,89592,146376,248050,6241,22033,18337,80685,29898,11908,216623,67721,106162,146610,21377,15085,91552,42041,62560,122532,125336,102365,121537,142559,29693,223919,11515,110495,18776,22494,5895,185059,103592,229351,51220,100102,37027,257855,29359,54123,36066,106493,12244,79258,32002,432,56205,94836,90182,6726,14762,29391,48938,26864,38083,60364,3310,60192,14766,205567,57504,110760,22649,24666,46333,21517,3430,13135,28873,27052,158809,11597,20529,6695,23138,22960,37137,45574,6545,305877,43423,26153,24769,59844,14501,10430,134352,56169,13213,103432,49523,35181,13435,12408,129475,64620,230854,77390,51990,15653,83248,33466,44571,117828,51481,2187,10559,68019,18021,54895,48247,18354,33737,4554,108595,37288,39767,116707,9175,3726,108877,21616,83684,49862,1938,8543,276466,20134,108498,48770,102254,31914,131520,185291,100559,51890,209,19526,76471,50544,71814,99351,8172,198526,28816,20419,9109,98389,136777,76479,75596,30635,165417,48216,120220,25955,211071,39314,24308,32164,2559,146280,43403,9233,17947,90585,1786,86920,125662,2457,64741,32152,32918,122882,78538,44001,31723,56426,23375,103172,88177,145697,52506,49319,68016,31664,41488,18486,110400,7030,28241,986,109199,19900,42147,56864,65287,49183,7858,24e3,30453,840,16673,25907,68916,89927,6309,158335,36407,199737,130464,13137,59603,201778,195292,21015,42466,179062,172561,89492,11075,180407,31868,72493,20998,60217,9865,19530,39274,130266,54539,21623,12535,13505,40641,73375,4087,85633,2153,3117,70680,55788,92096,47509,98493,37490,271936,151475,3032,16171,96642,34106,78425,125761,19591,3366,19316,54508,24183,50786,194248,91528,33253,34622,108355,41741,705,3814,3883,108929,13203,67831,10142,59754,68208,29128,84820,56880,38794,24972,48571,40821,40476,18137,164254,24064,236309,79181,11282,395,39169,2013,51587,28551,9645,701,109513,115899,113566,12762,62045,58322,103726,41343,40866,244102,143816,2490,70346,40973,52618,15412,30720,104315,38917,42027,93676,17513,107418,20706,123890,13399,97727,24044,87962,65606,44250,98044,65276,74790,101473,19350,91570,1326,87790,172042,7577,100813,86896,85891,41512,108130,27794,14875,71431,12835,156250,58135,3759,22476,42176,115873,34686,56523,73643,108505,51491,20838,12721,32863,45700,29496,13700,34294,55360,29206,155942,123812,7706,163234,203,132720,49358,144431,8130,175788,35818,3270,76832,25710,54095,97274,28779,94621,74396,19092,128242,58067,20885,14670,93255,15107,63291,23654,126900,129421,59294,262659,9798,3251,67344,28600,44629,50672,29072,26999,31526,23183,49175,165843,175455,17282,175411,32022,45989,30298,90690,78118,83156,23749,35636,31317,7069,80381,94561,133756,14960,97404,6138,41065,78041,32843,16601,34123,9559,146529,123377,96395,54441,42012,84257,123541,10745,22139,106459,11720,150883,172651,154996,110538,4728,53447,25704,2009,71152,119354,21166,66604,1429,216162,8637,122250,63520,27180,29172,36124,276428,107787,77184,4680,14952,104903,24418,14793,51561,52931,8371,26342,48526,7118,92066,67280,40653,8847,34597,105438,14198,50163,61188,146286,50315,41205,170829,161496,585,197359,95056,1687,365794,91349,48507,5804,49263,5146,104902,96365,117343,132222,46084,96919,16875,8073,262381,79982,52663,13928,16056,153908,15145,109256,132308,18763,24904,167644,13618,40750,18686,147124,114709,150038,52849,2938,12568,48617,8778,5459,44202,44591,74914,17183,248689,13878,7822,80060,23116,194037,18487,2067,7798,43077,33678,244028,31320,74273,2794,19466,8218,36280,183997,48124,19416,29656,19280,98734,7715,18311,30701,133602,150307,126956,7378,2933,79903,13178,12593,86571,26604,92446,13574,44205,65699,427599,21118,8245,14407,27877,47936,33542,7916,26460,117762,21596,37818,2249,127359,209394,60044,47677,308089,36791,154971,31417,6998,150042,174360,12255,43009,29335,48739,3912,101398,53340,2580,146939,151295,45360,125275,15273,45383,27456,48761,23314,8750,60801,85823,104759,27894,123685,66968,39480,26917,55290,83305,2696,98390,57569,145853,340733,4919,20024,52268,30884,7413,203685,70989,112855,4129,50536,349518,68205,332641,159581,135361,236026,37563,176404,64899,6578,122033,63871,1850,85234,82089,66124,74145,121098,107351,12687,36881,117334,13136,14698,85933,93866,18047,32620,310,15094,46e3,88451,23632,36645,27940,87618,80520,58892,20976,27702,140090,96075,67841,103292,238964,87778,107338,17019,83427,67522,7302,8261,47570,116787,8730,80484,61772,174422,56005,131193,52875,14588,28471,59817,9586,15720,158155,51307,109734,15196,11025,59331,3884,52626,102602,84797,25158,27314,4437,20488,76214,189248,35023,114952,157376,2827,62439,102878,129749,36405,10329,109339,108633,36662,1254,13267,5470,87105,58004,15397,10434,159667,21864,52022,179464,3013,32147,31496,116832,18494,105502,129227,107267,50033,13481,9954,24267,22141,16257,116154,36185,950,115685,11305,176708,2048,178671,112573,287867,162328,497663,95170,50979,193861,50987,30368,136257,31830,46549,15119,169876,23788,17462,249887,57377,1949,35448,14791,43769,210091,3783,34612,282103,88380,245190,5457,20491,98908,11402,86899,117916,16028,162584,60644,320177,156096,31065,55876,22e3,77655,9992,23397,13757,317623,63978,215255,2443,17648,93231,27388,104529,93807,55505,140477,12046,112040,70887,40152,94365,112353,25063,114679,266061,71248,119555,15589,2244,617,14129,211431,70110,100652,7777,4383,85911,89221,21010,120615,58357,86405,37554,41647,18,15143,69662,60491,14714,186134,148344,42347,5410,168175,44535,42449,343894,129417,99682,20659,27272,140483,63455,222159,17536,13722,42637,62324,11976,114691,148109,2283,32057,182393,4295,147364,33705,2075,44303,30274,28331,63740,69740,29148,10346,44862,33716,73937,153333,12930,38784,247159,2515,41053,20256,83368,256189,54639,115240,5096,24661,175419,153552,26516,141,138176,63885,34115,47222,55709,2765,28479,38875,236608,12229,22921,77291,54426,45388,2860,57787,114579,295139,105782,17826,71066,19119,54364,69385,16568,12323,28057,33346,34919,124763,155533,101386,31644,8627,49001,303600,29868,63213,9103,77280,71333,9696,138789,37059,24823,5057,21352,32368,114208,56803,19424,10445,58514,8661,209508,26187,171838,10460,63454,14016,122504,41328,21329,46618,32493,38225,7855,31763,7945,29876,8734,6438,24205,97490,139977,130740,47323,33195,85390,57194,13813,60600,21313,96251,7699,27584,170521,139271,1363,4402,336738,129223,84983,69150,13147,3590,163929,207225,155260,55916,20288,4503,8398,98490,11773,27512,37113,84976,86558,28365,11756,116005,182148,13733,115313,47644,67208,85069,9347,14995,226141,14704,101835,41159,35314,13113,63526,214039,29978,50446,83339,17440,129441,72522,118641,97816,24907,73844,15717,118884,167255,96509,162793,30847,36849,51297,78974,77793,10427,1873,2972,9999,35074,28190,64297,146836,46298,60038,163007,108919,61219,2403,75022,127339,4233,110389,69022,9833,128097,88016,79390,222936,22570,94657,28462,56956,38803,81536,30474,152794,19566,16481,147408,74574,81895,20731,1918,1366,76367,187321,54494,24366,21690,61696,33283,107477,77499,31112,414383,74362,18463,218441,120929,59848,258629,201924,69269,454,19989,13054,59894,3623,58908,20681,35723,78523,102680,38988,184112,108087,50944,132704,52966,21699,18860,96349,201411,82697,85395,95658,5093,6427,177894,44191,32755,26961,155739,6249,31310,81030,26574,84311,120155,86730,113535,7424,48888,13516,45747,98098,20077,183995,81945,43210,26704,40420,75831,45648,11180,6855,57927,65528,124096,34851,2598,156633,107572,127352,38169,123845,60142,62722,105584,232364,23211,68120,1601,22169,89299,747,258039,80572,7258,152249,11862,101204,8834,121434,33761,19175,133142,46343,40178,48723,3589,41977,30210,38868,62257,10087,82658,87827,90646,16415,47552,351723,28298,72225,91146,272760,1701,11295,1652,109651,300747,51863,198800,29446,11794,32345,37538,22356,33102,37590,113544,37970,11478,179743,25454,103417,59905,221970,105196,145604,7817,164809,102360,16974,75840,255333,56902,6659,1954,645,59400,67769,7689,18675,5215,13793,20536,27852,3387,29523,259718,16860,94625,43143,29245,15848,233581,22685,63631,78557,22836,133302,84513,1348,51826,47129,98836,58284,1830,1749,94642,10933,6145,12506,10975,13879,103781,144434,10268,28409,32346,52968,121567,107374,77268,23686,35097,10501,155275,15303,47136,21102,168741,55332,90385,15996,84817,681,137803,25054,142275,6163,38175,8056,124296,240642,65621,4934,178205,16101,62803,60964,18230,100622,76465,44689,14545,9543,47514,16852,93380,28048,12047,107106,37575,101485,77047,57326,34819,96137,76916,6469,46264,115983,75768,87668,69942,13027,165,8373,114231,26434,52844,42799,182044,23580,146254,38081,43236,33883,146220,382894,14606,46035,36481,166621,35417,95382,2957,59384,60428,36358,66343,75378,22267,22950,83528,17577,56474,25285,4619,179691,75355,95836,53295,34588,171410,4487,14679,84208,44015,18562,109133,54101,11531,86052,174479,303157,28095,9953,35642,14564,39802,16145,77606,117406,53038,121117,53624,22062,1212,7632,127157,237292,189087,10478,127345,102515,181997,86752,87623,10966,121602,68783,68681,83042,114380,138349,191305,67176,50085,39016,1427,42384,1412,67118,122616,72389,25260,2237,13576,137346,19938,20304,2191,68759,5373,61364,238507,75814,23931,69565,38993,131741,38364,12528,87762,5679,129853,5310,186831,32653,90338,260176,389531,108118,26843,43985,50175,30563,25106,56965,18130,140428,4542,165503,117991,24219,229605,1819,129663,1240,3797,76093,18398,71339,51919,93043,27175,47060,216257,6483,35051,1217,16512,80798,129064,13225,69339,8548,237079,72298,2575,34280,51379,117910,55671,53345,247552,29486,39328,140821,34681,57045,60177,5004,90269,78522,2479,322607,48474,61296,13057,31558,4678,59271,6699,27044,31988,35944,12503,83480,4389,136508,3781,114121,70279,4488,155829,42214,2898,68191,75695,305850,45041,74344,106509,30087,17429,93292,12477,290,23080,114802,35714,18751,26554,105424,17775,2144,2412,100610,65192,113975,52975,180272,135050,129815,76238,106483,21440,63186,4260,46189,9711,28249,4169,23429,23390,8324,141585,63809,67668,38457,38063,39226,59972,1189,203916,62368,14403,16949,61767,85801,1739,40147,35049,76757,33124,62102,15780,103593,103009,53484,22952,67973,114645,6566,5245,50462,7601,8288,3513,194571,80276,1908,54592,5124,58571,2513,6800,273997,193904,1119,17991,117245,2508,129156,82366,26278,71465,63341,56943,39662,106116,94966,156875,9736,2204,122308,94418,27134,1280,24539,49022,45314,3764,50904,46424,30699,28087,293839,9400,33646,40165,822,147499,50263,116179,29085,11863,31314,5578,17797,5104,12454,1604,15342,219206,10232,67800,94261,25872,13565,90339,78971,75377,26649,41184,47695,11514,35369,20767,14227,41953,309396,148270,147938,33074,14453,27499,109019,39018,25738,240196,158931,52820,8612,95853,21524,137010,84901,70869,70021,116794,48404,38771,6732,1070,70990,187297,49140,5238,576,3564,253975,16027,16483,2811,37775,19034,25259,4053,2e3,70083,95774,19713,33431,92703,91314,42381,288770,48194,95985,3991,77418,13406,241328,245086,56533,35275,62725,9246,51924,70181,95331,16163,31410,79016,39312,120878,119371,275987,80124,27712,9186,220,23598,146167,85209,68238,282190,57048,31273,30555,80913,17594,75779,59160,135002,101219,189377,29225,96735,60126,62522,104e3,27620,86814,17240,147533,11001,5425,43682,410,49460,87270,69480,46315,59448,1816,76201,9431,11788,87960,29063,65539,47347,11678,33846,7008,196704,9895,6753,8633,120892,59970,572824,115934,6646,202559,892,48351,37611,251282,57823,67263,57750,26527,34485,90747,7685,88370,6144,64182,1709,41969,21458,62327,181657,49247,225330,122600,114574,107124,85361,111833,63243,71420,15655,191178,72430,18063,51425,54002,12364,53225,86557,18193,97580,41232,138398,67821,128724,8944,233212,101353,52099,42127,14006,120107,32789,32132,3498,18123,33758,56058,5779,128760,59888,98869,18445,84702,51911,13234,218379,20093,39031,8074,70195,20708,23462,24355,131384,60189,26390,10403,41060,7140,10781,49410,42261,87202,82566,41663,43105,60276,2768,5733,74176,28329,2297,145430,131632,83615,122915,105441,655,224102,5284,136426,67763,16294,188511,32538,61049,27893,3394,13951,159099,28542,17930,145360,9492,190122,32285,78855,26440,13570,58648,73908,4239,124561,2444,74172,53131,11468,10794,73566,11623,35343,64710,30481,4163,10328,38309,29901,10538,154377,76132,92405,24839,11679,3465,13449,11637,7824,2337,57754,1260,14458,41118,19878,38661,13416,159180,37074,163164,54137,28627,52134,184900,8520,40385,29546,30502,22386,66527,107458,6850,24022,47983,30603,35083,8934,304066,39500,9,28261,33026,77251,9374,44833,116312,34990,29236,63563,125639,135405,165398,159055,55690,88141,69643,236964,31983,25572,20436,36746,60896,31850,16179,11828,5888,3043,66368,9750,31167,7915,53111,36430,1333,64344,93659,20061,60596,180191,51630,6792,30244,43509,101058,22409,420,44210,109783,43223,27030,72477,72831,32679,29235,7675,47556,12258,39907,149412,84926,118247,24692,71717,105038,86009,45941,41189,89453,29856,52543,30627,226798,67303,59230,67415,34408,1367,99685,16867,128419,52147,4111,125381,117881,16173,44093,102224,31575,23234,24870,83790,127407,239098,3200,994,1255,100903,242275,117266,55116,38205,16140,29662,11307,40414,208793,123355,56470,4862,75600,30119,58218,70828,24075,26974,7802,192353,4851,5475,78720,66596,3409,28573,64396,30381,30690,59859,88256,5406,99945,103064,34463,37727,24238,86643,60088,4057,23741,5967,162904,38240,28356,93858,25510,122879,6897,3278,7057,11971,4400,35461,211413,21395,59615,39471,87233,55795,128426,3051,22470,41950,14705,3974,180108,80476,78442,204996,91987,15634,67610,139015,142373,35611,51134,10387,4353,153456,57749,181039,14183,68447,151532,21107,36452,20551,3186,46247,46383,129666,88736,140662,146243,2066,8360,7978,64818,106963,17896,47801,10723,114821,223295,74192,3293,3393,16987,74064,11277,91622,4270,29828,27951,387869,103235,1374,61988,120083,477,145892,128378,11779,211263,61354,18221,17869,46530,83061,108538,157981,90608,67199,95080,49064,195814,12302,66307,10348,231346,160732,112859,63633,146558,21271,31037,198802,47622,12862,95710,3910,77850,73961,85585,34752,61e3,4082,24595,103679,71107,8208,79568,150019,16615,24961,139857,32664,197366,4559,54735,32696,4126,162019,75698,13916,70108,159638,19834,9349,24675,175560,49643,18206,52459,27992,10809,88865,401975,133172,29e3,34558,30915,3658,25834,42430,36562,125265,18182,10155,40149,97082,208980,19575,60853,90529,66545,9600,789,46420,2317,88593,55595,98980,115302,5742,169155,1073,177901,3472,11189,63711,78643,65472,50459,127979,93,42202,67053,21720,157650,11145,141378,42033,22824,85705,79114,35584,15974,1510,54172,28562,12451,104226,19190,97151,73024,20948,5151,81741,21499,29006,84183,198074,54003,45120,170125,26240,35177,28389,64863,79974,60778,176915,232183,45342,2038,80253,41564,40703,32689,5430,100689,5366,23007,134279,14266,26712,73993,24934,64242,52113,102887,61801,46415,201049,54251,62133,122757,164883,30815,139966,2319,30842,766,13362,10287,134518,86111,81665,82440,28333,43019,18963,8804,161944,23439,102144,101145,80029,39052,248708,30350,117340,11878,128467,974,138625,63961,5237,74778,61834,67040,43814,13690,65947,33809,232476,115258,181745,28824,94013,9510,10246,93722,81976,7217,114383,3493,16014,69045,72692,12145,80981,9507,6692,1620,60820,330444,35474,33962,4797,7053,295463,46445,27026,12491,77988,49524,35675,90947,29114,166705,101385,133782,32704,6186,84595,176031,185623,45966,151302,63069,1699,107491,947,15458,74452,196212,6046,10498,12163,10239,35191,243951,9277,9090,29539,54460,22820,26514,112549,60372,51753,48756,21812,70861,260326,41,44222,10441,16961,48148,138771,216194,5914,52153,53400,212036,56519,26245,10117,45888,15294,138019,90913,26368,43842,42111,23348,6082,194845,161089,156206,51546,11647,30759,302912,262094,8635,78876,26535,35283,54183,31183,85484,147873,12989,5197,6356,72894,65347,20150,27370,73787,1493,45918,12366,190217,20724,13858,10981,67449,81213,7553,14115,72242,271517,11842,48310,88743,143726,22177,3290,243231,58452,62937,12592,1654,40066,33477,13751,9921,128442,15868,7106,75236,83773,10775,36938,10482,170465,17368,17469,161508,32752,98340,800,19824,264456,3901,87319,2867,26782,9630,113102,185815,24197,44584,86366,40224,3636,140916,31731,267731,9567,53678,72984,29389,27963,17106,50282,284911,60170,8322,12608,23374,89652,5268,39044,229766,8869,151350,31436,177342,12269,183212,120418,116270,2843,78888,69192,7865,184099,1086,129897,18383,70508,20242,18508,229924,124569,35749,50589,55626,9884,83115,40971,30671,18135,14452,38861,17844,201826,5549,26413,17189,13561,38539,10679,143331,3314,36785,171194,49685,187713,67506,4618,104039,17060,195080,50648,33159,19238,67559,134840,28599,157523,17130,38064,117398,94355,31918,13575,34538,40326,13997,3494,348283,62481,26862,3603,104426,244363,153709,112487,304612,199674,41239,35545,54869,293005,28223,26277,26899,4533,18518,15492,38587,80488,70485,160395,263,60162,11382,222152,4696,250751,51921,182609,10707,48463,46243,1227,49111,111564,46502,33342,56846,68541,63559,858,139927,16654,229375,76759,26478,33205,95828,23399,92945,2637,35630,28470,143992,50214,14174,21456,166191,65665,1711,21594,78019,97599,111701,36,147151,110246,189022,43021,30397,40757,131935,42065,73335,48039,26596,28984,15102,2361,7421,202167,69744,43766,52826,3642,83304,33873,75140,63169,192389,36551,92748,13039,123959,233220,21738,84447,77230,20228,187852,19095,25799,92136,108774,29237,53947,2299,118106,2687,8830,42331,202924,33667,2023,73763,30704,19363,19779,16737,35629,48081,24068,101013,162338,291912,13749,24745,328289,167679,70086,48299,23306,16732,17801,43322,54589,3586,63653,43624,53474,925,109177,251316,43805,13082,19511,86565,142182,92461,17117,101033,103319,64589,4022,4351,235897,5352,82705,107142,46391,156084,5860,61365,10558,13045,7717,18357,33922,12590,33065,6928,46993,783,46937,67846,8952,26295,6107,119656,18799,17458,50747,4229,179559,112727,118080,20683,41464,125468,51560,49749,44231,7359,35339,62988,136487,67015,5208,29150,24956,105186,48858,6143,18097,6972,16404,73489,58742,97196,36357,164616,5834,32267,13746,147733,15113,132091,34127,106298,39729,106426,22294,9780,15602,36213,71502,42808,66802,599,60755,5851,39120,67363,108623,126368,72770,91263,32486,30596,151717,7951,52002,43103,11768,68942,40901,39344,24037,127500,116890,48403,16926,86750,17745,48648,159545,34460,58419,5634,114317,67865,31462,23352,24010,98185,125708,69686,68337,13610,26271,70691,2980,4768,27225,102402,75453,28106,8104,6931,1176,6274,6475,112635,22498,6176,238686,26832,28893,90319,14441,15682,15087,39517,45270,109134,104440,45965,47645,81772,7876,52683,87720,12898,4505,185665,2769,113401,15664,57592,105229,137381,97059,119268,6876,43309,33886,128363,35476,144249,67013,143587,83367,25703,91436,59347,53236,2289,16519,19844,46309,58558,99834,23313,218816,231303,36388,51333,183535,109792,139277,54306,90139,18235,8275,32710,37677,82464,86025,92204,88842,117723,37570,128723,234242,76350,73795,34896,148247,58424,11105,11744,45746,63372,17118,49772,199520,81902,38004,22911,33752,3125,1995,53792,4689,26909,108150,146062,69674,41811,161444,84855,8999,28561,16731,93937,3189,21967,24890,22943,1356,145300,51569,28802,517,118679,31703,40607,48098,108854,25003,10233,73969,177495,5248,24516,215347,146192,48712,60626,69188,40735,5866,586,101541,6509,47590,52129,5969,222045,110933,25733,24223,65339,62812,2414,155418,35819,16022,78423,43138,20995,128255,240673,46745,236093,72176,57085,97841,61248,107,36068,193177,105427,55726,215229,20446,47228,100420,87091,14429,121708,23605,21157,187721,21880,2997,203976,99166,95068,25877,7724,98925,83401,4829,13182,18229,13718,239662,38653,116505,153497,30589,89029,38962,181302,43853,78872,180301,4786,248240,7401,106136,112590,77745,19731,60880,77789,125748,135487,5975,48627,34084,12419,215770,47557,254582,10364,106495,21856,67539,88981,38805,21428,48732,42316,12149,16078,52808,25327,51322,33850,51147,12253,122354,46077,56483,254553,115417,81834,150991,94662,86668,7381,12841,100650,18218,15741,22372,68294,50705,15535,84660,61887,22553,72299,31361,24824,17743,46820,64288,31582,77006,111674,116384,30760,80920,86149,77192,51979,79691,60342,122805,103800,240873,160744,233114,78962,54920,8608,3484,316104,72548,24337,5088,230040,21926,10172,36838,26,86221,83458,102176,12062,17571,41929,41170,28428,68239,41750,103930,2634,18313,53019,34825,97837,63115,24606,73157,152474,14715,91439,37033,109806,140259,30668,174760,380,135597,95673,136073,65073,134249,13829,17279,122305,4420,46444,10237,64848,203623,70728,10349,182885,65075,24519,25783,40318,34139,22222,63394,55266,102764,41422,20126,65100,90408,53640,35128,48932,11192,38935,96839,34782,39492,19396,41332,6250,5511,19492,51304,25936,104466,54099,73771,86115,5080,7669,30891,111700,13931,25276,72289,135447,14820,258641,25265,31005,281179,75286,393,95359,14623,13584,6680,101227,80173,44933,76666,54542,13244,39348,458,25379,109451,134348,81143,6959,65554,12027,51311,8716,57589,140731,28467,23316,17272,30458,25980,55229,77197,83798,28302,114784,7428,34548,26241,14712,39336,103304,18928,54080,12870,334,87722,15208,16895,142098,114262,39820,83913,57817,28682,7721,14900,108672,11250,62246,42849,415188,1724,26555,24549,25505,26443,107450,145899,61035,43528,6901,60726,65906,267741,21338,147590,42079,18924,73017,135236,15393,5206,4026,84185,1531,5988,113890,82647,303391,7386,69844,71611,189865,76523,31877,13315,19314,198575,32821,1928,67641,25913,104475,103489,3297,70391,18406,15446,113347,19295,93790,27856,1792,167471,116449,8541,4408,41757,63233,25765,86680,64501,27034,24816,34975,6079,4486,49693,36229,16917,21581,62426,27862,11612,54284,35702,194034,355,24277,48262,87411,70504,310164,118018,12516,47559,43502,57433,107139,9290,66533,80863,14634,34312,91725,28606,21342,67241,72355,43244,375789,37402,174015,105070,8342,44167,67494,1890,16365,11723,271002,1865,47918,8350,45564,27742,25110,125803,8553,49504,81925,62211,4534,15491,19011,80373,206920,667,102405,128623,245524,5553,113309,192739,65766,19567,22832,261958,29679,21293,71134,20962,105123,24721,860,21752,33448,18372,157167,94822,35770,173224,232737,75729,28937,46828,28062,25453,5207,140366,36665,30652,6169,67920,150458,92040,23186,184604,92330,20891,176492,49427,27828,38305,42495,143982,49560,25503,90043,29747,65328,47830,12932,11068,77721,9003,25213,94205,140426,46090,89945,138173,192691,33329,112232,129905,35709,27514,1841,19957,31411,127476,53572,17497,173549,55063,175135,19841,69314,5192,237921,117660,150697,4060,273045,50414,98940,65348,153665,164423,58804,156695,48994,213928,86036,28608,8355,39574,34540,16927,135680,18374,151587,10830,53805,16878,16623,4282,48030,8537,14986,46102,13062,72897,72,33050,108227,39451,45935,651,113320,40535,95176,57450,48843,5003,19019,10407,211163,3848,1068,4988,32091,30095,41692,15099,43602,107434,50744,7627,171349,16313,150832,352665,207750,33937,38256,51091,156e3,87889,90663,84175,24908,114900,50365,31494,83829,5398,169342,47521,54818,18935,8356,43094,41212,174536,10082,92550,6678,60614,23355,69721,14796,34149,128830,58187,3179,208,40325,28399,225029,401412,51150,31580,207268,6657,10993,69818,64282,289845,23308,12961,38447,6681,52944,31855,2572,47646,120728,179148,37240,45196,218274,4816,3695,21961,50084,35209,18073,51452,27004,6100,33941,1377,84831,171214,85,141510,9078,99227,32610,6417,11718,49868,65579,87902,73018,49062,46280,61742,21512,40862,107733,15941,29168,157765,144919,14487,5767,158014,140070,7241,573,71584,16921,223566,40331,179473,35081,47926,140885,41508,52104,59180,42310,32811,29048,123517,102413,80208,10104,14746,12649,153641,126022,37965,113017,4171,83,142592,2809,6362,50416,71323,116894,260776,16204,1524,5760,30351,12658,20703,54403,36083,45408,74772,4946,14485,50759,111222,10890,2195,167147,92962,130534,16283,177256,35016,15472,210156,151187,73922,117691,43250,52051,37392,24811,24358,30830,5775,818,21969,1476,127322,151783,58392,31021,106913,65215,89407,90802,28531,11690,20234,95249,44602,37256,18707,11928,5161,4410,26571,51903,49768,22008,25252,65780,209499,68769,203726,13249,137363,48845,86823,6658,5674,31881,1083,1823,108676,34518,166752,13791,14287,91576,91429,8665,11529,26401,16191,91972,30964,5254,28486,54697,79613,66520,18447,22870,45203,194466,22822,51703,12278,76716,44595,73455,33546,12235,144843,36154,51247,11116,33040,3180,225753,60864,1972,28469,12891,28879,10338,144157,56294,353058,38302,41447,87532,110616,27065,168438,6557,1213,50804,144643,24817,2390,136531,38174,247513,16190,4059,122791,131994,137430,39506,57650,16305,5188,54309,106128,20628,88071,67394,395446,250285,66176,91254,1399,114196,43915,60230,44853,27206,106353,43013,18733,345105,226453,51202,16607,57106,117175,35492,10476,89598,127439,15187,39624,13688,61570,10615,31111,59370,6238,175252,32143,224492,41388,95408,34384,148238,78307,38959,9340,160091,61443,15737,11216,41244,170,38299,102443,113097,26382,14027,33707,3957,76300,66160,19431,18900,6952,1717,108656,82206,188021,257335,27295,43999,41210,31777,46956,57457,12657,11489,15697,48060,204748,53583,82422,284790,30503,137341,8120,19615,220311,15991,10217,63424,9808,67431,70976,98221,4491,15177,28535,144789,751,13230,2394,1504,33977,132104,30316,22230,931,97193,185240,24826,22687,174322,15307,22988,1390,188745,180325,29580,59068,74903,18994,29195,79,15436,7622,38462,11566,138710,44828,45774,37768,99236,68137,84083,19282,22698,17134,74807,126662,173497,46248,16938,119735,3212,28292,213652,49013,9975,32180,45660,86250,4801,68788,95490,77482,113751,11994,44624,94452,46839,128497,100316,5798,58588,73184,202987,65417,37790,88524,1606,43156,97964,105717,34947,11203,100060,37742,130074,93653,107799,94311,196106,41347,8035,10780,16390,27883,118236,167395,1979,25006,19375,31628,18916,144723,78502,114047,103107,86492,107686,5844,20934,206963,23556,22591,16562,146333,20167,10471,117434,33085,2863,9740,36669,41849,37271,22790,18209,28979,8231,12952,54408,21731,25130,45208,55748,138120,75826,414,29593,9925,292865,25999,683,123149,7036,92159,86055,61827,103680,23176,54918,58466,57578,13305,5709,86479,16697,31064,17660,200919,10770,49793,33423,32370,52047,16488,62555,6459,8426,83493,7763,59725,82812,18628,67760,79405,68557,9612,7673,28102,56517,69620,171797,32458,29541,15870,81109,32080,207644,71495,21202,11039,91036,61230,2810,130800,32260,4613,60590,37112,75214,33979,126402,155062,30642,63875,12810,194463,82799,47664,16725,36685,43367,61099,449,172150,102867,21691,301838,36745,7130,18671,57316,34852,38034,54182,35578,65900,99486,19771,3456,2658,16914,99866,28390,28109,8262,21147,34353,20006,4228,137085,1675,203023,283196,198286,214375,163329,290603,152574,40471,83506,30068,14730,23177,131539,34759,27668,32178,71896,104799,116305,85430,119262,42860,25160,8911,23428,49437,105322,6519,16203,6349,74711,1230,38045,8540,75165,44736,25909,51026,317034,4984,32281,91312,27060,44431,17817,45363,155937,239085,35697,59784,91993,29531,126740,213757,76560,167776,285273,24262,8237,65030,41160,74437,48804,118916,13159,37842,1031,75349,1478,11655,108777,23435,277425,101734,67469,70231,124711,43532,28514,65526,54956,1e3,21882,17728,25302,40952,52214,149632,1999,2111,3259,63362,89961,220561,39777,26335,9063,10572,12416,34551,34623,38604,24723,5947,15588,69927,66252,119177,69173,46629,28714,70715,212408,20521,406913,74380,11716,50659,50862,37009,88460,130101,7210,53853,538,65120,151950,55806,163748,52837,13153,21100,16674,64536,6091,138201,44837,58547,3723,163,2177,32288,85454,34033,8497,14282,25742,10535,10741,79559,117493,243787,49337,100718,79495,40139,42956,7551,55433,15421,31509,23034,45081,547,61176,53434,328001,8470,36263,30145,4519,74173,53935,11845,73774,60211,78025,3,4102,73782,109293,315332,48412,26683,13714,6865,20128,18490,104141,325,39470,171970,115860,15707,7268,73301,74336,31370,2368,111827,107757,136231,142844,97138,96638,84053,38691,23801,1588,10573,122098,77039,240,186135,146101,11996,18143,112963,46171,155836,348769,47795,121213,116266,132515,3344,144804,31286,99187,255838,129694,35894,48779,55235,148582,71967,65282,15174,13920,47080,6147,108242,157593,125025,7136,1286,28957,127956,28402,98813,20805,7532,109417,40610,5041,32958,15142,18408,108596,33543,50517,27748,80114,233434,91447,487,37094,100048,30541,43477,10639,89862,155868,37667,8726,60684,237903,73408,99589,12190,38739,97348,3914,13594,2680,149016,13907,30171,28343,23530,115225,61104,35821,147679,14337,4297,244282,24085,326976,56428,7851,21303,131620,71446,83253,68692,111870,5224,15813,38197,49026,45057,13660,3306,76345,40671,27905,91072,996,68527,62085,91351,122634,55109,168209,2024,27560,112707,17352,8306,167115,169921,166958,5031,46020,11844,67284,19130,76185,6920,32849,5450,14610,22451,21002,17392,31872,66682,84796,13709,40210,59898,12029,8719,53564,21462,91884,21647,88379,194428,12754,37797,132826,160016,22567,54383,53186,77611,31107,8339,4694,19185,90355,23597,17222,140675,28442,23668,55977,9128,61555,28774,155229,17658,9390,24379,69357,15752,127381,239631,62460,93181,55913,45133,140155,18676,25249,33164,29581,82837,67223,22362,29975,7317,52813,1943,29613,20012,207130,49617,49651,5636,15334,36313,29226,28084,95247,72072,19e3,224932,15811,114,32127,38097,37508,88507,37225,27359,91626,12193,69279,20608,11055,88156,92808,2152,57259,55275,72789,24475,104414,1708,9882,3818,48661,66897,1631,34806,227930,85815,87753,18321,250664,72733,25107,206797,50891,8082,196411,92596,96764,152823,65514,22819,387277,62176,51225,40329,15563,189,3659,73670,64357,51793,275136,33482,86653,74615,67058,11318,125720,15388,22388,8267,1730,102663,170910,40784,7144,85373,13040,7088,94309,583,44224,140424,77439,18496,164026,36578,4722,9151,5824,63365,26510,35199,40500,79277,32495,44614,35233,9566,203293,152144,7097,2330,183480,98629,13423,330887,44130,68600,30939,97829,31012,345465,56747,94879,4939,160027,149761,99423,46099,32251,15332,8761,96094,128555,5763,235318,222223,55729,30241,55420,201746,3987,81382,8259,49325,23287,7719,24633,251100,92311,18591,110533,64759,170260,393860,7175,21144,132887,3593,75346,101277,91109,16387,259187,11627,57459,173829,44694,55780,49797,89192,120443,62622,3904,14814,23887,1027,112258,64955,99800,11132,66353,36202,48624,18158,88481,96882,43059,11040,2455,7077,21651,181159,99126,100434,61388,68186,19161,110468,120052,8819,55324,41494,7014,37689,3618,87729,92615,207943,9823,128657,12587,15857,6379,67628,51216,71775,157617,63244,1503,3864,218754,110864,5769,21492,7243,1192,87921,85529,31512,18537,42698,35350,73510,84474,34301,8991,21013,35034,566,38832,19838,35586,37216,39413,55006,12178,59742,856,84563,6900,25632,17437,49786,30723,13847,70845,4044,7843,23944,235976,55530,48942,6518,20939,73769,192653,52936,95207,23895,132542,142982,22632,87452,48042,54018,178468,10728,26230,23559,363,81269,142012,5718,346258,31456,84333,246476,51018,66692,101804,120570,39962,30373,70593,2864,60541,19425,54209,104092,7201,31545,48018,25865,15442,46257,40443,8328,6451,111782,47527,97754,33046,470,245116,31095,39,91934,87208,73470,36708,36521,12801,70624,36272,8892,79768,12427,55454,103756,5908,52390,62962,22720,141138,94634,41689,128402,126390,6628,106394,35527,134394,82727,254651,194502,148064,89549,3202,28359,957,21954,27906,49840,142747,8307,24206,48978,1186,71728,133038,71474,91306,6333,110959,74600,70387,18983,62609,56057,22970,1147,135850,1321,28834,3578,59715,102227,32827,81415,99952,55636,257598,390,22702,35701,85872,402916,39216,189795,14929,19467,10112,144422,61514,5279,63421,134686,41436,8424,51925,10598,132295,124416,4604,194739,210929,57866,31829,51626,50007,9976,91878,61906,56168,81906,60918,61859,40017,23059,16887,40927,62064,12785,32893,32913,21782,93965,20169,44387,79084,38463,11457,93950,27127,157050,2697,337088,5116,54128,48255,33279,8821,27352,25515,124022,65710,28906,38557,33390,1722,104435,72215,38551,12094,30978,25113,6671,37355,175109,42862,98024,65406,221276,59624,118012,64637,78760,86697,21426,1639,40350,12584,67193,84144,31396,7863,143011,69629,63112,9454,28666,65798,46372,134721,6314,51402,30837,151922,2847,38676,38008,92823,136245,17540,5504,109295,205242,37606,5211,214892,1586,20670,208711,137743,19328,40652,16995,20023,14657,154919,34422,12996,13918,38221,47690,16398,2959,37680,89122,6721,198469,91876,172043,83898,101992,26084,94570,3635,76958,22853,76497,38266,176590,168403,44464,142840,79180,184594,1984,41806,83147,11985,6546,366068,59732,24533,271505,8736,39084,222992,93429,28962,58985,86665,8432,30028,14548,32439,54424,165029,55175,27458,69046,121277,46168,33732,20661,24581,135574,123110,37556,79260,72611,16957,12939,46162,58238,44907,72936,253758,41324,32518,96480,11949,124438,65280,43256,34107,53533,43531,37037,28366,45970,32741,173438,6121,194202,62969,26355,30314,58370,28455,1848,50519,82830,90393,21761,295490,10936,256940,133568,44050,20269,4089,27457,21610,219460,36743,14821,101388,52005,13124,30979,140816,167362,26054,18458,60789,34917,40447,26606,33422,9066,3452,83614,5761,20263,137238,25038,91310,101,52322,74548,42572,38084,214054,186568,31802,17665,30620,141936,37730,14420,4265,187218,49640,188208,51441,55388,96452,66659,40869,42039,60967,221027,19234,178581,29105,96050,9165,196118,157335,3738,40354,117436,2965,34136,59659,15570,50843,230035,31444,71260,43886,18316,5387,38500,168508,17406,32174,8828,103373,143806,90367,3560,18719,122310,16508,26719,2541,105429,6645,37998,73190,10591,235916,49737,87112,233941,53188,32193,79154,4544,52905,126477,7580,63501,57314,3216,31337,6541,103083,60846,49,9756,15481,1355,43840,14319,13743,27486,10222,73114,230718,418644,16706,6674,279748,23058,45273,295831,86306,2743,5535,88773,21829,35253,120938,31153,3169,16839,42847,8751,80974,33942,36867,35514,16485,26474,77775,56877,5391,48346,3882,108713,31403,27804,55248,26235,43821,136104,40118,175507,28034,203908,18732,1788,34030,106427,36958,54359,7251,44936,15356,69139,455,157915,22173,140291,50348,43275,82066,49621,54952,15216,36226,96695,66855,6936,1987,8227,196087,4631,68827,99004,47541,110265,17953,147605,110242,58520,31312,38724,329975,642,3155,34497,75937,6207,73843,6120,17249,51429,117746,3218,910,68961,319671,14938,29555,34700,1649,66673,72268,9655,76800,153087,6941,210168,27130,35398,1780,73242,3135,56689,19556,165307,8765,35967,121458,13333,70453,17350,117253,22265,13340,44265,39869,441,3742,135025,23581,33309,16543,17731,13291,157637,283005,21408,101360,63887,52312,83873,5338,233779,23759,186949,34531,177320,38069,156465,91004,19353,59852,68160,14891,1338,1072,29823,1950,28901,81407,313445,73038,84807,162348,240257,37162,138934,16111,58013,41253,102951,16457,96056,19541,56402,67217,41638,94381,89674,29481,37456,80815,151579,13937,13683,132537,19699,134545,67020,29816,222341,141235,427578,48868,129557,233342,23077,87871,16213,18728,16184,9469,37913,19680,2798,171356,178328,13216,50049,72690,71904,124644,55455,7504,29052,41036,266546,19899,30391,188755,8659,59469,16,104298,112943,53865,76203,138226,68857,139953,14125,107625,119795,173133,4398,50273,48808,54390,16466,122086,31835,67035,50971,48859,7508,46427,66477,73021,84615,39985,83076,46779,201569,53336,36443,60865,168164,143810,51393,25548,169307,32896,24485,38424,21837,29087,275813,51674,6714,64883,46169,187369,55186,76192,12852,12018,62134,31067,118303,16542,12125,10579,4928,26291,43854,7091,10946,253716,109062,39283,17261,113012,258512,47764,125126,32646,55892,80279,201623,149872,3192,385,1208,48750,5376,58738,22335,5427,82416,47811,32435,143086,38930,94128,59975,156037,37977,38224,62485,7698,50405,71027,16462,21559,136153,34131,107506,162069,63703,3101,215029,40407,4178,3774,9187,80019,17880,97926,67579,2600,18405,8351,47924,86638,70820,92206,86453,29610,42241,119200,3198,15466,67813,57863,35454,4779,99518,4649,104641,144269,33730,38073,65864,6838,109456,193298,154007,5623,45741,30846,182578,25573,157224,1543,58575,138703,146140,44971,49356,18275,59064,20300,13122,11848,24453,11973,9797,86843,2919,25530,49210,1130,161220,76788,75373,85604,34926,36014,17777,17255,51533,11676,92226,51845,119859,21525,5936,18507,28050,1140,31418,14857,34207,47859,10750,36382,32079,106909,59426,87757,38393,110042,15965,97104,33757,35344,97993,53979,33651,45407,41884,82515,173089,7177,58371,35365,47543,51927,35587,10670,23544,29306,84233,39976,76076,62097,9007,8668,28119,78281,120790,19835,143020,54968,18670,64959,20649,34469,42570,33001,136570,87796,120044,1106,58700,63951,127623,12805,83057,40212,31773,49850,7361,54336,347524,101314,23751,19569,48791,29174,49369,20467,7465,75842,38281,623,112457,60210,28849,51003,94720,6426,90047,85560,43761,3579,85105,34607,90410,118528,7224,42907,111163,18168,6960,161135,191298,5247,100584,127552,171568,20121,91173,12636,54615,20199,63730,98105,2396,40387,14438,125012,4765,33235,12865,45299,37728,82098,77872,114037,59253,19675,24838,398016,102561,11446,17069,57508,178277,65836,99941,26114,2585,271882,136866,50126,11027,155648,118367,14585,8910,123015,335383,40434,41016,53021,14439,87098,176860,201543,121888,2358,9286,5739,22666,54270,37884,169381,33984,93859,16124,89364,72207,51639,76366,99029,65812,2198,12147,174891,194289,6986,30252,88822,21284,11445,288337,160821,33034,100869,43852,25761,52882,1144,103809,1924,84458,86079,43411,13542,139276,18141,34978,41298,7276,26481,173800,33210,17951,142652,33616,33677,2210,19941,98568,2486,192414,80136,12058,235883,50963,249638,29572,27221,47034,6124,72107,63346,97620,158513,299699,40388,23235,37176,224244,198386,121323,67992,23827,63170,17838,106622,158590,26807,5345,23489,91891,55474,74834,37981,13058,5977,72552,34706,26828,145172,19904,21367,34043,960,77092,91381,4733,47446,7680,41697,5170,16960,14741,46101,13656,473,51842,37433,11103,11551,121951,13191,97536,165932,50397,51628,129028,9069,44885,6590,59195,47045,32940,225472,90345,21833,13303,29407,96615,141951,5198,6028,18395,7181,3861,14966,156358,167182,36529,55253,25942,173153,30959,27261,50691,150176,162201,38467,48462,80602,42163,118482,168,108756,26011,17166,54149,456538,22512,91374,13816,90358,131615,18132,226707,1824,28139,26860,42253,93877,77351,65575,8980,80574,22020,27948,40422,91324,76376,13528,39281,91685,82215,122541,144066,1983,193851,17283,26320,2739,194978,4790,26845,42627,61300,65815,174612,55133,4200,191130,79771,158321,52280,166796,221620,62461,11278,4067,88152,83409,31717,121367,13522,47325,37945,10406,174348,249321,154101,64912,29938,51775,17220,15776,166138,78890,84425,54121,42861,16368,24572,291647,10197,32073,22651,11677,97509,26952,35787,18424,41910,71614,94977,72318,41594,70024,275419,37702,60199,7335,39107,61315,18271,18394,33768,87884,104277,123724,7277,56288,71981,189803,49320,3352,6798,14240,8954,69220,94433,57372,28620,68863,193727,85575,42309,41667,67689,42081,22543,44824,12719,28540,114236,101553,27638,27296,4300,5353,4663,19379,94098,3758,95888,95144,80344,87320,28447,259518,12718,71391,152731,37063,24132,31911,104896,15672,103782,1521,4945,72541,23717,122632,15619,87175,206120,29428,189780,61416,28350,44457,972,1175,47233,198738,95789,41907,21953,97034,59341,22864,53713,16873,32971,20693,20954,31336,21477,16169,38370,16412,9019,3841,24599,21938,17085,6484,81198,76413,5849,72514,12320,65247,276175,37234,59796,52642,16312,57349,198507,94148,46134,18958,125552,1747,18725,151873,14901,5490,68287,29470,3689,64794,40814,26018,25692,54450,2703,88278,124886,173087,174e3,24159,179477,24276,46004,201876,209202,445,52876,31948,30206,157610,39180,18439,44124,50469,5774,96278,222758,200216,50290,45486,20435,46986,46276,140133,142326,15569,13363,47522,92583,2182,7135,16853,22998,30272,4952,63263,35623,39096,53789,44864,20053,110392,124213,4630,16087,28221,127787,25839,77481,44693,13464,113146,6983,27069,55717,50102,4760,7107,26186,66507,59145,36032,104182,71328,29425,64317,50781,47465,94298,69706,74899,22754,120756,25108,93077,56834,73286,39928,16218,41699,176763,7555,70819,50083,26895,23315,26014,16773,123079,41712,5719,31516,90427,158540,85051,183128,40864,27505,55392,9058,45224,96857,30901,136622,96557,56304,120061,11501,151448,5773,89743,7769,86069,2935,18471,41628,10114,33660,110170,49479,26745,92846,33221,26731,18795,87076,8550,2100,29972,120289,3077,72490,33784,2630,208722,50861,63483,79029,6419,39467,14302,45286,64207,9686,67513,44170,1050,77246,59266,17055,53801,7150,11111,42432,4278,94579,362117,36175,42902,41933,39002,98489,22913,74161,84773,57036,17556,162288,74485,178760,93867,73635,128860,50362,261,67455,80001,46080,35662,4368,25247,19230,74393,22588,1822,27682,235324,13798,85998,13194,235067,23514,71669,147632,23191,134748,214683,105101,1518,25489,247114,7380,54842,26922,3971,26361,20844,68642,170517,77339,123255,8963,77818,150998,48466,36806,2732,23261,11741,236162,18243,126216,28690,50546,16385,92760,197383,246558,201295,88255,67588,71687,176076,172653,169058,33906,63747,24835,157621,43338,30050,46152,132741,2770,51371,94835,6614,15112,11749,56936,1250,19027,399017,58036,100215,23388,55815,308768,124152,94803,9521,64186,8971,28,30427,62163,7616,103838,35079,29203,131235,7743,17389,10882,37420,61460,228512,85363,41581,131077,62822,119647,10130,54445,26925,19968,29016,24446,74028,24176,61448,67185,9254,8563,119129,9771,99184,37716,39514,10532,221512,258753,218630,55980,23394,32141,61924,66749,32411,3741,36475,26678,77010,44946,91203,128749,116953,20476,49625,53116,13735,102335,29376,51946,83407,67892,59212,34685,21083,1546,112982,32972,74397,1078,190545,16082,86140,58591,89611,101531,10061,105104,76319,20035,17551,52611,169061,190842,100780,23907,90413,115619,9675,34710,193435,49443,129734,11183,258877,16318,136182,126808,44635,27304,192375,2599,125648,47051,12091,23814,721,58800,40137,66726,97930,60877,74487,7942,54326,9841,41428,13762,8211,85383,6950,99177,79806,201786,296464,124087,13144,29741,41721,47634,55088,254286,106408,17041,99064,12942,64086,45233,14005,2612,55827,255,7984,13980,38574,12776,46654,73499,249951,2101,26676,25996,132326,116415,119062,50449,31033,23038,11589,179252,20007,14860,129270,21143,17796,144715,60106,70758,69842,34674,282133,44014,16774,57268,38528,24053,46373,201667,28327,471023,51889,102667,21193,114909,84132,69317,96723,67969,16134,68145,15058,28765,32035,2524,101089,98664,25045,76571,14957,86040,118506,262428,154764,81573,39681,283900,73287,127825,544,80448,52347,38512,175971,15180,45467,33086,46552,48894,81107,43213,36672,54025,76703,8053,7608,13299,56619,20752,238099,54164,105133,1444,32942,953,37564,8e3,66316,119463,106817,404,13667,149108,128597,31267,10269,49836,106150,1484,52330,76965,160486,171648,38456,31263,22424,37738,66245,67467,143369,60471,75610,20895,115528,86070,60854,40796,49347,18989,15030,11371,37578,15779,79867,10187,86462,46402,155626,93200,40229,7090,57547,108053,99598,11088,47505,41218,206017,2173,20988,30219,22919,80563,57566,42369,93141,41675,2407,182519,120495,27154,16702,29456,14349,7958,16688,117177,140375,42467,261919,74916,153569,10836,34742,49526,7621,105997,12212,2270,392377,7755,17959,25086,232152,138791,33847,13860,35316,5811,1344,71259,50452,207539,92635,50359,5821,33674,30255,2086,2587,96264,17543,42,6029,9580,43007,139248,82831,12917,29607,25786,51467,42137,85161,100698,31561,88989,121990,278500,3602,109344,37982,15279,116442,28936,30880,87894,58079,128661,126731,67392,28051,146885,4861,16216,97344,42827,147561,153948,22684,21335,47685,1853,43349,15185,59642,10229,25520,187921,108972,5579,98037,24945,6697,19193,63734,137934,75056,89740,19767,224268,56138,63643,151661,39313,70618,84031,89723,84074,13703,85626,35460,8867,64845,3439,57906,99776,63968,49270,81130,34356,16210,23547,36446,34090,140028,72439,2221,22163,57058,363492,113754,18913,95451,48663,54464,54037,176097,68425,3023,34906,29482,117389,341780,80431,58330,16753,92616,60907,94846,147486,4498,48646,7773,46801,7778,18946,464978,47558,33223,177444,7328,15626,63337,94700,11743,9351,255024,39098,16447,42647,96230,39769,58840,10068,63439,35800,65843,58823,413844,9156,51258,7434,61791,85018,6872,3692,28096,7121,33024,6009,75532,31997,192535,9661,3304,9547,14753,31987,25314,55689,15896,20430,39472,31340,99744,25398,115569,54883,28719,205423,23071,57855,64638,149867,25671,82403,37616,20668,39989,77996,74948,140555,175248,64810,36515,46595,4958,248773,24045,28728,136673,168704,20804,114833,100325,27135,21205,96151,153134,45992,7093,13992,76047,1980,19432,145001,75159,87462,17710,1013,45556,34297,144882,20648,26061,11319,129567,108555,18872,464580,33386,22717,65948,167189,5603,135042,79542,8801,202632,18114,91882,5973,5239,67315,4431,60916,47819,71693,32597,32606,18183,45072,80329,76385,24749,51305,40314,156514,14693,130345,13168,66214,18029,12858,34801,27628,14544,10823,40522,40185,33739,148694,23548,9923,61012,28859,17933,19442,34364,99849,164107,141167,30629,21054,6744,36491,8096,42474,41706,155060,30650,10600,163442,1143,96655,61390,52359,7559,51568,64256,203854,4467,22453,14504,436398,7878,6980,8293,63610,293747,16167,35763,19627,147603,15419,18032,110744,51346,33681,54571,40472,48615,39073,21604,13754,173027,92560,11083,47299,63062,11813,52007,29883,9734,139722,15953,1550,20651,13616,49306,16113,90089,92326,7584,30712,72424,164858,6831,152871,55746,197721,34167,196442,6022,112107,55215,7538,123381,4920,43539,77165,8939,50392,34192,20225,79762,22505,58667,40770,29788,97180,82835,4568,8579,13273,363569,35898,49983,436,36598,3237,131691,62418,35591,8101,4073,379438,65218,76072,33887,2968,27573,212619,288680,68278,72851,150504,217896,6913,121339,22017,35340,51072,43616,75043,31437,10833,81487,4364,22968,41454,106687,85446,19863,109625,149241,524,141850,214404,54376,657,237023,9401,108137,53800,32474,49712,53334,126876,27337,45552,177696,8269,15036,12097,42240,2328,125374,119295,99715,2500,19624,39441,27220,102691,60957,94543,39101,18566,67362,13975,78230,25017,34017,239007,90027,39351,41681,35354,43822,1043,916,58587,141983,94818,38799,75459,41114,67432,16195,36606,59568,22272,126769,31424,68659,12287,134302,257977,5756,207285,95637,47248,117689,19583,77451,22373,12200,54993,117118,34244,29386,34562,53819,71267,64172,77665,49368,7716,59301,25749,45426,194789,17297,2650,1766,32501,45198,20403,20984,6600,14171,94604,19037,5402,29896,9938,59935,109708,88081,145182,44844,39167,352626,164173,35374,45982,6122,154,73419,220487,53834,53601,17992,8609,229321,5610,68098,66815,71012,95069,140968,27396,8957,134489,24656,86659,56598,134852,17316,123838,255436,6613,41610,138033,81452,32023,32396,123687,63398,8693,29712,30407,19296,121188,3551,36099,20032,111948,56624,16547,27453,35916,15378,52039,56849,13489,22214,73177,53097,277349,2157,14029,187886,10260,141743,246460,91880,50869,3788,49486,133566,54950,33120,129337,53768,18333,9525,26902,312251,10297,9020,70759,16647,112432,59260,84609,9818,82766,73569,468,46001,75780,55028,52106,11498,43645,108069,17150,17753,29417,16705,31799,9606,289,122254,115975,8620,6133,255357,56908,14456,133464,43554,79224,11247,29630,160,12756,25464,65960,350428,62521,321796,100359,67358,35169,46172,113128,48988,88868,31094,33266,6847,60887,98188,49659,69117,92977,220228,13947,80181,35103,62170,97351,13475,2440,199768,19498,36597,46971,25234,67806,62881,84717,73648,181966,10488,94149,21550,26655,63436,48375,14405,165650,9621,24439,28043,42735,4490,29963,56674,45373,1934,262446,50855,67098,26898,5261,52696,40644,33900,9440,180286,87162,22940,19704,26936,69769,10254,101759,27406,12243,48e3,73926,113215,54935,5726,192787,4312,106216,9366,11550,52949,23457,212271,277152,133895,108374,6191,96477,29980,218916,58024,54696,40853,91124,65894,91170,65908,252552,6793,29212,15389,44516,122515,52617,35058,9017,103536,39510,49136,19242,130652,662077,74699,47024,31422,8517,73351,24399,13867,128360,4810,4434,61779,111983,61036,17798,110240,59722,102960,39688,10001,23803,23039,176498,56659,44814,134295,17188,77577,74466,226175,102472,154333,63900,111747,18062,41171,79669,32773,408933,42562,28931,30907,107388,43487,2946,240310,23938,24354,319,184983,7927,6488,1422,10790,68809,68209,64775,4361,202,17123,59634,51200,44391,18188,17843,2619,74278,3230,9540,47187,21702,36274,56894,43907,16310,34790,16866,6150,5561,13587,107545,108873,126867,86986,28640,33427,19017,5762,80637,17430,46903,2047,131055,25958,13558,5444,47152,13900,44563,122857,45348,70863,39593,54332,38068,33637,318,40310,143467,18502,24520,11377,62013,28942,27246,28269,83545,17999,59015,90707,30065,15161,34720,1263,37008,2012,6060,98575,92933,5721,299,199555,24578,29223,2985,743,115825,109523,136657,47454,26378,53586,3733,174945,93340,244456,5693,37386,28782,89767,27545,23573,18798,136425,34320,84778,20041,48453,38215,7477,71958,40621,8773,5874,187927,105965,51100,43533,18083,8443,10180,43597,2003,183999,69689,12216,129696,146188,62389,34044,68410,12765,43273,26949,266807,3345,34477,79197,5688,47539,213110,21634,22257,50092,32222,42346,39530,63668,98,134978,74022,5152,59088,174145,37220,9934,9545,118937,5724,87240,19875,15784,40143,23263,87513,181654,285152,37881,263241,4966,43934,10433,186657,6470,74416,225854,25908,142677,246262,32280,6192,75890,45546,143264,135305,29742,47013,77787,11732,126658,8763,37950,21806,57557,113464,89465,108995,164574,23894,22996,23169,15369,23117,17642,130607,40503,36239,280990,44666,9981,40427,147487,26869,168452,32886,32991,46798,240839,15111,70502,65697,88548,44145,28701,48767,31139,206777,35659,181164,166262,14554,171445,31786,66523,76607,17956,6507,31279,90476,116611,167918,6560,1243,115324,80128,41867,55897,187323,37069,32596,189444,145931,13390,105530,65709,26805,6999,55714,41300,22915,68951,22138,21120,22264,10058,19945,33635,56123,99085,10032,5818,6016,46649,57476,35264,94413,112522,262288,93686,83038,14341,23204,28807,66084,77987,6101,126673,7133,38126,5923,122091,170240,97772,46874,215746,43948,41622,3272,55596,8332,146411,251315,13533,8561,81521,115449,48616,175175,2063,186556,3036,134537,75772,29728,82360,22973,186559,86348,89100,38388,82297,45610,2613,87082,9986,177812,57884,23591,47485,42543,33582,44713,74439,257444,252451,31825,35631,38540,33066,5147,13973,4343,51830,70378,22827,26448,95560,36896,241741,48067,203953,298860,61620,20450,3220,67272,6586,107662,100160,108684,6929,57226,4762,7457,1320,40404,77204,99309,62750,208653,59977,44e3,74315,34332,5819,172217,64904,114077,18147,84012,1791,98456,90930,21446,116669,103938,7422,85140,59713,5768,326211,16239,75411,13229,29398,10758,236107,1539,112472,95979,152154,151294,306,21196,38146,10700,6891,84282,109646,56492,40539,6589,119491,51354,30685,140209,136906,29622,73617,49553,70525,51671,166869,139616,74395,37439,49595,45678,11959,33211,86560,52434,9282,62690,112155,130810,5243,108261,99970,265613,72551,80049,6391,33365,90721,66737,69872,87011,1860,9032,112544,60905,37371,89015,140351,19076,850,373531,2802,36725,218795,72062,28990,16550,24614,7815,6187,26336,33373,32162,42791,73555,32062,23386,10244,56392,49442,27076,136262,12412,14883,1134,33675,97153,199281,15608,100152,74072,47942,254301,36451,16026,10687,65067,56708,254030,30290,50490,13864,57941,259331,35588,23485,43486,24869,21620,92971,22072,88645,1048,182050,13343,32452,14825,19509,3325,216938,45740,99716,189082,53740,78245,25609,24311,176777,47340,308354,40669,66085,14102,125339,9225,128709,97207,1271,200933,78439,113451,88975,18324,46521,11819,18570,141756,72512,170020,52754,63550,118515,103073,93330,32736,50499,14722,31600,68452,398867,29316,172786,18417,104924,2606,5670,84818,16288,67106,59580,82929,607401,291,85829,359,15897,35830,50696,65630,52672,22115,356968,29895,40837,231192,34024,38957,26722,406,23335,124952,72068,68804,13268,147101,164740,276569,162596,66943,11569,26654,66358,4777,23229,102127,5848,978,2921,59666,5371,28212,90108,42938,39320,2499,4271,108792,33510,125072,71653,65239,38250,66357,38577,13964,86251,35708,50755,36010,29448,12209,3844,38222,206337,100876,67827,137088,14167,252225,84163,195270,1306,5703,54198,779,46802,22028,51124,86759,70560,113164,35685,162145,45471,34561,422,2611,6464,47486,19223,38246,9191,18331,89942,243642,212364,15893,17518,22617,6409,30046,126182,59716,36560,104428,18846,26592,19458,50793,147333,30826,1388,27647,10922,14495,33545,19269,135828,39727,41601,46931,233379,49169,131130,182112,16276,82381,118209,142445,128310,19672,28740,82907,33436,3118,102206,28723,24819,41937,38854,5157,3881,111491,1142,9776,421673,152241,29309,14961,87854,6054,15424,3796,82656,54996,2108,55367,239450,154525,9643,118103,106041,64601,68549,48707,30266,25772,18740,9462,229669,91798,112152,191327,14493,72828,8175,66636,236474,25817,87351,129027,76653,20422,22983,71240,27846,44661,12399,46158,77704,53101,35032,11072,17300,109294,33638,24408,1895,11241,760,17584,82479,125877,63150,141075,34259,23274,81698,15732,43577,48340,91584,14688,16379,24481,150280,96420,262050,48635,43727,61819,56268,72003,88178,17281,79912,13218,122519,125295,166396,11811,2171,118930,67746,17636,178278,174656,95661,173039,83845,79689,17473,98555,127696,203415,54730,22925,232239,9309,12136,175026,20740,180188,10747,39816,314017,266131,10040,175732,112550,220651,31974,37393,888,23008,86799,4303,64905,148467,75337,251,3284,370102,50264,9835,5438,23655,4481,29851,329,12855,7162,64931,78141,12804,42372,296771,83547,18624,34874,86271,3360,48665,77735,88767,11463,63527,28889,22258,29140,194315,113924,25499,6406,31334,1845,4802,49184,43455,35469,127594,92970,61038,115005,38840,87761,106838,8811,20572,55637,11162,96721,132425,108925,2948,125457,36356,3502,75270,27622,127192,2561,123095,49394,61155,16897,110064,9699,89448,53356,19628,220310,21622,83036,9885,112214,6087,26713,17901,161912,91492,3440,68594,9266,92238,8087,6866,150194,72175,80701,13459,31836,43243,239700,95846,44749,50647,21945,230538,120612,132371,244604,5193,105637,34661,41341,68775,85393,1874,8771,33718,49672,77403,595452,99507,6490,58895,128742,7704,39239,73217,43816,62824,37804,199976,22361,80005,87514,94832,14089,4574,139975,59142,75523,100268,43906,53442,15152,2547,186002,17011,19513,204282,3343,60568,128318,119250,4298,51871,41336,71759,21921,45074,98169,145889,99427,11350,1237,5520,28799,7803,53702,21026,136352,38293,128690,12158,90132,44600,10184,26957,39459,126025,78904,82999,59373,39301,150198,120529,153042,20177,50089,14764,271571,30530,123161,38975,101562,22941,5648,124654,109243,69817,71675,49162,106884,21241,107795,30258,16572,188262,141456,7688,60718,8271,11044,32440,104608,103419,236109,93156,43293,128929,42107,67180,25201,115254,185488,130954,72813,167547,20537,39969,38432,22582,184022,1139,27199,5655,17767,97412,122606,209377,27070,35871,326617,188954,42680,73512,80911,22629,3011,95021,315242,157737,383,41821,41808,19335,27950,15674,25677,110950,35375,76835,59108,57370,35262,16569,160415,37706,78086,32041,49691,137143,9782,172080,50148,77917,6323,10110,69172,17711,21795,59511,76184,135114,31046,132319,59105,157578,20549,80778,57649,158421,65143,4575,72235,21899,10797,92745,34035,106079,80159,4508,78304,25350,75457,46458,32937,25623,47,8531,104751,84953,8138,36508,187199,66310,115274,13253,32461,38536,1916,42007,187160,35055,26325,84394,35963,94216,45590,97782];var kh=15,Th=class{log;peerRouting;routingTable;refreshInterval;refreshQueryTimeout;commonPrefixLengthRefreshedAt;refreshTimeoutId;constructor(e,t){let{peerRouting:n,routingTable:o,refreshInterval:s,refreshQueryTimeout:i,logPrefix:a}=t;this.log=e.logger.forComponent(`${a}:routing-table:refresh`),this.peerRouting=n,this.routingTable=o,this.refreshInterval=s??3e5,this.refreshQueryTimeout=i??3e4,this.commonPrefixLengthRefreshedAt=[],this.refreshTable=this.refreshTable.bind(this)}async start(){this.log(`refreshing routing table every ${this.refreshInterval}ms`),this.refreshTable(!0)}async stop(){this.refreshTimeoutId!=null&&clearTimeout(this.refreshTimeoutId)}refreshTable(e=!1){this.log("refreshing routing table");let t=this._maxCommonPrefix(),n=this._getTrackedCommonPrefixLengthsForRefresh(t);this.log(`max common prefix length ${t}`),this.log(`tracked CPLs [ ${n.map(o=>o.toISOString()).join(", ")} ]`),Promise.all(n.map(async(o,s)=>{try{if(await this._refreshCommonPrefixLength(s,o,e),this._numPeersForCpl(t)===0){let i=Math.min(2*(s+1),n.length-1);for(let a=s+1;a<i+1;a++)try{await this._refreshCommonPrefixLength(a,o,e)}catch(c){this.log.error(c)}}}catch(i){this.log.error(i)}})).catch(o=>{this.log.error(o)}).then(()=>{this.refreshTimeoutId=setTimeout(this.refreshTable,this.refreshInterval),this.refreshTimeoutId.unref!=null&&this.refreshTimeoutId.unref()}).catch(o=>{this.log.error(o)})}async _refreshCommonPrefixLength(e,t,n){if(!n&&t.getTime()>Date.now()-this.refreshInterval){this.log("not running refresh for cpl %s as time since last refresh not above interval",e);return}let o=await this._generateRandomPeerId(e);this.log("starting refreshing cpl %s with key %p (routing table size was %s)",e,o,this.routingTable.size);let s=await Sh(this.peerRouting.getClosestPeers(o.toBytes(),{signal:AbortSignal.timeout(this.refreshQueryTimeout)}));this.log(`found ${s} peers that were close to imaginary peer %p`,o),this.log("finished refreshing cpl %s with key %p (routing table size is now %s)",e,o,this.routingTable.size)}_getTrackedCommonPrefixLengthsForRefresh(e){e>kh&&(e=kh);let t=[];for(let n=0;n<=e;n++)t[n]=this.commonPrefixLengthRefreshedAt[n]??new Date;return t}async _generateRandomPeerId(e){if(this.routingTable.kb==null)throw new Error("Routing table not started");let t=Yn(2),n=(t[1]<<8)+t[0],o=await this._makePeerId(this.routingTable.kb.localNodeId,n,e);return at(o)}async _makePeerId(e,t,n){if(n>kh)throw new Error(`Cannot generate peer ID for common prefix length greater than ${kh}`);let i=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(0,!1)^32768>>n,a=65535<<16-(n+1),c=i&a|t&~a,l=Fv[c],f=new ArrayBuffer(34),u=new DataView(f,0,f.byteLength);return u.setUint8(0,K.code),u.setUint8(1,32),u.setUint32(2,l,!1),new Uint8Array(u.buffer,u.byteOffset,u.byteLength)}_maxCommonPrefix(){let e=0;for(let t of this._prefixLengths())t>e&&(e=t);return e}_numPeersForCpl(e){let t=0;for(let n of this._prefixLengths())n===e&&t++;return t}*_prefixLengths(){if(this.routingTable.kb!=null)for(let{id:e}of this.routingTable.kb.toIterable()){let t=Co(this.routingTable.kb.localNodeId,e),n=0;for(let o of t)if(o===0)n++;else break;yield n}}};var Dh=class{providers;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:add-provider`),this.providers=t.providers}async handle(e,t){if(this.log("start"),t.key==null||t.key.length===0)throw new h("Missing key","ERR_MISSING_KEY");let n;try{n=de.decode(t.key)}catch{throw new h("Invalid CID","ERR_INVALID_CID")}(t.providers==null||t.providers.length===0)&&this.log.error("no providers found in message"),await Promise.all(t.providers.map(async o=>{if(!e.equals(o.id)){this.log("invalid provider peer %p from %p",o.id,e);return}if(o.multiaddrs.length<1){this.log("no valid addresses for provider %p. Ignore",e);return}this.log("received provider %p for %s (addrs %s)",e,n,o.multiaddrs.map(s=>se(s).toString())),await this.providers.addProvider(n,at(o.id))}))}};var Ph=class{peerRouting;peerInfoMapper;peerId;addressManager;log;constructor(e,t){let{peerRouting:n,logPrefix:o}=t;this.log=e.logger.forComponent(`${o}:rpc:handlers:find-node`),this.peerId=e.peerId,this.addressManager=e.addressManager,this.peerRouting=n,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){this.log("incoming request from %p for peers closer to %b",e,t.key);let n=[];if(t.key==null)throw new h("Invalid FIND_NODE message received - key was missing","ERR_INVALID_MESSAGE");O(this.peerId.toBytes(),t.key)?n=[{id:this.peerId,multiaddrs:this.addressManager.getAddresses().map(s=>s.decapsulateCode(fe("p2p").code))}]:n=await this.peerRouting.getCloserPeersOffline(t.key,e);let o={type:Ie.FIND_NODE,clusterLevel:t.clusterLevel,closer:n.map(this.peerInfoMapper).filter(({multiaddrs:s})=>s.length).map(s=>({id:s.id.toBytes(),multiaddrs:s.multiaddrs.map(i=>i.bytes)})),providers:[]};return o.closer.length===0&&this.log("could not find any peers closer to %b than %p",t.key,e),o}};var Ch=class{peerRouting;providers;peerStore;peerInfoMapper;log;constructor(e,t){let{peerRouting:n,providers:o,logPrefix:s}=t;this.log=e.logger.forComponent(`${s}:rpc:handlers:get-providers`),this.peerStore=e.peerStore,this.peerRouting=n,this.providers=o,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(t.key==null)throw new h("Invalid FIND_NODE message received - key was missing","ERR_INVALID_MESSAGE");let n;try{n=de.decode(t.key)}catch{throw new h("Invalid CID","ERR_INVALID_CID")}this.log("%p asking for providers for %s",e,n);let[o,s]=await Promise.all([this.providers.getProviders(n),this.peerRouting.getCloserPeersOffline(t.key,e)]),i=await this._getPeers(o),a=await this._getPeers(s.map(({id:l})=>l)),c={type:Ie.GET_PROVIDERS,key:t.key,clusterLevel:t.clusterLevel,closer:a.map(this.peerInfoMapper).filter(({multiaddrs:l})=>l.length).map(l=>({id:l.id.toBytes(),multiaddrs:l.multiaddrs.map(f=>f.bytes)})),providers:i.map(this.peerInfoMapper).filter(({multiaddrs:l})=>l.length).map(l=>({id:l.id.toBytes(),multiaddrs:l.multiaddrs.map(f=>f.bytes)}))};return this.log("got %s providers %s closerPeers",c.providers.length,c.closer.length),c}async _getAddresses(e){return[]}async _getPeers(e){let t=[];for(let n of e)try{let o=await this.peerStore.get(n),s=this.peerInfoMapper({id:n,multiaddrs:o.addresses.map(({multiaddr:i})=>i)});s.multiaddrs.length>0&&t.push(s)}catch(o){if(o.code!=="ERR_NOT_FOUND")throw o}return t}};var Nh=class{peerStore;datastore;peerRouting;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:get-value`),this.peerStore=e.peerStore,this.datastore=e.datastore,this.peerRouting=t.peerRouting}async handle(e,t){let n=t.key;if(this.log("%p asked for key %b",e,n),n==null||n.length===0)throw new h("Invalid key","ERR_INVALID_KEY");let o={type:Ie.GET_VALUE,key:n,clusterLevel:t.clusterLevel,closer:[],providers:[]};if(Xx(n)){this.log("is public key");let a=Qx(n),c;try{let l=await this.peerStore.get(a);if(l.id.publicKey==null)throw new h("No public key found in key book","ERR_NOT_FOUND");c=l.id.publicKey}catch(l){if(l.code!=="ERR_NOT_FOUND")throw l}if(c!=null)return this.log("returning found public key"),o.record=new Ut(n,c,new Date).serialize(),o}let[s,i]=await Promise.all([this._checkLocalDatastore(n),this.peerRouting.getCloserPeersOffline(n,e)]);return s!=null&&(this.log("had record for %b in local datastore",n),o.record=s.serialize()),i.length>0&&(this.log("had %s closer peers in routing table",i.length),o.closer=i.map(a=>({id:a.id.toBytes(),multiaddrs:a.multiaddrs.map(c=>c.bytes)}))),o}async _checkLocalDatastore(e){this.log("checkLocalDatastore looking for %b",e);let t=Oo(e),n;try{n=await this.datastore.get(t)}catch(s){if(s.code==="ERR_NOT_FOUND")return;throw s}let o=Ut.deserialize(n);if(o==null)throw new h("Invalid record","ERR_INVALID_RECORD");if(o.timeReceived==null||Date.now()-o.timeReceived.getTime()>1296e5){await this.datastore.delete(t);return}return o}};var Bh=class{log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:ping`)}async handle(e,t){return this.log("ping from %p",e),t}};var Lh=class{components;validators;log;constructor(e,t){let{validators:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:put-value`),this.validators=n}async handle(e,t){let n=t.key;if(this.log("%p asked us to store value for key %b",e,n),t.record==null){let o=`Empty record from: ${e.toString()}`;throw this.log.error(o),new h(o,"ERR_EMPTY_RECORD")}try{let o=Ut.deserialize(t.record);await ic(this.validators,o),o.timeReceived=new Date;let s=Oo(o.key);await this.components.datastore.put(s,o.serialize().subarray()),this.log("put record for %b into datastore under key %k",n,s)}catch(o){this.log("did not put record for key %b into datastore %o",n,o)}return t}};var Oh=class{handlers;routingTable;log;constructor(e,t){let{providers:n,peerRouting:o,validators:s,logPrefix:i,peerInfoMapper:a}=t;this.log=e.logger.forComponent(`${i}:rpc`),this.routingTable=t.routingTable,this.handlers={[Ie.GET_VALUE.toString()]:new Nh(e,{peerRouting:o,logPrefix:i}),[Ie.PUT_VALUE.toString()]:new Lh(e,{validators:s,logPrefix:i}),[Ie.FIND_NODE.toString()]:new Ph(e,{peerRouting:o,logPrefix:i,peerInfoMapper:a}),[Ie.ADD_PROVIDER.toString()]:new Dh(e,{providers:n,logPrefix:i}),[Ie.GET_PROVIDERS.toString()]:new Ch(e,{peerRouting:o,providers:n,logPrefix:i,peerInfoMapper:a}),[Ie.PING.toString()]:new Bh(e,{logPrefix:i})}}async handleMessage(e,t){try{await this.routingTable.add(e)}catch(o){this.log.error("Failed to update the kbucket store",o)}let n=this.handlers[t.type];if(n==null){this.log.error(`no handler found for message type: ${t.type}`);return}return n.handle(e,t)}onIncomingStream(e){Promise.resolve().then(async()=>{let{stream:t,connection:n}=e,o=n.remotePeer;try{await this.routingTable.add(o)}catch(i){this.log.error(i)}let s=this;await it(t,i=>cr(i),async function*(i){for await(let a of i){let c=zr.decode(a);s.log("incoming %s from %p",c.type,o);let l=await s.handleMessage(o,c);l!=null&&(yield zr.encode(l))}},i=>ar(i),t)}).catch(t=>{this.log.error(t)})}};var Kh=class extends Fe{log;components;protocol;running;registrarId;constructor(e,t){super();let{protocol:n,logPrefix:o}=t;this.components=e,this.log=e.logger.forComponent(`${o}:topology-listener`),this.running=!1,this.protocol=n}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.registrarId=await this.components.registrar.register(this.protocol,{onConnect:e=>{this.log("observed peer %p with protocol %s",e,this.protocol),this.dispatchEvent(new Ct("peer",{detail:e}))}}))}async stop(){this.running=!1,this.registrarId!=null&&(this.components.registrar.unregister(this.registrarId),this.registrarId=void 0)}};var Ky=class{dht;constructor(e){this.dht=e}async provide(e,t={}){await Pr(this.dht.provide(e,t))}async*findProviders(e,t={}){for await(let n of this.dht.findProviders(e,t))n.name==="PROVIDER"&&(yield*n.providers)}async put(e,t,n){await Pr(this.dht.put(e,t,n))}async get(e,t){for await(let n of this.dht.get(e,t))if(n.name==="VALUE")return n.value;throw new h("Not found","ERR_NOT_FOUND")}},My=class{dht;constructor(e){this.dht=e}async findPeer(e,t={}){for await(let n of this.dht.findPeer(e,t))if(n.name==="FINAL_PEER")return n.peer;throw new h("Not found","ERR_NOT_FOUND")}async*getClosestPeers(e,t={}){for await(let n of this.dht.getClosestPeers(e,t))n.name==="FINAL_PEER"&&(yield n.peer)}},dK=32,hK=64,Mh=class extends Fe{protocol;routingTable;providers;network;peerRouting;components;log;running;kBucketSize;clientMode;validators;selectors;queryManager;contentFetching;contentRouting;routingTableRefresh;rpc;topologyListener;querySelf;maxInboundStreams;maxOutboundStreams;dhtContentRouting;dhtPeerRouting;peerInfoMapper;constructor(e,t){super();let{kBucketSize:n,clientMode:o,validators:s,selectors:i,querySelfInterval:a,protocol:c,logPrefix:l,pingTimeout:f,pingConcurrency:u,maxInboundStreams:d,maxOutboundStreams:y,providers:p}=t,m=l??"libp2p:kad-dht";this.running=!1,this.components=e,this.log=e.logger.forComponent(m),this.protocol=c??Fx,this.kBucketSize=n??20,this.clientMode=o??!0,this.maxInboundStreams=d??dK,this.maxOutboundStreams=y??hK,this.peerInfoMapper=t.peerInfoMapper??zx,this.routingTable=new Ih(e,{kBucketSize:n,pingTimeout:f,pingConcurrency:u,protocol:this.protocol,logPrefix:m}),this.providers=new vh(e,p??{}),this.validators={...Wx,...s},this.selectors={...Yx,...i},this.network=new mh(e,{protocol:this.protocol,logPrefix:m});let g=he();t.allowQueryWithZeroPeers===!0&&g.resolve(),this.queryManager=new _h(e,{disjointPaths:Math.ceil(this.kBucketSize/2),logPrefix:m,initialQuerySelfHasRun:g,routingTable:this.routingTable}),this.peerRouting=new xh(e,{routingTable:this.routingTable,network:this.network,validators:this.validators,queryManager:this.queryManager,logPrefix:m}),this.contentFetching=new hh(e,{validators:this.validators,selectors:this.selectors,peerRouting:this.peerRouting,queryManager:this.queryManager,network:this.network,logPrefix:m}),this.contentRouting=new ph(e,{network:this.network,peerRouting:this.peerRouting,queryManager:this.queryManager,routingTable:this.routingTable,providers:this.providers,logPrefix:m}),this.routingTableRefresh=new Th(e,{peerRouting:this.peerRouting,routingTable:this.routingTable,logPrefix:m}),this.rpc=new Oh(e,{routingTable:this.routingTable,providers:this.providers,peerRouting:this.peerRouting,validators:this.validators,logPrefix:m,peerInfoMapper:this.peerInfoMapper}),this.topologyListener=new Kh(e,{protocol:this.protocol,logPrefix:m}),this.querySelf=new Rh(e,{peerRouting:this.peerRouting,interval:a,initialInterval:t.initialQuerySelfInterval,logPrefix:m,initialQuerySelfHasRun:g,routingTable:this.routingTable}),this.network.addEventListener("peer",b=>{let E=b.detail;this.onPeerConnect(E).catch(w=>{this.log.error("could not add %p to routing table",E.id,w)}),this.dispatchEvent(new Ct("peer",{detail:E}))}),this.topologyListener.addEventListener("peer",b=>{let E=b.detail;Promise.resolve().then(async()=>{let w=await this.components.peerStore.get(E),_={id:E,multiaddrs:w.addresses.map(({multiaddr:I})=>I),protocols:w.protocols};await this.onPeerConnect(_)}).catch(w=>{this.log.error("could not add %p to routing table",E,w)})}),this.dhtPeerRouting=new My(this),this.dhtContentRouting=new Ky(this),t.clientMode==null&&e.events.addEventListener("self:peer:update",b=>{this.log("received update of self-peer info"),Promise.resolve().then(async()=>{let E=b.detail.peer.addresses.some(({multiaddr:_})=>Zx(_)),w=this.getMode();E&&w==="client"?await this.setMode("server"):w==="server"&&!E&&await this.setMode("client")}).catch(E=>{this.log.error("error setting dht server mode",E)})})}get[vn](){return this.dhtContentRouting}get[_n](){return this.dhtPeerRouting}get[zs](){return this}async onPeerConnect(e){if(this.log("peer %p connected",e.id),e=this.peerInfoMapper(e),e.multiaddrs.length===0){this.log("ignoring %p as there were no valid addresses in %s after filtering",e.id,e.multiaddrs.map(t=>t.toString()));return}try{await this.routingTable.add(e.id)}catch(t){this.log.error("could not add %p to routing table",e.id,t)}}isStarted(){return this.running}getMode(){return this.clientMode?"client":"server"}async setMode(e){await this.components.registrar.unhandle(this.protocol),e==="client"?(this.log("enabling client mode"),this.clientMode=!0):(this.log("enabling server mode"),this.clientMode=!1,await this.components.registrar.handle(this.protocol,this.rpc.onIncomingStream.bind(this.rpc),{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}))}async start(){this.running=!0,await this.setMode(this.clientMode?"client":"server"),this.querySelf.start(),await Promise.all([this.providers.start(),this.queryManager.start(),this.network.start(),this.routingTable.start(),this.topologyListener.start(),this.routingTableRefresh.start()])}async stop(){this.running=!1,this.querySelf.stop(),await Promise.all([this.providers.stop(),this.queryManager.stop(),this.network.stop(),this.routingTable.stop(),this.routingTableRefresh.stop(),this.topologyListener.stop()])}async*put(e,t,n={}){yield*this.contentFetching.put(e,t,n)}async*get(e,t={}){yield*this.contentFetching.get(e,t)}async*provide(e,t={}){yield*this.contentRouting.provide(e,this.components.addressManager.getAddresses(),t)}async*findProviders(e,t={}){yield*this.contentRouting.findProviders(e,t)}async*findPeer(e,t={}){yield*this.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t={}){yield*this.peerRouting.getClosestPeers(e,t)}async refreshRoutingTable(){this.routingTableRefresh.refreshTable(!0)}};var Vv;(function(r){r[r.SEND_QUERY=0]="SEND_QUERY",r[r.PEER_RESPONSE=1]="PEER_RESPONSE",r[r.FINAL_PEER=2]="FINAL_PEER",r[r.QUERY_ERROR=3]="QUERY_ERROR",r[r.PROVIDER=4]="PROVIDER",r[r.VALUE=5]="VALUE",r[r.ADD_PEER=6]="ADD_PEER",r[r.DIAL_PEER=7]="DIAL_PEER"})(Vv||(Vv={}));var qv;(function(r){r[r.PUT_VALUE=0]="PUT_VALUE",r[r.GET_VALUE=1]="GET_VALUE",r[r.ADD_PROVIDER=2]="ADD_PROVIDER",r[r.GET_PROVIDERS=3]="GET_PROVIDERS",r[r.FIND_NODE=4]="FIND_NODE",r[r.PING=5]="PING"})(qv||(qv={}));function Hv(r){return e=>new Mh(e,r)}var nr={get(r=globalThis){let e=r.crypto;if(e==null||e.subtle==null)throw Object.assign(new Error("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"),{code:"ERR_MISSING_WEB_CRYPTO"});return e}};var Vy={};oe(Vy,{Ed25519PrivateKey:()=>Ui,Ed25519PublicKey:()=>wu,generateKeyPair:()=>gK,generateKeyPairFromSeed:()=>Xv,unmarshalEd25519PrivateKey:()=>mK,unmarshalEd25519PublicKey:()=>yK});function Xr(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var fc=32,Fo=64,Uh=32;function $v(){let r=we.utils.randomPrivateKey(),e=we.getPublicKey(r);return{privateKey:zv(r,e),publicKey:e}}function Gv(r){if(r.length!==Uh)throw new TypeError('"seed" must be 32 bytes in length.');if(!(r instanceof Uint8Array))throw new TypeError('"seed" must be a node.js Buffer, or Uint8Array.');let e=r,t=we.getPublicKey(e);return{privateKey:zv(e,t),publicKey:t}}function Yv(r,e){let t=r.subarray(0,Uh);return we.sign(e instanceof Uint8Array?e:e.subarray(),t)}function Wv(r,e,t){return we.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function zv(r,e){let t=new Uint8Array(Fo);for(let n=0;n<Uh;n++)t[n]=r[n],t[Uh+n]=e[n];return t}var Uy={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function Fh(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,o=r?.digest??"SHA-256",s=r?.saltLength??16,i=r?.iterations??32767,a=nr.get();t*=8;async function c(u,d){let y=a.getRandomValues(new Uint8Array(s)),p=a.getRandomValues(new Uint8Array(n)),m={name:e,iv:p};typeof d=="string"&&(d=x(d));let g;if(d.length===0){g=await a.subtle.importKey("jwk",Uy,{name:"AES-GCM"},!0,["encrypt"]);try{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}catch{g=await a.subtle.importKey("jwk",Uy,{name:"AES-GCM"},!0,["encrypt"])}}else{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}let b=await a.subtle.encrypt(m,g,u);return le([y,m.iv,new Uint8Array(b)])}async function l(u,d){let y=u.subarray(0,s),p=u.subarray(s,s+n),m=u.subarray(s+n),g={name:e,iv:p};typeof d=="string"&&(d=x(d));let b;if(d.length===0)try{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}catch{b=await a.subtle.importKey("jwk",Uy,{name:"AES-GCM"},!0,["decrypt"])}else{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}let E=await a.subtle.decrypt(g,b,m);return new Uint8Array(E)}return{encrypt:c,decrypt:l}}async function dc(r,e){let n=await Fh().encrypt(r,e);return Ge.encode(n)}var wt;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(wt||(wt={}));var Fy;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(Fy||(Fy={}));(function(r){r.codec=()=>Re(Fy)})(wt||(wt={}));var Vo;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),wt.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=wt.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(Vo||(Vo={}));var jn;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),wt.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=wt.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(jn||(jn={}));var wu=class{_key;constructor(e){this._key=hc(e,fc)}verify(e,t){return Wv(this._key,t,e)}marshal(){return this._key}get bytes(){return Vo.encode({Type:wt.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Xr(e)?e.then(({bytes:t})=>t):e.bytes}},Ui=class{_key;_publicKey;constructor(e,t){this._key=hc(e,Fo),this._publicKey=hc(t,fc)}sign(e){return Yv(this._key,e)}get public(){return new wu(this._publicKey)}marshal(){return this._key}get bytes(){return jn.encode({Type:wt.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return Xr(e)?{bytes:t}=await e:t=e.bytes,t}async id(){let e=Xe.digest(this.public.bytes);return ie.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return dc(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function mK(r){if(r.length>Fo){r=hc(r,Fo+fc);let n=r.subarray(0,Fo),o=r.subarray(Fo,r.length);return new Ui(n,o)}r=hc(r,Fo);let e=r.subarray(0,Fo),t=r.subarray(fc);return new Ui(e,t)}function yK(r){return r=hc(r,fc),new wu(r)}async function gK(){let{privateKey:r,publicKey:e}=$v();return new Ui(r,e)}async function Xv(r){let{privateKey:e,publicKey:t}=Gv(r);return new Ui(e,t)}function hc(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new h(`Key must be a Uint8Array of length ${e}, got ${r.length}`,"ERR_INVALID_KEY_TYPE");return r}async function Qv(r,e){let t=Ge.decode(r);return Fh().decrypt(t,e)}var Wy={};oe(Wy,{MAX_RSA_KEY_SIZE:()=>vu,RsaPrivateKey:()=>pc,RsaPublicKey:()=>xu,fromJwk:()=>kK,generateKeyPair:()=>TK,unmarshalRsaPrivateKey:()=>Gy,unmarshalRsaPublicKey:()=>IK});function Xn(r){if(isNaN(r)||r<=0)throw new h("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return dt(r)}var Ks={};oe(Ks,{exportToPem:()=>_K,importFromPem:()=>$y,jwkToPkcs1:()=>wK,jwkToPkix:()=>xK,pkcs1ToJwk:()=>bK,pkixToJwk:()=>EK});function bK(r){let{result:e}=Ee(r),t=e.valueBlock.value;return{n:v(Qn(t[1].toBigInt()),"base64url"),e:v(Qn(t[2].toBigInt()),"base64url"),d:v(Qn(t[3].toBigInt()),"base64url"),p:v(Qn(t[4].toBigInt()),"base64url"),q:v(Qn(t[5].toBigInt()),"base64url"),dp:v(Qn(t[6].toBigInt()),"base64url"),dq:v(Qn(t[7].toBigInt()),"base64url"),qi:v(Qn(t[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function wK(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 h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new B({value:0}),B.fromBigInt(Jn(x(r.n,"base64url"))),B.fromBigInt(Jn(x(r.e,"base64url"))),B.fromBigInt(Jn(x(r.d,"base64url"))),B.fromBigInt(Jn(x(r.p,"base64url"))),B.fromBigInt(Jn(x(r.q,"base64url"))),B.fromBigInt(Jn(x(r.dp,"base64url"))),B.fromBigInt(Jn(x(r.dq,"base64url"))),B.fromBigInt(Jn(x(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function EK(r){let{result:e}=Ee(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:v(Qn(t[0].toBigInt()),"base64url"),e:v(Qn(t[1].toBigInt()),"base64url")}}function xK(r){if(r.n==null||r.e==null)throw new h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new kt({valueHex:new M({value:[B.fromBigInt(Jn(x(r.n,"base64url"))),B.fromBigInt(Jn(x(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function Qn(r){let e=r.toString(16);e.length%2>0&&(e=`0${e}`);let t=e.length/2,n=new Uint8Array(t),o=0,s=0;for(;o<t;)n[o]=parseInt(e.slice(s,s+2),16),o+=1,s+=2;return n}function Jn(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}var vK=16,qy=32,Hy=1e4;async function _K(r,e){let t=nr.get(),o=new M({value:[new B({value:0}),new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new Se({valueHex:r.marshal()})]}).toBER(),s=new Uint8Array(o,0,o.byteLength),i=Xn(vK),a=await pt(Ye,e,i,{c:Hy,dkLen:qy}),c=Xn(16),l=await t.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),f=await t.subtle.encrypt({name:"AES-CBC",iv:c},l,s),u=new M({value:[new Se({valueHex:i}),new B({value:Hy}),new B({value:qy}),new M({value:[new ae({value:"1.2.840.113549.2.11"}),new Ne]})]}),d=new M({value:[new ae({value:"1.2.840.113549.1.5.13"}),new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.5.12"}),u]}),new M({value:[new ae({value:"2.16.840.1.101.3.4.1.42"}),new Se({valueHex:c})]})]})]}),p=new M({value:[d,new Se({valueHex:f})]}).toBER(),m=new Uint8Array(p,0,p.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...v(m,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
|
|
27
|
-
`)}async function $y(r,e){let t=nr.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o),{iv:i,salt:a,iterations:c,keySize:l,cipherText:f}=SK(s),u=await pt(Ye,e,a,{c,dkLen:l}),d=await t.subtle.importKey("raw",u,"AES-CBC",!1,["decrypt"]),y=Eu(await t.subtle.decrypt({name:"AES-CBC",iv:i},d,f)),{result:p}=Ee(y);n=Jv(p)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o);n=Jv(s)}else throw new h("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return Gy(n)}function SK(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new h("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new h("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let s=n.valueBlock.value[1],i=Eu(s.valueBlock.value[0].getValue()),a=Hy,c=qy;if(s.valueBlock.value.length===3)a=Number(s.valueBlock.value[1].toBigInt()),c=Number(s.valueBlock.value[2].toBigInt());else if(s.valueBlock.value.length===2)throw new h("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let l=e.valueBlock.value[1].valueBlock.value[1],f=l.valueBlock.value[0].toString();if(f!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(f!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new h("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let u=Eu(l.valueBlock.value[1].getValue());return{cipherText:Eu(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:u}}function Jv(r){return Eu(r.valueBlock.value[2].getValue())}function Eu(r){return new Uint8Array(r,0,r.byteLength)}async function Zv(r){let e=await nr.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await r_(e);return{privateKey:t[0],publicKey:t[1]}}async function Yy(r){let t=[await nr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await RK(r)],n=await r_({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function e_(r,e){let t=await nr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await nr.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function t_(r,e,t){let n=await nr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return nr.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function r_(r){if(r.privateKey==null||r.publicKey==null)throw new h("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([nr.get().subtle.exportKey("jwk",r.privateKey),nr.get().subtle.exportKey("jwk",r.publicKey)])}async function RK(r){return nr.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function qh(r){if(r.kty!=="RSA")throw new h("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new h("invalid key modulus","ERR_INVALID_KEY_MODULUS");return x(r.n,"base64url").length*8}var vu=8192,xu=class{_key;constructor(e){this._key=e}verify(e,t){return t_(this._key,t,e)}marshal(){return Ks.jwkToPkix(this._key)}get bytes(){return Vo.encode({Type:wt.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Xr(e)?e.then(({bytes:t})=>t):e.bytes}},pc=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return Xn(16)}sign(e){return e_(this._key,e)}get public(){if(this._publicKey==null)throw new h("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new xu(this._publicKey)}marshal(){return Ks.jwkToPkcs1(this._key)}get bytes(){return jn.encode({Type:wt.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Xr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return Ks.exportToPem(this,e);if(t==="libp2p-key")return dc(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function Gy(r){let e=Ks.pkcs1ToJwk(r);if(qh(e)>vu)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await Yy(e);return new pc(t.privateKey,t.publicKey)}function IK(r){let e=Ks.pkixToJwk(r);if(qh(e)>vu)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new xu(e)}async function kK(r){if(qh(r)>vu)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await Yy(r);return new pc(e.privateKey,e.publicKey)}async function TK(r){if(r>vu)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await Zv(r);return new pc(e.privateKey,e.publicKey)}var jy={};oe(jy,{Secp256k1PrivateKey:()=>Su,Secp256k1PublicKey:()=>_u,generateKeyPair:()=>NK,unmarshalSecp256k1PrivateKey:()=>PK,unmarshalSecp256k1PublicKey:()=>CK});function n_(){return W.utils.randomPrivateKey()}function o_(r,e){let t=K.digest(e instanceof Uint8Array?e:e.subarray());if(Xr(t))return t.then(({digest:n})=>W.sign(n,r).toDERRawBytes()).catch(n=>{throw new h(String(n),"ERR_INVALID_INPUT")});try{return W.sign(t.digest,r).toDERRawBytes()}catch(n){throw new h(String(n),"ERR_INVALID_INPUT")}}function s_(r,e,t){let n=K.digest(t instanceof Uint8Array?t:t.subarray());if(Xr(n))return n.then(({digest:o})=>W.verify(e,o,r)).catch(o=>{throw new h(String(o),"ERR_INVALID_INPUT")});try{return W.verify(e,n.digest,r)}catch(o){throw new h(String(o),"ERR_INVALID_INPUT")}}function i_(r){return W.ProjectivePoint.fromHex(r).toRawBytes(!0)}function a_(r){try{W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}function zy(r){try{W.ProjectivePoint.fromHex(r)}catch(e){throw new h(String(e),"ERR_INVALID_PUBLIC_KEY")}}function c_(r){try{return W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}var _u=class{_key;constructor(e){zy(e),this._key=e}verify(e,t){return s_(this._key,t,e)}marshal(){return i_(this._key)}get bytes(){return Vo.encode({Type:wt.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return Xr(e)?{bytes:t}=await e:t=e.bytes,t}},Su=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??c_(e),a_(this._key),zy(this._publicKey)}sign(e){return o_(this._key,e)}get public(){return new _u(this._publicKey)}marshal(){return this._key}get bytes(){return jn.encode({Type:wt.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Xr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return dc(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function PK(r){return new Su(r)}function CK(r){return new _u(r)}async function NK(){let r=n_();return new Su(r)}var Ru={rsa:Wy,ed25519:Vy,secp256k1:jy};function l_(r){let e=Object.keys(Ru).join(" / ");return new h(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function BK(r){if(r=r.toLowerCase(),r==="rsa"||r==="ed25519"||r==="secp256k1")return Ru[r];throw l_(r)}async function u_(r,e){return BK(r).generateKeyPair(e??2048)}async function Xy(r){let e=jn.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case wt.RSA:return Ru.rsa.unmarshalRsaPrivateKey(t);case wt.Ed25519:return Ru.ed25519.unmarshalEd25519PrivateKey(t);case wt.Secp256k1:return Ru.secp256k1.unmarshalSecp256k1PrivateKey(t);default:throw l_(e.Type??"RSA")}}async function Au(r,e){try{let t=await Qv(r,e);return await Xy(t)}catch{}if(!r.includes("BEGIN"))throw new h("Encrypted key was not a libp2p-key or a PEM file","ERR_INVALID_IMPORT_FORMAT");return $y(r,e)}var f_={sha1:Tv,"sha2-256":ms,"sha2-512":Ye};function Iu(r,e,t,n,o){if(o!=="sha1"&&o!=="sha2-256"&&o!=="sha2-512"){let a=Object.keys(f_).join(" / ");throw new h(`Hash '${o}' is unknown or not supported. Must be ${a}`,"ERR_UNSUPPORTED_HASH_TYPE")}let s=f_[o],i=Cg(s,r,e,{c:t,dkLen:n});return Ge.encode(i).substring(1)}var E_=Ue(w_(),1),gc=E_.default;var D_=Ue(T_(),1);var Pe;(function(r){r.ERR_INVALID_PARAMETERS="ERR_INVALID_PARAMETERS",r.ERR_INVALID_KEY_NAME="ERR_INVALID_KEY_NAME",r.ERR_INVALID_KEY_TYPE="ERR_INVALID_KEY_TYPE",r.ERR_KEY_ALREADY_EXISTS="ERR_KEY_ALREADY_EXISTS",r.ERR_INVALID_KEY_SIZE="ERR_INVALID_KEY_SIZE",r.ERR_KEY_NOT_FOUND="ERR_KEY_NOT_FOUND",r.ERR_OLD_KEY_NAME_INVALID="ERR_OLD_KEY_NAME_INVALID",r.ERR_NEW_KEY_NAME_INVALID="ERR_NEW_KEY_NAME_INVALID",r.ERR_PASSWORD_REQUIRED="ERR_PASSWORD_REQUIRED",r.ERR_PEM_REQUIRED="ERR_PEM_REQUIRED",r.ERR_CANNOT_READ_KEY="ERR_CANNOT_READ_KEY",r.ERR_MISSING_PRIVATE_KEY="ERR_MISSING_PRIVATE_KEY",r.ERR_INVALID_OLD_PASS_TYPE="ERR_INVALID_OLD_PASS_TYPE",r.ERR_INVALID_NEW_PASS_TYPE="ERR_INVALID_NEW_PASS_TYPE",r.ERR_INVALID_PASS_LENGTH="ERR_INVALID_PASS_LENGTH"})(Pe||(Pe={}));var JK="/pkcs8/",P_="/info/",Fi=new WeakMap,Vi={minKeyLength:112/8,minSaltLength:128/8,minIterationCount:1e3},Jy={dek:{keyLength:512/8,iterationCount:1e4,salt:"you should override this value with a crypto secure random number",hash:"sha2-512"}};function qo(r){return r==null||typeof r!="string"?!1:r===(0,D_.default)(r.trim())&&r.length>0}async function He(){let t=Math.random()*800+200;await new Promise(n=>setTimeout(n,t))}function Zn(r){return new qe(JK+r)}function Ms(r){return new qe(P_+r)}var Gh=class{components;init;log;constructor(e,t){if(this.components=e,this.log=e.logger.forComponent("libp2p:keychain"),this.init=gc(Jy,t),this.init.pass!=null&&this.init.pass?.length<20)throw new Error("pass must be least 20 characters");if(this.init.dek?.keyLength!=null&&this.init.dek.keyLength<Vi.minKeyLength)throw new Error(`dek.keyLength must be least ${Vi.minKeyLength} bytes`);if(this.init.dek?.salt?.length!=null&&this.init.dek.salt.length<Vi.minSaltLength)throw new Error(`dek.saltLength must be least ${Vi.minSaltLength} bytes`);if(this.init.dek?.iterationCount!=null&&this.init.dek.iterationCount<Vi.minIterationCount)throw new Error(`dek.iterationCount must be least ${Vi.minIterationCount}`);let n=this.init.pass!=null&&this.init.dek?.salt!=null?Iu(this.init.pass,this.init.dek?.salt,this.init.dek?.iterationCount,this.init.dek?.keyLength,this.init.dek?.hash):"";Fi.set(this,{dek:n})}static generateOptions(){let e=Object.assign({},Jy),t=Math.ceil(Vi.minSaltLength/3)*3;return e.dek.salt=v(Xn(t),"base64"),e}static get options(){return Jy}async createKey(e,t,n=2048){if(!qo(e)||e==="self")throw await He(),new h("Invalid key name",Pe.ERR_INVALID_KEY_NAME);if(typeof t!="string")throw await He(),new h("Invalid key type",Pe.ERR_INVALID_KEY_TYPE);let o=Zn(e);if(await this.components.datastore.has(o))throw await He(),new h("Key name already exists",Pe.ERR_KEY_ALREADY_EXISTS);switch(t.toLowerCase()){case"rsa":if(!Number.isSafeInteger(n)||n<2048)throw await He(),new h("Invalid RSA key size",Pe.ERR_INVALID_KEY_SIZE);break;default:break}let i;try{let a=await u_(t,n),c=await a.id(),l=Fi.get(this);if(l==null)throw new h("dek missing",Pe.ERR_INVALID_PARAMETERS);let f=l.dek,u=await a.export(f);i={name:e,id:c};let d=this.components.datastore.batch();d.put(o,x(u)),d.put(Ms(e),x(JSON.stringify(i))),await d.commit()}catch(a){throw await He(),a}return i}async listKeys(){let e={prefix:P_},t=[];for await(let n of this.components.datastore.query(e))t.push(JSON.parse(v(n.value)));return t}async findKeyById(e){try{let n=(await this.listKeys()).find(o=>o.id===e);if(n==null)throw new h(`Key with id '${e}' does not exist.`,Pe.ERR_KEY_NOT_FOUND);return n}catch(t){throw await He(),t}}async findKeyByName(e){if(!qo(e))throw await He(),new h(`Invalid key name '${e}'`,Pe.ERR_INVALID_KEY_NAME);let t=Ms(e);try{let n=await this.components.datastore.get(t);return JSON.parse(v(n))}catch(n){throw await He(),this.log.error(n),new h(`Key '${e}' does not exist.`,Pe.ERR_KEY_NOT_FOUND)}}async removeKey(e){if(!qo(e)||e==="self")throw await He(),new h(`Invalid key name '${e}'`,Pe.ERR_INVALID_KEY_NAME);let t=Zn(e),n=await this.findKeyByName(e),o=this.components.datastore.batch();return o.delete(t),o.delete(Ms(e)),await o.commit(),n}async renameKey(e,t){if(!qo(e)||e==="self")throw await He(),new h(`Invalid old key name '${e}'`,Pe.ERR_OLD_KEY_NAME_INVALID);if(!qo(t)||t==="self")throw await He(),new h(`Invalid new key name '${t}'`,Pe.ERR_NEW_KEY_NAME_INVALID);let n=Zn(e),o=Zn(t),s=Ms(e),i=Ms(t);if(await this.components.datastore.has(o))throw await He(),new h(`Key '${t}' already exists`,Pe.ERR_KEY_ALREADY_EXISTS);try{let c=await this.components.datastore.get(n),l=await this.components.datastore.get(s),f=JSON.parse(v(l));f.name=t;let u=this.components.datastore.batch();return u.put(o,c),u.put(i,x(JSON.stringify(f))),u.delete(n),u.delete(s),await u.commit(),f}catch(c){throw await He(),c}}async exportKey(e,t){if(!qo(e))throw await He(),new h(`Invalid key name '${e}'`,Pe.ERR_INVALID_KEY_NAME);if(t==null)throw await He(),new h("Password is required",Pe.ERR_PASSWORD_REQUIRED);let n=Zn(e);try{let o=await this.components.datastore.get(n),s=v(o),i=Fi.get(this);if(i==null)throw new h("dek missing",Pe.ERR_INVALID_PARAMETERS);let a=i.dek;return await(await Au(s,a)).export(t)}catch(o){throw await He(),o}}async exportPeerId(e){let t="temporary-password",n=await this.exportKey(e,t),o=await Au(n,t);return It(o.public.bytes,o.bytes)}async importKey(e,t,n){if(!qo(e)||e==="self")throw await He(),new h(`Invalid key name '${e}'`,Pe.ERR_INVALID_KEY_NAME);if(t==null)throw await He(),new h("PEM encoded key is required",Pe.ERR_PEM_REQUIRED);let o=Zn(e);if(await this.components.datastore.has(o))throw await He(),new h(`Key '${e}' already exists`,Pe.ERR_KEY_ALREADY_EXISTS);let i;try{i=await Au(t,n)}catch{throw await He(),new h("Cannot read the key, most likely the password is wrong",Pe.ERR_CANNOT_READ_KEY)}let a;try{a=await i.id();let f=Fi.get(this);if(f==null)throw new h("dek missing",Pe.ERR_INVALID_PARAMETERS);let u=f.dek;t=await i.export(u)}catch(f){throw await He(),f}let c={name:e,id:a},l=this.components.datastore.batch();return l.put(o,x(t)),l.put(Ms(e),x(JSON.stringify(c))),await l.commit(),c}async importPeer(e,t){try{if(!qo(e))throw new h(`Invalid key name '${e}'`,Pe.ERR_INVALID_KEY_NAME);if(t==null)throw new h("PeerId is required",Pe.ERR_MISSING_PRIVATE_KEY);if(t.privateKey==null)throw new h("PeerId.privKey is required",Pe.ERR_MISSING_PRIVATE_KEY);let n=await Xy(t.privateKey),o=Zn(e);if(await this.components.datastore.has(o))throw await He(),new h(`Key '${e}' already exists`,Pe.ERR_KEY_ALREADY_EXISTS);let i=Fi.get(this);if(i==null)throw new h("dek missing",Pe.ERR_INVALID_PARAMETERS);let a=i.dek,c=await n.export(a),l={name:e,id:t.toString()},f=this.components.datastore.batch();return f.put(o,x(c)),f.put(Ms(e),x(JSON.stringify(l))),await f.commit(),l}catch(n){throw await He(),n}}async getPrivateKey(e){if(!qo(e))throw await He(),new h(`Invalid key name '${e}'`,Pe.ERR_INVALID_KEY_NAME);try{let t=Zn(e),n=await this.components.datastore.get(t);return v(n)}catch(t){throw await He(),this.log.error(t),new h(`Key '${e}' does not exist.`,Pe.ERR_KEY_NOT_FOUND)}}async rotateKeychainPass(e,t){if(typeof e!="string")throw await He(),new h(`Invalid old pass type '${typeof e}'`,Pe.ERR_INVALID_OLD_PASS_TYPE);if(typeof t!="string")throw await He(),new h(`Invalid new pass type '${typeof t}'`,Pe.ERR_INVALID_NEW_PASS_TYPE);if(t.length<20)throw await He(),new h(`Invalid pass length ${t.length}`,Pe.ERR_INVALID_PASS_LENGTH);this.log("recreating keychain");let n=Fi.get(this);if(n==null)throw new h("dek missing",Pe.ERR_INVALID_PARAMETERS);let o=n.dek;this.init.pass=t;let s=t!=null&&this.init.dek?.salt!=null?Iu(t,this.init.dek.salt,this.init.dek?.iterationCount,this.init.dek?.keyLength,this.init.dek?.hash):"";Fi.set(this,{dek:s});let i=await this.listKeys();for(let a of i){let c=await this.components.datastore.get(Zn(a.name)),l=v(c),f=await Au(l,o),u=s.toString(),d=await f.export(u),y=this.components.datastore.batch(),p={name:a.name,id:a.id};y.put(Zn(a.name),x(d)),y.put(Ms(a.name),x(JSON.stringify(p))),await y.commit()}this.log("keychain reconstructed")}};function Yh(r={}){return e=>new Gh(e,r)}var bc=class{memoryStorage;points;duration;blockDuration;execEvenly;execEvenlyMinDelayMs;keyPrefix;constructor(e={}){this.points=e.points??4,this.duration=e.duration??1,this.blockDuration=e.blockDuration??0,this.execEvenly=e.execEvenly??!1,this.execEvenlyMinDelayMs=e.execEvenlyMinDelayMs??this.duration*1e3/this.points,this.keyPrefix=e.keyPrefix??"rlflx",this.memoryStorage=new Zy}async consume(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,t,s);if(i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i.consumedPoints>this.points)throw this.blockDuration>0&&i.consumedPoints<=this.points+t&&(i=this.memoryStorage.set(o,i.consumedPoints,this.blockDuration)),new h("Rate limit exceeded","ERR_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 Jd(a)}return i}penalty(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,t,s);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}reward(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,-t,s);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}block(e,t){let n=t*1e3,o=this.points+1;return this.memoryStorage.set(this.getKey(e),o,t),{remainingPoints:0,msBeforeNext:n===0?-1:n,consumedPoints:o,isFirstInDuration:!1}}set(e,t,n=0){let o=(n>=0?n:this.duration)*1e3;return this.memoryStorage.set(this.getKey(e),t,n),{remainingPoints:0,msBeforeNext:o===0?-1:o,consumedPoints:t,isFirstInDuration:!1}}get(e){let t=this.memoryStorage.get(this.getKey(e));return t!=null&&(t.remainingPoints=Math.max(this.points-t.consumedPoints,0)),t}delete(e){this.memoryStorage.delete(this.getKey(e))}_getKeySecDuration(e){return e?.customDuration!=null&&e.customDuration>=0?e.customDuration:this.duration}getKey(e){return this.keyPrefix.length>0?`${this.keyPrefix}:${e}`:e}parseKey(e){return e.substring(this.keyPrefix.length)}},Zy=class{storage;constructor(){this.storage=new Map}incrby(e,t,n){let o=this.storage.get(e);if(o!=null){let s=o.expiresAt!=null?o.expiresAt.getTime()-new Date().getTime():-1;return o.expiresAt==null||s>0?(o.value+=t,{remainingPoints:0,msBeforeNext:s,consumedPoints:o.value,isFirstInDuration:!1}):this.set(e,t,n)}return this.set(e,t,n)}set(e,t,n){let o=n*1e3,s=this.storage.get(e);s!=null&&clearTimeout(s.timeoutId);let i={value:t,expiresAt:o>0?new Date(Date.now()+o):void 0};return this.storage.set(e,i),o>0&&(i.timeoutId=setTimeout(()=>{this.storage.delete(e)},o),i.timeoutId.unref!=null&&i.timeoutId.unref()),{remainingPoints:0,msBeforeNext:o===0?-1:o,consumedPoints:i.value,isFirstInDuration:!0}}get(e){let t=this.storage.get(e);if(t!=null)return{remainingPoints:0,msBeforeNext:t.expiresAt!=null?t.expiresAt.getTime()-new Date().getTime():-1,consumedPoints:t.value,isFirstInDuration:!1}}delete(e){let t=this.storage.get(e);return t!=null?(t.timeoutId!=null&&clearTimeout(t.timeoutId),this.storage.delete(e),!0):!1}};var Te;(function(r){r[r.NEW_STREAM=0]="NEW_STREAM",r[r.MESSAGE_RECEIVER=1]="MESSAGE_RECEIVER",r[r.MESSAGE_INITIATOR=2]="MESSAGE_INITIATOR",r[r.CLOSE_RECEIVER=3]="CLOSE_RECEIVER",r[r.CLOSE_INITIATOR=4]="CLOSE_INITIATOR",r[r.RESET_RECEIVER=5]="RESET_RECEIVER",r[r.RESET_INITIATOR=6]="RESET_INITIATOR"})(Te||(Te={}));var ku=Object.freeze({0:"NEW_STREAM",1:"MESSAGE_RECEIVER",2:"MESSAGE_INITIATOR",3:"CLOSE_RECEIVER",4:"CLOSE_INITIATOR",5:"RESET_RECEIVER",6:"RESET_INITIATOR"}),e4=Object.freeze({NEW_STREAM:Te.NEW_STREAM,MESSAGE:Te.MESSAGE_INITIATOR,CLOSE:Te.CLOSE_INITIATOR,RESET:Te.RESET_INITIATOR}),C_=Object.freeze({MESSAGE:Te.MESSAGE_RECEIVER,CLOSE:Te.CLOSE_RECEIVER,RESET:Te.RESET_RECEIVER});var t4=1<<20,ZK=4<<20,Wh=class{_buffer;_headerInfo;_maxMessageSize;_maxUnprocessedMessageQueueSize;constructor(e=t4,t=ZK){this._buffer=new be,this._headerInfo=null,this._maxMessageSize=e,this._maxUnprocessedMessageQueueSize=t}write(e){if(e==null||e.length===0)return[];if(this._buffer.append(e),this._buffer.byteLength>this._maxUnprocessedMessageQueueSize)throw Object.assign(new Error("unprocessed message queue size too large!"),{code:"ERR_MSG_QUEUE_TOO_BIG"});let t=[];for(;this._buffer.length!==0;){if(this._headerInfo==null)try{this._headerInfo=this._decodeHeader(this._buffer)}catch(l){if(l.code==="ERR_MSG_TOO_BIG")throw l;break}let{id:n,type:o,length:s,offset:i}=this._headerInfo;if(this._buffer.length-i<s)break;let c={id:n,type:o};(o===Te.NEW_STREAM||o===Te.MESSAGE_INITIATOR||o===Te.MESSAGE_RECEIVER)&&(c.data=this._buffer.sublist(i,i+s)),t.push(c),this._buffer.consume(i+s),this._headerInfo=null}return t}_decodeHeader(e){let{value:t,offset:n}=B_(e),{value:o,offset:s}=B_(e,n),i=t&7;if(ku[i]==null)throw new Error(`Invalid type received: ${i}`);if(o>this._maxMessageSize)throw Object.assign(new Error("message size too large!"),{code:"ERR_MSG_TOO_BIG"});return{id:t>>3,type:i,offset:n+s,length:o}}},eM=128,N_=127;function B_(r,e=0){let t=0,n=0,o=e,s,i=r.length;do{if(o>=i||n>49)throw e=0,new RangeError("Could not decode varint");s=r.get(o++),t+=n<28?(s&N_)<<n:(s&N_)*Math.pow(2,n),n+=7}while(s>=eM);return e=o-e,{value:t,offset:e}}var r4=10*1024,n4=class{_pool;_poolOffset;constructor(){this._pool=nt(r4),this._poolOffset=0}write(e,t){let n=this._pool,o=this._poolOffset;st(e.id<<3|e.type,n,o),o+=Et(e.id<<3|e.type),(e.type===Te.NEW_STREAM||e.type===Te.MESSAGE_INITIATOR||e.type===Te.MESSAGE_RECEIVER)&&e.data!=null?(st(e.data.length,n,o),o+=Et(e.data.length)):(st(0,n,o),o+=Et(0));let s=n.subarray(this._poolOffset,o);r4-o<100?(this._pool=nt(r4),this._poolOffset=0):this._poolOffset=o,t.append(s),(e.type===Te.NEW_STREAM||e.type===Te.MESSAGE_INITIATOR||e.type===Te.MESSAGE_RECEIVER)&&e.data!=null&&t.append(e.data)}},tM=new n4;async function*L_(r){for await(let e of r){let t=new be;tM.write(e,t),yield t}}var o4=class extends Ss{name;streamId;send;types;maxDataSize;constructor(e){super(e),this.types=e.direction==="outbound"?e4:C_,this.send=e.send,this.name=e.name,this.streamId=e.streamId,this.maxDataSize=e.maxDataSize}async sendNewStream(){await this.send({id:this.streamId,type:e4.NEW_STREAM,data:new be(x(this.name))})}async sendData(e){for(e=e.sublist();e.byteLength>0;){let t=Math.min(e.byteLength,this.maxDataSize);await this.send({id:this.streamId,type:this.types.MESSAGE,data:e.sublist(0,t)}),e.consume(t)}}async sendReset(){await this.send({id:this.streamId,type:this.types.RESET})}async sendCloseWrite(){await this.send({id:this.streamId,type:this.types.CLOSE})}async sendCloseRead(){}};function O_(r){let{id:e,name:t,send:n,onEnd:o,type:s="initiator",maxMsgSize:i=t4}=r;return new o4({id:s==="initiator"?`i${e}`:`r${e}`,streamId:e,name:`${t??e}`,direction:s==="initiator"?"outbound":"inbound",maxDataSize:i,onEnd:o,send:n,log:r.logger.forComponent(`libp2p:mplex:stream:${s}:${e}`)})}var rM=1024,nM=1024,oM=1024*1024*4,sM=5,iM=500;function K_(r){let e={...r,type:`${ku[r.type]} (${r.type})`};return r.type===Te.NEW_STREAM&&(e.data=v(r.data instanceof Uint8Array?r.data:r.data.subarray())),(r.type===Te.MESSAGE_INITIATOR||r.type===Te.MESSAGE_RECEIVER)&&(e.data=v(r.data instanceof Uint8Array?r.data:r.data.subarray(),"base16")),e}var zh=class{protocol="/mplex/6.7.0";sink;source;log;_streamId;_streams;_init;_source;closeController;rateLimiter;closeTimeout;logger;constructor(e,t){t=t??{},this.log=e.logger.forComponent("libp2p:mplex"),this.logger=e.logger,this._streamId=0,this._streams={initiators:new Map,receivers:new Map},this._init=t,this.closeTimeout=t.closeTimeout??iM,this.sink=this._createSink(),this._source=At({objectMode:!0,onEnd:()=>{for(let n of this._streams.initiators.values())n.destroy();for(let n of this._streams.receivers.values())n.destroy()}}),this.source=it(this._source,n=>L_(n)),this.closeController=new AbortController,this.rateLimiter=new bc({points:t.disconnectThreshold??sM,duration:1})}get streams(){let e=[];for(let t of this._streams.initiators.values())e.push(t);for(let t of this._streams.receivers.values())e.push(t);return e}newStream(e){if(this.closeController.signal.aborted)throw new Error("Muxer already closed");let t=this._streamId++;e=e==null?t.toString():e.toString();let n=this._streams.initiators;return this._newStream({id:t,name:e,type:"initiator",registry:n})}async close(e){if(this.closeController.signal.aborted)return;let t=e?.signal??AbortSignal.timeout(this.closeTimeout);try{await Promise.all(this.streams.map(async n=>n.close({signal:t}))),this._source.end(),await this._source.onEmpty({signal:t}),this.closeController.abort()}catch(n){this.abort(n)}}abort(e){this.closeController.signal.aborted||(this.streams.forEach(t=>{t.abort(e)}),this.closeController.abort(e))}_newReceiverStream(e){let{id:t,name:n}=e,o=this._streams.receivers;return this._newStream({id:t,name:n,type:"receiver",registry:o})}_newStream(e){let{id:t,name:n,type:o,registry:s}=e;if(this.log("new %s stream %s",o,t),o==="initiator"&&this._streams.initiators.size===(this._init.maxOutboundStreams??nM))throw new h("Too many outbound streams open","ERR_TOO_MANY_OUTBOUND_STREAMS");if(s.has(t))throw new Error(`${o} stream ${t} already exists!`);let c=O_({id:t,name:n,send:async l=>{this.log.enabled&&this.log.trace("%s stream %s send",o,t,K_(l)),this._source.push(l)},type:o,onEnd:()=>{this.log("%s stream with id %s and protocol %s ended",o,t,c.protocol),s.delete(t),this._init.onStreamEnd!=null&&this._init.onStreamEnd(c)},maxMsgSize:this._init.maxMsgSize,logger:this.logger});return s.set(t,c),c}_createSink(){return async t=>{let n=()=>{Ld(t,this.log)};this.closeController.signal.addEventListener("abort",n);try{let o=new Wh(this._init.maxMsgSize,this._init.maxUnprocessedMessageQueueSize);for await(let s of t)for(let i of o.write(s))await this._handleIncoming(i);this._source.end()}catch(o){this.log("error in sink",o),this._source.end(o)}finally{this.closeController.signal.removeEventListener("abort",n)}}}async _handleIncoming(e){let{id:t,type:n}=e;if(this.log.enabled&&this.log.trace("incoming message",K_(e)),e.type===Te.NEW_STREAM){if(this._streams.receivers.size===(this._init.maxInboundStreams??rM)){this.log("too many inbound streams open"),this._source.push({id:t,type:Te.RESET_RECEIVER});try{await this.rateLimiter.consume("new-stream",1)}catch{this.log("rate limit hit when opening too many new streams over the inbound stream limit - closing remote connection"),this.abort(new Error("Too many open streams"));return}return}let a=this._newReceiverStream({id:t,name:v(e.data instanceof Uint8Array?e.data:e.data.subarray())});this._init.onIncomingStream!=null&&this._init.onIncomingStream(a);return}let s=((n&1)===1?this._streams.initiators:this._streams.receivers).get(t);if(s==null){this.log("missing stream %s for message type %s",t,ku[n]);try{await this.rateLimiter.consume("missing-stream",1)}catch{this.log("rate limit hit when receiving messages for streams that do not exist - closing remote connection"),this.abort(new Error("Too many messages for missing streams"));return}return}let i=this._init.maxStreamBufferSize??oM;try{switch(n){case Te.MESSAGE_INITIATOR:case Te.MESSAGE_RECEIVER:if(s.sourceReadableLength()>i)throw this._source.push({id:e.id,type:n===Te.MESSAGE_INITIATOR?Te.RESET_RECEIVER:Te.RESET_INITIATOR}),new h("Input buffer full - increase Mplex maxBufferSize to accommodate slow consumers","ERR_STREAM_INPUT_BUFFER_FULL");s.sourcePush(e.data);break;case Te.CLOSE_INITIATOR:case Te.CLOSE_RECEIVER:s.remoteCloseWrite();break;case Te.RESET_INITIATOR:case Te.RESET_RECEIVER:s.reset();break;default:this.log("unknown message type %s",n)}}catch(a){this.log.error("error while processing message",a),s.abort(a)}}};var s4=class{protocol="/mplex/6.7.0";_init;components;constructor(e,t={}){this.components=e,this._init=t}createStreamMuxer(e={}){return new zh(this.components,{...e,...this._init})}};function M_(r={}){return e=>new s4(e,r)}function jh(r){if(isNaN(r)||r<=0)throw new h("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return dt(r)}var U_="1.0.0",F_="ping",V_="ipfs";var i4="ERR_WRONG_PING_ACK";var Xh=class{protocol;components;started;timeout;maxInboundStreams;maxOutboundStreams;runOnTransientConnection;log;constructor(e,t={}){this.components=e,this.log=e.logger.forComponent("libp2p:ping"),this.started=!1,this.protocol=`/${t.protocolPrefix??V_}/${F_}/${U_}`,this.timeout=t.timeout??1e4,this.maxInboundStreams=t.maxInboundStreams??2,this.maxOutboundStreams=t.maxOutboundStreams??1,this.runOnTransientConnection=t.runOnTransientConnection??!0,this.handleMessage=this.handleMessage.bind(this)}async start(){await this.components.registrar.handle(this.protocol,this.handleMessage,{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:this.runOnTransientConnection}),this.started=!0}async stop(){await this.components.registrar.unhandle(this.protocol),this.started=!1}isStarted(){return this.started}handleMessage(e){this.log("incoming ping from %p",e.connection.remotePeer);let{stream:t}=e,n=Date.now();it(t,t).catch(o=>{this.log.error("incoming ping from %p failed with error",e.connection.remotePeer,o)}).finally(()=>{let o=Date.now()-n;this.log("incoming ping from %p complete in %dms",e.connection.remotePeer,o)})}async ping(e,t={}){this.log("pinging %p",e);let n=Date.now(),o=jh(32),s=await this.components.connectionManager.openConnection(e,t),i,a=()=>{};if(t.signal==null){let c=AbortSignal.timeout(this.timeout);t={...t,signal:c}}try{i=await s.newStream(this.protocol,{...t,runOnTransientConnection:this.runOnTransientConnection}),a=()=>{i?.abort(new h("ping timeout",ao))},t.signal?.addEventListener("abort",a,{once:!0});let c=await it([o],i,async f=>mi(f)),l=Date.now()-n;if(c==null)throw new h(`Did not receive a ping ack after ${l}ms`,i4);if(!O(o,c.subarray()))throw new h(`Received wrong ping ack after ${l}ms`,i4);return this.log("ping %p complete in %dms",s.remotePeer,l),l}catch(c){throw this.log.error("error while pinging %p",s.remotePeer,c),i?.abort(c),c}finally{t.signal?.removeEventListener("abort",a),i!=null&&await i.close()}}};function q_(r={}){return e=>new Xh(e,r)}var Ar;(function(r){r.ERR_ALREADY_ABORTED="ERR_ALREADY_ABORTED",r.ERR_DATA_CHANNEL="ERR_DATA_CHANNEL",r.ERR_CONNECTION_CLOSED="ERR_CONNECTION_CLOSED",r.ERR_HASH_NOT_SUPPORTED="ERR_HASH_NOT_SUPPORTED",r.ERR_INVALID_MULTIADDR="ERR_INVALID_MULTIADDR",r.ERR_INVALID_FINGERPRINT="ERR_INVALID_FINGERPRINT",r.ERR_INVALID_PARAMETERS="ERR_INVALID_PARAMETERS",r.ERR_NOT_IMPLEMENTED="ERR_NOT_IMPLEMENTED",r.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS",r.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS"})(Ar||(Ar={}));var Us=class extends h{constructor(e,t){super(`WebRTC transport error: ${e}`,t??""),this.name="WebRTCTransportError"}};var a4=class extends Us{constructor(e,t){super(`[stream: ${e}] data channel error: ${t}`,Ar.ERR_DATA_CHANNEL),this.name="WebRTC/DataChannelError"}};function h4(r,e){return new a4(r,e)}var c4=class extends Us{constructor(e){super(`There was a problem with the Multiaddr which was passed in: ${e}`,Ar.ERR_INVALID_MULTIADDR),this.name="WebRTC/InappropriateMultiaddrError"}};function Qh(r){return new c4(r)}var l4=class extends Us{constructor(e){super(`There was a problem with a provided argument: ${e}`,Ar.ERR_INVALID_PARAMETERS),this.name="WebRTC/InvalidArgumentError"}};function Tu(r){return new l4(r)}var u4=class extends Us{constructor(e,t){super(`Invalid fingerprint "${e}" within ${t}`,Ar.ERR_INVALID_FINGERPRINT),this.name="WebRTC/InvalidFingerprintError"}};function p4(r,e){return new u4(r,e)}var f4=class extends Us{constructor(e){super(`A method (${e}) was called though it has been intentionally left unimplemented.`,Ar.ERR_NOT_IMPLEMENTED),this.name="WebRTC/UnimplementedError"}};function H_(r){return new f4(r)}var d4=class extends Us{constructor(e){super(`unsupported hash algorithm: ${e}`,Ar.ERR_HASH_NOT_SUPPORTED),this.name="WebRTC/UnsupportedHashAlgorithmError"}};function $_(r){return new d4(r)}var G_=function(r,e,t){if(t||arguments.length===2)for(var n=0,o=e.length,s;n<o;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return r.concat(s||Array.prototype.slice.call(e))},fM=function(){function r(e,t,n){this.name=e,this.version=t,this.os=n,this.type="browser"}return r}();var dM=function(){function r(e){this.version=e,this.type="node",this.name="node",this.os=process.platform}return r}();var hM=function(){function r(e,t,n,o){this.name=e,this.version=t,this.os=n,this.bot=o,this.type="bot-device"}return r}();var pM=function(){function r(){this.type="bot",this.bot=!0,this.name="bot",this.version=null,this.os=null}return r}();var mM=function(){function r(){this.type="react-native",this.name="react-native",this.version=null,this.os=null}return r}();var yM=/alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/,gM=/(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\ Jeeves\/Teoma|ia_archiver)/,Y_=3,bM=[["aol",/AOLShield\/([0-9\._]+)/],["edge",/Edge\/([0-9\._]+)/],["edge-ios",/EdgiOS\/([0-9\._]+)/],["yandexbrowser",/YaBrowser\/([0-9\._]+)/],["kakaotalk",/KAKAOTALK\s([0-9\.]+)/],["samsung",/SamsungBrowser\/([0-9\.]+)/],["silk",/\bSilk\/([0-9._-]+)\b/],["miui",/MiuiBrowser\/([0-9\.]+)$/],["beaker",/BeakerBrowser\/([0-9\.]+)/],["edge-chromium",/EdgA?\/([0-9\.]+)/],["chromium-webview",/(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["chrome",/(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["phantomjs",/PhantomJS\/([0-9\.]+)(:?\s|$)/],["crios",/CriOS\/([0-9\.]+)(:?\s|$)/],["firefox",/Firefox\/([0-9\.]+)(?:\s|$)/],["fxios",/FxiOS\/([0-9\.]+)/],["opera-mini",/Opera Mini.*Version\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)(?:\s|$)/],["opera",/OPR\/([0-9\.]+)(:?\s|$)/],["pie",/^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/],["pie",/^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/],["netfront",/^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/],["ie",/Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/],["ie",/MSIE\s([0-9\.]+);.*Trident\/[4-7].0/],["ie",/MSIE\s(7\.0)/],["bb10",/BB10;\sTouch.*Version\/([0-9\.]+)/],["android",/Android\s([0-9\.]+)/],["ios",/Version\/([0-9\._]+).*Mobile.*Safari.*/],["safari",/Version\/([0-9\._]+).*Safari/],["facebook",/FB[AS]V\/([0-9\.]+)/],["instagram",/Instagram\s([0-9\.]+)/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Mobile/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Gecko\)$/],["curl",/^curl\/([0-9\.]+)$/],["searchbot",yM]],W_=[["iOS",/iP(hone|od|ad)/],["Android OS",/Android/],["BlackBerry OS",/BlackBerry|BB10/],["Windows Mobile",/IEMobile/],["Amazon OS",/Kindle/],["Windows 3.11",/Win16/],["Windows 95",/(Windows 95)|(Win95)|(Windows_95)/],["Windows 98",/(Windows 98)|(Win98)/],["Windows 2000",/(Windows NT 5.0)|(Windows 2000)/],["Windows XP",/(Windows NT 5.1)|(Windows XP)/],["Windows Server 2003",/(Windows NT 5.2)/],["Windows Vista",/(Windows NT 6.0)/],["Windows 7",/(Windows NT 6.1)/],["Windows 8",/(Windows NT 6.2)/],["Windows 8.1",/(Windows NT 6.3)/],["Windows 10",/(Windows NT 10.0)/],["Windows ME",/Windows ME/],["Windows CE",/Windows CE|WinCE|Microsoft Pocket Internet Explorer/],["Open BSD",/OpenBSD/],["Sun OS",/SunOS/],["Chrome OS",/CrOS/],["Linux",/(Linux)|(X11)/],["Mac OS",/(Mac_PowerPC)|(Macintosh)/],["QNX",/QNX/],["BeOS",/BeOS/],["OS/2",/OS\/2/]];function j_(r){return r?z_(r):typeof document>"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"?new mM:typeof navigator<"u"?z_(navigator.userAgent):xM()}function wM(r){return r!==""&&bM.reduce(function(e,t){var n=t[0],o=t[1];if(e)return e;var s=o.exec(r);return!!s&&[n,s]},!1)}function z_(r){var e=wM(r);if(!e)return null;var t=e[0],n=e[1];if(t==="searchbot")return new pM;var o=n[1]&&n[1].split(".").join("_").split("_").slice(0,3);o?o.length<Y_&&(o=G_(G_([],o,!0),vM(Y_-o.length),!0)):o=[];var s=o.join("."),i=EM(r),a=gM.exec(r);return a&&a[1]?new hM(t,s,i,a[1]):new fM(t,s,i)}function EM(r){for(var e=0,t=W_.length;e<t;e++){var n=W_[e],o=n[0],s=n[1],i=s.exec(r);if(i)return o}return null}function xM(){var r=typeof process<"u"&&process.version;return r?new dM(process.version.slice(1)):null}function vM(r){for(var e=[],t=0;t<r;t++)e.push("0");return e}var X_=j_(),Du=X_!=null&&X_.name==="firefox",Jh=async function*(){},Zh=async r=>{},_M=30*1e3;function Q_(r,e,t=_M,n){r.readyState==="open"&&Promise.resolve().then(async()=>{if(r.bufferedAmount>0){n.log("%s drain channel with %d buffered bytes",e,r.bufferedAmount);let o=he(),s=!1;r.bufferedAmountLowThreshold=0;let i=()=>{s||(n.log("%s drain channel closed before drain",e),o.resolve())};r.addEventListener("close",i,{once:!0}),r.addEventListener("bufferedamountlow",()=>{s=!0,r.removeEventListener("close",i),o.resolve()}),await dn(o.promise,{milliseconds:t})}}).then(async()=>{r.readyState==="open"&&r.close()}).catch(o=>{n.log.error("error closing outbound stream",o)})}var qi=class{log;peerConnection;remoteAddr;timeline;metrics;source=Jh();sink=Zh;constructor(e,t){this.log=e.logger.forComponent("libp2p:webrtc:maconn"),this.remoteAddr=t.remoteAddr,this.timeline=t.timeline,this.peerConnection=t.peerConnection;let n=this.peerConnection.connectionState;this.peerConnection.onconnectionstatechange=()=>{this.log.trace("peer connection state change",this.peerConnection.connectionState,"initial state",n),(this.peerConnection.connectionState==="disconnected"||this.peerConnection.connectionState==="failed"||this.peerConnection.connectionState==="closed")&&(this.timeline.close=Date.now())}}async close(e){this.log.trace("closing connection"),this.peerConnection.close(),this.timeline.close=Date.now(),this.metrics?.increment({close:!0})}abort(e){this.log.error("closing connection due to error",e),this.peerConnection.close(),this.timeline.close=Date.now(),this.metrics?.increment({abort:!0})}};var hr;(function(r){let e;(function(o){o.FIN="FIN",o.STOP_SENDING="STOP_SENDING",o.RESET="RESET",o.FIN_ACK="FIN_ACK"})(e=r.Flag||(r.Flag={}));let t;(function(o){o[o.FIN=0]="FIN",o[o.STOP_SENDING=1]="STOP_SENDING",o[o.RESET=2]="RESET",o[o.FIN_ACK=3]="FIN_ACK"})(t||(t={})),function(o){o.codec=()=>Re(t)}(e=r.Flag||(r.Flag={}));let n;r.codec=()=>(n==null&&(n=J((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.flag!=null&&(s.uint32(8),r.Flag.codec().encode(o.flag,s)),o.message!=null&&(s.uint32(18),s.bytes(o.message)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.flag=r.Flag.codec().decode(o);break;case 2:i.message=o.bytes();break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>Q(o,r.codec()),r.decode=o=>X(o,r.codec())})(hr||(hr={}));var SM=16*1024*1024,RM=30*1e3,AM=5,IM=2,kM=16*1024,TM=5e3,DM=5e3,m4=class extends Ss{channel;incomingData;maxBufferedAmount;bufferedAmountLowEventTimeout;maxMessageSize;receiveFinAck;finAckTimeout;openTimeout;constructor(e){let t=e.onEnd;switch(e.onEnd=o=>{this.log.trace("readable and writeable ends closed",this.status),Promise.resolve(async()=>{if(!(this.timeline.abort!=null||this.timeline.reset!==null))try{await dn(this.receiveFinAck.promise,{milliseconds:this.finAckTimeout})}catch(s){this.log.error("error receiving FIN_ACK",s)}}).then(()=>{this.incomingData.end(),t?.(o)}).catch(s=>{this.log.error("error ending stream",s)})},super(e),this.channel=e.channel,this.channel.binaryType="arraybuffer",this.incomingData=At(),this.bufferedAmountLowEventTimeout=e.bufferedAmountLowEventTimeout??RM,this.maxBufferedAmount=e.maxBufferedAmount??SM,this.maxMessageSize=(e.maxMessageSize??kM)-AM-IM,this.receiveFinAck=he(),this.finAckTimeout=e.closeTimeout??TM,this.openTimeout=e.openTimeout??DM,this.channel.readyState){case"open":this.timeline.open=new Date().getTime();break;case"closed":case"closing":(this.timeline.close===void 0||this.timeline.close===0)&&(this.timeline.close=Date.now());break;case"connecting":break;default:throw this.log.error("unknown datachannel state %s",this.channel.readyState),new h("Unknown datachannel state","ERR_INVALID_STATE")}this.channel.onopen=o=>{this.timeline.open=new Date().getTime()},this.channel.onclose=o=>{this.receiveFinAck.resolve(),this.close().catch(s=>{this.log.error("error closing stream after channel closed",s)})},this.channel.onerror=o=>{let s=o.error;this.abort(s)},this.channel.onmessage=async o=>{let{data:s}=o;s===null||s.byteLength===0||this.incomingData.push(new Uint8Array(s,0,s.byteLength))};let n=this;Promise.resolve().then(async()=>{for await(let o of cr(this.incomingData)){let s=n.processIncomingProtobuf(o);s!=null&&n.sourcePush(new be(s))}}).catch(o=>{this.log.error("error processing incoming data channel messages",o)})}sendNewStream(){}async _sendMessage(e,t=!0){if(t&&this.channel.bufferedAmount>this.maxBufferedAmount)try{this.log('channel buffer is %d, wait for "bufferedamountlow" event',this.channel.bufferedAmount),await gu(this.channel,"bufferedamountlow",{timeout:this.bufferedAmountLowEventTimeout})}catch(n){throw n instanceof bs?new h(`Timed out waiting for DataChannel buffer to clear after ${this.bufferedAmountLowEventTimeout}ms`,"ERR_BUFFER_CLEAR_TIMEOUT"):n}if(this.channel.readyState==="closed"||this.channel.readyState==="closing")throw new h(`Invalid datachannel state - ${this.channel.readyState}`,"ERR_INVALID_STATE");this.channel.readyState!=="open"&&(this.log('channel state is "%s" and not "open", waiting for "open" event before sending data',this.channel.readyState),await gu(this.channel,"open",{timeout:this.openTimeout}),this.log('channel state is now "%s", sending data',this.channel.readyState)),this.channel.send(e.subarray())}async sendData(e){for(e=e.sublist();e.byteLength>0;){let t=Math.min(e.byteLength,this.maxMessageSize),n=e.subarray(0,t),o=hr.encode({message:n}),s=ar.single(o);await this._sendMessage(s),e.consume(t)}}async sendReset(){await this._sendFlag(hr.Flag.RESET)}async sendCloseWrite(e){if(await this._sendFlag(hr.Flag.FIN)){this.log.trace("awaiting FIN_ACK");try{await dr(this.receiveFinAck.promise,e?.signal,{errorMessage:"sending close-write was aborted before FIN_ACK was received",errorCode:"ERR_FIN_ACK_NOT_RECEIVED"})}catch(n){this.log.error("failed to await FIN_ACK",n)}}else this.log.trace("sending FIN failed, not awaiting FIN_ACK");this.receiveFinAck.resolve()}async sendCloseRead(){await this._sendFlag(hr.Flag.STOP_SENDING)}processIncomingProtobuf(e){let t=hr.decode(e);if(t.flag!==void 0&&(this.log.trace('incoming flag %s, write status "%s", read status "%s"',t.flag,this.writeStatus,this.readStatus),t.flag===hr.Flag.FIN&&(this.remoteCloseWrite(),this.log.trace("sending FIN_ACK"),this._sendFlag(hr.Flag.FIN_ACK).catch(n=>{this.log.error("error sending FIN_ACK immediately",n)})),t.flag===hr.Flag.RESET&&this.reset(),t.flag===hr.Flag.STOP_SENDING&&this.remoteCloseRead(),t.flag===hr.Flag.FIN_ACK&&(this.log.trace("received FIN_ACK"),this.receiveFinAck.resolve())),this.readStatus==="ready")return t.message}async _sendFlag(e){if(this.channel.readyState!=="open")return this.log.trace('not sending flag %s because channel is "%s" and not "open"',this.channel.readyState,e.toString()),!1;this.log.trace("sending flag %s",e.toString());let t=hr.encode({flag:e}),n=ar.single(t);try{return await this._sendMessage(n,!1),!0}catch(o){this.log.error("could not send flag %s",e.toString(),o)}return!1}};function wc(r){let{channel:e,direction:t}=r;return new m4({id:t==="inbound"?`i${e.id}`:`r${e.id}`,log:r.logger.forComponent(`libp2p:webrtc:stream:${t}:${e.id}`),...r})}var J_="/webrtc",Hi=class{protocol;peerConnection;bufferedStreams=[];metrics;dataChannelOptions;components;log;constructor(e,t){this.components=e,this.peerConnection=t.peerConnection,this.metrics=t.metrics,this.protocol=t.protocol??J_,this.dataChannelOptions=t.dataChannelOptions??{},this.log=e.logger.forComponent("libp2p:webrtc:datachannelmuxerfactory"),this.peerConnection.ondatachannel=({channel:n})=>{if(this.log.trace('incoming early datachannel with channel id %d and label "%s"',n.id),n.label==="init"){this.log.trace("closing early init channel"),n.close();return}let o={},s=wc({channel:n,direction:"inbound",onEnd:i=>{o.onEnd(i)},logger:e.logger,...this.dataChannelOptions});o.stream=s,o.channel=n,o.onEnd=()=>{this.bufferedStreams=this.bufferedStreams.filter(i=>i.stream.id!==s.id)},this.bufferedStreams.push(o)}}createStreamMuxer(e){return new y4(this.components,{...e,peerConnection:this.peerConnection,dataChannelOptions:this.dataChannelOptions,metrics:this.metrics,streams:this.bufferedStreams,protocol:this.protocol})}},y4=class{init;streams;protocol;log;peerConnection;dataChannelOptions;metrics;logger;constructor(e,t){this.init=t,this.log=e.logger.forComponent("libp2p:webrtc:muxer"),this.logger=e.logger,this.streams=t.streams.map(n=>n.stream),this.peerConnection=t.peerConnection,this.protocol=t.protocol??J_,this.metrics=t.metrics,this.dataChannelOptions=t.dataChannelOptions??{},this.peerConnection.ondatachannel=({channel:n})=>{if(this.log.trace("incoming datachannel with channel id %d",n.id),n.label==="init"){this.log.trace("closing init channel"),n.close();return}let o=wc({channel:n,direction:"inbound",onEnd:()=>{this.log("incoming channel %s ended with state %s",n.id,n.readyState),this.#e(o,n)},logger:this.logger,...this.dataChannelOptions});this.streams.push(o),this.metrics?.increment({incoming_stream:!0}),t?.onIncomingStream?.(o)},this.init.streams.length>0&&queueMicrotask(()=>{this.init.streams.forEach(n=>{n.onEnd=()=>{this.log("incoming early channel %s ended with state %s",n.channel.id,n.channel.readyState),this.#e(n.stream,n.channel)},this.metrics?.increment({incoming_stream:!0}),this.init?.onIncomingStream?.(n.stream)})})}#e(e,t){this.log.trace("stream %s %s %s onEnd",e.direction,e.id,e.protocol),Q_(t,`${e.direction} ${e.id} ${e.protocol}`,this.dataChannelOptions.drainTimeout,{log:this.log}),this.streams=this.streams.filter(n=>n.id!==e.id),this.metrics?.increment({stream_end:!0}),this.init?.onStreamEnd?.(e)}async close(e){try{await Promise.all(this.streams.map(async t=>t.close(e)))}catch(t){this.abort(t)}}abort(e){for(let t of this.streams)t.abort(e)}source=Jh();sink=Zh;newStream(){let e=this.peerConnection.createDataChannel("");this.log.trace("opened outgoing datachannel with channel id %s",e.id);let t=wc({channel:e,direction:"outbound",onEnd:()=>{this.log("outgoing channel %s ended with state %s",e.id,e.readyState),this.#e(t,e)},logger:this.logger,...this.dataChannelOptions});return this.streams.push(t),this.metrics?.increment({outgoing_stream:!0}),t}};var Ec=globalThis.RTCPeerConnection,ep=globalThis.RTCSessionDescription,Z_=globalThis.RTCIceCandidate;var pr;(function(r){let e;(function(o){o.SDP_OFFER="SDP_OFFER",o.SDP_ANSWER="SDP_ANSWER",o.ICE_CANDIDATE="ICE_CANDIDATE"})(e=r.Type||(r.Type={}));let t;(function(o){o[o.SDP_OFFER=0]="SDP_OFFER",o[o.SDP_ANSWER=1]="SDP_ANSWER",o[o.ICE_CANDIDATE=2]="ICE_CANDIDATE"})(t||(t={})),function(o){o.codec=()=>Re(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=J((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.data!=null&&(s.uint32(18),s.string(o.data)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.type=r.Type.codec().decode(o);break;case 2:i.data=o.string();break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>Q(o,r.codec()),r.decode=o=>X(o,r.codec())})(pr||(pr={}));var tp=async(r,e,t)=>{try{let n=he();for(CM(r,n);;){let o=await Promise.race([n.promise,e.read({signal:t.signal})]);if(o==null)break;if(o.type!==pr.Type.ICE_CANDIDATE)throw new h("ICE candidate message expected","ERR_NOT_ICE_CANDIDATE");let s=JSON.parse(o.data??"null");if(s===""||s===null){t.log.trace("end-of-candidates received");continue}let i=new Z_(s);t.log.trace("%s received new ICE candidate",t.direction,i);try{await r.addIceCandidate(i)}catch(a){t.log.error("%s bad candidate received",t.direction,s,a)}}}catch(n){if(t.log.error("%s error parsing ICE candidate",t.direction,n),t.signal?.aborted===!0)throw n}};function PM(r){return Du?r.iceConnectionState:r.connectionState}function CM(r,e){r[Du?"oniceconnectionstatechange":"onconnectionstatechange"]=t=>{switch(PM(r)){case"connected":e.resolve();break;case"failed":case"disconnected":case"closed":e.reject(new h("RTCPeerConnection was closed","ERR_CONNECTION_CLOSED_BEFORE_CONNECTED"));break;default:break}}}async function eS({peerConnection:r,signal:e,metrics:t,multiaddr:n,connectionManager:o,transportManager:s,log:i}){let{baseAddr:a}=tS(n);t?.dialerEvents.increment({open:!0}),i.trace("dialing base address: %a",a);let c=a.getPeerId();if(c==null)throw new h("Relay peer was missing","ERR_INVALID_ADDRESS");let l=o.getConnections(Ae(c)),f,u=!1;l.length===0?(f=await s.dial(a,{signal:e}),u=!0):f=l[0];try{let d=await f.newStream(rp,{signal:e,runOnTransientConnection:!0}),y=lt(d).pb(pr);try{let p=r.createDataChannel("init");r.onicecandidate=({candidate:E})=>{let w=JSON.stringify(E?.toJSON()??null);i.trace("initiator sending ICE candidate %s",w),y.write({type:pr.Type.ICE_CANDIDATE,data:w},{signal:e}).catch(_=>{i.error("error sending ICE candidate",_)})},r.onicecandidateerror=E=>{i.error("initiator ICE candidate error",E)};let m=await r.createOffer().catch(E=>{throw i.error("could not execute createOffer",E),new h("Failed to set createOffer","ERR_SDP_HANDSHAKE_FAILED")});i.trace("initiator send SDP offer %s",m.sdp),await y.write({type:pr.Type.SDP_OFFER,data:m.sdp},{signal:e}),await r.setLocalDescription(m).catch(E=>{throw i.error("could not execute setLocalDescription",E),new h("Failed to set localDescription","ERR_SDP_HANDSHAKE_FAILED")});let g=await y.read({signal:e});if(g.type!==pr.Type.SDP_ANSWER)throw new h("Remote should send an SDP answer","ERR_SDP_HANDSHAKE_FAILED");i.trace("initiator receive SDP answer %s",g.data);let b=new ep({type:"answer",sdp:g.data});return await r.setRemoteDescription(b).catch(E=>{throw i.error("could not execute setRemoteDescription",E),new h("Failed to set remoteDescription","ERR_SDP_HANDSHAKE_FAILED")}),i.trace("initiator read candidates until connected"),await tp(r,y,{direction:"initiator",signal:e,log:i}),i.trace("initiator connected, closing init channel"),p.close(),i.trace("initiator closing signalling stream"),await y.unwrap().unwrap().close({signal:e}),i.trace("initiator connected to remote address %s",n),{remoteAddress:n}}catch(p){throw r.close(),d.abort(p),p}finally{r.onicecandidate=null,r.onicecandidateerror=null}}finally{if(u)try{await f.close({signal:e})}catch(d){f.abort(d)}}}var np=class extends Fe{peerId;transportManager;shutdownController;constructor(e,t){super(),this.peerId=e.peerId,this.transportManager=e.transportManager,this.shutdownController=t.shutdownController}async listen(){this.safeDispatchEvent("listening",{})}getAddrs(){return this.transportManager.getListeners().filter(e=>e!==this).map(e=>e.getAddrs().filter(t=>pn.matches(t)).map(t=>t.encapsulate(`/webrtc/p2p/${this.peerId}`))).flat()}async close(){this.shutdownController.abort(),this.safeDispatchEvent("close",{})}};async function rS({peerConnection:r,stream:e,signal:t,connection:n,log:o}){o.trace("new inbound signaling stream");let s=lt(e).pb(pr);try{r.onicecandidate=({candidate:f})=>{let u=JSON.stringify(f?.toJSON()??null);o.trace("recipient sending ICE candidate %s",u),s.write({type:pr.Type.ICE_CANDIDATE,data:u},{signal:t}).catch(d=>{o.error("error sending ICE candidate",d)})};let a=await s.read({signal:t});if(a.type!==pr.Type.SDP_OFFER)throw new h(`expected message type SDP_OFFER, received: ${a.type??"undefined"} `,"ERR_SDP_HANDSHAKE_FAILED");o.trace("recipient receive SDP offer %s",a.data);let c=new ep({type:"offer",sdp:a.data});await r.setRemoteDescription(c).catch(f=>{throw o.error("could not execute setRemoteDescription",f),new h("Failed to set remoteDescription","ERR_SDP_HANDSHAKE_FAILED")});let l=await r.createAnswer().catch(f=>{throw o.error("could not execute createAnswer",f),new h("Failed to create answer","ERR_SDP_HANDSHAKE_FAILED")});o.trace("recipient send SDP answer %s",l.sdp),await s.write({type:pr.Type.SDP_ANSWER,data:l.sdp},{signal:t}),await r.setLocalDescription(l).catch(f=>{throw o.error("could not execute setLocalDescription",f),new h("Failed to set localDescription","ERR_SDP_HANDSHAKE_FAILED")}),o.trace("recipient read candidates until connected"),await tp(r,s,{direction:"recipient",signal:t,log:o})}catch(a){if(r.connectionState!=="connected")throw o.error("error while handling signaling stream from peer %a",n.remoteAddr,a),r.close(),a;o("error while handling signaling stream from peer %a, ignoring as the RTCPeerConnection is already connected",n.remoteAddr,a)}let i=se(`/webrtc/p2p/${n.remoteAddr.getPeerId()}`);return o.trace("recipient connected to remote address %s",i),{remoteAddress:i}}var NM="/webrtc",BM="/p2p-circuit",rp="/webrtc-signaling/0.0.1",LM=30*1e3,op=class{components;init;log;_started=!1;metrics;shutdownController;constructor(e,t={}){this.components=e,this.init=t,this.log=e.logger.forComponent("libp2p:webrtc"),this.shutdownController=new AbortController,Ce(1/0,this.shutdownController.signal),e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_webrtc_dialer_events_total",{label:"event",help:"Total count of WebRTC dialer events by type"}),listenerEvents:e.metrics.registerCounterGroup("libp2p_webrtc_listener_events_total",{label:"event",help:"Total count of WebRTC listener events by type"})})}isStarted(){return this._started}async start(){await this.components.registrar.handle(rp,e=>{this._onProtocol(e).catch(t=>{this.log.error("failed to handle incoming connect from %p",e.connection.remotePeer,t)})},{runOnTransientConnection:!0}),this._started=!0}async stop(){await this.components.registrar.unhandle(rp),this._started=!1}createListener(e){return new np(this.components,{shutdownController:this.shutdownController})}[Symbol.toStringTag]="@libp2p/webrtc";[Sn]=!0;filter(e){return e.filter(_x.exactMatch)}async dial(e,t){this.log.trace("dialing address: %a",e);let n=new Ec(this.init.rtcConfiguration),o=new Hi(this.components,{peerConnection:n,dataChannelOptions:this.init.dataChannel}),{remoteAddress:s}=await eS({peerConnection:n,multiaddr:e,dataChannelOptions:this.init.dataChannel,signal:t.signal,connectionManager:this.components.connectionManager,transportManager:this.components.transportManager,log:this.log}),i=new qi(this.components,{peerConnection:n,timeline:{open:Date.now()},remoteAddr:s,metrics:this.metrics?.dialerEvents}),a=await t.upgrader.upgradeOutbound(i,{skipProtection:!0,skipEncryption:!0,muxerFactory:o});return this._closeOnShutdown(n,i),a}async _onProtocol({connection:e,stream:t}){let n=AbortSignal.timeout(this.init.inboundConnectionTimeout??LM),o=new Ec(this.init.rtcConfiguration),s=new Hi(this.components,{peerConnection:o,dataChannelOptions:this.init.dataChannel});try{let{remoteAddress:i}=await rS({peerConnection:o,connection:e,stream:t,signal:n,log:this.log}),a=new qi(this.components,{peerConnection:o,timeline:{open:new Date().getTime()},remoteAddr:i,metrics:this.metrics?.listenerEvents});this._closeOnShutdown(o,a),await this.components.upgrader.upgradeInbound(a,{skipEncryption:!0,skipProtection:!0,muxerFactory:s}),await t.close({signal:n})}catch(i){throw t.abort(i),i}}_closeOnShutdown(e,t){let n=()=>{t.close().catch(o=>{this.log.error("could not close WebRTCMultiaddrConnection",o)})};this.shutdownController.signal.addEventListener("abort",n),e.addEventListener("close",()=>{this.shutdownController.signal.removeEventListener("abort",n)})}};function tS(r){let e=r.toString().split(NM+"/");if(e.length!==2)throw new h("webrtc protocol was not present in multiaddr",Ar.ERR_INVALID_MULTIADDR);if(!e[0].includes(BM))throw new h("p2p-circuit protocol was not present in multiaddr",Ar.ERR_INVALID_MULTIADDR);let t=se(e[0]),o=se("/"+e[1]).getPeerId();if(o==null)throw new h("destination peer id was missing",Ar.ERR_INVALID_MULTIADDR);let s=t.protos().pop();if(s===void 0)throw new h("invalid multiaddr",Ar.ERR_INVALID_MULTIADDR);return s.name!=="p2p"&&(t=t.encapsulate(`/p2p/${o}`)),{baseAddr:t,peerId:Ae(o)}}var CR=Ue(Y4(),1);var RR=Ue(Y4(),1);var W4=Object.values(Dr).map(r=>r.decoder).reduce((r,e)=>r.or(e));function AR(r,e){let t=r.getConfiguration().certificates?.at(0);if(t==null||t.getFingerprints==null){e.log.trace("fetching fingerprint from local SDP");let o=r.localDescription;return o==null?void 0:qF(o.sdp)}if(e.log.trace("fetching fingerprint from local certificate"),t.getFingerprints().length===0)return;let n=t.getFingerprints()[0].value;if(n==null)throw p4("","no fingerprint on local certificate");return n}var VF=/^a=fingerprint:(?:\w+-[0-9]+)\s(?<fingerprint>(:?[0-9a-fA-F]{2})+)$/m;function qF(r){return r.match(VF)?.groups?.fingerprint}function HF(r){for(let e of r.protoNames())if(e.startsWith("ip"))return e.toUpperCase();return"IP6"}function yp(r){let t=r.stringTuples().filter(n=>n[0]===TR).map(n=>n[1])[0];if(t===void 0||t==="")throw Qh(`Couldn't find a certhash component of multiaddr: ${r.toString()}`);return t}function z4(r){let e=W4.decode(r);return RR.decode(e)}function $F(r){let e=z4(yp(r)),t=j4(e.name),n=e.digest.reduce((s,i)=>s+i.toString(16).padStart(2,"0"),""),o=n.match(/.{1,2}/g);if(o==null)throw p4(n,r.toString());return[`${t.toUpperCase()} ${o.join(":").toUpperCase()}`,n]}function j4(r){switch(r){case"sha1":return"sha-1";case"sha2-256":return"sha-256";case"sha2-512":return"sha-512";default:throw $_(r)}}function GF(r,e){let{host:t,port:n}=r.toOptions(),o=HF(r),[s]=$F(r);return`v=0
|
|
21
|
+
`)}`:`${t} :`}};a6=mo;W.Constructed=a6;mo.NAME="CONSTRUCTED";var Pl=class extends kt{fromBER(e,t,n){return t}toBER(e){return Vr}};Pl.override="EndOfContentValueBlock";var c6,Ll=class extends gt{constructor(e={}){super(e,Pl),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};c6=Ll;W.EndOfContent=c6;Ll.NAME=Ea;var l6,go=class extends gt{constructor(e={}){super(e,kt),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(e,t,n){return this.lenBlock.length>0&&this.warnings.push("Non-zero length of value block for Null type"),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=n,t+n>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+n}toBER(e,t){let n=new ArrayBuffer(2);if(!e){let o=new Uint8Array(n);o[0]=5,o[1]=0}return t&&t.write(n),n}onAsciiEncoding(){return`${this.constructor.NAME}`}};l6=go;W.Null=l6;go.NAME="NULL";var Bl=class extends Nn(kt){constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=we.BufferSourceConverter.toUint8Array(t.valueHex):this.valueHexView=new Uint8Array(1),e&&(this.value=e)}get value(){for(let e of this.valueHexView)if(e>0)return!0;return!1}set value(e){this.valueHexView[0]=e?255:0}fromBER(e,t,n){let o=we.BufferSourceConverter.toUint8Array(e);return Cn(this,o,t,n)?(this.valueHexView=o.subarray(t,t+n),n>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,i0.call(this),this.blockLength=n,t+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};Bl.NAME="BooleanValueBlock";var u6,Ml=class extends gt{constructor(e={}){super(e,Bl),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}};u6=Ml;W.Boolean=u6;Ml.NAME="BOOLEAN";var Ul=class extends Nn(rn){constructor({isConstructed:e=!1,...t}={}){super(t),this.isConstructed=e}fromBER(e,t,n){let o=0;if(this.isConstructed){if(this.isHexOnly=!1,o=rn.prototype.fromBER.call(this,e,t,n),o===-1)return o;for(let s=0;s<this.value.length;s++){let i=this.value[s].constructor.NAME;if(i===Ea){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(i!==n6)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,o=super.fromBER(e,t,n),this.blockLength=n;return o}toBER(e,t){return this.isConstructed?rn.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};Ul.NAME="OctetStringValueBlock";var d6,Tn=class r extends gt{constructor({idBlock:e={},lenBlock:t={},...n}={}){var o,s;(o=n.isConstructed)!==null&&o!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},Ul),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(e,t,n){if(this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,n===0)return this.idBlock.error.length===0&&(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length===0&&(this.blockLength+=this.lenBlock.blockLength),t;if(!this.valueBlock.isConstructed){let s=(e instanceof ArrayBuffer?new Uint8Array(e):e).subarray(t,t+n);try{if(s.byteLength){let i=fu(s,0,s.byteLength);i.offset!==-1&&i.offset===n&&(this.valueBlock.value=[i.result])}}catch{}}return super.fromBER(e,t,n)}onAsciiEncoding(){return this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length?mo.prototype.onAsciiEncoding.call(this):`${this.constructor.NAME} : ${we.Convert.ToHex(this.valueBlock.valueHexView)}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;let e=[];for(let t of this.valueBlock.value)t instanceof r&&e.push(t.valueBlock.valueHexView);return we.BufferSourceConverter.concat(e)}};d6=Tn;W.OctetString=d6;Tn.NAME=n6;var Fl=class extends Nn(rn){constructor({unusedBits:e=0,isConstructed:t=!1,...n}={}){super(n),this.unusedBits=e,this.isConstructed=t,this.blockLength=this.valueHexView.byteLength}fromBER(e,t,n){if(!n)return t;let o=-1;if(this.isConstructed){if(o=rn.prototype.fromBER.call(this,e,t,n),o===-1)return o;for(let a of this.value){let c=a.constructor.NAME;if(c===Ea){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(c!==o6)return this.error="BIT STRING may consists of BIT STRINGs only",-1;let l=a.valueBlock;if(this.unusedBits>0&&l.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=l.unusedBits}return o}let s=we.BufferSourceConverter.toUint8Array(e);if(!Cn(this,s,t,n))return-1;let i=s.subarray(t,t+n);if(this.unusedBits=i[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;if(!this.unusedBits){let a=i.subarray(1);try{if(a.byteLength){let c=fu(a,0,a.byteLength);c.offset!==-1&&c.offset===n-1&&(this.value=[c.result])}}catch{}}return this.valueHexView=i.subarray(1),this.blockLength=i.length,t+n}toBER(e,t){if(this.isConstructed)return rn.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength)return Vr;let n=new Uint8Array(this.valueHexView.length+1);return n[0]=this.unusedBits,n.set(this.valueHexView,1),n.buffer}toJSON(){return{...super.toJSON(),unusedBits:this.unusedBits,isConstructed:this.isConstructed}}};Fl.NAME="BitStringValueBlock";var f6,ci=class extends gt{constructor({idBlock:e={},lenBlock:t={},...n}={}){var o,s;(o=n.isConstructed)!==null&&o!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},Fl),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(e,t,n){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(e,t,n)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return mo.prototype.onAsciiEncoding.call(this);{let e=[],t=this.valueBlock.valueHexView;for(let o of t)e.push(o.toString(2).padStart(8,"0"));let n=e.join("");return`${this.constructor.NAME} : ${n.substring(0,n.length-this.valueBlock.unusedBits)}`}}};f6=ci;W.BitString=f6;ci.NAME=o6;var h6;function PR(r,e){let t=new Uint8Array([0]),n=new Uint8Array(r),o=new Uint8Array(e),s=n.slice(0),i=s.length-1,a=o.slice(0),c=a.length-1,l=0,d=c<i?i:c,u=0;for(let f=d;f>=0;f--,u++){switch(!0){case u<a.length:l=s[i-u]+a[c-u]+t[0];break;default:l=s[i-u]+t[0]}switch(t[0]=l/10,!0){case u>=s.length:s=Il(new Uint8Array([l%10]),s);break;default:s[i-u]=l%10}}return t[0]>0&&(s=Il(t,s)),s}function r6(r){if(r>=wa.length)for(let e=wa.length;e<=r;e++){let t=new Uint8Array([0]),n=wa[e-1].slice(0);for(let o=n.length-1;o>=0;o--){let s=new Uint8Array([(n[o]<<1)+t[0]]);t[0]=s[0]/10,n[o]=s[0]%10}t[0]>0&&(n=Il(t,n)),wa.push(n)}return wa[r]}function LR(r,e){let t=0,n=new Uint8Array(r),o=new Uint8Array(e),s=n.slice(0),i=s.length-1,a=o.slice(0),c=a.length-1,l,d=0;for(let u=c;u>=0;u--,d++)switch(l=s[i-d]-a[c-d]-t,!0){case l<0:t=1,s[i-d]=l+10;break;default:t=0,s[i-d]=l}if(t>0)for(let u=i-c+1;u>=0;u--,d++)if(l=s[i-d]-t,l<0)t=1,s[i-d]=l+10;else{t=0,s[i-d]=l;break}return s.slice()}var xa=class extends Nn(kt){constructor({value:e,...t}={}){super(t),this._valueDec=0,t.valueHex&&this.setValueHex(),e!==void 0&&(this.valueDec=e)}setValueHex(){this.valueHexView.length>=4?(this.warnings.push("Too big Integer for decoding, hex only"),this.isHexOnly=!0,this._valueDec=0):(this.isHexOnly=!1,this.valueHexView.length>0&&(this._valueDec=i0.call(this)))}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(Jm(e))}get valueDec(){return this._valueDec}fromDER(e,t,n,o=0){let s=this.fromBER(e,t,n);if(s===-1)return s;let i=this.valueHexView;return i[0]===0&&i[1]&128?this.valueHexView=i.subarray(1):o!==0&&i.length<o&&(o-i.length>1&&(o=i.length+1),this.valueHexView=i.subarray(o-i.length)),s}toDER(e=!1){let t=this.valueHexView;switch(!0){case(t[0]&128)!==0:{let n=new Uint8Array(this.valueHexView.length+1);n[0]=0,n.set(t,1),this.valueHexView=n}break;case(t[0]===0&&(t[1]&128)===0):this.valueHexView=this.valueHexView.subarray(1);break}return this.toBER(e)}fromBER(e,t,n){let o=super.fromBER(e,t,n);return o===-1||this.setValueHex(),o}toBER(e){return e?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){let e=this.valueHexView.length*8-1,t=new Uint8Array(this.valueHexView.length*8/3),n=0,o,s=this.valueHexView,i="",a=!1;for(let c=s.byteLength-1;c>=0;c--){o=s[c];for(let l=0;l<8;l++){if((o&1)===1)switch(n){case e:t=LR(r6(n),t),i="-";break;default:t=PR(t,r6(n))}n++,o>>=1}}for(let c=0;c<t.length;c++)t[c]&&(a=!0),a&&(i+=t6.charAt(t[c]));return a===!1&&(i+=t6.charAt(0)),i}};h6=xa;xa.NAME="IntegerValueBlock";Object.defineProperty(h6.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var p6,ot=class r extends gt{constructor(e={}){super(e,xa),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return Dl(),BigInt(this.valueBlock.toString())}static fromBigInt(e){Dl();let t=BigInt(e),n=new ba,o=t.toString(16).replace(/^-/,""),s=new Uint8Array(we.Convert.FromHex(o));if(t<0){let a=new Uint8Array(s.length+(s[0]&128?1:0));a[0]|=128;let l=BigInt(`0x${we.Convert.ToHex(a)}`)+t,d=we.BufferSourceConverter.toUint8Array(we.Convert.FromHex(l.toString(16)));d[0]|=128,n.write(d)}else s[0]&128&&n.write(new Uint8Array([0])),n.write(s);return new r({valueHex:n.final()})}convertToDER(){let e=new r({valueHex:this.valueBlock.valueHexView});return e.valueBlock.toDER(),e}convertFromDER(){return new r({valueHex:this.valueBlock.valueHexView[0]===0?this.valueBlock.valueHexView.subarray(1):this.valueBlock.valueHexView})}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()}`}};p6=ot;W.Integer=p6;ot.NAME="INTEGER";var m6,Vl=class extends ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};m6=Vl;W.Enumerated=m6;Vl.NAME="ENUMERATED";var va=class extends Nn(kt){constructor({valueDec:e=-1,isFirstSid:t=!1,...n}={}){super(n),this.valueDec=e,this.isFirstSid=t}fromBER(e,t,n){if(!n)return t;let o=we.BufferSourceConverter.toUint8Array(e);if(!Cn(this,o,t,n))return-1;let s=o.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,!!(s[a]&128));a++);let i=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)i[a]=this.valueHexView[a];return this.valueHexView=i,s[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=ls(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){Dl();let t=BigInt(e).toString(2);for(;t.length%7;)t="0"+t;let n=new Uint8Array(t.length/7);for(let o=0;o<n.length;o++)n[o]=parseInt(t.slice(o*7,o*7+7),2)+(o+1<n.length?128:0);this.fromBER(n.buffer,0,n.length)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let o=this.valueHexView,s=new Uint8Array(this.blockLength);for(let i=0;i<this.blockLength-1;i++)s[i]=o[i]|128;return s[this.blockLength-1]=o[this.blockLength-1],s.buffer}let t=po(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",Vr;let n=new Uint8Array(t.byteLength);if(!e){let o=new Uint8Array(t),s=t.byteLength-1;for(let i=0;i<s;i++)n[i]=o[i]|128;n[s]=o[s]}return n}toString(){let e="";if(this.isHexOnly)e=we.Convert.ToHex(this.valueHexView);else if(this.isFirstSid){let t=this.valueDec;this.valueDec<=39?e="0.":this.valueDec<=79?(e="1.",t-=40):(e="2.",t-=80),e+=t.toString()}else e=this.valueDec.toString();return e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}};va.NAME="sidBlock";var Kl=class extends kt{constructor({value:e=li,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let o=t;for(;n>0;){let s=new va;if(o=s.fromBER(e,o,n),o===-1)return this.blockLength=0,this.error=s.error,o;this.value.length===0&&(s.isFirstSid=!0),this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return o}toBER(e){let t=[];for(let n=0;n<this.value.length;n++){let o=this.value[n].toBER(e);if(o.byteLength===0)return this.error=this.value[n].error,Vr;t.push(o)}return a0(t)}fromString(e){this.value=[];let t=0,n=0,o="",s=!1;do if(n=e.indexOf(".",t),n===-1?o=e.substring(t):o=e.substring(t,n),t=n+1,s){let i=this.value[0],a=0;switch(i.valueDec){case 0:break;case 1:a=40;break;case 2:a=80;break;default:this.value=[];return}let c=parseInt(o,10);if(isNaN(c))return;i.valueDec=c+a,s=!1}else{let i=new va;if(o>Number.MAX_SAFE_INTEGER){Dl();let a=BigInt(o);i.valueBigInt=a}else if(i.valueDec=parseInt(o,10),isNaN(i.valueDec))return;this.value.length||(i.isFirstSid=!0,s=!0),this.value.push(i)}while(n!==-1)}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let o=this.value[n].toString();n!==0&&(e=`${e}.`),t?(o=`{${o}}`,this.value[n].isFirstSid?e=`2.{${o} - 80}`:e+=o):e+=o}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};Kl.NAME="ObjectIdentifierValueBlock";var g6,Fr=class extends gt{constructor(e={}){super(e,Kl),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};g6=Fr;W.ObjectIdentifier=g6;Fr.NAME="OBJECT IDENTIFIER";var _a=class extends Nn(Dn){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,n){if(n===0)return t;let o=we.BufferSourceConverter.toUint8Array(e);if(!Cn(this,o,t,n))return-1;let s=o.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,!!(s[a]&128));a++);let i=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)i[a]=this.valueHexView[a];return this.valueHexView=i,s[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=ls(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let o=this.valueHexView,s=new Uint8Array(this.blockLength);for(let i=0;i<this.blockLength-1;i++)s[i]=o[i]|128;return s[this.blockLength-1]=o[this.blockLength-1],s.buffer}let t=po(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",Vr;let n=new Uint8Array(t.byteLength);if(!e){let o=new Uint8Array(t),s=t.byteLength-1;for(let i=0;i<s;i++)n[i]=o[i]|128;n[s]=o[s]}return n.buffer}toString(){let e="";return this.isHexOnly?e=we.Convert.ToHex(this.valueHexView):e=this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};_a.NAME="relativeSidBlock";var $l=class extends kt{constructor({value:e=li,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let o=t;for(;n>0;){let s=new _a;if(o=s.fromBER(e,o,n),o===-1)return this.blockLength=0,this.error=s.error,o;this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return o}toBER(e,t){let n=[];for(let o=0;o<this.value.length;o++){let s=this.value[o].toBER(e);if(s.byteLength===0)return this.error=this.value[o].error,Vr;n.push(s)}return a0(n)}fromString(e){this.value=[];let t=0,n=0,o="";do{n=e.indexOf(".",t),n===-1?o=e.substring(t):o=e.substring(t,n),t=n+1;let s=new _a;if(s.valueDec=parseInt(o,10),isNaN(s.valueDec))return!0;this.value.push(s)}while(n!==-1);return!0}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let o=this.value[n].toString();n!==0&&(e=`${e}.`),t&&(o=`{${o}}`),e+=o}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};$l.NAME="RelativeObjectIdentifierValueBlock";var y6,Hl=class extends gt{constructor(e={}){super(e,$l),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};y6=Hl;W.RelativeObjectIdentifier=y6;Hl.NAME="RelativeObjectIdentifier";var w6,dt=class extends mo{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};w6=dt;W.Sequence=w6;dt.NAME="SEQUENCE";var b6,ql=class extends mo{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};b6=ql;W.Set=b6;ql.NAME="SET";var Wl=class extends Nn(kt){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=li}toJSON(){return{...super.toJSON(),value:this.value}}};Wl.NAME="StringValueBlock";var zl=class extends Wl{};zl.NAME="SimpleStringValueBlock";var Ot=class extends Cl{constructor({...e}={}){super(e,zl)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,we.BufferSourceConverter.toUint8Array(e))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=e.charCodeAt(o);this.valueBlock.value=e}};Ot.NAME="SIMPLE STRING";var Gl=class extends Ot{fromBuffer(e){this.valueBlock.valueHexView=we.BufferSourceConverter.toUint8Array(e);try{this.valueBlock.value=we.Convert.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=we.Convert.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(we.Convert.FromUtf8String(e)),this.valueBlock.value=e}};Gl.NAME="Utf8StringValueBlock";var E6,kn=class extends Gl{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};E6=kn;W.Utf8String=E6;kn.NAME="UTF8String";var Yl=class extends Ot{fromBuffer(e){this.valueBlock.value=we.Convert.ToUtf16String(e),this.valueBlock.valueHexView=we.BufferSourceConverter.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(we.Convert.FromUtf16String(e))}};Yl.NAME="BmpStringValueBlock";var x6,Xl=class extends Yl{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};x6=Xl;W.BmpString=x6;Xl.NAME="BMPString";var Ql=class extends Ot{fromBuffer(e){let t=ArrayBuffer.isView(e)?e.slice().buffer:e.slice(0),n=new Uint8Array(t);for(let o=0;o<n.length;o+=4)n[o]=n[o+3],n[o+1]=n[o+2],n[o+2]=0,n[o+3]=0;this.valueBlock.value=String.fromCharCode.apply(null,new Uint32Array(t))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t*4);for(let o=0;o<t;o++){let s=po(e.charCodeAt(o),8),i=new Uint8Array(s);if(i.length>4)continue;let a=4-i.length;for(let c=i.length-1;c>=0;c--)n[o*4+c+a]=i[c]}this.valueBlock.value=e}};Ql.NAME="UniversalStringValueBlock";var v6,jl=class extends Ql{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};v6=jl;W.UniversalString=v6;jl.NAME="UniversalString";var _6,Zl=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};_6=Zl;W.NumericString=_6;Zl.NAME="NumericString";var S6,Jl=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};S6=Jl;W.PrintableString=S6;Jl.NAME="PrintableString";var R6,eu=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};R6=eu;W.TeletexString=R6;eu.NAME="TeletexString";var A6,tu=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};A6=tu;W.VideotexString=A6;tu.NAME="VideotexString";var I6,ru=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};I6=ru;W.IA5String=I6;ru.NAME="IA5String";var D6,nu=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};D6=nu;W.GraphicString=D6;nu.NAME="GraphicString";var T6,Sa=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};T6=Sa;W.VisibleString=T6;Sa.NAME="VisibleString";var k6,ou=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};k6=ou;W.GeneralString=k6;ou.NAME="GeneralString";var C6,su=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};C6=su;W.CharacterString=C6;su.NAME="CharacterString";var N6,Ra=class extends Sa{constructor({value:e,valueDate:t,...n}={}){if(super(n),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,e){this.fromString(e),this.valueBlock.valueHexView=new Uint8Array(e.length);for(let o=0;o<e.length;o++)this.valueBlock.valueHexView[o]=e.charCodeAt(o)}t&&(this.fromDate(t),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(e){this.fromString(String.fromCharCode.apply(null,we.BufferSourceConverter.toUint8Array(e)))}toBuffer(){let e=this.toString(),t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let o=0;o<e.length;o++)n[o]=e.charCodeAt(o);return t}fromDate(e){this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(e){let n=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/ig.exec(e);if(n===null){this.error="Wrong input string for conversion";return}let o=parseInt(n[1],10);o>=50?this.year=1900+o:this.year=2e3+o,this.month=parseInt(n[2],10),this.day=parseInt(n[3],10),this.hour=parseInt(n[4],10),this.minute=parseInt(n[5],10),this.second=parseInt(n[6],10)}toString(e="iso"){if(e==="iso"){let t=new Array(7);return t[0]=Kt(this.year<2e3?this.year-1900:this.year-2e3,2),t[1]=Kt(this.month,2),t[2]=Kt(this.day,2),t[3]=Kt(this.hour,2),t[4]=Kt(this.minute,2),t[5]=Kt(this.second,2),t[6]="Z",t.join("")}return super.toString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.toDate().toISOString()}`}toJSON(){return{...super.toJSON(),year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second}}};N6=Ra;W.UTCTime=N6;Ra.NAME="UTCTime";var O6,iu=class extends Ra{constructor(e={}){var t;super(e),(t=this.millisecond)!==null&&t!==void 0||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(e){super.fromDate(e),this.millisecond=e.getUTCMilliseconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond))}fromString(e){let t=!1,n="",o="",s=0,i,a=0,c=0;if(e[e.length-1]==="Z")n=e.substring(0,e.length-1),t=!0;else{let u=new Number(e[e.length-1]);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");n=e}if(t){if(n.indexOf("+")!==-1)throw new Error("Wrong input string for conversion");if(n.indexOf("-")!==-1)throw new Error("Wrong input string for conversion")}else{let u=1,f=n.indexOf("+"),m="";if(f===-1&&(f=n.indexOf("-"),u=-1),f!==-1){if(m=n.substring(f+1),n=n.substring(0,f),m.length!==2&&m.length!==4)throw new Error("Wrong input string for conversion");let h=parseInt(m.substring(0,2),10);if(isNaN(h.valueOf()))throw new Error("Wrong input string for conversion");if(a=u*h,m.length===4){if(h=parseInt(m.substring(2,4),10),isNaN(h.valueOf()))throw new Error("Wrong input string for conversion");c=u*h}}}let l=n.indexOf(".");if(l===-1&&(l=n.indexOf(",")),l!==-1){let u=new Number(`0${n.substring(l)}`);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");s=u.valueOf(),o=n.substring(0,l)}else o=n;switch(!0){case o.length===8:if(i=/(\d{4})(\d{2})(\d{2})/ig,l!==-1)throw new Error("Wrong input string for conversion");break;case o.length===10:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=60*s;this.minute=Math.floor(u),u=60*(u-this.minute),this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case o.length===12:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=60*s;this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case o.length===14:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=1e3*s;this.millisecond=Math.floor(u)}break;default:throw new Error("Wrong input string for conversion")}let d=i.exec(o);if(d===null)throw new Error("Wrong input string for conversion");for(let u=1;u<d.length;u++)switch(u){case 1:this.year=parseInt(d[u],10);break;case 2:this.month=parseInt(d[u],10);break;case 3:this.day=parseInt(d[u],10);break;case 4:this.hour=parseInt(d[u],10)+a;break;case 5:this.minute=parseInt(d[u],10)+c;break;case 6:this.second=parseInt(d[u],10);break;default:throw new Error("Wrong input string for conversion")}if(t===!1){let u=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=u.getUTCFullYear(),this.month=u.getUTCMonth(),this.day=u.getUTCDay(),this.hour=u.getUTCHours(),this.minute=u.getUTCMinutes(),this.second=u.getUTCSeconds(),this.millisecond=u.getUTCMilliseconds()}}toString(e="iso"){if(e==="iso"){let t=[];return t.push(Kt(this.year,4)),t.push(Kt(this.month,2)),t.push(Kt(this.day,2)),t.push(Kt(this.hour,2)),t.push(Kt(this.minute,2)),t.push(Kt(this.second,2)),this.millisecond!==0&&(t.push("."),t.push(Kt(this.millisecond,3))),t.push("Z"),t.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};O6=iu;W.GeneralizedTime=O6;iu.NAME="GeneralizedTime";var P6,au=class extends kn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};P6=au;W.DATE=P6;au.NAME="DATE";var L6,cu=class extends kn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};L6=cu;W.TimeOfDay=L6;cu.NAME="TimeOfDay";var B6,lu=class extends kn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};B6=lu;W.DateTime=B6;lu.NAME="DateTime";var M6,uu=class extends kn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};M6=uu;W.Duration=M6;uu.NAME="Duration";var U6,du=class extends kn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};U6=du;W.TIME=U6;du.NAME="TIME";function MR(r){let{result:e}=ui(r),t=e.valueBlock.value;return{n:B(nn(t[1].toBigInt()),"base64url"),e:B(nn(t[2].toBigInt()),"base64url"),d:B(nn(t[3].toBigInt()),"base64url"),p:B(nn(t[4].toBigInt()),"base64url"),q:B(nn(t[5].toBigInt()),"base64url"),dp:B(nn(t[6].toBigInt()),"base64url"),dq:B(nn(t[7].toBigInt()),"base64url"),qi:B(nn(t[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function UR(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 g("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new dt({value:[new ot({value:0}),ot.fromBigInt(on(L(r.n,"base64url"))),ot.fromBigInt(on(L(r.e,"base64url"))),ot.fromBigInt(on(L(r.d,"base64url"))),ot.fromBigInt(on(L(r.p,"base64url"))),ot.fromBigInt(on(L(r.q,"base64url"))),ot.fromBigInt(on(L(r.dp,"base64url"))),ot.fromBigInt(on(L(r.dq,"base64url"))),ot.fromBigInt(on(L(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function FR(r){let{result:e}=ui(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:B(nn(t[0].toBigInt()),"base64url"),e:B(nn(t[1].toBigInt()),"base64url")}}function VR(r){if(r.n==null||r.e==null)throw new g("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new dt({value:[new dt({value:[new Fr({value:"1.2.840.113549.1.1.1"}),new go]}),new ci({valueHex:new dt({value:[ot.fromBigInt(on(L(r.n,"base64url"))),ot.fromBigInt(on(L(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function nn(r){let e=r.toString(16);e.length%2>0&&(e=`0${e}`);let t=e.length/2,n=new Uint8Array(t),o=0,s=0;for(;o<t;)n[o]=parseInt(e.slice(s,s+2),16),o+=1,s+=2;return n}function on(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}var KR=16,l0=32,u0=1e4;async function $R(r,e){let t=$e.get(),o=new dt({value:[new ot({value:0}),new dt({value:[new Fr({value:"1.2.840.113549.1.1.1"}),new go]}),new Tn({valueHex:r.marshal()})]}).toBER(),s=new Uint8Array(o,0,o.byteLength),i=Vt(KR),a=await o0(uo,e,i,{c:u0,dkLen:l0}),c=Vt(16),l=await t.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),d=await t.subtle.encrypt({name:"AES-CBC",iv:c},l,s),u=new dt({value:[new Tn({valueHex:i}),new ot({value:u0}),new ot({value:l0}),new dt({value:[new Fr({value:"1.2.840.113549.2.11"}),new go]})]}),f=new dt({value:[new Fr({value:"1.2.840.113549.1.5.13"}),new dt({value:[new dt({value:[new Fr({value:"1.2.840.113549.1.5.12"}),u]}),new dt({value:[new Fr({value:"2.16.840.1.101.3.4.1.42"}),new Tn({valueHex:c})]})]})]}),h=new dt({value:[f,new Tn({valueHex:d})]}).toBER(),p=new Uint8Array(h,0,h.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...B(p,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
|
|
22
|
+
`)}async function d0(r,e){let t=$e.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let o=L(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=ui(o),{iv:i,salt:a,iterations:c,keySize:l,cipherText:d}=HR(s),u=await o0(uo,e,a,{c,dkLen:l}),f=await t.subtle.importKey("raw",u,"AES-CBC",!1,["decrypt"]),m=Aa(await t.subtle.decrypt({name:"AES-CBC",iv:i},f,d)),{result:h}=ui(m);n=F6(h)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let o=L(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=ui(o);n=F6(s)}else throw new g("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return f0(n)}function HR(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new g("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new g("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let s=n.valueBlock.value[1],i=Aa(s.valueBlock.value[0].getValue()),a=u0,c=l0;if(s.valueBlock.value.length===3)a=Number(s.valueBlock.value[1].toBigInt()),c=Number(s.valueBlock.value[2].toBigInt());else if(s.valueBlock.value.length===2)throw new g("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let l=e.valueBlock.value[1].valueBlock.value[1],d=l.valueBlock.value[0].toString();if(d!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(d!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(d!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(d!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(d!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new g("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let u=Aa(l.valueBlock.value[1].getValue());return{cipherText:Aa(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:u}}function F6(r){return Aa(r.valueBlock.value[2].getValue())}function Aa(r){return new Uint8Array(r,0,r.byteLength)}async function V6(r){let e=await $e.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await H6(e);return{privateKey:t[0],publicKey:t[1]}}async function h0(r){let t=[await $e.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await qR(r)],n=await H6({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function K6(r,e){let t=await $e.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await $e.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function $6(r,e,t){let n=await $e.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return $e.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function H6(r){if(r.privateKey==null||r.publicKey==null)throw new g("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([$e.get().subtle.exportKey("jwk",r.privateKey),$e.get().subtle.exportKey("jwk",r.publicKey)])}async function qR(r){return $e.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function hu(r){if(r.kty!=="RSA")throw new g("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new g("invalid key modulus","ERR_INVALID_KEY_MODULUS");return L(r.n,"base64url").length*8}var ds=8192,us=class{_key;constructor(e){this._key=e}verify(e,t){return $6(this._key,t,e)}marshal(){return yo.jwkToPkix(this._key)}get bytes(){return Mr.encode({Type:Ue.RSA,Data:this.marshal()}).subarray()}equals(e){return j(this.bytes,e.bytes)}hash(){let e=Re.digest(this.bytes);return dr(e)?e.then(({bytes:t})=>t):e.bytes}},wo=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return Vt(16)}sign(e){return K6(this._key,e)}get public(){if(this._publicKey==null)throw new g("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new us(this._publicKey)}marshal(){return yo.jwkToPkcs1(this._key)}get bytes(){return Ur.encode({Type:Ue.RSA,Data:this.marshal()}).subarray()}equals(e){return j(this.bytes,e.bytes)}hash(){let e=Re.digest(this.bytes);return dr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return B(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return yo.exportToPem(this,e);if(t==="libp2p-key")return oi(this.bytes,e);throw new g(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function f0(r){let e=yo.pkcs1ToJwk(r);if(hu(e)>ds)throw new g("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await h0(e);return new wo(t.privateKey,t.publicKey)}function zR(r){let e=yo.pkixToJwk(r);if(hu(e)>ds)throw new g("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new us(e)}async function GR(r){if(hu(r)>ds)throw new g("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await h0(r);return new wo(e.privateKey,e.publicKey)}async function YR(r){if(r>ds)throw new g("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await V6(r);return new wo(e.privateKey,e.publicKey)}var b0={};me(b0,{Secp256k1PrivateKey:()=>ps,Secp256k1PublicKey:()=>hs,generateKeyPair:()=>lA,unmarshalSecp256k1PrivateKey:()=>aA,unmarshalSecp256k1PublicKey:()=>cA});var XR=(r,e,t)=>r&e^~r&t,QR=(r,e,t)=>r&e^r&t^e&t,jR=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),bo=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Eo=new Uint32Array(64),m0=class extends ao{constructor(){super(64,32,8,!1),this.A=bo[0]|0,this.B=bo[1]|0,this.C=bo[2]|0,this.D=bo[3]|0,this.E=bo[4]|0,this.F=bo[5]|0,this.G=bo[6]|0,this.H=bo[7]|0}get(){let{A:e,B:t,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[e,t,n,o,s,i,a,c]}set(e,t,n,o,s,i,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,t){for(let u=0;u<16;u++,t+=4)Eo[u]=e.getUint32(t,!1);for(let u=16;u<64;u++){let f=Eo[u-15],m=Eo[u-2],h=Nr(f,7)^Nr(f,18)^f>>>3,p=Nr(m,17)^Nr(m,19)^m>>>10;Eo[u]=p+Eo[u-7]+h+Eo[u-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){let f=Nr(a,6)^Nr(a,11)^Nr(a,25),m=d+f+XR(a,c,l)+jR[u]+Eo[u]|0,p=(Nr(n,2)^Nr(n,13)^Nr(n,22))+QR(n,o,s)|0;d=l,l=c,c=a,a=i+m|0,i=s,s=o,o=n,n=m+p|0}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(n,o,s,i,a,c,l,d)}roundClean(){Eo.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var xo=ti(()=>new m0);function ZR(r){let e=pa(r);fr(e,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:t,Fp:n,a:o}=e;if(t){if(!n.eql(o,n.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if(typeof t!="object"||typeof t.beta!="bigint"||typeof t.splitScalar!="function")throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...e})}var{bytesToNumberBE:JR,hexToBytes:eA}=gl,fs={Err:class extends Error{constructor(e=""){super(e)}},_parseInt(r){let{Err:e}=fs;if(r.length<2||r[0]!==2)throw new e("Invalid signature integer tag");let t=r[1],n=r.subarray(2,t+2);if(!t||n.length!==t)throw new e("Invalid signature integer: wrong length");if(n[0]&128)throw new e("Invalid signature integer: negative");if(n[0]===0&&!(n[1]&128))throw new e("Invalid signature integer: unnecessary leading zero");return{d:JR(n),l:r.subarray(t+2)}},toSig(r){let{Err:e}=fs,t=typeof r=="string"?eA(r):r;if(!Pr(t))throw new Error("ui8a expected");let n=t.length;if(n<2||t[0]!=48)throw new e("Invalid signature tag");if(t[1]!==n-2)throw new e("Invalid signature: incorrect length");let{d:o,l:s}=fs._parseInt(t.subarray(2)),{d:i,l:a}=fs._parseInt(s);if(a.length)throw new e("Invalid signature: left bytes after parsing");return{r:o,s:i}},hexFromSig(r){let e=l=>Number.parseInt(l[0],16)&8?"00"+l:l,t=l=>{let d=l.toString(16);return d.length&1?`0${d}`:d},n=e(t(r.s)),o=e(t(r.r)),s=n.length/2,i=o.length/2,a=t(s),c=t(i);return`30${t(i+s+4)}02${c}${o}02${a}${n}`}},On=BigInt(0),pr=BigInt(1),NK=BigInt(2),q6=BigInt(3),OK=BigInt(4);function tA(r){let e=ZR(r),{Fp:t}=e,n=e.toBytes||((h,p,y)=>{let w=p.toAffine();return _n(Uint8Array.from([4]),t.toBytes(w.x),t.toBytes(w.y))}),o=e.fromBytes||(h=>{let p=h.subarray(1),y=t.fromBytes(p.subarray(0,t.BYTES)),w=t.fromBytes(p.subarray(t.BYTES,2*t.BYTES));return{x:y,y:w}});function s(h){let{a:p,b:y}=e,w=t.sqr(h),E=t.mul(w,h);return t.add(t.add(E,t.mul(h,p)),y)}if(!t.eql(t.sqr(e.Gy),s(e.Gx)))throw new Error("bad generator point: equation left != right");function i(h){return typeof h=="bigint"&&On<h&&h<e.n}function a(h){if(!i(h))throw new Error("Expected valid bigint: 0 < bigint < curve.n")}function c(h){let{allowedPrivateKeyLengths:p,nByteLength:y,wrapPrivateKey:w,n:E}=e;if(p&&typeof h!="bigint"){if(Pr(h)&&(h=En(h)),typeof h!="string"||!p.includes(h.length))throw new Error("Invalid key");h=h.padStart(y*2,"0")}let b;try{b=typeof h=="bigint"?h:xn(Be("private key",h,y))}catch{throw new Error(`private key must be ${y} bytes, hex or bigint, not ${typeof h}`)}return w&&(b=Ae(b,E)),a(b),b}let l=new Map;function d(h){if(!(h instanceof u))throw new Error("ProjectivePoint expected")}class u{constructor(p,y,w){if(this.px=p,this.py=y,this.pz=w,p==null||!t.isValid(p))throw new Error("x required");if(y==null||!t.isValid(y))throw new Error("y required");if(w==null||!t.isValid(w))throw new Error("z required")}static fromAffine(p){let{x:y,y:w}=p||{};if(!p||!t.isValid(y)||!t.isValid(w))throw new Error("invalid affine point");if(p instanceof u)throw new Error("projective point not allowed");let E=b=>t.eql(b,t.ZERO);return E(y)&&E(w)?u.ZERO:new u(y,w,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(p){let y=t.invertBatch(p.map(w=>w.pz));return p.map((w,E)=>w.toAffine(y[E])).map(u.fromAffine)}static fromHex(p){let y=u.fromAffine(o(Be("pointHex",p)));return y.assertValidity(),y}static fromPrivateKey(p){return u.BASE.multiply(c(p))}_setWindowSize(p){this._WINDOW_SIZE=p,l.delete(this)}assertValidity(){if(this.is0()){if(e.allowInfinityPoint&&!t.is0(this.py))return;throw new Error("bad point: ZERO")}let{x:p,y}=this.toAffine();if(!t.isValid(p)||!t.isValid(y))throw new Error("bad point: x or y not FE");let w=t.sqr(y),E=s(p);if(!t.eql(w,E))throw new Error("bad point: equation left != right");if(!this.isTorsionFree())throw new Error("bad point: not in prime-order subgroup")}hasEvenY(){let{y:p}=this.toAffine();if(t.isOdd)return!t.isOdd(p);throw new Error("Field doesn't support isOdd")}equals(p){d(p);let{px:y,py:w,pz:E}=this,{px:b,py:S,pz:R}=p,A=t.eql(t.mul(y,R),t.mul(b,E)),D=t.eql(t.mul(w,R),t.mul(S,E));return A&&D}negate(){return new u(this.px,t.neg(this.py),this.pz)}double(){let{a:p,b:y}=e,w=t.mul(y,q6),{px:E,py:b,pz:S}=this,R=t.ZERO,A=t.ZERO,D=t.ZERO,_=t.mul(E,E),k=t.mul(b,b),O=t.mul(S,S),N=t.mul(E,b);return N=t.add(N,N),D=t.mul(E,S),D=t.add(D,D),R=t.mul(p,D),A=t.mul(w,O),A=t.add(R,A),R=t.sub(k,A),A=t.add(k,A),A=t.mul(R,A),R=t.mul(N,R),D=t.mul(w,D),O=t.mul(p,O),N=t.sub(_,O),N=t.mul(p,N),N=t.add(N,D),D=t.add(_,_),_=t.add(D,_),_=t.add(_,O),_=t.mul(_,N),A=t.add(A,_),O=t.mul(b,S),O=t.add(O,O),_=t.mul(O,N),R=t.sub(R,_),D=t.mul(O,k),D=t.add(D,D),D=t.add(D,D),new u(R,A,D)}add(p){d(p);let{px:y,py:w,pz:E}=this,{px:b,py:S,pz:R}=p,A=t.ZERO,D=t.ZERO,_=t.ZERO,k=e.a,O=t.mul(e.b,q6),N=t.mul(y,b),P=t.mul(w,S),F=t.mul(E,R),Y=t.add(y,w),I=t.add(b,S);Y=t.mul(Y,I),I=t.add(N,P),Y=t.sub(Y,I),I=t.add(y,E);let C=t.add(b,R);return I=t.mul(I,C),C=t.add(N,F),I=t.sub(I,C),C=t.add(w,E),A=t.add(S,R),C=t.mul(C,A),A=t.add(P,F),C=t.sub(C,A),_=t.mul(k,I),A=t.mul(O,F),_=t.add(A,_),A=t.sub(P,_),_=t.add(P,_),D=t.mul(A,_),P=t.add(N,N),P=t.add(P,N),F=t.mul(k,F),I=t.mul(O,I),P=t.add(P,F),F=t.sub(N,F),F=t.mul(k,F),I=t.add(I,F),N=t.mul(P,I),D=t.add(D,N),N=t.mul(C,I),A=t.mul(Y,A),A=t.sub(A,N),N=t.mul(Y,P),_=t.mul(C,_),_=t.add(_,N),new u(A,D,_)}subtract(p){return this.add(p.negate())}is0(){return this.equals(u.ZERO)}wNAF(p){return m.wNAFCached(this,l,p,y=>{let w=t.invertBatch(y.map(E=>E.pz));return y.map((E,b)=>E.toAffine(w[b])).map(u.fromAffine)})}multiplyUnsafe(p){let y=u.ZERO;if(p===On)return y;if(a(p),p===pr)return this;let{endo:w}=e;if(!w)return m.unsafeLadder(this,p);let{k1neg:E,k1:b,k2neg:S,k2:R}=w.splitScalar(p),A=y,D=y,_=this;for(;b>On||R>On;)b&pr&&(A=A.add(_)),R&pr&&(D=D.add(_)),_=_.double(),b>>=pr,R>>=pr;return E&&(A=A.negate()),S&&(D=D.negate()),D=new u(t.mul(D.px,w.beta),D.py,D.pz),A.add(D)}multiply(p){a(p);let y=p,w,E,{endo:b}=e;if(b){let{k1neg:S,k1:R,k2neg:A,k2:D}=b.splitScalar(y),{p:_,f:k}=this.wNAF(R),{p:O,f:N}=this.wNAF(D);_=m.constTimeNegate(S,_),O=m.constTimeNegate(A,O),O=new u(t.mul(O.px,b.beta),O.py,O.pz),w=_.add(O),E=k.add(N)}else{let{p:S,f:R}=this.wNAF(y);w=S,E=R}return u.normalizeZ([w,E])[0]}multiplyAndAddUnsafe(p,y,w){let E=u.BASE,b=(R,A)=>A===On||A===pr||!R.equals(E)?R.multiplyUnsafe(A):R.multiply(A),S=b(this,y).add(b(p,w));return S.is0()?void 0:S}toAffine(p){let{px:y,py:w,pz:E}=this,b=this.is0();p==null&&(p=b?t.ONE:t.inv(E));let S=t.mul(y,p),R=t.mul(w,p),A=t.mul(E,p);if(b)return{x:t.ZERO,y:t.ZERO};if(!t.eql(A,t.ONE))throw new Error("invZ was invalid");return{x:S,y:R}}isTorsionFree(){let{h:p,isTorsionFree:y}=e;if(p===pr)return!0;if(y)return y(u,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:p,clearCofactor:y}=e;return p===pr?this:y?y(u,this):this.multiplyUnsafe(e.h)}toRawBytes(p=!0){return this.assertValidity(),n(u,this,p)}toHex(p=!0){return En(this.toRawBytes(p))}}u.BASE=new u(e.Gx,e.Gy,t.ONE),u.ZERO=new u(t.ZERO,t.ONE,t.ZERO);let f=e.nBitLength,m=bl(u,e.endo?Math.ceil(f/2):f);return{CURVE:e,ProjectivePoint:u,normPrivateKeyToScalar:c,weierstrassEquation:s,isWithinCurveOrder:i}}function rA(r){let e=pa(r);return fr(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function W6(r){let e=rA(r),{Fp:t,n}=e,o=t.BYTES+1,s=2*t.BYTES+1;function i(I){return On<I&&I<t.ORDER}function a(I){return Ae(I,n)}function c(I){return yl(I,n)}let{ProjectivePoint:l,normPrivateKeyToScalar:d,weierstrassEquation:u,isWithinCurveOrder:f}=tA({...e,toBytes(I,C,$){let T=C.toAffine(),v=t.toBytes(T.x),M=_n;return $?M(Uint8Array.from([C.hasEvenY()?2:3]),v):M(Uint8Array.from([4]),v,t.toBytes(T.y))},fromBytes(I){let C=I.length,$=I[0],T=I.subarray(1);if(C===o&&($===2||$===3)){let v=xn(T);if(!i(v))throw new Error("Point is not on curve");let M=u(v),V=t.sqrt(M),q=(V&pr)===pr;return($&1)===1!==q&&(V=t.neg(V)),{x:v,y:V}}else if(C===s&&$===4){let v=t.fromBytes(T.subarray(0,t.BYTES)),M=t.fromBytes(T.subarray(t.BYTES,2*t.BYTES));return{x:v,y:M}}else throw new Error(`Point of length ${C} was invalid. Expected ${o} compressed bytes or ${s} uncompressed bytes`)}}),m=I=>En(fo(I,e.nByteLength));function h(I){let C=n>>pr;return I>C}function p(I){return h(I)?a(-I):I}let y=(I,C,$)=>xn(I.slice(C,$));class w{constructor(C,$,T){this.r=C,this.s=$,this.recovery=T,this.assertValidity()}static fromCompact(C){let $=e.nByteLength;return C=Be("compactSignature",C,$*2),new w(y(C,0,$),y(C,$,2*$))}static fromDER(C){let{r:$,s:T}=fs.toSig(Be("DER",C));return new w($,T)}assertValidity(){if(!f(this.r))throw new Error("r must be 0 < r < CURVE.n");if(!f(this.s))throw new Error("s must be 0 < s < CURVE.n")}addRecoveryBit(C){return new w(this.r,this.s,C)}recoverPublicKey(C){let{r:$,s:T,recovery:v}=this,M=D(Be("msgHash",C));if(v==null||![0,1,2,3].includes(v))throw new Error("recovery id invalid");let V=v===2||v===3?$+e.n:$;if(V>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");let q=v&1?"03":"02",ne=l.fromHex(q+m(V)),ie=c(V),pe=a(-M*ie),le=a(T*ie),ue=l.BASE.multiplyAndAddUnsafe(ne,pe,le);if(!ue)throw new Error("point at infinify");return ue.assertValidity(),ue}hasHighS(){return h(this.s)}normalizeS(){return this.hasHighS()?new w(this.r,a(-this.s),this.recovery):this}toDERRawBytes(){return is(this.toDERHex())}toDERHex(){return fs.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return is(this.toCompactHex())}toCompactHex(){return m(this.r)+m(this.s)}}let E={isValidPrivateKey(I){try{return d(I),!0}catch{return!1}},normPrivateKeyToScalar:d,randomPrivateKey:()=>{let I=Yh(e.n);return Rm(e.randomBytes(I),e.n)},precompute(I=8,C=l.BASE){return C._setWindowSize(I),C.multiply(BigInt(3)),C}};function b(I,C=!0){return l.fromPrivateKey(I).toRawBytes(C)}function S(I){let C=Pr(I),$=typeof I=="string",T=(C||$)&&I.length;return C?T===o||T===s:$?T===2*o||T===2*s:I instanceof l}function R(I,C,$=!0){if(S(I))throw new Error("first arg must be private key");if(!S(C))throw new Error("second arg must be public key");return l.fromHex(C).multiply(d(I)).toRawBytes($)}let A=e.bits2int||function(I){let C=xn(I),$=I.length*8-e.nBitLength;return $>0?C>>BigInt($):C},D=e.bits2int_modN||function(I){return a(A(I))},_=ha(e.nBitLength);function k(I){if(typeof I!="bigint")throw new Error("bigint expected");if(!(On<=I&&I<_))throw new Error(`bigint expected < 2^${e.nBitLength}`);return fo(I,e.nByteLength)}function O(I,C,$=N){if(["recovered","canonical"].some(Te=>Te in $))throw new Error("sign() legacy options not supported");let{hash:T,randomBytes:v}=e,{lowS:M,prehash:V,extraEntropy:q}=$;M==null&&(M=!0),I=Be("msgHash",I),V&&(I=Be("prehashed msgHash",T(I)));let ne=D(I),ie=d(C),pe=[k(ie),k(ne)];if(q!=null){let Te=q===!0?v(t.BYTES):q;pe.push(Be("extraEntropy",Te))}let le=_n(...pe),ue=ne;function Le(Te){let ht=A(Te);if(!f(ht))return;let pt=c(ht),st=l.BASE.multiply(ht).toAffine(),Rt=a(st.x);if(Rt===On)return;let mn=a(pt*a(ue+Rt*ie));if(mn===On)return;let Ho=(st.x===Rt?0:2)|Number(st.y&pr),ra=mn;return M&&h(mn)&&(ra=p(mn),Ho^=1),new w(Rt,ra,Ho)}return{seed:le,k2sig:Le}}let N={lowS:e.lowS,prehash:!1},P={lowS:e.lowS,prehash:!1};function F(I,C,$=N){let{seed:T,k2sig:v}=O(I,C,$),M=e;return Hh(M.hash.outputLen,M.nByteLength,M.hmac)(T,v)}l.BASE._setWindowSize(8);function Y(I,C,$,T=P){let v=I;if(C=Be("msgHash",C),$=Be("publicKey",$),"strict"in T)throw new Error("options.strict was renamed to lowS");let{lowS:M,prehash:V}=T,q,ne;try{if(typeof v=="string"||Pr(v))try{q=w.fromDER(v)}catch(st){if(!(st instanceof fs.Err))throw st;q=w.fromCompact(v)}else if(typeof v=="object"&&typeof v.r=="bigint"&&typeof v.s=="bigint"){let{r:st,s:Rt}=v;q=new w(st,Rt)}else throw new Error("PARSE");ne=l.fromHex($)}catch(st){if(st.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(M&&q.hasHighS())return!1;V&&(C=e.hash(C));let{r:ie,s:pe}=q,le=D(C),ue=c(pe),Le=a(le*ue),Te=a(ie*ue),ht=l.BASE.multiplyAndAddUnsafe(ne,Le,Te)?.toAffine();return ht?a(ht.x)===ie:!1}return{CURVE:e,getPublicKey:b,getSharedSecret:R,sign:F,verify:Y,ProjectivePoint:l,Signature:w,utils:E}}function nA(r){return{hash:r,hmac:(e,...t)=>ho(r,e,hl(...t)),randomBytes:ss}}function z6(r,e){let t=n=>W6({...r,...nA(n)});return Object.freeze({...t(e),create:t})}var X6=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),G6=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),oA=BigInt(1),g0=BigInt(2),Y6=(r,e)=>(r+e/g0)/e;function sA(r){let e=X6,t=BigInt(3),n=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%e,d=l*l*r%e,u=Me(d,t,e)*d%e,f=Me(u,t,e)*d%e,m=Me(f,g0,e)*l%e,h=Me(m,o,e)*m%e,p=Me(h,s,e)*h%e,y=Me(p,a,e)*p%e,w=Me(y,c,e)*y%e,E=Me(w,a,e)*p%e,b=Me(E,t,e)*d%e,S=Me(b,i,e)*h%e,R=Me(S,n,e)*l%e,A=Me(R,g0,e);if(!y0.eql(y0.sqr(A),r))throw new Error("Cannot find square root");return A}var y0=wl(X6,void 0,void 0,{sqrt:sA}),Kr=z6({a:BigInt(0),b:BigInt(7),Fp:y0,n:G6,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let e=G6,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-oA*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),o=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),s=t,i=BigInt("0x100000000000000000000000000000000"),a=Y6(s*r,e),c=Y6(-n*r,e),l=Ae(r-a*t-c*o,e),d=Ae(-a*n-c*s,e),u=l>i,f=d>i;if(u&&(l=e-l),f&&(d=e-d),l>i||d>i)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:u,k1:l,k2neg:f,k2:d}}}},xo),$K=BigInt(0);var HK=Kr.ProjectivePoint;function Q6(){return Kr.utils.randomPrivateKey()}function j6(r,e){let t=Re.digest(e instanceof Uint8Array?e:e.subarray());if(dr(t))return t.then(({digest:n})=>Kr.sign(n,r).toDERRawBytes()).catch(n=>{throw new g(String(n),"ERR_INVALID_INPUT")});try{return Kr.sign(t.digest,r).toDERRawBytes()}catch(n){throw new g(String(n),"ERR_INVALID_INPUT")}}function Z6(r,e,t){let n=Re.digest(t instanceof Uint8Array?t:t.subarray());if(dr(n))return n.then(({digest:o})=>Kr.verify(e,o,r)).catch(o=>{throw new g(String(o),"ERR_INVALID_INPUT")});try{return Kr.verify(e,n.digest,r)}catch(o){throw new g(String(o),"ERR_INVALID_INPUT")}}function J6(r){return Kr.ProjectivePoint.fromHex(r).toRawBytes(!0)}function e5(r){try{Kr.getPublicKey(r,!0)}catch(e){throw new g(String(e),"ERR_INVALID_PRIVATE_KEY")}}function w0(r){try{Kr.ProjectivePoint.fromHex(r)}catch(e){throw new g(String(e),"ERR_INVALID_PUBLIC_KEY")}}function t5(r){try{return Kr.getPublicKey(r,!0)}catch(e){throw new g(String(e),"ERR_INVALID_PRIVATE_KEY")}}var hs=class{_key;constructor(e){w0(e),this._key=e}verify(e,t){return Z6(this._key,t,e)}marshal(){return J6(this._key)}get bytes(){return Mr.encode({Type:Ue.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return j(this.bytes,e.bytes)}async hash(){let e=Re.digest(this.bytes),t;return dr(e)?{bytes:t}=await e:t=e.bytes,t}},ps=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??t5(e),e5(this._key),w0(this._publicKey)}sign(e){return j6(this._key,e)}get public(){return new hs(this._publicKey)}marshal(){return this._key}get bytes(){return Ur.encode({Type:Ue.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return j(this.bytes,e.bytes)}hash(){let e=Re.digest(this.bytes);return dr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return B(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return oi(this.bytes,e);throw new g(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function aA(r){return new ps(r)}function cA(r){return new hs(r)}async function lA(){let r=Q6();return new ps(r)}var Pn={rsa:p0,ed25519:r0,secp256k1:b0};function E0(r){let e=Object.keys(Pn).join(" / ");return new g(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function x0(r){if(r=r.toLowerCase(),r==="rsa"||r==="ed25519"||r==="secp256k1")return Pn[r];throw E0(r)}async function Ia(r,e){return x0(r).generateKeyPair(e??2048)}async function uA(r,e,t){if(r.toLowerCase()!=="ed25519")throw new g("Seed key derivation is unimplemented for RSA or secp256k1","ERR_UNSUPPORTED_KEY_DERIVATION_TYPE");return t0(e)}function $r(r){let e=Mr.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case Ue.RSA:return Pn.rsa.unmarshalRsaPublicKey(t);case Ue.Ed25519:return Pn.ed25519.unmarshalEd25519PublicKey(t);case Ue.Secp256k1:return Pn.secp256k1.unmarshalSecp256k1PublicKey(t);default:throw E0(e.Type??"unknown")}}function v0(r,e){return e=(e??"rsa").toLowerCase(),x0(e),r.bytes}async function mr(r){let e=Ur.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case Ue.RSA:return Pn.rsa.unmarshalRsaPrivateKey(t);case Ue.Ed25519:return Pn.ed25519.unmarshalEd25519PrivateKey(t);case Ue.Secp256k1:return Pn.secp256k1.unmarshalSecp256k1PrivateKey(t);default:throw E0(e.Type??"RSA")}}function _0(r,e){return e=(e??"rsa").toLowerCase(),x0(e),r.bytes}async function di(r,e){try{let t=await qm(r,e);return await mr(t)}catch{}if(!r.includes("BEGIN"))throw new g("Encrypted key was not a libp2p-key or a PEM file","ERR_INVALID_IMPORT_FORMAT");return d0(r,e)}var qA=ke(Zo(),1);var Ln="/",r5=new TextEncoder().encode(Ln),mu=r5[0],Oe=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=L(e);else if(e instanceof Uint8Array)this._buf=e;else throw new Error("Invalid key, should be String of Uint8Array");if(t==null&&(t=!0),t&&this.clean(),this._buf.byteLength===0||this._buf[0]!==mu)throw new Error("Invalid key")}toString(e="utf8"){return B(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(Ln))}static random(){return new r(Math.random().toString().substring(2))}static asKey(e){return e instanceof Uint8Array||typeof e=="string"?new r(e):typeof e.uint8Array=="function"?new r(e.uint8Array()):null}clean(){if((this._buf==null||this._buf.byteLength===0)&&(this._buf=r5),this._buf[0]!==mu){let e=new Uint8Array(this._buf.byteLength+1);e.fill(mu,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===mu;)this._buf=this._buf.subarray(0,-1)}less(e){let t=this.list(),n=e.list();for(let o=0;o<t.length;o++){if(n.length<o+1)return!1;let s=t[o],i=n[o];if(s<i)return!0;if(s>i)return!1}return t.length<n.length}reverse(){return r.withNamespaces(this.list().slice().reverse())}namespaces(){return this.list()}baseNamespace(){let e=this.namespaces();return e[e.length-1]}list(){return this.toString().split(Ln).slice(1)}type(){return dA(this.baseNamespace())}name(){return fA(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(Ln)||(e+=Ln),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(Ln):new r(e.slice(0,-1).join(Ln))}child(e){return this.toString()===Ln?e:e.toString()===Ln?this:new r(this.toString()+e.toString(),!1)}isAncestorOf(e){return e.toString()===this.toString()?!1:e.toString().startsWith(this.toString())}isDecendantOf(e){return e.toString()===this.toString()?!1:this.toString().startsWith(e.toString())}isTopLevel(){return this.list().length===1}concat(...e){return r.withNamespaces([...this.namespaces(),...hA(e.map(t=>t.namespaces()))])}};function dA(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function fA(r){let e=r.split(":");return e[e.length-1]}function hA(r){return[].concat(...r)}var WA=ke(gu(),1);var n5="ERR_IPNS_EXPIRED_RECORD",yu="ERR_UNRECOGNIZED_VALIDITY";var Bn="ERR_SIGNATURE_VERIFICATION";var R0="ERR_UNDEFINED_PARAMETER",o5="ERR_INVALID_RECORD_DATA",s5="ERR_INVALID_VALUE",i5="ERR_INVALID_EMBEDDED_KEY";var a5="ERR_RECORD_TOO_LARGE";var $t;(function(r){let e;(function(o){o.EOL="EOL"})(e=r.ValidityType||(r.ValidityType={}));let t;(function(o){o[o.EOL=0]="EOL"})(t||(t={})),function(o){o.codec=()=>Ve(t)}(e=r.ValidityType||(r.ValidityType={}));let n;r.codec=()=>(n==null&&(n=te((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.value!=null&&(s.uint32(10),s.bytes(o.value)),o.signatureV1!=null&&(s.uint32(18),s.bytes(o.signatureV1)),o.validityType!=null&&(s.uint32(24),r.ValidityType.codec().encode(o.validityType,s)),o.validity!=null&&(s.uint32(34),s.bytes(o.validity)),o.sequence!=null&&(s.uint32(40),s.uint64(o.sequence)),o.ttl!=null&&(s.uint32(48),s.uint64(o.ttl)),o.pubKey!=null&&(s.uint32(58),s.bytes(o.pubKey)),o.signatureV2!=null&&(s.uint32(66),s.bytes(o.signatureV2)),o.data!=null&&(s.uint32(74),s.bytes(o.data)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.value=o.bytes();break;case 2:i.signatureV1=o.bytes();break;case 3:i.validityType=r.ValidityType.codec().decode(o);break;case 4:i.validity=o.bytes();break;case 5:i.sequence=o.uint64();break;case 6:i.ttl=o.uint64();break;case 7:i.pubKey=o.bytes();break;case 8:i.signatureV2=o.bytes();break;case 9:i.data=o.bytes();break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>ee(o,r.codec()),r.decode=o=>J(o,r.codec())})($t||($t={}));var pA=["string","number","bigint","symbol"],mA=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","HTMLElement","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function l5(r){if(r===null)return"null";if(r===void 0)return"undefined";if(r===!0||r===!1)return"boolean";let e=typeof r;if(pA.includes(e))return e;if(e==="function")return"Function";if(Array.isArray(r))return"Array";if(gA(r))return"Buffer";let t=yA(r);return t||"Object"}function gA(r){return r&&r.constructor&&r.constructor.isBuffer&&r.constructor.isBuffer.call(null,r)}function yA(r){let e=Object.prototype.toString.call(r).slice(8,-1);if(mA.includes(e))return e}var x=class{constructor(e,t,n){this.major=e,this.majorEncoded=e<<5,this.name=t,this.terminal=n}toString(){return`Type[${this.major}].${this.name}`}compare(e){return this.major<e.major?-1:this.major>e.major?1:0}};x.uint=new x(0,"uint",!0);x.negint=new x(1,"negint",!0);x.bytes=new x(2,"bytes",!0);x.string=new x(3,"string",!0);x.array=new x(4,"array",!1);x.map=new x(5,"map",!1);x.tag=new x(6,"tag",!1);x.float=new x(7,"float",!0);x.false=new x(7,"false",!0);x.true=new x(7,"true",!0);x.null=new x(7,"null",!0);x.undefined=new x(7,"undefined",!0);x.break=new x(7,"break",!0);var U=class{constructor(e,t,n){this.type=e,this.value=t,this.encodedLength=n,this.encodedBytes=void 0,this.byteValue=void 0}toString(){return`Token[${this.type}].${this.value}`}};var fi=globalThis.process&&!globalThis.process.browser&&globalThis.Buffer&&typeof globalThis.Buffer.isBuffer=="function",wA=new TextDecoder,bA=new TextEncoder;function wu(r){return fi&&globalThis.Buffer.isBuffer(r)}function Da(r){return r instanceof Uint8Array?wu(r)?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r:Uint8Array.from(r)}var h5=fi?(r,e,t)=>t-e>64?globalThis.Buffer.from(r.subarray(e,t)).toString("utf8"):d5(r,e,t):(r,e,t)=>t-e>64?wA.decode(r.subarray(e,t)):d5(r,e,t),bu=fi?r=>r.length>64?globalThis.Buffer.from(r):u5(r):r=>r.length>64?bA.encode(r):u5(r),sn=r=>Uint8Array.from(r),hi=fi?(r,e,t)=>wu(r)?new Uint8Array(r.subarray(e,t)):r.slice(e,t):(r,e,t)=>r.slice(e,t),p5=fi?(r,e)=>(r=r.map(t=>t instanceof Uint8Array?t:globalThis.Buffer.from(t)),Da(globalThis.Buffer.concat(r,e))):(r,e)=>{let t=new Uint8Array(e),n=0;for(let o of r)n+o.length>t.length&&(o=o.subarray(0,t.length-n)),t.set(o,n),n+=o.length;return t},m5=fi?r=>globalThis.Buffer.allocUnsafe(r):r=>new Uint8Array(r);function g5(r,e){if(wu(r)&&wu(e))return r.compare(e);for(let t=0;t<r.length;t++)if(r[t]!==e[t])return r[t]<e[t]?-1:1;return 0}function u5(r){let e=[],t=0;for(let n=0;n<r.length;n++){let o=r.charCodeAt(n);o<128?e[t++]=o:o<2048?(e[t++]=o>>6|192,e[t++]=o&63|128):(o&64512)===55296&&n+1<r.length&&(r.charCodeAt(n+1)&64512)===56320?(o=65536+((o&1023)<<10)+(r.charCodeAt(++n)&1023),e[t++]=o>>18|240,e[t++]=o>>12&63|128,e[t++]=o>>6&63|128,e[t++]=o&63|128):(e[t++]=o>>12|224,e[t++]=o>>6&63|128,e[t++]=o&63|128)}return e}function d5(r,e,t){let n=[];for(;e<t;){let o=r[e],s=null,i=o>239?4:o>223?3:o>191?2:1;if(e+i<=t){let a,c,l,d;switch(i){case 1:o<128&&(s=o);break;case 2:a=r[e+1],(a&192)===128&&(d=(o&31)<<6|a&63,d>127&&(s=d));break;case 3:a=r[e+1],c=r[e+2],(a&192)===128&&(c&192)===128&&(d=(o&15)<<12|(a&63)<<6|c&63,d>2047&&(d<55296||d>57343)&&(s=d));break;case 4:a=r[e+1],c=r[e+2],l=r[e+3],(a&192)===128&&(c&192)===128&&(l&192)===128&&(d=(o&15)<<18|(a&63)<<12|(c&63)<<6|l&63,d>65535&&d<1114112&&(s=d))}}s===null?(s=65533,i=1):s>65535&&(s-=65536,n.push(s>>>10&1023|55296),s=56320|s&1023),n.push(s),e+=i}return A0(n)}var f5=4096;function A0(r){let e=r.length;if(e<=f5)return String.fromCharCode.apply(String,r);let t="",n=0;for(;n<e;)t+=String.fromCharCode.apply(String,r.slice(n,n+=f5));return t}var EA=256,Ta=class{constructor(e=EA){this.chunkSize=e,this.cursor=0,this.maxCursor=-1,this.chunks=[],this._initReuseChunk=null}reset(){this.cursor=0,this.maxCursor=-1,this.chunks.length&&(this.chunks=[]),this._initReuseChunk!==null&&(this.chunks.push(this._initReuseChunk),this.maxCursor=this._initReuseChunk.length-1)}push(e){let t=this.chunks[this.chunks.length-1];if(this.cursor+e.length<=this.maxCursor+1){let o=t.length-(this.maxCursor-this.cursor)-1;t.set(e,o)}else{if(t){let o=t.length-(this.maxCursor-this.cursor)-1;o<t.length&&(this.chunks[this.chunks.length-1]=t.subarray(0,o),this.maxCursor=this.cursor-1)}e.length<64&&e.length<this.chunkSize?(t=m5(this.chunkSize),this.chunks.push(t),this.maxCursor+=t.length,this._initReuseChunk===null&&(this._initReuseChunk=t),t.set(e,0)):(this.chunks.push(e),this.maxCursor+=e.length)}this.cursor+=e.length}toBytes(e=!1){let t;if(this.chunks.length===1){let n=this.chunks[0];e&&this.cursor>n.length/2?(t=this.cursor===n.length?n:n.subarray(0,this.cursor),this._initReuseChunk=null,this.chunks=[]):t=hi(n,0,this.cursor)}else t=p5(this.chunks,this.cursor);return e&&this.reset(),t}};var X="CBOR decode error:",pi="CBOR encode error:",ka=[];ka[23]=1;ka[24]=2;ka[25]=3;ka[26]=5;ka[27]=9;function Mn(r,e,t){if(r.length-e<t)throw new Error(`${X} not enough data for type`)}var ft=[24,256,65536,4294967296,BigInt("18446744073709551616")];function jt(r,e,t){Mn(r,e,1);let n=r[e];if(t.strict===!0&&n<ft[0])throw new Error(`${X} integer encoded in more bytes than necessary (strict decode)`);return n}function Zt(r,e,t){Mn(r,e,2);let n=r[e]<<8|r[e+1];if(t.strict===!0&&n<ft[1])throw new Error(`${X} integer encoded in more bytes than necessary (strict decode)`);return n}function Jt(r,e,t){Mn(r,e,4);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3];if(t.strict===!0&&n<ft[2])throw new Error(`${X} integer encoded in more bytes than necessary (strict decode)`);return n}function er(r,e,t){Mn(r,e,8);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3],o=r[e+4]*16777216+(r[e+5]<<16)+(r[e+6]<<8)+r[e+7],s=(BigInt(n)<<BigInt(32))+BigInt(o);if(t.strict===!0&&s<ft[3])throw new Error(`${X} integer encoded in more bytes than necessary (strict decode)`);if(s<=Number.MAX_SAFE_INTEGER)return Number(s);if(t.allowBigInt===!0)return s;throw new Error(`${X} integers outside of the safe integer range are not supported`)}function y5(r,e,t,n){return new U(x.uint,jt(r,e+1,n),2)}function w5(r,e,t,n){return new U(x.uint,Zt(r,e+1,n),3)}function b5(r,e,t,n){return new U(x.uint,Jt(r,e+1,n),5)}function E5(r,e,t,n){return new U(x.uint,er(r,e+1,n),9)}function gr(r,e){return yt(r,0,e.value)}function yt(r,e,t){if(t<ft[0]){let n=Number(t);r.push([e|n])}else if(t<ft[1]){let n=Number(t);r.push([e|24,n])}else if(t<ft[2]){let n=Number(t);r.push([e|25,n>>>8,n&255])}else if(t<ft[3]){let n=Number(t);r.push([e|26,n>>>24&255,n>>>16&255,n>>>8&255,n&255])}else{let n=BigInt(t);if(n<ft[4]){let o=[e|27,0,0,0,0,0,0,0],s=Number(n&BigInt(4294967295)),i=Number(n>>BigInt(32)&BigInt(4294967295));o[8]=s&255,s=s>>8,o[7]=s&255,s=s>>8,o[6]=s&255,s=s>>8,o[5]=s&255,o[4]=i&255,i=i>>8,o[3]=i&255,i=i>>8,o[2]=i&255,i=i>>8,o[1]=i&255,r.push(o)}else throw new Error(`${X} encountered BigInt larger than allowable range`)}}gr.encodedSize=function(e){return yt.encodedSize(e.value)};yt.encodedSize=function(e){return e<ft[0]?1:e<ft[1]?2:e<ft[2]?3:e<ft[3]?5:9};gr.compareTokens=function(e,t){return e.value<t.value?-1:e.value>t.value?1:0};function x5(r,e,t,n){return new U(x.negint,-1-jt(r,e+1,n),2)}function v5(r,e,t,n){return new U(x.negint,-1-Zt(r,e+1,n),3)}function _5(r,e,t,n){return new U(x.negint,-1-Jt(r,e+1,n),5)}var I0=BigInt(-1),S5=BigInt(1);function R5(r,e,t,n){let o=er(r,e+1,n);if(typeof o!="bigint"){let s=-1-o;if(s>=Number.MIN_SAFE_INTEGER)return new U(x.negint,s,9)}if(n.allowBigInt!==!0)throw new Error(`${X} integers outside of the safe integer range are not supported`);return new U(x.negint,I0-BigInt(o),9)}function Eu(r,e){let t=e.value,n=typeof t=="bigint"?t*I0-S5:t*-1-1;yt(r,e.type.majorEncoded,n)}Eu.encodedSize=function(e){let t=e.value,n=typeof t=="bigint"?t*I0-S5:t*-1-1;return n<ft[0]?1:n<ft[1]?2:n<ft[2]?3:n<ft[3]?5:9};Eu.compareTokens=function(e,t){return e.value<t.value?1:e.value>t.value?-1:0};function Ca(r,e,t,n){Mn(r,e,t+n);let o=hi(r,e+t,e+t+n);return new U(x.bytes,o,t+n)}function A5(r,e,t,n){return Ca(r,e,1,t)}function I5(r,e,t,n){return Ca(r,e,2,jt(r,e+1,n))}function D5(r,e,t,n){return Ca(r,e,3,Zt(r,e+1,n))}function T5(r,e,t,n){return Ca(r,e,5,Jt(r,e+1,n))}function k5(r,e,t,n){let o=er(r,e+1,n);if(typeof o=="bigint")throw new Error(`${X} 64-bit integer bytes lengths not supported`);return Ca(r,e,9,o)}function xu(r){return r.encodedBytes===void 0&&(r.encodedBytes=r.type===x.string?bu(r.value):r.value),r.encodedBytes}function mi(r,e){let t=xu(e);yt(r,e.type.majorEncoded,t.length),r.push(t)}mi.encodedSize=function(e){let t=xu(e);return yt.encodedSize(t.length)+t.length};mi.compareTokens=function(e,t){return vA(xu(e),xu(t))};function vA(r,e){return r.length<e.length?-1:r.length>e.length?1:g5(r,e)}function Na(r,e,t,n,o){let s=t+n;Mn(r,e,s);let i=new U(x.string,h5(r,e+t,e+s),s);return o.retainStringBytes===!0&&(i.byteValue=hi(r,e+t,e+s)),i}function C5(r,e,t,n){return Na(r,e,1,t,n)}function N5(r,e,t,n){return Na(r,e,2,jt(r,e+1,n),n)}function O5(r,e,t,n){return Na(r,e,3,Zt(r,e+1,n),n)}function P5(r,e,t,n){return Na(r,e,5,Jt(r,e+1,n),n)}function L5(r,e,t,n){let o=er(r,e+1,n);if(typeof o=="bigint")throw new Error(`${X} 64-bit integer string lengths not supported`);return Na(r,e,9,o,n)}var B5=mi;function gi(r,e,t,n){return new U(x.array,n,t)}function M5(r,e,t,n){return gi(r,e,1,t)}function U5(r,e,t,n){return gi(r,e,2,jt(r,e+1,n))}function F5(r,e,t,n){return gi(r,e,3,Zt(r,e+1,n))}function V5(r,e,t,n){return gi(r,e,5,Jt(r,e+1,n))}function K5(r,e,t,n){let o=er(r,e+1,n);if(typeof o=="bigint")throw new Error(`${X} 64-bit integer array lengths not supported`);return gi(r,e,9,o)}function $5(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${X} indefinite length items not allowed`);return gi(r,e,1,1/0)}function vu(r,e){yt(r,x.array.majorEncoded,e.value)}vu.compareTokens=gr.compareTokens;vu.encodedSize=function(e){return yt.encodedSize(e.value)};function yi(r,e,t,n){return new U(x.map,n,t)}function H5(r,e,t,n){return yi(r,e,1,t)}function q5(r,e,t,n){return yi(r,e,2,jt(r,e+1,n))}function W5(r,e,t,n){return yi(r,e,3,Zt(r,e+1,n))}function z5(r,e,t,n){return yi(r,e,5,Jt(r,e+1,n))}function G5(r,e,t,n){let o=er(r,e+1,n);if(typeof o=="bigint")throw new Error(`${X} 64-bit integer map lengths not supported`);return yi(r,e,9,o)}function Y5(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${X} indefinite length items not allowed`);return yi(r,e,1,1/0)}function _u(r,e){yt(r,x.map.majorEncoded,e.value)}_u.compareTokens=gr.compareTokens;_u.encodedSize=function(e){return yt.encodedSize(e.value)};function X5(r,e,t,n){return new U(x.tag,t,1)}function Q5(r,e,t,n){return new U(x.tag,jt(r,e+1,n),2)}function j5(r,e,t,n){return new U(x.tag,Zt(r,e+1,n),3)}function Z5(r,e,t,n){return new U(x.tag,Jt(r,e+1,n),5)}function J5(r,e,t,n){return new U(x.tag,er(r,e+1,n),9)}function Su(r,e){yt(r,x.tag.majorEncoded,e.value)}Su.compareTokens=gr.compareTokens;Su.encodedSize=function(e){return yt.encodedSize(e.value)};var DA=20,TA=21,kA=22,CA=23;function e7(r,e,t,n){if(n.allowUndefined===!1)throw new Error(`${X} undefined values are not supported`);return n.coerceUndefinedToNull===!0?new U(x.null,null,1):new U(x.undefined,void 0,1)}function t7(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${X} indefinite length items not allowed`);return new U(x.break,void 0,1)}function D0(r,e,t){if(t){if(t.allowNaN===!1&&Number.isNaN(r))throw new Error(`${X} NaN values are not supported`);if(t.allowInfinity===!1&&(r===1/0||r===-1/0))throw new Error(`${X} Infinity values are not supported`)}return new U(x.float,r,e)}function r7(r,e,t,n){return D0(T0(r,e+1),3,n)}function n7(r,e,t,n){return D0(k0(r,e+1),5,n)}function o7(r,e,t,n){return D0(c7(r,e+1),9,n)}function Ru(r,e,t){let n=e.value;if(n===!1)r.push([x.float.majorEncoded|DA]);else if(n===!0)r.push([x.float.majorEncoded|TA]);else if(n===null)r.push([x.float.majorEncoded|kA]);else if(n===void 0)r.push([x.float.majorEncoded|CA]);else{let o,s=!1;(!t||t.float64!==!0)&&(i7(n),o=T0(Hr,1),n===o||Number.isNaN(n)?(Hr[0]=249,r.push(Hr.slice(0,3)),s=!0):(a7(n),o=k0(Hr,1),n===o&&(Hr[0]=250,r.push(Hr.slice(0,5)),s=!0))),s||(NA(n),o=c7(Hr,1),Hr[0]=251,r.push(Hr.slice(0,9)))}}Ru.encodedSize=function(e,t){let n=e.value;if(n===!1||n===!0||n===null||n===void 0)return 1;if(!t||t.float64!==!0){i7(n);let o=T0(Hr,1);if(n===o||Number.isNaN(n))return 3;if(a7(n),o=k0(Hr,1),n===o)return 5}return 9};var s7=new ArrayBuffer(9),yr=new DataView(s7,1),Hr=new Uint8Array(s7,0);function i7(r){if(r===1/0)yr.setUint16(0,31744,!1);else if(r===-1/0)yr.setUint16(0,64512,!1);else if(Number.isNaN(r))yr.setUint16(0,32256,!1);else{yr.setFloat32(0,r);let e=yr.getUint32(0),t=(e&2139095040)>>23,n=e&8388607;if(t===255)yr.setUint16(0,31744,!1);else if(t===0)yr.setUint16(0,(r&2147483648)>>16|n>>13,!1);else{let o=t-127;o<-24?yr.setUint16(0,0):o<-14?yr.setUint16(0,(e&2147483648)>>16|1<<24+o,!1):yr.setUint16(0,(e&2147483648)>>16|o+15<<10|n>>13,!1)}}}function T0(r,e){if(r.length-e<2)throw new Error(`${X} not enough data for float16`);let t=(r[e]<<8)+r[e+1];if(t===31744)return 1/0;if(t===64512)return-1/0;if(t===32256)return NaN;let n=t>>10&31,o=t&1023,s;return n===0?s=o*2**-24:n!==31?s=(o+1024)*2**(n-25):s=o===0?1/0:NaN,t&32768?-s:s}function a7(r){yr.setFloat32(0,r,!1)}function k0(r,e){if(r.length-e<4)throw new Error(`${X} not enough data for float32`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,4).getFloat32(0,!1)}function NA(r){yr.setFloat64(0,r,!1)}function c7(r,e){if(r.length-e<8)throw new Error(`${X} not enough data for float64`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,8).getFloat64(0,!1)}Ru.compareTokens=gr.compareTokens;function Se(r,e,t){throw new Error(`${X} encountered invalid minor (${t}) for major ${r[e]>>>5}`)}function Au(r){return()=>{throw new Error(`${X} ${r}`)}}var K=[];for(let r=0;r<=23;r++)K[r]=Se;K[24]=y5;K[25]=w5;K[26]=b5;K[27]=E5;K[28]=Se;K[29]=Se;K[30]=Se;K[31]=Se;for(let r=32;r<=55;r++)K[r]=Se;K[56]=x5;K[57]=v5;K[58]=_5;K[59]=R5;K[60]=Se;K[61]=Se;K[62]=Se;K[63]=Se;for(let r=64;r<=87;r++)K[r]=A5;K[88]=I5;K[89]=D5;K[90]=T5;K[91]=k5;K[92]=Se;K[93]=Se;K[94]=Se;K[95]=Au("indefinite length bytes/strings are not supported");for(let r=96;r<=119;r++)K[r]=C5;K[120]=N5;K[121]=O5;K[122]=P5;K[123]=L5;K[124]=Se;K[125]=Se;K[126]=Se;K[127]=Au("indefinite length bytes/strings are not supported");for(let r=128;r<=151;r++)K[r]=M5;K[152]=U5;K[153]=F5;K[154]=V5;K[155]=K5;K[156]=Se;K[157]=Se;K[158]=Se;K[159]=$5;for(let r=160;r<=183;r++)K[r]=H5;K[184]=q5;K[185]=W5;K[186]=z5;K[187]=G5;K[188]=Se;K[189]=Se;K[190]=Se;K[191]=Y5;for(let r=192;r<=215;r++)K[r]=X5;K[216]=Q5;K[217]=j5;K[218]=Z5;K[219]=J5;K[220]=Se;K[221]=Se;K[222]=Se;K[223]=Se;for(let r=224;r<=243;r++)K[r]=Au("simple values are not supported");K[244]=Se;K[245]=Se;K[246]=Se;K[247]=e7;K[248]=Au("simple values are not supported");K[249]=r7;K[250]=n7;K[251]=o7;K[252]=Se;K[253]=Se;K[254]=Se;K[255]=t7;var qr=[];for(let r=0;r<24;r++)qr[r]=new U(x.uint,r,1);for(let r=-1;r>=-24;r--)qr[31-r]=new U(x.negint,r,1);qr[64]=new U(x.bytes,new Uint8Array(0),1);qr[96]=new U(x.string,"",1);qr[128]=new U(x.array,0,1);qr[160]=new U(x.map,0,1);qr[244]=new U(x.false,!1,1);qr[245]=new U(x.true,!0,1);qr[246]=new U(x.null,null,1);function l7(r){switch(r.type){case x.false:return sn([244]);case x.true:return sn([245]);case x.null:return sn([246]);case x.bytes:return r.value.length?void 0:sn([64]);case x.string:return r.value===""?sn([96]):void 0;case x.array:return r.value===0?sn([128]):void 0;case x.map:return r.value===0?sn([160]):void 0;case x.uint:return r.value<24?sn([Number(r.value)]):void 0;case x.negint:if(r.value>=-24)return sn([31-Number(r.value)])}}var PA={float64:!1,mapSorter:MA,quickEncodeToken:l7};function LA(){let r=[];return r[x.uint.major]=gr,r[x.negint.major]=Eu,r[x.bytes.major]=mi,r[x.string.major]=B5,r[x.array.major]=vu,r[x.map.major]=_u,r[x.tag.major]=Su,r[x.float.major]=Ru,r}var u7=LA(),C0=new Ta,Du=class r{constructor(e,t){this.obj=e,this.parent=t}includes(e){let t=this;do if(t.obj===e)return!0;while(t=t.parent);return!1}static createCheck(e,t){if(e&&e.includes(t))throw new Error(`${pi} object contains circular references`);return new r(t,e)}},vo={null:new U(x.null,null),undefined:new U(x.undefined,void 0),true:new U(x.true,!0),false:new U(x.false,!1),emptyArray:new U(x.array,0),emptyMap:new U(x.map,0)},_o={number(r,e,t,n){return!Number.isInteger(r)||!Number.isSafeInteger(r)?new U(x.float,r):r>=0?new U(x.uint,r):new U(x.negint,r)},bigint(r,e,t,n){return r>=BigInt(0)?new U(x.uint,r):new U(x.negint,r)},Uint8Array(r,e,t,n){return new U(x.bytes,r)},string(r,e,t,n){return new U(x.string,r)},boolean(r,e,t,n){return r?vo.true:vo.false},null(r,e,t,n){return vo.null},undefined(r,e,t,n){return vo.undefined},ArrayBuffer(r,e,t,n){return new U(x.bytes,new Uint8Array(r))},DataView(r,e,t,n){return new U(x.bytes,new Uint8Array(r.buffer,r.byteOffset,r.byteLength))},Array(r,e,t,n){if(!r.length)return t.addBreakTokens===!0?[vo.emptyArray,new U(x.break)]:vo.emptyArray;n=Du.createCheck(n,r);let o=[],s=0;for(let i of r)o[s++]=Iu(i,t,n);return t.addBreakTokens?[new U(x.array,r.length),o,new U(x.break)]:[new U(x.array,r.length),o]},Object(r,e,t,n){let o=e!=="Object",s=o?r.keys():Object.keys(r),i=o?r.size:s.length;if(!i)return t.addBreakTokens===!0?[vo.emptyMap,new U(x.break)]:vo.emptyMap;n=Du.createCheck(n,r);let a=[],c=0;for(let l of s)a[c++]=[Iu(l,t,n),Iu(o?r.get(l):r[l],t,n)];return BA(a,t),t.addBreakTokens?[new U(x.map,i),a,new U(x.break)]:[new U(x.map,i),a]}};_o.Map=_o.Object;_o.Buffer=_o.Uint8Array;for(let r of"Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64".split(" "))_o[`${r}Array`]=_o.DataView;function Iu(r,e={},t){let n=l5(r),o=e&&e.typeEncoders&&e.typeEncoders[n]||_o[n];if(typeof o=="function"){let i=o(r,n,e,t);if(i!=null)return i}let s=_o[n];if(!s)throw new Error(`${pi} unsupported type: ${n}`);return s(r,n,e,t)}function BA(r,e){e.mapSorter&&r.sort(e.mapSorter)}function MA(r,e){let t=Array.isArray(r[0])?r[0][0]:r[0],n=Array.isArray(e[0])?e[0][0]:e[0];if(t.type!==n.type)return t.type.compare(n.type);let o=t.type.major,s=u7[o].compareTokens(t,n);return s===0&&console.warn("WARNING: complex key types used, CBOR key sorting guarantees are gone"),s}function d7(r,e,t,n){if(Array.isArray(e))for(let o of e)d7(r,o,t,n);else t[e.type.major](r,e,n)}function f7(r,e,t){let n=Iu(r,t);if(!Array.isArray(n)&&t.quickEncodeToken){let o=t.quickEncodeToken(n);if(o)return o;let s=e[n.type.major];if(s.encodedSize){let i=s.encodedSize(n,t),a=new Ta(i);if(s(a,n,t),a.chunks.length!==1)throw new Error(`Unexpected error: pre-calculated length for ${n} was wrong`);return Da(a.chunks[0])}}return C0.reset(),d7(C0,n,e,t),C0.toBytes(!0)}function wi(r,e){return e=Object.assign({},PA,e),f7(r,u7,e)}var UA={strict:!1,allowIndefinite:!0,allowUndefined:!0,allowBigInt:!0},N0=class{constructor(e,t={}){this._pos=0,this.data=e,this.options=t}pos(){return this._pos}done(){return this._pos>=this.data.length}next(){let e=this.data[this._pos],t=qr[e];if(t===void 0){let n=K[e];if(!n)throw new Error(`${X} no decoder for major type ${e>>>5} (byte 0x${e.toString(16).padStart(2,"0")})`);let o=e&31;t=n(this.data,this._pos,o,this.options)}return this._pos+=t.encodedLength,t}},Oa=Symbol.for("DONE"),Tu=Symbol.for("BREAK");function FA(r,e,t){let n=[];for(let o=0;o<r.value;o++){let s=Pa(e,t);if(s===Tu){if(r.value===1/0)break;throw new Error(`${X} got unexpected break to lengthed array`)}if(s===Oa)throw new Error(`${X} found array but not enough entries (got ${o}, expected ${r.value})`);n[o]=s}return n}function VA(r,e,t){let n=t.useMaps===!0,o=n?void 0:{},s=n?new Map:void 0;for(let i=0;i<r.value;i++){let a=Pa(e,t);if(a===Tu){if(r.value===1/0)break;throw new Error(`${X} got unexpected break to lengthed map`)}if(a===Oa)throw new Error(`${X} found map but not enough entries (got ${i} [no key], expected ${r.value})`);if(n!==!0&&typeof a!="string")throw new Error(`${X} non-string keys not supported (got ${typeof a})`);if(t.rejectDuplicateMapKeys===!0&&(n&&s.has(a)||!n&&a in o))throw new Error(`${X} found repeat map key "${a}"`);let c=Pa(e,t);if(c===Oa)throw new Error(`${X} found map but not enough entries (got ${i} [no value], expected ${r.value})`);n?s.set(a,c):o[a]=c}return n?s:o}function Pa(r,e){if(r.done())return Oa;let t=r.next();if(t.type===x.break)return Tu;if(t.type.terminal)return t.value;if(t.type===x.array)return FA(t,r,e);if(t.type===x.map)return VA(t,r,e);if(t.type===x.tag){if(e.tags&&typeof e.tags[t.value]=="function"){let n=Pa(r,e);return e.tags[t.value](n)}throw new Error(`${X} tag not supported (${t.value})`)}throw new Error("unsupported")}function O0(r,e){if(!(r instanceof Uint8Array))throw new Error(`${X} data to decode must be a Uint8Array`);e=Object.assign({},UA,e);let t=e.tokenizer||new N0(r,e),n=Pa(t,e);if(n===Oa)throw new Error(`${X} did not find any content to decode`);if(n===Tu)throw new Error(`${X} got unexpected break`);return[n,r.subarray(t.pos())]}function wr(r,e){let[t,n]=O0(r,e);if(n.length>0)throw new Error(`${X} too many terminals, data makes no sense`);return t}var tr=ke(Zo(),1);var h7=Nt("ipns:utils"),p7=L("/ipns/"),KA=114,m7=async(r,e)=>{if(e==null||r==null){let n=new Error("one or more of the provided parameters are not defined");throw h7.error(n),(0,tr.default)(n,R0)}let t;if(e.pubKey!=null){try{t=$r(e.pubKey)}catch(o){throw h7.error(o),o}if(!(await ut(e.pubKey)).equals(r))throw(0,tr.default)(new Error("Embedded public key did not match PeerID"),i5)}else r.publicKey!=null&&(t=$r(r.publicKey));if(t!=null)return t;throw(0,tr.default)(new Error("no public key is available"),R0)};var g7=r=>{let e=L("ipns-signature:");return _e([e,r])},La=r=>"signatureV1"in r?$t.encode({value:L(r.value),signatureV1:r.signatureV1,validityType:r.validityType,validity:L(r.validity),sequence:r.sequence,ttl:r.ttl,pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data}):$t.encode({pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data});function an(r){let e=$t.decode(r);if(e.sequence!=null&&(e.sequence=BigInt(e.sequence)),e.ttl!=null&&(e.ttl=BigInt(e.ttl)),e.signatureV2==null||e.data==null)throw(0,tr.default)(new Error("missing data or signatureV2"),Bn);let t=w7(e.data),n=$A(t.Value),o=B(t.Validity);if(e.value!=null&&e.signatureV1!=null)return HA(e),{value:n,validityType:$t.ValidityType.EOL,validity:o,sequence:t.Sequence,ttl:t.TTL,pubKey:e.pubKey,signatureV1:e.signatureV1,signatureV2:e.signatureV2,data:e.data};if(e.signatureV2!=null)return{value:n,validityType:$t.ValidityType.EOL,validity:o,sequence:t.Sequence,ttl:t.TTL,pubKey:e.pubKey,signatureV2:e.signatureV2,data:e.data};throw new Error("invalid record: does not include signatureV1 or signatureV2")}var P0=r=>_e([p7,r.toBytes()]),y7=r=>Ye(r.slice(p7.length));var w7=r=>{let e=wr(r);if(e.ValidityType===0)e.ValidityType=$t.ValidityType.EOL;else throw(0,tr.default)(new Error("Unknown validity type"),yu);return Number.isInteger(e.Sequence)&&(e.Sequence=BigInt(e.Sequence)),Number.isInteger(e.TTL)&&(e.TTL=BigInt(e.TTL)),e},$A=r=>{if(r!=null){if(Ks(r))return`/ipns/${r.toCID().toString(ro)}`;if(r instanceof Uint8Array){let n=B(r);n.startsWith("/")&&(r=n)}let e=r.toString().trim();if(e.startsWith("/")&&e.length>1)return e;let t=oe.asCID(r);if(t!=null)return t.code===KA?`/ipns/${t.toString(ro)}`:`/ipfs/${t.toV1().toString()}`;try{return r instanceof Uint8Array?`/ipfs/${oe.decode(r).toV1().toString()}`:`/ipfs/${oe.parse(e).toV1().toString()}`}catch{}}throw(0,tr.default)(new Error("Value must be a valid content path starting with /"),s5)},HA=r=>{if(r.data==null)throw(0,tr.default)(new Error("Record data is missing"),o5);let e=w7(r.data);if(!j(e.Value,r.value??new Uint8Array(0)))throw(0,tr.default)(new Error('Field "value" did not match between protobuf and CBOR'),Bn);if(!j(e.Validity,r.validity??new Uint8Array(0)))throw(0,tr.default)(new Error('Field "validity" did not match between protobuf and CBOR'),Bn);if(e.ValidityType!==r.validityType)throw(0,tr.default)(new Error('Field "validityType" did not match between protobuf and CBOR'),Bn);if(e.Sequence!==r.sequence)throw(0,tr.default)(new Error('Field "sequence" did not match between protobuf and CBOR'),Bn);if(e.TTL!==r.ttl)throw(0,tr.default)(new Error('Field "ttl" did not match between protobuf and CBOR'),Bn)};var CH=Nt("ipns"),NH=lr.code,zA="/ipns/",OH=zA.length;var Ba=ke(Zo(),1),b7=ke(gu(),1);var Cu=Nt("ipns:validator"),GA=1024*10,YA=async(r,e)=>{let t=an(e),n;try{let o=g7(t.data);n=await r.verify(o,t.signatureV2)}catch{n=!1}if(!n)throw Cu.error("record signature verification failed"),(0,Ba.default)(new Error("record signature verification failed"),Bn);if(t.validityType===$t.ValidityType.EOL){if(b7.default.fromString(t.validity).toDate().getTime()<Date.now())throw Cu.error("record has expired"),(0,Ba.default)(new Error("record has expired"),n5)}else if(t.validityType!=null)throw Cu.error("unrecognized validity type"),(0,Ba.default)(new Error("unrecognized validity type"),yu);Cu("ipns record for %s is valid",t.value)};async function Nu(r,e){if(e.byteLength>GA)throw(0,Ba.default)(new Error("record too large"),a5);let t=y7(r),n=an(e),o=await m7(t,n);await YA(o,e)}async function*Ma(r){let e=/\r?\n/,t=new TextDecoder("utf8"),n="";for await(let o of r){typeof o=="string"&&(o=new TextEncoder().encode(o)),n+=t.decode(o,{stream:!0});let s=n.split(e);n=s.pop()??"";for(let i=0;i<s.length;i++)yield JSON.parse(s[i])}n+=t.decode(),n!==""&&(yield JSON.parse(n))}var B0=ke(x7(),1);var So=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},M0=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},v7=r=>globalThis.DOMException===void 0?new M0(r):new DOMException(r),_7=r=>{let e=r.reason===void 0?v7("This operation was aborted."):r.reason;return e instanceof Error?e:v7(e)};function Wr(r,e){let{milliseconds:t,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout}}=e,i,c=new Promise((l,d)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){let{signal:f}=e;f.aborted&&d(_7(f)),f.addEventListener("abort",()=>{d(_7(f))})}if(t===Number.POSITIVE_INFINITY){r.then(l,d);return}let u=new So;i=s.setTimeout.call(void 0,()=>{if(n){try{l(n())}catch(f){d(f)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?l():o instanceof Error?d(o):(u.message=o??`Promise timed out after ${t} milliseconds`,d(u))},t),(async()=>{try{l(await r)}catch(f){d(f)}})()}).finally(()=>{c.clear()});return c.clear=()=>{s.clearTimeout.call(void 0,i),i=void 0},c}function U0(r,e,t){let n=0,o=r.length;for(;o>0;){let s=Math.trunc(o/2),i=n+s;t(r[i],e)<=0?(n=++i,o-=s+1):o=s}return n}var Fa=class{#e=[];enqueue(e,t){t={priority:0,...t};let n={priority:t.priority,run:e};if(this.size&&this.#e[this.size-1].priority>=t.priority){this.#e.push(n);return}let o=U0(this.#e,n,(s,i)=>i.priority-s.priority);this.#e.splice(o,0,n)}dequeue(){return this.#e.shift()?.run}filter(e){return this.#e.filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return this.#e.length}};var br=class extends B0.default{#e;#t;#r=0;#i;#c;#p=0;#o;#l;#n;#m;#s=0;#u;#a;#g;timeout;constructor(e){if(super(),e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:Fa,...e},!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap?.toString()??""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval?.toString()??""}\` (${typeof e.interval})`);this.#e=e.carryoverConcurrencyCount,this.#t=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#i=e.intervalCap,this.#c=e.interval,this.#n=new e.queueClass,this.#m=e.queueClass,this.concurrency=e.concurrency,this.timeout=e.timeout,this.#g=e.throwOnTimeout===!0,this.#a=e.autoStart===!1}get#b(){return this.#t||this.#r<this.#i}get#E(){return this.#s<this.#u}#x(){this.#s--,this.#d(),this.emit("next")}#v(){this.#w(),this.#y(),this.#l=void 0}get#_(){let e=Date.now();if(this.#o===void 0){let t=this.#p-e;if(t<0)this.#r=this.#e?this.#s:0;else return this.#l===void 0&&(this.#l=setTimeout(()=>{this.#v()},t)),!0}return!1}#d(){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.#a){let e=!this.#_;if(this.#b&&this.#E){let t=this.#n.dequeue();return t?(this.emit("active"),t(),e&&this.#y(),!0):!1}}return!1}#y(){this.#t||this.#o!==void 0||(this.#o=setInterval(()=>{this.#w()},this.#c),this.#p=Date.now()+this.#c)}#w(){this.#r===0&&this.#s===0&&this.#o&&(clearInterval(this.#o),this.#o=void 0),this.#r=this.#e?this.#s:0,this.#f()}#f(){for(;this.#d(););}get concurrency(){return this.#u}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this.#u=e,this.#f()}async#S(e){return new Promise((t,n)=>{e.addEventListener("abort",()=>{n(e.reason)},{once:!0})})}async add(e,t={}){return t={timeout:this.timeout,throwOnTimeout:this.#g,...t},new Promise((n,o)=>{this.#n.enqueue(async()=>{this.#s++,this.#r++;try{t.signal?.throwIfAborted();let s=e({signal:t.signal});t.timeout&&(s=Wr(Promise.resolve(s),{milliseconds:t.timeout})),t.signal&&(s=Promise.race([s,this.#S(t.signal)]));let i=await s;n(i),this.emit("completed",i)}catch(s){if(s instanceof So&&!t.throwOnTimeout){n();return}o(s),this.emit("error",s)}finally{this.#x()}},t),this.emit("add"),this.#d()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#a?(this.#a=!1,this.#f(),this):this}pause(){this.#a=!0}clear(){this.#n=new this.#m}async onEmpty(){this.#n.size!==0&&await this.#h("empty")}async onSizeLessThan(e){this.#n.size<e||await this.#h("next",()=>this.#n.size<e)}async onIdle(){this.#s===0&&this.#n.size===0||await this.#h("idle")}async#h(e,t){return new Promise(n=>{let o=()=>{t&&!t()||(this.off(e,o),n())};this.on(e,o)})}get size(){return this.#n.size}sizeBy(e){return this.#n.filter(e).length}get pending(){return this.#s}get isPaused(){return this.#a}};function jA(r){return r[Symbol.asyncIterator]!=null}function ZA(r){if(jA(r))return(async()=>{for await(let e of r)return e})();for(let e of r)return e}var gs=ZA;var F0=L("/ipns/");function S7(r){return j(r.subarray(0,F0.byteLength),F0)}var R7=r=>Ye(r.slice(F0.length)),Pu=class{client;constructor(e){this.client=e}async*findProviders(e,t={}){yield*Cr(this.client.getProviders(e,t),n=>({id:n.ID,multiaddrs:n.Addrs??[]}))}async provide(){}async put(e,t,n){if(!S7(e))return;let o=R7(e),s=an(t);await this.client.putIPNS(o,s,n)}async get(e,t){if(!S7(e))throw new g("Not found","ERR_NOT_FOUND");let n=R7(e);try{let o=await this.client.getIPNS(n,t);return La(o)}catch(o){throw o.code==="ERR_BAD_RESPONSE"?new g("Not found","ERR_NOT_FOUND"):o}}},Lu=class{client;constructor(e){this.client=e}async findPeer(e,t={}){let n=await gs(this.client.getPeers(e,t));if(n!=null)return{id:n.ID,multiaddrs:n.Addrs??[]};throw new g("Not found","ERR_NOT_FOUND")}async*getClosestPeers(e,t={}){}};var Ht=Nt("delegated-routing-v1-http-api-client"),A7={concurrentRequests:4,timeout:3e4},Bu=class{started;httpQueue;shutDownController;clientUrl;timeout;contentRouting;peerRouting;constructor(e,t={}){this.started=!1,this.shutDownController=new AbortController,ve(1/0,this.shutDownController.signal),this.httpQueue=new br({concurrency:t.concurrentRequests??A7.concurrentRequests}),this.clientUrl=e instanceof URL?e:new URL(e),this.timeout=t.timeout??A7.timeout,this.contentRouting=new Pu(this),this.peerRouting=new Lu(this)}get[Zr](){return this.contentRouting}get[Jr](){return this.peerRouting}isStarted(){return this.started}start(){this.started=!0}stop(){this.httpQueue.clear(),this.shutDownController.abort(),this.started=!1}async*getProviders(e,t={}){Ht("getProviders starts: %c",e);let n=lt([this.shutDownController.signal,t.signal,AbortSignal.timeout(this.timeout)]),o=se(),s=se();this.httpQueue.add(async()=>(o.resolve(),s.promise));try{await o.promise;let i=`${this.clientUrl}routing/v1/providers/${e.toString()}`,c=await fetch(i,{headers:{Accept:"application/x-ndjson"},signal:n});if(c.status===404)throw new g("No matching records found.","ERR_NOT_FOUND");if(c.status===422)throw new g("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(c.body==null)throw new g("Routing response had no body","ERR_BAD_RESPONSE");if(c.headers.get("Content-Type")==="application/json"){let d=await c.json();for(let u of d.Providers){let f=this.#e(u);f!=null&&(yield f)}}else for await(let d of Ma(dl(c.body))){let u=this.#e(d);u!=null&&(yield u)}}catch(i){Ht.error("getProviders errored:",i)}finally{n.clear(),s.resolve(),Ht("getProviders finished: %c",e)}}async*getPeers(e,t={}){Ht("getPeers starts: %c",e);let n=lt([this.shutDownController.signal,t.signal,AbortSignal.timeout(this.timeout)]),o=se(),s=se();this.httpQueue.add(async()=>(o.resolve(),s.promise));try{await o.promise;let i=`${this.clientUrl}routing/v1/peers/${e.toCID().toString()}`,c=await fetch(i,{headers:{Accept:"application/x-ndjson"},signal:n});if(c.status===404)throw new g("No matching records found.","ERR_NOT_FOUND");if(c.status===422)throw new g("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(c.body==null)throw new g("Routing response had no body","ERR_BAD_RESPONSE");if(c.headers.get("Content-Type")==="application/json"){let d=await c.json();for(let u of d.Peers){let f=this.#e(u);f!=null&&(yield f)}}else for await(let d of Ma(dl(c.body))){let u=this.#e(d);u!=null&&(yield u)}}catch(i){Ht.error("getPeers errored:",i)}finally{n.clear(),s.resolve(),Ht("getPeers finished: %c",e)}}async getIPNS(e,t={}){Ht("getIPNS starts: %c",e);let n=lt([this.shutDownController.signal,t.signal,AbortSignal.timeout(this.timeout)]),o=se(),s=se();this.httpQueue.add(async()=>(o.resolve(),s.promise));let i=`${this.clientUrl}routing/v1/ipns/${e.toCID().toString()}`;try{await o.promise;let c=await fetch(i,{headers:{Accept:"application/vnd.ipfs.ipns-record"},signal:n});if(Ht("getIPNS GET %s %d",i,c.status),c.status===404)throw new g("No matching records found.","ERR_NOT_FOUND");if(c.status===422)throw new g("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(c.body==null)throw new g("GET ipns response had no body","ERR_BAD_RESPONSE");let l=await c.arrayBuffer(),d=new Uint8Array(l,0,l.byteLength);return t.validate!==!1&&await Nu(P0(e),d),an(d)}catch(a){throw Ht.error("getIPNS GET %s error:",i,a),a}finally{n.clear(),s.resolve(),Ht("getIPNS finished: %c",e)}}async putIPNS(e,t,n={}){Ht("putIPNS starts: %c",e);let o=lt([this.shutDownController.signal,n.signal,AbortSignal.timeout(this.timeout)]),s=se(),i=se();this.httpQueue.add(async()=>(s.resolve(),i.promise));let a=`${this.clientUrl}routing/v1/ipns/${e.toCID().toString()}`;try{await s.promise;let c=La(t),d=await fetch(a,{method:"PUT",headers:{"Content-Type":"application/vnd.ipfs.ipns-record"},body:c,signal:o});if(Ht("putIPNS PUT %s %d",a,d.status),d.status!==200)throw new g("PUT ipns response had status other than 200","ERR_BAD_RESPONSE")}catch(c){throw Ht.error("putIPNS PUT %s error:",a,c.stack),c}finally{o.clear(),i.resolve(),Ht("putIPNS finished: %c",e)}}#e(e){let t=[],n=e.Addrs?.map(Q)??[];return e.Protocols!=null&&t.push(...e.Protocols),e.Protocol!=null&&(t.push(e.Protocol),delete e.Protocol),{...e,Schema:"peer",ID:ge(e.ID),Addrs:n,Protocols:t}}};function I7(r,e={}){return new Bu(new URL(r),e)}var V0=class{libp2p;constructor(e){this.libp2p=e}async provide(e,t){await this.libp2p.contentRouting.provide(e,t)}async*findProviders(e,t){yield*this.libp2p.contentRouting.findProviders(e,t)}async put(e,t,n){await this.libp2p.contentRouting.put(e,t,n)}async get(e,t){return this.libp2p.contentRouting.get(e,t)}async findPeer(e,t){return this.libp2p.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t){yield*this.libp2p.peerRouting.getClosestPeers(e,t)}};function K0(r){return new V0(r)}var ys={};me(ys,{abortedError:()=>nI,closeFailedError:()=>eI,deleteFailedError:()=>H0,getFailedError:()=>tI,hasFailedError:()=>rI,notFoundError:()=>Ro,openFailedError:()=>JA,putFailedError:()=>$0});var Un=ke(Zo(),1);function JA(r){return r=r??new Error("Open failed"),(0,Un.default)(r,"ERR_OPEN_FAILED")}function eI(r){return r=r??new Error("Close failed"),(0,Un.default)(r,"ERR_CLOSE_FAILED")}function $0(r){return r=r??new Error("Put failed"),(0,Un.default)(r,"ERR_PUT_FAILED")}function tI(r){return r=r??new Error("Get failed"),(0,Un.default)(r,"ERR_GET_FAILED")}function H0(r){return r=r??new Error("Delete failed"),(0,Un.default)(r,"ERR_DELETE_FAILED")}function rI(r){return r=r??new Error("Has failed"),(0,Un.default)(r,"ERR_HAS_FAILED")}function Ro(r){return r=r??new Error("Not Found"),(0,Un.default)(r,"ERR_NOT_FOUND")}function nI(r){return r=r??new Error("Aborted"),(0,Un.default)(r,"ERR_ABORTED")}var cn=class{has(e,t){return Promise.reject(new Error(".has is not implemented"))}put(e,t,n){return Promise.reject(new Error(".put is not implemented"))}async*putMany(e,t){for await(let{cid:n,block:o}of e)await this.put(n,o,t),yield n}get(e,t){return Promise.reject(new Error(".get is not implemented"))}async*getMany(e,t){for await(let n of e)yield{cid:n,block:await this.get(n,t)}}delete(e,t){return Promise.reject(new Error(".delete is not implemented"))}async*deleteMany(e,t){for await(let n of e)await this.delete(n,t),yield n}async*getAll(e){throw new Error(".getAll is not implemented")}};var Va=class extends cn{data;constructor(){super(),this.data=new Map}put(e,t){return this.data.set(it.encode(e.multihash.bytes),t),e}get(e){let t=this.data.get(it.encode(e.multihash.bytes));if(t==null)throw Ro();return t}has(e){return this.data.has(it.encode(e.multihash.bytes))}async delete(e){this.data.delete(it.encode(e.multihash.bytes))}async*getAll(){for(let[e,t]of this.data.entries())yield{cid:oe.createV1(Lc,Dr(it.decode(e))),block:t}}};function oI(r){return r[Symbol.asyncIterator]!=null}function sI(r,e){if(oI(r))return async function*(){for await(let a of r)await e(a)&&(yield a)}();let t=Ms(r),{value:n,done:o}=t.next();if(o===!0)return function*(){}();let s=e(n);if(typeof s.then=="function")return async function*(){await s&&(yield n);for await(let a of t)await e(a)&&(yield a)}();let i=e;return function*(){s===!0&&(yield n);for(let a of t)i(a)&&(yield a)}()}var Er=sI;var iI=Nt("blockstore:core:tiered"),Ka=class extends cn{stores;constructor(e){super(),this.stores=e.slice()}async put(e,t,n){try{return await Promise.all(this.stores.map(async o=>{await o.put(e,t,n)})),e}catch(o){throw $0(o)}}async get(e,t){for(let n of this.stores)try{let o=await n.get(e,t);if(o!=null)return o}catch(o){iI.error(o)}throw Ro()}async has(e,t){for(let n of this.stores)if(await n.has(e,t))return!0;return!1}async delete(e,t){try{await Promise.all(this.stores.map(async n=>{await n.delete(e,t)}))}catch(n){throw H0(n)}}async*putMany(e,t={}){let n,o=this.stores.map(s=>{let i=nt({objectMode:!0});return Mt(s.putMany(i,t)).catch(a=>{n=a}),i});try{for await(let s of e){if(n!=null)throw n;o.forEach(i=>i.push(s)),yield s.cid}}finally{o.forEach(s=>s.end())}}async*deleteMany(e,t={}){let n,o=this.stores.map(s=>{let i=nt({objectMode:!0});return Mt(s.deleteMany(i,t)).catch(a=>{n=a}),i});try{for await(let s of e){if(n!=null)throw n;o.forEach(i=>i.push(s)),yield s}}finally{o.forEach(s=>s.end())}}async*getAll(e){let t=new Set;yield*Er(Tt(...this.stores.map(n=>n.getAll(e))),n=>{let o=n.cid.toString();return t.has(o)?!1:(t.add(o),!0)})}};var Yq={...ys};var D7=ke(Zo(),1);function Mu(r){return r=r??new Error("Not Found"),(0,D7.default)(r,"ERR_NOT_FOUND")}var T7="SHARDING";function cI(r){return r[Symbol.asyncIterator]!=null}function lI(r){if(cI(r))return(async()=>{let t=[];for await(let n of r)t.push(n);return t})();let e=[];for(let t of r)e.push(t);return e}var Ha=lI;function uI(r){return r[Symbol.asyncIterator]!=null}function dI(r,e){return uI(r)?async function*(){yield*(await Ha(r)).sort(e)}():function*(){yield*Ha(r).sort(e)}()}var Uu=dI;var Fn=class{put(e,t,n){return Promise.reject(new Error(".put is not implemented"))}get(e,t){return Promise.reject(new Error(".get is not implemented"))}has(e,t){return Promise.reject(new Error(".has is not implemented"))}delete(e,t){return Promise.reject(new Error(".delete is not implemented"))}async*putMany(e,t={}){for await(let{key:n,value:o}of e)await this.put(n,o,t),yield n}async*getMany(e,t={}){for await(let n of e)yield{key:n,value:await this.get(n,t)}}async*deleteMany(e,t={}){for await(let n of e)await this.delete(n,t),yield n}batch(){let e=[],t=[];return{put(n,o){e.push({key:n,value:o})},delete(n){t.push(n)},commit:async n=>{await Mt(this.putMany(e,n)),e=[],await Mt(this.deleteMany(t,n)),t=[]}}}async*_all(e,t){throw new Error("._all is not implemented")}async*_allKeys(e,t){throw new Error("._allKeys is not implemented")}query(e,t){let n=this._all(e,t);if(e.prefix!=null){let o=e.prefix;n=Er(n,s=>s.key.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>Er(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>Uu(o,s),n)),e.offset!=null){let o=0,s=e.offset;n=Er(n,()=>o++>=s)}return e.limit!=null&&(n=oo(n,e.limit)),n}queryKeys(e,t){let n=this._allKeys(e,t);if(e.prefix!=null){let o=e.prefix;n=Er(n,s=>s.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>Er(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>Uu(o,s),n)),e.offset!=null){let o=e.offset,s=0;n=Er(n,()=>s++>=o)}return e.limit!=null&&(n=oo(n,e.limit)),n}};var ws=class extends Fn{data;constructor(){super(),this.data=new Map}put(e,t){return this.data.set(e.toString(),t),e}get(e){let t=this.data.get(e.toString());if(t==null)throw Mu();return t}has(e){return this.data.has(e.toString())}delete(e){this.data.delete(e.toString())}*_all(){for(let[e,t]of this.data.entries())yield{key:new Oe(e),value:t}}*_allKeys(){for(let e of this.data.keys())yield new Oe(e)}};var SW=new Oe(T7);var BW=Nt("datastore:core:tiered");var q0=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function Fu(r,e,t,n){let o=new q0(n?.errorMessage,n?.errorCode);return t?.aborted===!0?Promise.reject(o):new Promise((s,i)=>{let a=l=>{try{if(n?.filter?.(l)===!1)return}catch(d){r.removeEventListener(e,a),t?.removeEventListener("abort",c),i(d);return}r.removeEventListener(e,a),t?.removeEventListener("abort",c),s(l)},c=()=>{r.removeEventListener(e,a),t?.removeEventListener("abort",c),i(o)};r.addEventListener(e,a),t?.addEventListener("abort",c)})}var Vu=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function Lt(r,e,t){if(e==null)return r;if(e.aborted)return Promise.reject(new Vu(t?.errorMessage,t?.errorCode));let n,o=new Vu(t?.errorMessage,t?.errorCode);try{return await Promise.race([r,new Promise((s,i)=>{n=()=>{i(o)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var Ku=class{deferred;signal;where;constructor(e,t){this.signal=t,this.deferred=se(),this.where=e,this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(new Tr)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function pI(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var $u=class{id;fn;options;priority;recipients;status;timeline;controller;constructor(e,t,n=0){this.id=pI(),this.status="queued",this.fn=e,this.priority=n,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,ve(1/0,this.controller.signal),this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&this.controller.abort(new Tr)}async join(e={}){let t=new Ku(new Error("where").stack,e.signal);return this.recipients.push(t),e.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await Lt(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.signal?.removeEventListener("abort",this.onAbort)})}};function mI(r,e,t){let n=0,o=r.length;for(;o>0;){let s=Math.trunc(o/2),i=n+s;t(r[i],e)<=0?(n=++i,o-=s+1):o=s}return n}var Vn=class extends Ce{concurrency;queue;pending;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.pending=0,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.queue=[]}tryToStartAnother(){if(this.size===0)return queueMicrotask(()=>{this.safeDispatchEvent("empty")}),this.running===0&&queueMicrotask(()=>{this.safeDispatchEvent("idle")}),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){if(this.queue[this.size-1]?.priority>=e.priority){this.queue.push(e);return}let t=mI(this.queue,e,(n,o)=>o.priority-n.priority);this.queue.splice(t,0,e)}async add(e,t){t?.signal?.throwIfAborted();let n=new $u(e,t,t?.priority),o=n.join(t).then(s=>(this.safeDispatchEvent("completed",{detail:s}),s)).catch(s=>{throw this.safeDispatchEvent("error",{detail:s}),s});return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),o}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new Tr)}),this.clear()}async onEmpty(e){this.size!==0&&await Fu(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await Fu(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await Fu(this,"idle",e?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=nt({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},o=c=>{c.detail!=null&&t.push(c.detail)},s=c=>{n(c.detail)},i=()=>{n()},a=()=>{n(new g("Queue aborted","ERR_QUEUE_ABORTED"))};this.addEventListener("completed",o),this.addEventListener("error",s),this.addEventListener("idle",i),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",o),this.removeEventListener("error",s),this.removeEventListener("idle",i),e?.signal?.removeEventListener("abort",a),n()}}};var P7="/pin/",C7="/pinned-block/",W0=ro,N7=1;function O7(r){return r.version===0&&(r=r.toV1()),new Oe(`${P7}${r.toString(W0)}`)}var Hu=class{datastore;blockstore;dagWalkers;constructor(e,t,n){this.datastore=e,this.blockstore=t,this.dagWalkers=n}async*add(e,t={}){let n=O7(e);if(await this.datastore.has(n))throw new Error("Already pinned");let o=Math.round(t.depth??1/0);if(o<0)throw new Error("Depth must be greater than or equal to 0");let s=new Vn({concurrency:N7});for await(let a of this.#e(e,s,{...t,depth:o}))await this.#t(a,c=>c.pinnedBy.find(l=>j(l,e.bytes))!=null?!1:(c.pinCount++,c.pinnedBy.push(e.bytes),!0),t),yield a;let i={depth:o,metadata:t.metadata??{}};await this.datastore.put(n,wi(i),t)}async*#e(e,t,n){if(n.depth===-1)return;let o=this.dagWalkers[e.code];if(o==null)throw new Error(`No dag walker found for cid codec ${e.code}`);let s=await this.blockstore.get(e,n);yield e;for await(let i of o.walk(s))yield*await t.add(async()=>this.#e(i,t,{...n,depth:n.depth-1}))}async#t(e,t,n){let o=new Oe(`${C7}${W0.encode(e.multihash.bytes)}`),s={pinCount:0,pinnedBy:[]};try{s=wr(await this.datastore.get(o,n))}catch(a){if(a.code!=="ERR_NOT_FOUND")throw a}if(t(s)){if(s.pinCount===0&&await this.datastore.has(o)){await this.datastore.delete(o);return}await this.datastore.put(o,wi(s),n),n.onProgress?.(new Ee("helia:pin:add",e))}}async*rm(e,t={}){let n=O7(e),o=await this.datastore.get(n,t),s=wr(o);await this.datastore.delete(n,t);let i=new Vn({concurrency:N7});for await(let a of this.#e(e,i,{...t,depth:s.depth}))await this.#t(a,c=>(c.pinCount--,c.pinnedBy=c.pinnedBy.filter(l=>j(l,e.bytes)),!0),{...t,depth:s.depth}),yield a}async*ls(e={}){for await(let{key:t,value:n}of this.datastore.query({prefix:P7+(e.cid!=null?`${e.cid.toString(ro)}`:"")},e)){let o=oe.parse(t.toString().substring(5),ro),s=wr(n);yield{cid:o,...s}}}async isPinned(e,t={}){let n=new Oe(`${C7}${W0.encode(e.multihash.bytes)}`);return this.datastore.has(n,t)}};function bi(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),o=n.value;return n.done===!0||o==null?{done:!0,value:void 0}:{done:!1,value:e(o)}}};return t}var wt=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),n)}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return bi(this.map.entries(),e=>[ge(e[0]),e[1]])}forEach(e){this.map.forEach((t,n)=>{e(t,ge(n),this)})}get(e){return this.map.get(e.toString())}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),t)}keys(){return bi(this.map.keys(),e=>ge(e))}values(){return this.map.values()}get size(){return this.map.size}};var Je=class r{set;constructor(e){if(this.set=new Set,e!=null)for(let t of e)this.set.add(t.toString())}get size(){return this.set.size}[Symbol.iterator](){return this.values()}add(e){this.set.add(e.toString())}clear(){this.set.clear()}delete(e){this.set.delete(e.toString())}entries(){return bi(this.set.entries(),e=>{let t=ge(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let n=ge(t);e(n,n,this)})}has(e){return this.set.has(e.toString())}values(){return bi(this.set.values(),e=>ge(e))}intersection(e){let t=new r;for(let n of e)this.has(n)&&t.add(n);return t}difference(e){let t=new r;for(let n of this)e.has(n)||t.add(n);return t}union(e){let t=new r;for(let n of e)t.add(n);for(let n of this)t.add(n);return t}};var qu=class{log;routers;constructor(e,t){this.log=e.logger.forComponent("helia:routing"),this.routers=t.routers??[]}async start(){await jn(...this.routers)}async stop(){await Zn(...this.routers)}async*findProviders(e,t={}){if(this.routers.length===0)throw new g("No content routers available","ERR_NO_ROUTERS_AVAILABLE");let n=new Je;for await(let o of Tt(...Ei(this.routers,"findProviders").map(s=>s.findProviders(e,t))))o!=null&&(n.has(o.id)||(n.add(o.id),yield o))}async provide(e,t={}){if(this.routers.length===0)throw new g("No content routers available","ERR_NO_ROUTERS_AVAILABLE");await Promise.all(Ei(this.routers,"provide").map(async n=>{await n.provide(e,t)}))}async put(e,t,n){await Promise.all(Ei(this.routers,"put").map(async o=>{await o.put(e,t,n)}))}async get(e,t){return Promise.any(Ei(this.routers,"get").map(async n=>n.get(e,t)))}async findPeer(e,t){if(this.routers.length===0)throw new g("No peer routers available","ERR_NO_ROUTERS_AVAILABLE");let n=this,o=Tt(...Ei(this.routers,"findPeer").map(s=>async function*(){try{yield await s.findPeer(e,t)}catch(i){n.log.error(i)}}()));for await(let s of o)if(s!=null)return s;throw new g("Could not find peer in routing","ERR_NOT_FOUND")}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new g("No peer routers available","ERR_NO_ROUTERS_AVAILABLE");let n=new Je;for await(let o of Tt(...Ei(this.routers,"getClosestPeers").map(s=>s.getClosestPeers(e,t))))o!=null&&(n.has(o.id)||(n.add(o.id),yield o))}};function Ei(r,e){return r.filter(t=>t[e]!=null)}var Ao={},xi=r=>{r.addEventListener("message",e=>{xi.dispatchEvent("message",r,e)}),r.port!=null&&r.port.addEventListener("message",e=>{xi.dispatchEvent("message",r,e)})};xi.addEventListener=(r,e)=>{Ao[r]==null&&(Ao[r]=[]),Ao[r].push(e)};xi.removeEventListener=(r,e)=>{Ao[r]!=null&&(Ao[r]=Ao[r].filter(t=>t===e))};xi.dispatchEvent=function(r,e,t){Ao[r]!=null&&Ao[r].forEach(n=>n(e,t))};var z0=xi;var G0="lock:worker:request-read",Y0="lock:worker:release-read",X0="lock:master:grant-read",Q0="lock:worker:request-write",j0="lock:worker:release-write",Z0="lock:master:grant-write";var L7=(r=21)=>Math.random().toString().substring(2);var B7=(r,e,t,n,o)=>(s,i)=>{if(i.data.type!==t)return;let a={type:i.data.type,name:i.data.name,identifier:i.data.identifier};r.dispatchEvent(new MessageEvent(e,{data:{name:a.name,handler:async()=>{s.postMessage({type:o,name:a.name,identifier:a.identifier}),await new Promise(c=>{let l=d=>{if(d==null||d.data==null)return;let u={type:d.data.type,name:d.data.name,identifier:d.data.identifier};u.type===n&&u.identifier===a.identifier&&(s.removeEventListener("message",l),c())};s.addEventListener("message",l)})}}}))},M7=(r,e,t,n)=>async()=>{let o=L7();return globalThis.postMessage({type:e,identifier:o,name:r}),new Promise(s=>{let i=a=>{if(a==null||a.data==null)return;let c={type:a.data.type,identifier:a.data.identifier};c.type===t&&c.identifier===o&&(globalThis.removeEventListener("message",i),s(()=>{globalThis.postMessage({type:n,identifier:o,name:r})}))};globalThis.addEventListener("message",i)})},gI={singleProcess:!1},U7=r=>{if(r=Object.assign({},gI,r),!!globalThis.document||r.singleProcess){let t=new EventTarget;return z0.addEventListener("message",B7(t,"requestReadLock",G0,Y0,X0)),z0.addEventListener("message",B7(t,"requestWriteLock",Q0,j0,Z0)),t}return{isWorker:!0,readLock:t=>M7(t,G0,X0,Y0),writeLock:t=>M7(t,Q0,Z0,j0)}};var bs={},Io;async function J0(r,e){let t,n=new Promise(o=>{t=o});return r.add(async()=>Wr((async()=>{await new Promise(o=>{t(()=>{o()})})})(),{milliseconds:e.timeout})),n}var yI=(r,e)=>{if(Io.isWorker===!0)return{readLock:Io.readLock(r,e),writeLock:Io.writeLock(r,e)};let t=new br({concurrency:1}),n;return{async readLock(){if(n!=null)return J0(n,e);n=new br({concurrency:e.concurrency,autoStart:!1});let o=n,s=J0(n,e);return t.add(async()=>{o.start(),await o.onIdle().then(()=>{n===o&&(n=null)})}),s},async writeLock(){return n=null,J0(t,e)}}},wI={name:"lock",concurrency:1/0,timeout:846e5,singleProcess:!1};function qa(r){let e=Object.assign({},wI,r);return Io==null&&(Io=U7(e),Io.isWorker!==!0&&(Io.addEventListener("requestReadLock",t=>{bs[t.data.name]!=null&&bs[t.data.name].readLock().then(async n=>t.data.handler().finally(()=>{n()}))}),Io.addEventListener("requestWriteLock",async t=>{bs[t.data.name]!=null&&bs[t.data.name].writeLock().then(async n=>t.data.handler().finally(()=>{n()}))}))),bs[e.name]==null&&(bs[e.name]=yI(e.name,e)),bs[e.name]}var Wu=class{lock;child;pins;started;constructor(e,t,n={}){this.child=e,this.pins=t,this.lock=qa({singleProcess:n.holdGcLock}),this.started=!1}isStarted(){return this.started}async start(){await jn(this.child),this.started=!0}async stop(){await Zn(this.child),this.started=!1}unwrap(){return this.child}async put(e,t,n={}){let o=await this.lock.readLock();try{return await this.child.put(e,t,n)}finally{o()}}async*putMany(e,t={}){let n=await this.lock.readLock();try{yield*this.child.putMany(e,t)}finally{n()}}async get(e,t={}){let n=await this.lock.readLock();try{return await this.child.get(e,t)}finally{n()}}async*getMany(e,t={}){let n=await this.lock.readLock();try{yield*this.child.getMany(e,t)}finally{n()}}async delete(e,t={}){let n=await this.lock.writeLock();try{if(await this.pins.isPinned(e))throw new Error("CID was pinned");await this.child.delete(e,t)}finally{n()}}async*deleteMany(e,t={}){let n=await this.lock.writeLock();try{let o=this;yield*this.child.deleteMany(async function*(){for await(let s of e){if(await o.pins.isPinned(s))throw new Error("CID was pinned");yield s}}(),t)}finally{n()}}async has(e,t={}){let n=await this.lock.readLock();try{return await this.child.has(e,t)}finally{n()}}async*getAll(e={}){let t=await this.lock.readLock();try{yield*this.child.getAll(e)}finally{t()}}};var V7=42;function bI(r){if(r.asCID!==r&&r["/"]!==r.bytes)return null;let e=oe.asCID(r);if(!e)return null;let t=new Uint8Array(e.bytes.byteLength+1);return t.set(e.bytes,1),[new U(x.tag,V7),new U(x.bytes,t)]}function EI(){throw new Error("`undefined` is not supported by the IPLD Data Model and cannot be encoded")}function xI(r){if(Number.isNaN(r))throw new Error("`NaN` is not supported by the IPLD Data Model and cannot be encoded");if(r===1/0||r===-1/0)throw new Error("`Infinity` and `-Infinity` is not supported by the IPLD Data Model and cannot be encoded");return null}var F7={float64:!0,typeEncoders:{Object:bI,undefined:EI,number:xI}},jz={...F7,typeEncoders:{...F7.typeEncoders}};function vI(r){if(r[0]!==0)throw new Error("Invalid CID for CBOR tag 42; expected leading 0x00");return oe.decode(r.subarray(1))}var e2={allowIndefinite:!1,coerceUndefinedToNull:!0,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};e2.tags[V7]=vI;var Zz={...e2,tags:e2.tags.slice()};var K7=113;var $7=class extends Array{constructor(){super(),this.inRecursive=[]}prefix(e){let t=this.inRecursive[this.inRecursive.length-1];t&&(t.type===x.array&&(t.elements++,t.elements!==1&&e.push([44])),t.type===x.map&&(t.elements++,t.elements!==1&&(t.elements%2===1?e.push([44]):e.push([58]))))}[x.uint.major](e,t){this.prefix(e);let n=String(t.value),o=[];for(let s=0;s<n.length;s++)o[s]=n.charCodeAt(s);e.push(o)}[x.negint.major](e,t){this[x.uint.major](e,t)}[x.bytes.major](e,t){throw new Error(`${pi} unsupported type: Uint8Array`)}[x.string.major](e,t){this.prefix(e);let n=bu(JSON.stringify(t.value));e.push(n.length>32?Da(n):n)}[x.array.major](e,t){this.prefix(e),this.inRecursive.push({type:x.array,elements:0}),e.push([91])}[x.map.major](e,t){this.prefix(e),this.inRecursive.push({type:x.map,elements:0}),e.push([123])}[x.tag.major](e,t){}[x.float.major](e,t){if(t.type.name==="break"){let i=this.inRecursive.pop();if(i){if(i.type===x.array)e.push([93]);else if(i.type===x.map)e.push([125]);else throw new Error("Unexpected recursive type; this should not happen!");return}throw new Error("Unexpected break; this should not happen!")}if(t.value===void 0)throw new Error(`${pi} unsupported type: undefined`);if(this.prefix(e),t.type.name==="true"){e.push([116,114,117,101]);return}else if(t.type.name==="false"){e.push([102,97,108,115,101]);return}else if(t.type.name==="null"){e.push([110,117,108,108]);return}let n=String(t.value),o=[],s=!1;for(let i=0;i<n.length;i++)o[i]=n.charCodeAt(i),!s&&(o[i]===46||o[i]===101||o[i]===69)&&(s=!0);s||(o.push(46),o.push(48)),e.push(o)}};var Es=class{constructor(e,t={}){this._pos=0,this.data=e,this.options=t,this.modeStack=["value"],this.lastToken=""}pos(){return this._pos}done(){return this._pos>=this.data.length}ch(){return this.data[this._pos]}currentMode(){return this.modeStack[this.modeStack.length-1]}skipWhitespace(){let e=this.ch();for(;e===32||e===9||e===13||e===10;)e=this.data[++this._pos]}expect(e){if(this.data.length-this._pos<e.length)throw new Error(`${X} unexpected end of input at position ${this._pos}`);for(let t=0;t<e.length;t++)if(this.data[this._pos++]!==e[t])throw new Error(`${X} unexpected token at position ${this._pos}, expected to find '${String.fromCharCode(...e)}'`)}parseNumber(){let e=this._pos,t=!1,n=!1,o=a=>{for(;!this.done();){let c=this.ch();if(a.includes(c))this._pos++;else break}};if(this.ch()===45&&(t=!0,this._pos++),this.ch()===48)if(this._pos++,this.ch()===46)this._pos++,n=!0;else return new U(x.uint,0,this._pos-e);if(o([48,49,50,51,52,53,54,55,56,57]),t&&this._pos===e+1)throw new Error(`${X} unexpected token at position ${this._pos}`);if(!this.done()&&this.ch()===46){if(n)throw new Error(`${X} unexpected token at position ${this._pos}`);n=!0,this._pos++,o([48,49,50,51,52,53,54,55,56,57])}!this.done()&&(this.ch()===101||this.ch()===69)&&(n=!0,this._pos++,!this.done()&&(this.ch()===43||this.ch()===45)&&this._pos++,o([48,49,50,51,52,53,54,55,56,57]));let s=String.fromCharCode.apply(null,this.data.subarray(e,this._pos)),i=parseFloat(s);return n?new U(x.float,i,this._pos-e):this.options.allowBigInt!==!0||Number.isSafeInteger(i)?new U(i>=0?x.uint:x.negint,i,this._pos-e):new U(i>=0?x.uint:x.negint,BigInt(s),this._pos-e)}parseString(){if(this.ch()!==34)throw new Error(`${X} unexpected character at position ${this._pos}; this shouldn't happen`);this._pos++;for(let s=this._pos,i=0;s<this.data.length&&i<65536;s++,i++){let a=this.data[s];if(a===92||a<32||a>=128)break;if(a===34){let c=String.fromCharCode.apply(null,this.data.subarray(this._pos,s));return this._pos=s+1,new U(x.string,c,i)}}let e=this._pos,t=[],n=()=>{if(this._pos+4>=this.data.length)throw new Error(`${X} unexpected end of unicode escape sequence at position ${this._pos}`);let s=0;for(let i=0;i<4;i++){let a=this.ch();if(a>=48&&a<=57)a-=48;else if(a>=97&&a<=102)a=a-97+10;else if(a>=65&&a<=70)a=a-65+10;else throw new Error(`${X} unexpected unicode escape character at position ${this._pos}`);s=s*16+a,this._pos++}return s},o=()=>{let s=this.ch(),i=null,a=s>239?4:s>223?3:s>191?2:1;if(this._pos+a>this.data.length)throw new Error(`${X} unexpected unicode sequence at position ${this._pos}`);let c,l,d,u;switch(a){case 1:s<128&&(i=s);break;case 2:c=this.data[this._pos+1],(c&192)===128&&(u=(s&31)<<6|c&63,u>127&&(i=u));break;case 3:c=this.data[this._pos+1],l=this.data[this._pos+2],(c&192)===128&&(l&192)===128&&(u=(s&15)<<12|(c&63)<<6|l&63,u>2047&&(u<55296||u>57343)&&(i=u));break;case 4:c=this.data[this._pos+1],l=this.data[this._pos+2],d=this.data[this._pos+3],(c&192)===128&&(l&192)===128&&(d&192)===128&&(u=(s&15)<<18|(c&63)<<12|(l&63)<<6|d&63,u>65535&&u<1114112&&(i=u))}i===null?(i=65533,a=1):i>65535&&(i-=65536,t.push(i>>>10&1023|55296),i=56320|i&1023),t.push(i),this._pos+=a};for(;!this.done();){let s=this.ch(),i;switch(s){case 92:if(this._pos++,this.done())throw new Error(`${X} unexpected string termination at position ${this._pos}`);switch(i=this.ch(),this._pos++,i){case 34:case 39:case 92:case 47:t.push(i);break;case 98:t.push(8);break;case 116:t.push(9);break;case 110:t.push(10);break;case 102:t.push(12);break;case 114:t.push(13);break;case 117:t.push(n());break;default:throw new Error(`${X} unexpected string escape character at position ${this._pos}`)}break;case 34:return this._pos++,new U(x.string,A0(t),this._pos-e);default:if(s<32)throw new Error(`${X} invalid control character at position ${this._pos}`);s<128?(t.push(s),this._pos++):o()}}throw new Error(`${X} unexpected end of string at position ${this._pos}`)}parseValue(){switch(this.ch()){case 123:return this.modeStack.push("obj-start"),this._pos++,new U(x.map,1/0,1);case 91:return this.modeStack.push("array-start"),this._pos++,new U(x.array,1/0,1);case 34:return this.parseString();case 110:return this.expect([110,117,108,108]),new U(x.null,null,4);case 102:return this.expect([102,97,108,115,101]),new U(x.false,!1,5);case 116:return this.expect([116,114,117,101]),new U(x.true,!0,4);case 45:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.parseNumber();default:throw new Error(`${X} unexpected character at position ${this._pos}`)}}next(){switch(this.skipWhitespace(),this.currentMode()){case"value":return this.modeStack.pop(),this.parseValue();case"array-value":{if(this.modeStack.pop(),this.ch()===93)return this._pos++,this.skipWhitespace(),new U(x.break,void 0,1);if(this.ch()!==44)throw new Error(`${X} unexpected character at position ${this._pos}, was expecting array delimiter but found '${String.fromCharCode(this.ch())}'`);return this._pos++,this.modeStack.push("array-value"),this.skipWhitespace(),this.parseValue()}case"array-start":return this.modeStack.pop(),this.ch()===93?(this._pos++,this.skipWhitespace(),new U(x.break,void 0,1)):(this.modeStack.push("array-value"),this.skipWhitespace(),this.parseValue());case"obj-key":if(this.ch()===125)return this.modeStack.pop(),this._pos++,this.skipWhitespace(),new U(x.break,void 0,1);if(this.ch()!==44)throw new Error(`${X} unexpected character at position ${this._pos}, was expecting object delimiter but found '${String.fromCharCode(this.ch())}'`);this._pos++,this.skipWhitespace();case"obj-start":{if(this.modeStack.pop(),this.ch()===125)return this._pos++,this.skipWhitespace(),new U(x.break,void 0,1);let e=this.parseString();if(this.skipWhitespace(),this.ch()!==58)throw new Error(`${X} unexpected character at position ${this._pos}, was expecting key/value delimiter ':' but found '${String.fromCharCode(this.ch())}'`);return this._pos++,this.modeStack.push("obj-value"),e}case"obj-value":return this.modeStack.pop(),this.modeStack.push("obj-key"),this.skipWhitespace(),this.parseValue();default:throw new Error(`${X} unexpected parse state at position ${this._pos}; this shouldn't happen`)}}};function zu(r,e){return e=Object.assign({tokenizer:new Es(r,e)},e),wr(r,e)}var RI={allowIndefinite:!1,allowUndefined:!1,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};RI.tags[42]=oe.parse;var q7=297;var mG=new TextDecoder;var gG=new TextEncoder;var II=new TextDecoder;function t2(r,e){let t=0;for(let n=0;;n+=7){if(n>=64)throw new Error("protobuf: varint overflow");if(e>=r.length)throw new Error("protobuf: unexpected end of data");let o=r[e++];if(t+=n<28?(o&127)<<n:(o&127)*2**n,o<128)break}return[t,e]}function Gu(r,e){let t;[t,e]=t2(r,e);let n=e+t;if(t<0||n<0)throw new Error("protobuf: invalid length");if(n>r.length)throw new Error("protobuf: unexpected end of data");return[r.subarray(e,n),n]}function W7(r,e){let t;return[t,e]=t2(r,e),[t&7,t>>3,e]}function DI(r){let e={},t=r.length,n=0;for(;n<t;){let o,s;if([o,s,n]=W7(r,n),s===1){if(e.Hash)throw new Error("protobuf: (PBLink) duplicate Hash section");if(o!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Hash`);if(e.Name!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Name before Hash");if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Hash");[e.Hash,n]=Gu(r,n)}else if(s===2){if(e.Name!==void 0)throw new Error("protobuf: (PBLink) duplicate Name section");if(o!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Name`);if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Name");let i;[i,n]=Gu(r,n),e.Name=II.decode(i)}else if(s===3){if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) duplicate Tsize section");if(o!==0)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Tsize`);[e.Tsize,n]=t2(r,n)}else throw new Error(`protobuf: (PBLink) invalid fieldNumber, expected 1, 2 or 3, got ${s}`)}if(n>t)throw new Error("protobuf: (PBLink) unexpected end of data");return e}function z7(r){let e=r.length,t=0,n,o=!1,s;for(;t<e;){let a,c;if([a,c,t]=W7(r,t),a!==2)throw new Error(`protobuf: (PBNode) invalid wireType, expected 2, got ${a}`);if(c===1){if(s)throw new Error("protobuf: (PBNode) duplicate Data section");[s,t]=Gu(r,t),n&&(o=!0)}else if(c===2){if(o)throw new Error("protobuf: (PBNode) duplicate Links section");n||(n=[]);let l;[l,t]=Gu(r,t),n.push(DI(l))}else throw new Error(`protobuf: (PBNode) invalid fieldNumber, expected 1 or 2, got ${c}`)}if(t>e)throw new Error("protobuf: (PBNode) unexpected end of data");let i={};return s&&(i.Data=s),i.Links=n||[],i}var wG=new TextEncoder,bG=2**32,EG=2**31;var _G=new TextEncoder;var G7=112;function Y7(r){let e=z7(r),t={};return e.Data&&(t.Data=e.Data),e.Links&&(t.Links=e.Links.map(n=>{let o={};try{o.Hash=oe.decode(n.Hash)}catch{}if(!o.Hash)throw new Error("Invalid Hash field found in link, expected CID");return n.Name!==void 0&&(o.Name=n.Name),n.Tsize!==void 0&&(o.Tsize=n.Tsize),o})),t}var kI={codec:G7,*walk(r){yield*Y7(r).Links.map(t=>t.Hash)}},CI={codec:Lc,*walk(){}},X7=42,NI={codec:K7,*walk(r){let e=[],t=[];t[X7]=n=>{if(n[0]!==0)throw new Error("Invalid CID for CBOR tag 42; expected leading 0x00");let o=oe.decode(n.subarray(1));return e.push(o),o},wr(r,{tags:t}),yield*e}},r2=class extends Es{tokenBuffer;constructor(e,t){super(e,t),this.tokenBuffer=[]}done(){return this.tokenBuffer.length===0&&super.done()}_next(){return this.tokenBuffer.length>0?this.tokenBuffer.pop():super.next()}next(){let e=this._next();if(e.type===x.map){let t=this._next();if(t.type===x.string&&t.value==="/"){let n=this._next();if(n.type===x.string){if(this._next().type!==x.break)throw new Error("Invalid encoded CID form");return this.tokenBuffer.push(n),new U(x.tag,42,0)}if(n.type===x.map){let o=this._next();if(o.type===x.string&&o.value==="bytes"){let s=this._next();if(s.type===x.string){for(let a=0;a<2;a++)if(this._next().type!==x.break)throw new Error("Invalid encoded Bytes form");let i=ar.decode(`m${s.value}`);return new U(x.bytes,i,s.value.length)}this.tokenBuffer.push(s)}this.tokenBuffer.push(o)}this.tokenBuffer.push(n)}this.tokenBuffer.push(t)}return e}},OI={codec:q7,*walk(r){let e=[],t=[];t[X7]=n=>{let o=oe.parse(n);return e.push(o),o},zu(r,{tags:t,tokenizer:new r2(r,{tags:t,allowIndefinite:!0,allowUndefined:!0,allowNaN:!0,allowInfinity:!0,allowBigInt:!0,strict:!1,rejectDuplicateMapKeys:!1})}),yield*e}},PI={codec:J4,*walk(){}};function Q7(r=[]){let e={};return[kI,CI,NI,OI,PI,...r].forEach(t=>{e[t.codec]=t}),e}var n2=new Oe("/version"),j7=1;async function Z7(r){if(!await r.has(n2)){await r.put(n2,L(`${j7}`));return}let e=await r.get(n2),t=B(e);if(parseInt(t,10)!==j7)throw new Error("Unknown datastore version, a datastore migration may be required")}function J7(r=[]){let e={};return[Re,Af,lr,...r].forEach(t=>{e[t.code]=t}),e}var eg=0,Yu=class extends cn{put(e){return e}get(e){if(e.code===eg)return e.multihash.digest;throw Ro()}has(e){return e.code===eg}delete(){}*getAll(){}};function LI(r){return typeof r.retrieve=="function"}function BI(r){return typeof r.announce=="function"}var Xu=class{child;blockRetrievers;blockAnnouncers;hashers;started;log;constructor(e){this.log=e.logger.forComponent("helia:networked-storage"),this.child=new Ka([new Yu,e.blockstore]),this.blockRetrievers=(e.blockBrokers??[]).filter(LI),this.blockAnnouncers=(e.blockBrokers??[]).filter(BI),this.hashers=e.hashers??{},this.started=!1}isStarted(){return this.started}async start(){await jn(this.child,...new Set([...this.blockRetrievers,...this.blockAnnouncers])),this.started=!0}async stop(){await Zn(this.child,...new Set([...this.blockRetrievers,...this.blockAnnouncers])),this.started=!1}unwrap(){return this.child}async put(e,t,n={}){return await this.child.has(e)?(n.onProgress?.(new Ee("blocks:put:duplicate",e)),e):(n.onProgress?.(new Ee("blocks:put:providers:notify",e)),this.blockAnnouncers.forEach(o=>{o.announce(e,t,n)}),n.onProgress?.(new Ee("blocks:put:blockstore:put",e)),this.child.put(e,t,n))}async*putMany(e,t={}){let n=Er(e,async({cid:s})=>{let i=await this.child.has(s);return i&&t.onProgress?.(new Ee("blocks:put-many:duplicate",s)),!i}),o=qo(n,({cid:s,block:i})=>{t.onProgress?.(new Ee("blocks:put-many:providers:notify",s)),this.blockAnnouncers.forEach(a=>{a.announce(s,i,t)})});t.onProgress?.(new Ee("blocks:put-many:blockstore:put-many")),yield*this.child.putMany(o,t)}async get(e,t={}){if(t.offline!==!0&&!await this.child.has(e)){t.onProgress?.(new Ee("blocks:get:providers:get",e));let n=await tg(e,this.blockRetrievers,this.hashers[e.multihash.code],{...t,log:this.log});return t.onProgress?.(new Ee("blocks:get:blockstore:put",e)),await this.child.put(e,n,t),t.onProgress?.(new Ee("blocks:get:providers:notify",e)),this.blockAnnouncers.forEach(o=>{o.announce(e,n,t)}),n}return t.onProgress?.(new Ee("blocks:get:blockstore:get",e)),this.child.get(e,t)}async*getMany(e,t={}){t.onProgress?.(new Ee("blocks:get-many:blockstore:get-many")),yield*this.child.getMany(qo(e,async n=>{if(t.offline!==!0&&!await this.child.has(n)){t.onProgress?.(new Ee("blocks:get-many:providers:get",n));let o=await tg(n,this.blockRetrievers,this.hashers[n.multihash.code],{...t,log:this.log});t.onProgress?.(new Ee("blocks:get-many:blockstore:put",n)),await this.child.put(n,o,t),t.onProgress?.(new Ee("blocks:get-many:providers:notify",n)),this.blockAnnouncers.forEach(s=>{s.announce(n,o,t)})}}))}async delete(e,t={}){t.onProgress?.(new Ee("blocks:delete:blockstore:delete",e)),await this.child.delete(e,t)}async*deleteMany(e,t={}){t.onProgress?.(new Ee("blocks:delete-many:blockstore:delete-many")),yield*this.child.deleteMany(async function*(){for await(let n of e)yield n}(),t)}async has(e,t={}){return this.child.has(e,t)}async*getAll(e={}){e.onProgress?.(new Ee("blocks:get-all:blockstore:get-many")),yield*this.child.getAll(e)}},MI=(r,e)=>{if(e==null)throw new g(`No hasher configured for multihash code 0x${r.multihash.code.toString(16)}, please configure one. You can look up which hash this is at https://github.com/multiformats/multicodec/blob/master/table.csv`,"ERR_UNKNOWN_HASH_ALG");return async t=>{let n=await e.digest(t);if(!j(n.digest,r.multihash.digest))throw new g("Hash of downloaded block did not match multihash from passed CID","ERR_HASH_MISMATCH")}};async function tg(r,e,t,n){let o=MI(r,t),s=new AbortController,i=lt([s.signal,n.signal]);try{return await Promise.any(e.map(async a=>{try{let c=!1,l=await a.retrieve(r,{...n,signal:i,validateFn:async d=>{await o(d),c=!0}});return c||await o(l),l}catch(c){throw n.log.error("could not retrieve verified block for %c",r,c),c}}))}finally{i.clear()}}var Qu=class{blockstore;datastore;pins;logger;routing;dagWalkers;hashers;log;constructor(e){this.logger=e.logger??Jn(),this.log=this.logger.forComponent("helia"),this.hashers=J7(e.hashers),this.dagWalkers=Q7(e.dagWalkers);let t={blockstore:e.blockstore,datastore:e.datastore,hashers:this.hashers,dagWalkers:this.dagWalkers,logger:this.logger,blockBrokers:[],...e.components??{}};t.blockBrokers=e.blockBrokers.map(o=>o(t));let n=new Xu(t);this.pins=new Hu(e.datastore,n,this.dagWalkers),this.blockstore=new Wu(n,this.pins,{holdGcLock:e.holdGcLock??!0}),this.datastore=e.datastore,this.routing=new qu(t,{routers:(e.routers??[]).flatMap(o=>{let s=[o];return o[Zr]!=null&&s.push(o[Zr]),o[Jr]!=null&&s.push(o[Jr]),s})})}async start(){await Z7(this.datastore),await jn(this.blockstore,this.datastore,this.routing)}async stop(){await Zn(this.blockstore,this.datastore,this.routing)}async gc(e={}){let t=await this.blockstore.lock.writeLock();try{let n=this,o=this.blockstore.unwrap();this.log("gc start"),await Mt(o.deleteMany(async function*(){for await(let{cid:s}of o.getAll())try{if(await n.pins.isPinned(s,e))continue;yield s,e.onProgress?.(new Ee("helia:gc:deleted",s))}catch(i){n.log.error("Error during gc",i),e.onProgress?.(new Ee("helia:gc:error",i))}}()))}finally{t()}this.log("gc finished")}};var ju=class extends Qu{libp2p;constructor(e){super({...e,components:{libp2p:e.libp2p}}),this.libp2p=e.libp2p}async start(){await super.start(),await this.libp2p.start()}async stop(){await super.stop(),await this.libp2p.stop()}};var o2=class{readNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.readNext=se(),this.haveNext=se()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let e=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=se(),e}async throw(e){return this.ended=!0,e!=null&&this.haveNext.reject(e),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return await this._push(void 0),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw new Error("Cannot push value onto an ended pushable");if(this.nextResult!=null&&(await this.readNext.promise,this.nextResult!=null))throw new Error("NeedNext promise resolved but nextResult was not consumed");e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=se(),await Lt(this.readNext.promise,t?.signal,t)}};function rg(){return new o2}var Zu=class extends Error{code;constructor(e,t){super(e),this.code=t}},s2=class extends Zu{type;constructor(e){super(e,"ABORT_ERR"),this.type="aborted"}};function ng(r,e){let t=rg();r.sink(t).catch(async i=>{await t.end(i)}),r.sink=async i=>{for await(let a of i)await t.push(a);await t.end()};let n=r.source;r.source[Symbol.iterator]!=null?n=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(n=r.source[Symbol.asyncIterator]());let o=new de;return{read:async(i,a)=>{a?.signal?.throwIfAborted();let c,l=new Promise((d,u)=>{c=()=>{u(new s2("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(i==null){let{done:u,value:f}=await Promise.race([n.next(),l]);return u===!0?new de:f}for(;o.byteLength<i;){let{value:u,done:f}=await Promise.race([n.next(),l]);if(f===!0)throw new Zu("unexpected end of input","ERR_UNEXPECTED_EOF");o.append(u)}let d=o.sublist(0,i);return o.consume(i),d}finally{c!=null&&a?.signal?.removeEventListener("abort",c)}},write:async(i,a)=>{a?.signal?.throwIfAborted(),i instanceof Uint8Array?await t.push(i,a):await t.push(i.subarray(),a)},unwrap:()=>{if(o.byteLength>0){let i=r.source;r.source=async function*(){e?.yieldBytes===!1?yield o:yield*o,yield*i}()}return r}}}var Ju=class extends Error{code;constructor(e,t){super(e),this.code=t}};function ln(r,e={}){let t=ng(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=Fe(e.maxDataLength));let n=e?.lengthDecoder??Yt,o=e?.lengthEncoder??ze;return{read:async i=>{let a=-1,c=new de;for(;;){c.append(await t.read(1,i));try{a=n(c)}catch(l){if(l instanceof RangeError)continue;throw l}if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new Ju("message length length too long","ERR_MSG_LENGTH_TOO_LONG");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new Ju("message length too long","ERR_MSG_DATA_TOO_LONG");return t.read(a,i)},write:async(i,a)=>{await t.write(new de(o(i.byteLength),i),a)},writeV:async(i,a)=>{let c=new de(...i.flatMap(l=>[o(l.byteLength),l]));await t.write(c,a)},unwrap:()=>t.unwrap()}}function i2(){let r=se(),e=!1;return{sink:async t=>{if(e)throw new Error("already piped");e=!0,r.resolve(t)},source:async function*(){yield*await r.promise}()}}function og(){let r=i2(),e=i2();return[{source:r.source,sink:e.sink},{source:e.source,sink:r.sink}]}var vi=!!globalThis.process?.env?.DUMP_SESSION_KEYS;var Kn=r=>new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4));function sg(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}var ig=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),UI=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!UI)throw new Error("Non little-endian hardware is not supported");function e1(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function t1(r){if(typeof r=="string")r=e1(r);else if(sg(r))r=r.slice();else throw new Error(`expected Uint8Array, got ${typeof r}`);return r}var FI=r=>Object.prototype.toString.call(r)==="[object Object]"&&r.constructor===Object;function ag(r,e){if(e!==void 0&&(typeof e!="object"||!FI(e)))throw new Error("options must be object or undefined");return Object.assign(r,e)}function xs(r,e){if(!sg(r))throw new Error("Uint8Array expected");if(typeof e=="number"&&r.length!==e)throw new Error(`Uint8Array length ${e} expected`)}function cg(r,e){if(r.length!==e.length)return!1;let t=0;for(let n=0;n<r.length;n++)t|=r[n]^e[n];return t===0}var a2=(r,e)=>(Object.assign(e,r),e);function c2(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let o=BigInt(32),s=BigInt(4294967295),i=Number(t>>o&s),a=Number(t&s),c=n?4:0,l=n?0:4;r.setUint32(e+c,i,n),r.setUint32(e+l,a,n)}function r1(r){if(!Number.isSafeInteger(r)||r<0)throw new Error(`wrong positive integer: ${r}`)}function l2(r){if(typeof r!="boolean")throw new Error(`boolean expected, not ${r}`)}function VI(r){return r!=null&&typeof r=="object"&&(r instanceof Uint8Array||r.constructor.name==="Uint8Array")}function _i(r,...e){if(!VI(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function u2(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function lg(r,e){_i(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var bt=(r,e)=>r[e++]&255|(r[e++]&255)<<8,d2=class{constructor(e){this.blockLen=16,this.outputLen=16,this.buffer=new Uint8Array(16),this.r=new Uint16Array(10),this.h=new Uint16Array(10),this.pad=new Uint16Array(8),this.pos=0,this.finished=!1,e=t1(e),xs(e,32);let t=bt(e,0),n=bt(e,2),o=bt(e,4),s=bt(e,6),i=bt(e,8),a=bt(e,10),c=bt(e,12),l=bt(e,14);this.r[0]=t&8191,this.r[1]=(t>>>13|n<<3)&8191,this.r[2]=(n>>>10|o<<6)&7939,this.r[3]=(o>>>7|s<<9)&8191,this.r[4]=(s>>>4|i<<12)&255,this.r[5]=i>>>1&8190,this.r[6]=(i>>>14|a<<2)&8191,this.r[7]=(a>>>11|c<<5)&8065,this.r[8]=(c>>>8|l<<8)&8191,this.r[9]=l>>>5&127;for(let d=0;d<8;d++)this.pad[d]=bt(e,16+2*d)}process(e,t,n=!1){let o=n?0:2048,{h:s,r:i}=this,a=i[0],c=i[1],l=i[2],d=i[3],u=i[4],f=i[5],m=i[6],h=i[7],p=i[8],y=i[9],w=bt(e,t+0),E=bt(e,t+2),b=bt(e,t+4),S=bt(e,t+6),R=bt(e,t+8),A=bt(e,t+10),D=bt(e,t+12),_=bt(e,t+14),k=s[0]+(w&8191),O=s[1]+((w>>>13|E<<3)&8191),N=s[2]+((E>>>10|b<<6)&8191),P=s[3]+((b>>>7|S<<9)&8191),F=s[4]+((S>>>4|R<<12)&8191),Y=s[5]+(R>>>1&8191),I=s[6]+((R>>>14|A<<2)&8191),C=s[7]+((A>>>11|D<<5)&8191),$=s[8]+((D>>>8|_<<8)&8191),T=s[9]+(_>>>5|o),v=0,M=v+k*a+O*(5*y)+N*(5*p)+P*(5*h)+F*(5*m);v=M>>>13,M&=8191,M+=Y*(5*f)+I*(5*u)+C*(5*d)+$*(5*l)+T*(5*c),v+=M>>>13,M&=8191;let V=v+k*c+O*a+N*(5*y)+P*(5*p)+F*(5*h);v=V>>>13,V&=8191,V+=Y*(5*m)+I*(5*f)+C*(5*u)+$*(5*d)+T*(5*l),v+=V>>>13,V&=8191;let q=v+k*l+O*c+N*a+P*(5*y)+F*(5*p);v=q>>>13,q&=8191,q+=Y*(5*h)+I*(5*m)+C*(5*f)+$*(5*u)+T*(5*d),v+=q>>>13,q&=8191;let ne=v+k*d+O*l+N*c+P*a+F*(5*y);v=ne>>>13,ne&=8191,ne+=Y*(5*p)+I*(5*h)+C*(5*m)+$*(5*f)+T*(5*u),v+=ne>>>13,ne&=8191;let ie=v+k*u+O*d+N*l+P*c+F*a;v=ie>>>13,ie&=8191,ie+=Y*(5*y)+I*(5*p)+C*(5*h)+$*(5*m)+T*(5*f),v+=ie>>>13,ie&=8191;let pe=v+k*f+O*u+N*d+P*l+F*c;v=pe>>>13,pe&=8191,pe+=Y*a+I*(5*y)+C*(5*p)+$*(5*h)+T*(5*m),v+=pe>>>13,pe&=8191;let le=v+k*m+O*f+N*u+P*d+F*l;v=le>>>13,le&=8191,le+=Y*c+I*a+C*(5*y)+$*(5*p)+T*(5*h),v+=le>>>13,le&=8191;let ue=v+k*h+O*m+N*f+P*u+F*d;v=ue>>>13,ue&=8191,ue+=Y*l+I*c+C*a+$*(5*y)+T*(5*p),v+=ue>>>13,ue&=8191;let Le=v+k*p+O*h+N*m+P*f+F*u;v=Le>>>13,Le&=8191,Le+=Y*d+I*l+C*c+$*a+T*(5*y),v+=Le>>>13,Le&=8191;let Te=v+k*y+O*p+N*h+P*m+F*f;v=Te>>>13,Te&=8191,Te+=Y*u+I*d+C*l+$*c+T*a,v+=Te>>>13,Te&=8191,v=(v<<2)+v|0,v=v+M|0,M=v&8191,v=v>>>13,V+=v,s[0]=M,s[1]=V,s[2]=q,s[3]=ne,s[4]=ie,s[5]=pe,s[6]=le,s[7]=ue,s[8]=Le,s[9]=Te}finalize(){let{h:e,pad:t}=this,n=new Uint16Array(10),o=e[1]>>>13;e[1]&=8191;for(let a=2;a<10;a++)e[a]+=o,o=e[a]>>>13,e[a]&=8191;e[0]+=o*5,o=e[0]>>>13,e[0]&=8191,e[1]+=o,o=e[1]>>>13,e[1]&=8191,e[2]+=o,n[0]=e[0]+5,o=n[0]>>>13,n[0]&=8191;for(let a=1;a<10;a++)n[a]=e[a]+o,o=n[a]>>>13,n[a]&=8191;n[9]-=8192;let s=(o^1)-1;for(let a=0;a<10;a++)n[a]&=s;s=~s;for(let a=0;a<10;a++)e[a]=e[a]&s|n[a];e[0]=(e[0]|e[1]<<13)&65535,e[1]=(e[1]>>>3|e[2]<<10)&65535,e[2]=(e[2]>>>6|e[3]<<7)&65535,e[3]=(e[3]>>>9|e[4]<<4)&65535,e[4]=(e[4]>>>12|e[5]<<1|e[6]<<14)&65535,e[5]=(e[6]>>>2|e[7]<<11)&65535,e[6]=(e[7]>>>5|e[8]<<8)&65535,e[7]=(e[8]>>>8|e[9]<<5)&65535;let i=e[0]+t[0];e[0]=i&65535;for(let a=1;a<8;a++)i=(e[a]+t[a]|0)+(i>>>16)|0,e[a]=i&65535}update(e){u2(this);let{buffer:t,blockLen:n}=this;e=t1(e);let o=e.length;for(let s=0;s<o;){let i=Math.min(n-this.pos,o-s);if(i===n){for(;n<=o-s;s+=n)this.process(e,s);continue}t.set(e.subarray(s,s+i),this.pos),this.pos+=i,s+=i,this.pos===n&&(this.process(t,0,!1),this.pos=0)}return this}destroy(){this.h.fill(0),this.r.fill(0),this.buffer.fill(0),this.pad.fill(0)}digestInto(e){u2(this),lg(e,this),this.finished=!0;let{buffer:t,h:n}=this,{pos:o}=this;if(o){for(t[o++]=1;o<16;o++)t[o]=0;this.process(t,0,!0)}this.finalize();let s=0;for(let i=0;i<8;i++)e[s++]=n[i]>>>0,e[s++]=n[i]>>>8;return e}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}};function KI(r){let e=(n,o)=>r(o).update(t1(n)).digest(),t=r(new Uint8Array(32));return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=n=>r(n),e}var ug=KI(r=>new d2(r));var $I=e1("expand 16-byte k"),HI=e1("expand 32-byte k"),qI=Kn($I),WI=Kn(HI);function G(r,e){return r<<e|r>>>32-e}function f2(r){return r.byteOffset%4===0}var n1=64,zI=16,fg=2**32-1,dg=new Uint32Array;function GI(r,e,t,n,o,s,i,a){let c=o.length,l=new Uint8Array(n1),d=Kn(l),u=f2(o)&&f2(s),f=u?Kn(o):dg,m=u?Kn(s):dg;for(let h=0;h<c;i++){if(r(e,t,n,d,i,a),i>=fg)throw new Error("arx: counter overflow");let p=Math.min(n1,c-h);if(u&&p===n1){let y=h/4;if(h%4!==0)throw new Error("arx: invalid block position");for(let w=0,E;w<zI;w++)E=y+w,m[E]=f[E]^d[w];h+=n1;continue}for(let y=0,w;y<p;y++)w=h+y,s[w]=o[w]^l[y];h+=p}}function h2(r,e){let{allowShortKeys:t,extendNonceFn:n,counterLength:o,counterRight:s,rounds:i}=ag({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},e);if(typeof r!="function")throw new Error("core must be a function");return r1(o),r1(i),l2(s),l2(t),(a,c,l,d,u=0)=>{_i(a),_i(c),_i(l);let f=l.length;if(d||(d=new Uint8Array(f)),_i(d),r1(u),u<0||u>=fg)throw new Error("arx: counter overflow");if(d.length<f)throw new Error(`arx: output (${d.length}) is shorter than data (${f})`);let m=[],h=a.length,p,y;if(h===32)p=a.slice(),m.push(p),y=WI;else if(h===16&&t)p=new Uint8Array(32),p.set(a),p.set(a,16),y=qI,m.push(p);else throw new Error(`arx: invalid 32-byte key, got length=${h}`);f2(c)||(c=c.slice(),m.push(c));let w=Kn(p);if(n){if(c.length!==24)throw new Error("arx: extended nonce must be 24 bytes");n(y,w,Kn(c.subarray(0,16)),w),c=c.subarray(16)}let E=16-o;if(E!==c.length)throw new Error(`arx: nonce must be ${E} or 16 bytes`);if(E!==12){let S=new Uint8Array(12);S.set(c,s?0:12-c.length),c=S,m.push(c)}let b=Kn(c);for(GI(r,y,w,b,l,d,u,i);m.length>0;)m.pop().fill(0);return d}}function mg(r,e,t,n,o,s=20){let i=r[0],a=r[1],c=r[2],l=r[3],d=e[0],u=e[1],f=e[2],m=e[3],h=e[4],p=e[5],y=e[6],w=e[7],E=o,b=t[0],S=t[1],R=t[2],A=i,D=a,_=c,k=l,O=d,N=u,P=f,F=m,Y=h,I=p,C=y,$=w,T=E,v=b,M=S,V=R;for(let ne=0;ne<s;ne+=2)A=A+O|0,T=G(T^A,16),Y=Y+T|0,O=G(O^Y,12),A=A+O|0,T=G(T^A,8),Y=Y+T|0,O=G(O^Y,7),D=D+N|0,v=G(v^D,16),I=I+v|0,N=G(N^I,12),D=D+N|0,v=G(v^D,8),I=I+v|0,N=G(N^I,7),_=_+P|0,M=G(M^_,16),C=C+M|0,P=G(P^C,12),_=_+P|0,M=G(M^_,8),C=C+M|0,P=G(P^C,7),k=k+F|0,V=G(V^k,16),$=$+V|0,F=G(F^$,12),k=k+F|0,V=G(V^k,8),$=$+V|0,F=G(F^$,7),A=A+N|0,V=G(V^A,16),C=C+V|0,N=G(N^C,12),A=A+N|0,V=G(V^A,8),C=C+V|0,N=G(N^C,7),D=D+P|0,T=G(T^D,16),$=$+T|0,P=G(P^$,12),D=D+P|0,T=G(T^D,8),$=$+T|0,P=G(P^$,7),_=_+F|0,v=G(v^_,16),Y=Y+v|0,F=G(F^Y,12),_=_+F|0,v=G(v^_,8),Y=Y+v|0,F=G(F^Y,7),k=k+O|0,M=G(M^k,16),I=I+M|0,O=G(O^I,12),k=k+O|0,M=G(M^k,8),I=I+M|0,O=G(O^I,7);let q=0;n[q++]=i+A|0,n[q++]=a+D|0,n[q++]=c+_|0,n[q++]=l+k|0,n[q++]=d+O|0,n[q++]=u+N|0,n[q++]=f+P|0,n[q++]=m+F|0,n[q++]=h+Y|0,n[q++]=p+I|0,n[q++]=y+C|0,n[q++]=w+$|0,n[q++]=E+T|0,n[q++]=b+v|0,n[q++]=S+M|0,n[q++]=R+V|0}function YI(r,e,t,n){let o=r[0],s=r[1],i=r[2],a=r[3],c=e[0],l=e[1],d=e[2],u=e[3],f=e[4],m=e[5],h=e[6],p=e[7],y=t[0],w=t[1],E=t[2],b=t[3];for(let R=0;R<20;R+=2)o=o+c|0,y=G(y^o,16),f=f+y|0,c=G(c^f,12),o=o+c|0,y=G(y^o,8),f=f+y|0,c=G(c^f,7),s=s+l|0,w=G(w^s,16),m=m+w|0,l=G(l^m,12),s=s+l|0,w=G(w^s,8),m=m+w|0,l=G(l^m,7),i=i+d|0,E=G(E^i,16),h=h+E|0,d=G(d^h,12),i=i+d|0,E=G(E^i,8),h=h+E|0,d=G(d^h,7),a=a+u|0,b=G(b^a,16),p=p+b|0,u=G(u^p,12),a=a+u|0,b=G(b^a,8),p=p+b|0,u=G(u^p,7),o=o+l|0,b=G(b^o,16),h=h+b|0,l=G(l^h,12),o=o+l|0,b=G(b^o,8),h=h+b|0,l=G(l^h,7),s=s+d|0,y=G(y^s,16),p=p+y|0,d=G(d^p,12),s=s+d|0,y=G(y^s,8),p=p+y|0,d=G(d^p,7),i=i+u|0,w=G(w^i,16),f=f+w|0,u=G(u^f,12),i=i+u|0,w=G(w^i,8),f=f+w|0,u=G(u^f,7),a=a+c|0,E=G(E^a,16),m=m+E|0,c=G(c^m,12),a=a+c|0,E=G(E^a,8),m=m+E|0,c=G(c^m,7);let S=0;n[S++]=o,n[S++]=s,n[S++]=i,n[S++]=a,n[S++]=y,n[S++]=w,n[S++]=E,n[S++]=b}var XI=h2(mg,{counterRight:!1,counterLength:4,allowShortKeys:!1}),QI=h2(mg,{counterRight:!1,counterLength:8,extendNonceFn:YI,allowShortKeys:!1});var jI=new Uint8Array(16),hg=(r,e)=>{r.update(e);let t=e.length%16;t&&r.update(jI.subarray(t))},ZI=new Uint8Array(32);function pg(r,e,t,n,o){let s=r(e,t,ZI),i=ug.create(s);o&&hg(i,o),hg(i,n);let a=new Uint8Array(16),c=ig(a);c2(c,0,BigInt(o?o.length:0),!0),c2(c,8,BigInt(n.length),!0),i.update(a);let l=i.digest();return s.fill(0),l}var gg=r=>(e,t,n)=>(xs(e,32),xs(t),{encrypt:(s,i)=>{let a=s.length,c=a+16;i?xs(i,c):i=new Uint8Array(c),r(e,t,s,i,1);let l=pg(r,e,t,i.subarray(0,-16),n);return i.set(l,a),i},decrypt:(s,i)=>{let a=s.length,c=a-16;if(a<16)throw new Error("encrypted data must be at least 16 bytes");i?xs(i,c):i=new Uint8Array(c);let l=s.subarray(0,-16),d=s.subarray(-16),u=pg(r,e,t,l,n);if(!cg(d,u))throw new Error("invalid tag");return r(e,t,l,i,1),i}}),p2=a2({blockSize:64,nonceLength:12,tagLength:16},gg(XI)),$Y=a2({blockSize:64,nonceLength:24,tagLength:16},gg(QI));function wg(r,e,t){return ns(r),t===void 0&&(t=new Uint8Array(r.outputLen)),ho(r,Or(t),Or(e))}var m2=new Uint8Array([0]),yg=new Uint8Array;function bg(r,e,t,n=32){if(ns(r),io(n),n>255*r.outputLen)throw new Error("Length should be <= 255*HashLen");let o=Math.ceil(n/r.outputLen);t===void 0&&(t=yg);let s=new Uint8Array(o*r.outputLen),i=ho.create(r,e),a=i._cloneInto(),c=new Uint8Array(i.outputLen);for(let l=0;l<o;l++)m2[0]=l+1,a.update(l===0?yg:c).update(t).update(m2).digestInto(c),s.set(c,r.outputLen*l),i._cloneInto(a);return i.destroy(),a.destroy(),c.fill(0),m2.fill(0),s.slice(0,n)}var g2={hashSHA256(r){return xo(r.subarray())},getHKDF(r,e){let t=wg(xo,e,r),o=bg(xo,t,void 0,96),s=o.subarray(0,32),i=o.subarray(32,64),a=o.subarray(64,96);return[s,i,a]},generateX25519KeyPair(){let r=ya.utils.randomPrivateKey();return{publicKey:ya.getPublicKey(r),privateKey:r}},generateX25519KeyPairFromSeed(r){return{publicKey:ya.getPublicKey(r),privateKey:r}},generateX25519SharedKey(r,e){return ya.getSharedSecret(r.subarray(),e.subarray())},chaCha20Poly1305Encrypt(r,e,t,n){return p2(n,e,t).encrypt(r.subarray())},chaCha20Poly1305Decrypt(r,e,t,n,o){return p2(n,e,t).decrypt(r.subarray(),o)}};var Eg=g2;function xg(r){return{generateKeypair:r.generateX25519KeyPair,dh:(e,t)=>r.generateX25519SharedKey(e.privateKey,t).subarray(0,32),encrypt:r.chaCha20Poly1305Encrypt,decrypt:r.chaCha20Poly1305Decrypt,hash:r.hashSHA256,hkdf:r.getHKDF}}var Si=r=>{let e=qe(2);return e[0]=r>>8,e[1]=r,e};Si.bytes=2;var Wa=r=>{if(r.length<2)throw RangeError("Could not decode int16BE");if(r instanceof Uint8Array){let e=0;return e+=r[0]<<8,e+=r[1],e}return r.getUint16(0)};Wa.bytes=2;function vg(r){return{xxHandshakeSuccesses:r.registerCounter("libp2p_noise_xxhandshake_successes_total",{help:"Total count of noise xxHandshakes successes_"}),xxHandshakeErrors:r.registerCounter("libp2p_noise_xxhandshake_error_total",{help:"Total count of noise xxHandshakes errors"}),encryptedPackets:r.registerCounter("libp2p_noise_encrypted_packets_total",{help:"Total count of noise encrypted packets successfully"}),decryptedPackets:r.registerCounter("libp2p_noise_decrypted_packets_total",{help:"Total count of noise decrypted packets"}),decryptErrors:r.registerCounter("libp2p_noise_decrypt_errors_total",{help:"Total count of noise decrypt errors"})}}function y2(r,e){!e.enabled||!vi||(r?(e(`LOCAL_STATIC_PUBLIC_KEY ${B(r.publicKey,"hex")}`),e(`LOCAL_STATIC_PRIVATE_KEY ${B(r.privateKey,"hex")}`)):e("Missing local static keys."))}function w2(r,e){!e.enabled||!vi||(r?(e(`LOCAL_PUBLIC_EPHEMERAL_KEY ${B(r.publicKey,"hex")}`),e(`LOCAL_PRIVATE_EPHEMERAL_KEY ${B(r.privateKey,"hex")}`)):e("Missing local ephemeral keys."))}function _g(r,e){!e.enabled||!vi||e(r?`REMOTE_STATIC_PUBLIC_KEY ${B(r.subarray(),"hex")}`:"Missing remote static public key.")}function b2(r,e){!e.enabled||!vi||e(r?`REMOTE_EPHEMERAL_PUBLIC_KEY ${B(r.subarray(),"hex")}`:"Missing remote ephemeral keys.")}function E2(r,e,t){!t.enabled||!vi||(t(`CIPHER_STATE_1 ${r.n.getUint64()} ${r.k&&B(r.k,"hex")}`),t(`CIPHER_STATE_2 ${e.n.getUint64()} ${e.k&&B(e.k,"hex")}`))}function o1(r,e){if(globalThis.Buffer!=null)return globalThis.Buffer.compare(r,e);for(let t=0;t<r.byteLength;t++){if(r[t]<e[t])return-1;if(r[t]>e[t])return 1}return r.byteLength>e.byteLength?1:r.byteLength<e.byteLength?-1:0}function $n(r,e){if(r.length!==e.length)throw new Error("Inputs should have the same length");let t=qe(r.length);for(let n=0;n<r.length;n++)t[n]=r[n]^e[n];return tn(t)}var s1=class r extends Error{code;constructor(e="Unexpected Peer"){super(e),this.code=r.code}static code="ERR_UNEXPECTED_PEER"},Ri=class r extends Error{code;constructor(e="Invalid crypto exchange"){super(e),this.code=r.code}static code="ERR_INVALID_CRYPTO_EXCHANGE"};var JI=0,eD=4294967295,tD="Cipherstate has reached maximum n, a new handshake must be performed",i1=class{n;bytes;view;constructor(e=JI){this.n=e,this.bytes=Ze(12),this.view=new DataView(this.bytes.buffer,this.bytes.byteOffset,this.bytes.byteLength),this.view.setUint32(4,e,!0)}increment(){this.n++,this.view.setUint32(4,this.n,!0)}getBytes(){return this.bytes}getUint64(){return this.n}assertValue(){if(this.n>eD)throw new Error(tD)}};var vs=Ze(0),Ai=class{k;n;crypto;constructor(e,t=void 0,n=0){this.crypto=e,this.k=t,this.n=new i1(n)}hasKey(){return!!this.k}encryptWithAd(e,t){if(!this.hasKey())return t;this.n.assertValue();let n=this.crypto.encrypt(t,this.n.getBytes(),e,this.k);return this.n.increment(),n}decryptWithAd(e,t,n){if(!this.hasKey())return t;this.n.assertValue();let o=this.crypto.decrypt(t,this.n.getBytes(),e,this.k,n);return this.n.increment(),o}},x2=class{cs;ck;h;crypto;constructor(e,t){this.crypto=e;let n=L(t,"utf-8");this.h=rD(e,n),this.ck=this.h,this.cs=new Ai(e)}mixKey(e){let[t,n]=this.crypto.hkdf(this.ck,e);this.ck=t,this.cs=new Ai(this.crypto,n)}mixHash(e){this.h=this.crypto.hash(new de(this.h,e))}encryptAndHash(e){let t=this.cs.encryptWithAd(this.h,e);return this.mixHash(t),t}decryptAndHash(e){let t=this.cs.decryptWithAd(this.h,e);return this.mixHash(e),t}split(){let[e,t]=this.crypto.hkdf(this.ck,vs);return[new Ai(this.crypto,e),new Ai(this.crypto,t)]}},v2=class{ss;s;e;rs;re;initiator;crypto;constructor(e){let{crypto:t,protocolName:n,prologue:o,initiator:s,s:i,e:a,rs:c,re:l}=e;this.crypto=t,this.ss=new x2(t,n),this.ss.mixHash(o),this.initiator=s,this.s=i,this.e=a,this.rs=c,this.re=l}writeE(){if(this.e)throw new Error("ephemeral keypair is already set");let e=this.crypto.generateKeypair();return this.ss.mixHash(e.publicKey),this.e=e,e.publicKey}writeS(){if(!this.s)throw new Error("static keypair is not set");return this.ss.encryptAndHash(this.s.publicKey)}writeEE(){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.re))}writeES(){if(this.initiator){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}else{if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}}writeSE(){if(this.initiator){if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}else{if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}}readE(e,t=0){if(this.re)throw new Error("remote ephemeral public key is already set");if(e.byteLength<t+32)throw new Error("message is not long enough");this.re=e.sublist(t,t+32),this.ss.mixHash(this.re)}readS(e,t=0){if(this.rs)throw new Error("remote static public key is already set");let n=32+(this.ss.cs.hasKey()?16:0);if(e.byteLength<t+n)throw new Error("message is not long enough");let o=e.sublist(t,t+n);return this.rs=this.ss.decryptAndHash(o),n}readEE(){this.writeEE()}readES(){this.writeES()}readSE(){this.writeSE()}},za=class extends v2{writeMessageA(e){return new de(this.writeE(),this.ss.encryptAndHash(e))}writeMessageB(e){let t=this.writeE();this.writeEE();let n=this.writeS();return this.writeES(),new de(t,n,this.ss.encryptAndHash(e))}writeMessageC(e){let t=this.writeS();return this.writeSE(),new de(t,this.ss.encryptAndHash(e))}readMessageA(e){try{return this.readE(e),this.ss.decryptAndHash(e.sublist(32))}catch(t){throw new Ri(`handshake stage 0 validation fail: ${t.message}`)}}readMessageB(e){try{this.readE(e),this.readEE();let t=this.readS(e,32);return this.readES(),this.ss.decryptAndHash(e.sublist(32+t))}catch(t){throw new Ri(`handshake stage 1 validation fail: ${t.message}`)}}readMessageC(e){try{let t=this.readS(e);return this.readSE(),this.ss.decryptAndHash(e.sublist(t))}catch(t){throw new Ri(`handshake stage 2 validation fail: ${t.message}`)}}};function rD(r,e){if(e.length<=32){let t=Ze(32);return t.set(e),t}else return r.hash(e)}var a1;(function(r){let e;r.codec=()=>(e==null&&(e=te((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.webtransportCerthashes!=null)for(let s of t.webtransportCerthashes)n.uint32(10),n.bytes(s);o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={webtransportCerthashes:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.webtransportCerthashes.push(t.bytes());break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(a1||(a1={}));var Ga;(function(r){let e;r.codec=()=>(e==null&&(e=te((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.identityKey!=null&&t.identityKey.byteLength>0&&(n.uint32(10),n.bytes(t.identityKey)),t.identitySig!=null&&t.identitySig.byteLength>0&&(n.uint32(18),n.bytes(t.identitySig)),t.extensions!=null&&(n.uint32(34),a1.codec().encode(t.extensions,n)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={identityKey:Ze(0),identitySig:Ze(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.identityKey=t.bytes();break}case 2:{o.identitySig=t.bytes();break}case 4:{o.extensions=a1.codec().decode(t,t.uint32());break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(Ga||(Ga={}));async function _2(r,e,t){let n=await r.sign(Sg(e));return Ga.encode({identityKey:r.public.bytes,identitySig:n,extensions:t})}async function S2(r,e,t){try{let n=Ga.decode(r);if(t){let i=t.subarray();if(!j(i,n.identityKey))throw new Error(`Payload identity key ${B(n.identityKey,"hex")} does not match expected remote identity key ${B(i,"hex")}`)}if(!e)throw new Error("Remote static does not exist");let o=Sg(e);if(!await $r(n.identityKey).verify(o,n.identitySig))throw new Error("Invalid payload signature");return n}catch(n){throw new s1(n.message)}}function Sg(r){let e=L("noise-libp2p-static-key:");return r instanceof Uint8Array?_e([e,r],e.length+r.length):(r.prepend(e),r)}async function Rg(r){let{log:e,connection:t,crypto:n,privateKey:o,prologue:s,s:i,remoteIdentityKey:a,extensions:c}=r,l=await _2(o,i.publicKey,c),d=new za({crypto:n,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!0,prologue:s,s:i});y2(d.s,e),e.trace("Stage 0 - Initiator starting to send first message."),await t.write(d.writeMessageA(vs)),e.trace("Stage 0 - Initiator finished sending first message."),w2(d.e,e),e.trace("Stage 1 - Initiator waiting to receive first message from responder...");let u=d.readMessageB(await t.read());e.trace("Stage 1 - Initiator received the message."),b2(d.re,e),_g(d.rs,e),e.trace("Initiator going to check remote's signature...");let f=await S2(u,d.rs,a);e.trace("All good with the signature!"),e.trace("Stage 2 - Initiator sending third handshake message."),await t.write(d.writeMessageC(l)),e.trace("Stage 2 - Initiator sent message with signed payload.");let[m,h]=d.ss.split();return E2(m,h,e),{payload:f,encrypt:p=>m.encryptWithAd(vs,p),decrypt:(p,y)=>h.decryptWithAd(vs,p,y)}}async function Ag(r){let{log:e,connection:t,crypto:n,privateKey:o,prologue:s,s:i,remoteIdentityKey:a,extensions:c}=r,l=await _2(o,i.publicKey,c),d=new za({crypto:n,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!1,prologue:s,s:i});y2(d.s,e),e.trace("Stage 0 - Responder waiting to receive first message."),d.readMessageA(await t.read()),e.trace("Stage 0 - Responder received first message."),b2(d.re,e),e.trace("Stage 1 - Responder sending out first message with signed payload and static key."),await t.write(d.writeMessageB(l)),e.trace("Stage 1 - Responder sent the second handshake message with signed payload."),w2(d.e,e),e.trace("Stage 2 - Responder waiting for third handshake message...");let u=d.readMessageC(await t.read());e.trace("Stage 2 - Responder received the message, finished handshake.");let f=await S2(u,d.rs,a),[m,h]=d.ss.split();return E2(m,h,e),{payload:f,encrypt:p=>h.encryptWithAd(vs,p),decrypt:(p,y)=>m.decryptWithAd(vs,p,y)}}var Dg=16;function Tg(r,e){return async function*(t){for await(let n of t)for(let o=0;o<n.length;o+=65519){let s=o+65519;s>n.length&&(s=n.length);let i;n instanceof Uint8Array?i=r.encrypt(n.subarray(o,s)):i=r.encrypt(n.sublist(o,s)),e?.encryptedPackets.increment(),yield new de(Si(i.byteLength),i)}}}function kg(r,e){return async function*(t){for await(let n of t)for(let o=0;o<n.length;o+=65535){let s=o+65535;if(s>n.length&&(s=n.length),s-Dg<o)throw new Error("Invalid chunk");let i=n.sublist(o,s),a=n.subarray(o,s-Dg);try{let c=r.decrypt(i,a);e?.decryptedPackets.increment(),yield c}catch(c){throw e?.decryptErrors.increment(),c}}}}var c1=class{protocol="/noise";crypto;prologue;staticKey;extensions;metrics;components;constructor(e,t={}){let{staticNoiseKey:n,extensions:o,crypto:s,prologueBytes:i}=t,{metrics:a}=e;this.components=e;let c=s??Eg;this.crypto=xg(c),this.extensions=o,this.metrics=a?vg(a):void 0,n?this.staticKey=c.generateX25519KeyPairFromSeed(n):this.staticKey=c.generateX25519KeyPair(),this.prologue=i??Ze(0)}async secureOutbound(e,t,n){let o=ln(t,{lengthEncoder:Si,lengthDecoder:Wa,maxDataLength:65535});if(!e.privateKey)throw new g("local peerId does not contain private key","ERR_NO_PRIVATE_KEY");let s=await mr(e.privateKey),i=n?.publicKey,a=await this.performHandshakeInitiator(o,s,i),c=await this.createSecureConnection(o,a);return t.source=c.source,t.sink=c.sink,{conn:t,remoteExtensions:a.payload.extensions,remotePeer:await ut(a.payload.identityKey)}}async secureInbound(e,t,n){let o=ln(t,{lengthEncoder:Si,lengthDecoder:Wa,maxDataLength:65535});if(!e.privateKey)throw new g("local peerId does not contain private key","ERR_NO_PRIVATE_KEY");let s=await mr(e.privateKey),i=n?.publicKey,a=await this.performHandshakeResponder(o,s,i),c=await this.createSecureConnection(o,a);return t.source=c.source,t.sink=c.sink,{conn:t,remoteExtensions:a.payload.extensions,remotePeer:await ut(a.payload.identityKey)}}async performHandshakeInitiator(e,t,n){let o;try{o=await Rg({connection:e,privateKey:t,remoteIdentityKey:n,log:this.components.logger.forComponent("libp2p:noise:xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:this.extensions}),this.metrics?.xxHandshakeSuccesses.increment()}catch(s){throw this.metrics?.xxHandshakeErrors.increment(),s}return o}async performHandshakeResponder(e,t,n){let o;try{o=await Ag({connection:e,privateKey:t,remoteIdentityKey:n,log:this.components.logger.forComponent("libp2p:noise:xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:this.extensions}),this.metrics?.xxHandshakeSuccesses.increment()}catch(s){throw this.metrics?.xxHandshakeErrors.increment(),s}return o}async createSecureConnection(e,t){let[n,o]=og(),s=e.unwrap();return await Ge(n,Tg(t,this.metrics),s,i=>Ft(i,{lengthDecoder:Wa}),kg(t,this.metrics),n),o}};function Ii(r={}){return e=>new c1(e,r)}function l1(r){if(r!=null){if(typeof r[Symbol.iterator]=="function")return r[Symbol.iterator]();if(typeof r[Symbol.asyncIterator]=="function")return r[Symbol.asyncIterator]();if(typeof r.next=="function")return r}throw new Error("argument is not an iterator or iterable")}var Di="ERR_INVALID_FRAME",R2="ERR_UNREQUESTED_PING",A2="ERR_NOT_MATCHING_PING",I2="ERR_STREAM_ALREADY_EXISTS",D2="ERR_DECODE_INVALID_VERSION",T2="ERR_BOTH_CLIENTS",k2="ERR_RECV_WINDOW_EXCEEDED",Cg=new Set([Di,R2,A2,I2,D2,T2,k2]),Do="ERR_INVALID_CONFIG",u1="ERR_MUXER_LOCAL_CLOSED",C2="ERR_MUXER_REMOTE_CLOSED";var Ng="ERR_STREAM_ABORT",Og="ERROR_MAX_OUTBOUND_STREAMS_EXCEEDED",Pg="ERR_DECODE_IN_PROGRESS",Xa=256*1024,Lg=16*1024*1024;var Bg={enableKeepAlive:!0,keepAliveInterval:3e4,maxInboundStreams:1e3,maxOutboundStreams:1e3,initialStreamWindowSize:Xa,maxStreamWindowSize:Lg,maxMessageSize:64*1024};function Mg(r){if(r.keepAliveInterval<=0)throw new g("keep-alive interval must be positive",Do);if(r.maxInboundStreams<0)throw new g("max inbound streams must be larger or equal 0",Do);if(r.maxOutboundStreams<0)throw new g("max outbound streams must be larger or equal 0",Do);if(r.initialStreamWindowSize<Xa)throw new g("InitialStreamWindowSize must be larger or equal 256 kB",Do);if(r.maxStreamWindowSize<r.initialStreamWindowSize)throw new g("MaxStreamWindowSize must be larger than the InitialStreamWindowSize",Do);if(r.maxStreamWindowSize>2**32-1)throw new g("MaxStreamWindowSize must be less than equal MAX_UINT32",Do);if(r.maxMessageSize<1024)throw new g("MaxMessageSize must be greater than a kilobyte",Do)}var Xe;(function(r){r[r.Data=0]="Data",r[r.WindowUpdate=1]="WindowUpdate",r[r.Ping=2]="Ping",r[r.GoAway=3]="GoAway"})(Xe||(Xe={}));var He;(function(r){r[r.SYN=1]="SYN",r[r.ACK=2]="ACK",r[r.FIN=4]="FIN",r[r.RST=8]="RST"})(He||(He={}));var wQ=Object.values(He).filter(r=>typeof r!="string"),Ug=0,xr;(function(r){r[r.NormalTermination=0]="NormalTermination",r[r.ProtocolError=1]="ProtocolError",r[r.InternalError=2]="InternalError"})(xr||(xr={}));var To=12;var Fg=2**24;function nD(r){if(r[0]!==Ug)throw new g("Invalid frame version",D2);return{type:r[1],flag:(r[2]<<8)+r[3],streamID:r[4]*Fg+(r[5]<<16)+(r[6]<<8)+r[7],length:r[8]*Fg+(r[9]<<16)+(r[10]<<8)+r[11]}}var d1=class{source;buffer;frameInProgress;constructor(e){this.source=oD(e),this.buffer=new de,this.frameInProgress=!1}async*emitFrames(){for await(let e of this.source)for(this.buffer.append(e);;){let t=this.readHeader();if(t===void 0)break;let{type:n,length:o}=t;n===Xe.Data?(this.frameInProgress=!0,yield{header:t,readData:this.readBytes.bind(this,o)}):yield{header:t}}}readHeader(){if(this.frameInProgress)throw new g("decoding frame already in progress",Pg);if(this.buffer.length<To)return;let e=nD(this.buffer.subarray(0,To));return this.buffer.consume(To),e}async readBytes(e){if(this.buffer.length<e){for await(let n of this.source)if(this.buffer.append(n),this.buffer.length>=e)break}let t=this.buffer.sublist(0,e);return this.buffer.consume(e),this.frameInProgress=!1,t}};function oD(r){if(r[Symbol.iterator]!==void 0){let e=r[Symbol.iterator]();return e.return=void 0,{[Symbol.iterator](){return e}}}else if(r[Symbol.asyncIterator]!==void 0){let e=r[Symbol.asyncIterator]();return e.return=void 0,{[Symbol.asyncIterator](){return e}}}else throw new Error("a source must be either an iterable or an async iterable")}function N2(r){let e=new Uint8Array(To);return e[1]=r.type,e[2]=r.flag>>>8,e[3]=r.flag,e[4]=r.streamID>>>24,e[5]=r.streamID>>>16,e[6]=r.streamID>>>8,e[7]=r.streamID,e[8]=r.length>>>24,e[9]=r.length>>>16,e[10]=r.length>>>8,e[11]=r.length,e}function Vg(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function f1(r,e){let t=l1(r).return?.();Vg(t)&&t.catch(n=>{e.error("could not cause iterator to return",n)})}var sD="ERR_STREAM_RESET",iD="ERR_SINK_INVALID_STATE",aD=5e3;function O2(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var ko=class{id;direction;timeline;protocol;metadata;source;status;readStatus;writeStatus;log;sinkController;sinkEnd;closed;endErr;streamSource;onEnd;onCloseRead;onCloseWrite;onReset;onAbort;sendCloseWriteTimeout;sendingData;constructor(e){this.sinkController=new AbortController,this.sinkEnd=se(),this.closed=se(),this.log=e.log,this.status="open",this.readStatus="ready",this.writeStatus="ready",this.id=e.id,this.metadata=e.metadata??{},this.direction=e.direction,this.timeline={open:Date.now()},this.sendCloseWriteTimeout=e.sendCloseWriteTimeout??aD,this.onEnd=e.onEnd,this.onCloseRead=e?.onCloseRead,this.onCloseWrite=e?.onCloseWrite,this.onReset=e?.onReset,this.onAbort=e?.onAbort,this.source=this.streamSource=nt({onEnd:t=>{t!=null?this.log.trace("source ended with error",t):this.log.trace("source ended"),this.onSourceEnd(t)}}),this.sink=this.sink.bind(this)}async sink(e){if(this.writeStatus!=="ready")throw new g(`writable end state is "${this.writeStatus}" not "ready"`,iD);try{this.writeStatus="writing";let t={signal:this.sinkController.signal};if(this.direction==="outbound"){let o=this.sendNewStream(t);O2(o)&&await o}let n=()=>{f1(e,this.log)};try{this.sinkController.signal.addEventListener("abort",n),this.log.trace("sink reading from source");for await(let o of e){o=o instanceof Uint8Array?new de(o):o;let s=this.sendData(o,t);O2(s)&&(this.sendingData=se(),await s,this.sendingData.resolve(),this.sendingData=void 0)}}finally{this.sinkController.signal.removeEventListener("abort",n)}this.log.trace('sink finished reading from source, write status is "%s"',this.writeStatus),this.writeStatus==="writing"&&(this.writeStatus="closing",this.log.trace("send close write to remote"),await this.sendCloseWrite({signal:AbortSignal.timeout(this.sendCloseWriteTimeout)}),this.writeStatus="closed"),this.onSinkEnd()}catch(t){throw this.log.trace("sink ended with error, calling abort with error",t),this.abort(t),t}finally{this.log.trace("resolve sink end"),this.sinkEnd.resolve()}}onSourceEnd(e){this.timeline.closeRead==null&&(this.timeline.closeRead=Date.now(),this.readStatus="closed",e!=null&&this.endErr==null&&(this.endErr=e),this.onCloseRead?.(),this.timeline.closeWrite!=null?(this.log.trace("source and sink ended"),this.timeline.close=Date.now(),this.status!=="aborted"&&this.status!=="reset"&&(this.status="closed"),this.onEnd!=null&&this.onEnd(this.endErr),this.closed.resolve()):this.log.trace("source ended, waiting for sink to end"))}onSinkEnd(e){this.timeline.closeWrite==null&&(this.timeline.closeWrite=Date.now(),this.writeStatus="closed",e!=null&&this.endErr==null&&(this.endErr=e),this.onCloseWrite?.(),this.timeline.closeRead!=null?(this.log.trace("sink and source ended"),this.timeline.close=Date.now(),this.status!=="aborted"&&this.status!=="reset"&&(this.status="closed"),this.onEnd!=null&&this.onEnd(this.endErr),this.closed.resolve()):this.log.trace("sink ended, waiting for source to end"))}async close(e){this.log.trace("closing gracefully"),this.status="closing",await Lt(Promise.all([this.closeWrite(e),this.closeRead(e),this.closed.promise]),e?.signal),this.status="closed",this.log.trace("closed gracefully")}async closeRead(e={}){if(this.readStatus==="closing"||this.readStatus==="closed")return;this.log.trace('closing readable end of stream with starting read status "%s"',this.readStatus);let t=this.readStatus;this.readStatus="closing",this.status!=="reset"&&this.status!=="aborted"&&this.timeline.closeRead==null&&(this.log.trace("send close read to remote"),await this.sendCloseRead(e)),t==="ready"&&(this.log.trace("ending internal source queue with %d queued bytes",this.streamSource.readableLength),this.streamSource.end()),this.log.trace("closed readable end of stream")}async closeWrite(e={}){this.writeStatus==="closing"||this.writeStatus==="closed"||(this.log.trace('closing writable end of stream with starting write status "%s"',this.writeStatus),this.writeStatus==="ready"&&(this.log.trace("sink was never sunk, sink an empty array"),await Lt(this.sink([]),e.signal)),this.writeStatus==="writing"&&(this.sendingData!=null&&await Lt(this.sendingData.promise,e.signal),this.log.trace("aborting source passed to .sink"),this.sinkController.abort(),await Lt(this.sinkEnd.promise,e.signal)),this.writeStatus="closed",this.log.trace("closed writable end of stream"))}abort(e){if(this.status==="closed"||this.status==="aborted"||this.status==="reset")return;this.log("abort with error",e),this.log("try to send reset to remote");let t=this.sendReset();O2(t)&&t.catch(n=>{this.log.error("error sending reset message",n)}),this.status="aborted",this.timeline.abort=Date.now(),this._closeSinkAndSource(e),this.onAbort?.(e)}reset(){if(this.status==="closed"||this.status==="aborted"||this.status==="reset")return;let e=new g("stream reset",sD);this.status="reset",this.timeline.reset=Date.now(),this._closeSinkAndSource(e),this.onReset?.()}_closeSinkAndSource(e){this._closeSink(e),this._closeSource(e)}_closeSink(e){this.writeStatus==="writing"&&(this.log.trace("end sink source"),this.sinkController.abort()),this.onSinkEnd(e)}_closeSource(e){this.readStatus!=="closing"&&this.readStatus!=="closed"&&(this.log.trace("ending source with %d bytes to be read by consumer",this.streamSource.readableLength),this.readStatus="closing",this.streamSource.end(e))}remoteCloseWrite(){if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("received remote close write but local source is already closed");return}this.log.trace("remote close write"),this._closeSource()}remoteCloseRead(){if(this.writeStatus==="closing"||this.writeStatus==="closed"){this.log("received remote close read but local sink is already closed");return}this.log.trace("remote close read"),this._closeSink()}destroy(){if(this.status==="closed"||this.status==="aborted"||this.status==="reset"){this.log("received destroy but we are already closed");return}this.log.trace("stream destroyed"),this._closeSinkAndSource()}sourcePush(e){this.streamSource.push(e)}sourceReadableLength(){return this.streamSource.readableLength}};var vr;(function(r){r[r.Init=0]="Init",r[r.SYNSent=1]="SYNSent",r[r.SYNReceived=2]="SYNReceived",r[r.Established=3]="Established",r[r.Finished=4]="Finished"})(vr||(vr={}));var h1=class extends ko{name;state;config;_id;sendWindowCapacity;sendWindowCapacityUpdate;recvWindow;recvWindowCapacity;epochStart;getRTT;sendFrame;constructor(e){super({...e,onEnd:t=>{this.state=vr.Finished,e.onEnd?.(t)}}),this.config=e.config,this._id=parseInt(e.id,10),this.name=e.name,this.state=e.state,this.sendWindowCapacity=Xa,this.recvWindow=this.config.initialStreamWindowSize,this.recvWindowCapacity=this.recvWindow,this.epochStart=Date.now(),this.getRTT=e.getRTT,this.sendFrame=e.sendFrame,this.source=qo(this.source,()=>{this.sendWindowUpdate()})}async sendNewStream(){}async sendData(e,t={}){for(e=e.sublist();e.byteLength!==0;){if(this.sendWindowCapacity===0&&(this.log?.trace("wait for send window capacity, status %s",this.status),await this.waitForSendWindowCapacity(t),this.status==="closed"||this.status==="aborted"||this.status==="reset")){this.log?.trace("%s while waiting for send window capacity",this.status);return}let n=Math.min(this.sendWindowCapacity,this.config.maxMessageSize-To,e.length),o=this.getSendFlags();this.sendFrame({type:Xe.Data,flag:o,streamID:this._id,length:n},e.sublist(0,n)),this.sendWindowCapacity-=n,e.consume(n)}}async sendReset(){this.sendFrame({type:Xe.WindowUpdate,flag:He.RST,streamID:this._id,length:0})}async sendCloseWrite(){let e=this.getSendFlags()|He.FIN;this.sendFrame({type:Xe.WindowUpdate,flag:e,streamID:this._id,length:0})}async sendCloseRead(){}async waitForSendWindowCapacity(e={}){if(this.sendWindowCapacity>0)return;let t,n,o=()=>{this.status==="open"||this.status==="closing"?n(new g("stream aborted",Ng)):t()};e.signal?.addEventListener("abort",o);try{await new Promise((s,i)=>{this.sendWindowCapacityUpdate=()=>{s()},n=i,t=s})}finally{e.signal?.removeEventListener("abort",o)}}handleWindowUpdate(e){this.log?.trace("stream received window update id=%s",this._id),this.processFlags(e.flag);let t=this.sendWindowCapacity;this.sendWindowCapacity+=e.length,t===0&&e.length>0&&this.sendWindowCapacityUpdate?.()}async handleData(e,t){if(this.log?.trace("stream received data id=%s",this._id),this.processFlags(e.flag),this.recvWindowCapacity<e.length)throw new g("receive window exceeded",k2,{available:this.recvWindowCapacity,recv:e.length});let n=await t();this.recvWindowCapacity-=e.length,this.sourcePush(n)}processFlags(e){(e&He.ACK)===He.ACK&&this.state===vr.SYNSent&&(this.state=vr.Established),(e&He.FIN)===He.FIN&&this.remoteCloseWrite(),(e&He.RST)===He.RST&&this.reset()}getSendFlags(){switch(this.state){case vr.Init:return this.state=vr.SYNSent,He.SYN;case vr.SYNReceived:return this.state=vr.Established,He.ACK;default:return 0}}sendWindowUpdate(){let e=this.getSendFlags(),t=Date.now(),n=this.getRTT();if(e===0&&n>-1&&t-this.epochStart<n*4&&(this.recvWindow=Math.min(this.recvWindow*2,this.config.maxStreamWindowSize)),this.recvWindowCapacity>=this.recvWindow&&e===0)return;let o=this.recvWindow-this.recvWindowCapacity;this.recvWindowCapacity=this.recvWindow,this.epochStart=t,this.sendFrame({type:Xe.WindowUpdate,flag:e,streamID:this._id,length:o})}};var Kg="/yamux/1.0.0",cD=500,p1=class{protocol=Kg;_components;_init;constructor(e,t={}){this._components=e,this._init=t}createStreamMuxer(e){return new P2(this._components,{...this._init,...e})}},P2=class{protocol=Kg;source;sink;config;log;logger;closeController;nextStreamID;_streams;nextPingID;activePing;rtt;client;localGoAway;remoteGoAway;numInboundStreams;numOutboundStreams;onIncomingStream;onStreamEnd;constructor(e,t){this.client=t.direction==="outbound",this.config={...Bg,...t},this.logger=e.logger,this.log=this.logger.forComponent("libp2p:yamux"),Mg(this.config),this.closeController=new AbortController,ve(1/0,this.closeController.signal),this.onIncomingStream=t.onIncomingStream,this.onStreamEnd=t.onStreamEnd,this._streams=new Map,this.source=nt({onEnd:()=>{this.log?.trace("muxer source ended"),this._streams.forEach(n=>{n.destroy()})}}),this.sink=async n=>{let o=()=>{let a=l1(n);if(a.return!=null){let c=a.return();lD(c)&&c.catch(l=>{this.log?.("could not cause sink source to return",l)})}},s,i;try{let a=new d1(n);try{this.closeController.signal.addEventListener("abort",o);for await(let c of a.emitFrames())await this.handleFrame(c.header,c.readData)}finally{this.closeController.signal.removeEventListener("abort",o)}s=xr.NormalTermination}catch(a){let c=a.code;Cg.has(c)?(this.log?.error("protocol error in sink",a),s=xr.ProtocolError):(this.log?.error("internal error in sink",a),s=xr.InternalError),i=a}this.log?.trace("muxer sink ended"),i!=null?this.abort(i,s):await this.close({reason:s})},this.numInboundStreams=0,this.numOutboundStreams=0,this.nextStreamID=this.client?1:2,this.nextPingID=0,this.rtt=-1,this.log?.trace("muxer created"),this.config.enableKeepAlive&&this.keepAliveLoop().catch(n=>this.log?.error("keepalive error: %s",n)),this.ping().catch(n=>this.log?.error("ping error: %s",n))}get streams(){return Array.from(this._streams.values())}newStream(e){if(this.remoteGoAway!==void 0)throw new g("muxer closed remotely",C2);if(this.localGoAway!==void 0)throw new g("muxer closed locally",u1);let t=this.nextStreamID;if(this.nextStreamID+=2,this.numOutboundStreams>=this.config.maxOutboundStreams)throw new g("max outbound streams exceeded",Og);this.log?.trace("new outgoing stream id=%s",t);let n=this._newStream(t,e,vr.Init,"outbound");return this._streams.set(t,n),this.numOutboundStreams++,n.sendWindowUpdate(),n}async ping(){if(this.remoteGoAway!==void 0)throw new g("muxer closed remotely",C2);if(this.localGoAway!==void 0)throw new g("muxer closed locally",u1);if(this.activePing===void 0){let e=()=>{};this.activePing={id:this.nextPingID++,promise:new Promise((o,s)=>{let i=()=>{s(new g("muxer closed locally",u1))};this.closeController.signal.addEventListener("abort",i,{once:!0}),e=()=>{this.closeController.signal.removeEventListener("abort",i),o()}}),resolve:e};let t=Date.now();this.sendPing(this.activePing.id);try{await this.activePing.promise}finally{delete this.activePing}let n=Date.now();this.rtt=n-t}else await this.activePing.promise;return this.rtt}getRTT(){return this.rtt}async close(e={}){if(this.closeController.signal.aborted)return;let t=e?.reason??xr.NormalTermination;if(this.log?.trace("muxer close reason=%s",t),e.signal==null){let n=AbortSignal.timeout(cD);ve(1/0,n),e={...e,signal:n}}try{await Promise.all([...this._streams.values()].map(async n=>n.close(e))),this.sendGoAway(t),this._closeMuxer()}catch(n){this.abort(n)}}abort(e,t){if(!this.closeController.signal.aborted){t=t??xr.InternalError,this.log?.error("muxer abort reason=%s error=%s",t,e);for(let n of this._streams.values())n.abort(e);this.sendGoAway(t),this._closeMuxer()}}isClosed(){return this.closeController.signal.aborted}_closeMuxer(){this.closeController.abort(),this.source.end()}_newStream(e,t,n,o){if(this._streams.get(e)!=null)throw new g("Stream already exists",I2,{id:e});let s=new h1({id:e.toString(),name:t,state:n,direction:o,sendFrame:this.sendFrame.bind(this),onEnd:()=>{this.closeStream(e),this.onStreamEnd?.(s)},log:this.logger.forComponent(`libp2p:yamux:${o}:${e}`),config:this.config,getRTT:this.getRTT.bind(this)});return s}closeStream(e){this.client===(e%2===0)?this.numInboundStreams--:this.numOutboundStreams--,this._streams.delete(e)}async keepAliveLoop(){let e=new Promise((t,n)=>{this.closeController.signal.addEventListener("abort",n,{once:!0})});for(this.log?.trace("muxer keepalive enabled interval=%s",this.config.keepAliveInterval);;){let t;try{await Promise.race([e,new Promise(n=>{t=setTimeout(n,this.config.keepAliveInterval)})]),this.ping().catch(n=>this.log?.error("ping error: %s",n))}catch{clearInterval(t);return}}}async handleFrame(e,t){let{streamID:n,type:o,length:s}=e;if(this.log?.trace("received frame %o",e),n===0)switch(o){case Xe.Ping:{this.handlePing(e);return}case Xe.GoAway:{this.handleGoAway(s);return}default:throw new g("Invalid frame type",Di,{header:e})}else switch(e.type){case Xe.Data:case Xe.WindowUpdate:{await this.handleStreamMessage(e,t);return}default:throw new g("Invalid frame type",Di,{header:e})}}handlePing(e){if(e.flag===He.SYN)this.log?.trace("received ping request pingId=%s",e.length),this.sendPing(e.length,He.ACK);else if(e.flag===He.ACK)this.log?.trace("received ping response pingId=%s",e.length),this.handlePingResponse(e.length);else throw new g("Invalid frame flag",Di,{header:e})}handlePingResponse(e){if(this.activePing===void 0)throw new g("ping not requested",R2);if(this.activePing.id!==e)throw new g("ping doesn't match our id",A2);this.activePing.resolve()}handleGoAway(e){this.log?.trace("received GoAway reason=%s",xr[e]??"unknown"),this.remoteGoAway=e;for(let t of this._streams.values())t.reset();this._closeMuxer()}async handleStreamMessage(e,t){let{streamID:n,flag:o,type:s}=e;(o&He.SYN)===He.SYN&&this.incomingStream(n);let i=this._streams.get(n);if(i===void 0){if(s===Xe.Data){if(this.log?.("discarding data for stream id=%s",n),t===void 0)throw new Error("unreachable");await t()}else this.log?.("frame for missing stream id=%s",n);return}switch(s){case Xe.WindowUpdate:{i.handleWindowUpdate(e);return}case Xe.Data:{if(t===void 0)throw new Error("unreachable");await i.handleData(e,t);return}default:throw new Error("unreachable")}}incomingStream(e){if(this.client!==(e%2===0))throw new g("both endpoints are clients",T2);if(this._streams.has(e))return;if(this.log?.trace("new incoming stream id=%s",e),this.localGoAway!==void 0){this.sendFrame({type:Xe.WindowUpdate,flag:He.RST,streamID:e,length:0});return}if(this.numInboundStreams>=this.config.maxInboundStreams){this.log?.("maxIncomingStreams exceeded, forcing stream reset"),this.sendFrame({type:Xe.WindowUpdate,flag:He.RST,streamID:e,length:0});return}let t=this._newStream(e,void 0,vr.SYNReceived,"inbound");this.numInboundStreams++,this._streams.set(e,t),this.onIncomingStream?.(t)}sendFrame(e,t){if(this.log?.trace("sending frame %o",e),e.type===Xe.Data){if(t===void 0)throw new g("invalid frame",Di);this.source.push(new de(N2(e),t))}else this.source.push(N2(e))}sendPing(e,t=He.SYN){t===He.SYN?this.log?.trace("sending ping request pingId=%s",e):this.log?.trace("sending ping response pingId=%s",e),this.sendFrame({type:Xe.Ping,flag:t,streamID:0,length:e})}sendGoAway(e=xr.NormalTermination){this.log?.("sending GoAway reason=%s",xr[e]),this.localGoAway=e,this.sendFrame({type:Xe.GoAway,flag:0,streamID:0,length:e})}};function lD(r){return r!=null&&typeof r.then=="function"}function $g(r={}){return e=>new p1(e,r)}var m1=async()=>{let r=await Ia("Ed25519"),e=await uD(r);if(e.type==="Ed25519")return e;throw new Error(`Generated unexpected PeerId type "${e.type}"`)};async function uD(r){return ut(v0(r.public),_0(r))}var qg=ke(Hg(),1),dD=["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"],fD=dD.map(r=>new qg.Netmask(r));function hD(r){for(let e of fD)if(e.contains(r))return!0;return!1}function pD(r){return/^::$/.test(r)||/^::1$/.test(r)||/^::f{4}:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^::f{4}:0.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.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 _r(r){return Qs(r)?hD(r):js(r)?pD(r):void 0}var g1=globalThis.CustomEvent??Event;async function*Hn(r,e={}){let t=e.concurrency??1/0;t<1&&(t=1/0);let n=e.ordered==null?!1:e.ordered,o=new EventTarget,s=[],i=se(),a=se(),c=!1,l,d=!1;o.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let h of r){if(s.length===t&&(i=se(),await i.promise),d)break;let p={done:!1};s.push(p),h().then(y=>{p.done=!0,p.ok=!0,p.value=y,o.dispatchEvent(new g1("task-complete"))},y=>{p.done=!0,p.err=y,o.dispatchEvent(new g1("task-complete"))})}c=!0,o.dispatchEvent(new g1("task-complete"))}catch(h){l=h,o.dispatchEvent(new g1("task-complete"))}});function u(){return n?s[0]?.done:!!s.find(h=>h.done)}function*f(){for(;s.length>0&&s[0].done;){let h=s[0];if(s.shift(),h.ok)yield h.value;else throw d=!0,i.resolve(),h.err;i.resolve()}}function*m(){for(;u();)for(let h=0;h<s.length;h++)if(s[h].done){let p=s[h];if(s.splice(h,1),h--,p.ok)yield p.value;else throw d=!0,i.resolve(),p.err;i.resolve()}}for(;;){if(u()||(a=se(),await a.promise),l!=null)throw l;if(n?yield*f():yield*m(),c&&s.length===0)break}}var Wg="libp2p",zg="autonat",Gg="1.0.0";var he;(function(r){let e;(function(l){l.DIAL="DIAL",l.DIAL_RESPONSE="DIAL_RESPONSE"})(e=r.MessageType||(r.MessageType={}));let t;(function(l){l[l.DIAL=0]="DIAL",l[l.DIAL_RESPONSE=1]="DIAL_RESPONSE"})(t||(t={})),function(l){l.codec=()=>Ve(t)}(e=r.MessageType||(r.MessageType={}));let n;(function(l){l.OK="OK",l.E_DIAL_ERROR="E_DIAL_ERROR",l.E_DIAL_REFUSED="E_DIAL_REFUSED",l.E_BAD_REQUEST="E_BAD_REQUEST",l.E_INTERNAL_ERROR="E_INTERNAL_ERROR"})(n=r.ResponseStatus||(r.ResponseStatus={}));let o;(function(l){l[l.OK=0]="OK",l[l.E_DIAL_ERROR=100]="E_DIAL_ERROR",l[l.E_DIAL_REFUSED=101]="E_DIAL_REFUSED",l[l.E_BAD_REQUEST=200]="E_BAD_REQUEST",l[l.E_INTERNAL_ERROR=300]="E_INTERNAL_ERROR"})(o||(o={})),function(l){l.codec=()=>Ve(o)}(n=r.ResponseStatus||(r.ResponseStatus={}));let s;(function(l){let d;l.codec=()=>(d==null&&(d=te((u,f,m={})=>{if(m.lengthDelimited!==!1&&f.fork(),u.id!=null&&(f.uint32(10),f.bytes(u.id)),u.addrs!=null)for(let h of u.addrs)f.uint32(18),f.bytes(h);m.lengthDelimited!==!1&&f.ldelim()},(u,f)=>{let m={addrs:[]},h=f==null?u.len:u.pos+f;for(;u.pos<h;){let p=u.uint32();switch(p>>>3){case 1:m.id=u.bytes();break;case 2:m.addrs.push(u.bytes());break;default:u.skipType(p&7);break}}return m})),d),l.encode=u=>ee(u,l.codec()),l.decode=u=>J(u,l.codec())})(s=r.PeerInfo||(r.PeerInfo={}));let i;(function(l){let d;l.codec=()=>(d==null&&(d=te((u,f,m={})=>{m.lengthDelimited!==!1&&f.fork(),u.peer!=null&&(f.uint32(10),r.PeerInfo.codec().encode(u.peer,f)),m.lengthDelimited!==!1&&f.ldelim()},(u,f)=>{let m={},h=f==null?u.len:u.pos+f;for(;u.pos<h;){let p=u.uint32();switch(p>>>3){case 1:m.peer=r.PeerInfo.codec().decode(u,u.uint32());break;default:u.skipType(p&7);break}}return m})),d),l.encode=u=>ee(u,l.codec()),l.decode=u=>J(u,l.codec())})(i=r.Dial||(r.Dial={}));let a;(function(l){let d;l.codec=()=>(d==null&&(d=te((u,f,m={})=>{m.lengthDelimited!==!1&&f.fork(),u.status!=null&&(f.uint32(8),r.ResponseStatus.codec().encode(u.status,f)),u.statusText!=null&&(f.uint32(18),f.string(u.statusText)),u.addr!=null&&(f.uint32(26),f.bytes(u.addr)),m.lengthDelimited!==!1&&f.ldelim()},(u,f)=>{let m={},h=f==null?u.len:u.pos+f;for(;u.pos<h;){let p=u.uint32();switch(p>>>3){case 1:m.status=r.ResponseStatus.codec().decode(u);break;case 2:m.statusText=u.string();break;case 3:m.addr=u.bytes();break;default:u.skipType(p&7);break}}return m})),d),l.encode=u=>ee(u,l.codec()),l.decode=u=>J(u,l.codec())})(a=r.DialResponse||(r.DialResponse={}));let c;r.codec=()=>(c==null&&(c=te((l,d,u={})=>{u.lengthDelimited!==!1&&d.fork(),l.type!=null&&(d.uint32(8),r.MessageType.codec().encode(l.type,d)),l.dial!=null&&(d.uint32(18),r.Dial.codec().encode(l.dial,d)),l.dialResponse!=null&&(d.uint32(26),r.DialResponse.codec().encode(l.dialResponse,d)),u.lengthDelimited!==!1&&d.ldelim()},(l,d)=>{let u={},f=d==null?l.len:l.pos+d;for(;l.pos<f;){let m=l.uint32();switch(m>>>3){case 1:u.type=r.MessageType.codec().decode(l);break;case 2:u.dial=r.Dial.codec().decode(l,l.uint32());break;case 3:u.dialResponse=r.DialResponse.codec().decode(l,l.uint32());break;default:l.skipType(m&7);break}}return u})),c),r.encode=l=>ee(l,r.codec()),r.decode=l=>J(l,r.codec())})(he||(he={}));var L2=4,y1=class{components;startupDelay;refreshInterval;protocol;timeout;maxInboundStreams;maxOutboundStreams;verifyAddressTimeout;started;log;constructor(e,t){this.components=e,this.log=e.logger.forComponent("libp2p:autonat"),this.started=!1,this.protocol=`/${t.protocolPrefix??Wg}/${zg}/${Gg}`,this.timeout=t.timeout??3e4,this.maxInboundStreams=t.maxInboundStreams??1,this.maxOutboundStreams=t.maxOutboundStreams??1,this.startupDelay=t.startupDelay??5e3,this.refreshInterval=t.refreshInterval??6e4,this._verifyExternalAddresses=this._verifyExternalAddresses.bind(this)}isStarted(){return this.started}async start(){this.started||(await this.components.registrar.handle(this.protocol,e=>{this.handleIncomingAutonatStream(e).catch(t=>{this.log.error("error handling incoming autonat stream",t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}),this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.startupDelay),this.started=!0)}async stop(){await this.components.registrar.unhandle(this.protocol),clearTimeout(this.verifyAddressTimeout),this.started=!1}async handleIncomingAutonatStream(e){let t=AbortSignal.timeout(this.timeout),n=()=>{e.stream.abort(new g("handleIncomingAutonatStream timeout",yn))};t.addEventListener("abort",n,{once:!0}),ve(1/0,t);let o=this.components.addressManager.getAddresses().map(s=>s.toOptions().host);try{let s=this;await Ge(e.stream,i=>Ft(i),async function*(i){let a=await gs(i);if(a==null){s.log("no message received"),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_BAD_REQUEST,statusText:"No message was sent"}});return}let c;try{c=he.decode(a)}catch(p){s.log.error("could not decode message",p),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_BAD_REQUEST,statusText:"Could not decode message"}});return}let l=c.dial;if(l==null){s.log.error("dial was missing from message"),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_BAD_REQUEST,statusText:"No Dial message found in message"}});return}let d,u=l.peer;if(u==null||u.id==null){s.log.error("PeerId missing from message"),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_BAD_REQUEST,statusText:"missing peer info"}});return}try{d=Ye(u.id)}catch(p){s.log.error("invalid PeerId",p),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_BAD_REQUEST,statusText:"bad peer id"}});return}if(s.log("incoming request from %p",d),!e.connection.remotePeer.equals(d)){s.log("target peer %p did not equal sending peer %p",d,e.connection.remotePeer),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_BAD_REQUEST,statusText:"peer id mismatch"}});return}let f=u.addrs.map(p=>Q(p)).filter(p=>{let y=p.toOptions().host===e.connection.remoteAddr.toOptions().host;return s.log.trace("request to dial %a was sent from %a is same host %s",p,e.connection.remoteAddr,y),y}).filter(p=>{let y=p.toOptions().host,w=!(_r(y)??!1);return s.log.trace("host %s was public %s",y,w),w}).filter(p=>{let y=p.toOptions().host,w=!o.includes(y);return s.log.trace("host %s was not our host %s",y,w),w}).filter(p=>{let y=!!s.components.transportManager.transportForMultiaddr(p);return s.log.trace("transport for %a is supported %s",p,y),y}).map(p=>(p.getPeerId()==null&&(p=p.encapsulate(`/p2p/${d.toString()}`)),p));if(f.length===0){s.log("no valid multiaddrs for %p in message",d),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_DIAL_REFUSED,statusText:"no dialable addresses"}});return}s.log("dial multiaddrs %s for peer %p",f.map(p=>p.toString()).join(", "),d);let m="",h=f[0];for await(let p of f){let y;h=p;try{if(y=await s.components.connectionManager.openConnection(p,{signal:t}),!y.remoteAddr.equals(p))throw s.log.error("tried to dial %a but dialed %a",p,y.remoteAddr),new Error("Unexpected remote address");s.log("Success %p",d),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.OK,addr:y.remoteAddr.decapsulateCode(Z("p2p").code).bytes}});return}catch(w){s.log("could not dial %p",d,w),m=w.message}finally{y!=null&&await y.close()}}yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_DIAL_ERROR,statusText:m,addr:h.bytes}})},i=>Ut(i),e.stream)}catch(s){this.log.error("error handling incoming autonat stream",s)}finally{t.removeEventListener("abort",n)}}_verifyExternalAddresses(){this.verifyExternalAddresses().catch(e=>{this.log.error("error verifying external address",e)})}async verifyExternalAddresses(){if(clearTimeout(this.verifyAddressTimeout),!this.isStarted())return;let e=this.components.addressManager,t=e.getObservedAddrs().filter(s=>{let i=s.toOptions();return!(_r(i.host)??!1)});if(t.length===0){this.log("no public addresses found, not requesting verification"),this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.refreshInterval);return}let n=AbortSignal.timeout(this.timeout);ve(1/0,n);let o=this;try{this.log("verify multiaddrs %s",t.map(u=>u.toString()).join(", "));let s=he.encode({type:he.MessageType.DIAL,dial:{peer:{id:this.components.peerId.toBytes(),addrs:t.map(u=>u.bytes)}}}),a=(await m1()).toBytes(),c={},l=[],d=async u=>{let f=()=>{};try{this.log("asking %p to verify multiaddr",u.id);let m=await o.components.connectionManager.openConnection(u.id,{signal:n}),h=await m.newStream(this.protocol,{signal:n});f=()=>{h.abort(new g("verifyAddress timeout",yn))},n.addEventListener("abort",f,{once:!0});let p=await Ge([s],w=>Ut(w),h,w=>Ft(w),async w=>gs(w));if(p==null){this.log("no response received from %p",m.remotePeer);return}let y=he.decode(p);if(y.type!==he.MessageType.DIAL_RESPONSE||y.dialResponse==null){this.log("invalid autonat response from %p",m.remotePeer);return}if(y.dialResponse.status===he.ResponseStatus.OK){let w=m.remoteAddr.toOptions(),E;if(w.family===4)E=w.host.split(".")[0];else if(w.family===6)E=w.host.split(":")[0];else{this.log('remote address "%s" was not IP4 or IP6?',w.host);return}if(l.includes(E)){this.log("already have response from network segment %d - %s",E,w.host);return}l.push(E)}return y.dialResponse}catch(m){this.log.error("error asking remote to verify multiaddr",m)}finally{n.removeEventListener("abort",f)}};for await(let u of Hn(Cr(this.components.peerRouting.getClosestPeers(a,{signal:n}),f=>async()=>d(f)),{concurrency:L2}))try{if(u==null)continue;let f=u.addr==null?t[0]:Q(u.addr);if(this.log("autonat response for %a is %s",f,u.status),u.status===he.ResponseStatus.E_BAD_REQUEST||u.status===he.ResponseStatus.E_DIAL_REFUSED||u.addr==null&&t.length>1)continue;if(!t.some(h=>h.equals(f))){this.log("peer reported %a as %s but it was not in our observed address list",f,u.status);continue}let m=f.toString();if(c[m]==null&&(c[m]={success:0,failure:0}),u.status===he.ResponseStatus.OK?c[m].success++:u.status===he.ResponseStatus.E_DIAL_ERROR&&c[m].failure++,c[m].success===L2){this.log("%a is externally dialable",f),e.confirmObservedAddr(f);return}if(c[m].failure===L2){this.log("%a is not externally dialable",f),e.removeObservedAddr(f);return}}catch(f){this.log.error("could not verify external address",f)}}finally{this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.refreshInterval)}}};function Yg(r={}){return e=>new y1(e,r)}var ED=H("dns4"),xD=H("dns6"),vD=H("dnsaddr"),No=et(H("dns"),vD,ED,xD),w1=et(H("ip4"),H("ip6")),Ti=et(re(w1,H("tcp")),re(No,H("tcp"))),b1=re(w1,H("udp")),_D=re(b1,H("utp")),SD=re(b1,H("quic")),RD=re(b1,H("quic-v1")),B2=et(re(Ti,H("ws")),re(No,H("ws"))),ki=et(re(B2,H("p2p")),B2),M2=et(re(Ti,H("wss")),re(No,H("wss")),re(Ti,H("tls"),H("ws")),re(No,H("tls"),H("ws"))),_s=et(re(M2,H("p2p")),M2),U2=et(re(Ti,H("http")),re(w1,H("http")),re(No,H("http"))),F2=et(re(Ti,H("https")),re(w1,H("https")),re(No,H("https"))),Xg=re(b1,H("webrtc-direct"),H("certhash")),Zg=et(re(Xg,H("p2p")),Xg),Qg=re(RD,H("webtransport"),H("certhash"),H("certhash")),Jg=et(re(Qg,H("p2p")),Qg),e9=et(re(ki,H("p2p-webrtc-star"),H("p2p")),re(_s,H("p2p-webrtc-star"),H("p2p")),re(ki,H("p2p-webrtc-star")),re(_s,H("p2p-webrtc-star"))),Nj=et(re(ki,H("p2p-websocket-star"),H("p2p")),re(_s,H("p2p-websocket-star"),H("p2p")),re(ki,H("p2p-websocket-star")),re(_s,H("p2p-websocket-star"))),t9=et(re(U2,H("p2p-webrtc-direct"),H("p2p")),re(F2,H("p2p-webrtc-direct"),H("p2p")),re(U2,H("p2p-webrtc-direct")),re(F2,H("p2p-webrtc-direct"))),Ss=et(B2,M2,U2,F2,e9,t9,Ti,_D,SD,No,Zg,Jg),Oj=et(re(Ss,H("p2p-stardust"),H("p2p")),re(Ss,H("p2p-stardust"))),Co=et(re(Ss,H("p2p")),e9,t9,Zg,Jg,H("p2p")),jg=et(re(Co,H("p2p-circuit"),Co),re(Co,H("p2p-circuit")),re(H("p2p-circuit"),Co),re(Ss,H("p2p-circuit")),re(H("p2p-circuit"),Ss),H("p2p-circuit")),r9=()=>et(re(jg,r9),jg),zr=r9(),n9=et(re(zr,Co,zr),re(Co,zr),re(zr,Co),zr,Co);var Pj=et(re(zr,H("webrtc"),H("p2p")),re(zr,H("webrtc")),re(Ss,H("webrtc"),H("p2p")),re(Ss,H("webrtc")),H("webrtc"));function o9(r){function e(t){let n;try{n=Q(t)}catch{return!1}let o=r(n.protoNames());return o===null?!1:o===!0||o===!1?o:o.length===0}return e}function re(...r){function e(t){if(t.length<r.length)return null;let n=t;return r.some(o=>(n=typeof o=="function"?o().partialMatch(t):o.partialMatch(t),Array.isArray(n)&&(t=n),n===null)),n}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:o9(e),partialMatch:e}}function et(...r){function e(n){let o=null;return r.some(s=>{let i=typeof s=="function"?s().partialMatch(n):s.partialMatch(n);return i!=null?(o=i,!0):!1}),o}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:o9(e),partialMatch:e}}function H(r){let e=r;function t(o){let s;try{s=Q(o)}catch{return!1}let i=s.protoNames();return i.length===1&&i[0]===e}function n(o){return o.length===0?null:o[0]===e?o.slice(1):null}return{toString:function(){return e},matches:t,partialMatch:n}}var AD="bootstrap",ID=50,DD=12e4,TD=1e3,V2=class extends Ce{static tag="bootstrap";log;timer;list;timeout;components;_init;constructor(e,t={list:[]}){if(t.list==null||t.list.length===0)throw new Error("Bootstrap requires a list of peer addresses");super(),this.components=e,this.log=e.logger.forComponent("libp2p:bootstrap"),this.timeout=t.timeout??TD,this.list=[];for(let n of t.list){if(!n9.matches(n)){this.log.error("Invalid multiaddr");continue}let o=Q(n),s=o.getPeerId();if(s==null){this.log.error("Invalid bootstrap multiaddr without peer id");continue}let i={id:ge(s),multiaddrs:[o]};this.list.push(i)}this._init=t}[zo]=this;[Symbol.toStringTag]="@libp2p/bootstrap";isStarted(){return!!this.timer}start(){this.isStarted()||(this.log("Starting bootstrap node discovery, discovering peers after %s ms",this.timeout),this.timer=setTimeout(()=>{this._discoverBootstrapPeers().catch(e=>{this.log.error(e)})},this.timeout))}async _discoverBootstrapPeers(){if(this.timer!=null)for(let e of this.list){if(await this.components.peerStore.merge(e.id,{tags:{[this._init.tagName??AD]:{value:this._init.tagValue??ID,ttl:this._init.tagTTL??DD}}}),this.timer==null)return;this.safeDispatchEvent("peer",{detail:e})}}stop(){this.timer!=null&&clearTimeout(this.timer),this.timer=void 0}};function i9(r){return e=>new V2(e,r)}var a9={ERR_SIGNATURE_NOT_VALID:"ERR_SIGNATURE_NOT_VALID"};var ja;(function(r){let e;r.codec=()=>(e==null&&(e=te((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.publicKey!=null&&t.publicKey.byteLength>0&&(n.uint32(10),n.bytes(t.publicKey)),t.payloadType!=null&&t.payloadType.byteLength>0&&(n.uint32(18),n.bytes(t.payloadType)),t.payload!=null&&t.payload.byteLength>0&&(n.uint32(26),n.bytes(t.payload)),t.signature!=null&&t.signature.byteLength>0&&(n.uint32(42),n.bytes(t.signature)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={publicKey:new Uint8Array(0),payloadType:new Uint8Array(0),payload:new Uint8Array(0),signature:new Uint8Array(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.publicKey=t.bytes();break;case 2:o.payloadType=t.bytes();break;case 3:o.payload=t.bytes();break;case 5:o.signature=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(ja||(ja={}));var Gr=class r{static createFromProtobuf=async e=>{let t=ja.decode(e),n=await ut(t.publicKey);return new r({peerId:n,payloadType:t.payloadType,payload:t.payload,signature:t.signature})};static seal=async(e,t)=>{if(t.privateKey==null)throw new Error("Missing private key");let n=e.domain,o=e.codec,s=e.marshal(),i=c9(n,o,s),c=await(await mr(t.privateKey)).sign(i.subarray());return new r({peerId:t,payloadType:o,payload:s,signature:c})};static openAndCertify=async(e,t)=>{let n=await r.createFromProtobuf(e);if(!await n.validate(t))throw new g("envelope signature is not valid for the given domain",a9.ERR_SIGNATURE_NOT_VALID);return n};peerId;payloadType;payload;signature;marshaled;constructor(e){let{peerId:t,payloadType:n,payload:o,signature:s}=e;this.peerId=t,this.payloadType=n,this.payload=o,this.signature=s}marshal(){if(this.peerId.publicKey==null)throw new Error("Missing public key");return this.marshaled==null&&(this.marshaled=ja.encode({publicKey:this.peerId.publicKey,payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(e){return j(this.marshal(),e.marshal())}async validate(e){let t=c9(e,this.payloadType,this.payload);if(this.peerId.publicKey==null)throw new Error("Missing public key");return $r(this.peerId.publicKey).verify(t.subarray(),this.signature)}},c9=(r,e,t)=>{let n=L(r),o=ze(n.byteLength),s=ze(e.length),i=ze(t.length);return new de(o,n,s,e,i,t)};function l9(r,e){let t=(n,o)=>n.toString().localeCompare(o.toString());return r.length!==e.length?!1:(e.sort(t),r.sort(t).every((n,o)=>e[o].equals(n)))}var u9="libp2p-peer-record",d9=Uint8Array.from([3,1]);var Za;(function(r){let e;(function(n){let o;n.codec=()=>(o==null&&(o=te((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)=>{let a={multiaddr:new Uint8Array(0)},c=i==null?s.len:s.pos+i;for(;s.pos<c;){let l=s.uint32();switch(l>>>3){case 1:a.multiaddr=s.bytes();break;default:s.skipType(l&7);break}}return a})),o),n.encode=s=>ee(s,n.codec()),n.decode=s=>J(s,n.codec())})(e=r.AddressInfo||(r.AddressInfo={}));let t;r.codec=()=>(t==null&&(t=te((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)=>{let s={peerId:new Uint8Array(0),seq:0n,addresses:[]},i=o==null?n.len:n.pos+o;for(;n.pos<i;){let a=n.uint32();switch(a>>>3){case 1:s.peerId=n.bytes();break;case 2:s.seq=n.uint64();break;case 3:s.addresses.push(r.AddressInfo.codec().decode(n,n.uint32()));break;default:n.skipType(a&7);break}}return s})),t),r.encode=n=>ee(n,r.codec()),r.decode=n=>J(n,r.codec())})(Za||(Za={}));var rr=class r{static createFromProtobuf=e=>{let t=Za.decode(e),n=Ye(t.peerId),o=(t.addresses??[]).map(i=>Q(i.multiaddr)),s=t.seq;return new r({peerId:n,multiaddrs:o,seqNumber:s})};static DOMAIN=u9;static CODEC=d9;peerId;multiaddrs;seqNumber;domain=r.DOMAIN;codec=r.CODEC;marshaled;constructor(e){let{peerId:t,multiaddrs:n,seqNumber:o}=e;this.peerId=t,this.multiaddrs=n??[],this.seqNumber=o??BigInt(Date.now())}marshal(){return this.marshaled==null&&(this.marshaled=Za.encode({peerId:this.peerId.toBytes(),seq:BigInt(this.seqNumber),addresses:this.multiaddrs.map(e=>({multiaddr:e.bytes}))})),this.marshaled}equals(e){return!(!(e instanceof r)||!this.peerId.equals(e.peerId)||this.seqNumber!==e.seqNumber||!l9(this.multiaddrs,e.multiaddrs))}};function Qe(r,e){let t=ln(r,e),n={read:async(o,s)=>{let i=await t.read(s);return o.decode(i)},write:async(o,s,i)=>{await t.write(s.encode(o),i)},writeV:async(o,s,i)=>{await t.writeV(o.map(a=>s.encode(a)),i)},pb:o=>({read:async s=>n.read(o,s),write:async(s,i)=>n.write(s,o,i),writeV:async(s,i)=>n.writeV(s,o,i),unwrap:()=>n}),unwrap:()=>t.unwrap()};return n}var f9="/libp2p/relay";var h9="circuit-relay-relay";var hZ=BigInt(131072),Rs="/libp2p/circuit/relay/0.2.0/hop",K2="/libp2p/circuit/relay/0.2.0/stop",pZ=30*1e3,mZ=30*1e3,$2=300;var H2="ERR_RELAYED_DIAL",p9="ERR_HOP_REQUEST_FAILED";var Oo;(function(r){let e;(function(o){o.RESERVE="RESERVE",o.CONNECT="CONNECT",o.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(o){o[o.RESERVE=0]="RESERVE",o[o.CONNECT=1]="CONNECT",o[o.STATUS=2]="STATUS"})(t||(t={})),function(o){o.codec=()=>Ve(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=te((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.peer!=null&&(s.uint32(18),Ci.codec().encode(o.peer,s)),o.reservation!=null&&(s.uint32(26),E1.codec().encode(o.reservation,s)),o.limit!=null&&(s.uint32(34),Ni.codec().encode(o.limit,s)),o.status!=null&&(s.uint32(40),Et.codec().encode(o.status,s)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.type=r.Type.codec().decode(o);break;case 2:i.peer=Ci.codec().decode(o,o.uint32());break;case 3:i.reservation=E1.codec().decode(o,o.uint32());break;case 4:i.limit=Ni.codec().decode(o,o.uint32());break;case 5:i.status=Et.codec().decode(o);break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>ee(o,r.codec()),r.decode=o=>J(o,r.codec())})(Oo||(Oo={}));var un;(function(r){let e;(function(o){o.CONNECT="CONNECT",o.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(o){o[o.CONNECT=0]="CONNECT",o[o.STATUS=1]="STATUS"})(t||(t={})),function(o){o.codec=()=>Ve(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=te((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.peer!=null&&(s.uint32(18),Ci.codec().encode(o.peer,s)),o.limit!=null&&(s.uint32(26),Ni.codec().encode(o.limit,s)),o.status!=null&&(s.uint32(32),Et.codec().encode(o.status,s)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.type=r.Type.codec().decode(o);break;case 2:i.peer=Ci.codec().decode(o,o.uint32());break;case 3:i.limit=Ni.codec().decode(o,o.uint32());break;case 4:i.status=Et.codec().decode(o);break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>ee(o,r.codec()),r.decode=o=>J(o,r.codec())})(un||(un={}));var Ci;(function(r){let e;r.codec=()=>(e==null&&(e=te((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.addrs!=null)for(let s of t.addrs)n.uint32(18),n.bytes(s);o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={id:new Uint8Array(0),addrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.id=t.bytes();break;case 2:o.addrs.push(t.bytes());break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(Ci||(Ci={}));var E1;(function(r){let e;r.codec=()=>(e==null&&(e=te((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.expire!=null&&t.expire!==0n&&(n.uint32(8),n.uint64(t.expire)),t.addrs!=null)for(let s of t.addrs)n.uint32(18),n.bytes(s);t.voucher!=null&&(n.uint32(26),n.bytes(t.voucher)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={expire:0n,addrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.expire=t.uint64();break;case 2:o.addrs.push(t.bytes());break;case 3:o.voucher=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(E1||(E1={}));var Ni;(function(r){let e;r.codec=()=>(e==null&&(e=te((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.duration!=null&&(n.uint32(8),n.uint32(t.duration)),t.data!=null&&(n.uint32(16),n.uint64(t.data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.duration=t.uint32();break;case 2:o.data=t.uint64();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(Ni||(Ni={}));var Et;(function(r){r.UNUSED="UNUSED",r.OK="OK",r.RESERVATION_REFUSED="RESERVATION_REFUSED",r.RESOURCE_LIMIT_EXCEEDED="RESOURCE_LIMIT_EXCEEDED",r.PERMISSION_DENIED="PERMISSION_DENIED",r.CONNECTION_FAILED="CONNECTION_FAILED",r.NO_RESERVATION="NO_RESERVATION",r.MALFORMED_MESSAGE="MALFORMED_MESSAGE",r.UNEXPECTED_MESSAGE="UNEXPECTED_MESSAGE"})(Et||(Et={}));var q2;(function(r){r[r.UNUSED=0]="UNUSED",r[r.OK=100]="OK",r[r.RESERVATION_REFUSED=200]="RESERVATION_REFUSED",r[r.RESOURCE_LIMIT_EXCEEDED=201]="RESOURCE_LIMIT_EXCEEDED",r[r.PERMISSION_DENIED=202]="PERMISSION_DENIED",r[r.CONNECTION_FAILED=203]="CONNECTION_FAILED",r[r.NO_RESERVATION=204]="NO_RESERVATION",r[r.MALFORMED_MESSAGE=400]="MALFORMED_MESSAGE",r[r.UNEXPECTED_MESSAGE=401]="UNEXPECTED_MESSAGE"})(q2||(q2={}));(function(r){r.codec=()=>Ve(q2)})(Et||(Et={}));var m9;(function(r){let e;r.codec=()=>(e==null&&(e=te((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.relay!=null&&t.relay.byteLength>0&&(n.uint32(10),n.bytes(t.relay)),t.peer!=null&&t.peer.byteLength>0&&(n.uint32(18),n.bytes(t.peer)),t.expiration!=null&&t.expiration!==0n&&(n.uint32(24),n.uint64(t.expiration)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={relay:new Uint8Array(0),peer:new Uint8Array(0),expiration:0n},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.relay=t.bytes();break;case 2:o.peer=t.bytes();break;case 3:o.expiration=t.uint64();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(m9||(m9={}));async function g9(r){let e=new TextEncoder().encode(r),t=await Re.digest(e);return oe.createV0(t)}function W2(r){let e=r*BigInt(1e3),t=new Date().getTime();return Number(e-BigInt(t))}var x1=class extends Ce{peerId;peerStore;contentRouting;registrar;started;topologyId;log;constructor(e){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:discover-relays"),this.started=!1,this.peerId=e.peerId,this.peerStore=e.peerStore,this.contentRouting=e.contentRouting,this.registrar=e.registrar}isStarted(){return this.started}async start(){this.topologyId=await this.registrar.register(Rs,{notifyOnTransient:!0,onConnect:e=>{this.safeDispatchEvent("relay:discover",{detail:e})}}),this.started=!0}afterStart(){this.discover().catch(e=>{this.log.error("error discovering relays",e)})}stop(){this.topologyId!=null&&this.registrar.unregister(this.topologyId),this.started=!1}async discover(){this.log("searching peer store for relays");let e=await this.peerStore.all({filters:[t=>t.protocols.includes(Rs)],orders:[()=>Math.random()<.5?1:-1]});for(let t of e)this.log("found relay peer %p in content peer store",t.id),this.safeDispatchEvent("relay:discover",{detail:t.id});this.log("found %d relay peers in peer store",e.length);try{this.log("searching content routing for relays");let t=await g9(f9),n=0;for await(let o of this.contentRouting.findProviders(t))if(o.multiaddrs.length>0&&!o.id.equals(this.peerId)){let s=o.id;n++,await this.peerStore.merge(s,{multiaddrs:o.multiaddrs}),this.log("found relay peer %p in content routing",s),this.safeDispatchEvent("relay:discover",{detail:s})}this.log("found %d relay peers in content routing",n)}catch(t){this.log.error("failed when finding relays on the network",t)}}};var Po=class extends Vn{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var CD=60*1e3*10,ND=60*1e3*5,OD=30*1e3,v1=class extends Ce{peerId;connectionManager;transportManager;peerStore;events;reserveQueue;reservations;maxDiscoveredRelays;maxReservationQueueLength;reservationCompletionTimeout;started;log;constructor(e,t){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:reservation-store"),this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.peerStore=e.peerStore,this.events=e.events,this.reservations=new wt,this.maxDiscoveredRelays=t?.discoverRelays??0,this.maxReservationQueueLength=t?.maxReservationQueueLength??100,this.reservationCompletionTimeout=t?.reservationCompletionTimeout??1e4,this.started=!1,this.reserveQueue=new Po({concurrency:t?.reservationConcurrency??1,metricName:"libp2p_relay_reservation_queue",metrics:e.metrics}),this.events.addEventListener("peer:disconnect",n=>{this.#t(n.detail)})}isStarted(){return this.started}start(){this.started=!0}stop(){this.reserveQueue.clear(),this.reservations.forEach(({timeout:e})=>{clearTimeout(e)}),this.reservations.clear(),this.started=!1}async addRelay(e,t){if(this.peerId.equals(e)){this.log("not trying to use self as relay");return}if(this.reserveQueue.size>this.maxReservationQueueLength){this.log("not adding relay as the queue is full");return}if(this.reserveQueue.has(e)){this.log("relay peer is already in the reservation queue");return}this.log("add relay %p",e),await this.reserveQueue.add(async()=>{try{let n=this.reservations.get(e);if(n!=null){if(W2(n.reservation.expire)>CD){this.log("already have reservation on relay peer %p and it expires in more than 10 minutes",e);return}clearTimeout(n.timeout),this.reservations.delete(e)}if(t==="discovered"&&[...this.reservations.values()].reduce((d,u)=>(u.type==="discovered"&&d++,d),0)>=this.maxDiscoveredRelays){this.log("already have enough discovered relays");return}let o=AbortSignal.timeout(this.reservationCompletionTimeout),s=await this.connectionManager.openConnection(e,{signal:o});if(s.remoteAddr.protoNames().includes("p2p-circuit")){this.log("not creating reservation over relayed connection");return}let i=await this.#e(s,{signal:o});this.log("created reservation on relay peer %p",e);let a=W2(i.expire),c=Math.min(Math.max(a-ND,OD),Math.pow(2,31)-1),l=setTimeout(()=>{this.addRelay(e,t).catch(d=>{this.log.error("could not refresh reservation to relay %p",e,d)})},c);this.reservations.set(e,{timeout:l,reservation:i,type:t}),await this.peerStore.merge(e,{tags:{[h9]:{value:1,ttl:a}}}),await this.transportManager.listen([Q(`/p2p/${e.toString()}/p2p-circuit`)])}catch(n){this.log.error("could not reserve slot on %p",e,n);let o=this.reservations.get(e);o!=null&&clearTimeout(o.timeout),this.reservations.delete(e)}},{peerId:e})}hasReservation(e){return this.reservations.has(e)}getReservation(e){return this.reservations.get(e)?.reservation}async#e(e,t){t.signal?.throwIfAborted(),this.log("requesting reservation from %p",e.remotePeer);let n=await e.newStream(Rs,t),s=Qe(n).pb(Oo);await s.write({type:Oo.Type.RESERVE},t);let i;try{i=await s.read(t)}catch(c){throw this.log.error("error parsing reserve message response from %p because",e.remotePeer,c),n.abort(c),c}finally{await n.close()}if(i.status===Et.OK&&i.reservation!=null){let c=!1,l=e.remoteAddr.bytes;for(let d of i.reservation.addrs)if(j(l,d)){c=!0;break}return c||i.reservation.addrs.push(l),i.reservation}let a=`reservation failed with status ${i.status??"undefined"}`;throw this.log.error(a),new Error(a)}#t(e){let t=this.reservations.get(e);t!=null&&(this.log("connection to relay %p closed, removing reservation from local store",e),clearTimeout(t.timeout),this.reservations.delete(e),this.safeDispatchEvent("relay:removed",{detail:e}),this.reservations.size<this.maxDiscoveredRelays&&(this.log("not enough relays %d/%d",this.reservations.size,this.maxDiscoveredRelays),this.safeDispatchEvent("relay:not-enough-relays",{})))}};function z2(r){let{stream:e,remoteAddr:t,logger:n}=r,o=n.forComponent("libp2p:stream:converter"),s=!1,i=!1,a=e.close.bind(e);e.close=async f=>{await a(f),u(!0)};let c=e.abort.bind(e);e.abort=f=>{c(f),u(!0)};let l=e.sink.bind(e);e.sink=async f=>{try{await l(f)}catch(m){m.type!=="aborted"&&o.error("%s error in sink",t,m)}finally{i=!0,u()}};let d={log:o,sink:e.sink,source:async function*(){try{for await(let f of e.source)f instanceof Uint8Array?yield f:yield*f}finally{s=!0,u()}}(),remoteAddr:t,timeline:{open:Date.now(),close:void 0},close:e.close,abort:e.abort};function u(f){f===!0&&(s=!0,i=!0),s&&i&&d.timeline.close==null&&(d.timeline.close=Date.now())}return d}var G2=class extends Ce{connectionManager;relayStore;listeningAddrs;log;constructor(e){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:listener"),this.connectionManager=e.connectionManager,this.relayStore=e.relayStore,this.listeningAddrs=new wt,this.relayStore.addEventListener("relay:removed",this._onRemoveRelayPeer)}_onRemoveRelayPeer=e=>{this.#e(e.detail)};async listen(e){this.log("listen on %a",e);let t=e.decapsulate("/p2p-circuit"),n=await this.connectionManager.openConnection(t);if(!this.relayStore.hasReservation(n.remotePeer)){this.log("making reservation on peer %p",n.remotePeer),await this.relayStore.addRelay(n.remotePeer,"configured");return}let o=this.relayStore.getReservation(n.remotePeer);if(o==null)throw new g("Did not have reservation after making reservation","ERR_NO_RESERVATION");if(this.listeningAddrs.has(n.remotePeer)){this.log("already listening on relay %p",n.remotePeer);return}this.listeningAddrs.set(n.remotePeer,o.addrs.map(s=>Q(s).encapsulate("/p2p-circuit"))),this.safeDispatchEvent("listening",{})}getAddrs(){return[...this.listeningAddrs.values()].flat()}async close(){}#e(e){let t=this.listeningAddrs.has(e);this.log("relay peer removed %p - had reservation",e,t),this.listeningAddrs.delete(e),t&&(this.log.trace("removing relay event listener for peer %p",e),this.relayStore.removeEventListener("relay:removed",this._onRemoveRelayPeer),this.safeDispatchEvent("close",{}))}};function y9(r){return new G2(r)}var LD=r=>{if(r.peer==null)return!1;try{r.peer.addrs.forEach(Q)}catch{return!1}return!0},Y2={maxInboundStopStreams:$2,maxOutboundStopStreams:$2,stopTimeout:3e4},_1=class{discovery;registrar;peerStore;connectionManager;transportManager;peerId;upgrader;addressManager;connectionGater;reservationStore;logger;maxInboundStopStreams;maxOutboundStopStreams;stopTimeout;started;log;constructor(e,t){this.log=e.logger.forComponent("libp2p:circuit-relay:transport"),this.registrar=e.registrar,this.peerStore=e.peerStore,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.logger=e.logger,this.peerId=e.peerId,this.upgrader=e.upgrader,this.addressManager=e.addressManager,this.connectionGater=e.connectionGater,this.maxInboundStopStreams=t.maxInboundStopStreams??Y2.maxInboundStopStreams,this.maxOutboundStopStreams=t.maxOutboundStopStreams??Y2.maxOutboundStopStreams,this.stopTimeout=t.stopTimeout??Y2.stopTimeout,t.discoverRelays!=null&&t.discoverRelays>0&&(this.discovery=new x1(e),this.discovery.addEventListener("relay:discover",n=>{this.reservationStore.addRelay(n.detail,"discovered").catch(o=>{this.log.error("could not add discovered relay %p",n.detail,o)})})),this.reservationStore=new v1(e,t),this.reservationStore.addEventListener("relay:not-enough-relays",()=>{this.discovery?.discover().catch(n=>{this.log.error("could not discover relays",n)})}),this.started=!1}isStarted(){return this.started}async start(){this.reservationStore.start(),await this.registrar.handle(K2,e=>{this.onStop(e).catch(t=>{this.log.error("error while handling STOP protocol",t),e.stream.abort(t)})},{maxInboundStreams:this.maxInboundStopStreams,maxOutboundStreams:this.maxOutboundStopStreams,runOnTransientConnection:!0}),await this.discovery?.start(),this.started=!0}afterStart(){this.discovery?.afterStart()}async stop(){this.discovery?.stop(),this.reservationStore.stop(),await this.registrar.unhandle(K2),this.started=!1}[en]=!0;[Symbol.toStringTag]="libp2p/circuit-relay-v2";async dial(e,t={}){if(e.protoCodes().filter(h=>h===290).length!==1){let h="Invalid circuit relay address";throw this.log.error(h,e),new g(h,H2)}let n=e.toString().split("/p2p-circuit"),o=Q(n[0]),s=Q(n[n.length-1]),i=o.getPeerId(),a=s.getPeerId();if(i==null||a==null){let h=`Circuit relay dial to ${e.toString()} failed as address did not have peer ids`;throw this.log.error(h),new g(h,H2)}let c=ge(i),l=ge(a),d=!1,f=this.connectionManager.getConnections(c)[0];f==null&&(await this.peerStore.merge(c,{multiaddrs:[o]}),f=await this.connectionManager.openConnection(c,t),d=!0);let m;try{return m=await f.newStream(Rs),await this.connectV2({stream:m,connection:f,destinationPeer:l,destinationAddr:s,relayAddr:o,ma:e,disconnectOnFailure:d})}catch(h){throw this.log.error("circuit relay dial to destination %p via relay %p failed",l,c,h),m?.abort(h),d&&await f.close(),h}}async connectV2({stream:e,connection:t,destinationPeer:n,destinationAddr:o,relayAddr:s,ma:i,disconnectOnFailure:a}){try{let c=Qe(e),l=c.pb(Oo);await l.write({type:Oo.Type.CONNECT,peer:{id:n.toBytes(),addrs:[Q(o).bytes]}});let d=await l.read();if(d.status!==Et.OK)throw new g(`failed to connect via relay with status ${d?.status?.toString()??"undefined"}`,p9);let u=z2({stream:c.unwrap(),remoteAddr:i,localAddr:s.encapsulate(`/p2p-circuit/p2p/${this.peerId.toString()}`),logger:this.logger});return this.log("new outbound transient connection %a",u.remoteAddr),await this.upgrader.upgradeOutbound(u,{transient:!0})}catch(c){throw this.log.error(`Circuit relay dial to destination ${n.toString()} via relay ${t.remotePeer.toString()} failed`,c),a&&await t.close(),c}}createListener(e){return y9({connectionManager:this.connectionManager,relayStore:this.reservationStore,logger:this.logger})}filter(e){return e=Array.isArray(e)?e:[e],e.filter(t=>zr.matches(t))}async onStop({connection:e,stream:t}){if(!this.reservationStore.hasReservation(e.remotePeer))try{this.log("dialed via relay we did not have a reservation on, start listening on that relay address"),await this.transportManager.listen([e.remoteAddr.encapsulate("/p2p-circuit")])}catch(d){this.log.error("failed to listen on a relay peer we were dialed via but did not have a reservation on",d)}let n=AbortSignal.timeout(this.stopTimeout),o=Qe(t).pb(un),s=await o.read({signal:n});if(this.log("new circuit relay v2 stop stream from %p with type %s",e.remotePeer,s.type),s?.type===void 0){this.log.error("type was missing from circuit v2 stop protocol request from %s",e.remotePeer),await o.write({type:un.Type.STATUS,status:Et.MALFORMED_MESSAGE},{signal:n}),await t.close();return}if(s.type!==un.Type.CONNECT){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await o.write({type:un.Type.STATUS,status:Et.UNEXPECTED_MESSAGE},{signal:n}),await t.close();return}if(!LD(s)){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await o.write({type:un.Type.STATUS,status:Et.MALFORMED_MESSAGE},{signal:n}),await t.close();return}let i=Ye(s.peer.id);if(await this.connectionGater.denyInboundRelayedConnection?.(e.remotePeer,i)===!0){this.log.error("connection gater denied inbound relayed connection from %p",e.remotePeer),await o.write({type:un.Type.STATUS,status:Et.PERMISSION_DENIED},{signal:n}),await t.close();return}this.log.trace("sending success response to %p",e.remotePeer),await o.write({type:un.Type.STATUS,status:Et.OK},{signal:n});let a=e.remoteAddr.encapsulate(`/p2p-circuit/p2p/${i.toString()}`),c=this.addressManager.getAddresses()[0],l=z2({stream:o.unwrap().unwrap(),remoteAddr:a,localAddr:c,logger:this.logger});this.log("new inbound transient connection %a",l.remoteAddr),await this.upgrader.upgradeInbound(l,{transient:!0}),this.log("%s connection %a upgraded","inbound",l.remoteAddr)}};function X2(r={}){return e=>new _1(e,r)}var w9=()=>{let r=new Error("Delay aborted");return r.name="AbortError",r},BD=new WeakMap;function MD({clearTimeout:r,setTimeout:e}={}){return(t,{value:n,signal:o}={})=>{if(o?.aborted)return Promise.reject(w9());let s,i,a,c=r??clearTimeout,l=()=>{c(s),a(w9())},d=()=>{o&&o.removeEventListener("abort",l)},u=new Promise((f,m)=>{i=()=>{d(),f(n)},a=m,s=(e??setTimeout)(i,t)});return o&&o.addEventListener("abort",l,{once:!0}),BD.set(u,()=>{c(s),s=null,i()}),u}}var UD=MD(),S1=UD;var Yr;(function(r){let e;(function(o){o.UNUSED="UNUSED",o.CONNECT="CONNECT",o.SYNC="SYNC"})(e=r.Type||(r.Type={}));let t;(function(o){o[o.UNUSED=0]="UNUSED",o[o.CONNECT=100]="CONNECT",o[o.SYNC=300]="SYNC"})(t||(t={})),function(o){o.codec=()=>Ve(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=te((o,s,i={})=>{if(i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.observedAddresses!=null)for(let a of o.observedAddresses)s.uint32(18),s.bytes(a);i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={observedAddresses:[]},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.type=r.Type.codec().decode(o);break;case 2:i.observedAddresses.push(o.bytes());break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>ee(o,r.codec()),r.decode=o=>J(o,r.codec())})(Yr||(Yr={}));var FD=r=>r.toString().split("/").slice(1),Ja=r=>({match:e=>e.length<1?!1:r(e[0])?e.slice(1):!1,pattern:"fn"}),tt=r=>({match:e=>Ja(t=>t===r).match(e),pattern:r}),I1=()=>({match:r=>Ja(e=>typeof e=="string").match(r),pattern:"{string}"}),b9=()=>({match:r=>Ja(e=>!isNaN(parseInt(e))).match(r),pattern:"{number}"}),Sr=()=>({match:r=>{if(r.length<2||r[0]!=="p2p"&&r[0]!=="ipfs")return!1;if(r[1].startsWith("Q")||r[1].startsWith("1"))try{ce.decode(`z${r[1]}`)}catch{return!1}else return!1;return r.slice(2)},pattern:"/p2p/{peerid}"}),R1=()=>({match:r=>{if(r.length<2||r[0]!=="certhash")return!1;try{Cf.decode(r[1])}catch{return!1}return r.slice(2)},pattern:"/certhash/{certhash}"}),dn=r=>({match:e=>{let t=r.match(e);return t===!1?e:t},pattern:`optional(${r.pattern})`}),fn=(...r)=>({match:e=>{let t;for(let n of r){let o=n.match(e);o!==!1&&(t==null||o.length<t.length)&&(t=o)}return t??!1},pattern:`or(${r.map(e=>e.pattern).join(", ")})`}),rt=(...r)=>({match:e=>{for(let t of r){let n=t.match(e);if(n===!1)return!1;e=n}return e},pattern:`and(${r.map(e=>e.pattern).join(", ")})`});function ct(...r){function e(o){let s=FD(o);for(let i of r){let a=i.match(s);if(a===!1)return!1;s=a}return s}function t(o){return e(o)!==!1}function n(o){let s=e(o);return s===!1?!1:s.length===0}return{matches:t,exactMatch:n}}var j2=rt(tt("dns4"),I1()),Z2=rt(tt("dns6"),I1()),J2=rt(tt("dnsaddr"),I1()),E9=rt(tt("dns"),I1()),hJ=ct(j2),pJ=ct(Z2),mJ=ct(J2),x9=ct(fn(E9,J2,j2,Z2)),v9=rt(tt("ip4"),Ja(Qs)),_9=rt(tt("ip6"),Ja(js)),S9=fn(v9,_9),ec=fn(S9,E9,j2,Z2,J2),R9=ct(ec),gJ=ct(v9),yJ=ct(_9),A9=ct(S9),D1=rt(ec,tt("tcp"),b9()),tc=rt(ec,tt("udp"),b9()),VD=fn(D1,tc),wJ=ct(D1),bJ=ct(tc),ep=rt(tc,tt("quic")),T1=rt(tc,tt("quic-v1")),KD=fn(ep,T1),EJ=ct(ep),xJ=ct(T1),Q2=fn(ec,D1,tc,ep,T1),I9=fn(rt(Q2,tt("ws"),dn(Sr()))),vJ=ct(I9),D9=fn(rt(Q2,tt("wss"),dn(Sr())),rt(Q2,tt("tls"),tt("ws"),dn(Sr()))),_J=ct(D9),T9=rt(VD,tt("webrtc-direct"),R1(),dn(R1()),dn(Sr())),k9=ct(T9),C9=rt(T1,tt("webtransport"),R1(),R1(),dn(Sr())),k1=ct(C9),A1=fn(I9,D9,rt(D1,dn(Sr())),rt(KD,dn(Sr())),rt(ec,dn(Sr())),T9,C9,Sr()),SJ=ct(A1),$D=rt(A1,tt("p2p-circuit"),Sr()),rc=ct($D),HD=fn(rt(A1,tt("p2p-circuit"),tt("webrtc"),Sr()),rt(A1,tt("webrtc"),dn(Sr())),tt("webrtc")),N9=ct(HD);function tp(r,e){return rc.matches(r)||e.transportForMultiaddr(r)==null?!1:x9.matches(r)?!0:A9.matches(r)?_r(r.toOptions().host)===!1:!1}var O9=1024*4,P9=100,C1={timeout:5e3,retries:3,maxInboundStreams:1,maxOutboundStreams:1},N1=class{started;timeout;retries;maxInboundStreams;maxOutboundStreams;peerStore;registrar;connectionManager;addressManager;transportManager;topologyId;log;constructor(e,t){this.log=e.logger.forComponent("libp2p:dcutr"),this.started=!1,this.peerStore=e.peerStore,this.registrar=e.registrar,this.addressManager=e.addressManager,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.timeout=t.timeout??C1.timeout,this.retries=t.retries??C1.retries,this.maxInboundStreams=t.maxInboundStreams??C1.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??C1.maxOutboundStreams}isStarted(){return this.started}async start(){this.started||(this.topologyId=await this.registrar.register(nc,{notifyOnTransient:!0,onConnect:(e,t)=>{t.transient&&t.direction==="inbound"&&this.upgradeInbound(t).catch(n=>{this.log.error("error during outgoing DCUtR attempt",n)})}}),await this.registrar.handle(nc,e=>{this.handleIncomingUpgrade(e.stream,e.connection).catch(t=>{this.log.error("error during incoming DCUtR attempt",t),e.stream.abort(t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:!0}),this.started=!0)}async stop(){await this.registrar.unhandle(nc),this.topologyId!=null&&this.registrar.unregister(this.topologyId),this.started=!1}async upgradeInbound(e){if(await this.attemptUnilateralConnectionUpgrade(e))return;let t;for(let n=0;n<this.retries;n++){let o={signal:AbortSignal.timeout(this.timeout)};try{t=await e.newStream([nc],{signal:o.signal,runOnTransientConnection:!0});let s=Qe(t,{maxDataLength:O9}).pb(Yr);this.log("B sending connect to %p",e.remotePeer);let i=Date.now();await s.write({type:Yr.Type.CONNECT,observedAddresses:this.addressManager.getAddresses().map(u=>u.bytes)},o),this.log("B receiving connect from %p",e.remotePeer);let a=await s.read(o);if(a.type!==Yr.Type.CONNECT)throw this.log("A sent wrong message type"),new g("DCUtR message type was incorrect",Go);let c=this.getDialableMultiaddrs(a.observedAddresses);if(c.length===0)throw this.log("A did not have any dialable multiaddrs"),new g("DCUtR connect message had no multiaddrs",Go);let l=Date.now()-i;this.log("A sending sync, rtt %dms",l),await s.write({type:Yr.Type.SYNC,observedAddresses:[]},o),this.log("A waiting for half RTT"),await S1(l/2),this.log("B dialing",c);let d=await this.connectionManager.openConnection(c,{signal:o.signal,priority:P9});this.log("DCUtR to %p succeeded to address %a, closing relayed connection",e.remotePeer,d.remoteAddr),await e.close(o);break}catch(s){if(this.log.error("error while attempting DCUtR on attempt %d of %d",n+1,this.retries,s),t?.abort(s),n===this.retries)throw s}finally{t!=null&&await t.close(o)}}}async attemptUnilateralConnectionUpgrade(e){let n=(await this.peerStore.get(e.remotePeer)).addresses.map(o=>{let s=o.multiaddr;return s.getPeerId()==null?s.encapsulate(`/p2p/${e.remotePeer}`):s}).filter(o=>tp(o,this.transportManager));if(n.length>0){let o=AbortSignal.timeout(this.timeout);try{this.log("attempting unilateral connection upgrade to %a",n);let s=await this.connectionManager.openConnection(n,{signal:o,force:!0});if(s.transient)throw new Error("Could not open a new, non-transient, connection");return this.log("unilateral connection upgrade to %p succeeded via %a, closing relayed connection",e.remotePeer,s.remoteAddr),await e.close({signal:o}),!0}catch(s){this.log.error("unilateral connection upgrade to %p on addresses %a failed",e.remotePeer,n,s)}}else this.log("peer %p has no public addresses, not attempting unilateral connection upgrade",e.remotePeer);return!1}async handleIncomingUpgrade(e,t){let n={signal:AbortSignal.timeout(this.timeout)};try{let o=Qe(e,{maxDataLength:O9}).pb(Yr);this.log("A receiving connect");let s=await o.read(n);if(s.type!==Yr.Type.CONNECT)throw this.log("B sent wrong message type"),new g("DCUtR message type was incorrect",Go);if(s.observedAddresses.length===0)throw this.log("B sent no multiaddrs"),new g("DCUtR connect message had no multiaddrs",Go);let i=this.getDialableMultiaddrs(s.observedAddresses);if(i.length===0)throw this.log("B had no dialable multiaddrs"),new g("DCUtR connect message had no dialable multiaddrs",Go);if(this.log("A sending connect"),await o.write({type:Yr.Type.CONNECT,observedAddresses:this.addressManager.getAddresses().map(l=>l.bytes)}),this.log("A receiving sync"),(await o.read(n)).type!==Yr.Type.SYNC)throw new g("DCUtR message type was incorrect",Go);this.log("A dialing",i);let c=await this.connectionManager.openConnection(i,{signal:n.signal,priority:P9,force:!0});this.log("DCUtR to %p succeeded via %a, closing relayed connection",t.remotePeer,c.remoteAddr),await t.close(n)}catch(o){this.log.error("incoming DCUtR from %p failed",t.remotePeer,o),e.abort(o)}finally{await e.close(n)}}getDialableMultiaddrs(e){let t=[];for(let n of e)if(!(n==null||n.length===0))try{let o=Q(n);if(!tp(o,this.transportManager))continue;t.push(o)}catch{}return t}};var nc="/libp2p/dcutr";function L9(r={}){return e=>new N1(e,r)}var B9="0.1.0",M9="id",U9="id/push",F9="1.0.0",V9="1.0.0";var H9=ke($9(),1),rp=typeof window=="object"&&typeof document=="object"&&document.nodeType===9,O1=(0,H9.default)(),P1=rp&&!O1,q9=O1&&!rp,W9=O1&&rp,z9=typeof globalThis.process<"u"&&typeof globalThis.process.release<"u"&&globalThis.process.release.name==="node"&&!O1,L1=typeof importScripts=="function"&&typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,$J=typeof globalThis.process<"u"&&typeof globalThis.process.env<"u"&&globalThis.process.env["NODE"+"_"+"ENV"]==="test",G9=typeof navigator<"u"&&navigator.product==="ReactNative";var As;(function(r){let e;r.codec=()=>(e==null&&(e=te((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.protocolVersion!=null&&(n.uint32(42),n.string(t.protocolVersion)),t.agentVersion!=null&&(n.uint32(50),n.string(t.agentVersion)),t.publicKey!=null&&(n.uint32(10),n.bytes(t.publicKey)),t.listenAddrs!=null)for(let s of t.listenAddrs)n.uint32(18),n.bytes(s);if(t.observedAddr!=null&&(n.uint32(34),n.bytes(t.observedAddr)),t.protocols!=null)for(let s of t.protocols)n.uint32(26),n.string(s);t.signedPeerRecord!=null&&(n.uint32(66),n.bytes(t.signedPeerRecord)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={listenAddrs:[],protocols:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 5:o.protocolVersion=t.string();break;case 6:o.agentVersion=t.string();break;case 1:o.publicKey=t.bytes();break;case 2:o.listenAddrs.push(t.bytes());break;case 4:o.observedAddr=t.bytes();break;case 3:o.protocols.push(t.string());break;case 8:o.signedPeerRecord=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(As||(As={}));var np=1024*8,Rr={protocolPrefix:"ipfs",timeout:6e4,maxInboundStreams:1,maxOutboundStreams:1,maxPushIncomingStreams:1,maxPushOutgoingStreams:1,maxObservedAddresses:10,maxIdentifyMessageSize:8192,runOnConnectionOpen:!0,runOnTransientConnection:!0},B1=class{identifyProtocolStr;identifyPushProtocolStr;host;started;timeout;peerId;peerStore;registrar;connectionManager;addressManager;maxInboundStreams;maxOutboundStreams;maxPushIncomingStreams;maxPushOutgoingStreams;maxIdentifyMessageSize;maxObservedAddresses;events;runOnTransientConnection;log;constructor(e,t={}){this.started=!1,this.peerId=e.peerId,this.peerStore=e.peerStore,this.registrar=e.registrar,this.addressManager=e.addressManager,this.connectionManager=e.connectionManager,this.events=e.events,this.log=e.logger.forComponent("libp2p:identify"),this.identifyProtocolStr=`/${t.protocolPrefix??Rr.protocolPrefix}/${M9}/${F9}`,this.identifyPushProtocolStr=`/${t.protocolPrefix??Rr.protocolPrefix}/${U9}/${V9}`,this.timeout=t.timeout??Rr.timeout,this.maxInboundStreams=t.maxInboundStreams??Rr.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??Rr.maxOutboundStreams,this.maxPushIncomingStreams=t.maxPushIncomingStreams??Rr.maxPushIncomingStreams,this.maxPushOutgoingStreams=t.maxPushOutgoingStreams??Rr.maxPushOutgoingStreams,this.maxIdentifyMessageSize=t.maxIdentifyMessageSize??Rr.maxIdentifyMessageSize,this.maxObservedAddresses=t.maxObservedAddresses??Rr.maxObservedAddresses,this.runOnTransientConnection=t.runOnTransientConnection??Rr.runOnTransientConnection,this.host={protocolVersion:`${t.protocolPrefix??Rr.protocolPrefix}/${B9}`,agentVersion:t.agentVersion??`${e.nodeInfo.name}/${e.nodeInfo.version}`},(t.runOnConnectionOpen??Rr.runOnConnectionOpen)&&e.events.addEventListener("connection:open",n=>{let o=n.detail;this.identify(o).catch(s=>{this.log.error("error during identify trigged by connection:open",s)})}),e.events.addEventListener("self:peer:update",n=>{this.push().catch(o=>{this.log.error(o)})}),this.host.agentVersion===`${e.nodeInfo.name}/${e.nodeInfo.version}`&&(z9||q9?this.host.agentVersion+=` UserAgent=${globalThis.process.version}`:(P1||L1||W9||G9)&&(this.host.agentVersion+=` UserAgent=${globalThis.navigator.userAgent}`))}isStarted(){return this.started}async start(){this.started||(await this.peerStore.merge(this.peerId,{metadata:{AgentVersion:L(this.host.agentVersion),ProtocolVersion:L(this.host.protocolVersion)}}),await this.registrar.handle(this.identifyProtocolStr,e=>{this._handleIdentify(e).catch(t=>{this.log.error(t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:this.runOnTransientConnection}),await this.registrar.handle(this.identifyPushProtocolStr,e=>{this._handlePush(e).catch(t=>{this.log.error(t)})},{maxInboundStreams:this.maxPushIncomingStreams,maxOutboundStreams:this.maxPushOutgoingStreams,runOnTransientConnection:this.runOnTransientConnection}),this.started=!0)}async stop(){await this.registrar.unhandle(this.identifyProtocolStr),await this.registrar.unhandle(this.identifyPushProtocolStr),this.started=!1}async pushToConnections(e){let t=this.addressManager.getAddresses().map(d=>d.decapsulateCode(Z("p2p").code)),n=new rr({peerId:this.peerId,multiaddrs:t}),o=await Gr.seal(n,this.peerId),s=this.registrar.getProtocols(),i=await this.peerStore.get(this.peerId),a=B(i.metadata.get("AgentVersion")??L(this.host.agentVersion)),c=B(i.metadata.get("ProtocolVersion")??L(this.host.protocolVersion)),l=e.map(async d=>{let u,f=AbortSignal.timeout(this.timeout);ve(1/0,f);try{u=await d.newStream(this.identifyPushProtocolStr,{signal:f,runOnTransientConnection:this.runOnTransientConnection}),await Qe(u,{maxDataLength:this.maxIdentifyMessageSize??np}).pb(As).write({listenAddrs:t.map(h=>h.bytes),signedPeerRecord:o.marshal(),protocols:s,agentVersion:a,protocolVersion:c},{signal:f}),await u.close({signal:f})}catch(m){this.log.error("could not push identify update to peer",m),u?.abort(m)}});await Promise.all(l)}async push(){if(!this.isStarted())return;let e=[];await Promise.all(this.connectionManager.getConnections().map(async t=>{try{if(!(await this.peerStore.get(t.remotePeer)).protocols.includes(this.identifyPushProtocolStr))return;e.push(t)}catch(n){if(n.code!==h4)throw n}})),await this.pushToConnections(e)}async _identify(e,t={}){let n;if(t.signal==null){let o=AbortSignal.timeout(this.timeout);ve(1/0,o),t={...t,signal:o}}try{n=await e.newStream(this.identifyProtocolStr,{...t,runOnTransientConnection:this.runOnTransientConnection});let s=await Qe(n,{maxDataLength:this.maxIdentifyMessageSize??np}).pb(As).read(t);return await n.close(t),s}catch(o){throw this.log.error("error while reading identify message",o),n?.abort(o),o}}async identify(e,t={}){let n=await this._identify(e,t),{publicKey:o,protocols:s,observedAddr:i}=n;if(o==null)throw new g("public key was missing from identify message","ERR_MISSING_PUBLIC_KEY");let a=await ut(o);if(!e.remotePeer.equals(a))throw new g("identified peer does not match the expected peer","ERR_INVALID_PEER");if(this.peerId.equals(a))throw new g("identified peer is our own peer id?","ERR_INVALID_PEER");let c=WD(i);return this.log("identify completed for peer %p and protocols %o",a,s),this.log("our observed address is %a",c),c!=null&&this.addressManager.getObservedAddrs().length<(this.maxObservedAddresses??1/0)&&(this.log("storing our observed address %a",c),this.addressManager.addObservedAddr(c)),this.#e(e,n)}async _handleIdentify(e){let{connection:t,stream:n}=e,o=AbortSignal.timeout(this.timeout);ve(1/0,o);try{let s=this.peerId.publicKey??new Uint8Array(0),i=await this.peerStore.get(this.peerId),a=this.addressManager.getAddresses().map(u=>u.decapsulateCode(Z("p2p").code)),c=i.peerRecordEnvelope;if(a.length>0&&c==null){let u=new rr({peerId:this.peerId,multiaddrs:a});c=(await Gr.seal(u,this.peerId)).marshal().subarray()}let l=t.remoteAddr.bytes;R9.matches(t.remoteAddr)||(l=void 0),await Qe(n).pb(As).write({protocolVersion:this.host.protocolVersion,agentVersion:this.host.agentVersion,publicKey:s,listenAddrs:a.map(u=>u.bytes),signedPeerRecord:c,observedAddr:l,protocols:i.protocols},{signal:o}),await n.close({signal:o})}catch(s){this.log.error("could not respond to identify request",s),n.abort(s)}}async _handlePush(e){let{connection:t,stream:n}=e;try{if(this.peerId.equals(t.remotePeer))throw new Error("received push from ourselves?");let o={signal:AbortSignal.timeout(this.timeout)},i=await Qe(n,{maxDataLength:this.maxIdentifyMessageSize??np}).pb(As).read(o);await n.close(o),await this.#e(t,i)}catch(o){this.log.error("received invalid message",o),n.abort(o);return}this.log("handled push from %p",t.remotePeer)}async#e(e,t){if(this.log("received identify from %p",e.remotePeer),t==null)throw new g("message was null or undefined","ERR_INVALID_MESSAGE");let n={};if(t.listenAddrs.length>0&&(n.addresses=t.listenAddrs.map(i=>({isCertified:!1,multiaddr:Q(i)}))),t.protocols.length>0&&(n.protocols=t.protocols),t.publicKey!=null&&(n.publicKey=t.publicKey,!(await ut(t.publicKey)).equals(e.remotePeer)))throw new g("public key did not match remote PeerId","ERR_INVALID_PUBLIC_KEY");let o;if(t.signedPeerRecord!=null){this.log("received signedPeerRecord from %p",e.remotePeer);let i=t.signedPeerRecord,a=await Gr.openAndCertify(i,rr.DOMAIN),c=rr.createFromProtobuf(a.payload);if(!c.peerId.equals(a.peerId))throw new g("signing key does not match PeerId in the PeerRecord","ERR_INVALID_SIGNING_KEY");if(!e.remotePeer.equals(c.peerId))throw new g("signing key does not match remote PeerId","ERR_INVALID_PEER_RECORD_KEY");let l;try{l=await this.peerStore.get(c.peerId)}catch(d){if(d.code!=="ERR_NOT_FOUND")throw d}if(l!=null&&(n.metadata=l.metadata,l.peerRecordEnvelope!=null)){let d=await Gr.createFromProtobuf(l.peerRecordEnvelope),u=rr.createFromProtobuf(d.payload);u.seqNumber>=c.seqNumber&&(this.log("sequence number was lower or equal to existing sequence number - stored: %d received: %d",u.seqNumber,c.seqNumber),c=u,i=l.peerRecordEnvelope)}n.peerRecordEnvelope=i,n.addresses=c.multiaddrs.map(d=>({isCertified:!0,multiaddr:d})),o={seq:c.seqNumber,addresses:c.multiaddrs}}else this.log("%p did not send a signed peer record",e.remotePeer);if(this.log("patching %p with",e.remotePeer,n),await this.peerStore.patch(e.remotePeer,n),t.agentVersion!=null||t.protocolVersion!=null){let i={};t.agentVersion!=null&&(i.AgentVersion=L(t.agentVersion)),t.protocolVersion!=null&&(i.ProtocolVersion=L(t.protocolVersion)),this.log("merging %p metadata",e.remotePeer,i),await this.peerStore.merge(e.remotePeer,{metadata:i})}let s={peerId:e.remotePeer,protocolVersion:t.protocolVersion,agentVersion:t.agentVersion,publicKey:t.publicKey,listenAddrs:t.listenAddrs.map(i=>Q(i)),observedAddr:t.observedAddr==null?void 0:Q(t.observedAddr),protocols:t.protocols,signedPeerRecord:o,connection:e};return this.events.safeDispatchEvent("peer:identify",{detail:s}),s}};function WD(r){if(r!=null&&r.length>0)try{return Q(r)}catch{}}function Y9(r={}){return e=>new B1(e,r)}var X9="/ipfs/kad/1.0.0",Q9="/dht/record",op="/dht/provider";var j9;(function(r){let e;r.codec=()=>(e==null&&(e=te((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.key!=null&&(n.uint32(10),n.bytes(t.key)),t.value!=null&&(n.uint32(18),n.bytes(t.value)),t.author!=null&&(n.uint32(26),n.bytes(t.author)),t.signature!=null&&(n.uint32(34),n.bytes(t.signature)),t.timeReceived!=null&&(n.uint32(42),n.string(t.timeReceived)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.key=t.bytes();break}case 2:{o.value=t.bytes();break}case 3:{o.author=t.bytes();break}case 4:{o.signature=t.bytes();break}case 5:{o.timeReceived=t.string();break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(j9||(j9={}));var ye;(function(r){r.PUT_VALUE="PUT_VALUE",r.GET_VALUE="GET_VALUE",r.ADD_PROVIDER="ADD_PROVIDER",r.GET_PROVIDERS="GET_PROVIDERS",r.FIND_NODE="FIND_NODE",r.PING="PING"})(ye||(ye={}));var M1;(function(r){r[r.PUT_VALUE=0]="PUT_VALUE",r[r.GET_VALUE=1]="GET_VALUE",r[r.ADD_PROVIDER=2]="ADD_PROVIDER",r[r.GET_PROVIDERS=3]="GET_PROVIDERS",r[r.FIND_NODE=4]="FIND_NODE",r[r.PING=5]="PING"})(M1||(M1={}));(function(r){r.codec=()=>Ve(M1)})(ye||(ye={}));var Pi;(function(r){r.NOT_CONNECTED="NOT_CONNECTED",r.CONNECTED="CONNECTED",r.CAN_CONNECT="CAN_CONNECT",r.CANNOT_CONNECT="CANNOT_CONNECT"})(Pi||(Pi={}));var sp;(function(r){r[r.NOT_CONNECTED=0]="NOT_CONNECTED",r[r.CONNECTED=1]="CONNECTED",r[r.CAN_CONNECT=2]="CAN_CONNECT",r[r.CANNOT_CONNECT=3]="CANNOT_CONNECT"})(sp||(sp={}));(function(r){r.codec=()=>Ve(sp)})(Pi||(Pi={}));var Oi;(function(r){let e;r.codec=()=>(e==null&&(e=te((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.multiaddrs!=null)for(let s of t.multiaddrs)n.uint32(18),n.bytes(s);t.connection!=null&&(n.uint32(24),Pi.codec().encode(t.connection,n)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={id:Ze(0),multiaddrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.id=t.bytes();break}case 2:{o.multiaddrs.push(t.bytes());break}case 3:{o.connection=Pi.codec().decode(t);break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(Oi||(Oi={}));var Ar;(function(r){let e;r.codec=()=>(e==null&&(e=te((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.type!=null&&M1[t.type]!==0&&(n.uint32(8),ye.codec().encode(t.type,n)),t.clusterLevel!=null&&(n.uint32(80),n.int32(t.clusterLevel)),t.key!=null&&(n.uint32(18),n.bytes(t.key)),t.record!=null&&(n.uint32(26),n.bytes(t.record)),t.closer!=null)for(let s of t.closer)n.uint32(66),Oi.codec().encode(s,n);if(t.providers!=null)for(let s of t.providers)n.uint32(74),Oi.codec().encode(s,n);o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={type:ye.PUT_VALUE,closer:[],providers:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.type=ye.codec().decode(t);break}case 10:{o.clusterLevel=t.int32();break}case 2:{o.key=t.bytes();break}case 3:{o.record=t.bytes();break}case 8:{o.closer.push(Oi.codec().decode(t,t.uint32()));break}case 9:{o.providers.push(Oi.codec().decode(t,t.uint32()));break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(Ar||(Ar={}));function ip(r,e={}){let t={...r,name:"SEND_QUERY",type:0,messageName:r.type,messageType:ye[r.type]};return e.onProgress?.(new mt("kad-dht:query:send-query",{detail:t})),t}function oc(r,e={}){let t={...r,name:"PEER_RESPONSE",type:1,messageName:r.messageType,closer:r.closer!=null?r.closer:[],providers:r.providers!=null?r.providers:[]};return e.onProgress?.(new mt("kad-dht:query:peer-response",{detail:t})),t}function U1(r,e={}){let t={...r,name:"FINAL_PEER",type:2};return e.onProgress?.(new mt("kad-dht:query:final-peer",{detail:t})),t}function nr(r,e={}){let t={...r,name:"QUERY_ERROR",type:3};return e.onProgress?.(new mt("kad-dht:query:query-error",{detail:t})),t}function ap(r,e={}){let t={...r,name:"PROVIDER",type:4};return e.onProgress?.(new mt("kad-dht:query:provider",{detail:t})),t}function sc(r,e={}){let t={...r,name:"VALUE",type:5};return e.onProgress?.(new mt("kad-dht:query:value",{detail:t})),t}function cp(r,e={}){let t={...r,name:"DIAL_PEER",type:7};return e.onProgress?.(new mt("kad-dht:query:dial-peer",{detail:t})),t}var ic;(function(r){let e;r.codec=()=>(e==null&&(e=te((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.key!=null&&t.key.byteLength>0&&(n.uint32(10),n.bytes(t.key)),t.value!=null&&t.value.byteLength>0&&(n.uint32(18),n.bytes(t.value)),t.timeReceived!=null&&t.timeReceived!==""&&(n.uint32(42),n.string(t.timeReceived)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={key:new Uint8Array(0),value:new Uint8Array(0),timeReceived:""},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.key=t.bytes();break;case 2:o.value=t.bytes();break;case 5:o.timeReceived=t.string();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(ic||(ic={}));function Z9(r){let e=r.getUTCFullYear(),t=String(r.getUTCMonth()+1).padStart(2,"0"),n=String(r.getUTCDate()).padStart(2,"0"),o=String(r.getUTCHours()).padStart(2,"0"),s=String(r.getUTCMinutes()).padStart(2,"0"),i=String(r.getUTCSeconds()).padStart(2,"0"),a=r.getUTCMilliseconds(),c=String(a*1e3*1e3).padStart(9,"0");return`${e}-${t}-${n}T${o}:${s}:${i}.${c}Z`}function J9(r){let e=new RegExp("(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})\\.(\\d+)Z"),t=String(r).trim().match(e);if(t==null)throw new Error("Invalid format");let n=parseInt(t[1],10),o=parseInt(t[2],10)-1,s=parseInt(t[3],10),i=parseInt(t[4],10),a=parseInt(t[5],10),c=parseInt(t[6],10),l=parseInt(t[7].slice(0,-6),10);return new Date(Date.UTC(n,o,s,i,a,c,l))}var xt=class r{key;value;timeReceived;constructor(e,t,n){if(!(e instanceof Uint8Array))throw new Error("key must be a Uint8Array");if(!(t instanceof Uint8Array))throw new Error("value must be a Uint8Array");this.key=e,this.value=t,this.timeReceived=n}serialize(){return ic.encode(this.prepareSerialize())}prepareSerialize(){return{key:this.key,value:this.value,timeReceived:Z9(this.timeReceived)}}static deserialize(e){let t=ic.decode(e);return new r(t.key,t.value,new Date(t.timeReceived))}static fromDeserialized(e){let t=J9(e.timeReceived);if(e.key==null)throw new Error("key missing from deserialized object");if(e.value==null)throw new Error("value missing from deserialized object");return new r(e.key,e.value,t)}};function ey(r,e,t){if(t.length===0){let i="No records given";throw new g(i,"ERR_NO_RECORDS_RECEIVED")}let o=B(e).split("/");if(o.length<3){let i="Record key does not have a selector function";throw new g(i,"ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY")}let s=r[o[1].toString()];if(s==null){let i=`No selector function configured for key type "${o[1]}"`;throw new g(i,"ERR_UNRECOGNIZED_KEY_PREFIX")}return t.length===1?0:s(e,t)}function GD(r,e){return 0}var ty={pk:GD};async function Li(r,e){let t=e.key,o=B(t).split("/");if(o.length<3)return;let s=r[o[1].toString()];if(s==null){let i=`No validator available for key type "${o[1]}"`;throw new g(i,"ERR_INVALID_RECORD_KEY_TYPE")}await s(t,e.value)}var YD=async(r,e)=>{if(!(r instanceof Uint8Array))throw new g('"key" must be a Uint8Array',"ERR_INVALID_RECORD_KEY_NOT_BUFFER");if(r.byteLength<5)throw new g("invalid public key record","ERR_INVALID_RECORD_KEY_TOO_SHORT");if(B(r.subarray(0,4))!=="/pk/")throw new g("key was not prefixed with /pk/","ERR_INVALID_RECORD_KEY_BAD_PREFIX");let n=r.slice(4),o=await Re.digest(e);if(!j(n,o.bytes))throw new g("public key does not match passed in key","ERR_INVALID_RECORD_HASH_MISMATCH")},ry={pk:YD};var XD=L("/pk/");function ny(r){return{...r,multiaddrs:r.multiaddrs.filter(e=>{let[[t,n]]=e.stringTuples();if(t===53||t===54||t===55)return n!=="localhost";if(t!==4&&t!==6||n==null)return!1;let o=_r(n);return o==null?!0:!o})}}async function Lo(r){return(await Re.digest(r)).digest}async function Xr(r){return Lo(r.toBytes())}function qn(r){return new Oe(`${Q9}/${B(r,"base32")}`,!1)}function oy(r){return _e([XD,r.toBytes()])}function sy(r){return B(r.subarray(0,4))==="/pk/"}function iy(r){return Ye(r.subarray(4))}function lp(r,e){let t=new Date;return new xt(r,e,t).serialize()}function ay(r,e=100){let t;return()=>{clearTimeout(t),t=setTimeout(()=>{r()},e)}}var QD=290,jD=54,ZD=55,JD=56,eT=4,tT=41;function cy(r){let e=r.stringTuples();for(let t of e)if(t[0]===QD)return!1;if(e[0][0]===jD||e[0][0]===ZD||e[0][0]===JD)return!0;if(e[0][0]===eT||e[0][0]===tT){let t=_r(`${e[0][1]}`);return t==null||!t}return!1}var F1=class{log;components;validators;selectors;peerRouting;queryManager;network;constructor(e,t){let{validators:n,selectors:o,peerRouting:s,queryManager:i,network:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-fetching`),this.validators=n,this.selectors=o,this.peerRouting=s,this.queryManager=i,this.network=a}async putLocal(e,t){let n=qn(e);await this.components.datastore.put(n,t)}async getLocal(e){this.log("getLocal %b",e);let t=qn(e);this.log("fetching record for key %k",t);let n=await this.components.datastore.get(t);this.log("found %k in local datastore",t);let o=xt.deserialize(n);return await Li(this.validators,o),o}async*sendCorrectionRecord(e,t,n,o={}){this.log("sendCorrection for %b",e);let s=lp(e,n);for(let{value:i,from:a}of t){if(j(i,n)){this.log("record was ok");continue}if(this.components.peerId.equals(a)){try{let d=qn(e);this.log(`Storing corrected record for key ${d.toString()}`),await this.components.datastore.put(d,s.subarray())}catch(d){this.log.error("Failed error correcting self",d)}continue}let c=!1,l={type:ye.PUT_VALUE,key:e,record:s};for await(let d of this.network.sendRequest(a,l,o))d.name==="PEER_RESPONSE"&&d.record!=null&&j(d.record.value,xt.deserialize(s).value)&&(c=!0),yield d;c||(yield nr({from:a,error:new g("value not put correctly","ERR_PUT_VALUE_INVALID")},o)),this.log.error("Failed error correcting entry")}}async*put(e,t,n={}){this.log("put key %b value %b",e,t);let o=lp(e,t),s=qn(e);this.log(`storing record for key ${s.toString()}`),await this.components.datastore.put(s,o.subarray()),yield*Ge(this.peerRouting.getClosestPeers(e,{signal:n.signal}),i=>Cr(i,a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[],l={type:ye.PUT_VALUE,key:e,record:o};this.log("send put to %p",a.peer.id);for await(let d of this.network.sendRequest(a.peer.id,l,n))c.push(d),d.name==="PEER_RESPONSE"&&(d.record!=null&&j(d.record.value,xt.deserialize(o).value)||c.push(nr({from:a.peer.id,error:new g("value not put correctly","ERR_PUT_VALUE_INVALID")},n)));return c}),i=>Hn(i,{ordered:!1,concurrency:3}),async function*(i){for await(let a of i)yield*a})}async*get(e,t={}){this.log("get %b",e);let n=[];for await(let a of this.getMany(e,t))a.name==="VALUE"&&n.push(a),yield a;if(n.length===0)return;let o=n.map(a=>a.value),s=0;try{s=ey(this.selectors,e,o)}catch(a){if(a.code!=="ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY")throw a}let i=o[s];if(this.log("GetValue %b %b",e,i),i==null)throw new g("best value was not found","ERR_NOT_FOUND");yield*this.sendCorrectionRecord(e,n,i,t),yield n[s]}async*getMany(e,t={}){this.log("getMany values for %b",e);try{let s=await this.getLocal(e);yield sc({value:s.value,from:this.components.peerId},t)}catch(s){this.log("error getting local value for %b",e,s)}let n=this,o=async function*({peer:s,signal:i}){for await(let a of n.peerRouting.getValueOrPeers(s,e,{signal:i}))yield a,a.name==="PEER_RESPONSE"&&a.record!=null&&(yield sc({from:s,value:a.record.value},t))};yield*this.queryManager.run(e,o,t)}};function ly(r,e){return{id:r.id.toBytes(),multiaddrs:(r.multiaddrs??[]).map(n=>n.bytes),connection:e}}function ac(r){if(r.id==null)throw new Error("Invalid peer in message");return{id:Ye(r.id),multiaddrs:(r.multiaddrs??[]).map(e=>Q(e))}}var V1=class{log;components;network;peerRouting;queryManager;routingTable;providers;constructor(e,t){let{network:n,peerRouting:o,queryManager:s,routingTable:i,providers:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-routing`),this.network=n,this.peerRouting=o,this.queryManager=s,this.routingTable=i,this.providers=a}async*provide(e,t,n={}){this.log("provide %s",e),await this.providers.addProvider(e,this.components.peerId);let o={type:ye.ADD_PROVIDER,key:e.multihash.bytes,providers:[ly({id:this.components.peerId,multiaddrs:t})]},s=0,i=a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[];this.log("putProvider %s to %p",e,a.peer.id);try{this.log("sending provider record for %s to %p",e,a.peer.id);for await(let l of this.network.sendMessage(a.peer.id,o,n))l.name==="PEER_RESPONSE"&&(this.log("sent provider record for %s to %p",e,a.peer.id),s++),c.push(l)}catch(l){this.log.error("error sending provide record to peer %p",a.peer.id,l),c.push(nr({from:a.peer.id,error:l},n))}return c};yield*Ge(this.peerRouting.getClosestPeers(e.multihash.bytes,n),a=>Cr(a,c=>i(c)),a=>Hn(a,{ordered:!1,concurrency:3}),async function*(a){for await(let c of a)yield*c}),this.log("sent provider records to %d peers",s)}async*findProviders(e,t){let n=this.routingTable.kBucketSize,o=e.multihash.bytes,s=this;this.log("findProviders %c",e);let i=await this.providers.getProviders(e);if(i.length>0){let l=[];for(let d of i.slice(0,n))try{let u=await this.components.peerStore.get(d);l.push({id:d,multiaddrs:u.addresses.map(({multiaddr:f})=>f)})}catch(u){if(u.code!=="ERR_NOT_FOUND")throw u;this.log("no peer store entry for %p",d)}yield oc({from:this.components.peerId,messageType:ye.GET_PROVIDERS,providers:l},t),yield ap({from:this.components.peerId,providers:l},t)}if(i.length>=n)return;let a=async function*({peer:l,signal:d}){let u={type:ye.GET_PROVIDERS,key:o};yield*s.network.sendRequest(l,u,{...t,signal:d})},c=new Je(i);for await(let l of this.queryManager.run(o,a,t))if(yield l,l.name==="PEER_RESPONSE"){this.log("Found %d provider entries for %c and %d closer peers",l.providers.length,e,l.closer.length);let d=[];for(let u of l.providers)c.has(u.id)||(c.add(u.id),d.push(u));if(d.length>0&&(yield ap({from:l.from,providers:d},t)),c.size===n)return}}};var K1=class extends Ce{log;protocol;running;components;constructor(e,t){super();let{protocol:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:network`),this.running=!1,this.protocol=n}async start(){this.running||(this.running=!0)}async stop(){this.running=!1}isStarted(){return this.running}async*sendRequest(e,t,n={}){if(!this.running)return;let o=t.type;if(o==null)throw new la("Message type was missing","ERR_INVALID_PARAMETERS");this.log("sending %s to %p",t.type,e),yield cp({peer:e},n),yield ip({to:e,type:o},n);let s;try{let a=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n),c=await this._writeReadMessage(a,t,n);yield oc({from:e,messageType:c.type,closer:c.closer.map(ac),providers:c.providers.map(ac),record:c.record==null?void 0:xt.deserialize(c.record)},n)}catch(i){this.log.error("could not send %s to %p",t.type,e,i),yield nr({from:e,error:i},n)}finally{s!=null&&await s.close()}}async*sendMessage(e,t,n={}){if(!this.running)return;let o=t.type;if(o==null)throw new la("Message type was missing","ERR_INVALID_PARAMETERS");this.log("sending %s to %p",t.type,e),yield cp({peer:e},n),yield ip({to:e,type:o},n);let s;try{let a=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n);await this._writeMessage(a,t,n),yield oc({from:e,messageType:o},n)}catch(i){yield nr({from:e,error:i},n)}finally{s!=null&&await s.close()}}async _writeMessage(e,t,n){let o=Qe(e);await o.write(t,Ar,n),await o.unwrap().close(n)}async _writeReadMessage(e,t,n){let o=Qe(e);await o.write(t,Ar,n);let s=await o.read(Ar,n);return await o.unwrap().close(n),s.closer.forEach(i=>{this.safeDispatchEvent("peer",{detail:ac(i)})}),s.providers.forEach(i=>{this.safeDispatchEvent("peer",{detail:ac(i)})}),s}};var fp=(r,e)=>r<<e|r>>>32-e>>>0,rT=(r,e,t)=>r&e^~r&t,nT=(r,e,t)=>r&e^r&t^e&t,cc=new Uint32Array([1732584193,4023233417,2562383102,271733878,3285377520]),Bo=new Uint32Array(80),hp=class extends ao{constructor(){super(64,20,8,!1),this.A=cc[0]|0,this.B=cc[1]|0,this.C=cc[2]|0,this.D=cc[3]|0,this.E=cc[4]|0}get(){let{A:e,B:t,C:n,D:o,E:s}=this;return[e,t,n,o,s]}set(e,t,n,o,s){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=s|0}process(e,t){for(let c=0;c<16;c++,t+=4)Bo[c]=e.getUint32(t,!1);for(let c=16;c<80;c++)Bo[c]=fp(Bo[c-3]^Bo[c-8]^Bo[c-14]^Bo[c-16],1);let{A:n,B:o,C:s,D:i,E:a}=this;for(let c=0;c<80;c++){let l,d;c<20?(l=rT(o,s,i),d=1518500249):c<40?(l=o^s^i,d=1859775393):c<60?(l=nT(o,s,i),d=2400959708):(l=o^s^i,d=3395469782);let u=fp(n,5)+l+a+d+Bo[c]|0;a=i,i=s,s=fp(o,30),o=n,n=u}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,this.set(n,o,s,i,a)}roundClean(){Bo.fill(0)}destroy(){this.set(0,0,0,0,0),this.buffer.fill(0)}},uy=ti(()=>new hp);var dy={sha1:uy,"sha2-256":xo,"sha2-512":uo};function lc(r,e,t,n,o){if(o!=="sha1"&&o!=="sha2-256"&&o!=="sha2-512"){let a=Object.keys(dy).join(" / ");throw new g(`Hash '${o}' is unknown or not supported. Must be ${a}`,"ERR_UNSUPPORTED_HASH_TYPE")}let s=dy[o],i=jm(s,r,e,{c:t,dkLen:n});return ar.encode(i).substring(1)}var $1=class{originDhtKey;capacity;peerDistances;constructor(e,t){this.originDhtKey=e,this.capacity=t,this.peerDistances=[]}get length(){return this.peerDistances.length}get peers(){return this.peerDistances.map(e=>e.peerId)}async add(e){if(this.peerDistances.find(o=>o.peerId.equals(e))!=null)return;let t=await Xr(e),n={peerId:e,distance:$n(this.originDhtKey,t)};this.peerDistances.push(n),this.peerDistances.sort((o,s)=>o1(o.distance,s.distance)),this.peerDistances=this.peerDistances.slice(0,this.capacity)}async anyCloser(e){if(e.length===0)return!1;if(this.length===0)return!0;let t=await Promise.all(e.map(Xr)),n=this.peerDistances[this.peerDistances.length-1].distance;for(let o of t){let s=$n(this.originDhtKey,o);if(o1(s,n)<0)return!0}return!1}};var H1=class{log;routingTable;network;validators;queryManager;peerStore;peerId;constructor(e,t){let{routingTable:n,network:o,validators:s,queryManager:i,logPrefix:a}=t;this.routingTable=n,this.network=o,this.validators=s,this.queryManager=i,this.peerStore=e.peerStore,this.peerId=e.peerId,this.log=e.logger.forComponent(`${a}:peer-routing`)}async findPeerLocal(e){let t,n=await this.routingTable.find(e);if(n!=null){this.log("findPeerLocal found %p in routing table",e);try{t=await this.peerStore.get(n)}catch(o){if(o.code!=="ERR_NOT_FOUND")throw o}}if(t==null)try{t=await this.peerStore.get(e)}catch(o){if(o.code!=="ERR_NOT_FOUND")throw o}if(t!=null)return this.log("findPeerLocal found %p in peer store",e),{id:t.id,multiaddrs:t.addresses.map(o=>o.multiaddr)}}async*_getValueSingle(e,t,n={}){let o={type:ye.GET_VALUE,key:t};yield*this.network.sendRequest(e,o,n)}async*getPublicKeyFromNode(e,t={}){let n=oy(e);for await(let o of this._getValueSingle(e,n,t))if(yield o,o.name==="PEER_RESPONSE"&&o.record!=null){let s=await ut(pu.marshalPublicKey({bytes:o.record.value}));if(!s.equals(e))throw new g("public key does not match id","ERR_PUBLIC_KEY_DOES_NOT_MATCH_ID");if(s.publicKey==null)throw new g("public key missing","ERR_PUBLIC_KEY_MISSING");yield sc({from:e,value:s.publicKey},t)}throw new g(`Node not responding with its public key: ${e.toString()}`,"ERR_INVALID_RECORD")}async*findPeer(e,t={}){if(this.log("findPeer %p",e),t.useCache!==!1){let o=await this.findPeerLocal(e);if(o!=null){this.log("found local"),yield U1({from:this.peerId,peer:o},t);return}}let n=!1;if(t.useNetwork!==!1){let o=this,s=async function*({peer:i,signal:a}){let c={type:ye.FIND_NODE,key:e.toBytes()};for await(let l of o.network.sendRequest(i,c,{...t,signal:a}))if(yield l,l.name==="PEER_RESPONSE"){let d=l.closer.find(u=>u.id.equals(e));d!=null&&(yield U1({from:l.from,peer:d},t))}};for await(let i of this.queryManager.run(e.toBytes(),s,t))i.name==="FINAL_PEER"&&(n=!0),yield i}n||(yield nr({from:this.peerId,error:new g("Not found","ERR_NOT_FOUND")},t))}async*getClosestPeers(e,t={}){this.log("getClosestPeers to %b",e);let n=await Lo(e),o=this.routingTable.closestPeers(n),s=this,i=new $1(n,this.routingTable.kBucketSize);await Promise.all(o.map(async c=>{await i.add(c)}));let a=async function*({peer:c,signal:l}){s.log("closerPeersSingle %s from %p",B(e,"base32"),c);let d={type:ye.FIND_NODE,key:e};yield*s.network.sendRequest(c,d,{...t,signal:l})};for await(let c of this.queryManager.run(e,a,t))yield c,c.name==="PEER_RESPONSE"&&await Promise.all(c.closer.map(async l=>{await i.add(l.id)}));this.log("found %d peers close to %b",i.length,e);for(let c of i.peers)try{let l=await this.peerStore.get(c);yield U1({from:this.peerId,peer:{id:c,multiaddrs:l.addresses.map(({multiaddr:d})=>d)}},t)}catch(l){if(l.code!=="ERR_NOT_FOUND")throw l}}async*getValueOrPeers(e,t,n={}){for await(let o of this._getValueSingle(e,t,n)){if(o.name==="PEER_RESPONSE"&&o.record!=null)try{await this._verifyRecordOnline(o.record)}catch{let i="invalid record received, discarded";this.log(i),yield nr({from:o.from,error:new g(i,"ERR_INVALID_RECORD")},n);continue}yield o}}async _verifyRecordOnline(e){if(e.timeReceived==null)throw new g("invalid record received","ERR_INVALID_RECORD");await Li(this.validators,new xt(e.key,e.value,e.timeReceived))}async getCloserPeersOffline(e,t){let n=await Lo(e),o=this.routingTable.closestPeers(n),s=[];for(let i of o)if(!i.equals(t))try{let a=await this.peerStore.get(i);s.push({id:i,multiaddrs:a.addresses.map(({multiaddr:c})=>c)})}catch(a){if(a.code!=="ERR_NOT_FOUND")throw a}return s.length>0?this.log("getCloserPeersOffline found %d peer(s) closer to %b than %p",s.length,e,t):this.log("getCloserPeersOffline could not find peer closer to %b than %p",e,t),s}};var py=ke(hy(),1);var q1=class{log;datastore;cache;cleanupInterval;provideValidity;syncQueue;started;cleaner;constructor(e,t={}){let{cacheSize:n,cleanupInterval:o,provideValidity:s}=t;this.log=e.logger.forComponent("libp2p:kad-dht:providers"),this.datastore=e.datastore,this.cleanupInterval=o??36e5,this.provideValidity=s??864e5,this.cache=(0,py.default)(n??256),this.syncQueue=new br({concurrency:1}),this.started=!1}isStarted(){return this.started}async start(){this.started||(this.started=!0,this.cleaner=setInterval(()=>{this._cleanup().catch(e=>{this.log.error(e)})},this.cleanupInterval))}async stop(){this.started=!1,this.cleaner!=null&&(clearInterval(this.cleaner),this.cleaner=void 0)}async _cleanup(){await this.syncQueue.add(async()=>{let e=Date.now(),t=0,n=0,o=new Map,s=this.datastore.batch(),i=this.datastore.query({prefix:op});for await(let a of i)try{let{cid:c,peerId:l}=my(a.key),d=gy(a.value).getTime(),u=Date.now(),f=u-d,m=f>this.provideValidity;if(this.log("comparing: %d - %d = %d > %d %s",u,d,f,this.provideValidity,m?"(expired)":""),m){n++,s.delete(a.key);let h=o.get(c)??new Set;h.add(l),o.set(c,h)}t++}catch(c){this.log.error(c.message)}o.size>0?(this.log("deleting %d / %d entries",n,t),await s.commit()):this.log("nothing to delete");for(let[a,c]of o){let l=uc(a),d=this.cache.get(l);if(d!=null){for(let u of c)d.delete(u);d.size===0?this.cache.remove(l):this.cache.set(l,d)}}this.log("Cleanup successful (%dms)",Date.now()-e)})}async _getProvidersMap(e){let t=uc(e),n=this.cache.get(t);return n==null&&(n=await cT(this.datastore,e),this.cache.set(t,n)),n}async addProvider(e,t){await this.syncQueue.add(async()=>{this.log("%p provides %s",t,e);let n=await this._getProvidersMap(e);this.log("loaded %s provs",n.size);let o=new Date;n.set(t.toString(),o);let s=uc(e);this.cache.set(s,n),await aT(this.datastore,e,t,o)})}async getProviders(e){return this.syncQueue.add(async()=>(this.log("get providers for %s",e),[...(await this._getProvidersMap(e)).keys()].map(n=>ge(n))),{throwOnTimeout:!0})}};function uc(r){let e=typeof r=="string"?r:B(r.multihash.bytes,"base32");return`${op}/${e}`}async function aT(r,e,t,n){let o=[uc(e),"/",t.toString()].join(""),s=new Oe(o),i=ze(n.getTime());await r.put(s,i)}function my(r){let e=r.toString().split("/");if(e.length!==5)throw new Error(`incorrectly formatted provider entry key in datastore: ${r.toString()}`);return{cid:e[3],peerId:e[4]}}async function cT(r,e){let t=new Map,n=r.query({prefix:uc(e)});for await(let o of n){let{peerId:s}=my(o.key);t.set(s,gy(o.value))}return t}function gy(r){return new Date(Yt(r))}async function*yy(r,e,t,n){let o=nt({objectMode:!0}),s=u=>{n("clean up queue, results %d, queue size %d, pending tasks %d",o.readableLength,r.size,r.pending),r.clear(),o.end(u)},i=u=>{u!=null&&o.push(u)},a=u=>{n("queue error",u),s(u)},c=()=>{n("queue idle"),s()},l=()=>{n("abort queue"),s(new g("Query aborted","ERR_QUERY_ABORTED"))},d=()=>{s()};r.on("completed",i),r.on("error",a),r.on("idle",c),e.addEventListener("abort",l),t.addEventListener("cleanup",d);try{yield*o}finally{r.removeListener("completed",i),r.removeListener("error",a),r.removeListener("idle",c),e.removeEventListener("abort",l),t.removeEventListener("cleanup",d)}}var lT=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");async function*wy(r){let{key:e,startingPeer:t,ourPeerId:n,signal:o,query:s,alpha:i,pathIndex:a,numPaths:c,cleanUp:l,queryFuncTimeout:d,log:u,peersSeen:f}=r,m=new br({concurrency:i}),h=await Lo(e);function p(y,w){if(y==null)return;f.add(y);let E=BigInt("0x"+B($n(w,h),"base16"));m.add(async()=>{let b=[o];d!=null&&b.push(AbortSignal.timeout(d));let S=lt(b);try{for await(let R of s({key:e,peer:y,signal:S,pathIndex:a,numPaths:c})){if(S.aborted)return;if(R.name==="PEER_RESPONSE")for(let A of R.closer){if(f.has(A.id)){u("already seen %p in query",A.id);continue}if(n.equals(A.id)){u("not querying ourselves");continue}let D=await Xr(A.id);if(BigInt("0x"+B($n(D,h),"base16"))>E){u("skipping %p as they are not closer to %b than %p",A.id,e,y);continue}u("querying closer peer %p",A.id),p(A.id,D)}m.emit("completed",R)}}catch(R){if(!o.aborted)return nr({from:y,error:R},r)}finally{S.clear()}},{priority:lT-E}).catch(b=>{u.error(b)})}p(t,await Xr(t)),yield*yy(m,o,l,u)}var W1=class{disjointPaths;alpha;shutDownController;running;queries;logger;peerId;routingTable;initialQuerySelfHasRun;logPrefix;metrics;constructor(e,t){let{disjointPaths:n=20,alpha:o=3,logPrefix:s}=t;this.logPrefix=s,this.disjointPaths=n??20,this.running=!1,this.alpha=o??3,this.queries=0,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.routingTable=t.routingTable,this.logger=e.logger,this.peerId=e.peerId,e.metrics!=null&&(this.metrics={runningQueries:e.metrics.registerMetric(`${s.replaceAll(":","_")}_running_queries`),queryTime:e.metrics.registerMetric(`${s.replaceAll(":","_")}_query_time_seconds`)}),this.shutDownController=new AbortController,ve(1/0,this.shutDownController.signal)}isStarted(){return this.running}async start(){this.running=!0}async stop(){this.running=!1,this.shutDownController.abort()}async*run(e,t,n={}){if(!this.running)throw new Error("QueryManager not started");let o=this.metrics?.queryTime.timer();if(n.signal==null){let u=AbortSignal.timeout(3e4);ve(1/0,u),n={...n,signal:u}}let s=new AbortController;ve(1/0,s.signal);let i=lt([this.shutDownController.signal,s.signal,n.signal]);ve(1/0,i);let a=this.logger.forComponent(`${this.logPrefix}:query:`+B(e,"base58btc")),c=Date.now(),l=new Ce,d=!1;try{n.isSelfQuery!==!0&&this.initialQuerySelfHasRun!=null&&(a("waiting for initial query-self query before continuing"),await Lt(this.initialQuerySelfHasRun.promise,i),this.initialQuerySelfHasRun=void 0),a("query:start"),this.queries++,this.metrics?.runningQueries.update(this.queries);let u=await Lo(e),f=this.routingTable.closestPeers(u),m=f.slice(0,Math.min(this.disjointPaths,f.length));if(f.length===0){a.error("Running query with no peers");return}let h=new Je,p=m.map((y,w)=>wy({key:e,startingPeer:y,ourPeerId:this.peerId,signal:i,query:t,pathIndex:w,numPaths:m.length,alpha:this.alpha,cleanUp:l,queryFuncTimeout:n.queryFuncTimeout,log:a,peersSeen:h,onProgress:n.onProgress}));for await(let y of Tt(...p))y.name==="QUERY_ERROR"&&a.error("query error",y.error),yield y;d=!0}catch(u){if(!(!this.running&&u.code==="ERR_QUERY_ABORTED"))throw u}finally{d||(a("query exited early"),s.abort()),i.clear(),this.queries--,this.metrics?.runningQueries.update(this.queries),o?.(),l.dispatchEvent(new mt("cleanup")),a("query:done in %dms",Date.now()-c)}}};function uT(r){return r[Symbol.asyncIterator]!=null}function dT(r){if(uT(r))return(async()=>{let e=0;for await(let t of r)e++;return e})();{let e=0;for(let t of r)e++;return e}}var z1=dT;var fT=r=>{let e=r.on||r.addListener||r.addEventListener,t=r.off||r.removeListener||r.removeEventListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function hT(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:d}=fT(r),u=(...m)=>{let h=t.multiArgs?m:m[0];t.filter&&!t.filter(h)||(c.push(h),t.count===c.length&&(n(),s(c)))},f=m=>{n(),i(m)};n=()=>{for(let m of a)d(m,u);for(let m of t.rejectionEvents)d(m,f)};for(let m of a)l(m,u);for(let m of t.rejectionEvents)l(m,f);t.signal&&t.signal.addEventListener("abort",()=>{f(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=Wr(o,{milliseconds:t.timeout});return s.cancel=n,s}return o}function dc(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=hT(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}var G1=class{log;peerId;peerRouting;routingTable;count;interval;initialInterval;queryTimeout;started;timeoutId;controller;initialQuerySelfHasRun;querySelfPromise;constructor(e,t){let{peerRouting:n,logPrefix:o,count:s,interval:i,queryTimeout:a,routingTable:c}=t;this.peerId=e.peerId,this.log=e.logger.forComponent(`${o}:query-self`),this.started=!1,this.peerRouting=n,this.routingTable=c,this.count=s??20,this.interval=i??3e5,this.initialInterval=t.initialInterval??1e3,this.queryTimeout=a??5e3,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun}isStarted(){return this.started}start(){this.started||(this.started=!0,clearTimeout(this.timeoutId),this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.initialInterval))}stop(){this.started=!1,this.timeoutId!=null&&clearTimeout(this.timeoutId),this.controller!=null&&this.controller.abort()}async querySelf(){if(!this.started){this.log("skip self-query because we are not started");return}if(this.querySelfPromise!=null)return this.log("joining existing self query"),this.querySelfPromise.promise;if(this.querySelfPromise=se(),this.started){this.controller=new AbortController;let e=lt([this.controller.signal,AbortSignal.timeout(this.queryTimeout)]);ve(1/0,e);try{this.routingTable.size===0&&(this.log("routing table was empty, waiting for some peers before running query"),await dc(this.routingTable,"peer:add",{signal:e})),this.log("run self-query, look for %d peers timing out after %dms",this.count,this.queryTimeout);let t=Date.now(),n=await Ge(this.peerRouting.getClosestPeers(this.peerId.toBytes(),{signal:e,isSelfQuery:!0}),o=>oo(o,this.count),async o=>z1(o));this.log("self-query found %d peers in %dms",n,Date.now()-t)}catch(t){this.log.error("self-query error",t)}finally{e.clear(),this.initialQuerySelfHasRun!=null&&(this.initialQuerySelfHasRun.resolve(),this.initialQuerySelfHasRun=void 0)}}this.querySelfPromise.resolve(),this.querySelfPromise=void 0,this.started&&(this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.interval))}};function Ey(r,e){if(r===e)return!0;if(r.length!==e.length)return!1;for(let t=0,n=r.length;t<n;++t)if(r[t]!==e[t])return!1;return!0}function pp(){return{contacts:[],dontSplit:!1,left:null,right:null}}function fc(r,e){if(!(e instanceof Uint8Array))throw new TypeError(r+" is not a Uint8Array")}var Y1=class r extends Ce{localNodeId;root;numberOfNodesPerKBucket;numberOfNodesToPing;distance;arbiter;constructor(e){super(),this.localNodeId=e.localNodeId,this.numberOfNodesPerKBucket=e.numberOfNodesPerKBucket??20,this.numberOfNodesToPing=e.numberOfNodesToPing??3,this.distance=e.distance??r.distance,this.arbiter=e.arbiter??r.arbiter,fc("option.localNodeId as parameter 1",this.localNodeId),this.root=pp()}static arbiter(e,t){return(e.vectorClock??0)>(t.vectorClock??0)?e:t}static distance(e,t){let n=0,o=0,s=Math.min(e.length,t.length),i=Math.max(e.length,t.length);for(;o<s;++o)n=n*256+(e[o]^t[o]);for(;o<i;++o)n=n*256+255;return n}add(e){fc("contact.id",e?.id);let t=0,n=this.root;for(;n.contacts===null;)n=this._determineNode(n,e.id,t++);let o=this._indexOf(n,e.id);return o>=0?(this._update(n,o,e),this):n.contacts.length<this.numberOfNodesPerKBucket?(n.contacts.push(e),this.safeDispatchEvent("added",{detail:e}),this):n.dontSplit?(this.safeDispatchEvent("ping",{detail:{oldContacts:n.contacts.slice(0,this.numberOfNodesToPing),newContact:e}}),this):(this._split(n,t),this.add(e))}closest(e,t=1/0){if(fc("id",e),!Number.isInteger(t)&&t!==1/0||t<=0)throw new TypeError("n is not positive number");let n=[];for(let o=[this.root],s=0;o.length>0&&n.length<t;){let i=o.pop();if(i!=null)if(i.contacts===null){let a=this._determineNode(i,e,s++);o.push(i.left===a?i.right:i.left),o.push(a)}else n=n.concat(i.contacts)}return n.map(o=>({distance:this.distance(o.id,e),contact:o})).sort((o,s)=>o.distance-s.distance).slice(0,t).map(o=>o.contact)}count(){let e=0;for(let t=[this.root];t.length>0;){let n=t.pop();n!=null&&(n.contacts===null?t.push(n.right,n.left):e+=n.contacts.length)}return e}_determineNode(e,t,n){let o=n>>3,s=n%8;return t.length<=o&&s!==0?e.left:t[o]&1<<7-s?e.right:e.left}get(e){fc("id",e);let t=0,n=this.root;for(;n.contacts===null;)n=this._determineNode(n,e,t++);let o=this._indexOf(n,e);return o>=0?n.contacts[o]:void 0}_indexOf(e,t){for(let n=0;n<e.contacts.length;++n)if(Ey(e.contacts[n].id,t))return n;return-1}remove(e){fc("the id as parameter 1",e);let t=0,n=this.root;for(;n.contacts===null;)n=this._determineNode(n,e,t++);let o=this._indexOf(n,e);if(o>=0){let s=n.contacts.splice(o,1)[0];this.safeDispatchEvent("removed",{detail:s})}return this}_split(e,t){e.left=pp(),e.right=pp();for(let s of e.contacts)this._determineNode(e,s.id,t).contacts.push(s);e.contacts=null;let n=this._determineNode(e,this.localNodeId,t),o=e.left===n?e.right:e.left;o.dontSplit=!0}toArray(){let e=[];for(let t=[this.root];t.length>0;){let n=t.pop();n!=null&&(n.contacts===null?t.push(n.right,n.left):e=e.concat(n.contacts))}return e}*toIterable(){for(let e=[this.root];e.length>0;){let t=e.pop();t!=null&&(t.contacts===null?e.push(t.right,t.left):yield*t.contacts)}}_update(e,t,n){if(!Ey(e.contacts[t].id,n.id))throw new Error("wrong index for _update");let o=e.contacts[t],s=this.arbiter(o,n);s===o&&o!==n||(e.contacts.splice(t,1),e.contacts.push(s),this.safeDispatchEvent("updated",{detail:{incumbent:o,selection:s}}))}};var pT="kad-close",mT=50,xy=20,gT=1e4,yT=10,X1=class extends Ce{kBucketSize;kb;pingQueue;log;components;pingTimeout;pingConcurrency;running;protocol;tagName;tagValue;metrics;constructor(e,t){super();let{kBucketSize:n,pingTimeout:o,logPrefix:s,pingConcurrency:i,protocol:a,tagName:c,tagValue:l}=t;this.components=e,this.log=e.logger.forComponent(`${s}:routing-table`),this.kBucketSize=n??xy,this.pingTimeout=o??gT,this.pingConcurrency=i??yT,this.running=!1,this.protocol=a,this.tagName=c??pT,this.tagValue=l??mT,this.pingQueue=new Po({concurrency:this.pingConcurrency,metricName:`${s.replaceAll(":","_")}_ping_queue`,metrics:this.components.metrics}),this.pingQueue.addEventListener("error",d=>{this.log.error("error pinging peer",d.detail)}),this.components.metrics!=null&&(this.metrics={routingTableSize:this.components.metrics.registerMetric(`${s.replaceAll(":","_")}_routing_table_size`)})}isStarted(){return this.running}async start(){this.running=!0;let e=new Y1({localNodeId:await Xr(this.components.peerId),numberOfNodesPerKBucket:this.kBucketSize,numberOfNodesToPing:1});this.kb=e,e.addEventListener("ping",t=>{this._onPing(t).catch(n=>{this.log.error("could not process k-bucket ping event",n)})}),this._tagPeers(e)}async stop(){this.running=!1,this.pingQueue.clear(),this.kb=void 0}_tagPeers(e){let t=new Je,n=ay(()=>{let o=new Je(e.closest(e.localNodeId,xy).map(a=>a.peer)),s=o.difference(t),i=t.difference(o);Promise.resolve().then(async()=>{for(let a of s)await this.components.peerStore.merge(a,{tags:{[this.tagName]:{value:this.tagValue}}});for(let a of i)await this.components.peerStore.merge(a,{tags:{[this.tagName]:void 0}})}).catch(a=>{this.log.error("Could not update peer tags",a)}),t=o});e.addEventListener("added",o=>{n(),this.safeDispatchEvent("peer:add",{detail:o.detail.peer})}),e.addEventListener("removed",o=>{n(),this.safeDispatchEvent("peer:remove",{detail:o.detail.peer})})}async _onPing(e){if(!this.running)return;let{oldContacts:t,newContact:n}=e.detail,s=(await Promise.all(t.map(async i=>{let a=this.pingQueue.find(i.peer);return a!=null?a.join():this.pingQueue.add(async()=>{let c;try{let l={signal:AbortSignal.timeout(this.pingTimeout)};this.log("pinging old contact %p",i.peer),c=await(await this.components.connectionManager.openConnection(i.peer,l)).newStream(this.protocol,l);let u=Qe(c);await u.write({type:ye.PING},Ar,l);let f=await u.read(Ar,l);if(await u.unwrap().close(),f.type!==ye.PING)throw new g(`Incorrect message type received, expected PING got ${f.type}`,"ERR_BAD_PING_RESPONSE");return!0}catch(l){return this.running&&this.kb!=null&&(this.log.error("could not ping peer %p",i.peer,l),this.log("evicting old contact after ping failed %p",i.peer),this.kb.remove(i.id)),c?.abort(l),!1}finally{this.metrics?.routingTableSize.update(this.size)}},{peerId:i.peer})}))).filter(i=>i).length;this.running&&s<t.length&&this.kb!=null&&(this.log("adding new contact %p",n.peer),this.kb.add(n))}get size(){return this.kb==null?0:this.kb.count()}async find(e){let t=await Xr(e),n=this.closestPeer(t);if(n!=null&&e.equals(n))return n}closestPeer(e){let t=this.closestPeers(e,1);if(t.length>0)return t[0]}closestPeers(e,t=this.kBucketSize){return this.kb==null?[]:this.kb.closest(e,t).map(o=>o.peer)}async add(e){if(this.kb==null)throw new Error("RoutingTable is not started");let t=await Xr(e);this.kb.add({id:t,peer:e}),this.log("added %p with kad id %b",e,t),this.metrics?.routingTableSize.update(this.size)}async remove(e){if(this.kb==null)throw new Error("RoutingTable is not started");let t=await Xr(e);this.kb.remove(t),this.metrics?.routingTableSize.update(this.size)}};var vy=[77591,22417,43971,28421,740,29829,71467,228973,196661,78537,27689,36431,44415,14362,19456,106025,96308,2882,49509,21149,87173,131409,75844,23676,121838,30291,17492,2953,7564,110620,129477,127283,53113,72417,165166,109690,21200,102125,24049,71504,90342,25307,72039,26812,26715,32264,133800,71161,88956,171987,51779,24425,16671,30251,186294,247761,14202,2121,8465,35024,4876,85917,169730,3638,256836,96184,943,18678,6583,52907,35807,112254,214097,18796,11595,9243,23554,887,268203,382004,24590,111335,11625,16619,29039,102425,69006,97976,92362,32552,63717,41433,128974,137630,59943,10019,13986,35430,33665,108037,43799,43280,38195,29078,58629,18265,14425,46832,235538,40830,77881,110717,58937,3463,325358,51300,47623,117252,19007,10170,20540,91237,294813,4951,79841,56232,36270,128547,69209,66275,100156,32063,73531,34439,80937,28892,44466,88595,216307,32583,49620,16605,82127,45807,21630,78726,20235,40163,111007,96926,5567,72083,21665,58844,39419,179767,48328,42662,51550,5251,37811,49608,81056,50854,55513,20922,18891,197409,164656,32593,71449,220474,58919,85682,67854,13758,35066,3565,61905,214793,119572,141419,21504,10302,27354,67003,46131,32668,15165,64871,34450,17821,2757,11452,34189,5160,12257,85523,560,53385,65887,119549,135620,312353,115979,122356,10867,193231,124537,54783,90675,120791,4715,142253,50943,17271,43358,25331,4917,120566,34580,12878,33786,160528,32523,4869,301307,104817,81491,23276,8832,97911,31265,52065,7998,49622,9715,43998,34091,84587,20664,69041,29419,53205,10838,58288,116145,6185,5154,141795,35924,21307,144738,43730,12085,8279,10002,119,133779,199668,72938,31768,39176,67875,38453,9700,44144,4121,116048,41733,12868,82669,92308,128,34262,11332,7712,90764,36141,13553,71312,77470,117314,96549,49135,23602,54468,28605,6327,62308,17171,67531,21319,14105,894,107722,46157,8503,51069,100472,45138,15246,14577,35609,191464,1757,13364,161349,32067,91705,81144,52339,5408,91066,21983,14157,100545,4372,26630,129112,1423,29676,213626,4397,88436,99190,6877,49958,26122,114348,60661,29818,293118,50042,179738,16400,163423,89627,31040,43973,36638,45952,5153,1894,109322,1898,134021,12402,112077,68309,190269,69866,31938,107383,11522,105232,11248,14868,39852,71707,186525,16530,38162,106212,11700,5130,16608,26998,59586,108399,230033,43683,48135,82179,2073,5015,196684,189293,16378,23452,8301,35640,11632,214551,29240,57644,33137,91949,55157,52384,117313,5090,17717,89668,49363,82238,241035,66216,29066,184088,97206,62820,26595,4241,135635,173672,8202,459,71355,146294,29587,3008,135385,141203,14803,6634,45094,69362,50925,546,51884,62011,83296,234584,44515,56050,89476,87751,19373,12691,149923,19794,13833,35846,87557,58339,2884,19145,25647,12224,11024,77338,64608,122297,53025,7205,36189,36294,170779,21750,7739,173883,75192,35664,224240,113121,30181,26267,27036,117827,92015,106516,55628,203549,67949,60462,60844,35911,20457,1820,920,19773,8738,73173,181993,38521,98254,76257,46008,92796,5384,26868,151566,22124,2411,15919,186872,180021,28099,152961,78811,80237,62352,102653,74259,184890,16792,123702,224945,29940,19512,75283,14059,112691,92811,233329,20411,138569,53341,109802,50600,134528,66747,5529,166531,31578,64732,67189,1596,126357,967,167999,206598,109752,119431,207825,78791,91938,10301,27311,24233,252343,28831,32812,66002,112267,90895,8786,8095,16824,22866,21813,60507,174833,19549,130985,117051,52110,6938,81923,123864,38061,919,18680,53534,46739,112893,161529,85429,26761,11900,81121,91968,15390,217947,56524,1713,6654,37089,85630,138866,61850,16491,75577,16884,98296,73523,6140,44645,6062,36366,29844,57946,37932,42472,5266,20834,19309,33753,127182,134259,35810,41805,45878,312001,14881,47757,49251,120050,44252,3708,25856,107864,120347,1228,36550,41682,34496,47025,8393,173365,246526,12894,161607,35670,90785,126572,2095,124731,157033,58694,554,12786,9642,4817,16136,47864,174698,66992,4639,69284,10625,40710,27763,51738,30404,264105,137904,109882,52487,42824,57514,2740,10479,146799,107390,16586,88038,174951,9410,16185,44158,5568,40658,46108,12763,97385,26175,108859,664,230732,67470,46663,14395,50750,141320,93140,15361,47997,55784,6791,307840,118569,107326,18056,58281,260415,54691,8790,73332,45633,7511,45674,143373,14031,11799,94491,35646,96544,14560,26049,32983,25791,83814,42094,231370,63955,139212,2359,169908,3108,183486,105867,28197,32941,124968,26402,88267,149768,23053,3078,19091,52924,25383,19209,111548,97361,3959,24880,235061,9099,24921,161254,151405,20508,7159,34381,20133,11434,74036,19974,34769,36585,1076,22454,17354,38727,235160,111547,96454,117448,156940,91330,37299,7310,26915,117060,51369,22620,61861,322264,106850,111694,15091,2624,40345,300446,177064,1707,27389,54792,327783,132669,183543,59003,17744,20603,151134,106923,53084,71803,279424,319816,11579,21946,16728,38274,72711,5085,83391,88646,40159,25027,34680,10752,12988,54126,30365,18338,100445,230674,44874,84974,143877,123253,139372,28082,91477,144002,13096,219729,46016,50029,42377,14601,6660,58244,58978,23918,88206,113611,64452,17541,41032,10942,12021,49189,10978,40175,37156,10947,71709,106894,112538,57007,137486,150608,152719,40615,7746,279716,13101,19524,28708,40578,72320,1096,182051,94527,51275,22833,45164,81917,77519,48508,5421,140302,37845,149830,5587,27579,5357,428725,248187,6326,206760,39814,32585,89923,44341,288753,284443,96368,31201,94189,119504,20359,52073,103216,179,27934,32801,96035,34111,34309,101326,18198,20704,210266,37643,27880,141873,106e3,19414,56614,167714,66483,107885,86602,4379,20796,75467,4987,5017,118857,26003,34308,114428,29198,6686,29697,73632,3739,69795,16798,41504,7207,30722,21436,36735,28067,28545,3239,11221,36031,41889,100010,19247,317673,29495,174554,6424,129725,53845,94986,7955,59676,2604,191497,19735,102214,62954,23844,11872,179525,261436,34492,428,78404,142035,16747,17246,27578,37021,33672,57944,26056,135760,2369,61674,122066,31327,19374,157065,40553,130982,69619,71290,38855,72100,92903,95940,51422,165999,65713,57873,50726,7288,20272,2081,42326,22624,81120,57914,79352,19447,1684,72302,11774,302559,161481,96396,13692,414988,3721,79066,56627,46883,21150,11747,12184,5856,113458,176117,84416,52079,27933,3354,59765,141359,2212,216309,2555,23458,196722,142463,45701,44548,28798,19418,215,29916,9396,10574,114226,84475,13520,18694,34056,4524,90302,62930,13539,19407,77209,7728,38088,9535,2263,23875,183945,17750,26274,67172,10585,28042,22199,7478,51331,66030,26774,192929,31434,25850,50197,52926,178158,4679,181256,70184,229600,9959,105594,72158,73974,2726,35085,78087,23284,35568,51713,155676,5401,27254,11966,17569,223253,71993,103357,111477,55722,30504,26034,46774,35392,36285,214814,41143,163465,1051,16094,81044,6636,76489,179102,20712,39178,35683,125177,54219,30617,52994,25324,50123,2543,87529,58995,10688,125199,12388,60158,125481,131646,7642,133350,65874,3438,97277,101450,10075,56344,116821,50778,60547,98016,106135,13859,14255,16300,77373,173521,8285,45932,37426,4054,114295,55947,7703,39114,52,51119,128135,19714,60715,9554,50492,88180,2823,118271,52993,122625,97919,23859,37895,25040,33614,32102,20431,3577,9275,15686,43031,157741,110358,1884,40291,125391,13736,5008,64881,87336,77381,70711,43032,49155,118587,70494,4318,10168,30126,12580,10524,280104,104001,145413,2862,84140,6603,106005,13566,12780,11251,42830,571,179910,82443,13146,469,42714,32591,265217,424024,92553,54721,134100,6007,15242,114681,59030,16718,85465,200214,85982,55174,165013,23493,56964,82529,109150,32706,27568,82442,5350,14976,13165,44890,60021,21343,33978,17264,4655,22328,27819,75730,16567,55483,14510,17926,45827,150609,3704,7385,272531,161543,76904,122163,52405,2039,19165,41623,14423,228354,3369,176360,85491,7122,35789,303724,4465,13628,2233,55311,118771,20713,10006,221519,45115,71021,35650,29775,7337,10864,20665,21142,1746,15080,1624,32449,10905,105743,229797,7701,3940,22997,178467,57208,389057,39683,59403,63344,63125,54847,69691,18336,56448,3362,37202,18282,29648,138224,35867,10495,5911,28814,26653,31514,176702,26550,45621,11734,4525,40543,73944,121080,27858,155561,14887,44670,30742,8796,107455,113472,56369,75581,183777,240095,133699,153299,8768,160464,26058,49078,103971,21875,71486,44888,17156,9678,89541,123019,102337,3972,83930,21245,87852,109660,287918,183019,686,10100,39177,283941,11274,24736,26793,26214,25995,77011,141580,4070,23742,46285,46632,30700,26669,19056,35951,115575,174034,56097,35463,87425,24575,44245,38701,82317,85922,281616,100333,147697,61503,7730,84330,8530,59917,61597,17173,9092,32658,90288,193136,39023,20381,56654,31132,7779,1919,1375,117128,30819,11169,40938,23935,115201,101155,151034,4835,11231,74550,89388,59951,91704,107312,167882,115062,12732,72738,88703,464019,158267,57995,60496,737,14371,123867,4174,243339,159946,7568,16025,134556,110916,38103,191,80226,88794,29688,27230,10454,76308,57647,77409,113483,66864,14745,19808,12023,46583,84805,16015,17102,2231,20611,3547,95740,250131,34559,108894,8498,15853,159169,148920,20942,2813,93160,45188,210613,45531,52587,149062,39782,28194,57849,60965,84954,89766,84453,100927,16501,27658,165311,103841,54192,207341,19558,20084,319622,5672,205467,98462,61849,36279,13609,147177,24726,165015,209489,59591,31157,6551,117580,75060,141146,277310,21072,22023,106474,63041,137443,122965,68371,5383,42146,98961,113467,30863,23794,4843,99630,30392,82679,13699,241612,33601,93146,24319,18643,32155,95669,40440,15333,34089,67799,142144,58245,38633,114531,117400,77861,188726,5507,2568,8853,10987,107222,2663,2421,11530,13345,30075,41785,118661,104786,17459,12490,16281,71936,193555,17431,5944,71758,26485,77317,20803,367167,158,7362,93430,11735,172445,46002,11532,54482,930,62911,2235,23004,179236,4764,101859,208113,22477,55163,95579,14098,67320,162556,90709,156949,3826,57492,4025,34092,87442,104565,6718,186015,28214,14209,10039,107186,233912,58877,81637,55265,39828,6194,145813,50831,105849,4974,88319,122296,10272,197216,95714,51540,72418,23324,91555,8743,140452,250249,51666,34124,7229,38592,129641,78169,174242,22464,149964,51450,14034,10026,95376,26190,120062,14401,8700,265,31386,143573,7203,229889,61567,4227,140981,2466,72052,10787,10062,30958,6099,38471,30103,23202,208101,70847,467,58934,32271,32984,36637,24107,30771,17109,73353,13650,2098,157040,67366,66904,106018,265380,107238,18535,44025,32681,144983,62505,91295,56120,3082,77508,10322,63023,36700,81885,224127,16721,45023,239261,111272,13852,7866,149243,204199,32309,22084,42029,38316,126644,104973,14406,43454,67322,61310,15789,40285,24026,181047,6301,70927,23319,115823,27248,66693,115875,278566,63007,146844,56841,59007,87368,180001,22370,42114,80605,12022,10374,308,25079,14689,12618,63368,7936,264973,212291,136713,95999,105801,18965,32075,48700,52230,35119,96912,32992,8586,16606,101333,101812,14969,39930,759,193090,27387,42914,12937,5058,62646,64528,38624,25743,37502,3716,4435,30352,178687,26461,132611,42002,138442,35833,59582,16345,8048,60319,49349,309,47800,49739,90482,26405,34470,63786,32479,85028,39866,47846,11649,23934,29466,2816,42864,31828,7410,74885,49632,47629,111801,90749,19536,18767,105764,59606,21223,10746,76298,22220,39408,7190,79654,64856,11602,82156,272765,17079,70089,245473,51813,184407,384678,1576,122249,5064,27481,6188,25790,74361,27541,318284,45430,31488,620,93579,45723,192118,22670,51913,4162,70244,35966,26397,16199,50899,209613,121702,287507,2993,36101,132229,67345,33062,76295,118628,78705,52316,34375,107083,107454,44863,127561,33964,3073,154010,190914,55967,39074,6272,31047,5550,41123,26154,98638,47110,19998,148091,50229,31329,59900,195442,19106,61347,73497,70015,682,45850,25776,38022,148951,6288,37411,232526,109277,27286,32342,9262,5220,16651,23175,46740,129438,78614,121925,66914,88710,127952,5563,21500,34521,10739,14863,191006,62956,17359,16749,67027,56284,69134,43301,35039,58883,54466,60823,404451,75743,59856,86979,7923,34273,83785,32142,7693,268986,197428,282681,17049,22346,22990,92245,107180,3357,37104,96724,49153,7683,31197,43267,82231,164276,23696,20848,188364,22309,24821,158707,1018,22514,70922,27792,45589,59709,10765,736,35218,63479,51987,24275,63588,55361,92929,81964,4658,20122,12330,44058,13065,311456,72224,8337,211229,38979,22590,138478,52757,32595,133600,8838,31549,94412,43391,90056,1585,94802,127271,6223,31889,137038,132910,2165,57616,230152,6080,10748,36737,74579,134062,50525,180532,119270,34556,76155,82394,52595,29258,31435,87820,67996,26943,183878,38007,2410,13526,180297,69856,3503,187396,167700,7838,16701,9199,56267,3661,37407,65994,23767,5708,62508,221700,67088,86978,46776,84434,32088,5612,9149,88244,21685,95151,46750,189612,2979,506311,2594,3628,40074,105039,78243,28523,6651,38058,71999,30992,12764,68261,108991,6165,26450,61961,13400,22426,7490,60890,109623,2070,12958,50355,67979,257096,7213,42578,52121,35716,65461,7516,124758,39268,302,64712,14977,1467,219452,2840,34229,11121,21602,19270,63574,8024,1532,17331,79839,78885,52029,180767,57957,6069,91265,61380,55767,8927,32881,287603,22149,35029,68876,6428,199567,46926,13412,104132,21434,366616,45060,110046,81924,128910,45886,52821,130416,29416,77342,21762,67329,121432,79924,11724,38625,81006,102033,28338,13326,3250,82056,82526,38212,21112,12382,111495,3263,7414,86274,93490,40844,30224,45212,24019,48411,71367,24941,76729,57776,3769,38114,202019,197745,31953,237533,33270,201580,255648,100798,44741,32241,98468,106931,10085,15090,170358,33154,66787,18819,69760,25061,234005,82660,6295,131975,16874,9076,4094,25005,17740,40908,19533,220019,44330,99792,50040,19619,13950,55228,24423,31253,95308,103177,184795,28590,82285,5059,3210,75525,49894,70007,56178,10580,36051,139681,21617,98736,3555,106306,164189,37352,63915,47824,24883,145530,61904,28444,11483,19837,145446,30420,112972,85939,11835,191233,2262,20705,58630,1753,148334,1197,144714,6887,11223,107667,60879,77914,4151,57417,81594,96681,169430,1784,20444,95138,254041,27038,596,7117,72808,13759,3353,126776,21074,55322,27081,36942,39547,139830,179275,4453,713,8722,71399,19204,25785,22794,23923,104114,11291,25458,102309,88396,75288,230440,206396,104551,58447,130857,37247,94734,31548,176529,226077,65159,20104,10096,66881,94191,237909,27109,37404,1520,27421,25220,113003,23423,24884,50585,6286,231877,150800,11789,3226,90004,60642,5053,202400,61442,132531,175329,57138,30116,103847,9973,75367,16452,32360,59119,21246,10191,164804,23305,61051,37348,154530,13214,5468,50403,66754,130976,50559,80515,14436,155492,84017,5472,43107,41240,2890,90431,70188,382,76234,48040,50211,281038,237007,32115,142178,1536,22761,96429,1811,31243,1679,49143,55209,17402,235054,61494,7462,77030,34925,87609,78002,9499,9027,73289,201078,101379,63544,27666,5469,10642,30029,49816,132979,95620,58086,351930,116300,2110,2043,30845,6154,11279,16727,4122,2277,27281,4971,3650,39060,61970,65951,39674,75686,38151,11370,130809,177895,32665,63725,122267,7857,39618,118483,44792,157755,178624,136994,24260,41308,22471,12404,21707,12486,30473,52781,50246,20247,39065,909,56825,103158,128603,31542,1089,41935,32744,12428,37963,84420,33134,72921,208449,42622,168151,127335,147107,46699,38216,12591,94342,85814,31423,24944,2605,87542,67473,192551,4496,56321,91819,17630,6300,256183,114569,202090,33209,35289,34897,24967,40520,43470,5344,10199,34810,14283,10381,10017,62923,49924,23233,64539,13051,35686,19698,11570,135555,120868,44924,87065,52318,52335,47586,140906,245885,109834,78668,9065,46990,25258,72022,61243,40838,4545,146387,10537,11557,17470,36930,68104,46711,24264,79401,81043,18225,120488,24746,84338,81652,28266,13776,21878,46973,1047,230465,73357,95777,24973,210160,62210,58404,110633,169651,6937,41870,9909,26822,191062,76553,27519,96256,239070,2478,205678,67955,58532,20601,50120,19148,78501,195724,110740,8249,109665,27446,30568,57631,31425,49752,32820,65504,50079,3663,102256,219898,23849,211315,14645,4359,91767,9528,12449,49366,7941,49763,107848,8930,27086,50686,9744,10447,81935,39513,46514,1670,29229,6172,22312,137280,97759,9806,14445,22976,56458,73391,34983,93760,174219,52573,33149,59747,2429,136277,75123,165263,91040,7446,57632,48633,97140,246081,84766,151684,79918,93268,120346,54059,54875,77858,32996,103590,45276,11968,19600,25849,17159,132907,42828,16817,4913,99462,103303,27395,5737,74184,20749,21160,14377,77062,131403,158735,10999,27799,77785,9320,34366,51593,61070,33746,47048,29268,36675,30262,53297,9832,82e3,20188,122292,39917,7331,18160,68301,185935,134830,15031,4935,10004,165845,185534,46923,30109,44134,122631,18874,22903,112790,26561,18549,348902,82871,140345,255565,135390,63556,103747,145055,179600,145662,296111,61661,211987,23952,52342,126343,48450,32919,44277,82185,9591,62139,205363,376969,394874,108461,18040,120885,14798,39863,16571,16794,58271,81025,55206,14640,118656,6361,44092,85970,6262,153863,108244,180200,72264,79947,38044,10050,5735,61221,80712,5471,115689,11391,11661,184257,20010,60116,30320,19327,134598,45455,27542,18004,125092,452272,1549,91523,46567,180063,156026,2608,11174,58848,37788,65907,80194,30490,5786,40775,119519,106241,11323,156297,8425,61495,2617,29675,2425,59886,112582,49142,59618,4863,50597,86710,50650,168632,27693,85641,83643,18993,25768,84284,28090,93592,36627,312804,43381,9887,9402,100931,97165,3311,173330,66805,28935,4963,184460,3201,78102,19126,21607,37496,24938,22615,16153,32862,134792,153318,61120,6067,2812,12826,12792,23825,37559,64662,202250,102694,155488,85881,149193,46233,65383,15521,106982,11358,176786,25752,39717,34208,24510,32464,77742,39371,72028,138229,60688,71386,102834,132477,2208,11548,63670,271279,28351,30338,38620,32491,99845,143885,152266,13252,2825,178663,108097,1775,78201,14897,113573,163346,62292,171129,22183,96598,38733,64971,166776,117445,9968,146393,44677,74867,20908,97328,12761,25656,26785,9148,112344,26115,99176,110121,22437,49547,6180,79320,5835,31392,43328,33377,75870,119860,69497,80273,7325,155219,43167,111173,28347,20222,3763,71752,55041,47252,14618,28088,15012,97805,194698,54636,2036,41349,6173,96604,61530,51859,43782,13361,24334,22668,24792,7070,23441,16789,3209,36211,208475,26242,32880,122181,182407,21444,31060,88459,29929,77907,12716,10934,97005,20599,31690,8403,58445,30303,22700,10336,86731,103115,337709,72556,46788,112566,47684,67089,53548,36874,56487,41387,125985,26893,40071,106683,73712,18787,40105,72992,67246,137276,50802,36790,70328,138827,22466,39263,183295,29858,50975,9322,57397,10654,24364,30383,55799,41600,23584,127295,296610,129078,143558,244131,86397,36049,1085,80677,3820,108139,5476,34767,24683,7758,13060,7239,131671,250593,59556,103392,29810,4188,252323,39404,116877,7651,43600,40338,13554,157253,39196,25978,144387,61211,234,50104,6129,10449,93777,9240,356378,274148,4439,72970,3724,147770,78680,62570,115877,40027,40547,36817,224392,64609,34795,165027,67440,2477,37206,23431,50754,164797,46018,94995,170982,27051,7957,22767,3674,27900,56419,18930,60701,41302,2692,84749,339721,61996,111094,80221,50129,1045,8153,62945,19202,8250,37208,37418,32560,79477,41106,88569,33963,36693,5892,30570,1581,66471,49647,11922,160717,29442,5643,114865,82962,95982,132098,22633,22838,94726,54556,28566,205039,162340,33216,16849,35847,221339,94851,26533,71469,1805,3804,12935,45483,71020,36310,65381,192960,34240,35165,59773,1248,46954,155332,96864,4246,388800,16129,57133,74592,44807,442014,38203,42574,80818,91592,26377,36424,65760,977,77387,22628,147610,28018,30561,98454,6969,119628,63648,18170,36854,26601,64018,22027,37279,51395,152934,21153,9430,58760,194742,5330,55115,34158,28917,174111,13171,122326,1526,43896,66094,25325,4234,148354,11450,275,18999,112191,44365,22723,68409,8733,57746,96565,75007,14196,108844,29475,88599,177563,100792,106156,86323,93726,14248,135341,194131,40126,47099,14779,8272,39597,95983,171398,65882,28052,10393,47213,40689,22120,72212,106829,34964,109146,753,648,21660,30047,17527,181025,5619,145357,4085,216883,9359,186951,24779,53931,24545,36197,223296,62628,168101,4243,107313,30321,26642,13049,51059,31027,107912,807,73550,26551,84369,122422,165872,49754,74213,234264,33151,52014,33100,87183,22365,52500,40013,23302,5652,72723,21404,26107,48434,587,94049,168493,96418,32871,70860,31709,25128,443,71597,166253,15670,70994,26341,133675,28280,75491,54756,47955,56028,26182,11952,113272,472197,64640,110753,17919,337,50642,22576,142,87371,53391,93210,126694,15285,19642,85667,14148,1506,42092,52962,33243,11970,20734,135843,57044,58880,13002,219134,22876,64754,232519,4257,43120,321573,24799,64526,124728,52579,81472,70831,276848,17403,74359,23021,182101,74597,23744,148267,12055,7976,5349,11772,67540,167347,65318,18720,127832,108238,22828,90233,9987,259080,118185,73209,79270,13775,90100,137742,90799,70569,15699,19961,9087,67475,57872,39731,8810,134897,131868,146849,19898,3334,2281,167061,91073,60356,467742,74712,188,53179,137679,92769,29241,9537,132595,80119,1041,88962,5976,40171,44911,102859,139059,104558,98987,47761,19272,71472,113864,175377,73338,10857,23402,23758,1591,139864,5644,4076,118760,16427,134198,18853,20291,100849,37423,22038,36677,19071,195521,57445,11069,31869,55718,66882,148490,44,41296,75242,49704,166810,9906,20943,122258,49112,105667,15969,10344,6408,187694,21399,72742,58970,14867,14376,81889,41856,23225,15042,56993,16074,131389,74276,72407,53875,383108,53597,37363,68993,44854,122548,430927,198279,38430,80409,12245,2981,628,2818,17760,37437,238229,7968,46892,2200,3730,34190,65983,37959,112291,87850,70827,6522,20750,73913,111621,41652,19587,2780,58668,25916,85259,18200,168962,95781,42445,102050,7776,57662,103313,47742,96358,41964,66174,100396,29069,204735,19679,27978,7479,40264,22534,61183,36081,107436,58223,14680,23002,101311,24716,124108,12908,5646,31750,40380,14215,232799,102772,14122,96775,61398,50917,12096,149880,67833,598749,124194,155871,49216,790,14677,65319,56917,7440,145744,95701,12206,49405,129269,76199,45732,9767,11058,9047,210885,11051,7392,26307,2130,8132,147526,20802,232698,115660,50060,59789,57344,107623,80343,112676,23291,9866,160971,34032,118291,15719,59730,164911,28975,2659,58046,78480,21854,66209,53863,109085,116045,29021,46481,107552,22130,18764,70254,31272,11300,52460,43933,84738,20721,53869,190840,79673,105300,7561,321817,66924,13940,33281,101046,183181,32176,71878,5678,62924,79535,56646,40303,19559,27703,93042,73368,42187,3670,37376,46440,7023,36816,109628,20680,5940,276440,275233,170848,112093,136996,14984,20226,111441,77693,112960,48577,39370,55707,50314,123404,26570,54281,61372,123391,4857,35928,246740,132507,106646,44241,7196,92258,9825,37688,51197,303141,5590,15476,132986,10955,85782,34486,26696,7991,28813,18858,39546,11703,11365,38185,5716,93555,11925,40121,60002,6985,10976,171384,3887,43394,13337,56346,6381,252336,39573,75042,53711,1028,31781,44295,95925,131713,7214,68125,43571,70954,213234,1628,8760,13391,65485,17320,56038,1710,25248,60803,57399,19839,3870,326,281556,50945,72400,21460,316244,75619,56246,98775,481,13513,55765,50427,7388,123519,32929,57908,27124,61316,101097,57467,30228,48792,10788,20402,37318,50526,155730,34456,158065,145305,17832,43733,64052,4506,35072,205355,177028,184004,187081,68616,35938,83703,10367,36892,93186,260137,51934,89970,4985,23445,26755,21558,7948,78741,23376,124405,85594,68596,57536,49351,12619,56593,132668,99924,109728,71844,71935,196018,65464,17617,14987,89701,143773,33997,8687,22701,33258,2914,4436,72108,85610,9671,49067,2327,82988,1361,1672,44033,35777,30269,24057,10605,82236,616,15793,13919,47249,112086,116698,9484,80207,90574,33304,68624,93127,56101,42210,160929,4827,38995,38095,4701,125119,5027,33680,9236,231236,14135,87837,23318,70261,78893,30151,81482,14332,1084,74256,27532,46644,79185,3148,62615,6981,55672,31668,36825,1849,14536,37446,14738,23779,43058,162749,72199,1168,21346,5592,85932,85302,9668,18351,57135,150360,2080,228015,77953,34670,119302,151751,31009,106725,84265,45214,59289,74178,113071,263206,111009,4021,44449,188119,192629,123592,392506,292847,114487,12831,205858,9852,20780,79648,75767,357014,97721,18166,21005,67950,33226,204009,16536,2987,11335,66717,144910,47950,17262,55060,15063,2934,51038,26775,178497,66008,3427,49433,128592,20036,157553,63861,3089,23015,51210,28696,35933,49942,71135,231518,99620,17248,21835,176536,20676,16944,38700,165831,233253,295625,36723,13023,52745,10907,19423,67972,125868,95473,82875,1183,108455,52685,33417,64095,21433,52438,33191,127809,44505,211823,7810,2752,95548,162031,7185,91196,47563,61721,33359,17897,23682,42806,178101,22874,49707,199897,75419,82456,8618,11171,79712,116847,18783,44190,46564,5346,59046,95032,7893,14916,3214,26800,24172,121453,34362,10250,17408,18888,4840,68696,22831,13162,36005,32512,14800,62357,41723,45046,27247,37486,5372,2564,34261,298500,66509,133920,89138,31305,117697,19097,108304,81386,84106,23802,46411,63304,946,51417,41777,41041,19501,115864,60743,294354,37955,94165,18116,1156,17937,20645,57114,90804,58042,48643,92288,9861,2557,88546,61333,101008,12853,5148,87856,4152,144503,73841,18718,9789,147565,10846,42085,12789,30223,8993,56352,67203,2448,28215,6052,23540,126319,75933,36689,80235,23231,23561,21383,38800,77548,102798,21234,31468,158608,46188,63960,191679,8051,67014,11185,170078,42186,28827,34777,41930,212079,12421,34750,24111,110344,73918,45171,70826,141949,40063,23979,24254,37309,26724,27179,24718,83648,54938,14591,17425,29525,102675,48975,48654,12316,8929,60640,41709,50168,63264,89812,50716,48632,38755,138583,160123,55579,71829,24230,233277,46322,39650,166388,34718,24108,98252,7031,106695,62498,18258,35062,217827,78731,34824,33354,19520,60852,2432,60224,8587,2836,62955,702,20227,42285,40560,95592,62486,11094,53035,143291,18842,46177,77994,1770,9657,107422,172915,32655,128716,25886,25164,156740,119928,165875,85817,11007,89110,33956,12652,65156,180266,8494,36889,19958,20955,96,1264,118288,135769,44754,86671,5632,19026,168220,289120,33569,93821,66144,70635,7687,5642,2714,55445,56636,71545,184182,93133,7332,37389,12643,52315,22729,11014,158742,17050,152889,50178,34601,41945,52136,9948,26914,63548,95721,115951,40759,8960,158258,38938,49232,48325,42234,81523,253019,66128,40978,20048,238048,38760,62928,122560,118532,43687,137472,163689,26680,9878,17448,51035,16211,60834,36749,29178,14241,59868,150086,2305,26477,42422,34342,165341,83279,33894,14257,29928,12743,13957,125571,89134,66712,10952,16507,147839,30146,7249,16565,45399,39874,114565,215780,31990,230881,171477,102,196546,44538,10880,84948,281705,86651,10617,31395,2342,453658,43569,60561,132901,21845,17727,58556,258242,22262,58728,4008,77997,11806,37431,30599,81375,109137,185787,114085,217292,97453,169085,30593,60212,11544,102056,65580,2384,91655,4855,95725,7295,157994,16228,20669,53276,141590,105246,17334,25440,76067,17967,39321,38911,11362,28559,63807,21627,26468,85816,40120,1025,15234,58319,69516,66512,124548,75845,78873,22137,46681,51242,85683,32909,76747,35555,43396,101465,1765,73094,1077,2962,39028,66777,57831,42048,15828,13962,36041,63657,52412,5242,58846,2141,5506,219012,134451,3936,182230,17558,17153,152237,22621,49377,170216,35257,68233,65374,6510,11126,212151,7184,2480,22517,3437,33073,30156,16557,3768,55067,86829,91e3,12350,148650,66017,79424,70885,49066,28250,21369,51213,34533,11510,3258,18176,18465,84413,6315,36411,163765,4346,356,107618,598,13727,285026,162695,8749,14583,7132,63521,184253,32378,25991,5604,30961,53675,4874,84693,5086,34811,26978,56564,7904,33519,51221,113942,69253,6664,125563,22055,220680,102008,742,51930,19494,176108,44424,35123,13025,75685,11759,74335,22250,181453,131147,16984,132115,154311,11991,76452,52609,85351,196,30969,9198,74919,2529,56838,71779,29187,116304,3504,62330,41190,86153,28393,254926,104228,105189,13264,84359,3574,12415,8534,57147,10175,188174,59504,60932,66318,16407,107921,17638,99103,49278,28403,39786,145865,8462,3558,43406,142271,29139,21989,36552,93955,72365,7176,13556,106185,37957,321774,17782,129017,51154,27938,24952,1935,39366,2791,33489,41582,56078,24558,9311,5449,218786,27808,190429,68013,36020,86003,29735,3404,87348,119357,115714,2324,86796,81973,40992,43376,93621,28784,16808,36367,2517,2909,191926,24978,55303,53308,205724,60068,3098,21375,64784,23949,26579,63121,12319,80145,39967,97861,6757,70143,67642,37082,34698,69140,122883,46151,62187,80934,429,19437,135071,137885,222647,13331,154065,327,61778,74257,40116,37493,14855,85079,237641,42342,102164,199965,71204,4662,29368,5042,113914,122214,8955,13149,102503,43173,5659,163787,69003,307084,63392,171080,21390,81918,86666,36622,24126,28887,5736,28054,207170,163428,79891,346467,95363,38980,111806,80828,9200,19288,294896,114468,87405,111715,141705,7015,72754,68463,48738,243147,33397,101210,37051,98801,82847,20397,4940,185559,18716,54718,83491,11725,40803,1128,12128,23060,5174,7745,67007,46701,1571,27807,180186,256996,18975,16837,7877,212758,250379,15440,87954,57755,24719,124057,83461,258,50864,8874,29038,71289,31627,15429,9005,4061,113851,107716,82819,13651,79656,117851,17539,111446,12938,39724,190787,4352,15402,21070,62708,8539,23777,73853,13552,38810,86117,16285,56400,1718,75342,142863,29033,378,110113,180321,32586,23606,26393,160984,207987,23783,8406,16904,24596,47274,11693,46539,60524,78595,48423,31718,20170,9009,146268,15183,191060,172765,1349,138436,37365,10970,40509,225817,20021,70394,152138,21541,66559,66544,89352,2725,17258,91345,7313,3815,115868,8660,40362,4071,103524,39388,118275,21950,6549,38226,32754,209574,29201,43495,18028,20296,40597,18370,47520,202450,24134,2219,8195,69545,38041,136934,46374,19041,159811,84865,58620,846,98749,13569,30714,97246,32186,4479,27355,92973,35214,151491,75963,37631,1561,27200,238083,23182,60756,12291,25766,39355,102333,87362,65741,59906,19538,201575,48772,102938,24438,292580,39964,66366,9004,61379,50548,37622,38732,28379,68180,76622,17488,69849,5963,7219,48143,43413,55358,540,58691,29506,19245,52193,48621,5518,13048,118625,44755,191081,42061,89197,2259,60665,66994,71210,51232,3585,142096,55024,7892,8345,58653,463307,65658,64319,137941,136323,53499,12746,43492,6978,95163,29925,60175,5128,7352,41463,184756,121146,20473,18426,4598,5309,54580,14277,121151,10691,56711,43880,63409,76682,11830,172218,264898,32632,66536,81062,31649,25788,92774,60222,11100,63159,9432,224657,25240,53613,152,138620,163829,2397,85345,12501,37507,64932,38575,43522,65789,80198,78796,35226,3851,108891,73311,3060,28391,93671,39663,46142,30982,66041,37281,68157,26553,71872,81142,211527,39747,118119,22695,2859,11066,20232,168911,7933,197005,17066,111071,44434,133994,120798,12766,227798,45756,132852,29917,36076,55352,65281,129800,41958,18944,84678,18580,168093,132621,39997,54092,27740,32354,3770,114118,103242,43918,15899,18574,145944,3190,123469,219903,24169,100571,62403,16776,92779,14535,17168,16475,14304,37231,1712,28218,242754,61688,28980,1318,51359,222657,99200,67989,31772,23932,35351,201251,49041,27306,19128,40135,3986,77333,19649,120683,151927,21081,7076,78375,77501,101599,8011,89585,96715,58179,5378,102138,106793,26051,217276,4197,16297,27014,46721,13322,22806,5278,29629,70632,9647,71519,58818,40603,128530,8903,36770,56900,31483,26935,43845,34265,34920,87658,6114,84767,64250,47318,50720,19264,162514,33357,13117,6705,46696,75032,71054,87004,42035,69138,11903,99854,102328,19611,34525,69312,6431,49842,101600,133178,108751,41829,89939,225664,48916,99556,9195,130387,5960,36857,116724,53518,94002,39077,53996,6945,22261,64291,8314,152785,57588,16522,9091,5048,87671,35441,39509,1945,12423,158923,178413,37549,14095,1475,73188,62878,4819,24012,68534,42606,4010,120809,57497,59564,101758,103718,32701,80116,12345,95834,46918,21468,53213,15665,31200,3867,5140,96013,250744,21016,10069,13968,35449,180829,27683,39704,59956,22893,3115,26293,32785,75934,62445,141162,62720,2018,83638,19949,114012,95006,3330,99829,130935,309272,9565,55874,121727,37017,23586,319858,40970,27602,8625,112329,61060,100088,118525,25922,16232,1907,60671,51583,44553,80993,5262,94679,8676,940,20736,11823,3020,16476,12340,152600,97416,3703,25744,66826,16245,16876,46446,84798,74227,176020,45192,61955,75496,23946,23626,40372,26036,6149,11822,30582,16541,41914,82385,232823,40921,80773,14930,3631,7517,39619,4348,36180,126106,138939,62611,1477,113512,47321,25052,14546,118881,29060,23589,128322,36795,18401,137921,104699,267929,36194,172791,18113,4766,188215,30083,332586,94089,5805,77909,22194,68234,154976,43220,40660,70001,184893,138095,11128,103010,22663,5108,212615,8485,5565,49222,54614,26530,42639,16319,55062,152662,105595,21114,22216,10294,68158,10436,86950,7206,62115,3977,3657,59874,456,118617,18156,106663,112229,80992,17442,8217,55551,5133,34344,251927,51153,39364,201321,7816,66803,23057,156724,145664,14276,95705,979,2796,6875,13429,212525,50602,26276,28284,3424,19465,52397,46963,31420,51399,206476,92317,48851,637,100820,83349,10317,60227,21972,6908,282439,32857,224767,95629,83882,42106,87338,69757,29840,68709,37665,45244,114577,49188,175943,54009,186746,106158,70168,3358,234002,50555,9221,129338,9562,20118,32923,78479,118280,65752,4977,10474,102174,60947,129006,10570,83451,8598,8078,159367,123785,80438,16742,5905,5281,181513,42402,6977,163136,93179,42191,14968,50421,112401,105440,33456,57347,121611,4221,94954,36517,24046,27796,6255,33394,72990,135408,116627,1233,57874,25654,95419,68156,401399,313338,55208,45573,93124,119251,47200,38196,11909,130667,45391,73904,64964,167846,4137,115606,52036,62214,7969,160925,7187,1132,134835,40309,73195,64494,80472,444841,61111,26500,45323,40743,53625,52797,22659,15631,29739,36706,28841,39147,102836,26794,10536,14845,87305,45874,12241,127587,83833,57183,79722,30844,41304,84655,20825,92500,3722,25655,27811,10157,81634,31362,34088,92487,70123,22190,185100,72658,139035,192523,88241,2078,230490,44528,85638,100198,22088,29982,291233,241062,13865,4445,137791,37835,107218,31726,19718,38234,72528,23046,19177,66695,5109,17251,28077,5617,21554,47839,72425,133825,1486,73065,181275,141508,21768,62971,63082,2512,34200,9904,120309,6392,91243,68416,268253,41199,116757,138551,185526,41246,28986,4093,19057,17295,4148,245766,122360,35356,112075,20301,75441,10998,7977,19769,62922,937,63547,100196,26427,157820,20983,236696,22935,8140,90315,156004,47204,140973,7726,45097,52725,22636,23436,257282,105247,522,88389,216031,202204,46812,211666,19693,68828,81691,45925,11256,30292,372,5236,167826,88328,232776,151611,5360,82104,18841,80393,25465,18285,20320,72377,31730,33160,45803,38715,27705,37379,24163,18360,103586,4015,32305,269494,91252,20080,36567,54650,7797,57073,12650,31164,42209,6375,261663,105528,81661,106002,2800,5375,17247,43151,4442,15727,194619,100855,144898,62320,78465,39929,16454,1967,28311,61363,17219,9395,8745,121445,76939,80385,162380,22009,54191,44248,16299,122830,48151,74429,78291,64755,14238,44966,2511,17712,67954,93583,829,105899,49935,84750,11591,33185,85447,42717,27409,208542,28965,62052,52525,5597,25694,65594,16343,63224,276188,12475,9331,127507,38522,57287,24128,133161,79723,105548,133695,48917,27558,43278,46520,13778,141954,110785,83366,17715,46317,105763,66298,147013,41086,94180,16478,220447,44611,730,19722,78975,117889,125643,26254,16574,18480,65006,15806,38549,246418,46052,36056,8440,34984,30170,3163,59800,4458,115442,4283,41970,33507,104078,1653,22,121158,276486,3655,6338,24048,133421,23641,2161,24422,36006,8086,10675,181474,12307,29514,59143,14729,52509,87128,122470,19446,80852,33314,24573,119864,14237,9652,57779,6612,51851,15284,98871,90581,124466,156831,21190,22015,71380,161906,87247,69201,18392,17908,108470,72962,40719,14338,17911,95260,43339,20610,78916,20710,72451,11315,31448,17263,58853,178878,48111,116002,45497,80506,82605,85880,36300,121755,25215,36118,301929,88728,405223,276136,553,34704,212438,49970,78329,922,20711,25036,257130,38295,145369,18128,15385,30829,55656,48345,8012,3561,28004,122041,192900,58338,112508,41085,29976,87040,47117,23905,4336,92061,138880,97407,42083,172121,6256,25192,172671,5,93568,1420,12677,31605,56743,40620,6015,78415,231077,31298,80026,13902,19048,24924,170586,32955,176119,87859,36731,6773,27711,24658,26475,115216,133207,93250,95820,88522,8317,5714,124047,55219,86860,19677,23961,22928,162209,8904,225992,359835,56084,96201,29392,96558,86071,93643,55114,13347,8183,95129,82012,2017,123336,34219,115554,157159,47747,101684,41008,18735,193781,104151,226906,7552,179874,124113,31159,21162,44010,14771,51268,166128,31382,73124,77438,92830,205709,12113,1292,38937,13114,1334,2118,15597,69581,14449,21934,76618,48728,67038,14967,51495,24243,87736,147249,26720,11119,46063,43749,5843,44147,152629,133428,65703,14269,45604,57982,28672,55616,45957,8438,95433,37698,220862,132034,39456,61870,4161,26501,73560,56418,9845,4654,20916,10456,88920,119358,9015,65931,96507,48029,38534,21676,109081,43078,34943,25089,6131,28766,23665,5477,10255,16695,67,45778,42443,42770,29534,23733,100513,62617,42630,48746,14191,43753,50295,26007,8792,57243,43119,54725,164253,58250,112304,131796,25165,4651,3188,24831,47748,3705,19540,13211,102095,5593,18699,23666,32005,117571,33541,60584,74573,86311,99443,25172,27222,168938,7143,11853,53560,18834,19960,86522,28217,53266,117700,72989,34323,18721,66450,34346,74056,47217,202002,46269,9429,68582,75458,37823,82843,96652,32549,145144,27958,19820,158086,31955,201406,135379,31207,192545,12950,51704,9094,248263,76147,64028,110009,79407,89345,99284,223492,47966,26848,15359,201137,2861,110507,71231,72297,31851,118777,71039,151051,240855,16333,50766,14727,7939,4149,80908,418780,88378,59276,1327,7284,38576,79814,65820,42199,84860,49574,62596,12396,70598,40117,8648,7994,16836,7630,14047,359699,106878,525,29037,28064,13380,11675,50669,74216,103539,180314,27449,56299,172344,19274,7301,246099,32043,19422,36506,129317,6806,30140,4614,46639,66926,932,86600,6322,27847,233103,10541,39025,34887,3517,12972,26220,2031,66561,115015,48658,47596,12714,33845,3893,16165,35237,89983,14769,11962,147224,47018,29977,27979,5552,82338,86023,131368,1218,24853,237840,132193,15455,40873,3668,65351,53388,15229,59889,272245,47934,11858,34347,18038,90853,86981,300602,19343,114181,29362,84921,6095,106059,79472,38015,1206,48741,6208,8e4,21916,17423,6002,108083,24479,34931,56661,9511,26995,100694,163853,35997,81254,58321,18919,171890,86877,91341,74503,70477,53412,7027,59281,39892,131302,5864,15947,61301,67466,162369,47956,27874,35624,282324,21270,111847,102548,41482,30955,116737,28264,8592,55458,22301,75090,29821,30697,51709,3041,19208,8038,24634,30467,87509,126428,19389,18814,152686,20701,83474,45832,80891,105808,11378,153223,120770,98186,150633,49838,9141,12755,30962,5260,74490,21256,31678,65062,33326,289838,187831,20595,89768,2805,58535,10844,70085,12090,2451,138068,98544,24461,4511,6754,41684,28203,3383,65355,82833,30161,83924,234361,128424,28921,222594,33975,125491,34069,11508,67464,144226,41850,98703,34371,7901,21254,38398,65651,23549,53883,213340,123269,12028,71764,177701,28758,2623,68395,11549,15232,68603,9660,63116,36079,57093,31198,20475,48467,89984,35619,186847,107469,31389,43631,73867,41949,68841,114250,1605,30564,63403,17588,27680,99533,12641,70325,50428,73426,78379,11855,91651,72081,91720,60198,15743,12065,83398,140046,6761,46598,45900,5068,886,62448,148968,37347,19405,9680,15819,43496,63370,75667,163700,37639,3633,22774,34341,183131,134335,37200,23915,7054,14194,12970,26438,13350,285521,25594,8219,104410,91039,168804,138480,149734,15907,33818,61132,60082,4622,110187,56736,13551,73571,3945,73463,65498,17758,263266,17593,2710,27585,54469,38200,45367,63754,28881,3473,12791,98287,31895,65787,4463,94536,24951,36332,59901,28803,52130,86403,7668,181822,74831,18977,9850,177206,145485,109798,7292,31421,26280,77211,58511,12507,127004,11113,147,8729,56208,43066,79926,129937,31345,83947,39915,46146,98763,42566,1337,13192,18323,105163,80570,117753,16555,72883,11077,159438,40764,70933,83329,26066,12276,72059,21655,173836,126713,69454,153482,91585,70644,102558,110483,6764,127864,190133,3961,101798,20945,71138,82402,90884,69669,44753,923,16939,59700,164258,25969,27082,31399,43846,6306,246093,51342,6153,151581,202801,182731,56475,162188,89426,141356,14355,121815,27536,28023,65257,77523,106668,127314,24947,12790,38796,169698,23555,10725,44573,183083,42088,62716,43265,105958,32050,44067,50118,1668,3874,6243,318411,16599,1691,94999,52378,28671,216728,123258,2059,34969,69225,5913,136280,171443,141515,91662,22175,135282,80020,92270,1663,4808,4482,3495,34691,5226,109830,108512,17342,107488,11606,123190,100247,29666,146527,113014,15794,30894,13224,39585,243192,22351,9903,7836,47699,11078,25468,122291,48821,26780,122679,75521,81450,630,4895,92900,55074,74293,17441,3563,111657,103102,51613,12318,52370,36191,68245,34269,40445,41354,122901,168604,182500,62012,42557,11259,24428,115113,86345,12362,3909,78430,86852,134602,20459,47853,93879,22577,7659,3688,38555,13349,17381,56715,91639,12493,10895,92438,3142,37057,28928,2004,36427,32268,34222,209974,10432,67436,41989,173518,107930,27079,62729,30908,55558,5828,45031,14902,53546,8204,144263,60255,14520,88212,86582,109589,69356,8064,47449,8505,66558,16886,4844,52817,111260,215129,12941,91118,650,20770,6273,73089,40618,62790,2873,35002,14023,97208,19386,102646,36993,143736,135457,35385,113601,17893,32627,84439,100619,56016,6581,57264,172160,45452,111710,203627,70131,24100,322787,1996,35665,70078,22358,90922,83658,4097,63200,58499,14542,99153,52159,6615,12414,63415,31986,16823,1579,65405,137809,8841,16898,48082,259,33014,42375,12260,179850,73667,91389,98882,29532,17311,326251,41092,5928,20742,44964,48019,43505,9317,49265,6643,192712,48424,163487,19861,20113,70848,31928,105333,23685,78563,14638,54755,7158,24142,44018,20774,125255,20331,24280,10163,1285,2336,39851,4299,117269,46714,63816,87779,159624,11731,9971,990,137317,108831,50994,74554,162680,23640,131597,146962,170620,34829,91205,21184,1913,63616,18427,93136,156592,17519,67565,115882,138220,78622,88535,18115,2711,33554,109492,54298,971,24914,25863,36363,45715,27099,194995,14299,178181,111488,72395,322385,157719,130787,11897,81843,83999,11369,49280,118604,40922,61332,110343,53407,75639,40582,300440,54722,25637,13694,48248,48278,194521,56203,52779,48783,72627,10953,376,16733,280238,26351,230789,15132,25168,137270,3588,63704,73376,94031,74284,19443,159557,9697,39901,13351,119050,15406,146455,3460,29556,75195,37673,102524,92329,47289,98413,15311,100684,56345,7116,95480,11590,7200,167,23610,58426,17730,136656,27944,53151,2701,8824,103124,3017,90744,113588,53216,79736,65940,26931,498,29568,80540,143543,21292,1740,59268,16561,180816,42323,50174,40890,52866,10703,57169,4700,17191,4424,93511,49698,166650,26972,48631,165169,82879,69326,202970,4007,2376,231325,139592,22119,62851,37504,68816,58345,67398,186643,43331,277416,53749,15746,23102,17432,4793,151138,48822,54265,48203,198688,14305,54287,2291,18018,113378,123260,7180,97549,87027,120085,2920,76080,8190,102005,5641,64580,14955,59802,54028,58884,19367,81779,412567,85957,97053,103637,78871,29364,27637,141728,4767,30686,112738,130146,42745,12730,105040,14844,232,210944,36581,152317,135543,29744,3129,55647,58149,46319,27265,17499,28005,59948,7170,34138,5702,293047,110892,408,91760,218674,18469,46095,81403,14389,4610,35672,73060,11006,74848,104820,118143,190357,20043,105358,141735,5115,27093,45924,123073,52599,29433,9616,238350,78610,24851,58858,26769,31969,24613,18294,4982,32735,39639,143563,112073,202205,12567,4873,88601,44897,81503,101648,81362,34662,85277,17574,48173,21435,221188,40215,39576,80786,26544,64668,81841,10731,37733,247986,149188,127703,495,18382,54388,72446,43071,30974,198723,89608,41360,190,33045,8386,31658,19992,237838,119015,137622,50890,100913,6460,116233,267230,26621,104129,65114,14190,41542,14888,85962,23342,23041,26453,43725,71809,45186,4770,46452,53894,56616,221286,18973,9038,109299,55365,19366,26863,18808,60909,69353,41738,83463,12100,68561,72860,3980,13796,49340,12332,31311,27418,4255,53430,18976,45523,510,14224,30477,26581,4530,3651,101663,139840,22709,150861,31996,63923,120623,262522,3076,10528,2929,14672,130238,18087,9816,121894,100308,25085,55111,14565,18952,53293,2042,369988,23674,61789,133529,28783,108293,35477,47119,36448,71049,40015,33055,78598,198442,1833,159937,40654,77444,189245,113153,8621,18599,38553,35223,166072,2375,11659,21786,89523,6032,12116,63046,159398,18454,3678,32521,47626,11411,103527,38896,42946,15696,26370,10185,8413,37080,165583,4331,63555,14907,72220,50056,6623,62236,36565,49783,10049,17503,100581,55951,146244,24724,9626,17969,25524,109300,173965,99994,101056,46459,43647,53737,277968,8347,123521,74858,33829,44762,77574,877,81377,222525,123532,30602,43881,53145,2973,16284,81940,61281,127044,63620,9875,14756,114829,19032,9202,52759,119141,23928,120551,19607,3599,33401,76821,73233,117430,39968,36539,7071,5446,121735,194059,15206,45283,6706,15603,65615,1207,165723,92275,34773,104447,8396,32353,205240,164323,13600,60555,79205,25532,22907,33410,57480,107111,69630,32137,47832,70913,33161,20321,2371,117348,10714,86246,1625,11763,17900,268,78457,99175,97940,101092,86660,32221,14041,128504,125080,53744,124263,31017,13897,403,31859,21964,5633,111630,5547,77329,17961,18241,84995,25984,12983,67491,62168,47262,5241,297,51191,7351,8967,147212,82060,16821,782,11033,82431,62957,5026,43459,77963,203477,53528,6247,191852,87774,74164,215654,13467,1522,219964,28589,244104,16242,117821,67725,72570,156792,17186,15979,26990,44128,193014,35276,57125,16212,166451,68017,6905,77608,16364,53777,75921,76426,37975,26203,269296,64099,84122,12077,38533,830,4407,20139,963,43028,38902,42911,37503,83343,85045,16979,1165,60835,137387,58380,86990,110066,134540,56331,193845,81238,17922,163093,38744,110641,12502,56404,34862,26865,125964,12965,111648,25547,7771,27196,136980,9555,29551,107158,57885,18831,37705,35505,101742,13970,102109,62548,124657,23328,11124,89592,146376,248050,6241,22033,18337,80685,29898,11908,216623,67721,106162,146610,21377,15085,91552,42041,62560,122532,125336,102365,121537,142559,29693,223919,11515,110495,18776,22494,5895,185059,103592,229351,51220,100102,37027,257855,29359,54123,36066,106493,12244,79258,32002,432,56205,94836,90182,6726,14762,29391,48938,26864,38083,60364,3310,60192,14766,205567,57504,110760,22649,24666,46333,21517,3430,13135,28873,27052,158809,11597,20529,6695,23138,22960,37137,45574,6545,305877,43423,26153,24769,59844,14501,10430,134352,56169,13213,103432,49523,35181,13435,12408,129475,64620,230854,77390,51990,15653,83248,33466,44571,117828,51481,2187,10559,68019,18021,54895,48247,18354,33737,4554,108595,37288,39767,116707,9175,3726,108877,21616,83684,49862,1938,8543,276466,20134,108498,48770,102254,31914,131520,185291,100559,51890,209,19526,76471,50544,71814,99351,8172,198526,28816,20419,9109,98389,136777,76479,75596,30635,165417,48216,120220,25955,211071,39314,24308,32164,2559,146280,43403,9233,17947,90585,1786,86920,125662,2457,64741,32152,32918,122882,78538,44001,31723,56426,23375,103172,88177,145697,52506,49319,68016,31664,41488,18486,110400,7030,28241,986,109199,19900,42147,56864,65287,49183,7858,24e3,30453,840,16673,25907,68916,89927,6309,158335,36407,199737,130464,13137,59603,201778,195292,21015,42466,179062,172561,89492,11075,180407,31868,72493,20998,60217,9865,19530,39274,130266,54539,21623,12535,13505,40641,73375,4087,85633,2153,3117,70680,55788,92096,47509,98493,37490,271936,151475,3032,16171,96642,34106,78425,125761,19591,3366,19316,54508,24183,50786,194248,91528,33253,34622,108355,41741,705,3814,3883,108929,13203,67831,10142,59754,68208,29128,84820,56880,38794,24972,48571,40821,40476,18137,164254,24064,236309,79181,11282,395,39169,2013,51587,28551,9645,701,109513,115899,113566,12762,62045,58322,103726,41343,40866,244102,143816,2490,70346,40973,52618,15412,30720,104315,38917,42027,93676,17513,107418,20706,123890,13399,97727,24044,87962,65606,44250,98044,65276,74790,101473,19350,91570,1326,87790,172042,7577,100813,86896,85891,41512,108130,27794,14875,71431,12835,156250,58135,3759,22476,42176,115873,34686,56523,73643,108505,51491,20838,12721,32863,45700,29496,13700,34294,55360,29206,155942,123812,7706,163234,203,132720,49358,144431,8130,175788,35818,3270,76832,25710,54095,97274,28779,94621,74396,19092,128242,58067,20885,14670,93255,15107,63291,23654,126900,129421,59294,262659,9798,3251,67344,28600,44629,50672,29072,26999,31526,23183,49175,165843,175455,17282,175411,32022,45989,30298,90690,78118,83156,23749,35636,31317,7069,80381,94561,133756,14960,97404,6138,41065,78041,32843,16601,34123,9559,146529,123377,96395,54441,42012,84257,123541,10745,22139,106459,11720,150883,172651,154996,110538,4728,53447,25704,2009,71152,119354,21166,66604,1429,216162,8637,122250,63520,27180,29172,36124,276428,107787,77184,4680,14952,104903,24418,14793,51561,52931,8371,26342,48526,7118,92066,67280,40653,8847,34597,105438,14198,50163,61188,146286,50315,41205,170829,161496,585,197359,95056,1687,365794,91349,48507,5804,49263,5146,104902,96365,117343,132222,46084,96919,16875,8073,262381,79982,52663,13928,16056,153908,15145,109256,132308,18763,24904,167644,13618,40750,18686,147124,114709,150038,52849,2938,12568,48617,8778,5459,44202,44591,74914,17183,248689,13878,7822,80060,23116,194037,18487,2067,7798,43077,33678,244028,31320,74273,2794,19466,8218,36280,183997,48124,19416,29656,19280,98734,7715,18311,30701,133602,150307,126956,7378,2933,79903,13178,12593,86571,26604,92446,13574,44205,65699,427599,21118,8245,14407,27877,47936,33542,7916,26460,117762,21596,37818,2249,127359,209394,60044,47677,308089,36791,154971,31417,6998,150042,174360,12255,43009,29335,48739,3912,101398,53340,2580,146939,151295,45360,125275,15273,45383,27456,48761,23314,8750,60801,85823,104759,27894,123685,66968,39480,26917,55290,83305,2696,98390,57569,145853,340733,4919,20024,52268,30884,7413,203685,70989,112855,4129,50536,349518,68205,332641,159581,135361,236026,37563,176404,64899,6578,122033,63871,1850,85234,82089,66124,74145,121098,107351,12687,36881,117334,13136,14698,85933,93866,18047,32620,310,15094,46e3,88451,23632,36645,27940,87618,80520,58892,20976,27702,140090,96075,67841,103292,238964,87778,107338,17019,83427,67522,7302,8261,47570,116787,8730,80484,61772,174422,56005,131193,52875,14588,28471,59817,9586,15720,158155,51307,109734,15196,11025,59331,3884,52626,102602,84797,25158,27314,4437,20488,76214,189248,35023,114952,157376,2827,62439,102878,129749,36405,10329,109339,108633,36662,1254,13267,5470,87105,58004,15397,10434,159667,21864,52022,179464,3013,32147,31496,116832,18494,105502,129227,107267,50033,13481,9954,24267,22141,16257,116154,36185,950,115685,11305,176708,2048,178671,112573,287867,162328,497663,95170,50979,193861,50987,30368,136257,31830,46549,15119,169876,23788,17462,249887,57377,1949,35448,14791,43769,210091,3783,34612,282103,88380,245190,5457,20491,98908,11402,86899,117916,16028,162584,60644,320177,156096,31065,55876,22e3,77655,9992,23397,13757,317623,63978,215255,2443,17648,93231,27388,104529,93807,55505,140477,12046,112040,70887,40152,94365,112353,25063,114679,266061,71248,119555,15589,2244,617,14129,211431,70110,100652,7777,4383,85911,89221,21010,120615,58357,86405,37554,41647,18,15143,69662,60491,14714,186134,148344,42347,5410,168175,44535,42449,343894,129417,99682,20659,27272,140483,63455,222159,17536,13722,42637,62324,11976,114691,148109,2283,32057,182393,4295,147364,33705,2075,44303,30274,28331,63740,69740,29148,10346,44862,33716,73937,153333,12930,38784,247159,2515,41053,20256,83368,256189,54639,115240,5096,24661,175419,153552,26516,141,138176,63885,34115,47222,55709,2765,28479,38875,236608,12229,22921,77291,54426,45388,2860,57787,114579,295139,105782,17826,71066,19119,54364,69385,16568,12323,28057,33346,34919,124763,155533,101386,31644,8627,49001,303600,29868,63213,9103,77280,71333,9696,138789,37059,24823,5057,21352,32368,114208,56803,19424,10445,58514,8661,209508,26187,171838,10460,63454,14016,122504,41328,21329,46618,32493,38225,7855,31763,7945,29876,8734,6438,24205,97490,139977,130740,47323,33195,85390,57194,13813,60600,21313,96251,7699,27584,170521,139271,1363,4402,336738,129223,84983,69150,13147,3590,163929,207225,155260,55916,20288,4503,8398,98490,11773,27512,37113,84976,86558,28365,11756,116005,182148,13733,115313,47644,67208,85069,9347,14995,226141,14704,101835,41159,35314,13113,63526,214039,29978,50446,83339,17440,129441,72522,118641,97816,24907,73844,15717,118884,167255,96509,162793,30847,36849,51297,78974,77793,10427,1873,2972,9999,35074,28190,64297,146836,46298,60038,163007,108919,61219,2403,75022,127339,4233,110389,69022,9833,128097,88016,79390,222936,22570,94657,28462,56956,38803,81536,30474,152794,19566,16481,147408,74574,81895,20731,1918,1366,76367,187321,54494,24366,21690,61696,33283,107477,77499,31112,414383,74362,18463,218441,120929,59848,258629,201924,69269,454,19989,13054,59894,3623,58908,20681,35723,78523,102680,38988,184112,108087,50944,132704,52966,21699,18860,96349,201411,82697,85395,95658,5093,6427,177894,44191,32755,26961,155739,6249,31310,81030,26574,84311,120155,86730,113535,7424,48888,13516,45747,98098,20077,183995,81945,43210,26704,40420,75831,45648,11180,6855,57927,65528,124096,34851,2598,156633,107572,127352,38169,123845,60142,62722,105584,232364,23211,68120,1601,22169,89299,747,258039,80572,7258,152249,11862,101204,8834,121434,33761,19175,133142,46343,40178,48723,3589,41977,30210,38868,62257,10087,82658,87827,90646,16415,47552,351723,28298,72225,91146,272760,1701,11295,1652,109651,300747,51863,198800,29446,11794,32345,37538,22356,33102,37590,113544,37970,11478,179743,25454,103417,59905,221970,105196,145604,7817,164809,102360,16974,75840,255333,56902,6659,1954,645,59400,67769,7689,18675,5215,13793,20536,27852,3387,29523,259718,16860,94625,43143,29245,15848,233581,22685,63631,78557,22836,133302,84513,1348,51826,47129,98836,58284,1830,1749,94642,10933,6145,12506,10975,13879,103781,144434,10268,28409,32346,52968,121567,107374,77268,23686,35097,10501,155275,15303,47136,21102,168741,55332,90385,15996,84817,681,137803,25054,142275,6163,38175,8056,124296,240642,65621,4934,178205,16101,62803,60964,18230,100622,76465,44689,14545,9543,47514,16852,93380,28048,12047,107106,37575,101485,77047,57326,34819,96137,76916,6469,46264,115983,75768,87668,69942,13027,165,8373,114231,26434,52844,42799,182044,23580,146254,38081,43236,33883,146220,382894,14606,46035,36481,166621,35417,95382,2957,59384,60428,36358,66343,75378,22267,22950,83528,17577,56474,25285,4619,179691,75355,95836,53295,34588,171410,4487,14679,84208,44015,18562,109133,54101,11531,86052,174479,303157,28095,9953,35642,14564,39802,16145,77606,117406,53038,121117,53624,22062,1212,7632,127157,237292,189087,10478,127345,102515,181997,86752,87623,10966,121602,68783,68681,83042,114380,138349,191305,67176,50085,39016,1427,42384,1412,67118,122616,72389,25260,2237,13576,137346,19938,20304,2191,68759,5373,61364,238507,75814,23931,69565,38993,131741,38364,12528,87762,5679,129853,5310,186831,32653,90338,260176,389531,108118,26843,43985,50175,30563,25106,56965,18130,140428,4542,165503,117991,24219,229605,1819,129663,1240,3797,76093,18398,71339,51919,93043,27175,47060,216257,6483,35051,1217,16512,80798,129064,13225,69339,8548,237079,72298,2575,34280,51379,117910,55671,53345,247552,29486,39328,140821,34681,57045,60177,5004,90269,78522,2479,322607,48474,61296,13057,31558,4678,59271,6699,27044,31988,35944,12503,83480,4389,136508,3781,114121,70279,4488,155829,42214,2898,68191,75695,305850,45041,74344,106509,30087,17429,93292,12477,290,23080,114802,35714,18751,26554,105424,17775,2144,2412,100610,65192,113975,52975,180272,135050,129815,76238,106483,21440,63186,4260,46189,9711,28249,4169,23429,23390,8324,141585,63809,67668,38457,38063,39226,59972,1189,203916,62368,14403,16949,61767,85801,1739,40147,35049,76757,33124,62102,15780,103593,103009,53484,22952,67973,114645,6566,5245,50462,7601,8288,3513,194571,80276,1908,54592,5124,58571,2513,6800,273997,193904,1119,17991,117245,2508,129156,82366,26278,71465,63341,56943,39662,106116,94966,156875,9736,2204,122308,94418,27134,1280,24539,49022,45314,3764,50904,46424,30699,28087,293839,9400,33646,40165,822,147499,50263,116179,29085,11863,31314,5578,17797,5104,12454,1604,15342,219206,10232,67800,94261,25872,13565,90339,78971,75377,26649,41184,47695,11514,35369,20767,14227,41953,309396,148270,147938,33074,14453,27499,109019,39018,25738,240196,158931,52820,8612,95853,21524,137010,84901,70869,70021,116794,48404,38771,6732,1070,70990,187297,49140,5238,576,3564,253975,16027,16483,2811,37775,19034,25259,4053,2e3,70083,95774,19713,33431,92703,91314,42381,288770,48194,95985,3991,77418,13406,241328,245086,56533,35275,62725,9246,51924,70181,95331,16163,31410,79016,39312,120878,119371,275987,80124,27712,9186,220,23598,146167,85209,68238,282190,57048,31273,30555,80913,17594,75779,59160,135002,101219,189377,29225,96735,60126,62522,104e3,27620,86814,17240,147533,11001,5425,43682,410,49460,87270,69480,46315,59448,1816,76201,9431,11788,87960,29063,65539,47347,11678,33846,7008,196704,9895,6753,8633,120892,59970,572824,115934,6646,202559,892,48351,37611,251282,57823,67263,57750,26527,34485,90747,7685,88370,6144,64182,1709,41969,21458,62327,181657,49247,225330,122600,114574,107124,85361,111833,63243,71420,15655,191178,72430,18063,51425,54002,12364,53225,86557,18193,97580,41232,138398,67821,128724,8944,233212,101353,52099,42127,14006,120107,32789,32132,3498,18123,33758,56058,5779,128760,59888,98869,18445,84702,51911,13234,218379,20093,39031,8074,70195,20708,23462,24355,131384,60189,26390,10403,41060,7140,10781,49410,42261,87202,82566,41663,43105,60276,2768,5733,74176,28329,2297,145430,131632,83615,122915,105441,655,224102,5284,136426,67763,16294,188511,32538,61049,27893,3394,13951,159099,28542,17930,145360,9492,190122,32285,78855,26440,13570,58648,73908,4239,124561,2444,74172,53131,11468,10794,73566,11623,35343,64710,30481,4163,10328,38309,29901,10538,154377,76132,92405,24839,11679,3465,13449,11637,7824,2337,57754,1260,14458,41118,19878,38661,13416,159180,37074,163164,54137,28627,52134,184900,8520,40385,29546,30502,22386,66527,107458,6850,24022,47983,30603,35083,8934,304066,39500,9,28261,33026,77251,9374,44833,116312,34990,29236,63563,125639,135405,165398,159055,55690,88141,69643,236964,31983,25572,20436,36746,60896,31850,16179,11828,5888,3043,66368,9750,31167,7915,53111,36430,1333,64344,93659,20061,60596,180191,51630,6792,30244,43509,101058,22409,420,44210,109783,43223,27030,72477,72831,32679,29235,7675,47556,12258,39907,149412,84926,118247,24692,71717,105038,86009,45941,41189,89453,29856,52543,30627,226798,67303,59230,67415,34408,1367,99685,16867,128419,52147,4111,125381,117881,16173,44093,102224,31575,23234,24870,83790,127407,239098,3200,994,1255,100903,242275,117266,55116,38205,16140,29662,11307,40414,208793,123355,56470,4862,75600,30119,58218,70828,24075,26974,7802,192353,4851,5475,78720,66596,3409,28573,64396,30381,30690,59859,88256,5406,99945,103064,34463,37727,24238,86643,60088,4057,23741,5967,162904,38240,28356,93858,25510,122879,6897,3278,7057,11971,4400,35461,211413,21395,59615,39471,87233,55795,128426,3051,22470,41950,14705,3974,180108,80476,78442,204996,91987,15634,67610,139015,142373,35611,51134,10387,4353,153456,57749,181039,14183,68447,151532,21107,36452,20551,3186,46247,46383,129666,88736,140662,146243,2066,8360,7978,64818,106963,17896,47801,10723,114821,223295,74192,3293,3393,16987,74064,11277,91622,4270,29828,27951,387869,103235,1374,61988,120083,477,145892,128378,11779,211263,61354,18221,17869,46530,83061,108538,157981,90608,67199,95080,49064,195814,12302,66307,10348,231346,160732,112859,63633,146558,21271,31037,198802,47622,12862,95710,3910,77850,73961,85585,34752,61e3,4082,24595,103679,71107,8208,79568,150019,16615,24961,139857,32664,197366,4559,54735,32696,4126,162019,75698,13916,70108,159638,19834,9349,24675,175560,49643,18206,52459,27992,10809,88865,401975,133172,29e3,34558,30915,3658,25834,42430,36562,125265,18182,10155,40149,97082,208980,19575,60853,90529,66545,9600,789,46420,2317,88593,55595,98980,115302,5742,169155,1073,177901,3472,11189,63711,78643,65472,50459,127979,93,42202,67053,21720,157650,11145,141378,42033,22824,85705,79114,35584,15974,1510,54172,28562,12451,104226,19190,97151,73024,20948,5151,81741,21499,29006,84183,198074,54003,45120,170125,26240,35177,28389,64863,79974,60778,176915,232183,45342,2038,80253,41564,40703,32689,5430,100689,5366,23007,134279,14266,26712,73993,24934,64242,52113,102887,61801,46415,201049,54251,62133,122757,164883,30815,139966,2319,30842,766,13362,10287,134518,86111,81665,82440,28333,43019,18963,8804,161944,23439,102144,101145,80029,39052,248708,30350,117340,11878,128467,974,138625,63961,5237,74778,61834,67040,43814,13690,65947,33809,232476,115258,181745,28824,94013,9510,10246,93722,81976,7217,114383,3493,16014,69045,72692,12145,80981,9507,6692,1620,60820,330444,35474,33962,4797,7053,295463,46445,27026,12491,77988,49524,35675,90947,29114,166705,101385,133782,32704,6186,84595,176031,185623,45966,151302,63069,1699,107491,947,15458,74452,196212,6046,10498,12163,10239,35191,243951,9277,9090,29539,54460,22820,26514,112549,60372,51753,48756,21812,70861,260326,41,44222,10441,16961,48148,138771,216194,5914,52153,53400,212036,56519,26245,10117,45888,15294,138019,90913,26368,43842,42111,23348,6082,194845,161089,156206,51546,11647,30759,302912,262094,8635,78876,26535,35283,54183,31183,85484,147873,12989,5197,6356,72894,65347,20150,27370,73787,1493,45918,12366,190217,20724,13858,10981,67449,81213,7553,14115,72242,271517,11842,48310,88743,143726,22177,3290,243231,58452,62937,12592,1654,40066,33477,13751,9921,128442,15868,7106,75236,83773,10775,36938,10482,170465,17368,17469,161508,32752,98340,800,19824,264456,3901,87319,2867,26782,9630,113102,185815,24197,44584,86366,40224,3636,140916,31731,267731,9567,53678,72984,29389,27963,17106,50282,284911,60170,8322,12608,23374,89652,5268,39044,229766,8869,151350,31436,177342,12269,183212,120418,116270,2843,78888,69192,7865,184099,1086,129897,18383,70508,20242,18508,229924,124569,35749,50589,55626,9884,83115,40971,30671,18135,14452,38861,17844,201826,5549,26413,17189,13561,38539,10679,143331,3314,36785,171194,49685,187713,67506,4618,104039,17060,195080,50648,33159,19238,67559,134840,28599,157523,17130,38064,117398,94355,31918,13575,34538,40326,13997,3494,348283,62481,26862,3603,104426,244363,153709,112487,304612,199674,41239,35545,54869,293005,28223,26277,26899,4533,18518,15492,38587,80488,70485,160395,263,60162,11382,222152,4696,250751,51921,182609,10707,48463,46243,1227,49111,111564,46502,33342,56846,68541,63559,858,139927,16654,229375,76759,26478,33205,95828,23399,92945,2637,35630,28470,143992,50214,14174,21456,166191,65665,1711,21594,78019,97599,111701,36,147151,110246,189022,43021,30397,40757,131935,42065,73335,48039,26596,28984,15102,2361,7421,202167,69744,43766,52826,3642,83304,33873,75140,63169,192389,36551,92748,13039,123959,233220,21738,84447,77230,20228,187852,19095,25799,92136,108774,29237,53947,2299,118106,2687,8830,42331,202924,33667,2023,73763,30704,19363,19779,16737,35629,48081,24068,101013,162338,291912,13749,24745,328289,167679,70086,48299,23306,16732,17801,43322,54589,3586,63653,43624,53474,925,109177,251316,43805,13082,19511,86565,142182,92461,17117,101033,103319,64589,4022,4351,235897,5352,82705,107142,46391,156084,5860,61365,10558,13045,7717,18357,33922,12590,33065,6928,46993,783,46937,67846,8952,26295,6107,119656,18799,17458,50747,4229,179559,112727,118080,20683,41464,125468,51560,49749,44231,7359,35339,62988,136487,67015,5208,29150,24956,105186,48858,6143,18097,6972,16404,73489,58742,97196,36357,164616,5834,32267,13746,147733,15113,132091,34127,106298,39729,106426,22294,9780,15602,36213,71502,42808,66802,599,60755,5851,39120,67363,108623,126368,72770,91263,32486,30596,151717,7951,52002,43103,11768,68942,40901,39344,24037,127500,116890,48403,16926,86750,17745,48648,159545,34460,58419,5634,114317,67865,31462,23352,24010,98185,125708,69686,68337,13610,26271,70691,2980,4768,27225,102402,75453,28106,8104,6931,1176,6274,6475,112635,22498,6176,238686,26832,28893,90319,14441,15682,15087,39517,45270,109134,104440,45965,47645,81772,7876,52683,87720,12898,4505,185665,2769,113401,15664,57592,105229,137381,97059,119268,6876,43309,33886,128363,35476,144249,67013,143587,83367,25703,91436,59347,53236,2289,16519,19844,46309,58558,99834,23313,218816,231303,36388,51333,183535,109792,139277,54306,90139,18235,8275,32710,37677,82464,86025,92204,88842,117723,37570,128723,234242,76350,73795,34896,148247,58424,11105,11744,45746,63372,17118,49772,199520,81902,38004,22911,33752,3125,1995,53792,4689,26909,108150,146062,69674,41811,161444,84855,8999,28561,16731,93937,3189,21967,24890,22943,1356,145300,51569,28802,517,118679,31703,40607,48098,108854,25003,10233,73969,177495,5248,24516,215347,146192,48712,60626,69188,40735,5866,586,101541,6509,47590,52129,5969,222045,110933,25733,24223,65339,62812,2414,155418,35819,16022,78423,43138,20995,128255,240673,46745,236093,72176,57085,97841,61248,107,36068,193177,105427,55726,215229,20446,47228,100420,87091,14429,121708,23605,21157,187721,21880,2997,203976,99166,95068,25877,7724,98925,83401,4829,13182,18229,13718,239662,38653,116505,153497,30589,89029,38962,181302,43853,78872,180301,4786,248240,7401,106136,112590,77745,19731,60880,77789,125748,135487,5975,48627,34084,12419,215770,47557,254582,10364,106495,21856,67539,88981,38805,21428,48732,42316,12149,16078,52808,25327,51322,33850,51147,12253,122354,46077,56483,254553,115417,81834,150991,94662,86668,7381,12841,100650,18218,15741,22372,68294,50705,15535,84660,61887,22553,72299,31361,24824,17743,46820,64288,31582,77006,111674,116384,30760,80920,86149,77192,51979,79691,60342,122805,103800,240873,160744,233114,78962,54920,8608,3484,316104,72548,24337,5088,230040,21926,10172,36838,26,86221,83458,102176,12062,17571,41929,41170,28428,68239,41750,103930,2634,18313,53019,34825,97837,63115,24606,73157,152474,14715,91439,37033,109806,140259,30668,174760,380,135597,95673,136073,65073,134249,13829,17279,122305,4420,46444,10237,64848,203623,70728,10349,182885,65075,24519,25783,40318,34139,22222,63394,55266,102764,41422,20126,65100,90408,53640,35128,48932,11192,38935,96839,34782,39492,19396,41332,6250,5511,19492,51304,25936,104466,54099,73771,86115,5080,7669,30891,111700,13931,25276,72289,135447,14820,258641,25265,31005,281179,75286,393,95359,14623,13584,6680,101227,80173,44933,76666,54542,13244,39348,458,25379,109451,134348,81143,6959,65554,12027,51311,8716,57589,140731,28467,23316,17272,30458,25980,55229,77197,83798,28302,114784,7428,34548,26241,14712,39336,103304,18928,54080,12870,334,87722,15208,16895,142098,114262,39820,83913,57817,28682,7721,14900,108672,11250,62246,42849,415188,1724,26555,24549,25505,26443,107450,145899,61035,43528,6901,60726,65906,267741,21338,147590,42079,18924,73017,135236,15393,5206,4026,84185,1531,5988,113890,82647,303391,7386,69844,71611,189865,76523,31877,13315,19314,198575,32821,1928,67641,25913,104475,103489,3297,70391,18406,15446,113347,19295,93790,27856,1792,167471,116449,8541,4408,41757,63233,25765,86680,64501,27034,24816,34975,6079,4486,49693,36229,16917,21581,62426,27862,11612,54284,35702,194034,355,24277,48262,87411,70504,310164,118018,12516,47559,43502,57433,107139,9290,66533,80863,14634,34312,91725,28606,21342,67241,72355,43244,375789,37402,174015,105070,8342,44167,67494,1890,16365,11723,271002,1865,47918,8350,45564,27742,25110,125803,8553,49504,81925,62211,4534,15491,19011,80373,206920,667,102405,128623,245524,5553,113309,192739,65766,19567,22832,261958,29679,21293,71134,20962,105123,24721,860,21752,33448,18372,157167,94822,35770,173224,232737,75729,28937,46828,28062,25453,5207,140366,36665,30652,6169,67920,150458,92040,23186,184604,92330,20891,176492,49427,27828,38305,42495,143982,49560,25503,90043,29747,65328,47830,12932,11068,77721,9003,25213,94205,140426,46090,89945,138173,192691,33329,112232,129905,35709,27514,1841,19957,31411,127476,53572,17497,173549,55063,175135,19841,69314,5192,237921,117660,150697,4060,273045,50414,98940,65348,153665,164423,58804,156695,48994,213928,86036,28608,8355,39574,34540,16927,135680,18374,151587,10830,53805,16878,16623,4282,48030,8537,14986,46102,13062,72897,72,33050,108227,39451,45935,651,113320,40535,95176,57450,48843,5003,19019,10407,211163,3848,1068,4988,32091,30095,41692,15099,43602,107434,50744,7627,171349,16313,150832,352665,207750,33937,38256,51091,156e3,87889,90663,84175,24908,114900,50365,31494,83829,5398,169342,47521,54818,18935,8356,43094,41212,174536,10082,92550,6678,60614,23355,69721,14796,34149,128830,58187,3179,208,40325,28399,225029,401412,51150,31580,207268,6657,10993,69818,64282,289845,23308,12961,38447,6681,52944,31855,2572,47646,120728,179148,37240,45196,218274,4816,3695,21961,50084,35209,18073,51452,27004,6100,33941,1377,84831,171214,85,141510,9078,99227,32610,6417,11718,49868,65579,87902,73018,49062,46280,61742,21512,40862,107733,15941,29168,157765,144919,14487,5767,158014,140070,7241,573,71584,16921,223566,40331,179473,35081,47926,140885,41508,52104,59180,42310,32811,29048,123517,102413,80208,10104,14746,12649,153641,126022,37965,113017,4171,83,142592,2809,6362,50416,71323,116894,260776,16204,1524,5760,30351,12658,20703,54403,36083,45408,74772,4946,14485,50759,111222,10890,2195,167147,92962,130534,16283,177256,35016,15472,210156,151187,73922,117691,43250,52051,37392,24811,24358,30830,5775,818,21969,1476,127322,151783,58392,31021,106913,65215,89407,90802,28531,11690,20234,95249,44602,37256,18707,11928,5161,4410,26571,51903,49768,22008,25252,65780,209499,68769,203726,13249,137363,48845,86823,6658,5674,31881,1083,1823,108676,34518,166752,13791,14287,91576,91429,8665,11529,26401,16191,91972,30964,5254,28486,54697,79613,66520,18447,22870,45203,194466,22822,51703,12278,76716,44595,73455,33546,12235,144843,36154,51247,11116,33040,3180,225753,60864,1972,28469,12891,28879,10338,144157,56294,353058,38302,41447,87532,110616,27065,168438,6557,1213,50804,144643,24817,2390,136531,38174,247513,16190,4059,122791,131994,137430,39506,57650,16305,5188,54309,106128,20628,88071,67394,395446,250285,66176,91254,1399,114196,43915,60230,44853,27206,106353,43013,18733,345105,226453,51202,16607,57106,117175,35492,10476,89598,127439,15187,39624,13688,61570,10615,31111,59370,6238,175252,32143,224492,41388,95408,34384,148238,78307,38959,9340,160091,61443,15737,11216,41244,170,38299,102443,113097,26382,14027,33707,3957,76300,66160,19431,18900,6952,1717,108656,82206,188021,257335,27295,43999,41210,31777,46956,57457,12657,11489,15697,48060,204748,53583,82422,284790,30503,137341,8120,19615,220311,15991,10217,63424,9808,67431,70976,98221,4491,15177,28535,144789,751,13230,2394,1504,33977,132104,30316,22230,931,97193,185240,24826,22687,174322,15307,22988,1390,188745,180325,29580,59068,74903,18994,29195,79,15436,7622,38462,11566,138710,44828,45774,37768,99236,68137,84083,19282,22698,17134,74807,126662,173497,46248,16938,119735,3212,28292,213652,49013,9975,32180,45660,86250,4801,68788,95490,77482,113751,11994,44624,94452,46839,128497,100316,5798,58588,73184,202987,65417,37790,88524,1606,43156,97964,105717,34947,11203,100060,37742,130074,93653,107799,94311,196106,41347,8035,10780,16390,27883,118236,167395,1979,25006,19375,31628,18916,144723,78502,114047,103107,86492,107686,5844,20934,206963,23556,22591,16562,146333,20167,10471,117434,33085,2863,9740,36669,41849,37271,22790,18209,28979,8231,12952,54408,21731,25130,45208,55748,138120,75826,414,29593,9925,292865,25999,683,123149,7036,92159,86055,61827,103680,23176,54918,58466,57578,13305,5709,86479,16697,31064,17660,200919,10770,49793,33423,32370,52047,16488,62555,6459,8426,83493,7763,59725,82812,18628,67760,79405,68557,9612,7673,28102,56517,69620,171797,32458,29541,15870,81109,32080,207644,71495,21202,11039,91036,61230,2810,130800,32260,4613,60590,37112,75214,33979,126402,155062,30642,63875,12810,194463,82799,47664,16725,36685,43367,61099,449,172150,102867,21691,301838,36745,7130,18671,57316,34852,38034,54182,35578,65900,99486,19771,3456,2658,16914,99866,28390,28109,8262,21147,34353,20006,4228,137085,1675,203023,283196,198286,214375,163329,290603,152574,40471,83506,30068,14730,23177,131539,34759,27668,32178,71896,104799,116305,85430,119262,42860,25160,8911,23428,49437,105322,6519,16203,6349,74711,1230,38045,8540,75165,44736,25909,51026,317034,4984,32281,91312,27060,44431,17817,45363,155937,239085,35697,59784,91993,29531,126740,213757,76560,167776,285273,24262,8237,65030,41160,74437,48804,118916,13159,37842,1031,75349,1478,11655,108777,23435,277425,101734,67469,70231,124711,43532,28514,65526,54956,1e3,21882,17728,25302,40952,52214,149632,1999,2111,3259,63362,89961,220561,39777,26335,9063,10572,12416,34551,34623,38604,24723,5947,15588,69927,66252,119177,69173,46629,28714,70715,212408,20521,406913,74380,11716,50659,50862,37009,88460,130101,7210,53853,538,65120,151950,55806,163748,52837,13153,21100,16674,64536,6091,138201,44837,58547,3723,163,2177,32288,85454,34033,8497,14282,25742,10535,10741,79559,117493,243787,49337,100718,79495,40139,42956,7551,55433,15421,31509,23034,45081,547,61176,53434,328001,8470,36263,30145,4519,74173,53935,11845,73774,60211,78025,3,4102,73782,109293,315332,48412,26683,13714,6865,20128,18490,104141,325,39470,171970,115860,15707,7268,73301,74336,31370,2368,111827,107757,136231,142844,97138,96638,84053,38691,23801,1588,10573,122098,77039,240,186135,146101,11996,18143,112963,46171,155836,348769,47795,121213,116266,132515,3344,144804,31286,99187,255838,129694,35894,48779,55235,148582,71967,65282,15174,13920,47080,6147,108242,157593,125025,7136,1286,28957,127956,28402,98813,20805,7532,109417,40610,5041,32958,15142,18408,108596,33543,50517,27748,80114,233434,91447,487,37094,100048,30541,43477,10639,89862,155868,37667,8726,60684,237903,73408,99589,12190,38739,97348,3914,13594,2680,149016,13907,30171,28343,23530,115225,61104,35821,147679,14337,4297,244282,24085,326976,56428,7851,21303,131620,71446,83253,68692,111870,5224,15813,38197,49026,45057,13660,3306,76345,40671,27905,91072,996,68527,62085,91351,122634,55109,168209,2024,27560,112707,17352,8306,167115,169921,166958,5031,46020,11844,67284,19130,76185,6920,32849,5450,14610,22451,21002,17392,31872,66682,84796,13709,40210,59898,12029,8719,53564,21462,91884,21647,88379,194428,12754,37797,132826,160016,22567,54383,53186,77611,31107,8339,4694,19185,90355,23597,17222,140675,28442,23668,55977,9128,61555,28774,155229,17658,9390,24379,69357,15752,127381,239631,62460,93181,55913,45133,140155,18676,25249,33164,29581,82837,67223,22362,29975,7317,52813,1943,29613,20012,207130,49617,49651,5636,15334,36313,29226,28084,95247,72072,19e3,224932,15811,114,32127,38097,37508,88507,37225,27359,91626,12193,69279,20608,11055,88156,92808,2152,57259,55275,72789,24475,104414,1708,9882,3818,48661,66897,1631,34806,227930,85815,87753,18321,250664,72733,25107,206797,50891,8082,196411,92596,96764,152823,65514,22819,387277,62176,51225,40329,15563,189,3659,73670,64357,51793,275136,33482,86653,74615,67058,11318,125720,15388,22388,8267,1730,102663,170910,40784,7144,85373,13040,7088,94309,583,44224,140424,77439,18496,164026,36578,4722,9151,5824,63365,26510,35199,40500,79277,32495,44614,35233,9566,203293,152144,7097,2330,183480,98629,13423,330887,44130,68600,30939,97829,31012,345465,56747,94879,4939,160027,149761,99423,46099,32251,15332,8761,96094,128555,5763,235318,222223,55729,30241,55420,201746,3987,81382,8259,49325,23287,7719,24633,251100,92311,18591,110533,64759,170260,393860,7175,21144,132887,3593,75346,101277,91109,16387,259187,11627,57459,173829,44694,55780,49797,89192,120443,62622,3904,14814,23887,1027,112258,64955,99800,11132,66353,36202,48624,18158,88481,96882,43059,11040,2455,7077,21651,181159,99126,100434,61388,68186,19161,110468,120052,8819,55324,41494,7014,37689,3618,87729,92615,207943,9823,128657,12587,15857,6379,67628,51216,71775,157617,63244,1503,3864,218754,110864,5769,21492,7243,1192,87921,85529,31512,18537,42698,35350,73510,84474,34301,8991,21013,35034,566,38832,19838,35586,37216,39413,55006,12178,59742,856,84563,6900,25632,17437,49786,30723,13847,70845,4044,7843,23944,235976,55530,48942,6518,20939,73769,192653,52936,95207,23895,132542,142982,22632,87452,48042,54018,178468,10728,26230,23559,363,81269,142012,5718,346258,31456,84333,246476,51018,66692,101804,120570,39962,30373,70593,2864,60541,19425,54209,104092,7201,31545,48018,25865,15442,46257,40443,8328,6451,111782,47527,97754,33046,470,245116,31095,39,91934,87208,73470,36708,36521,12801,70624,36272,8892,79768,12427,55454,103756,5908,52390,62962,22720,141138,94634,41689,128402,126390,6628,106394,35527,134394,82727,254651,194502,148064,89549,3202,28359,957,21954,27906,49840,142747,8307,24206,48978,1186,71728,133038,71474,91306,6333,110959,74600,70387,18983,62609,56057,22970,1147,135850,1321,28834,3578,59715,102227,32827,81415,99952,55636,257598,390,22702,35701,85872,402916,39216,189795,14929,19467,10112,144422,61514,5279,63421,134686,41436,8424,51925,10598,132295,124416,4604,194739,210929,57866,31829,51626,50007,9976,91878,61906,56168,81906,60918,61859,40017,23059,16887,40927,62064,12785,32893,32913,21782,93965,20169,44387,79084,38463,11457,93950,27127,157050,2697,337088,5116,54128,48255,33279,8821,27352,25515,124022,65710,28906,38557,33390,1722,104435,72215,38551,12094,30978,25113,6671,37355,175109,42862,98024,65406,221276,59624,118012,64637,78760,86697,21426,1639,40350,12584,67193,84144,31396,7863,143011,69629,63112,9454,28666,65798,46372,134721,6314,51402,30837,151922,2847,38676,38008,92823,136245,17540,5504,109295,205242,37606,5211,214892,1586,20670,208711,137743,19328,40652,16995,20023,14657,154919,34422,12996,13918,38221,47690,16398,2959,37680,89122,6721,198469,91876,172043,83898,101992,26084,94570,3635,76958,22853,76497,38266,176590,168403,44464,142840,79180,184594,1984,41806,83147,11985,6546,366068,59732,24533,271505,8736,39084,222992,93429,28962,58985,86665,8432,30028,14548,32439,54424,165029,55175,27458,69046,121277,46168,33732,20661,24581,135574,123110,37556,79260,72611,16957,12939,46162,58238,44907,72936,253758,41324,32518,96480,11949,124438,65280,43256,34107,53533,43531,37037,28366,45970,32741,173438,6121,194202,62969,26355,30314,58370,28455,1848,50519,82830,90393,21761,295490,10936,256940,133568,44050,20269,4089,27457,21610,219460,36743,14821,101388,52005,13124,30979,140816,167362,26054,18458,60789,34917,40447,26606,33422,9066,3452,83614,5761,20263,137238,25038,91310,101,52322,74548,42572,38084,214054,186568,31802,17665,30620,141936,37730,14420,4265,187218,49640,188208,51441,55388,96452,66659,40869,42039,60967,221027,19234,178581,29105,96050,9165,196118,157335,3738,40354,117436,2965,34136,59659,15570,50843,230035,31444,71260,43886,18316,5387,38500,168508,17406,32174,8828,103373,143806,90367,3560,18719,122310,16508,26719,2541,105429,6645,37998,73190,10591,235916,49737,87112,233941,53188,32193,79154,4544,52905,126477,7580,63501,57314,3216,31337,6541,103083,60846,49,9756,15481,1355,43840,14319,13743,27486,10222,73114,230718,418644,16706,6674,279748,23058,45273,295831,86306,2743,5535,88773,21829,35253,120938,31153,3169,16839,42847,8751,80974,33942,36867,35514,16485,26474,77775,56877,5391,48346,3882,108713,31403,27804,55248,26235,43821,136104,40118,175507,28034,203908,18732,1788,34030,106427,36958,54359,7251,44936,15356,69139,455,157915,22173,140291,50348,43275,82066,49621,54952,15216,36226,96695,66855,6936,1987,8227,196087,4631,68827,99004,47541,110265,17953,147605,110242,58520,31312,38724,329975,642,3155,34497,75937,6207,73843,6120,17249,51429,117746,3218,910,68961,319671,14938,29555,34700,1649,66673,72268,9655,76800,153087,6941,210168,27130,35398,1780,73242,3135,56689,19556,165307,8765,35967,121458,13333,70453,17350,117253,22265,13340,44265,39869,441,3742,135025,23581,33309,16543,17731,13291,157637,283005,21408,101360,63887,52312,83873,5338,233779,23759,186949,34531,177320,38069,156465,91004,19353,59852,68160,14891,1338,1072,29823,1950,28901,81407,313445,73038,84807,162348,240257,37162,138934,16111,58013,41253,102951,16457,96056,19541,56402,67217,41638,94381,89674,29481,37456,80815,151579,13937,13683,132537,19699,134545,67020,29816,222341,141235,427578,48868,129557,233342,23077,87871,16213,18728,16184,9469,37913,19680,2798,171356,178328,13216,50049,72690,71904,124644,55455,7504,29052,41036,266546,19899,30391,188755,8659,59469,16,104298,112943,53865,76203,138226,68857,139953,14125,107625,119795,173133,4398,50273,48808,54390,16466,122086,31835,67035,50971,48859,7508,46427,66477,73021,84615,39985,83076,46779,201569,53336,36443,60865,168164,143810,51393,25548,169307,32896,24485,38424,21837,29087,275813,51674,6714,64883,46169,187369,55186,76192,12852,12018,62134,31067,118303,16542,12125,10579,4928,26291,43854,7091,10946,253716,109062,39283,17261,113012,258512,47764,125126,32646,55892,80279,201623,149872,3192,385,1208,48750,5376,58738,22335,5427,82416,47811,32435,143086,38930,94128,59975,156037,37977,38224,62485,7698,50405,71027,16462,21559,136153,34131,107506,162069,63703,3101,215029,40407,4178,3774,9187,80019,17880,97926,67579,2600,18405,8351,47924,86638,70820,92206,86453,29610,42241,119200,3198,15466,67813,57863,35454,4779,99518,4649,104641,144269,33730,38073,65864,6838,109456,193298,154007,5623,45741,30846,182578,25573,157224,1543,58575,138703,146140,44971,49356,18275,59064,20300,13122,11848,24453,11973,9797,86843,2919,25530,49210,1130,161220,76788,75373,85604,34926,36014,17777,17255,51533,11676,92226,51845,119859,21525,5936,18507,28050,1140,31418,14857,34207,47859,10750,36382,32079,106909,59426,87757,38393,110042,15965,97104,33757,35344,97993,53979,33651,45407,41884,82515,173089,7177,58371,35365,47543,51927,35587,10670,23544,29306,84233,39976,76076,62097,9007,8668,28119,78281,120790,19835,143020,54968,18670,64959,20649,34469,42570,33001,136570,87796,120044,1106,58700,63951,127623,12805,83057,40212,31773,49850,7361,54336,347524,101314,23751,19569,48791,29174,49369,20467,7465,75842,38281,623,112457,60210,28849,51003,94720,6426,90047,85560,43761,3579,85105,34607,90410,118528,7224,42907,111163,18168,6960,161135,191298,5247,100584,127552,171568,20121,91173,12636,54615,20199,63730,98105,2396,40387,14438,125012,4765,33235,12865,45299,37728,82098,77872,114037,59253,19675,24838,398016,102561,11446,17069,57508,178277,65836,99941,26114,2585,271882,136866,50126,11027,155648,118367,14585,8910,123015,335383,40434,41016,53021,14439,87098,176860,201543,121888,2358,9286,5739,22666,54270,37884,169381,33984,93859,16124,89364,72207,51639,76366,99029,65812,2198,12147,174891,194289,6986,30252,88822,21284,11445,288337,160821,33034,100869,43852,25761,52882,1144,103809,1924,84458,86079,43411,13542,139276,18141,34978,41298,7276,26481,173800,33210,17951,142652,33616,33677,2210,19941,98568,2486,192414,80136,12058,235883,50963,249638,29572,27221,47034,6124,72107,63346,97620,158513,299699,40388,23235,37176,224244,198386,121323,67992,23827,63170,17838,106622,158590,26807,5345,23489,91891,55474,74834,37981,13058,5977,72552,34706,26828,145172,19904,21367,34043,960,77092,91381,4733,47446,7680,41697,5170,16960,14741,46101,13656,473,51842,37433,11103,11551,121951,13191,97536,165932,50397,51628,129028,9069,44885,6590,59195,47045,32940,225472,90345,21833,13303,29407,96615,141951,5198,6028,18395,7181,3861,14966,156358,167182,36529,55253,25942,173153,30959,27261,50691,150176,162201,38467,48462,80602,42163,118482,168,108756,26011,17166,54149,456538,22512,91374,13816,90358,131615,18132,226707,1824,28139,26860,42253,93877,77351,65575,8980,80574,22020,27948,40422,91324,76376,13528,39281,91685,82215,122541,144066,1983,193851,17283,26320,2739,194978,4790,26845,42627,61300,65815,174612,55133,4200,191130,79771,158321,52280,166796,221620,62461,11278,4067,88152,83409,31717,121367,13522,47325,37945,10406,174348,249321,154101,64912,29938,51775,17220,15776,166138,78890,84425,54121,42861,16368,24572,291647,10197,32073,22651,11677,97509,26952,35787,18424,41910,71614,94977,72318,41594,70024,275419,37702,60199,7335,39107,61315,18271,18394,33768,87884,104277,123724,7277,56288,71981,189803,49320,3352,6798,14240,8954,69220,94433,57372,28620,68863,193727,85575,42309,41667,67689,42081,22543,44824,12719,28540,114236,101553,27638,27296,4300,5353,4663,19379,94098,3758,95888,95144,80344,87320,28447,259518,12718,71391,152731,37063,24132,31911,104896,15672,103782,1521,4945,72541,23717,122632,15619,87175,206120,29428,189780,61416,28350,44457,972,1175,47233,198738,95789,41907,21953,97034,59341,22864,53713,16873,32971,20693,20954,31336,21477,16169,38370,16412,9019,3841,24599,21938,17085,6484,81198,76413,5849,72514,12320,65247,276175,37234,59796,52642,16312,57349,198507,94148,46134,18958,125552,1747,18725,151873,14901,5490,68287,29470,3689,64794,40814,26018,25692,54450,2703,88278,124886,173087,174e3,24159,179477,24276,46004,201876,209202,445,52876,31948,30206,157610,39180,18439,44124,50469,5774,96278,222758,200216,50290,45486,20435,46986,46276,140133,142326,15569,13363,47522,92583,2182,7135,16853,22998,30272,4952,63263,35623,39096,53789,44864,20053,110392,124213,4630,16087,28221,127787,25839,77481,44693,13464,113146,6983,27069,55717,50102,4760,7107,26186,66507,59145,36032,104182,71328,29425,64317,50781,47465,94298,69706,74899,22754,120756,25108,93077,56834,73286,39928,16218,41699,176763,7555,70819,50083,26895,23315,26014,16773,123079,41712,5719,31516,90427,158540,85051,183128,40864,27505,55392,9058,45224,96857,30901,136622,96557,56304,120061,11501,151448,5773,89743,7769,86069,2935,18471,41628,10114,33660,110170,49479,26745,92846,33221,26731,18795,87076,8550,2100,29972,120289,3077,72490,33784,2630,208722,50861,63483,79029,6419,39467,14302,45286,64207,9686,67513,44170,1050,77246,59266,17055,53801,7150,11111,42432,4278,94579,362117,36175,42902,41933,39002,98489,22913,74161,84773,57036,17556,162288,74485,178760,93867,73635,128860,50362,261,67455,80001,46080,35662,4368,25247,19230,74393,22588,1822,27682,235324,13798,85998,13194,235067,23514,71669,147632,23191,134748,214683,105101,1518,25489,247114,7380,54842,26922,3971,26361,20844,68642,170517,77339,123255,8963,77818,150998,48466,36806,2732,23261,11741,236162,18243,126216,28690,50546,16385,92760,197383,246558,201295,88255,67588,71687,176076,172653,169058,33906,63747,24835,157621,43338,30050,46152,132741,2770,51371,94835,6614,15112,11749,56936,1250,19027,399017,58036,100215,23388,55815,308768,124152,94803,9521,64186,8971,28,30427,62163,7616,103838,35079,29203,131235,7743,17389,10882,37420,61460,228512,85363,41581,131077,62822,119647,10130,54445,26925,19968,29016,24446,74028,24176,61448,67185,9254,8563,119129,9771,99184,37716,39514,10532,221512,258753,218630,55980,23394,32141,61924,66749,32411,3741,36475,26678,77010,44946,91203,128749,116953,20476,49625,53116,13735,102335,29376,51946,83407,67892,59212,34685,21083,1546,112982,32972,74397,1078,190545,16082,86140,58591,89611,101531,10061,105104,76319,20035,17551,52611,169061,190842,100780,23907,90413,115619,9675,34710,193435,49443,129734,11183,258877,16318,136182,126808,44635,27304,192375,2599,125648,47051,12091,23814,721,58800,40137,66726,97930,60877,74487,7942,54326,9841,41428,13762,8211,85383,6950,99177,79806,201786,296464,124087,13144,29741,41721,47634,55088,254286,106408,17041,99064,12942,64086,45233,14005,2612,55827,255,7984,13980,38574,12776,46654,73499,249951,2101,26676,25996,132326,116415,119062,50449,31033,23038,11589,179252,20007,14860,129270,21143,17796,144715,60106,70758,69842,34674,282133,44014,16774,57268,38528,24053,46373,201667,28327,471023,51889,102667,21193,114909,84132,69317,96723,67969,16134,68145,15058,28765,32035,2524,101089,98664,25045,76571,14957,86040,118506,262428,154764,81573,39681,283900,73287,127825,544,80448,52347,38512,175971,15180,45467,33086,46552,48894,81107,43213,36672,54025,76703,8053,7608,13299,56619,20752,238099,54164,105133,1444,32942,953,37564,8e3,66316,119463,106817,404,13667,149108,128597,31267,10269,49836,106150,1484,52330,76965,160486,171648,38456,31263,22424,37738,66245,67467,143369,60471,75610,20895,115528,86070,60854,40796,49347,18989,15030,11371,37578,15779,79867,10187,86462,46402,155626,93200,40229,7090,57547,108053,99598,11088,47505,41218,206017,2173,20988,30219,22919,80563,57566,42369,93141,41675,2407,182519,120495,27154,16702,29456,14349,7958,16688,117177,140375,42467,261919,74916,153569,10836,34742,49526,7621,105997,12212,2270,392377,7755,17959,25086,232152,138791,33847,13860,35316,5811,1344,71259,50452,207539,92635,50359,5821,33674,30255,2086,2587,96264,17543,42,6029,9580,43007,139248,82831,12917,29607,25786,51467,42137,85161,100698,31561,88989,121990,278500,3602,109344,37982,15279,116442,28936,30880,87894,58079,128661,126731,67392,28051,146885,4861,16216,97344,42827,147561,153948,22684,21335,47685,1853,43349,15185,59642,10229,25520,187921,108972,5579,98037,24945,6697,19193,63734,137934,75056,89740,19767,224268,56138,63643,151661,39313,70618,84031,89723,84074,13703,85626,35460,8867,64845,3439,57906,99776,63968,49270,81130,34356,16210,23547,36446,34090,140028,72439,2221,22163,57058,363492,113754,18913,95451,48663,54464,54037,176097,68425,3023,34906,29482,117389,341780,80431,58330,16753,92616,60907,94846,147486,4498,48646,7773,46801,7778,18946,464978,47558,33223,177444,7328,15626,63337,94700,11743,9351,255024,39098,16447,42647,96230,39769,58840,10068,63439,35800,65843,58823,413844,9156,51258,7434,61791,85018,6872,3692,28096,7121,33024,6009,75532,31997,192535,9661,3304,9547,14753,31987,25314,55689,15896,20430,39472,31340,99744,25398,115569,54883,28719,205423,23071,57855,64638,149867,25671,82403,37616,20668,39989,77996,74948,140555,175248,64810,36515,46595,4958,248773,24045,28728,136673,168704,20804,114833,100325,27135,21205,96151,153134,45992,7093,13992,76047,1980,19432,145001,75159,87462,17710,1013,45556,34297,144882,20648,26061,11319,129567,108555,18872,464580,33386,22717,65948,167189,5603,135042,79542,8801,202632,18114,91882,5973,5239,67315,4431,60916,47819,71693,32597,32606,18183,45072,80329,76385,24749,51305,40314,156514,14693,130345,13168,66214,18029,12858,34801,27628,14544,10823,40522,40185,33739,148694,23548,9923,61012,28859,17933,19442,34364,99849,164107,141167,30629,21054,6744,36491,8096,42474,41706,155060,30650,10600,163442,1143,96655,61390,52359,7559,51568,64256,203854,4467,22453,14504,436398,7878,6980,8293,63610,293747,16167,35763,19627,147603,15419,18032,110744,51346,33681,54571,40472,48615,39073,21604,13754,173027,92560,11083,47299,63062,11813,52007,29883,9734,139722,15953,1550,20651,13616,49306,16113,90089,92326,7584,30712,72424,164858,6831,152871,55746,197721,34167,196442,6022,112107,55215,7538,123381,4920,43539,77165,8939,50392,34192,20225,79762,22505,58667,40770,29788,97180,82835,4568,8579,13273,363569,35898,49983,436,36598,3237,131691,62418,35591,8101,4073,379438,65218,76072,33887,2968,27573,212619,288680,68278,72851,150504,217896,6913,121339,22017,35340,51072,43616,75043,31437,10833,81487,4364,22968,41454,106687,85446,19863,109625,149241,524,141850,214404,54376,657,237023,9401,108137,53800,32474,49712,53334,126876,27337,45552,177696,8269,15036,12097,42240,2328,125374,119295,99715,2500,19624,39441,27220,102691,60957,94543,39101,18566,67362,13975,78230,25017,34017,239007,90027,39351,41681,35354,43822,1043,916,58587,141983,94818,38799,75459,41114,67432,16195,36606,59568,22272,126769,31424,68659,12287,134302,257977,5756,207285,95637,47248,117689,19583,77451,22373,12200,54993,117118,34244,29386,34562,53819,71267,64172,77665,49368,7716,59301,25749,45426,194789,17297,2650,1766,32501,45198,20403,20984,6600,14171,94604,19037,5402,29896,9938,59935,109708,88081,145182,44844,39167,352626,164173,35374,45982,6122,154,73419,220487,53834,53601,17992,8609,229321,5610,68098,66815,71012,95069,140968,27396,8957,134489,24656,86659,56598,134852,17316,123838,255436,6613,41610,138033,81452,32023,32396,123687,63398,8693,29712,30407,19296,121188,3551,36099,20032,111948,56624,16547,27453,35916,15378,52039,56849,13489,22214,73177,53097,277349,2157,14029,187886,10260,141743,246460,91880,50869,3788,49486,133566,54950,33120,129337,53768,18333,9525,26902,312251,10297,9020,70759,16647,112432,59260,84609,9818,82766,73569,468,46001,75780,55028,52106,11498,43645,108069,17150,17753,29417,16705,31799,9606,289,122254,115975,8620,6133,255357,56908,14456,133464,43554,79224,11247,29630,160,12756,25464,65960,350428,62521,321796,100359,67358,35169,46172,113128,48988,88868,31094,33266,6847,60887,98188,49659,69117,92977,220228,13947,80181,35103,62170,97351,13475,2440,199768,19498,36597,46971,25234,67806,62881,84717,73648,181966,10488,94149,21550,26655,63436,48375,14405,165650,9621,24439,28043,42735,4490,29963,56674,45373,1934,262446,50855,67098,26898,5261,52696,40644,33900,9440,180286,87162,22940,19704,26936,69769,10254,101759,27406,12243,48e3,73926,113215,54935,5726,192787,4312,106216,9366,11550,52949,23457,212271,277152,133895,108374,6191,96477,29980,218916,58024,54696,40853,91124,65894,91170,65908,252552,6793,29212,15389,44516,122515,52617,35058,9017,103536,39510,49136,19242,130652,662077,74699,47024,31422,8517,73351,24399,13867,128360,4810,4434,61779,111983,61036,17798,110240,59722,102960,39688,10001,23803,23039,176498,56659,44814,134295,17188,77577,74466,226175,102472,154333,63900,111747,18062,41171,79669,32773,408933,42562,28931,30907,107388,43487,2946,240310,23938,24354,319,184983,7927,6488,1422,10790,68809,68209,64775,4361,202,17123,59634,51200,44391,18188,17843,2619,74278,3230,9540,47187,21702,36274,56894,43907,16310,34790,16866,6150,5561,13587,107545,108873,126867,86986,28640,33427,19017,5762,80637,17430,46903,2047,131055,25958,13558,5444,47152,13900,44563,122857,45348,70863,39593,54332,38068,33637,318,40310,143467,18502,24520,11377,62013,28942,27246,28269,83545,17999,59015,90707,30065,15161,34720,1263,37008,2012,6060,98575,92933,5721,299,199555,24578,29223,2985,743,115825,109523,136657,47454,26378,53586,3733,174945,93340,244456,5693,37386,28782,89767,27545,23573,18798,136425,34320,84778,20041,48453,38215,7477,71958,40621,8773,5874,187927,105965,51100,43533,18083,8443,10180,43597,2003,183999,69689,12216,129696,146188,62389,34044,68410,12765,43273,26949,266807,3345,34477,79197,5688,47539,213110,21634,22257,50092,32222,42346,39530,63668,98,134978,74022,5152,59088,174145,37220,9934,9545,118937,5724,87240,19875,15784,40143,23263,87513,181654,285152,37881,263241,4966,43934,10433,186657,6470,74416,225854,25908,142677,246262,32280,6192,75890,45546,143264,135305,29742,47013,77787,11732,126658,8763,37950,21806,57557,113464,89465,108995,164574,23894,22996,23169,15369,23117,17642,130607,40503,36239,280990,44666,9981,40427,147487,26869,168452,32886,32991,46798,240839,15111,70502,65697,88548,44145,28701,48767,31139,206777,35659,181164,166262,14554,171445,31786,66523,76607,17956,6507,31279,90476,116611,167918,6560,1243,115324,80128,41867,55897,187323,37069,32596,189444,145931,13390,105530,65709,26805,6999,55714,41300,22915,68951,22138,21120,22264,10058,19945,33635,56123,99085,10032,5818,6016,46649,57476,35264,94413,112522,262288,93686,83038,14341,23204,28807,66084,77987,6101,126673,7133,38126,5923,122091,170240,97772,46874,215746,43948,41622,3272,55596,8332,146411,251315,13533,8561,81521,115449,48616,175175,2063,186556,3036,134537,75772,29728,82360,22973,186559,86348,89100,38388,82297,45610,2613,87082,9986,177812,57884,23591,47485,42543,33582,44713,74439,257444,252451,31825,35631,38540,33066,5147,13973,4343,51830,70378,22827,26448,95560,36896,241741,48067,203953,298860,61620,20450,3220,67272,6586,107662,100160,108684,6929,57226,4762,7457,1320,40404,77204,99309,62750,208653,59977,44e3,74315,34332,5819,172217,64904,114077,18147,84012,1791,98456,90930,21446,116669,103938,7422,85140,59713,5768,326211,16239,75411,13229,29398,10758,236107,1539,112472,95979,152154,151294,306,21196,38146,10700,6891,84282,109646,56492,40539,6589,119491,51354,30685,140209,136906,29622,73617,49553,70525,51671,166869,139616,74395,37439,49595,45678,11959,33211,86560,52434,9282,62690,112155,130810,5243,108261,99970,265613,72551,80049,6391,33365,90721,66737,69872,87011,1860,9032,112544,60905,37371,89015,140351,19076,850,373531,2802,36725,218795,72062,28990,16550,24614,7815,6187,26336,33373,32162,42791,73555,32062,23386,10244,56392,49442,27076,136262,12412,14883,1134,33675,97153,199281,15608,100152,74072,47942,254301,36451,16026,10687,65067,56708,254030,30290,50490,13864,57941,259331,35588,23485,43486,24869,21620,92971,22072,88645,1048,182050,13343,32452,14825,19509,3325,216938,45740,99716,189082,53740,78245,25609,24311,176777,47340,308354,40669,66085,14102,125339,9225,128709,97207,1271,200933,78439,113451,88975,18324,46521,11819,18570,141756,72512,170020,52754,63550,118515,103073,93330,32736,50499,14722,31600,68452,398867,29316,172786,18417,104924,2606,5670,84818,16288,67106,59580,82929,607401,291,85829,359,15897,35830,50696,65630,52672,22115,356968,29895,40837,231192,34024,38957,26722,406,23335,124952,72068,68804,13268,147101,164740,276569,162596,66943,11569,26654,66358,4777,23229,102127,5848,978,2921,59666,5371,28212,90108,42938,39320,2499,4271,108792,33510,125072,71653,65239,38250,66357,38577,13964,86251,35708,50755,36010,29448,12209,3844,38222,206337,100876,67827,137088,14167,252225,84163,195270,1306,5703,54198,779,46802,22028,51124,86759,70560,113164,35685,162145,45471,34561,422,2611,6464,47486,19223,38246,9191,18331,89942,243642,212364,15893,17518,22617,6409,30046,126182,59716,36560,104428,18846,26592,19458,50793,147333,30826,1388,27647,10922,14495,33545,19269,135828,39727,41601,46931,233379,49169,131130,182112,16276,82381,118209,142445,128310,19672,28740,82907,33436,3118,102206,28723,24819,41937,38854,5157,3881,111491,1142,9776,421673,152241,29309,14961,87854,6054,15424,3796,82656,54996,2108,55367,239450,154525,9643,118103,106041,64601,68549,48707,30266,25772,18740,9462,229669,91798,112152,191327,14493,72828,8175,66636,236474,25817,87351,129027,76653,20422,22983,71240,27846,44661,12399,46158,77704,53101,35032,11072,17300,109294,33638,24408,1895,11241,760,17584,82479,125877,63150,141075,34259,23274,81698,15732,43577,48340,91584,14688,16379,24481,150280,96420,262050,48635,43727,61819,56268,72003,88178,17281,79912,13218,122519,125295,166396,11811,2171,118930,67746,17636,178278,174656,95661,173039,83845,79689,17473,98555,127696,203415,54730,22925,232239,9309,12136,175026,20740,180188,10747,39816,314017,266131,10040,175732,112550,220651,31974,37393,888,23008,86799,4303,64905,148467,75337,251,3284,370102,50264,9835,5438,23655,4481,29851,329,12855,7162,64931,78141,12804,42372,296771,83547,18624,34874,86271,3360,48665,77735,88767,11463,63527,28889,22258,29140,194315,113924,25499,6406,31334,1845,4802,49184,43455,35469,127594,92970,61038,115005,38840,87761,106838,8811,20572,55637,11162,96721,132425,108925,2948,125457,36356,3502,75270,27622,127192,2561,123095,49394,61155,16897,110064,9699,89448,53356,19628,220310,21622,83036,9885,112214,6087,26713,17901,161912,91492,3440,68594,9266,92238,8087,6866,150194,72175,80701,13459,31836,43243,239700,95846,44749,50647,21945,230538,120612,132371,244604,5193,105637,34661,41341,68775,85393,1874,8771,33718,49672,77403,595452,99507,6490,58895,128742,7704,39239,73217,43816,62824,37804,199976,22361,80005,87514,94832,14089,4574,139975,59142,75523,100268,43906,53442,15152,2547,186002,17011,19513,204282,3343,60568,128318,119250,4298,51871,41336,71759,21921,45074,98169,145889,99427,11350,1237,5520,28799,7803,53702,21026,136352,38293,128690,12158,90132,44600,10184,26957,39459,126025,78904,82999,59373,39301,150198,120529,153042,20177,50089,14764,271571,30530,123161,38975,101562,22941,5648,124654,109243,69817,71675,49162,106884,21241,107795,30258,16572,188262,141456,7688,60718,8271,11044,32440,104608,103419,236109,93156,43293,128929,42107,67180,25201,115254,185488,130954,72813,167547,20537,39969,38432,22582,184022,1139,27199,5655,17767,97412,122606,209377,27070,35871,326617,188954,42680,73512,80911,22629,3011,95021,315242,157737,383,41821,41808,19335,27950,15674,25677,110950,35375,76835,59108,57370,35262,16569,160415,37706,78086,32041,49691,137143,9782,172080,50148,77917,6323,10110,69172,17711,21795,59511,76184,135114,31046,132319,59105,157578,20549,80778,57649,158421,65143,4575,72235,21899,10797,92745,34035,106079,80159,4508,78304,25350,75457,46458,32937,25623,47,8531,104751,84953,8138,36508,187199,66310,115274,13253,32461,38536,1916,42007,187160,35055,26325,84394,35963,94216,45590,97782];var Q1=15,j1=class{log;peerRouting;routingTable;refreshInterval;refreshQueryTimeout;commonPrefixLengthRefreshedAt;refreshTimeoutId;constructor(e,t){let{peerRouting:n,routingTable:o,refreshInterval:s,refreshQueryTimeout:i,logPrefix:a}=t;this.log=e.logger.forComponent(`${a}:routing-table:refresh`),this.peerRouting=n,this.routingTable=o,this.refreshInterval=s??3e5,this.refreshQueryTimeout=i??3e4,this.commonPrefixLengthRefreshedAt=[],this.refreshTable=this.refreshTable.bind(this)}async start(){this.log(`refreshing routing table every ${this.refreshInterval}ms`),this.refreshTable(!0)}async stop(){this.refreshTimeoutId!=null&&clearTimeout(this.refreshTimeoutId)}refreshTable(e=!1){this.log("refreshing routing table");let t=this._maxCommonPrefix(),n=this._getTrackedCommonPrefixLengthsForRefresh(t);this.log(`max common prefix length ${t}`),this.log(`tracked CPLs [ ${n.map(o=>o.toISOString()).join(", ")} ]`),Promise.all(n.map(async(o,s)=>{try{if(await this._refreshCommonPrefixLength(s,o,e),this._numPeersForCpl(t)===0){let i=Math.min(2*(s+1),n.length-1);for(let a=s+1;a<i+1;a++)try{await this._refreshCommonPrefixLength(a,o,e)}catch(c){this.log.error(c)}}}catch(i){this.log.error(i)}})).catch(o=>{this.log.error(o)}).then(()=>{this.refreshTimeoutId=setTimeout(this.refreshTable,this.refreshInterval),this.refreshTimeoutId.unref!=null&&this.refreshTimeoutId.unref()}).catch(o=>{this.log.error(o)})}async _refreshCommonPrefixLength(e,t,n){if(!n&&t.getTime()>Date.now()-this.refreshInterval){this.log("not running refresh for cpl %s as time since last refresh not above interval",e);return}let o=await this._generateRandomPeerId(e);this.log("starting refreshing cpl %s with key %p (routing table size was %s)",e,o,this.routingTable.size);let s=await z1(this.peerRouting.getClosestPeers(o.toBytes(),{signal:AbortSignal.timeout(this.refreshQueryTimeout)}));this.log(`found ${s} peers that were close to imaginary peer %p`,o),this.log("finished refreshing cpl %s with key %p (routing table size is now %s)",e,o,this.routingTable.size)}_getTrackedCommonPrefixLengthsForRefresh(e){e>Q1&&(e=Q1);let t=[];for(let n=0;n<=e;n++)t[n]=this.commonPrefixLengthRefreshedAt[n]??new Date;return t}async _generateRandomPeerId(e){if(this.routingTable.kb==null)throw new Error("Routing table not started");let t=Vt(2),n=(t[1]<<8)+t[0],o=await this._makePeerId(this.routingTable.kb.localNodeId,n,e);return Ye(o)}async _makePeerId(e,t,n){if(n>Q1)throw new Error(`Cannot generate peer ID for common prefix length greater than ${Q1}`);let i=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(0,!1)^32768>>n,a=65535<<16-(n+1),c=i&a|t&~a,l=vy[c],d=new ArrayBuffer(34),u=new DataView(d,0,d.byteLength);return u.setUint8(0,Re.code),u.setUint8(1,32),u.setUint32(2,l,!1),new Uint8Array(u.buffer,u.byteOffset,u.byteLength)}_maxCommonPrefix(){let e=0;for(let t of this._prefixLengths())t>e&&(e=t);return e}_numPeersForCpl(e){let t=0;for(let n of this._prefixLengths())n===e&&t++;return t}*_prefixLengths(){if(this.routingTable.kb!=null)for(let{id:e}of this.routingTable.kb.toIterable()){let t=$n(this.routingTable.kb.localNodeId,e),n=0;for(let o of t)if(o===0)n++;else break;yield n}}};var Z1=class{providers;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:add-provider`),this.providers=t.providers}async handle(e,t){if(this.log("start"),t.key==null||t.key.length===0)throw new g("Missing key","ERR_MISSING_KEY");let n;try{n=oe.decode(t.key)}catch{throw new g("Invalid CID","ERR_INVALID_CID")}(t.providers==null||t.providers.length===0)&&this.log.error("no providers found in message"),await Promise.all(t.providers.map(async o=>{if(!e.equals(o.id)){this.log("invalid provider peer %p from %p",o.id,e);return}if(o.multiaddrs.length<1){this.log("no valid addresses for provider %p. Ignore",e);return}this.log("received provider %p for %s (addrs %s)",e,n,o.multiaddrs.map(s=>Q(s).toString())),await this.providers.addProvider(n,Ye(o.id))}))}};var J1=class{peerRouting;peerInfoMapper;peerId;addressManager;log;constructor(e,t){let{peerRouting:n,logPrefix:o}=t;this.log=e.logger.forComponent(`${o}:rpc:handlers:find-node`),this.peerId=e.peerId,this.addressManager=e.addressManager,this.peerRouting=n,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){this.log("incoming request from %p for peers closer to %b",e,t.key);let n=[];if(t.key==null)throw new g("Invalid FIND_NODE message received - key was missing","ERR_INVALID_MESSAGE");j(this.peerId.toBytes(),t.key)?n=[{id:this.peerId,multiaddrs:this.addressManager.getAddresses().map(s=>s.decapsulateCode(Z("p2p").code))}]:n=await this.peerRouting.getCloserPeersOffline(t.key,e);let o={type:ye.FIND_NODE,clusterLevel:t.clusterLevel,closer:n.map(this.peerInfoMapper).filter(({multiaddrs:s})=>s.length).map(s=>({id:s.id.toBytes(),multiaddrs:s.multiaddrs.map(i=>i.bytes)})),providers:[]};return o.closer.length===0&&this.log("could not find any peers closer to %b than %p",t.key,e),o}};var ed=class{peerRouting;providers;peerStore;peerInfoMapper;log;constructor(e,t){let{peerRouting:n,providers:o,logPrefix:s}=t;this.log=e.logger.forComponent(`${s}:rpc:handlers:get-providers`),this.peerStore=e.peerStore,this.peerRouting=n,this.providers=o,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(t.key==null)throw new g("Invalid FIND_NODE message received - key was missing","ERR_INVALID_MESSAGE");let n;try{n=oe.decode(t.key)}catch{throw new g("Invalid CID","ERR_INVALID_CID")}this.log("%p asking for providers for %s",e,n);let[o,s]=await Promise.all([this.providers.getProviders(n),this.peerRouting.getCloserPeersOffline(t.key,e)]),i=await this._getPeers(o),a=await this._getPeers(s.map(({id:l})=>l)),c={type:ye.GET_PROVIDERS,key:t.key,clusterLevel:t.clusterLevel,closer:a.map(this.peerInfoMapper).filter(({multiaddrs:l})=>l.length).map(l=>({id:l.id.toBytes(),multiaddrs:l.multiaddrs.map(d=>d.bytes)})),providers:i.map(this.peerInfoMapper).filter(({multiaddrs:l})=>l.length).map(l=>({id:l.id.toBytes(),multiaddrs:l.multiaddrs.map(d=>d.bytes)}))};return this.log("got %s providers %s closerPeers",c.providers.length,c.closer.length),c}async _getAddresses(e){return[]}async _getPeers(e){let t=[];for(let n of e)try{let o=await this.peerStore.get(n),s=this.peerInfoMapper({id:n,multiaddrs:o.addresses.map(({multiaddr:i})=>i)});s.multiaddrs.length>0&&t.push(s)}catch(o){if(o.code!=="ERR_NOT_FOUND")throw o}return t}};var td=class{peerStore;datastore;peerRouting;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:get-value`),this.peerStore=e.peerStore,this.datastore=e.datastore,this.peerRouting=t.peerRouting}async handle(e,t){let n=t.key;if(this.log("%p asked for key %b",e,n),n==null||n.length===0)throw new g("Invalid key","ERR_INVALID_KEY");let o={type:ye.GET_VALUE,key:n,clusterLevel:t.clusterLevel,closer:[],providers:[]};if(sy(n)){this.log("is public key");let a=iy(n),c;try{let l=await this.peerStore.get(a);if(l.id.publicKey==null)throw new g("No public key found in key book","ERR_NOT_FOUND");c=l.id.publicKey}catch(l){if(l.code!=="ERR_NOT_FOUND")throw l}if(c!=null)return this.log("returning found public key"),o.record=new xt(n,c,new Date).serialize(),o}let[s,i]=await Promise.all([this._checkLocalDatastore(n),this.peerRouting.getCloserPeersOffline(n,e)]);return s!=null&&(this.log("had record for %b in local datastore",n),o.record=s.serialize()),i.length>0&&(this.log("had %s closer peers in routing table",i.length),o.closer=i.map(a=>({id:a.id.toBytes(),multiaddrs:a.multiaddrs.map(c=>c.bytes)}))),o}async _checkLocalDatastore(e){this.log("checkLocalDatastore looking for %b",e);let t=qn(e),n;try{n=await this.datastore.get(t)}catch(s){if(s.code==="ERR_NOT_FOUND")return;throw s}let o=xt.deserialize(n);if(o==null)throw new g("Invalid record","ERR_INVALID_RECORD");if(o.timeReceived==null||Date.now()-o.timeReceived.getTime()>1296e5){await this.datastore.delete(t);return}return o}};var rd=class{log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:ping`)}async handle(e,t){return this.log("ping from %p",e),t}};var nd=class{components;validators;log;constructor(e,t){let{validators:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:put-value`),this.validators=n}async handle(e,t){let n=t.key;if(this.log("%p asked us to store value for key %b",e,n),t.record==null){let o=`Empty record from: ${e.toString()}`;throw this.log.error(o),new g(o,"ERR_EMPTY_RECORD")}try{let o=xt.deserialize(t.record);await Li(this.validators,o),o.timeReceived=new Date;let s=qn(o.key);await this.components.datastore.put(s,o.serialize().subarray()),this.log("put record for %b into datastore under key %k",n,s)}catch(o){this.log("did not put record for key %b into datastore %o",n,o)}return t}};var od=class{handlers;routingTable;log;constructor(e,t){let{providers:n,peerRouting:o,validators:s,logPrefix:i,peerInfoMapper:a}=t;this.log=e.logger.forComponent(`${i}:rpc`),this.routingTable=t.routingTable,this.handlers={[ye.GET_VALUE.toString()]:new td(e,{peerRouting:o,logPrefix:i}),[ye.PUT_VALUE.toString()]:new nd(e,{validators:s,logPrefix:i}),[ye.FIND_NODE.toString()]:new J1(e,{peerRouting:o,logPrefix:i,peerInfoMapper:a}),[ye.ADD_PROVIDER.toString()]:new Z1(e,{providers:n,logPrefix:i}),[ye.GET_PROVIDERS.toString()]:new ed(e,{peerRouting:o,providers:n,logPrefix:i,peerInfoMapper:a}),[ye.PING.toString()]:new rd(e,{logPrefix:i})}}async handleMessage(e,t){try{await this.routingTable.add(e)}catch(o){this.log.error("Failed to update the kbucket store",o)}let n=this.handlers[t.type];if(n==null){this.log.error(`no handler found for message type: ${t.type}`);return}return n.handle(e,t)}onIncomingStream(e){Promise.resolve().then(async()=>{let{stream:t,connection:n}=e,o=n.remotePeer;try{await this.routingTable.add(o)}catch(i){this.log.error(i)}let s=this;await Ge(t,i=>Ft(i),async function*(i){for await(let a of i){let c=Ar.decode(a);s.log("incoming %s from %p",c.type,o);let l=await s.handleMessage(o,c);l!=null&&(yield Ar.encode(l))}},i=>Ut(i),t)}).catch(t=>{this.log.error(t)})}};var sd=class extends Ce{log;components;protocol;running;registrarId;constructor(e,t){super();let{protocol:n,logPrefix:o}=t;this.components=e,this.log=e.logger.forComponent(`${o}:topology-listener`),this.running=!1,this.protocol=n}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.registrarId=await this.components.registrar.register(this.protocol,{onConnect:e=>{this.log("observed peer %p with protocol %s",e,this.protocol),this.dispatchEvent(new mt("peer",{detail:e}))}}))}async stop(){this.running=!1,this.registrarId!=null&&(this.components.registrar.unregister(this.registrarId),this.registrarId=void 0)}};var mp=class{dht;constructor(e){this.dht=e}async provide(e,t={}){await Mt(this.dht.provide(e,t))}async*findProviders(e,t={}){for await(let n of this.dht.findProviders(e,t))n.name==="PROVIDER"&&(yield*n.providers)}async put(e,t,n){await Mt(this.dht.put(e,t,n))}async get(e,t){for await(let n of this.dht.get(e,t))if(n.name==="VALUE")return n.value;throw new g("Not found","ERR_NOT_FOUND")}},gp=class{dht;constructor(e){this.dht=e}async findPeer(e,t={}){for await(let n of this.dht.findPeer(e,t))if(n.name==="FINAL_PEER")return n.peer;throw new g("Not found","ERR_NOT_FOUND")}async*getClosestPeers(e,t={}){for await(let n of this.dht.getClosestPeers(e,t))n.name==="FINAL_PEER"&&(yield n.peer)}},wT=32,bT=64,id=class extends Ce{protocol;routingTable;providers;network;peerRouting;components;log;running;kBucketSize;clientMode;validators;selectors;queryManager;contentFetching;contentRouting;routingTableRefresh;rpc;topologyListener;querySelf;maxInboundStreams;maxOutboundStreams;dhtContentRouting;dhtPeerRouting;peerInfoMapper;constructor(e,t){super();let{kBucketSize:n,clientMode:o,validators:s,selectors:i,querySelfInterval:a,protocol:c,logPrefix:l,pingTimeout:d,pingConcurrency:u,maxInboundStreams:f,maxOutboundStreams:m,providers:h}=t,p=l??"libp2p:kad-dht";this.running=!1,this.components=e,this.log=e.logger.forComponent(p),this.protocol=c??X9,this.kBucketSize=n??20,this.clientMode=o??!0,this.maxInboundStreams=f??wT,this.maxOutboundStreams=m??bT,this.peerInfoMapper=t.peerInfoMapper??ny,this.routingTable=new X1(e,{kBucketSize:n,pingTimeout:d,pingConcurrency:u,protocol:this.protocol,logPrefix:p}),this.providers=new q1(e,h??{}),this.validators={...ry,...s},this.selectors={...ty,...i},this.network=new K1(e,{protocol:this.protocol,logPrefix:p});let y=se();t.allowQueryWithZeroPeers===!0&&y.resolve(),this.queryManager=new W1(e,{disjointPaths:Math.ceil(this.kBucketSize/2),logPrefix:p,initialQuerySelfHasRun:y,routingTable:this.routingTable}),this.peerRouting=new H1(e,{routingTable:this.routingTable,network:this.network,validators:this.validators,queryManager:this.queryManager,logPrefix:p}),this.contentFetching=new F1(e,{validators:this.validators,selectors:this.selectors,peerRouting:this.peerRouting,queryManager:this.queryManager,network:this.network,logPrefix:p}),this.contentRouting=new V1(e,{network:this.network,peerRouting:this.peerRouting,queryManager:this.queryManager,routingTable:this.routingTable,providers:this.providers,logPrefix:p}),this.routingTableRefresh=new j1(e,{peerRouting:this.peerRouting,routingTable:this.routingTable,logPrefix:p}),this.rpc=new od(e,{routingTable:this.routingTable,providers:this.providers,peerRouting:this.peerRouting,validators:this.validators,logPrefix:p,peerInfoMapper:this.peerInfoMapper}),this.topologyListener=new sd(e,{protocol:this.protocol,logPrefix:p}),this.querySelf=new G1(e,{peerRouting:this.peerRouting,interval:a,initialInterval:t.initialQuerySelfInterval,logPrefix:p,initialQuerySelfHasRun:y,routingTable:this.routingTable}),this.network.addEventListener("peer",w=>{let E=w.detail;this.onPeerConnect(E).catch(b=>{this.log.error("could not add %p to routing table",E.id,b)}),this.dispatchEvent(new mt("peer",{detail:E}))}),this.topologyListener.addEventListener("peer",w=>{let E=w.detail;Promise.resolve().then(async()=>{let b=await this.components.peerStore.get(E),S={id:E,multiaddrs:b.addresses.map(({multiaddr:R})=>R),protocols:b.protocols};await this.onPeerConnect(S)}).catch(b=>{this.log.error("could not add %p to routing table",E,b)})}),this.dhtPeerRouting=new gp(this),this.dhtContentRouting=new mp(this),t.clientMode==null&&e.events.addEventListener("self:peer:update",w=>{this.log("received update of self-peer info"),Promise.resolve().then(async()=>{let E=w.detail.peer.addresses.some(({multiaddr:S})=>cy(S)),b=this.getMode();E&&b==="client"?await this.setMode("server"):b==="server"&&!E&&await this.setMode("client")}).catch(E=>{this.log.error("error setting dht server mode",E)})})}get[Zr](){return this.dhtContentRouting}get[Jr](){return this.dhtPeerRouting}get[zo](){return this}async onPeerConnect(e){if(this.log("peer %p connected",e.id),e=this.peerInfoMapper(e),e.multiaddrs.length===0){this.log("ignoring %p as there were no valid addresses in %s after filtering",e.id,e.multiaddrs.map(t=>t.toString()));return}try{await this.routingTable.add(e.id)}catch(t){this.log.error("could not add %p to routing table",e.id,t)}}isStarted(){return this.running}getMode(){return this.clientMode?"client":"server"}async setMode(e){await this.components.registrar.unhandle(this.protocol),e==="client"?(this.log("enabling client mode"),this.clientMode=!0):(this.log("enabling server mode"),this.clientMode=!1,await this.components.registrar.handle(this.protocol,this.rpc.onIncomingStream.bind(this.rpc),{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}))}async start(){this.running=!0,await this.setMode(this.clientMode?"client":"server"),this.querySelf.start(),await Promise.all([this.providers.start(),this.queryManager.start(),this.network.start(),this.routingTable.start(),this.topologyListener.start(),this.routingTableRefresh.start()])}async stop(){this.running=!1,this.querySelf.stop(),await Promise.all([this.providers.stop(),this.queryManager.stop(),this.network.stop(),this.routingTable.stop(),this.routingTableRefresh.stop(),this.topologyListener.stop()])}async*put(e,t,n={}){yield*this.contentFetching.put(e,t,n)}async*get(e,t={}){yield*this.contentFetching.get(e,t)}async*provide(e,t={}){yield*this.contentRouting.provide(e,this.components.addressManager.getAddresses(),t)}async*findProviders(e,t={}){yield*this.contentRouting.findProviders(e,t)}async*findPeer(e,t={}){yield*this.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t={}){yield*this.peerRouting.getClosestPeers(e,t)}async refreshRoutingTable(){this.routingTableRefresh.refreshTable(!0)}};var _y;(function(r){r[r.SEND_QUERY=0]="SEND_QUERY",r[r.PEER_RESPONSE=1]="PEER_RESPONSE",r[r.FINAL_PEER=2]="FINAL_PEER",r[r.QUERY_ERROR=3]="QUERY_ERROR",r[r.PROVIDER=4]="PROVIDER",r[r.VALUE=5]="VALUE",r[r.ADD_PEER=6]="ADD_PEER",r[r.DIAL_PEER=7]="DIAL_PEER"})(_y||(_y={}));var Sy;(function(r){r[r.PUT_VALUE=0]="PUT_VALUE",r[r.GET_VALUE=1]="GET_VALUE",r[r.ADD_PROVIDER=2]="ADD_PROVIDER",r[r.GET_PROVIDERS=3]="GET_PROVIDERS",r[r.FIND_NODE=4]="FIND_NODE",r[r.PING=5]="PING"})(Sy||(Sy={}));function Ry(r){return e=>new id(e,r)}var Py=ke(Oy(),1),Ui=Py.default;var qy=ke(Hy(),1);var xe;(function(r){r.ERR_INVALID_PARAMETERS="ERR_INVALID_PARAMETERS",r.ERR_INVALID_KEY_NAME="ERR_INVALID_KEY_NAME",r.ERR_INVALID_KEY_TYPE="ERR_INVALID_KEY_TYPE",r.ERR_KEY_ALREADY_EXISTS="ERR_KEY_ALREADY_EXISTS",r.ERR_INVALID_KEY_SIZE="ERR_INVALID_KEY_SIZE",r.ERR_KEY_NOT_FOUND="ERR_KEY_NOT_FOUND",r.ERR_OLD_KEY_NAME_INVALID="ERR_OLD_KEY_NAME_INVALID",r.ERR_NEW_KEY_NAME_INVALID="ERR_NEW_KEY_NAME_INVALID",r.ERR_PASSWORD_REQUIRED="ERR_PASSWORD_REQUIRED",r.ERR_PEM_REQUIRED="ERR_PEM_REQUIRED",r.ERR_CANNOT_READ_KEY="ERR_CANNOT_READ_KEY",r.ERR_MISSING_PRIVATE_KEY="ERR_MISSING_PRIVATE_KEY",r.ERR_INVALID_OLD_PASS_TYPE="ERR_INVALID_OLD_PASS_TYPE",r.ERR_INVALID_NEW_PASS_TYPE="ERR_INVALID_NEW_PASS_TYPE",r.ERR_INVALID_PASS_LENGTH="ERR_INVALID_PASS_LENGTH"})(xe||(xe={}));var MT="/pkcs8/",Wy="/info/",Is=new WeakMap,Ds={minKeyLength:112/8,minSaltLength:128/8,minIterationCount:1e3},wp={dek:{keyLength:512/8,iterationCount:1e4,salt:"you should override this value with a crypto secure random number",hash:"sha2-512"}};function Wn(r){return r==null||typeof r!="string"?!1:r===(0,qy.default)(r.trim())&&r.length>0}async function Pe(){let t=Math.random()*800+200;await new Promise(n=>setTimeout(n,t))}function hn(r){return new Oe(MT+r)}function Mo(r){return new Oe(Wy+r)}var ld=class{components;init;log;constructor(e,t){if(this.components=e,this.log=e.logger.forComponent("libp2p:keychain"),this.init=Ui(wp,t),this.init.pass!=null&&this.init.pass?.length<20)throw new Error("pass must be least 20 characters");if(this.init.dek?.keyLength!=null&&this.init.dek.keyLength<Ds.minKeyLength)throw new Error(`dek.keyLength must be least ${Ds.minKeyLength} bytes`);if(this.init.dek?.salt?.length!=null&&this.init.dek.salt.length<Ds.minSaltLength)throw new Error(`dek.saltLength must be least ${Ds.minSaltLength} bytes`);if(this.init.dek?.iterationCount!=null&&this.init.dek.iterationCount<Ds.minIterationCount)throw new Error(`dek.iterationCount must be least ${Ds.minIterationCount}`);let n=this.init.pass!=null&&this.init.dek?.salt!=null?lc(this.init.pass,this.init.dek?.salt,this.init.dek?.iterationCount,this.init.dek?.keyLength,this.init.dek?.hash):"";Is.set(this,{dek:n})}static generateOptions(){let e=Object.assign({},wp),t=Math.ceil(Ds.minSaltLength/3)*3;return e.dek.salt=B(Vt(t),"base64"),e}static get options(){return wp}async createKey(e,t,n=2048){if(!Wn(e)||e==="self")throw await Pe(),new g("Invalid key name",xe.ERR_INVALID_KEY_NAME);if(typeof t!="string")throw await Pe(),new g("Invalid key type",xe.ERR_INVALID_KEY_TYPE);let o=hn(e);if(await this.components.datastore.has(o))throw await Pe(),new g("Key name already exists",xe.ERR_KEY_ALREADY_EXISTS);switch(t.toLowerCase()){case"rsa":if(!Number.isSafeInteger(n)||n<2048)throw await Pe(),new g("Invalid RSA key size",xe.ERR_INVALID_KEY_SIZE);break;default:break}let i;try{let a=await Ia(t,n),c=await a.id(),l=Is.get(this);if(l==null)throw new g("dek missing",xe.ERR_INVALID_PARAMETERS);let d=l.dek,u=await a.export(d);i={name:e,id:c};let f=this.components.datastore.batch();f.put(o,L(u)),f.put(Mo(e),L(JSON.stringify(i))),await f.commit()}catch(a){throw await Pe(),a}return i}async listKeys(){let e={prefix:Wy},t=[];for await(let n of this.components.datastore.query(e))t.push(JSON.parse(B(n.value)));return t}async findKeyById(e){try{let n=(await this.listKeys()).find(o=>o.id===e);if(n==null)throw new g(`Key with id '${e}' does not exist.`,xe.ERR_KEY_NOT_FOUND);return n}catch(t){throw await Pe(),t}}async findKeyByName(e){if(!Wn(e))throw await Pe(),new g(`Invalid key name '${e}'`,xe.ERR_INVALID_KEY_NAME);let t=Mo(e);try{let n=await this.components.datastore.get(t);return JSON.parse(B(n))}catch(n){throw await Pe(),this.log.error(n),new g(`Key '${e}' does not exist.`,xe.ERR_KEY_NOT_FOUND)}}async removeKey(e){if(!Wn(e)||e==="self")throw await Pe(),new g(`Invalid key name '${e}'`,xe.ERR_INVALID_KEY_NAME);let t=hn(e),n=await this.findKeyByName(e),o=this.components.datastore.batch();return o.delete(t),o.delete(Mo(e)),await o.commit(),n}async renameKey(e,t){if(!Wn(e)||e==="self")throw await Pe(),new g(`Invalid old key name '${e}'`,xe.ERR_OLD_KEY_NAME_INVALID);if(!Wn(t)||t==="self")throw await Pe(),new g(`Invalid new key name '${t}'`,xe.ERR_NEW_KEY_NAME_INVALID);let n=hn(e),o=hn(t),s=Mo(e),i=Mo(t);if(await this.components.datastore.has(o))throw await Pe(),new g(`Key '${t}' already exists`,xe.ERR_KEY_ALREADY_EXISTS);try{let c=await this.components.datastore.get(n),l=await this.components.datastore.get(s),d=JSON.parse(B(l));d.name=t;let u=this.components.datastore.batch();return u.put(o,c),u.put(i,L(JSON.stringify(d))),u.delete(n),u.delete(s),await u.commit(),d}catch(c){throw await Pe(),c}}async exportKey(e,t){if(!Wn(e))throw await Pe(),new g(`Invalid key name '${e}'`,xe.ERR_INVALID_KEY_NAME);if(t==null)throw await Pe(),new g("Password is required",xe.ERR_PASSWORD_REQUIRED);let n=hn(e);try{let o=await this.components.datastore.get(n),s=B(o),i=Is.get(this);if(i==null)throw new g("dek missing",xe.ERR_INVALID_PARAMETERS);let a=i.dek;return await(await di(s,a)).export(t)}catch(o){throw await Pe(),o}}async exportPeerId(e){let t="temporary-password",n=await this.exportKey(e,t),o=await di(n,t);return ut(o.public.bytes,o.bytes)}async importKey(e,t,n){if(!Wn(e)||e==="self")throw await Pe(),new g(`Invalid key name '${e}'`,xe.ERR_INVALID_KEY_NAME);if(t==null)throw await Pe(),new g("PEM encoded key is required",xe.ERR_PEM_REQUIRED);let o=hn(e);if(await this.components.datastore.has(o))throw await Pe(),new g(`Key '${e}' already exists`,xe.ERR_KEY_ALREADY_EXISTS);let i;try{i=await di(t,n)}catch{throw await Pe(),new g("Cannot read the key, most likely the password is wrong",xe.ERR_CANNOT_READ_KEY)}let a;try{a=await i.id();let d=Is.get(this);if(d==null)throw new g("dek missing",xe.ERR_INVALID_PARAMETERS);let u=d.dek;t=await i.export(u)}catch(d){throw await Pe(),d}let c={name:e,id:a},l=this.components.datastore.batch();return l.put(o,L(t)),l.put(Mo(e),L(JSON.stringify(c))),await l.commit(),c}async importPeer(e,t){try{if(!Wn(e))throw new g(`Invalid key name '${e}'`,xe.ERR_INVALID_KEY_NAME);if(t==null)throw new g("PeerId is required",xe.ERR_MISSING_PRIVATE_KEY);if(t.privateKey==null)throw new g("PeerId.privKey is required",xe.ERR_MISSING_PRIVATE_KEY);let n=await mr(t.privateKey),o=hn(e);if(await this.components.datastore.has(o))throw await Pe(),new g(`Key '${e}' already exists`,xe.ERR_KEY_ALREADY_EXISTS);let i=Is.get(this);if(i==null)throw new g("dek missing",xe.ERR_INVALID_PARAMETERS);let a=i.dek,c=await n.export(a),l={name:e,id:t.toString()},d=this.components.datastore.batch();return d.put(o,L(c)),d.put(Mo(e),L(JSON.stringify(l))),await d.commit(),l}catch(n){throw await Pe(),n}}async getPrivateKey(e){if(!Wn(e))throw await Pe(),new g(`Invalid key name '${e}'`,xe.ERR_INVALID_KEY_NAME);try{let t=hn(e),n=await this.components.datastore.get(t);return B(n)}catch(t){throw await Pe(),this.log.error(t),new g(`Key '${e}' does not exist.`,xe.ERR_KEY_NOT_FOUND)}}async rotateKeychainPass(e,t){if(typeof e!="string")throw await Pe(),new g(`Invalid old pass type '${typeof e}'`,xe.ERR_INVALID_OLD_PASS_TYPE);if(typeof t!="string")throw await Pe(),new g(`Invalid new pass type '${typeof t}'`,xe.ERR_INVALID_NEW_PASS_TYPE);if(t.length<20)throw await Pe(),new g(`Invalid pass length ${t.length}`,xe.ERR_INVALID_PASS_LENGTH);this.log("recreating keychain");let n=Is.get(this);if(n==null)throw new g("dek missing",xe.ERR_INVALID_PARAMETERS);let o=n.dek;this.init.pass=t;let s=t!=null&&this.init.dek?.salt!=null?lc(t,this.init.dek.salt,this.init.dek?.iterationCount,this.init.dek?.keyLength,this.init.dek?.hash):"";Is.set(this,{dek:s});let i=await this.listKeys();for(let a of i){let c=await this.components.datastore.get(hn(a.name)),l=B(c),d=await di(l,o),u=s.toString(),f=await d.export(u),m=this.components.datastore.batch(),h={name:a.name,id:a.id};m.put(hn(a.name),L(f)),m.put(Mo(a.name),L(JSON.stringify(h))),await m.commit()}this.log("keychain reconstructed")}};function ud(r={}){return e=>new ld(e,r)}var Fi=class{memoryStorage;points;duration;blockDuration;execEvenly;execEvenlyMinDelayMs;keyPrefix;constructor(e={}){this.points=e.points??4,this.duration=e.duration??1,this.blockDuration=e.blockDuration??0,this.execEvenly=e.execEvenly??!1,this.execEvenlyMinDelayMs=e.execEvenlyMinDelayMs??this.duration*1e3/this.points,this.keyPrefix=e.keyPrefix??"rlflx",this.memoryStorage=new bp}async consume(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,t,s);if(i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i.consumedPoints>this.points)throw this.blockDuration>0&&i.consumedPoints<=this.points+t&&(i=this.memoryStorage.set(o,i.consumedPoints,this.blockDuration)),new g("Rate limit exceeded","ERR_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 S1(a)}return i}penalty(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,t,s);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}reward(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,-t,s);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}block(e,t){let n=t*1e3,o=this.points+1;return this.memoryStorage.set(this.getKey(e),o,t),{remainingPoints:0,msBeforeNext:n===0?-1:n,consumedPoints:o,isFirstInDuration:!1}}set(e,t,n=0){let o=(n>=0?n:this.duration)*1e3;return this.memoryStorage.set(this.getKey(e),t,n),{remainingPoints:0,msBeforeNext:o===0?-1:o,consumedPoints:t,isFirstInDuration:!1}}get(e){let t=this.memoryStorage.get(this.getKey(e));return t!=null&&(t.remainingPoints=Math.max(this.points-t.consumedPoints,0)),t}delete(e){this.memoryStorage.delete(this.getKey(e))}_getKeySecDuration(e){return e?.customDuration!=null&&e.customDuration>=0?e.customDuration:this.duration}getKey(e){return this.keyPrefix.length>0?`${this.keyPrefix}:${e}`:e}parseKey(e){return e.substring(this.keyPrefix.length)}},bp=class{storage;constructor(){this.storage=new Map}incrby(e,t,n){let o=this.storage.get(e);if(o!=null){let s=o.expiresAt!=null?o.expiresAt.getTime()-new Date().getTime():-1;return o.expiresAt==null||s>0?(o.value+=t,{remainingPoints:0,msBeforeNext:s,consumedPoints:o.value,isFirstInDuration:!1}):this.set(e,t,n)}return this.set(e,t,n)}set(e,t,n){let o=n*1e3,s=this.storage.get(e);s!=null&&clearTimeout(s.timeoutId);let i={value:t,expiresAt:o>0?new Date(Date.now()+o):void 0};return this.storage.set(e,i),o>0&&(i.timeoutId=setTimeout(()=>{this.storage.delete(e)},o),i.timeoutId.unref!=null&&i.timeoutId.unref()),{remainingPoints:0,msBeforeNext:o===0?-1:o,consumedPoints:i.value,isFirstInDuration:!0}}get(e){let t=this.storage.get(e);if(t!=null)return{remainingPoints:0,msBeforeNext:t.expiresAt!=null?t.expiresAt.getTime()-new Date().getTime():-1,consumedPoints:t.value,isFirstInDuration:!1}}delete(e){let t=this.storage.get(e);return t!=null?(t.timeoutId!=null&&clearTimeout(t.timeoutId),this.storage.delete(e),!0):!1}};var be;(function(r){r[r.NEW_STREAM=0]="NEW_STREAM",r[r.MESSAGE_RECEIVER=1]="MESSAGE_RECEIVER",r[r.MESSAGE_INITIATOR=2]="MESSAGE_INITIATOR",r[r.CLOSE_RECEIVER=3]="CLOSE_RECEIVER",r[r.CLOSE_INITIATOR=4]="CLOSE_INITIATOR",r[r.RESET_RECEIVER=5]="RESET_RECEIVER",r[r.RESET_INITIATOR=6]="RESET_INITIATOR"})(be||(be={}));var hc=Object.freeze({0:"NEW_STREAM",1:"MESSAGE_RECEIVER",2:"MESSAGE_INITIATOR",3:"CLOSE_RECEIVER",4:"CLOSE_INITIATOR",5:"RESET_RECEIVER",6:"RESET_INITIATOR"}),Ep=Object.freeze({NEW_STREAM:be.NEW_STREAM,MESSAGE:be.MESSAGE_INITIATOR,CLOSE:be.CLOSE_INITIATOR,RESET:be.RESET_INITIATOR}),zy=Object.freeze({MESSAGE:be.MESSAGE_RECEIVER,CLOSE:be.CLOSE_RECEIVER,RESET:be.RESET_RECEIVER});var xp=1<<20,UT=4<<20,dd=class{_buffer;_headerInfo;_maxMessageSize;_maxUnprocessedMessageQueueSize;constructor(e=xp,t=UT){this._buffer=new de,this._headerInfo=null,this._maxMessageSize=e,this._maxUnprocessedMessageQueueSize=t}write(e){if(e==null||e.length===0)return[];if(this._buffer.append(e),this._buffer.byteLength>this._maxUnprocessedMessageQueueSize)throw Object.assign(new Error("unprocessed message queue size too large!"),{code:"ERR_MSG_QUEUE_TOO_BIG"});let t=[];for(;this._buffer.length!==0;){if(this._headerInfo==null)try{this._headerInfo=this._decodeHeader(this._buffer)}catch(l){if(l.code==="ERR_MSG_TOO_BIG")throw l;break}let{id:n,type:o,length:s,offset:i}=this._headerInfo;if(this._buffer.length-i<s)break;let c={id:n,type:o};(o===be.NEW_STREAM||o===be.MESSAGE_INITIATOR||o===be.MESSAGE_RECEIVER)&&(c.data=this._buffer.sublist(i,i+s)),t.push(c),this._buffer.consume(i+s),this._headerInfo=null}return t}_decodeHeader(e){let{value:t,offset:n}=Yy(e),{value:o,offset:s}=Yy(e,n),i=t&7;if(hc[i]==null)throw new Error(`Invalid type received: ${i}`);if(o>this._maxMessageSize)throw Object.assign(new Error("message size too large!"),{code:"ERR_MSG_TOO_BIG"});return{id:t>>3,type:i,offset:n+s,length:o}}},FT=128,Gy=127;function Yy(r,e=0){let t=0,n=0,o=e,s,i=r.length;do{if(o>=i||n>49)throw e=0,new RangeError("Could not decode varint");s=r.get(o++),t+=n<28?(s&Gy)<<n:(s&Gy)*Math.pow(2,n),n+=7}while(s>=FT);return e=o-e,{value:t,offset:e}}var vp=10*1024,_p=class{_pool;_poolOffset;constructor(){this._pool=qe(vp),this._poolOffset=0}write(e,t){let n=this._pool,o=this._poolOffset;ze(e.id<<3|e.type,n,o),o+=Fe(e.id<<3|e.type),(e.type===be.NEW_STREAM||e.type===be.MESSAGE_INITIATOR||e.type===be.MESSAGE_RECEIVER)&&e.data!=null?(ze(e.data.length,n,o),o+=Fe(e.data.length)):(ze(0,n,o),o+=Fe(0));let s=n.subarray(this._poolOffset,o);vp-o<100?(this._pool=qe(vp),this._poolOffset=0):this._poolOffset=o,t.append(s),(e.type===be.NEW_STREAM||e.type===be.MESSAGE_INITIATOR||e.type===be.MESSAGE_RECEIVER)&&e.data!=null&&t.append(e.data)}},VT=new _p;async function*Xy(r){for await(let e of r){let t=new de;VT.write(e,t),yield t}}var Sp=class extends ko{name;streamId;send;types;maxDataSize;constructor(e){super(e),this.types=e.direction==="outbound"?Ep:zy,this.send=e.send,this.name=e.name,this.streamId=e.streamId,this.maxDataSize=e.maxDataSize}async sendNewStream(){await this.send({id:this.streamId,type:Ep.NEW_STREAM,data:new de(L(this.name))})}async sendData(e){for(e=e.sublist();e.byteLength>0;){let t=Math.min(e.byteLength,this.maxDataSize);await this.send({id:this.streamId,type:this.types.MESSAGE,data:e.sublist(0,t)}),e.consume(t)}}async sendReset(){await this.send({id:this.streamId,type:this.types.RESET})}async sendCloseWrite(){await this.send({id:this.streamId,type:this.types.CLOSE})}async sendCloseRead(){}};function Qy(r){let{id:e,name:t,send:n,onEnd:o,type:s="initiator",maxMsgSize:i=xp}=r;return new Sp({id:s==="initiator"?`i${e}`:`r${e}`,streamId:e,name:`${t??e}`,direction:s==="initiator"?"outbound":"inbound",maxDataSize:i,onEnd:o,send:n,log:r.logger.forComponent(`libp2p:mplex:stream:${s}:${e}`)})}var KT=1024,$T=1024,HT=1024*1024*4,qT=5,WT=500;function jy(r){let e={...r,type:`${hc[r.type]} (${r.type})`};return r.type===be.NEW_STREAM&&(e.data=B(r.data instanceof Uint8Array?r.data:r.data.subarray())),(r.type===be.MESSAGE_INITIATOR||r.type===be.MESSAGE_RECEIVER)&&(e.data=B(r.data instanceof Uint8Array?r.data:r.data.subarray(),"base16")),e}var fd=class{protocol="/mplex/6.7.0";sink;source;log;_streamId;_streams;_init;_source;closeController;rateLimiter;closeTimeout;logger;constructor(e,t){t=t??{},this.log=e.logger.forComponent("libp2p:mplex"),this.logger=e.logger,this._streamId=0,this._streams={initiators:new Map,receivers:new Map},this._init=t,this.closeTimeout=t.closeTimeout??WT,this.sink=this._createSink(),this._source=nt({objectMode:!0,onEnd:()=>{for(let n of this._streams.initiators.values())n.destroy();for(let n of this._streams.receivers.values())n.destroy()}}),this.source=Ge(this._source,n=>Xy(n)),this.closeController=new AbortController,this.rateLimiter=new Fi({points:t.disconnectThreshold??qT,duration:1})}get streams(){let e=[];for(let t of this._streams.initiators.values())e.push(t);for(let t of this._streams.receivers.values())e.push(t);return e}newStream(e){if(this.closeController.signal.aborted)throw new Error("Muxer already closed");let t=this._streamId++;e=e==null?t.toString():e.toString();let n=this._streams.initiators;return this._newStream({id:t,name:e,type:"initiator",registry:n})}async close(e){if(this.closeController.signal.aborted)return;let t=e?.signal??AbortSignal.timeout(this.closeTimeout);try{await Promise.all(this.streams.map(async n=>n.close({signal:t}))),this._source.end(),await this._source.onEmpty({signal:t}),this.closeController.abort()}catch(n){this.abort(n)}}abort(e){this.closeController.signal.aborted||(this.streams.forEach(t=>{t.abort(e)}),this.closeController.abort(e))}_newReceiverStream(e){let{id:t,name:n}=e,o=this._streams.receivers;return this._newStream({id:t,name:n,type:"receiver",registry:o})}_newStream(e){let{id:t,name:n,type:o,registry:s}=e;if(this.log("new %s stream %s",o,t),o==="initiator"&&this._streams.initiators.size===(this._init.maxOutboundStreams??$T))throw new g("Too many outbound streams open","ERR_TOO_MANY_OUTBOUND_STREAMS");if(s.has(t))throw new Error(`${o} stream ${t} already exists!`);let c=Qy({id:t,name:n,send:async l=>{this.log.enabled&&this.log.trace("%s stream %s send",o,t,jy(l)),this._source.push(l)},type:o,onEnd:()=>{this.log("%s stream with id %s and protocol %s ended",o,t,c.protocol),s.delete(t),this._init.onStreamEnd!=null&&this._init.onStreamEnd(c)},maxMsgSize:this._init.maxMsgSize,logger:this.logger});return s.set(t,c),c}_createSink(){return async t=>{let n=()=>{f1(t,this.log)};this.closeController.signal.addEventListener("abort",n);try{let o=new dd(this._init.maxMsgSize,this._init.maxUnprocessedMessageQueueSize);for await(let s of t)for(let i of o.write(s))await this._handleIncoming(i);this._source.end()}catch(o){this.log("error in sink",o),this._source.end(o)}finally{this.closeController.signal.removeEventListener("abort",n)}}}async _handleIncoming(e){let{id:t,type:n}=e;if(this.log.enabled&&this.log.trace("incoming message",jy(e)),e.type===be.NEW_STREAM){if(this._streams.receivers.size===(this._init.maxInboundStreams??KT)){this.log("too many inbound streams open"),this._source.push({id:t,type:be.RESET_RECEIVER});try{await this.rateLimiter.consume("new-stream",1)}catch{this.log("rate limit hit when opening too many new streams over the inbound stream limit - closing remote connection"),this.abort(new Error("Too many open streams"));return}return}let a=this._newReceiverStream({id:t,name:B(e.data instanceof Uint8Array?e.data:e.data.subarray())});this._init.onIncomingStream!=null&&this._init.onIncomingStream(a);return}let s=((n&1)===1?this._streams.initiators:this._streams.receivers).get(t);if(s==null){this.log("missing stream %s for message type %s",t,hc[n]);try{await this.rateLimiter.consume("missing-stream",1)}catch{this.log("rate limit hit when receiving messages for streams that do not exist - closing remote connection"),this.abort(new Error("Too many messages for missing streams"));return}return}let i=this._init.maxStreamBufferSize??HT;try{switch(n){case be.MESSAGE_INITIATOR:case be.MESSAGE_RECEIVER:if(s.sourceReadableLength()>i)throw this._source.push({id:e.id,type:n===be.MESSAGE_INITIATOR?be.RESET_RECEIVER:be.RESET_INITIATOR}),new g("Input buffer full - increase Mplex maxBufferSize to accommodate slow consumers","ERR_STREAM_INPUT_BUFFER_FULL");s.sourcePush(e.data);break;case be.CLOSE_INITIATOR:case be.CLOSE_RECEIVER:s.remoteCloseWrite();break;case be.RESET_INITIATOR:case be.RESET_RECEIVER:s.reset();break;default:this.log("unknown message type %s",n)}}catch(a){this.log.error("error while processing message",a),s.abort(a)}}};var Rp=class{protocol="/mplex/6.7.0";_init;components;constructor(e,t={}){this.components=e,this._init=t}createStreamMuxer(e={}){return new fd(this.components,{...e,...this._init})}};function Zy(r={}){return e=>new Rp(e,r)}var Jy="1.0.0",ew="ping",tw="ipfs";var Ap="ERR_WRONG_PING_ACK";var hd=class{protocol;components;started;timeout;maxInboundStreams;maxOutboundStreams;runOnTransientConnection;log;constructor(e,t={}){this.components=e,this.log=e.logger.forComponent("libp2p:ping"),this.started=!1,this.protocol=`/${t.protocolPrefix??tw}/${ew}/${Jy}`,this.timeout=t.timeout??1e4,this.maxInboundStreams=t.maxInboundStreams??2,this.maxOutboundStreams=t.maxOutboundStreams??1,this.runOnTransientConnection=t.runOnTransientConnection??!0,this.handleMessage=this.handleMessage.bind(this)}async start(){await this.components.registrar.handle(this.protocol,this.handleMessage,{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:this.runOnTransientConnection}),this.started=!0}async stop(){await this.components.registrar.unhandle(this.protocol),this.started=!1}isStarted(){return this.started}handleMessage(e){this.log("incoming ping from %p",e.connection.remotePeer);let{stream:t}=e,n=Date.now();Ge(t,t).catch(o=>{this.log.error("incoming ping from %p failed with error",e.connection.remotePeer,o)}).finally(()=>{let o=Date.now()-n;this.log("incoming ping from %p complete in %dms",e.connection.remotePeer,o)})}async ping(e,t={}){this.log("pinging %p",e);let n=Date.now(),o=Vt(32),s=await this.components.connectionManager.openConnection(e,t),i,a=()=>{};if(t.signal==null){let c=AbortSignal.timeout(this.timeout);t={...t,signal:c}}try{i=await s.newStream(this.protocol,{...t,runOnTransientConnection:this.runOnTransientConnection}),a=()=>{i?.abort(new g("ping timeout",yn))},t.signal?.addEventListener("abort",a,{once:!0});let c=await Ge([o],i,async d=>gs(d)),l=Date.now()-n;if(c==null)throw new g(`Did not receive a ping ack after ${l}ms`,Ap);if(!j(o,c.subarray()))throw new g(`Received wrong ping ack after ${l}ms`,Ap);return this.log("ping %p complete in %dms",s.remotePeer,l),l}catch(c){throw this.log.error("error while pinging %p",s.remotePeer,c),i?.abort(c),c}finally{t.signal?.removeEventListener("abort",a),i!=null&&await i.close()}}};function rw(r={}){return e=>new hd(e,r)}var or;(function(r){r.ERR_ALREADY_ABORTED="ERR_ALREADY_ABORTED",r.ERR_DATA_CHANNEL="ERR_DATA_CHANNEL",r.ERR_CONNECTION_CLOSED="ERR_CONNECTION_CLOSED",r.ERR_HASH_NOT_SUPPORTED="ERR_HASH_NOT_SUPPORTED",r.ERR_INVALID_MULTIADDR="ERR_INVALID_MULTIADDR",r.ERR_INVALID_FINGERPRINT="ERR_INVALID_FINGERPRINT",r.ERR_INVALID_PARAMETERS="ERR_INVALID_PARAMETERS",r.ERR_NOT_IMPLEMENTED="ERR_NOT_IMPLEMENTED",r.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS",r.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS"})(or||(or={}));var Uo=class extends g{constructor(e,t){super(`WebRTC transport error: ${e}`,t??""),this.name="WebRTCTransportError"}};var Ip=class extends Uo{constructor(e,t){super(`[stream: ${e}] data channel error: ${t}`,or.ERR_DATA_CHANNEL),this.name="WebRTC/DataChannelError"}};function Op(r,e){return new Ip(r,e)}var Dp=class extends Uo{constructor(e){super(`There was a problem with the Multiaddr which was passed in: ${e}`,or.ERR_INVALID_MULTIADDR),this.name="WebRTC/InappropriateMultiaddrError"}};function pd(r){return new Dp(r)}var Tp=class extends Uo{constructor(e){super(`There was a problem with a provided argument: ${e}`,or.ERR_INVALID_PARAMETERS),this.name="WebRTC/InvalidArgumentError"}};function pc(r){return new Tp(r)}var kp=class extends Uo{constructor(e,t){super(`Invalid fingerprint "${e}" within ${t}`,or.ERR_INVALID_FINGERPRINT),this.name="WebRTC/InvalidFingerprintError"}};function Pp(r,e){return new kp(r,e)}var Cp=class extends Uo{constructor(e){super(`A method (${e}) was called though it has been intentionally left unimplemented.`,or.ERR_NOT_IMPLEMENTED),this.name="WebRTC/UnimplementedError"}};function nw(r){return new Cp(r)}var Np=class extends Uo{constructor(e){super(`unsupported hash algorithm: ${e}`,or.ERR_HASH_NOT_SUPPORTED),this.name="WebRTC/UnsupportedHashAlgorithmError"}};function ow(r){return new Np(r)}var sw=function(r,e,t){if(t||arguments.length===2)for(var n=0,o=e.length,s;n<o;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return r.concat(s||Array.prototype.slice.call(e))},QT=function(){function r(e,t,n){this.name=e,this.version=t,this.os=n,this.type="browser"}return r}();var jT=function(){function r(e){this.version=e,this.type="node",this.name="node",this.os=process.platform}return r}();var ZT=function(){function r(e,t,n,o){this.name=e,this.version=t,this.os=n,this.bot=o,this.type="bot-device"}return r}();var JT=function(){function r(){this.type="bot",this.bot=!0,this.name="bot",this.version=null,this.os=null}return r}();var ek=function(){function r(){this.type="react-native",this.name="react-native",this.version=null,this.os=null}return r}();var tk=/alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/,rk=/(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\ Jeeves\/Teoma|ia_archiver)/,iw=3,nk=[["aol",/AOLShield\/([0-9\._]+)/],["edge",/Edge\/([0-9\._]+)/],["edge-ios",/EdgiOS\/([0-9\._]+)/],["yandexbrowser",/YaBrowser\/([0-9\._]+)/],["kakaotalk",/KAKAOTALK\s([0-9\.]+)/],["samsung",/SamsungBrowser\/([0-9\.]+)/],["silk",/\bSilk\/([0-9._-]+)\b/],["miui",/MiuiBrowser\/([0-9\.]+)$/],["beaker",/BeakerBrowser\/([0-9\.]+)/],["edge-chromium",/EdgA?\/([0-9\.]+)/],["chromium-webview",/(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["chrome",/(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["phantomjs",/PhantomJS\/([0-9\.]+)(:?\s|$)/],["crios",/CriOS\/([0-9\.]+)(:?\s|$)/],["firefox",/Firefox\/([0-9\.]+)(?:\s|$)/],["fxios",/FxiOS\/([0-9\.]+)/],["opera-mini",/Opera Mini.*Version\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)(?:\s|$)/],["opera",/OPR\/([0-9\.]+)(:?\s|$)/],["pie",/^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/],["pie",/^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/],["netfront",/^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/],["ie",/Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/],["ie",/MSIE\s([0-9\.]+);.*Trident\/[4-7].0/],["ie",/MSIE\s(7\.0)/],["bb10",/BB10;\sTouch.*Version\/([0-9\.]+)/],["android",/Android\s([0-9\.]+)/],["ios",/Version\/([0-9\._]+).*Mobile.*Safari.*/],["safari",/Version\/([0-9\._]+).*Safari/],["facebook",/FB[AS]V\/([0-9\.]+)/],["instagram",/Instagram\s([0-9\.]+)/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Mobile/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Gecko\)$/],["curl",/^curl\/([0-9\.]+)$/],["searchbot",tk]],aw=[["iOS",/iP(hone|od|ad)/],["Android OS",/Android/],["BlackBerry OS",/BlackBerry|BB10/],["Windows Mobile",/IEMobile/],["Amazon OS",/Kindle/],["Windows 3.11",/Win16/],["Windows 95",/(Windows 95)|(Win95)|(Windows_95)/],["Windows 98",/(Windows 98)|(Win98)/],["Windows 2000",/(Windows NT 5.0)|(Windows 2000)/],["Windows XP",/(Windows NT 5.1)|(Windows XP)/],["Windows Server 2003",/(Windows NT 5.2)/],["Windows Vista",/(Windows NT 6.0)/],["Windows 7",/(Windows NT 6.1)/],["Windows 8",/(Windows NT 6.2)/],["Windows 8.1",/(Windows NT 6.3)/],["Windows 10",/(Windows NT 10.0)/],["Windows ME",/Windows ME/],["Windows CE",/Windows CE|WinCE|Microsoft Pocket Internet Explorer/],["Open BSD",/OpenBSD/],["Sun OS",/SunOS/],["Chrome OS",/CrOS/],["Linux",/(Linux)|(X11)/],["Mac OS",/(Mac_PowerPC)|(Macintosh)/],["QNX",/QNX/],["BeOS",/BeOS/],["OS/2",/OS\/2/]];function lw(r){return r?cw(r):typeof document>"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"?new ek:typeof navigator<"u"?cw(navigator.userAgent):ik()}function ok(r){return r!==""&&nk.reduce(function(e,t){var n=t[0],o=t[1];if(e)return e;var s=o.exec(r);return!!s&&[n,s]},!1)}function cw(r){var e=ok(r);if(!e)return null;var t=e[0],n=e[1];if(t==="searchbot")return new JT;var o=n[1]&&n[1].split(".").join("_").split("_").slice(0,3);o?o.length<iw&&(o=sw(sw([],o,!0),ak(iw-o.length),!0)):o=[];var s=o.join("."),i=sk(r),a=rk.exec(r);return a&&a[1]?new ZT(t,s,i,a[1]):new QT(t,s,i)}function sk(r){for(var e=0,t=aw.length;e<t;e++){var n=aw[e],o=n[0],s=n[1],i=s.exec(r);if(i)return o}return null}function ik(){var r=typeof process<"u"&&process.version;return r?new jT(process.version.slice(1)):null}function ak(r){for(var e=[],t=0;t<r;t++)e.push("0");return e}var uw=lw(),mc=uw!=null&&uw.name==="firefox",md=async function*(){},gd=async r=>{},ck=30*1e3;function dw(r,e,t=ck,n){r.readyState==="open"&&Promise.resolve().then(async()=>{if(r.bufferedAmount>0){n.log("%s drain channel with %d buffered bytes",e,r.bufferedAmount);let o=se(),s=!1;r.bufferedAmountLowThreshold=0;let i=()=>{s||(n.log("%s drain channel closed before drain",e),o.resolve())};r.addEventListener("close",i,{once:!0}),r.addEventListener("bufferedamountlow",()=>{s=!0,r.removeEventListener("close",i),o.resolve()}),await Wr(o.promise,{milliseconds:t})}}).then(async()=>{r.readyState==="open"&&r.close()}).catch(o=>{n.log.error("error closing outbound stream",o)})}var Ts=class{log;peerConnection;remoteAddr;timeline;metrics;source=md();sink=gd;constructor(e,t){this.log=e.logger.forComponent("libp2p:webrtc:maconn"),this.remoteAddr=t.remoteAddr,this.timeline=t.timeline,this.peerConnection=t.peerConnection;let n=this.peerConnection.connectionState;this.peerConnection.onconnectionstatechange=()=>{this.log.trace("peer connection state change",this.peerConnection.connectionState,"initial state",n),(this.peerConnection.connectionState==="disconnected"||this.peerConnection.connectionState==="failed"||this.peerConnection.connectionState==="closed")&&(this.timeline.close=Date.now())}}async close(e){this.log.trace("closing connection"),this.peerConnection.close(),this.timeline.close=Date.now(),this.metrics?.increment({close:!0})}abort(e){this.log.error("closing connection due to error",e),this.peerConnection.close(),this.timeline.close=Date.now(),this.metrics?.increment({abort:!0})}};var qt;(function(r){let e;(function(o){o.FIN="FIN",o.STOP_SENDING="STOP_SENDING",o.RESET="RESET",o.FIN_ACK="FIN_ACK"})(e=r.Flag||(r.Flag={}));let t;(function(o){o[o.FIN=0]="FIN",o[o.STOP_SENDING=1]="STOP_SENDING",o[o.RESET=2]="RESET",o[o.FIN_ACK=3]="FIN_ACK"})(t||(t={})),function(o){o.codec=()=>Ve(t)}(e=r.Flag||(r.Flag={}));let n;r.codec=()=>(n==null&&(n=te((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.flag!=null&&(s.uint32(8),r.Flag.codec().encode(o.flag,s)),o.message!=null&&(s.uint32(18),s.bytes(o.message)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.flag=r.Flag.codec().decode(o);break;case 2:i.message=o.bytes();break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>ee(o,r.codec()),r.decode=o=>J(o,r.codec())})(qt||(qt={}));var lk=16*1024*1024,uk=30*1e3,dk=5,fk=2,hk=16*1024,pk=5e3,mk=5e3,Lp=class extends ko{channel;incomingData;maxBufferedAmount;bufferedAmountLowEventTimeout;maxMessageSize;receiveFinAck;finAckTimeout;openTimeout;constructor(e){let t=e.onEnd;switch(e.onEnd=o=>{this.log.trace("readable and writeable ends closed",this.status),Promise.resolve(async()=>{if(!(this.timeline.abort!=null||this.timeline.reset!==null))try{await Wr(this.receiveFinAck.promise,{milliseconds:this.finAckTimeout})}catch(s){this.log.error("error receiving FIN_ACK",s)}}).then(()=>{this.incomingData.end(),t?.(o)}).catch(s=>{this.log.error("error ending stream",s)})},super(e),this.channel=e.channel,this.channel.binaryType="arraybuffer",this.incomingData=nt(),this.bufferedAmountLowEventTimeout=e.bufferedAmountLowEventTimeout??uk,this.maxBufferedAmount=e.maxBufferedAmount??lk,this.maxMessageSize=(e.maxMessageSize??hk)-dk-fk,this.receiveFinAck=se(),this.finAckTimeout=e.closeTimeout??pk,this.openTimeout=e.openTimeout??mk,this.channel.readyState){case"open":this.timeline.open=new Date().getTime();break;case"closed":case"closing":(this.timeline.close===void 0||this.timeline.close===0)&&(this.timeline.close=Date.now());break;case"connecting":break;default:throw this.log.error("unknown datachannel state %s",this.channel.readyState),new g("Unknown datachannel state","ERR_INVALID_STATE")}this.channel.onopen=o=>{this.timeline.open=new Date().getTime()},this.channel.onclose=o=>{this.receiveFinAck.resolve(),this.close().catch(s=>{this.log.error("error closing stream after channel closed",s)})},this.channel.onerror=o=>{let s=o.error;this.abort(s)},this.channel.onmessage=async o=>{let{data:s}=o;s===null||s.byteLength===0||this.incomingData.push(new Uint8Array(s,0,s.byteLength))};let n=this;Promise.resolve().then(async()=>{for await(let o of Ft(this.incomingData)){let s=n.processIncomingProtobuf(o);s!=null&&n.sourcePush(new de(s))}}).catch(o=>{this.log.error("error processing incoming data channel messages",o)})}sendNewStream(){}async _sendMessage(e,t=!0){if(t&&this.channel.bufferedAmount>this.maxBufferedAmount)try{this.log('channel buffer is %d, wait for "bufferedamountlow" event',this.channel.bufferedAmount),await dc(this.channel,"bufferedamountlow",{timeout:this.bufferedAmountLowEventTimeout})}catch(n){throw n instanceof So?new g(`Timed out waiting for DataChannel buffer to clear after ${this.bufferedAmountLowEventTimeout}ms`,"ERR_BUFFER_CLEAR_TIMEOUT"):n}if(this.channel.readyState==="closed"||this.channel.readyState==="closing")throw new g(`Invalid datachannel state - ${this.channel.readyState}`,"ERR_INVALID_STATE");this.channel.readyState!=="open"&&(this.log('channel state is "%s" and not "open", waiting for "open" event before sending data',this.channel.readyState),await dc(this.channel,"open",{timeout:this.openTimeout}),this.log('channel state is now "%s", sending data',this.channel.readyState)),this.channel.send(e.subarray())}async sendData(e){for(e=e.sublist();e.byteLength>0;){let t=Math.min(e.byteLength,this.maxMessageSize),n=e.subarray(0,t),o=qt.encode({message:n}),s=Ut.single(o);await this._sendMessage(s),e.consume(t)}}async sendReset(){await this._sendFlag(qt.Flag.RESET)}async sendCloseWrite(e){if(await this._sendFlag(qt.Flag.FIN)){this.log.trace("awaiting FIN_ACK");try{await Lt(this.receiveFinAck.promise,e?.signal,{errorMessage:"sending close-write was aborted before FIN_ACK was received",errorCode:"ERR_FIN_ACK_NOT_RECEIVED"})}catch(n){this.log.error("failed to await FIN_ACK",n)}}else this.log.trace("sending FIN failed, not awaiting FIN_ACK");this.receiveFinAck.resolve()}async sendCloseRead(){await this._sendFlag(qt.Flag.STOP_SENDING)}processIncomingProtobuf(e){let t=qt.decode(e);if(t.flag!==void 0&&(this.log.trace('incoming flag %s, write status "%s", read status "%s"',t.flag,this.writeStatus,this.readStatus),t.flag===qt.Flag.FIN&&(this.remoteCloseWrite(),this.log.trace("sending FIN_ACK"),this._sendFlag(qt.Flag.FIN_ACK).catch(n=>{this.log.error("error sending FIN_ACK immediately",n)})),t.flag===qt.Flag.RESET&&this.reset(),t.flag===qt.Flag.STOP_SENDING&&this.remoteCloseRead(),t.flag===qt.Flag.FIN_ACK&&(this.log.trace("received FIN_ACK"),this.receiveFinAck.resolve())),this.readStatus==="ready")return t.message}async _sendFlag(e){if(this.channel.readyState!=="open")return this.log.trace('not sending flag %s because channel is "%s" and not "open"',this.channel.readyState,e.toString()),!1;this.log.trace("sending flag %s",e.toString());let t=qt.encode({flag:e}),n=Ut.single(t);try{return await this._sendMessage(n,!1),!0}catch(o){this.log.error("could not send flag %s",e.toString(),o)}return!1}};function Vi(r){let{channel:e,direction:t}=r;return new Lp({id:t==="inbound"?`i${e.id}`:`r${e.id}`,log:r.logger.forComponent(`libp2p:webrtc:stream:${t}:${e.id}`),...r})}var fw="/webrtc",ks=class{protocol;peerConnection;bufferedStreams=[];metrics;dataChannelOptions;components;log;constructor(e,t){this.components=e,this.peerConnection=t.peerConnection,this.metrics=t.metrics,this.protocol=t.protocol??fw,this.dataChannelOptions=t.dataChannelOptions??{},this.log=e.logger.forComponent("libp2p:webrtc:datachannelmuxerfactory"),this.peerConnection.ondatachannel=({channel:n})=>{if(this.log.trace('incoming early datachannel with channel id %d and label "%s"',n.id),n.label==="init"){this.log.trace("closing early init channel"),n.close();return}let o={},s=Vi({channel:n,direction:"inbound",onEnd:i=>{o.onEnd(i)},logger:e.logger,...this.dataChannelOptions});o.stream=s,o.channel=n,o.onEnd=()=>{this.bufferedStreams=this.bufferedStreams.filter(i=>i.stream.id!==s.id)},this.bufferedStreams.push(o)}}createStreamMuxer(e){return new Bp(this.components,{...e,peerConnection:this.peerConnection,dataChannelOptions:this.dataChannelOptions,metrics:this.metrics,streams:this.bufferedStreams,protocol:this.protocol})}},Bp=class{init;streams;protocol;log;peerConnection;dataChannelOptions;metrics;logger;constructor(e,t){this.init=t,this.log=e.logger.forComponent("libp2p:webrtc:muxer"),this.logger=e.logger,this.streams=t.streams.map(n=>n.stream),this.peerConnection=t.peerConnection,this.protocol=t.protocol??fw,this.metrics=t.metrics,this.dataChannelOptions=t.dataChannelOptions??{},this.peerConnection.ondatachannel=({channel:n})=>{if(this.log.trace("incoming datachannel with channel id %d",n.id),n.label==="init"){this.log.trace("closing init channel"),n.close();return}let o=Vi({channel:n,direction:"inbound",onEnd:()=>{this.log("incoming channel %s ended with state %s",n.id,n.readyState),this.#e(o,n)},logger:this.logger,...this.dataChannelOptions});this.streams.push(o),this.metrics?.increment({incoming_stream:!0}),t?.onIncomingStream?.(o)},this.init.streams.length>0&&queueMicrotask(()=>{this.init.streams.forEach(n=>{n.onEnd=()=>{this.log("incoming early channel %s ended with state %s",n.channel.id,n.channel.readyState),this.#e(n.stream,n.channel)},this.metrics?.increment({incoming_stream:!0}),this.init?.onIncomingStream?.(n.stream)})})}#e(e,t){this.log.trace("stream %s %s %s onEnd",e.direction,e.id,e.protocol),dw(t,`${e.direction} ${e.id} ${e.protocol}`,this.dataChannelOptions.drainTimeout,{log:this.log}),this.streams=this.streams.filter(n=>n.id!==e.id),this.metrics?.increment({stream_end:!0}),this.init?.onStreamEnd?.(e)}async close(e){try{await Promise.all(this.streams.map(async t=>t.close(e)))}catch(t){this.abort(t)}}abort(e){for(let t of this.streams)t.abort(e)}source=md();sink=gd;newStream(){let e=this.peerConnection.createDataChannel("");this.log.trace("opened outgoing datachannel with channel id %s",e.id);let t=Vi({channel:e,direction:"outbound",onEnd:()=>{this.log("outgoing channel %s ended with state %s",e.id,e.readyState),this.#e(t,e)},logger:this.logger,...this.dataChannelOptions});return this.streams.push(t),this.metrics?.increment({outgoing_stream:!0}),t}};var Ki=globalThis.RTCPeerConnection,yd=globalThis.RTCSessionDescription,hw=globalThis.RTCIceCandidate;var Wt;(function(r){let e;(function(o){o.SDP_OFFER="SDP_OFFER",o.SDP_ANSWER="SDP_ANSWER",o.ICE_CANDIDATE="ICE_CANDIDATE"})(e=r.Type||(r.Type={}));let t;(function(o){o[o.SDP_OFFER=0]="SDP_OFFER",o[o.SDP_ANSWER=1]="SDP_ANSWER",o[o.ICE_CANDIDATE=2]="ICE_CANDIDATE"})(t||(t={})),function(o){o.codec=()=>Ve(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=te((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.data!=null&&(s.uint32(18),s.string(o.data)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.type=r.Type.codec().decode(o);break;case 2:i.data=o.string();break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>ee(o,r.codec()),r.decode=o=>J(o,r.codec())})(Wt||(Wt={}));var wd=async(r,e,t)=>{try{let n=se();for(yk(r,n);;){let o=await Promise.race([n.promise,e.read({signal:t.signal})]);if(o==null)break;if(o.type!==Wt.Type.ICE_CANDIDATE)throw new g("ICE candidate message expected","ERR_NOT_ICE_CANDIDATE");let s=JSON.parse(o.data??"null");if(s===""||s===null){t.log.trace("end-of-candidates received");continue}let i=new hw(s);t.log.trace("%s received new ICE candidate",t.direction,i);try{await r.addIceCandidate(i)}catch(a){t.log.error("%s bad candidate received",t.direction,s,a)}}}catch(n){if(t.log.error("%s error parsing ICE candidate",t.direction,n),t.signal?.aborted===!0)throw n}};function gk(r){return mc?r.iceConnectionState:r.connectionState}function yk(r,e){r[mc?"oniceconnectionstatechange":"onconnectionstatechange"]=t=>{switch(gk(r)){case"connected":e.resolve();break;case"failed":case"disconnected":case"closed":e.reject(new g("RTCPeerConnection was closed","ERR_CONNECTION_CLOSED_BEFORE_CONNECTED"));break;default:break}}}async function pw({peerConnection:r,signal:e,metrics:t,multiaddr:n,connectionManager:o,transportManager:s,log:i}){let{baseAddr:a}=mw(n);t?.dialerEvents.increment({open:!0}),i.trace("dialing base address: %a",a);let c=a.getPeerId();if(c==null)throw new g("Relay peer was missing","ERR_INVALID_ADDRESS");let l=o.getConnections(ge(c)),d,u=!1;l.length===0?(d=await s.dial(a,{signal:e}),u=!0):d=l[0];try{let f=await d.newStream(bd,{signal:e,runOnTransientConnection:!0}),m=Qe(f).pb(Wt);try{let h=r.createDataChannel("init");r.onicecandidate=({candidate:E})=>{let b=JSON.stringify(E?.toJSON()??null);i.trace("initiator sending ICE candidate %s",b),m.write({type:Wt.Type.ICE_CANDIDATE,data:b},{signal:e}).catch(S=>{i.error("error sending ICE candidate",S)})},r.onicecandidateerror=E=>{i.error("initiator ICE candidate error",E)};let p=await r.createOffer().catch(E=>{throw i.error("could not execute createOffer",E),new g("Failed to set createOffer","ERR_SDP_HANDSHAKE_FAILED")});i.trace("initiator send SDP offer %s",p.sdp),await m.write({type:Wt.Type.SDP_OFFER,data:p.sdp},{signal:e}),await r.setLocalDescription(p).catch(E=>{throw i.error("could not execute setLocalDescription",E),new g("Failed to set localDescription","ERR_SDP_HANDSHAKE_FAILED")});let y=await m.read({signal:e});if(y.type!==Wt.Type.SDP_ANSWER)throw new g("Remote should send an SDP answer","ERR_SDP_HANDSHAKE_FAILED");i.trace("initiator receive SDP answer %s",y.data);let w=new yd({type:"answer",sdp:y.data});return await r.setRemoteDescription(w).catch(E=>{throw i.error("could not execute setRemoteDescription",E),new g("Failed to set remoteDescription","ERR_SDP_HANDSHAKE_FAILED")}),i.trace("initiator read candidates until connected"),await wd(r,m,{direction:"initiator",signal:e,log:i}),i.trace("initiator connected, closing init channel"),h.close(),i.trace("initiator closing signalling stream"),await m.unwrap().unwrap().close({signal:e}),i.trace("initiator connected to remote address %s",n),{remoteAddress:n}}catch(h){throw r.close(),f.abort(h),h}finally{r.onicecandidate=null,r.onicecandidateerror=null}}finally{if(u)try{await d.close({signal:e})}catch(f){d.abort(f)}}}var Ed=class extends Ce{peerId;transportManager;shutdownController;constructor(e,t){super(),this.peerId=e.peerId,this.transportManager=e.transportManager,this.shutdownController=t.shutdownController}async listen(){this.safeDispatchEvent("listening",{})}getAddrs(){return this.transportManager.getListeners().filter(e=>e!==this).map(e=>e.getAddrs().filter(t=>zr.matches(t)).map(t=>t.encapsulate(`/webrtc/p2p/${this.peerId}`))).flat()}async close(){this.shutdownController.abort(),this.safeDispatchEvent("close",{})}};async function gw({peerConnection:r,stream:e,signal:t,connection:n,log:o}){o.trace("new inbound signaling stream");let s=Qe(e).pb(Wt);try{r.onicecandidate=({candidate:d})=>{let u=JSON.stringify(d?.toJSON()??null);o.trace("recipient sending ICE candidate %s",u),s.write({type:Wt.Type.ICE_CANDIDATE,data:u},{signal:t}).catch(f=>{o.error("error sending ICE candidate",f)})};let a=await s.read({signal:t});if(a.type!==Wt.Type.SDP_OFFER)throw new g(`expected message type SDP_OFFER, received: ${a.type??"undefined"} `,"ERR_SDP_HANDSHAKE_FAILED");o.trace("recipient receive SDP offer %s",a.data);let c=new yd({type:"offer",sdp:a.data});await r.setRemoteDescription(c).catch(d=>{throw o.error("could not execute setRemoteDescription",d),new g("Failed to set remoteDescription","ERR_SDP_HANDSHAKE_FAILED")});let l=await r.createAnswer().catch(d=>{throw o.error("could not execute createAnswer",d),new g("Failed to create answer","ERR_SDP_HANDSHAKE_FAILED")});o.trace("recipient send SDP answer %s",l.sdp),await s.write({type:Wt.Type.SDP_ANSWER,data:l.sdp},{signal:t}),await r.setLocalDescription(l).catch(d=>{throw o.error("could not execute setLocalDescription",d),new g("Failed to set localDescription","ERR_SDP_HANDSHAKE_FAILED")}),o.trace("recipient read candidates until connected"),await wd(r,s,{direction:"recipient",signal:t,log:o})}catch(a){if(r.connectionState!=="connected")throw o.error("error while handling signaling stream from peer %a",n.remoteAddr,a),r.close(),a;o("error while handling signaling stream from peer %a, ignoring as the RTCPeerConnection is already connected",n.remoteAddr,a)}let i=Q(`/webrtc/p2p/${n.remoteAddr.getPeerId()}`);return o.trace("recipient connected to remote address %s",i),{remoteAddress:i}}var wk="/webrtc",bk="/p2p-circuit",bd="/webrtc-signaling/0.0.1",Ek=30*1e3,xd=class{components;init;log;_started=!1;metrics;shutdownController;constructor(e,t={}){this.components=e,this.init=t,this.log=e.logger.forComponent("libp2p:webrtc"),this.shutdownController=new AbortController,ve(1/0,this.shutdownController.signal),e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_webrtc_dialer_events_total",{label:"event",help:"Total count of WebRTC dialer events by type"}),listenerEvents:e.metrics.registerCounterGroup("libp2p_webrtc_listener_events_total",{label:"event",help:"Total count of WebRTC listener events by type"})})}isStarted(){return this._started}async start(){await this.components.registrar.handle(bd,e=>{this._onProtocol(e).catch(t=>{this.log.error("failed to handle incoming connect from %p",e.connection.remotePeer,t)})},{runOnTransientConnection:!0}),this._started=!0}async stop(){await this.components.registrar.unhandle(bd),this._started=!1}createListener(e){return new Ed(this.components,{shutdownController:this.shutdownController})}[Symbol.toStringTag]="@libp2p/webrtc";[en]=!0;filter(e){return e.filter(N9.exactMatch)}async dial(e,t){this.log.trace("dialing address: %a",e);let n=new Ki(this.init.rtcConfiguration),o=new ks(this.components,{peerConnection:n,dataChannelOptions:this.init.dataChannel}),{remoteAddress:s}=await pw({peerConnection:n,multiaddr:e,dataChannelOptions:this.init.dataChannel,signal:t.signal,connectionManager:this.components.connectionManager,transportManager:this.components.transportManager,log:this.log}),i=new Ts(this.components,{peerConnection:n,timeline:{open:Date.now()},remoteAddr:s,metrics:this.metrics?.dialerEvents}),a=await t.upgrader.upgradeOutbound(i,{skipProtection:!0,skipEncryption:!0,muxerFactory:o});return this._closeOnShutdown(n,i),a}async _onProtocol({connection:e,stream:t}){let n=AbortSignal.timeout(this.init.inboundConnectionTimeout??Ek),o=new Ki(this.init.rtcConfiguration),s=new ks(this.components,{peerConnection:o,dataChannelOptions:this.init.dataChannel});try{let{remoteAddress:i}=await gw({peerConnection:o,connection:e,stream:t,signal:n,log:this.log}),a=new Ts(this.components,{peerConnection:o,timeline:{open:new Date().getTime()},remoteAddr:i,metrics:this.metrics?.listenerEvents});this._closeOnShutdown(o,a),await this.components.upgrader.upgradeInbound(a,{skipEncryption:!0,skipProtection:!0,muxerFactory:s}),await t.close({signal:n})}catch(i){throw t.abort(i),i}}_closeOnShutdown(e,t){let n=()=>{t.close().catch(o=>{this.log.error("could not close WebRTCMultiaddrConnection",o)})};this.shutdownController.signal.addEventListener("abort",n),e.addEventListener("close",()=>{this.shutdownController.signal.removeEventListener("abort",n)})}};function mw(r){let e=r.toString().split(wk+"/");if(e.length!==2)throw new g("webrtc protocol was not present in multiaddr",or.ERR_INVALID_MULTIADDR);if(!e[0].includes(bk))throw new g("p2p-circuit protocol was not present in multiaddr",or.ERR_INVALID_MULTIADDR);let t=Q(e[0]),o=Q("/"+e[1]).getPeerId();if(o==null)throw new g("destination peer id was missing",or.ERR_INVALID_MULTIADDR);let s=t.protos().pop();if(s===void 0)throw new g("invalid multiaddr",or.ERR_INVALID_MULTIADDR);return s.name!=="p2p"&&(t=t.encapsulate(`/p2p/${o}`)),{baseAddr:t,peerId:ge(o)}}var zb=ke(f3(),1);var Fb=ke(f3(),1);var h3=Object.values(ur).map(r=>r.decoder).reduce((r,e)=>r.or(e));function Vb(r,e){let t=r.getConfiguration().certificates?.at(0);if(t==null||t.getFingerprints==null){e.log.trace("fetching fingerprint from local SDP");let o=r.localDescription;return o==null?void 0:IN(o.sdp)}if(e.log.trace("fetching fingerprint from local certificate"),t.getFingerprints().length===0)return;let n=t.getFingerprints()[0].value;if(n==null)throw Pp("","no fingerprint on local certificate");return n}var AN=/^a=fingerprint:(?:\w+-[0-9]+)\s(?<fingerprint>(:?[0-9a-fA-F]{2})+)$/m;function IN(r){return r.match(AN)?.groups?.fingerprint}function DN(r){for(let e of r.protoNames())if(e.startsWith("ip"))return e.toUpperCase();return"IP6"}function Od(r){let t=r.stringTuples().filter(n=>n[0]===Hb).map(n=>n[1])[0];if(t===void 0||t==="")throw pd(`Couldn't find a certhash component of multiaddr: ${r.toString()}`);return t}function p3(r){let e=h3.decode(r);return Fb.decode(e)}function TN(r){let e=p3(Od(r)),t=m3(e.name),n=e.digest.reduce((s,i)=>s+i.toString(16).padStart(2,"0"),""),o=n.match(/.{1,2}/g);if(o==null)throw Pp(n,r.toString());return[`${t.toUpperCase()} ${o.join(":").toUpperCase()}`,n]}function m3(r){switch(r){case"sha1":return"sha-1";case"sha2-256":return"sha-256";case"sha2-512":return"sha-512";default:throw ow(r)}}function kN(r,e){let{host:t,port:n}=r.toOptions(),o=DN(r),[s]=TN(r);return`v=0
|
|
28
23
|
o=- 0 0 IN ${o} ${t}
|
|
29
24
|
s=-
|
|
30
25
|
c=IN ${o} ${t}
|
|
@@ -39,25 +34,24 @@ a=fingerprint:${s}
|
|
|
39
34
|
a=sctp-port:5000
|
|
40
35
|
a=max-message-size:16384
|
|
41
36
|
a=candidate:1467250027 1 UDP 1467250027 ${t} ${n} typ host\r
|
|
42
|
-
`}function
|
|
37
|
+
`}function Kb(r,e){return{type:"answer",sdp:kN(r,e)}}function $b(r,e){if(r.sdp===void 0)throw pc("Can't munge a missing SDP");return r.sdp=r.sdp.replace(/\na=ice-ufrag:[^\n]*\n/,`
|
|
43
38
|
a=ice-ufrag:`+e+`
|
|
44
39
|
`).replace(/\na=ice-pwd:[^\n]*\n/,`
|
|
45
40
|
a=ice-pwd:`+e+`
|
|
46
|
-
`),r}var DR=Array.from("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),PR=r=>[...Array(r)].map(()=>DR.at(Math.floor(Math.random()*DR.length))).join("");var WF=1e4,o4e=fe("webrtc-direct").code,TR=fe("certhash").code,gp=class{log;metrics;components;init;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:webrtc-direct"),this.components=e,this.init=t,e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_webrtc-direct_dialer_events_total",{label:"event",help:"Total count of WebRTC-direct dial events by type"})})}async dial(e,t){let n=await this._connect(e,t);return this.log("dialing address: %a",e),n}createListener(e){throw H_("WebRTCTransport.createListener")}filter(e){return e.filter(xx.exactMatch)}[Symbol.toStringTag]="@libp2p/webrtc-direct";[Sn]=!0;async _connect(e,t){let n=new AbortController,o=n.signal,s=e.getPeerId();if(s===null)throw Qh("we need to have the remote's PeerId");let i=Ae(s),a=z4(yp(e)),c=await Ec.generateCertificate({name:"ECDSA",namedCurve:"P-256",hash:j4(a.name)}),l=new Ec({certificates:[c]});try{let f=new Promise((A,C)=>{let U=l.createDataChannel("",{negotiated:!0,id:0}),L=setTimeout(()=>{let F=`Data channel was never opened: state: ${U.readyState}`;this.log.error(F),this.metrics?.dialerEvents.increment({open_error:!0}),C(h4("data",F))},WF);U.onopen=F=>{clearTimeout(L),A(U)},U.onerror=F=>{clearTimeout(L);let re=`Error opening a data channel for handshaking: ${F.target?.toString()??"not specified"}`;this.log.error(re),this.metrics?.dialerEvents.increment({unknown_error:!0}),C(h4("data",re))}}),u="libp2p+webrtc+v1/"+PR(32),d=await l.createOffer(),y=kR(d,u);await l.setLocalDescription(y);let p=IR(e,u);await l.setRemoteDescription(p);let m=await f,g=this.components.peerId,b=this.generateNoisePrologue(l,a.code,e),E=$a({prologueBytes:b})(this.components),w=wc({channel:m,direction:"inbound",logger:this.components.logger,...this.init.dataChannel??{}}),_={...w,sink:w.sink.bind(w),source:async function*(){for await(let A of w.source)for(let C of A)yield C}()},I=new qi(this.components,{peerConnection:l,remoteAddr:e,timeline:{open:Date.now()},metrics:this.metrics?.dialerEvents}),k=Du?"iceconnectionstatechange":"connectionstatechange";l.addEventListener(k,()=>{switch(l.connectionState){case"failed":case"disconnected":case"closed":I.close().catch(A=>{this.log.error("error closing connection",A)}).finally(()=>{n.abort()});break;default:break}},{signal:o}),this.metrics?.dialerEvents.increment({peer_connection:!0});let D=new Hi(this.components,{peerConnection:l,metrics:this.metrics?.dialerEvents,dataChannelOptions:this.init.dataChannel});return await E.secureInbound(g,_,i),await t.upgrader.upgradeOutbound(I,{skipProtection:!0,skipEncryption:!0,muxerFactory:D})}catch(f){throw l.close(),f}}generateNoisePrologue(e,t,n){if(e.getConfiguration().certificates?.length===0)throw Tu("no local certificate");let o=AR(e,{log:this.log});if(o==null)throw Tu("no local fingerprint found");let s=o.trim().toLowerCase().replaceAll(":",""),i=x(s,"hex"),a=CR.encode(i,t),c=W4.decode(yp(n)),l=x("libp2p-webrtc-noise:");return le([l,a,c])}};function NR(r){return e=>new gp(e,r)}function BR(r){return e=>new op(e,r)}function LR(r){let e;try{e=fe("sni").code}catch{return null}for(let[t,n]of r)if(t===e&&n!==void 0)return n;return null}function OR(r){return r.some(([e,t])=>e===fe("tls").code)}function Ir(r,e,t){let n=KR[fe(r).name];if(n===void 0)throw new Error(`Can't interpret protocol ${fe(r).name}`);let o=n(e,t);return r===fe("ip6").code?`[${o}]`:o}var KR={ip4:(r,e)=>r,ip6:(r,e)=>e.length===0?r:`[${r}]`,tcp:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`tcp://${Ir(t[0],t[1]??"",e)}:${r}`},udp:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`udp://${Ir(t[0],t[1]??"",e)}:${r}`},dnsaddr:(r,e)=>r,dns4:(r,e)=>r,dns6:(r,e)=>r,dns:(r,e)=>r,ipfs:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${Ir(t[0],t[1]??"",e)}/ipfs/${r}`},p2p:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${Ir(t[0],t[1]??"",e)}/p2p/${r}`},http:(r,e)=>{let t=OR(e),n=LR(e);if(t&&n!==null)return`https://${n}`;let o=t?"https://":"http://",s=e.pop();if(s===void 0)throw new Error("Unexpected end of multiaddr");let i=Ir(s[0],s[1]??"",e);return i=i.replace("tcp://",""),`${o}${i}`},tls:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return Ir(t[0],t[1]??"",e)},sni:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return Ir(t[0],t[1]??"",e)},https:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");let n=Ir(t[0],t[1]??"",e);return n=n.replace("tcp://",""),`https://${n}`},ws:(r,e)=>{let t=OR(e),n=LR(e);if(t&&n!==null)return`wss://${n}`;let o=t?"wss://":"ws://",s=e.pop();if(s===void 0)throw new Error("Unexpected end of multiaddr");let i=Ir(s[0],s[1]??"",e);return i=i.replace("tcp://",""),`${o}${i}`},wss:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");let n=Ir(t[0],t[1]??"",e);return n=n.replace("tcp://",""),`wss://${n}`},"p2p-websocket-star":(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${Ir(t[0],t[1]??"",e)}/p2p-websocket-star`},"p2p-webrtc-star":(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${Ir(t[0],t[1]??"",e)}/p2p-webrtc-star`},"p2p-webrtc-direct":(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${Ir(t[0],t[1]??"",e)}/p2p-webrtc-direct`}};function MR(r,e){let n=se(r).stringTuples(),o=n.pop();if(o===void 0)throw new Error("Unexpected end of multiaddr");let s=fe(o[0]),i=KR[s.name];if(i==null)throw new Error(`No interpreter found for ${s.name}`);let a=i(o[1]??"",n);return e?.assumeHttp!==!1&&o[0]===fe("tcp").code&&(a=a.replace("tcp://","http://"),(o[1]==="443"||o[1]==="80")&&(o[1]==="443"&&(a=a.replace("http://","https://")),a=a.substring(0,a.lastIndexOf(":")))),a}var UR=async r=>{if(r.readyState>=2)throw new Error("socket closed");r.readyState!==1&&await new Promise((e,t)=>{function n(){r.removeEventListener("open",o),r.removeEventListener("error",s)}function o(){n(),e()}function s(i){n(),t(i.error??new Error(`connect ECONNREFUSED ${r.url}`))}r.addEventListener("open",o),r.addEventListener("error",s)})};var FR=(r,e)=>(e=e??{},e.closeOnEnd=e.closeOnEnd!==!1,async n=>{for await(let o of n){try{await UR(r)}catch(s){if(s.message==="socket closed")break;throw s}if(r.readyState===r.CLOSING||r.readyState===r.CLOSED)break;r.send(o)}e.closeOnEnd!=null&&r.readyState<=1&&await new Promise((o,s)=>{r.addEventListener("close",i=>{if(i.wasClean||i.code===1006)o();else{let a=Object.assign(new Error("ws error"),{event:i});s(a)}}),setTimeout(()=>{r.close()})})});var $R=Ue(qR(),1);function HR(r){return r instanceof ArrayBuffer||r?.constructor?.name==="ArrayBuffer"&&typeof r?.byteLength=="number"}var GR=r=>{r.binaryType="arraybuffer";let e=async()=>{await new Promise((s,i)=>{if(n){s();return}if(o!=null){i(o);return}let a=f=>{r.removeEventListener("open",c),r.removeEventListener("error",l),f()},c=()=>{a(s)},l=f=>{a(()=>{i(f.error??new Error(`connect ECONNREFUSED ${r.url}`))})};r.addEventListener("open",c),r.addEventListener("error",l)})},t=async function*(){let s=new $R.EventIterator(({push:i,stop:a,fail:c})=>{let l=u=>{let d=null;typeof u.data=="string"&&(d=x(u.data)),HR(u.data)&&(d=new Uint8Array(u.data)),u.data instanceof Uint8Array&&(d=u.data),d!=null&&i(d)},f=u=>{c(u.error??new Error("Socket error"))};return r.addEventListener("message",l),r.addEventListener("error",f),r.addEventListener("close",a),()=>{r.removeEventListener("message",l),r.removeEventListener("error",f),r.removeEventListener("close",a)}},{highWaterMark:1/0});await e();for await(let i of s)yield HR(i)?new Uint8Array(i):i}(),n=r.readyState===1,o;return r.addEventListener("open",()=>{n=!0,o=null}),r.addEventListener("close",()=>{n=!1,o=null}),r.addEventListener("error",s=>{n||(o=s.error??new Error(`connect ECONNREFUSED ${r.url}`))}),Object.assign(t,{connected:e})};var YR=(r,e)=>{e=e??{};let t=GR(r),n=e.remoteAddress,o=e.remotePort;if(r.url!=null)try{let i=new URL(r.url);n=i.hostname,o=parseInt(i.port,10)}catch{}if(n==null||o==null)throw new Error("Remote connection did not have address and/or port");return{sink:FR(r,e),source:t,connected:async()=>{await t.connected()},close:async()=>{(r.readyState===r.CONNECTING||r.readyState===r.OPEN)&&await new Promise(i=>{r.addEventListener("close",()=>{i()}),r.close()})},destroy:()=>{r.terminate!=null?r.terminate():r.close()},remoteAddress:n,remotePort:o,socket:r}};var WR=WebSocket;var jF={"http:":"ws:","https:":"wss:"},zR="ws:",jR=(r,e)=>{if(r.startsWith("//")&&(r=`${e?.protocol??zR}${r}`),r.startsWith("/")&&e!=null){let n=e.protocol??zR,o=e.host,s=e.port!=null&&o?.endsWith(`:${e.port}`)!==!0?`:${e.port}`:"";r=`${n}//${o}${s}${r}`}let t=new URL(r);for(let[n,o]of Object.entries(jF))t.protocol===n&&(t.protocol=o);return t};function XR(r,e){let t=typeof window>"u"?void 0:window.location;e=e??{};let n=jR(r,t),o=new WR(n.toString(),e.websocket);return YR(o,e)}function QR(r){return r.filter(e=>{if(e.protoCodes().includes(290))return!1;let t=e.decapsulateCode(421);return Qa.matches(t)||Ii.matches(t)})}function JR(r){return r.filter(e=>{if(e.protoCodes().includes(290))return!1;let t=e.decapsulateCode(421);return Ii.matches(t)})}function ZR(){throw new Error("WebSocket Servers can not be created in the browser!")}function eA(r,e,t){let n=t.logger.forComponent("libp2p:websockets:maconn"),o={log:n,async sink(s){try{await r.sink(async function*(){for await(let i of s)i instanceof Uint8Array?yield i:yield i.subarray()}())}catch(i){i.type!=="aborted"&&n.error(i)}},source:r.source,remoteAddr:e,timeline:{open:Date.now()},async close(s={}){let i=Date.now();if(s.signal==null){let c=AbortSignal.timeout(500);s={...s,signal:c}}let a=()=>{let{host:c,port:l}=o.remoteAddr.toOptions();n("timeout closing stream to %s:%s after %dms, destroying it manually",c,l,Date.now()-i),this.abort(new h("Socket close timeout","ERR_SOCKET_CLOSE_TIMEOUT"))};s.signal?.addEventListener("abort",a);try{await r.close()}catch(c){n.error("error closing WebSocket gracefully",c),this.abort(c)}finally{s.signal?.removeEventListener("abort",a),o.timeline.close=Date.now()}},abort(s){let{host:i,port:a}=o.remoteAddr.toOptions();n("timeout closing stream to %s:%s due to error",i,a,s),r.destroy(),o.timeline.close=Date.now()}};return r.socket.addEventListener("close",()=>{o.timeline.close==null&&(o.timeline.close=Date.now())},{once:!0}),o}var J4=class{log;init;logger;constructor(e,t){this.log=e.logger.forComponent("libp2p:websockets"),this.logger=e.logger,this.init=t}[Symbol.toStringTag]="@libp2p/websockets";[Sn]=!0;async dial(e,t){this.log("dialing %s",e),t=t??{};let n=await this._connect(e,t),o=eA(n,e,{logger:this.logger});this.log("new outbound connection %s",o.remoteAddr);let s=await t.upgrader.upgradeOutbound(o);return this.log("outbound connection %s upgraded",o.remoteAddr),s}async _connect(e,t){if(t?.signal?.aborted===!0)throw new en;let n=e.toOptions();this.log("dialing %s:%s",n.host,n.port);let o=he(),s=XR(MR(e),this.init);if(s.socket.addEventListener("error",()=>{let c=new h(`Could not connect to ${e.toString()}`,"ERR_CONNECTION_FAILED");this.log.error("connection error:",c),o.reject(c)}),t.signal==null)return await Promise.race([s.connected(),o.promise]),this.log("connected %s",e),s;let i,a=new Promise((c,l)=>{if(i=()=>{l(new en),s.close().catch(f=>{this.log.error("error closing raw socket",f)})},t?.signal?.aborted===!0){i();return}t?.signal?.addEventListener("abort",i)});try{await Promise.race([a,o.promise,s.connected()])}finally{i!=null&&t?.signal?.removeEventListener("abort",i)}return this.log("connected %s",e),s}createListener(e){return ZR({logger:this.logger},{...this.init,...e})}filter(e){return e=Array.isArray(e)?e:[e],this.init?.filter!=null?this.init?.filter(e):ch||lh?JR(e):QR(e)}};function tA(r={}){return e=>new J4(e,r)}async function Z4(r,e,t,n,o,s){let i=s.forComponent(`libp2p:webtransport:stream:${t}:${e}`),a=r.writable.getWriter(),c=r.readable.getReader();await a.ready;function l(){let p=n.findIndex(m=>m===y);p!==-1&&(n.splice(p,1),y.timeline.close=Date.now(),o?.(y))}let f=!1,u=!1;(async function(){let p=await a.closed.catch(m=>m);if(p!=null){let m=p.message;m.includes("aborted by the remote server")||m.includes("STOP_SENDING")||i.error(`WebTransport writer closed unexpectedly: streamId=${e} err=${p.message}`)}f=!0,f&&u&&l()})().catch(()=>{i.error("WebTransport failed to cleanup closed stream")}),async function(){let p=await c.closed.catch(m=>m);p!=null&&i.error(`WebTransport reader closed unexpectedly: streamId=${e} err=${p.message}`),u=!0,f&&u&&l()}().catch(()=>{i.error("WebTransport failed to cleanup closed stream")});let d=!1,y={id:e,status:"open",writeStatus:"ready",readStatus:"ready",abort(p){f||(a.abort(p).catch(m=>{i.error("could not abort stream",m)}),f=!0),u=!0,this.status="aborted",this.writeStatus="closed",this.readStatus="closed",this.timeline.reset=this.timeline.close=this.timeline.closeRead=this.timeline.closeWrite=Date.now(),l()},async close(p){this.status="closing",await Promise.all([y.closeRead(p),y.closeWrite(p)]),l(),this.status="closed",this.timeline.close=Date.now()},async closeRead(p){if(!u){this.readStatus="closing";try{await c.cancel()}catch(m){m.toString().includes("RESET_STREAM")===!0&&(f=!0)}this.timeline.closeRead=Date.now(),this.readStatus="closed",u=!0}f&&l()},async closeWrite(p){if(!f){f=!0,this.writeStatus="closing";try{await a.close()}catch(m){m.toString().includes("RESET_STREAM")===!0&&(u=!0)}this.timeline.closeWrite=Date.now(),this.writeStatus="closed"}u&&l()},direction:t,timeline:{open:Date.now()},metadata:{},source:async function*(){for(;;){let p=await c.read();if(p.done){u=!0,f&&l();return}yield new be(p.value)}}(),sink:async function(p){if(d)throw new Error("sink already called on stream");d=!0;try{this.writeStatus="writing";for await(let m of p)if(m instanceof Uint8Array)await a.write(m);else for(let g of m)await a.write(g);this.writeStatus="done"}finally{this.timeline.closeWrite=Date.now(),this.writeStatus="closed",await y.closeWrite()}},log:i};return y}function e8(){return{source:{[Symbol.asyncIterator](){return{async next(){return new Promise(()=>{})}}}},sink:async r=>new Promise(()=>{})}}function rA(r,e){return e.filter(n=>!!r.find(o=>O(n,o))).length===e.length}var ZF=Object.values(Dr).map(r=>r.decoder).reduce((r,e)=>r.or(e));function eV(r){return kr.decode(ZF.decode(r))}function nA(r){if(!oh.matches(r))throw new h("Invalid multiaddr, was not a WebTransport address","ERR_INVALID_MULTIADDR");let e=r.stringTuples(),t=e.filter(([i,a])=>i===fe("certhash").code).map(([i,a])=>eV(a??"")),n=e.filter(([i,a])=>i===fe("p2p").code).map(([i,a])=>Ae(a??""))[0],o=r.toOptions(),s=o.host;return o.family===6&&s?.includes(":")&&(s=`[${s}]`),{url:`https://${s}:${o.port}`,certhashes:t,remotePeer:n}}var t8=class{log;components;config;metrics;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:webtransport"),this.components=e,this.config={maxInboundStreams:t.maxInboundStreams??1e3},e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_webtransport_dialer_events_total",{label:"event",help:"Total count of WebTransport dialer events by type"})})}[Symbol.toStringTag]="@libp2p/webtransport";[Sn]=!0;async dial(e,t){t?.signal?.throwIfAborted(),this.log("dialing %s",e);let n=this.components.peerId;if(n===void 0)throw new Error("Need a local peerid");t=t??{};let{url:o,certhashes:s,remotePeer:i}=nA(e);if(i==null)throw new Error("Need a target peerid");if(s.length===0)throw new Error("Expected multiaddr to contain certhashes");let a,c,l=()=>{},f=!1,u=!1,d=!1;try{this.metrics?.dialerEvents.increment({pending:!0});let y=new WebTransport(`${o}/.well-known/libp2p-webtransport?type=noise`,{serverCertificateHashes:s.map(p=>({algorithm:"sha-256",value:p.digest}))});if(l=p=>{if(!f)try{this.metrics?.dialerEvents.increment({[p]:!0}),y.close()}catch(m){this.log.error("error closing wt session",m)}finally{c!=null&&(c.timeline.close=Date.now()),f=!0}},a=()=>{l(u?"noise_timeout":"ready_timeout")},t.signal?.addEventListener("abort",a,{once:!0}),await Promise.race([y.closed,y.ready]),u=!0,this.metrics?.dialerEvents.increment({ready:!0}),y.closed.catch(p=>{this.log.error("error on remote wt session close",p)}).finally(()=>{l("remote_close")}),!await this.authenticateWebTransport(y,n,i,s))throw new Error("Failed to authenticate webtransport");return this.metrics?.dialerEvents.increment({open:!0}),c={close:async()=>{this.log("Closing webtransport"),l("close")},abort:p=>{this.log("aborting webtransport due to passed err",p),l("abort")},remoteAddr:e,timeline:{open:Date.now()},log:this.components.logger.forComponent("libp2p:webtransport:maconn"),...e8()},d=!0,await t.upgrader.upgradeOutbound(c,{skipEncryption:!0,muxerFactory:this.webtransportMuxer(y),skipProtection:!0})}catch(y){throw this.log.error("caught wt session err",y),l(d?"upgrade_error":u?"noise_error":"ready_error"),y}finally{a!=null&&t.signal?.removeEventListener("abort",a)}}async authenticateWebTransport(e,t,n,o){let s=await e.createBidirectionalStream(),i=s.writable.getWriter(),a=s.readable.getReader();await i.ready;let c={source:async function*(){for(;;){let u=await a.read();if(u.value!=null&&(yield u.value),u.done)break}}(),sink:async function(u){for await(let d of u)d instanceof Uint8Array?await i.write(d):await i.write(d.subarray())}},l=$a()(this.components),{remoteExtensions:f}=await l.secureOutbound(t,c,n);if(i.close().catch(u=>{this.log.error(`Failed to close authentication stream writer: ${u.message}`)}),a.cancel().catch(u=>{this.log.error(`Failed to close authentication stream reader: ${u.message}`)}),!rA(f?.webtransportCerthashes??[],o.map(u=>u.bytes)))throw new Error("Our certhashes are not a subset of the remote's reported certhashes");return!0}webtransportMuxer(e){let t=0,n=this.config,o=this;return{protocol:"webtransport",createStreamMuxer:s=>{typeof s=="function"&&(s={onIncomingStream:s});let i=[];return async function(){let c=e.incomingBidirectionalStreams.getReader();for(;;){let{done:l,value:f}=await c.read();if(l)break;if(i.length>=n.maxInboundStreams)f.writable.close().catch(u=>{o.log.error(`Failed to close inbound stream that crossed our maxInboundStream limit: ${u.message}`)}),f.readable.cancel().catch(u=>{o.log.error(`Failed to close inbound stream that crossed our maxInboundStream limit: ${u.message}`)});else{let u=await Z4(f,String(t++),"inbound",i,s?.onStreamEnd,o.components.logger);i.push(u),s?.onIncomingStream?.(u)}}}().catch(()=>{this.log.error("WebTransport failed to receive incoming stream")}),{protocol:"webtransport",streams:i,newStream:async c=>{let l=await e.createBidirectionalStream(),f=await Z4(l,String(t++),s?.direction??"outbound",i,s?.onStreamEnd,o.components.logger);return i.push(f),f},close:async c=>{this.log("Closing webtransport muxer"),await Promise.all(i.map(async l=>l.close(c)))},abort:c=>{this.log("Aborting webtransport muxer with err:",c);for(let l of i)l.abort(c)},...e8()}}}}createListener(e){throw new Error("Webtransport servers are not supported in Node or the browser")}filter(e){return e.filter(oh.exactMatch)}};function oA(r={}){return e=>new t8(e,r)}var r8=Ue(Kf(),1);function sA(r,e){let t=e.map((n,o)=>({record:Pn(n),index:o}));return t.sort((n,o)=>{let s=n.record.sequence,i=o.record.sequence;if(s>i)return-1;if(s<i)return 1;if(n.record.validityType===ur.ValidityType.EOL&&o.record.validityType===ur.ValidityType.EOL){let a=r8.default.fromString(n.record.validity).toDate(),c=r8.default.fromString(o.record.validity).toDate();if(a.getTime()>c.getTime())return-1;if(a.getTime()<c.getTime())return 1}return 0}),t[0].index}var Ep="1.2.1",xp="libp2p";var aA="4.0.0-e554493",cA="helia";var lA={list:["/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN","/dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa","/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb","/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt","/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ"]};function vp(r={}){return{peerId:r.peerId,addresses:{listen:["/webrtc"]},transports:[ty({discoverRelays:1}),BR(),NR(),oA(),tA()],connectionEncryption:[$a()],streamMuxers:[$w(),M_()],peerDiscovery:[DE(lA)],services:{autoNAT:bE(),dcutr:Ax(),delegatedRouting:()=>cb("https://delegated-ipfs.dev"),dht:Hv({clientMode:!0,validators:{ipns:Zf},selectors:{ipns:sA}}),identify:Ux({agentVersion:`${cA}/${aA} ${xp}/${Ep} UserAgent=${globalThis.navigator.userAgent}`}),keychain:Yh(r.keychain),ping:q_()}}}var s8={};oe(s8,{Ed25519PrivateKey:()=>Yi,Ed25519PublicKey:()=>Uu,generateKeyPair:()=>sV,generateKeyPairFromSeed:()=>yA,unmarshalEd25519PrivateKey:()=>nV,unmarshalEd25519PublicKey:()=>oV});function Qr(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var Dc=32,Go=64,_p=32;function uA(){let r=we.utils.randomPrivateKey(),e=we.getPublicKey(r);return{privateKey:pA(r,e),publicKey:e}}function fA(r){if(r.length!==_p)throw new TypeError('"seed" must be 32 bytes in length.');if(!(r instanceof Uint8Array))throw new TypeError('"seed" must be a node.js Buffer, or Uint8Array.');let e=r,t=we.getPublicKey(e);return{privateKey:pA(e,t),publicKey:t}}function dA(r,e){let t=r.subarray(0,_p);return we.sign(e instanceof Uint8Array?e:e.subarray(),t)}function hA(r,e,t){return we.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function pA(r,e){let t=new Uint8Array(Go);for(let n=0;n<_p;n++)t[n]=r[n],t[_p+n]=e[n];return t}var or={get(r=globalThis){let e=r.crypto;if(e==null||e.subtle==null)throw Object.assign(new Error("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"),{code:"ERR_MISSING_WEB_CRYPTO"});return e}};var n8={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function mA(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,o=r?.digest??"SHA-256",s=r?.saltLength??16,i=r?.iterations??32767,a=or.get();t*=8;async function c(u,d){let y=a.getRandomValues(new Uint8Array(s)),p=a.getRandomValues(new Uint8Array(n)),m={name:e,iv:p};typeof d=="string"&&(d=x(d));let g;if(d.length===0){g=await a.subtle.importKey("jwk",n8,{name:"AES-GCM"},!0,["encrypt"]);try{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}catch{g=await a.subtle.importKey("jwk",n8,{name:"AES-GCM"},!0,["encrypt"])}}else{let E={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(E,w,{name:e,length:t},!0,["encrypt"])}let b=await a.subtle.encrypt(m,g,u);return le([y,m.iv,new Uint8Array(b)])}async function l(u,d){let y=u.subarray(0,s),p=u.subarray(s,s+n),m=u.subarray(s+n),g={name:e,iv:p};typeof d=="string"&&(d=x(d));let b;if(d.length===0)try{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}catch{b=await a.subtle.importKey("jwk",n8,{name:"AES-GCM"},!0,["decrypt"])}else{let w={name:"PBKDF2",salt:y,iterations:i,hash:{name:o}},_=await a.subtle.importKey("raw",d,{name:"PBKDF2"},!1,["deriveKey"]);b=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}let E=await a.subtle.decrypt(g,b,m);return new Uint8Array(E)}return{encrypt:c,decrypt:l}}async function Pc(r,e){let n=await mA().encrypt(r,e);return Ge.encode(n)}var rt;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(rt||(rt={}));var o8;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(o8||(o8={}));(function(r){r.codec=()=>Re(o8)})(rt||(rt={}));var to;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),rt.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=rt.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(to||(to={}));var ro;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),rt.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=rt.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(ro||(ro={}));var Uu=class{_key;constructor(e){this._key=Cc(e,Dc)}verify(e,t){return hA(this._key,t,e)}marshal(){return this._key}get bytes(){return to.encode({Type:rt.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Qr(e)?e.then(({bytes:t})=>t):e.bytes}},Yi=class{_key;_publicKey;constructor(e,t){this._key=Cc(e,Go),this._publicKey=Cc(t,Dc)}sign(e){return dA(this._key,e)}get public(){return new Uu(this._publicKey)}marshal(){return this._key}get bytes(){return ro.encode({Type:rt.Ed25519,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return Qr(e)?{bytes:t}=await e:t=e.bytes,t}async id(){let e=Xe.digest(this.public.bytes);return ie.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Pc(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function nV(r){if(r.length>Go){r=Cc(r,Go+Dc);let n=r.subarray(0,Go),o=r.subarray(Go,r.length);return new Yi(n,o)}r=Cc(r,Go);let e=r.subarray(0,Go),t=r.subarray(Dc);return new Yi(e,t)}function oV(r){return r=Cc(r,Dc),new Uu(r)}async function sV(){let{privateKey:r,publicKey:e}=uA();return new Yi(r,e)}async function yA(r){let{privateKey:e,publicKey:t}=fA(r);return new Yi(e,t)}function Cc(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new h(`Key must be a Uint8Array of length ${e}, got ${r.length}`,"ERR_INVALID_KEY_TYPE");return r}var u8={};oe(u8,{MAX_RSA_KEY_SIZE:()=>qu,RsaPrivateKey:()=>Nc,RsaPublicKey:()=>Vu,fromJwk:()=>gV,generateKeyPair:()=>bV,unmarshalRsaPrivateKey:()=>c8,unmarshalRsaPublicKey:()=>yV});function Wi(r){if(isNaN(r)||r<=0)throw new h("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return dt(r)}var qs={};oe(qs,{exportToPem:()=>fV,importFromPem:()=>dV,jwkToPkcs1:()=>aV,jwkToPkix:()=>lV,pkcs1ToJwk:()=>iV,pkixToJwk:()=>cV});function iV(r){let{result:e}=Ee(r),t=e.valueBlock.value;return{n:v(no(t[1].toBigInt()),"base64url"),e:v(no(t[2].toBigInt()),"base64url"),d:v(no(t[3].toBigInt()),"base64url"),p:v(no(t[4].toBigInt()),"base64url"),q:v(no(t[5].toBigInt()),"base64url"),dp:v(no(t[6].toBigInt()),"base64url"),dq:v(no(t[7].toBigInt()),"base64url"),qi:v(no(t[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function aV(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 h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new B({value:0}),B.fromBigInt(oo(x(r.n,"base64url"))),B.fromBigInt(oo(x(r.e,"base64url"))),B.fromBigInt(oo(x(r.d,"base64url"))),B.fromBigInt(oo(x(r.p,"base64url"))),B.fromBigInt(oo(x(r.q,"base64url"))),B.fromBigInt(oo(x(r.dp,"base64url"))),B.fromBigInt(oo(x(r.dq,"base64url"))),B.fromBigInt(oo(x(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function cV(r){let{result:e}=Ee(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:v(no(t[0].toBigInt()),"base64url"),e:v(no(t[1].toBigInt()),"base64url")}}function lV(r){if(r.n==null||r.e==null)throw new h("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new kt({valueHex:new M({value:[B.fromBigInt(oo(x(r.n,"base64url"))),B.fromBigInt(oo(x(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function no(r){let e=r.toString(16);e.length%2>0&&(e=`0${e}`);let t=e.length/2,n=new Uint8Array(t),o=0,s=0;for(;o<t;)n[o]=parseInt(e.slice(s,s+2),16),o+=1,s+=2;return n}function oo(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}var uV=16,i8=32,a8=1e4;async function fV(r,e){let t=or.get(),o=new M({value:[new B({value:0}),new M({value:[new ae({value:"1.2.840.113549.1.1.1"}),new Ne]}),new Se({valueHex:r.marshal()})]}).toBER(),s=new Uint8Array(o,0,o.byteLength),i=Wi(uV),a=await pt(Ye,e,i,{c:a8,dkLen:i8}),c=Wi(16),l=await t.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),f=await t.subtle.encrypt({name:"AES-CBC",iv:c},l,s),u=new M({value:[new Se({valueHex:i}),new B({value:a8}),new B({value:i8}),new M({value:[new ae({value:"1.2.840.113549.2.11"}),new Ne]})]}),d=new M({value:[new ae({value:"1.2.840.113549.1.5.13"}),new M({value:[new M({value:[new ae({value:"1.2.840.113549.1.5.12"}),u]}),new M({value:[new ae({value:"2.16.840.1.101.3.4.1.42"}),new Se({valueHex:c})]})]})]}),p=new M({value:[d,new Se({valueHex:f})]}).toBER(),m=new Uint8Array(p,0,p.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...v(m,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
|
|
47
|
-
`)}async function dV(r,e){let t=or.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o),{iv:i,salt:a,iterations:c,keySize:l,cipherText:f}=hV(s),u=await pt(Ye,e,a,{c,dkLen:l}),d=await t.subtle.importKey("raw",u,"AES-CBC",!1,["decrypt"]),y=Fu(await t.subtle.decrypt({name:"AES-CBC",iv:i},d,f)),{result:p}=Ee(y);n=gA(p)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let o=x(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=Ee(o);n=gA(s)}else throw new h("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return c8(n)}function hV(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new h("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new h("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let s=n.valueBlock.value[1],i=Fu(s.valueBlock.value[0].getValue()),a=a8,c=i8;if(s.valueBlock.value.length===3)a=Number(s.valueBlock.value[1].toBigInt()),c=Number(s.valueBlock.value[2].toBigInt());else if(s.valueBlock.value.length===2)throw new h("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let l=e.valueBlock.value[1].valueBlock.value[1],f=l.valueBlock.value[0].toString();if(f!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(f!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new h("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let u=Fu(l.valueBlock.value[1].getValue());return{cipherText:Fu(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:u}}function gA(r){return Fu(r.valueBlock.value[2].getValue())}function Fu(r){return new Uint8Array(r,0,r.byteLength)}async function bA(r){let e=await or.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await xA(e);return{privateKey:t[0],publicKey:t[1]}}async function l8(r){let t=[await or.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await pV(r)],n=await xA({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function wA(r,e){let t=await or.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await or.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function EA(r,e,t){let n=await or.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return or.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function xA(r){if(r.privateKey==null||r.publicKey==null)throw new h("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([or.get().subtle.exportKey("jwk",r.privateKey),or.get().subtle.exportKey("jwk",r.publicKey)])}async function pV(r){return or.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function Rp(r){if(r.kty!=="RSA")throw new h("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new h("invalid key modulus","ERR_INVALID_KEY_MODULUS");return x(r.n,"base64url").length*8}var qu=8192,Vu=class{_key;constructor(e){this._key=e}verify(e,t){return EA(this._key,t,e)}marshal(){return qs.jwkToPkix(this._key)}get bytes(){return to.encode({Type:rt.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Qr(e)?e.then(({bytes:t})=>t):e.bytes}},Nc=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return Wi(16)}sign(e){return wA(this._key,e)}get public(){if(this._publicKey==null)throw new h("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new Vu(this._publicKey)}marshal(){return qs.jwkToPkcs1(this._key)}get bytes(){return ro.encode({Type:rt.RSA,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Qr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return qs.exportToPem(this,e);if(t==="libp2p-key")return Pc(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function c8(r){let e=qs.pkcs1ToJwk(r);if(Rp(e)>qu)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await l8(e);return new Nc(t.privateKey,t.publicKey)}function yV(r){let e=qs.pkixToJwk(r);if(Rp(e)>qu)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new Vu(e)}async function gV(r){if(Rp(r)>qu)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await l8(r);return new Nc(e.privateKey,e.publicKey)}async function bV(r){if(r>qu)throw new h("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await bA(r);return new Nc(e.privateKey,e.publicKey)}var d8={};oe(d8,{Secp256k1PrivateKey:()=>$u,Secp256k1PublicKey:()=>Hu,generateKeyPair:()=>vV,unmarshalSecp256k1PrivateKey:()=>EV,unmarshalSecp256k1PublicKey:()=>xV});function vA(){return W.utils.randomPrivateKey()}function _A(r,e){let t=K.digest(e instanceof Uint8Array?e:e.subarray());if(Qr(t))return t.then(({digest:n})=>W.sign(n,r).toDERRawBytes()).catch(n=>{throw new h(String(n),"ERR_INVALID_INPUT")});try{return W.sign(t.digest,r).toDERRawBytes()}catch(n){throw new h(String(n),"ERR_INVALID_INPUT")}}function SA(r,e,t){let n=K.digest(t instanceof Uint8Array?t:t.subarray());if(Qr(n))return n.then(({digest:o})=>W.verify(e,o,r)).catch(o=>{throw new h(String(o),"ERR_INVALID_INPUT")});try{return W.verify(e,n.digest,r)}catch(o){throw new h(String(o),"ERR_INVALID_INPUT")}}function RA(r){return W.ProjectivePoint.fromHex(r).toRawBytes(!0)}function AA(r){try{W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}function f8(r){try{W.ProjectivePoint.fromHex(r)}catch(e){throw new h(String(e),"ERR_INVALID_PUBLIC_KEY")}}function IA(r){try{return W.getPublicKey(r,!0)}catch(e){throw new h(String(e),"ERR_INVALID_PRIVATE_KEY")}}var Hu=class{_key;constructor(e){f8(e),this._key=e}verify(e,t){return SA(this._key,t,e)}marshal(){return RA(this._key)}get bytes(){return to.encode({Type:rt.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}async hash(){let e=K.digest(this.bytes),t;return Qr(e)?{bytes:t}=await e:t=e.bytes,t}},$u=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??IA(e),AA(this._key),f8(this._publicKey)}sign(e){return _A(this._key,e)}get public(){return new Hu(this._publicKey)}marshal(){return this._key}get bytes(){return ro.encode({Type:rt.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return O(this.bytes,e.bytes)}hash(){let e=K.digest(this.bytes);return Qr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return v(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Pc(this.bytes,e);throw new h(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function EV(r){return new $u(r)}function xV(r){return new Hu(r)}async function vV(){let r=vA();return new $u(r)}var zi={rsa:u8,ed25519:s8,secp256k1:d8};function kA(r){let e=Object.keys(zi).join(" / ");return new h(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function TA(r){let e=to.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case rt.RSA:return zi.rsa.unmarshalRsaPublicKey(t);case rt.Ed25519:return zi.ed25519.unmarshalEd25519PublicKey(t);case rt.Secp256k1:return zi.secp256k1.unmarshalSecp256k1PublicKey(t);default:throw kA(e.Type??"unknown")}}async function DA(r){let e=ro.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case rt.RSA:return zi.rsa.unmarshalRsaPrivateKey(t);case rt.Ed25519:return zi.ed25519.unmarshalEd25519PrivateKey(t);case rt.Secp256k1:return zi.secp256k1.unmarshalSecp256k1PrivateKey(t);default:throw kA(e.Type??"RSA")}}var Vt={ERR_INVALID_PARAMETERS:"ERR_INVALID_PARAMETERS"};var Bc;(function(r){let e;(function(o){let s;o.codec=()=>(s==null&&(s=J((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)=>{let c={key:"",value:new Uint8Array(0)},l=a==null?i.len:i.pos+a;for(;i.pos<l;){let f=i.uint32();switch(f>>>3){case 1:c.key=i.string();break;case 2:c.value=i.bytes();break;default:i.skipType(f&7);break}}return c})),s),o.encode=i=>Q(i,o.codec()),o.decode=i=>X(i,o.codec())})(e=r.Peer$metadataEntry||(r.Peer$metadataEntry={}));let t;(function(o){let s;o.codec=()=>(s==null&&(s=J((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),Ip.codec().encode(i.value,a)),c.lengthDelimited!==!1&&a.ldelim()},(i,a)=>{let c={key:""},l=a==null?i.len:i.pos+a;for(;i.pos<l;){let f=i.uint32();switch(f>>>3){case 1:c.key=i.string();break;case 2:c.value=Ip.codec().decode(i,i.uint32());break;default:i.skipType(f&7);break}}return c})),s),o.encode=i=>Q(i,o.codec()),o.decode=i=>X(i,o.codec())})(t=r.Peer$tagsEntry||(r.Peer$tagsEntry={}));let n;r.codec=()=>(n==null&&(n=J((o,s,i={})=>{if(i.lengthDelimited!==!1&&s.fork(),o.addresses!=null)for(let a of o.addresses)s.uint32(10),Ap.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);i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={addresses:[],protocols:[],metadata:new Map,tags:new Map},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.addresses.push(Ap.codec().decode(o,o.uint32()));break;case 2:i.protocols.push(o.string());break;case 4:i.publicKey=o.bytes();break;case 5:i.peerRecordEnvelope=o.bytes();break;case 6:{let l=r.Peer$metadataEntry.codec().decode(o,o.uint32());i.metadata.set(l.key,l.value);break}case 7:{let l=r.Peer$tagsEntry.codec().decode(o,o.uint32());i.tags.set(l.key,l.value);break}default:o.skipType(c&7);break}}return i})),n),r.encode=o=>Q(o,r.codec()),r.decode=o=>X(o,r.codec())})(Bc||(Bc={}));var Ap;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.multiaddr!=null&&t.multiaddr.byteLength>0&&(n.uint32(10),n.bytes(t.multiaddr)),t.isCertified!=null&&(n.uint32(16),n.bool(t.isCertified)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={multiaddr:new Uint8Array(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.multiaddr=t.bytes();break;case 2:o.isCertified=t.bool();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(Ap||(Ap={}));var Ip;(function(r){let e;r.codec=()=>(e==null&&(e=J((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.value!=null&&t.value!==0&&(n.uint32(8),n.uint32(t.value)),t.expiry!=null&&(n.uint32(16),n.uint64(t.expiry)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={value:0},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.value=t.uint32();break;case 2:o.expiry=t.uint64();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>Q(t,r.codec()),r.decode=t=>X(t,r.codec())})(Ip||(Ip={}));function Lc(r,e){let t=Bc.decode(e);t.publicKey!=null&&r.publicKey==null&&(r=V6({...r,publicKey:r.publicKey}));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:r,addresses:t.addresses.map(({multiaddr:s,isCertified:i})=>({multiaddr:se(s),isCertified:i??!1})),metadata:t.metadata,peerRecordEnvelope:t.peerRecordEnvelope??void 0,tags:n}}var h8="/peers/";function Oc(r){if(!na(r)||r.type==null)throw new h("Invalid PeerId",Vt.ERR_INVALID_PARAMETERS);let e=r.toCID().toString();return new qe(`${h8}${e}`)}async function PA(r,e,t){let n=new Map;for(let o of t){if(o==null)continue;if(o.multiaddr instanceof Uint8Array&&(o.multiaddr=se(o.multiaddr)),!ns(o.multiaddr))throw new h("Multiaddr was invalid",Vt.ERR_INVALID_PARAMETERS);if(!await e(r,o.multiaddr))continue;let s=o.isCertified??!1,i=o.multiaddr.toString(),a=n.get(i);a!=null?o.isCertified=a.isCertified||s:n.set(i,{multiaddr:o.multiaddr,isCertified:s})}return[...n.values()].sort((o,s)=>o.multiaddr.toString().localeCompare(s.multiaddr.toString())).map(({isCertified:o,multiaddr:s})=>({isCertified:o,multiaddr:s.bytes}))}async function Tp(r,e,t,n){if(e==null)throw new h("Invalid PeerData",Vt.ERR_INVALID_PARAMETERS);if(e.publicKey!=null&&r.publicKey!=null&&!O(e.publicKey,r.publicKey))throw new h("publicKey bytes do not match peer id publicKey bytes",Vt.ERR_INVALID_PARAMETERS);let o=n.existingPeer;if(o!=null&&!r.equals(o.id))throw new h("peer id did not match existing peer id",Vt.ERR_INVALID_PARAMETERS);let s=o?.addresses??[],i=new Set(o?.protocols??[]),a=o?.metadata??new Map,c=o?.tags??new Map,l=o?.peerRecordEnvelope;if(t==="patch"){if((e.multiaddrs!=null||e.addresses!=null)&&(s=[],e.multiaddrs!=null&&s.push(...e.multiaddrs.map(u=>({isCertified:!1,multiaddr:u}))),e.addresses!=null&&s.push(...e.addresses)),e.protocols!=null&&(i=new Set(e.protocols)),e.metadata!=null){let u=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);a=kp(u,{validate:CA})}if(e.tags!=null){let u=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags);c=kp(u,{validate:NA,map:BA})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}if(t==="merge"){if(e.multiaddrs!=null&&s.push(...e.multiaddrs.map(u=>({isCertified:!1,multiaddr:u}))),e.addresses!=null&&s.push(...e.addresses),e.protocols!=null&&(i=new Set([...i,...e.protocols])),e.metadata!=null){let u=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);for(let[d,y]of u)y==null?a.delete(d):a.set(d,y);a=kp([...a.entries()],{validate:CA})}if(e.tags!=null){let u=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags),d=new Map(c);for(let[y,p]of u)p==null?d.delete(y):d.set(y,p);c=kp([...d.entries()],{validate:NA,map:BA})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}let f={addresses:await PA(r,n.addressFilter??(async()=>!0),s),protocols:[...i.values()].sort((u,d)=>u.localeCompare(d)),metadata:a,tags:c,publicKey:o?.id.publicKey??e.publicKey??r.publicKey,peerRecordEnvelope:l};return r.type!=="RSA"&&delete f.publicKey,f}function kp(r,e){let t=new Map;for(let[n,o]of r)o!=null&&e.validate(n,o);for(let[n,o]of r.sort(([s],[i])=>s.localeCompare(i)))o!=null&&t.set(n,e.map?.(n,o)??o);return t}function CA(r,e){if(typeof r!="string")throw new h("Metadata key must be a string",Vt.ERR_INVALID_PARAMETERS);if(!(e instanceof Uint8Array))throw new h("Metadata value must be a Uint8Array",Vt.ERR_INVALID_PARAMETERS)}function NA(r,e){if(typeof r!="string")throw new h("Tag name must be a string",Vt.ERR_INVALID_PARAMETERS);if(e.value!=null){if(parseInt(`${e.value}`,10)!==e.value)throw new h("Tag value must be an integer",Vt.ERR_INVALID_PARAMETERS);if(e.value<0||e.value>100)throw new h("Tag value must be between 0-100",Vt.ERR_INVALID_PARAMETERS)}if(e.ttl!=null){if(parseInt(`${e.ttl}`,10)!==e.ttl)throw new h("Tag ttl must be an integer",Vt.ERR_INVALID_PARAMETERS);if(e.ttl<0)throw new h("Tag ttl must be between greater than 0",Vt.ERR_INVALID_PARAMETERS)}}function BA(r,e){let t;return e.expiry!=null&&(t=e.expiry),e.ttl!=null&&(t=BigInt(Date.now()+Number(e.ttl))),{value:e.value??0,expiry:t}}function Dp(r,e,t){let n=r.toString().split("/")[2],o=vt.decode(n),s=at(o),i=t.get(s);if(i!=null)return i;let a=Lc(s,e);return t.set(s,a),a}function _V(r,e){return r==null?{}:{prefix:h8,filters:(r.filters??[]).map(t=>({key:n,value:o})=>t(Dp(n,o,e))),orders:(r.orders??[]).map(t=>(n,o)=>t(Dp(n.key,n.value,e),Dp(o.key,o.value,e)))}}var Pp=class{peerId;datastore;lock;addressFilter;constructor(e,t={}){this.peerId=e.peerId,this.datastore=e.datastore,this.addressFilter=t.addressFilter,this.lock=Cl({name:"peer-store",singleProcess:!0})}async has(e){return this.datastore.has(Oc(e))}async delete(e){if(this.peerId.equals(e))throw new h("Cannot delete self peer",Vt.ERR_INVALID_PARAMETERS);await this.datastore.delete(Oc(e))}async load(e){let t=await this.datastore.get(Oc(e));return Lc(e,t)}async save(e,t){let{existingBuf:n,existingPeer:o}=await this.#e(e),s=await Tp(e,t,"patch",{addressFilter:this.addressFilter});return this.#t(e,s,n,o)}async patch(e,t){let{existingBuf:n,existingPeer:o}=await this.#e(e),s=await Tp(e,t,"patch",{addressFilter:this.addressFilter,existingPeer:o});return this.#t(e,s,n,o)}async merge(e,t){let{existingBuf:n,existingPeer:o}=await this.#e(e),s=await Tp(e,t,"merge",{addressFilter:this.addressFilter,existingPeer:o});return this.#t(e,s,n,o)}async*all(e){let t=new Lt;for await(let{key:n,value:o}of this.datastore.query(_V(e??{},t))){let s=Dp(n,o,t);s.id.equals(this.peerId)||(yield s)}}async#e(e){try{let t=await this.datastore.get(Oc(e)),n=Lc(e,t);return{existingBuf:t,existingPeer:n}}catch(t){if(t.code!=="ERR_NOT_FOUND")throw t}return{}}async#t(e,t,n,o){let s=Bc.encode(t);return n!=null&&O(s,n)?{peer:Lc(e,s),previous:o,updated:!1}:(await this.datastore.put(Oc(e),s),{peer:Lc(e,s),previous:o,updated:!0})}};var Cp=class{store;events;peerId;log;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-store"),this.events=e.events,this.peerId=e.peerId,this.store=new Pp(e,t)}async forEach(e,t){this.log.trace("forEach await read lock");let n=await this.store.lock.readLock();this.log.trace("forEach got read lock");try{for await(let o of this.store.all(t))e(o)}finally{this.log.trace("forEach release read lock"),n()}}async all(e){this.log.trace("all await read lock");let t=await this.store.lock.readLock();this.log.trace("all got read lock");try{return await Pl(this.store.all(e))}finally{this.log.trace("all release read lock"),t()}}async delete(e){this.log.trace("delete await write lock");let t=await this.store.lock.writeLock();this.log.trace("delete got write lock");try{await this.store.delete(e)}finally{this.log.trace("delete release write lock"),t()}}async has(e){this.log.trace("has await read lock");let t=await this.store.lock.readLock();this.log.trace("has got read lock");try{return await this.store.has(e)}finally{this.log.trace("has release read lock"),t()}}async get(e){this.log.trace("get await read lock");let t=await this.store.lock.readLock();this.log.trace("get got read lock");try{return await this.store.load(e)}finally{this.log.trace("get release read lock"),t()}}async save(e,t){this.log.trace("save await write lock");let n=await this.store.lock.writeLock();this.log.trace("save got write lock");try{let o=await this.store.save(e,t);return this.#e(e,o),o.peer}finally{this.log.trace("save release write lock"),n()}}async patch(e,t){this.log.trace("patch await write lock");let n=await this.store.lock.writeLock();this.log.trace("patch got write lock");try{let o=await this.store.patch(e,t);return this.#e(e,o),o.peer}finally{this.log.trace("patch release write lock"),n()}}async merge(e,t){this.log.trace("merge await write lock");let n=await this.store.lock.writeLock();this.log.trace("merge got write lock");try{let o=await this.store.merge(e,t);return this.#e(e,o),o.peer}finally{this.log.trace("merge release write lock"),n()}}async consumePeerRecord(e,t){let n=await mn.openAndCertify(e,Sr.DOMAIN);if(t?.equals(n.peerId)===!1)return this.log("envelope peer id was not the expected peer id - expected: %p received: %p",t,n.peerId),!1;let o=Sr.createFromProtobuf(n.payload),s;try{s=await this.get(n.peerId)}catch(i){if(i.code!=="ERR_NOT_FOUND")throw i}if(s?.peerRecordEnvelope!=null){let i=await mn.createFromProtobuf(s.peerRecordEnvelope),a=Sr.createFromProtobuf(i.payload);if(a.seqNumber>=o.seqNumber)return this.log("sequence number was lower or equal to existing sequence number - stored: %d received: %d",a.seqNumber,o.seqNumber),!1}return await this.patch(o.peerId,{peerRecordEnvelope:e,addresses:o.multiaddrs.map(i=>({isCertified:!0,multiaddr:i}))}),!0}#e(e,t){t.updated&&(this.peerId.equals(e)?this.events.safeDispatchEvent("self:peer:update",{detail:t}):this.events.safeDispatchEvent("peer:update",{detail:t}))}};function LA(r,e){let t;return function(){let n=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(n,e)}}var SV=r=>r;function p8(r,e){let t=r.getPeerId();return t!=null&&Ae(t).equals(e)&&(r=r.decapsulate(se(`/p2p/${e.toString()}`))),r}var Np=class{log;components;listen;announce;observed;announceFilter;constructor(e,t={}){let{listen:n=[],announce:o=[]}=t;this.components=e,this.log=e.logger.forComponent("libp2p:address-manager"),this.listen=n.map(s=>s.toString()),this.announce=new Set(o.map(s=>s.toString())),this.observed=new Map,this.announceFilter=t.announceFilter??SV,this._updatePeerStoreAddresses=LA(this._updatePeerStoreAddresses.bind(this),1e3),e.events.addEventListener("transport:listening",()=>{this._updatePeerStoreAddresses()}),e.events.addEventListener("transport:close",()=>{this._updatePeerStoreAddresses()})}_updatePeerStoreAddresses(){let e=this.getAnnounceAddrs().concat(this.components.transportManager.getAddrs()).concat([...this.observed.entries()].filter(([t,n])=>n.confident).map(([t])=>se(t))).map(t=>t.getPeerId()===this.components.peerId.toString()?t.decapsulate(`/p2p/${this.components.peerId.toString()}`):t);this.components.peerStore.patch(this.components.peerId,{multiaddrs:e}).catch(t=>{this.log.error("error updating addresses",t)})}getListenAddrs(){return Array.from(this.listen).map(e=>se(e))}getAnnounceAddrs(){return Array.from(this.announce).map(e=>se(e))}getObservedAddrs(){return Array.from(this.observed).map(([e])=>se(e))}addObservedAddr(e){e=p8(e,this.components.peerId);let t=e.toString();this.observed.has(t)||this.observed.set(t,{confident:!1})}confirmObservedAddr(e){e=p8(e,this.components.peerId);let t=e.toString(),o=(this.observed.get(t)??{confident:!1}).confident;this.observed.set(t,{confident:!0}),o||this._updatePeerStoreAddresses()}removeObservedAddr(e){e=p8(e,this.components.peerId);let t=e.toString();this.observed.delete(t)}getAddresses(){let e=this.getAnnounceAddrs().map(n=>n.toString());e.length===0&&(e=this.components.transportManager.getAddrs().map(n=>n.toString())),e=e.concat(Array.from(this.observed).filter(([n,o])=>o.confident).map(([n])=>n));let t=new Set(e);return this.announceFilter(Array.from(t).map(n=>se(n))).map(n=>n.protos().pop()?.path===!0||n.getPeerId()===this.components.peerId.toString()?n:n.encapsulate(`/p2p/${this.components.peerId.toString()}`))}};var m8=class{components={};_started=!1;constructor(e={}){this.components={};for(let[t,n]of Object.entries(e))this.components[t]=n;this.components.logger==null&&(this.components.logger=Qo())}isStarted(){return this._started}async _invokeStartableMethod(e){await Promise.all(Object.values(this.components).filter(t=>Qu(t)).map(async t=>{await t[e]?.()}))}async beforeStart(){await this._invokeStartableMethod("beforeStart")}async start(){await this._invokeStartableMethod("start"),this._started=!0}async afterStart(){await this._invokeStartableMethod("afterStart")}async beforeStop(){await this._invokeStartableMethod("beforeStop")}async stop(){await this._invokeStartableMethod("stop"),this._started=!1}async afterStop(){await this._invokeStartableMethod("afterStop")}},RV=["metrics","connectionProtector"],AV=["components","isStarted","beforeStart","start","afterStart","beforeStop","stop","afterStop","then","_invokeStartableMethod"];function OA(r={}){let e=new m8(r);return new Proxy(e,{get(n,o,s){if(typeof o=="string"&&!AV.includes(o)){let i=e.components[o];if(i==null&&!RV.includes(o))throw new h(`${o} not set`,"ERR_SERVICE_MISSING");return i}return Reflect.get(n,o,s)},set(n,o,s){return typeof o=="string"?e.components[o]=s:Reflect.set(n,o,s),!0}})}function KA(r={}){return{denyDialPeer:async()=>!1,denyDialMultiaddr:async e=>{let t=e.stringTuples();return t[0][0]===4||t[0][0]===41?!!$r(`${t[0][1]}`):!1},denyInboundConnection:async()=>!1,denyOutboundConnection:async()=>!1,denyInboundEncryptedConnection:async()=>!1,denyOutboundEncryptedConnection:async()=>!1,denyInboundUpgradedConnection:async()=>!1,denyOutboundUpgradedConnection:async()=>!1,filterMultiaddrForPeer:async()=>!0,...r}}function y8(r){try{let{address:e}=r.nodeAddress();return!!$r(e)}catch{return!0}}function IV(r,e){let t=y8(r.multiaddr),n=y8(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function kV(r,e){return r.isCertified&&!e.isCertified?-1:!r.isCertified&&e.isCertified?1:0}function TV(r,e){let t=cu.exactMatch(r.multiaddr),n=cu.exactMatch(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function Kc(r,e){let t=IV(r,e);if(t!==0)return t;let n=TV(r,e);return n!==0?n:kV(r,e)}var b8=Ue(m2(),1),w8=Ue(FA(),1);function Bp(r,e,t){return`${r}?name=${e}&type=${t}`}async function VA(r,e){return await(await fetch(r,{headers:new Headers({accept:"application/dns-json"}),signal:e})).json()}function ji(r,e){return`${e}_${r}`}var g8=Object.assign((0,b8.default)("dns-over-http-resolver"),{error:(0,b8.default)("dns-over-http-resolver:error")}),E8=class{_cache;_TXTcache;_servers;_request;_abortControllers;constructor(e={}){this._cache=new w8.default({max:e?.maxCache??100}),this._TXTcache=new w8.default({max:e?.maxCache??100}),this._servers=["https://cloudflare-dns.com/dns-query","https://dns.google/resolve"],this._request=e.request??VA,this._abortControllers=[]}cancel(){this._abortControllers.forEach(e=>{e.abort()})}getServers(){return this._servers}_getShuffledServers(){let e=[...this._servers];for(let t=e.length-1;t>0;t--){let n=Math.floor(Math.random()*t),o=e[t];e[t]=e[n],e[n]=o}return e}setServers(e){this._servers=e}async resolve(e,t="A"){switch(t){case"A":return this.resolve4(e);case"AAAA":return this.resolve6(e);case"TXT":return this.resolveTxt(e);default:throw new Error(`${t} is not supported`)}}async resolve4(e){let t="A",n=this._cache.get(ji(e,t));if(n!=null)return n;let o=!1;for(let s of this._getShuffledServers()){let i=new AbortController;this._abortControllers.push(i);try{let a=await this._request(Bp(s,e,t),i.signal),c=a.Answer.map(f=>f.data),l=Math.min(...a.Answer.map(f=>f.TTL));return this._cache.set(ji(e,t),c,{ttl:l}),c}catch{i.signal.aborted&&(o=!0),g8.error(`${s} could not resolve ${e} record ${t}`)}finally{this._abortControllers=this._abortControllers.filter(a=>a!==i)}}throw o?Object.assign(new Error("queryA ECANCELLED"),{code:"ECANCELLED"}):new Error(`Could not resolve ${e} record ${t}`)}async resolve6(e){let t="AAAA",n=this._cache.get(ji(e,t));if(n!=null)return n;let o=!1;for(let s of this._getShuffledServers()){let i=new AbortController;this._abortControllers.push(i);try{let a=await this._request(Bp(s,e,t),i.signal),c=a.Answer.map(f=>f.data),l=Math.min(...a.Answer.map(f=>f.TTL));return this._cache.set(ji(e,t),c,{ttl:l}),c}catch{i.signal.aborted&&(o=!0),g8.error(`${s} could not resolve ${e} record ${t}`)}finally{this._abortControllers=this._abortControllers.filter(a=>a!==i)}}throw o?Object.assign(new Error("queryAaaa ECANCELLED"),{code:"ECANCELLED"}):new Error(`Could not resolve ${e} record ${t}`)}async resolveTxt(e){let t="TXT",n=this._TXTcache.get(ji(e,t));if(n!=null)return n;let o=!1;for(let s of this._getShuffledServers()){let i=new AbortController;this._abortControllers.push(i);try{let a=await this._request(Bp(s,e,t),i.signal),c=a.Answer.map(f=>[f.data.replace(/['"]+/g,"")]),l=Math.min(...a.Answer.map(f=>f.TTL));return this._TXTcache.set(ji(e,t),c,{ttl:l}),c}catch{i.signal.aborted&&(o=!0),g8.error(`${s} could not resolve ${e} record ${t}`)}finally{this._abortControllers=this._abortControllers.filter(a=>a!==i)}}throw o?Object.assign(new Error("queryTxt ECANCELLED"),{code:"ECANCELLED"}):new Error(`Could not resolve ${e} record ${t}`)}clearCache(){this._cache.clear(),this._TXTcache.clear()}},qA=E8;var HA=qA;var{code:BV}=fe("dnsaddr");async function Mc(r,e={}){let t=new HA;e.signal!=null&&e.signal.addEventListener("abort",()=>{t.cancel()});let n=r.getPeerId(),[,o]=r.stringTuples().find(([a])=>a===BV)??[];if(o==null)throw new Error("No hostname found in multiaddr");let i=(await t.resolveTxt(`_dnsaddr.${o}`)).flat().map(a=>a.split("=")[1]).filter(Boolean);return n!=null&&(i=i.filter(a=>a.includes(n))),i}var Yo;(function(r){r.NOT_STARTED_YET="The libp2p node is not started yet",r.ERR_PROTECTOR_REQUIRED="Private network is enforced, but no protector was provided",r.NOT_FOUND="Not found"})(Yo||(Yo={}));var ee;(function(r){r.ERR_PROTECTOR_REQUIRED="ERR_PROTECTOR_REQUIRED",r.ERR_PEER_DIAL_INTERCEPTED="ERR_PEER_DIAL_INTERCEPTED",r.ERR_CONNECTION_INTERCEPTED="ERR_CONNECTION_INTERCEPTED",r.ERR_INVALID_PROTOCOLS_FOR_STREAM="ERR_INVALID_PROTOCOLS_FOR_STREAM",r.ERR_CONNECTION_ENDED="ERR_CONNECTION_ENDED",r.ERR_CONNECTION_FAILED="ERR_CONNECTION_FAILED",r.ERR_NODE_NOT_STARTED="ERR_NODE_NOT_STARTED",r.ERR_ALREADY_ABORTED="ERR_ALREADY_ABORTED",r.ERR_TOO_MANY_ADDRESSES="ERR_TOO_MANY_ADDRESSES",r.ERR_NO_VALID_ADDRESSES="ERR_NO_VALID_ADDRESSES",r.ERR_RELAYED_DIAL="ERR_RELAYED_DIAL",r.ERR_DIALED_SELF="ERR_DIALED_SELF",r.ERR_DISCOVERED_SELF="ERR_DISCOVERED_SELF",r.ERR_DUPLICATE_TRANSPORT="ERR_DUPLICATE_TRANSPORT",r.ERR_ENCRYPTION_FAILED="ERR_ENCRYPTION_FAILED",r.ERR_HOP_REQUEST_FAILED="ERR_HOP_REQUEST_FAILED",r.ERR_INVALID_KEY="ERR_INVALID_KEY",r.ERR_INVALID_MESSAGE="ERR_INVALID_MESSAGE",r.ERR_INVALID_PARAMETERS="ERR_INVALID_PARAMETERS",r.ERR_INVALID_PEER="ERR_INVALID_PEER",r.ERR_MUXER_UNAVAILABLE="ERR_MUXER_UNAVAILABLE",r.ERR_NOT_FOUND="ERR_NOT_FOUND",r.ERR_TRANSPORT_UNAVAILABLE="ERR_TRANSPORT_UNAVAILABLE",r.ERR_TRANSPORT_DIAL_FAILED="ERR_TRANSPORT_DIAL_FAILED",r.ERR_UNSUPPORTED_PROTOCOL="ERR_UNSUPPORTED_PROTOCOL",r.ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED="ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED",r.ERR_INVALID_MULTIADDR="ERR_INVALID_MULTIADDR",r.ERR_SIGNATURE_NOT_VALID="ERR_SIGNATURE_NOT_VALID",r.ERR_FIND_SELF="ERR_FIND_SELF",r.ERR_NO_ROUTERS_AVAILABLE="ERR_NO_ROUTERS_AVAILABLE",r.ERR_CONNECTION_NOT_MULTIPLEXED="ERR_CONNECTION_NOT_MULTIPLEXED",r.ERR_NO_DIAL_TOKENS="ERR_NO_DIAL_TOKENS",r.ERR_INVALID_CMS="ERR_INVALID_CMS",r.ERR_MISSING_KEYS="ERR_MISSING_KEYS",r.ERR_NO_KEY="ERR_NO_KEY",r.ERR_INVALID_KEY_NAME="ERR_INVALID_KEY_NAME",r.ERR_INVALID_KEY_TYPE="ERR_INVALID_KEY_TYPE",r.ERR_KEY_ALREADY_EXISTS="ERR_KEY_ALREADY_EXISTS",r.ERR_INVALID_KEY_SIZE="ERR_INVALID_KEY_SIZE",r.ERR_KEY_NOT_FOUND="ERR_KEY_NOT_FOUND",r.ERR_OLD_KEY_NAME_INVALID="ERR_OLD_KEY_NAME_INVALID",r.ERR_NEW_KEY_NAME_INVALID="ERR_NEW_KEY_NAME_INVALID",r.ERR_PASSWORD_REQUIRED="ERR_PASSWORD_REQUIRED",r.ERR_PEM_REQUIRED="ERR_PEM_REQUIRED",r.ERR_CANNOT_READ_KEY="ERR_CANNOT_READ_KEY",r.ERR_MISSING_PRIVATE_KEY="ERR_MISSING_PRIVATE_KEY",r.ERR_MISSING_PUBLIC_KEY="ERR_MISSING_PUBLIC_KEY",r.ERR_INVALID_OLD_PASS_TYPE="ERR_INVALID_OLD_PASS_TYPE",r.ERR_INVALID_NEW_PASS_TYPE="ERR_INVALID_NEW_PASS_TYPE",r.ERR_INVALID_PASS_LENGTH="ERR_INVALID_PASS_LENGTH",r.ERR_NOT_IMPLEMENTED="ERR_NOT_IMPLEMENTED",r.ERR_WRONG_PING_ACK="ERR_WRONG_PING_ACK",r.ERR_INVALID_RECORD="ERR_INVALID_RECORD",r.ERR_ALREADY_SUCCEEDED="ERR_ALREADY_SUCCEEDED",r.ERR_NO_HANDLER_FOR_PROTOCOL="ERR_NO_HANDLER_FOR_PROTOCOL",r.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS",r.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS",r.ERR_CONNECTION_DENIED="ERR_CONNECTION_DENIED",r.ERR_TRANSFER_LIMIT_EXCEEDED="ERR_TRANSFER_LIMIT_EXCEEDED"})(ee||(ee={}));var LV={addresses:{listen:[],announce:[],noAnnounce:[],announceFilter:r=>r},connectionManager:{resolvers:{dnsaddr:Mc},addressSorter:Kc},transportManager:{faultTolerance:zo.FATAL_ALL}};async function $A(r){let e=gc(LV,r);if(e.connectionProtector===null&&globalThis.process?.env?.LIBP2P_FORCE_PNET!=null)throw new h(Yo.ERR_PROTECTOR_REQUIRED,ee.ERR_PROTECTOR_REQUIRED);if(!(await It(e.privateKey.public.bytes,e.privateKey.bytes)).equals(e.peerId))throw new h("Private key doesn't match peer id",ee.ERR_INVALID_KEY);return e}function Lp(r){if(na(r))return{peerId:r,multiaddrs:[]};Array.isArray(r)||(r=[r]);let e;if(r.length>0){let t=r[0].getPeerId();e=t==null?void 0:Ae(t),r.forEach(n=>{if(!ns(n))throw new h("Invalid Multiaddr",ee.ERR_INVALID_MULTIADDR);let o=n.getPeerId();if(o==null){if(e!=null)throw new h("Multiaddrs must all have the same peer id or have no peer id",ee.ERR_INVALID_PARAMETERS)}else{let s=Ae(o);if(e==null||!e.equals(s))throw new h("Multiaddrs must all have the same peer id or have no peer id",ee.ERR_INVALID_PARAMETERS)}})}return{peerId:e,multiaddrs:r}}var Op="last-dial-failure";var Kp=5,Mp=100,Up=50,GA=1e3*60*7;var Xi={minConnections:Kp,maxQueueLength:100,autoDialConcurrency:25,autoDialPriority:0,autoDialInterval:5e3,autoDialPeerRetryThreshold:GA,autoDialDiscoveredPeersDebounce:10},Fp=class{connectionManager;peerStore;queue;minConnections;autoDialPriority;autoDialIntervalMs;autoDialMaxQueueLength;autoDialPeerRetryThresholdMs;autoDialDiscoveredPeersDebounce;autoDialInterval;started;running;log;constructor(e,t){this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.minConnections=t.minConnections??Xi.minConnections,this.autoDialPriority=t.autoDialPriority??Xi.autoDialPriority,this.autoDialIntervalMs=t.autoDialInterval??Xi.autoDialInterval,this.autoDialMaxQueueLength=t.maxQueueLength??Xi.maxQueueLength,this.autoDialPeerRetryThresholdMs=t.autoDialPeerRetryThreshold??Xi.autoDialPeerRetryThreshold,this.autoDialDiscoveredPeersDebounce=t.autoDialDiscoveredPeersDebounce??Xi.autoDialDiscoveredPeersDebounce,this.log=e.logger.forComponent("libp2p:connection-manager:auto-dial"),this.started=!1,this.running=!1,this.queue=new Cs({concurrency:t.autoDialConcurrency??Xi.autoDialConcurrency,metricName:"libp2p_autodial_queue",metrics:e.metrics}),this.queue.addEventListener("error",o=>{this.log.error("error during auto-dial",o.detail)}),e.events.addEventListener("connection:close",()=>{this.autoDial().catch(o=>{this.log.error(o)})});let n;e.events.addEventListener("peer:discovery",()=>{clearTimeout(n),n=setTimeout(()=>{this.autoDial().catch(o=>{this.log.error(o)})},this.autoDialDiscoveredPeersDebounce)})}isStarted(){return this.started}start(){this.started=!0}afterStart(){this.autoDial().catch(e=>{this.log.error("error while autodialing",e)})}stop(){this.queue.clear(),clearTimeout(this.autoDialInterval),this.started=!1,this.running=!1}async autoDial(){if(!this.started||this.running)return;let e=this.connectionManager.getConnectionsMap(),t=e.size;if(t>=this.minConnections){this.minConnections>0&&this.log.trace("have enough connections %d/%d",t,this.minConnections);return}if(this.queue.size>this.autoDialMaxQueueLength){this.log("not enough connections %d/%d but auto dial queue is full",t,this.minConnections),this.sheduleNextAutodial();return}this.running=!0,this.log("not enough connections %d/%d - will dial peers to increase the number of connections",t,this.minConnections);let n=new mt(this.connectionManager.getDialQueue().map(l=>l.peerId).filter(Boolean)),o=await this.peerStore.all({filters:[l=>l.addresses.length===0?(this.log.trace("not autodialing %p because they have no addresses",l.id),!1):e.has(l.id)?(this.log.trace("not autodialing %p because they are already connected",l.id),!1):n.has(l.id)?(this.log.trace("not autodialing %p because they are already being dialed",l.id),!1):this.queue.has(l.id)?(this.log.trace("not autodialing %p because they are already being autodialed",l.id),!1):!0]}),s=o.sort(()=>Math.random()>.5?1:-1),i=new Lt;for(let l of s)i.has(l.id)||i.set(l.id,[...l.tags.values()].reduce((f,u)=>f+u.value,0));let c=s.sort((l,f)=>{let u=i.get(l.id)??0,d=i.get(f.id)??0;return u>d?-1:u<d?1:0}).filter(l=>{let f=l.metadata.get(Op);if(f==null)return!0;let u=parseInt(v(f));return isNaN(u)?!0:Date.now()-u>this.autoDialPeerRetryThresholdMs});this.log("selected %d/%d peers to dial",c.length,o.length);for(let l of c)this.queue.add(async()=>{let f=this.connectionManager.getConnectionsMap().size;if(f>=this.minConnections){this.log("got enough connections now %d/%d",f,this.minConnections),this.queue.clear();return}this.log("connecting to a peerStore stored peer %p",l.id),await this.connectionManager.openConnection(l.id,{priority:this.autoDialPriority})},{peerId:l.id}).catch(f=>{this.log.error("could not connect to peerStore stored peer",f)});this.running=!1,this.sheduleNextAutodial()}sheduleNextAutodial(){this.started&&(this.autoDialInterval=setTimeout(()=>{this.autoDial().catch(e=>{this.log.error("error while autodialing",e)})},this.autoDialIntervalMs))}};var YA={maxConnections:Mp,allow:[]},Vp=class{maxConnections;connectionManager;peerStore;allow;events;log;constructor(e,t={}){this.maxConnections=t.maxConnections??YA.maxConnections,this.allow=t.allow??YA.allow,this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager:connection-pruner"),e.events.addEventListener("connection:open",()=>{this.maybePruneConnections().catch(n=>{this.log.error(n)})})}async maybePruneConnections(){let e=this.connectionManager.getConnections(),t=e.length,n=Math.max(t-this.maxConnections,0);if(this.log("checking max connections limit %d/%d",t,this.maxConnections),t<=this.maxConnections)return;this.log("max connections limit exceeded %d/%d, pruning %d connection(s)",t,this.maxConnections,n);let o=new Lt;for(let a of e){let c=a.remotePeer;if(!o.has(c)){o.set(c,0);try{let l=await this.peerStore.get(c);o.set(c,[...l.tags.values()].reduce((f,u)=>f+u.value,0))}catch(l){l.code!=="ERR_NOT_FOUND"&&this.log.error("error loading peer tags",l)}}}let s=e.sort((a,c)=>{let l=o.get(a.remotePeer)??0,f=o.get(c.remotePeer)??0;if(l>f)return 1;if(l<f)return-1;let u=a.timeline.open,d=c.timeline.open;return u<d?1:u>d?-1:0}),i=[];for(let a of s)if(this.log("too many connections open - closing a connection to %p",a.remotePeer),this.allow.some(l=>a.remoteAddr.toString().startsWith(l.toString()))||i.push(a),i.length===n)break;await Promise.all(i.map(async a=>{try{await a.close()}catch(c){this.log.error(c)}})),this.events.safeDispatchEvent("connection:prune",{detail:i})}};async function S8(r,e){if(!r.protoNames().includes("dnsaddr"))return[r];let n=await MV(r,e),i=(await Promise.all(n.map(async a=>S8(a,e)))).flat().reduce((a,c)=>(a.find(l=>l.equals(c))==null&&a.push(c),a),[]);return e.log("resolved %s to",r,i.map(a=>a.toString())),i}async function MV(r,e){try{return r=se(r.toString()),await r.resolve(e)}catch(t){return e.log.error(`multiaddr ${r.toString()} could not be resolved`,t),[]}}var qp={addressSorter:Kc,maxParallelDials:Up,maxPeerAddrsToDial:25,dialTimeout:3e4,resolvers:{dnsaddr:Mc}},Hp=class{queue;components;addressSorter;maxPeerAddrsToDial;dialTimeout;shutDownController;connections;log;constructor(e,t={}){this.addressSorter=t.addressSorter??qp.addressSorter,this.maxPeerAddrsToDial=t.maxPeerAddrsToDial??qp.maxPeerAddrsToDial,this.dialTimeout=t.dialTimeout??qp.dialTimeout,this.connections=t.connections??new Lt,this.log=e.logger.forComponent("libp2p:connection-manager:dial-queue"),this.components=e,this.shutDownController=new AbortController,Ce(1/0,this.shutDownController.signal);for(let[n,o]of Object.entries(t.resolvers??{}))D1.set(n,o);this.queue=new To({concurrency:t.maxParallelDials??qp.maxParallelDials,metricName:"libp2p_dial_queue",metrics:e.metrics}),this.queue.addEventListener("error",n=>{this.log.error("error in dial queue",n.detail)})}start(){this.shutDownController=new AbortController}stop(){this.shutDownController.abort(),this.queue.abort()}async dial(e,t={}){let{peerId:n,multiaddrs:o}=Lp(e),s=Array.from(this.connections.values()).flat().find(a=>t.force===!0?!1:a.remotePeer.equals(n)?!0:o.find(c=>c.equals(a.remoteAddr)));if(s!=null)return this.log("already connected to %a",s.remoteAddr),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 l of o)if(c.has(l.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 i.join(t)}return this.log("creating dial target for %p",n,o.map(a=>a.toString())),this.queue.add(async a=>{let c=this.createDialAbortController(a?.signal),l;try{l=await this.calculateMultiaddrs(n,a?.multiaddrs,{...a,signal:c}),l.map(({multiaddr:f})=>f.toString()).forEach(f=>{a?.multiaddrs.add(f)})}catch(f){throw c.clear(),f}try{let f=0,u=[];for(let d of l){if(f===this.maxPeerAddrsToDial)throw this.log("dialed maxPeerAddrsToDial (%d) addresses for %p, not trying any others",f,n),new h("Peer had more than maxPeerAddrsToDial",ee.ERR_TOO_MANY_ADDRESSES);f++;try{let y=await this.components.transportManager.dial(d.multiaddr,{...a,signal:c});return this.log("dial to %a succeeded",d.multiaddr),y}catch(y){if(this.log.error("dial failed to %a",d.multiaddr,y),n!=null)try{await this.components.peerStore.patch(n,{metadata:{[Op]:x(Date.now().toString())}})}catch(p){this.log.error("could not update last dial failure key for %p",n,p)}if(c.aborted)throw new h(y.message,ao);u.push(y)}}throw u.length===1?u[0]:new Xu(u,"All multiaddr dials failed",ee.ERR_TRANSPORT_DIAL_FAILED)}finally{c.clear()}},{peerId:n,priority:t.priority,multiaddrs:new Set(o.map(a=>a.toString())),signal:t.signal})}createDialAbortController(e){let t=Rt([AbortSignal.timeout(this.dialTimeout),this.shutDownController.signal,e]);return Ce(1/0,t),t}async calculateMultiaddrs(e,t=new Set,n={}){let o=[...t].map(u=>({multiaddr:se(u),isCertified:!1}));if(e!=null){if(this.components.peerId.equals(e))throw new h("Tried to dial self",ee.ERR_DIALED_SELF);if(await this.components.connectionGater.denyDialPeer?.(e)===!0)throw new h("The dial request is blocked by gater.allowDialPeer",ee.ERR_PEER_DIAL_INTERCEPTED);if(o.length===0){this.log("loading multiaddrs for %p",e);try{let u=await this.components.peerStore.get(e);o.push(...u.addresses),this.log("loaded multiaddrs for %p",e,o.map(({multiaddr:d})=>d.toString()))}catch(u){if(u.code!==ee.ERR_NOT_FOUND)throw u}}if(o.length===0){this.log("looking up multiaddrs for %p in the peer routing",e);try{let u=await this.components.peerRouting.findPeer(e);this.log("found multiaddrs for %p in the peer routing",e,o.map(({multiaddr:d})=>d.toString())),o.push(...u.multiaddrs.map(d=>({multiaddr:d,isCertified:!1})))}catch(u){u.code!==ee.ERR_NO_ROUTERS_AVAILABLE&&this.log.error("looking up multiaddrs for %p in the peer routing failed",e,u)}}}let s=(await Promise.all(o.map(async u=>{let d=await S8(u.multiaddr,{...n,log:this.log});return d.length===1&&d[0].equals(u.multiaddr)?u:d.map(y=>({multiaddr:y,isCertified:!1}))}))).flat();if(e!=null){let u=`/p2p/${e.toString()}`;s=s.map(d=>d.multiaddr.protos().pop()?.path===!0?d:d.multiaddr.getPeerId()==null?{multiaddr:d.multiaddr.encapsulate(u),isCertified:d.isCertified}:d)}let i=s.filter(u=>{if(this.components.transportManager.transportForMultiaddr(u.multiaddr)==null)return!1;let d=u.multiaddr.getPeerId();return e!=null&&d!=null?e.equals(d):!0}),a=new Map;for(let u of i){let d=u.multiaddr.toString(),y=a.get(d);if(y!=null){y.isCertified=y.isCertified||u.isCertified||!1;continue}a.set(d,u)}let c=[...a.values()];if(c.length===0)throw new h("The dial request has no valid addresses",ee.ERR_NO_VALID_ADDRESSES);let l=[];for(let u of c)this.components.connectionGater.denyDialMultiaddr!=null&&await this.components.connectionGater.denyDialMultiaddr(u.multiaddr)||l.push(u);let f=l.sort(this.addressSorter);if(f.length===0)throw new h("The connection gater denied all addresses in the dial request",ee.ERR_NO_VALID_ADDRESSES);return this.log.trace("addresses for %p before filtering",e??"unknown peer",s.map(({multiaddr:u})=>u.toString())),this.log.trace("addresses for %p after filtering",e??"unknown peer",f.map(({multiaddr:u})=>u.toString())),f}};var VV=50,Qi={minConnections:Kp,maxConnections:Mp,inboundConnectionThreshold:5,maxIncomingPendingConnections:10,autoDialConcurrency:25,autoDialPriority:0,autoDialMaxQueueLength:100},$p=class{started;connections;allow;deny;maxIncomingPendingConnections;incomingPendingConnections;maxConnections;dialQueue;autoDial;connectionPruner;inboundConnectionRateLimiter;peerStore;metrics;events;log;constructor(e,t={}){this.maxConnections=t.maxConnections??Qi.maxConnections;let n=t.minConnections??Qi.minConnections;if(this.maxConnections<n)throw new h("Connection Manager maxConnections must be greater than minConnections",ee.ERR_INVALID_PARAMETERS);this.connections=new Lt,this.started=!1,this.peerStore=e.peerStore,this.metrics=e.metrics,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager"),this.onConnect=this.onConnect.bind(this),this.onDisconnect=this.onDisconnect.bind(this),this.events.addEventListener("connection:open",this.onConnect),this.events.addEventListener("connection:close",this.onDisconnect),this.allow=(t.allow??[]).map(o=>se(o)),this.deny=(t.deny??[]).map(o=>se(o)),this.incomingPendingConnections=0,this.maxIncomingPendingConnections=t.maxIncomingPendingConnections??Qi.maxIncomingPendingConnections,this.inboundConnectionRateLimiter=new bc({points:t.inboundConnectionThreshold??Qi.inboundConnectionThreshold,duration:1}),this.autoDial=new Fp({connectionManager:this,peerStore:e.peerStore,events:e.events,logger:e.logger},{minConnections:n,autoDialConcurrency:t.autoDialConcurrency??Qi.autoDialConcurrency,autoDialPriority:t.autoDialPriority??Qi.autoDialPriority,maxQueueLength:t.autoDialMaxQueueLength??Qi.autoDialMaxQueueLength}),this.connectionPruner=new Vp({connectionManager:this,peerStore:e.peerStore,events:e.events,logger:e.logger},{maxConnections:this.maxConnections,allow:this.allow}),this.dialQueue=new Hp(e,{addressSorter:t.addressSorter??Kc,maxParallelDials:t.maxParallelDials??Up,maxPeerAddrsToDial:t.maxPeerAddrsToDial??25,dialTimeout:t.dialTimeout??3e4,resolvers:t.resolvers??{dnsaddr:Mc},connections:this.connections})}isStarted(){return this.started}async start(){this.metrics?.registerMetricGroup("libp2p_connection_manager_connections",{calculate:()=>{let e={inbound:0,outbound:0};for(let t of this.connections.values())for(let n of t)n.direction==="inbound"?e.inbound++:e.outbound++;return e}}),this.metrics?.registerMetricGroup("libp2p_protocol_streams_total",{label:"protocol",calculate:()=>{let e={};for(let t of this.connections.values())for(let n of t)for(let o of n.streams){let s=`${o.direction} ${o.protocol??"unnegotiated"}`;e[s]=(e[s]??0)+1}return e}}),this.metrics?.registerMetricGroup("libp2p_connection_manager_protocol_streams_per_connection_90th_percentile",{label:"protocol",calculate:()=>{let e={};for(let n of this.connections.values())for(let o of n){let s={};for(let i of o.streams){let a=`${i.direction} ${i.protocol??"unnegotiated"}`;s[a]=(s[a]??0)+1}for(let[i,a]of Object.entries(s))e[i]=e[i]??[],e[i].push(a)}let t={};for(let[n,o]of Object.entries(e)){o=o.sort((i,a)=>i-a);let s=Math.floor(o.length*.9);t[n]=o[s]}return t}}),this.dialQueue.start(),this.autoDial.start(),this.started=!0,this.log("started")}async afterStart(){Promise.resolve().then(async()=>{let e=await this.peerStore.all({filters:[t=>t.tags.has(r5)]});await Promise.all(e.map(async t=>{await this.openConnection(t.id).catch(n=>{this.log.error(n)})}))}).catch(e=>{this.log.error(e)}),this.autoDial.afterStart()}async stop(){this.dialQueue.stop(),this.autoDial.stop();let e=[];for(let t of this.connections.values())for(let n of t)e.push((async()=>{try{await n.close()}catch(o){this.log.error(o)}})());this.log("closing %d connections",e.length),await Promise.all(e),this.connections.clear(),this.log("stopped")}onConnect(e){this._onConnect(e).catch(t=>{this.log.error(t)})}async _onConnect(e){let{detail:t}=e;if(!this.started){await t.close();return}let n=t.remotePeer,o=this.connections.get(n),s=!1;o!=null?o.push(t):(s=!0,this.connections.set(n,[t])),n.publicKey!=null&&n.type==="RSA"&&await this.peerStore.patch(n,{publicKey:n.publicKey}),s&&this.events.safeDispatchEvent("peer:connect",{detail:t.remotePeer})}onDisconnect(e){let{detail:t}=e;if(!this.started)return;let n=t.remotePeer,o=this.connections.get(n);o!=null&&o.length>1?(o=o.filter(s=>s.id!==t.id),this.connections.set(n,o)):o!=null&&(this.connections.delete(n),this.events.safeDispatchEvent("peer:disconnect",{detail:t.remotePeer}))}getConnections(e){if(e!=null)return this.connections.get(e)??[];let t=[];for(let n of this.connections.values())t=t.concat(n);return t}getConnectionsMap(){return this.connections}async openConnection(e,t={}){if(!this.isStarted())throw new h("Not started",ee.ERR_NODE_NOT_STARTED);t.signal?.throwIfAborted();let{peerId:n}=Lp(e);if(n!=null&&t.force!==!0){this.log("dial %p",n);let a=this.getConnections(n).find(c=>!c.transient);if(a!=null)return this.log("had an existing non-transient connection to %p",n),a}let o=await this.dialQueue.dial(e,{...t,priority:t.priority??VV}),s=this.connections.get(o.remotePeer);s==null&&(s=[],this.connections.set(o.remotePeer,s));let i=!1;for(let a of s)a.id===o.id&&(i=!0);return i||s.push(o),o}async closeConnections(e,t={}){let n=this.connections.get(e)??[];await Promise.all(n.map(async o=>{try{await o.close(t)}catch(s){o.abort(s)}}))}async acceptIncomingConnection(e){if(this.deny.some(o=>e.remoteAddr.toString().startsWith(o.toString())))return this.log("connection from %a refused - connection remote address was in deny list",e.remoteAddr),!1;if(this.allow.some(o=>e.remoteAddr.toString().startsWith(o.toString())))return this.incomingPendingConnections++,!0;if(this.incomingPendingConnections===this.maxIncomingPendingConnections)return this.log("connection from %a refused - incomingPendingConnections exceeded by host",e.remoteAddr),!1;if(e.remoteAddr.isThinWaistAddress()){let o=e.remoteAddr.nodeAddress().address;try{await this.inboundConnectionRateLimiter.consume(o,1)}catch{return this.log("connection from %a refused - inboundConnectionThreshold exceeded by host %s",e.remoteAddr,o),!1}}return this.getConnections().length<this.maxConnections?(this.incomingPendingConnections++,!0):(this.log("connection from %a refused - maxConnections exceeded",e.remoteAddr),!1)}afterUpgradeInbound(){this.incomingPendingConnections--}getDialQueue(){let e={queued:"queued",running:"active",errored:"error",complete:"success"};return this.dialQueue.queue.queue.map(t=>({id:t.id,status:e[t.status],peerId:t.options.peerId,multiaddrs:[...t.options.multiaddrs].map(n=>se(n))}))}};var Gp=class{routers;started;components;constructor(e,t){this.routers=t.routers??[],this.started=!1,this.components=e}isStarted(){return this.started}async start(){this.started=!0}async stop(){this.started=!1}async*findProviders(e,t={}){if(this.routers.length===0)throw new h("No content routers available",ee.ERR_NO_ROUTERS_AVAILABLE);let n=this,o=new mt;for await(let s of Xt(...n.routers.map(i=>i.findProviders(e,t))))s!=null&&(s.multiaddrs.length>0&&await this.components.peerStore.merge(s.id,{multiaddrs:s.multiaddrs}),!o.has(s.id)&&(o.add(s.id),yield s))}async provide(e,t={}){if(this.routers.length===0)throw new h("No content routers available",ee.ERR_NO_ROUTERS_AVAILABLE);await Promise.all(this.routers.map(async n=>{await n.provide(e,t)}))}async put(e,t,n){if(!this.isStarted())throw new h(Yo.NOT_STARTED_YET,ee.ERR_NODE_NOT_STARTED);await Promise.all(this.routers.map(async o=>{await o.put(e,t,n)}))}async get(e,t){if(!this.isStarted())throw new h(Yo.NOT_STARTED_YET,ee.ERR_NODE_NOT_STARTED);return Promise.any(this.routers.map(async n=>n.get(e,t)))}};var Yp=class{log;peerId;peerStore;routers;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-routing"),this.peerId=e.peerId,this.peerStore=e.peerStore,this.routers=t.routers??[]}async findPeer(e,t){if(this.routers.length===0)throw new h("No peer routers available",ee.ERR_NO_ROUTERS_AVAILABLE);if(e.toString()===this.peerId.toString())throw new h("Should not try to find self",ee.ERR_FIND_SELF);let n=this,o=Xt(...this.routers.map(s=>async function*(){try{yield await s.findPeer(e,t)}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}),s;throw new h(Yo.NOT_FOUND,ee.ERR_NOT_FOUND)}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new h("No peer routers available",ee.ERR_NO_ROUTERS_AVAILABLE);let n=this,o=new mt;for await(let s of Bo(async function*(){let i=Xt(...n.routers.map(a=>a.getClosestPeers(e,t)));for await(let a of i)yield async()=>{if(a.multiaddrs.length===0)try{a=await n.findPeer(a.id,{...t,useCache:!1})}catch(c){n.log.error("could not find peer multiaddrs",c);return}return a}}()))s!=null&&(s.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs}),!o.has(s.id)&&(o.add(s.id),yield s))}};var I8=32,k8=64,Wp=class{log;topologies;handlers;components;constructor(e){this.log=e.logger.forComponent("libp2p:registrar"),this.topologies=new Map,this.handlers=new Map,this.components=e,this._onDisconnect=this._onDisconnect.bind(this),this._onPeerUpdate=this._onPeerUpdate.bind(this),this._onPeerIdentify=this._onPeerIdentify.bind(this),this.components.events.addEventListener("peer:disconnect",this._onDisconnect),this.components.events.addEventListener("peer:update",this._onPeerUpdate),this.components.events.addEventListener("peer:identify",this._onPeerIdentify)}getProtocols(){return Array.from(new Set([...this.handlers.keys()])).sort()}getHandler(e){let t=this.handlers.get(e);if(t==null)throw new h(`No handler registered for protocol ${e}`,ee.ERR_NO_HANDLER_FOR_PROTOCOL);return t}getTopologies(e){let t=this.topologies.get(e);return t==null?[]:[...t.values()]}async handle(e,t,n){if(this.handlers.has(e))throw new h(`Handler already registered for protocol ${e}`,ee.ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED);let o=gc.bind({ignoreUndefined:!0})({maxInboundStreams:I8,maxOutboundStreams:k8},n);this.handlers.set(e,{handler:t,options:o}),await this.components.peerStore.merge(this.components.peerId,{protocols:[e]})}async unhandle(e){(Array.isArray(e)?e:[e]).forEach(n=>{this.handlers.delete(n)}),await this.components.peerStore.patch(this.components.peerId,{protocols:this.getProtocols()})}async register(e,t){if(t==null)throw new h("invalid topology",ee.ERR_INVALID_PARAMETERS);let n=`${(Math.random()*1e9).toString(36)}${Date.now()}`,o=this.topologies.get(e);return o==null&&(o=new Map,this.topologies.set(e,o)),o.set(n,t),n}unregister(e){for(let[t,n]of this.topologies.entries())n.has(e)&&(n.delete(e),n.size===0&&this.topologies.delete(t))}_onDisconnect(e){let t=e.detail;this.components.peerStore.get(t).then(n=>{for(let o of n.protocols){let s=this.topologies.get(o);if(s!=null)for(let i of s.values())i.onDisconnect?.(t)}}).catch(n=>{n.code!==ee.ERR_NOT_FOUND&&this.log.error("could not inform topologies of disconnecting peer %p",t,n)})}_onPeerUpdate(e){let{peer:t,previous:n}=e.detail,o=(n?.protocols??[]).filter(s=>!t.protocols.includes(s));for(let s of o){let i=this.topologies.get(s);if(i!=null)for(let a of i.values())a.onDisconnect?.(t.id)}}_onPeerIdentify(e){let t=e.detail.protocols,n=e.detail.connection,o=e.detail.peerId;for(let s of t){let i=this.topologies.get(s);if(i!=null)for(let a of i.values())n.transient&&a.notifyOnTransient!==!0||a.onConnect?.(o,n)}}};var zp=class{log;components;transports;listeners;faultTolerance;started;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:transports"),this.components=e,this.started=!1,this.transports=new Map,this.listeners=xn({name:"libp2p_transport_manager_listeners",metrics:this.components.metrics}),this.faultTolerance=t.faultTolerance??zo.FATAL_ALL}add(e){let t=e[Symbol.toStringTag];if(t==null)throw new h("Transport must have a valid tag",ee.ERR_INVALID_KEY);if(this.transports.has(t))throw new h(`There is already a transport with the tag ${t}`,ee.ERR_DUPLICATE_TRANSPORT);this.log("adding transport %s",t),this.transports.set(t,e),this.listeners.has(t)||this.listeners.set(t,[])}isStarted(){return this.started}start(){this.started=!0}async afterStart(){let e=this.components.addressManager.getListenAddrs();await this.listen(e)}async stop(){let e=[];for(let[t,n]of this.listeners)for(this.log("closing listeners for %s",t);n.length>0;){let o=n.pop();o!=null&&e.push(o.close())}await Promise.all(e),this.log("all listeners closed");for(let t of this.listeners.keys())this.listeners.set(t,[]);this.started=!1}async dial(e,t){let n=this.transportForMultiaddr(e);if(n==null)throw new h(`No transport available for address ${String(e)}`,ee.ERR_TRANSPORT_UNAVAILABLE);try{return await n.dial(e,{...t,upgrader:this.components.upgrader})}catch(o){throw o.code==null&&(o.code=ee.ERR_TRANSPORT_DIAL_FAILED),o}}getAddrs(){let e=[];for(let t of this.listeners.values())for(let n of t)e=[...e,...n.getAddrs()];return e}getTransports(){return Array.of(...this.transports.values())}getListeners(){return Array.of(...this.listeners.values()).flat()}transportForMultiaddr(e){for(let t of this.transports.values())if(t.filter([e]).length>0)return t}async listen(e){if(!this.isStarted())throw new h("Not started",ee.ERR_NODE_NOT_STARTED);if(e==null||e.length===0){this.log("no addresses were provided for listening, this node is dial only");return}let t=[];for(let[n,o]of this.transports.entries()){let s=o.filter(e),i=[];for(let l of s){this.log("creating listener for %s on %a",n,l);let f=o.createListener({upgrader:this.components.upgrader}),u=this.listeners.get(n)??[];u==null&&(u=[],this.listeners.set(n,u)),u.push(f),f.addEventListener("listening",()=>{this.components.events.safeDispatchEvent("transport:listening",{detail:f})}),f.addEventListener("close",()=>{let d=u.findIndex(y=>y===f);u.splice(d,1),this.components.events.safeDispatchEvent("transport:close",{detail:f})}),i.push(f.listen(l))}if(i.length===0){t.push(n);continue}if((await Promise.allSettled(i)).find(l=>l.status==="fulfilled")==null&&this.faultTolerance!==zo.NO_FATAL)throw new h(`Transport (${n}) could not listen on any available address`,ee.ERR_NO_VALID_ADDRESSES)}if(t.length===this.transports.size){let n=`no valid addresses were provided for transports [${t.join(", ")}]`;if(this.faultTolerance===zo.FATAL_ALL)throw new h(n,ee.ERR_NO_VALID_ADDRESSES);this.log(`libp2p in dial mode only: ${n}`)}}async remove(e){let t=this.listeners.get(e)??[];this.log.trace("removing transport %s",e);let n=[];for(this.log.trace("closing listeners for %s",e);t.length>0;){let o=t.pop();o!=null&&n.push(o.close())}await Promise.all(n),this.transports.delete(e),this.listeners.delete(e)}async removeAll(){let e=[];for(let t of this.transports.keys())e.push(this.remove(t));await Promise.all(e)}};var qt="/multistream/1.0.0";var qV=x(`
|
|
48
|
-
`)
|
|
49
|
-
`),i=
|
|
50
|
-
`)
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
`),
|
|
54
|
-
`),
|
|
55
|
-
`)
|
|
56
|
-
`),t),t.log.trace('handle: responded with "%s" for "%s"',
|
|
57
|
-
`)
|
|
58
|
-
`))),
|
|
59
|
-
`));t.log.trace('handle: respond with "%s" for %s',e,o),await Ji(n,s,t),t.log.trace('handle: responded with "%s" for %s',e,o);continue}t.log('handle: respond with "na" for "%s"',o),await Ji(n,x(`na
|
|
60
|
-
`),t),t.log('handle: responded with "na" for "%s"',o)}}var YV=500,D8=class{id;remoteAddr;remotePeer;direction;timeline;multiplexer;encryption;status;transient;log;tags;_newStream;_close;_abort;_getStreams;constructor(e){let{remoteAddr:t,remotePeer:n,newStream:o,close:s,abort:i,getStreams:a}=e;this.id=`${parseInt(String(Math.random()*1e9)).toString(36)}${Date.now()}`,this.remoteAddr=t,this.remotePeer=n,this.direction=e.direction,this.status="open",this.timeline=e.timeline,this.multiplexer=e.multiplexer,this.encryption=e.encryption,this.transient=e.transient??!1,this.log=e.logger.forComponent(`libp2p:connection:${this.direction}:${this.id}`),this.remoteAddr.getPeerId()==null&&(this.remoteAddr=this.remoteAddr.encapsulate(`/p2p/${this.remotePeer}`)),this._newStream=o,this._close=s,this._abort=i,this._getStreams=a,this.tags=[]}[Symbol.toStringTag]="Connection";[t5]=!0;get streams(){return this._getStreams()}async newStream(e,t){if(this.status==="closing")throw new h("the connection is being closed","ERR_CONNECTION_BEING_CLOSED");if(this.status==="closed")throw new h("the connection is closed","ERR_CONNECTION_CLOSED");if(Array.isArray(e)||(e=[e]),this.transient&&t?.runOnTransientConnection!==!0)throw new h("Cannot open protocol stream on transient connection","ERR_TRANSIENT_CONNECTION");let n=await this._newStream(e,t);return n.direction="outbound",n}async close(e={}){if(!(this.status==="closed"||this.status==="closing")){if(this.log("closing connection to %a",this.remoteAddr),this.status="closing",e.signal==null){let t=AbortSignal.timeout(YV);Ce(1/0,t),e={...e,signal:t}}try{this.log.trace("closing all streams"),await Promise.all(this.streams.map(async t=>t.close(e))),this.log.trace("closing underlying transport"),await this._close(e),this.log.trace("updating timeline with close time"),this.status="closed",this.timeline.close=Date.now()}catch(t){this.log.error("error encountered during graceful close of connection to %a",this.remoteAddr,t),this.abort(t)}}}abort(e){this.log.error("aborting connection to %a due to error",this.remoteAddr,e),this.status="closing",this.streams.forEach(t=>{t.abort(e)}),this.log.error("all streams aborted",this.streams.length),this._abort(e),this.timeline.close=Date.now(),this.status="closed"}};function jA(r){return new D8(r)}var WV=3e4;function zV(r,e){try{let{options:t}=e.getHandler(r);return t.maxInboundStreams}catch(t){if(t.code!==ee.ERR_NO_HANDLER_FOR_PROTOCOL)throw t}return I8}function jV(r,e,t={}){try{let{options:n}=e.getHandler(r);if(n.maxOutboundStreams!=null)return n.maxOutboundStreams}catch(n){if(n.code!==ee.ERR_NO_HANDLER_FOR_PROTOCOL)throw n}return t.maxOutboundStreams??k8}function XA(r,e,t){let n=0;return t.streams.forEach(o=>{o.direction===e&&o.protocol===r&&n++}),n}var jp=class{components;connectionEncryption;muxers;inboundUpgradeTimeout;events;constructor(e,t){this.components=e,this.connectionEncryption=new Map,t.connectionEncryption.forEach(n=>{this.connectionEncryption.set(n.protocol,n)}),this.muxers=new Map,t.muxers.forEach(n=>{this.muxers.set(n.protocol,n)}),this.inboundUpgradeTimeout=t.inboundUpgradeTimeout??3e4,this.events=e.events}async shouldBlockConnection(e,t,n){let o=this.components.connectionGater[n];if(o!==void 0&&await o(e,t))throw new h(`The multiaddr connection is blocked by gater.${n}`,ee.ERR_CONNECTION_INTERCEPTED)}async upgradeInbound(e,t){if(!await this.components.connectionManager.acceptIncomingConnection(e))throw new h("connection denied",ee.ERR_CONNECTION_DENIED);let o,s,i,a,c,l=AbortSignal.timeout(this.inboundUpgradeTimeout),f=()=>{e.abort(new h("inbound upgrade timeout",ao))};l.addEventListener("abort",f,{once:!0}),Ce(1/0,l);try{if(await this.components.connectionGater.denyInboundConnection?.(e)===!0)throw new h("The multiaddr connection is blocked by gater.acceptConnection",ee.ERR_CONNECTION_INTERCEPTED);this.components.metrics?.trackMultiaddrConnection(e),e.log("starting the inbound connection upgrade");let u=e;if(t?.skipProtection!==!0){let d=this.components.connectionProtector;d!=null&&(e.log("protecting the inbound connection"),u=await d.protect(e))}try{if(o=u,t?.skipEncryption!==!0){({conn:o,remotePeer:s,protocol:c}=await this._encryptInbound(u));let d={...u,...o};await this.shouldBlockConnection(s,d,"denyInboundEncryptedConnection")}else{let d=e.remoteAddr.getPeerId();if(d==null)throw new h("inbound connection that skipped encryption must have a peer id",ee.ERR_INVALID_MULTIADDR);let y=Ae(d);c="native",s=y}if(i=o,t?.muxerFactory!=null)a=t.muxerFactory;else if(this.muxers.size>0){let d=await this._multiplexInbound({...u,...o},this.muxers);a=d.muxerFactory,i=d.stream}}catch(d){throw e.log.error("failed to upgrade inbound connection",d),d}return await this.shouldBlockConnection(s,e,"denyInboundUpgradedConnection"),e.log("successfully upgraded inbound connection"),this._createConnection({cryptoProtocol:c,direction:"inbound",maConn:e,upgradedConn:i,muxerFactory:a,remotePeer:s,transient:t?.transient})}finally{l.removeEventListener("abort",f),this.components.connectionManager.afterUpgradeInbound()}}async upgradeOutbound(e,t){let n=e.remoteAddr.getPeerId(),o;n!=null&&(o=Ae(n),await this.shouldBlockConnection(o,e,"denyOutboundConnection"));let s,i,a,c,l;this.components.metrics?.trackMultiaddrConnection(e),e.log("starting the outbound connection upgrade");let f=e;if(t?.skipProtection!==!0){let u=this.components.connectionProtector;u!=null&&(f=await u.protect(e))}try{if(s=f,t?.skipEncryption!==!0){({conn:s,remotePeer:i,protocol:c}=await this._encryptOutbound(f,o));let u={...f,...s};await this.shouldBlockConnection(i,u,"denyOutboundEncryptedConnection")}else{if(o==null)throw new h("Encryption was skipped but no peer id was passed",ee.ERR_INVALID_PEER);c="native",i=o}if(a=s,t?.muxerFactory!=null)l=t.muxerFactory;else if(this.muxers.size>0){let u=await this._multiplexOutbound({...f,...s},this.muxers);l=u.muxerFactory,a=u.stream}}catch(u){throw e.log.error("failed to upgrade outbound connection",u),await e.close(u),u}return await this.shouldBlockConnection(i,e,"denyOutboundUpgradedConnection"),e.log("successfully upgraded outbound connection"),this._createConnection({cryptoProtocol:c,direction:"outbound",maConn:e,upgradedConn:a,muxerFactory:l,remotePeer:i,transient:t?.transient})}_createConnection(e){let{cryptoProtocol:t,direction:n,maConn:o,upgradedConn:s,remotePeer:i,muxerFactory:a,transient:c}=e,l,f,u;a!=null&&(l=a.createStreamMuxer({direction:n,onIncomingStream:p=>{u!=null&&Promise.resolve().then(async()=>{let m=this.components.registrar.getProtocols(),{stream:g,protocol:b}=await Yu(p,m,{log:p.log,yieldBytes:!1});if(u==null)return;u.log("incoming stream opened on %s",b);let E=zV(b,this.components.registrar);if(XA(b,"inbound",u)===E){let _=new h(`Too many inbound protocol streams for protocol "${b}" - limit ${E}`,ee.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS);throw p.abort(_),_}p.source=g.source,p.sink=g.sink,p.protocol=b,g.closeWrite!=null&&(p.closeWrite=g.closeWrite),g.closeRead!=null&&(p.closeRead=g.closeRead),g.close!=null&&(p.close=g.close),await this.components.peerStore.merge(i,{protocols:[b]}),this.components.metrics?.trackProtocolStream(p,u),this._onStream({connection:u,stream:p,protocol:b})}).catch(async m=>{u.log.error("error handling incoming stream id %s",p.id,m.message,m.code,m.stack),p.timeline.close==null&&await p.close()})}}),f=async(p,m={})=>{if(l==null)throw new h("Stream is not multiplexed",ee.ERR_MUXER_UNAVAILABLE);u.log("starting new stream for protocols %s",p);let g=await l.newStream();u.log.trace("started new stream %s for protocols %s",g.id,p);try{if(m.signal==null){g.log("no abort signal was passed while trying to negotiate protocols %s falling back to default timeout",p);let I=AbortSignal.timeout(WV);Ce(1/0,I),m={...m,signal:I}}g.log.trace("selecting protocol from protocols %s",p);let{stream:b,protocol:E}=await Gu(g,p,{...m,log:g.log,yieldBytes:!0});g.log("selected protocol %s",E);let w=jV(E,this.components.registrar,m);if(XA(E,"outbound",u)>=w){let I=new h(`Too many outbound protocol streams for protocol "${E}" - limit ${w}`,ee.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS);throw g.abort(I),I}return await this.components.peerStore.merge(i,{protocols:[E]}),g.source=b.source,g.sink=b.sink,g.protocol=E,b.closeWrite!=null&&(g.closeWrite=b.closeWrite),b.closeRead!=null&&(g.closeRead=b.closeRead),b.close!=null&&(g.close=b.close),this.components.metrics?.trackProtocolStream(g,u),g}catch(b){throw u.log.error("could not create new stream for protocols %s",p,b),g.timeline.close==null&&g.abort(b),b.code!=null?b:new h(String(b),ee.ERR_UNSUPPORTED_PROTOCOL)}},Promise.all([l.sink(s.source),s.sink(l.source)]).catch(p=>{u.log.error("error piping data through muxer",p)}));let d=o.timeline;o.timeline=new Proxy(d,{set:(...p)=>(u!=null&&p[1]==="close"&&p[2]!=null&&d.close==null&&(async()=>{try{u.status==="open"&&await u.close()}catch(m){u.log.error("error closing connection after timeline close",m)}finally{this.events.safeDispatchEvent("connection:close",{detail:u})}})().catch(m=>{u.log.error("error thrown while dispatching connection:close event",m)}),Reflect.set(...p))}),o.timeline.upgraded=Date.now();let y=()=>{throw new h("connection is not multiplexed",ee.ERR_CONNECTION_NOT_MULTIPLEXED)};return u=jA({remoteAddr:o.remoteAddr,remotePeer:i,status:"open",direction:n,timeline:o.timeline,multiplexer:l?.protocol,encryption:t,transient:c,logger:this.components.logger,newStream:f??y,getStreams:()=>l!=null?l.streams:[],close:async p=>{l!=null&&(u.log.trace("close muxer"),await l.close(p)),u.log.trace("close maconn"),await o.close(p),u.log.trace("closed maconn")},abort:p=>{o.abort(p),l?.abort(p)}}),this.events.safeDispatchEvent("connection:open",{detail:u}),u}_onStream(e){let{connection:t,stream:n,protocol:o}=e,{handler:s,options:i}=this.components.registrar.getHandler(o);if(t.transient&&i.runOnTransientConnection!==!0)throw new h("Cannot open protocol stream on transient connection","ERR_TRANSIENT_CONNECTION");s({connection:t,stream:n})}async _encryptInbound(e){let t=Array.from(this.connectionEncryption.keys());e.log("handling inbound crypto protocol selection",t);try{let{stream:n,protocol:o}=await Yu(e,t,{log:e.log}),s=this.connectionEncryption.get(o);if(s==null)throw new Error(`no crypto module found for ${o}`);return e.log("encrypting inbound connection using",o),{...await s.secureInbound(this.components.peerId,n),protocol:o}}catch(n){throw e.log.error("encrypting inbound connection to %p failed",n),new h(n.message,ee.ERR_ENCRYPTION_FAILED)}}async _encryptOutbound(e,t){let n=Array.from(this.connectionEncryption.keys());e.log("selecting outbound crypto protocol",n);try{e.log.trace("selecting encrypter from %s",n);let{stream:o,protocol:s}=await Gu(e,n,{log:e.log,yieldBytes:!0}),i=this.connectionEncryption.get(s);if(i==null)throw new Error(`no crypto module found for ${s}`);return e.log("encrypting outbound connection to %p using %p",t),{...await i.secureOutbound(this.components.peerId,o,t),protocol:s}}catch(o){throw e.log.error("encrypting outbound connection to %p failed",o),new h(o.message,ee.ERR_ENCRYPTION_FAILED)}}async _multiplexOutbound(e,t){let n=Array.from(t.keys());e.log("outbound selecting muxer %s",n);try{e.log.trace("selecting stream muxer from %s",n);let{stream:o,protocol:s}=await Gu(e,n,{log:e.log,yieldBytes:!0});e.log("selected %s as muxer protocol",s);let i=t.get(s);return{stream:o,muxerFactory:i}}catch(o){throw e.log.error("error multiplexing outbound connection",o),new h(String(o),ee.ERR_MUXER_UNAVAILABLE)}}async _multiplexInbound(e,t){let n=Array.from(t.keys());e.log("inbound handling muxers %s",n);try{let{stream:o,protocol:s}=await Yu(e,n,{log:e.log}),i=t.get(s);return{stream:o,muxerFactory:i}}catch(o){throw e.log.error("error multiplexing inbound connection",o),new h(String(o),ee.ERR_MUXER_UNAVAILABLE)}}};var P8=class extends Fe{peerId;peerStore;contentRouting;peerRouting;metrics;services;logger;status;components;log;constructor(e){super(),this.status="stopped";let t=new Fe,n=t.dispatchEvent.bind(t);t.dispatchEvent=a=>{let c=n(a),l=this.dispatchEvent(new Ct(a.type,{detail:a.detail}));return c||l},Ce(1/0,t),this.peerId=e.peerId,this.logger=e.logger??Qo(),this.log=this.logger.forComponent("libp2p"),this.services={};let o=this.components=OA({peerId:e.peerId,privateKey:e.privateKey,nodeInfo:e.nodeInfo??{name:xp,version:Ep},logger:this.logger,events:t,datastore:e.datastore??new gi,connectionGater:KA(e.connectionGater)});this.peerStore=this.configureComponent("peerStore",new Cp(o,{addressFilter:this.components.connectionGater.filterMultiaddrForPeer,...e.peerStore})),e.metrics!=null&&(this.metrics=this.configureComponent("metrics",e.metrics(this.components))),o.events.addEventListener("peer:update",a=>{if(a.detail.previous==null){let c={id:a.detail.peer.id,multiaddrs:a.detail.peer.addresses.map(l=>l.multiaddr)};o.events.safeDispatchEvent("peer:discovery",{detail:c})}}),e.connectionProtector!=null&&this.configureComponent("connectionProtector",e.connectionProtector(o)),this.components.upgrader=new jp(this.components,{connectionEncryption:(e.connectionEncryption??[]).map((a,c)=>this.configureComponent(`connection-encryption-${c}`,a(this.components))),muxers:(e.streamMuxers??[]).map((a,c)=>this.configureComponent(`stream-muxers-${c}`,a(this.components))),inboundUpgradeTimeout:e.connectionManager.inboundUpgradeTimeout}),this.configureComponent("transportManager",new zp(this.components,e.transportManager)),this.configureComponent("connectionManager",new $p(this.components,e.connectionManager)),this.configureComponent("registrar",new Wp(this.components)),this.configureComponent("addressManager",new Np(this.components,e.addresses));let s=(e.peerRouters??[]).map((a,c)=>this.configureComponent(`peer-router-${c}`,a(this.components)));this.peerRouting=this.components.peerRouting=this.configureComponent("peerRouting",new Yp(this.components,{routers:s}));let i=(e.contentRouters??[]).map((a,c)=>this.configureComponent(`content-router-${c}`,a(this.components)));if(this.contentRouting=this.components.contentRouting=this.configureComponent("contentRouting",new Gp(this.components,{routers:i})),(e.peerDiscovery??[]).forEach((a,c)=>{this.configureComponent(`peer-discovery-${c}`,a(this.components)).addEventListener("peer",f=>{this.#e(f)})}),e.transports?.forEach((a,c)=>{this.components.transportManager.add(this.configureComponent(`transport-${c}`,a(this.components)))}),e.services!=null)for(let a of Object.keys(e.services)){let c=e.services[a],l=c(this.components);if(l==null){this.log.error("service factory %s returned null or undefined instance",a);continue}this.services[a]=l,this.configureComponent(a,l),l[vn]!=null&&(this.log("registering service %s for content routing",a),i.push(l[vn])),l[_n]!=null&&(this.log("registering service %s for peer routing",a),s.push(l[_n])),l[zs]!=null&&(this.log("registering service %s for peer discovery",a),l[zs].addEventListener?.("peer",f=>{this.#e(f)}))}}configureComponent(e,t){return t==null&&this.log.error("component %s was null or undefined",e),this.components[e]=t,t}async start(){if(this.status==="stopped"){this.status="starting",this.log("libp2p is starting");try{await this.components.beforeStart?.(),await this.components.start(),await this.components.afterStart?.(),this.status="started",this.safeDispatchEvent("start",{detail:this}),this.log("libp2p has started")}catch(e){throw this.log.error("An error occurred starting libp2p",e),this.status="started",await this.stop(),e}}}async stop(){this.status==="started"&&(this.log("libp2p is stopping"),this.status="stopping",await this.components.beforeStop?.(),await this.components.stop(),await this.components.afterStop?.(),this.status="stopped",this.safeDispatchEvent("stop",{detail:this}),this.log("libp2p has stopped"))}getConnections(e){return this.components.connectionManager.getConnections(e)}getDialQueue(){return this.components.connectionManager.getDialQueue()}getPeers(){let e=new mt;for(let t of this.components.connectionManager.getConnections())e.add(t.remotePeer);return Array.from(e)}async dial(e,t={}){return this.components.connectionManager.openConnection(e,{priority:75,...t})}async dialProtocol(e,t,n={}){if(t==null)throw new h("no protocols were provided to open a stream",ee.ERR_INVALID_PROTOCOLS_FOR_STREAM);if(t=Array.isArray(t)?t:[t],t.length===0)throw new h("no protocols were provided to open a stream",ee.ERR_INVALID_PROTOCOLS_FOR_STREAM);return(await this.dial(e,n)).newStream(t,n)}getMultiaddrs(){return this.components.addressManager.getAddresses()}getProtocols(){return this.components.registrar.getProtocols()}async hangUp(e,t={}){ns(e)&&(e=Ae(e.getPeerId()??"")),await this.components.connectionManager.closeConnections(e,t)}async getPublicKey(e,t={}){if(this.log("getPublicKey %p",e),e.publicKey!=null)return e.publicKey;try{let s=await this.peerStore.get(e);if(s.id.publicKey!=null)return s.id.publicKey}catch(s){if(s.code!==ee.ERR_NOT_FOUND)throw s}let n=le([x("/pk/"),e.multihash.digest]),o=await this.contentRouting.get(n,t);return TA(o),await this.peerStore.patch(e,{publicKey:o}),o}async handle(e,t,n){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async o=>{await this.components.registrar.handle(o,t,n)}))}async unhandle(e){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async t=>{await this.components.registrar.unhandle(t)}))}async register(e,t){return this.components.registrar.register(e,t)}unregister(e){this.components.registrar.unregister(e)}#e(e){let{detail:t}=e;if(t.id.toString()===this.peerId.toString()){this.log.error(new Error(ee.ERR_DISCOVERED_SELF));return}this.components.peerStore.merge(t.id,{multiaddrs:t.multiaddrs}).catch(n=>{this.log.error(n)})}};async function QA(r={}){let e=r.peerId??=await Fd();if(e.privateKey==null)throw new h("peer id was missing private key","ERR_MISSING_PRIVATE_KEY");return r.privateKey??=await DA(e.privateKey),new P8(await $A(r))}async function JA(r={}){let e=await QA(r);return r.start!==!1&&await e.start(),e}async function ZA(r){let e=r.libp2p?.peerId,t=r.logger??Qo(),n=new qe("/pkcs8/self"),o;e==null&&r.datastore!=null&&(o=Yh(r.keychain)({datastore:r.datastore,logger:t}),await r.datastore.has(n)&&(r.libp2p=r.libp2p??{},r.libp2p.peerId=await o.exportPeerId("self")));let s=vp(r);s.datastore=s.datastore??r.datastore,r=r??{};let i=await JA({...s,...r.libp2p,start:!1});return e==null&&o!=null&&!await r.datastore.has(n)&&await o.importPeer("self",i.peerId),i}async function XV(r={}){let e=r.datastore??new gi,t=r.blockstore??new Tl,n;QV(r.libp2p)?n=r.libp2p:n=await ZA({...r,libp2p:{...r.libp2p,start:void 0},datastore:e});let o=new gd({...r,libp2p:n,datastore:e,blockstore:t,blockBrokers:r.blockBrokers??[o0(),n0()],routers:[ym(n)]});return r.start!==!1&&await o.start(),o}function QV(r){return r==null?!1:["dial","dialProtocol","hangUp","handle","unhandle","getMultiaddrs","getProtocols"].every(t=>typeof r[t]=="function")}return zu(JV);})();
|
|
41
|
+
`),r}var qb=Array.from("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),Wb=r=>[...Array(r)].map(()=>qb.at(Math.floor(Math.random()*qb.length))).join("");var NN=1e4,Tae=Z("webrtc-direct").code,Hb=Z("certhash").code,Pd=class{log;metrics;components;init;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:webrtc-direct"),this.components=e,this.init=t,e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_webrtc-direct_dialer_events_total",{label:"event",help:"Total count of WebRTC-direct dial events by type"})})}async dial(e,t){let n=await this._connect(e,t);return this.log("dialing address: %a",e),n}createListener(e){throw nw("WebRTCTransport.createListener")}filter(e){return e.filter(k9.exactMatch)}[Symbol.toStringTag]="@libp2p/webrtc-direct";[en]=!0;async _connect(e,t){let n=new AbortController,o=n.signal,s=e.getPeerId();if(s===null)throw pd("we need to have the remote's PeerId");let i=ge(s),a=p3(Od(e)),c=await Ki.generateCertificate({name:"ECDSA",namedCurve:"P-256",hash:m3(a.name)}),l=new Ki({certificates:[c]});try{let d=new Promise((_,k)=>{let O=l.createDataChannel("",{negotiated:!0,id:0}),N=setTimeout(()=>{let P=`Data channel was never opened: state: ${O.readyState}`;this.log.error(P),this.metrics?.dialerEvents.increment({open_error:!0}),k(Op("data",P))},NN);O.onopen=P=>{clearTimeout(N),_(O)},O.onerror=P=>{clearTimeout(N);let Y=`Error opening a data channel for handshaking: ${P.target?.toString()??"not specified"}`;this.log.error(Y),this.metrics?.dialerEvents.increment({unknown_error:!0}),k(Op("data",Y))}}),u="libp2p+webrtc+v1/"+Wb(32),f=await l.createOffer(),m=$b(f,u);await l.setLocalDescription(m);let h=Kb(e,u);await l.setRemoteDescription(h);let p=await d,y=this.components.peerId,w=this.generateNoisePrologue(l,a.code,e),E=Ii({prologueBytes:w})(this.components),b=Vi({channel:p,direction:"inbound",logger:this.components.logger,...this.init.dataChannel??{}}),S={...b,sink:b.sink.bind(b),source:async function*(){for await(let _ of b.source)for(let k of _)yield k}()},R=new Ts(this.components,{peerConnection:l,remoteAddr:e,timeline:{open:Date.now()},metrics:this.metrics?.dialerEvents}),A=mc?"iceconnectionstatechange":"connectionstatechange";l.addEventListener(A,()=>{switch(l.connectionState){case"failed":case"disconnected":case"closed":R.close().catch(_=>{this.log.error("error closing connection",_)}).finally(()=>{n.abort()});break;default:break}},{signal:o}),this.metrics?.dialerEvents.increment({peer_connection:!0});let D=new ks(this.components,{peerConnection:l,metrics:this.metrics?.dialerEvents,dataChannelOptions:this.init.dataChannel});return await E.secureInbound(y,S,i),await t.upgrader.upgradeOutbound(R,{skipProtection:!0,skipEncryption:!0,muxerFactory:D})}catch(d){throw l.close(),d}}generateNoisePrologue(e,t,n){if(e.getConfiguration().certificates?.length===0)throw pc("no local certificate");let o=Vb(e,{log:this.log});if(o==null)throw pc("no local fingerprint found");let s=o.trim().toLowerCase().replaceAll(":",""),i=L(s,"hex"),a=zb.encode(i,t),c=h3.decode(Od(n)),l=L("libp2p-webrtc-noise:");return _e([l,a,c])}};function Gb(r){return e=>new Pd(e,r)}function Yb(r){return e=>new xd(e,r)}var ON=[Z("tcp").code,Z("dns").code,Z("dnsaddr").code,Z("dns4").code,Z("dns6").code];function Xb(r){let e;try{e=Z("sni").code}catch{return null}for(let[t,n]of r)if(t===e&&n!==void 0)return n;return null}function Qb(r){return r.some(([e,t])=>e===Z("tls").code)}function sr(r,e,t){let n=jb[Z(r).name];if(n===void 0)throw new Error(`Can't interpret protocol ${Z(r).name}`);let o=n(e,t);return r===Z("ip6").code?`[${o}]`:o}var jb={ip4:(r,e)=>r,ip6:(r,e)=>e.length===0?r:`[${r}]`,tcp:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`tcp://${sr(t[0],t[1]??"",e)}:${r}`},udp:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`udp://${sr(t[0],t[1]??"",e)}:${r}`},dnsaddr:(r,e)=>r,dns4:(r,e)=>r,dns6:(r,e)=>r,dns:(r,e)=>r,ipfs:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${sr(t[0],t[1]??"",e)}/ipfs/${r}`},p2p:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${sr(t[0],t[1]??"",e)}/p2p/${r}`},http:(r,e)=>{let t=Qb(e),n=Xb(e);if(t&&n!==null)return`https://${n}`;let o=t?"https://":"http://",s=e.pop();if(s===void 0)throw new Error("Unexpected end of multiaddr");let i=sr(s[0],s[1]??"",e);return i=i.replace("tcp://",""),`${o}${i}`},tls:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return sr(t[0],t[1]??"",e)},sni:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return sr(t[0],t[1]??"",e)},https:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");let n=sr(t[0],t[1]??"",e);return n=n.replace("tcp://",""),`https://${n}`},ws:(r,e)=>{let t=Qb(e),n=Xb(e);if(t&&n!==null)return`wss://${n}`;let o=t?"wss://":"ws://",s=e.pop();if(s===void 0)throw new Error("Unexpected end of multiaddr");let i=sr(s[0],s[1]??"",e);return i=i.replace("tcp://",""),`${o}${i}`},wss:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");let n=sr(t[0],t[1]??"",e);return n=n.replace("tcp://",""),`wss://${n}`},"p2p-websocket-star":(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${sr(t[0],t[1]??"",e)}/p2p-websocket-star`},"p2p-webrtc-star":(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${sr(t[0],t[1]??"",e)}/p2p-webrtc-star`},"p2p-webrtc-direct":(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${sr(t[0],t[1]??"",e)}/p2p-webrtc-direct`}};function Zb(r,e){let n=Q(r).stringTuples(),o=n.pop();if(o===void 0)throw new Error("Unexpected end of multiaddr");let s=Z(o[0]),i=jb[s.name];if(i==null)throw new Error(`No interpreter found for ${s.name}`);let a=i(o[1]??"",n);return e?.assumeHttp!==!1&&ON.includes(o[0])&&(a=a.replace(/^.*:\/\//,""),o[1]==="443"?a=`https://${a}`:a=`http://${a}`),(a.startsWith("http://")||a.startsWith("https://"))&&(a=new URL(a).toString(),a.endsWith("/")&&(a=a.substring(0,a.length-1))),a}var Jb=async r=>{if(r.readyState>=2)throw new Error("socket closed");r.readyState!==1&&await new Promise((e,t)=>{function n(){r.removeEventListener("open",o),r.removeEventListener("error",s)}function o(){n(),e()}function s(i){n(),t(i.error??new Error(`connect ECONNREFUSED ${r.url}`))}r.addEventListener("open",o),r.addEventListener("error",s)})};var eE=(r,e)=>(e=e??{},e.closeOnEnd=e.closeOnEnd!==!1,async n=>{for await(let o of n){try{await Jb(r)}catch(s){if(s.message==="socket closed")break;throw s}if(r.readyState===r.CLOSING||r.readyState===r.CLOSED)break;r.send(o)}e.closeOnEnd!=null&&r.readyState<=1&&await new Promise((o,s)=>{r.addEventListener("close",i=>{if(i.wasClean||i.code===1006)o();else{let a=Object.assign(new Error("ws error"),{event:i});s(a)}}),setTimeout(()=>{r.close()})})});var oE=ke(rE(),1);function nE(r){return r instanceof ArrayBuffer||r?.constructor?.name==="ArrayBuffer"&&typeof r?.byteLength=="number"}var sE=r=>{r.binaryType="arraybuffer";let e=async()=>{await new Promise((s,i)=>{if(n){s();return}if(o!=null){i(o);return}let a=d=>{r.removeEventListener("open",c),r.removeEventListener("error",l),d()},c=()=>{a(s)},l=d=>{a(()=>{i(d.error??new Error(`connect ECONNREFUSED ${r.url}`))})};r.addEventListener("open",c),r.addEventListener("error",l)})},t=async function*(){let s=new oE.EventIterator(({push:i,stop:a,fail:c})=>{let l=u=>{let f=null;typeof u.data=="string"&&(f=L(u.data)),nE(u.data)&&(f=new Uint8Array(u.data)),u.data instanceof Uint8Array&&(f=u.data),f!=null&&i(f)},d=u=>{c(u.error??new Error("Socket error"))};return r.addEventListener("message",l),r.addEventListener("error",d),r.addEventListener("close",a),()=>{r.removeEventListener("message",l),r.removeEventListener("error",d),r.removeEventListener("close",a)}},{highWaterMark:1/0});await e();for await(let i of s)yield nE(i)?new Uint8Array(i):i}(),n=r.readyState===1,o;return r.addEventListener("open",()=>{n=!0,o=null}),r.addEventListener("close",()=>{n=!1,o=null}),r.addEventListener("error",s=>{n||(o=s.error??new Error(`connect ECONNREFUSED ${r.url}`))}),Object.assign(t,{connected:e})};var iE=(r,e)=>{e=e??{};let t=sE(r),n=e.remoteAddress,o=e.remotePort;if(r.url!=null)try{let i=new URL(r.url);n=i.hostname,o=parseInt(i.port,10)}catch{}if(n==null||o==null)throw new Error("Remote connection did not have address and/or port");return{sink:eE(r,e),source:t,connected:async()=>{await t.connected()},close:async()=>{(r.readyState===r.CONNECTING||r.readyState===r.OPEN)&&await new Promise(i=>{r.addEventListener("close",()=>{i()}),r.close()})},destroy:()=>{r.terminate!=null?r.terminate():r.close()},remoteAddress:n,remotePort:o,socket:r}};var aE=WebSocket;var LN={"http:":"ws:","https:":"wss:"},cE="ws:",lE=(r,e)=>{if(r.startsWith("//")&&(r=`${e?.protocol??cE}${r}`),r.startsWith("/")&&e!=null){let n=e.protocol??cE,o=e.host,s=e.port!=null&&o?.endsWith(`:${e.port}`)!==!0?`:${e.port}`:"";r=`${n}//${o}${s}${r}`}let t=new URL(r);for(let[n,o]of Object.entries(LN))t.protocol===n&&(t.protocol=o);return t};function uE(r,e){let t=typeof window>"u"?void 0:window.location;e=e??{};let n=lE(r,t),o=new aE(n.toString(),e.websocket);return iE(o,e)}function dE(r){return r.filter(e=>{if(e.protoCodes().includes(290))return!1;let t=e.decapsulateCode(421);return ki.matches(t)||_s.matches(t)})}function fE(r){return r.filter(e=>{if(e.protoCodes().includes(290))return!1;let t=e.decapsulateCode(421);return _s.matches(t)})}function hE(){throw new Error("WebSocket Servers can not be created in the browser!")}function pE(r,e,t){let n=t.logger.forComponent("libp2p:websockets:maconn"),o={log:n,async sink(s){try{await r.sink(async function*(){for await(let i of s)i instanceof Uint8Array?yield i:yield i.subarray()}())}catch(i){i.type!=="aborted"&&n.error(i)}},source:r.source,remoteAddr:e,timeline:{open:Date.now()},async close(s={}){let i=Date.now();if(s.signal==null){let c=AbortSignal.timeout(500);s={...s,signal:c}}let a=()=>{let{host:c,port:l}=o.remoteAddr.toOptions();n("timeout closing stream to %s:%s after %dms, destroying it manually",c,l,Date.now()-i),this.abort(new g("Socket close timeout","ERR_SOCKET_CLOSE_TIMEOUT"))};s.signal?.addEventListener("abort",a);try{await r.close()}catch(c){n.error("error closing WebSocket gracefully",c),this.abort(c)}finally{s.signal?.removeEventListener("abort",a),o.timeline.close=Date.now()}},abort(s){let{host:i,port:a}=o.remoteAddr.toOptions();n("timeout closing stream to %s:%s due to error",i,a,s),r.destroy(),o.timeline.close=Date.now()}};return r.socket.addEventListener("close",()=>{o.timeline.close==null&&(o.timeline.close=Date.now())},{once:!0}),o}var w3=class{log;init;logger;constructor(e,t){this.log=e.logger.forComponent("libp2p:websockets"),this.logger=e.logger,this.init=t}[Symbol.toStringTag]="@libp2p/websockets";[en]=!0;async dial(e,t){this.log("dialing %s",e),t=t??{};let n=await this._connect(e,t),o=pE(n,e,{logger:this.logger});this.log("new outbound connection %s",o.remoteAddr);let s=await t.upgrader.upgradeOutbound(o);return this.log("outbound connection %s upgraded",o.remoteAddr),s}async _connect(e,t){if(t?.signal?.aborted===!0)throw new Tr;let n=e.toOptions();this.log("dialing %s:%s",n.host,n.port);let o=se(),s=uE(Zb(e),this.init);if(s.socket.addEventListener("error",()=>{let c=new g(`Could not connect to ${e.toString()}`,"ERR_CONNECTION_FAILED");this.log.error("connection error:",c),o.reject(c)}),t.signal==null)return await Promise.race([s.connected(),o.promise]),this.log("connected %s",e),s;let i,a=new Promise((c,l)=>{if(i=()=>{l(new Tr),s.close().catch(d=>{this.log.error("error closing raw socket",d)})},t?.signal?.aborted===!0){i();return}t?.signal?.addEventListener("abort",i)});try{await Promise.race([a,o.promise,s.connected()])}finally{i!=null&&t?.signal?.removeEventListener("abort",i)}return this.log("connected %s",e),s}createListener(e){return hE({logger:this.logger},{...this.init,...e})}filter(e){return e=Array.isArray(e)?e:[e],this.init?.filter!=null?this.init?.filter(e):P1||L1?fE(e):dE(e)}};function mE(r={}){return e=>new w3(e,r)}async function b3(r,e,t,n,o,s){let i=s.forComponent(`libp2p:webtransport:stream:${t}:${e}`),a=r.writable.getWriter(),c=r.readable.getReader();await a.ready;function l(){let h=n.findIndex(p=>p===m);h!==-1&&(n.splice(h,1),m.timeline.close=Date.now(),o?.(m))}let d=!1,u=!1;(async function(){let h=await a.closed.catch(p=>p);if(h!=null){let p=h.message;p.includes("aborted by the remote server")||p.includes("STOP_SENDING")||i.error(`WebTransport writer closed unexpectedly: streamId=${e} err=${h.message}`)}d=!0,d&&u&&l()})().catch(()=>{i.error("WebTransport failed to cleanup closed stream")}),async function(){let h=await c.closed.catch(p=>p);h!=null&&i.error(`WebTransport reader closed unexpectedly: streamId=${e} err=${h.message}`),u=!0,d&&u&&l()}().catch(()=>{i.error("WebTransport failed to cleanup closed stream")});let f=!1,m={id:e,status:"open",writeStatus:"ready",readStatus:"ready",abort(h){d||(a.abort(h).catch(p=>{i.error("could not abort stream",p)}),d=!0),u=!0,this.status="aborted",this.writeStatus="closed",this.readStatus="closed",this.timeline.reset=this.timeline.close=this.timeline.closeRead=this.timeline.closeWrite=Date.now(),l()},async close(h){this.status="closing",await Promise.all([m.closeRead(h),m.closeWrite(h)]),l(),this.status="closed",this.timeline.close=Date.now()},async closeRead(h){if(!u){this.readStatus="closing";try{await c.cancel()}catch(p){p.toString().includes("RESET_STREAM")===!0&&(d=!0)}this.timeline.closeRead=Date.now(),this.readStatus="closed",u=!0}d&&l()},async closeWrite(h){if(!d){d=!0,this.writeStatus="closing";try{await a.close()}catch(p){p.toString().includes("RESET_STREAM")===!0&&(u=!0)}this.timeline.closeWrite=Date.now(),this.writeStatus="closed"}u&&l()},direction:t,timeline:{open:Date.now()},metadata:{},source:async function*(){for(;;){let h=await c.read();if(h.done){u=!0,d&&l();return}yield new de(h.value)}}(),sink:async function(h){if(f)throw new Error("sink already called on stream");f=!0;try{this.writeStatus="writing";for await(let p of h)if(p instanceof Uint8Array)await a.write(p);else for(let y of p)await a.write(y);this.writeStatus="done"}finally{this.timeline.closeWrite=Date.now(),this.writeStatus="closed",await m.closeWrite()}},log:i};return m}function E3(){return{source:{[Symbol.asyncIterator](){return{async next(){return new Promise(()=>{})}}}},sink:async r=>new Promise(()=>{})}}function gE(r,e){return e.filter(n=>!!r.find(o=>j(n,o))).length===e.length}var FN=Object.values(ur).map(r=>r.decoder).reduce((r,e)=>r.or(e));function VN(r){return ir.decode(FN.decode(r))}function yE(r){if(!k1.matches(r))throw new g("Invalid multiaddr, was not a WebTransport address","ERR_INVALID_MULTIADDR");let e=r.stringTuples(),t=e.filter(([i,a])=>i===Z("certhash").code).map(([i,a])=>VN(a??"")),n=e.filter(([i,a])=>i===Z("p2p").code).map(([i,a])=>ge(a??""))[0],o=r.toOptions(),s=o.host;return o.family===6&&s?.includes(":")&&(s=`[${s}]`),{url:`https://${s}:${o.port}`,certhashes:t,remotePeer:n}}var x3=class{log;components;config;metrics;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:webtransport"),this.components=e,this.config={maxInboundStreams:t.maxInboundStreams??1e3},e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_webtransport_dialer_events_total",{label:"event",help:"Total count of WebTransport dialer events by type"})})}[Symbol.toStringTag]="@libp2p/webtransport";[en]=!0;async dial(e,t){t?.signal?.throwIfAborted(),this.log("dialing %s",e);let n=this.components.peerId;if(n===void 0)throw new Error("Need a local peerid");t=t??{};let{url:o,certhashes:s,remotePeer:i}=yE(e);if(i==null)throw new Error("Need a target peerid");if(s.length===0)throw new Error("Expected multiaddr to contain certhashes");let a,c,l=()=>{},d=!1,u=!1,f=!1;try{this.metrics?.dialerEvents.increment({pending:!0});let m=new WebTransport(`${o}/.well-known/libp2p-webtransport?type=noise`,{serverCertificateHashes:s.map(h=>({algorithm:"sha-256",value:h.digest}))});if(l=h=>{if(!d)try{this.metrics?.dialerEvents.increment({[h]:!0}),m.close()}catch(p){this.log.error("error closing wt session",p)}finally{c!=null&&(c.timeline.close=Date.now()),d=!0}},a=()=>{l(u?"noise_timeout":"ready_timeout")},t.signal?.addEventListener("abort",a,{once:!0}),await Promise.race([m.closed,m.ready]),u=!0,this.metrics?.dialerEvents.increment({ready:!0}),m.closed.catch(h=>{this.log.error("error on remote wt session close",h)}).finally(()=>{l("remote_close")}),!await this.authenticateWebTransport(m,n,i,s))throw new Error("Failed to authenticate webtransport");return this.metrics?.dialerEvents.increment({open:!0}),c={close:async()=>{this.log("Closing webtransport"),l("close")},abort:h=>{this.log("aborting webtransport due to passed err",h),l("abort")},remoteAddr:e,timeline:{open:Date.now()},log:this.components.logger.forComponent("libp2p:webtransport:maconn"),...E3()},f=!0,await t.upgrader.upgradeOutbound(c,{skipEncryption:!0,muxerFactory:this.webtransportMuxer(m),skipProtection:!0})}catch(m){throw this.log.error("caught wt session err",m),l(f?"upgrade_error":u?"noise_error":"ready_error"),m}finally{a!=null&&t.signal?.removeEventListener("abort",a)}}async authenticateWebTransport(e,t,n,o){let s=await e.createBidirectionalStream(),i=s.writable.getWriter(),a=s.readable.getReader();await i.ready;let c={source:async function*(){for(;;){let u=await a.read();if(u.value!=null&&(yield u.value),u.done)break}}(),sink:async function(u){for await(let f of u)f instanceof Uint8Array?await i.write(f):await i.write(f.subarray())}},l=Ii()(this.components),{remoteExtensions:d}=await l.secureOutbound(t,c,n);if(i.close().catch(u=>{this.log.error(`Failed to close authentication stream writer: ${u.message}`)}),a.cancel().catch(u=>{this.log.error(`Failed to close authentication stream reader: ${u.message}`)}),!gE(d?.webtransportCerthashes??[],o.map(u=>u.bytes)))throw new Error("Our certhashes are not a subset of the remote's reported certhashes");return!0}webtransportMuxer(e){let t=0,n=this.config,o=this;return{protocol:"webtransport",createStreamMuxer:s=>{typeof s=="function"&&(s={onIncomingStream:s});let i=[];return async function(){let c=e.incomingBidirectionalStreams.getReader();for(;;){let{done:l,value:d}=await c.read();if(l)break;if(i.length>=n.maxInboundStreams)d.writable.close().catch(u=>{o.log.error(`Failed to close inbound stream that crossed our maxInboundStream limit: ${u.message}`)}),d.readable.cancel().catch(u=>{o.log.error(`Failed to close inbound stream that crossed our maxInboundStream limit: ${u.message}`)});else{let u=await b3(d,String(t++),"inbound",i,s?.onStreamEnd,o.components.logger);i.push(u),s?.onIncomingStream?.(u)}}}().catch(()=>{this.log.error("WebTransport failed to receive incoming stream")}),{protocol:"webtransport",streams:i,newStream:async c=>{let l=await e.createBidirectionalStream(),d=await b3(l,String(t++),s?.direction??"outbound",i,s?.onStreamEnd,o.components.logger);return i.push(d),d},close:async c=>{this.log("Closing webtransport muxer"),await Promise.all(i.map(async l=>l.close(c)))},abort:c=>{this.log("Aborting webtransport muxer with err:",c);for(let l of i)l.abort(c)},...E3()}}}}createListener(e){throw new Error("Webtransport servers are not supported in Node or the browser")}filter(e){return e.filter(k1.exactMatch)}};function wE(r={}){return e=>new x3(e,r)}var v3=ke(gu(),1);function bE(r,e){let t=e.map((n,o)=>({record:an(n),index:o}));return t.sort((n,o)=>{let s=n.record.sequence,i=o.record.sequence;if(s>i)return-1;if(s<i)return 1;if(n.record.validityType===$t.ValidityType.EOL&&o.record.validityType===$t.ValidityType.EOL){let a=v3.default.fromString(n.record.validity).toDate(),c=v3.default.fromString(o.record.validity).toDate();if(a.getTime()>c.getTime())return-1;if(a.getTime()<c.getTime())return 1}return 0}),t[0].index}var Md="1.2.3",Ud="libp2p";var xE="4.0.1-31cdfa8",vE="helia";var _E={list:["/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN","/dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa","/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb","/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt","/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ"]};function Fd(r={}){return{peerId:r.peerId,addresses:{listen:["/webrtc"]},transports:[X2({discoverRelays:1}),Yb(),Gb(),wE(),mE()],connectionEncryption:[Ii()],streamMuxers:[$g(),Zy()],peerDiscovery:[i9(_E)],services:{autoNAT:Yg(),dcutr:L9(),delegatedRouting:()=>I7("https://delegated-ipfs.dev"),dht:Ry({clientMode:!0,validators:{ipns:Nu},selectors:{ipns:bE}}),identify:Y9({agentVersion:`${vE}/${xE} ${Ud}/${Md} UserAgent=${globalThis.navigator.userAgent}`}),keychain:ud(r.keychain),ping:rw()}}}var _t={ERR_INVALID_PARAMETERS:"ERR_INVALID_PARAMETERS"};var ji;(function(r){let e;(function(o){let s;o.codec=()=>(s==null&&(s=te((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)=>{let c={key:"",value:new Uint8Array(0)},l=a==null?i.len:i.pos+a;for(;i.pos<l;){let d=i.uint32();switch(d>>>3){case 1:c.key=i.string();break;case 2:c.value=i.bytes();break;default:i.skipType(d&7);break}}return c})),s),o.encode=i=>ee(i,o.codec()),o.decode=i=>J(i,o.codec())})(e=r.Peer$metadataEntry||(r.Peer$metadataEntry={}));let t;(function(o){let s;o.codec=()=>(s==null&&(s=te((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),Kd.codec().encode(i.value,a)),c.lengthDelimited!==!1&&a.ldelim()},(i,a)=>{let c={key:""},l=a==null?i.len:i.pos+a;for(;i.pos<l;){let d=i.uint32();switch(d>>>3){case 1:c.key=i.string();break;case 2:c.value=Kd.codec().decode(i,i.uint32());break;default:i.skipType(d&7);break}}return c})),s),o.encode=i=>ee(i,o.codec()),o.decode=i=>J(i,o.codec())})(t=r.Peer$tagsEntry||(r.Peer$tagsEntry={}));let n;r.codec=()=>(n==null&&(n=te((o,s,i={})=>{if(i.lengthDelimited!==!1&&s.fork(),o.addresses!=null)for(let a of o.addresses)s.uint32(10),Vd.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);i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={addresses:[],protocols:[],metadata:new Map,tags:new Map},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.addresses.push(Vd.codec().decode(o,o.uint32()));break;case 2:i.protocols.push(o.string());break;case 4:i.publicKey=o.bytes();break;case 5:i.peerRecordEnvelope=o.bytes();break;case 6:{let l=r.Peer$metadataEntry.codec().decode(o,o.uint32());i.metadata.set(l.key,l.value);break}case 7:{let l=r.Peer$tagsEntry.codec().decode(o,o.uint32());i.tags.set(l.key,l.value);break}default:o.skipType(c&7);break}}return i})),n),r.encode=o=>ee(o,r.codec()),r.decode=o=>J(o,r.codec())})(ji||(ji={}));var Vd;(function(r){let e;r.codec=()=>(e==null&&(e=te((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.multiaddr!=null&&t.multiaddr.byteLength>0&&(n.uint32(10),n.bytes(t.multiaddr)),t.isCertified!=null&&(n.uint32(16),n.bool(t.isCertified)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={multiaddr:new Uint8Array(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.multiaddr=t.bytes();break;case 2:o.isCertified=t.bool();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(Vd||(Vd={}));var Kd;(function(r){let e;r.codec=()=>(e==null&&(e=te((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.value!=null&&t.value!==0&&(n.uint32(8),n.uint32(t.value)),t.expiry!=null&&(n.uint32(16),n.uint64(t.expiry)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={value:0},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.value=t.uint32();break;case 2:o.expiry=t.uint64();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(Kd||(Kd={}));function Zi(r,e){let t=ji.decode(e);t.publicKey!=null&&r.publicKey==null&&(r=j8({...r,publicKey:r.publicKey}));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:r,addresses:t.addresses.map(({multiaddr:s,isCertified:i})=>({multiaddr:Q(s),isCertified:i??!1})),metadata:t.metadata,peerRecordEnvelope:t.peerRecordEnvelope??void 0,tags:n}}var _3="/peers/";function Ji(r){if(!Ks(r)||r.type==null)throw new g("Invalid PeerId",_t.ERR_INVALID_PARAMETERS);let e=r.toCID().toString();return new Oe(`${_3}${e}`)}async function SE(r,e,t){let n=new Map;for(let o of t){if(o==null)continue;if(o.multiaddr instanceof Uint8Array&&(o.multiaddr=Q(o.multiaddr)),!so(o.multiaddr))throw new g("Multiaddr was invalid",_t.ERR_INVALID_PARAMETERS);if(!await e(r,o.multiaddr))continue;let s=o.isCertified??!1,i=o.multiaddr.toString(),a=n.get(i);a!=null?o.isCertified=a.isCertified||s:n.set(i,{multiaddr:o.multiaddr,isCertified:s})}return[...n.values()].sort((o,s)=>o.multiaddr.toString().localeCompare(s.multiaddr.toString())).map(({isCertified:o,multiaddr:s})=>({isCertified:o,multiaddr:s.bytes}))}async function Hd(r,e,t,n){if(e==null)throw new g("Invalid PeerData",_t.ERR_INVALID_PARAMETERS);if(e.publicKey!=null&&r.publicKey!=null&&!j(e.publicKey,r.publicKey))throw new g("publicKey bytes do not match peer id publicKey bytes",_t.ERR_INVALID_PARAMETERS);let o=n.existingPeer;if(o!=null&&!r.equals(o.id))throw new g("peer id did not match existing peer id",_t.ERR_INVALID_PARAMETERS);let s=o?.addresses??[],i=new Set(o?.protocols??[]),a=o?.metadata??new Map,c=o?.tags??new Map,l=o?.peerRecordEnvelope;if(t==="patch"){if((e.multiaddrs!=null||e.addresses!=null)&&(s=[],e.multiaddrs!=null&&s.push(...e.multiaddrs.map(u=>({isCertified:!1,multiaddr:u}))),e.addresses!=null&&s.push(...e.addresses)),e.protocols!=null&&(i=new Set(e.protocols)),e.metadata!=null){let u=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);a=$d(u,{validate:RE})}if(e.tags!=null){let u=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags);c=$d(u,{validate:AE,map:IE})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}if(t==="merge"){if(e.multiaddrs!=null&&s.push(...e.multiaddrs.map(u=>({isCertified:!1,multiaddr:u}))),e.addresses!=null&&s.push(...e.addresses),e.protocols!=null&&(i=new Set([...i,...e.protocols])),e.metadata!=null){let u=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);for(let[f,m]of u)m==null?a.delete(f):a.set(f,m);a=$d([...a.entries()],{validate:RE})}if(e.tags!=null){let u=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags),f=new Map(c);for(let[m,h]of u)h==null?f.delete(m):f.set(m,h);c=$d([...f.entries()],{validate:AE,map:IE})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}let d={addresses:await SE(r,n.addressFilter??(async()=>!0),s),protocols:[...i.values()].sort((u,f)=>u.localeCompare(f)),metadata:a,tags:c,publicKey:o?.id.publicKey??e.publicKey??r.publicKey,peerRecordEnvelope:l};return r.type!=="RSA"&&delete d.publicKey,d}function $d(r,e){let t=new Map;for(let[n,o]of r)o!=null&&e.validate(n,o);for(let[n,o]of r.sort(([s],[i])=>s.localeCompare(i)))o!=null&&t.set(n,e.map?.(n,o)??o);return t}function RE(r,e){if(typeof r!="string")throw new g("Metadata key must be a string",_t.ERR_INVALID_PARAMETERS);if(!(e instanceof Uint8Array))throw new g("Metadata value must be a Uint8Array",_t.ERR_INVALID_PARAMETERS)}function AE(r,e){if(typeof r!="string")throw new g("Tag name must be a string",_t.ERR_INVALID_PARAMETERS);if(e.value!=null){if(parseInt(`${e.value}`,10)!==e.value)throw new g("Tag value must be an integer",_t.ERR_INVALID_PARAMETERS);if(e.value<0||e.value>100)throw new g("Tag value must be between 0-100",_t.ERR_INVALID_PARAMETERS)}if(e.ttl!=null){if(parseInt(`${e.ttl}`,10)!==e.ttl)throw new g("Tag ttl must be an integer",_t.ERR_INVALID_PARAMETERS);if(e.ttl<0)throw new g("Tag ttl must be between greater than 0",_t.ERR_INVALID_PARAMETERS)}}function IE(r,e){let t;return e.expiry!=null&&(t=e.expiry),e.ttl!=null&&(t=BigInt(Date.now()+Number(e.ttl))),{value:e.value??0,expiry:t}}function qd(r,e,t){let n=r.toString().split("/")[2],o=it.decode(n),s=Ye(o),i=t.get(s);if(i!=null)return i;let a=Zi(s,e);return t.set(s,a),a}function KN(r,e){return r==null?{}:{prefix:_3,filters:(r.filters??[]).map(t=>({key:n,value:o})=>t(qd(n,o,e))),orders:(r.orders??[]).map(t=>(n,o)=>t(qd(n.key,n.value,e),qd(o.key,o.value,e)))}}var Wd=class{peerId;datastore;lock;addressFilter;constructor(e,t={}){this.peerId=e.peerId,this.datastore=e.datastore,this.addressFilter=t.addressFilter,this.lock=qa({name:"peer-store",singleProcess:!0})}async has(e){return this.datastore.has(Ji(e))}async delete(e){if(this.peerId.equals(e))throw new g("Cannot delete self peer",_t.ERR_INVALID_PARAMETERS);await this.datastore.delete(Ji(e))}async load(e){let t=await this.datastore.get(Ji(e));return Zi(e,t)}async save(e,t){let{existingBuf:n,existingPeer:o}=await this.#e(e),s=await Hd(e,t,"patch",{addressFilter:this.addressFilter});return this.#t(e,s,n,o)}async patch(e,t){let{existingBuf:n,existingPeer:o}=await this.#e(e),s=await Hd(e,t,"patch",{addressFilter:this.addressFilter,existingPeer:o});return this.#t(e,s,n,o)}async merge(e,t){let{existingBuf:n,existingPeer:o}=await this.#e(e),s=await Hd(e,t,"merge",{addressFilter:this.addressFilter,existingPeer:o});return this.#t(e,s,n,o)}async*all(e){let t=new wt;for await(let{key:n,value:o}of this.datastore.query(KN(e??{},t))){let s=qd(n,o,t);s.id.equals(this.peerId)||(yield s)}}async#e(e){try{let t=await this.datastore.get(Ji(e)),n=Zi(e,t);return{existingBuf:t,existingPeer:n}}catch(t){if(t.code!=="ERR_NOT_FOUND")throw t}return{}}async#t(e,t,n,o){let s=ji.encode(t);return n!=null&&j(s,n)?{peer:Zi(e,s),previous:o,updated:!1}:(await this.datastore.put(Ji(e),s),{peer:Zi(e,s),previous:o,updated:!0})}};var zd=class{store;events;peerId;log;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-store"),this.events=e.events,this.peerId=e.peerId,this.store=new Wd(e,t)}async forEach(e,t){this.log.trace("forEach await read lock");let n=await this.store.lock.readLock();this.log.trace("forEach got read lock");try{for await(let o of this.store.all(t))e(o)}finally{this.log.trace("forEach release read lock"),n()}}async all(e){this.log.trace("all await read lock");let t=await this.store.lock.readLock();this.log.trace("all got read lock");try{return await Ha(this.store.all(e))}finally{this.log.trace("all release read lock"),t()}}async delete(e){this.log.trace("delete await write lock");let t=await this.store.lock.writeLock();this.log.trace("delete got write lock");try{await this.store.delete(e)}finally{this.log.trace("delete release write lock"),t()}}async has(e){this.log.trace("has await read lock");let t=await this.store.lock.readLock();this.log.trace("has got read lock");try{return await this.store.has(e)}finally{this.log.trace("has release read lock"),t()}}async get(e){this.log.trace("get await read lock");let t=await this.store.lock.readLock();this.log.trace("get got read lock");try{return await this.store.load(e)}finally{this.log.trace("get release read lock"),t()}}async save(e,t){this.log.trace("save await write lock");let n=await this.store.lock.writeLock();this.log.trace("save got write lock");try{let o=await this.store.save(e,t);return this.#e(e,o),o.peer}finally{this.log.trace("save release write lock"),n()}}async patch(e,t){this.log.trace("patch await write lock");let n=await this.store.lock.writeLock();this.log.trace("patch got write lock");try{let o=await this.store.patch(e,t);return this.#e(e,o),o.peer}finally{this.log.trace("patch release write lock"),n()}}async merge(e,t){this.log.trace("merge await write lock");let n=await this.store.lock.writeLock();this.log.trace("merge got write lock");try{let o=await this.store.merge(e,t);return this.#e(e,o),o.peer}finally{this.log.trace("merge release write lock"),n()}}async consumePeerRecord(e,t){let n=await Gr.openAndCertify(e,rr.DOMAIN);if(t?.equals(n.peerId)===!1)return this.log("envelope peer id was not the expected peer id - expected: %p received: %p",t,n.peerId),!1;let o=rr.createFromProtobuf(n.payload),s;try{s=await this.get(n.peerId)}catch(i){if(i.code!=="ERR_NOT_FOUND")throw i}if(s?.peerRecordEnvelope!=null){let i=await Gr.createFromProtobuf(s.peerRecordEnvelope),a=rr.createFromProtobuf(i.payload);if(a.seqNumber>=o.seqNumber)return this.log("sequence number was lower or equal to existing sequence number - stored: %d received: %d",a.seqNumber,o.seqNumber),!1}return await this.patch(o.peerId,{peerRecordEnvelope:e,addresses:o.multiaddrs.map(i=>({isCertified:!0,multiaddr:i}))}),!0}#e(e,t){t.updated&&(this.peerId.equals(e)?this.events.safeDispatchEvent("self:peer:update",{detail:t}):this.events.safeDispatchEvent("peer:update",{detail:t}))}};function DE(r,e){let t;return function(){let n=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(n,e)}}var $N=r=>r;function S3(r,e){let t=r.getPeerId();return t!=null&&ge(t).equals(e)&&(r=r.decapsulate(Q(`/p2p/${e.toString()}`))),r}var Gd=class{log;components;listen;announce;observed;announceFilter;constructor(e,t={}){let{listen:n=[],announce:o=[]}=t;this.components=e,this.log=e.logger.forComponent("libp2p:address-manager"),this.listen=n.map(s=>s.toString()),this.announce=new Set(o.map(s=>s.toString())),this.observed=new Map,this.announceFilter=t.announceFilter??$N,this._updatePeerStoreAddresses=DE(this._updatePeerStoreAddresses.bind(this),1e3),e.events.addEventListener("transport:listening",()=>{this._updatePeerStoreAddresses()}),e.events.addEventListener("transport:close",()=>{this._updatePeerStoreAddresses()})}_updatePeerStoreAddresses(){let e=this.getAnnounceAddrs().concat(this.components.transportManager.getAddrs()).concat([...this.observed.entries()].filter(([t,n])=>n.confident).map(([t])=>Q(t))).map(t=>t.getPeerId()===this.components.peerId.toString()?t.decapsulate(`/p2p/${this.components.peerId.toString()}`):t);this.components.peerStore.patch(this.components.peerId,{multiaddrs:e}).catch(t=>{this.log.error("error updating addresses",t)})}getListenAddrs(){return Array.from(this.listen).map(e=>Q(e))}getAnnounceAddrs(){return Array.from(this.announce).map(e=>Q(e))}getObservedAddrs(){return Array.from(this.observed).map(([e])=>Q(e))}addObservedAddr(e){e=S3(e,this.components.peerId);let t=e.toString();this.observed.has(t)||this.observed.set(t,{confident:!1})}confirmObservedAddr(e){e=S3(e,this.components.peerId);let t=e.toString(),o=(this.observed.get(t)??{confident:!1}).confident;this.observed.set(t,{confident:!0}),o||this._updatePeerStoreAddresses()}removeObservedAddr(e){e=S3(e,this.components.peerId);let t=e.toString();this.observed.delete(t)}getAddresses(){let e=this.getAnnounceAddrs().map(n=>n.toString());e.length===0&&(e=this.components.transportManager.getAddrs().map(n=>n.toString())),e=e.concat(Array.from(this.observed).filter(([n,o])=>o.confident).map(([n])=>n));let t=new Set(e);return this.announceFilter(Array.from(t).map(n=>Q(n))).map(n=>n.protos().pop()?.path===!0||n.getPeerId()===this.components.peerId.toString()?n:n.encapsulate(`/p2p/${this.components.peerId.toString()}`))}};var R3=class{components={};_started=!1;constructor(e={}){this.components={};for(let[t,n]of Object.entries(e))this.components[t]=n;this.components.logger==null&&(this.components.logger=Jn())}isStarted(){return this._started}async _invokeStartableMethod(e){await Promise.all(Object.values(this.components).filter(t=>kc(t)).map(async t=>{await t[e]?.()}))}async beforeStart(){await this._invokeStartableMethod("beforeStart")}async start(){await this._invokeStartableMethod("start"),this._started=!0}async afterStart(){await this._invokeStartableMethod("afterStart")}async beforeStop(){await this._invokeStartableMethod("beforeStop")}async stop(){await this._invokeStartableMethod("stop"),this._started=!1}async afterStop(){await this._invokeStartableMethod("afterStop")}},HN=["metrics","connectionProtector"],qN=["components","isStarted","beforeStart","start","afterStart","beforeStop","stop","afterStop","then","_invokeStartableMethod"];function TE(r={}){let e=new R3(r);return new Proxy(e,{get(n,o,s){if(typeof o=="string"&&!qN.includes(o)){let i=e.components[o];if(i==null&&!HN.includes(o))throw new g(`${o} not set`,"ERR_SERVICE_MISSING");return i}return Reflect.get(n,o,s)},set(n,o,s){return typeof o=="string"?e.components[o]=s:Reflect.set(n,o,s),!0}})}function kE(r={}){return{denyDialPeer:async()=>!1,denyDialMultiaddr:async e=>{let t=e.stringTuples();return t[0][0]===4||t[0][0]===41?!!_r(`${t[0][1]}`):!1},denyInboundConnection:async()=>!1,denyOutboundConnection:async()=>!1,denyInboundEncryptedConnection:async()=>!1,denyOutboundEncryptedConnection:async()=>!1,denyInboundUpgradedConnection:async()=>!1,denyOutboundUpgradedConnection:async()=>!1,filterMultiaddrForPeer:async()=>!0,...r}}function A3(r){try{let{address:e}=r.nodeAddress();return!!_r(e)}catch{return!0}}function WN(r,e){let t=A3(r.multiaddr),n=A3(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function zN(r,e){return r.isCertified&&!e.isCertified?-1:!r.isCertified&&e.isCertified?1:0}function GN(r,e){let t=rc.exactMatch(r.multiaddr),n=rc.exactMatch(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function ea(r,e){let t=WN(r,e);if(t!==0)return t;let n=GN(r,e);return n!==0?n:zN(r,e)}var D3=ke(kf(),1),T3=ke(OE(),1);function Yd(r,e,t){return`${r}?name=${e}&type=${t}`}async function PE(r,e){return await(await fetch(r,{headers:new Headers({accept:"application/dns-json"}),signal:e})).json()}function Os(r,e){return`${e}_${r}`}var I3=Object.assign((0,D3.default)("dns-over-http-resolver"),{error:(0,D3.default)("dns-over-http-resolver:error")}),k3=class{_cache;_TXTcache;_servers;_request;_abortControllers;constructor(e={}){this._cache=new T3.default({max:e?.maxCache??100}),this._TXTcache=new T3.default({max:e?.maxCache??100}),this._servers=["https://cloudflare-dns.com/dns-query","https://dns.google/resolve"],this._request=e.request??PE,this._abortControllers=[]}cancel(){this._abortControllers.forEach(e=>{e.abort()})}getServers(){return this._servers}_getShuffledServers(){let e=[...this._servers];for(let t=e.length-1;t>0;t--){let n=Math.floor(Math.random()*t),o=e[t];e[t]=e[n],e[n]=o}return e}setServers(e){this._servers=e}async resolve(e,t="A"){switch(t){case"A":return this.resolve4(e);case"AAAA":return this.resolve6(e);case"TXT":return this.resolveTxt(e);default:throw new Error(`${t} is not supported`)}}async resolve4(e){let t="A",n=this._cache.get(Os(e,t));if(n!=null)return n;let o=!1;for(let s of this._getShuffledServers()){let i=new AbortController;this._abortControllers.push(i);try{let a=await this._request(Yd(s,e,t),i.signal),c=a.Answer.map(d=>d.data),l=Math.min(...a.Answer.map(d=>d.TTL));return this._cache.set(Os(e,t),c,{ttl:l}),c}catch{i.signal.aborted&&(o=!0),I3.error(`${s} could not resolve ${e} record ${t}`)}finally{this._abortControllers=this._abortControllers.filter(a=>a!==i)}}throw o?Object.assign(new Error("queryA ECANCELLED"),{code:"ECANCELLED"}):new Error(`Could not resolve ${e} record ${t}`)}async resolve6(e){let t="AAAA",n=this._cache.get(Os(e,t));if(n!=null)return n;let o=!1;for(let s of this._getShuffledServers()){let i=new AbortController;this._abortControllers.push(i);try{let a=await this._request(Yd(s,e,t),i.signal),c=a.Answer.map(d=>d.data),l=Math.min(...a.Answer.map(d=>d.TTL));return this._cache.set(Os(e,t),c,{ttl:l}),c}catch{i.signal.aborted&&(o=!0),I3.error(`${s} could not resolve ${e} record ${t}`)}finally{this._abortControllers=this._abortControllers.filter(a=>a!==i)}}throw o?Object.assign(new Error("queryAaaa ECANCELLED"),{code:"ECANCELLED"}):new Error(`Could not resolve ${e} record ${t}`)}async resolveTxt(e){let t="TXT",n=this._TXTcache.get(Os(e,t));if(n!=null)return n;let o=!1;for(let s of this._getShuffledServers()){let i=new AbortController;this._abortControllers.push(i);try{let a=await this._request(Yd(s,e,t),i.signal),c=a.Answer.map(d=>[d.data.replace(/['"]+/g,"")]),l=Math.min(...a.Answer.map(d=>d.TTL));return this._TXTcache.set(Os(e,t),c,{ttl:l}),c}catch{i.signal.aborted&&(o=!0),I3.error(`${s} could not resolve ${e} record ${t}`)}finally{this._abortControllers=this._abortControllers.filter(a=>a!==i)}}throw o?Object.assign(new Error("queryTxt ECANCELLED"),{code:"ECANCELLED"}):new Error(`Could not resolve ${e} record ${t}`)}clearCache(){this._cache.clear(),this._TXTcache.clear()}},LE=k3;var BE=LE;var{code:ZN}=Z("dnsaddr");async function ta(r,e={}){let t=new BE;e.signal!=null&&e.signal.addEventListener("abort",()=>{t.cancel()});let n=r.getPeerId(),[,o]=r.stringTuples().find(([a])=>a===ZN)??[];if(o==null)throw new Error("No hostname found in multiaddr");let i=(await t.resolveTxt(`_dnsaddr.${o}`)).flat().map(a=>a.split("=")[1]).filter(Boolean);return n!=null&&(i=i.filter(a=>a.includes(n))),i}var Yn;(function(r){r.NOT_STARTED_YET="The libp2p node is not started yet",r.ERR_PROTECTOR_REQUIRED="Private network is enforced, but no protector was provided",r.NOT_FOUND="Not found"})(Yn||(Yn={}));var z;(function(r){r.ERR_PROTECTOR_REQUIRED="ERR_PROTECTOR_REQUIRED",r.ERR_PEER_DIAL_INTERCEPTED="ERR_PEER_DIAL_INTERCEPTED",r.ERR_CONNECTION_INTERCEPTED="ERR_CONNECTION_INTERCEPTED",r.ERR_INVALID_PROTOCOLS_FOR_STREAM="ERR_INVALID_PROTOCOLS_FOR_STREAM",r.ERR_CONNECTION_ENDED="ERR_CONNECTION_ENDED",r.ERR_CONNECTION_FAILED="ERR_CONNECTION_FAILED",r.ERR_NODE_NOT_STARTED="ERR_NODE_NOT_STARTED",r.ERR_ALREADY_ABORTED="ERR_ALREADY_ABORTED",r.ERR_TOO_MANY_ADDRESSES="ERR_TOO_MANY_ADDRESSES",r.ERR_NO_VALID_ADDRESSES="ERR_NO_VALID_ADDRESSES",r.ERR_RELAYED_DIAL="ERR_RELAYED_DIAL",r.ERR_DIALED_SELF="ERR_DIALED_SELF",r.ERR_DISCOVERED_SELF="ERR_DISCOVERED_SELF",r.ERR_DUPLICATE_TRANSPORT="ERR_DUPLICATE_TRANSPORT",r.ERR_ENCRYPTION_FAILED="ERR_ENCRYPTION_FAILED",r.ERR_HOP_REQUEST_FAILED="ERR_HOP_REQUEST_FAILED",r.ERR_INVALID_KEY="ERR_INVALID_KEY",r.ERR_INVALID_MESSAGE="ERR_INVALID_MESSAGE",r.ERR_INVALID_PARAMETERS="ERR_INVALID_PARAMETERS",r.ERR_INVALID_PEER="ERR_INVALID_PEER",r.ERR_MUXER_UNAVAILABLE="ERR_MUXER_UNAVAILABLE",r.ERR_NOT_FOUND="ERR_NOT_FOUND",r.ERR_TRANSPORT_UNAVAILABLE="ERR_TRANSPORT_UNAVAILABLE",r.ERR_TRANSPORT_DIAL_FAILED="ERR_TRANSPORT_DIAL_FAILED",r.ERR_UNSUPPORTED_PROTOCOL="ERR_UNSUPPORTED_PROTOCOL",r.ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED="ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED",r.ERR_INVALID_MULTIADDR="ERR_INVALID_MULTIADDR",r.ERR_SIGNATURE_NOT_VALID="ERR_SIGNATURE_NOT_VALID",r.ERR_FIND_SELF="ERR_FIND_SELF",r.ERR_NO_ROUTERS_AVAILABLE="ERR_NO_ROUTERS_AVAILABLE",r.ERR_CONNECTION_NOT_MULTIPLEXED="ERR_CONNECTION_NOT_MULTIPLEXED",r.ERR_NO_DIAL_TOKENS="ERR_NO_DIAL_TOKENS",r.ERR_INVALID_CMS="ERR_INVALID_CMS",r.ERR_MISSING_KEYS="ERR_MISSING_KEYS",r.ERR_NO_KEY="ERR_NO_KEY",r.ERR_INVALID_KEY_NAME="ERR_INVALID_KEY_NAME",r.ERR_INVALID_KEY_TYPE="ERR_INVALID_KEY_TYPE",r.ERR_KEY_ALREADY_EXISTS="ERR_KEY_ALREADY_EXISTS",r.ERR_INVALID_KEY_SIZE="ERR_INVALID_KEY_SIZE",r.ERR_KEY_NOT_FOUND="ERR_KEY_NOT_FOUND",r.ERR_OLD_KEY_NAME_INVALID="ERR_OLD_KEY_NAME_INVALID",r.ERR_NEW_KEY_NAME_INVALID="ERR_NEW_KEY_NAME_INVALID",r.ERR_PASSWORD_REQUIRED="ERR_PASSWORD_REQUIRED",r.ERR_PEM_REQUIRED="ERR_PEM_REQUIRED",r.ERR_CANNOT_READ_KEY="ERR_CANNOT_READ_KEY",r.ERR_MISSING_PRIVATE_KEY="ERR_MISSING_PRIVATE_KEY",r.ERR_MISSING_PUBLIC_KEY="ERR_MISSING_PUBLIC_KEY",r.ERR_INVALID_OLD_PASS_TYPE="ERR_INVALID_OLD_PASS_TYPE",r.ERR_INVALID_NEW_PASS_TYPE="ERR_INVALID_NEW_PASS_TYPE",r.ERR_INVALID_PASS_LENGTH="ERR_INVALID_PASS_LENGTH",r.ERR_NOT_IMPLEMENTED="ERR_NOT_IMPLEMENTED",r.ERR_WRONG_PING_ACK="ERR_WRONG_PING_ACK",r.ERR_INVALID_RECORD="ERR_INVALID_RECORD",r.ERR_ALREADY_SUCCEEDED="ERR_ALREADY_SUCCEEDED",r.ERR_NO_HANDLER_FOR_PROTOCOL="ERR_NO_HANDLER_FOR_PROTOCOL",r.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS",r.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS",r.ERR_CONNECTION_DENIED="ERR_CONNECTION_DENIED",r.ERR_TRANSFER_LIMIT_EXCEEDED="ERR_TRANSFER_LIMIT_EXCEEDED"})(z||(z={}));var JN={addresses:{listen:[],announce:[],noAnnounce:[],announceFilter:r=>r},connectionManager:{resolvers:{dnsaddr:ta},addressSorter:ea},transportManager:{faultTolerance:Qn.FATAL_ALL}};async function ME(r){let e=Ui(JN,r);if(e.connectionProtector===null&&globalThis.process?.env?.LIBP2P_FORCE_PNET!=null)throw new g(Yn.ERR_PROTECTOR_REQUIRED,z.ERR_PROTECTOR_REQUIRED);if(!(await ut(e.privateKey.public.bytes,e.privateKey.bytes)).equals(e.peerId))throw new g("Private key doesn't match peer id",z.ERR_INVALID_KEY);return e}function Xd(r){if(Ks(r))return{peerId:r,multiaddrs:[]};Array.isArray(r)||(r=[r]);let e;if(r.length>0){let t=r[0].getPeerId();e=t==null?void 0:ge(t),r.forEach(n=>{if(!so(n))throw new g("Invalid Multiaddr",z.ERR_INVALID_MULTIADDR);let o=n.getPeerId();if(o==null){if(e!=null)throw new g("Multiaddrs must all have the same peer id or have no peer id",z.ERR_INVALID_PARAMETERS)}else{let s=ge(o);if(e==null||!e.equals(s))throw new g("Multiaddrs must all have the same peer id or have no peer id",z.ERR_INVALID_PARAMETERS)}})}return{peerId:e,multiaddrs:r}}var Qd="last-dial-failure";var jd=5,Zd=100,Jd=50,UE=1e3*60*7;var Ps={minConnections:jd,maxQueueLength:100,autoDialConcurrency:25,autoDialPriority:0,autoDialInterval:5e3,autoDialPeerRetryThreshold:UE,autoDialDiscoveredPeersDebounce:10},ef=class{connectionManager;peerStore;queue;minConnections;autoDialPriority;autoDialIntervalMs;autoDialMaxQueueLength;autoDialPeerRetryThresholdMs;autoDialDiscoveredPeersDebounce;autoDialInterval;started;running;log;constructor(e,t){this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.minConnections=t.minConnections??Ps.minConnections,this.autoDialPriority=t.autoDialPriority??Ps.autoDialPriority,this.autoDialIntervalMs=t.autoDialInterval??Ps.autoDialInterval,this.autoDialMaxQueueLength=t.maxQueueLength??Ps.maxQueueLength,this.autoDialPeerRetryThresholdMs=t.autoDialPeerRetryThreshold??Ps.autoDialPeerRetryThreshold,this.autoDialDiscoveredPeersDebounce=t.autoDialDiscoveredPeersDebounce??Ps.autoDialDiscoveredPeersDebounce,this.log=e.logger.forComponent("libp2p:connection-manager:auto-dial"),this.started=!1,this.running=!1,this.queue=new Po({concurrency:t.autoDialConcurrency??Ps.autoDialConcurrency,metricName:"libp2p_autodial_queue",metrics:e.metrics}),this.queue.addEventListener("error",o=>{this.log.error("error during auto-dial",o.detail)}),e.events.addEventListener("connection:close",()=>{this.autoDial().catch(o=>{this.log.error(o)})});let n;e.events.addEventListener("peer:discovery",()=>{clearTimeout(n),n=setTimeout(()=>{this.autoDial().catch(o=>{this.log.error(o)})},this.autoDialDiscoveredPeersDebounce)})}isStarted(){return this.started}start(){this.started=!0}afterStart(){this.autoDial().catch(e=>{this.log.error("error while autodialing",e)})}stop(){this.queue.clear(),clearTimeout(this.autoDialInterval),this.started=!1,this.running=!1}async autoDial(){if(!this.started||this.running)return;let e=this.connectionManager.getConnectionsMap(),t=e.size;if(t>=this.minConnections){this.minConnections>0&&this.log.trace("have enough connections %d/%d",t,this.minConnections);return}if(this.queue.size>this.autoDialMaxQueueLength){this.log("not enough connections %d/%d but auto dial queue is full",t,this.minConnections),this.sheduleNextAutodial();return}this.running=!0,this.log("not enough connections %d/%d - will dial peers to increase the number of connections",t,this.minConnections);let n=new Je(this.connectionManager.getDialQueue().map(l=>l.peerId).filter(Boolean)),o=await this.peerStore.all({filters:[l=>l.addresses.length===0?(this.log.trace("not autodialing %p because they have no addresses",l.id),!1):e.has(l.id)?(this.log.trace("not autodialing %p because they are already connected",l.id),!1):n.has(l.id)?(this.log.trace("not autodialing %p because they are already being dialed",l.id),!1):this.queue.has(l.id)?(this.log.trace("not autodialing %p because they are already being autodialed",l.id),!1):!0]}),s=o.sort(()=>Math.random()>.5?1:-1),i=new wt;for(let l of s)i.has(l.id)||i.set(l.id,[...l.tags.values()].reduce((d,u)=>d+u.value,0));let c=s.sort((l,d)=>{let u=i.get(l.id)??0,f=i.get(d.id)??0;return u>f?-1:u<f?1:0}).filter(l=>{let d=l.metadata.get(Qd);if(d==null)return!0;let u=parseInt(B(d));return isNaN(u)?!0:Date.now()-u>this.autoDialPeerRetryThresholdMs});this.log("selected %d/%d peers to dial",c.length,o.length);for(let l of c)this.queue.add(async()=>{let d=this.connectionManager.getConnectionsMap().size;if(d>=this.minConnections){this.log("got enough connections now %d/%d",d,this.minConnections),this.queue.clear();return}this.log("connecting to a peerStore stored peer %p",l.id),await this.connectionManager.openConnection(l.id,{priority:this.autoDialPriority})},{peerId:l.id}).catch(d=>{this.log.error("could not connect to peerStore stored peer",d)});this.running=!1,this.sheduleNextAutodial()}sheduleNextAutodial(){this.started&&(this.autoDialInterval=setTimeout(()=>{this.autoDial().catch(e=>{this.log.error("error while autodialing",e)})},this.autoDialIntervalMs))}};var FE={maxConnections:Zd,allow:[]},tf=class{maxConnections;connectionManager;peerStore;allow;events;log;constructor(e,t={}){this.maxConnections=t.maxConnections??FE.maxConnections,this.allow=t.allow??FE.allow,this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager:connection-pruner"),e.events.addEventListener("connection:open",()=>{this.maybePruneConnections().catch(n=>{this.log.error(n)})})}async maybePruneConnections(){let e=this.connectionManager.getConnections(),t=e.length,n=Math.max(t-this.maxConnections,0);if(this.log("checking max connections limit %d/%d",t,this.maxConnections),t<=this.maxConnections)return;this.log("max connections limit exceeded %d/%d, pruning %d connection(s)",t,this.maxConnections,n);let o=new wt;for(let a of e){let c=a.remotePeer;if(!o.has(c)){o.set(c,0);try{let l=await this.peerStore.get(c);o.set(c,[...l.tags.values()].reduce((d,u)=>d+u.value,0))}catch(l){l.code!=="ERR_NOT_FOUND"&&this.log.error("error loading peer tags",l)}}}let s=e.sort((a,c)=>{let l=o.get(a.remotePeer)??0,d=o.get(c.remotePeer)??0;if(l>d)return 1;if(l<d)return-1;let u=a.timeline.open,f=c.timeline.open;return u<f?1:u>f?-1:0}),i=[];for(let a of s)if(this.log("too many connections open - closing a connection to %p",a.remotePeer),this.allow.some(l=>a.remoteAddr.toString().startsWith(l.toString()))||i.push(a),i.length===n)break;await Promise.all(i.map(async a=>{try{await a.close()}catch(c){this.log.error(c)}})),this.events.safeDispatchEvent("connection:prune",{detail:i})}};async function P3(r,e){if(!r.protoNames().includes("dnsaddr"))return[r];let n=await rO(r,e),i=(await Promise.all(n.map(async a=>P3(a,e)))).flat().reduce((a,c)=>(a.find(l=>l.equals(c))==null&&a.push(c),a),[]);return e.log("resolved %s to",r,i.map(a=>a.toString())),i}async function rO(r,e){try{return r=Q(r.toString()),await r.resolve(e)}catch(t){return e.log.error(`multiaddr ${r.toString()} could not be resolved`,t),[]}}var rf={addressSorter:ea,maxParallelDials:Jd,maxPeerAddrsToDial:25,dialTimeout:3e4,resolvers:{dnsaddr:ta}},nf=class{queue;components;addressSorter;maxPeerAddrsToDial;dialTimeout;shutDownController;connections;log;constructor(e,t={}){this.addressSorter=t.addressSorter??rf.addressSorter,this.maxPeerAddrsToDial=t.maxPeerAddrsToDial??rf.maxPeerAddrsToDial,this.dialTimeout=t.dialTimeout??rf.dialTimeout,this.connections=t.connections??new wt,this.log=e.logger.forComponent("libp2p:connection-manager:dial-queue"),this.components=e,this.shutDownController=new AbortController,ve(1/0,this.shutDownController.signal);for(let[n,o]of Object.entries(t.resolvers??{}))ul.set(n,o);this.queue=new Vn({concurrency:t.maxParallelDials??rf.maxParallelDials,metricName:"libp2p_dial_queue",metrics:e.metrics}),this.queue.addEventListener("error",n=>{this.log.error("error in dial queue",n.detail)})}start(){this.shutDownController=new AbortController}stop(){this.shutDownController.abort(),this.queue.abort()}async dial(e,t={}){let{peerId:n,multiaddrs:o}=Xd(e),s=Array.from(this.connections.values()).flat().find(a=>t.force===!0?!1:a.remotePeer.equals(n)?!0:o.find(c=>c.equals(a.remoteAddr)));if(s!=null)return this.log("already connected to %a",s.remoteAddr),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 l of o)if(c.has(l.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 i.join(t)}return this.log("creating dial target for %p",n,o.map(a=>a.toString())),this.queue.add(async a=>{let c=this.createDialAbortController(a?.signal),l;try{l=await this.calculateMultiaddrs(n,a?.multiaddrs,{...a,signal:c}),l.map(({multiaddr:d})=>d.toString()).forEach(d=>{a?.multiaddrs.add(d)})}catch(d){throw c.clear(),d}try{let d=0,u=[];for(let f of l){if(d===this.maxPeerAddrsToDial)throw this.log("dialed maxPeerAddrsToDial (%d) addresses for %p, not trying any others",d,n),new g("Peer had more than maxPeerAddrsToDial",z.ERR_TOO_MANY_ADDRESSES);d++;try{let m=await this.components.transportManager.dial(f.multiaddr,{...a,signal:c});return this.log("dial to %a succeeded",f.multiaddr),m}catch(m){if(this.log.error("dial failed to %a",f.multiaddr,m),n!=null)try{await this.components.peerStore.patch(n,{metadata:{[Qd]:L(Date.now().toString())}})}catch(h){this.log.error("could not update last dial failure key for %p",n,h)}if(c.aborted)throw new g(m.message,yn);u.push(m)}}throw u.length===1?u[0]:new Tc(u,"All multiaddr dials failed",z.ERR_TRANSPORT_DIAL_FAILED)}finally{c.clear()}},{peerId:n,priority:t.priority,multiaddrs:new Set(o.map(a=>a.toString())),signal:t.signal})}createDialAbortController(e){let t=lt([AbortSignal.timeout(this.dialTimeout),this.shutDownController.signal,e]);return ve(1/0,t),t}async calculateMultiaddrs(e,t=new Set,n={}){let o=[...t].map(u=>({multiaddr:Q(u),isCertified:!1}));if(e!=null){if(this.components.peerId.equals(e))throw new g("Tried to dial self",z.ERR_DIALED_SELF);if(await this.components.connectionGater.denyDialPeer?.(e)===!0)throw new g("The dial request is blocked by gater.allowDialPeer",z.ERR_PEER_DIAL_INTERCEPTED);if(o.length===0){this.log("loading multiaddrs for %p",e);try{let u=await this.components.peerStore.get(e);o.push(...u.addresses),this.log("loaded multiaddrs for %p",e,o.map(({multiaddr:f})=>f.toString()))}catch(u){if(u.code!==z.ERR_NOT_FOUND)throw u}}if(o.length===0){this.log("looking up multiaddrs for %p in the peer routing",e);try{let u=await this.components.peerRouting.findPeer(e);this.log("found multiaddrs for %p in the peer routing",e,o.map(({multiaddr:f})=>f.toString())),o.push(...u.multiaddrs.map(f=>({multiaddr:f,isCertified:!1})))}catch(u){u.code!==z.ERR_NO_ROUTERS_AVAILABLE&&this.log.error("looking up multiaddrs for %p in the peer routing failed",e,u)}}}let s=(await Promise.all(o.map(async u=>{let f=await P3(u.multiaddr,{...n,log:this.log});return f.length===1&&f[0].equals(u.multiaddr)?u:f.map(m=>({multiaddr:m,isCertified:!1}))}))).flat();if(e!=null){let u=`/p2p/${e.toString()}`;s=s.map(f=>f.multiaddr.protos().pop()?.path===!0?f:f.multiaddr.getPeerId()==null?{multiaddr:f.multiaddr.encapsulate(u),isCertified:f.isCertified}:f)}let i=s.filter(u=>{if(this.components.transportManager.transportForMultiaddr(u.multiaddr)==null)return!1;let f=u.multiaddr.getPeerId();return e!=null&&f!=null?e.equals(f):!0}),a=new Map;for(let u of i){let f=u.multiaddr.toString(),m=a.get(f);if(m!=null){m.isCertified=m.isCertified||u.isCertified||!1;continue}a.set(f,u)}let c=[...a.values()];if(c.length===0)throw new g("The dial request has no valid addresses",z.ERR_NO_VALID_ADDRESSES);let l=[];for(let u of c)this.components.connectionGater.denyDialMultiaddr!=null&&await this.components.connectionGater.denyDialMultiaddr(u.multiaddr)||l.push(u);let d=l.sort(this.addressSorter);if(d.length===0)throw new g("The connection gater denied all addresses in the dial request",z.ERR_NO_VALID_ADDRESSES);return this.log.trace("addresses for %p before filtering",e??"unknown peer",s.map(({multiaddr:u})=>u.toString())),this.log.trace("addresses for %p after filtering",e??"unknown peer",d.map(({multiaddr:u})=>u.toString())),d}};var sO=50,Ls={minConnections:jd,maxConnections:Zd,inboundConnectionThreshold:5,maxIncomingPendingConnections:10,autoDialConcurrency:25,autoDialPriority:0,autoDialMaxQueueLength:100},of=class{started;connections;allow;deny;maxIncomingPendingConnections;incomingPendingConnections;maxConnections;dialQueue;autoDial;connectionPruner;inboundConnectionRateLimiter;peerStore;metrics;events;log;constructor(e,t={}){this.maxConnections=t.maxConnections??Ls.maxConnections;let n=t.minConnections??Ls.minConnections;if(this.maxConnections<n)throw new g("Connection Manager maxConnections must be greater than minConnections",z.ERR_INVALID_PARAMETERS);this.connections=new wt,this.started=!1,this.peerStore=e.peerStore,this.metrics=e.metrics,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager"),this.onConnect=this.onConnect.bind(this),this.onDisconnect=this.onDisconnect.bind(this),this.events.addEventListener("connection:open",this.onConnect),this.events.addEventListener("connection:close",this.onDisconnect),this.allow=(t.allow??[]).map(o=>Q(o)),this.deny=(t.deny??[]).map(o=>Q(o)),this.incomingPendingConnections=0,this.maxIncomingPendingConnections=t.maxIncomingPendingConnections??Ls.maxIncomingPendingConnections,this.inboundConnectionRateLimiter=new Fi({points:t.inboundConnectionThreshold??Ls.inboundConnectionThreshold,duration:1}),this.autoDial=new ef({connectionManager:this,peerStore:e.peerStore,events:e.events,logger:e.logger},{minConnections:n,autoDialConcurrency:t.autoDialConcurrency??Ls.autoDialConcurrency,autoDialPriority:t.autoDialPriority??Ls.autoDialPriority,maxQueueLength:t.autoDialMaxQueueLength??Ls.autoDialMaxQueueLength}),this.connectionPruner=new tf({connectionManager:this,peerStore:e.peerStore,events:e.events,logger:e.logger},{maxConnections:this.maxConnections,allow:this.allow}),this.dialQueue=new nf(e,{addressSorter:t.addressSorter??ea,maxParallelDials:t.maxParallelDials??Jd,maxPeerAddrsToDial:t.maxPeerAddrsToDial??25,dialTimeout:t.dialTimeout??3e4,resolvers:t.resolvers??{dnsaddr:ta},connections:this.connections})}isStarted(){return this.started}async start(){this.metrics?.registerMetricGroup("libp2p_connection_manager_connections",{calculate:()=>{let e={inbound:0,outbound:0};for(let t of this.connections.values())for(let n of t)n.direction==="inbound"?e.inbound++:e.outbound++;return e}}),this.metrics?.registerMetricGroup("libp2p_protocol_streams_total",{label:"protocol",calculate:()=>{let e={};for(let t of this.connections.values())for(let n of t)for(let o of n.streams){let s=`${o.direction} ${o.protocol??"unnegotiated"}`;e[s]=(e[s]??0)+1}return e}}),this.metrics?.registerMetricGroup("libp2p_connection_manager_protocol_streams_per_connection_90th_percentile",{label:"protocol",calculate:()=>{let e={};for(let n of this.connections.values())for(let o of n){let s={};for(let i of o.streams){let a=`${i.direction} ${i.protocol??"unnegotiated"}`;s[a]=(s[a]??0)+1}for(let[i,a]of Object.entries(s))e[i]=e[i]??[],e[i].push(a)}let t={};for(let[n,o]of Object.entries(e)){o=o.sort((i,a)=>i-a);let s=Math.floor(o.length*.9);t[n]=o[s]}return t}}),this.dialQueue.start(),this.autoDial.start(),this.started=!0,this.log("started")}async afterStart(){Promise.resolve().then(async()=>{let e=await this.peerStore.all({filters:[t=>t.tags.has(f4)]});await Promise.all(e.map(async t=>{await this.openConnection(t.id).catch(n=>{this.log.error(n)})}))}).catch(e=>{this.log.error(e)}),this.autoDial.afterStart()}async stop(){this.dialQueue.stop(),this.autoDial.stop();let e=[];for(let t of this.connections.values())for(let n of t)e.push((async()=>{try{await n.close()}catch(o){this.log.error(o)}})());this.log("closing %d connections",e.length),await Promise.all(e),this.connections.clear(),this.log("stopped")}onConnect(e){this._onConnect(e).catch(t=>{this.log.error(t)})}async _onConnect(e){let{detail:t}=e;if(!this.started){await t.close();return}let n=t.remotePeer,o=this.connections.get(n),s=!1;o!=null?o.push(t):(s=!0,this.connections.set(n,[t])),n.publicKey!=null&&n.type==="RSA"&&await this.peerStore.patch(n,{publicKey:n.publicKey}),s&&this.events.safeDispatchEvent("peer:connect",{detail:t.remotePeer})}onDisconnect(e){let{detail:t}=e;if(!this.started)return;let n=t.remotePeer,o=this.connections.get(n);o!=null&&o.length>1?(o=o.filter(s=>s.id!==t.id),this.connections.set(n,o)):o!=null&&(this.connections.delete(n),this.events.safeDispatchEvent("peer:disconnect",{detail:t.remotePeer}))}getConnections(e){if(e!=null)return this.connections.get(e)??[];let t=[];for(let n of this.connections.values())t=t.concat(n);return t}getConnectionsMap(){return this.connections}async openConnection(e,t={}){if(!this.isStarted())throw new g("Not started",z.ERR_NODE_NOT_STARTED);t.signal?.throwIfAborted();let{peerId:n}=Xd(e);if(n!=null&&t.force!==!0){this.log("dial %p",n);let a=this.getConnections(n).find(c=>!c.transient);if(a!=null)return this.log("had an existing non-transient connection to %p",n),a}let o=await this.dialQueue.dial(e,{...t,priority:t.priority??sO}),s=this.connections.get(o.remotePeer);s==null&&(s=[],this.connections.set(o.remotePeer,s));let i=!1;for(let a of s)a.id===o.id&&(i=!0);return i||s.push(o),o}async closeConnections(e,t={}){let n=this.connections.get(e)??[];await Promise.all(n.map(async o=>{try{await o.close(t)}catch(s){o.abort(s)}}))}async acceptIncomingConnection(e){if(this.deny.some(o=>e.remoteAddr.toString().startsWith(o.toString())))return this.log("connection from %a refused - connection remote address was in deny list",e.remoteAddr),!1;if(this.allow.some(o=>e.remoteAddr.toString().startsWith(o.toString())))return this.incomingPendingConnections++,!0;if(this.incomingPendingConnections===this.maxIncomingPendingConnections)return this.log("connection from %a refused - incomingPendingConnections exceeded by host",e.remoteAddr),!1;if(e.remoteAddr.isThinWaistAddress()){let o=e.remoteAddr.nodeAddress().address;try{await this.inboundConnectionRateLimiter.consume(o,1)}catch{return this.log("connection from %a refused - inboundConnectionThreshold exceeded by host %s",e.remoteAddr,o),!1}}return this.getConnections().length<this.maxConnections?(this.incomingPendingConnections++,!0):(this.log("connection from %a refused - maxConnections exceeded",e.remoteAddr),!1)}afterUpgradeInbound(){this.incomingPendingConnections--}getDialQueue(){let e={queued:"queued",running:"active",errored:"error",complete:"success"};return this.dialQueue.queue.queue.map(t=>({id:t.id,status:e[t.status],peerId:t.options.peerId,multiaddrs:[...t.options.multiaddrs].map(n=>Q(n))}))}};var sf=class{routers;started;components;constructor(e,t){this.routers=t.routers??[],this.started=!1,this.components=e}isStarted(){return this.started}async start(){this.started=!0}async stop(){this.started=!1}async*findProviders(e,t={}){if(this.routers.length===0)throw new g("No content routers available",z.ERR_NO_ROUTERS_AVAILABLE);let n=this,o=new Je;for await(let s of Tt(...n.routers.map(i=>i.findProviders(e,t))))s!=null&&(s.multiaddrs.length>0&&await this.components.peerStore.merge(s.id,{multiaddrs:s.multiaddrs}),!o.has(s.id)&&(o.add(s.id),yield s))}async provide(e,t={}){if(this.routers.length===0)throw new g("No content routers available",z.ERR_NO_ROUTERS_AVAILABLE);await Promise.all(this.routers.map(async n=>{await n.provide(e,t)}))}async put(e,t,n){if(!this.isStarted())throw new g(Yn.NOT_STARTED_YET,z.ERR_NODE_NOT_STARTED);await Promise.all(this.routers.map(async o=>{await o.put(e,t,n)}))}async get(e,t){if(!this.isStarted())throw new g(Yn.NOT_STARTED_YET,z.ERR_NODE_NOT_STARTED);return Promise.any(this.routers.map(async n=>n.get(e,t)))}};var af=class{log;peerId;peerStore;routers;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-routing"),this.peerId=e.peerId,this.peerStore=e.peerStore,this.routers=t.routers??[]}async findPeer(e,t){if(this.routers.length===0)throw new g("No peer routers available",z.ERR_NO_ROUTERS_AVAILABLE);if(e.toString()===this.peerId.toString())throw new g("Should not try to find self",z.ERR_FIND_SELF);let n=this,o=Tt(...this.routers.map(s=>async function*(){try{yield await s.findPeer(e,t)}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}),s;throw new g(Yn.NOT_FOUND,z.ERR_NOT_FOUND)}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new g("No peer routers available",z.ERR_NO_ROUTERS_AVAILABLE);let n=this,o=new Je;for await(let s of Hn(async function*(){let i=Tt(...n.routers.map(a=>a.getClosestPeers(e,t)));for await(let a of i)yield async()=>{if(a.multiaddrs.length===0)try{a=await n.findPeer(a.id,{...t,useCache:!1})}catch(c){n.log.error("could not find peer multiaddrs",c);return}return a}}()))s!=null&&(s.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs}),!o.has(s.id)&&(o.add(s.id),yield s))}};var M3=32,U3=64,cf=class{log;topologies;handlers;components;constructor(e){this.log=e.logger.forComponent("libp2p:registrar"),this.topologies=new Map,this.handlers=new Map,this.components=e,this._onDisconnect=this._onDisconnect.bind(this),this._onPeerUpdate=this._onPeerUpdate.bind(this),this._onPeerIdentify=this._onPeerIdentify.bind(this),this.components.events.addEventListener("peer:disconnect",this._onDisconnect),this.components.events.addEventListener("peer:update",this._onPeerUpdate),this.components.events.addEventListener("peer:identify",this._onPeerIdentify)}getProtocols(){return Array.from(new Set([...this.handlers.keys()])).sort()}getHandler(e){let t=this.handlers.get(e);if(t==null)throw new g(`No handler registered for protocol ${e}`,z.ERR_NO_HANDLER_FOR_PROTOCOL);return t}getTopologies(e){let t=this.topologies.get(e);return t==null?[]:[...t.values()]}async handle(e,t,n){if(this.handlers.has(e))throw new g(`Handler already registered for protocol ${e}`,z.ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED);let o=Ui.bind({ignoreUndefined:!0})({maxInboundStreams:M3,maxOutboundStreams:U3},n);this.handlers.set(e,{handler:t,options:o}),await this.components.peerStore.merge(this.components.peerId,{protocols:[e]})}async unhandle(e){(Array.isArray(e)?e:[e]).forEach(n=>{this.handlers.delete(n)}),await this.components.peerStore.patch(this.components.peerId,{protocols:this.getProtocols()})}async register(e,t){if(t==null)throw new g("invalid topology",z.ERR_INVALID_PARAMETERS);let n=`${(Math.random()*1e9).toString(36)}${Date.now()}`,o=this.topologies.get(e);return o==null&&(o=new Map,this.topologies.set(e,o)),o.set(n,t),n}unregister(e){for(let[t,n]of this.topologies.entries())n.has(e)&&(n.delete(e),n.size===0&&this.topologies.delete(t))}_onDisconnect(e){let t=e.detail;this.components.peerStore.get(t).then(n=>{for(let o of n.protocols){let s=this.topologies.get(o);if(s!=null)for(let i of s.values())i.onDisconnect?.(t)}}).catch(n=>{n.code!==z.ERR_NOT_FOUND&&this.log.error("could not inform topologies of disconnecting peer %p",t,n)})}_onPeerUpdate(e){let{peer:t,previous:n}=e.detail,o=(n?.protocols??[]).filter(s=>!t.protocols.includes(s));for(let s of o){let i=this.topologies.get(s);if(i!=null)for(let a of i.values())a.onDisconnect?.(t.id)}}_onPeerIdentify(e){let t=e.detail.protocols,n=e.detail.connection,o=e.detail.peerId;for(let s of t){let i=this.topologies.get(s);if(i!=null)for(let a of i.values())n.transient&&a.notifyOnTransient!==!0||a.onConnect?.(o,n)}}};var lf=class{log;components;transports;listeners;faultTolerance;started;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:transports"),this.components=e,this.started=!1,this.transports=new Map,this.listeners=jr({name:"libp2p_transport_manager_listeners",metrics:this.components.metrics}),this.faultTolerance=t.faultTolerance??Qn.FATAL_ALL}add(e){let t=e[Symbol.toStringTag];if(t==null)throw new g("Transport must have a valid tag",z.ERR_INVALID_KEY);if(this.transports.has(t))throw new g(`There is already a transport with the tag ${t}`,z.ERR_DUPLICATE_TRANSPORT);this.log("adding transport %s",t),this.transports.set(t,e),this.listeners.has(t)||this.listeners.set(t,[])}isStarted(){return this.started}start(){this.started=!0}async afterStart(){let e=this.components.addressManager.getListenAddrs();await this.listen(e)}async stop(){let e=[];for(let[t,n]of this.listeners)for(this.log("closing listeners for %s",t);n.length>0;){let o=n.pop();o!=null&&e.push(o.close())}await Promise.all(e),this.log("all listeners closed");for(let t of this.listeners.keys())this.listeners.set(t,[]);this.started=!1}async dial(e,t){let n=this.transportForMultiaddr(e);if(n==null)throw new g(`No transport available for address ${String(e)}`,z.ERR_TRANSPORT_UNAVAILABLE);try{return await n.dial(e,{...t,upgrader:this.components.upgrader})}catch(o){throw o.code==null&&(o.code=z.ERR_TRANSPORT_DIAL_FAILED),o}}getAddrs(){let e=[];for(let t of this.listeners.values())for(let n of t)e=[...e,...n.getAddrs()];return e}getTransports(){return Array.of(...this.transports.values())}getListeners(){return Array.of(...this.listeners.values()).flat()}transportForMultiaddr(e){for(let t of this.transports.values())if(t.filter([e]).length>0)return t}async listen(e){if(!this.isStarted())throw new g("Not started",z.ERR_NODE_NOT_STARTED);if(e==null||e.length===0){this.log("no addresses were provided for listening, this node is dial only");return}let t=[];for(let[n,o]of this.transports.entries()){let s=o.filter(e),i=[];for(let l of s){this.log("creating listener for %s on %a",n,l);let d=o.createListener({upgrader:this.components.upgrader}),u=this.listeners.get(n)??[];u==null&&(u=[],this.listeners.set(n,u)),u.push(d),d.addEventListener("listening",()=>{this.components.events.safeDispatchEvent("transport:listening",{detail:d})}),d.addEventListener("close",()=>{let f=u.findIndex(m=>m===d);u.splice(f,1),this.components.events.safeDispatchEvent("transport:close",{detail:d})}),i.push(d.listen(l))}if(i.length===0){t.push(n);continue}if((await Promise.allSettled(i)).find(l=>l.status==="fulfilled")==null&&this.faultTolerance!==Qn.NO_FATAL)throw new g(`Transport (${n}) could not listen on any available address`,z.ERR_NO_VALID_ADDRESSES)}if(t.length===this.transports.size){let n=`no valid addresses were provided for transports [${t.join(", ")}]`;if(this.faultTolerance===Qn.FATAL_ALL)throw new g(n,z.ERR_NO_VALID_ADDRESSES);this.log(`libp2p in dial mode only: ${n}`)}}async remove(e){let t=this.listeners.get(e)??[];this.log.trace("removing transport %s",e);let n=[];for(this.log.trace("closing listeners for %s",e);t.length>0;){let o=t.pop();o!=null&&n.push(o.close())}await Promise.all(n),this.transports.delete(e),this.listeners.delete(e)}async removeAll(){let e=[];for(let t of this.transports.keys())e.push(this.remove(t));await Promise.all(e)}};var St="/multistream/1.0.0";var iO=L(`
|
|
42
|
+
`);async function Bs(r,e,t){await r.write(e,t)}async function VE(r,e,t){await r.writeV(e,t)}async function aO(r,e){let t=await r.read(e);if(t.byteLength===0||t.get(t.byteLength-1)!==iO[0])throw e.log.error("Invalid mss message - missing newline",t),new g("missing newline","ERR_INVALID_MULTISTREAM_SELECT_MESSAGE");return t.sublist(0,-1)}async function $o(r,e){let t=await aO(r,e);return B(t.subarray())}async function Sc(r,e,t){if(e=Array.isArray(e)?[...e]:[e],e.length===1&&t.negotiateFully===!1)return cO(r,e[0],t);let n=ln(r,{...t,maxDataLength:1024}),o=e.shift();if(o==null)throw new Error("At least one protocol must be specified");t.log.trace('select: write ["%s", "%s"]',St,o);let s=L(`${St}
|
|
43
|
+
`),i=L(`${o}
|
|
44
|
+
`);await VE(n,[s,i],t),t.log.trace("select: reading multistream-select header");let a=await $o(n,t);if(t.log.trace('select: read "%s"',a),a===St&&(t.log.trace("select: reading protocol response"),a=await $o(n,t),t.log.trace('select: read "%s"',a)),a===o)return{stream:n.unwrap(),protocol:o};for(let c of e){t.log.trace('select: write "%s"',c),await Bs(n,L(`${c}
|
|
45
|
+
`),t),t.log.trace("select: reading protocol response");let l=await $o(n,t);if(t.log.trace('select: read "%s" for "%s"',l,c),l===c)return{stream:n.unwrap(),protocol:c}}throw new g("protocol selection failed","ERR_UNSUPPORTED_PROTOCOL")}function cO(r,e,t){let n=r.sink.bind(r),o=r.source,s=!1,i=!1,a=se(),c=!1,l=!1,d=se(),u=!1,f=!1,m=se(),h=ln({sink:n,source:o},{...t,maxDataLength:1024});r.sink=async E=>{let{sink:b}=h.unwrap();await b(async function*(){let S=!1;for await(let R of E){if(l&&await d.promise,c)yield R;else{l=!0,t.log.trace('optimistic: write ["%s", "%s", data(%d)] in sink',St,e,R.byteLength);let A=`${e}
|
|
46
|
+
`;yield new de(Uint8Array.from([19]),L(`${St}
|
|
47
|
+
`),ze(A.length),L(A),R).subarray(),t.log.trace('optimistic: wrote ["%s", "%s", data(%d)] in sink',St,e,R.byteLength),c=!0,l=!1,d.resolve(),p().catch(D=>{t.log.error("could not finish optimistic protocol negotiation of %s",e,D)})}S=!0}S||await p()}())};async function p(){if(i){t.log.trace("optimistic: already negotiating %s stream",e),await a.promise;return}i=!0;try{c||(t.log.trace("optimistic: doing send protocol for %s stream",e),await y()),u||(t.log.trace("optimistic: doing read protocol for %s stream",e),await w())}finally{i=!1,s=!0,a.resolve()}}async function y(){if(l){await d.promise;return}l=!0;try{t.log.trace('optimistic: write ["%s", "%s", data] in source',St,e),await h.writeV([L(`${St}
|
|
48
|
+
`),L(`${e}
|
|
49
|
+
`)]),t.log.trace('optimistic: wrote ["%s", "%s", data] in source',St,e)}finally{c=!0,l=!1,d.resolve()}}async function w(){if(f){await m.promise;return}f=!0;try{t.log.trace("optimistic: reading multistream select header");let E=await $o(h,t);if(t.log.trace('optimistic: read multistream select header "%s"',E),E===St&&(E=await $o(h,t)),t.log.trace('optimistic: read protocol "%s", expecting "%s"',E,e),E!==e)throw new g("protocol selection failed","ERR_UNSUPPORTED_PROTOCOL")}finally{u=!0,f=!1,m.resolve()}}if(r.source=async function*(){await p(),t.log.trace('optimistic: reading data from "%s" stream',e),yield*h.unwrap().source}(),r.closeRead!=null){let E=r.closeRead.bind(r);r.closeRead=async b=>{s||await p().catch(S=>{t.log.error("could not negotiate protocol before close read",S)}),await E(b)}}if(r.closeWrite!=null){let E=r.closeWrite.bind(r);r.closeWrite=async b=>{s||await p().catch(S=>{t.log.error("could not negotiate protocol before close write",S)}),await E(b)}}if(r.close!=null){let E=r.close.bind(r);r.close=async b=>{let S=[];l&&S.push(d.promise),f&&S.push(m.promise),S.length>0?await Lt(Promise.all(S),b?.signal):(s=!0,i=!1,a.resolve()),await E(b)}}return{stream:r,protocol:e}}async function Rc(r,e,t){e=Array.isArray(e)?e:[e],t.log.trace("handle: available protocols %s",e);let n=ln(r,{...t,maxDataLength:1024,maxLengthLength:2});for(;;){t.log.trace("handle: reading incoming string");let o=await $o(n,t);if(t.log.trace('handle: read "%s"',o),o===St){t.log.trace('handle: respond with "%s" for "%s"',St,o),await Bs(n,L(`${St}
|
|
50
|
+
`),t),t.log.trace('handle: responded with "%s" for "%s"',St,o);continue}if(e.includes(o))return t.log.trace('handle: respond with "%s" for "%s"',o,o),await Bs(n,L(`${o}
|
|
51
|
+
`),t),t.log.trace('handle: responded with "%s" for "%s"',o,o),{stream:n.unwrap(),protocol:o};if(o==="ls"){let s=new de(...e.map(i=>Ut.single(L(`${i}
|
|
52
|
+
`))),L(`
|
|
53
|
+
`));t.log.trace('handle: respond with "%s" for %s',e,o),await Bs(n,s,t),t.log.trace('handle: responded with "%s" for %s',e,o);continue}t.log('handle: respond with "na" for "%s"',o),await Bs(n,L(`na
|
|
54
|
+
`),t),t.log('handle: responded with "na" for "%s"',o)}}var uO=500,V3=class{id;remoteAddr;remotePeer;direction;timeline;multiplexer;encryption;status;transient;log;tags;_newStream;_close;_abort;_getStreams;constructor(e){let{remoteAddr:t,remotePeer:n,newStream:o,close:s,abort:i,getStreams:a}=e;this.id=`${parseInt(String(Math.random()*1e9)).toString(36)}${Date.now()}`,this.remoteAddr=t,this.remotePeer=n,this.direction=e.direction,this.status="open",this.timeline=e.timeline,this.multiplexer=e.multiplexer,this.encryption=e.encryption,this.transient=e.transient??!1,this.log=e.logger.forComponent(`libp2p:connection:${this.direction}:${this.id}`),this.remoteAddr.getPeerId()==null&&(this.remoteAddr=this.remoteAddr.encapsulate(`/p2p/${this.remotePeer}`)),this._newStream=o,this._close=s,this._abort=i,this._getStreams=a,this.tags=[]}[Symbol.toStringTag]="Connection";[d4]=!0;get streams(){return this._getStreams()}async newStream(e,t){if(this.status==="closing")throw new g("the connection is being closed","ERR_CONNECTION_BEING_CLOSED");if(this.status==="closed")throw new g("the connection is closed","ERR_CONNECTION_CLOSED");if(Array.isArray(e)||(e=[e]),this.transient&&t?.runOnTransientConnection!==!0)throw new g("Cannot open protocol stream on transient connection","ERR_TRANSIENT_CONNECTION");let n=await this._newStream(e,t);return n.direction="outbound",n}async close(e={}){if(!(this.status==="closed"||this.status==="closing")){if(this.log("closing connection to %a",this.remoteAddr),this.status="closing",e.signal==null){let t=AbortSignal.timeout(uO);ve(1/0,t),e={...e,signal:t}}try{this.log.trace("closing all streams"),await Promise.all(this.streams.map(async t=>t.close(e))),this.log.trace("closing underlying transport"),await this._close(e),this.log.trace("updating timeline with close time"),this.status="closed",this.timeline.close=Date.now()}catch(t){this.log.error("error encountered during graceful close of connection to %a",this.remoteAddr,t),this.abort(t)}}}abort(e){this.log.error("aborting connection to %a due to error",this.remoteAddr,e),this.status="closing",this.streams.forEach(t=>{t.abort(e)}),this.log.error("all streams aborted",this.streams.length),this._abort(e),this.timeline.close=Date.now(),this.status="closed"}};function $E(r){return new V3(r)}var dO=3e4;function fO(r,e){try{let{options:t}=e.getHandler(r);return t.maxInboundStreams}catch(t){if(t.code!==z.ERR_NO_HANDLER_FOR_PROTOCOL)throw t}return M3}function hO(r,e,t={}){try{let{options:n}=e.getHandler(r);if(n.maxOutboundStreams!=null)return n.maxOutboundStreams}catch(n){if(n.code!==z.ERR_NO_HANDLER_FOR_PROTOCOL)throw n}return t.maxOutboundStreams??U3}function HE(r,e,t){let n=0;return t.streams.forEach(o=>{o.direction===e&&o.protocol===r&&n++}),n}var uf=class{components;connectionEncryption;muxers;inboundUpgradeTimeout;events;constructor(e,t){this.components=e,this.connectionEncryption=new Map,t.connectionEncryption.forEach(n=>{this.connectionEncryption.set(n.protocol,n)}),this.muxers=new Map,t.muxers.forEach(n=>{this.muxers.set(n.protocol,n)}),this.inboundUpgradeTimeout=t.inboundUpgradeTimeout??3e4,this.events=e.events}async shouldBlockConnection(e,t,n){let o=this.components.connectionGater[n];if(o!==void 0&&await o(e,t))throw new g(`The multiaddr connection is blocked by gater.${n}`,z.ERR_CONNECTION_INTERCEPTED)}async upgradeInbound(e,t){if(!await this.components.connectionManager.acceptIncomingConnection(e))throw new g("connection denied",z.ERR_CONNECTION_DENIED);let o,s,i,a,c,l=AbortSignal.timeout(this.inboundUpgradeTimeout),d=()=>{e.abort(new g("inbound upgrade timeout",yn))};l.addEventListener("abort",d,{once:!0}),ve(1/0,l);try{if(await this.components.connectionGater.denyInboundConnection?.(e)===!0)throw new g("The multiaddr connection is blocked by gater.acceptConnection",z.ERR_CONNECTION_INTERCEPTED);this.components.metrics?.trackMultiaddrConnection(e),e.log("starting the inbound connection upgrade");let u=e;if(t?.skipProtection!==!0){let f=this.components.connectionProtector;f!=null&&(e.log("protecting the inbound connection"),u=await f.protect(e))}try{if(o=u,t?.skipEncryption!==!0){({conn:o,remotePeer:s,protocol:c}=await this._encryptInbound(u));let f={...u,...o};await this.shouldBlockConnection(s,f,"denyInboundEncryptedConnection")}else{let f=e.remoteAddr.getPeerId();if(f==null)throw new g("inbound connection that skipped encryption must have a peer id",z.ERR_INVALID_MULTIADDR);let m=ge(f);c="native",s=m}if(i=o,t?.muxerFactory!=null)a=t.muxerFactory;else if(this.muxers.size>0){let f=await this._multiplexInbound({...u,...o},this.muxers);a=f.muxerFactory,i=f.stream}}catch(f){throw e.log.error("failed to upgrade inbound connection",f),f}return await this.shouldBlockConnection(s,e,"denyInboundUpgradedConnection"),e.log("successfully upgraded inbound connection"),this._createConnection({cryptoProtocol:c,direction:"inbound",maConn:e,upgradedConn:i,muxerFactory:a,remotePeer:s,transient:t?.transient})}finally{l.removeEventListener("abort",d),this.components.connectionManager.afterUpgradeInbound()}}async upgradeOutbound(e,t){let n=e.remoteAddr.getPeerId(),o;n!=null&&(o=ge(n),await this.shouldBlockConnection(o,e,"denyOutboundConnection"));let s,i,a,c,l;this.components.metrics?.trackMultiaddrConnection(e),e.log("starting the outbound connection upgrade");let d=e;if(t?.skipProtection!==!0){let u=this.components.connectionProtector;u!=null&&(d=await u.protect(e))}try{if(s=d,t?.skipEncryption!==!0){({conn:s,remotePeer:i,protocol:c}=await this._encryptOutbound(d,o));let u={...d,...s};await this.shouldBlockConnection(i,u,"denyOutboundEncryptedConnection")}else{if(o==null)throw new g("Encryption was skipped but no peer id was passed",z.ERR_INVALID_PEER);c="native",i=o}if(a=s,t?.muxerFactory!=null)l=t.muxerFactory;else if(this.muxers.size>0){let u=await this._multiplexOutbound({...d,...s},this.muxers);l=u.muxerFactory,a=u.stream}}catch(u){throw e.log.error("failed to upgrade outbound connection",u),await e.close(u),u}return await this.shouldBlockConnection(i,e,"denyOutboundUpgradedConnection"),e.log("successfully upgraded outbound connection"),this._createConnection({cryptoProtocol:c,direction:"outbound",maConn:e,upgradedConn:a,muxerFactory:l,remotePeer:i,transient:t?.transient})}_createConnection(e){let{cryptoProtocol:t,direction:n,maConn:o,upgradedConn:s,remotePeer:i,muxerFactory:a,transient:c}=e,l,d,u;a!=null&&(l=a.createStreamMuxer({direction:n,onIncomingStream:h=>{u!=null&&Promise.resolve().then(async()=>{let p=this.components.registrar.getProtocols(),{stream:y,protocol:w}=await Rc(h,p,{log:h.log,yieldBytes:!1});if(u==null)return;u.log("incoming stream opened on %s",w);let E=fO(w,this.components.registrar);if(HE(w,"inbound",u)===E){let S=new g(`Too many inbound protocol streams for protocol "${w}" - limit ${E}`,z.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS);throw h.abort(S),S}h.source=y.source,h.sink=y.sink,h.protocol=w,y.closeWrite!=null&&(h.closeWrite=y.closeWrite),y.closeRead!=null&&(h.closeRead=y.closeRead),y.close!=null&&(h.close=y.close),await this.components.peerStore.merge(i,{protocols:[w]}),this.components.metrics?.trackProtocolStream(h,u),this._onStream({connection:u,stream:h,protocol:w})}).catch(async p=>{u.log.error("error handling incoming stream id %s",h.id,p.message,p.code,p.stack),h.timeline.close==null&&await h.close()})}}),d=async(h,p={})=>{if(l==null)throw new g("Stream is not multiplexed",z.ERR_MUXER_UNAVAILABLE);u.log("starting new stream for protocols %s",h);let y=await l.newStream();u.log.trace("started new stream %s for protocols %s",y.id,h);try{if(p.signal==null){y.log("no abort signal was passed while trying to negotiate protocols %s falling back to default timeout",h);let R=AbortSignal.timeout(dO);ve(1/0,R),p={...p,signal:R}}y.log.trace("selecting protocol from protocols %s",h);let{stream:w,protocol:E}=await Sc(y,h,{...p,log:y.log,yieldBytes:!0});y.log("selected protocol %s",E);let b=hO(E,this.components.registrar,p);if(HE(E,"outbound",u)>=b){let R=new g(`Too many outbound protocol streams for protocol "${E}" - limit ${b}`,z.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS);throw y.abort(R),R}return await this.components.peerStore.merge(i,{protocols:[E]}),y.source=w.source,y.sink=w.sink,y.protocol=E,w.closeWrite!=null&&(y.closeWrite=w.closeWrite),w.closeRead!=null&&(y.closeRead=w.closeRead),w.close!=null&&(y.close=w.close),this.components.metrics?.trackProtocolStream(y,u),y}catch(w){throw u.log.error("could not create new stream for protocols %s",h,w),y.timeline.close==null&&y.abort(w),w.code!=null?w:new g(String(w),z.ERR_UNSUPPORTED_PROTOCOL)}},Promise.all([l.sink(s.source),s.sink(l.source)]).catch(h=>{u.log.error("error piping data through muxer",h)}));let f=o.timeline;o.timeline=new Proxy(f,{set:(...h)=>(u!=null&&h[1]==="close"&&h[2]!=null&&f.close==null&&(async()=>{try{u.status==="open"&&await u.close()}catch(p){u.log.error("error closing connection after timeline close",p)}finally{this.events.safeDispatchEvent("connection:close",{detail:u})}})().catch(p=>{u.log.error("error thrown while dispatching connection:close event",p)}),Reflect.set(...h))}),o.timeline.upgraded=Date.now();let m=()=>{throw new g("connection is not multiplexed",z.ERR_CONNECTION_NOT_MULTIPLEXED)};return u=$E({remoteAddr:o.remoteAddr,remotePeer:i,status:"open",direction:n,timeline:o.timeline,multiplexer:l?.protocol,encryption:t,transient:c,logger:this.components.logger,newStream:d??m,getStreams:()=>l!=null?l.streams:[],close:async h=>{l!=null&&(u.log.trace("close muxer"),await l.close(h)),u.log.trace("close maconn"),await o.close(h),u.log.trace("closed maconn")},abort:h=>{o.abort(h),l?.abort(h)}}),this.events.safeDispatchEvent("connection:open",{detail:u}),u}_onStream(e){let{connection:t,stream:n,protocol:o}=e,{handler:s,options:i}=this.components.registrar.getHandler(o);if(t.transient&&i.runOnTransientConnection!==!0)throw new g("Cannot open protocol stream on transient connection","ERR_TRANSIENT_CONNECTION");s({connection:t,stream:n})}async _encryptInbound(e){let t=Array.from(this.connectionEncryption.keys());e.log("handling inbound crypto protocol selection",t);try{let{stream:n,protocol:o}=await Rc(e,t,{log:e.log}),s=this.connectionEncryption.get(o);if(s==null)throw new Error(`no crypto module found for ${o}`);return e.log("encrypting inbound connection using",o),{...await s.secureInbound(this.components.peerId,n),protocol:o}}catch(n){throw e.log.error("encrypting inbound connection to %p failed",n),new g(n.message,z.ERR_ENCRYPTION_FAILED)}}async _encryptOutbound(e,t){let n=Array.from(this.connectionEncryption.keys());e.log("selecting outbound crypto protocol",n);try{e.log.trace("selecting encrypter from %s",n);let{stream:o,protocol:s}=await Sc(e,n,{log:e.log,yieldBytes:!0}),i=this.connectionEncryption.get(s);if(i==null)throw new Error(`no crypto module found for ${s}`);return e.log("encrypting outbound connection to %p using %p",t),{...await i.secureOutbound(this.components.peerId,o,t),protocol:s}}catch(o){throw e.log.error("encrypting outbound connection to %p failed",o),new g(o.message,z.ERR_ENCRYPTION_FAILED)}}async _multiplexOutbound(e,t){let n=Array.from(t.keys());e.log("outbound selecting muxer %s",n);try{e.log.trace("selecting stream muxer from %s",n);let{stream:o,protocol:s}=await Sc(e,n,{log:e.log,yieldBytes:!0});e.log("selected %s as muxer protocol",s);let i=t.get(s);return{stream:o,muxerFactory:i}}catch(o){throw e.log.error("error multiplexing outbound connection",o),new g(String(o),z.ERR_MUXER_UNAVAILABLE)}}async _multiplexInbound(e,t){let n=Array.from(t.keys());e.log("inbound handling muxers %s",n);try{let{stream:o,protocol:s}=await Rc(e,n,{log:e.log}),i=t.get(s);return{stream:o,muxerFactory:i}}catch(o){throw e.log.error("error multiplexing inbound connection",o),new g(String(o),z.ERR_MUXER_UNAVAILABLE)}}};var K3=class extends Ce{peerId;peerStore;contentRouting;peerRouting;metrics;services;logger;status;components;log;constructor(e){super(),this.status="stopped";let t=new Ce,n=t.dispatchEvent.bind(t);t.dispatchEvent=a=>{let c=n(a),l=this.dispatchEvent(new mt(a.type,{detail:a.detail}));return c||l},ve(1/0,t),this.peerId=e.peerId,this.logger=e.logger??Jn(),this.log=this.logger.forComponent("libp2p"),this.services={};let o=this.components=TE({peerId:e.peerId,privateKey:e.privateKey,nodeInfo:e.nodeInfo??{name:Ud,version:Md},logger:this.logger,events:t,datastore:e.datastore??new ws,connectionGater:kE(e.connectionGater)});this.peerStore=this.configureComponent("peerStore",new zd(o,{addressFilter:this.components.connectionGater.filterMultiaddrForPeer,...e.peerStore})),e.metrics!=null&&(this.metrics=this.configureComponent("metrics",e.metrics(this.components))),o.events.addEventListener("peer:update",a=>{if(a.detail.previous==null){let c={id:a.detail.peer.id,multiaddrs:a.detail.peer.addresses.map(l=>l.multiaddr)};o.events.safeDispatchEvent("peer:discovery",{detail:c})}}),e.connectionProtector!=null&&this.configureComponent("connectionProtector",e.connectionProtector(o)),this.components.upgrader=new uf(this.components,{connectionEncryption:(e.connectionEncryption??[]).map((a,c)=>this.configureComponent(`connection-encryption-${c}`,a(this.components))),muxers:(e.streamMuxers??[]).map((a,c)=>this.configureComponent(`stream-muxers-${c}`,a(this.components))),inboundUpgradeTimeout:e.connectionManager.inboundUpgradeTimeout}),this.configureComponent("transportManager",new lf(this.components,e.transportManager)),this.configureComponent("connectionManager",new of(this.components,e.connectionManager)),this.configureComponent("registrar",new cf(this.components)),this.configureComponent("addressManager",new Gd(this.components,e.addresses));let s=(e.peerRouters??[]).map((a,c)=>this.configureComponent(`peer-router-${c}`,a(this.components)));this.peerRouting=this.components.peerRouting=this.configureComponent("peerRouting",new af(this.components,{routers:s}));let i=(e.contentRouters??[]).map((a,c)=>this.configureComponent(`content-router-${c}`,a(this.components)));if(this.contentRouting=this.components.contentRouting=this.configureComponent("contentRouting",new sf(this.components,{routers:i})),(e.peerDiscovery??[]).forEach((a,c)=>{this.configureComponent(`peer-discovery-${c}`,a(this.components)).addEventListener("peer",d=>{this.#e(d)})}),e.transports?.forEach((a,c)=>{this.components.transportManager.add(this.configureComponent(`transport-${c}`,a(this.components)))}),e.services!=null)for(let a of Object.keys(e.services)){let c=e.services[a],l=c(this.components);if(l==null){this.log.error("service factory %s returned null or undefined instance",a);continue}this.services[a]=l,this.configureComponent(a,l),l[Zr]!=null&&(this.log("registering service %s for content routing",a),i.push(l[Zr])),l[Jr]!=null&&(this.log("registering service %s for peer routing",a),s.push(l[Jr])),l[zo]!=null&&(this.log("registering service %s for peer discovery",a),l[zo].addEventListener?.("peer",d=>{this.#e(d)}))}}configureComponent(e,t){return t==null&&this.log.error("component %s was null or undefined",e),this.components[e]=t,t}async start(){if(this.status==="stopped"){this.status="starting",this.log("libp2p is starting");try{await this.components.beforeStart?.(),await this.components.start(),await this.components.afterStart?.(),this.status="started",this.safeDispatchEvent("start",{detail:this}),this.log("libp2p has started")}catch(e){throw this.log.error("An error occurred starting libp2p",e),this.status="started",await this.stop(),e}}}async stop(){this.status==="started"&&(this.log("libp2p is stopping"),this.status="stopping",await this.components.beforeStop?.(),await this.components.stop(),await this.components.afterStop?.(),this.status="stopped",this.safeDispatchEvent("stop",{detail:this}),this.log("libp2p has stopped"))}getConnections(e){return this.components.connectionManager.getConnections(e)}getDialQueue(){return this.components.connectionManager.getDialQueue()}getPeers(){let e=new Je;for(let t of this.components.connectionManager.getConnections())e.add(t.remotePeer);return Array.from(e)}async dial(e,t={}){return this.components.connectionManager.openConnection(e,{priority:75,...t})}async dialProtocol(e,t,n={}){if(t==null)throw new g("no protocols were provided to open a stream",z.ERR_INVALID_PROTOCOLS_FOR_STREAM);if(t=Array.isArray(t)?t:[t],t.length===0)throw new g("no protocols were provided to open a stream",z.ERR_INVALID_PROTOCOLS_FOR_STREAM);return(await this.dial(e,n)).newStream(t,n)}getMultiaddrs(){return this.components.addressManager.getAddresses()}getProtocols(){return this.components.registrar.getProtocols()}async hangUp(e,t={}){so(e)&&(e=ge(e.getPeerId()??"")),await this.components.connectionManager.closeConnections(e,t)}async getPublicKey(e,t={}){if(this.log("getPublicKey %p",e),e.publicKey!=null)return e.publicKey;try{let s=await this.peerStore.get(e);if(s.id.publicKey!=null)return s.id.publicKey}catch(s){if(s.code!==z.ERR_NOT_FOUND)throw s}let n=_e([L("/pk/"),e.multihash.digest]),o=await this.contentRouting.get(n,t);return $r(o),await this.peerStore.patch(e,{publicKey:o}),o}async handle(e,t,n){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async o=>{await this.components.registrar.handle(o,t,n)}))}async unhandle(e){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async t=>{await this.components.registrar.unhandle(t)}))}async register(e,t){return this.components.registrar.register(e,t)}unregister(e){this.components.registrar.unregister(e)}#e(e){let{detail:t}=e;if(t.id.toString()===this.peerId.toString()){this.log.error(new Error(z.ERR_DISCOVERED_SELF));return}this.components.peerStore.merge(t.id,{multiaddrs:t.multiaddrs}).catch(n=>{this.log.error(n)})}};async function qE(r={}){let e=r.peerId??=await m1();if(e.privateKey==null)throw new g("peer id was missing private key","ERR_MISSING_PRIVATE_KEY");return r.privateKey??=await mr(e.privateKey),new K3(await ME(r))}async function WE(r={}){let e=await qE(r);return r.start!==!1&&await e.start(),e}async function zE(r){let e=r.libp2p?.peerId,t=r.logger??Jn(),n=new Oe("/pkcs8/self"),o;e==null&&r.datastore!=null&&(o=ud(r.keychain)({datastore:r.datastore,logger:t}),await r.datastore.has(n)&&(r.libp2p=r.libp2p??{},r.libp2p.peerId=await o.exportPeerId("self")));let s=Fd(r);s.datastore=s.datastore??r.datastore,r=r??{};let i=await WE({...s,...r.libp2p,start:!1});return e==null&&o!=null&&!await r.datastore.has(n)&&await o.importPeer("self",i.peerId),i}async function pO(r={}){let e=r.datastore??new ws,t=r.blockstore??new Va,n;mO(r.libp2p)?n=r.libp2p:n=await zE({...r,libp2p:{...r.libp2p,start:void 0},datastore:e});let o=new ju({...r,libp2p:n,datastore:e,blockstore:t,blockBrokers:r.blockBrokers??[xh(),Eh()],routers:[K0(n)]});return r.start!==!1&&await o.start(),o}function mO(r){return r==null?!1:["dial","dialProtocol","hangUp","handle","unhandle","getMultiaddrs","getProtocols"].every(t=>typeof r[t]=="function")}return Ic(gO);})();
|
|
61
55
|
/*! Bundled license information:
|
|
62
56
|
|
|
63
57
|
pvtsutils/build/index.js:
|