@helia/bitswap 3.0.12 → 3.0.13-4e19769a

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 CHANGED
@@ -1,4 +1,4 @@
1
1
  (function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.HeliaBitswap = factory()}(typeof self !== 'undefined' ? self : this, function () {
2
- "use strict";var HeliaBitswap=(()=>{var Fn=Object.create;var qe=Object.defineProperty;var Rn=Object.getOwnPropertyDescriptor;var zn=Object.getOwnPropertyNames;var On=Object.getPrototypeOf,Hn=Object.prototype.hasOwnProperty;var qn=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),T=(r,e)=>{for(var t in e)qe(r,t,{get:e[t],enumerable:!0})},Br=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of zn(e))!Hn.call(r,s)&&s!==t&&qe(r,s,{get:()=>e[s],enumerable:!(n=Rn(e,s))||n.enumerable});return r};var Vn=(r,e,t)=>(t=r!=null?Fn(On(r)):{},Br(e||!r||!r.__esModule?qe(t,"default",{value:r,enumerable:!0}):t,r)),Gn=r=>Br(qe({},"__esModule",{value:!0}),r);var Cn=qn((Lh,Pn)=>{Pn.exports=function(r){if(!r)throw Error("hashlru must have a max value, of type number, greater than 0");var e=0,t=Object.create(null),n=Object.create(null);function s(i,o){t[i]=o,e++,e>=r&&(e=0,n=t,t=Object.create(null))}return{has:function(i){return t[i]!==void 0||n[i]!==void 0},remove:function(i){t[i]!==void 0&&(t[i]=void 0),n[i]!==void 0&&(n[i]=void 0)},get:function(i){var o=t[i];if(o!==void 0)return o;if((o=n[i])!==void 0)return s(i,o),o},set:function(i,o){t[i]!==void 0?t[i]=o:s(i,o)},clear:function(){t=Object.create(null),n=Object.create(null)}}}});var to={};T(to,{createBitswap:()=>eo});var U=class extends Error{static name="AbortError";constructor(e="The operation was aborted"){super(e),this.name="AbortError"}};var Ve=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}};var Ge=class extends Error{static name="UnsupportedProtocolError";constructor(e="Unsupported protocol error"){super(e),this.name="UnsupportedProtocolError"}};var $e=class extends Error{static name="TimeoutError";constructor(e="Timed out"){super(e),this.name="TimeoutError"}},We=class extends Error{static name="NotStartedError";constructor(e="Not started"){super(e),this.name="NotStartedError"}};var $n=Symbol.for("@libp2p/peer-id");function Ur(r){return!!r?.[$n]}var H=class extends EventTarget{#e=new Map;constructor(){super()}listenerCount(e){let t=this.#e.get(e);return t==null?0:t.length}addEventListener(e,t,n){super.addEventListener(e,t,n);let s=this.#e.get(e);s==null&&(s=[],this.#e.set(e,s)),s.push({callback:t,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(e,t,n){super.removeEventListener(e.toString(),t??null,n);let s=this.#e.get(e);s!=null&&(s=s.filter(({callback:i})=>i!==t),this.#e.set(e,s))}dispatchEvent(e){let t=super.dispatchEvent(e),n=this.#e.get(e.type);return n==null||(n=n.filter(({once:s})=>!s),this.#e.set(e.type,n)),t}safeDispatchEvent(e,t={}){return this.dispatchEvent(new CustomEvent(e,t))}};function Fr(r){let e=new globalThis.AbortController;function t(){e.abort();for(let i of r)i?.removeEventListener!=null&&i.removeEventListener("abort",t)}for(let i of r){if(i?.aborted===!0){t();break}i?.addEventListener!=null&&i.addEventListener("abort",t)}function n(){for(let i of r)i?.removeEventListener!=null&&i.removeEventListener("abort",t)}let s=e.signal;return s.clear=n,s}var D=class extends Event{type;detail;constructor(e,t){super(e),this.type=e,this.detail=t}};var Pt={};T(Pt,{base58btc:()=>F,base58flickr:()=>jn});var co=new Uint8Array(0);function Rr(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 V(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 zr(r){return new TextEncoder().encode(r)}function Or(r){return new TextDecoder().decode(r)}function Wn(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var s=0;s<r.length;s++){var i=r.charAt(s),o=i.charCodeAt(0);if(t[o]!==255)throw new TypeError(i+" is ambiguous");t[o]=s}var a=r.length,c=r.charAt(0),u=Math.log(a)/Math.log(256),l=Math.log(256)/Math.log(a);function h(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 b=0,m=0,x=0,A=p.length;x!==A&&p[x]===0;)x++,b++;for(var v=(A-x)*l+1>>>0,I=new Uint8Array(v);x!==A;){for(var N=p[x],Q=0,B=v-1;(N!==0||Q<m)&&B!==-1;B--,Q++)N+=256*I[B]>>>0,I[B]=N%a>>>0,N=N/a>>>0;if(N!==0)throw new Error("Non-zero carry");m=Q,x++}for(var q=v-m;q!==v&&I[q]===0;)q++;for(var He=c.repeat(b);q<v;++q)He+=r.charAt(I[q]);return He}function f(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var b=0;if(p[b]!==" "){for(var m=0,x=0;p[b]===c;)m++,b++;for(var A=(p.length-b)*u+1>>>0,v=new Uint8Array(A);p[b];){var I=t[p.charCodeAt(b)];if(I===255)return;for(var N=0,Q=A-1;(I!==0||N<x)&&Q!==-1;Q--,N++)I+=a*v[Q]>>>0,v[Q]=I%256>>>0,I=I/256>>>0;if(I!==0)throw new Error("Non-zero carry");x=N,b++}if(p[b]!==" "){for(var B=A-x;B!==A&&v[B]===0;)B++;for(var q=new Uint8Array(m+(A-B)),He=m;B!==A;)q[He++]=v[B++];return q}}}function d(p){var b=f(p);if(b)return b;throw new Error(`Non-${e} character`)}return{encode:h,decodeUnsafe:f,decode:d}}var Xn=Wn,Qn=Xn,qr=Qn;var Tt=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")}},Dt=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let s=t.codePointAt(0);if(s===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=s,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Vr(this,e)}},Mt=class{decoders;constructor(e){this.decoders=e}or(e){return Vr(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 Vr(r,e){return new Mt({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var Nt=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,s){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=s,this.encoder=new Tt(e,t,n),this.decoder=new Dt(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function ce({name:r,prefix:e,encode:t,decode:n}){return new Nt(r,e,t,n)}function J({name:r,prefix:e,alphabet:t}){let{encode:n,decode:s}=qr(t,r);return ce({prefix:e,name:r,encode:n,decode:i=>V(s(i))})}function Jn(r,e,t,n){let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*t/8|0),o=0,a=0,c=0;for(let u=0;u<s;++u){let l=e[r[u]];if(l===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<t|l,o+=t,o>=8&&(o-=8,i[c++]=255&a>>o)}if(o>=t||(255&a<<8-o)!==0)throw new SyntaxError("Unexpected end of data");return i}function Kn(r,e,t){let n=e[e.length-1]==="=",s=(1<<t)-1,i="",o=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],o+=8;o>t;)o-=t,i+=e[s&a>>o];if(o!==0&&(i+=e[s&a<<t-o]),n)for(;(i.length*t&7)!==0;)i+="=";return i}function Zn(r){let e={};for(let t=0;t<r.length;++t)e[r[t]]=t;return e}function w({name:r,prefix:e,bitsPerChar:t,alphabet:n}){let s=Zn(n);return ce({prefix:e,name:r,encode(i){return Kn(i,n,t)},decode(i){return Jn(i,s,t,r)}})}var F=J({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),jn=J({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Ct={};T(Ct,{base32:()=>le,base32hex:()=>rs,base32hexpad:()=>ss,base32hexpadupper:()=>is,base32hexupper:()=>ns,base32pad:()=>es,base32padupper:()=>ts,base32upper:()=>Yn,base32z:()=>os});var le=w({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Yn=w({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),es=w({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),ts=w({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),rs=w({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),ns=w({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),ss=w({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),is=w({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),os=w({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Bt={};T(Bt,{base36:()=>Le,base36upper:()=>as});var Le=J({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),as=J({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var cs=Wr,Gr=128,ls=127,hs=~ls,us=Math.pow(2,31);function Wr(r,e,t){e=e||[],t=t||0;for(var n=t;r>=us;)e[t++]=r&255|Gr,r/=128;for(;r&hs;)e[t++]=r&255|Gr,r>>>=7;return e[t]=r|0,Wr.bytes=t-n+1,e}var ds=Ut,fs=128,$r=127;function Ut(r,n){var t=0,n=n||0,s=0,i=n,o,a=r.length;do{if(i>=a)throw Ut.bytes=0,new RangeError("Could not decode varint");o=r[i++],t+=s<28?(o&$r)<<s:(o&$r)*Math.pow(2,s),s+=7}while(o>=fs);return Ut.bytes=i-n,t}var ps=Math.pow(2,7),ms=Math.pow(2,14),gs=Math.pow(2,21),bs=Math.pow(2,28),ws=Math.pow(2,35),ys=Math.pow(2,42),xs=Math.pow(2,49),Es=Math.pow(2,56),vs=Math.pow(2,63),_s=function(r){return r<ps?1:r<ms?2:r<gs?3:r<bs?4:r<ws?5:r<ys?6:r<xs?7:r<Es?8:r<vs?9:10},Ss={encode:cs,decode:ds,encodingLength:_s},ks=Ss,Ae=ks;function Ie(r,e=0){return[Ae.decode(r,e),Ae.decode.bytes]}function he(r,e,t=0){return Ae.encode(r,e,t),e}function ue(r){return Ae.encodingLength(r)}function fe(r,e){let t=e.byteLength,n=ue(r),s=n+ue(t),i=new Uint8Array(s+t);return he(r,i,0),he(t,i,n),i.set(e,s),new de(r,t,e,i)}function Ft(r){let e=V(r),[t,n]=Ie(e),[s,i]=Ie(e.subarray(n)),o=e.subarray(n+i);if(o.byteLength!==s)throw new Error("Incorrect length");return new de(t,s,o,e)}function Xr(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&Rr(r.bytes,t.bytes)}}var de=class{code;size;digest;bytes;constructor(e,t,n,s){this.code=e,this.size=t,this.digest=n,this.bytes=s}};function Qr(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return As(t,Rt(r),e??F.encoder);default:return Is(t,Rt(r),e??le.encoder)}}var Jr=new WeakMap;function Rt(r){let e=Jr.get(r);if(e==null){let t=new Map;return Jr.set(r,t),t}return e}var G=class r{code;version;multihash;bytes;"/";constructor(e,t,n,s){this.code=t,this.version=e,this.multihash=n,this.bytes=s,this["/"]=s}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==Te)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==Ts)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=fe(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&&Xr(e.multihash,n.multihash)}toString(e){return Qr(this,e)}toJSON(){return{"/":Qr(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:s,multihash:i,bytes:o}=t;return new r(n,s,i,o??Kr(n,s,i.bytes))}else if(t[Ds]===!0){let{version:n,multihash:s,code:i}=t,o=Ft(s);return r.create(n,i,o)}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!==Te)throw new Error(`Version 0 CID must use dag-pb (code: ${Te}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let s=Kr(e,t,n.bytes);return new r(e,t,n,s)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Te,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,s=V(e.subarray(n,n+t.multihashSize));if(s.byteLength!==t.multihashSize)throw new Error("Incorrect length");let i=s.subarray(t.multihashSize-t.digestSize),o=new de(t.multihashCode,t.digestSize,i,s);return[t.version===0?r.createV0(o):r.createV1(t.codec,o),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[h,f]=Ie(e.subarray(t));return t+=f,h},s=n(),i=Te;if(s===18?(s=0,t=0):i=n(),s!==0&&s!==1)throw new RangeError(`Invalid CID version ${s}`);let o=t,a=n(),c=n(),u=t+c,l=u-o;return{version:s,codec:i,multihashCode:a,digestSize:c,multihashSize:l,size:u}}static parse(e,t){let[n,s]=Ls(e,t),i=r.decode(s);if(i.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return Rt(i).set(n,e),i}};function Ls(r,e){switch(r[0]){case"Q":{let t=e??F;return[F.prefix,t.decode(`${F.prefix}${r}`)]}case F.prefix:{let t=e??F;return[F.prefix,t.decode(r)]}case le.prefix:{let t=e??le;return[le.prefix,t.decode(r)]}case Le.prefix:{let t=e??Le;return[Le.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function As(r,e,t){let{prefix:n}=t;if(n!==F.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let s=e.get(n);if(s==null){let i=t.encode(r).slice(1);return e.set(n,i),i}else return s}function Is(r,e,t){let{prefix:n}=t,s=e.get(n);if(s==null){let i=t.encode(r);return e.set(n,i),i}else return s}var Te=112,Ts=18;function Kr(r,e,t){let n=ue(r),s=n+ue(e),i=new Uint8Array(s+t.byteLength);return he(r,i,0),he(e,i,n),i.set(t,s),i}var Ds=Symbol.for("@ipld/js-cid/CID");var zt={};T(zt,{identity:()=>Ps});var Zr=0,Ms="identity",jr=V;function Ns(r,e){if(e?.truncate!=null&&e.truncate!==r.byteLength){if(e.truncate<0||e.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e.truncate)}return fe(Zr,jr(r))}var Ps={code:Zr,name:Ms,encode:jr,digest:Ns};function $(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 _(r=0){return new Uint8Array(r)}function S(r=0){return new Uint8Array(r)}function me(r,e){e==null&&(e=r.reduce((s,i)=>s+i.length,0));let t=S(e),n=0;for(let s of r)t.set(s,n),n+=s.length;return t}var en=Symbol.for("@achingbrain/uint8arraylist");function Yr(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let s=t+n.byteLength;if(e<s)return{buf:n,index:e-t};t=s}throw new RangeError("index is out of bounds")}function Qe(r){return!!r?.[en]}var ge=class r{bufs;length;[en]=!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(Qe(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(Qe(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=Yr(this.bufs,e);return t.buf[t.index]}set(e,t){let n=Yr(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(Qe(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:s}=this._subList(e,t);return me(n,s)}subarray(e,t){let{bufs:n,length:s}=this._subList(e,t);return n.length===1?n[0]:me(n,s)}sublist(e,t){let{bufs:n,length:s}=this._subList(e,t),i=new r;return i.length=s,i.bufs=[...n],i}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:this.bufs,length:this.length};let n=[],s=0;for(let i=0;i<this.bufs.length;i++){let o=this.bufs[i],a=s,c=a+o.byteLength;if(s=c,e>=c)continue;let u=e>=a&&e<c,l=t>a&&t<=c;if(u&&l){if(e===a&&t===c){n.push(o);break}let h=e-a;n.push(o.subarray(h,h+(t-e)));break}if(u){if(e===0){n.push(o);continue}n.push(o.subarray(e-a));continue}if(l){if(t===c){n.push(o);break}n.push(o.subarray(0,t-a));break}n.push(o)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!Qe(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let s=n.byteLength;if(s===0)throw new TypeError("search must be at least 1 byte long");let i=256,o=new Int32Array(i);for(let h=0;h<i;h++)o[h]=-1;for(let h=0;h<s;h++)o[n[h]]=h;let a=o,c=this.byteLength-n.byteLength,u=n.byteLength-1,l;for(let h=t;h<=c;h+=l){l=0;for(let f=u;f>=0;f--){let d=this.get(h+f);if(n[f]!==d){l=Math.max(1,f-a[d]);break}}if(l===0)return h}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=S(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let s=_(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt16(0,t,n),this.write(s,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let s=_(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt32(0,t,n),this.write(s,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let s=_(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigInt64(0,t,n),this.write(s,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=S(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let s=_(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint16(0,t,n),this.write(s,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let s=_(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint32(0,t,n),this.write(s,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let s=_(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigUint64(0,t,n),this.write(s,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let s=_(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat32(0,t,n),this.write(s,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let s=_(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat64(0,t,n),this.write(s,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!$(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((s,i)=>s+i.byteLength,0)),n.length=t,n}};var Ot={};T(Ot,{base10:()=>Cs});var Cs=J({prefix:"9",name:"base10",alphabet:"0123456789"});var Ht={};T(Ht,{base16:()=>Bs,base16upper:()=>Us});var Bs=w({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Us=w({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var qt={};T(qt,{base2:()=>Fs});var Fs=w({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Vt={};T(Vt,{base256emoji:()=>qs});var tn=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}"),Rs=tn.reduce((r,e,t)=>(r[t]=e,r),[]),zs=tn.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function Os(r){return r.reduce((e,t)=>(e+=Rs[t],e),"")}function Hs(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let s=zs[n];if(s==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(s)}return new Uint8Array(e)}var qs=ce({prefix:"\u{1F680}",name:"base256emoji",encode:Os,decode:Hs});var Gt={};T(Gt,{base64:()=>Z,base64pad:()=>Vs,base64url:()=>Gs,base64urlpad:()=>$s});var Z=w({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Vs=w({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Gs=w({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),$s=w({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var $t={};T($t,{base8:()=>Ws});var Ws=w({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Wt={};T(Wt,{identity:()=>Xs});var Xs=ce({prefix:"\0",name:"identity",encode:r=>Or(r),decode:r=>zr(r)});var Wo=new TextEncoder,Xo=new TextDecoder;var Jt={};T(Jt,{sha256:()=>Je,sha512:()=>Zs});var Ks=20;function Qt({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:s}){return new Xt(r,e,t,n,s)}var Xt=class{name;code;encode;minDigestLength;maxDigestLength;constructor(e,t,n,s,i){this.name=e,this.code=t,this.encode=n,this.minDigestLength=s??Ks,this.maxDigestLength=i}digest(e,t){if(t?.truncate!=null){if(t.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&t.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){let n=this.encode(e);return n instanceof Uint8Array?rn(n,this.code,t?.truncate):n.then(s=>rn(s,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}};function rn(r,e,t){if(t!=null&&t!==r.byteLength){if(t>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t)}return fe(e,r)}function sn(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var Je=Qt({name:"sha2-256",code:18,encode:sn("SHA-256")}),Zs=Qt({name:"sha2-512",code:19,encode:sn("SHA-512")});var Kt={...Wt,...qt,...$t,...Ot,...Ht,...Ct,...Bt,...Pt,...Gt,...Vt},ia={...Jt,...zt};function an(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var on=an("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),Zt=an("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=S(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),js={utf8:on,"utf-8":on,hex:Kt.base16,latin1:Zt,ascii:Zt,binary:Zt,...Kt},Ke=js;function P(r,e="utf8"){let t=Ke[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function W(r,e="utf8"){let t=Ke[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}var Ys=Math.pow(2,7),ei=Math.pow(2,14),ti=Math.pow(2,21),jt=Math.pow(2,28),Yt=Math.pow(2,35),er=Math.pow(2,42),tr=Math.pow(2,49),g=128,k=127;function E(r){if(r<Ys)return 1;if(r<ei)return 2;if(r<ti)return 3;if(r<jt)return 4;if(r<Yt)return 5;if(r<er)return 6;if(r<tr)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function rr(r,e,t=0){switch(E(r)){case 8:e[t++]=r&255|g,r/=128;case 7:e[t++]=r&255|g,r/=128;case 6:e[t++]=r&255|g,r/=128;case 5:e[t++]=r&255|g,r/=128;case 4:e[t++]=r&255|g,r>>>=7;case 3:e[t++]=r&255|g,r>>>=7;case 2:e[t++]=r&255|g,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function ri(r,e,t=0){switch(E(r)){case 8:e.set(t++,r&255|g),r/=128;case 7:e.set(t++,r&255|g),r/=128;case 6:e.set(t++,r&255|g),r/=128;case 5:e.set(t++,r&255|g),r/=128;case 4:e.set(t++,r&255|g),r>>>=7;case 3:e.set(t++,r&255|g),r>>>=7;case 2:e.set(t++,r&255|g),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function nr(r,e){let t=r[e],n=0;if(n+=t&k,t<g||(t=r[e+1],n+=(t&k)<<7,t<g)||(t=r[e+2],n+=(t&k)<<14,t<g)||(t=r[e+3],n+=(t&k)<<21,t<g)||(t=r[e+4],n+=(t&k)*jt,t<g)||(t=r[e+5],n+=(t&k)*Yt,t<g)||(t=r[e+6],n+=(t&k)*er,t<g)||(t=r[e+7],n+=(t&k)*tr,t<g))return n;throw new RangeError("Could not decode varint")}function ni(r,e){let t=r.get(e),n=0;if(n+=t&k,t<g||(t=r.get(e+1),n+=(t&k)<<7,t<g)||(t=r.get(e+2),n+=(t&k)<<14,t<g)||(t=r.get(e+3),n+=(t&k)<<21,t<g)||(t=r.get(e+4),n+=(t&k)*jt,t<g)||(t=r.get(e+5),n+=(t&k)*Yt,t<g)||(t=r.get(e+6),n+=(t&k)*er,t<g)||(t=r.get(e+7),n+=(t&k)*tr,t<g))return n;throw new RangeError("Could not decode varint")}function Ze(r,e,t=0){return e==null&&(e=S(E(r))),e instanceof Uint8Array?rr(r,e,t):ri(r,e,t)}function je(r,e=0){return r instanceof Uint8Array?nr(r,e):ni(r,e)}var sr=new Float32Array([-0]),K=new Uint8Array(sr.buffer);function ln(r,e,t){sr[0]=r,e[t]=K[0],e[t+1]=K[1],e[t+2]=K[2],e[t+3]=K[3]}function hn(r,e){return K[0]=r[e],K[1]=r[e+1],K[2]=r[e+2],K[3]=r[e+3],sr[0]}var ir=new Float64Array([-0]),L=new Uint8Array(ir.buffer);function un(r,e,t){ir[0]=r,e[t]=L[0],e[t+1]=L[1],e[t+2]=L[2],e[t+3]=L[3],e[t+4]=L[4],e[t+5]=L[5],e[t+6]=L[6],e[t+7]=L[7]}function dn(r,e){return L[0]=r[e],L[1]=r[e+1],L[2]=r[e+2],L[3]=r[e+3],L[4]=r[e+4],L[5]=r[e+5],L[6]=r[e+6],L[7]=r[e+7],ir[0]}var si=BigInt(Number.MAX_SAFE_INTEGER),ii=BigInt(Number.MIN_SAFE_INTEGER),M=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 j;if(e<si&&e>ii)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,s=e-(n<<32n);return t&&(n=~n|0n,s=~s|0n,++s>fn&&(s=0n,++n>fn&&(n=0n))),new r(Number(s),Number(n))}static fromNumber(e){if(e===0)return j;let t=e<0;t&&(e=-e);let n=e>>>0,s=(e-n)/4294967296>>>0;return t&&(s=~s>>>0,n=~n>>>0,++n>4294967295&&(n=0,++s>4294967295&&(s=0))),new r(n,s)}static from(e){return typeof e=="number"?r.fromNumber(e):typeof e=="bigint"?r.fromBigInt(e):typeof e=="string"?r.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new r(e.low>>>0,e.high>>>0):j}},j=new M(0,0);j.toBigInt=function(){return 0n};j.zzEncode=j.zzDecode=function(){return this};j.length=function(){return 1};var fn=4294967296n;function pn(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 mn(r,e,t){if(t-e<1)return"";let s,i=[],o=0,a;for(;e<t;)a=r[e++],a<128?i[o++]=a:a>191&&a<224?i[o++]=(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,i[o++]=55296+(a>>10),i[o++]=56320+(a&1023)):i[o++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,o>8191&&((s??(s=[])).push(String.fromCharCode.apply(String,i)),o=0);return s!=null?(o>0&&s.push(String.fromCharCode.apply(String,i.slice(0,o))),s.join("")):String.fromCharCode.apply(String,i.slice(0,o))}function or(r,e,t){let n=t,s,i;for(let o=0;o<r.length;++o)s=r.charCodeAt(o),s<128?e[t++]=s:s<2048?(e[t++]=s>>6|192,e[t++]=s&63|128):(s&64512)===55296&&((i=r.charCodeAt(o+1))&64512)===56320?(s=65536+((s&1023)<<10)+(i&1023),++o,e[t++]=s>>18|240,e[t++]=s>>12&63|128,e[t++]=s>>6&63|128,e[t++]=s&63|128):(e[t++]=s>>12|224,e[t++]=s>>6&63|128,e[t++]=s&63|128);return t-n}function R(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function Ye(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var ar=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,R(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 R(this,4);return Ye(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw R(this,4);return Ye(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw R(this,4);let e=hn(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw R(this,4);let e=dn(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 R(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return mn(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw R(this,e);this.pos+=e}else do if(this.pos>=this.len)throw R(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new M(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 R(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 R(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 R(this,8);let e=Ye(this.buf,this.pos+=4),t=Ye(this.buf,this.pos+=4);return new M(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=nr(this.buf,this.pos);return this.pos+=E(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 cr(r){return new ar(r instanceof Uint8Array?r:r.subarray())}function Y(r,e,t){let n=cr(r);return e.decode(n,void 0,t)}function lr(r){let e=r??8192,t=e>>>1,n,s=e;return function(o){if(o<1||o>t)return S(o);s+o>e&&(n=S(e),s=0);let a=n.subarray(s,s+=o);return(s&7)!==0&&(s=(s|7)+1),a}}var ee=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function hr(){}var dr=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},oi=lr();function ai(r){return globalThis.Buffer!=null?S(r):oi(r)}var Me=class{len;head;tail;states;constructor(){this.len=0,this.head=new ee(hr,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new ee(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new fr((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(et,10,M.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=M.fromBigInt(e);return this._push(et,t.length(),t)}uint64Number(e){return this._push(rr,E(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=M.fromBigInt(e).zzEncode();return this._push(et,t.length(),t)}sint64Number(e){let t=M.fromNumber(e).zzEncode();return this._push(et,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(ur,1,e?1:0)}fixed32(e){return this._push(De,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=M.fromBigInt(e);return this._push(De,4,t.lo)._push(De,4,t.hi)}fixed64Number(e){let t=M.fromNumber(e);return this._push(De,4,t.lo)._push(De,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(ln,4,e)}double(e){return this._push(un,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(ur,1,0):this.uint32(t)._push(li,t,e)}string(e){let t=pn(e);return t!==0?this.uint32(t)._push(or,t,e):this._push(ur,1,0)}fork(){return this.states=new dr(this),this.head=this.tail=new ee(hr,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 ee(hr,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=ai(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function ur(r,e,t){e[t]=r&255}function ci(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var fr=class extends ee{next;constructor(e,t){super(ci,e,t),this.next=void 0}};function et(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 De(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 li(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(Me.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(hi,e,r),this},Me.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(ui,e,r),this});function hi(r,e,t){e.set(r,t)}function ui(r,e,t){r.length<40?or(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(P(r),t)}function pr(){return new Me}function te(r,e){let t=pr();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var be;(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"})(be||(be={}));function tt(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function rt(r){function e(s){if(r[s.toString()]==null)throw new Error("Invalid enum value");return r[s]}let t=function(i,o){let a=e(i);o.int32(a)},n=function(i){let o=i.int32();return e(o)};return tt("enum",be.VARINT,t,n)}function re(r,e){return tt("message",be.LENGTH_DELIMITED,r,e)}var we=class extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"};var mr={32:16777619n,64:1099511628211n,128:309485009821345068724781371n,256:374144419156711147060143317175368453031918731002211n,512:35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759n,1024:5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573n},bn={32:2166136261n,64:14695981039346656037n,128:144066263297769815596495629667062367629n,256:100029257958052580907070968620625704837092796014241193945225284501741471925557n,512:9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785n,1024:14197795064947621068722070641403218320880622795441933960878474914617582723252296732303717722150864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915n},wn=new globalThis.TextEncoder;function di(r,e){let t=mr[e],n=bn[e];for(let s=0;s<r.length;s++)n^=BigInt(r[s]),n=BigInt.asUintN(e,n*t);return n}function fi(r,e,t){if(t.length===0)throw new Error("The `utf8Buffer` option must have a length greater than zero");let n=mr[e],s=bn[e],i=r;for(;i.length>0;){let o=wn.encodeInto(i,t);i=i.slice(o.read);for(let a=0;a<o.written;a++)s^=BigInt(t[a]),s=BigInt.asUintN(e,s*n)}return s}function gr(r,{size:e=32,utf8Buffer:t}={}){if(!mr[e])throw new Error("The `size` option must be one of 32, 64, 128, 256, 512, or 1024");if(typeof r=="string"){if(t)return fi(r,e,t);r=wn.encode(r)}return di(r,e)}var Ne={hash:r=>Number(gr(r,{size:32})),hashV:(r,e)=>pi(Ne.hash(r,e))};function pi(r){let e=r.toString(16);return e.length%2===1&&(e=`0${e}`),P(e,"base16")}var br=64,z=class{fp;h;seed;constructor(e,t,n,s=2){if(s>br)throw new TypeError("Invalid Fingerprint Size");let i=t.hashV(e,n),o=_(s);for(let a=0;a<o.length;a++)o[a]=i[a];o.length===0&&(o[0]=7),this.fp=o,this.h=t,this.seed=n}hash(){return this.h.hash(this.fp,this.seed)}equals(e){return e?.fp instanceof Uint8Array?$(this.fp,e.fp):!1}};function ne(r,e){return Math.floor(Math.random()*(e-r))+r}var se=class{contents;constructor(e){this.contents=new Array(e).fill(null)}has(e){if(!(e instanceof z))throw new TypeError("Invalid Fingerprint");return this.contents.some(t=>e.equals(t))}add(e){if(!(e instanceof z))throw new TypeError("Invalid Fingerprint");for(let t=0;t<this.contents.length;t++)if(this.contents[t]==null)return this.contents[t]=e,!0;return!0}swap(e){if(!(e instanceof z))throw new TypeError("Invalid Fingerprint");let t=ne(0,this.contents.length-1),n=this.contents[t];return this.contents[t]=e,n}remove(e){if(!(e instanceof z))throw new TypeError("Invalid Fingerprint");let t=this.contents.findIndex(n=>e.equals(n));return t>-1?(this.contents[t]=null,!0):!1}};var mi=500,Pe=class{bucketSize;filterSize;fingerprintSize;buckets;count;hash;seed;constructor(e){this.filterSize=e.filterSize,this.bucketSize=e.bucketSize??4,this.fingerprintSize=e.fingerprintSize??2,this.count=0,this.buckets=[],this.hash=e.hash??Ne,this.seed=e.seed??ne(0,Math.pow(2,10))}add(e){typeof e=="string"&&(e=P(e));let t=new z(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,s=(n^t.hash())%this.filterSize;if(this.buckets[n]==null&&(this.buckets[n]=new se(this.bucketSize)),this.buckets[s]==null&&(this.buckets[s]=new se(this.bucketSize)),this.buckets[n].add(t)||this.buckets[s].add(t))return this.count++,!0;let i=[n,s],o=i[ne(0,i.length-1)];this.buckets[o]==null&&(this.buckets[o]=new se(this.bucketSize));for(let a=0;a<mi;a++){let c=this.buckets[o].swap(t);if(c!=null&&(o=(o^c.hash())%this.filterSize,this.buckets[o]==null&&(this.buckets[o]=new se(this.bucketSize)),this.buckets[o].add(c)))return this.count++,!0}return!1}has(e){typeof e=="string"&&(e=P(e));let t=new z(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,s=this.buckets[n]?.has(t)??!1;if(s)return s;let i=(n^t.hash())%this.filterSize;return this.buckets[i]?.has(t)??!1}remove(e){typeof e=="string"&&(e=P(e));let t=new z(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,s=this.buckets[n]?.remove(t)??!1;if(s)return this.count--,s;let i=(n^t.hash())%this.filterSize,o=this.buckets[i]?.remove(t)??!1;return o&&this.count--,o}get reliable(){return Math.floor(100*(this.count/this.filterSize))<=90}},gi={1:.5,2:.84,4:.95,8:.98};function bi(r=.001){return r>.002?2:r>1e-5?4:8}function yn(r,e=.001){let t=bi(e),n=gi[t],s=Math.round(r/n),i=Math.min(Math.ceil(Math.log2(1/e)+Math.log2(2*t)),br);return{filterSize:s,bucketSize:t,fingerprintSize:i}}var nt=class{filterSize;bucketSize;fingerprintSize;scale;filterSeries;hash;seed;constructor(e){this.bucketSize=e.bucketSize??4,this.filterSize=e.filterSize??(1<<18)/this.bucketSize,this.fingerprintSize=e.fingerprintSize??2,this.scale=e.scale??2,this.hash=e.hash??Ne,this.seed=e.seed??ne(0,Math.pow(2,10)),this.filterSeries=[new Pe({filterSize:this.filterSize,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed})]}add(e){if(typeof e=="string"&&(e=P(e)),this.has(e))return!0;let t=this.filterSeries.find(n=>n.reliable);if(t==null){let n=this.filterSize*Math.pow(this.scale,this.filterSeries.length);t=new Pe({filterSize:n,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed}),this.filterSeries.push(t)}return t.add(e)}has(e){typeof e=="string"&&(e=P(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].has(e))return!0;return!1}remove(e){typeof e=="string"&&(e=P(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].remove(e))return!0;return!1}get count(){return this.filterSeries.reduce((e,t)=>e+t.count,0)}};function wr(r,e=.001,t){return new nt({...yn(r,e),...t??{}})}function O(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var st=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||(e-1&e)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},ye=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new st(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 st(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 yr=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function it(r={}){return wi(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 wi(r,e){e=e??{};let t=e.onEnd,n=new ye,s,i,o,a=O(),c=async()=>{try{return n.isEmpty()?o?{done:!0}:await new Promise((m,x)=>{i=A=>{i=null,n.push(A);try{m(r(n))}catch(v){x(v)}return s}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=O()})}},u=m=>i!=null?i(m):(n.push(m),s),l=m=>(n=new ye,i!=null?i({error:m}):(n.push({error:m}),s)),h=m=>{if(o)return s;if(e?.objectMode!==!0&&m?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return u({done:!1,value:m})},f=m=>o?s:(o=!0,m!=null?l(m):u({done:!0})),d=()=>(n=new ye,f(),{done:!0}),p=m=>(f(m),{done:!0});if(s={[Symbol.asyncIterator](){return this},next:c,return:d,throw:p,push:h,end:f,get readableLength(){return n.size},onEmpty:async m=>{let x=m?.signal;if(x?.throwIfAborted(),n.isEmpty())return;let A,v;x!=null&&(A=new Promise((I,N)=>{v=()=>{N(new yr)},x.addEventListener("abort",v)}));try{await Promise.race([a.promise,A])}finally{v!=null&&x!=null&&x?.removeEventListener("abort",v)}}},t==null)return s;let b=s;return s={[Symbol.asyncIterator](){return this},next(){return b.next()},throw(m){return b.throw(m),t!=null&&(t(m),t=void 0),{done:!0}},return(){return b.return(),t!=null&&(t(),t=void 0),{done:!0}},push:h,end(m){return b.end(m),t!=null&&(t(m),t=void 0),s},get readableLength(){return b.readableLength},onEmpty:m=>b.onEmpty(m)},s}var xr=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},Er=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},xn=r=>globalThis.DOMException===void 0?new Er(r):new DOMException(r),En=r=>{let e=r.reason===void 0?xn("This operation was aborted."):r.reason;return e instanceof Error?e:xn(e)};function vr(r,e){let{milliseconds:t,fallback:n,message:s,customTimers:i={setTimeout,clearTimeout}}=e,o,a,u=new Promise((l,h)=>{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&&h(En(d)),a=()=>{h(En(d))},d.addEventListener("abort",a,{once:!0})}if(t===Number.POSITIVE_INFINITY){r.then(l,h);return}let f=new xr;o=i.setTimeout.call(void 0,()=>{if(n){try{l(n())}catch(d){h(d)}return}typeof r.cancel=="function"&&r.cancel(),s===!1?l():s instanceof Error?h(s):(f.message=s??`Promise timed out after ${t} milliseconds`,h(f))},t),(async()=>{try{l(await r)}catch(d){h(d)}})()}).finally(()=>{u.clear(),a&&e.signal&&e.signal.removeEventListener("abort",a)});return u.clear=()=>{i.clearTimeout.call(void 0,o),o=void 0},u}var yi=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function xi(r,e,t){let n,s=new Promise((i,o)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:u,removeListener:l}=yi(r),h=async(...d)=>{let p=t.multiArgs?d:d[0];if(t.filter)try{if(!await t.filter(p))return}catch(b){n(),o(b);return}c.push(p),t.count===c.length&&(n(),i(c))},f=(...d)=>{n(),o(t.rejectionMultiArgs?d:d[0])};n=()=>{for(let d of a)l(d,h);for(let d of t.rejectionEvents)a.includes(d)||l(d,f)};for(let d of a)u(d,h);for(let d of t.rejectionEvents)a.includes(d)||u(d,f);t.signal&&t.signal.addEventListener("abort",()=>{f(t.signal.reason)},{once:!0}),t.resolveImmediately&&i(c)});if(s.cancel=n,typeof t.timeout=="number"){let i=vr(s,{milliseconds:t.timeout});return i.cancel=()=>{n(),i.clear()},i}return s}function ot(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=xi(r,e,t),s=n.then(i=>i[0]);return s.cancel=n.cancel,s}function _r(r,e){let t,n=function(){let s=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(s,e)};return n.start=()=>{},n.stop=()=>{clearTimeout(t)},n}var at=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}};function Ei(r){return r.reason}async function Ce(r,e,t){if(e==null)return r;let n=t?.translateError??Ei;if(e.aborted)return r.catch(()=>{}),Promise.reject(n(e));let s;try{return await Promise.race([r,new Promise((i,o)=>{s=()=>{o(n(e))},e.addEventListener("abort",s)})])}finally{s!=null&&e.removeEventListener("abort",s)}}var ct=class{deferred;signal;constructor(e){this.signal=e,this.deferred=O(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new U)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function vi(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var lt=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=vi(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,this.controller.signal,this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new U),this.cleanup())}async join(e={}){let t=new ct(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 Ce(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};var xe=class extends H{concurrency;maxSize;queue;pending;sort;paused;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??Number.POSITIVE_INFINITY,this.pending=0,this.paused=!1,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.sort=e.sort,this.queue=[],this.emitEmpty=_r(this.emitEmpty.bind(this),1),this.emitIdle=_r(this.emitIdle.bind(this),1)}emitEmpty(){this.size===0&&this.safeDispatchEvent("empty")}emitIdle(){this.running===0&&this.safeDispatchEvent("idle")}pause(){this.paused=!0}resume(){this.paused&&(this.paused=!1,this.tryToStartAnother())}tryToStartAnother(){if(this.paused)return!1;if(this.size===0)return this.emitEmpty(),this.running===0&&this.emitIdle(),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}async add(e,t){if(t?.signal?.throwIfAborted(),this.size===this.maxSize)throw new at;let n=new lt(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),n.join(t).then(s=>(this.safeDispatchEvent("completed",{detail:s}),this.safeDispatchEvent("success",{detail:{job:n,result:s}}),s)).catch(s=>{if(n.status==="queued"){for(let i=0;i<this.queue.length;i++)if(this.queue[i]===n){this.queue.splice(i,1);break}}throw this.safeDispatchEvent("failure",{detail:{job:n,error:s}}),s})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new U)}),this.clear()}async onEmpty(e){this.size!==0&&await ot(this,"empty",e)}async onSizeLessThan(e,t){this.size<e||await ot(this,"next",{...t,filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await ot(this,"idle",e)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=it({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},s=c=>{c.detail!=null&&t.push(c.detail)},i=c=>{n(c.detail.error)},o=()=>{n()},a=()=>{n(new U("Queue aborted"))};this.addEventListener("completed",s),this.addEventListener("failure",i),this.addEventListener("idle",o),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",s),this.removeEventListener("failure",i),this.removeEventListener("idle",o),e?.signal?.removeEventListener("abort",a),n()}}};var ht=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},Ee=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},ut=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"},Be=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};function dt(r){return r[Symbol.asyncIterator]!=null}function vn(r,e){if(r.byteLength>e)throw new Ee("Message length too long")}var pt=r=>{let e=E(r),t=S(e);return Ze(r,t),pt.bytes=e,t};pt.bytes=0;function mt(r,e){e=e??{};let t=e.lengthEncoder??pt,n=e?.maxDataLength??4194304;function*s(i){vn(i,n);let o=t(i.byteLength);o instanceof Uint8Array?yield o:yield*o,i instanceof Uint8Array?yield i:yield*i}return dt(r)?(async function*(){for await(let i of r)yield*s(i)})():(function*(){for(let i of r)yield*s(i)})()}mt.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??pt,n=e?.maxDataLength??4194304;return vn(r,n),new ge(t(r.byteLength),r)};var ie;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(ie||(ie={}));var Sr=r=>{let e=je(r);return Sr.bytes=E(e),e};Sr.bytes=0;function Ue(r,e){let t=new ge,n=ie.LENGTH,s=-1,i=e?.lengthDecoder??Sr,o=e?.maxLengthLength??8,a=e?.maxDataLength??4194304;function*c(){for(;t.byteLength>0;){if(n===ie.LENGTH)try{if(s=i(t),s<0)throw new ht("Invalid message length");if(s>a)throw new Ee("Message length too long");let u=i.bytes;t.consume(u),e?.onLength!=null&&e.onLength(s),n=ie.DATA}catch(u){if(u instanceof RangeError){if(t.byteLength>o)throw new ut("Message length length too long");break}throw u}if(n===ie.DATA){if(t.byteLength<s)break;let u=t.sublist(0,s);t.consume(s),e?.onData!=null&&e.onData(u),yield u,n=ie.LENGTH}}}return dt(r)?(async function*(){for await(let u of r)t.append(u),yield*c();if(t.byteLength>0)throw new Be("Unexpected end of input")})():(function*(){for(let u of r)t.append(u),yield*c();if(t.byteLength>0)throw new Be("Unexpected end of input")})()}Ue.fromReader=(r,e)=>{let t=1,n=(async function*(){for(;;)try{let{done:i,value:o}=await r.next(t);if(i===!0)return;o!=null&&(yield o)}catch(i){if(i.code==="ERR_UNDER_READ")return{done:!0,value:null};throw i}finally{t=1}})();return Ue(n,{...e??{},onLength:i=>{t=i}})};var gt=class extends xe{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var kr=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 _n(r){let{name:e,metrics:t}=r,n;return t!=null?n=new kr({name:e,metrics:t}):n=new Map,n}function ki(r){return r[Symbol.asyncIterator]!=null}function Li(r){if(ki(r))return(async()=>{for await(let e of r);})();for(let e of r);}var Lr=Li;function Ai(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:s=>{n.push(s)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var Sn=Ai;function Ii(r){return r[Symbol.asyncIterator]!=null}function Ti(r,e){let t=0;if(Ii(r))return(async function*(){for await(let c of r)yield e(c,t++)})();let n=Sn(r),{value:s,done:i}=n.next();if(i===!0)return(function*(){})();let o=e(s,t++);if(typeof o.then=="function")return(async function*(){yield await o;for(let c of n)yield e(c,t++)})();let a=e;return(function*(){yield o;for(let c of n)yield a(c,t++)})()}var kn=Ti;function Di(r){return r[Symbol.asyncIterator]!=null}function Mi(r,e){return Di(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 Ln=Mi;var bt=class extends Error{static name="AbortError";name="AbortError";constructor(e="The operation was aborted",...t){super(e,...t)}};async function oe(r,e,t,n){let s=new bt(n?.errorMessage);n?.errorCode!=null&&(s.code=n.errorCode);let i=n?.errorEvent??"error";return t?.aborted===!0?Promise.reject(s):new Promise((o,a)=>{function c(){Ir(t,"abort",h),Ir(r,e,u),Ir(r,i,l)}let u=f=>{try{if(n?.filter?.(f)===!1)return}catch(d){c(),a(d);return}c(),o(f)},l=f=>{if(c(),f instanceof Error){a(f);return}a(f.detail??n?.error??new Error(`The "${n?.errorEvent}" event was emitted but the event had no '.detail' field. Pass an 'error' option to race-event to change this message.`))},h=()=>{c(),a(s)};Ar(t,"abort",h),Ar(r,e,u),Ar(r,i,l)})}function Ar(r,e,t){r!=null&&(An(r)?r.addEventListener(e,t):r.addListener(e,t))}function Ir(r,e,t){r!=null&&(An(r)?r.removeEventListener(e,t):r.removeListener(e,t))}function An(r){return typeof r.addEventListener=="function"&&typeof r.removeEventListener=="function"}var Fe="/ipfs/bitswap/1.2.0";var y;(function(r){r.WantBlock="WantBlock",r.WantHave="WantHave"})(y||(y={}));var Tr;(function(r){r[r.WantBlock=0]="WantBlock",r[r.WantHave=1]="WantHave"})(Tr||(Tr={}));(function(r){r.codec=()=>rt(Tr)})(y||(y={}));var ve;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.cid!=null&&t.cid.byteLength>0&&(n.uint32(10),n.bytes(t.cid)),t.priority!=null&&t.priority!==0&&(n.uint32(16),n.int32(t.priority)),t.cancel!=null&&(n.uint32(24),n.bool(t.cancel)),t.wantType!=null&&(n.uint32(32),y.codec().encode(t.wantType,n)),t.sendDontHave!=null&&(n.uint32(40),n.bool(t.sendDontHave)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={cid:_(0),priority:0},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.cid=t.bytes();break}case 2:{i.priority=t.int32();break}case 3:{i.cancel=t.bool();break}case 4:{i.wantType=y.codec().decode(t);break}case 5:{i.sendDontHave=t.bool();break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>te(t,r.codec()),r.decode=(t,n)=>Y(t,r.codec(),n)})(ve||(ve={}));var wt;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),t.entries!=null)for(let i of t.entries)n.uint32(10),ve.codec().encode(i,n);t.full!=null&&(n.uint32(16),n.bool(t.full)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={entries:[]},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{if(s.limits?.entries!=null&&i.entries.length===s.limits.entries)throw new we('Decode error - map field "entries" had too many elements');i.entries.push(ve.codec().decode(t,t.uint32(),{limits:s.limits?.entries$}));break}case 2:{i.full=t.bool();break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>te(t,r.codec()),r.decode=(t,n)=>Y(t,r.codec(),n)})(wt||(wt={}));var _e;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.prefix!=null&&t.prefix.byteLength>0&&(n.uint32(10),n.bytes(t.prefix)),t.data!=null&&t.data.byteLength>0&&(n.uint32(18),n.bytes(t.data)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={prefix:_(0),data:_(0)},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.prefix=t.bytes();break}case 2:{i.data=t.bytes();break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>te(t,r.codec()),r.decode=(t,n)=>Y(t,r.codec(),n)})(_e||(_e={}));var C;(function(r){r.HaveBlock="HaveBlock",r.DoNotHaveBlock="DoNotHaveBlock"})(C||(C={}));var yt;(function(r){r[r.HaveBlock=0]="HaveBlock",r[r.DoNotHaveBlock=1]="DoNotHaveBlock"})(yt||(yt={}));(function(r){r.codec=()=>rt(yt)})(C||(C={}));var Se;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.cid!=null&&t.cid.byteLength>0&&(n.uint32(10),n.bytes(t.cid)),t.type!=null&&yt[t.type]!==0&&(n.uint32(16),C.codec().encode(t.type,n)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={cid:_(0),type:C.HaveBlock},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.cid=t.bytes();break}case 2:{i.type=C.codec().decode(t);break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>te(t,r.codec()),r.decode=(t,n)=>Y(t,r.codec(),n)})(Se||(Se={}));var ae;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),t.wantlist!=null&&(n.uint32(10),wt.codec().encode(t.wantlist,n)),t.blocks!=null)for(let i of t.blocks)n.uint32(26),_e.codec().encode(i,n);if(t.blockPresences!=null)for(let i of t.blockPresences)n.uint32(34),Se.codec().encode(i,n);t.pendingBytes!=null&&t.pendingBytes!==0&&(n.uint32(40),n.int32(t.pendingBytes)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={blocks:[],blockPresences:[],pendingBytes:0},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.wantlist=wt.codec().decode(t,t.uint32(),{limits:s.limits?.wantlist});break}case 3:{if(s.limits?.blocks!=null&&i.blocks.length===s.limits.blocks)throw new we('Decode error - map field "blocks" had too many elements');i.blocks.push(_e.codec().decode(t,t.uint32(),{limits:s.limits?.blocks$}));break}case 4:{if(s.limits?.blockPresences!=null&&i.blockPresences.length===s.limits.blockPresences)throw new we('Decode error - map field "blockPresences" had too many elements');i.blockPresences.push(Se.codec().decode(t,t.uint32(),{limits:s.limits?.blockPresences$}));break}case 5:{i.pendingBytes=t.int32();break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>te(t,r.codec()),r.decode=(t,n)=>Y(t,r.codec(),n)})(ae||(ae={}));function In(r,e){for(let[t,n]of e.wantlist.entries()){let s=r.wantlist.get(t);s!=null&&(s.priority>n.priority&&(n.priority=s.priority),n.cancel=n.cancel??s.cancel,n.wantType=n.wantType??s.wantType,n.sendDontHave=n.sendDontHave??s.sendDontHave),r.wantlist.set(t,n)}for(let[t,n]of e.blockPresences.entries())r.blockPresences.set(t,n);for(let[t,n]of e.blocks.entries())r.blocks.set(t,n);return e.full&&!r.full&&(r.full=!0),r}var xt=class extends Error{static name="BlockTooLargeError";constructor(e="Block too large"){super(e),this.name="BlockTooLargeError"}};var Ni=4193648,Pi=Ni+16;function*Tn(r,e){let t=[...r.wantlist.values()],n=[...r.blockPresences.values()],s=[...r.blocks.values()],i=0,o=0,a=0,c=!1;for(;;){let u={wantlist:{full:r.full??!1,entries:[]},blockPresences:[],blocks:[],pendingBytes:0},l=ae.encode(u).byteLength,{added:h,hasMore:f,newSize:d}=Dr(s,u.blocks,a,e,l,Ci);a+=h,l=d;let p=f;({added:h,hasMore:f,newSize:d}=Dr(n,u.blockPresences,o,e,l,Bi)),o+=h,l=d;let b=f;if({added:h,hasMore:f,newSize:d}=Dr(t,u.wantlist.entries,i,e,l,Ui),i+=h,l=d,c=!p&&!b&&!f,c||(u.wantlist.full=!1),yield ae.encode(u),c)break}}function Dr(r,e,t,n,s,i){let o=0,a=!1;for(let c=t;c<r.length;c++){let u=r[c],l=i(u);if(l>Pi)throw new xt("Cannot send block as after encoding it is over the max message size");let h=s+l;if(h>n){a=!0;break}e.push(u),o++,s=h}return{hasMore:a,added:o,newSize:s}}function Ci(r){return Mr(3,_e.encode(r))}function Bi(r){return Mr(4,Se.encode(r))}function Ui(r){return Mr(1,ve.encode(r))}function Mr(r,e){let t=E(r),n=E(e.byteLength);return t+n+e.byteLength}var Et=class extends H{log;libp2p;routing;protocols;running;maxInboundStreams;maxOutboundStreams;messageReceiveTimeout;registrarIds;metrics;sendQueue;runOnLimitedConnections;maxOutgoingMessageSize;maxIncomingMessageSize;constructor(e,t={}){super(),this.log=e.logger.forComponent("helia:bitswap:network"),this.libp2p=e.libp2p,this.routing=e.routing,this.protocols=t.protocols??[Fe],this.registrarIds=[],this.running=!1,this._onStream=this._onStream.bind(this),this.maxInboundStreams=t.maxInboundStreams??1024,this.maxOutboundStreams=t.maxOutboundStreams??1024,this.messageReceiveTimeout=t.messageReceiveTimeout??5e3,this.runOnLimitedConnections=t.runOnLimitedConnections??!1,this.maxIncomingMessageSize=t.maxIncomingMessageSize??4194304,this.maxOutgoingMessageSize=t.maxOutgoingMessageSize??t.maxIncomingMessageSize??4194304,this.metrics={blocksSent:e.metrics?.registerCounter("helia_bitswap_sent_blocks_total"),dataSent:e.metrics?.registerCounter("helia_bitswap_sent_data_bytes_total")},this.sendQueue=new gt({concurrency:t.messageSendConcurrency??50,metrics:e.metrics,metricName:"helia_bitswap_message_send_queue"})}async start(){if(this.running)return;this.running=!0,await this.libp2p.handle(this.protocols,this._onStream,{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnLimitedConnection:this.runOnLimitedConnections});let e={onConnect:t=>{this.safeDispatchEvent("peer:connected",{detail:t})},onDisconnect:t=>{this.safeDispatchEvent("peer:disconnected",{detail:t})}};this.registrarIds=[];for(let t of this.protocols)this.registrarIds.push(await this.libp2p.register(t,e));this.libp2p.getConnections().forEach(t=>{this.safeDispatchEvent("peer:connected",{detail: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=[]}}_onStream(e,t){this.running&&Promise.resolve().then(async()=>{this.log("incoming new bitswap %s stream from %p",e.protocol,t.remotePeer);let n=()=>{e.status==="open"?e.abort(new $e(`Incoming Bitswap stream timed out after ${this.messageReceiveTimeout}ms`)):this.log("stream aborted with status %s",e.status)},s=AbortSignal.timeout(this.messageReceiveTimeout);s.addEventListener("abort",n),await e.close({signal:s});let i=it();e.addEventListener("message",o=>{i.push(o.data)}),e.addEventListener("remoteCloseWrite",()=>{i.end()}),e.addEventListener("close",o=>{o.error!=null&&i.end(o.error)});for await(let o of Ue(i,{maxDataLength:this.maxIncomingMessageSize}))try{let a=ae.decode(o);this.log("incoming new bitswap %s message from %p on stream",e.protocol,t.remotePeer,e.id),this.safeDispatchEvent("bitswap:message",{detail:{peer:t.remotePeer,message:a}}),s.removeEventListener("abort",n),s=AbortSignal.timeout(this.messageReceiveTimeout),s.addEventListener("abort",n)}catch(a){this.log.error("error reading incoming bitswap message from %p on stream - %e",t.remotePeer,e.id,a),e.abort(a);break}}).catch(n=>{this.log.error("error handling incoming stream from %p - %e",t.remotePeer,n),e.abort(n)})}async*findProviders(e,t){t?.onProgress?.(new D("bitswap:find-providers",e));for await(let n of this.routing.findProviders(e,t)){if(!await this.libp2p.isDialable(n.multiaddrs,{runOnLimitedConnection:this.runOnLimitedConnections})){this.log("skipping peer %p as they are not dialable - %a[]",n.id,n.multiaddrs);continue}t?.onProgress?.(new D("bitswap:found-provider",{type:"bitswap",cid:e,provider:n,routing:n.routing})),yield n}}async findAndConnect(e,t){t?.providers!=null&&await Promise.all(t.providers.map(async n=>this.connectTo(n).catch(s=>{this.log.error("could not connect to supplied provider - %e",s)}))),await Lr(kn(Ln(this.findProviders(e,t),t?.maxProviders??3),async n=>this.connectTo(n.id,t))).catch(n=>{this.log.error(n)})}async sendMessage(e,t,n){if(!this.running)throw new Error("network isn't running");let s=this.sendQueue.queue.find(i=>e.equals(i.options.peerId)&&i.status==="queued");if(s!=null){s.options.message=In(s.options.message,t),await s.join({signal:n?.signal});return}await this.sendQueue.add(async i=>{let o=i?.message;if(o==null)throw new Ve("No message to send");this.log("sendMessage to %p",e),i?.onProgress?.(new D("bitswap:network:send-wantlist",e));let a=await this.libp2p.dialProtocol(e,Fe,i);await a.closeRead();try{for(let c of Tn(o,this.maxOutgoingMessageSize))a.send(mt.single(c))||await a.onDrain(i);await a.close(i)}catch(c){i?.onProgress?.(new D("bitswap:network:send-wantlist:error",{peer:e,error:c})),this.log.error("error sending message to %p - %e",e,c),a.abort(c)}this._updateSentStats(o.blocks)},{peerId:e,signal:n?.signal,message:t})}async connectTo(e,t){if(!this.running)throw new We("Network isn't running");t?.onProgress?.(new D("bitswap:network:dial",e));let[n]=await Promise.all([this.libp2p.dial(e,t),oe(this.libp2p,"peer:identify",t?.signal,{filter:s=>{if(!s.detail.peerId.equals(e))return!1;if(s.detail.protocols.includes(Fe))return!0;throw new Ge(`${e} did not support ${Fe}`)}})]);return n}_updateSentStats(e){let t=0;for(let n of e.values())t+=n.data.byteLength;this.metrics.dataSent?.increment(t),this.metrics.blocksSent?.increment(e.size)}};function vt(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),s=n.value;return n.done===!0||s==null?{done:!0,value:void 0}:{done:!1,value:e(s)}}};return t}var Re=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),{key:t,value:n})}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return vt(this.map.entries(),e=>[e[1].key,e[1].value])}forEach(e){this.map.forEach((t,n)=>{e(t.value,t.key,this)})}get(e){return this.map.get(e.toString())?.value}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),{key:e,value:t})}keys(){return vt(this.map.values(),e=>e.key)}values(){return vt(this.map.values(),e=>e.value)}get size(){return this.map.size}};var Nr=class extends Re{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 ze(r){let{name:e,metrics:t}=r,n;return t!=null?n=new Nr({name:e,metrics:t}):n=new Re,n}function $i(r){return r[Symbol.asyncIterator]!=null}function Wi(r){if($i(r))return(async()=>{let n=new Uint8Array(0);for await(let s of r)n=me([n,s],n.length+s.length);return n})();let e=[],t=0;for(let n of r)e.push(n),t+=n.byteLength;return me(e,t)}var Mn=Wi;var X=class{full;pendingBytes;wantlist;blocks;blockPresences;constructor(e=!1,t=0){this.full=e,this.wantlist=new Map,this.blocks=new Map,this.blockPresences=new Map,this.pendingBytes=0}addWantlistEntry(e,t){let n=Z.encode(e.multihash.bytes);this.wantlist.set(n,t)}addBlockPresence(e,t){let n=Z.encode(e.multihash.bytes);this.blockPresences.set(n,t)}addBlock(e,t){let n=Z.encode(e.multihash.bytes);this.blocks.set(n,t)}};function Xi(r){let e=new Uint8Array(r.reduce((n,s)=>n+E(s),0)),t=0;for(let n of r)e=Ze(n,e,t),t+=E(n);return e}var Nn=Xi;function Pr(r){return Nn([r.version,r.code,r.multihash.code,r.multihash.digest.byteLength])}var _t=class{peerId;blockstore;network;wants;exchangeCount;bytesSent;bytesReceived;lastExchange;maxSizeReplaceHasWithBlock;log;constructor(e,t){this.peerId=e.peerId,this.blockstore=e.blockstore,this.network=e.network,this.wants=new Map,this.log=e.logger.forComponent(`helia:bitswap:ledger:${e.peerId}`),this.exchangeCount=0,this.bytesSent=0,this.bytesReceived=0,this.maxSizeReplaceHasWithBlock=t.maxSizeReplaceHasWithBlock??1024}sentBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.bytesSent+=e}receivedBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.bytesReceived+=e}debtRatio(){return this.bytesSent/(this.bytesReceived+1)}async sendBlocksToPeer(e){let t=new X,n=new Set;for(let[s,i]of this.wants.entries())try{let o=await Mn(this.blockstore.get(i.cid,e));i.wantType===y.WantHave?o.byteLength<this.maxSizeReplaceHasWithBlock?(this.log("sending have and block for %c",i.cid),n.add(s),t.addBlock(i.cid,{data:o,prefix:Pr(i.cid)})):(this.log("sending have for %c",i.cid),t.addBlockPresence(i.cid,{cid:i.cid.bytes,type:C.HaveBlock})):(this.log("sending block for %c",i.cid),n.add(s),t.addBlock(i.cid,{data:o,prefix:Pr(i.cid)}))}catch(o){if(o.name!=="NotFoundError")throw o;if(this.log("do not have block for %c",i.cid),!i.sendDontHave||i.sentDoNotHave===!0)continue;i.sentDoNotHave=!0,t.addBlockPresence(i.cid,{cid:i.cid.bytes,type:C.DoNotHaveBlock})}if(t.blocks.size>0||t.blockPresences.size>0){this.log("sending message"),await this.network.sendMessage(this.peerId,t,e),this.log("sent message"),this.sentBytes([...t.blocks.values()].reduce((s,i)=>s+i.data.byteLength,0));for(let s of n)this.wants.delete(s)}}};var St=class{blockstore;network;ledgerMap;maxSizeReplaceHasWithBlock;log;logger;constructor(e,t={}){this.blockstore=e.blockstore,this.network=e.network,this.maxSizeReplaceHasWithBlock=t.maxSizeReplaceHasWithBlock,this.log=e.logger.forComponent("helia:bitswap:peer-want-lists"),this.logger=e.logger,this.ledgerMap=ze({name:"helia_bitswap_ledger_map",metrics:e.metrics}),this.network.addEventListener("bitswap:message",n=>{this.receiveMessage(n.detail.peer,n.detail.message).catch(s=>{this.log.error("error receiving bitswap message from %p - %e",n.detail.peer,s)})}),this.network.addEventListener("peer:disconnected",n=>{this.peerDisconnected(n.detail)})}ledgerForPeer(e){let t=this.ledgerMap.get(e);if(t!=null)return{peer:t.peerId,value:t.debtRatio(),sent:t.bytesSent,received:t.bytesReceived,exchanged:t.exchangeCount}}wantListForPeer(e){let t=this.ledgerMap.get(e);if(t!=null)return[...t.wants.values()]}peers(){return Array.from(this.ledgerMap.values()).map(e=>e.peerId)}async receiveMessage(e,t){let n=this.ledgerMap.get(e);if(n==null&&(n=new _t({peerId:e,blockstore:this.blockstore,network:this.network,logger:this.logger},{maxSizeReplaceHasWithBlock:this.maxSizeReplaceHasWithBlock}),this.ledgerMap.set(e,n)),n.receivedBytes(t.blocks?.reduce((s,i)=>s+i.data.byteLength,0)??0),t.wantlist!=null){t.wantlist.full===!0&&n.wants.clear();for(let s of t.wantlist.entries){let i=G.decode(s.cid),o=W(i.multihash.bytes,"base64");s.cancel===!0?(this.log("peer %p cancelled want of block for %c",e,i),n.wants.delete(o)):(s.wantType===y.WantHave?this.log("peer %p wanted block presence for %c",e,i):this.log("peer %p wanted block for %c",e,i),n.wants.set(o,{cid:i,priority:s.priority,wantType:s.wantType??y.WantBlock,sendDontHave:s.sendDontHave??!1}))}}this.log("send blocks to peer"),await n.sendBlocksToPeer()}async receivedBlock(e,t){let n=W(e.multihash.bytes,"base64"),s=[];for(let i of this.ledgerMap.values())i.wants.has(n)&&s.push(i);await Promise.all(s.map(async i=>i.sendBlocksToPeer(t)))}peerDisconnected(e){this.ledgerMap.delete(e)}};var Ki=Vn(Cn(),1);var ke;(function(r){r[r.A=1]="A",r[r.CNAME=5]="CNAME",r[r.TXT=16]="TXT",r[r.AAAA=28]="AAAA"})(ke||(ke={}));var kt=class extends Error{static name="InsufficientProvidersError";constructor(e="Insufficient providers found"){super(e),this.name="InsufficientProvidersError"}};var Oe=class extends H{initialPeerSearchComplete;requests;name;log;logger;minProviders;maxProviders;providers;evictionFilter;initialProviders;constructor(e,t){super(),this.name=t.name,this.logger=e.logger,this.log=e.logger.forComponent(this.name),this.requests=new Map,this.minProviders=t.minProviders??1,this.maxProviders=t.maxProviders??5,this.providers=[],this.evictionFilter=wr(this.maxProviders),this.initialProviders=t.providers??[]}async retrieve(e,t={}){let n=Z.encode(e.multihash.bytes),s=this.requests.get(n);if(s!=null)return this.log("join existing request for %c",e),s;let i=O();if(this.requests.set(n,i.promise),this.providers.length===0){let l=!1;this.initialPeerSearchComplete==null&&(l=!0,this.log=this.logger.forComponent(`${this.name}:${e}`),this.initialPeerSearchComplete=this.findProviders(e,this.minProviders,t));try{await Ce(this.initialPeerSearchComplete,t.signal),l&&this.log("found initial session peers for %c",e)}catch(h){throw l&&this.log("failed to find initial session peers for %c - %e",e,h),this.requests.delete(n),i.reject(h),h}}let o=!1,a=new xe({concurrency:this.maxProviders});a.addEventListener("failure",l=>{this.log.error("error querying provider %s, evicting from session - %e",l.detail.job.options.provider,l.detail.error),this.evict(l.detail.job.options.provider)}),a.addEventListener("success",l=>{o=!0,i.resolve(l.detail.result)}),a.addEventListener("idle",()=>{if(o){this.log.trace("session idle, found block");return}if(t.signal?.aborted===!0){this.log.trace("session idle, signal aborted");return}Promise.resolve().then(async()=>{this.log("no session peers had block for for %c, finding new providers",e);for(let l=0;l<this.minProviders&&this.providers.length!==0;l++){let h=this.providers[Math.floor(Math.random()*this.providers.length)];this.evict(h)}await this.findProviders(e,this.minProviders,t),this.log("found new providers re-retrieving %c",e),this.requests.delete(n),i.resolve(await this.retrieve(e,t))}).catch(l=>{this.log.error("could not find new providers for %c - %e",e,l),i.reject(l)})});let c=l=>{a.add(async()=>this.queryProvider(e,l.detail,t),{provider:l.detail}).catch(h=>{t.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c - %e",e,h)})};this.addEventListener("provider",c),Promise.all([...this.providers].map(async l=>a.add(async()=>this.queryProvider(e,l,t),{provider:l}))).catch(l=>{t.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c - %e",e,l)});let u=()=>{i.reject(new U(t.signal?.reason??"Session aborted")),a.abort()};t.signal?.addEventListener("abort",u);try{return await Ce(i.promise,t.signal)}finally{this.removeEventListener("provider",c),t.signal?.removeEventListener("abort",u),a.clear(),this.requests.delete(n)}}evict(e){this.evictionFilter.add(this.toEvictionKey(e));let t=this.providers.findIndex(n=>this.equals(n,e));t!==-1&&this.providers.splice(t,1)}isEvicted(e){return this.evictionFilter.has(this.toEvictionKey(e))}hasProvider(e){return!!(this.providers.find(t=>this.equals(t,e))!=null||this.isEvicted(e))}async findProviders(e,t,n){let s=O(),i=0;return Promise.resolve().then(async()=>{if(this.log("finding %d-%d new provider(s) for %c",t,this.maxProviders,e),this.initialProviders.length>0)for(;i<t&&this.initialProviders.length>0;){let o=this.initialProviders.pop();if(o==null)break;let a=await this.convertToProvider(o,n);if(n.signal?.aborted===!0)break;if(a!=null&&!this.hasProvider(a)&&(this.log("found %d/%d new providers",i,this.maxProviders),this.providers.push(a),this.safeDispatchEvent("provider",{detail:a}),i++,i===t&&(this.log("session is ready"),s.resolve()),this.providers.length===this.maxProviders)){this.log("found max session peers",i);break}}if(i<this.maxProviders)for await(let o of this.findNewProviders(e,n)){if(i===this.maxProviders||n.signal?.aborted===!0)break;if(!this.hasProvider(o)&&(this.log("found %d/%d new providers",i,this.maxProviders),this.providers.push(o),this.safeDispatchEvent("provider",{detail:o}),i++,i===t&&(this.log("session is ready"),s.resolve()),this.providers.length===this.maxProviders)){this.log("found max session peers",i);break}}if(this.log("found %d/%d new session peers",i,this.maxProviders),i<t)throw new kt(`Found ${i} of ${t} ${this.name} providers for ${e}`)}).catch(o=>{this.log.error("error searching routing for potential session peers for %c - %e",e,o),s.reject(o)}),s.promise}};var Cr=class extends Oe{wantList;network;libp2p;constructor(e,t){super(e,{...t,name:"helia:bitswap:session"}),this.wantList=e.wantList,this.network=e.network,this.libp2p=e.libp2p}async queryProvider(e,t,n){this.log("sending WANT-BLOCK for %c to %p",e,t);let s=await this.wantList.wantSessionBlock(e,t,n);if(this.log("%p %s %c",t,s.has?"has":"does not have",e),s.has&&s.block!=null)return s.block;throw new Error("Provider did not have block")}async*findNewProviders(e,t={}){for await(let n of this.network.findProviders(e,t))yield n.id}toEvictionKey(e){return e.toMultihash().bytes}equals(e,t){return e.equals(t)}async convertToProvider(e,t){return Ur(e)?e:(await this.libp2p.dial(e,t)).remotePeer}};function Bn(r,e){return new Cr(r,e)}var Lt=class{blocksReceived;duplicateBlocksReceived;dataReceived;duplicateDataReceived;constructor(e){this.blocksReceived=e.metrics?.registerMetricGroup("helia_bitswap_received_blocks"),this.duplicateBlocksReceived=e.metrics?.registerMetricGroup("helia_bitswap_duplicate_received_blocks"),this.dataReceived=e.metrics?.registerMetricGroup("helia_bitswap_data_received_bytes"),this.duplicateDataReceived=e.metrics?.registerMetricGroup("helia_bitswap_duplicate_data_received_bytes")}updateBlocksReceived(e=1,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.blocksReceived?.increment(n)}updateDuplicateBlocksReceived(e=1,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.duplicateBlocksReceived?.increment(n)}updateDataReceived(e,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.dataReceived?.increment(n)}updateDuplicateDataReceived(e,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.duplicateDataReceived?.increment(n)}};function Yi(r){if(!(r instanceof Uint8Array))throw new Error("arg needs to be a Uint8Array");let e=[];for(;r.length>0;){let t=je(r);e.push(t),r=r.slice(E(t))}return e}var Un=Yi;var At=class extends H{peers;wants;network;log;sendMessagesDelay;sendMessagesTimeout;hashLoader;sendingMessages;constructor(e,t={}){super(),this.peers=ze({name:"helia_bitswap_peers",metrics:e.metrics}),this.wants=_n({name:"helia_bitswap_wantlist",metrics:e.metrics}),this.network=e.network,this.sendMessagesDelay=t.sendMessagesDelay??10,this.log=e.logger.forComponent("helia:bitswap:wantlist"),this.hashLoader=t.hashLoader,this.network.addEventListener("bitswap:message",n=>{this.receiveMessage(n.detail.peer,n.detail.message).catch(s=>{this.log.error("error receiving bitswap message from %p - %e",n.detail.peer,s)})}),this.network.addEventListener("peer:connected",n=>{this.peerConnected(n.detail).catch(s=>{this.log.error("error processing newly connected bitswap peer %p - %e",n.detail,s)})}),this.network.addEventListener("peer:disconnected",n=>{this.peerDisconnected(n.detail)})}async addEntry(e,t){let n=W(e.multihash.bytes,"base64"),s=this.wants.get(n);s==null&&(s={cid:e,priority:t.priority??1,wantType:t.wantType??y.WantBlock,cancel:!1,sendDontHave:!0},this.wants.set(n,s)),s.wantType===y.WantHave&&t.wantType===y.WantBlock&&(s.wantType=y.WantBlock),await this.sendMessagesDebounced();try{return t.wantType===y.WantBlock?(await oe(this,"block",t?.signal,{filter:a=>$(e.multihash.digest,a.detail.cid.multihash.digest),errorMessage:"Want was aborted"})).detail:(await oe(this,"presence",t?.signal,{filter:o=>$(e.multihash.digest,o.detail.cid.multihash.digest),errorMessage:"Want was aborted"})).detail}finally{t.signal?.aborted===!0&&(this.log("want for %c was aborted, cancelling want",e),s.cancel=!0,await this.sendMessagesDebounced())}}async sendMessagesDebounced(){await this.sendingMessages?.promise,clearTimeout(this.sendMessagesTimeout),this.sendMessagesTimeout=setTimeout(()=>{this.sendMessages().catch(e=>{this.log("error sending messages to peers - %e",e)})},this.sendMessagesDelay)}async sendMessages(){this.sendingMessages=O(),await Promise.all([...this.peers.entries()].map(async([e,t])=>{let n=new Set,s=new X;for(let[i,o]of this.wants.entries())t.has(i)||o.cancel||(n.add(i),s.addWantlistEntry(o.cid,{cid:o.cid.bytes,priority:o.priority,wantType:o.wantType,cancel:o.cancel,sendDontHave:o.sendDontHave}));if(s.wantlist.size!==0)try{await this.network.sendMessage(e,s);for(let i of n)t.add(i)}catch(i){this.log.error("error sending full wantlist to new peer - %e",i)}})).catch(e=>{this.log.error("error sending messages - %e",e)});for(let[e,t]of this.wants)if(t.cancel){this.wants.delete(e);for(let n of this.peers.values())n.delete(e)}this.sendingMessages.resolve()}has(e){let t=W(e.multihash.bytes,"base64");return this.wants.has(t)}async wantSessionPresence(e,t,n={}){let s=new X;return s.addWantlistEntry(e,{cid:e.bytes,sendDontHave:!0,wantType:y.WantHave,priority:1}),await this.network.sendMessage(t,s),(await oe(this,"presence",n.signal,{filter:o=>t.equals(o.detail.sender)&&$(e.multihash.digest,o.detail.cid.multihash.digest)})).detail}async wantBlock(e,t={}){return this.addEntry(e,{...t,wantType:y.WantBlock})}async wantSessionBlock(e,t,n={}){let s=new X;return s.addWantlistEntry(e,{cid:e.bytes,sendDontHave:!0,wantType:y.WantBlock,priority:1}),await this.network.sendMessage(t,s),(await oe(this,"presence",n.signal,{filter:o=>t.equals(o.detail.sender)&&$(e.multihash.digest,o.detail.cid.multihash.digest)})).detail}async receivedBlock(e,t){let n=W(e.multihash.bytes,"base64"),s=this.wants.get(n);s!=null&&(s.cancel=!0,await this.sendMessagesDebounced())}async receiveMessage(e,t){this.log("received message from %p with %d blocks",e,t.blocks.length);let n=!1;for(let s of t.blocks){if(s.prefix==null||s.data==null)continue;let i=Un(s.prefix),o=i[0],a=i[1],c=i[2],u=i[3],l=c===Je.code?Je:await this.hashLoader?.getHasher(c);if(l==null){this.log.error("unknown hash algorithm",c);continue}let h=l.digest(s.data,{truncate:u});h.then!=null&&(h=await h);let f=G.create(o===0?0:1,a,h);this.log("received block from %p for %c",e,f),this.safeDispatchEvent("block",{detail:{sender:e,cid:f,block:s.data}}),this.safeDispatchEvent("presence",{detail:{sender:e,cid:f,has:!0,block:s.data}});let d=W(f.multihash.bytes,"base64"),p=this.wants.get(d);p!=null&&(p.cancel=!0,n=!0)}for(let{cid:s,type:i}of t.blockPresences){let o=G.decode(s);this.log("received %s from %p for %c",i,e,o),this.safeDispatchEvent("presence",{detail:{sender:e,cid:o,has:i===C.HaveBlock}})}n&&await this.sendMessagesDebounced()}async peerConnected(e){let t=new Set,n=new X(!0);for(let[s,i]of this.wants.entries())i.cancel||(t.add(s),n.addWantlistEntry(i.cid,{cid:i.cid.bytes,priority:1,wantType:y.WantBlock,cancel:!1,sendDontHave:!1}));if(n.wantlist.size===0){this.peers.set(e,t);return}try{await this.network.sendMessage(e,n),this.peers.set(e,t)}catch(s){this.log.error("error sending full wantlist to new peer %p - %e",e,s)}}peerDisconnected(e){this.peers.delete(e)}start(){}stop(){this.peers.clear(),clearTimeout(this.sendMessagesTimeout)}};var It=class{log;logger;stats;network;blockstore;peerWantLists;wantList;libp2p;constructor(e,t={}){this.logger=e.logger,this.log=e.logger.forComponent("helia:bitswap"),this.blockstore=e.blockstore,this.libp2p=e.libp2p,this.stats=new Lt(e),this.network=new Et(e,t),this.peerWantLists=new St({...e,network:this.network},t),this.wantList=new At({...e,network:this.network},t)}createSession(e={}){return Bn({wantList:this.wantList,network:this.network,logger:this.logger,libp2p:this.libp2p},e)}async want(e,t={}){let n=new AbortController,s=Fr([n.signal,t.signal]);n.signal,this.network.findAndConnect(e,{...t,signal:s}).catch(i=>{n.signal.aborted||this.log.error("error during finding and connect for cid %c - %e",e,i)});try{let i=await this.wantList.wantBlock(e,{...t,signal:s});return t.onProgress?.(new D("bitswap:block",{cid:e,sender:i.sender})),i.block}finally{n.abort(),s.clear()}}async notify(e,t={}){await Promise.all([this.peerWantLists.receivedBlock(e,t),this.wantList.receivedBlock(e,t)])}getWantlist(){return[...this.wantList.wants.values()].filter(e=>!e.cancel).map(e=>({cid:e.cid,priority:e.priority,wantType:e.wantType}))}getPeerWantlist(e){return this.peerWantLists.wantListForPeer(e)}async start(){this.wantList.start(),await this.network.start()}async stop(){this.wantList.stop(),await this.network.stop()}};var eo=(r,e={})=>new It(r,e);return Gn(to);})();
2
+ "use strict";var HeliaBitswap=(()=>{var Fn=Object.create;var qe=Object.defineProperty;var Rn=Object.getOwnPropertyDescriptor;var zn=Object.getOwnPropertyNames;var On=Object.getPrototypeOf,Hn=Object.prototype.hasOwnProperty;var qn=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),T=(r,e)=>{for(var t in e)qe(r,t,{get:e[t],enumerable:!0})},Br=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of zn(e))!Hn.call(r,s)&&s!==t&&qe(r,s,{get:()=>e[s],enumerable:!(n=Rn(e,s))||n.enumerable});return r};var Vn=(r,e,t)=>(t=r!=null?Fn(On(r)):{},Br(e||!r||!r.__esModule?qe(t,"default",{value:r,enumerable:!0}):t,r)),Gn=r=>Br(qe({},"__esModule",{value:!0}),r);var Cn=qn((Lh,Pn)=>{Pn.exports=function(r){if(!r)throw Error("hashlru must have a max value, of type number, greater than 0");var e=0,t=Object.create(null),n=Object.create(null);function s(i,o){t[i]=o,e++,e>=r&&(e=0,n=t,t=Object.create(null))}return{has:function(i){return t[i]!==void 0||n[i]!==void 0},remove:function(i){t[i]!==void 0&&(t[i]=void 0),n[i]!==void 0&&(n[i]=void 0)},get:function(i){var o=t[i];if(o!==void 0)return o;if((o=n[i])!==void 0)return s(i,o),o},set:function(i,o){t[i]!==void 0?t[i]=o:s(i,o)},clear:function(){t=Object.create(null),n=Object.create(null)}}}});var to={};T(to,{createBitswap:()=>eo});var U=class extends Error{static name="AbortError";constructor(e="The operation was aborted"){super(e),this.name="AbortError"}};var Ve=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}};var Ge=class extends Error{static name="UnsupportedProtocolError";constructor(e="Unsupported protocol error"){super(e),this.name="UnsupportedProtocolError"}};var $e=class extends Error{static name="TimeoutError";constructor(e="Timed out"){super(e),this.name="TimeoutError"}},We=class extends Error{static name="NotStartedError";constructor(e="Not started"){super(e),this.name="NotStartedError"}};var $n=Symbol.for("@libp2p/peer-id");function Ur(r){return!!r?.[$n]}var H=class extends EventTarget{#e=new Map;constructor(){super()}listenerCount(e){let t=this.#e.get(e);return t==null?0:t.length}addEventListener(e,t,n){super.addEventListener(e,t,n);let s=this.#e.get(e);s==null&&(s=[],this.#e.set(e,s)),s.push({callback:t,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(e,t,n){super.removeEventListener(e.toString(),t??null,n);let s=this.#e.get(e);s!=null&&(s=s.filter(({callback:i})=>i!==t),this.#e.set(e,s))}dispatchEvent(e){let t=super.dispatchEvent(e),n=this.#e.get(e.type);return n==null||(n=n.filter(({once:s})=>!s),this.#e.set(e.type,n)),t}safeDispatchEvent(e,t={}){return this.dispatchEvent(new CustomEvent(e,t))}};function Fr(r){let e=new globalThis.AbortController;function t(){let i=r.filter(o=>o?.aborted===!0).map(o=>o?.reason).pop();e.abort(i);for(let o of r)o?.removeEventListener!=null&&o.removeEventListener("abort",t)}for(let i of r){if(i?.aborted===!0){t();break}i?.addEventListener!=null&&i.addEventListener("abort",t)}function n(){for(let i of r)i?.removeEventListener!=null&&i.removeEventListener("abort",t)}let s=e.signal;return s.clear=n,s}var D=class extends Event{type;detail;constructor(e,t){super(e),this.type=e,this.detail=t}};var Pt={};T(Pt,{base58btc:()=>F,base58flickr:()=>jn});var co=new Uint8Array(0);function Rr(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 V(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 zr(r){return new TextEncoder().encode(r)}function Or(r){return new TextDecoder().decode(r)}function Wn(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var s=0;s<r.length;s++){var i=r.charAt(s),o=i.charCodeAt(0);if(t[o]!==255)throw new TypeError(i+" is ambiguous");t[o]=s}var a=r.length,c=r.charAt(0),h=Math.log(a)/Math.log(256),d=Math.log(256)/Math.log(a);function l(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var b=0,m=0,x=0,A=p.length;x!==A&&p[x]===0;)x++,b++;for(var v=(A-x)*d+1>>>0,I=new Uint8Array(v);x!==A;){for(var N=p[x],Q=0,B=v-1;(N!==0||Q<m)&&B!==-1;B--,Q++)N+=256*I[B]>>>0,I[B]=N%a>>>0,N=N/a>>>0;if(N!==0)throw new Error("Non-zero carry");m=Q,x++}for(var q=v-m;q!==v&&I[q]===0;)q++;for(var He=c.repeat(b);q<v;++q)He+=r.charAt(I[q]);return He}function u(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var b=0;if(p[b]!==" "){for(var m=0,x=0;p[b]===c;)m++,b++;for(var A=(p.length-b)*h+1>>>0,v=new Uint8Array(A);p[b];){var I=t[p.charCodeAt(b)];if(I===255)return;for(var N=0,Q=A-1;(I!==0||N<x)&&Q!==-1;Q--,N++)I+=a*v[Q]>>>0,v[Q]=I%256>>>0,I=I/256>>>0;if(I!==0)throw new Error("Non-zero carry");x=N,b++}if(p[b]!==" "){for(var B=A-x;B!==A&&v[B]===0;)B++;for(var q=new Uint8Array(m+(A-B)),He=m;B!==A;)q[He++]=v[B++];return q}}}function f(p){var b=u(p);if(b)return b;throw new Error(`Non-${e} character`)}return{encode:l,decodeUnsafe:u,decode:f}}var Xn=Wn,Qn=Xn,qr=Qn;var Tt=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")}},Dt=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let s=t.codePointAt(0);if(s===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=s,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Vr(this,e)}},Mt=class{decoders;constructor(e){this.decoders=e}or(e){return Vr(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 Vr(r,e){return new Mt({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var Nt=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,s){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=s,this.encoder=new Tt(e,t,n),this.decoder=new Dt(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function ce({name:r,prefix:e,encode:t,decode:n}){return new Nt(r,e,t,n)}function J({name:r,prefix:e,alphabet:t}){let{encode:n,decode:s}=qr(t,r);return ce({prefix:e,name:r,encode:n,decode:i=>V(s(i))})}function Jn(r,e,t,n){let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*t/8|0),o=0,a=0,c=0;for(let h=0;h<s;++h){let d=e[r[h]];if(d===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<t|d,o+=t,o>=8&&(o-=8,i[c++]=255&a>>o)}if(o>=t||(255&a<<8-o)!==0)throw new SyntaxError("Unexpected end of data");return i}function Kn(r,e,t){let n=e[e.length-1]==="=",s=(1<<t)-1,i="",o=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],o+=8;o>t;)o-=t,i+=e[s&a>>o];if(o!==0&&(i+=e[s&a<<t-o]),n)for(;(i.length*t&7)!==0;)i+="=";return i}function Zn(r){let e={};for(let t=0;t<r.length;++t)e[r[t]]=t;return e}function w({name:r,prefix:e,bitsPerChar:t,alphabet:n}){let s=Zn(n);return ce({prefix:e,name:r,encode(i){return Kn(i,n,t)},decode(i){return Jn(i,s,t,r)}})}var F=J({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),jn=J({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Ct={};T(Ct,{base32:()=>le,base32hex:()=>rs,base32hexpad:()=>ss,base32hexpadupper:()=>is,base32hexupper:()=>ns,base32pad:()=>es,base32padupper:()=>ts,base32upper:()=>Yn,base32z:()=>os});var le=w({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Yn=w({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),es=w({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),ts=w({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),rs=w({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),ns=w({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),ss=w({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),is=w({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),os=w({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Bt={};T(Bt,{base36:()=>Le,base36upper:()=>as});var Le=J({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),as=J({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var cs=Wr,Gr=128,ls=127,hs=~ls,us=Math.pow(2,31);function Wr(r,e,t){e=e||[],t=t||0;for(var n=t;r>=us;)e[t++]=r&255|Gr,r/=128;for(;r&hs;)e[t++]=r&255|Gr,r>>>=7;return e[t]=r|0,Wr.bytes=t-n+1,e}var ds=Ut,fs=128,$r=127;function Ut(r,n){var t=0,n=n||0,s=0,i=n,o,a=r.length;do{if(i>=a)throw Ut.bytes=0,new RangeError("Could not decode varint");o=r[i++],t+=s<28?(o&$r)<<s:(o&$r)*Math.pow(2,s),s+=7}while(o>=fs);return Ut.bytes=i-n,t}var ps=Math.pow(2,7),ms=Math.pow(2,14),gs=Math.pow(2,21),bs=Math.pow(2,28),ws=Math.pow(2,35),ys=Math.pow(2,42),xs=Math.pow(2,49),Es=Math.pow(2,56),vs=Math.pow(2,63),_s=function(r){return r<ps?1:r<ms?2:r<gs?3:r<bs?4:r<ws?5:r<ys?6:r<xs?7:r<Es?8:r<vs?9:10},Ss={encode:cs,decode:ds,encodingLength:_s},ks=Ss,Ae=ks;function Ie(r,e=0){return[Ae.decode(r,e),Ae.decode.bytes]}function he(r,e,t=0){return Ae.encode(r,e,t),e}function ue(r){return Ae.encodingLength(r)}function fe(r,e){let t=e.byteLength,n=ue(r),s=n+ue(t),i=new Uint8Array(s+t);return he(r,i,0),he(t,i,n),i.set(e,s),new de(r,t,e,i)}function Ft(r){let e=V(r),[t,n]=Ie(e),[s,i]=Ie(e.subarray(n)),o=e.subarray(n+i);if(o.byteLength!==s)throw new Error("Incorrect length");return new de(t,s,o,e)}function Xr(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&Rr(r.bytes,t.bytes)}}var de=class{code;size;digest;bytes;constructor(e,t,n,s){this.code=e,this.size=t,this.digest=n,this.bytes=s}};function Qr(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return As(t,Rt(r),e??F.encoder);default:return Is(t,Rt(r),e??le.encoder)}}var Jr=new WeakMap;function Rt(r){let e=Jr.get(r);if(e==null){let t=new Map;return Jr.set(r,t),t}return e}var G=class r{code;version;multihash;bytes;"/";constructor(e,t,n,s){this.code=t,this.version=e,this.multihash=n,this.bytes=s,this["/"]=s}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==Te)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==Ts)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=fe(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&&Xr(e.multihash,n.multihash)}toString(e){return Qr(this,e)}toJSON(){return{"/":Qr(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:s,multihash:i,bytes:o}=t;return new r(n,s,i,o??Kr(n,s,i.bytes))}else if(t[Ds]===!0){let{version:n,multihash:s,code:i}=t,o=Ft(s);return r.create(n,i,o)}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!==Te)throw new Error(`Version 0 CID must use dag-pb (code: ${Te}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let s=Kr(e,t,n.bytes);return new r(e,t,n,s)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Te,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,s=V(e.subarray(n,n+t.multihashSize));if(s.byteLength!==t.multihashSize)throw new Error("Incorrect length");let i=s.subarray(t.multihashSize-t.digestSize),o=new de(t.multihashCode,t.digestSize,i,s);return[t.version===0?r.createV0(o):r.createV1(t.codec,o),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[l,u]=Ie(e.subarray(t));return t+=u,l},s=n(),i=Te;if(s===18?(s=0,t=0):i=n(),s!==0&&s!==1)throw new RangeError(`Invalid CID version ${s}`);let o=t,a=n(),c=n(),h=t+c,d=h-o;return{version:s,codec:i,multihashCode:a,digestSize:c,multihashSize:d,size:h}}static parse(e,t){let[n,s]=Ls(e,t),i=r.decode(s);if(i.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return Rt(i).set(n,e),i}};function Ls(r,e){switch(r[0]){case"Q":{let t=e??F;return[F.prefix,t.decode(`${F.prefix}${r}`)]}case F.prefix:{let t=e??F;return[F.prefix,t.decode(r)]}case le.prefix:{let t=e??le;return[le.prefix,t.decode(r)]}case Le.prefix:{let t=e??Le;return[Le.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function As(r,e,t){let{prefix:n}=t;if(n!==F.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let s=e.get(n);if(s==null){let i=t.encode(r).slice(1);return e.set(n,i),i}else return s}function Is(r,e,t){let{prefix:n}=t,s=e.get(n);if(s==null){let i=t.encode(r);return e.set(n,i),i}else return s}var Te=112,Ts=18;function Kr(r,e,t){let n=ue(r),s=n+ue(e),i=new Uint8Array(s+t.byteLength);return he(r,i,0),he(e,i,n),i.set(t,s),i}var Ds=Symbol.for("@ipld/js-cid/CID");var zt={};T(zt,{identity:()=>Ps});var Zr=0,Ms="identity",jr=V;function Ns(r,e){if(e?.truncate!=null&&e.truncate!==r.byteLength){if(e.truncate<0||e.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e.truncate)}return fe(Zr,jr(r))}var Ps={code:Zr,name:Ms,encode:jr,digest:Ns};function $(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 _(r=0){return new Uint8Array(r)}function S(r=0){return new Uint8Array(r)}function me(r,e){e==null&&(e=r.reduce((s,i)=>s+i.length,0));let t=S(e),n=0;for(let s of r)t.set(s,n),n+=s.length;return t}var en=Symbol.for("@achingbrain/uint8arraylist");function Yr(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let s=t+n.byteLength;if(e<s)return{buf:n,index:e-t};t=s}throw new RangeError("index is out of bounds")}function Qe(r){return!!r?.[en]}var ge=class r{bufs;length;[en]=!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(Qe(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(Qe(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=Yr(this.bufs,e);return t.buf[t.index]}set(e,t){let n=Yr(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(Qe(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:s}=this._subList(e,t);return me(n,s)}subarray(e,t){let{bufs:n,length:s}=this._subList(e,t);return n.length===1?n[0]:me(n,s)}sublist(e,t){let{bufs:n,length:s}=this._subList(e,t),i=new r;return i.length=s,i.bufs=[...n],i}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:this.bufs,length:this.length};let n=[],s=0;for(let i=0;i<this.bufs.length;i++){let o=this.bufs[i],a=s,c=a+o.byteLength;if(s=c,e>=c)continue;let h=e>=a&&e<c,d=t>a&&t<=c;if(h&&d){if(e===a&&t===c){n.push(o);break}let l=e-a;n.push(o.subarray(l,l+(t-e)));break}if(h){if(e===0){n.push(o);continue}n.push(o.subarray(e-a));continue}if(d){if(t===c){n.push(o);break}n.push(o.subarray(0,t-a));break}n.push(o)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!Qe(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let s=n.byteLength;if(s===0)throw new TypeError("search must be at least 1 byte long");let i=256,o=new Int32Array(i);for(let l=0;l<i;l++)o[l]=-1;for(let l=0;l<s;l++)o[n[l]]=l;let a=o,c=this.byteLength-n.byteLength,h=n.byteLength-1,d;for(let l=t;l<=c;l+=d){d=0;for(let u=h;u>=0;u--){let f=this.get(l+u);if(n[u]!==f){d=Math.max(1,u-a[f]);break}}if(d===0)return l}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=S(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let s=_(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt16(0,t,n),this.write(s,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let s=_(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt32(0,t,n),this.write(s,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let s=_(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigInt64(0,t,n),this.write(s,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=S(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let s=_(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint16(0,t,n),this.write(s,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let s=_(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint32(0,t,n),this.write(s,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let s=_(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigUint64(0,t,n),this.write(s,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let s=_(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat32(0,t,n),this.write(s,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let s=_(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat64(0,t,n),this.write(s,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!$(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((s,i)=>s+i.byteLength,0)),n.length=t,n}};var Ot={};T(Ot,{base10:()=>Cs});var Cs=J({prefix:"9",name:"base10",alphabet:"0123456789"});var Ht={};T(Ht,{base16:()=>Bs,base16upper:()=>Us});var Bs=w({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Us=w({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var qt={};T(qt,{base2:()=>Fs});var Fs=w({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Vt={};T(Vt,{base256emoji:()=>qs});var tn=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}"),Rs=tn.reduce((r,e,t)=>(r[t]=e,r),[]),zs=tn.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function Os(r){return r.reduce((e,t)=>(e+=Rs[t],e),"")}function Hs(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let s=zs[n];if(s==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(s)}return new Uint8Array(e)}var qs=ce({prefix:"\u{1F680}",name:"base256emoji",encode:Os,decode:Hs});var Gt={};T(Gt,{base64:()=>Z,base64pad:()=>Vs,base64url:()=>Gs,base64urlpad:()=>$s});var Z=w({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Vs=w({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Gs=w({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),$s=w({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var $t={};T($t,{base8:()=>Ws});var Ws=w({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Wt={};T(Wt,{identity:()=>Xs});var Xs=ce({prefix:"\0",name:"identity",encode:r=>Or(r),decode:r=>zr(r)});var Wo=new TextEncoder,Xo=new TextDecoder;var Jt={};T(Jt,{sha256:()=>Je,sha512:()=>Zs});var Ks=20;function Qt({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:s}){return new Xt(r,e,t,n,s)}var Xt=class{name;code;encode;minDigestLength;maxDigestLength;constructor(e,t,n,s,i){this.name=e,this.code=t,this.encode=n,this.minDigestLength=s??Ks,this.maxDigestLength=i}digest(e,t){if(t?.truncate!=null){if(t.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&t.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){let n=this.encode(e);return n instanceof Uint8Array?rn(n,this.code,t?.truncate):n.then(s=>rn(s,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}};function rn(r,e,t){if(t!=null&&t!==r.byteLength){if(t>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t)}return fe(e,r)}function sn(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var Je=Qt({name:"sha2-256",code:18,encode:sn("SHA-256")}),Zs=Qt({name:"sha2-512",code:19,encode:sn("SHA-512")});var Kt={...Wt,...qt,...$t,...Ot,...Ht,...Ct,...Bt,...Pt,...Gt,...Vt},ia={...Jt,...zt};function an(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var on=an("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),Zt=an("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=S(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),js={utf8:on,"utf-8":on,hex:Kt.base16,latin1:Zt,ascii:Zt,binary:Zt,...Kt},Ke=js;function P(r,e="utf8"){let t=Ke[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function W(r,e="utf8"){let t=Ke[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}var Ys=Math.pow(2,7),ei=Math.pow(2,14),ti=Math.pow(2,21),jt=Math.pow(2,28),Yt=Math.pow(2,35),er=Math.pow(2,42),tr=Math.pow(2,49),g=128,k=127;function E(r){if(r<Ys)return 1;if(r<ei)return 2;if(r<ti)return 3;if(r<jt)return 4;if(r<Yt)return 5;if(r<er)return 6;if(r<tr)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function rr(r,e,t=0){switch(E(r)){case 8:e[t++]=r&255|g,r/=128;case 7:e[t++]=r&255|g,r/=128;case 6:e[t++]=r&255|g,r/=128;case 5:e[t++]=r&255|g,r/=128;case 4:e[t++]=r&255|g,r>>>=7;case 3:e[t++]=r&255|g,r>>>=7;case 2:e[t++]=r&255|g,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function ri(r,e,t=0){switch(E(r)){case 8:e.set(t++,r&255|g),r/=128;case 7:e.set(t++,r&255|g),r/=128;case 6:e.set(t++,r&255|g),r/=128;case 5:e.set(t++,r&255|g),r/=128;case 4:e.set(t++,r&255|g),r>>>=7;case 3:e.set(t++,r&255|g),r>>>=7;case 2:e.set(t++,r&255|g),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function nr(r,e){let t=r[e],n=0;if(n+=t&k,t<g||(t=r[e+1],n+=(t&k)<<7,t<g)||(t=r[e+2],n+=(t&k)<<14,t<g)||(t=r[e+3],n+=(t&k)<<21,t<g)||(t=r[e+4],n+=(t&k)*jt,t<g)||(t=r[e+5],n+=(t&k)*Yt,t<g)||(t=r[e+6],n+=(t&k)*er,t<g)||(t=r[e+7],n+=(t&k)*tr,t<g))return n;throw new RangeError("Could not decode varint")}function ni(r,e){let t=r.get(e),n=0;if(n+=t&k,t<g||(t=r.get(e+1),n+=(t&k)<<7,t<g)||(t=r.get(e+2),n+=(t&k)<<14,t<g)||(t=r.get(e+3),n+=(t&k)<<21,t<g)||(t=r.get(e+4),n+=(t&k)*jt,t<g)||(t=r.get(e+5),n+=(t&k)*Yt,t<g)||(t=r.get(e+6),n+=(t&k)*er,t<g)||(t=r.get(e+7),n+=(t&k)*tr,t<g))return n;throw new RangeError("Could not decode varint")}function Ze(r,e,t=0){return e==null&&(e=S(E(r))),e instanceof Uint8Array?rr(r,e,t):ri(r,e,t)}function je(r,e=0){return r instanceof Uint8Array?nr(r,e):ni(r,e)}var sr=new Float32Array([-0]),K=new Uint8Array(sr.buffer);function ln(r,e,t){sr[0]=r,e[t]=K[0],e[t+1]=K[1],e[t+2]=K[2],e[t+3]=K[3]}function hn(r,e){return K[0]=r[e],K[1]=r[e+1],K[2]=r[e+2],K[3]=r[e+3],sr[0]}var ir=new Float64Array([-0]),L=new Uint8Array(ir.buffer);function un(r,e,t){ir[0]=r,e[t]=L[0],e[t+1]=L[1],e[t+2]=L[2],e[t+3]=L[3],e[t+4]=L[4],e[t+5]=L[5],e[t+6]=L[6],e[t+7]=L[7]}function dn(r,e){return L[0]=r[e],L[1]=r[e+1],L[2]=r[e+2],L[3]=r[e+3],L[4]=r[e+4],L[5]=r[e+5],L[6]=r[e+6],L[7]=r[e+7],ir[0]}var si=BigInt(Number.MAX_SAFE_INTEGER),ii=BigInt(Number.MIN_SAFE_INTEGER),M=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 j;if(e<si&&e>ii)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,s=e-(n<<32n);return t&&(n=~n|0n,s=~s|0n,++s>fn&&(s=0n,++n>fn&&(n=0n))),new r(Number(s),Number(n))}static fromNumber(e){if(e===0)return j;let t=e<0;t&&(e=-e);let n=e>>>0,s=(e-n)/4294967296>>>0;return t&&(s=~s>>>0,n=~n>>>0,++n>4294967295&&(n=0,++s>4294967295&&(s=0))),new r(n,s)}static from(e){return typeof e=="number"?r.fromNumber(e):typeof e=="bigint"?r.fromBigInt(e):typeof e=="string"?r.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new r(e.low>>>0,e.high>>>0):j}},j=new M(0,0);j.toBigInt=function(){return 0n};j.zzEncode=j.zzDecode=function(){return this};j.length=function(){return 1};var fn=4294967296n;function pn(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 mn(r,e,t){if(t-e<1)return"";let s,i=[],o=0,a;for(;e<t;)a=r[e++],a<128?i[o++]=a:a>191&&a<224?i[o++]=(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,i[o++]=55296+(a>>10),i[o++]=56320+(a&1023)):i[o++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,o>8191&&((s??(s=[])).push(String.fromCharCode.apply(String,i)),o=0);return s!=null?(o>0&&s.push(String.fromCharCode.apply(String,i.slice(0,o))),s.join("")):String.fromCharCode.apply(String,i.slice(0,o))}function or(r,e,t){let n=t,s,i;for(let o=0;o<r.length;++o)s=r.charCodeAt(o),s<128?e[t++]=s:s<2048?(e[t++]=s>>6|192,e[t++]=s&63|128):(s&64512)===55296&&((i=r.charCodeAt(o+1))&64512)===56320?(s=65536+((s&1023)<<10)+(i&1023),++o,e[t++]=s>>18|240,e[t++]=s>>12&63|128,e[t++]=s>>6&63|128,e[t++]=s&63|128):(e[t++]=s>>12|224,e[t++]=s>>6&63|128,e[t++]=s&63|128);return t-n}function R(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function Ye(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var ar=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,R(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 R(this,4);return Ye(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw R(this,4);return Ye(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw R(this,4);let e=hn(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw R(this,4);let e=dn(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 R(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return mn(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw R(this,e);this.pos+=e}else do if(this.pos>=this.len)throw R(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new M(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 R(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 R(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 R(this,8);let e=Ye(this.buf,this.pos+=4),t=Ye(this.buf,this.pos+=4);return new M(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=nr(this.buf,this.pos);return this.pos+=E(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 cr(r){return new ar(r instanceof Uint8Array?r:r.subarray())}function Y(r,e,t){let n=cr(r);return e.decode(n,void 0,t)}function lr(r){let e=r??8192,t=e>>>1,n,s=e;return function(o){if(o<1||o>t)return S(o);s+o>e&&(n=S(e),s=0);let a=n.subarray(s,s+=o);return(s&7)!==0&&(s=(s|7)+1),a}}var ee=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function hr(){}var dr=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},oi=lr();function ai(r){return globalThis.Buffer!=null?S(r):oi(r)}var Me=class{len;head;tail;states;constructor(){this.len=0,this.head=new ee(hr,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new ee(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new fr((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(et,10,M.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=M.fromBigInt(e);return this._push(et,t.length(),t)}uint64Number(e){return this._push(rr,E(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=M.fromBigInt(e).zzEncode();return this._push(et,t.length(),t)}sint64Number(e){let t=M.fromNumber(e).zzEncode();return this._push(et,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(ur,1,e?1:0)}fixed32(e){return this._push(De,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=M.fromBigInt(e);return this._push(De,4,t.lo)._push(De,4,t.hi)}fixed64Number(e){let t=M.fromNumber(e);return this._push(De,4,t.lo)._push(De,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(ln,4,e)}double(e){return this._push(un,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(ur,1,0):this.uint32(t)._push(li,t,e)}string(e){let t=pn(e);return t!==0?this.uint32(t)._push(or,t,e):this._push(ur,1,0)}fork(){return this.states=new dr(this),this.head=this.tail=new ee(hr,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 ee(hr,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=ai(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function ur(r,e,t){e[t]=r&255}function ci(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var fr=class extends ee{next;constructor(e,t){super(ci,e,t),this.next=void 0}};function et(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 De(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 li(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(Me.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(hi,e,r),this},Me.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(ui,e,r),this});function hi(r,e,t){e.set(r,t)}function ui(r,e,t){r.length<40?or(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(P(r),t)}function pr(){return new Me}function te(r,e){let t=pr();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var be;(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"})(be||(be={}));function tt(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function rt(r){function e(s){if(r[s.toString()]==null)throw new Error("Invalid enum value");return r[s]}let t=function(i,o){let a=e(i);o.int32(a)},n=function(i){let o=i.int32();return e(o)};return tt("enum",be.VARINT,t,n)}function re(r,e){return tt("message",be.LENGTH_DELIMITED,r,e)}var we=class extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"};var mr={32:16777619n,64:1099511628211n,128:309485009821345068724781371n,256:374144419156711147060143317175368453031918731002211n,512:35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759n,1024:5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573n},bn={32:2166136261n,64:14695981039346656037n,128:144066263297769815596495629667062367629n,256:100029257958052580907070968620625704837092796014241193945225284501741471925557n,512:9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785n,1024:14197795064947621068722070641403218320880622795441933960878474914617582723252296732303717722150864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915n},wn=new globalThis.TextEncoder;function di(r,e){let t=mr[e],n=bn[e];for(let s=0;s<r.length;s++)n^=BigInt(r[s]),n=BigInt.asUintN(e,n*t);return n}function fi(r,e,t){if(t.length===0)throw new Error("The `utf8Buffer` option must have a length greater than zero");let n=mr[e],s=bn[e],i=r;for(;i.length>0;){let o=wn.encodeInto(i,t);i=i.slice(o.read);for(let a=0;a<o.written;a++)s^=BigInt(t[a]),s=BigInt.asUintN(e,s*n)}return s}function gr(r,{size:e=32,utf8Buffer:t}={}){if(!mr[e])throw new Error("The `size` option must be one of 32, 64, 128, 256, 512, or 1024");if(typeof r=="string"){if(t)return fi(r,e,t);r=wn.encode(r)}return di(r,e)}var Ne={hash:r=>Number(gr(r,{size:32})),hashV:(r,e)=>pi(Ne.hash(r,e))};function pi(r){let e=r.toString(16);return e.length%2===1&&(e=`0${e}`),P(e,"base16")}var br=64,z=class{fp;h;seed;constructor(e,t,n,s=2){if(s>br)throw new TypeError("Invalid Fingerprint Size");let i=t.hashV(e,n),o=_(s);for(let a=0;a<o.length;a++)o[a]=i[a];o.length===0&&(o[0]=7),this.fp=o,this.h=t,this.seed=n}hash(){return this.h.hash(this.fp,this.seed)}equals(e){return e?.fp instanceof Uint8Array?$(this.fp,e.fp):!1}};function ne(r,e){return Math.floor(Math.random()*(e-r))+r}var se=class{contents;constructor(e){this.contents=new Array(e).fill(null)}has(e){if(!(e instanceof z))throw new TypeError("Invalid Fingerprint");return this.contents.some(t=>e.equals(t))}add(e){if(!(e instanceof z))throw new TypeError("Invalid Fingerprint");for(let t=0;t<this.contents.length;t++)if(this.contents[t]==null)return this.contents[t]=e,!0;return!0}swap(e){if(!(e instanceof z))throw new TypeError("Invalid Fingerprint");let t=ne(0,this.contents.length-1),n=this.contents[t];return this.contents[t]=e,n}remove(e){if(!(e instanceof z))throw new TypeError("Invalid Fingerprint");let t=this.contents.findIndex(n=>e.equals(n));return t>-1?(this.contents[t]=null,!0):!1}};var mi=500,Pe=class{bucketSize;filterSize;fingerprintSize;buckets;count;hash;seed;constructor(e){this.filterSize=e.filterSize,this.bucketSize=e.bucketSize??4,this.fingerprintSize=e.fingerprintSize??2,this.count=0,this.buckets=[],this.hash=e.hash??Ne,this.seed=e.seed??ne(0,Math.pow(2,10))}add(e){typeof e=="string"&&(e=P(e));let t=new z(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,s=(n^t.hash())%this.filterSize;if(this.buckets[n]==null&&(this.buckets[n]=new se(this.bucketSize)),this.buckets[s]==null&&(this.buckets[s]=new se(this.bucketSize)),this.buckets[n].add(t)||this.buckets[s].add(t))return this.count++,!0;let i=[n,s],o=i[ne(0,i.length-1)];this.buckets[o]==null&&(this.buckets[o]=new se(this.bucketSize));for(let a=0;a<mi;a++){let c=this.buckets[o].swap(t);if(c!=null&&(o=(o^c.hash())%this.filterSize,this.buckets[o]==null&&(this.buckets[o]=new se(this.bucketSize)),this.buckets[o].add(c)))return this.count++,!0}return!1}has(e){typeof e=="string"&&(e=P(e));let t=new z(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,s=this.buckets[n]?.has(t)??!1;if(s)return s;let i=(n^t.hash())%this.filterSize;return this.buckets[i]?.has(t)??!1}remove(e){typeof e=="string"&&(e=P(e));let t=new z(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,s=this.buckets[n]?.remove(t)??!1;if(s)return this.count--,s;let i=(n^t.hash())%this.filterSize,o=this.buckets[i]?.remove(t)??!1;return o&&this.count--,o}get reliable(){return Math.floor(100*(this.count/this.filterSize))<=90}},gi={1:.5,2:.84,4:.95,8:.98};function bi(r=.001){return r>.002?2:r>1e-5?4:8}function yn(r,e=.001){let t=bi(e),n=gi[t],s=Math.round(r/n),i=Math.min(Math.ceil(Math.log2(1/e)+Math.log2(2*t)),br);return{filterSize:s,bucketSize:t,fingerprintSize:i}}var nt=class{filterSize;bucketSize;fingerprintSize;scale;filterSeries;hash;seed;constructor(e){this.bucketSize=e.bucketSize??4,this.filterSize=e.filterSize??(1<<18)/this.bucketSize,this.fingerprintSize=e.fingerprintSize??2,this.scale=e.scale??2,this.hash=e.hash??Ne,this.seed=e.seed??ne(0,Math.pow(2,10)),this.filterSeries=[new Pe({filterSize:this.filterSize,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed})]}add(e){if(typeof e=="string"&&(e=P(e)),this.has(e))return!0;let t=this.filterSeries.find(n=>n.reliable);if(t==null){let n=this.filterSize*Math.pow(this.scale,this.filterSeries.length);t=new Pe({filterSize:n,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed}),this.filterSeries.push(t)}return t.add(e)}has(e){typeof e=="string"&&(e=P(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].has(e))return!0;return!1}remove(e){typeof e=="string"&&(e=P(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].remove(e))return!0;return!1}get count(){return this.filterSeries.reduce((e,t)=>e+t.count,0)}};function wr(r,e=.001,t){return new nt({...yn(r,e),...t??{}})}function O(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var st=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||(e-1&e)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},ye=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new st(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 st(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 yr=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function it(r={}){return wi(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 wi(r,e){e=e??{};let t=e.onEnd,n=new ye,s,i,o,a=O(),c=async()=>{try{return n.isEmpty()?o?{done:!0}:await new Promise((m,x)=>{i=A=>{i=null,n.push(A);try{m(r(n))}catch(v){x(v)}return s}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=O()})}},h=m=>i!=null?i(m):(n.push(m),s),d=m=>(n=new ye,i!=null?i({error:m}):(n.push({error:m}),s)),l=m=>{if(o)return s;if(e?.objectMode!==!0&&m?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return h({done:!1,value:m})},u=m=>o?s:(o=!0,m!=null?d(m):h({done:!0})),f=()=>(n=new ye,u(),{done:!0}),p=m=>(u(m),{done:!0});if(s={[Symbol.asyncIterator](){return this},next:c,return:f,throw:p,push:l,end:u,get readableLength(){return n.size},onEmpty:async m=>{let x=m?.signal;if(x?.throwIfAborted(),n.isEmpty())return;let A,v;x!=null&&(A=new Promise((I,N)=>{v=()=>{N(new yr)},x.addEventListener("abort",v)}));try{await Promise.race([a.promise,A])}finally{v!=null&&x!=null&&x?.removeEventListener("abort",v)}}},t==null)return s;let b=s;return s={[Symbol.asyncIterator](){return this},next(){return b.next()},throw(m){return b.throw(m),t!=null&&(t(m),t=void 0),{done:!0}},return(){return b.return(),t!=null&&(t(),t=void 0),{done:!0}},push:l,end(m){return b.end(m),t!=null&&(t(m),t=void 0),s},get readableLength(){return b.readableLength},onEmpty:m=>b.onEmpty(m)},s}var xr=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},Er=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},xn=r=>globalThis.DOMException===void 0?new Er(r):new DOMException(r),En=r=>{let e=r.reason===void 0?xn("This operation was aborted."):r.reason;return e instanceof Error?e:xn(e)};function vr(r,e){let{milliseconds:t,fallback:n,message:s,customTimers:i={setTimeout,clearTimeout}}=e,o,a,h=new Promise((d,l)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){let{signal:f}=e;f.aborted&&l(En(f)),a=()=>{l(En(f))},f.addEventListener("abort",a,{once:!0})}if(t===Number.POSITIVE_INFINITY){r.then(d,l);return}let u=new xr;o=i.setTimeout.call(void 0,()=>{if(n){try{d(n())}catch(f){l(f)}return}typeof r.cancel=="function"&&r.cancel(),s===!1?d():s instanceof Error?l(s):(u.message=s??`Promise timed out after ${t} milliseconds`,l(u))},t),(async()=>{try{d(await r)}catch(f){l(f)}})()}).finally(()=>{h.clear(),a&&e.signal&&e.signal.removeEventListener("abort",a)});return h.clear=()=>{i.clearTimeout.call(void 0,o),o=void 0},h}var yi=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function xi(r,e,t){let n,s=new Promise((i,o)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:h,removeListener:d}=yi(r),l=async(...f)=>{let p=t.multiArgs?f:f[0];if(t.filter)try{if(!await t.filter(p))return}catch(b){n(),o(b);return}c.push(p),t.count===c.length&&(n(),i(c))},u=(...f)=>{n(),o(t.rejectionMultiArgs?f:f[0])};n=()=>{for(let f of a)d(f,l);for(let f of t.rejectionEvents)a.includes(f)||d(f,u)};for(let f of a)h(f,l);for(let f of t.rejectionEvents)a.includes(f)||h(f,u);t.signal&&t.signal.addEventListener("abort",()=>{u(t.signal.reason)},{once:!0}),t.resolveImmediately&&i(c)});if(s.cancel=n,typeof t.timeout=="number"){let i=vr(s,{milliseconds:t.timeout});return i.cancel=()=>{n(),i.clear()},i}return s}function ot(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=xi(r,e,t),s=n.then(i=>i[0]);return s.cancel=n.cancel,s}function _r(r,e){let t,n=function(){let s=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(s,e)};return n.start=()=>{},n.stop=()=>{clearTimeout(t)},n}var at=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}};function Ei(r){return r.reason}async function Ce(r,e,t){if(e==null)return r;let n=t?.translateError??Ei;if(e.aborted)return r.catch(()=>{}),Promise.reject(n(e));let s;try{return await Promise.race([r,new Promise((i,o)=>{s=()=>{o(n(e))},e.addEventListener("abort",s)})])}finally{s!=null&&e.removeEventListener("abort",s)}}var ct=class{deferred;signal;constructor(e){this.signal=e,this.deferred=O(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new U)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function vi(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var lt=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=vi(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,this.controller.signal,this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new U),this.cleanup())}async join(e={}){let t=new ct(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 Ce(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};var xe=class extends H{concurrency;maxSize;queue;pending;sort;paused;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??Number.POSITIVE_INFINITY,this.pending=0,this.paused=!1,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.sort=e.sort,this.queue=[],this.emitEmpty=_r(this.emitEmpty.bind(this),1),this.emitIdle=_r(this.emitIdle.bind(this),1)}emitEmpty(){this.size===0&&this.safeDispatchEvent("empty")}emitIdle(){this.running===0&&this.safeDispatchEvent("idle")}pause(){this.paused=!0}resume(){this.paused&&(this.paused=!1,this.tryToStartAnother())}tryToStartAnother(){if(this.paused)return!1;if(this.size===0)return this.emitEmpty(),this.running===0&&this.emitIdle(),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}async add(e,t){if(t?.signal?.throwIfAborted(),this.size===this.maxSize)throw new at;let n=new lt(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),n.join(t).then(s=>(this.safeDispatchEvent("completed",{detail:s}),this.safeDispatchEvent("success",{detail:{job:n,result:s}}),s)).catch(s=>{if(n.status==="queued"){for(let i=0;i<this.queue.length;i++)if(this.queue[i]===n){this.queue.splice(i,1);break}}throw this.safeDispatchEvent("failure",{detail:{job:n,error:s}}),s})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new U)}),this.clear()}async onEmpty(e){this.size!==0&&await ot(this,"empty",e)}async onSizeLessThan(e,t){this.size<e||await ot(this,"next",{...t,filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await ot(this,"idle",e)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=it({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},s=c=>{c.detail!=null&&t.push(c.detail)},i=c=>{n(c.detail.error)},o=()=>{n()},a=()=>{n(new U("Queue aborted"))};this.addEventListener("completed",s),this.addEventListener("failure",i),this.addEventListener("idle",o),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",s),this.removeEventListener("failure",i),this.removeEventListener("idle",o),e?.signal?.removeEventListener("abort",a),n()}}};var ht=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},Ee=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},ut=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"},Be=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};function dt(r){return r[Symbol.asyncIterator]!=null}function vn(r,e){if(r.byteLength>e)throw new Ee("Message length too long")}var pt=r=>{let e=E(r),t=S(e);return Ze(r,t),pt.bytes=e,t};pt.bytes=0;function mt(r,e){e=e??{};let t=e.lengthEncoder??pt,n=e?.maxDataLength??4194304;function*s(i){vn(i,n);let o=t(i.byteLength);o instanceof Uint8Array?yield o:yield*o,i instanceof Uint8Array?yield i:yield*i}return dt(r)?(async function*(){for await(let i of r)yield*s(i)})():(function*(){for(let i of r)yield*s(i)})()}mt.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??pt,n=e?.maxDataLength??4194304;return vn(r,n),new ge(t(r.byteLength),r)};var ie;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(ie||(ie={}));var Sr=r=>{let e=je(r);return Sr.bytes=E(e),e};Sr.bytes=0;function Ue(r,e){let t=new ge,n=ie.LENGTH,s=-1,i=e?.lengthDecoder??Sr,o=e?.maxLengthLength??8,a=e?.maxDataLength??4194304;function*c(){for(;t.byteLength>0;){if(n===ie.LENGTH)try{if(s=i(t),s<0)throw new ht("Invalid message length");if(s>a)throw new Ee("Message length too long");let h=i.bytes;t.consume(h),e?.onLength!=null&&e.onLength(s),n=ie.DATA}catch(h){if(h instanceof RangeError){if(t.byteLength>o)throw new ut("Message length length too long");break}throw h}if(n===ie.DATA){if(t.byteLength<s)break;let h=t.sublist(0,s);t.consume(s),e?.onData!=null&&e.onData(h),yield h,n=ie.LENGTH}}}return dt(r)?(async function*(){for await(let h of r)t.append(h),yield*c();if(t.byteLength>0)throw new Be("Unexpected end of input")})():(function*(){for(let h of r)t.append(h),yield*c();if(t.byteLength>0)throw new Be("Unexpected end of input")})()}Ue.fromReader=(r,e)=>{let t=1,n=(async function*(){for(;;)try{let{done:i,value:o}=await r.next(t);if(i===!0)return;o!=null&&(yield o)}catch(i){if(i.code==="ERR_UNDER_READ")return{done:!0,value:null};throw i}finally{t=1}})();return Ue(n,{...e??{},onLength:i=>{t=i}})};var gt=class extends xe{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var kr=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 _n(r){let{name:e,metrics:t}=r,n;return t!=null?n=new kr({name:e,metrics:t}):n=new Map,n}function ki(r){return r[Symbol.asyncIterator]!=null}function Li(r){if(ki(r))return(async()=>{for await(let e of r);})();for(let e of r);}var Lr=Li;function Ai(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:s=>{n.push(s)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var Sn=Ai;function Ii(r){return r[Symbol.asyncIterator]!=null}function Ti(r,e){let t=0;if(Ii(r))return(async function*(){for await(let c of r)yield e(c,t++)})();let n=Sn(r),{value:s,done:i}=n.next();if(i===!0)return(function*(){})();let o=e(s,t++);if(typeof o.then=="function")return(async function*(){yield await o;for(let c of n)yield e(c,t++)})();let a=e;return(function*(){yield o;for(let c of n)yield a(c,t++)})()}var kn=Ti;function Di(r){return r[Symbol.asyncIterator]!=null}function Mi(r,e){return Di(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 Ln=Mi;var bt=class extends Error{static name="AbortError";name="AbortError";constructor(e="The operation was aborted",...t){super(e,...t)}};async function oe(r,e,t,n){let s=new bt(n?.errorMessage);n?.errorCode!=null&&(s.code=n.errorCode);let i=n?.errorEvent??"error";return t?.aborted===!0?Promise.reject(s):new Promise((o,a)=>{function c(){Ir(t,"abort",l),Ir(r,e,h),Ir(r,i,d)}let h=u=>{try{if(n?.filter?.(u)===!1)return}catch(f){c(),a(f);return}c(),o(u)},d=u=>{if(c(),u instanceof Error){a(u);return}a(u.detail??n?.error??new Error(`The "${n?.errorEvent}" event was emitted but the event had no '.detail' field. Pass an 'error' option to race-event to change this message.`))},l=()=>{c(),a(s)};Ar(t,"abort",l),Ar(r,e,h),Ar(r,i,d)})}function Ar(r,e,t){r!=null&&(An(r)?r.addEventListener(e,t):r.addListener(e,t))}function Ir(r,e,t){r!=null&&(An(r)?r.removeEventListener(e,t):r.removeListener(e,t))}function An(r){return typeof r.addEventListener=="function"&&typeof r.removeEventListener=="function"}var Fe="/ipfs/bitswap/1.2.0";var y;(function(r){r.WantBlock="WantBlock",r.WantHave="WantHave"})(y||(y={}));var Tr;(function(r){r[r.WantBlock=0]="WantBlock",r[r.WantHave=1]="WantHave"})(Tr||(Tr={}));(function(r){r.codec=()=>rt(Tr)})(y||(y={}));var ve;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.cid!=null&&t.cid.byteLength>0&&(n.uint32(10),n.bytes(t.cid)),t.priority!=null&&t.priority!==0&&(n.uint32(16),n.int32(t.priority)),t.cancel!=null&&(n.uint32(24),n.bool(t.cancel)),t.wantType!=null&&(n.uint32(32),y.codec().encode(t.wantType,n)),t.sendDontHave!=null&&(n.uint32(40),n.bool(t.sendDontHave)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={cid:_(0),priority:0},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.cid=t.bytes();break}case 2:{i.priority=t.int32();break}case 3:{i.cancel=t.bool();break}case 4:{i.wantType=y.codec().decode(t);break}case 5:{i.sendDontHave=t.bool();break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>te(t,r.codec()),r.decode=(t,n)=>Y(t,r.codec(),n)})(ve||(ve={}));var wt;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),t.entries!=null)for(let i of t.entries)n.uint32(10),ve.codec().encode(i,n);t.full!=null&&(n.uint32(16),n.bool(t.full)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={entries:[]},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{if(s.limits?.entries!=null&&i.entries.length===s.limits.entries)throw new we('Decode error - map field "entries" had too many elements');i.entries.push(ve.codec().decode(t,t.uint32(),{limits:s.limits?.entries$}));break}case 2:{i.full=t.bool();break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>te(t,r.codec()),r.decode=(t,n)=>Y(t,r.codec(),n)})(wt||(wt={}));var _e;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.prefix!=null&&t.prefix.byteLength>0&&(n.uint32(10),n.bytes(t.prefix)),t.data!=null&&t.data.byteLength>0&&(n.uint32(18),n.bytes(t.data)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={prefix:_(0),data:_(0)},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.prefix=t.bytes();break}case 2:{i.data=t.bytes();break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>te(t,r.codec()),r.decode=(t,n)=>Y(t,r.codec(),n)})(_e||(_e={}));var C;(function(r){r.HaveBlock="HaveBlock",r.DoNotHaveBlock="DoNotHaveBlock"})(C||(C={}));var yt;(function(r){r[r.HaveBlock=0]="HaveBlock",r[r.DoNotHaveBlock=1]="DoNotHaveBlock"})(yt||(yt={}));(function(r){r.codec=()=>rt(yt)})(C||(C={}));var Se;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.cid!=null&&t.cid.byteLength>0&&(n.uint32(10),n.bytes(t.cid)),t.type!=null&&yt[t.type]!==0&&(n.uint32(16),C.codec().encode(t.type,n)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={cid:_(0),type:C.HaveBlock},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.cid=t.bytes();break}case 2:{i.type=C.codec().decode(t);break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>te(t,r.codec()),r.decode=(t,n)=>Y(t,r.codec(),n)})(Se||(Se={}));var ae;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),t.wantlist!=null&&(n.uint32(10),wt.codec().encode(t.wantlist,n)),t.blocks!=null)for(let i of t.blocks)n.uint32(26),_e.codec().encode(i,n);if(t.blockPresences!=null)for(let i of t.blockPresences)n.uint32(34),Se.codec().encode(i,n);t.pendingBytes!=null&&t.pendingBytes!==0&&(n.uint32(40),n.int32(t.pendingBytes)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={blocks:[],blockPresences:[],pendingBytes:0},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.wantlist=wt.codec().decode(t,t.uint32(),{limits:s.limits?.wantlist});break}case 3:{if(s.limits?.blocks!=null&&i.blocks.length===s.limits.blocks)throw new we('Decode error - map field "blocks" had too many elements');i.blocks.push(_e.codec().decode(t,t.uint32(),{limits:s.limits?.blocks$}));break}case 4:{if(s.limits?.blockPresences!=null&&i.blockPresences.length===s.limits.blockPresences)throw new we('Decode error - map field "blockPresences" had too many elements');i.blockPresences.push(Se.codec().decode(t,t.uint32(),{limits:s.limits?.blockPresences$}));break}case 5:{i.pendingBytes=t.int32();break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>te(t,r.codec()),r.decode=(t,n)=>Y(t,r.codec(),n)})(ae||(ae={}));function In(r,e){for(let[t,n]of e.wantlist.entries()){let s=r.wantlist.get(t);s!=null&&(s.priority>n.priority&&(n.priority=s.priority),n.cancel=n.cancel??s.cancel,n.wantType=n.wantType??s.wantType,n.sendDontHave=n.sendDontHave??s.sendDontHave),r.wantlist.set(t,n)}for(let[t,n]of e.blockPresences.entries())r.blockPresences.set(t,n);for(let[t,n]of e.blocks.entries())r.blocks.set(t,n);return e.full&&!r.full&&(r.full=!0),r}var xt=class extends Error{static name="BlockTooLargeError";constructor(e="Block too large"){super(e),this.name="BlockTooLargeError"}};var Ni=4193648,Pi=Ni+16;function*Tn(r,e){let t=[...r.wantlist.values()],n=[...r.blockPresences.values()],s=[...r.blocks.values()],i=0,o=0,a=0,c=!1;for(;;){let h={wantlist:{full:r.full??!1,entries:[]},blockPresences:[],blocks:[],pendingBytes:0},d=ae.encode(h).byteLength,{added:l,hasMore:u,newSize:f}=Dr(s,h.blocks,a,e,d,Ci);a+=l,d=f;let p=u;({added:l,hasMore:u,newSize:f}=Dr(n,h.blockPresences,o,e,d,Bi)),o+=l,d=f;let b=u;if({added:l,hasMore:u,newSize:f}=Dr(t,h.wantlist.entries,i,e,d,Ui),i+=l,d=f,c=!p&&!b&&!u,c||(h.wantlist.full=!1),yield ae.encode(h),c)break}}function Dr(r,e,t,n,s,i){let o=0,a=!1;for(let c=t;c<r.length;c++){let h=r[c],d=i(h);if(d>Pi)throw new xt("Cannot send block as after encoding it is over the max message size");let l=s+d;if(l>n){a=!0;break}e.push(h),o++,s=l}return{hasMore:a,added:o,newSize:s}}function Ci(r){return Mr(3,_e.encode(r))}function Bi(r){return Mr(4,Se.encode(r))}function Ui(r){return Mr(1,ve.encode(r))}function Mr(r,e){let t=E(r),n=E(e.byteLength);return t+n+e.byteLength}var Et=class extends H{log;libp2p;routing;protocols;running;maxInboundStreams;maxOutboundStreams;messageReceiveTimeout;registrarIds;metrics;sendQueue;runOnLimitedConnections;maxOutgoingMessageSize;maxIncomingMessageSize;constructor(e,t={}){super(),this.log=e.logger.forComponent("helia:bitswap:network"),this.libp2p=e.libp2p,this.routing=e.routing,this.protocols=t.protocols??[Fe],this.registrarIds=[],this.running=!1,this._onStream=this._onStream.bind(this),this.maxInboundStreams=t.maxInboundStreams??1024,this.maxOutboundStreams=t.maxOutboundStreams??1024,this.messageReceiveTimeout=t.messageReceiveTimeout??5e3,this.runOnLimitedConnections=t.runOnLimitedConnections??!1,this.maxIncomingMessageSize=t.maxIncomingMessageSize??4194304,this.maxOutgoingMessageSize=t.maxOutgoingMessageSize??t.maxIncomingMessageSize??4194304,this.metrics={blocksSent:e.metrics?.registerCounter("helia_bitswap_sent_blocks_total"),dataSent:e.metrics?.registerCounter("helia_bitswap_sent_data_bytes_total")},this.sendQueue=new gt({concurrency:t.messageSendConcurrency??50,metrics:e.metrics,metricName:"helia_bitswap_message_send_queue"})}async start(){if(this.running)return;this.running=!0,await this.libp2p.handle(this.protocols,this._onStream,{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnLimitedConnection:this.runOnLimitedConnections});let e={onConnect:t=>{this.safeDispatchEvent("peer:connected",{detail:t})},onDisconnect:t=>{this.safeDispatchEvent("peer:disconnected",{detail:t})}};this.registrarIds=[];for(let t of this.protocols)this.registrarIds.push(await this.libp2p.register(t,e));this.libp2p.getConnections().forEach(t=>{this.safeDispatchEvent("peer:connected",{detail: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=[]}}_onStream(e,t){this.running&&Promise.resolve().then(async()=>{this.log("incoming new bitswap %s stream from %p",e.protocol,t.remotePeer);let n=()=>{e.status==="open"?e.abort(new $e(`Incoming Bitswap stream timed out after ${this.messageReceiveTimeout}ms`)):this.log("stream aborted with status %s",e.status)},s=AbortSignal.timeout(this.messageReceiveTimeout);s.addEventListener("abort",n),await e.close({signal:s});let i=it();e.addEventListener("message",o=>{i.push(o.data)}),e.addEventListener("remoteCloseWrite",()=>{i.end()}),e.addEventListener("close",o=>{o.error!=null&&i.end(o.error)});for await(let o of Ue(i,{maxDataLength:this.maxIncomingMessageSize}))try{let a=ae.decode(o);this.log("incoming new bitswap %s message from %p on stream",e.protocol,t.remotePeer,e.id),this.safeDispatchEvent("bitswap:message",{detail:{peer:t.remotePeer,message:a}}),s.removeEventListener("abort",n),s=AbortSignal.timeout(this.messageReceiveTimeout),s.addEventListener("abort",n)}catch(a){this.log.error("error reading incoming bitswap message from %p on stream - %e",t.remotePeer,e.id,a),e.abort(a);break}}).catch(n=>{this.log.error("error handling incoming stream from %p - %e",t.remotePeer,n),e.abort(n)})}async*findProviders(e,t){t?.onProgress?.(new D("bitswap:find-providers",e));for await(let n of this.routing.findProviders(e,t)){if(!await this.libp2p.isDialable(n.multiaddrs,{runOnLimitedConnection:this.runOnLimitedConnections})){this.log("skipping peer %p as they are not dialable - %a[]",n.id,n.multiaddrs);continue}t?.onProgress?.(new D("bitswap:found-provider",{type:"bitswap",cid:e,provider:n,routing:n.routing})),yield n}}async findAndConnect(e,t){t?.providers!=null&&await Promise.all(t.providers.map(async n=>this.connectTo(n).catch(s=>{this.log.error("could not connect to supplied provider - %e",s)}))),await Lr(kn(Ln(this.findProviders(e,t),t?.maxProviders??3),async n=>this.connectTo(n.id,t))).catch(n=>{this.log.error(n)})}async sendMessage(e,t,n){if(!this.running)throw new Error("network isn't running");let s=this.sendQueue.queue.find(i=>e.equals(i.options.peerId)&&i.status==="queued");if(s!=null){s.options.message=In(s.options.message,t),await s.join({signal:n?.signal});return}await this.sendQueue.add(async i=>{let o=i?.message;if(o==null)throw new Ve("No message to send");this.log("sendMessage to %p",e),i?.onProgress?.(new D("bitswap:network:send-wantlist",e));let a=await this.libp2p.dialProtocol(e,Fe,i);await a.closeRead();try{for(let c of Tn(o,this.maxOutgoingMessageSize))a.send(mt.single(c))||await a.onDrain(i);await a.close(i)}catch(c){i?.onProgress?.(new D("bitswap:network:send-wantlist:error",{peer:e,error:c})),this.log.error("error sending message to %p - %e",e,c),a.abort(c)}this._updateSentStats(o.blocks)},{peerId:e,signal:n?.signal,message:t})}async connectTo(e,t){if(!this.running)throw new We("Network isn't running");t?.onProgress?.(new D("bitswap:network:dial",e));let[n]=await Promise.all([this.libp2p.dial(e,t),oe(this.libp2p,"peer:identify",t?.signal,{filter:s=>{if(!s.detail.peerId.equals(e))return!1;if(s.detail.protocols.includes(Fe))return!0;throw new Ge(`${e} did not support ${Fe}`)}})]);return n}_updateSentStats(e){let t=0;for(let n of e.values())t+=n.data.byteLength;this.metrics.dataSent?.increment(t),this.metrics.blocksSent?.increment(e.size)}};function vt(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),s=n.value;return n.done===!0||s==null?{done:!0,value:void 0}:{done:!1,value:e(s)}}};return t}var Re=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),{key:t,value:n})}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return vt(this.map.entries(),e=>[e[1].key,e[1].value])}forEach(e){this.map.forEach((t,n)=>{e(t.value,t.key,this)})}get(e){return this.map.get(e.toString())?.value}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),{key:e,value:t})}keys(){return vt(this.map.values(),e=>e.key)}values(){return vt(this.map.values(),e=>e.value)}get size(){return this.map.size}};var Nr=class extends Re{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 ze(r){let{name:e,metrics:t}=r,n;return t!=null?n=new Nr({name:e,metrics:t}):n=new Re,n}function $i(r){return r[Symbol.asyncIterator]!=null}function Wi(r){if($i(r))return(async()=>{let n=new Uint8Array(0);for await(let s of r)n=me([n,s],n.length+s.length);return n})();let e=[],t=0;for(let n of r)e.push(n),t+=n.byteLength;return me(e,t)}var Mn=Wi;var X=class{full;pendingBytes;wantlist;blocks;blockPresences;constructor(e=!1,t=0){this.full=e,this.wantlist=new Map,this.blocks=new Map,this.blockPresences=new Map,this.pendingBytes=0}addWantlistEntry(e,t){let n=Z.encode(e.multihash.bytes);this.wantlist.set(n,t)}addBlockPresence(e,t){let n=Z.encode(e.multihash.bytes);this.blockPresences.set(n,t)}addBlock(e,t){let n=Z.encode(e.multihash.bytes);this.blocks.set(n,t)}};function Xi(r){let e=new Uint8Array(r.reduce((n,s)=>n+E(s),0)),t=0;for(let n of r)e=Ze(n,e,t),t+=E(n);return e}var Nn=Xi;function Pr(r){return Nn([r.version,r.code,r.multihash.code,r.multihash.digest.byteLength])}var _t=class{peerId;blockstore;network;wants;exchangeCount;bytesSent;bytesReceived;lastExchange;maxSizeReplaceHasWithBlock;log;constructor(e,t){this.peerId=e.peerId,this.blockstore=e.blockstore,this.network=e.network,this.wants=new Map,this.log=e.logger.forComponent(`helia:bitswap:ledger:${e.peerId}`),this.exchangeCount=0,this.bytesSent=0,this.bytesReceived=0,this.maxSizeReplaceHasWithBlock=t.maxSizeReplaceHasWithBlock??1024}sentBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.bytesSent+=e}receivedBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.bytesReceived+=e}debtRatio(){return this.bytesSent/(this.bytesReceived+1)}async sendBlocksToPeer(e){let t=new X,n=new Set;for(let[s,i]of this.wants.entries())try{let o=await Mn(this.blockstore.get(i.cid,e));i.wantType===y.WantHave?o.byteLength<this.maxSizeReplaceHasWithBlock?(this.log("sending have and block for %c",i.cid),n.add(s),t.addBlock(i.cid,{data:o,prefix:Pr(i.cid)})):(this.log("sending have for %c",i.cid),t.addBlockPresence(i.cid,{cid:i.cid.bytes,type:C.HaveBlock})):(this.log("sending block for %c",i.cid),n.add(s),t.addBlock(i.cid,{data:o,prefix:Pr(i.cid)}))}catch(o){if(o.name!=="NotFoundError")throw o;if(this.log("do not have block for %c",i.cid),!i.sendDontHave||i.sentDoNotHave===!0)continue;i.sentDoNotHave=!0,t.addBlockPresence(i.cid,{cid:i.cid.bytes,type:C.DoNotHaveBlock})}if(t.blocks.size>0||t.blockPresences.size>0){this.log("sending message"),await this.network.sendMessage(this.peerId,t,e),this.log("sent message"),this.sentBytes([...t.blocks.values()].reduce((s,i)=>s+i.data.byteLength,0));for(let s of n)this.wants.delete(s)}}};var St=class{blockstore;network;ledgerMap;maxSizeReplaceHasWithBlock;log;logger;constructor(e,t={}){this.blockstore=e.blockstore,this.network=e.network,this.maxSizeReplaceHasWithBlock=t.maxSizeReplaceHasWithBlock,this.log=e.logger.forComponent("helia:bitswap:peer-want-lists"),this.logger=e.logger,this.ledgerMap=ze({name:"helia_bitswap_ledger_map",metrics:e.metrics}),this.network.addEventListener("bitswap:message",n=>{this.receiveMessage(n.detail.peer,n.detail.message).catch(s=>{this.log.error("error receiving bitswap message from %p - %e",n.detail.peer,s)})}),this.network.addEventListener("peer:disconnected",n=>{this.peerDisconnected(n.detail)})}ledgerForPeer(e){let t=this.ledgerMap.get(e);if(t!=null)return{peer:t.peerId,value:t.debtRatio(),sent:t.bytesSent,received:t.bytesReceived,exchanged:t.exchangeCount}}wantListForPeer(e){let t=this.ledgerMap.get(e);if(t!=null)return[...t.wants.values()]}peers(){return Array.from(this.ledgerMap.values()).map(e=>e.peerId)}async receiveMessage(e,t){let n=this.ledgerMap.get(e);if(n==null&&(n=new _t({peerId:e,blockstore:this.blockstore,network:this.network,logger:this.logger},{maxSizeReplaceHasWithBlock:this.maxSizeReplaceHasWithBlock}),this.ledgerMap.set(e,n)),n.receivedBytes(t.blocks?.reduce((s,i)=>s+i.data.byteLength,0)??0),t.wantlist!=null){t.wantlist.full===!0&&n.wants.clear();for(let s of t.wantlist.entries){let i=G.decode(s.cid),o=W(i.multihash.bytes,"base64");s.cancel===!0?(this.log("peer %p cancelled want of block for %c",e,i),n.wants.delete(o)):(s.wantType===y.WantHave?this.log("peer %p wanted block presence for %c",e,i):this.log("peer %p wanted block for %c",e,i),n.wants.set(o,{cid:i,priority:s.priority,wantType:s.wantType??y.WantBlock,sendDontHave:s.sendDontHave??!1}))}}this.log("send blocks to peer"),await n.sendBlocksToPeer()}async receivedBlock(e,t){let n=W(e.multihash.bytes,"base64"),s=[];for(let i of this.ledgerMap.values())i.wants.has(n)&&s.push(i);await Promise.all(s.map(async i=>i.sendBlocksToPeer(t)))}peerDisconnected(e){this.ledgerMap.delete(e)}};var Ki=Vn(Cn(),1);var ke;(function(r){r[r.A=1]="A",r[r.CNAME=5]="CNAME",r[r.TXT=16]="TXT",r[r.AAAA=28]="AAAA"})(ke||(ke={}));var kt=class extends Error{static name="InsufficientProvidersError";constructor(e="Insufficient providers found"){super(e),this.name="InsufficientProvidersError"}};var Oe=class extends H{initialPeerSearchComplete;requests;name;log;logger;minProviders;maxProviders;providers;evictionFilter;initialProviders;constructor(e,t){super(),this.name=t.name,this.logger=e.logger,this.log=e.logger.forComponent(this.name),this.requests=new Map,this.minProviders=t.minProviders??1,this.maxProviders=t.maxProviders??5,this.providers=[],this.evictionFilter=wr(this.maxProviders),this.initialProviders=t.providers??[]}async retrieve(e,t={}){let n=Z.encode(e.multihash.bytes),s=this.requests.get(n);if(s!=null)return this.log("join existing request for %c",e),s.observers++,s.promise;let i=O(),o={promise:i.promise,observers:1};if(this.requests.set(n,o),this.providers.length===0){let l=!1;this.initialPeerSearchComplete==null&&(l=!0,this.log=this.logger.forComponent(`${this.name}:${e}`),this.initialPeerSearchComplete=this.findProviders(e,this.minProviders,t));try{await Ce(this.initialPeerSearchComplete,t.signal),l&&this.log("found initial session peers for %c",e)}catch(u){throw l&&this.log("failed to find initial session peers for %c - %e",e,u),this.requests.delete(n),o.observers>1&&i.reject(u),u}}let a=!1,c=new xe({concurrency:this.maxProviders});c.addEventListener("failure",l=>{this.log.error("error querying provider %s, evicting from session - %e",l.detail.job.options.provider,l.detail.error),this.evict(l.detail.job.options.provider)}),c.addEventListener("success",l=>{a=!0,i.resolve(l.detail.result)}),c.addEventListener("idle",()=>{if(a){this.log.trace("session idle, found block");return}if(t.signal?.aborted===!0){this.log.trace("session idle, signal aborted");return}Promise.resolve().then(async()=>{this.log("no session peers had block for for %c, finding new providers",e);for(let l=0;l<this.minProviders&&this.providers.length!==0;l++){let u=this.providers[Math.floor(Math.random()*this.providers.length)];this.evict(u)}await this.findProviders(e,this.minProviders,t),this.log("found new providers re-retrieving %c",e),this.requests.delete(n),i.resolve(await this.retrieve(e,t))}).catch(l=>{this.log.error("could not find new providers for %c - %e",e,l),i.reject(l)})});let h=l=>{c.add(async()=>this.queryProvider(e,l.detail,t),{provider:l.detail}).catch(u=>{t.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c - %e",e,u)})};this.addEventListener("provider",h),Promise.all([...this.providers].map(async l=>c.add(async()=>this.queryProvider(e,l,t),{provider:l}))).catch(l=>{t.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c - %e",e,l)});let d=()=>{i.reject(new U(t.signal?.reason??"Session aborted")),c.abort()};t.signal?.addEventListener("abort",d);try{return await Ce(i.promise,t.signal)}finally{this.removeEventListener("provider",h),t.signal?.removeEventListener("abort",d),c.clear(),this.requests.delete(n)}}evict(e){this.evictionFilter.add(this.toEvictionKey(e));let t=this.providers.findIndex(n=>this.equals(n,e));t!==-1&&this.providers.splice(t,1)}isEvicted(e){return this.evictionFilter.has(this.toEvictionKey(e))}hasProvider(e){return!!(this.providers.find(t=>this.equals(t,e))!=null||this.isEvicted(e))}async findProviders(e,t,n){let s=O(),i=0;return Promise.resolve().then(async()=>{if(this.log("finding %d-%d new provider(s) for %c",t,this.maxProviders,e),this.initialProviders.length>0)for(;i<t&&this.initialProviders.length>0;){let o=this.initialProviders.pop();if(o==null)break;let a=await this.convertToProvider(o,n);if(n.signal?.aborted===!0)break;if(a!=null&&!this.hasProvider(a)&&(this.log("found %d/%d new providers",i,this.maxProviders),this.providers.push(a),this.safeDispatchEvent("provider",{detail:a}),i++,i===t&&(this.log("session is ready"),s.resolve()),this.providers.length===this.maxProviders)){this.log("found max session peers",i);break}}if(i<this.maxProviders)for await(let o of this.findNewProviders(e,n)){if(i===this.maxProviders||n.signal?.aborted===!0)break;if(!this.hasProvider(o)&&(this.log("found %d/%d new providers",i,this.maxProviders),this.providers.push(o),this.safeDispatchEvent("provider",{detail:o}),i++,i===t&&(this.log("session is ready"),s.resolve()),this.providers.length===this.maxProviders)){this.log("found max session peers",i);break}}if(this.log("found %d/%d new session peers",i,this.maxProviders),i<t)throw new kt(`Found ${i} of ${t} ${this.name} providers for ${e}`)}).catch(o=>{this.log.error("error searching routing for potential session peers for %c - %e",e,o),s.reject(o)}),s.promise}};var Cr=class extends Oe{wantList;network;libp2p;constructor(e,t){super(e,{...t,name:"helia:bitswap:session"}),this.wantList=e.wantList,this.network=e.network,this.libp2p=e.libp2p}async queryProvider(e,t,n){this.log("sending WANT-BLOCK for %c to %p",e,t);let s=await this.wantList.wantSessionBlock(e,t,n);if(this.log("%p %s %c",t,s.has?"has":"does not have",e),s.has&&s.block!=null)return s.block;throw new Error("Provider did not have block")}async*findNewProviders(e,t={}){for await(let n of this.network.findProviders(e,t))yield n.id}toEvictionKey(e){return e.toMultihash().bytes}equals(e,t){return e.equals(t)}async convertToProvider(e,t){return Ur(e)?e:(await this.libp2p.dial(e,t)).remotePeer}};function Bn(r,e){return new Cr(r,e)}var Lt=class{blocksReceived;duplicateBlocksReceived;dataReceived;duplicateDataReceived;constructor(e){this.blocksReceived=e.metrics?.registerMetricGroup("helia_bitswap_received_blocks"),this.duplicateBlocksReceived=e.metrics?.registerMetricGroup("helia_bitswap_duplicate_received_blocks"),this.dataReceived=e.metrics?.registerMetricGroup("helia_bitswap_data_received_bytes"),this.duplicateDataReceived=e.metrics?.registerMetricGroup("helia_bitswap_duplicate_data_received_bytes")}updateBlocksReceived(e=1,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.blocksReceived?.increment(n)}updateDuplicateBlocksReceived(e=1,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.duplicateBlocksReceived?.increment(n)}updateDataReceived(e,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.dataReceived?.increment(n)}updateDuplicateDataReceived(e,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.duplicateDataReceived?.increment(n)}};function Yi(r){if(!(r instanceof Uint8Array))throw new Error("arg needs to be a Uint8Array");let e=[];for(;r.length>0;){let t=je(r);e.push(t),r=r.slice(E(t))}return e}var Un=Yi;var At=class extends H{peers;wants;network;log;sendMessagesDelay;sendMessagesTimeout;hashLoader;sendingMessages;constructor(e,t={}){super(),this.peers=ze({name:"helia_bitswap_peers",metrics:e.metrics}),this.wants=_n({name:"helia_bitswap_wantlist",metrics:e.metrics}),this.network=e.network,this.sendMessagesDelay=t.sendMessagesDelay??10,this.log=e.logger.forComponent("helia:bitswap:wantlist"),this.hashLoader=t.hashLoader,this.network.addEventListener("bitswap:message",n=>{this.receiveMessage(n.detail.peer,n.detail.message).catch(s=>{this.log.error("error receiving bitswap message from %p - %e",n.detail.peer,s)})}),this.network.addEventListener("peer:connected",n=>{this.peerConnected(n.detail).catch(s=>{this.log.error("error processing newly connected bitswap peer %p - %e",n.detail,s)})}),this.network.addEventListener("peer:disconnected",n=>{this.peerDisconnected(n.detail)})}async addEntry(e,t){let n=W(e.multihash.bytes,"base64"),s=this.wants.get(n);s==null&&(s={cid:e,priority:t.priority??1,wantType:t.wantType??y.WantBlock,cancel:!1,sendDontHave:!0},this.wants.set(n,s)),s.wantType===y.WantHave&&t.wantType===y.WantBlock&&(s.wantType=y.WantBlock),await this.sendMessagesDebounced();try{return t.wantType===y.WantBlock?(await oe(this,"block",t?.signal,{filter:a=>$(e.multihash.digest,a.detail.cid.multihash.digest),errorMessage:"Want was aborted"})).detail:(await oe(this,"presence",t?.signal,{filter:o=>$(e.multihash.digest,o.detail.cid.multihash.digest),errorMessage:"Want was aborted"})).detail}finally{t.signal?.aborted===!0&&(this.log("want for %c was aborted, cancelling want",e),s.cancel=!0,await this.sendMessagesDebounced())}}async sendMessagesDebounced(){await this.sendingMessages?.promise,clearTimeout(this.sendMessagesTimeout),this.sendMessagesTimeout=setTimeout(()=>{this.sendMessages().catch(e=>{this.log("error sending messages to peers - %e",e)})},this.sendMessagesDelay)}async sendMessages(){this.sendingMessages=O(),await Promise.all([...this.peers.entries()].map(async([e,t])=>{let n=new Set,s=new X;for(let[i,o]of this.wants.entries())t.has(i)||o.cancel||(n.add(i),s.addWantlistEntry(o.cid,{cid:o.cid.bytes,priority:o.priority,wantType:o.wantType,cancel:o.cancel,sendDontHave:o.sendDontHave}));if(s.wantlist.size!==0)try{await this.network.sendMessage(e,s);for(let i of n)t.add(i)}catch(i){this.log.error("error sending full wantlist to new peer - %e",i)}})).catch(e=>{this.log.error("error sending messages - %e",e)});for(let[e,t]of this.wants)if(t.cancel){this.wants.delete(e);for(let n of this.peers.values())n.delete(e)}this.sendingMessages.resolve()}has(e){let t=W(e.multihash.bytes,"base64");return this.wants.has(t)}async wantSessionPresence(e,t,n={}){let s=new X;return s.addWantlistEntry(e,{cid:e.bytes,sendDontHave:!0,wantType:y.WantHave,priority:1}),await this.network.sendMessage(t,s),(await oe(this,"presence",n.signal,{filter:o=>t.equals(o.detail.sender)&&$(e.multihash.digest,o.detail.cid.multihash.digest)})).detail}async wantBlock(e,t={}){return this.addEntry(e,{...t,wantType:y.WantBlock})}async wantSessionBlock(e,t,n={}){let s=new X;return s.addWantlistEntry(e,{cid:e.bytes,sendDontHave:!0,wantType:y.WantBlock,priority:1}),await this.network.sendMessage(t,s),(await oe(this,"presence",n.signal,{filter:o=>t.equals(o.detail.sender)&&$(e.multihash.digest,o.detail.cid.multihash.digest)})).detail}async receivedBlock(e,t){let n=W(e.multihash.bytes,"base64"),s=this.wants.get(n);s!=null&&(s.cancel=!0,await this.sendMessagesDebounced())}async receiveMessage(e,t){this.log("received message from %p with %d blocks",e,t.blocks.length);let n=!1;for(let s of t.blocks){if(s.prefix==null||s.data==null)continue;let i=Un(s.prefix),o=i[0],a=i[1],c=i[2],h=i[3],d=c===Je.code?Je:await this.hashLoader?.getHasher(c);if(d==null){this.log.error("unknown hash algorithm",c);continue}let l=d.digest(s.data,{truncate:h});l.then!=null&&(l=await l);let u=G.create(o===0?0:1,a,l);this.log("received block from %p for %c",e,u),this.safeDispatchEvent("block",{detail:{sender:e,cid:u,block:s.data}}),this.safeDispatchEvent("presence",{detail:{sender:e,cid:u,has:!0,block:s.data}});let f=W(u.multihash.bytes,"base64"),p=this.wants.get(f);p!=null&&(p.cancel=!0,n=!0)}for(let{cid:s,type:i}of t.blockPresences){let o=G.decode(s);this.log("received %s from %p for %c",i,e,o),this.safeDispatchEvent("presence",{detail:{sender:e,cid:o,has:i===C.HaveBlock}})}n&&await this.sendMessagesDebounced()}async peerConnected(e){let t=new Set,n=new X(!0);for(let[s,i]of this.wants.entries())i.cancel||(t.add(s),n.addWantlistEntry(i.cid,{cid:i.cid.bytes,priority:1,wantType:y.WantBlock,cancel:!1,sendDontHave:!1}));if(n.wantlist.size===0){this.peers.set(e,t);return}try{await this.network.sendMessage(e,n),this.peers.set(e,t)}catch(s){this.log.error("error sending full wantlist to new peer %p - %e",e,s)}}peerDisconnected(e){this.peers.delete(e)}start(){}stop(){this.peers.clear(),clearTimeout(this.sendMessagesTimeout)}};var It=class{log;logger;stats;network;blockstore;peerWantLists;wantList;libp2p;constructor(e,t={}){this.logger=e.logger,this.log=e.logger.forComponent("helia:bitswap"),this.blockstore=e.blockstore,this.libp2p=e.libp2p,this.stats=new Lt(e),this.network=new Et(e,t),this.peerWantLists=new St({...e,network:this.network},t),this.wantList=new At({...e,network:this.network},t)}createSession(e={}){return Bn({wantList:this.wantList,network:this.network,logger:this.logger,libp2p:this.libp2p},e)}async want(e,t={}){let n=new AbortController,s=Fr([n.signal,t.signal]);n.signal,this.network.findAndConnect(e,{...t,signal:s}).catch(i=>{n.signal.aborted||this.log.error("error during finding and connect for cid %c - %e",e,i)});try{let i=await this.wantList.wantBlock(e,{...t,signal:s});return t.onProgress?.(new D("bitswap:block",{cid:e,sender:i.sender})),i.block}finally{n.abort(),s.clear()}}async notify(e,t={}){await Promise.all([this.peerWantLists.receivedBlock(e,t),this.wantList.receivedBlock(e,t)])}getWantlist(){return[...this.wantList.wants.values()].filter(e=>!e.cancel).map(e=>({cid:e.cid,priority:e.priority,wantType:e.wantType}))}getPeerWantlist(e){return this.peerWantLists.wantListForPeer(e)}async start(){this.wantList.start(),await this.network.start()}async stop(){this.wantList.stop(),await this.network.stop()}};var eo=(r,e={})=>new It(r,e);return Gn(to);})();
3
3
  return HeliaBitswap}));
4
4
  //# sourceMappingURL=index.min.js.map