@libp2p/kad-dht 12.0.15-9d13a2f6a → 12.0.15-bfa7660d5

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,10 +1,10 @@
1
1
  (function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Libp2PKadDht = factory()}(typeof self !== 'undefined' ? self : this, function () {
2
- "use strict";var Libp2PKadDht=(()=>{var r5=Object.create;var Kn=Object.defineProperty;var n5=Object.getOwnPropertyDescriptor;var s5=Object.getOwnPropertyNames;var i5=Object.getPrototypeOf,o5=Object.prototype.hasOwnProperty;var an=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),ue=(r,e)=>{for(var t in e)Kn(r,t,{get:e[t],enumerable:!0})},d2=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of s5(e))!o5.call(r,s)&&s!==t&&Kn(r,s,{get:()=>e[s],enumerable:!(n=n5(e,s))||n.enumerable});return r};var cn=(r,e,t)=>(t=r!=null?r5(i5(r)):{},d2(e||!r||!r.__esModule?Kn(t,"default",{value:r,enumerable:!0}):t,r)),a5=r=>d2(Kn({},"__esModule",{value:!0}),r);var u0=an(xn=>{(function(){var r,e,t,n,s,i,o,a;a=function(c){var l,f,u,h;return l=(c&255<<24)>>>24,f=(c&255<<16)>>>16,u=(c&65280)>>>8,h=c&255,[l,f,u,h].join(".")},o=function(c){var l,f,u,h,m,p;for(l=[],u=h=0;h<=3&&c.length!==0;u=++h){if(u>0){if(c[0]!==".")throw new Error("Invalid IP");c=c.substring(1)}p=e(c),m=p[0],f=p[1],c=c.substring(f),l.push(m)}if(c.length!==0)throw new Error("Invalid IP");switch(l.length){case 1:if(l[0]>4294967295)throw new Error("Invalid IP");return l[0]>>>0;case 2:if(l[0]>255||l[1]>16777215)throw new Error("Invalid IP");return(l[0]<<24|l[1])>>>0;case 3:if(l[0]>255||l[1]>255||l[2]>65535)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2])>>>0;case 4:if(l[0]>255||l[1]>255||l[2]>255||l[3]>255)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2]<<8|l[3])>>>0;default:throw new Error("Invalid IP")}},t=function(c){return c.charCodeAt(0)},n=t("0"),i=t("a"),s=t("A"),e=function(c){var l,f,u,h,m;for(h=0,l=10,f="9",u=0,c.length>1&&c[u]==="0"&&(c[u+1]==="x"||c[u+1]==="X"?(u+=2,l=16):"0"<=c[u+1]&&c[u+1]<="9"&&(u++,l=8,f="7")),m=u;u<c.length;){if("0"<=c[u]&&c[u]<=f)h=h*l+(t(c[u])-n)>>>0;else if(l===16)if("a"<=c[u]&&c[u]<="f")h=h*l+(10+t(c[u])-i)>>>0;else if("A"<=c[u]&&c[u]<="F")h=h*l+(10+t(c[u])-s)>>>0;else break;else break;if(h>4294967295)throw new Error("too large");u++}if(u===m)throw new Error("empty octet");return[h,u]},r=function(){function c(l,f){var u,h,m,p;if(typeof l!="string")throw new Error("Missing `net' parameter");if(f||(p=l.split("/",2),l=p[0],f=p[1]),f||(f=32),typeof f=="string"&&f.indexOf(".")>-1){try{this.maskLong=o(f)}catch(d){throw u=d,new Error("Invalid mask: "+f)}for(h=m=32;m>=0;h=--m)if(this.maskLong===4294967295<<32-h>>>0){this.bitmask=h;break}}else if(f||f===0)this.bitmask=parseInt(f,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(o(l)&this.maskLong)>>>0}catch(d){throw u=d,new Error("Invalid net address: "+l)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+f);this.size=Math.pow(2,32-this.bitmask),this.base=a(this.netLong),this.mask=a(this.maskLong),this.hostmask=a(~this.maskLong),this.first=this.bitmask<=30?a(this.netLong+1):this.base,this.last=this.bitmask<=30?a(this.netLong+this.size-2):a(this.netLong+this.size-1),this.broadcast=this.bitmask<=30?a(this.netLong+this.size-1):void 0}return c.prototype.contains=function(l){return typeof l=="string"&&(l.indexOf("/")>0||l.split(".").length!==4)&&(l=new c(l)),l instanceof c?this.contains(l.base)&&this.contains(l.broadcast||l.last):(o(l)&this.maskLong)>>>0===(this.netLong&this.maskLong)>>>0},c.prototype.next=function(l){return l==null&&(l=1),new c(a(this.netLong+this.size*l),this.mask)},c.prototype.forEach=function(l){var f,u,h;for(h=o(this.first),u=o(this.last),f=0;h<=u;)l(a(h),h,f),f++,h++},c.prototype.toString=function(){return this.base+"/"+this.bitmask},c}(),xn.ip2long=o,xn.long2ip=a,xn.Netmask=r}).call(xn)});var r3=an(Zr=>{"use strict";var va="[object ArrayBuffer]",Bt=class r{static isArrayBuffer(e){return Object.prototype.toString.call(e)===va}static toArrayBuffer(e){return this.isArrayBuffer(e)?e:e.byteLength===e.buffer.byteLength||e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:this.toUint8Array(e.buffer).slice(e.byteOffset,e.byteOffset+e.byteLength).buffer}static toUint8Array(e){return this.toView(e,Uint8Array)}static toView(e,t){if(e.constructor===t)return e;if(this.isArrayBuffer(e))return new t(e);if(this.isArrayBufferView(e))return new t(e.buffer,e.byteOffset,e.byteLength);throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'")}static isBufferSource(e){return this.isArrayBufferView(e)||this.isArrayBuffer(e)}static isArrayBufferView(e){return ArrayBuffer.isView(e)||e&&this.isArrayBuffer(e.buffer)}static isEqual(e,t){let n=r.toUint8Array(e),s=r.toUint8Array(t);if(n.length!==s.byteLength)return!1;for(let i=0;i<n.length;i++)if(n[i]!==s[i])return!1;return!0}static concat(...e){let t;Array.isArray(e[0])&&!(e[1]instanceof Function)||Array.isArray(e[0])&&e[1]instanceof Function?t=e[0]:e[e.length-1]instanceof Function?t=e.slice(0,e.length-1):t=e;let n=0;for(let o of t)n+=o.byteLength;let s=new Uint8Array(n),i=0;for(let o of t){let a=this.toUint8Array(o);s.set(a,i),i+=a.length}return e[e.length-1]instanceof Function?this.toView(s,e[e.length-1]):s.buffer}},vo="string",xa=/^[0-9a-f]+$/i,Ea=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,Aa=/^[a-zA-Z0-9-_]+$/,B1=class{static fromString(e){let t=unescape(encodeURIComponent(e)),n=new Uint8Array(t.length);for(let s=0;s<t.length;s++)n[s]=t.charCodeAt(s);return n.buffer}static toString(e){let t=Bt.toUint8Array(e),n="";for(let i=0;i<t.length;i++)n+=String.fromCharCode(t[i]);return decodeURIComponent(escape(n))}},ze=class{static toString(e,t=!1){let n=Bt.toArrayBuffer(e),s=new DataView(n),i="";for(let o=0;o<n.byteLength;o+=2){let a=s.getUint16(o,t);i+=String.fromCharCode(a)}return i}static fromString(e,t=!1){let n=new ArrayBuffer(e.length*2),s=new DataView(n);for(let i=0;i<e.length;i++)s.setUint16(i*2,e.charCodeAt(i),t);return n}},I1=class r{static isHex(e){return typeof e===vo&&xa.test(e)}static isBase64(e){return typeof e===vo&&Ea.test(e)}static isBase64Url(e){return typeof e===vo&&Aa.test(e)}static ToString(e,t="utf8"){let n=Bt.toUint8Array(e);switch(t.toLowerCase()){case"utf8":return this.ToUtf8String(n);case"binary":return this.ToBinary(n);case"hex":return this.ToHex(n);case"base64":return this.ToBase64(n);case"base64url":return this.ToBase64Url(n);case"utf16le":return ze.toString(n,!0);case"utf16":case"utf16be":return ze.toString(n);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromString(e,t="utf8"){if(!e)return new ArrayBuffer(0);switch(t.toLowerCase()){case"utf8":return this.FromUtf8String(e);case"binary":return this.FromBinary(e);case"hex":return this.FromHex(e);case"base64":return this.FromBase64(e);case"base64url":return this.FromBase64Url(e);case"utf16le":return ze.fromString(e,!0);case"utf16":case"utf16be":return ze.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){let t=Bt.toUint8Array(e);if(typeof btoa<"u"){let n=this.ToString(t,"binary");return btoa(n)}else return Buffer.from(t).toString("base64")}static FromBase64(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64(t))throw new TypeError("Argument 'base64Text' is not Base64 encoded");return typeof atob<"u"?this.FromBinary(atob(t)):new Uint8Array(Buffer.from(t,"base64")).buffer}static FromBase64Url(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64Url(t))throw new TypeError("Argument 'base64url' is not Base64Url encoded");return this.FromBase64(this.Base64Padding(t.replace(/\-/g,"+").replace(/\_/g,"/")))}static ToBase64Url(e){return this.ToBase64(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=/g,"")}static FromUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.FromBinary(e);case"utf8":return B1.fromString(e);case"utf16":case"utf16be":return ze.fromString(e);case"utf16le":case"usc2":return ze.fromString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.ToBinary(e);case"utf8":return B1.toString(e);case"utf16":case"utf16be":return ze.toString(e);case"utf16le":case"usc2":return ze.toString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromBinary(e){let t=e.length,n=new Uint8Array(t);for(let s=0;s<t;s++)n[s]=e.charCodeAt(s);return n.buffer}static ToBinary(e){let t=Bt.toUint8Array(e),n="";for(let s=0;s<t.length;s++)n+=String.fromCharCode(t[s]);return n}static ToHex(e){let t=Bt.toUint8Array(e),n="",s=t.length;for(let i=0;i<s;i++){let o=t[i];o<16&&(n+="0"),n+=o.toString(16)}return n}static FromHex(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isHex(t))throw new TypeError("Argument 'hexString' is not HEX encoded");t.length%2&&(t=`0${t}`);let n=new Uint8Array(t.length/2);for(let s=0;s<t.length;s=s+2){let i=t.slice(s,s+2);n[s/2]=parseInt(i,16)}return n.buffer}static ToUtf16String(e,t=!1){return ze.toString(e,t)}static FromUtf16String(e,t=!1){return ze.fromString(e,t)}static Base64Padding(e){let t=4-e.length%4;if(t<4)for(let n=0;n<t;n++)e+="=";return e}static formatString(e){return e?.replace(/[\n\r\t ]/g,"")||""}};I1.DEFAULT_UTF8_ENCODING="utf8";function Ba(r,...e){let t=arguments[0];for(let n=1;n<arguments.length;n++){let s=arguments[n];for(let i in s)t[i]=s[i]}return t}function Ia(...r){let e=r.map(s=>s.byteLength).reduce((s,i)=>s+i),t=new Uint8Array(e),n=0;return r.map(s=>new Uint8Array(s)).forEach(s=>{for(let i of s)t[n++]=i}),t.buffer}function Sa(r,e){if(!(r&&e)||r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let s=0;s<r.byteLength;s++)if(t[s]!==n[s])return!1;return!0}Zr.BufferSourceConverter=Bt;Zr.Convert=I1;Zr.assign=Ba;Zr.combine=Ia;Zr.isEqual=Sa});var N4=an((yg,k4)=>{k4.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 T4=an((bg,Wo)=>{"use strict";var N7=Object.prototype.hasOwnProperty,Le="~";function Un(){}Object.create&&(Un.prototype=Object.create(null),new Un().__proto__||(Le=!1));function _7(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function _4(r,e,t,n,s){if(typeof t!="function")throw new TypeError("The listener must be a function");var i=new _7(t,n||r,s),o=Le?Le+e:e;return r._events[o]?r._events[o].fn?r._events[o]=[r._events[o],i]:r._events[o].push(i):(r._events[o]=i,r._eventsCount++),r}function Bs(r,e){--r._eventsCount===0?r._events=new Un:delete r._events[e]}function ke(){this._events=new Un,this._eventsCount=0}ke.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)N7.call(t,n)&&e.push(Le?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};ke.prototype.listeners=function(e){var t=Le?Le+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var s=0,i=n.length,o=new Array(i);s<i;s++)o[s]=n[s].fn;return o};ke.prototype.listenerCount=function(e){var t=Le?Le+e:e,n=this._events[t];return n?n.fn?1:n.length:0};ke.prototype.emit=function(e,t,n,s,i,o){var a=Le?Le+e:e;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,f,u;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,s),!0;case 5:return c.fn.call(c.context,t,n,s,i),!0;case 6:return c.fn.call(c.context,t,n,s,i,o),!0}for(u=1,f=new Array(l-1);u<l;u++)f[u-1]=arguments[u];c.fn.apply(c.context,f)}else{var h=c.length,m;for(u=0;u<h;u++)switch(c[u].once&&this.removeListener(e,c[u].fn,void 0,!0),l){case 1:c[u].fn.call(c[u].context);break;case 2:c[u].fn.call(c[u].context,t);break;case 3:c[u].fn.call(c[u].context,t,n);break;case 4:c[u].fn.call(c[u].context,t,n,s);break;default:if(!f)for(m=1,f=new Array(l-1);m<l;m++)f[m-1]=arguments[m];c[u].fn.apply(c[u].context,f)}}return!0};ke.prototype.on=function(e,t,n){return _4(this,e,t,n,!1)};ke.prototype.once=function(e,t,n){return _4(this,e,t,n,!0)};ke.prototype.removeListener=function(e,t,n,s){var i=Le?Le+e:e;if(!this._events[i])return this;if(!t)return Bs(this,i),this;var o=this._events[i];if(o.fn)o.fn===t&&(!s||o.once)&&(!n||o.context===n)&&Bs(this,i);else{for(var a=0,c=[],l=o.length;a<l;a++)(o[a].fn!==t||s&&!o[a].once||n&&o[a].context!==n)&&c.push(o[a]);c.length?this._events[i]=c.length===1?c[0]:c:Bs(this,i)}return this};ke.prototype.removeAllListeners=function(e){var t;return e?(t=Le?Le+e:e,this._events[t]&&Bs(this,t)):(this._events=new Un,this._eventsCount=0),this};ke.prototype.off=ke.prototype.removeListener;ke.prototype.addListener=ke.prototype.on;ke.prefixed=Le;ke.EventEmitter=ke;typeof Wo<"u"&&(Wo.exports=ke)});var j4=an((sy,G4)=>{"use strict";function z4(r,e){for(let t in e)Object.defineProperty(r,t,{value:e[t],enumerable:!0,configurable:!0});return r}function W7(r,e,t){if(!r||typeof r=="string")throw new TypeError("Please pass an Error to err-code");t||(t={}),typeof e=="object"&&(t=e,e=""),e&&(t.code=e);try{return z4(r,t)}catch{t.message=r.message,t.stack=r.stack;let s=function(){};return s.prototype=Object.create(Object.getPrototypeOf(r)),z4(new s,t)}}G4.exports=W7});var rc={};ue(rc,{EventTypes:()=>s2,MessageType:()=>M,Record:()=>me,kadDHT:()=>tc,passthroughMapper:()=>p0,removePrivateAddressesMapper:()=>a1,removePublicAddressesMapper:()=>d0});var p2=Symbol.for("@libp2p/content-routing");var g2=Symbol.for("@libp2p/peer-discovery");var m2=Symbol.for("@libp2p/peer-id");var y2=Symbol.for("@libp2p/peer-routing");var Pt=class r extends Error{code;type;constructor(e="The operation was aborted"){super(e),this.name="AbortError",this.code=r.code,this.type=r.type}static code="ABORT_ERR";static type="aborted"},x=class extends Error{code;props;constructor(e,t,n){super(e),this.code=t,this.name=n?.name??"CodeError",this.props=n??{}}};var De=(r,...e)=>{try{[...e]}catch{}};var Be=class extends EventTarget{#e=new Map;constructor(){super(),De(1/0,this)}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 Ne(e,t))}},Qs=class extends Event{detail;constructor(e,t){super(e,t),this.detail=t?.detail}},Ne=globalThis.CustomEvent??Qs;function b2(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function w2(...r){let e=[];for(let t of r)b2(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStart!=null&&await t.beforeStart()})),await Promise.all(e.map(async t=>{await t.start()})),await Promise.all(e.map(async t=>{t.afterStart!=null&&await t.afterStart()}))}async function v2(...r){let e=[];for(let t of r)b2(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStop!=null&&await t.beforeStop()})),await Promise.all(e.map(async t=>{await t.stop()})),await Promise.all(e.map(async t=>{t.afterStop!=null&&await t.afterStop()}))}function c5(r){return r[Symbol.asyncIterator]!=null}function l5(r){if(c5(r))return(async()=>{for await(let e of r);})();for(let e of r);}var Xs=l5;function fe(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var x2="/ipfs/kad/1.0.0",E2="/dht/record",Js="/dht/provider";function Pe(r=0){return new Uint8Array(r)}function be(r=0){return new Uint8Array(r)}var u5=Math.pow(2,7),f5=Math.pow(2,14),h5=Math.pow(2,21),ei=Math.pow(2,28),ti=Math.pow(2,35),ri=Math.pow(2,42),ni=Math.pow(2,49),Y=128,Ie=127;function he(r){if(r<u5)return 1;if(r<f5)return 2;if(r<h5)return 3;if(r<ei)return 4;if(r<ti)return 5;if(r<ri)return 6;if(r<ni)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function si(r,e,t=0){switch(he(r)){case 8:e[t++]=r&255|Y,r/=128;case 7:e[t++]=r&255|Y,r/=128;case 6:e[t++]=r&255|Y,r/=128;case 5:e[t++]=r&255|Y,r/=128;case 4:e[t++]=r&255|Y,r>>>=7;case 3:e[t++]=r&255|Y,r>>>=7;case 2:e[t++]=r&255|Y,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function d5(r,e,t=0){switch(he(r)){case 8:e.set(t++,r&255|Y),r/=128;case 7:e.set(t++,r&255|Y),r/=128;case 6:e.set(t++,r&255|Y),r/=128;case 5:e.set(t++,r&255|Y),r/=128;case 4:e.set(t++,r&255|Y),r>>>=7;case 3:e.set(t++,r&255|Y),r>>>=7;case 2:e.set(t++,r&255|Y),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function ii(r,e){let t=r[e],n=0;if(n+=t&Ie,t<Y||(t=r[e+1],n+=(t&Ie)<<7,t<Y)||(t=r[e+2],n+=(t&Ie)<<14,t<Y)||(t=r[e+3],n+=(t&Ie)<<21,t<Y)||(t=r[e+4],n+=(t&Ie)*ei,t<Y)||(t=r[e+5],n+=(t&Ie)*ti,t<Y)||(t=r[e+6],n+=(t&Ie)*ri,t<Y)||(t=r[e+7],n+=(t&Ie)*ni,t<Y))return n;throw new RangeError("Could not decode varint")}function p5(r,e){let t=r.get(e),n=0;if(n+=t&Ie,t<Y||(t=r.get(e+1),n+=(t&Ie)<<7,t<Y)||(t=r.get(e+2),n+=(t&Ie)<<14,t<Y)||(t=r.get(e+3),n+=(t&Ie)<<21,t<Y)||(t=r.get(e+4),n+=(t&Ie)*ei,t<Y)||(t=r.get(e+5),n+=(t&Ie)*ti,t<Y)||(t=r.get(e+6),n+=(t&Ie)*ri,t<Y)||(t=r.get(e+7),n+=(t&Ie)*ni,t<Y))return n;throw new RangeError("Could not decode varint")}function Ke(r,e,t=0){return e==null&&(e=be(he(r))),e instanceof Uint8Array?si(r,e,t):d5(r,e,t)}function Ue(r,e=0){return r instanceof Uint8Array?ii(r,e):p5(r,e)}var oi=new Float32Array([-0]),Ct=new Uint8Array(oi.buffer);function A2(r,e,t){oi[0]=r,e[t]=Ct[0],e[t+1]=Ct[1],e[t+2]=Ct[2],e[t+3]=Ct[3]}function B2(r,e){return Ct[0]=r[e],Ct[1]=r[e+1],Ct[2]=r[e+2],Ct[3]=r[e+3],oi[0]}var ai=new Float64Array([-0]),Se=new Uint8Array(ai.buffer);function I2(r,e,t){ai[0]=r,e[t]=Se[0],e[t+1]=Se[1],e[t+2]=Se[2],e[t+3]=Se[3],e[t+4]=Se[4],e[t+5]=Se[5],e[t+6]=Se[6],e[t+7]=Se[7]}function S2(r,e){return Se[0]=r[e],Se[1]=r[e+1],Se[2]=r[e+2],Se[3]=r[e+3],Se[4]=r[e+4],Se[5]=r[e+5],Se[6]=r[e+6],Se[7]=r[e+7],ai[0]}var g5=BigInt(Number.MAX_SAFE_INTEGER),m5=BigInt(Number.MIN_SAFE_INTEGER),Oe=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 rr;if(e<g5&&e>m5)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>R2&&(s=0n,++n>R2&&(n=0n))),new r(Number(s),Number(n))}static fromNumber(e){if(e===0)return rr;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):rr}},rr=new Oe(0,0);rr.toBigInt=function(){return 0n};rr.zzEncode=rr.zzDecode=function(){return this};rr.length=function(){return 1};var R2=4294967296n;function k2(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 N2(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 ci(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 je(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function qn(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var li=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,je(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 je(this,4);return qn(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw je(this,4);return qn(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw je(this,4);let e=B2(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw je(this,4);let e=S2(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 je(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return N2(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw je(this,e);this.pos+=e}else do if(this.pos>=this.len)throw je(this);while(this.buf[this.pos++]&128);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new Oe(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 je(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 je(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 je(this,8);let e=qn(this.buf,this.pos+=4),t=qn(this.buf,this.pos+=4);return new Oe(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=ii(this.buf,this.pos);return this.pos+=he(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 ui(r){return new li(r instanceof Uint8Array?r:r.subarray())}function rt(r,e,t){let n=ui(r);return e.decode(n,void 0,t)}var gi={};ue(gi,{base10:()=>E5});var Sc=new Uint8Array(0);function T2(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 dt(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 L2(r){return new TextEncoder().encode(r)}function P2(r){return new TextDecoder().decode(r)}function y5(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),l=Math.log(a)/Math.log(256),f=Math.log(256)/Math.log(a);function u(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var d=0,g=0,y=0,v=p.length;y!==v&&p[y]===0;)y++,d++;for(var b=(v-y)*f+1>>>0,S=new Uint8Array(b);y!==v;){for(var E=p[y],I=0,N=b-1;(E!==0||I<g)&&N!==-1;N--,I++)E+=256*S[N]>>>0,S[N]=E%a>>>0,E=E/a>>>0;if(E!==0)throw new Error("Non-zero carry");g=I,y++}for(var T=b-g;T!==b&&S[T]===0;)T++;for(var j=c.repeat(d);T<b;++T)j+=r.charAt(S[T]);return j}function h(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var d=0;if(p[d]!==" "){for(var g=0,y=0;p[d]===c;)g++,d++;for(var v=(p.length-d)*l+1>>>0,b=new Uint8Array(v);p[d];){var S=t[p.charCodeAt(d)];if(S===255)return;for(var E=0,I=v-1;(S!==0||E<y)&&I!==-1;I--,E++)S+=a*b[I]>>>0,b[I]=S%256>>>0,S=S/256>>>0;if(S!==0)throw new Error("Non-zero carry");y=E,d++}if(p[d]!==" "){for(var N=v-y;N!==v&&b[N]===0;)N++;for(var T=new Uint8Array(g+(v-N)),j=g;N!==v;)T[j++]=b[N++];return T}}}function m(p){var d=h(p);if(d)return d;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:h,decode:m}}var b5=y5,w5=b5,D2=w5;var fi=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")}},hi=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return U2(this,e)}},di=class{decoders;constructor(e){this.decoders=e}or(e){return U2(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 U2(r,e){return new di({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var pi=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 fi(e,t,n),this.decoder=new hi(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function xr({name:r,prefix:e,encode:t,decode:n}){return new pi(r,e,t,n)}function Dt({name:r,prefix:e,alphabet:t}){let{encode:n,decode:s}=D2(t,r);return xr({prefix:e,name:r,encode:n,decode:i=>dt(s(i))})}function v5(r,e,t,n){let s={};for(let f=0;f<e.length;++f)s[e[f]]=f;let i=r.length;for(;r[i-1]==="=";)--i;let o=new Uint8Array(i*t/8|0),a=0,c=0,l=0;for(let f=0;f<i;++f){let u=s[r[f]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|u,a+=t,a>=8&&(a-=8,o[l++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return o}function x5(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;)i+="=";return i}function ie({name:r,prefix:e,bitsPerChar:t,alphabet:n}){return xr({prefix:e,name:r,encode(s){return x5(s,n,t)},decode(s){return v5(s,n,t,r)}})}var E5=Dt({prefix:"9",name:"base10",alphabet:"0123456789"});var mi={};ue(mi,{base16:()=>A5,base16upper:()=>B5});var A5=ie({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),B5=ie({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var yi={};ue(yi,{base2:()=>I5});var I5=ie({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var bi={};ue(bi,{base256emoji:()=>_5});var O2=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}"),S5=O2.reduce((r,e,t)=>(r[t]=e,r),[]),R5=O2.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function k5(r){return r.reduce((e,t)=>(e+=S5[t],e),"")}function N5(r){let e=[];for(let t of r){let n=R5[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var _5=xr({prefix:"\u{1F680}",name:"base256emoji",encode:k5,decode:N5});var wi={};ue(wi,{base32:()=>pt,base32hex:()=>C5,base32hexpad:()=>U5,base32hexpadupper:()=>O5,base32hexupper:()=>D5,base32pad:()=>L5,base32padupper:()=>P5,base32upper:()=>T5,base32z:()=>V5});var pt=ie({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),T5=ie({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),L5=ie({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),P5=ie({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),C5=ie({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),D5=ie({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),U5=ie({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),O5=ie({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),V5=ie({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var vi={};ue(vi,{base36:()=>F5,base36upper:()=>M5});var F5=Dt({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),M5=Dt({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var xi={};ue(xi,{base58btc:()=>ge,base58flickr:()=>H5});var ge=Dt({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),H5=Dt({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Ei={};ue(Ei,{base64:()=>ln,base64pad:()=>K5,base64url:()=>q5,base64urlpad:()=>$5});var ln=ie({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),K5=ie({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),q5=ie({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),$5=ie({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var Ai={};ue(Ai,{base8:()=>z5});var z5=ie({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Bi={};ue(Bi,{identity:()=>G5});var G5=xr({prefix:"\0",name:"identity",encode:r=>P2(r),decode:r=>L2(r)});var Kc=new TextEncoder,qc=new TextDecoder;var Si={};ue(Si,{identity:()=>Ut});var W5=M2,V2=128,Z5=127,Q5=~Z5,X5=Math.pow(2,31);function M2(r,e,t){e=e||[],t=t||0;for(var n=t;r>=X5;)e[t++]=r&255|V2,r/=128;for(;r&Q5;)e[t++]=r&255|V2,r>>>=7;return e[t]=r|0,M2.bytes=t-n+1,e}var J5=Ii,e6=128,F2=127;function Ii(r,n){var t=0,n=n||0,s=0,i=n,o,a=r.length;do{if(i>=a)throw Ii.bytes=0,new RangeError("Could not decode varint");o=r[i++],t+=s<28?(o&F2)<<s:(o&F2)*Math.pow(2,s),s+=7}while(o>=e6);return Ii.bytes=i-n,t}var t6=Math.pow(2,7),r6=Math.pow(2,14),n6=Math.pow(2,21),s6=Math.pow(2,28),i6=Math.pow(2,35),o6=Math.pow(2,42),a6=Math.pow(2,49),c6=Math.pow(2,56),l6=Math.pow(2,63),u6=function(r){return r<t6?1:r<r6?2:r<n6?3:r<s6?4:r<i6?5:r<o6?6:r<a6?7:r<c6?8:r<l6?9:10},f6={encode:W5,decode:J5,encodingLength:u6},h6=f6,un=h6;function fn(r,e=0){return[un.decode(r,e),un.decode.bytes]}function Er(r,e,t=0){return un.encode(r,e,t),e}function Ar(r){return un.encodingLength(r)}function nt(r,e){let t=e.byteLength,n=Ar(r),s=n+Ar(t),i=new Uint8Array(s+t);return Er(r,i,0),Er(t,i,n),i.set(e,s),new Br(r,t,e,i)}function nr(r){let e=dt(r),[t,n]=fn(e),[s,i]=fn(e.subarray(n)),o=e.subarray(n+i);if(o.byteLength!==s)throw new Error("Incorrect length");return new Br(t,s,o,e)}function H2(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&T2(r.bytes,t.bytes)}}var Br=class{code;size;digest;bytes;constructor(e,t,n,s){this.code=e,this.size=t,this.digest=n,this.bytes=s}};var K2=0,d6="identity",q2=dt;function p6(r){return nt(K2,q2(r))}var Ut={code:K2,name:d6,encode:q2,digest:p6};var Ni={};ue(Ni,{sha256:()=>ne,sha512:()=>g6});function ki({name:r,code:e,encode:t}){return new Ri(r,e,t)}var Ri=class{name;code;encode;constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?nt(this.code,t):t.then(n=>nt(this.code,n))}else throw Error("Unknown type, must be binary type")}};function z2(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var ne=ki({name:"sha2-256",code:18,encode:z2("SHA-256")}),g6=ki({name:"sha2-512",code:19,encode:z2("SHA-512")});function G2(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return y6(t,_i(r),e??ge.encoder);default:return b6(t,_i(r),e??pt.encoder)}}var j2=new WeakMap;function _i(r){let e=j2.get(r);if(e==null){let t=new Map;return j2.set(r,t),t}return e}var _e=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!==hn)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==w6)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=nt(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&H2(e.multihash,n.multihash)}toString(e){return G2(this,e)}toJSON(){return{"/":G2(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??Y2(n,s,i.bytes))}else if(t[v6]===!0){let{version:n,multihash:s,code:i}=t,o=nr(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!==hn)throw new Error(`Version 0 CID must use dag-pb (code: ${hn}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let s=Y2(e,t,n.bytes);return new r(e,t,n,s)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,hn,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=dt(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 Br(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[u,h]=fn(e.subarray(t));return t+=h,u},s=n(),i=hn;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(),l=t+c,f=l-o;return{version:s,codec:i,multihashCode:a,digestSize:c,multihashSize:f,size:l}}static parse(e,t){let[n,s]=m6(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 _i(i).set(n,e),i}};function m6(r,e){switch(r[0]){case"Q":{let t=e??ge;return[ge.prefix,t.decode(`${ge.prefix}${r}`)]}case ge.prefix:{let t=e??ge;return[ge.prefix,t.decode(r)]}case pt.prefix:{let t=e??pt;return[pt.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function y6(r,e,t){let{prefix:n}=t;if(n!==ge.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 b6(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 hn=112,w6=18;function Y2(r,e,t){let n=Ar(r),s=n+Ar(e),i=new Uint8Array(s+t.byteLength);return Er(r,i,0),Er(e,i,n),i.set(t,s),i}var v6=Symbol.for("@ipld/js-cid/CID");var Ot={...Bi,...yi,...Ai,...gi,...mi,...wi,...vi,...xi,...Ei,...bi},u9={...Ni,...Si};function Z2(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var W2=Z2("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),Ti=Z2("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=be(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),x6={utf8:W2,"utf-8":W2,hex:Ot.base16,latin1:Ti,ascii:Ti,binary:Ti,...Ot},zn=x6;function z(r,e="utf8"){let t=zn[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function Li(r){let e=r??8192,t=e>>>1,n,s=e;return function(o){if(o<1||o>t)return be(o);s+o>e&&(n=be(e),s=0);let a=n.subarray(s,s+=o);return s&7&&(s=(s|7)+1),a}}var ir=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function Pi(){}var Di=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},E6=Li();function A6(r){return globalThis.Buffer!=null?be(r):E6(r)}var pn=class{len;head;tail;states;constructor(){this.len=0,this.head=new ir(Pi,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new ir(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new Ui((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(Gn,10,Oe.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=Oe.fromBigInt(e);return this._push(Gn,t.length(),t)}uint64Number(e){return this._push(si,he(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=Oe.fromBigInt(e).zzEncode();return this._push(Gn,t.length(),t)}sint64Number(e){let t=Oe.fromNumber(e).zzEncode();return this._push(Gn,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(Ci,1,e?1:0)}fixed32(e){return this._push(dn,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=Oe.fromBigInt(e);return this._push(dn,4,t.lo)._push(dn,4,t.hi)}fixed64Number(e){let t=Oe.fromNumber(e);return this._push(dn,4,t.lo)._push(dn,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(A2,4,e)}double(e){return this._push(I2,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(Ci,1,0):this.uint32(t)._push(I6,t,e)}string(e){let t=k2(e);return t!==0?this.uint32(t)._push(ci,t,e):this._push(Ci,1,0)}fork(){return this.states=new Di(this),this.head=this.tail=new ir(Pi,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 ir(Pi,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=A6(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function Ci(r,e,t){e[t]=r&255}function B6(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var Ui=class extends ir{next;constructor(e,t){super(B6,e,t),this.next=void 0}};function Gn(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 dn(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 I6(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(pn.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(S6,e,r),this},pn.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(R6,e,r),this});function S6(r,e,t){e.set(r,t)}function R6(r,e,t){r.length<40?ci(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(z(r),t)}function Oi(){return new pn}function st(r,e){let t=Oi();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var Ir;(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"})(Ir||(Ir={}));function jn(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function Sr(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 jn("enum",Ir.VARINT,t,n)}function it(r,e){return jn("message",Ir.LENGTH_DELIMITED,r,e)}var gn=class extends Error{code;constructor(e,t,n){super(e,n),this.code=t}};var mn;(function(r){let e;r.codec=()=>(e==null&&(e=it((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.key!=null&&t.key.byteLength>0&&(n.uint32(10),n.bytes(t.key)),t.value!=null&&t.value.byteLength>0&&(n.uint32(18),n.bytes(t.value)),t.timeReceived!=null&&t.timeReceived!==""&&(n.uint32(42),n.string(t.timeReceived)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={key:Pe(0),value:Pe(0),timeReceived:""},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.key=t.bytes();break}case 2:{i.value=t.bytes();break}case 5:{i.timeReceived=t.string();break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>st(t,r.codec()),r.decode=(t,n)=>rt(t,r.codec(),n)})(mn||(mn={}));function Q2(r){let e=r.getUTCFullYear(),t=String(r.getUTCMonth()+1).padStart(2,"0"),n=String(r.getUTCDate()).padStart(2,"0"),s=String(r.getUTCHours()).padStart(2,"0"),i=String(r.getUTCMinutes()).padStart(2,"0"),o=String(r.getUTCSeconds()).padStart(2,"0"),a=r.getUTCMilliseconds(),c=String(a*1e3*1e3).padStart(9,"0");return`${e}-${t}-${n}T${s}:${i}:${o}.${c}Z`}function X2(r){let e=new RegExp("(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})\\.(\\d+)Z"),t=String(r).trim().match(e);if(t==null)throw new Error("Invalid format");let n=parseInt(t[1],10),s=parseInt(t[2],10)-1,i=parseInt(t[3],10),o=parseInt(t[4],10),a=parseInt(t[5],10),c=parseInt(t[6],10),l=parseInt(t[7].slice(0,-6),10);return new Date(Date.UTC(n,s,i,o,a,c,l))}var me=class r{key;value;timeReceived;constructor(e,t,n){if(!(e instanceof Uint8Array))throw new Error("key must be a Uint8Array");if(!(t instanceof Uint8Array))throw new Error("value must be a Uint8Array");this.key=e,this.value=t,this.timeReceived=n}serialize(){return mn.encode(this.prepareSerialize())}prepareSerialize(){return{key:this.key,value:this.value,timeReceived:Q2(this.timeReceived)}}static deserialize(e){let t=mn.decode(e);return new r(t.key,t.value,new Date(t.timeReceived))}static fromDeserialized(e){let t=X2(e.timeReceived);if(e.key==null)throw new Error("key missing from deserialized object");if(e.value==null)throw new Error("value missing from deserialized object");return new r(e.key,e.value,t)}};function N6(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 J2=N6;function _6(r){return r[Symbol.asyncIterator]!=null}function T6(r,e){let t=0;if(_6(r))return async function*(){for await(let c of r)yield e(c,t++)}();let n=J2(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 await(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 Yn=T6;var Wn=globalThis.CustomEvent??Event;async function*yn(r,e={}){let t=e.concurrency??1/0;t<1&&(t=1/0);let n=e.ordered==null?!1:e.ordered,s=new EventTarget,i=[],o=fe(),a=fe(),c=!1,l,f=!1;s.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let p of r){if(i.length===t&&(o=fe(),await o.promise),f)break;let d={done:!1};i.push(d),p().then(g=>{d.done=!0,d.ok=!0,d.value=g,s.dispatchEvent(new Wn("task-complete"))},g=>{d.done=!0,d.err=g,s.dispatchEvent(new Wn("task-complete"))})}c=!0,s.dispatchEvent(new Wn("task-complete"))}catch(p){l=p,s.dispatchEvent(new Wn("task-complete"))}});function u(){return n?i[0]?.done:!!i.find(p=>p.done)}function*h(){for(;i.length>0&&i[0].done;){let p=i[0];if(i.shift(),p.ok)yield p.value;else throw f=!0,o.resolve(),p.err;o.resolve()}}function*m(){for(;u();)for(let p=0;p<i.length;p++)if(i[p].done){let d=i[p];if(i.splice(p,1),p--,d.ok)yield d.value;else throw f=!0,o.resolve(),d.err;o.resolve()}}for(;;){if(u()||(a=fe(),await a.promise),l!=null)throw l;if(n?yield*h():yield*m(),c&&i.length===0)break}}var Zn=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||e-1&e)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},Rr=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new Zn(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 Zn(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 Vi=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function Vt(r={}){return L6(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 L6(r,e){e=e??{};let t=e.onEnd,n=new Rr,s,i,o,a=fe(),c=async()=>{try{return n.isEmpty()?o?{done:!0}:await new Promise((g,y)=>{i=v=>{i=null,n.push(v);try{g(r(n))}catch(b){y(b)}return s}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=fe()})}},l=g=>i!=null?i(g):(n.push(g),s),f=g=>(n=new Rr,i!=null?i({error:g}):(n.push({error:g}),s)),u=g=>{if(o)return s;if(e?.objectMode!==!0&&g?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:g})},h=g=>o?s:(o=!0,g!=null?f(g):l({done:!0})),m=()=>(n=new Rr,h(),{done:!0}),p=g=>(h(g),{done:!0});if(s={[Symbol.asyncIterator](){return this},next:c,return:m,throw:p,push:u,end:h,get readableLength(){return n.size},onEmpty:async g=>{let y=g?.signal;if(y?.throwIfAborted(),n.isEmpty())return;let v,b;y!=null&&(v=new Promise((S,E)=>{b=()=>{E(new Vi)},y.addEventListener("abort",b)}));try{await Promise.race([a.promise,v])}finally{b!=null&&y!=null&&y?.removeEventListener("abort",b)}}},t==null)return s;let d=s;return s={[Symbol.asyncIterator](){return this},next(){return d.next()},throw(g){return d.throw(g),t!=null&&(t(g),t=void 0),{done:!0}},return(){return d.return(),t!=null&&(t(),t=void 0),{done:!0}},push:u,end(g){return d.end(g),t!=null&&(t(g),t=void 0),s},get readableLength(){return d.readableLength},onEmpty:g=>d.onEmpty(g)},s}function P6(r){return r[Symbol.asyncIterator]!=null}function C6(...r){let e=[];for(let t of r)P6(t)||e.push(t);return e.length===r.length?function*(){for(let t of e)yield*t}():async function*(){let t=Vt({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(r.map(async n=>{for await(let s of n)t.push(s)})),t.end()}catch(n){t.end(n)}}),yield*t}()}var Qn=C6;function Ft(r,...e){if(r==null)throw new Error("Empty pipeline");if(Fi(r)){let n=r;r=()=>n.source}else if(t0(r)||e0(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&Fi(t[t.length-1])&&(t[t.length-1]=t[t.length-1].sink),t.length>2)for(let n=1;n<t.length-1;n++)Fi(t[n])&&(t[n]=U6(t[n]));return D6(...t)}var D6=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},e0=r=>r?.[Symbol.asyncIterator]!=null,t0=r=>r?.[Symbol.iterator]!=null,Fi=r=>r==null?!1:r.sink!=null&&r.source!=null,U6=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=Vt({objectMode:!0});t.then(()=>{n.end()},o=>{n.end(o)});let s,i=r.source;if(e0(i))s=async function*(){yield*i,n.end()};else if(t0(i))s=function*(){yield*i,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return Qn(n,s())}return r.source};function Q(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}var r0;(function(r){let e;r.codec=()=>(e==null&&(e=it((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.key!=null&&(n.uint32(10),n.bytes(t.key)),t.value!=null&&(n.uint32(18),n.bytes(t.value)),t.author!=null&&(n.uint32(26),n.bytes(t.author)),t.signature!=null&&(n.uint32(34),n.bytes(t.signature)),t.timeReceived!=null&&(n.uint32(42),n.string(t.timeReceived)),s.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let s={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let o=t.uint32();switch(o>>>3){case 1:{s.key=t.bytes();break}case 2:{s.value=t.bytes();break}case 3:{s.author=t.bytes();break}case 4:{s.signature=t.bytes();break}case 5:{s.timeReceived=t.string();break}default:{t.skipType(o&7);break}}}return s})),e),r.encode=t=>st(t,r.codec()),r.decode=t=>rt(t,r.codec())})(r0||(r0={}));var M;(function(r){r.PUT_VALUE="PUT_VALUE",r.GET_VALUE="GET_VALUE",r.ADD_PROVIDER="ADD_PROVIDER",r.GET_PROVIDERS="GET_PROVIDERS",r.FIND_NODE="FIND_NODE",r.PING="PING"})(M||(M={}));var Xn;(function(r){r[r.PUT_VALUE=0]="PUT_VALUE",r[r.GET_VALUE=1]="GET_VALUE",r[r.ADD_PROVIDER=2]="ADD_PROVIDER",r[r.GET_PROVIDERS=3]="GET_PROVIDERS",r[r.FIND_NODE=4]="FIND_NODE",r[r.PING=5]="PING"})(Xn||(Xn={}));(function(r){r.codec=()=>Sr(Xn)})(M||(M={}));var Nr;(function(r){r.NOT_CONNECTED="NOT_CONNECTED",r.CONNECTED="CONNECTED",r.CAN_CONNECT="CAN_CONNECT",r.CANNOT_CONNECT="CANNOT_CONNECT"})(Nr||(Nr={}));var Mi;(function(r){r[r.NOT_CONNECTED=0]="NOT_CONNECTED",r[r.CONNECTED=1]="CONNECTED",r[r.CAN_CONNECT=2]="CAN_CONNECT",r[r.CANNOT_CONNECT=3]="CANNOT_CONNECT"})(Mi||(Mi={}));(function(r){r.codec=()=>Sr(Mi)})(Nr||(Nr={}));var kr;(function(r){let e;r.codec=()=>(e==null&&(e=it((t,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.multiaddrs!=null)for(let i of t.multiaddrs)n.uint32(18),n.bytes(i);t.connection!=null&&(n.uint32(24),Nr.codec().encode(t.connection,n)),s.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let s={id:Pe(0),multiaddrs:[]},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let o=t.uint32();switch(o>>>3){case 1:{s.id=t.bytes();break}case 2:{s.multiaddrs.push(t.bytes());break}case 3:{s.connection=Nr.codec().decode(t);break}default:{t.skipType(o&7);break}}}return s})),e),r.encode=t=>st(t,r.codec()),r.decode=t=>rt(t,r.codec())})(kr||(kr={}));var qe;(function(r){let e;r.codec=()=>(e==null&&(e=it((t,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),t.type!=null&&Xn[t.type]!==0&&(n.uint32(8),M.codec().encode(t.type,n)),t.clusterLevel!=null&&(n.uint32(80),n.int32(t.clusterLevel)),t.key!=null&&(n.uint32(18),n.bytes(t.key)),t.record!=null&&(n.uint32(26),n.bytes(t.record)),t.closer!=null)for(let i of t.closer)n.uint32(66),kr.codec().encode(i,n);if(t.providers!=null)for(let i of t.providers)n.uint32(74),kr.codec().encode(i,n);s.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let s={type:M.PUT_VALUE,closer:[],providers:[]},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let o=t.uint32();switch(o>>>3){case 1:{s.type=M.codec().decode(t);break}case 10:{s.clusterLevel=t.int32();break}case 2:{s.key=t.bytes();break}case 3:{s.record=t.bytes();break}case 8:{s.closer.push(kr.codec().decode(t,t.uint32()));break}case 9:{s.providers.push(kr.codec().decode(t,t.uint32()));break}default:{t.skipType(o&7);break}}}return s})),e),r.encode=t=>st(t,r.codec()),r.decode=t=>rt(t,r.codec())})(qe||(qe={}));function Hi(r,e={}){let t={...r,name:"SEND_QUERY",type:0,messageName:r.type,messageType:r.type};return e.onProgress?.(new Ne("kad-dht:query:send-query",{detail:t})),t}function bn(r,e={}){let t={...r,name:"PEER_RESPONSE",type:1,messageName:r.messageType,closer:r.closer!=null?r.closer:[],providers:r.providers!=null?r.providers:[]};return e.onProgress?.(new Ne("kad-dht:query:peer-response",{detail:t})),t}function Jn(r,e={}){let t={...r,name:"FINAL_PEER",type:2};return e.onProgress?.(new Ne("kad-dht:query:final-peer",{detail:t})),t}function Ve(r,e={}){let t={...r,name:"QUERY_ERROR",type:3};return e.onProgress?.(new Ne("kad-dht:query:query-error",{detail:t})),t}function Ki(r,e={}){let t={...r,name:"PROVIDER",type:4};return e.onProgress?.(new Ne("kad-dht:query:provider",{detail:t})),t}function wn(r,e={}){let t={...r,name:"VALUE",type:5};return e.onProgress?.(new Ne("kad-dht:query:value",{detail:t})),t}function qi(r,e={}){let t={...r,name:"DIAL_PEER",type:7};return e.onProgress?.(new Ne("kad-dht:query:dial-peer",{detail:t})),t}function P(r,e="utf8"){let t=zn[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}function n0(r,e,t){if(t.length===0){let o="No records given";throw new x(o,"ERR_NO_RECORDS_RECEIVED")}let s=P(e).split("/");if(s.length<3){let o="Record key does not have a selector function";throw new x(o,"ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY")}let i=r[s[1].toString()];if(i==null){let o=`No selector function configured for key type "${s[1]}"`;throw new x(o,"ERR_UNRECOGNIZED_KEY_PREFIX")}return t.length===1?0:i(e,t)}function O6(r,e){return 0}var s0={pk:O6};async function _r(r,e){let t=e.key,s=P(t).split("/");if(s.length<3)return;let i=r[s[1].toString()];if(i==null){let o=`No validator available for key type "${s[1]}"`;throw new x(o,"ERR_INVALID_RECORD_KEY_TYPE")}await i(t,e.value)}var V6=async(r,e)=>{if(!(r instanceof Uint8Array))throw new x('"key" must be a Uint8Array',"ERR_INVALID_RECORD_KEY_NOT_BUFFER");if(r.byteLength<5)throw new x("invalid public key record","ERR_INVALID_RECORD_KEY_TOO_SHORT");if(P(r.subarray(0,4))!=="/pk/")throw new x("key was not prefixed with /pk/","ERR_INVALID_RECORD_KEY_BAD_PREFIX");let n=r.slice(4),s=await ne.digest(e);if(!Q(n,s.bytes))throw new x("public key does not match passed in key","ERR_INVALID_RECORD_HASH_MISMATCH")},i0={pk:V6};var F6=Symbol.for("nodejs.util.inspect.custom"),o0=Object.values(Ot).map(r=>r.decoder).reduce((r,e)=>r.or(e),Ot.identity.decoder),a0=114,$i=36,zi=37,vn=class{type;multihash;privateKey;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,this.privateKey=e.privateKey,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[m2]=!0;toString(){return this.string==null&&(this.string=ge.encode(this.multihash.bytes).slice(1)),this.string}toCID(){return _e.createV1(a0,this.multihash)}toBytes(){return this.multihash.bytes}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return Q(this.multihash.bytes,e);if(typeof e=="string")return or(e).equals(this);if(e?.multihash?.bytes!=null)return Q(this.multihash.bytes,e.multihash.bytes);throw new Error("not valid Id")}[F6](){return`PeerId(${this.toString()})`}},Tr=class extends vn{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},Lr=class extends vn{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.multihash.digest}},Pr=class extends vn{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.multihash.digest}};function or(r,e){if(e=e??o0,r.charAt(0)==="1"||r.charAt(0)==="Q"){let t=nr(ge.decode(`z${r}`));return r.startsWith("12D")?new Lr({multihash:t}):r.startsWith("16U")?new Pr({multihash:t}):new Tr({multihash:t})}return gt(o0.decode(r))}function gt(r){try{let e=nr(r);if(e.code===Ut.code){if(e.digest.length===$i)return new Lr({multihash:e});if(e.digest.length===zi)return new Pr({multihash:e})}if(e.code===ne.code)return new Tr({multihash:e})}catch{return M6(_e.decode(r))}throw new Error("Supplied PeerID CID is invalid")}function M6(r){if(r==null||r.multihash==null||r.version==null||r.version===1&&r.code!==a0)throw new Error("Supplied PeerID CID is invalid");let e=r.multihash;if(e.code===ne.code)return new Tr({multihash:r.multihash});if(e.code===Ut.code){if(e.digest.length===$i)return new Lr({multihash:r.multihash});if(e.digest.length===zi)return new Pr({multihash:r.multihash})}throw new Error("Supplied PeerID CID is invalid")}async function c0(r,e){return r.length===$i?new Lr({multihash:nt(Ut.code,r),privateKey:e}):r.length===zi?new Pr({multihash:nt(Ut.code,r),privateKey:e}):new Tr({multihash:await ne.digest(r),publicKey:r,privateKey:e})}var e1=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let t=this.index,n=e();return n===void 0&&(this.index=t),n}parseWith(e){let t=e();if(this.index===this.input.length)return t}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let t=this.readChar();if(t===e)return t})}readSeparator(e,t,n){return this.readAtomically(()=>{if(!(t>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,t,n,s){return this.readAtomically(()=>{let i=0,o=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",l=2**(8*s)-1;for(;;){let f=this.readAtomically(()=>{let u=this.readChar();if(u===void 0)return;let h=Number.parseInt(u,e);if(!Number.isNaN(h))return h});if(f===void 0)break;if(i*=e,i+=f,i>l||(o+=1,t!==void 0&&o>t))return}if(o!==0)return!n&&c&&o>1?void 0:i})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let t=0;t<e.length;t++){let n=this.readSeparator(".",t,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[t]=n}return e})}readIPv6Addr(){let e=t=>{for(let n=0;n<t.length/2;n++){let s=n*2;if(n<t.length-3){let o=this.readSeparator(":",n,()=>this.readIPv4Addr());if(o!==void 0)return t[s]=o[0],t[s+1]=o[1],t[s+2]=o[2],t[s+3]=o[3],[s+4,!0]}let i=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(i===void 0)return[s,!1];t[s]=i>>8,t[s+1]=i&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,s]=e(t);if(n===16)return t;if(s||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let i=new Uint8Array(14),o=16-(n+2),[a]=e(i.subarray(0,o));return t.set(i.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var l0=45,H6=15,Cr=new e1;function Gi(r){if(!(r.length>H6))return Cr.new(r).parseWith(()=>Cr.readIPv4Addr())}function ji(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>l0))return Cr.new(r).parseWith(()=>Cr.readIPv6Addr())}function t1(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>l0))return Cr.new(r).parseWith(()=>Cr.readIPAddr())}function r1(r){return!!Gi(r)}function n1(r){return!!ji(r)}function s1(r){return!!t1(r)}var f0=cn(u0(),1),K6=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.0.0/29","192.0.0.8/32","192.0.0.9/32","192.0.0.10/32","192.0.0.170/32","192.0.0.171/32","192.0.2.0/24","192.31.196.0/24","192.52.193.0/24","192.88.99.0/24","192.168.0.0/16","192.175.48.0/24","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","240.0.0.0/4","255.255.255.255/32"],q6=K6.map(r=>new f0.Netmask(r));function $6(r){for(let e of q6)if(e.contains(r))return!0;return!1}function z6(r){return/^::$/.test(r)||/^::1$/.test(r)||/^::f{4}:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^::f{4}:0.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^64:ff9b::([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^100::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:2[0-9a-fA-F]:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:db8:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2002:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^f[c-d]([0-9a-fA-F]{2,2}):/i.test(r)||/^fe[8-9a-bA-B][0-9a-fA-F]:/i.test(r)||/^ff([0-9a-fA-F]{2,2}):/i.test(r)}function i1(r){return r1(r)?$6(r):n1(r)?z6(r):void 0}var mt="/",h0=new TextEncoder().encode(mt),o1=h0[0],Dr=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=z(e);else if(e instanceof Uint8Array)this._buf=e;else throw new Error("Invalid key, should be String of Uint8Array");if(t==null&&(t=!0),t&&this.clean(),this._buf.byteLength===0||this._buf[0]!==o1)throw new Error("Invalid key")}toString(e="utf8"){return P(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(mt))}static random(){return new r(Math.random().toString().substring(2))}static asKey(e){return e instanceof Uint8Array||typeof e=="string"?new r(e):typeof e.uint8Array=="function"?new r(e.uint8Array()):null}clean(){if((this._buf==null||this._buf.byteLength===0)&&(this._buf=h0),this._buf[0]!==o1){let e=new Uint8Array(this._buf.byteLength+1);e.fill(o1,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===o1;)this._buf=this._buf.subarray(0,-1)}less(e){let t=this.list(),n=e.list();for(let s=0;s<t.length;s++){if(n.length<s+1)return!1;let i=t[s],o=n[s];if(i<o)return!0;if(i>o)return!1}return t.length<n.length}reverse(){return r.withNamespaces(this.list().slice().reverse())}namespaces(){return this.list()}baseNamespace(){let e=this.namespaces();return e[e.length-1]}list(){return this.toString().split(mt).slice(1)}type(){return G6(this.baseNamespace())}name(){return j6(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(mt)||(e+=mt),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(mt):new r(e.slice(0,-1).join(mt))}child(e){return this.toString()===mt?e:e.toString()===mt?this:new r(this.toString()+e.toString(),!1)}isAncestorOf(e){return e.toString()===this.toString()?!1:e.toString().startsWith(this.toString())}isDecendantOf(e){return e.toString()===this.toString()?!1:this.toString().startsWith(e.toString())}isTopLevel(){return this.list().length===1}concat(...e){return r.withNamespaces([...this.namespaces(),...Y6(e.map(t=>t.namespaces()))])}};function G6(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function j6(r){let e=r.split(":");return e[e.length-1]}function Y6(r){return[].concat(...r)}function J(r,e){e==null&&(e=r.reduce((s,i)=>s+i.length,0));let t=be(e),n=0;for(let s of r)t.set(s,n),n+=s.length;return t}var Z6=z("/pk/");function a1(r){return{...r,multiaddrs:r.multiaddrs.filter(e=>{let[[t,n]]=e.stringTuples();if(t===53||t===54||t===55)return n!=="localhost";if(t!==4&&t!==6||n==null)return!1;let s=i1(n);return s==null?!0:!s})}}function d0(r){return{...r,multiaddrs:r.multiaddrs.filter(e=>{let[[t,n]]=e.stringTuples();if(n==="localhost")return!0;if(t!==4&&t!==6||n==null)return!1;let s=i1(n);return s??!1})}}function p0(r){return r}async function Mt(r){return(await ne.digest(r)).digest}async function Ye(r){return Mt(r.toBytes())}function Ht(r){return new Dr(`${E2}/${P(r,"base32")}`,!1)}function g0(r){return J([Z6,r.toBytes()])}function m0(r){return P(r.subarray(0,4))==="/pk/"}function y0(r){return gt(r.subarray(4))}function Yi(r,e){let t=new Date;return new me(r,e,t).serialize()}function b0(r,e=100){let t;return()=>{clearTimeout(t),t=setTimeout(()=>{r()},e)}}var Q6=290,X6=54,J6=55,e8=56,t8=4,r8=41;function w0(r){let e=r.stringTuples();for(let t of e)if(t[0]===Q6)return!1;if(e[0][0]===X6||e[0][0]===J6||e[0][0]===e8)return!0;if(e[0][0]===t8||e[0][0]===r8){let t=i1(`${e[0][1]}`);return t==null||!t}return!1}var c1=class{log;components;validators;selectors;peerRouting;queryManager;network;constructor(e,t){let{validators:n,selectors:s,peerRouting:i,queryManager:o,network:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-fetching`),this.validators=n,this.selectors=s,this.peerRouting=i,this.queryManager=o,this.network=a}async getLocal(e){this.log("getLocal %b",e);let t=Ht(e);this.log("fetching record for key %k",t);let n=await this.components.datastore.get(t);this.log("found %k in local datastore",t);let s=me.deserialize(n);return await _r(this.validators,s),s}async*sendCorrectionRecord(e,t,n,s={}){this.log("sendCorrection for %b",e);let i=Yi(e,n);for(let{value:o,from:a}of t){if(Q(o,n)){this.log("record was ok");continue}if(this.components.peerId.equals(a)){try{let f=Ht(e);this.log(`Storing corrected record for key ${f.toString()}`),await this.components.datastore.put(f,i.subarray())}catch(f){this.log.error("Failed error correcting self",f)}continue}let c=!1,l={type:M.PUT_VALUE,key:e,record:i};for await(let f of this.network.sendRequest(a,l,s))f.name==="PEER_RESPONSE"&&f.record!=null&&Q(f.record.value,me.deserialize(i).value)&&(c=!0),yield f;c||(yield Ve({from:a,error:new x("value not put correctly","ERR_PUT_VALUE_INVALID")},s)),this.log.error("Failed error correcting entry")}}async*put(e,t,n={}){this.log("put key %b value %b",e,t);let s=Yi(e,t),i=Ht(e);this.log(`storing record for key ${i.toString()}`),await this.components.datastore.put(i,s.subarray()),yield*Ft(this.peerRouting.getClosestPeers(e,{signal:n.signal}),o=>Yn(o,a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[],l={type:M.PUT_VALUE,key:e,record:s};this.log("send put to %p",a.peer.id);for await(let f of this.network.sendRequest(a.peer.id,l,n))c.push(f),f.name==="PEER_RESPONSE"&&(f.record!=null&&Q(f.record.value,me.deserialize(s).value)||c.push(Ve({from:a.peer.id,error:new x("value not put correctly","ERR_PUT_VALUE_INVALID")},n)));return c}),o=>yn(o,{ordered:!1,concurrency:3}),async function*(o){for await(let a of o)yield*a})}async*get(e,t={}){this.log("get %b",e);let n=[];for await(let a of this.getMany(e,t))a.name==="VALUE"&&n.push(a),yield a;if(n.length===0)return;let s=n.map(a=>a.value),i=0;try{i=n0(this.selectors,e,s)}catch(a){if(a.code!=="ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY")throw a}let o=s[i];if(this.log("GetValue %b %b",e,o),o==null)throw new x("best value was not found","ERR_NOT_FOUND");yield*this.sendCorrectionRecord(e,n,o,t),yield n[i]}async*getMany(e,t={}){this.log("getMany values for %b",e);try{let i=await this.getLocal(e);yield wn({value:i.value,from:this.components.peerId},t)}catch(i){this.log("error getting local value for %b",e,i)}let n=this,s=async function*({peer:i,signal:o}){for await(let a of n.peerRouting.getValueOrPeers(i,e,{signal:o}))yield a,a.name==="PEER_RESPONSE"&&a.record!=null&&(yield wn({from:i,value:a.record.value},t))};yield*this.queryManager.run(e,s,t)}};function Qi(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 ot=class r{set;constructor(e){if(this.set=new Set,e!=null)for(let t of e)this.set.add(t.toString())}get size(){return this.set.size}[Symbol.iterator](){return this.values()}add(e){this.set.add(e.toString())}clear(){this.set.clear()}delete(e){this.set.delete(e.toString())}entries(){return Qi(this.set.entries(),e=>{let t=or(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let n=or(t);e(n,n,this)})}has(e){return this.set.has(e.toString())}values(){return Qi(this.set.values(),e=>or(e))}intersection(e){let t=new r;for(let n of e)this.has(n)&&t.add(n);return t}difference(e){let t=new r;for(let n of this)e.has(n)||t.add(n);return t}union(e){let t=new r;for(let n of e)t.add(n);for(let n of this)t.add(n);return t}};var ee={get(r=globalThis){let e=r.crypto;if(e==null||e.subtle==null)throw Object.assign(new Error("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api"),{code:"ERR_MISSING_WEB_CRYPTO"});return e}};var v0={SHA1:20,SHA256:32,SHA512:64};var n8={SHA1:"SHA-1",SHA256:"SHA-256",SHA512:"SHA-512"},s8=async(r,e)=>{let t=await ee.get().subtle.sign({name:"HMAC"},r,e);return new Uint8Array(t,0,t.byteLength)};async function x0(r,e){let t=n8[r],n=await ee.get().subtle.importKey("raw",e,{name:"HMAC",hash:{name:t}},!1,["sign"]);return{async digest(s){return s8(n,s)},length:v0[r]}}var ds={};ue(ds,{Ed25519PrivateKey:()=>At,Ed25519PublicKey:()=>ur,MAX_RSA_KEY_SIZE:()=>dr,RsaPrivateKey:()=>Xt,RsaPublicKey:()=>hr,Secp256k1PrivateKey:()=>mr,Secp256k1PublicKey:()=>gr,generateEphemeralKeyPair:()=>X0,generateKeyPair:()=>s7,generateKeyPairFromSeed:()=>i7,importKey:()=>l7,keyStretcher:()=>t3,keysPBM:()=>Yr,marshalPrivateKey:()=>c7,marshalPublicKey:()=>a7,supportedKeys:()=>Tt,unmarshalPrivateKey:()=>a4,unmarshalPublicKey:()=>o7});var yo={};ue(yo,{Ed25519PrivateKey:()=>At,Ed25519PublicKey:()=>ur,generateKeyPair:()=>pa,generateKeyPairFromSeed:()=>mo,unmarshalEd25519PrivateKey:()=>ha,unmarshalEd25519PublicKey:()=>da});function Xi(r,e){let t=z(r,"base64urlpad");if(e!=null){if(t.length>e)throw new Error("byte array longer than desired length");t=J([new Uint8Array(e-t.length),t])}return t}function $e(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function Ur(r){if(!Number.isSafeInteger(r)||r<0)throw new Error(`positive integer expected, not ${r}`)}function o8(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Or(r,...e){if(!o8(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function l1(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");Ur(r.outputLen),Ur(r.blockLen)}function Vr(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function E0(r,e){Or(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var u1=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;var Mr=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),We=(r,e)=>r<<32-e|r>>>e;var Su=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;var a8=async()=>{};async function A0(r,e,t){let n=Date.now();for(let s=0;s<r;s++){t(s);let i=Date.now()-n;i>=0&&i<e||(await a8(),n+=i)}}function Ji(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Kt(r){return typeof r=="string"&&(r=Ji(r)),Or(r),r}function f1(...r){let e=0;for(let n=0;n<r.length;n++){let s=r[n];Or(s),e+=s.length}let t=new Uint8Array(e);for(let n=0,s=0;n<r.length;n++){let i=r[n];t.set(i,s),s+=i.length}return t}var Fr=class{clone(){return this._cloneInto()}},c8={}.toString;function B0(r,e){if(e!==void 0&&c8.call(e)!=="[object Object]")throw new Error("Options should be object or undefined");return Object.assign(r,e)}function h1(r){let e=n=>r().update(Kt(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function Hr(r=32){if(u1&&typeof u1.getRandomValues=="function")return u1.getRandomValues(new Uint8Array(r));throw new Error("crypto.getRandomValues must be defined")}function l8(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let s=BigInt(32),i=BigInt(4294967295),o=Number(t>>s&i),a=Number(t&i),c=n?4:0,l=n?0:4;r.setUint32(e+c,o,n),r.setUint32(e+l,a,n)}var I0=(r,e,t)=>r&e^~r&t,S0=(r,e,t)=>r&e^r&t^e&t,Kr=class extends Fr{constructor(e,t,n,s){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=s,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Mr(this.buffer)}update(e){Vr(this);let{view:t,buffer:n,blockLen:s}=this;e=Kt(e);let i=e.length;for(let o=0;o<i;){let a=Math.min(s-this.pos,i-o);if(a===s){let c=Mr(e);for(;s<=i-o;o+=s)this.process(c,o);continue}n.set(e.subarray(o,o+a),this.pos),this.pos+=a,o+=a,this.pos===s&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Vr(this),E0(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:s,isLE:i}=this,{pos:o}=this;t[o++]=128,this.buffer.subarray(o).fill(0),this.padOffset>s-o&&(this.process(n,0),o=0);for(let u=o;u<s;u++)t[u]=0;l8(n,s-8,BigInt(this.length*8),i),this.process(n,0);let a=Mr(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let l=c/4,f=this.get();if(l>f.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<l;u++)a.setUint32(4*u,f[u],i)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:s,finished:i,destroyed:o,pos:a}=this;return e.length=s,e.pos=a,e.finished=i,e.destroyed=o,s%t&&e.buffer.set(n),e}};var d1=BigInt(4294967295),eo=BigInt(32);function R0(r,e=!1){return e?{h:Number(r&d1),l:Number(r>>eo&d1)}:{h:Number(r>>eo&d1)|0,l:Number(r&d1)|0}}function u8(r,e=!1){let t=new Uint32Array(r.length),n=new Uint32Array(r.length);for(let s=0;s<r.length;s++){let{h:i,l:o}=R0(r[s],e);[t[s],n[s]]=[i,o]}return[t,n]}var f8=(r,e)=>BigInt(r>>>0)<<eo|BigInt(e>>>0),h8=(r,e,t)=>r>>>t,d8=(r,e,t)=>r<<32-t|e>>>t,p8=(r,e,t)=>r>>>t|e<<32-t,g8=(r,e,t)=>r<<32-t|e>>>t,m8=(r,e,t)=>r<<64-t|e>>>t-32,y8=(r,e,t)=>r>>>t-32|e<<64-t,b8=(r,e)=>e,w8=(r,e)=>r,v8=(r,e,t)=>r<<t|e>>>32-t,x8=(r,e,t)=>e<<t|r>>>32-t,E8=(r,e,t)=>e<<t-32|r>>>64-t,A8=(r,e,t)=>r<<t-32|e>>>64-t;function B8(r,e,t,n){let s=(e>>>0)+(n>>>0);return{h:r+t+(s/2**32|0)|0,l:s|0}}var I8=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),S8=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,R8=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),k8=(r,e,t,n,s)=>e+t+n+s+(r/2**32|0)|0,N8=(r,e,t,n,s)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(s>>>0),_8=(r,e,t,n,s,i)=>e+t+n+s+i+(r/2**32|0)|0;var T8={fromBig:R0,split:u8,toBig:f8,shrSH:h8,shrSL:d8,rotrSH:p8,rotrSL:g8,rotrBH:m8,rotrBL:y8,rotr32H:b8,rotr32L:w8,rotlSH:v8,rotlSL:x8,rotlBH:E8,rotlBL:A8,add:B8,add3L:I8,add3H:S8,add4L:R8,add4H:k8,add5H:_8,add5L:N8},D=T8;var[L8,P8]=D.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(r=>BigInt(r))),qt=new Uint32Array(80),$t=new Uint32Array(80),to=class extends Kr{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){let{Ah:e,Al:t,Bh:n,Bl:s,Ch:i,Cl:o,Dh:a,Dl:c,Eh:l,El:f,Fh:u,Fl:h,Gh:m,Gl:p,Hh:d,Hl:g}=this;return[e,t,n,s,i,o,a,c,l,f,u,h,m,p,d,g]}set(e,t,n,s,i,o,a,c,l,f,u,h,m,p,d,g){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=s|0,this.Ch=i|0,this.Cl=o|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=f|0,this.Fh=u|0,this.Fl=h|0,this.Gh=m|0,this.Gl=p|0,this.Hh=d|0,this.Hl=g|0}process(e,t){for(let b=0;b<16;b++,t+=4)qt[b]=e.getUint32(t),$t[b]=e.getUint32(t+=4);for(let b=16;b<80;b++){let S=qt[b-15]|0,E=$t[b-15]|0,I=D.rotrSH(S,E,1)^D.rotrSH(S,E,8)^D.shrSH(S,E,7),N=D.rotrSL(S,E,1)^D.rotrSL(S,E,8)^D.shrSL(S,E,7),T=qt[b-2]|0,j=$t[b-2]|0,q=D.rotrSH(T,j,19)^D.rotrBH(T,j,61)^D.shrSH(T,j,6),U=D.rotrSL(T,j,19)^D.rotrBL(T,j,61)^D.shrSL(T,j,6),ce=D.add4L(N,U,$t[b-7],$t[b-16]),ae=D.add4H(ce,I,q,qt[b-7],qt[b-16]);qt[b]=ae|0,$t[b]=ce|0}let{Ah:n,Al:s,Bh:i,Bl:o,Ch:a,Cl:c,Dh:l,Dl:f,Eh:u,El:h,Fh:m,Fl:p,Gh:d,Gl:g,Hh:y,Hl:v}=this;for(let b=0;b<80;b++){let S=D.rotrSH(u,h,14)^D.rotrSH(u,h,18)^D.rotrBH(u,h,41),E=D.rotrSL(u,h,14)^D.rotrSL(u,h,18)^D.rotrBL(u,h,41),I=u&m^~u&d,N=h&p^~h&g,T=D.add5L(v,E,N,P8[b],$t[b]),j=D.add5H(T,y,S,I,L8[b],qt[b]),q=T|0,U=D.rotrSH(n,s,28)^D.rotrBH(n,s,34)^D.rotrBH(n,s,39),ce=D.rotrSL(n,s,28)^D.rotrBL(n,s,34)^D.rotrBL(n,s,39),ae=n&i^n&a^i&a,He=s&o^s&c^o&c;y=d|0,v=g|0,d=m|0,g=p|0,m=u|0,p=h|0,{h:u,l:h}=D.add(l|0,f|0,j|0,q|0),l=a|0,f=c|0,a=i|0,c=o|0,i=n|0,o=s|0;let A=D.add3L(q,ce,He);n=D.add3H(A,j,U,ae),s=A|0}({h:n,l:s}=D.add(this.Ah|0,this.Al|0,n|0,s|0)),{h:i,l:o}=D.add(this.Bh|0,this.Bl|0,i|0,o|0),{h:a,l:c}=D.add(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:f}=D.add(this.Dh|0,this.Dl|0,l|0,f|0),{h:u,l:h}=D.add(this.Eh|0,this.El|0,u|0,h|0),{h:m,l:p}=D.add(this.Fh|0,this.Fl|0,m|0,p|0),{h:d,l:g}=D.add(this.Gh|0,this.Gl|0,d|0,g|0),{h:y,l:v}=D.add(this.Hh|0,this.Hl|0,y|0,v|0),this.set(n,s,i,o,a,c,l,f,u,h,m,p,d,g,y,v)}roundClean(){qt.fill(0),$t.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}};var qr=h1(()=>new to);var g1={};ue(g1,{abytes:()=>$r,bitGet:()=>M8,bitLen:()=>F8,bitMask:()=>En,bitSet:()=>H8,bytesToHex:()=>bt,bytesToNumberBE:()=>wt,bytesToNumberLE:()=>Gt,concatBytes:()=>vt,createHmacDrbg:()=>so,ensureBytes:()=>oe,equalBytes:()=>O8,hexToBytes:()=>ar,hexToNumber:()=>no,isBytes:()=>zt,numberToBytesBE:()=>jt,numberToBytesLE:()=>cr,numberToHexUnpadded:()=>T0,numberToVarBytesBE:()=>U8,utf8ToBytes:()=>V8,validateObject:()=>at});var _0=BigInt(0),p1=BigInt(1),C8=BigInt(2);function zt(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function $r(r){if(!zt(r))throw new Error("Uint8Array expected")}var D8=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function bt(r){$r(r);let e="";for(let t=0;t<r.length;t++)e+=D8[r[t]];return e}function T0(r){let e=r.toString(16);return e.length&1?`0${e}`:e}function no(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return BigInt(r===""?"0":`0x${r}`)}var yt={_0:48,_9:57,_A:65,_F:70,_a:97,_f:102};function k0(r){if(r>=yt._0&&r<=yt._9)return r-yt._0;if(r>=yt._A&&r<=yt._F)return r-(yt._A-10);if(r>=yt._a&&r<=yt._f)return r-(yt._a-10)}function ar(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);let e=r.length,t=e/2;if(e%2)throw new Error("padded hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(t);for(let s=0,i=0;s<t;s++,i+=2){let o=k0(r.charCodeAt(i)),a=k0(r.charCodeAt(i+1));if(o===void 0||a===void 0){let c=r[i]+r[i+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+i)}n[s]=o*16+a}return n}function wt(r){return no(bt(r))}function Gt(r){return $r(r),no(bt(Uint8Array.from(r).reverse()))}function jt(r,e){return ar(r.toString(16).padStart(e*2,"0"))}function cr(r,e){return jt(r,e).reverse()}function U8(r){return ar(T0(r))}function oe(r,e,t){let n;if(typeof e=="string")try{n=ar(e)}catch(i){throw new Error(`${r} must be valid hex string, got "${e}". Cause: ${i}`)}else if(zt(e))n=Uint8Array.from(e);else throw new Error(`${r} must be hex string or Uint8Array`);let s=n.length;if(typeof t=="number"&&s!==t)throw new Error(`${r} expected ${t} bytes, got ${s}`);return n}function vt(...r){let e=0;for(let n=0;n<r.length;n++){let s=r[n];$r(s),e+=s.length}let t=new Uint8Array(e);for(let n=0,s=0;n<r.length;n++){let i=r[n];t.set(i,s),s+=i.length}return t}function O8(r,e){if(r.length!==e.length)return!1;let t=0;for(let n=0;n<r.length;n++)t|=r[n]^e[n];return t===0}function V8(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function F8(r){let e;for(e=0;r>_0;r>>=p1,e+=1);return e}function M8(r,e){return r>>BigInt(e)&p1}function H8(r,e,t){return r|(t?p1:_0)<<BigInt(e)}var En=r=>(C8<<BigInt(r-1))-p1,ro=r=>new Uint8Array(r),N0=r=>Uint8Array.from(r);function so(r,e,t){if(typeof r!="number"||r<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof t!="function")throw new Error("hmacFn must be a function");let n=ro(r),s=ro(r),i=0,o=()=>{n.fill(1),s.fill(0),i=0},a=(...u)=>t(s,n,...u),c=(u=ro())=>{s=a(N0([0]),u),n=a(),u.length!==0&&(s=a(N0([1]),u),n=a())},l=()=>{if(i++>=1e3)throw new Error("drbg: tried 1000 values");let u=0,h=[];for(;u<e;){n=a();let m=n.slice();h.push(m),u+=n.length}return vt(...h)};return(u,h)=>{o(),c(u);let m;for(;!(m=h(l()));)c();return o(),m}}var K8={bigint:r=>typeof r=="bigint",function:r=>typeof r=="function",boolean:r=>typeof r=="boolean",string:r=>typeof r=="string",stringOrUint8Array:r=>typeof r=="string"||zt(r),isSafeInteger:r=>Number.isSafeInteger(r),array:r=>Array.isArray(r),field:(r,e)=>e.Fp.isValid(r),hash:r=>typeof r=="function"&&Number.isSafeInteger(r.outputLen)};function at(r,e,t={}){let n=(s,i,o)=>{let a=K8[i];if(typeof a!="function")throw new Error(`Invalid validator "${i}", expected function`);let c=r[s];if(!(o&&c===void 0)&&!a(c,r))throw new Error(`Invalid param ${String(s)}=${c} (${typeof c}), expected ${i}`)};for(let[s,i]of Object.entries(e))n(s,i,!1);for(let[s,i]of Object.entries(t))n(s,i,!0);return r}var ye=BigInt(0),te=BigInt(1),lr=BigInt(2),q8=BigInt(3),io=BigInt(4),L0=BigInt(5),P0=BigInt(8),$8=BigInt(9),z8=BigInt(16);function Z(r,e){let t=r%e;return t>=ye?t:e+t}function G8(r,e,t){if(t<=ye||e<ye)throw new Error("Expected power/modulo > 0");if(t===te)return ye;let n=te;for(;e>ye;)e&te&&(n=n*r%t),r=r*r%t,e>>=te;return n}function re(r,e,t){let n=r;for(;e-- >ye;)n*=n,n%=t;return n}function m1(r,e){if(r===ye||e<=ye)throw new Error(`invert: expected positive integers, got n=${r} mod=${e}`);let t=Z(r,e),n=e,s=ye,i=te,o=te,a=ye;for(;t!==ye;){let l=n/t,f=n%t,u=s-o*l,h=i-a*l;n=t,t=f,s=o,i=a,o=u,a=h}if(n!==te)throw new Error("invert: does not exist");return Z(s,e)}function j8(r){let e=(r-te)/lr,t,n,s;for(t=r-te,n=0;t%lr===ye;t/=lr,n++);for(s=lr;s<r&&G8(s,e,r)!==r-te;s++);if(n===1){let o=(r+te)/io;return function(c,l){let f=c.pow(l,o);if(!c.eql(c.sqr(f),l))throw new Error("Cannot find square root");return f}}let i=(t+te)/lr;return function(a,c){if(a.pow(c,e)===a.neg(a.ONE))throw new Error("Cannot find square root");let l=n,f=a.pow(a.mul(a.ONE,s),t),u=a.pow(c,i),h=a.pow(c,t);for(;!a.eql(h,a.ONE);){if(a.eql(h,a.ZERO))return a.ZERO;let m=1;for(let d=a.sqr(h);m<l&&!a.eql(d,a.ONE);m++)d=a.sqr(d);let p=a.pow(f,te<<BigInt(l-m-1));f=a.sqr(p),u=a.mul(u,p),h=a.mul(h,f),l=m}return u}}function Y8(r){if(r%io===q8){let e=(r+te)/io;return function(n,s){let i=n.pow(s,e);if(!n.eql(n.sqr(i),s))throw new Error("Cannot find square root");return i}}if(r%P0===L0){let e=(r-L0)/P0;return function(n,s){let i=n.mul(s,lr),o=n.pow(i,e),a=n.mul(s,o),c=n.mul(n.mul(a,lr),o),l=n.mul(a,n.sub(c,n.ONE));if(!n.eql(n.sqr(l),s))throw new Error("Cannot find square root");return l}}return r%z8,j8(r)}var C0=(r,e)=>(Z(r,e)&te)===te,W8=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function oo(r){let e={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},t=W8.reduce((n,s)=>(n[s]="function",n),e);return at(r,t)}function Z8(r,e,t){if(t<ye)throw new Error("Expected power > 0");if(t===ye)return r.ONE;if(t===te)return e;let n=r.ONE,s=e;for(;t>ye;)t&te&&(n=r.mul(n,s)),s=r.sqr(s),t>>=te;return n}function Q8(r,e){let t=new Array(e.length),n=e.reduce((i,o,a)=>r.is0(o)?i:(t[a]=i,r.mul(i,o)),r.ONE),s=r.inv(n);return e.reduceRight((i,o,a)=>r.is0(o)?i:(t[a]=r.mul(i,t[a]),r.mul(i,o)),s),t}function ao(r,e){let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}function y1(r,e,t=!1,n={}){if(r<=ye)throw new Error(`Expected Field ORDER > 0, got ${r}`);let{nBitLength:s,nByteLength:i}=ao(r,e);if(i>2048)throw new Error("Field lengths over 2048 bytes are not supported");let o=Y8(r),a=Object.freeze({ORDER:r,BITS:s,BYTES:i,MASK:En(s),ZERO:ye,ONE:te,create:c=>Z(c,r),isValid:c=>{if(typeof c!="bigint")throw new Error(`Invalid field element: expected bigint, got ${typeof c}`);return ye<=c&&c<r},is0:c=>c===ye,isOdd:c=>(c&te)===te,neg:c=>Z(-c,r),eql:(c,l)=>c===l,sqr:c=>Z(c*c,r),add:(c,l)=>Z(c+l,r),sub:(c,l)=>Z(c-l,r),mul:(c,l)=>Z(c*l,r),pow:(c,l)=>Z8(a,c,l),div:(c,l)=>Z(c*m1(l,r),r),sqrN:c=>c*c,addN:(c,l)=>c+l,subN:(c,l)=>c-l,mulN:(c,l)=>c*l,inv:c=>m1(c,r),sqrt:n.sqrt||(c=>o(a,c)),invertBatch:c=>Q8(a,c),cmov:(c,l,f)=>f?l:c,toBytes:c=>t?cr(c,i):jt(c,i),fromBytes:c=>{if(c.length!==i)throw new Error(`Fp.fromBytes: expected ${i}, got ${c.length}`);return t?Gt(c):wt(c)}});return Object.freeze(a)}function D0(r,e){if(!r.isOdd)throw new Error("Field doesn't have isOdd");let t=r.sqrt(e);return r.isOdd(t)?r.neg(t):t}function U0(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let e=r.toString(2).length;return Math.ceil(e/8)}function co(r){let e=U0(r);return e+Math.ceil(e/2)}function O0(r,e,t=!1){let n=r.length,s=U0(e),i=co(e);if(n<16||n<i||n>1024)throw new Error(`expected ${i}-1024 bytes of input, got ${n}`);let o=t?wt(r):Gt(r),a=Z(o,e-te)+te;return t?cr(a,s):jt(a,s)}var J8=BigInt(0),lo=BigInt(1);function b1(r,e){let t=(s,i)=>{let o=i.negate();return s?o:i},n=s=>{let i=Math.ceil(e/s)+1,o=2**(s-1);return{windows:i,windowSize:o}};return{constTimeNegate:t,unsafeLadder(s,i){let o=r.ZERO,a=s;for(;i>J8;)i&lo&&(o=o.add(a)),a=a.double(),i>>=lo;return o},precomputeWindow(s,i){let{windows:o,windowSize:a}=n(i),c=[],l=s,f=l;for(let u=0;u<o;u++){f=l,c.push(f);for(let h=1;h<a;h++)f=f.add(l),c.push(f);l=f.double()}return c},wNAF(s,i,o){let{windows:a,windowSize:c}=n(s),l=r.ZERO,f=r.BASE,u=BigInt(2**s-1),h=2**s,m=BigInt(s);for(let p=0;p<a;p++){let d=p*c,g=Number(o&u);o>>=m,g>c&&(g-=h,o+=lo);let y=d,v=d+Math.abs(g)-1,b=p%2!==0,S=g<0;g===0?f=f.add(t(b,i[y])):l=l.add(t(S,i[v]))}return{p:l,f}},wNAFCached(s,i,o,a){let c=s._WINDOW_SIZE||1,l=i.get(s);return l||(l=this.precomputeWindow(s,c),c!==1&&i.set(s,a(l))),this.wNAF(c,l,o)}}}function An(r){return oo(r.Fp),at(r,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...ao(r.n,r.nBitLength),...r,p:r.Fp.ORDER})}var Ze=BigInt(0),Fe=BigInt(1),w1=BigInt(2),ea=BigInt(8),ta={zip215:!0};function ra(r){let e=An(r);return at(r,{hash:"function",a:"bigint",d:"bigint",randomBytes:"function"},{adjustScalarBytes:"function",domain:"function",uvRatio:"function",mapToCurve:"function"}),Object.freeze({...e})}function v1(r){let e=ra(r),{Fp:t,n,prehash:s,hash:i,randomBytes:o,nByteLength:a,h:c}=e,l=w1<<BigInt(a*8)-Fe,f=t.create,u=e.uvRatio||((B,w)=>{try{return{isValid:!0,value:t.sqrt(B*t.inv(w))}}catch{return{isValid:!1,value:Ze}}}),h=e.adjustScalarBytes||(B=>B),m=e.domain||((B,w,k)=>{if(w.length||k)throw new Error("Contexts/pre-hash are not supported");return B}),p=B=>typeof B=="bigint"&&Ze<B,d=(B,w)=>p(B)&&p(w)&&B<w,g=B=>B===Ze||d(B,l);function y(B,w){if(d(B,w))return B;throw new Error(`Expected valid scalar < ${w}, got ${typeof B} ${B}`)}function v(B){return B===Ze?B:y(B,n)}let b=new Map;function S(B){if(!(B instanceof E))throw new Error("ExtendedPoint expected")}class E{constructor(w,k,L,C){if(this.ex=w,this.ey=k,this.ez=L,this.et=C,!g(w))throw new Error("x required");if(!g(k))throw new Error("y required");if(!g(L))throw new Error("z required");if(!g(C))throw new Error("t required")}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static fromAffine(w){if(w instanceof E)throw new Error("extended point not allowed");let{x:k,y:L}=w||{};if(!g(k)||!g(L))throw new Error("invalid affine point");return new E(k,L,Fe,f(k*L))}static normalizeZ(w){let k=t.invertBatch(w.map(L=>L.ez));return w.map((L,C)=>L.toAffine(k[C])).map(E.fromAffine)}_setWindowSize(w){this._WINDOW_SIZE=w,b.delete(this)}assertValidity(){let{a:w,d:k}=e;if(this.is0())throw new Error("bad point: ZERO");let{ex:L,ey:C,ez:V,et:F}=this,G=f(L*L),K=f(C*C),$=f(V*V),le=f($*$),se=f(G*w),ve=f($*f(se+K)),xe=f(le+f(k*f(G*K)));if(ve!==xe)throw new Error("bad point: equation left != right (1)");let pe=f(L*C),Ae=f(V*F);if(pe!==Ae)throw new Error("bad point: equation left != right (2)")}equals(w){S(w);let{ex:k,ey:L,ez:C}=this,{ex:V,ey:F,ez:G}=w,K=f(k*G),$=f(V*C),le=f(L*G),se=f(F*C);return K===$&&le===se}is0(){return this.equals(E.ZERO)}negate(){return new E(f(-this.ex),this.ey,this.ez,f(-this.et))}double(){let{a:w}=e,{ex:k,ey:L,ez:C}=this,V=f(k*k),F=f(L*L),G=f(w1*f(C*C)),K=f(w*V),$=k+L,le=f(f($*$)-V-F),se=K+F,ve=se-G,xe=K-F,pe=f(le*ve),Ae=f(se*xe),ht=f(le*xe),tr=f(ve*se);return new E(pe,Ae,tr,ht)}add(w){S(w);let{a:k,d:L}=e,{ex:C,ey:V,ez:F,et:G}=this,{ex:K,ey:$,ez:le,et:se}=w;if(k===BigInt(-1)){let o2=f((V-C)*($+K)),a2=f((V+C)*($-K)),Zs=f(a2-o2);if(Zs===Ze)return this.double();let c2=f(F*w1*se),l2=f(G*w1*le),u2=l2+c2,f2=a2+o2,h2=l2-c2,X4=f(u2*Zs),J4=f(f2*h2),e5=f(u2*h2),t5=f(Zs*f2);return new E(X4,J4,t5,e5)}let ve=f(C*K),xe=f(V*$),pe=f(G*L*se),Ae=f(F*le),ht=f((C+V)*(K+$)-ve-xe),tr=Ae-pe,on=Ae+pe,i2=f(xe-k*ve),Y4=f(ht*tr),W4=f(on*i2),Z4=f(ht*i2),Q4=f(tr*on);return new E(Y4,W4,Q4,Z4)}subtract(w){return this.add(w.negate())}wNAF(w){return T.wNAFCached(this,b,w,E.normalizeZ)}multiply(w){let{p:k,f:L}=this.wNAF(y(w,n));return E.normalizeZ([k,L])[0]}multiplyUnsafe(w){let k=v(w);return k===Ze?N:this.equals(N)||k===Fe?this:this.equals(I)?this.wNAF(k).p:T.unsafeLadder(this,k)}isSmallOrder(){return this.multiplyUnsafe(c).is0()}isTorsionFree(){return T.unsafeLadder(this,n).is0()}toAffine(w){let{ex:k,ey:L,ez:C}=this,V=this.is0();w==null&&(w=V?ea:t.inv(C));let F=f(k*w),G=f(L*w),K=f(C*w);if(V)return{x:Ze,y:Fe};if(K!==Fe)throw new Error("invZ was invalid");return{x:F,y:G}}clearCofactor(){let{h:w}=e;return w===Fe?this:this.multiplyUnsafe(w)}static fromHex(w,k=!1){let{d:L,a:C}=e,V=t.BYTES;w=oe("pointHex",w,V);let F=w.slice(),G=w[V-1];F[V-1]=G&-129;let K=Gt(F);K===Ze||(k?y(K,l):y(K,t.ORDER));let $=f(K*K),le=f($-Fe),se=f(L*$-C),{isValid:ve,value:xe}=u(le,se);if(!ve)throw new Error("Point.fromHex: invalid y coordinate");let pe=(xe&Fe)===Fe,Ae=(G&128)!==0;if(!k&&xe===Ze&&Ae)throw new Error("Point.fromHex: x=0 and x_0=1");return Ae!==pe&&(xe=f(-xe)),E.fromAffine({x:xe,y:K})}static fromPrivateKey(w){return U(w).point}toRawBytes(){let{x:w,y:k}=this.toAffine(),L=cr(k,t.BYTES);return L[L.length-1]|=w&Fe?128:0,L}toHex(){return bt(this.toRawBytes())}}E.BASE=new E(e.Gx,e.Gy,Fe,f(e.Gx*e.Gy)),E.ZERO=new E(Ze,Fe,Fe,Ze);let{BASE:I,ZERO:N}=E,T=b1(E,a*8);function j(B){return Z(B,n)}function q(B){return j(Gt(B))}function U(B){let w=a;B=oe("private key",B,w);let k=oe("hashed private key",i(B),2*w),L=h(k.slice(0,w)),C=k.slice(w,2*w),V=q(L),F=I.multiply(V),G=F.toRawBytes();return{head:L,prefix:C,scalar:V,point:F,pointBytes:G}}function ce(B){return U(B).pointBytes}function ae(B=new Uint8Array,...w){let k=vt(...w);return q(i(m(k,oe("context",B),!!s)))}function He(B,w,k={}){B=oe("message",B),s&&(B=s(B));let{prefix:L,scalar:C,pointBytes:V}=U(w),F=ae(k.context,L,B),G=I.multiply(F).toRawBytes(),K=ae(k.context,G,V,B),$=j(F+K*C);v($);let le=vt(G,cr($,t.BYTES));return oe("result",le,a*2)}let A=ta;function _(B,w,k,L=A){let{context:C,zip215:V}=L,F=t.BYTES;B=oe("signature",B,2*F),w=oe("message",w),s&&(w=s(w));let G=Gt(B.slice(F,2*F)),K,$,le;try{K=E.fromHex(k,V),$=E.fromHex(B.slice(0,F),V),le=I.multiplyUnsafe(G)}catch{return!1}if(!V&&K.isSmallOrder())return!1;let se=ae(C,$.toRawBytes(),K.toRawBytes(),w);return $.add(K.multiplyUnsafe(se)).subtract(le).clearCofactor().equals(E.ZERO)}return I._setWindowSize(8),{CURVE:e,getPublicKey:ce,sign:He,verify:_,ExtendedPoint:E,utils:{getExtendedPublicKey:U,randomPrivateKey:()=>o(t.BYTES),precompute(B=8,w=E.BASE){return w._setWindowSize(B),w.multiply(BigInt(3)),w}}}}var fo=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),V0=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),Yu=BigInt(0),na=BigInt(1),uo=BigInt(2),sa=BigInt(5),F0=BigInt(10),ia=BigInt(20),oa=BigInt(40),M0=BigInt(80);function aa(r){let e=fo,n=r*r%e*r%e,s=re(n,uo,e)*n%e,i=re(s,na,e)*r%e,o=re(i,sa,e)*i%e,a=re(o,F0,e)*o%e,c=re(a,ia,e)*a%e,l=re(c,oa,e)*c%e,f=re(l,M0,e)*l%e,u=re(f,M0,e)*l%e,h=re(u,F0,e)*o%e;return{pow_p_5_8:re(h,uo,e)*r%e,b2:n}}function ca(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function la(r,e){let t=fo,n=Z(e*e*e,t),s=Z(n*n*e,t),i=aa(r*s).pow_p_5_8,o=Z(r*n*i,t),a=Z(e*o*o,t),c=o,l=Z(o*V0,t),f=a===r,u=a===Z(-r,t),h=a===Z(-r*V0,t);return f&&(o=c),(u||h)&&(o=l),C0(o,t)&&(o=Z(-o,t)),{isValid:f||u,value:o}}var xt=y1(fo,void 0,!0),ho={a:BigInt(-1),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),Fp:xt,n:BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),h:BigInt(8),Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960"),hash:qr,randomBytes:Hr,adjustScalarBytes:ca,uvRatio:la},zr=v1(ho);function H0(r,e,t){if(e.length>255)throw new Error("Context is too big");return f1(Ji("SigEd25519 no Ed25519 collisions"),new Uint8Array([t?1:0,e.length]),e,r)}var Wu=v1({...ho,domain:H0}),Zu=v1({...ho,domain:H0,prehash:qr});var ua=(xt.ORDER+BigInt(3))/BigInt(8),Qu=xt.pow(uo,ua),Xu=xt.sqrt(xt.neg(xt.ONE)),Ju=(xt.ORDER-BigInt(5))/BigInt(8),ef=BigInt(486662);var tf=D0(xt,xt.neg(BigInt(486664)));var rf=BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235"),nf=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),sf=BigInt("1159843021668779879193775521855586647937357759715417654439879720876111806838"),of=BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952");var af=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");var Gr=32,Et=64,x1=32;function K0(){let r=zr.utils.randomPrivateKey(),e=zr.getPublicKey(r);return{privateKey:G0(r,e),publicKey:e}}function q0(r){if(r.length!==x1)throw new TypeError('"seed" must be 32 bytes in length.');if(!(r instanceof Uint8Array))throw new TypeError('"seed" must be a node.js Buffer, or Uint8Array.');let e=r,t=zr.getPublicKey(e);return{privateKey:G0(e,t),publicKey:t}}function $0(r,e){let t=r.subarray(0,x1);return zr.sign(e instanceof Uint8Array?e:e.subarray(),t)}function z0(r,e,t){return zr.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function G0(r,e){let t=new Uint8Array(Et);for(let n=0;n<x1;n++)t[n]=r[n],t[x1+n]=e[n];return t}var po={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function E1(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,s=r?.digest??"SHA-256",i=r?.saltLength??16,o=r?.iterations??32767,a=ee.get();t*=8;async function c(u,h){let m=a.getRandomValues(new Uint8Array(i)),p=a.getRandomValues(new Uint8Array(n)),d={name:e,iv:p};typeof h=="string"&&(h=z(h));let g;if(h.length===0){g=await a.subtle.importKey("jwk",po,{name:"AES-GCM"},!0,["encrypt"]);try{let v={name:"PBKDF2",salt:m,iterations:o,hash:{name:s}},b=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(v,b,{name:e,length:t},!0,["encrypt"])}catch{g=await a.subtle.importKey("jwk",po,{name:"AES-GCM"},!0,["encrypt"])}}else{let v={name:"PBKDF2",salt:m,iterations:o,hash:{name:s}},b=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(v,b,{name:e,length:t},!0,["encrypt"])}let y=await a.subtle.encrypt(d,g,u);return J([m,d.iv,new Uint8Array(y)])}async function l(u,h){let m=u.subarray(0,i),p=u.subarray(i,i+n),d=u.subarray(i+n),g={name:e,iv:p};typeof h=="string"&&(h=z(h));let y;if(h.length===0)try{let b={name:"PBKDF2",salt:m,iterations:o,hash:{name:s}},S=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);y=await a.subtle.deriveKey(b,S,{name:e,length:t},!0,["decrypt"])}catch{y=await a.subtle.importKey("jwk",po,{name:"AES-GCM"},!0,["decrypt"])}else{let b={name:"PBKDF2",salt:m,iterations:o,hash:{name:s}},S=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);y=await a.subtle.deriveKey(b,S,{name:e,length:t},!0,["decrypt"])}let v=await a.subtle.decrypt(g,y,d);return new Uint8Array(v)}return{encrypt:c,decrypt:l}}async function jr(r,e){let n=await E1().encrypt(r,e);return ln.encode(n)}var Yr={};ue(Yr,{KeyType:()=>X,PrivateKey:()=>Xe,PublicKey:()=>Qe});var X;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(X||(X={}));var go;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(go||(go={}));(function(r){r.codec=()=>Sr(go)})(X||(X={}));var Qe;(function(r){let e;r.codec=()=>(e==null&&(e=it((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),X.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),s.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let s={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let o=t.uint32();switch(o>>>3){case 1:s.Type=X.codec().decode(t);break;case 2:s.Data=t.bytes();break;default:t.skipType(o&7);break}}return s})),e),r.encode=t=>st(t,r.codec()),r.decode=t=>rt(t,r.codec())})(Qe||(Qe={}));var Xe;(function(r){let e;r.codec=()=>(e==null&&(e=it((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),X.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),s.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let s={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let o=t.uint32();switch(o>>>3){case 1:s.Type=X.codec().decode(t);break;case 2:s.Data=t.bytes();break;default:t.skipType(o&7);break}}return s})),e),r.encode=t=>st(t,r.codec()),r.decode=t=>rt(t,r.codec())})(Xe||(Xe={}));var ur=class{_key;constructor(e){this._key=Wr(e,Gr)}verify(e,t){return z0(this._key,t,e)}marshal(){return this._key}get bytes(){return Qe.encode({Type:X.Ed25519,Data:this.marshal()}).subarray()}equals(e){return Q(this.bytes,e.bytes)}hash(){let e=ne.digest(this.bytes);return $e(e)?e.then(({bytes:t})=>t):e.bytes}},At=class{_key;_publicKey;constructor(e,t){this._key=Wr(e,Et),this._publicKey=Wr(t,Gr)}sign(e){return $0(this._key,e)}get public(){return new ur(this._publicKey)}marshal(){return this._key}get bytes(){return Xe.encode({Type:X.Ed25519,Data:this.marshal()}).subarray()}equals(e){return Q(this.bytes,e.bytes)}async hash(){let e=ne.digest(this.bytes),t;return $e(e)?{bytes:t}=await e:t=e.bytes,t}async id(){let e=Ut.digest(this.public.bytes);return ge.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return jr(this.bytes,e);throw new x(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function ha(r){if(r.length>Et){r=Wr(r,Et+Gr);let n=r.subarray(0,Et),s=r.subarray(Et,r.length);return new At(n,s)}r=Wr(r,Et);let e=r.subarray(0,Et),t=r.subarray(Gr);return new At(e,t)}function da(r){return r=Wr(r,Gr),new ur(r)}async function pa(){let{privateKey:r,publicKey:e}=K0();return new At(r,e)}async function mo(r){let{privateKey:e,publicKey:t}=q0(r);return new At(e,t)}function Wr(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new x(`Key must be a Uint8Array of length ${e}, got ${r.length}`,"ERR_INVALID_KEY_TYPE");return r}var Y0={"P-256":256,"P-384":384,"P-521":521},ga=Object.keys(Y0),bo=ga.join(" / ");async function W0(r){if(r!=="P-256"&&r!=="P-384"&&r!=="P-521")throw new x(`Unknown curve: ${r}. Must be ${bo}`,"ERR_INVALID_CURVE");let e=await ee.get().subtle.generateKey({name:"ECDH",namedCurve:r},!0,["deriveBits"]),t=async(i,o)=>{let a;o!=null?a=await ee.get().subtle.importKey("jwk",ya(r,o),{name:"ECDH",namedCurve:r},!1,["deriveBits"]):a=e.privateKey;let c=await ee.get().subtle.importKey("jwk",Q0(r,i),{name:"ECDH",namedCurve:r},!1,[]),l=await ee.get().subtle.deriveBits({name:"ECDH",namedCurve:r,public:c},a,Y0[r]);return new Uint8Array(l,0,l.byteLength)},n=await ee.get().subtle.exportKey("jwk",e.publicKey);return{key:ma(n),genSharedKey:t}}var Z0={"P-256":32,"P-384":48,"P-521":66};function ma(r){if(r.crv==null||r.x==null||r.y==null)throw new x("JWK was missing components","ERR_INVALID_PARAMETERS");if(r.crv!=="P-256"&&r.crv!=="P-384"&&r.crv!=="P-521")throw new x(`Unknown curve: ${r.crv}. Must be ${bo}`,"ERR_INVALID_CURVE");let e=Z0[r.crv];return J([Uint8Array.from([4]),Xi(r.x,e),Xi(r.y,e)],1+e*2)}function Q0(r,e){if(r!=="P-256"&&r!=="P-384"&&r!=="P-521")throw new x(`Unknown curve: ${r}. Must be ${bo}`,"ERR_INVALID_CURVE");let t=Z0[r];if(!Q(e.subarray(0,1),Uint8Array.from([4])))throw new x("Cannot unmarshal public key - invalid key format","ERR_INVALID_KEY_FORMAT");return{kty:"EC",crv:r,x:P(e.subarray(1,t+1),"base64url"),y:P(e.subarray(1+t),"base64url"),ext:!0}}var ya=(r,e)=>({...Q0(r,e.public),d:P(e.private,"base64url")});var X0=W0;async function J0(r,e){let t=ln.decode(r);return E1().decrypt(t,e)}var e3={"AES-128":{ivSize:16,keySize:16},"AES-256":{ivSize:16,keySize:32},Blowfish:{ivSize:8,keySize:32}};async function t3(r,e,t){let n=e3[r];if(n==null){let v=Object.keys(e3).join(" / ");throw new x(`unknown cipher type '${r}'. Must be ${v}`,"ERR_INVALID_CIPHER_TYPE")}if(e==null)throw new x("missing hash type","ERR_MISSING_HASH_TYPE");let s=n.keySize,i=n.ivSize,o=20,a=z("key expansion"),c=2*(i+s+o),l=await x0(e,t),f=await l.digest(a),u=[],h=0;for(;h<c;){let v=await l.digest(J([f,a])),b=v.length;h+b>c&&(b=c-h),u.push(v),h+=b,f=await l.digest(f)}let m=c/2,p=J(u),d=p.subarray(0,m),g=p.subarray(m,c),y=v=>({iv:v.subarray(0,i),cipherKey:v.subarray(i,i+s),macKey:v.subarray(i+s)});return{k1:y(d),k2:y(g)}}var No={};ue(No,{MAX_RSA_KEY_SIZE:()=>dr,RsaPrivateKey:()=>Xt,RsaPublicKey:()=>hr,fromJwk:()=>qa,generateKeyPair:()=>$a,unmarshalRsaPrivateKey:()=>Ro,unmarshalRsaPublicKey:()=>Ka});function ct(r){if(isNaN(r)||r<=0)throw new x("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return Hr(r)}var Qt={};ue(Qt,{exportToPem:()=>Va,importFromPem:()=>So,jwkToPkcs1:()=>Ca,jwkToPkix:()=>Ua,pkcs1ToJwk:()=>Pa,pkixToJwk:()=>Da});var A1=class extends Fr{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,l1(e);let n=Kt(t);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let s=this.blockLen,i=new Uint8Array(s);i.set(n.length>s?e.create().update(n).digest():n);for(let o=0;o<i.length;o++)i[o]^=54;this.iHash.update(i),this.oHash=e.create();for(let o=0;o<i.length;o++)i[o]^=106;this.oHash.update(i),i.fill(0)}update(e){return Vr(this),this.iHash.update(e),this}digestInto(e){Vr(this),Or(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));let{oHash:t,iHash:n,finished:s,destroyed:i,blockLen:o,outputLen:a}=this;return e=e,e.finished=s,e.destroyed=i,e.blockLen=o,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},Bn=(r,e,t)=>new A1(r,e).update(t).digest();Bn.create=(r,e)=>new A1(r,e);function ba(r,e,t,n){l1(r);let s=B0({dkLen:32,asyncTick:10},n),{c:i,dkLen:o,asyncTick:a}=s;if(Ur(i),Ur(o),Ur(a),i<1)throw new Error("PBKDF2: iterations (c) should be >= 1");let c=Kt(e),l=Kt(t),f=new Uint8Array(o),u=Bn.create(r,c),h=u._cloneInto().update(l);return{c:i,dkLen:o,asyncTick:a,DK:f,PRF:u,PRFSalt:h}}function wa(r,e,t,n,s){return r.destroy(),e.destroy(),n&&n.destroy(),s.fill(0),t}async function wo(r,e,t,n){let{c:s,dkLen:i,asyncTick:o,DK:a,PRF:c,PRFSalt:l}=ba(r,e,t,n),f,u=new Uint8Array(4),h=Mr(u),m=new Uint8Array(c.outputLen);for(let p=1,d=0;d<i;p++,d+=c.outputLen){let g=a.subarray(d,d+c.outputLen);h.setInt32(0,p,!1),(f=l._cloneInto(f)).update(u).digestInto(m),g.set(m.subarray(0,g.length)),await A0(s-1,o,()=>{c._cloneInto(f).update(m).digestInto(m);for(let y=0;y<g.length;y++)g[y]^=m[y]})}return wa(c,l,a,f,m)}var H=cn(r3());function fr(r,e){let t=0;if(r.length===1)return r[0];for(let n=r.length-1;n>=0;n--)t+=r[r.length-1-n]*Math.pow(2,e*n);return t}function Yt(r,e,t=-1){let n=t,s=r,i=0,o=Math.pow(2,e);for(let a=1;a<8;a++){if(r<o){let c;if(n<0)c=new ArrayBuffer(a),i=a;else{if(n<a)return new ArrayBuffer(0);c=new ArrayBuffer(n),i=n}let l=new Uint8Array(c);for(let f=a-1;f>=0;f--){let u=Math.pow(2,f*e);l[i-f-1]=Math.floor(s/u),s-=l[i-f-1]*u}return c}o*=Math.pow(2,e)}return new ArrayBuffer(0)}function S1(...r){let e=0,t=0;for(let i of r)e+=i.length;let n=new ArrayBuffer(e),s=new Uint8Array(n);for(let i of r)s.set(i,t),t+=i.length;return s}function xo(){let r=new Uint8Array(this.valueHex);if(this.valueHex.byteLength>=2){let a=r[0]===255&&r[1]&128,c=r[0]===0&&(r[1]&128)===0;(a||c)&&this.warnings.push("Needlessly long format")}let e=new ArrayBuffer(this.valueHex.byteLength),t=new Uint8Array(e);for(let a=0;a<this.valueHex.byteLength;a++)t[a]=0;t[0]=r[0]&128;let n=fr(t,8),s=new ArrayBuffer(this.valueHex.byteLength),i=new Uint8Array(s);for(let a=0;a<this.valueHex.byteLength;a++)i[a]=r[a];return i[0]&=127,fr(i,8)-n}function n3(r){let e=r<0?r*-1:r,t=128;for(let n=1;n<8;n++){if(e<=t){if(r<0){let o=t-e,a=Yt(o,8,n),c=new Uint8Array(a);return c[0]|=128,a}let s=Yt(e,8,n),i=new Uint8Array(s);if(i[0]&128){let o=s.slice(0),a=new Uint8Array(o);s=new ArrayBuffer(s.byteLength+1),i=new Uint8Array(s);for(let c=0;c<o.byteLength;c++)i[c+1]=a[c];i[0]=0}return s}t*=Math.pow(2,8)}return new ArrayBuffer(0)}function s3(r,e){if(r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let s=0;s<t.length;s++)if(t[s]!==n[s])return!1;return!0}function Ce(r,e){let t=r.toString(10);if(e<t.length)return"";let n=e-t.length,s=new Array(n);for(let o=0;o<n;o++)s[o]="0";return s.join("").concat(t)}var Wf=Math.log(2);function R1(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function Eo(r){let e=0,t=0;for(let s=0;s<r.length;s++){let i=r[s];e+=i.byteLength}let n=new Uint8Array(e);for(let s=0;s<r.length;s++){let i=r[s];n.set(new Uint8Array(i),t),t+=i.byteLength}return n.buffer}function kt(r,e,t,n){return e instanceof Uint8Array?e.byteLength?t<0?(r.error="Wrong parameter: inputOffset less than zero",!1):n<0?(r.error="Wrong parameter: inputLength less than zero",!1):e.byteLength-t-n<0?(r.error="End of input reached before message was fully decoded (inconsistent offset and length values)",!1):!0:(r.error="Wrong parameter: inputBuffer has zero length",!1):(r.error="Wrong parameter: inputBuffer must be 'Uint8Array'",!1)}var Sn=class{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return Eo(this.items)}},In=[new Uint8Array([1])],i3="0123456789";var Xr="",et=new ArrayBuffer(0),Ao=new Uint8Array(0),Rn="EndOfContent",a3="OCTET STRING",c3="BIT STRING";function Nt(r){var e;return e=class extends r{constructor(...n){var s;super(...n);let i=n[0]||{};this.isHexOnly=(s=i.isHexOnly)!==null&&s!==void 0?s:!1,this.valueHexView=i.valueHex?H.BufferSourceConverter.toUint8Array(i.valueHex):Ao}get valueHex(){return this.valueHexView.slice().buffer}set valueHex(n){this.valueHexView=new Uint8Array(n)}fromBER(n,s,i){let o=n instanceof ArrayBuffer?new Uint8Array(n):n;if(!kt(this,o,s,i))return-1;let a=s+i;return this.valueHexView=o.subarray(s,a),this.valueHexView.length?(this.blockLength=i,a):(this.warnings.push("Zero buffer length"),s)}toBER(n=!1){return this.isHexOnly?n?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.byteLength===this.valueHexView.buffer.byteLength?this.valueHexView.buffer:this.valueHexView.slice().buffer:(this.error="Flag 'isHexOnly' is not set, abort",et)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:H.Convert.ToHex(this.valueHexView)}}},e.NAME="hexBlock",e}var It=class{constructor({blockLength:e=0,error:t=Xr,warnings:n=[],valueBeforeDecode:s=Ao}={}){this.blockLength=e,this.error=t,this.warnings=n,this.valueBeforeDecodeView=H.BufferSourceConverter.toUint8Array(s)}static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(e){this.valueBeforeDecodeView=new Uint8Array(e)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:H.Convert.ToHex(this.valueBeforeDecodeView)}}};It.NAME="baseBlock";var Re=class extends It{fromBER(e,t,n){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}toBER(e,t){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}};Re.NAME="valueBlock";var k1=class extends Nt(It){constructor({idBlock:e={}}={}){var t,n,s,i;super(),e?(this.isHexOnly=(t=e.isHexOnly)!==null&&t!==void 0?t:!1,this.valueHexView=e.valueHex?H.BufferSourceConverter.toUint8Array(e.valueHex):Ao,this.tagClass=(n=e.tagClass)!==null&&n!==void 0?n:-1,this.tagNumber=(s=e.tagNumber)!==null&&s!==void 0?s:-1,this.isConstructed=(i=e.isConstructed)!==null&&i!==void 0?i:!1):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}toBER(e=!1){let t=0;switch(this.tagClass){case 1:t|=0;break;case 2:t|=64;break;case 3:t|=128;break;case 4:t|=192;break;default:return this.error="Unknown tag class",et}if(this.isConstructed&&(t|=32),this.tagNumber<31&&!this.isHexOnly){let s=new Uint8Array(1);if(!e){let i=this.tagNumber;i&=31,t|=i,s[0]=t}return s.buffer}if(!this.isHexOnly){let s=Yt(this.tagNumber,7),i=new Uint8Array(s),o=s.byteLength,a=new Uint8Array(o+1);if(a[0]=t|31,!e){for(let c=0;c<o-1;c++)a[c+1]=i[c]|128;a[o]=i[o-1]}return a.buffer}let n=new Uint8Array(this.valueHexView.byteLength+1);if(n[0]=t|31,!e){let s=this.valueHexView;for(let i=0;i<s.length-1;i++)n[i+1]=s[i]|128;n[this.valueHexView.byteLength]=s[s.length-1]}return n.buffer}fromBER(e,t,n){let s=H.BufferSourceConverter.toUint8Array(e);if(!kt(this,s,t,n))return-1;let i=s.subarray(t,t+n);if(i.length===0)return this.error="Zero buffer length",-1;switch(i[0]&192){case 0:this.tagClass=1;break;case 64:this.tagClass=2;break;case 128:this.tagClass=3;break;case 192:this.tagClass=4;break;default:return this.error="Unknown tag class",-1}this.isConstructed=(i[0]&32)===32,this.isHexOnly=!1;let a=i[0]&31;if(a!==31)this.tagNumber=a,this.blockLength=1;else{let c=1,l=this.valueHexView=new Uint8Array(255),f=255;for(;i[c]&128;){if(l[c-1]=i[c]&127,c++,c>=i.length)return this.error="End of input reached before message was fully decoded",-1;if(c===f){f+=255;let h=new Uint8Array(f);for(let m=0;m<l.length;m++)h[m]=l[m];l=this.valueHexView=new Uint8Array(f)}}this.blockLength=c+1,l[c-1]=i[c]&127;let u=new Uint8Array(c);for(let h=0;h<c;h++)u[h]=l[h];l=this.valueHexView=new Uint8Array(c),l.set(u),this.blockLength<=9?this.tagNumber=fr(l,7):(this.isHexOnly=!0,this.warnings.push("Tag too long, represented as hex-coded"))}if(this.tagClass===1&&this.isConstructed)switch(this.tagNumber){case 1:case 2:case 5:case 6:case 9:case 13:case 14:case 23:case 24:case 31:case 32:case 33:case 34:return this.error="Constructed encoding used for primitive type",-1}return t+this.blockLength}toJSON(){return{...super.toJSON(),tagClass:this.tagClass,tagNumber:this.tagNumber,isConstructed:this.isConstructed}}};k1.NAME="identificationBlock";var N1=class extends It{constructor({lenBlock:e={}}={}){var t,n,s;super(),this.isIndefiniteForm=(t=e.isIndefiniteForm)!==null&&t!==void 0?t:!1,this.longFormUsed=(n=e.longFormUsed)!==null&&n!==void 0?n:!1,this.length=(s=e.length)!==null&&s!==void 0?s:0}fromBER(e,t,n){let s=H.BufferSourceConverter.toUint8Array(e);if(!kt(this,s,t,n))return-1;let i=s.subarray(t,t+n);if(i.length===0)return this.error="Zero buffer length",-1;if(i[0]===255)return this.error="Length block 0xFF is reserved by standard",-1;if(this.isIndefiniteForm=i[0]===128,this.isIndefiniteForm)return this.blockLength=1,t+this.blockLength;if(this.longFormUsed=!!(i[0]&128),this.longFormUsed===!1)return this.length=i[0],this.blockLength=1,t+this.blockLength;let o=i[0]&127;if(o>8)return this.error="Too big integer",-1;if(o+1>i.length)return this.error="End of input reached before message was fully decoded",-1;let a=t+1,c=s.subarray(a,a+o);return c[o-1]===0&&this.warnings.push("Needlessly long encoded length"),this.length=fr(c,8),this.longFormUsed&&this.length<=127&&this.warnings.push("Unnecessary usage of long length form"),this.blockLength=o+1,t+this.blockLength}toBER(e=!1){let t,n;if(this.length>127&&(this.longFormUsed=!0),this.isIndefiniteForm)return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=128),t;if(this.longFormUsed){let s=Yt(this.length,8);if(s.byteLength>127)return this.error="Too big length",et;if(t=new ArrayBuffer(s.byteLength+1),e)return t;let i=new Uint8Array(s);n=new Uint8Array(t),n[0]=s.byteLength|128;for(let o=0;o<s.byteLength;o++)n[o+1]=i[o];return t}return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=this.length),t}toJSON(){return{...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,longFormUsed:this.longFormUsed,length:this.length}}};N1.NAME="lengthBlock";var R={},Ee=class extends It{constructor({name:e=Xr,optional:t=!1,primitiveSchema:n,...s}={},i){super(s),this.name=e,this.optional=t,n&&(this.primitiveSchema=n),this.idBlock=new k1(s),this.lenBlock=new N1(s),this.valueBlock=i?new i(s):new Re(s)}fromBER(e,t,n){let s=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return s===-1?(this.error=this.valueBlock.error,s):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),s)}toBER(e,t){let n=t||new Sn;t||l3(this);let s=this.idBlock.toBER(e);if(n.write(s),this.lenBlock.isIndefiniteForm)n.write(new Uint8Array([128]).buffer),this.valueBlock.toBER(e,n),n.write(new ArrayBuffer(2));else{let i=this.valueBlock.toBER(e);this.lenBlock.length=i.byteLength;let o=this.lenBlock.toBER(e);n.write(o),n.write(i)}return t?et:n.final()}toJSON(){let e={...super.toJSON(),idBlock:this.idBlock.toJSON(),lenBlock:this.lenBlock.toJSON(),valueBlock:this.valueBlock.toJSON(),name:this.name,optional:this.optional};return this.primitiveSchema&&(e.primitiveSchema=this.primitiveSchema.toJSON()),e}toString(e="ascii"){return e==="ascii"?this.onAsciiEncoding():H.Convert.ToHex(this.toBER())}onAsciiEncoding(){return`${this.constructor.NAME} : ${H.Convert.ToHex(this.valueBlock.valueBeforeDecodeView)}`}isEqual(e){if(this===e)return!0;if(!(e instanceof this.constructor))return!1;let t=this.toBER(),n=e.toBER();return s3(t,n)}};Ee.NAME="BaseBlock";function l3(r){if(r instanceof R.Constructed)for(let e of r.valueBlock.value)l3(e)&&(r.lenBlock.isIndefiniteForm=!0);return!!r.lenBlock.isIndefiniteForm}var _1=class extends Ee{constructor({value:e=Xr,...t}={},n){super(t,n),e&&this.fromString(e)}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}fromBER(e,t,n){let s=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return s===-1?(this.error=this.valueBlock.error,s):(this.fromBuffer(this.valueBlock.valueHexView),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),s)}onAsciiEncoding(){return`${this.constructor.NAME} : '${this.valueBlock.value}'`}};_1.NAME="BaseStringBlock";var T1=class extends Nt(Re){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}};T1.NAME="PrimitiveValueBlock";var u3,L1=class extends Ee{constructor(e={}){super(e,T1),this.idBlock.isConstructed=!1}};u3=L1;R.Primitive=u3;L1.NAME="PRIMITIVE";function ka(r,e){if(r instanceof e)return r;let t=new e;return t.idBlock=r.idBlock,t.lenBlock=r.lenBlock,t.warnings=r.warnings,t.valueBeforeDecodeView=r.valueBeforeDecodeView,t}function fs(r,e=0,t=r.length){let n=e,s=new Ee({},Re),i=new It;if(!kt(i,r,e,t))return s.error=i.error,{offset:-1,result:s};if(!r.subarray(e,e+t).length)return s.error="Zero buffer length",{offset:-1,result:s};let a=s.idBlock.fromBER(r,e,t);if(s.idBlock.warnings.length&&s.warnings.concat(s.idBlock.warnings),a===-1)return s.error=s.idBlock.error,{offset:-1,result:s};if(e=a,t-=s.idBlock.blockLength,a=s.lenBlock.fromBER(r,e,t),s.lenBlock.warnings.length&&s.warnings.concat(s.lenBlock.warnings),a===-1)return s.error=s.lenBlock.error,{offset:-1,result:s};if(e=a,t-=s.lenBlock.blockLength,!s.idBlock.isConstructed&&s.lenBlock.isIndefiniteForm)return s.error="Indefinite length form used for primitive encoding form",{offset:-1,result:s};let c=Ee;switch(s.idBlock.tagClass){case 1:if(s.idBlock.tagNumber>=37&&s.idBlock.isHexOnly===!1)return s.error="UNIVERSAL 37 and upper tags are reserved by ASN.1 standard",{offset:-1,result:s};switch(s.idBlock.tagNumber){case 0:if(s.idBlock.isConstructed&&s.lenBlock.length>0)return s.error="Type [UNIVERSAL 0] is reserved",{offset:-1,result:s};c=R.EndOfContent;break;case 1:c=R.Boolean;break;case 2:c=R.Integer;break;case 3:c=R.BitString;break;case 4:c=R.OctetString;break;case 5:c=R.Null;break;case 6:c=R.ObjectIdentifier;break;case 10:c=R.Enumerated;break;case 12:c=R.Utf8String;break;case 13:c=R.RelativeObjectIdentifier;break;case 14:c=R.TIME;break;case 15:return s.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:s};case 16:c=R.Sequence;break;case 17:c=R.Set;break;case 18:c=R.NumericString;break;case 19:c=R.PrintableString;break;case 20:c=R.TeletexString;break;case 21:c=R.VideotexString;break;case 22:c=R.IA5String;break;case 23:c=R.UTCTime;break;case 24:c=R.GeneralizedTime;break;case 25:c=R.GraphicString;break;case 26:c=R.VisibleString;break;case 27:c=R.GeneralString;break;case 28:c=R.UniversalString;break;case 29:c=R.CharacterString;break;case 30:c=R.BmpString;break;case 31:c=R.DATE;break;case 32:c=R.TimeOfDay;break;case 33:c=R.DateTime;break;case 34:c=R.Duration;break;default:{let l=s.idBlock.isConstructed?new R.Constructed:new R.Primitive;l.idBlock=s.idBlock,l.lenBlock=s.lenBlock,l.warnings=s.warnings,s=l}}break;case 2:case 3:case 4:default:c=s.idBlock.isConstructed?R.Constructed:R.Primitive}return s=ka(s,c),a=s.fromBER(r,e,s.lenBlock.isIndefiniteForm?t:s.lenBlock.length),s.valueBeforeDecodeView=r.subarray(n,n+s.blockLength),{offset:a,result:s}}function Jr(r){if(!r.byteLength){let e=new Ee({},Re);return e.error="Input buffer has zero length",{offset:-1,result:e}}return fs(H.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength)}function Na(r,e){return r?1:e}var lt=class extends Re{constructor({value:e=[],isIndefiniteForm:t=!1,...n}={}){super(n),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,n){let s=H.BufferSourceConverter.toUint8Array(e);if(!kt(this,s,t,n))return-1;if(this.valueBeforeDecodeView=s.subarray(t,t+n),this.valueBeforeDecodeView.length===0)return this.warnings.push("Zero buffer length"),t;let i=t;for(;Na(this.isIndefiniteForm,n)>0;){let o=fs(s,i,n);if(o.offset===-1)return this.error=o.result.error,this.warnings.concat(o.result.warnings),-1;if(i=o.offset,this.blockLength+=o.result.blockLength,n-=o.result.blockLength,this.value.push(o.result),this.isIndefiniteForm&&o.result.constructor.NAME===Rn)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===Rn?this.value.pop():this.warnings.push("No EndOfContent block encoded")),i}toBER(e,t){let n=t||new Sn;for(let s=0;s<this.value.length;s++)this.value[s].toBER(e,n);return t?et:n.final()}toJSON(){let e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let t of this.value)e.value.push(t.toJSON());return e}};lt.NAME="ConstructedValueBlock";var f3,Wt=class extends Ee{constructor(e={}){super(e,lt),this.idBlock.isConstructed=!0}fromBER(e,t,n){this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm;let s=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return s===-1?(this.error=this.valueBlock.error,s):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),s)}onAsciiEncoding(){let e=[];for(let n of this.valueBlock.value)e.push(n.toString("ascii").split(`
2
+ "use strict";var Libp2PKadDht=(()=>{var s5=Object.create;var qn=Object.defineProperty;var i5=Object.getOwnPropertyDescriptor;var o5=Object.getOwnPropertyNames;var a5=Object.getPrototypeOf,c5=Object.prototype.hasOwnProperty;var cn=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),ue=(r,e)=>{for(var t in e)qn(r,t,{get:e[t],enumerable:!0})},g2=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of o5(e))!c5.call(r,s)&&s!==t&&qn(r,s,{get:()=>e[s],enumerable:!(n=i5(e,s))||n.enumerable});return r};var ln=(r,e,t)=>(t=r!=null?s5(a5(r)):{},g2(e||!r||!r.__esModule?qn(t,"default",{value:r,enumerable:!0}):t,r)),l5=r=>g2(qn({},"__esModule",{value:!0}),r);var h0=cn(En=>{(function(){var r,e,t,n,s,i,o,a;a=function(c){var l,f,u,h;return l=(c&255<<24)>>>24,f=(c&255<<16)>>>16,u=(c&65280)>>>8,h=c&255,[l,f,u,h].join(".")},o=function(c){var l,f,u,h,m,p;for(l=[],u=h=0;h<=3&&c.length!==0;u=++h){if(u>0){if(c[0]!==".")throw new Error("Invalid IP");c=c.substring(1)}p=e(c),m=p[0],f=p[1],c=c.substring(f),l.push(m)}if(c.length!==0)throw new Error("Invalid IP");switch(l.length){case 1:if(l[0]>4294967295)throw new Error("Invalid IP");return l[0]>>>0;case 2:if(l[0]>255||l[1]>16777215)throw new Error("Invalid IP");return(l[0]<<24|l[1])>>>0;case 3:if(l[0]>255||l[1]>255||l[2]>65535)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2])>>>0;case 4:if(l[0]>255||l[1]>255||l[2]>255||l[3]>255)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2]<<8|l[3])>>>0;default:throw new Error("Invalid IP")}},t=function(c){return c.charCodeAt(0)},n=t("0"),i=t("a"),s=t("A"),e=function(c){var l,f,u,h,m;for(h=0,l=10,f="9",u=0,c.length>1&&c[u]==="0"&&(c[u+1]==="x"||c[u+1]==="X"?(u+=2,l=16):"0"<=c[u+1]&&c[u+1]<="9"&&(u++,l=8,f="7")),m=u;u<c.length;){if("0"<=c[u]&&c[u]<=f)h=h*l+(t(c[u])-n)>>>0;else if(l===16)if("a"<=c[u]&&c[u]<="f")h=h*l+(10+t(c[u])-i)>>>0;else if("A"<=c[u]&&c[u]<="F")h=h*l+(10+t(c[u])-s)>>>0;else break;else break;if(h>4294967295)throw new Error("too large");u++}if(u===m)throw new Error("empty octet");return[h,u]},r=function(){function c(l,f){var u,h,m,p;if(typeof l!="string")throw new Error("Missing `net' parameter");if(f||(p=l.split("/",2),l=p[0],f=p[1]),f||(f=32),typeof f=="string"&&f.indexOf(".")>-1){try{this.maskLong=o(f)}catch(d){throw u=d,new Error("Invalid mask: "+f)}for(h=m=32;m>=0;h=--m)if(this.maskLong===4294967295<<32-h>>>0){this.bitmask=h;break}}else if(f||f===0)this.bitmask=parseInt(f,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(o(l)&this.maskLong)>>>0}catch(d){throw u=d,new Error("Invalid net address: "+l)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+f);this.size=Math.pow(2,32-this.bitmask),this.base=a(this.netLong),this.mask=a(this.maskLong),this.hostmask=a(~this.maskLong),this.first=this.bitmask<=30?a(this.netLong+1):this.base,this.last=this.bitmask<=30?a(this.netLong+this.size-2):a(this.netLong+this.size-1),this.broadcast=this.bitmask<=30?a(this.netLong+this.size-1):void 0}return c.prototype.contains=function(l){return typeof l=="string"&&(l.indexOf("/")>0||l.split(".").length!==4)&&(l=new c(l)),l instanceof c?this.contains(l.base)&&this.contains(l.broadcast||l.last):(o(l)&this.maskLong)>>>0===(this.netLong&this.maskLong)>>>0},c.prototype.next=function(l){return l==null&&(l=1),new c(a(this.netLong+this.size*l),this.mask)},c.prototype.forEach=function(l){var f,u,h;for(h=o(this.first),u=o(this.last),f=0;h<=u;)l(a(h),h,f),f++,h++},c.prototype.toString=function(){return this.base+"/"+this.bitmask},c}(),En.ip2long=o,En.long2ip=a,En.Netmask=r}).call(En)});var s3=cn(Qr=>{"use strict";var E8="[object ArrayBuffer]",Bt=class r{static isArrayBuffer(e){return Object.prototype.toString.call(e)===E8}static toArrayBuffer(e){return this.isArrayBuffer(e)?e:e.byteLength===e.buffer.byteLength||e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:this.toUint8Array(e.buffer).slice(e.byteOffset,e.byteOffset+e.byteLength).buffer}static toUint8Array(e){return this.toView(e,Uint8Array)}static toView(e,t){if(e.constructor===t)return e;if(this.isArrayBuffer(e))return new t(e);if(this.isArrayBufferView(e))return new t(e.buffer,e.byteOffset,e.byteLength);throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'")}static isBufferSource(e){return this.isArrayBufferView(e)||this.isArrayBuffer(e)}static isArrayBufferView(e){return ArrayBuffer.isView(e)||e&&this.isArrayBuffer(e.buffer)}static isEqual(e,t){let n=r.toUint8Array(e),s=r.toUint8Array(t);if(n.length!==s.byteLength)return!1;for(let i=0;i<n.length;i++)if(n[i]!==s[i])return!1;return!0}static concat(...e){let t;Array.isArray(e[0])&&!(e[1]instanceof Function)||Array.isArray(e[0])&&e[1]instanceof Function?t=e[0]:e[e.length-1]instanceof Function?t=e.slice(0,e.length-1):t=e;let n=0;for(let o of t)n+=o.byteLength;let s=new Uint8Array(n),i=0;for(let o of t){let a=this.toUint8Array(o);s.set(a,i),i+=a.length}return e[e.length-1]instanceof Function?this.toView(s,e[e.length-1]):s.buffer}},Eo="string",A8=/^[0-9a-f]+$/i,B8=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,I8=/^[a-zA-Z0-9-_]+$/,I1=class{static fromString(e){let t=unescape(encodeURIComponent(e)),n=new Uint8Array(t.length);for(let s=0;s<t.length;s++)n[s]=t.charCodeAt(s);return n.buffer}static toString(e){let t=Bt.toUint8Array(e),n="";for(let i=0;i<t.length;i++)n+=String.fromCharCode(t[i]);return decodeURIComponent(escape(n))}},ze=class{static toString(e,t=!1){let n=Bt.toArrayBuffer(e),s=new DataView(n),i="";for(let o=0;o<n.byteLength;o+=2){let a=s.getUint16(o,t);i+=String.fromCharCode(a)}return i}static fromString(e,t=!1){let n=new ArrayBuffer(e.length*2),s=new DataView(n);for(let i=0;i<e.length;i++)s.setUint16(i*2,e.charCodeAt(i),t);return n}},S1=class r{static isHex(e){return typeof e===Eo&&A8.test(e)}static isBase64(e){return typeof e===Eo&&B8.test(e)}static isBase64Url(e){return typeof e===Eo&&I8.test(e)}static ToString(e,t="utf8"){let n=Bt.toUint8Array(e);switch(t.toLowerCase()){case"utf8":return this.ToUtf8String(n);case"binary":return this.ToBinary(n);case"hex":return this.ToHex(n);case"base64":return this.ToBase64(n);case"base64url":return this.ToBase64Url(n);case"utf16le":return ze.toString(n,!0);case"utf16":case"utf16be":return ze.toString(n);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromString(e,t="utf8"){if(!e)return new ArrayBuffer(0);switch(t.toLowerCase()){case"utf8":return this.FromUtf8String(e);case"binary":return this.FromBinary(e);case"hex":return this.FromHex(e);case"base64":return this.FromBase64(e);case"base64url":return this.FromBase64Url(e);case"utf16le":return ze.fromString(e,!0);case"utf16":case"utf16be":return ze.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){let t=Bt.toUint8Array(e);if(typeof btoa<"u"){let n=this.ToString(t,"binary");return btoa(n)}else return Buffer.from(t).toString("base64")}static FromBase64(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64(t))throw new TypeError("Argument 'base64Text' is not Base64 encoded");return typeof atob<"u"?this.FromBinary(atob(t)):new Uint8Array(Buffer.from(t,"base64")).buffer}static FromBase64Url(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64Url(t))throw new TypeError("Argument 'base64url' is not Base64Url encoded");return this.FromBase64(this.Base64Padding(t.replace(/\-/g,"+").replace(/\_/g,"/")))}static ToBase64Url(e){return this.ToBase64(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=/g,"")}static FromUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.FromBinary(e);case"utf8":return I1.fromString(e);case"utf16":case"utf16be":return ze.fromString(e);case"utf16le":case"usc2":return ze.fromString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.ToBinary(e);case"utf8":return I1.toString(e);case"utf16":case"utf16be":return ze.toString(e);case"utf16le":case"usc2":return ze.toString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromBinary(e){let t=e.length,n=new Uint8Array(t);for(let s=0;s<t;s++)n[s]=e.charCodeAt(s);return n.buffer}static ToBinary(e){let t=Bt.toUint8Array(e),n="";for(let s=0;s<t.length;s++)n+=String.fromCharCode(t[s]);return n}static ToHex(e){let t=Bt.toUint8Array(e),n="",s=t.length;for(let i=0;i<s;i++){let o=t[i];o<16&&(n+="0"),n+=o.toString(16)}return n}static FromHex(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isHex(t))throw new TypeError("Argument 'hexString' is not HEX encoded");t.length%2&&(t=`0${t}`);let n=new Uint8Array(t.length/2);for(let s=0;s<t.length;s=s+2){let i=t.slice(s,s+2);n[s/2]=parseInt(i,16)}return n.buffer}static ToUtf16String(e,t=!1){return ze.toString(e,t)}static FromUtf16String(e,t=!1){return ze.fromString(e,t)}static Base64Padding(e){let t=4-e.length%4;if(t<4)for(let n=0;n<t;n++)e+="=";return e}static formatString(e){return e?.replace(/[\n\r\t ]/g,"")||""}};S1.DEFAULT_UTF8_ENCODING="utf8";function S8(r,...e){let t=arguments[0];for(let n=1;n<arguments.length;n++){let s=arguments[n];for(let i in s)t[i]=s[i]}return t}function R8(...r){let e=r.map(s=>s.byteLength).reduce((s,i)=>s+i),t=new Uint8Array(e),n=0;return r.map(s=>new Uint8Array(s)).forEach(s=>{for(let i of s)t[n++]=i}),t.buffer}function k8(r,e){if(!(r&&e)||r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let s=0;s<r.byteLength;s++)if(t[s]!==n[s])return!1;return!0}Qr.BufferSourceConverter=Bt;Qr.Convert=S1;Qr.assign=S8;Qr.combine=R8;Qr.isEqual=k8});var _4=cn((Ng,T4)=>{T4.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 P4=cn((Tg,Qo)=>{"use strict";var C7=Object.prototype.hasOwnProperty,Pe="~";function On(){}Object.create&&(On.prototype=Object.create(null),new On().__proto__||(Pe=!1));function D7(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function L4(r,e,t,n,s){if(typeof t!="function")throw new TypeError("The listener must be a function");var i=new D7(t,n||r,s),o=Pe?Pe+e:e;return r._events[o]?r._events[o].fn?r._events[o]=[r._events[o],i]:r._events[o].push(i):(r._events[o]=i,r._eventsCount++),r}function Ss(r,e){--r._eventsCount===0?r._events=new On:delete r._events[e]}function ke(){this._events=new On,this._eventsCount=0}ke.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)C7.call(t,n)&&e.push(Pe?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};ke.prototype.listeners=function(e){var t=Pe?Pe+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var s=0,i=n.length,o=new Array(i);s<i;s++)o[s]=n[s].fn;return o};ke.prototype.listenerCount=function(e){var t=Pe?Pe+e:e,n=this._events[t];return n?n.fn?1:n.length:0};ke.prototype.emit=function(e,t,n,s,i,o){var a=Pe?Pe+e:e;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,f,u;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,s),!0;case 5:return c.fn.call(c.context,t,n,s,i),!0;case 6:return c.fn.call(c.context,t,n,s,i,o),!0}for(u=1,f=new Array(l-1);u<l;u++)f[u-1]=arguments[u];c.fn.apply(c.context,f)}else{var h=c.length,m;for(u=0;u<h;u++)switch(c[u].once&&this.removeListener(e,c[u].fn,void 0,!0),l){case 1:c[u].fn.call(c[u].context);break;case 2:c[u].fn.call(c[u].context,t);break;case 3:c[u].fn.call(c[u].context,t,n);break;case 4:c[u].fn.call(c[u].context,t,n,s);break;default:if(!f)for(m=1,f=new Array(l-1);m<l;m++)f[m-1]=arguments[m];c[u].fn.apply(c[u].context,f)}}return!0};ke.prototype.on=function(e,t,n){return L4(this,e,t,n,!1)};ke.prototype.once=function(e,t,n){return L4(this,e,t,n,!0)};ke.prototype.removeListener=function(e,t,n,s){var i=Pe?Pe+e:e;if(!this._events[i])return this;if(!t)return Ss(this,i),this;var o=this._events[i];if(o.fn)o.fn===t&&(!s||o.once)&&(!n||o.context===n)&&Ss(this,i);else{for(var a=0,c=[],l=o.length;a<l;a++)(o[a].fn!==t||s&&!o[a].once||n&&o[a].context!==n)&&c.push(o[a]);c.length?this._events[i]=c.length===1?c[0]:c:Ss(this,i)}return this};ke.prototype.removeAllListeners=function(e){var t;return e?(t=Pe?Pe+e:e,this._events[t]&&Ss(this,t)):(this._events=new On,this._eventsCount=0),this};ke.prototype.off=ke.prototype.removeListener;ke.prototype.addListener=ke.prototype.on;ke.prefixed=Pe;ke.EventEmitter=ke;typeof Qo<"u"&&(Qo.exports=ke)});var W4=cn((gy,Y4)=>{"use strict";function j4(r,e){for(let t in e)Object.defineProperty(r,t,{value:e[t],enumerable:!0,configurable:!0});return r}function ec(r,e,t){if(!r||typeof r=="string")throw new TypeError("Please pass an Error to err-code");t||(t={}),typeof e=="object"&&(t=e,e=""),e&&(t.code=e);try{return j4(r,t)}catch{t.message=r.message,t.stack=r.stack;let s=function(){};return s.prototype=Object.create(Object.getPrototypeOf(r)),j4(new s,t)}}Y4.exports=ec});var ac={};ue(ac,{EventTypes:()=>o2,MessageType:()=>M,Record:()=>me,kadDHT:()=>oc,passthroughMapper:()=>m0,removePrivateAddressesMapper:()=>c1,removePublicAddressesMapper:()=>g0});var m2=Symbol.for("@libp2p/content-routing");var y2=Symbol.for("@libp2p/peer-discovery");var b2=Symbol.for("@libp2p/peer-id");var w2=Symbol.for("@libp2p/peer-routing");var Pt=class r extends Error{code;type;constructor(e="The operation was aborted"){super(e),this.name="AbortError",this.code=r.code,this.type=r.type}static code="ABORT_ERR";static type="aborted"},x=class extends Error{code;props;constructor(e,t,n){super(e),this.code=t,this.name=n?.name??"CodeError",this.props=n??{}}};var Ne=(r,...e)=>{try{[...e]}catch{}};var Be=class extends EventTarget{#e=new Map;constructor(){super(),Ne(1/0,this)}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 Te(e,t))}},Js=class extends Event{detail;constructor(e,t){super(e,t),this.detail=t?.detail}},Te=globalThis.CustomEvent??Js;function v2(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function x2(...r){let e=[];for(let t of r)v2(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStart!=null&&await t.beforeStart()})),await Promise.all(e.map(async t=>{await t.start()})),await Promise.all(e.map(async t=>{t.afterStart!=null&&await t.afterStart()}))}async function E2(...r){let e=[];for(let t of r)v2(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStop!=null&&await t.beforeStop()})),await Promise.all(e.map(async t=>{await t.stop()})),await Promise.all(e.map(async t=>{t.afterStop!=null&&await t.afterStop()}))}function u5(r){return r[Symbol.asyncIterator]!=null}function f5(r){if(u5(r))return(async()=>{for await(let e of r);})();for(let e of r);}var ei=f5;function fe(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var A2="/ipfs/kad/1.0.0",B2="/dht/record",ti="/dht/provider";function Ce(r=0){return new Uint8Array(r)}function be(r=0){return new Uint8Array(r)}var h5=Math.pow(2,7),d5=Math.pow(2,14),p5=Math.pow(2,21),ri=Math.pow(2,28),ni=Math.pow(2,35),si=Math.pow(2,42),ii=Math.pow(2,49),Y=128,Ie=127;function he(r){if(r<h5)return 1;if(r<d5)return 2;if(r<p5)return 3;if(r<ri)return 4;if(r<ni)return 5;if(r<si)return 6;if(r<ii)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function oi(r,e,t=0){switch(he(r)){case 8:e[t++]=r&255|Y,r/=128;case 7:e[t++]=r&255|Y,r/=128;case 6:e[t++]=r&255|Y,r/=128;case 5:e[t++]=r&255|Y,r/=128;case 4:e[t++]=r&255|Y,r>>>=7;case 3:e[t++]=r&255|Y,r>>>=7;case 2:e[t++]=r&255|Y,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function g5(r,e,t=0){switch(he(r)){case 8:e.set(t++,r&255|Y),r/=128;case 7:e.set(t++,r&255|Y),r/=128;case 6:e.set(t++,r&255|Y),r/=128;case 5:e.set(t++,r&255|Y),r/=128;case 4:e.set(t++,r&255|Y),r>>>=7;case 3:e.set(t++,r&255|Y),r>>>=7;case 2:e.set(t++,r&255|Y),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function ai(r,e){let t=r[e],n=0;if(n+=t&Ie,t<Y||(t=r[e+1],n+=(t&Ie)<<7,t<Y)||(t=r[e+2],n+=(t&Ie)<<14,t<Y)||(t=r[e+3],n+=(t&Ie)<<21,t<Y)||(t=r[e+4],n+=(t&Ie)*ri,t<Y)||(t=r[e+5],n+=(t&Ie)*ni,t<Y)||(t=r[e+6],n+=(t&Ie)*si,t<Y)||(t=r[e+7],n+=(t&Ie)*ii,t<Y))return n;throw new RangeError("Could not decode varint")}function m5(r,e){let t=r.get(e),n=0;if(n+=t&Ie,t<Y||(t=r.get(e+1),n+=(t&Ie)<<7,t<Y)||(t=r.get(e+2),n+=(t&Ie)<<14,t<Y)||(t=r.get(e+3),n+=(t&Ie)<<21,t<Y)||(t=r.get(e+4),n+=(t&Ie)*ri,t<Y)||(t=r.get(e+5),n+=(t&Ie)*ni,t<Y)||(t=r.get(e+6),n+=(t&Ie)*si,t<Y)||(t=r.get(e+7),n+=(t&Ie)*ii,t<Y))return n;throw new RangeError("Could not decode varint")}function Ke(r,e,t=0){return e==null&&(e=be(he(r))),e instanceof Uint8Array?oi(r,e,t):g5(r,e,t)}function Ue(r,e=0){return r instanceof Uint8Array?ai(r,e):m5(r,e)}var ci=new Float32Array([-0]),Ct=new Uint8Array(ci.buffer);function I2(r,e,t){ci[0]=r,e[t]=Ct[0],e[t+1]=Ct[1],e[t+2]=Ct[2],e[t+3]=Ct[3]}function S2(r,e){return Ct[0]=r[e],Ct[1]=r[e+1],Ct[2]=r[e+2],Ct[3]=r[e+3],ci[0]}var li=new Float64Array([-0]),Se=new Uint8Array(li.buffer);function R2(r,e,t){li[0]=r,e[t]=Se[0],e[t+1]=Se[1],e[t+2]=Se[2],e[t+3]=Se[3],e[t+4]=Se[4],e[t+5]=Se[5],e[t+6]=Se[6],e[t+7]=Se[7]}function k2(r,e){return Se[0]=r[e],Se[1]=r[e+1],Se[2]=r[e+2],Se[3]=r[e+3],Se[4]=r[e+4],Se[5]=r[e+5],Se[6]=r[e+6],Se[7]=r[e+7],li[0]}var y5=BigInt(Number.MAX_SAFE_INTEGER),b5=BigInt(Number.MIN_SAFE_INTEGER),Oe=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 nr;if(e<y5&&e>b5)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>N2&&(s=0n,++n>N2&&(n=0n))),new r(Number(s),Number(n))}static fromNumber(e){if(e===0)return nr;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):nr}},nr=new Oe(0,0);nr.toBigInt=function(){return 0n};nr.zzEncode=nr.zzDecode=function(){return this};nr.length=function(){return 1};var N2=4294967296n;function T2(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 _2(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 ui(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 je(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function $n(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var fi=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,je(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 je(this,4);return $n(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw je(this,4);return $n(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw je(this,4);let e=S2(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw je(this,4);let e=k2(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 je(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return _2(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw je(this,e);this.pos+=e}else do if(this.pos>=this.len)throw je(this);while(this.buf[this.pos++]&128);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new Oe(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 je(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 je(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 je(this,8);let e=$n(this.buf,this.pos+=4),t=$n(this.buf,this.pos+=4);return new Oe(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=ai(this.buf,this.pos);return this.pos+=he(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 hi(r){return new fi(r instanceof Uint8Array?r:r.subarray())}function rt(r,e,t){let n=hi(r);return e.decode(n,void 0,t)}var yi={};ue(yi,{base10:()=>B5});var _c=new Uint8Array(0);function P2(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 dt(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 C2(r){return new TextEncoder().encode(r)}function D2(r){return new TextDecoder().decode(r)}function w5(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),l=Math.log(a)/Math.log(256),f=Math.log(256)/Math.log(a);function u(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var d=0,g=0,y=0,v=p.length;y!==v&&p[y]===0;)y++,d++;for(var b=(v-y)*f+1>>>0,S=new Uint8Array(b);y!==v;){for(var E=p[y],I=0,N=b-1;(E!==0||I<g)&&N!==-1;N--,I++)E+=256*S[N]>>>0,S[N]=E%a>>>0,E=E/a>>>0;if(E!==0)throw new Error("Non-zero carry");g=I,y++}for(var _=b-g;_!==b&&S[_]===0;)_++;for(var j=c.repeat(d);_<b;++_)j+=r.charAt(S[_]);return j}function h(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var d=0;if(p[d]!==" "){for(var g=0,y=0;p[d]===c;)g++,d++;for(var v=(p.length-d)*l+1>>>0,b=new Uint8Array(v);p[d];){var S=t[p.charCodeAt(d)];if(S===255)return;for(var E=0,I=v-1;(S!==0||E<y)&&I!==-1;I--,E++)S+=a*b[I]>>>0,b[I]=S%256>>>0,S=S/256>>>0;if(S!==0)throw new Error("Non-zero carry");y=E,d++}if(p[d]!==" "){for(var N=v-y;N!==v&&b[N]===0;)N++;for(var _=new Uint8Array(g+(v-N)),j=g;N!==v;)_[j++]=b[N++];return _}}}function m(p){var d=h(p);if(d)return d;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:h,decode:m}}var v5=w5,x5=v5,O2=x5;var di=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")}},pi=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return V2(this,e)}},gi=class{decoders;constructor(e){this.decoders=e}or(e){return V2(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 V2(r,e){return new gi({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var mi=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 di(e,t,n),this.decoder=new pi(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function Er({name:r,prefix:e,encode:t,decode:n}){return new mi(r,e,t,n)}function Dt({name:r,prefix:e,alphabet:t}){let{encode:n,decode:s}=O2(t,r);return Er({prefix:e,name:r,encode:n,decode:i=>dt(s(i))})}function E5(r,e,t,n){let s={};for(let f=0;f<e.length;++f)s[e[f]]=f;let i=r.length;for(;r[i-1]==="=";)--i;let o=new Uint8Array(i*t/8|0),a=0,c=0,l=0;for(let f=0;f<i;++f){let u=s[r[f]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|u,a+=t,a>=8&&(a-=8,o[l++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return o}function A5(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;)i+="=";return i}function ie({name:r,prefix:e,bitsPerChar:t,alphabet:n}){return Er({prefix:e,name:r,encode(s){return A5(s,n,t)},decode(s){return E5(s,n,t,r)}})}var B5=Dt({prefix:"9",name:"base10",alphabet:"0123456789"});var bi={};ue(bi,{base16:()=>I5,base16upper:()=>S5});var I5=ie({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),S5=ie({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var wi={};ue(wi,{base2:()=>R5});var R5=ie({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var vi={};ue(vi,{base256emoji:()=>L5});var F2=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}"),k5=F2.reduce((r,e,t)=>(r[t]=e,r),[]),N5=F2.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function T5(r){return r.reduce((e,t)=>(e+=k5[t],e),"")}function _5(r){let e=[];for(let t of r){let n=N5[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var L5=Er({prefix:"\u{1F680}",name:"base256emoji",encode:T5,decode:_5});var xi={};ue(xi,{base32:()=>pt,base32hex:()=>U5,base32hexpad:()=>V5,base32hexpadupper:()=>F5,base32hexupper:()=>O5,base32pad:()=>C5,base32padupper:()=>D5,base32upper:()=>P5,base32z:()=>M5});var pt=ie({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),P5=ie({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),C5=ie({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),D5=ie({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),U5=ie({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),O5=ie({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),V5=ie({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),F5=ie({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),M5=ie({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Ei={};ue(Ei,{base36:()=>H5,base36upper:()=>K5});var H5=Dt({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),K5=Dt({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Ai={};ue(Ai,{base58btc:()=>ge,base58flickr:()=>q5});var ge=Dt({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),q5=Dt({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Bi={};ue(Bi,{base64:()=>un,base64pad:()=>$5,base64url:()=>z5,base64urlpad:()=>G5});var un=ie({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),$5=ie({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),z5=ie({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),G5=ie({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var Ii={};ue(Ii,{base8:()=>j5});var j5=ie({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Si={};ue(Si,{identity:()=>Y5});var Y5=Er({prefix:"\0",name:"identity",encode:r=>D2(r),decode:r=>C2(r)});var jc=new TextEncoder,Yc=new TextDecoder;var ki={};ue(ki,{identity:()=>Ut});var Q5=K2,M2=128,X5=127,J5=~X5,e6=Math.pow(2,31);function K2(r,e,t){e=e||[],t=t||0;for(var n=t;r>=e6;)e[t++]=r&255|M2,r/=128;for(;r&J5;)e[t++]=r&255|M2,r>>>=7;return e[t]=r|0,K2.bytes=t-n+1,e}var t6=Ri,r6=128,H2=127;function Ri(r,n){var t=0,n=n||0,s=0,i=n,o,a=r.length;do{if(i>=a)throw Ri.bytes=0,new RangeError("Could not decode varint");o=r[i++],t+=s<28?(o&H2)<<s:(o&H2)*Math.pow(2,s),s+=7}while(o>=r6);return Ri.bytes=i-n,t}var n6=Math.pow(2,7),s6=Math.pow(2,14),i6=Math.pow(2,21),o6=Math.pow(2,28),a6=Math.pow(2,35),c6=Math.pow(2,42),l6=Math.pow(2,49),u6=Math.pow(2,56),f6=Math.pow(2,63),h6=function(r){return r<n6?1:r<s6?2:r<i6?3:r<o6?4:r<a6?5:r<c6?6:r<l6?7:r<u6?8:r<f6?9:10},d6={encode:Q5,decode:t6,encodingLength:h6},p6=d6,fn=p6;function hn(r,e=0){return[fn.decode(r,e),fn.decode.bytes]}function Ar(r,e,t=0){return fn.encode(r,e,t),e}function Br(r){return fn.encodingLength(r)}function nt(r,e){let t=e.byteLength,n=Br(r),s=n+Br(t),i=new Uint8Array(s+t);return Ar(r,i,0),Ar(t,i,n),i.set(e,s),new Ir(r,t,e,i)}function sr(r){let e=dt(r),[t,n]=hn(e),[s,i]=hn(e.subarray(n)),o=e.subarray(n+i);if(o.byteLength!==s)throw new Error("Incorrect length");return new Ir(t,s,o,e)}function q2(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&P2(r.bytes,t.bytes)}}var Ir=class{code;size;digest;bytes;constructor(e,t,n,s){this.code=e,this.size=t,this.digest=n,this.bytes=s}};var $2=0,g6="identity",z2=dt;function m6(r){return nt($2,z2(r))}var Ut={code:$2,name:g6,encode:z2,digest:m6};var _i={};ue(_i,{sha256:()=>ne,sha512:()=>y6});function Ti({name:r,code:e,encode:t}){return new Ni(r,e,t)}var Ni=class{name;code;encode;constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?nt(this.code,t):t.then(n=>nt(this.code,n))}else throw Error("Unknown type, must be binary type")}};function j2(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var ne=Ti({name:"sha2-256",code:18,encode:j2("SHA-256")}),y6=Ti({name:"sha2-512",code:19,encode:j2("SHA-512")});function Y2(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return w6(t,Li(r),e??ge.encoder);default:return v6(t,Li(r),e??pt.encoder)}}var W2=new WeakMap;function Li(r){let e=W2.get(r);if(e==null){let t=new Map;return W2.set(r,t),t}return e}var _e=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!==dn)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==x6)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=nt(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&q2(e.multihash,n.multihash)}toString(e){return Y2(this,e)}toJSON(){return{"/":Y2(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??Z2(n,s,i.bytes))}else if(t[E6]===!0){let{version:n,multihash:s,code:i}=t,o=sr(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!==dn)throw new Error(`Version 0 CID must use dag-pb (code: ${dn}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let s=Z2(e,t,n.bytes);return new r(e,t,n,s)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,dn,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=dt(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 Ir(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[u,h]=hn(e.subarray(t));return t+=h,u},s=n(),i=dn;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(),l=t+c,f=l-o;return{version:s,codec:i,multihashCode:a,digestSize:c,multihashSize:f,size:l}}static parse(e,t){let[n,s]=b6(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 Li(i).set(n,e),i}};function b6(r,e){switch(r[0]){case"Q":{let t=e??ge;return[ge.prefix,t.decode(`${ge.prefix}${r}`)]}case ge.prefix:{let t=e??ge;return[ge.prefix,t.decode(r)]}case pt.prefix:{let t=e??pt;return[pt.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function w6(r,e,t){let{prefix:n}=t;if(n!==ge.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 v6(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 dn=112,x6=18;function Z2(r,e,t){let n=Br(r),s=n+Br(e),i=new Uint8Array(s+t.byteLength);return Ar(r,i,0),Ar(e,i,n),i.set(t,s),i}var E6=Symbol.for("@ipld/js-cid/CID");var Ot={...Si,...wi,...Ii,...yi,...bi,...xi,...Ei,...Ai,...Bi,...vi},g9={..._i,...ki};function X2(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var Q2=X2("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),Pi=X2("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=be(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),A6={utf8:Q2,"utf-8":Q2,hex:Ot.base16,latin1:Pi,ascii:Pi,binary:Pi,...Ot},Gn=A6;function z(r,e="utf8"){let t=Gn[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function Ci(r){let e=r??8192,t=e>>>1,n,s=e;return function(o){if(o<1||o>t)return be(o);s+o>e&&(n=be(e),s=0);let a=n.subarray(s,s+=o);return s&7&&(s=(s|7)+1),a}}var or=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function Di(){}var Oi=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},B6=Ci();function I6(r){return globalThis.Buffer!=null?be(r):B6(r)}var gn=class{len;head;tail;states;constructor(){this.len=0,this.head=new or(Di,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new or(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new Vi((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(jn,10,Oe.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=Oe.fromBigInt(e);return this._push(jn,t.length(),t)}uint64Number(e){return this._push(oi,he(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=Oe.fromBigInt(e).zzEncode();return this._push(jn,t.length(),t)}sint64Number(e){let t=Oe.fromNumber(e).zzEncode();return this._push(jn,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(Ui,1,e?1:0)}fixed32(e){return this._push(pn,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=Oe.fromBigInt(e);return this._push(pn,4,t.lo)._push(pn,4,t.hi)}fixed64Number(e){let t=Oe.fromNumber(e);return this._push(pn,4,t.lo)._push(pn,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(I2,4,e)}double(e){return this._push(R2,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(Ui,1,0):this.uint32(t)._push(R6,t,e)}string(e){let t=T2(e);return t!==0?this.uint32(t)._push(ui,t,e):this._push(Ui,1,0)}fork(){return this.states=new Oi(this),this.head=this.tail=new or(Di,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 or(Di,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=I6(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function Ui(r,e,t){e[t]=r&255}function S6(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var Vi=class extends or{next;constructor(e,t){super(S6,e,t),this.next=void 0}};function jn(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 pn(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 R6(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(gn.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(k6,e,r),this},gn.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(N6,e,r),this});function k6(r,e,t){e.set(r,t)}function N6(r,e,t){r.length<40?ui(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(z(r),t)}function Fi(){return new gn}function st(r,e){let t=Fi();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var Sr;(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"})(Sr||(Sr={}));function Yn(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function Rr(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 Yn("enum",Sr.VARINT,t,n)}function it(r,e){return Yn("message",Sr.LENGTH_DELIMITED,r,e)}var mn=class extends Error{code;constructor(e,t,n){super(e,n),this.code=t}};var yn;(function(r){let e;r.codec=()=>(e==null&&(e=it((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.key!=null&&t.key.byteLength>0&&(n.uint32(10),n.bytes(t.key)),t.value!=null&&t.value.byteLength>0&&(n.uint32(18),n.bytes(t.value)),t.timeReceived!=null&&t.timeReceived!==""&&(n.uint32(42),n.string(t.timeReceived)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={key:Ce(0),value:Ce(0),timeReceived:""},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.key=t.bytes();break}case 2:{i.value=t.bytes();break}case 5:{i.timeReceived=t.string();break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>st(t,r.codec()),r.decode=(t,n)=>rt(t,r.codec(),n)})(yn||(yn={}));function J2(r){let e=r.getUTCFullYear(),t=String(r.getUTCMonth()+1).padStart(2,"0"),n=String(r.getUTCDate()).padStart(2,"0"),s=String(r.getUTCHours()).padStart(2,"0"),i=String(r.getUTCMinutes()).padStart(2,"0"),o=String(r.getUTCSeconds()).padStart(2,"0"),a=r.getUTCMilliseconds(),c=String(a*1e3*1e3).padStart(9,"0");return`${e}-${t}-${n}T${s}:${i}:${o}.${c}Z`}function e0(r){let e=new RegExp("(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})\\.(\\d+)Z"),t=String(r).trim().match(e);if(t==null)throw new Error("Invalid format");let n=parseInt(t[1],10),s=parseInt(t[2],10)-1,i=parseInt(t[3],10),o=parseInt(t[4],10),a=parseInt(t[5],10),c=parseInt(t[6],10),l=parseInt(t[7].slice(0,-6),10);return new Date(Date.UTC(n,s,i,o,a,c,l))}var me=class r{key;value;timeReceived;constructor(e,t,n){if(!(e instanceof Uint8Array))throw new Error("key must be a Uint8Array");if(!(t instanceof Uint8Array))throw new Error("value must be a Uint8Array");this.key=e,this.value=t,this.timeReceived=n}serialize(){return yn.encode(this.prepareSerialize())}prepareSerialize(){return{key:this.key,value:this.value,timeReceived:J2(this.timeReceived)}}static deserialize(e){let t=yn.decode(e);return new r(t.key,t.value,new Date(t.timeReceived))}static fromDeserialized(e){let t=e0(e.timeReceived);if(e.key==null)throw new Error("key missing from deserialized object");if(e.value==null)throw new Error("value missing from deserialized object");return new r(e.key,e.value,t)}};function _6(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 t0=_6;function L6(r){return r[Symbol.asyncIterator]!=null}function P6(r,e){let t=0;if(L6(r))return async function*(){for await(let c of r)yield e(c,t++)}();let n=t0(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 await(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 Wn=P6;var Zn=globalThis.CustomEvent??Event;async function*bn(r,e={}){let t=e.concurrency??1/0;t<1&&(t=1/0);let n=e.ordered==null?!1:e.ordered,s=new EventTarget,i=[],o=fe(),a=fe(),c=!1,l,f=!1;s.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let p of r){if(i.length===t&&(o=fe(),await o.promise),f)break;let d={done:!1};i.push(d),p().then(g=>{d.done=!0,d.ok=!0,d.value=g,s.dispatchEvent(new Zn("task-complete"))},g=>{d.done=!0,d.err=g,s.dispatchEvent(new Zn("task-complete"))})}c=!0,s.dispatchEvent(new Zn("task-complete"))}catch(p){l=p,s.dispatchEvent(new Zn("task-complete"))}});function u(){return n?i[0]?.done:!!i.find(p=>p.done)}function*h(){for(;i.length>0&&i[0].done;){let p=i[0];if(i.shift(),p.ok)yield p.value;else throw f=!0,o.resolve(),p.err;o.resolve()}}function*m(){for(;u();)for(let p=0;p<i.length;p++)if(i[p].done){let d=i[p];if(i.splice(p,1),p--,d.ok)yield d.value;else throw f=!0,o.resolve(),d.err;o.resolve()}}for(;;){if(u()||(a=fe(),await a.promise),l!=null)throw l;if(n?yield*h():yield*m(),c&&i.length===0)break}}var Qn=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||e-1&e)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},kr=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new Qn(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 Qn(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 Mi=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function Vt(r={}){return C6(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 C6(r,e){e=e??{};let t=e.onEnd,n=new kr,s,i,o,a=fe(),c=async()=>{try{return n.isEmpty()?o?{done:!0}:await new Promise((g,y)=>{i=v=>{i=null,n.push(v);try{g(r(n))}catch(b){y(b)}return s}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=fe()})}},l=g=>i!=null?i(g):(n.push(g),s),f=g=>(n=new kr,i!=null?i({error:g}):(n.push({error:g}),s)),u=g=>{if(o)return s;if(e?.objectMode!==!0&&g?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:g})},h=g=>o?s:(o=!0,g!=null?f(g):l({done:!0})),m=()=>(n=new kr,h(),{done:!0}),p=g=>(h(g),{done:!0});if(s={[Symbol.asyncIterator](){return this},next:c,return:m,throw:p,push:u,end:h,get readableLength(){return n.size},onEmpty:async g=>{let y=g?.signal;if(y?.throwIfAborted(),n.isEmpty())return;let v,b;y!=null&&(v=new Promise((S,E)=>{b=()=>{E(new Mi)},y.addEventListener("abort",b)}));try{await Promise.race([a.promise,v])}finally{b!=null&&y!=null&&y?.removeEventListener("abort",b)}}},t==null)return s;let d=s;return s={[Symbol.asyncIterator](){return this},next(){return d.next()},throw(g){return d.throw(g),t!=null&&(t(g),t=void 0),{done:!0}},return(){return d.return(),t!=null&&(t(),t=void 0),{done:!0}},push:u,end(g){return d.end(g),t!=null&&(t(g),t=void 0),s},get readableLength(){return d.readableLength},onEmpty:g=>d.onEmpty(g)},s}function D6(r){return r[Symbol.asyncIterator]!=null}function U6(...r){let e=[];for(let t of r)D6(t)||e.push(t);return e.length===r.length?function*(){for(let t of e)yield*t}():async function*(){let t=Vt({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(r.map(async n=>{for await(let s of n)t.push(s)})),t.end()}catch(n){t.end(n)}}),yield*t}()}var Xn=U6;function Ft(r,...e){if(r==null)throw new Error("Empty pipeline");if(Hi(r)){let n=r;r=()=>n.source}else if(n0(r)||r0(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&Hi(t[t.length-1])&&(t[t.length-1]=t[t.length-1].sink),t.length>2)for(let n=1;n<t.length-1;n++)Hi(t[n])&&(t[n]=V6(t[n]));return O6(...t)}var O6=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},r0=r=>r?.[Symbol.asyncIterator]!=null,n0=r=>r?.[Symbol.iterator]!=null,Hi=r=>r==null?!1:r.sink!=null&&r.source!=null,V6=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=Vt({objectMode:!0});t.then(()=>{n.end()},o=>{n.end(o)});let s,i=r.source;if(r0(i))s=async function*(){yield*i,n.end()};else if(n0(i))s=function*(){yield*i,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return Xn(n,s())}return r.source};function Q(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}var s0;(function(r){let e;r.codec=()=>(e==null&&(e=it((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.key!=null&&(n.uint32(10),n.bytes(t.key)),t.value!=null&&(n.uint32(18),n.bytes(t.value)),t.author!=null&&(n.uint32(26),n.bytes(t.author)),t.signature!=null&&(n.uint32(34),n.bytes(t.signature)),t.timeReceived!=null&&(n.uint32(42),n.string(t.timeReceived)),s.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let s={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let o=t.uint32();switch(o>>>3){case 1:{s.key=t.bytes();break}case 2:{s.value=t.bytes();break}case 3:{s.author=t.bytes();break}case 4:{s.signature=t.bytes();break}case 5:{s.timeReceived=t.string();break}default:{t.skipType(o&7);break}}}return s})),e),r.encode=t=>st(t,r.codec()),r.decode=t=>rt(t,r.codec())})(s0||(s0={}));var M;(function(r){r.PUT_VALUE="PUT_VALUE",r.GET_VALUE="GET_VALUE",r.ADD_PROVIDER="ADD_PROVIDER",r.GET_PROVIDERS="GET_PROVIDERS",r.FIND_NODE="FIND_NODE",r.PING="PING"})(M||(M={}));var Jn;(function(r){r[r.PUT_VALUE=0]="PUT_VALUE",r[r.GET_VALUE=1]="GET_VALUE",r[r.ADD_PROVIDER=2]="ADD_PROVIDER",r[r.GET_PROVIDERS=3]="GET_PROVIDERS",r[r.FIND_NODE=4]="FIND_NODE",r[r.PING=5]="PING"})(Jn||(Jn={}));(function(r){r.codec=()=>Rr(Jn)})(M||(M={}));var Tr;(function(r){r.NOT_CONNECTED="NOT_CONNECTED",r.CONNECTED="CONNECTED",r.CAN_CONNECT="CAN_CONNECT",r.CANNOT_CONNECT="CANNOT_CONNECT"})(Tr||(Tr={}));var Ki;(function(r){r[r.NOT_CONNECTED=0]="NOT_CONNECTED",r[r.CONNECTED=1]="CONNECTED",r[r.CAN_CONNECT=2]="CAN_CONNECT",r[r.CANNOT_CONNECT=3]="CANNOT_CONNECT"})(Ki||(Ki={}));(function(r){r.codec=()=>Rr(Ki)})(Tr||(Tr={}));var Nr;(function(r){let e;r.codec=()=>(e==null&&(e=it((t,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.multiaddrs!=null)for(let i of t.multiaddrs)n.uint32(18),n.bytes(i);t.connection!=null&&(n.uint32(24),Tr.codec().encode(t.connection,n)),s.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let s={id:Ce(0),multiaddrs:[]},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let o=t.uint32();switch(o>>>3){case 1:{s.id=t.bytes();break}case 2:{s.multiaddrs.push(t.bytes());break}case 3:{s.connection=Tr.codec().decode(t);break}default:{t.skipType(o&7);break}}}return s})),e),r.encode=t=>st(t,r.codec()),r.decode=t=>rt(t,r.codec())})(Nr||(Nr={}));var qe;(function(r){let e;r.codec=()=>(e==null&&(e=it((t,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),t.type!=null&&Jn[t.type]!==0&&(n.uint32(8),M.codec().encode(t.type,n)),t.clusterLevel!=null&&(n.uint32(80),n.int32(t.clusterLevel)),t.key!=null&&(n.uint32(18),n.bytes(t.key)),t.record!=null&&(n.uint32(26),n.bytes(t.record)),t.closer!=null)for(let i of t.closer)n.uint32(66),Nr.codec().encode(i,n);if(t.providers!=null)for(let i of t.providers)n.uint32(74),Nr.codec().encode(i,n);s.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let s={type:M.PUT_VALUE,closer:[],providers:[]},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let o=t.uint32();switch(o>>>3){case 1:{s.type=M.codec().decode(t);break}case 10:{s.clusterLevel=t.int32();break}case 2:{s.key=t.bytes();break}case 3:{s.record=t.bytes();break}case 8:{s.closer.push(Nr.codec().decode(t,t.uint32()));break}case 9:{s.providers.push(Nr.codec().decode(t,t.uint32()));break}default:{t.skipType(o&7);break}}}return s})),e),r.encode=t=>st(t,r.codec()),r.decode=t=>rt(t,r.codec())})(qe||(qe={}));function qi(r,e={}){let t={...r,name:"SEND_QUERY",type:0,messageName:r.type,messageType:r.type};return e.onProgress?.(new Te("kad-dht:query:send-query",{detail:t})),t}function wn(r,e={}){let t={...r,name:"PEER_RESPONSE",type:1,messageName:r.messageType,closer:r.closer!=null?r.closer:[],providers:r.providers!=null?r.providers:[]};return e.onProgress?.(new Te("kad-dht:query:peer-response",{detail:t})),t}function e1(r,e={}){let t={...r,name:"FINAL_PEER",type:2};return e.onProgress?.(new Te("kad-dht:query:final-peer",{detail:t})),t}function Ve(r,e={}){let t={...r,name:"QUERY_ERROR",type:3};return e.onProgress?.(new Te("kad-dht:query:query-error",{detail:t})),t}function $i(r,e={}){let t={...r,name:"PROVIDER",type:4};return e.onProgress?.(new Te("kad-dht:query:provider",{detail:t})),t}function vn(r,e={}){let t={...r,name:"VALUE",type:5};return e.onProgress?.(new Te("kad-dht:query:value",{detail:t})),t}function zi(r,e={}){let t={...r,name:"DIAL_PEER",type:7};return e.onProgress?.(new Te("kad-dht:query:dial-peer",{detail:t})),t}function P(r,e="utf8"){let t=Gn[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}function i0(r,e,t){if(t.length===0){let o="No records given";throw new x(o,"ERR_NO_RECORDS_RECEIVED")}let s=P(e).split("/");if(s.length<3){let o="Record key does not have a selector function";throw new x(o,"ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY")}let i=r[s[1].toString()];if(i==null){let o=`No selector function configured for key type "${s[1]}"`;throw new x(o,"ERR_UNRECOGNIZED_KEY_PREFIX")}return t.length===1?0:i(e,t)}function F6(r,e){return 0}var o0={pk:F6};async function _r(r,e){let t=e.key,s=P(t).split("/");if(s.length<3)return;let i=r[s[1].toString()];if(i==null){let o=`No validator available for key type "${s[1]}"`;throw new x(o,"ERR_INVALID_RECORD_KEY_TYPE")}await i(t,e.value)}var M6=async(r,e)=>{if(!(r instanceof Uint8Array))throw new x('"key" must be a Uint8Array',"ERR_INVALID_RECORD_KEY_NOT_BUFFER");if(r.byteLength<5)throw new x("invalid public key record","ERR_INVALID_RECORD_KEY_TOO_SHORT");if(P(r.subarray(0,4))!=="/pk/")throw new x("key was not prefixed with /pk/","ERR_INVALID_RECORD_KEY_BAD_PREFIX");let n=r.slice(4),s=await ne.digest(e);if(!Q(n,s.bytes))throw new x("public key does not match passed in key","ERR_INVALID_RECORD_HASH_MISMATCH")},a0={pk:M6};var H6=Symbol.for("nodejs.util.inspect.custom"),c0=Object.values(Ot).map(r=>r.decoder).reduce((r,e)=>r.or(e),Ot.identity.decoder),l0=114,Gi=36,ji=37,xn=class{type;multihash;privateKey;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,this.privateKey=e.privateKey,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[b2]=!0;toString(){return this.string==null&&(this.string=ge.encode(this.multihash.bytes).slice(1)),this.string}toCID(){return _e.createV1(l0,this.multihash)}toBytes(){return this.multihash.bytes}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return Q(this.multihash.bytes,e);if(typeof e=="string")return ar(e).equals(this);if(e?.multihash?.bytes!=null)return Q(this.multihash.bytes,e.multihash.bytes);throw new Error("not valid Id")}[H6](){return`PeerId(${this.toString()})`}},Lr=class extends xn{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},Pr=class extends xn{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.multihash.digest}},Cr=class extends xn{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.multihash.digest}};function ar(r,e){if(e=e??c0,r.charAt(0)==="1"||r.charAt(0)==="Q"){let t=sr(ge.decode(`z${r}`));return r.startsWith("12D")?new Pr({multihash:t}):r.startsWith("16U")?new Cr({multihash:t}):new Lr({multihash:t})}return gt(c0.decode(r))}function gt(r){try{let e=sr(r);if(e.code===Ut.code){if(e.digest.length===Gi)return new Pr({multihash:e});if(e.digest.length===ji)return new Cr({multihash:e})}if(e.code===ne.code)return new Lr({multihash:e})}catch{return K6(_e.decode(r))}throw new Error("Supplied PeerID CID is invalid")}function K6(r){if(r==null||r.multihash==null||r.version==null||r.version===1&&r.code!==l0)throw new Error("Supplied PeerID CID is invalid");let e=r.multihash;if(e.code===ne.code)return new Lr({multihash:r.multihash});if(e.code===Ut.code){if(e.digest.length===Gi)return new Pr({multihash:r.multihash});if(e.digest.length===ji)return new Cr({multihash:r.multihash})}throw new Error("Supplied PeerID CID is invalid")}async function u0(r,e){return r.length===Gi?new Pr({multihash:nt(Ut.code,r),privateKey:e}):r.length===ji?new Cr({multihash:nt(Ut.code,r),privateKey:e}):new Lr({multihash:await ne.digest(r),publicKey:r,privateKey:e})}var t1=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let t=this.index,n=e();return n===void 0&&(this.index=t),n}parseWith(e){let t=e();if(this.index===this.input.length)return t}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let t=this.readChar();if(t===e)return t})}readSeparator(e,t,n){return this.readAtomically(()=>{if(!(t>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,t,n,s){return this.readAtomically(()=>{let i=0,o=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",l=2**(8*s)-1;for(;;){let f=this.readAtomically(()=>{let u=this.readChar();if(u===void 0)return;let h=Number.parseInt(u,e);if(!Number.isNaN(h))return h});if(f===void 0)break;if(i*=e,i+=f,i>l||(o+=1,t!==void 0&&o>t))return}if(o!==0)return!n&&c&&o>1?void 0:i})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let t=0;t<e.length;t++){let n=this.readSeparator(".",t,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[t]=n}return e})}readIPv6Addr(){let e=t=>{for(let n=0;n<t.length/2;n++){let s=n*2;if(n<t.length-3){let o=this.readSeparator(":",n,()=>this.readIPv4Addr());if(o!==void 0)return t[s]=o[0],t[s+1]=o[1],t[s+2]=o[2],t[s+3]=o[3],[s+4,!0]}let i=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(i===void 0)return[s,!1];t[s]=i>>8,t[s+1]=i&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,s]=e(t);if(n===16)return t;if(s||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let i=new Uint8Array(14),o=16-(n+2),[a]=e(i.subarray(0,o));return t.set(i.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var f0=45,q6=15,Dr=new t1;function Yi(r){if(!(r.length>q6))return Dr.new(r).parseWith(()=>Dr.readIPv4Addr())}function Wi(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>f0))return Dr.new(r).parseWith(()=>Dr.readIPv6Addr())}function r1(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>f0))return Dr.new(r).parseWith(()=>Dr.readIPAddr())}function n1(r){return!!Yi(r)}function s1(r){return!!Wi(r)}function i1(r){return!!r1(r)}var d0=ln(h0(),1),$6=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.0.0/29","192.0.0.8/32","192.0.0.9/32","192.0.0.10/32","192.0.0.170/32","192.0.0.171/32","192.0.2.0/24","192.31.196.0/24","192.52.193.0/24","192.88.99.0/24","192.168.0.0/16","192.175.48.0/24","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","240.0.0.0/4","255.255.255.255/32"],z6=$6.map(r=>new d0.Netmask(r));function G6(r){for(let e of z6)if(e.contains(r))return!0;return!1}function j6(r){return/^::$/.test(r)||/^::1$/.test(r)||/^::f{4}:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^::f{4}:0.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^64:ff9b::([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^100::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:2[0-9a-fA-F]:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:db8:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2002:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^f[c-d]([0-9a-fA-F]{2,2}):/i.test(r)||/^fe[8-9a-bA-B][0-9a-fA-F]:/i.test(r)||/^ff([0-9a-fA-F]{2,2}):/i.test(r)}function o1(r){return n1(r)?G6(r):s1(r)?j6(r):void 0}var mt="/",p0=new TextEncoder().encode(mt),a1=p0[0],Ur=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=z(e);else if(e instanceof Uint8Array)this._buf=e;else throw new Error("Invalid key, should be String of Uint8Array");if(t==null&&(t=!0),t&&this.clean(),this._buf.byteLength===0||this._buf[0]!==a1)throw new Error("Invalid key")}toString(e="utf8"){return P(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(mt))}static random(){return new r(Math.random().toString().substring(2))}static asKey(e){return e instanceof Uint8Array||typeof e=="string"?new r(e):typeof e.uint8Array=="function"?new r(e.uint8Array()):null}clean(){if((this._buf==null||this._buf.byteLength===0)&&(this._buf=p0),this._buf[0]!==a1){let e=new Uint8Array(this._buf.byteLength+1);e.fill(a1,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===a1;)this._buf=this._buf.subarray(0,-1)}less(e){let t=this.list(),n=e.list();for(let s=0;s<t.length;s++){if(n.length<s+1)return!1;let i=t[s],o=n[s];if(i<o)return!0;if(i>o)return!1}return t.length<n.length}reverse(){return r.withNamespaces(this.list().slice().reverse())}namespaces(){return this.list()}baseNamespace(){let e=this.namespaces();return e[e.length-1]}list(){return this.toString().split(mt).slice(1)}type(){return Y6(this.baseNamespace())}name(){return W6(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(mt)||(e+=mt),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(mt):new r(e.slice(0,-1).join(mt))}child(e){return this.toString()===mt?e:e.toString()===mt?this:new r(this.toString()+e.toString(),!1)}isAncestorOf(e){return e.toString()===this.toString()?!1:e.toString().startsWith(this.toString())}isDecendantOf(e){return e.toString()===this.toString()?!1:this.toString().startsWith(e.toString())}isTopLevel(){return this.list().length===1}concat(...e){return r.withNamespaces([...this.namespaces(),...Z6(e.map(t=>t.namespaces()))])}};function Y6(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function W6(r){let e=r.split(":");return e[e.length-1]}function Z6(r){return[].concat(...r)}function J(r,e){e==null&&(e=r.reduce((s,i)=>s+i.length,0));let t=be(e),n=0;for(let s of r)t.set(s,n),n+=s.length;return t}var X6=z("/pk/");function c1(r){return{...r,multiaddrs:r.multiaddrs.filter(e=>{let[[t,n]]=e.stringTuples();if(t===53||t===54||t===55)return n!=="localhost";if(t!==4&&t!==6||n==null)return!1;let s=o1(n);return s==null?!0:!s})}}function g0(r){return{...r,multiaddrs:r.multiaddrs.filter(e=>{let[[t,n]]=e.stringTuples();if(n==="localhost")return!0;if(t!==4&&t!==6||n==null)return!1;let s=o1(n);return s??!1})}}function m0(r){return r}async function Mt(r){return(await ne.digest(r)).digest}async function Ye(r){return Mt(r.toBytes())}function Ht(r){return new Ur(`${B2}/${P(r,"base32")}`,!1)}function y0(r){return J([X6,r.toBytes()])}function b0(r){return P(r.subarray(0,4))==="/pk/"}function w0(r){return gt(r.subarray(4))}function Zi(r,e){let t=new Date;return new me(r,e,t).serialize()}function v0(r,e=100){let t;return()=>{clearTimeout(t),t=setTimeout(()=>{r()},e)}}var J6=290,ea=54,ta=55,ra=56,na=4,sa=41;function x0(r){let e=r.stringTuples();for(let t of e)if(t[0]===J6)return!1;if(e[0][0]===ea||e[0][0]===ta||e[0][0]===ra)return!0;if(e[0][0]===na||e[0][0]===sa){let t=o1(`${e[0][1]}`);return t==null||!t}return!1}var l1=class{log;components;validators;selectors;peerRouting;queryManager;network;constructor(e,t){let{validators:n,selectors:s,peerRouting:i,queryManager:o,network:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-fetching`),this.validators=n,this.selectors=s,this.peerRouting=i,this.queryManager=o,this.network=a}async getLocal(e){this.log("getLocal %b",e);let t=Ht(e);this.log("fetching record for key %k",t);let n=await this.components.datastore.get(t);this.log("found %k in local datastore",t);let s=me.deserialize(n);return await _r(this.validators,s),s}async*sendCorrectionRecord(e,t,n,s={}){this.log("sendCorrection for %b",e);let i=Zi(e,n);for(let{value:o,from:a}of t){if(Q(o,n)){this.log("record was ok");continue}if(this.components.peerId.equals(a)){try{let f=Ht(e);this.log(`Storing corrected record for key ${f.toString()}`),await this.components.datastore.put(f,i.subarray())}catch(f){this.log.error("Failed error correcting self",f)}continue}let c=!1,l={type:M.PUT_VALUE,key:e,record:i};for await(let f of this.network.sendRequest(a,l,s))f.name==="PEER_RESPONSE"&&f.record!=null&&Q(f.record.value,me.deserialize(i).value)&&(c=!0),yield f;c||(yield Ve({from:a,error:new x("value not put correctly","ERR_PUT_VALUE_INVALID")},s)),this.log.error("Failed error correcting entry")}}async*put(e,t,n={}){this.log("put key %b value %b",e,t);let s=Zi(e,t),i=Ht(e);this.log(`storing record for key ${i.toString()}`),await this.components.datastore.put(i,s.subarray()),yield*Ft(this.peerRouting.getClosestPeers(e,{signal:n.signal}),o=>Wn(o,a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[],l={type:M.PUT_VALUE,key:e,record:s};this.log("send put to %p",a.peer.id);for await(let f of this.network.sendRequest(a.peer.id,l,n))c.push(f),f.name==="PEER_RESPONSE"&&(f.record!=null&&Q(f.record.value,me.deserialize(s).value)||c.push(Ve({from:a.peer.id,error:new x("value not put correctly","ERR_PUT_VALUE_INVALID")},n)));return c}),o=>bn(o,{ordered:!1,concurrency:3}),async function*(o){for await(let a of o)yield*a})}async*get(e,t={}){this.log("get %b",e);let n=[];for await(let a of this.getMany(e,t))a.name==="VALUE"&&n.push(a),yield a;if(n.length===0)return;let s=n.map(a=>a.value),i=0;try{i=i0(this.selectors,e,s)}catch(a){if(a.code!=="ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY")throw a}let o=s[i];if(this.log("GetValue %b %b",e,o),o==null)throw new x("best value was not found","ERR_NOT_FOUND");yield*this.sendCorrectionRecord(e,n,o,t),yield n[i]}async*getMany(e,t={}){this.log("getMany values for %b",e);try{let i=await this.getLocal(e);yield vn({value:i.value,from:this.components.peerId},t)}catch(i){this.log("error getting local value for %b",e,i)}let n=this,s=async function*({peer:i,signal:o}){for await(let a of n.peerRouting.getValueOrPeers(i,e,{signal:o}))yield a,a.name==="PEER_RESPONSE"&&a.record!=null&&(yield vn({from:i,value:a.record.value},t))};yield*this.queryManager.run(e,s,t)}};function Ji(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 ot=class r{set;constructor(e){if(this.set=new Set,e!=null)for(let t of e)this.set.add(t.toString())}get size(){return this.set.size}[Symbol.iterator](){return this.values()}add(e){this.set.add(e.toString())}clear(){this.set.clear()}delete(e){this.set.delete(e.toString())}entries(){return Ji(this.set.entries(),e=>{let t=ar(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let n=ar(t);e(n,n,this)})}has(e){return this.set.has(e.toString())}values(){return Ji(this.set.values(),e=>ar(e))}intersection(e){let t=new r;for(let n of e)this.has(n)&&t.add(n);return t}difference(e){let t=new r;for(let n of this)e.has(n)||t.add(n);return t}union(e){let t=new r;for(let n of e)t.add(n);for(let n of this)t.add(n);return t}};var ee={get(r=globalThis){let e=r.crypto;if(e==null||e.subtle==null)throw Object.assign(new Error("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api"),{code:"ERR_MISSING_WEB_CRYPTO"});return e}};var E0={SHA1:20,SHA256:32,SHA512:64};var ia={SHA1:"SHA-1",SHA256:"SHA-256",SHA512:"SHA-512"},oa=async(r,e)=>{let t=await ee.get().subtle.sign({name:"HMAC"},r,e);return new Uint8Array(t,0,t.byteLength)};async function A0(r,e){let t=ia[r],n=await ee.get().subtle.importKey("raw",e,{name:"HMAC",hash:{name:t}},!1,["sign"]);return{async digest(s){return oa(n,s)},length:E0[r]}}var ps={};ue(ps,{Ed25519PrivateKey:()=>At,Ed25519PublicKey:()=>fr,MAX_RSA_KEY_SIZE:()=>pr,RsaPrivateKey:()=>Xt,RsaPublicKey:()=>dr,Secp256k1PrivateKey:()=>yr,Secp256k1PublicKey:()=>mr,generateEphemeralKeyPair:()=>e3,generateKeyPair:()=>o7,generateKeyPairFromSeed:()=>a7,importKey:()=>f7,keyStretcher:()=>n3,keysPBM:()=>Wr,marshalPrivateKey:()=>u7,marshalPublicKey:()=>l7,supportedKeys:()=>_t,unmarshalPrivateKey:()=>l4,unmarshalPublicKey:()=>c7});var wo={};ue(wo,{Ed25519PrivateKey:()=>At,Ed25519PublicKey:()=>fr,generateKeyPair:()=>m8,generateKeyPairFromSeed:()=>bo,unmarshalEd25519PrivateKey:()=>p8,unmarshalEd25519PublicKey:()=>g8});function eo(r,e){let t=z(r,"base64urlpad");if(e!=null){if(t.length>e)throw new Error("byte array longer than desired length");t=J([new Uint8Array(e-t.length),t])}return t}function $e(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function Or(r){if(!Number.isSafeInteger(r)||r<0)throw new Error(`positive integer expected, not ${r}`)}function ca(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Vr(r,...e){if(!ca(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function u1(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");Or(r.outputLen),Or(r.blockLen)}function Fr(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function B0(r,e){Vr(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var f1=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;var Hr=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),We=(r,e)=>r<<32-e|r>>>e;var _u=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;var la=async()=>{};async function I0(r,e,t){let n=Date.now();for(let s=0;s<r;s++){t(s);let i=Date.now()-n;i>=0&&i<e||(await la(),n+=i)}}function to(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Kt(r){return typeof r=="string"&&(r=to(r)),Vr(r),r}function h1(...r){let e=0;for(let n=0;n<r.length;n++){let s=r[n];Vr(s),e+=s.length}let t=new Uint8Array(e);for(let n=0,s=0;n<r.length;n++){let i=r[n];t.set(i,s),s+=i.length}return t}var Mr=class{clone(){return this._cloneInto()}},ua={}.toString;function S0(r,e){if(e!==void 0&&ua.call(e)!=="[object Object]")throw new Error("Options should be object or undefined");return Object.assign(r,e)}function d1(r){let e=n=>r().update(Kt(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function Kr(r=32){if(f1&&typeof f1.getRandomValues=="function")return f1.getRandomValues(new Uint8Array(r));throw new Error("crypto.getRandomValues must be defined")}function fa(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let s=BigInt(32),i=BigInt(4294967295),o=Number(t>>s&i),a=Number(t&i),c=n?4:0,l=n?0:4;r.setUint32(e+c,o,n),r.setUint32(e+l,a,n)}var R0=(r,e,t)=>r&e^~r&t,k0=(r,e,t)=>r&e^r&t^e&t,qr=class extends Mr{constructor(e,t,n,s){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=s,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Hr(this.buffer)}update(e){Fr(this);let{view:t,buffer:n,blockLen:s}=this;e=Kt(e);let i=e.length;for(let o=0;o<i;){let a=Math.min(s-this.pos,i-o);if(a===s){let c=Hr(e);for(;s<=i-o;o+=s)this.process(c,o);continue}n.set(e.subarray(o,o+a),this.pos),this.pos+=a,o+=a,this.pos===s&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Fr(this),B0(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:s,isLE:i}=this,{pos:o}=this;t[o++]=128,this.buffer.subarray(o).fill(0),this.padOffset>s-o&&(this.process(n,0),o=0);for(let u=o;u<s;u++)t[u]=0;fa(n,s-8,BigInt(this.length*8),i),this.process(n,0);let a=Hr(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let l=c/4,f=this.get();if(l>f.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<l;u++)a.setUint32(4*u,f[u],i)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:s,finished:i,destroyed:o,pos:a}=this;return e.length=s,e.pos=a,e.finished=i,e.destroyed=o,s%t&&e.buffer.set(n),e}};var p1=BigInt(4294967295),ro=BigInt(32);function N0(r,e=!1){return e?{h:Number(r&p1),l:Number(r>>ro&p1)}:{h:Number(r>>ro&p1)|0,l:Number(r&p1)|0}}function ha(r,e=!1){let t=new Uint32Array(r.length),n=new Uint32Array(r.length);for(let s=0;s<r.length;s++){let{h:i,l:o}=N0(r[s],e);[t[s],n[s]]=[i,o]}return[t,n]}var da=(r,e)=>BigInt(r>>>0)<<ro|BigInt(e>>>0),pa=(r,e,t)=>r>>>t,ga=(r,e,t)=>r<<32-t|e>>>t,ma=(r,e,t)=>r>>>t|e<<32-t,ya=(r,e,t)=>r<<32-t|e>>>t,ba=(r,e,t)=>r<<64-t|e>>>t-32,wa=(r,e,t)=>r>>>t-32|e<<64-t,va=(r,e)=>e,xa=(r,e)=>r,Ea=(r,e,t)=>r<<t|e>>>32-t,Aa=(r,e,t)=>e<<t|r>>>32-t,Ba=(r,e,t)=>e<<t-32|r>>>64-t,Ia=(r,e,t)=>r<<t-32|e>>>64-t;function Sa(r,e,t,n){let s=(e>>>0)+(n>>>0);return{h:r+t+(s/2**32|0)|0,l:s|0}}var Ra=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),ka=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,Na=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),Ta=(r,e,t,n,s)=>e+t+n+s+(r/2**32|0)|0,_a=(r,e,t,n,s)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(s>>>0),La=(r,e,t,n,s,i)=>e+t+n+s+i+(r/2**32|0)|0;var Pa={fromBig:N0,split:ha,toBig:da,shrSH:pa,shrSL:ga,rotrSH:ma,rotrSL:ya,rotrBH:ba,rotrBL:wa,rotr32H:va,rotr32L:xa,rotlSH:Ea,rotlSL:Aa,rotlBH:Ba,rotlBL:Ia,add:Sa,add3L:Ra,add3H:ka,add4L:Na,add4H:Ta,add5H:La,add5L:_a},D=Pa;var[Ca,Da]=D.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(r=>BigInt(r))),qt=new Uint32Array(80),$t=new Uint32Array(80),no=class extends qr{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){let{Ah:e,Al:t,Bh:n,Bl:s,Ch:i,Cl:o,Dh:a,Dl:c,Eh:l,El:f,Fh:u,Fl:h,Gh:m,Gl:p,Hh:d,Hl:g}=this;return[e,t,n,s,i,o,a,c,l,f,u,h,m,p,d,g]}set(e,t,n,s,i,o,a,c,l,f,u,h,m,p,d,g){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=s|0,this.Ch=i|0,this.Cl=o|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=f|0,this.Fh=u|0,this.Fl=h|0,this.Gh=m|0,this.Gl=p|0,this.Hh=d|0,this.Hl=g|0}process(e,t){for(let b=0;b<16;b++,t+=4)qt[b]=e.getUint32(t),$t[b]=e.getUint32(t+=4);for(let b=16;b<80;b++){let S=qt[b-15]|0,E=$t[b-15]|0,I=D.rotrSH(S,E,1)^D.rotrSH(S,E,8)^D.shrSH(S,E,7),N=D.rotrSL(S,E,1)^D.rotrSL(S,E,8)^D.shrSL(S,E,7),_=qt[b-2]|0,j=$t[b-2]|0,q=D.rotrSH(_,j,19)^D.rotrBH(_,j,61)^D.shrSH(_,j,6),U=D.rotrSL(_,j,19)^D.rotrBL(_,j,61)^D.shrSL(_,j,6),ce=D.add4L(N,U,$t[b-7],$t[b-16]),ae=D.add4H(ce,I,q,qt[b-7],qt[b-16]);qt[b]=ae|0,$t[b]=ce|0}let{Ah:n,Al:s,Bh:i,Bl:o,Ch:a,Cl:c,Dh:l,Dl:f,Eh:u,El:h,Fh:m,Fl:p,Gh:d,Gl:g,Hh:y,Hl:v}=this;for(let b=0;b<80;b++){let S=D.rotrSH(u,h,14)^D.rotrSH(u,h,18)^D.rotrBH(u,h,41),E=D.rotrSL(u,h,14)^D.rotrSL(u,h,18)^D.rotrBL(u,h,41),I=u&m^~u&d,N=h&p^~h&g,_=D.add5L(v,E,N,Da[b],$t[b]),j=D.add5H(_,y,S,I,Ca[b],qt[b]),q=_|0,U=D.rotrSH(n,s,28)^D.rotrBH(n,s,34)^D.rotrBH(n,s,39),ce=D.rotrSL(n,s,28)^D.rotrBL(n,s,34)^D.rotrBL(n,s,39),ae=n&i^n&a^i&a,He=s&o^s&c^o&c;y=d|0,v=g|0,d=m|0,g=p|0,m=u|0,p=h|0,{h:u,l:h}=D.add(l|0,f|0,j|0,q|0),l=a|0,f=c|0,a=i|0,c=o|0,i=n|0,o=s|0;let A=D.add3L(q,ce,He);n=D.add3H(A,j,U,ae),s=A|0}({h:n,l:s}=D.add(this.Ah|0,this.Al|0,n|0,s|0)),{h:i,l:o}=D.add(this.Bh|0,this.Bl|0,i|0,o|0),{h:a,l:c}=D.add(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:f}=D.add(this.Dh|0,this.Dl|0,l|0,f|0),{h:u,l:h}=D.add(this.Eh|0,this.El|0,u|0,h|0),{h:m,l:p}=D.add(this.Fh|0,this.Fl|0,m|0,p|0),{h:d,l:g}=D.add(this.Gh|0,this.Gl|0,d|0,g|0),{h:y,l:v}=D.add(this.Hh|0,this.Hl|0,y|0,v|0),this.set(n,s,i,o,a,c,l,f,u,h,m,p,d,g,y,v)}roundClean(){qt.fill(0),$t.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}};var $r=d1(()=>new no);var m1={};ue(m1,{abytes:()=>zr,bitGet:()=>Ka,bitLen:()=>Ha,bitMask:()=>An,bitSet:()=>qa,bytesToHex:()=>bt,bytesToNumberBE:()=>wt,bytesToNumberLE:()=>Gt,concatBytes:()=>vt,createHmacDrbg:()=>oo,ensureBytes:()=>oe,equalBytes:()=>Fa,hexToBytes:()=>cr,hexToNumber:()=>io,isBytes:()=>zt,numberToBytesBE:()=>jt,numberToBytesLE:()=>lr,numberToHexUnpadded:()=>P0,numberToVarBytesBE:()=>Va,utf8ToBytes:()=>Ma,validateObject:()=>at});var L0=BigInt(0),g1=BigInt(1),Ua=BigInt(2);function zt(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function zr(r){if(!zt(r))throw new Error("Uint8Array expected")}var Oa=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function bt(r){zr(r);let e="";for(let t=0;t<r.length;t++)e+=Oa[r[t]];return e}function P0(r){let e=r.toString(16);return e.length&1?`0${e}`:e}function io(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return BigInt(r===""?"0":`0x${r}`)}var yt={_0:48,_9:57,_A:65,_F:70,_a:97,_f:102};function T0(r){if(r>=yt._0&&r<=yt._9)return r-yt._0;if(r>=yt._A&&r<=yt._F)return r-(yt._A-10);if(r>=yt._a&&r<=yt._f)return r-(yt._a-10)}function cr(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);let e=r.length,t=e/2;if(e%2)throw new Error("padded hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(t);for(let s=0,i=0;s<t;s++,i+=2){let o=T0(r.charCodeAt(i)),a=T0(r.charCodeAt(i+1));if(o===void 0||a===void 0){let c=r[i]+r[i+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+i)}n[s]=o*16+a}return n}function wt(r){return io(bt(r))}function Gt(r){return zr(r),io(bt(Uint8Array.from(r).reverse()))}function jt(r,e){return cr(r.toString(16).padStart(e*2,"0"))}function lr(r,e){return jt(r,e).reverse()}function Va(r){return cr(P0(r))}function oe(r,e,t){let n;if(typeof e=="string")try{n=cr(e)}catch(i){throw new Error(`${r} must be valid hex string, got "${e}". Cause: ${i}`)}else if(zt(e))n=Uint8Array.from(e);else throw new Error(`${r} must be hex string or Uint8Array`);let s=n.length;if(typeof t=="number"&&s!==t)throw new Error(`${r} expected ${t} bytes, got ${s}`);return n}function vt(...r){let e=0;for(let n=0;n<r.length;n++){let s=r[n];zr(s),e+=s.length}let t=new Uint8Array(e);for(let n=0,s=0;n<r.length;n++){let i=r[n];t.set(i,s),s+=i.length}return t}function Fa(r,e){if(r.length!==e.length)return!1;let t=0;for(let n=0;n<r.length;n++)t|=r[n]^e[n];return t===0}function Ma(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Ha(r){let e;for(e=0;r>L0;r>>=g1,e+=1);return e}function Ka(r,e){return r>>BigInt(e)&g1}function qa(r,e,t){return r|(t?g1:L0)<<BigInt(e)}var An=r=>(Ua<<BigInt(r-1))-g1,so=r=>new Uint8Array(r),_0=r=>Uint8Array.from(r);function oo(r,e,t){if(typeof r!="number"||r<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof t!="function")throw new Error("hmacFn must be a function");let n=so(r),s=so(r),i=0,o=()=>{n.fill(1),s.fill(0),i=0},a=(...u)=>t(s,n,...u),c=(u=so())=>{s=a(_0([0]),u),n=a(),u.length!==0&&(s=a(_0([1]),u),n=a())},l=()=>{if(i++>=1e3)throw new Error("drbg: tried 1000 values");let u=0,h=[];for(;u<e;){n=a();let m=n.slice();h.push(m),u+=n.length}return vt(...h)};return(u,h)=>{o(),c(u);let m;for(;!(m=h(l()));)c();return o(),m}}var $a={bigint:r=>typeof r=="bigint",function:r=>typeof r=="function",boolean:r=>typeof r=="boolean",string:r=>typeof r=="string",stringOrUint8Array:r=>typeof r=="string"||zt(r),isSafeInteger:r=>Number.isSafeInteger(r),array:r=>Array.isArray(r),field:(r,e)=>e.Fp.isValid(r),hash:r=>typeof r=="function"&&Number.isSafeInteger(r.outputLen)};function at(r,e,t={}){let n=(s,i,o)=>{let a=$a[i];if(typeof a!="function")throw new Error(`Invalid validator "${i}", expected function`);let c=r[s];if(!(o&&c===void 0)&&!a(c,r))throw new Error(`Invalid param ${String(s)}=${c} (${typeof c}), expected ${i}`)};for(let[s,i]of Object.entries(e))n(s,i,!1);for(let[s,i]of Object.entries(t))n(s,i,!0);return r}var ye=BigInt(0),te=BigInt(1),ur=BigInt(2),za=BigInt(3),ao=BigInt(4),C0=BigInt(5),D0=BigInt(8),Ga=BigInt(9),ja=BigInt(16);function Z(r,e){let t=r%e;return t>=ye?t:e+t}function Ya(r,e,t){if(t<=ye||e<ye)throw new Error("Expected power/modulo > 0");if(t===te)return ye;let n=te;for(;e>ye;)e&te&&(n=n*r%t),r=r*r%t,e>>=te;return n}function re(r,e,t){let n=r;for(;e-- >ye;)n*=n,n%=t;return n}function y1(r,e){if(r===ye||e<=ye)throw new Error(`invert: expected positive integers, got n=${r} mod=${e}`);let t=Z(r,e),n=e,s=ye,i=te,o=te,a=ye;for(;t!==ye;){let l=n/t,f=n%t,u=s-o*l,h=i-a*l;n=t,t=f,s=o,i=a,o=u,a=h}if(n!==te)throw new Error("invert: does not exist");return Z(s,e)}function Wa(r){let e=(r-te)/ur,t,n,s;for(t=r-te,n=0;t%ur===ye;t/=ur,n++);for(s=ur;s<r&&Ya(s,e,r)!==r-te;s++);if(n===1){let o=(r+te)/ao;return function(c,l){let f=c.pow(l,o);if(!c.eql(c.sqr(f),l))throw new Error("Cannot find square root");return f}}let i=(t+te)/ur;return function(a,c){if(a.pow(c,e)===a.neg(a.ONE))throw new Error("Cannot find square root");let l=n,f=a.pow(a.mul(a.ONE,s),t),u=a.pow(c,i),h=a.pow(c,t);for(;!a.eql(h,a.ONE);){if(a.eql(h,a.ZERO))return a.ZERO;let m=1;for(let d=a.sqr(h);m<l&&!a.eql(d,a.ONE);m++)d=a.sqr(d);let p=a.pow(f,te<<BigInt(l-m-1));f=a.sqr(p),u=a.mul(u,p),h=a.mul(h,f),l=m}return u}}function Za(r){if(r%ao===za){let e=(r+te)/ao;return function(n,s){let i=n.pow(s,e);if(!n.eql(n.sqr(i),s))throw new Error("Cannot find square root");return i}}if(r%D0===C0){let e=(r-C0)/D0;return function(n,s){let i=n.mul(s,ur),o=n.pow(i,e),a=n.mul(s,o),c=n.mul(n.mul(a,ur),o),l=n.mul(a,n.sub(c,n.ONE));if(!n.eql(n.sqr(l),s))throw new Error("Cannot find square root");return l}}return r%ja,Wa(r)}var U0=(r,e)=>(Z(r,e)&te)===te,Qa=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function co(r){let e={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},t=Qa.reduce((n,s)=>(n[s]="function",n),e);return at(r,t)}function Xa(r,e,t){if(t<ye)throw new Error("Expected power > 0");if(t===ye)return r.ONE;if(t===te)return e;let n=r.ONE,s=e;for(;t>ye;)t&te&&(n=r.mul(n,s)),s=r.sqr(s),t>>=te;return n}function Ja(r,e){let t=new Array(e.length),n=e.reduce((i,o,a)=>r.is0(o)?i:(t[a]=i,r.mul(i,o)),r.ONE),s=r.inv(n);return e.reduceRight((i,o,a)=>r.is0(o)?i:(t[a]=r.mul(i,t[a]),r.mul(i,o)),s),t}function lo(r,e){let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}function b1(r,e,t=!1,n={}){if(r<=ye)throw new Error(`Expected Field ORDER > 0, got ${r}`);let{nBitLength:s,nByteLength:i}=lo(r,e);if(i>2048)throw new Error("Field lengths over 2048 bytes are not supported");let o=Za(r),a=Object.freeze({ORDER:r,BITS:s,BYTES:i,MASK:An(s),ZERO:ye,ONE:te,create:c=>Z(c,r),isValid:c=>{if(typeof c!="bigint")throw new Error(`Invalid field element: expected bigint, got ${typeof c}`);return ye<=c&&c<r},is0:c=>c===ye,isOdd:c=>(c&te)===te,neg:c=>Z(-c,r),eql:(c,l)=>c===l,sqr:c=>Z(c*c,r),add:(c,l)=>Z(c+l,r),sub:(c,l)=>Z(c-l,r),mul:(c,l)=>Z(c*l,r),pow:(c,l)=>Xa(a,c,l),div:(c,l)=>Z(c*y1(l,r),r),sqrN:c=>c*c,addN:(c,l)=>c+l,subN:(c,l)=>c-l,mulN:(c,l)=>c*l,inv:c=>y1(c,r),sqrt:n.sqrt||(c=>o(a,c)),invertBatch:c=>Ja(a,c),cmov:(c,l,f)=>f?l:c,toBytes:c=>t?lr(c,i):jt(c,i),fromBytes:c=>{if(c.length!==i)throw new Error(`Fp.fromBytes: expected ${i}, got ${c.length}`);return t?Gt(c):wt(c)}});return Object.freeze(a)}function O0(r,e){if(!r.isOdd)throw new Error("Field doesn't have isOdd");let t=r.sqrt(e);return r.isOdd(t)?r.neg(t):t}function V0(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let e=r.toString(2).length;return Math.ceil(e/8)}function uo(r){let e=V0(r);return e+Math.ceil(e/2)}function F0(r,e,t=!1){let n=r.length,s=V0(e),i=uo(e);if(n<16||n<i||n>1024)throw new Error(`expected ${i}-1024 bytes of input, got ${n}`);let o=t?wt(r):Gt(r),a=Z(o,e-te)+te;return t?lr(a,s):jt(a,s)}var t8=BigInt(0),fo=BigInt(1);function w1(r,e){let t=(s,i)=>{let o=i.negate();return s?o:i},n=s=>{let i=Math.ceil(e/s)+1,o=2**(s-1);return{windows:i,windowSize:o}};return{constTimeNegate:t,unsafeLadder(s,i){let o=r.ZERO,a=s;for(;i>t8;)i&fo&&(o=o.add(a)),a=a.double(),i>>=fo;return o},precomputeWindow(s,i){let{windows:o,windowSize:a}=n(i),c=[],l=s,f=l;for(let u=0;u<o;u++){f=l,c.push(f);for(let h=1;h<a;h++)f=f.add(l),c.push(f);l=f.double()}return c},wNAF(s,i,o){let{windows:a,windowSize:c}=n(s),l=r.ZERO,f=r.BASE,u=BigInt(2**s-1),h=2**s,m=BigInt(s);for(let p=0;p<a;p++){let d=p*c,g=Number(o&u);o>>=m,g>c&&(g-=h,o+=fo);let y=d,v=d+Math.abs(g)-1,b=p%2!==0,S=g<0;g===0?f=f.add(t(b,i[y])):l=l.add(t(S,i[v]))}return{p:l,f}},wNAFCached(s,i,o,a){let c=s._WINDOW_SIZE||1,l=i.get(s);return l||(l=this.precomputeWindow(s,c),c!==1&&i.set(s,a(l))),this.wNAF(c,l,o)}}}function Bn(r){return co(r.Fp),at(r,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...lo(r.n,r.nBitLength),...r,p:r.Fp.ORDER})}var Ze=BigInt(0),Fe=BigInt(1),v1=BigInt(2),r8=BigInt(8),n8={zip215:!0};function s8(r){let e=Bn(r);return at(r,{hash:"function",a:"bigint",d:"bigint",randomBytes:"function"},{adjustScalarBytes:"function",domain:"function",uvRatio:"function",mapToCurve:"function"}),Object.freeze({...e})}function x1(r){let e=s8(r),{Fp:t,n,prehash:s,hash:i,randomBytes:o,nByteLength:a,h:c}=e,l=v1<<BigInt(a*8)-Fe,f=t.create,u=e.uvRatio||((B,w)=>{try{return{isValid:!0,value:t.sqrt(B*t.inv(w))}}catch{return{isValid:!1,value:Ze}}}),h=e.adjustScalarBytes||(B=>B),m=e.domain||((B,w,k)=>{if(w.length||k)throw new Error("Contexts/pre-hash are not supported");return B}),p=B=>typeof B=="bigint"&&Ze<B,d=(B,w)=>p(B)&&p(w)&&B<w,g=B=>B===Ze||d(B,l);function y(B,w){if(d(B,w))return B;throw new Error(`Expected valid scalar < ${w}, got ${typeof B} ${B}`)}function v(B){return B===Ze?B:y(B,n)}let b=new Map;function S(B){if(!(B instanceof E))throw new Error("ExtendedPoint expected")}class E{constructor(w,k,L,C){if(this.ex=w,this.ey=k,this.ez=L,this.et=C,!g(w))throw new Error("x required");if(!g(k))throw new Error("y required");if(!g(L))throw new Error("z required");if(!g(C))throw new Error("t required")}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static fromAffine(w){if(w instanceof E)throw new Error("extended point not allowed");let{x:k,y:L}=w||{};if(!g(k)||!g(L))throw new Error("invalid affine point");return new E(k,L,Fe,f(k*L))}static normalizeZ(w){let k=t.invertBatch(w.map(L=>L.ez));return w.map((L,C)=>L.toAffine(k[C])).map(E.fromAffine)}_setWindowSize(w){this._WINDOW_SIZE=w,b.delete(this)}assertValidity(){let{a:w,d:k}=e;if(this.is0())throw new Error("bad point: ZERO");let{ex:L,ey:C,ez:V,et:F}=this,G=f(L*L),K=f(C*C),$=f(V*V),le=f($*$),se=f(G*w),ve=f($*f(se+K)),xe=f(le+f(k*f(G*K)));if(ve!==xe)throw new Error("bad point: equation left != right (1)");let pe=f(L*C),Ae=f(V*F);if(pe!==Ae)throw new Error("bad point: equation left != right (2)")}equals(w){S(w);let{ex:k,ey:L,ez:C}=this,{ex:V,ey:F,ez:G}=w,K=f(k*G),$=f(V*C),le=f(L*G),se=f(F*C);return K===$&&le===se}is0(){return this.equals(E.ZERO)}negate(){return new E(f(-this.ex),this.ey,this.ez,f(-this.et))}double(){let{a:w}=e,{ex:k,ey:L,ez:C}=this,V=f(k*k),F=f(L*L),G=f(v1*f(C*C)),K=f(w*V),$=k+L,le=f(f($*$)-V-F),se=K+F,ve=se-G,xe=K-F,pe=f(le*ve),Ae=f(se*xe),ht=f(le*xe),rr=f(ve*se);return new E(pe,Ae,rr,ht)}add(w){S(w);let{a:k,d:L}=e,{ex:C,ey:V,ez:F,et:G}=this,{ex:K,ey:$,ez:le,et:se}=w;if(k===BigInt(-1)){let c2=f((V-C)*($+K)),l2=f((V+C)*($-K)),Xs=f(l2-c2);if(Xs===Ze)return this.double();let u2=f(F*v1*se),f2=f(G*v1*le),h2=f2+u2,d2=l2+c2,p2=f2-u2,e5=f(h2*Xs),t5=f(d2*p2),r5=f(h2*p2),n5=f(Xs*d2);return new E(e5,t5,n5,r5)}let ve=f(C*K),xe=f(V*$),pe=f(G*L*se),Ae=f(F*le),ht=f((C+V)*(K+$)-ve-xe),rr=Ae-pe,an=Ae+pe,a2=f(xe-k*ve),Z4=f(ht*rr),Q4=f(an*a2),X4=f(ht*a2),J4=f(rr*an);return new E(Z4,Q4,J4,X4)}subtract(w){return this.add(w.negate())}wNAF(w){return _.wNAFCached(this,b,w,E.normalizeZ)}multiply(w){let{p:k,f:L}=this.wNAF(y(w,n));return E.normalizeZ([k,L])[0]}multiplyUnsafe(w){let k=v(w);return k===Ze?N:this.equals(N)||k===Fe?this:this.equals(I)?this.wNAF(k).p:_.unsafeLadder(this,k)}isSmallOrder(){return this.multiplyUnsafe(c).is0()}isTorsionFree(){return _.unsafeLadder(this,n).is0()}toAffine(w){let{ex:k,ey:L,ez:C}=this,V=this.is0();w==null&&(w=V?r8:t.inv(C));let F=f(k*w),G=f(L*w),K=f(C*w);if(V)return{x:Ze,y:Fe};if(K!==Fe)throw new Error("invZ was invalid");return{x:F,y:G}}clearCofactor(){let{h:w}=e;return w===Fe?this:this.multiplyUnsafe(w)}static fromHex(w,k=!1){let{d:L,a:C}=e,V=t.BYTES;w=oe("pointHex",w,V);let F=w.slice(),G=w[V-1];F[V-1]=G&-129;let K=Gt(F);K===Ze||(k?y(K,l):y(K,t.ORDER));let $=f(K*K),le=f($-Fe),se=f(L*$-C),{isValid:ve,value:xe}=u(le,se);if(!ve)throw new Error("Point.fromHex: invalid y coordinate");let pe=(xe&Fe)===Fe,Ae=(G&128)!==0;if(!k&&xe===Ze&&Ae)throw new Error("Point.fromHex: x=0 and x_0=1");return Ae!==pe&&(xe=f(-xe)),E.fromAffine({x:xe,y:K})}static fromPrivateKey(w){return U(w).point}toRawBytes(){let{x:w,y:k}=this.toAffine(),L=lr(k,t.BYTES);return L[L.length-1]|=w&Fe?128:0,L}toHex(){return bt(this.toRawBytes())}}E.BASE=new E(e.Gx,e.Gy,Fe,f(e.Gx*e.Gy)),E.ZERO=new E(Ze,Fe,Fe,Ze);let{BASE:I,ZERO:N}=E,_=w1(E,a*8);function j(B){return Z(B,n)}function q(B){return j(Gt(B))}function U(B){let w=a;B=oe("private key",B,w);let k=oe("hashed private key",i(B),2*w),L=h(k.slice(0,w)),C=k.slice(w,2*w),V=q(L),F=I.multiply(V),G=F.toRawBytes();return{head:L,prefix:C,scalar:V,point:F,pointBytes:G}}function ce(B){return U(B).pointBytes}function ae(B=new Uint8Array,...w){let k=vt(...w);return q(i(m(k,oe("context",B),!!s)))}function He(B,w,k={}){B=oe("message",B),s&&(B=s(B));let{prefix:L,scalar:C,pointBytes:V}=U(w),F=ae(k.context,L,B),G=I.multiply(F).toRawBytes(),K=ae(k.context,G,V,B),$=j(F+K*C);v($);let le=vt(G,lr($,t.BYTES));return oe("result",le,a*2)}let A=n8;function T(B,w,k,L=A){let{context:C,zip215:V}=L,F=t.BYTES;B=oe("signature",B,2*F),w=oe("message",w),s&&(w=s(w));let G=Gt(B.slice(F,2*F)),K,$,le;try{K=E.fromHex(k,V),$=E.fromHex(B.slice(0,F),V),le=I.multiplyUnsafe(G)}catch{return!1}if(!V&&K.isSmallOrder())return!1;let se=ae(C,$.toRawBytes(),K.toRawBytes(),w);return $.add(K.multiplyUnsafe(se)).subtract(le).clearCofactor().equals(E.ZERO)}return I._setWindowSize(8),{CURVE:e,getPublicKey:ce,sign:He,verify:T,ExtendedPoint:E,utils:{getExtendedPublicKey:U,randomPrivateKey:()=>o(t.BYTES),precompute(B=8,w=E.BASE){return w._setWindowSize(B),w.multiply(BigInt(3)),w}}}}var po=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),M0=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),Ju=BigInt(0),i8=BigInt(1),ho=BigInt(2),o8=BigInt(5),H0=BigInt(10),a8=BigInt(20),c8=BigInt(40),K0=BigInt(80);function l8(r){let e=po,n=r*r%e*r%e,s=re(n,ho,e)*n%e,i=re(s,i8,e)*r%e,o=re(i,o8,e)*i%e,a=re(o,H0,e)*o%e,c=re(a,a8,e)*a%e,l=re(c,c8,e)*c%e,f=re(l,K0,e)*l%e,u=re(f,K0,e)*l%e,h=re(u,H0,e)*o%e;return{pow_p_5_8:re(h,ho,e)*r%e,b2:n}}function u8(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function f8(r,e){let t=po,n=Z(e*e*e,t),s=Z(n*n*e,t),i=l8(r*s).pow_p_5_8,o=Z(r*n*i,t),a=Z(e*o*o,t),c=o,l=Z(o*M0,t),f=a===r,u=a===Z(-r,t),h=a===Z(-r*M0,t);return f&&(o=c),(u||h)&&(o=l),U0(o,t)&&(o=Z(-o,t)),{isValid:f||u,value:o}}var xt=b1(po,void 0,!0),go={a:BigInt(-1),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),Fp:xt,n:BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),h:BigInt(8),Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960"),hash:$r,randomBytes:Kr,adjustScalarBytes:u8,uvRatio:f8},Gr=x1(go);function q0(r,e,t){if(e.length>255)throw new Error("Context is too big");return h1(to("SigEd25519 no Ed25519 collisions"),new Uint8Array([t?1:0,e.length]),e,r)}var ef=x1({...go,domain:q0}),tf=x1({...go,domain:q0,prehash:$r});var h8=(xt.ORDER+BigInt(3))/BigInt(8),rf=xt.pow(ho,h8),nf=xt.sqrt(xt.neg(xt.ONE)),sf=(xt.ORDER-BigInt(5))/BigInt(8),of=BigInt(486662);var af=O0(xt,xt.neg(BigInt(486664)));var cf=BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235"),lf=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),uf=BigInt("1159843021668779879193775521855586647937357759715417654439879720876111806838"),ff=BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952");var hf=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");var jr=32,Et=64,E1=32;function $0(){let r=Gr.utils.randomPrivateKey(),e=Gr.getPublicKey(r);return{privateKey:Y0(r,e),publicKey:e}}function z0(r){if(r.length!==E1)throw new TypeError('"seed" must be 32 bytes in length.');if(!(r instanceof Uint8Array))throw new TypeError('"seed" must be a node.js Buffer, or Uint8Array.');let e=r,t=Gr.getPublicKey(e);return{privateKey:Y0(e,t),publicKey:t}}function G0(r,e){let t=r.subarray(0,E1);return Gr.sign(e instanceof Uint8Array?e:e.subarray(),t)}function j0(r,e,t){return Gr.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function Y0(r,e){let t=new Uint8Array(Et);for(let n=0;n<E1;n++)t[n]=r[n],t[E1+n]=e[n];return t}var mo={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function A1(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,s=r?.digest??"SHA-256",i=r?.saltLength??16,o=r?.iterations??32767,a=ee.get();t*=8;async function c(u,h){let m=a.getRandomValues(new Uint8Array(i)),p=a.getRandomValues(new Uint8Array(n)),d={name:e,iv:p};typeof h=="string"&&(h=z(h));let g;if(h.length===0){g=await a.subtle.importKey("jwk",mo,{name:"AES-GCM"},!0,["encrypt"]);try{let v={name:"PBKDF2",salt:m,iterations:o,hash:{name:s}},b=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(v,b,{name:e,length:t},!0,["encrypt"])}catch{g=await a.subtle.importKey("jwk",mo,{name:"AES-GCM"},!0,["encrypt"])}}else{let v={name:"PBKDF2",salt:m,iterations:o,hash:{name:s}},b=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(v,b,{name:e,length:t},!0,["encrypt"])}let y=await a.subtle.encrypt(d,g,u);return J([m,d.iv,new Uint8Array(y)])}async function l(u,h){let m=u.subarray(0,i),p=u.subarray(i,i+n),d=u.subarray(i+n),g={name:e,iv:p};typeof h=="string"&&(h=z(h));let y;if(h.length===0)try{let b={name:"PBKDF2",salt:m,iterations:o,hash:{name:s}},S=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);y=await a.subtle.deriveKey(b,S,{name:e,length:t},!0,["decrypt"])}catch{y=await a.subtle.importKey("jwk",mo,{name:"AES-GCM"},!0,["decrypt"])}else{let b={name:"PBKDF2",salt:m,iterations:o,hash:{name:s}},S=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);y=await a.subtle.deriveKey(b,S,{name:e,length:t},!0,["decrypt"])}let v=await a.subtle.decrypt(g,y,d);return new Uint8Array(v)}return{encrypt:c,decrypt:l}}async function Yr(r,e){let n=await A1().encrypt(r,e);return un.encode(n)}var Wr={};ue(Wr,{KeyType:()=>X,PrivateKey:()=>Xe,PublicKey:()=>Qe});var X;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(X||(X={}));var yo;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(yo||(yo={}));(function(r){r.codec=()=>Rr(yo)})(X||(X={}));var Qe;(function(r){let e;r.codec=()=>(e==null&&(e=it((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),X.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),s.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let s={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let o=t.uint32();switch(o>>>3){case 1:s.Type=X.codec().decode(t);break;case 2:s.Data=t.bytes();break;default:t.skipType(o&7);break}}return s})),e),r.encode=t=>st(t,r.codec()),r.decode=t=>rt(t,r.codec())})(Qe||(Qe={}));var Xe;(function(r){let e;r.codec=()=>(e==null&&(e=it((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),X.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),s.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let s={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let o=t.uint32();switch(o>>>3){case 1:s.Type=X.codec().decode(t);break;case 2:s.Data=t.bytes();break;default:t.skipType(o&7);break}}return s})),e),r.encode=t=>st(t,r.codec()),r.decode=t=>rt(t,r.codec())})(Xe||(Xe={}));var fr=class{_key;constructor(e){this._key=Zr(e,jr)}verify(e,t){return j0(this._key,t,e)}marshal(){return this._key}get bytes(){return Qe.encode({Type:X.Ed25519,Data:this.marshal()}).subarray()}equals(e){return Q(this.bytes,e.bytes)}hash(){let e=ne.digest(this.bytes);return $e(e)?e.then(({bytes:t})=>t):e.bytes}},At=class{_key;_publicKey;constructor(e,t){this._key=Zr(e,Et),this._publicKey=Zr(t,jr)}sign(e){return G0(this._key,e)}get public(){return new fr(this._publicKey)}marshal(){return this._key}get bytes(){return Xe.encode({Type:X.Ed25519,Data:this.marshal()}).subarray()}equals(e){return Q(this.bytes,e.bytes)}async hash(){let e=ne.digest(this.bytes),t;return $e(e)?{bytes:t}=await e:t=e.bytes,t}async id(){let e=Ut.digest(this.public.bytes);return ge.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Yr(this.bytes,e);throw new x(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function p8(r){if(r.length>Et){r=Zr(r,Et+jr);let n=r.subarray(0,Et),s=r.subarray(Et,r.length);return new At(n,s)}r=Zr(r,Et);let e=r.subarray(0,Et),t=r.subarray(jr);return new At(e,t)}function g8(r){return r=Zr(r,jr),new fr(r)}async function m8(){let{privateKey:r,publicKey:e}=$0();return new At(r,e)}async function bo(r){let{privateKey:e,publicKey:t}=z0(r);return new At(e,t)}function Zr(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new x(`Key must be a Uint8Array of length ${e}, got ${r.length}`,"ERR_INVALID_KEY_TYPE");return r}var Z0={"P-256":256,"P-384":384,"P-521":521},y8=Object.keys(Z0),vo=y8.join(" / ");async function Q0(r){if(r!=="P-256"&&r!=="P-384"&&r!=="P-521")throw new x(`Unknown curve: ${r}. Must be ${vo}`,"ERR_INVALID_CURVE");let e=await ee.get().subtle.generateKey({name:"ECDH",namedCurve:r},!0,["deriveBits"]),t=async(i,o)=>{let a;o!=null?a=await ee.get().subtle.importKey("jwk",w8(r,o),{name:"ECDH",namedCurve:r},!1,["deriveBits"]):a=e.privateKey;let c=await ee.get().subtle.importKey("jwk",J0(r,i),{name:"ECDH",namedCurve:r},!1,[]),l=await ee.get().subtle.deriveBits({name:"ECDH",namedCurve:r,public:c},a,Z0[r]);return new Uint8Array(l,0,l.byteLength)},n=await ee.get().subtle.exportKey("jwk",e.publicKey);return{key:b8(n),genSharedKey:t}}var X0={"P-256":32,"P-384":48,"P-521":66};function b8(r){if(r.crv==null||r.x==null||r.y==null)throw new x("JWK was missing components","ERR_INVALID_PARAMETERS");if(r.crv!=="P-256"&&r.crv!=="P-384"&&r.crv!=="P-521")throw new x(`Unknown curve: ${r.crv}. Must be ${vo}`,"ERR_INVALID_CURVE");let e=X0[r.crv];return J([Uint8Array.from([4]),eo(r.x,e),eo(r.y,e)],1+e*2)}function J0(r,e){if(r!=="P-256"&&r!=="P-384"&&r!=="P-521")throw new x(`Unknown curve: ${r}. Must be ${vo}`,"ERR_INVALID_CURVE");let t=X0[r];if(!Q(e.subarray(0,1),Uint8Array.from([4])))throw new x("Cannot unmarshal public key - invalid key format","ERR_INVALID_KEY_FORMAT");return{kty:"EC",crv:r,x:P(e.subarray(1,t+1),"base64url"),y:P(e.subarray(1+t),"base64url"),ext:!0}}var w8=(r,e)=>({...J0(r,e.public),d:P(e.private,"base64url")});var e3=Q0;async function t3(r,e){let t=un.decode(r);return A1().decrypt(t,e)}var r3={"AES-128":{ivSize:16,keySize:16},"AES-256":{ivSize:16,keySize:32},Blowfish:{ivSize:8,keySize:32}};async function n3(r,e,t){let n=r3[r];if(n==null){let v=Object.keys(r3).join(" / ");throw new x(`unknown cipher type '${r}'. Must be ${v}`,"ERR_INVALID_CIPHER_TYPE")}if(e==null)throw new x("missing hash type","ERR_MISSING_HASH_TYPE");let s=n.keySize,i=n.ivSize,o=20,a=z("key expansion"),c=2*(i+s+o),l=await A0(e,t),f=await l.digest(a),u=[],h=0;for(;h<c;){let v=await l.digest(J([f,a])),b=v.length;h+b>c&&(b=c-h),u.push(v),h+=b,f=await l.digest(f)}let m=c/2,p=J(u),d=p.subarray(0,m),g=p.subarray(m,c),y=v=>({iv:v.subarray(0,i),cipherKey:v.subarray(i,i+s),macKey:v.subarray(i+s)});return{k1:y(d),k2:y(g)}}var _o={};ue(_o,{MAX_RSA_KEY_SIZE:()=>pr,RsaPrivateKey:()=>Xt,RsaPublicKey:()=>dr,fromJwk:()=>z8,generateKeyPair:()=>G8,unmarshalRsaPrivateKey:()=>No,unmarshalRsaPublicKey:()=>$8});function ct(r){if(isNaN(r)||r<=0)throw new x("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return Kr(r)}var Qt={};ue(Qt,{exportToPem:()=>M8,importFromPem:()=>ko,jwkToPkcs1:()=>U8,jwkToPkix:()=>V8,pkcs1ToJwk:()=>D8,pkixToJwk:()=>O8});var B1=class extends Mr{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,u1(e);let n=Kt(t);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let s=this.blockLen,i=new Uint8Array(s);i.set(n.length>s?e.create().update(n).digest():n);for(let o=0;o<i.length;o++)i[o]^=54;this.iHash.update(i),this.oHash=e.create();for(let o=0;o<i.length;o++)i[o]^=106;this.oHash.update(i),i.fill(0)}update(e){return Fr(this),this.iHash.update(e),this}digestInto(e){Fr(this),Vr(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));let{oHash:t,iHash:n,finished:s,destroyed:i,blockLen:o,outputLen:a}=this;return e=e,e.finished=s,e.destroyed=i,e.blockLen=o,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},In=(r,e,t)=>new B1(r,e).update(t).digest();In.create=(r,e)=>new B1(r,e);function v8(r,e,t,n){u1(r);let s=S0({dkLen:32,asyncTick:10},n),{c:i,dkLen:o,asyncTick:a}=s;if(Or(i),Or(o),Or(a),i<1)throw new Error("PBKDF2: iterations (c) should be >= 1");let c=Kt(e),l=Kt(t),f=new Uint8Array(o),u=In.create(r,c),h=u._cloneInto().update(l);return{c:i,dkLen:o,asyncTick:a,DK:f,PRF:u,PRFSalt:h}}function x8(r,e,t,n,s){return r.destroy(),e.destroy(),n&&n.destroy(),s.fill(0),t}async function xo(r,e,t,n){let{c:s,dkLen:i,asyncTick:o,DK:a,PRF:c,PRFSalt:l}=v8(r,e,t,n),f,u=new Uint8Array(4),h=Hr(u),m=new Uint8Array(c.outputLen);for(let p=1,d=0;d<i;p++,d+=c.outputLen){let g=a.subarray(d,d+c.outputLen);h.setInt32(0,p,!1),(f=l._cloneInto(f)).update(u).digestInto(m),g.set(m.subarray(0,g.length)),await I0(s-1,o,()=>{c._cloneInto(f).update(m).digestInto(m);for(let y=0;y<g.length;y++)g[y]^=m[y]})}return x8(c,l,a,f,m)}var H=ln(s3());function hr(r,e){let t=0;if(r.length===1)return r[0];for(let n=r.length-1;n>=0;n--)t+=r[r.length-1-n]*Math.pow(2,e*n);return t}function Yt(r,e,t=-1){let n=t,s=r,i=0,o=Math.pow(2,e);for(let a=1;a<8;a++){if(r<o){let c;if(n<0)c=new ArrayBuffer(a),i=a;else{if(n<a)return new ArrayBuffer(0);c=new ArrayBuffer(n),i=n}let l=new Uint8Array(c);for(let f=a-1;f>=0;f--){let u=Math.pow(2,f*e);l[i-f-1]=Math.floor(s/u),s-=l[i-f-1]*u}return c}o*=Math.pow(2,e)}return new ArrayBuffer(0)}function R1(...r){let e=0,t=0;for(let i of r)e+=i.length;let n=new ArrayBuffer(e),s=new Uint8Array(n);for(let i of r)s.set(i,t),t+=i.length;return s}function Ao(){let r=new Uint8Array(this.valueHex);if(this.valueHex.byteLength>=2){let a=r[0]===255&&r[1]&128,c=r[0]===0&&(r[1]&128)===0;(a||c)&&this.warnings.push("Needlessly long format")}let e=new ArrayBuffer(this.valueHex.byteLength),t=new Uint8Array(e);for(let a=0;a<this.valueHex.byteLength;a++)t[a]=0;t[0]=r[0]&128;let n=hr(t,8),s=new ArrayBuffer(this.valueHex.byteLength),i=new Uint8Array(s);for(let a=0;a<this.valueHex.byteLength;a++)i[a]=r[a];return i[0]&=127,hr(i,8)-n}function i3(r){let e=r<0?r*-1:r,t=128;for(let n=1;n<8;n++){if(e<=t){if(r<0){let o=t-e,a=Yt(o,8,n),c=new Uint8Array(a);return c[0]|=128,a}let s=Yt(e,8,n),i=new Uint8Array(s);if(i[0]&128){let o=s.slice(0),a=new Uint8Array(o);s=new ArrayBuffer(s.byteLength+1),i=new Uint8Array(s);for(let c=0;c<o.byteLength;c++)i[c+1]=a[c];i[0]=0}return s}t*=Math.pow(2,8)}return new ArrayBuffer(0)}function o3(r,e){if(r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let s=0;s<t.length;s++)if(t[s]!==n[s])return!1;return!0}function De(r,e){let t=r.toString(10);if(e<t.length)return"";let n=e-t.length,s=new Array(n);for(let o=0;o<n;o++)s[o]="0";return s.join("").concat(t)}var eh=Math.log(2);function k1(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function Bo(r){let e=0,t=0;for(let s=0;s<r.length;s++){let i=r[s];e+=i.byteLength}let n=new Uint8Array(e);for(let s=0;s<r.length;s++){let i=r[s];n.set(new Uint8Array(i),t),t+=i.byteLength}return n.buffer}function kt(r,e,t,n){return e instanceof Uint8Array?e.byteLength?t<0?(r.error="Wrong parameter: inputOffset less than zero",!1):n<0?(r.error="Wrong parameter: inputLength less than zero",!1):e.byteLength-t-n<0?(r.error="End of input reached before message was fully decoded (inconsistent offset and length values)",!1):!0:(r.error="Wrong parameter: inputBuffer has zero length",!1):(r.error="Wrong parameter: inputBuffer must be 'Uint8Array'",!1)}var Rn=class{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return Bo(this.items)}},Sn=[new Uint8Array([1])],a3="0123456789";var Jr="",et=new ArrayBuffer(0),Io=new Uint8Array(0),kn="EndOfContent",l3="OCTET STRING",u3="BIT STRING";function Nt(r){var e;return e=class extends r{constructor(...n){var s;super(...n);let i=n[0]||{};this.isHexOnly=(s=i.isHexOnly)!==null&&s!==void 0?s:!1,this.valueHexView=i.valueHex?H.BufferSourceConverter.toUint8Array(i.valueHex):Io}get valueHex(){return this.valueHexView.slice().buffer}set valueHex(n){this.valueHexView=new Uint8Array(n)}fromBER(n,s,i){let o=n instanceof ArrayBuffer?new Uint8Array(n):n;if(!kt(this,o,s,i))return-1;let a=s+i;return this.valueHexView=o.subarray(s,a),this.valueHexView.length?(this.blockLength=i,a):(this.warnings.push("Zero buffer length"),s)}toBER(n=!1){return this.isHexOnly?n?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.byteLength===this.valueHexView.buffer.byteLength?this.valueHexView.buffer:this.valueHexView.slice().buffer:(this.error="Flag 'isHexOnly' is not set, abort",et)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:H.Convert.ToHex(this.valueHexView)}}},e.NAME="hexBlock",e}var It=class{constructor({blockLength:e=0,error:t=Jr,warnings:n=[],valueBeforeDecode:s=Io}={}){this.blockLength=e,this.error=t,this.warnings=n,this.valueBeforeDecodeView=H.BufferSourceConverter.toUint8Array(s)}static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(e){this.valueBeforeDecodeView=new Uint8Array(e)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:H.Convert.ToHex(this.valueBeforeDecodeView)}}};It.NAME="baseBlock";var Re=class extends It{fromBER(e,t,n){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}toBER(e,t){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}};Re.NAME="valueBlock";var N1=class extends Nt(It){constructor({idBlock:e={}}={}){var t,n,s,i;super(),e?(this.isHexOnly=(t=e.isHexOnly)!==null&&t!==void 0?t:!1,this.valueHexView=e.valueHex?H.BufferSourceConverter.toUint8Array(e.valueHex):Io,this.tagClass=(n=e.tagClass)!==null&&n!==void 0?n:-1,this.tagNumber=(s=e.tagNumber)!==null&&s!==void 0?s:-1,this.isConstructed=(i=e.isConstructed)!==null&&i!==void 0?i:!1):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}toBER(e=!1){let t=0;switch(this.tagClass){case 1:t|=0;break;case 2:t|=64;break;case 3:t|=128;break;case 4:t|=192;break;default:return this.error="Unknown tag class",et}if(this.isConstructed&&(t|=32),this.tagNumber<31&&!this.isHexOnly){let s=new Uint8Array(1);if(!e){let i=this.tagNumber;i&=31,t|=i,s[0]=t}return s.buffer}if(!this.isHexOnly){let s=Yt(this.tagNumber,7),i=new Uint8Array(s),o=s.byteLength,a=new Uint8Array(o+1);if(a[0]=t|31,!e){for(let c=0;c<o-1;c++)a[c+1]=i[c]|128;a[o]=i[o-1]}return a.buffer}let n=new Uint8Array(this.valueHexView.byteLength+1);if(n[0]=t|31,!e){let s=this.valueHexView;for(let i=0;i<s.length-1;i++)n[i+1]=s[i]|128;n[this.valueHexView.byteLength]=s[s.length-1]}return n.buffer}fromBER(e,t,n){let s=H.BufferSourceConverter.toUint8Array(e);if(!kt(this,s,t,n))return-1;let i=s.subarray(t,t+n);if(i.length===0)return this.error="Zero buffer length",-1;switch(i[0]&192){case 0:this.tagClass=1;break;case 64:this.tagClass=2;break;case 128:this.tagClass=3;break;case 192:this.tagClass=4;break;default:return this.error="Unknown tag class",-1}this.isConstructed=(i[0]&32)===32,this.isHexOnly=!1;let a=i[0]&31;if(a!==31)this.tagNumber=a,this.blockLength=1;else{let c=1,l=this.valueHexView=new Uint8Array(255),f=255;for(;i[c]&128;){if(l[c-1]=i[c]&127,c++,c>=i.length)return this.error="End of input reached before message was fully decoded",-1;if(c===f){f+=255;let h=new Uint8Array(f);for(let m=0;m<l.length;m++)h[m]=l[m];l=this.valueHexView=new Uint8Array(f)}}this.blockLength=c+1,l[c-1]=i[c]&127;let u=new Uint8Array(c);for(let h=0;h<c;h++)u[h]=l[h];l=this.valueHexView=new Uint8Array(c),l.set(u),this.blockLength<=9?this.tagNumber=hr(l,7):(this.isHexOnly=!0,this.warnings.push("Tag too long, represented as hex-coded"))}if(this.tagClass===1&&this.isConstructed)switch(this.tagNumber){case 1:case 2:case 5:case 6:case 9:case 13:case 14:case 23:case 24:case 31:case 32:case 33:case 34:return this.error="Constructed encoding used for primitive type",-1}return t+this.blockLength}toJSON(){return{...super.toJSON(),tagClass:this.tagClass,tagNumber:this.tagNumber,isConstructed:this.isConstructed}}};N1.NAME="identificationBlock";var T1=class extends It{constructor({lenBlock:e={}}={}){var t,n,s;super(),this.isIndefiniteForm=(t=e.isIndefiniteForm)!==null&&t!==void 0?t:!1,this.longFormUsed=(n=e.longFormUsed)!==null&&n!==void 0?n:!1,this.length=(s=e.length)!==null&&s!==void 0?s:0}fromBER(e,t,n){let s=H.BufferSourceConverter.toUint8Array(e);if(!kt(this,s,t,n))return-1;let i=s.subarray(t,t+n);if(i.length===0)return this.error="Zero buffer length",-1;if(i[0]===255)return this.error="Length block 0xFF is reserved by standard",-1;if(this.isIndefiniteForm=i[0]===128,this.isIndefiniteForm)return this.blockLength=1,t+this.blockLength;if(this.longFormUsed=!!(i[0]&128),this.longFormUsed===!1)return this.length=i[0],this.blockLength=1,t+this.blockLength;let o=i[0]&127;if(o>8)return this.error="Too big integer",-1;if(o+1>i.length)return this.error="End of input reached before message was fully decoded",-1;let a=t+1,c=s.subarray(a,a+o);return c[o-1]===0&&this.warnings.push("Needlessly long encoded length"),this.length=hr(c,8),this.longFormUsed&&this.length<=127&&this.warnings.push("Unnecessary usage of long length form"),this.blockLength=o+1,t+this.blockLength}toBER(e=!1){let t,n;if(this.length>127&&(this.longFormUsed=!0),this.isIndefiniteForm)return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=128),t;if(this.longFormUsed){let s=Yt(this.length,8);if(s.byteLength>127)return this.error="Too big length",et;if(t=new ArrayBuffer(s.byteLength+1),e)return t;let i=new Uint8Array(s);n=new Uint8Array(t),n[0]=s.byteLength|128;for(let o=0;o<s.byteLength;o++)n[o+1]=i[o];return t}return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=this.length),t}toJSON(){return{...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,longFormUsed:this.longFormUsed,length:this.length}}};T1.NAME="lengthBlock";var R={},Ee=class extends It{constructor({name:e=Jr,optional:t=!1,primitiveSchema:n,...s}={},i){super(s),this.name=e,this.optional=t,n&&(this.primitiveSchema=n),this.idBlock=new N1(s),this.lenBlock=new T1(s),this.valueBlock=i?new i(s):new Re(s)}fromBER(e,t,n){let s=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return s===-1?(this.error=this.valueBlock.error,s):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),s)}toBER(e,t){let n=t||new Rn;t||f3(this);let s=this.idBlock.toBER(e);if(n.write(s),this.lenBlock.isIndefiniteForm)n.write(new Uint8Array([128]).buffer),this.valueBlock.toBER(e,n),n.write(new ArrayBuffer(2));else{let i=this.valueBlock.toBER(e);this.lenBlock.length=i.byteLength;let o=this.lenBlock.toBER(e);n.write(o),n.write(i)}return t?et:n.final()}toJSON(){let e={...super.toJSON(),idBlock:this.idBlock.toJSON(),lenBlock:this.lenBlock.toJSON(),valueBlock:this.valueBlock.toJSON(),name:this.name,optional:this.optional};return this.primitiveSchema&&(e.primitiveSchema=this.primitiveSchema.toJSON()),e}toString(e="ascii"){return e==="ascii"?this.onAsciiEncoding():H.Convert.ToHex(this.toBER())}onAsciiEncoding(){return`${this.constructor.NAME} : ${H.Convert.ToHex(this.valueBlock.valueBeforeDecodeView)}`}isEqual(e){if(this===e)return!0;if(!(e instanceof this.constructor))return!1;let t=this.toBER(),n=e.toBER();return o3(t,n)}};Ee.NAME="BaseBlock";function f3(r){if(r instanceof R.Constructed)for(let e of r.valueBlock.value)f3(e)&&(r.lenBlock.isIndefiniteForm=!0);return!!r.lenBlock.isIndefiniteForm}var _1=class extends Ee{constructor({value:e=Jr,...t}={},n){super(t,n),e&&this.fromString(e)}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}fromBER(e,t,n){let s=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return s===-1?(this.error=this.valueBlock.error,s):(this.fromBuffer(this.valueBlock.valueHexView),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),s)}onAsciiEncoding(){return`${this.constructor.NAME} : '${this.valueBlock.value}'`}};_1.NAME="BaseStringBlock";var L1=class extends Nt(Re){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}};L1.NAME="PrimitiveValueBlock";var h3,P1=class extends Ee{constructor(e={}){super(e,L1),this.idBlock.isConstructed=!1}};h3=P1;R.Primitive=h3;P1.NAME="PRIMITIVE";function T8(r,e){if(r instanceof e)return r;let t=new e;return t.idBlock=r.idBlock,t.lenBlock=r.lenBlock,t.warnings=r.warnings,t.valueBeforeDecodeView=r.valueBeforeDecodeView,t}function hs(r,e=0,t=r.length){let n=e,s=new Ee({},Re),i=new It;if(!kt(i,r,e,t))return s.error=i.error,{offset:-1,result:s};if(!r.subarray(e,e+t).length)return s.error="Zero buffer length",{offset:-1,result:s};let a=s.idBlock.fromBER(r,e,t);if(s.idBlock.warnings.length&&s.warnings.concat(s.idBlock.warnings),a===-1)return s.error=s.idBlock.error,{offset:-1,result:s};if(e=a,t-=s.idBlock.blockLength,a=s.lenBlock.fromBER(r,e,t),s.lenBlock.warnings.length&&s.warnings.concat(s.lenBlock.warnings),a===-1)return s.error=s.lenBlock.error,{offset:-1,result:s};if(e=a,t-=s.lenBlock.blockLength,!s.idBlock.isConstructed&&s.lenBlock.isIndefiniteForm)return s.error="Indefinite length form used for primitive encoding form",{offset:-1,result:s};let c=Ee;switch(s.idBlock.tagClass){case 1:if(s.idBlock.tagNumber>=37&&s.idBlock.isHexOnly===!1)return s.error="UNIVERSAL 37 and upper tags are reserved by ASN.1 standard",{offset:-1,result:s};switch(s.idBlock.tagNumber){case 0:if(s.idBlock.isConstructed&&s.lenBlock.length>0)return s.error="Type [UNIVERSAL 0] is reserved",{offset:-1,result:s};c=R.EndOfContent;break;case 1:c=R.Boolean;break;case 2:c=R.Integer;break;case 3:c=R.BitString;break;case 4:c=R.OctetString;break;case 5:c=R.Null;break;case 6:c=R.ObjectIdentifier;break;case 10:c=R.Enumerated;break;case 12:c=R.Utf8String;break;case 13:c=R.RelativeObjectIdentifier;break;case 14:c=R.TIME;break;case 15:return s.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:s};case 16:c=R.Sequence;break;case 17:c=R.Set;break;case 18:c=R.NumericString;break;case 19:c=R.PrintableString;break;case 20:c=R.TeletexString;break;case 21:c=R.VideotexString;break;case 22:c=R.IA5String;break;case 23:c=R.UTCTime;break;case 24:c=R.GeneralizedTime;break;case 25:c=R.GraphicString;break;case 26:c=R.VisibleString;break;case 27:c=R.GeneralString;break;case 28:c=R.UniversalString;break;case 29:c=R.CharacterString;break;case 30:c=R.BmpString;break;case 31:c=R.DATE;break;case 32:c=R.TimeOfDay;break;case 33:c=R.DateTime;break;case 34:c=R.Duration;break;default:{let l=s.idBlock.isConstructed?new R.Constructed:new R.Primitive;l.idBlock=s.idBlock,l.lenBlock=s.lenBlock,l.warnings=s.warnings,s=l}}break;case 2:case 3:case 4:default:c=s.idBlock.isConstructed?R.Constructed:R.Primitive}return s=T8(s,c),a=s.fromBER(r,e,s.lenBlock.isIndefiniteForm?t:s.lenBlock.length),s.valueBeforeDecodeView=r.subarray(n,n+s.blockLength),{offset:a,result:s}}function en(r){if(!r.byteLength){let e=new Ee({},Re);return e.error="Input buffer has zero length",{offset:-1,result:e}}return hs(H.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength)}function _8(r,e){return r?1:e}var lt=class extends Re{constructor({value:e=[],isIndefiniteForm:t=!1,...n}={}){super(n),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,n){let s=H.BufferSourceConverter.toUint8Array(e);if(!kt(this,s,t,n))return-1;if(this.valueBeforeDecodeView=s.subarray(t,t+n),this.valueBeforeDecodeView.length===0)return this.warnings.push("Zero buffer length"),t;let i=t;for(;_8(this.isIndefiniteForm,n)>0;){let o=hs(s,i,n);if(o.offset===-1)return this.error=o.result.error,this.warnings.concat(o.result.warnings),-1;if(i=o.offset,this.blockLength+=o.result.blockLength,n-=o.result.blockLength,this.value.push(o.result),this.isIndefiniteForm&&o.result.constructor.NAME===kn)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===kn?this.value.pop():this.warnings.push("No EndOfContent block encoded")),i}toBER(e,t){let n=t||new Rn;for(let s=0;s<this.value.length;s++)this.value[s].toBER(e,n);return t?et:n.final()}toJSON(){let e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let t of this.value)e.value.push(t.toJSON());return e}};lt.NAME="ConstructedValueBlock";var d3,Wt=class extends Ee{constructor(e={}){super(e,lt),this.idBlock.isConstructed=!0}fromBER(e,t,n){this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm;let s=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return s===-1?(this.error=this.valueBlock.error,s):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),s)}onAsciiEncoding(){let e=[];for(let n of this.valueBlock.value)e.push(n.toString("ascii").split(`
3
3
  `).map(s=>` ${s}`).join(`
4
4
  `));let t=this.idBlock.tagClass===3?`[${this.idBlock.tagNumber}]`:this.constructor.NAME;return e.length?`${t} :
5
5
  ${e.join(`
6
- `)}`:`${t} :`}};f3=Wt;R.Constructed=f3;Wt.NAME="CONSTRUCTED";var P1=class extends Re{fromBER(e,t,n){return t}toBER(e){return et}};P1.override="EndOfContentValueBlock";var h3,C1=class extends Ee{constructor(e={}){super(e,P1),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};h3=C1;R.EndOfContent=h3;C1.NAME=Rn;var d3,Zt=class extends Ee{constructor(e={}){super(e,Re),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(e,t,n){return this.lenBlock.length>0&&this.warnings.push("Non-zero length of value block for Null type"),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=n,t+n>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+n}toBER(e,t){let n=new ArrayBuffer(2);if(!e){let s=new Uint8Array(n);s[0]=5,s[1]=0}return t&&t.write(n),n}onAsciiEncoding(){return`${this.constructor.NAME}`}};d3=Zt;R.Null=d3;Zt.NAME="NULL";var D1=class extends Nt(Re){constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=H.BufferSourceConverter.toUint8Array(t.valueHex):this.valueHexView=new Uint8Array(1),e&&(this.value=e)}get value(){for(let e of this.valueHexView)if(e>0)return!0;return!1}set value(e){this.valueHexView[0]=e?255:0}fromBER(e,t,n){let s=H.BufferSourceConverter.toUint8Array(e);return kt(this,s,t,n)?(this.valueHexView=s.subarray(t,t+n),n>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,xo.call(this),this.blockLength=n,t+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};D1.NAME="BooleanValueBlock";var p3,U1=class extends Ee{constructor(e={}){super(e,D1),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}};p3=U1;R.Boolean=p3;U1.NAME="BOOLEAN";var O1=class extends Nt(lt){constructor({isConstructed:e=!1,...t}={}){super(t),this.isConstructed=e}fromBER(e,t,n){let s=0;if(this.isConstructed){if(this.isHexOnly=!1,s=lt.prototype.fromBER.call(this,e,t,n),s===-1)return s;for(let i=0;i<this.value.length;i++){let o=this.value[i].constructor.NAME;if(o===Rn){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(o!==a3)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,s=super.fromBER(e,t,n),this.blockLength=n;return s}toBER(e,t){return this.isConstructed?lt.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};O1.NAME="OctetStringValueBlock";var g3,St=class r extends Ee{constructor({idBlock:e={},lenBlock:t={},...n}={}){var s,i;(s=n.isConstructed)!==null&&s!==void 0||(n.isConstructed=!!(!((i=n.value)===null||i===void 0)&&i.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},O1),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(e,t,n){if(this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,n===0)return this.idBlock.error.length===0&&(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length===0&&(this.blockLength+=this.lenBlock.blockLength),t;if(!this.valueBlock.isConstructed){let i=(e instanceof ArrayBuffer?new Uint8Array(e):e).subarray(t,t+n);try{if(i.byteLength){let o=fs(i,0,i.byteLength);o.offset!==-1&&o.offset===n&&(this.valueBlock.value=[o.result])}}catch{}}return super.fromBER(e,t,n)}onAsciiEncoding(){return this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length?Wt.prototype.onAsciiEncoding.call(this):`${this.constructor.NAME} : ${H.Convert.ToHex(this.valueBlock.valueHexView)}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;let e=[];for(let t of this.valueBlock.value)t instanceof r&&e.push(t.valueBlock.valueHexView);return H.BufferSourceConverter.concat(e)}};g3=St;R.OctetString=g3;St.NAME=a3;var V1=class extends Nt(lt){constructor({unusedBits:e=0,isConstructed:t=!1,...n}={}){super(n),this.unusedBits=e,this.isConstructed=t,this.blockLength=this.valueHexView.byteLength}fromBER(e,t,n){if(!n)return t;let s=-1;if(this.isConstructed){if(s=lt.prototype.fromBER.call(this,e,t,n),s===-1)return s;for(let a of this.value){let c=a.constructor.NAME;if(c===Rn){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(c!==c3)return this.error="BIT STRING may consists of BIT STRINGs only",-1;let l=a.valueBlock;if(this.unusedBits>0&&l.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=l.unusedBits}return s}let i=H.BufferSourceConverter.toUint8Array(e);if(!kt(this,i,t,n))return-1;let o=i.subarray(t,t+n);if(this.unusedBits=o[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;if(!this.unusedBits){let a=o.subarray(1);try{if(a.byteLength){let c=fs(a,0,a.byteLength);c.offset!==-1&&c.offset===n-1&&(this.value=[c.result])}}catch{}}return this.valueHexView=o.subarray(1),this.blockLength=o.length,t+n}toBER(e,t){if(this.isConstructed)return lt.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength)return et;let n=new Uint8Array(this.valueHexView.length+1);return n[0]=this.unusedBits,n.set(this.valueHexView,1),n.buffer}toJSON(){return{...super.toJSON(),unusedBits:this.unusedBits,isConstructed:this.isConstructed}}};V1.NAME="BitStringValueBlock";var m3,Qr=class extends Ee{constructor({idBlock:e={},lenBlock:t={},...n}={}){var s,i;(s=n.isConstructed)!==null&&s!==void 0||(n.isConstructed=!!(!((i=n.value)===null||i===void 0)&&i.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},V1),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(e,t,n){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(e,t,n)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return Wt.prototype.onAsciiEncoding.call(this);{let e=[],t=this.valueBlock.valueHexView;for(let s of t)e.push(s.toString(2).padStart(8,"0"));let n=e.join("");return`${this.constructor.NAME} : ${n.substring(0,n.length-this.valueBlock.unusedBits)}`}}};m3=Qr;R.BitString=m3;Qr.NAME=c3;var y3;function _a(r,e){let t=new Uint8Array([0]),n=new Uint8Array(r),s=new Uint8Array(e),i=n.slice(0),o=i.length-1,a=s.slice(0),c=a.length-1,l=0,f=c<o?o:c,u=0;for(let h=f;h>=0;h--,u++){switch(!0){case u<a.length:l=i[o-u]+a[c-u]+t[0];break;default:l=i[o-u]+t[0]}switch(t[0]=l/10,!0){case u>=i.length:i=S1(new Uint8Array([l%10]),i);break;default:i[o-u]=l%10}}return t[0]>0&&(i=S1(t,i)),i}function o3(r){if(r>=In.length)for(let e=In.length;e<=r;e++){let t=new Uint8Array([0]),n=In[e-1].slice(0);for(let s=n.length-1;s>=0;s--){let i=new Uint8Array([(n[s]<<1)+t[0]]);t[0]=i[0]/10,n[s]=i[0]%10}t[0]>0&&(n=S1(t,n)),In.push(n)}return In[r]}function Ta(r,e){let t=0,n=new Uint8Array(r),s=new Uint8Array(e),i=n.slice(0),o=i.length-1,a=s.slice(0),c=a.length-1,l,f=0;for(let u=c;u>=0;u--,f++)switch(l=i[o-f]-a[c-f]-t,!0){case l<0:t=1,i[o-f]=l+10;break;default:t=0,i[o-f]=l}if(t>0)for(let u=o-c+1;u>=0;u--,f++)if(l=i[o-f]-t,l<0)t=1,i[o-f]=l+10;else{t=0,i[o-f]=l;break}return i.slice()}var kn=class extends Nt(Re){constructor({value:e,...t}={}){super(t),this._valueDec=0,t.valueHex&&this.setValueHex(),e!==void 0&&(this.valueDec=e)}setValueHex(){this.valueHexView.length>=4?(this.warnings.push("Too big Integer for decoding, hex only"),this.isHexOnly=!0,this._valueDec=0):(this.isHexOnly=!1,this.valueHexView.length>0&&(this._valueDec=xo.call(this)))}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(n3(e))}get valueDec(){return this._valueDec}fromDER(e,t,n,s=0){let i=this.fromBER(e,t,n);if(i===-1)return i;let o=this.valueHexView;return o[0]===0&&o[1]&128?this.valueHexView=o.subarray(1):s!==0&&o.length<s&&(s-o.length>1&&(s=o.length+1),this.valueHexView=o.subarray(s-o.length)),i}toDER(e=!1){let t=this.valueHexView;switch(!0){case(t[0]&128)!==0:{let n=new Uint8Array(this.valueHexView.length+1);n[0]=0,n.set(t,1),this.valueHexView=n}break;case(t[0]===0&&(t[1]&128)===0):this.valueHexView=this.valueHexView.subarray(1);break}return this.toBER(e)}fromBER(e,t,n){let s=super.fromBER(e,t,n);return s===-1||this.setValueHex(),s}toBER(e){return e?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){let e=this.valueHexView.length*8-1,t=new Uint8Array(this.valueHexView.length*8/3),n=0,s,i=this.valueHexView,o="",a=!1;for(let c=i.byteLength-1;c>=0;c--){s=i[c];for(let l=0;l<8;l++){if((s&1)===1)switch(n){case e:t=Ta(o3(n),t),o="-";break;default:t=_a(t,o3(n))}n++,s>>=1}}for(let c=0;c<t.length;c++)t[c]&&(a=!0),a&&(o+=i3.charAt(t[c]));return a===!1&&(o+=i3.charAt(0)),o}};y3=kn;kn.NAME="IntegerValueBlock";Object.defineProperty(y3.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var b3,de=class r extends Ee{constructor(e={}){super(e,kn),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return R1(),BigInt(this.valueBlock.toString())}static fromBigInt(e){R1();let t=BigInt(e),n=new Sn,s=t.toString(16).replace(/^-/,""),i=new Uint8Array(H.Convert.FromHex(s));if(t<0){let a=new Uint8Array(i.length+(i[0]&128?1:0));a[0]|=128;let l=BigInt(`0x${H.Convert.ToHex(a)}`)+t,f=H.BufferSourceConverter.toUint8Array(H.Convert.FromHex(l.toString(16)));f[0]|=128,n.write(f)}else i[0]&128&&n.write(new Uint8Array([0])),n.write(i);return new r({valueHex:n.final()})}convertToDER(){let e=new r({valueHex:this.valueBlock.valueHexView});return e.valueBlock.toDER(),e}convertFromDER(){return new r({valueHex:this.valueBlock.valueHexView[0]===0?this.valueBlock.valueHexView.subarray(1):this.valueBlock.valueHexView})}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()}`}};b3=de;R.Integer=b3;de.NAME="INTEGER";var w3,F1=class extends de{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};w3=F1;R.Enumerated=w3;F1.NAME="ENUMERATED";var Nn=class extends Nt(Re){constructor({valueDec:e=-1,isFirstSid:t=!1,...n}={}){super(n),this.valueDec=e,this.isFirstSid=t}fromBER(e,t,n){if(!n)return t;let s=H.BufferSourceConverter.toUint8Array(e);if(!kt(this,s,t,n))return-1;let i=s.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=i[a]&127,this.blockLength++,!!(i[a]&128));a++);let o=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)o[a]=this.valueHexView[a];return this.valueHexView=o,i[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=fr(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){R1();let t=BigInt(e).toString(2);for(;t.length%7;)t="0"+t;let n=new Uint8Array(t.length/7);for(let s=0;s<n.length;s++)n[s]=parseInt(t.slice(s*7,s*7+7),2)+(s+1<n.length?128:0);this.fromBER(n.buffer,0,n.length)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let s=this.valueHexView,i=new Uint8Array(this.blockLength);for(let o=0;o<this.blockLength-1;o++)i[o]=s[o]|128;return i[this.blockLength-1]=s[this.blockLength-1],i.buffer}let t=Yt(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",et;let n=new Uint8Array(t.byteLength);if(!e){let s=new Uint8Array(t),i=t.byteLength-1;for(let o=0;o<i;o++)n[o]=s[o]|128;n[i]=s[i]}return n}toString(){let e="";if(this.isHexOnly)e=H.Convert.ToHex(this.valueHexView);else if(this.isFirstSid){let t=this.valueDec;this.valueDec<=39?e="0.":this.valueDec<=79?(e="1.",t-=40):(e="2.",t-=80),e+=t.toString()}else e=this.valueDec.toString();return e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}};Nn.NAME="sidBlock";var M1=class extends Re{constructor({value:e=Xr,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let s=t;for(;n>0;){let i=new Nn;if(s=i.fromBER(e,s,n),s===-1)return this.blockLength=0,this.error=i.error,s;this.value.length===0&&(i.isFirstSid=!0),this.blockLength+=i.blockLength,n-=i.blockLength,this.value.push(i)}return s}toBER(e){let t=[];for(let n=0;n<this.value.length;n++){let s=this.value[n].toBER(e);if(s.byteLength===0)return this.error=this.value[n].error,et;t.push(s)}return Eo(t)}fromString(e){this.value=[];let t=0,n=0,s="",i=!1;do if(n=e.indexOf(".",t),n===-1?s=e.substring(t):s=e.substring(t,n),t=n+1,i){let o=this.value[0],a=0;switch(o.valueDec){case 0:break;case 1:a=40;break;case 2:a=80;break;default:this.value=[];return}let c=parseInt(s,10);if(isNaN(c))return;o.valueDec=c+a,i=!1}else{let o=new Nn;if(s>Number.MAX_SAFE_INTEGER){R1();let a=BigInt(s);o.valueBigInt=a}else if(o.valueDec=parseInt(s,10),isNaN(o.valueDec))return;this.value.length||(o.isFirstSid=!0,i=!0),this.value.push(o)}while(n!==-1)}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let s=this.value[n].toString();n!==0&&(e=`${e}.`),t?(s=`{${s}}`,this.value[n].isFirstSid?e=`2.{${s} - 80}`:e+=s):e+=s}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};M1.NAME="ObjectIdentifierValueBlock";var v3,Je=class extends Ee{constructor(e={}){super(e,M1),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};v3=Je;R.ObjectIdentifier=v3;Je.NAME="OBJECT IDENTIFIER";var _n=class extends Nt(It){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,n){if(n===0)return t;let s=H.BufferSourceConverter.toUint8Array(e);if(!kt(this,s,t,n))return-1;let i=s.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=i[a]&127,this.blockLength++,!!(i[a]&128));a++);let o=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)o[a]=this.valueHexView[a];return this.valueHexView=o,i[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=fr(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let s=this.valueHexView,i=new Uint8Array(this.blockLength);for(let o=0;o<this.blockLength-1;o++)i[o]=s[o]|128;return i[this.blockLength-1]=s[this.blockLength-1],i.buffer}let t=Yt(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",et;let n=new Uint8Array(t.byteLength);if(!e){let s=new Uint8Array(t),i=t.byteLength-1;for(let o=0;o<i;o++)n[o]=s[o]|128;n[i]=s[i]}return n.buffer}toString(){let e="";return this.isHexOnly?e=H.Convert.ToHex(this.valueHexView):e=this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};_n.NAME="relativeSidBlock";var H1=class extends Re{constructor({value:e=Xr,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let s=t;for(;n>0;){let i=new _n;if(s=i.fromBER(e,s,n),s===-1)return this.blockLength=0,this.error=i.error,s;this.blockLength+=i.blockLength,n-=i.blockLength,this.value.push(i)}return s}toBER(e,t){let n=[];for(let s=0;s<this.value.length;s++){let i=this.value[s].toBER(e);if(i.byteLength===0)return this.error=this.value[s].error,et;n.push(i)}return Eo(n)}fromString(e){this.value=[];let t=0,n=0,s="";do{n=e.indexOf(".",t),n===-1?s=e.substring(t):s=e.substring(t,n),t=n+1;let i=new _n;if(i.valueDec=parseInt(s,10),isNaN(i.valueDec))return!0;this.value.push(i)}while(n!==-1);return!0}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let s=this.value[n].toString();n!==0&&(e=`${e}.`),t&&(s=`{${s}}`),e+=s}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};H1.NAME="RelativeObjectIdentifierValueBlock";var x3,K1=class extends Ee{constructor(e={}){super(e,H1),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};x3=K1;R.RelativeObjectIdentifier=x3;K1.NAME="RelativeObjectIdentifier";var E3,we=class extends Wt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};E3=we;R.Sequence=E3;we.NAME="SEQUENCE";var A3,q1=class extends Wt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};A3=q1;R.Set=A3;q1.NAME="SET";var $1=class extends Nt(Re){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=Xr}toJSON(){return{...super.toJSON(),value:this.value}}};$1.NAME="StringValueBlock";var z1=class extends $1{};z1.NAME="SimpleStringValueBlock";var Te=class extends _1{constructor({...e}={}){super(e,z1)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,H.BufferSourceConverter.toUint8Array(e))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t);for(let s=0;s<t;s++)n[s]=e.charCodeAt(s);this.valueBlock.value=e}};Te.NAME="SIMPLE STRING";var G1=class extends Te{fromBuffer(e){this.valueBlock.valueHexView=H.BufferSourceConverter.toUint8Array(e);try{this.valueBlock.value=H.Convert.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=H.Convert.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(H.Convert.FromUtf8String(e)),this.valueBlock.value=e}};G1.NAME="Utf8StringValueBlock";var B3,Rt=class extends G1{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};B3=Rt;R.Utf8String=B3;Rt.NAME="UTF8String";var j1=class extends Te{fromBuffer(e){this.valueBlock.value=H.Convert.ToUtf16String(e),this.valueBlock.valueHexView=H.BufferSourceConverter.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(H.Convert.FromUtf16String(e))}};j1.NAME="BmpStringValueBlock";var I3,Y1=class extends j1{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};I3=Y1;R.BmpString=I3;Y1.NAME="BMPString";var W1=class extends Te{fromBuffer(e){let t=ArrayBuffer.isView(e)?e.slice().buffer:e.slice(0),n=new Uint8Array(t);for(let s=0;s<n.length;s+=4)n[s]=n[s+3],n[s+1]=n[s+2],n[s+2]=0,n[s+3]=0;this.valueBlock.value=String.fromCharCode.apply(null,new Uint32Array(t))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t*4);for(let s=0;s<t;s++){let i=Yt(e.charCodeAt(s),8),o=new Uint8Array(i);if(o.length>4)continue;let a=4-o.length;for(let c=o.length-1;c>=0;c--)n[s*4+c+a]=o[c]}this.valueBlock.value=e}};W1.NAME="UniversalStringValueBlock";var S3,Z1=class extends W1{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};S3=Z1;R.UniversalString=S3;Z1.NAME="UniversalString";var R3,Q1=class extends Te{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};R3=Q1;R.NumericString=R3;Q1.NAME="NumericString";var k3,X1=class extends Te{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};k3=X1;R.PrintableString=k3;X1.NAME="PrintableString";var N3,J1=class extends Te{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};N3=J1;R.TeletexString=N3;J1.NAME="TeletexString";var _3,es=class extends Te{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};_3=es;R.VideotexString=_3;es.NAME="VideotexString";var T3,ts=class extends Te{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};T3=ts;R.IA5String=T3;ts.NAME="IA5String";var L3,rs=class extends Te{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};L3=rs;R.GraphicString=L3;rs.NAME="GraphicString";var P3,Tn=class extends Te{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};P3=Tn;R.VisibleString=P3;Tn.NAME="VisibleString";var C3,ns=class extends Te{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};C3=ns;R.GeneralString=C3;ns.NAME="GeneralString";var D3,ss=class extends Te{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};D3=ss;R.CharacterString=D3;ss.NAME="CharacterString";var U3,Ln=class extends Tn{constructor({value:e,valueDate:t,...n}={}){if(super(n),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,e){this.fromString(e),this.valueBlock.valueHexView=new Uint8Array(e.length);for(let s=0;s<e.length;s++)this.valueBlock.valueHexView[s]=e.charCodeAt(s)}t&&(this.fromDate(t),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(e){this.fromString(String.fromCharCode.apply(null,H.BufferSourceConverter.toUint8Array(e)))}toBuffer(){let e=this.toString(),t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let s=0;s<e.length;s++)n[s]=e.charCodeAt(s);return t}fromDate(e){this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(e){let n=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/ig.exec(e);if(n===null){this.error="Wrong input string for conversion";return}let s=parseInt(n[1],10);s>=50?this.year=1900+s:this.year=2e3+s,this.month=parseInt(n[2],10),this.day=parseInt(n[3],10),this.hour=parseInt(n[4],10),this.minute=parseInt(n[5],10),this.second=parseInt(n[6],10)}toString(e="iso"){if(e==="iso"){let t=new Array(7);return t[0]=Ce(this.year<2e3?this.year-1900:this.year-2e3,2),t[1]=Ce(this.month,2),t[2]=Ce(this.day,2),t[3]=Ce(this.hour,2),t[4]=Ce(this.minute,2),t[5]=Ce(this.second,2),t[6]="Z",t.join("")}return super.toString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.toDate().toISOString()}`}toJSON(){return{...super.toJSON(),year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second}}};U3=Ln;R.UTCTime=U3;Ln.NAME="UTCTime";var O3,is=class extends Ln{constructor(e={}){var t;super(e),(t=this.millisecond)!==null&&t!==void 0||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(e){super.fromDate(e),this.millisecond=e.getUTCMilliseconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond))}fromString(e){let t=!1,n="",s="",i=0,o,a=0,c=0;if(e[e.length-1]==="Z")n=e.substring(0,e.length-1),t=!0;else{let u=new Number(e[e.length-1]);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");n=e}if(t){if(n.indexOf("+")!==-1)throw new Error("Wrong input string for conversion");if(n.indexOf("-")!==-1)throw new Error("Wrong input string for conversion")}else{let u=1,h=n.indexOf("+"),m="";if(h===-1&&(h=n.indexOf("-"),u=-1),h!==-1){if(m=n.substring(h+1),n=n.substring(0,h),m.length!==2&&m.length!==4)throw new Error("Wrong input string for conversion");let p=parseInt(m.substring(0,2),10);if(isNaN(p.valueOf()))throw new Error("Wrong input string for conversion");if(a=u*p,m.length===4){if(p=parseInt(m.substring(2,4),10),isNaN(p.valueOf()))throw new Error("Wrong input string for conversion");c=u*p}}}let l=n.indexOf(".");if(l===-1&&(l=n.indexOf(",")),l!==-1){let u=new Number(`0${n.substring(l)}`);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");i=u.valueOf(),s=n.substring(0,l)}else s=n;switch(!0){case s.length===8:if(o=/(\d{4})(\d{2})(\d{2})/ig,l!==-1)throw new Error("Wrong input string for conversion");break;case s.length===10:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=60*i;this.minute=Math.floor(u),u=60*(u-this.minute),this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case s.length===12:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=60*i;this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case s.length===14:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=1e3*i;this.millisecond=Math.floor(u)}break;default:throw new Error("Wrong input string for conversion")}let f=o.exec(s);if(f===null)throw new Error("Wrong input string for conversion");for(let u=1;u<f.length;u++)switch(u){case 1:this.year=parseInt(f[u],10);break;case 2:this.month=parseInt(f[u],10);break;case 3:this.day=parseInt(f[u],10);break;case 4:this.hour=parseInt(f[u],10)+a;break;case 5:this.minute=parseInt(f[u],10)+c;break;case 6:this.second=parseInt(f[u],10);break;default:throw new Error("Wrong input string for conversion")}if(t===!1){let u=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=u.getUTCFullYear(),this.month=u.getUTCMonth(),this.day=u.getUTCDay(),this.hour=u.getUTCHours(),this.minute=u.getUTCMinutes(),this.second=u.getUTCSeconds(),this.millisecond=u.getUTCMilliseconds()}}toString(e="iso"){if(e==="iso"){let t=[];return t.push(Ce(this.year,4)),t.push(Ce(this.month,2)),t.push(Ce(this.day,2)),t.push(Ce(this.hour,2)),t.push(Ce(this.minute,2)),t.push(Ce(this.second,2)),this.millisecond!==0&&(t.push("."),t.push(Ce(this.millisecond,3))),t.push("Z"),t.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};O3=is;R.GeneralizedTime=O3;is.NAME="GeneralizedTime";var V3,os=class extends Rt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};V3=os;R.DATE=V3;os.NAME="DATE";var F3,as=class extends Rt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};F3=as;R.TimeOfDay=F3;as.NAME="TimeOfDay";var M3,cs=class extends Rt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};M3=cs;R.DateTime=M3;cs.NAME="DateTime";var H3,ls=class extends Rt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};H3=ls;R.Duration=H3;ls.NAME="Duration";var K3,us=class extends Rt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};K3=us;R.TIME=K3;us.NAME="TIME";function Pa(r){let{result:e}=Jr(r),t=e.valueBlock.value;return{n:P(ut(t[1].toBigInt()),"base64url"),e:P(ut(t[2].toBigInt()),"base64url"),d:P(ut(t[3].toBigInt()),"base64url"),p:P(ut(t[4].toBigInt()),"base64url"),q:P(ut(t[5].toBigInt()),"base64url"),dp:P(ut(t[6].toBigInt()),"base64url"),dq:P(ut(t[7].toBigInt()),"base64url"),qi:P(ut(t[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function Ca(r){if(r.n==null||r.e==null||r.d==null||r.p==null||r.q==null||r.dp==null||r.dq==null||r.qi==null)throw new x("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new we({value:[new de({value:0}),de.fromBigInt(ft(z(r.n,"base64url"))),de.fromBigInt(ft(z(r.e,"base64url"))),de.fromBigInt(ft(z(r.d,"base64url"))),de.fromBigInt(ft(z(r.p,"base64url"))),de.fromBigInt(ft(z(r.q,"base64url"))),de.fromBigInt(ft(z(r.dp,"base64url"))),de.fromBigInt(ft(z(r.dq,"base64url"))),de.fromBigInt(ft(z(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function Da(r){let{result:e}=Jr(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:P(ut(t[0].toBigInt()),"base64url"),e:P(ut(t[1].toBigInt()),"base64url")}}function Ua(r){if(r.n==null||r.e==null)throw new x("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new we({value:[new we({value:[new Je({value:"1.2.840.113549.1.1.1"}),new Zt]}),new Qr({valueHex:new we({value:[de.fromBigInt(ft(z(r.n,"base64url"))),de.fromBigInt(ft(z(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function ut(r){let e=r.toString(16);e.length%2>0&&(e=`0${e}`);let t=e.length/2,n=new Uint8Array(t),s=0,i=0;for(;s<t;)n[s]=parseInt(e.slice(i,i+2),16),s+=1,i+=2;return n}function ft(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}var Oa=16,Bo=32,Io=1e4;async function Va(r,e){let t=ee.get(),s=new we({value:[new de({value:0}),new we({value:[new Je({value:"1.2.840.113549.1.1.1"}),new Zt]}),new St({valueHex:r.marshal()})]}).toBER(),i=new Uint8Array(s,0,s.byteLength),o=ct(Oa),a=await wo(qr,e,o,{c:Io,dkLen:Bo}),c=ct(16),l=await t.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),f=await t.subtle.encrypt({name:"AES-CBC",iv:c},l,i),u=new we({value:[new St({valueHex:o}),new de({value:Io}),new de({value:Bo}),new we({value:[new Je({value:"1.2.840.113549.2.11"}),new Zt]})]}),h=new we({value:[new Je({value:"1.2.840.113549.1.5.13"}),new we({value:[new we({value:[new Je({value:"1.2.840.113549.1.5.12"}),u]}),new we({value:[new Je({value:"2.16.840.1.101.3.4.1.42"}),new St({valueHex:c})]})]})]}),p=new we({value:[h,new St({valueHex:f})]}).toBER(),d=new Uint8Array(p,0,p.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...P(d,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
7
- `)}async function So(r,e){let t=ee.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let s=z(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:i}=Jr(s),{iv:o,salt:a,iterations:c,keySize:l,cipherText:f}=Fa(i),u=await wo(qr,e,a,{c,dkLen:l}),h=await t.subtle.importKey("raw",u,"AES-CBC",!1,["decrypt"]),m=Pn(await t.subtle.decrypt({name:"AES-CBC",iv:o},h,f)),{result:p}=Jr(m);n=q3(p)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let s=z(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:i}=Jr(s);n=q3(i)}else throw new x("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return Ro(n)}function Fa(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new x("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new x("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let i=n.valueBlock.value[1],o=Pn(i.valueBlock.value[0].getValue()),a=Io,c=Bo;if(i.valueBlock.value.length===3)a=Number(i.valueBlock.value[1].toBigInt()),c=Number(i.valueBlock.value[2].toBigInt());else if(i.valueBlock.value.length===2)throw new x("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let l=e.valueBlock.value[1].valueBlock.value[1],f=l.valueBlock.value[0].toString();if(f!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(f!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new x("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let u=Pn(l.valueBlock.value[1].getValue());return{cipherText:Pn(r.valueBlock.value[1].getValue()),salt:o,iterations:a,keySize:c,iv:u}}function q3(r){return Pn(r.valueBlock.value[2].getValue())}function Pn(r){return new Uint8Array(r,0,r.byteLength)}async function $3(r){let e=await ee.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await j3(e);return{privateKey:t[0],publicKey:t[1]}}async function ko(r){let t=[await ee.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await Ma(r)],n=await j3({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function z3(r,e){let t=await ee.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await ee.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function G3(r,e,t){let n=await ee.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return ee.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function j3(r){if(r.privateKey==null||r.publicKey==null)throw new x("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([ee.get().subtle.exportKey("jwk",r.privateKey),ee.get().subtle.exportKey("jwk",r.publicKey)])}async function Ma(r){return ee.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function hs(r){if(r.kty!=="RSA")throw new x("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new x("invalid key modulus","ERR_INVALID_KEY_MODULUS");return z(r.n,"base64url").length*8}var dr=8192,hr=class{_key;constructor(e){this._key=e}verify(e,t){return G3(this._key,t,e)}marshal(){return Qt.jwkToPkix(this._key)}get bytes(){return Qe.encode({Type:X.RSA,Data:this.marshal()}).subarray()}equals(e){return Q(this.bytes,e.bytes)}hash(){let e=ne.digest(this.bytes);return $e(e)?e.then(({bytes:t})=>t):e.bytes}},Xt=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return ct(16)}sign(e){return z3(this._key,e)}get public(){if(this._publicKey==null)throw new x("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new hr(this._publicKey)}marshal(){return Qt.jwkToPkcs1(this._key)}get bytes(){return Xe.encode({Type:X.RSA,Data:this.marshal()}).subarray()}equals(e){return Q(this.bytes,e.bytes)}hash(){let e=ne.digest(this.bytes);return $e(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return P(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return Qt.exportToPem(this,e);if(t==="libp2p-key")return jr(this.bytes,e);throw new x(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function Ro(r){let e=Qt.pkcs1ToJwk(r);if(hs(e)>dr)throw new x("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await ko(e);return new Xt(t.privateKey,t.publicKey)}function Ka(r){let e=Qt.pkixToJwk(r);if(hs(e)>dr)throw new x("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new hr(e)}async function qa(r){if(hs(r)>dr)throw new x("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await ko(r);return new Xt(e.privateKey,e.publicKey)}async function $a(r){if(r>dr)throw new x("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await $3(r);return new Xt(e.privateKey,e.publicKey)}var Co={};ue(Co,{Secp256k1PrivateKey:()=>mr,Secp256k1PublicKey:()=>gr,generateKeyPair:()=>n7,unmarshalSecp256k1PrivateKey:()=>t7,unmarshalSecp256k1PublicKey:()=>r7});var za=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Jt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),er=new Uint32Array(64),_o=class extends Kr{constructor(){super(64,32,8,!1),this.A=Jt[0]|0,this.B=Jt[1]|0,this.C=Jt[2]|0,this.D=Jt[3]|0,this.E=Jt[4]|0,this.F=Jt[5]|0,this.G=Jt[6]|0,this.H=Jt[7]|0}get(){let{A:e,B:t,C:n,D:s,E:i,F:o,G:a,H:c}=this;return[e,t,n,s,i,o,a,c]}set(e,t,n,s,i,o,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=s|0,this.E=i|0,this.F=o|0,this.G=a|0,this.H=c|0}process(e,t){for(let u=0;u<16;u++,t+=4)er[u]=e.getUint32(t,!1);for(let u=16;u<64;u++){let h=er[u-15],m=er[u-2],p=We(h,7)^We(h,18)^h>>>3,d=We(m,17)^We(m,19)^m>>>10;er[u]=d+er[u-7]+p+er[u-16]|0}let{A:n,B:s,C:i,D:o,E:a,F:c,G:l,H:f}=this;for(let u=0;u<64;u++){let h=We(a,6)^We(a,11)^We(a,25),m=f+h+I0(a,c,l)+za[u]+er[u]|0,d=(We(n,2)^We(n,13)^We(n,22))+S0(n,s,i)|0;f=l,l=c,c=a,a=o+m|0,o=i,i=s,s=n,n=m+d|0}n=n+this.A|0,s=s+this.B|0,i=i+this.C|0,o=o+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,f=f+this.H|0,this.set(n,s,i,o,a,c,l,f)}roundClean(){er.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Y3=h1(()=>new _o);function Ga(r){let e=An(r);at(e,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:t,Fp:n,a:s}=e;if(t){if(!n.eql(s,n.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if(typeof t!="object"||typeof t.beta!="bigint"||typeof t.splitScalar!="function")throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...e})}var{bytesToNumberBE:ja,hexToBytes:Ya}=g1,pr={Err:class extends Error{constructor(e=""){super(e)}},_parseInt(r){let{Err:e}=pr;if(r.length<2||r[0]!==2)throw new e("Invalid signature integer tag");let t=r[1],n=r.subarray(2,t+2);if(!t||n.length!==t)throw new e("Invalid signature integer: wrong length");if(n[0]&128)throw new e("Invalid signature integer: negative");if(n[0]===0&&!(n[1]&128))throw new e("Invalid signature integer: unnecessary leading zero");return{d:ja(n),l:r.subarray(t+2)}},toSig(r){let{Err:e}=pr,t=typeof r=="string"?Ya(r):r;$r(t);let n=t.length;if(n<2||t[0]!=48)throw new e("Invalid signature tag");if(t[1]!==n-2)throw new e("Invalid signature: incorrect length");let{d:s,l:i}=pr._parseInt(t.subarray(2)),{d:o,l:a}=pr._parseInt(i);if(a.length)throw new e("Invalid signature: left bytes after parsing");return{r:s,s:o}},hexFromSig(r){let e=l=>Number.parseInt(l[0],16)&8?"00"+l:l,t=l=>{let f=l.toString(16);return f.length&1?`0${f}`:f},n=e(t(r.s)),s=e(t(r.r)),i=n.length/2,o=s.length/2,a=t(i),c=t(o);return`30${t(o+i+4)}02${c}${s}02${a}${n}`}},_t=BigInt(0),Ge=BigInt(1),xh=BigInt(2),W3=BigInt(3),Eh=BigInt(4);function Wa(r){let e=Ga(r),{Fp:t}=e,n=e.toBytes||((p,d,g)=>{let y=d.toAffine();return vt(Uint8Array.from([4]),t.toBytes(y.x),t.toBytes(y.y))}),s=e.fromBytes||(p=>{let d=p.subarray(1),g=t.fromBytes(d.subarray(0,t.BYTES)),y=t.fromBytes(d.subarray(t.BYTES,2*t.BYTES));return{x:g,y}});function i(p){let{a:d,b:g}=e,y=t.sqr(p),v=t.mul(y,p);return t.add(t.add(v,t.mul(p,d)),g)}if(!t.eql(t.sqr(e.Gy),i(e.Gx)))throw new Error("bad generator point: equation left != right");function o(p){return typeof p=="bigint"&&_t<p&&p<e.n}function a(p){if(!o(p))throw new Error("Expected valid bigint: 0 < bigint < curve.n")}function c(p){let{allowedPrivateKeyLengths:d,nByteLength:g,wrapPrivateKey:y,n:v}=e;if(d&&typeof p!="bigint"){if(zt(p)&&(p=bt(p)),typeof p!="string"||!d.includes(p.length))throw new Error("Invalid key");p=p.padStart(g*2,"0")}let b;try{b=typeof p=="bigint"?p:wt(oe("private key",p,g))}catch{throw new Error(`private key must be ${g} bytes, hex or bigint, not ${typeof p}`)}return y&&(b=Z(b,v)),a(b),b}let l=new Map;function f(p){if(!(p instanceof u))throw new Error("ProjectivePoint expected")}class u{constructor(d,g,y){if(this.px=d,this.py=g,this.pz=y,d==null||!t.isValid(d))throw new Error("x required");if(g==null||!t.isValid(g))throw new Error("y required");if(y==null||!t.isValid(y))throw new Error("z required")}static fromAffine(d){let{x:g,y}=d||{};if(!d||!t.isValid(g)||!t.isValid(y))throw new Error("invalid affine point");if(d instanceof u)throw new Error("projective point not allowed");let v=b=>t.eql(b,t.ZERO);return v(g)&&v(y)?u.ZERO:new u(g,y,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(d){let g=t.invertBatch(d.map(y=>y.pz));return d.map((y,v)=>y.toAffine(g[v])).map(u.fromAffine)}static fromHex(d){let g=u.fromAffine(s(oe("pointHex",d)));return g.assertValidity(),g}static fromPrivateKey(d){return u.BASE.multiply(c(d))}_setWindowSize(d){this._WINDOW_SIZE=d,l.delete(this)}assertValidity(){if(this.is0()){if(e.allowInfinityPoint&&!t.is0(this.py))return;throw new Error("bad point: ZERO")}let{x:d,y:g}=this.toAffine();if(!t.isValid(d)||!t.isValid(g))throw new Error("bad point: x or y not FE");let y=t.sqr(g),v=i(d);if(!t.eql(y,v))throw new Error("bad point: equation left != right");if(!this.isTorsionFree())throw new Error("bad point: not in prime-order subgroup")}hasEvenY(){let{y:d}=this.toAffine();if(t.isOdd)return!t.isOdd(d);throw new Error("Field doesn't support isOdd")}equals(d){f(d);let{px:g,py:y,pz:v}=this,{px:b,py:S,pz:E}=d,I=t.eql(t.mul(g,E),t.mul(b,v)),N=t.eql(t.mul(y,E),t.mul(S,v));return I&&N}negate(){return new u(this.px,t.neg(this.py),this.pz)}double(){let{a:d,b:g}=e,y=t.mul(g,W3),{px:v,py:b,pz:S}=this,E=t.ZERO,I=t.ZERO,N=t.ZERO,T=t.mul(v,v),j=t.mul(b,b),q=t.mul(S,S),U=t.mul(v,b);return U=t.add(U,U),N=t.mul(v,S),N=t.add(N,N),E=t.mul(d,N),I=t.mul(y,q),I=t.add(E,I),E=t.sub(j,I),I=t.add(j,I),I=t.mul(E,I),E=t.mul(U,E),N=t.mul(y,N),q=t.mul(d,q),U=t.sub(T,q),U=t.mul(d,U),U=t.add(U,N),N=t.add(T,T),T=t.add(N,T),T=t.add(T,q),T=t.mul(T,U),I=t.add(I,T),q=t.mul(b,S),q=t.add(q,q),T=t.mul(q,U),E=t.sub(E,T),N=t.mul(q,j),N=t.add(N,N),N=t.add(N,N),new u(E,I,N)}add(d){f(d);let{px:g,py:y,pz:v}=this,{px:b,py:S,pz:E}=d,I=t.ZERO,N=t.ZERO,T=t.ZERO,j=e.a,q=t.mul(e.b,W3),U=t.mul(g,b),ce=t.mul(y,S),ae=t.mul(v,E),He=t.add(g,y),A=t.add(b,S);He=t.mul(He,A),A=t.add(U,ce),He=t.sub(He,A),A=t.add(g,v);let _=t.add(b,E);return A=t.mul(A,_),_=t.add(U,ae),A=t.sub(A,_),_=t.add(y,v),I=t.add(S,E),_=t.mul(_,I),I=t.add(ce,ae),_=t.sub(_,I),T=t.mul(j,A),I=t.mul(q,ae),T=t.add(I,T),I=t.sub(ce,T),T=t.add(ce,T),N=t.mul(I,T),ce=t.add(U,U),ce=t.add(ce,U),ae=t.mul(j,ae),A=t.mul(q,A),ce=t.add(ce,ae),ae=t.sub(U,ae),ae=t.mul(j,ae),A=t.add(A,ae),U=t.mul(ce,A),N=t.add(N,U),U=t.mul(_,A),I=t.mul(He,I),I=t.sub(I,U),U=t.mul(He,ce),T=t.mul(_,T),T=t.add(T,U),new u(I,N,T)}subtract(d){return this.add(d.negate())}is0(){return this.equals(u.ZERO)}wNAF(d){return m.wNAFCached(this,l,d,g=>{let y=t.invertBatch(g.map(v=>v.pz));return g.map((v,b)=>v.toAffine(y[b])).map(u.fromAffine)})}multiplyUnsafe(d){let g=u.ZERO;if(d===_t)return g;if(a(d),d===Ge)return this;let{endo:y}=e;if(!y)return m.unsafeLadder(this,d);let{k1neg:v,k1:b,k2neg:S,k2:E}=y.splitScalar(d),I=g,N=g,T=this;for(;b>_t||E>_t;)b&Ge&&(I=I.add(T)),E&Ge&&(N=N.add(T)),T=T.double(),b>>=Ge,E>>=Ge;return v&&(I=I.negate()),S&&(N=N.negate()),N=new u(t.mul(N.px,y.beta),N.py,N.pz),I.add(N)}multiply(d){a(d);let g=d,y,v,{endo:b}=e;if(b){let{k1neg:S,k1:E,k2neg:I,k2:N}=b.splitScalar(g),{p:T,f:j}=this.wNAF(E),{p:q,f:U}=this.wNAF(N);T=m.constTimeNegate(S,T),q=m.constTimeNegate(I,q),q=new u(t.mul(q.px,b.beta),q.py,q.pz),y=T.add(q),v=j.add(U)}else{let{p:S,f:E}=this.wNAF(g);y=S,v=E}return u.normalizeZ([y,v])[0]}multiplyAndAddUnsafe(d,g,y){let v=u.BASE,b=(E,I)=>I===_t||I===Ge||!E.equals(v)?E.multiplyUnsafe(I):E.multiply(I),S=b(this,g).add(b(d,y));return S.is0()?void 0:S}toAffine(d){let{px:g,py:y,pz:v}=this,b=this.is0();d==null&&(d=b?t.ONE:t.inv(v));let S=t.mul(g,d),E=t.mul(y,d),I=t.mul(v,d);if(b)return{x:t.ZERO,y:t.ZERO};if(!t.eql(I,t.ONE))throw new Error("invZ was invalid");return{x:S,y:E}}isTorsionFree(){let{h:d,isTorsionFree:g}=e;if(d===Ge)return!0;if(g)return g(u,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:d,clearCofactor:g}=e;return d===Ge?this:g?g(u,this):this.multiplyUnsafe(e.h)}toRawBytes(d=!0){return this.assertValidity(),n(u,this,d)}toHex(d=!0){return bt(this.toRawBytes(d))}}u.BASE=new u(e.Gx,e.Gy,t.ONE),u.ZERO=new u(t.ZERO,t.ONE,t.ZERO);let h=e.nBitLength,m=b1(u,e.endo?Math.ceil(h/2):h);return{CURVE:e,ProjectivePoint:u,normPrivateKeyToScalar:c,weierstrassEquation:i,isWithinCurveOrder:o}}function Za(r){let e=An(r);return at(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function Z3(r){let e=Za(r),{Fp:t,n}=e,s=t.BYTES+1,i=2*t.BYTES+1;function o(A){return _t<A&&A<t.ORDER}function a(A){return Z(A,n)}function c(A){return m1(A,n)}let{ProjectivePoint:l,normPrivateKeyToScalar:f,weierstrassEquation:u,isWithinCurveOrder:h}=Wa({...e,toBytes(A,_,O){let B=_.toAffine(),w=t.toBytes(B.x),k=vt;return O?k(Uint8Array.from([_.hasEvenY()?2:3]),w):k(Uint8Array.from([4]),w,t.toBytes(B.y))},fromBytes(A){let _=A.length,O=A[0],B=A.subarray(1);if(_===s&&(O===2||O===3)){let w=wt(B);if(!o(w))throw new Error("Point is not on curve");let k=u(w),L;try{L=t.sqrt(k)}catch(F){let G=F instanceof Error?": "+F.message:"";throw new Error("Point is not on curve"+G)}let C=(L&Ge)===Ge;return(O&1)===1!==C&&(L=t.neg(L)),{x:w,y:L}}else if(_===i&&O===4){let w=t.fromBytes(B.subarray(0,t.BYTES)),k=t.fromBytes(B.subarray(t.BYTES,2*t.BYTES));return{x:w,y:k}}else throw new Error(`Point of length ${_} was invalid. Expected ${s} compressed bytes or ${i} uncompressed bytes`)}}),m=A=>bt(jt(A,e.nByteLength));function p(A){let _=n>>Ge;return A>_}function d(A){return p(A)?a(-A):A}let g=(A,_,O)=>wt(A.slice(_,O));class y{constructor(_,O,B){this.r=_,this.s=O,this.recovery=B,this.assertValidity()}static fromCompact(_){let O=e.nByteLength;return _=oe("compactSignature",_,O*2),new y(g(_,0,O),g(_,O,2*O))}static fromDER(_){let{r:O,s:B}=pr.toSig(oe("DER",_));return new y(O,B)}assertValidity(){if(!h(this.r))throw new Error("r must be 0 < r < CURVE.n");if(!h(this.s))throw new Error("s must be 0 < s < CURVE.n")}addRecoveryBit(_){return new y(this.r,this.s,_)}recoverPublicKey(_){let{r:O,s:B,recovery:w}=this,k=N(oe("msgHash",_));if(w==null||![0,1,2,3].includes(w))throw new Error("recovery id invalid");let L=w===2||w===3?O+e.n:O;if(L>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");let C=w&1?"03":"02",V=l.fromHex(C+m(L)),F=c(L),G=a(-k*F),K=a(B*F),$=l.BASE.multiplyAndAddUnsafe(V,G,K);if(!$)throw new Error("point at infinify");return $.assertValidity(),$}hasHighS(){return p(this.s)}normalizeS(){return this.hasHighS()?new y(this.r,a(-this.s),this.recovery):this}toDERRawBytes(){return ar(this.toDERHex())}toDERHex(){return pr.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return ar(this.toCompactHex())}toCompactHex(){return m(this.r)+m(this.s)}}let v={isValidPrivateKey(A){try{return f(A),!0}catch{return!1}},normPrivateKeyToScalar:f,randomPrivateKey:()=>{let A=co(e.n);return O0(e.randomBytes(A),e.n)},precompute(A=8,_=l.BASE){return _._setWindowSize(A),_.multiply(BigInt(3)),_}};function b(A,_=!0){return l.fromPrivateKey(A).toRawBytes(_)}function S(A){let _=zt(A),O=typeof A=="string",B=(_||O)&&A.length;return _?B===s||B===i:O?B===2*s||B===2*i:A instanceof l}function E(A,_,O=!0){if(S(A))throw new Error("first arg must be private key");if(!S(_))throw new Error("second arg must be public key");return l.fromHex(_).multiply(f(A)).toRawBytes(O)}let I=e.bits2int||function(A){let _=wt(A),O=A.length*8-e.nBitLength;return O>0?_>>BigInt(O):_},N=e.bits2int_modN||function(A){return a(I(A))},T=En(e.nBitLength);function j(A){if(typeof A!="bigint")throw new Error("bigint expected");if(!(_t<=A&&A<T))throw new Error(`bigint expected < 2^${e.nBitLength}`);return jt(A,e.nByteLength)}function q(A,_,O=U){if(["recovered","canonical"].some(se=>se in O))throw new Error("sign() legacy options not supported");let{hash:B,randomBytes:w}=e,{lowS:k,prehash:L,extraEntropy:C}=O;k==null&&(k=!0),A=oe("msgHash",A),L&&(A=oe("prehashed msgHash",B(A)));let V=N(A),F=f(_),G=[j(F),j(V)];if(C!=null&&C!==!1){let se=C===!0?w(t.BYTES):C;G.push(oe("extraEntropy",se))}let K=vt(...G),$=V;function le(se){let ve=I(se);if(!h(ve))return;let xe=c(ve),pe=l.BASE.multiply(ve).toAffine(),Ae=a(pe.x);if(Ae===_t)return;let ht=a(xe*a($+Ae*F));if(ht===_t)return;let tr=(pe.x===Ae?0:2)|Number(pe.y&Ge),on=ht;return k&&p(ht)&&(on=d(ht),tr^=1),new y(Ae,on,tr)}return{seed:K,k2sig:le}}let U={lowS:e.lowS,prehash:!1},ce={lowS:e.lowS,prehash:!1};function ae(A,_,O=U){let{seed:B,k2sig:w}=q(A,_,O),k=e;return so(k.hash.outputLen,k.nByteLength,k.hmac)(B,w)}l.BASE._setWindowSize(8);function He(A,_,O,B=ce){let w=A;if(_=oe("msgHash",_),O=oe("publicKey",O),"strict"in B)throw new Error("options.strict was renamed to lowS");let{lowS:k,prehash:L}=B,C,V;try{if(typeof w=="string"||zt(w))try{C=y.fromDER(w)}catch(pe){if(!(pe instanceof pr.Err))throw pe;C=y.fromCompact(w)}else if(typeof w=="object"&&typeof w.r=="bigint"&&typeof w.s=="bigint"){let{r:pe,s:Ae}=w;C=new y(pe,Ae)}else throw new Error("PARSE");V=l.fromHex(O)}catch(pe){if(pe.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(k&&C.hasHighS())return!1;L&&(_=e.hash(_));let{r:F,s:G}=C,K=N(_),$=c(G),le=a(K*$),se=a(F*$),ve=l.BASE.multiplyAndAddUnsafe(V,le,se)?.toAffine();return ve?a(ve.x)===F:!1}return{CURVE:e,getPublicKey:b,getSharedSecret:E,sign:ae,verify:He,ProjectivePoint:l,Signature:y,utils:v}}function Qa(r){return{hash:r,hmac:(e,...t)=>Bn(r,e,f1(...t)),randomBytes:Hr}}function Q3(r,e){let t=n=>Z3({...r,...Qa(n)});return Object.freeze({...t(e),create:t})}var e4=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),X3=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),Xa=BigInt(1),To=BigInt(2),J3=(r,e)=>(r+e/To)/e;function Ja(r){let e=e4,t=BigInt(3),n=BigInt(6),s=BigInt(11),i=BigInt(22),o=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%e,f=l*l*r%e,u=re(f,t,e)*f%e,h=re(u,t,e)*f%e,m=re(h,To,e)*l%e,p=re(m,s,e)*m%e,d=re(p,i,e)*p%e,g=re(d,a,e)*d%e,y=re(g,c,e)*g%e,v=re(y,a,e)*d%e,b=re(v,t,e)*f%e,S=re(b,o,e)*p%e,E=re(S,n,e)*l%e,I=re(E,To,e);if(!Lo.eql(Lo.sqr(I),r))throw new Error("Cannot find square root");return I}var Lo=y1(e4,void 0,void 0,{sqrt:Ja}),tt=Q3({a:BigInt(0),b:BigInt(7),Fp:Lo,n:X3,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let e=X3,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-Xa*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),s=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),i=t,o=BigInt("0x100000000000000000000000000000000"),a=J3(i*r,e),c=J3(-n*r,e),l=Z(r-a*t-c*s,e),f=Z(-a*n-c*i,e),u=l>o,h=f>o;if(u&&(l=e-l),h&&(f=e-f),l>o||f>o)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:u,k1:l,k2neg:h,k2:f}}}},Y3),Th=BigInt(0);var Lh=tt.ProjectivePoint;function t4(){return tt.utils.randomPrivateKey()}function r4(r,e){let t=ne.digest(e instanceof Uint8Array?e:e.subarray());if($e(t))return t.then(({digest:n})=>tt.sign(n,r).toDERRawBytes()).catch(n=>{throw new x(String(n),"ERR_INVALID_INPUT")});try{return tt.sign(t.digest,r).toDERRawBytes()}catch(n){throw new x(String(n),"ERR_INVALID_INPUT")}}function n4(r,e,t){let n=ne.digest(t instanceof Uint8Array?t:t.subarray());if($e(n))return n.then(({digest:s})=>tt.verify(e,s,r)).catch(s=>{throw new x(String(s),"ERR_INVALID_INPUT")});try{return tt.verify(e,n.digest,r)}catch(s){throw new x(String(s),"ERR_INVALID_INPUT")}}function s4(r){return tt.ProjectivePoint.fromHex(r).toRawBytes(!0)}function i4(r){try{tt.getPublicKey(r,!0)}catch(e){throw new x(String(e),"ERR_INVALID_PRIVATE_KEY")}}function Po(r){try{tt.ProjectivePoint.fromHex(r)}catch(e){throw new x(String(e),"ERR_INVALID_PUBLIC_KEY")}}function o4(r){try{return tt.getPublicKey(r,!0)}catch(e){throw new x(String(e),"ERR_INVALID_PRIVATE_KEY")}}var gr=class{_key;constructor(e){Po(e),this._key=e}verify(e,t){return n4(this._key,t,e)}marshal(){return s4(this._key)}get bytes(){return Qe.encode({Type:X.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return Q(this.bytes,e.bytes)}async hash(){let e=ne.digest(this.bytes),t;return $e(e)?{bytes:t}=await e:t=e.bytes,t}},mr=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??o4(e),i4(this._key),Po(this._publicKey)}sign(e){return r4(this._key,e)}get public(){return new gr(this._publicKey)}marshal(){return this._key}get bytes(){return Xe.encode({Type:X.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return Q(this.bytes,e.bytes)}hash(){let e=ne.digest(this.bytes);return $e(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return P(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return jr(this.bytes,e);throw new x(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function t7(r){return new mr(r)}function r7(r){return new gr(r)}async function n7(){let r=t4();return new mr(r)}var Tt={rsa:No,ed25519:yo,secp256k1:Co};function Do(r){let e=Object.keys(Tt).join(" / ");return new x(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function Uo(r){if(r=r.toLowerCase(),r==="rsa"||r==="ed25519"||r==="secp256k1")return Tt[r];throw Do(r)}async function s7(r,e){return Uo(r).generateKeyPair(e??2048)}async function i7(r,e,t){if(r.toLowerCase()!=="ed25519")throw new x("Seed key derivation is unimplemented for RSA or secp256k1","ERR_UNSUPPORTED_KEY_DERIVATION_TYPE");return mo(e)}function o7(r){let e=Qe.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case X.RSA:return Tt.rsa.unmarshalRsaPublicKey(t);case X.Ed25519:return Tt.ed25519.unmarshalEd25519PublicKey(t);case X.Secp256k1:return Tt.secp256k1.unmarshalSecp256k1PublicKey(t);default:throw Do(e.Type??"unknown")}}function a7(r,e){return e=(e??"rsa").toLowerCase(),Uo(e),r.bytes}async function a4(r){let e=Xe.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case X.RSA:return Tt.rsa.unmarshalRsaPrivateKey(t);case X.Ed25519:return Tt.ed25519.unmarshalEd25519PrivateKey(t);case X.Secp256k1:return Tt.secp256k1.unmarshalSecp256k1PrivateKey(t);default:throw Do(e.Type??"RSA")}}function c7(r,e){return e=(e??"rsa").toLowerCase(),Uo(e),r.bytes}async function l7(r,e){try{let t=await J0(r,e);return await a4(t)}catch{}if(!r.includes("BEGIN"))throw new x("Encrypted key was not a libp2p-key or a PEM file","ERR_INVALID_IMPORT_FORMAT");return So(r,e)}var l4=Symbol.for("@achingbrain/uint8arraylist");function c4(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 ps(r){return!!r?.[l4]}var Me=class r{bufs;length;[l4]=!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(ps(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(ps(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=c4(this.bufs,e);return t.buf[t.index]}set(e,t){let n=c4(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(ps(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 J(n,s)}subarray(e,t){let{bufs:n,length:s}=this._subList(e,t);return n.length===1?n[0]:J(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 l=e>=a&&e<c,f=t>a&&t<=c;if(l&&f){if(e===a&&t===c){n.push(o);break}let u=e-a;n.push(o.subarray(u,u+(t-e)));break}if(l){if(e===0){n.push(o);continue}n.push(o.subarray(e-a));continue}if(f){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(!ps(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 u=0;u<i;u++)o[u]=-1;for(let u=0;u<s;u++)o[n[u]]=u;let a=o,c=this.byteLength-n.byteLength,l=n.byteLength-1,f;for(let u=t;u<=c;u+=f){f=0;for(let h=l;h>=0;h--){let m=this.get(u+h);if(n[h]!==m){f=Math.max(1,h-a[m]);break}}if(f===0)return u}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=be(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=Pe(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=Pe(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=Pe(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=be(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=Pe(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=Pe(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=Pe(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=Pe(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=Pe(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(!Q(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 dd=parseInt("0xFFFF",16),pd=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);var h4=r1,p7=n1,Oo=function(r){let e=0;if(r=r.toString().trim(),h4(r)){let t=new Uint8Array(e+4);return r.split(/\./g).forEach(n=>{t[e++]=parseInt(n,10)&255}),t}if(p7(r)){let t=r.split(":",8),n;for(n=0;n<t.length;n++){let i=h4(t[n]),o;i&&(o=Oo(t[n]),t[n]=P(o.slice(0,2),"base16")),o!=null&&++n<8&&t.splice(n,0,P(o.slice(2,4),"base16"))}if(t[0]==="")for(;t.length<8;)t.unshift("0");else if(t[t.length-1]==="")for(;t.length<8;)t.push("0");else if(t.length<8){for(n=0;n<t.length&&t[n]!=="";n++);let i=[n,1];for(n=9-t.length;n>0;n--)i.push("0");t.splice.apply(t,i)}let s=new Uint8Array(e+16);for(n=0;n<t.length;n++){let i=parseInt(t[n],16);s[e++]=i>>8&255,s[e++]=i&255}return s}throw new Error("invalid ip address")},d4=function(r,e=0,t){e=~~e,t=t??r.length-e;let n=new DataView(r.buffer);if(t===4){let s=[];for(let i=0;i<t;i++)s.push(r[e+i]);return s.join(".")}if(t===16){let s=[];for(let i=0;i<t;i+=2)s.push(n.getUint16(e+i).toString(16));return s.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var en={},Vo={},m7=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,-1,"ip6zone"],[43,8,"ipcidr"],[53,-1,"dns",!0],[54,-1,"dns4",!0],[55,-1,"dns6",!0],[56,-1,"dnsaddr",!0],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[280,0,"webrtc-direct"],[281,0,"webrtc"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,-1,"unix",!1,!0],[421,-1,"ipfs"],[421,-1,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,-1,"garlic64"],[448,0,"tls"],[449,-1,"sni"],[460,0,"quic"],[461,0,"quic-v1"],[465,0,"webtransport"],[466,-1,"certhash"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[777,-1,"memory"]];m7.forEach(r=>{let e=y7(...r);Vo[e.code]=e,en[e.name]=e});function y7(r,e,t,n,s){return{code:r,size:e,name:t,resolvable:!!n,path:!!s}}function W(r){if(typeof r=="number"){if(Vo[r]!=null)return Vo[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(en[r]!=null)return en[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var Wd=W("ip4"),Zd=W("ip6"),Qd=W("ipcidr");function Mo(r,e){switch(W(r).code){case 4:case 41:return w7(e);case 42:return m4(e);case 6:case 273:case 33:case 132:return b4(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return m4(e);case 421:return A7(e);case 444:return y4(e);case 445:return y4(e);case 466:return E7(e);default:return P(e,"base16")}}function Ho(r,e){switch(W(r).code){case 4:return p4(e);case 41:return p4(e);case 42:return g4(e);case 6:case 273:case 33:case 132:return Ko(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return g4(e);case 421:return v7(e);case 444:return B7(e);case 445:return I7(e);case 466:return x7(e);default:return z(e,"base16")}}var Fo=Object.values(Ot).map(r=>r.decoder),b7=function(){let r=Fo[0].or(Fo[1]);return Fo.slice(2).forEach(e=>r=r.or(e)),r}();function p4(r){if(!s1(r))throw new Error("invalid ip address");return Oo(r)}function w7(r){let e=d4(r,0,r.length);if(e==null)throw new Error("ipBuff is required");if(!s1(e))throw new Error("invalid ip address");return e}function Ko(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r),new Uint8Array(e)}function b4(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function g4(r){let e=z(r),t=Uint8Array.from(Ke(e.length));return J([t,e],t.length+e.length)}function m4(r){let e=Ue(r);if(r=r.slice(he(e)),r.length!==e)throw new Error("inconsistent lengths");return P(r)}function v7(r){let e;r[0]==="Q"||r[0]==="1"?e=nr(ge.decode(`z${r}`)).bytes:e=_e.parse(r).multihash.bytes;let t=Uint8Array.from(Ke(e.length));return J([t,e],t.length+e.length)}function x7(r){let e=b7.decode(r),t=Uint8Array.from(Ke(e.length));return J([t,e],t.length+e.length)}function E7(r){let e=Ue(r),t=r.slice(he(e));if(t.length!==e)throw new Error("inconsistent lengths");return"u"+P(t,"base64url")}function A7(r){let e=Ue(r),t=r.slice(he(e));if(t.length!==e)throw new Error("inconsistent lengths");return P(t,"base58btc")}function B7(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==16)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion address.`);let t=pt.decode("b"+e[0]),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let s=Ko(n);return J([t,s],t.length+s.length)}function I7(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==56)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion3 address.`);let t=pt.decode(`b${e[0]}`),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let s=Ko(n);return J([t,s],t.length+s.length)}function y4(r){let e=r.slice(0,r.length-2),t=r.slice(r.length-2),n=P(e,"base32"),s=b4(t);return`${n}:${s}`}function w4(r){r=qo(r);let e=[],t=[],n=null,s=r.split("/").slice(1);if(s.length===1&&s[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let i=0;i<s.length;i++){let o=s[i],a=W(o);if(a.size===0){e.push([a.code]),t.push([a.code]);continue}if(i++,i>=s.length)throw x4("invalid address: "+r);if(a.path===!0){n=qo(s.slice(i).join("/")),e.push([a.code,Ho(a.code,n)]),t.push([a.code,n]);break}let c=Ho(a.code,s[i]);e.push([a.code,c]),t.push([a.code,Mo(a.code,c)])}return{string:v4(t),bytes:zo(e),tuples:e,stringTuples:t,path:n}}function $o(r){let e=[],t=[],n=null,s=0;for(;s<r.length;){let i=Ue(r,s),o=he(i),a=W(i),c=S7(a,r.slice(s+o));if(c===0){e.push([i]),t.push([i]),s+=o;continue}let l=r.slice(s+o,s+o+c);if(s+=c+o,s>r.length)throw x4("Invalid address Uint8Array: "+P(r,"base16"));e.push([i,l]);let f=Mo(i,l);if(t.push([i,f]),a.path===!0){n=f;break}}return{bytes:Uint8Array.from(r),string:v4(t),tuples:e,stringTuples:t,path:n}}function v4(r){let e=[];return r.map(t=>{let n=W(t[0]);return e.push(n.name),t.length>1&&t[1]!=null&&e.push(t[1]),null}),qo(e.join("/"))}function zo(r){return J(r.map(e=>{let t=W(e[0]),n=Uint8Array.from(Ke(t.code));return e.length>1&&e[1]!=null&&(n=J([n,e[1]])),n}))}function S7(r,e){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let t=Ue(e instanceof Uint8Array?e:Uint8Array.from(e));return t+he(t)}}function qo(r){return"/"+r.trim().split("/").filter(e=>e).join("/")}function x4(r){return new Error("Error parsing address: "+r)}var R7=Symbol.for("nodejs.util.inspect.custom"),Go=Symbol.for("@multiformats/js-multiaddr/multiaddr"),k7=[W("dns").code,W("dns4").code,W("dns6").code,W("dnsaddr").code],gs=class r{bytes;#e;#r;#i;#a;[Go]=!0;constructor(e){e==null&&(e="");let t;if(e instanceof Uint8Array)t=$o(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);t=w4(e)}else if(A4(e))t=$o(e.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=t.bytes,this.#e=t.string,this.#r=t.tuples,this.#i=t.stringTuples,this.#a=t.path}toString(){return this.#e}toJSON(){return this.toString()}toOptions(){let e,t,n,s,i="",o=W("tcp"),a=W("udp"),c=W("ip4"),l=W("ip6"),f=W("dns6"),u=W("ip6zone");for(let[m,p]of this.stringTuples())m===u.code&&(i=`%${p??""}`),k7.includes(m)&&(t=o.name,s=443,n=`${p??""}${i}`,e=m===f.code?6:4),(m===o.code||m===a.code)&&(t=W(m).name,s=parseInt(p??"")),(m===c.code||m===l.code)&&(t=W(m).name,n=`${p??""}${i}`,e=m===l.code?6:4);if(e==null||t==null||n==null||s==null)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:e,host:n,transport:t,port:s}}protos(){return this.#r.map(([e])=>Object.assign({},W(e)))}protoCodes(){return this.#r.map(([e])=>e)}protoNames(){return this.#r.map(([e])=>W(e).name)}tuples(){return this.#r}stringTuples(){return this.#i}encapsulate(e){return e=new r(e),new r(this.toString()+e.toString())}decapsulate(e){let t=e.toString(),n=this.toString(),s=n.lastIndexOf(t);if(s<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${e.toString()}`);return new r(n.slice(0,s))}decapsulateCode(e){let t=this.tuples();for(let n=t.length-1;n>=0;n--)if(t[n][0]===e)return new r(zo(t.slice(0,n)));return this}getPeerId(){try{let e=[];this.stringTuples().forEach(([n,s])=>{n===en.p2p.code&&e.push([n,s]),n===en["p2p-circuit"].code&&(e=[])});let t=e.pop();if(t?.[1]!=null){let n=t[1];return n[0]==="Q"||n[0]==="1"?P(ge.decode(`z${n}`),"base58btc"):P(_e.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#a}equals(e){return Q(this.bytes,e.bytes)}async resolve(e){let t=this.protos().find(i=>i.resolvable);if(t==null)return[this];let n=E4.get(t.name);if(n==null)throw new x(`no available resolver for ${t.name}`,"ERR_NO_AVAILABLE_RESOLVER");return(await n(this,e)).map(i=>yr(i))}nodeAddress(){let e=this.toOptions();if(e.transport!=="tcp"&&e.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${e.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:e.family,address:e.host,port:e.port}}isThinWaistAddress(e){let t=(e??this).protos();return!(t.length!==2||t[0].code!==4&&t[0].code!==41||t[1].code!==6&&t[1].code!==273)}[R7](){return`Multiaddr(${this.#e})`}};var E4=new Map;function A4(r){return!!r?.[Go]}function yr(r){return new gs(r)}function B4(r,e){return{id:r.id.toBytes(),multiaddrs:(r.multiaddrs??[]).map(n=>n.bytes),connection:e}}function Cn(r){if(r.id==null)throw new Error("Invalid peer in message");return{id:gt(r.id),multiaddrs:(r.multiaddrs??[]).map(e=>yr(e))}}var ms=class{log;components;network;peerRouting;queryManager;routingTable;providers;constructor(e,t){let{network:n,peerRouting:s,queryManager:i,routingTable:o,providers:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-routing`),this.network=n,this.peerRouting=s,this.queryManager=i,this.routingTable=o,this.providers=a}async*provide(e,t,n={}){this.log("provide %s",e),await this.providers.addProvider(e,this.components.peerId);let s={type:M.ADD_PROVIDER,key:e.multihash.bytes,providers:[B4({id:this.components.peerId,multiaddrs:t})]},i=0,o=a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[];this.log("putProvider %s to %p",e,a.peer.id);try{this.log("sending provider record for %s to %p",e,a.peer.id);for await(let l of this.network.sendMessage(a.peer.id,s,n))l.name==="PEER_RESPONSE"&&(this.log("sent provider record for %s to %p",e,a.peer.id),i++),c.push(l)}catch(l){this.log.error("error sending provide record to peer %p",a.peer.id,l),c.push(Ve({from:a.peer.id,error:l},n))}return c};yield*Ft(this.peerRouting.getClosestPeers(e.multihash.bytes,n),a=>Yn(a,c=>o(c)),a=>yn(a,{ordered:!1,concurrency:3}),async function*(a){for await(let c of a)yield*c}),this.log("sent provider records to %d peers",i)}async*findProviders(e,t){let n=this.routingTable.kBucketSize,s=0,i=e.multihash.bytes,o=this;this.log("findProviders %c",e);let a=await this.providers.getProviders(e);if(a.length>0){let f=[];for(let u of a.slice(0,n))try{let h=await this.components.peerStore.get(u);f.push({id:u,multiaddrs:h.addresses.map(({multiaddr:m})=>m)})}catch(h){if(h.code!=="ERR_NOT_FOUND")throw h;this.log("no peer store entry for %p",u)}if(yield bn({from:this.components.peerId,messageType:M.GET_PROVIDERS,providers:f},t),yield Ki({from:this.components.peerId,providers:f},t),s+=f.length,s>=n)return}let c=async function*({peer:f,signal:u}){let h={type:M.GET_PROVIDERS,key:i};yield*o.network.sendRequest(f,h,{...t,signal:u})},l=new ot(a);for await(let f of this.queryManager.run(i,c,t))if(yield f,f.name==="PEER_RESPONSE"){this.log("Found %d provider entries for %c and %d closer peers",f.providers.length,e,f.closer.length);let u=[];for(let h of f.providers)l.has(h.id)||(l.add(h.id),u.push(h));if(u.length>0&&(yield Ki({from:f.from,providers:u},t),s+=u.length,s>=n))return}}};var ys=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function tn(r,e,t){if(e==null)return r;if(e.aborted)return Promise.reject(new ys(t?.errorMessage,t?.errorCode));let n,s=new ys(t?.errorMessage,t?.errorCode);try{return await Promise.race([r,new Promise((i,o)=>{n=()=>{o(s)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var jo=class{readNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.readNext=fe(),this.haveNext=fe()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let e=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=fe(),e}async throw(e){return this.ended=!0,e!=null&&this.haveNext.reject(e),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return await this._push(void 0),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw new Error("Cannot push value onto an ended pushable");if(this.nextResult!=null&&(await this.readNext.promise,this.nextResult!=null))throw new Error("NeedNext promise resolved but nextResult was not consumed");e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=fe(),await tn(this.readNext.promise,t?.signal,t)}};function I4(){return new jo}var bs=class extends Error{code;constructor(e,t){super(e),this.code=t}},Yo=class extends bs{type;constructor(e){super(e,"ABORT_ERR"),this.type="aborted"}};function S4(r,e){let t=I4();r.sink(t).catch(async o=>{await t.end(o)}),r.sink=async o=>{for await(let a of o)await t.push(a);await t.end()};let n=r.source;r.source[Symbol.iterator]!=null?n=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(n=r.source[Symbol.asyncIterator]());let s=new Me;return{read:async(o,a)=>{a?.signal?.throwIfAborted();let c,l=new Promise((f,u)=>{c=()=>{u(new Yo("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(o==null){let{done:u,value:h}=await Promise.race([n.next(),l]);return u===!0?new Me:h}for(;s.byteLength<o;){let{value:u,done:h}=await Promise.race([n.next(),l]);if(h===!0)throw new bs("unexpected end of input","ERR_UNEXPECTED_EOF");s.append(u)}let f=s.sublist(0,o);return s.consume(o),f}finally{c!=null&&a?.signal?.removeEventListener("abort",c)}},write:async(o,a)=>{a?.signal?.throwIfAborted(),o instanceof Uint8Array?await t.push(o,a):await t.push(o.subarray(),a)},unwrap:()=>{if(s.byteLength>0){let o=r.source;r.source=async function*(){e?.yieldBytes===!1?yield s:yield*s,yield*o}()}return r}}}var ws=class extends Error{code;constructor(e,t){super(e),this.code=t}};function R4(r,e={}){let t=S4(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=he(e.maxDataLength));let n=e?.lengthDecoder??Ue,s=e?.lengthEncoder??Ke;return{read:async o=>{let a=-1,c=new Me;for(;;){c.append(await t.read(1,o));try{a=n(c)}catch(l){if(l instanceof RangeError)continue;throw l}if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new ws("message length length too long","ERR_MSG_LENGTH_TOO_LONG");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new ws("message length too long","ERR_MSG_DATA_TOO_LONG");return t.read(a,o)},write:async(o,a)=>{await t.write(new Me(s(o.byteLength),o),a)},writeV:async(o,a)=>{let c=new Me(...o.flatMap(l=>[s(l.byteLength),l]));await t.write(c,a)},unwrap:()=>t.unwrap()}}function Dn(r,e){let t=R4(r,e),n={read:async(s,i)=>{let o=await t.read(i);return s.decode(o)},write:async(s,i,o)=>{await t.write(i.encode(s),o)},writeV:async(s,i,o)=>{await t.writeV(s.map(a=>i.encode(a)),o)},pb:s=>({read:async i=>n.read(s,i),write:async(i,o)=>n.write(i,s,o),writeV:async(i,o)=>n.writeV(i,s,o),unwrap:()=>n}),unwrap:()=>t.unwrap()};return n}var vs=class extends Be{log;protocol;running;components;constructor(e,t){super();let{protocol:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:network`),this.running=!1,this.protocol=n}async start(){this.running||(this.running=!0)}async stop(){this.running=!1}isStarted(){return this.running}async*sendRequest(e,t,n={}){if(!this.running)return;let s=t.type;if(s==null)throw new gn("Message type was missing","ERR_INVALID_PARAMETERS");this.log("sending %s to %p",t.type,e),yield qi({peer:e},n),yield Hi({to:e,type:s},n);let i;try{let a=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n),c=await this._writeReadMessage(a,t,n);yield bn({from:e,messageType:c.type,closer:c.closer.map(Cn),providers:c.providers.map(Cn),record:c.record==null?void 0:me.deserialize(c.record)},n)}catch(o){this.log.error("could not send %s to %p",t.type,e,o),yield Ve({from:e,error:o},n)}finally{i!=null&&await i.close()}}async*sendMessage(e,t,n={}){if(!this.running)return;let s=t.type;if(s==null)throw new gn("Message type was missing","ERR_INVALID_PARAMETERS");this.log("sending %s to %p",t.type,e),yield qi({peer:e},n),yield Hi({to:e,type:s},n);let i;try{let a=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n);await this._writeMessage(a,t,n),yield bn({from:e,messageType:s},n)}catch(o){yield Ve({from:e,error:o},n)}finally{i!=null&&await i.close()}}async _writeMessage(e,t,n){let s=Dn(e);await s.write(t,qe,n),await s.unwrap().close(n)}async _writeReadMessage(e,t,n){let s=Dn(e);await s.write(t,qe,n);let i=await s.read(qe,n);return await s.unwrap().close(n),i.closer.forEach(o=>{this.safeDispatchEvent("peer",{detail:Cn(o)})}),i.providers.forEach(o=>{this.safeDispatchEvent("peer",{detail:Cn(o)})}),i}};function xs(r,e){for(let t=0;t<r.byteLength;t++){if(r[t]<e[t])return-1;if(r[t]>e[t])return 1}return r.byteLength>e.byteLength?1:r.byteLength<e.byteLength?-1:0}function Lt(r,e){if(r.length!==e.length)throw new Error("Inputs should have the same length");let t=be(r.length);for(let n=0;n<r.length;n++)t[n]=r[n]^e[n];return t}var Es=class{originDhtKey;capacity;peerDistances;constructor(e,t){this.originDhtKey=e,this.capacity=t,this.peerDistances=[]}get length(){return this.peerDistances.length}get peers(){return this.peerDistances.map(e=>e.peerId)}async add(e){if(this.peerDistances.find(s=>s.peerId.equals(e))!=null)return;let t=await Ye(e),n={peerId:e,distance:Lt(this.originDhtKey,t)};this.peerDistances.push(n),this.peerDistances.sort((s,i)=>xs(s.distance,i.distance)),this.peerDistances=this.peerDistances.slice(0,this.capacity)}async anyCloser(e){if(e.length===0)return!1;if(this.length===0)return!0;let t=await Promise.all(e.map(Ye)),n=this.peerDistances[this.peerDistances.length-1].distance;for(let s of t){let i=Lt(this.originDhtKey,s);if(xs(i,n)<0)return!0}return!1}};var As=class{log;routingTable;network;validators;queryManager;peerStore;peerId;constructor(e,t){let{routingTable:n,network:s,validators:i,queryManager:o,logPrefix:a}=t;this.routingTable=n,this.network=s,this.validators=i,this.queryManager=o,this.peerStore=e.peerStore,this.peerId=e.peerId,this.log=e.logger.forComponent(`${a}:peer-routing`)}async findPeerLocal(e){let t,n=await this.routingTable.find(e);if(n!=null){this.log("findPeerLocal found %p in routing table",e);try{t=await this.peerStore.get(n)}catch(s){if(s.code!=="ERR_NOT_FOUND")throw s}}if(t==null)try{t=await this.peerStore.get(e)}catch(s){if(s.code!=="ERR_NOT_FOUND")throw s}if(t!=null)return this.log("findPeerLocal found %p in peer store",e),{id:t.id,multiaddrs:t.addresses.map(s=>s.multiaddr)}}async*_getValueSingle(e,t,n={}){let s={type:M.GET_VALUE,key:t};yield*this.network.sendRequest(e,s,n)}async*getPublicKeyFromNode(e,t={}){let n=g0(e);for await(let s of this._getValueSingle(e,n,t))if(yield s,s.name==="PEER_RESPONSE"&&s.record!=null){let i=await c0(ds.marshalPublicKey({bytes:s.record.value}));if(!i.equals(e))throw new x("public key does not match id","ERR_PUBLIC_KEY_DOES_NOT_MATCH_ID");if(i.publicKey==null)throw new x("public key missing","ERR_PUBLIC_KEY_MISSING");yield wn({from:e,value:i.publicKey},t)}throw new x(`Node not responding with its public key: ${e.toString()}`,"ERR_INVALID_RECORD")}async*findPeer(e,t={}){if(this.log("findPeer %p",e),t.useCache!==!1){let s=await this.findPeerLocal(e);if(s!=null){this.log("found local"),yield Jn({from:this.peerId,peer:s},t);return}}let n=!1;if(t.useNetwork!==!1){let s=this,i=async function*({peer:o,signal:a}){let c={type:M.FIND_NODE,key:e.toBytes()};for await(let l of s.network.sendRequest(o,c,{...t,signal:a}))if(yield l,l.name==="PEER_RESPONSE"){let f=l.closer.find(u=>u.id.equals(e));f!=null&&(yield Jn({from:l.from,peer:f},t))}};for await(let o of this.queryManager.run(e.toBytes(),i,t))o.name==="FINAL_PEER"&&(n=!0),yield o}n||(yield Ve({from:this.peerId,error:new x("Not found","ERR_NOT_FOUND")},t))}async*getClosestPeers(e,t={}){this.log("getClosestPeers to %b",e);let n=await Mt(e),s=this.routingTable.closestPeers(n),i=this,o=new Es(n,this.routingTable.kBucketSize);await Promise.all(s.map(async c=>{await o.add(c)}));let a=async function*({peer:c,signal:l}){i.log("closerPeersSingle %s from %p",P(e,"base32"),c);let f={type:M.FIND_NODE,key:e};yield*i.network.sendRequest(c,f,{...t,signal:l})};for await(let c of this.queryManager.run(e,a,t))yield c,c.name==="PEER_RESPONSE"&&await Promise.all(c.closer.map(async l=>{await o.add(l.id)}));this.log("found %d peers close to %b",o.length,e);for(let c of o.peers)try{let l=await this.peerStore.get(c);yield Jn({from:this.peerId,peer:{id:c,multiaddrs:l.addresses.map(({multiaddr:f})=>f)}},t)}catch(l){if(l.code!=="ERR_NOT_FOUND")throw l}}async*getValueOrPeers(e,t,n={}){for await(let s of this._getValueSingle(e,t,n)){if(s.name==="PEER_RESPONSE"&&s.record!=null)try{await this._verifyRecordOnline(s.record)}catch{let o="invalid record received, discarded";this.log(o),yield Ve({from:s.from,error:new x(o,"ERR_INVALID_RECORD")},n);continue}yield s}}async _verifyRecordOnline(e){if(e.timeReceived==null)throw new x("invalid record received","ERR_INVALID_RECORD");await _r(this.validators,new me(e.key,e.value,e.timeReceived))}async getCloserPeersOffline(e,t){let n=await Mt(e),s=this.routingTable.closestPeers(n),i=[];for(let o of s)if(!o.equals(t))try{let a=await this.peerStore.get(o);i.push({id:o,multiaddrs:a.addresses.map(({multiaddr:c})=>c)})}catch(a){if(a.code!=="ERR_NOT_FOUND")throw a}return i.length>0?this.log("getCloserPeersOffline found %d peer(s) closer to %b than %p",i.length,e,t):this.log("getCloserPeersOffline could not find peer closer to %b than %p with %d peers in the routing table",e,t,this.routingTable.size),i}};var C4=cn(N4(),1);var Zo=cn(T4(),1);var rn=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},Qo=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},L4=r=>globalThis.DOMException===void 0?new Qo(r):new DOMException(r),P4=r=>{let e=r.reason===void 0?L4("This operation was aborted."):r.reason;return e instanceof Error?e:L4(e)};function On(r,e){let{milliseconds:t,fallback:n,message:s,customTimers:i={setTimeout,clearTimeout}}=e,o,c=new Promise((l,f)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){let{signal:h}=e;h.aborted&&f(P4(h)),h.addEventListener("abort",()=>{f(P4(h))})}if(t===Number.POSITIVE_INFINITY){r.then(l,f);return}let u=new rn;o=i.setTimeout.call(void 0,()=>{if(n){try{l(n())}catch(h){f(h)}return}typeof r.cancel=="function"&&r.cancel(),s===!1?l():s instanceof Error?f(s):(u.message=s??`Promise timed out after ${t} milliseconds`,f(u))},t),(async()=>{try{l(await r)}catch(h){f(h)}})()}).finally(()=>{c.clear()});return c.clear=()=>{i.clearTimeout.call(void 0,o),o=void 0},c}function Xo(r,e,t){let n=0,s=r.length;for(;s>0;){let i=Math.trunc(s/2),o=n+i;t(r[o],e)<=0?(n=++o,s-=i+1):s=i}return n}var Vn=class{#e=[];enqueue(e,t){t={priority:0,...t};let n={priority:t.priority,run:e};if(this.size&&this.#e[this.size-1].priority>=t.priority){this.#e.push(n);return}let s=Xo(this.#e,n,(i,o)=>o.priority-i.priority);this.#e.splice(s,0,n)}dequeue(){return this.#e.shift()?.run}filter(e){return this.#e.filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return this.#e.length}};var br=class extends Zo.default{#e;#r;#i=0;#a;#c;#p=0;#n;#l;#t;#g;#s=0;#u;#o;#m;timeout;constructor(e){if(super(),e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:Vn,...e},!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap?.toString()??""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval?.toString()??""}\` (${typeof e.interval})`);this.#e=e.carryoverConcurrencyCount,this.#r=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#a=e.intervalCap,this.#c=e.interval,this.#t=new e.queueClass,this.#g=e.queueClass,this.concurrency=e.concurrency,this.timeout=e.timeout,this.#m=e.throwOnTimeout===!0,this.#o=e.autoStart===!1}get#w(){return this.#r||this.#i<this.#a}get#v(){return this.#s<this.#u}#x(){this.#s--,this.#f(),this.emit("next")}#E(){this.#b(),this.#y(),this.#l=void 0}get#A(){let e=Date.now();if(this.#n===void 0){let t=this.#p-e;if(t<0)this.#i=this.#e?this.#s:0;else return this.#l===void 0&&(this.#l=setTimeout(()=>{this.#E()},t)),!0}return!1}#f(){if(this.#t.size===0)return this.#n&&clearInterval(this.#n),this.#n=void 0,this.emit("empty"),this.#s===0&&this.emit("idle"),!1;if(!this.#o){let e=!this.#A;if(this.#w&&this.#v){let t=this.#t.dequeue();return t?(this.emit("active"),t(),e&&this.#y(),!0):!1}}return!1}#y(){this.#r||this.#n!==void 0||(this.#n=setInterval(()=>{this.#b()},this.#c),this.#p=Date.now()+this.#c)}#b(){this.#i===0&&this.#s===0&&this.#n&&(clearInterval(this.#n),this.#n=void 0),this.#i=this.#e?this.#s:0,this.#h()}#h(){for(;this.#f(););}get concurrency(){return this.#u}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this.#u=e,this.#h()}async#B(e){return new Promise((t,n)=>{e.addEventListener("abort",()=>{n(e.reason)},{once:!0})})}async add(e,t={}){return t={timeout:this.timeout,throwOnTimeout:this.#m,...t},new Promise((n,s)=>{this.#t.enqueue(async()=>{this.#s++,this.#i++;try{t.signal?.throwIfAborted();let i=e({signal:t.signal});t.timeout&&(i=On(Promise.resolve(i),{milliseconds:t.timeout})),t.signal&&(i=Promise.race([i,this.#B(t.signal)]));let o=await i;n(o),this.emit("completed",o)}catch(i){if(i instanceof rn&&!t.throwOnTimeout){n();return}s(i),this.emit("error",i)}finally{this.#x()}},t),this.emit("add"),this.#f()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#o?(this.#o=!1,this.#h(),this):this}pause(){this.#o=!0}clear(){this.#t=new this.#g}async onEmpty(){this.#t.size!==0&&await this.#d("empty")}async onSizeLessThan(e){this.#t.size<e||await this.#d("next",()=>this.#t.size<e)}async onIdle(){this.#s===0&&this.#t.size===0||await this.#d("idle")}async#d(e,t){return new Promise(n=>{let s=()=>{t&&!t()||(this.off(e,s),n())};this.on(e,s)})}get size(){return this.#t.size}sizeBy(e){return this.#t.filter(e).length}get pending(){return this.#s}get isPaused(){return this.#o}};var Is=class{log;datastore;cache;cleanupInterval;provideValidity;syncQueue;started;cleaner;constructor(e,t={}){let{cacheSize:n,cleanupInterval:s,provideValidity:i}=t;this.log=e.logger.forComponent("libp2p:kad-dht:providers"),this.datastore=e.datastore,this.cleanupInterval=s??36e5,this.provideValidity=i??864e5,this.cache=(0,C4.default)(n??256),this.syncQueue=new br({concurrency:1}),this.started=!1}isStarted(){return this.started}async start(){this.started||(this.started=!0,this.cleaner=setInterval(()=>{this._cleanup().catch(e=>{this.log.error(e)})},this.cleanupInterval))}async stop(){this.started=!1,this.cleaner!=null&&(clearInterval(this.cleaner),this.cleaner=void 0)}async _cleanup(){await this.syncQueue.add(async()=>{let e=Date.now(),t=0,n=0,s=new Map,i=this.datastore.batch(),o=this.datastore.query({prefix:Js});for await(let a of o)try{let{cid:c,peerId:l}=D4(a.key),f=U4(a.value).getTime(),u=Date.now(),h=u-f,m=h>this.provideValidity;if(this.log("comparing: %d - %d = %d > %d %s",u,f,h,this.provideValidity,m?"(expired)":""),m){n++,i.delete(a.key);let p=s.get(c)??new Set;p.add(l),s.set(c,p)}t++}catch(c){this.log.error(c.message)}s.size>0?(this.log("deleting %d / %d entries",n,t),await i.commit()):this.log("nothing to delete");for(let[a,c]of s){let l=Fn(a),f=this.cache.get(l);if(f!=null){for(let u of c)f.delete(u);f.size===0?this.cache.remove(l):this.cache.set(l,f)}}this.log("Cleanup successful (%dms)",Date.now()-e)})}async _getProvidersMap(e){let t=Fn(e),n=this.cache.get(t);return n==null&&(n=await D7(this.datastore,e),this.cache.set(t,n)),n}async addProvider(e,t){await this.syncQueue.add(async()=>{this.log("%p provides %s",t,e);let n=await this._getProvidersMap(e);this.log("loaded %s provs",n.size);let s=new Date;n.set(t.toString(),s);let i=Fn(e);this.cache.set(i,n),await C7(this.datastore,e,t,s)})}async getProviders(e){return this.syncQueue.add(async()=>(this.log("get providers for %s",e),[...(await this._getProvidersMap(e)).keys()].map(n=>or(n))),{throwOnTimeout:!0})}};function Fn(r){let e=typeof r=="string"?r:P(r.multihash.bytes,"base32");return`${Js}/${e}`}async function C7(r,e,t,n){let s=[Fn(e),"/",t.toString()].join(""),i=new Dr(s),o=Ke(n.getTime());await r.put(i,o)}function D4(r){let e=r.toString().split("/");if(e.length!==5)throw new Error(`incorrectly formatted provider entry key in datastore: ${r.toString()}`);return{cid:e[3],peerId:e[4]}}async function D7(r,e){let t=new Map,n=r.query({prefix:Fn(e)});for await(let s of n){let{peerId:i}=D4(s.key);t.set(i,U4(s.value))}return t}function U4(r){return new Date(Ue(r))}function nn(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}async function*O4(r,e,t,n){let s=Vt({objectMode:!0}),i=u=>{n("clean up queue, results %d, queue size %d, pending tasks %d",s.readableLength,r.size,r.pending),r.clear(),s.end(u)},o=u=>{u!=null&&s.push(u)},a=u=>{n("queue error",u),i(u)},c=()=>{n("queue idle"),i()},l=()=>{n("abort queue"),i(new x("Query aborted","ERR_QUERY_ABORTED"))},f=()=>{i()};r.on("completed",o),r.on("error",a),r.on("idle",c),e.addEventListener("abort",l),t.addEventListener("cleanup",f);try{yield*s}finally{r.removeListener("completed",o),r.removeListener("error",a),r.removeListener("idle",c),e.removeEventListener("abort",l),t.removeEventListener("cleanup",f)}}var U7=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");async function*V4(r){let{key:e,startingPeer:t,ourPeerId:n,signal:s,query:i,alpha:o,pathIndex:a,numPaths:c,cleanUp:l,queryFuncTimeout:f,log:u,peersSeen:h}=r,m=new br({concurrency:o}),p=await Mt(e);function d(g,y){if(g==null)return;h.add(g);let v=BigInt("0x"+P(Lt(y,p),"base16"));m.add(async()=>{let b=[s];f!=null&&b.push(AbortSignal.timeout(f));let S=nn(b);De(1/0,S);try{for await(let E of i({key:e,peer:g,signal:S,pathIndex:a,numPaths:c})){if(S.aborted)return;if(E.name==="PEER_RESPONSE")for(let I of E.closer){if(h.has(I.id)){u("already seen %p in query",I.id);continue}if(n.equals(I.id)){u("not querying ourselves");continue}let N=await Ye(I.id);if(BigInt("0x"+P(Lt(N,p),"base16"))>v){u("skipping %p as they are not closer to %b than %p",I.id,e,g);continue}u("querying closer peer %p",I.id),d(I.id,N)}m.emit("completed",E)}}catch(E){if(!s.aborted)return Ve({from:g,error:E},r)}finally{S.clear()}},{priority:U7-v}).catch(b=>{u.error(b)})}d(t,await Ye(t)),yield*O4(m,s,l,u)}var Ss=class{disjointPaths;alpha;shutDownController;running;queries;logger;peerId;routingTable;initialQuerySelfHasRun;logPrefix;metrics;constructor(e,t){let{disjointPaths:n=20,alpha:s=3,logPrefix:i}=t;this.logPrefix=i,this.disjointPaths=n??20,this.running=!1,this.alpha=s??3,this.queries=0,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.routingTable=t.routingTable,this.logger=e.logger,this.peerId=e.peerId,e.metrics!=null&&(this.metrics={runningQueries:e.metrics.registerMetric(`${i.replaceAll(":","_")}_running_queries`),queryTime:e.metrics.registerMetric(`${i.replaceAll(":","_")}_query_time_seconds`)}),this.shutDownController=new AbortController,De(1/0,this.shutDownController.signal)}isStarted(){return this.running}async start(){this.running=!0,this.shutDownController=new AbortController,De(1/0,this.shutDownController.signal)}async stop(){this.running=!1,this.shutDownController.abort()}async*run(e,t,n={}){if(!this.running)throw new Error("QueryManager not started");let s=this.metrics?.queryTime.timer();if(n.signal==null){let u=AbortSignal.timeout(3e4);De(1/0,u),n={...n,signal:u}}let i=new AbortController,o=nn([this.shutDownController.signal,i.signal,n.signal]);De(1/0,o,i.signal);let a=this.logger.forComponent(`${this.logPrefix}:query:`+P(e,"base58btc")),c=Date.now(),l=new Be,f=!1;try{n.isSelfQuery!==!0&&this.initialQuerySelfHasRun!=null&&(a("waiting for initial query-self query before continuing"),await tn(this.initialQuerySelfHasRun.promise,o),this.initialQuerySelfHasRun=void 0),a("query:start"),this.queries++,this.metrics?.runningQueries.update(this.queries);let u=await Mt(e),h=this.routingTable.closestPeers(u),m=h.slice(0,Math.min(this.disjointPaths,h.length));if(h.length===0){a.error("Running query with no peers");return}let p=new ot,d=m.map((g,y)=>V4({key:e,startingPeer:g,ourPeerId:this.peerId,signal:o,query:t,pathIndex:y,numPaths:m.length,alpha:this.alpha,cleanUp:l,queryFuncTimeout:n.queryFuncTimeout,log:a,peersSeen:p,onProgress:n.onProgress}));for await(let g of Qn(...d))g.name==="QUERY_ERROR"&&a.error("query error",g.error),yield g;f=!0}catch(u){if(!(!this.running&&u.code==="ERR_QUERY_ABORTED"))throw u}finally{f||(a("query exited early"),i.abort()),o.clear(),this.queries--,this.metrics?.runningQueries.update(this.queries),s?.(),l.dispatchEvent(new Ne("cleanup")),a("query:done in %dms",Date.now()-c)}}};function O7(r){return r[Symbol.asyncIterator]!=null}function V7(r){if(O7(r))return(async()=>{let e=0;for await(let t of r)e++;return e})();{let e=0;for(let t of r)e++;return e}}var Rs=V7;function F7(r){return r[Symbol.asyncIterator]!=null}function M7(r,e){return F7(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 M4=M7;var H7=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 K7(r,e,t){let n,s=new Promise((i,o)=>{if(t={rejectionEvents:["error"],multiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:f}=H7(r),u=(...m)=>{let p=t.multiArgs?m:m[0];t.filter&&!t.filter(p)||(c.push(p),t.count===c.length&&(n(),i(c)))},h=m=>{n(),o(m)};n=()=>{for(let m of a)f(m,u);for(let m of t.rejectionEvents)f(m,h)};for(let m of a)l(m,u);for(let m of t.rejectionEvents)l(m,h);t.signal&&t.signal.addEventListener("abort",()=>{h(t.signal.reason)},{once:!0}),t.resolveImmediately&&i(c)});if(s.cancel=n,typeof t.timeout=="number"){let i=On(s,{milliseconds:t.timeout});return i.cancel=n,i}return s}function H4(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=K7(r,e,t),s=n.then(i=>i[0]);return s.cancel=n.cancel,s}var ks=class{log;peerId;peerRouting;routingTable;count;interval;initialInterval;queryTimeout;started;timeoutId;controller;initialQuerySelfHasRun;querySelfPromise;constructor(e,t){let{peerRouting:n,logPrefix:s,count:i,interval:o,queryTimeout:a,routingTable:c}=t;this.peerId=e.peerId,this.log=e.logger.forComponent(`${s}:query-self`),this.started=!1,this.peerRouting=n,this.routingTable=c,this.count=i??20,this.interval=o??3e5,this.initialInterval=t.initialInterval??1e3,this.queryTimeout=a??5e3,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun}isStarted(){return this.started}start(){this.started||(this.started=!0,clearTimeout(this.timeoutId),this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.initialInterval))}stop(){this.started=!1,this.timeoutId!=null&&clearTimeout(this.timeoutId),this.controller!=null&&this.controller.abort()}async querySelf(){if(!this.started){this.log("skip self-query because we are not started");return}if(this.querySelfPromise!=null)return this.log("joining existing self query"),this.querySelfPromise.promise;if(this.querySelfPromise=fe(),this.started){this.controller=new AbortController;let e=AbortSignal.timeout(this.queryTimeout),t=nn([this.controller.signal,e]);De(1/0,t,this.controller.signal,e);try{this.routingTable.size===0&&(this.log("routing table was empty, waiting for some peers before running query"),await H4(this.routingTable,"peer:add",{signal:t})),this.log("run self-query, look for %d peers timing out after %dms",this.count,this.queryTimeout);let n=Date.now(),s=await Ft(this.peerRouting.getClosestPeers(this.peerId.toBytes(),{signal:t,isSelfQuery:!0}),i=>M4(i,this.count),async i=>Rs(i));this.log("self-query found %d peers in %dms",s,Date.now()-n)}catch(n){this.log.error("self-query error",n)}finally{t.clear(),this.initialQuerySelfHasRun!=null&&(this.initialQuerySelfHasRun.resolve(),this.initialQuerySelfHasRun=void 0)}}this.querySelfPromise.resolve(),this.querySelfPromise=void 0,this.started&&(this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.interval))}};var Jo=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function Ns(r,e,t,n){let s=new Jo(n?.errorMessage,n?.errorCode);return t?.aborted===!0?Promise.reject(s):new Promise((i,o)=>{function a(){t?.removeEventListener("abort",f),r.removeEventListener(e,c),n?.errorEvent!=null&&r.removeEventListener(n.errorEvent,l)}let c=u=>{try{if(n?.filter?.(u)===!1)return}catch(h){a(),o(h);return}a(),i(u)},l=u=>{a(),o(u.detail)},f=()=>{a(),o(s)};t?.addEventListener("abort",f),r.addEventListener(e,c),n?.errorEvent!=null&&r.addEventListener(n.errorEvent,l)})}var _s=class{deferred;signal;where;constructor(e,t){this.signal=t,this.deferred=fe(),this.where=e,this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new Pt)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function q7(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var Ts=class{id;fn;options;priority;recipients;status;timeline;controller;constructor(e,t,n=0){this.id=q7(),this.status="queued",this.fn=e,this.priority=n,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,De(1/0,this.controller.signal),this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new Pt),this.cleanup())}async join(e={}){let t=new _s(new Error("where").stack,e.signal);return this.recipients.push(t),e.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await tn(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};function $7(r,e,t){let n=0,s=r.length;for(;s>0;){let i=Math.trunc(s/2),o=n+i;t(r[o],e)<=0?(n=++o,s-=i+1):s=i}return n}var Ls=class extends Be{concurrency;queue;pending;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.pending=0,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.queue=[]}tryToStartAnother(){if(this.size===0)return queueMicrotask(()=>{this.safeDispatchEvent("empty")}),this.running===0&&queueMicrotask(()=>{this.safeDispatchEvent("idle")}),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){if(this.queue[this.size-1]?.priority>=e.priority){this.queue.push(e);return}let t=$7(this.queue,e,(n,s)=>s.priority-n.priority);this.queue.splice(t,0,e)}async add(e,t){t?.signal?.throwIfAborted();let n=new Ts(e,t,t?.priority),s=n.join(t).then(i=>(this.safeDispatchEvent("completed",{detail:i}),this.safeDispatchEvent("success",{detail:{job:n,result:i}}),i)).catch(i=>{if(n.status==="queued"){for(let o=0;o<this.queue.length;o++)if(this.queue[o]===n){this.queue.splice(o,1);break}}throw this.safeDispatchEvent("error",{detail:i}),this.safeDispatchEvent("failure",{detail:{job:n,error:i}}),i});return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),s}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new Pt)}),this.clear()}async onEmpty(e){this.size!==0&&await Ns(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await Ns(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await Ns(this,"idle",e?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=Vt({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)},o=()=>{n()},a=()=>{n(new x("Queue aborted","ERR_QUEUE_ABORTED"))};this.addEventListener("completed",s),this.addEventListener("error",i),this.addEventListener("idle",o),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",s),this.removeEventListener("error",i),this.removeEventListener("idle",o),e?.signal?.removeEventListener("abort",a),n()}}};var Ps=class extends Ls{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};function K4(r,e){if(r===e)return!0;if(r.length!==e.length)return!1;for(let t=0,n=r.length;t<n;++t)if(r[t]!==e[t])return!1;return!0}function e2(){return{contacts:[],dontSplit:!1,left:null,right:null}}function Mn(r,e){if(!(e instanceof Uint8Array))throw new TypeError(r+" is not a Uint8Array")}var Cs=class r extends Be{localNodeId;root;numberOfNodesPerKBucket;numberOfNodesToPing;distance;arbiter;constructor(e){super(),this.localNodeId=e.localNodeId,this.numberOfNodesPerKBucket=e.numberOfNodesPerKBucket??20,this.numberOfNodesToPing=e.numberOfNodesToPing??3,this.distance=e.distance??r.distance,this.arbiter=e.arbiter??r.arbiter,Mn("option.localNodeId as parameter 1",this.localNodeId),this.root=e2()}static arbiter(e,t){return(e.vectorClock??0)>(t.vectorClock??0)?e:t}static distance(e,t){let n=0,s=0,i=Math.min(e.length,t.length),o=Math.max(e.length,t.length);for(;s<i;++s)n=n*256+(e[s]^t[s]);for(;s<o;++s)n=n*256+255;return n}add(e){Mn("contact.id",e?.id);let t=0,n=this.root;for(;n.contacts===null;)n=this._determineNode(n,e.id,t++);let s=this._indexOf(n,e.id);return s>=0?(this._update(n,s,e),this):n.contacts.length<this.numberOfNodesPerKBucket?(n.contacts.push(e),this.safeDispatchEvent("added",{detail:e}),this):n.dontSplit?(this.safeDispatchEvent("ping",{detail:{oldContacts:n.contacts.slice(0,this.numberOfNodesToPing),newContact:e}}),this):(this._split(n,t),this.add(e))}closest(e,t=1/0){if(Mn("id",e),!Number.isInteger(t)&&t!==1/0||t<=0)throw new TypeError("n is not positive number");let n=[];for(let s=[this.root],i=0;s.length>0&&n.length<t;){let o=s.pop();if(o!=null)if(o.contacts===null){let a=this._determineNode(o,e,i++);s.push(o.left===a?o.right:o.left),s.push(a)}else n=n.concat(o.contacts)}return n.map(s=>({distance:this.distance(s.id,e),contact:s})).sort((s,i)=>s.distance-i.distance).slice(0,t).map(s=>s.contact)}count(){let e=0;for(let t=[this.root];t.length>0;){let n=t.pop();n!=null&&(n.contacts===null?t.push(n.right,n.left):e+=n.contacts.length)}return e}_determineNode(e,t,n){let s=n>>3,i=n%8;return t.length<=s&&i!==0?e.left:t[s]&1<<7-i?e.right:e.left}get(e){Mn("id",e);let t=0,n=this.root;for(;n.contacts===null;)n=this._determineNode(n,e,t++);let s=this._indexOf(n,e);return s>=0?n.contacts[s]:void 0}_indexOf(e,t){for(let n=0;n<e.contacts.length;++n)if(K4(e.contacts[n].id,t))return n;return-1}remove(e){Mn("the id as parameter 1",e);let t=0,n=this.root;for(;n.contacts===null;)n=this._determineNode(n,e,t++);let s=this._indexOf(n,e);if(s>=0){let i=n.contacts.splice(s,1)[0];this.safeDispatchEvent("removed",{detail:i})}return this}_split(e,t){e.left=e2(),e.right=e2();for(let i of e.contacts)this._determineNode(e,i.id,t).contacts.push(i);e.contacts=null;let n=this._determineNode(e,this.localNodeId,t),s=e.left===n?e.right:e.left;s.dontSplit=!0}toArray(){let e=[];for(let t=[this.root];t.length>0;){let n=t.pop();n!=null&&(n.contacts===null?t.push(n.right,n.left):e=e.concat(n.contacts))}return e}*toIterable(){for(let e=[this.root];e.length>0;){let t=e.pop();t!=null&&(t.contacts===null?e.push(t.right,t.left):yield*t.contacts)}}_update(e,t,n){if(!K4(e.contacts[t].id,n.id))throw new Error("wrong index for _update");let s=e.contacts[t],i=this.arbiter(s,n);i===s&&s!==n||(e.contacts.splice(t,1),e.contacts.push(i),this.safeDispatchEvent("updated",{detail:{incumbent:s,selection:i}}))}};var z7="kad-close",G7=50,q4=20,j7=1e4,Y7=10,Ds=class extends Be{kBucketSize;kb;pingQueue;log;components;pingTimeout;pingConcurrency;running;protocol;tagName;tagValue;metrics;constructor(e,t){super();let{kBucketSize:n,pingTimeout:s,logPrefix:i,pingConcurrency:o,protocol:a,tagName:c,tagValue:l}=t;this.components=e,this.log=e.logger.forComponent(`${i}:routing-table`),this.kBucketSize=n??q4,this.pingTimeout=s??j7,this.pingConcurrency=o??Y7,this.running=!1,this.protocol=a,this.tagName=c??z7,this.tagValue=l??G7,this.pingQueue=new Ps({concurrency:this.pingConcurrency,metricName:`${i.replaceAll(":","_")}_ping_queue`,metrics:this.components.metrics}),this.pingQueue.addEventListener("error",f=>{this.log.error("error pinging peer",f.detail)}),this.components.metrics!=null&&(this.metrics={routingTableSize:this.components.metrics.registerMetric(`${i.replaceAll(":","_")}_routing_table_size`)})}isStarted(){return this.running}async start(){this.running=!0;let e=new Cs({localNodeId:await Ye(this.components.peerId),numberOfNodesPerKBucket:this.kBucketSize,numberOfNodesToPing:1});this.kb=e,e.addEventListener("ping",t=>{this._onPing(t).catch(n=>{this.log.error("could not process k-bucket ping event",n)})}),this._tagPeers(e)}async stop(){this.running=!1,this.pingQueue.clear(),this.kb=void 0}_tagPeers(e){let t=new ot,n=b0(()=>{let s=new ot(e.closest(e.localNodeId,q4).map(a=>a.peer)),i=s.difference(t),o=t.difference(s);Promise.resolve().then(async()=>{for(let a of i)await this.components.peerStore.merge(a,{tags:{[this.tagName]:{value:this.tagValue}}});for(let a of o)await this.components.peerStore.merge(a,{tags:{[this.tagName]:void 0}})}).catch(a=>{this.log.error("Could not update peer tags",a)}),t=s});e.addEventListener("added",s=>{n(),this.safeDispatchEvent("peer:add",{detail:s.detail.peer})}),e.addEventListener("removed",s=>{n(),this.safeDispatchEvent("peer:remove",{detail:s.detail.peer})})}async _onPing(e){if(!this.running)return;let{oldContacts:t,newContact:n}=e.detail,i=(await Promise.all(t.map(async o=>{let a=this.pingQueue.find(o.peer);return a!=null?a.join():this.pingQueue.add(async()=>{let c;try{let l={signal:AbortSignal.timeout(this.pingTimeout)};this.log("pinging old contact %p",o.peer),c=await(await this.components.connectionManager.openConnection(o.peer,l)).newStream(this.protocol,l);let u=Dn(c);await u.write({type:M.PING},qe,l);let h=await u.read(qe,l);if(await u.unwrap().close(),h.type!==M.PING)throw new x(`Incorrect message type received, expected PING got ${h.type}`,"ERR_BAD_PING_RESPONSE");return!0}catch(l){return this.running&&this.kb!=null&&(this.log.error("could not ping peer %p",o.peer,l),this.log("evicting old contact after ping failed %p",o.peer),this.kb.remove(o.id)),c?.abort(l),!1}finally{this.metrics?.routingTableSize.update(this.size)}},{peerId:o.peer})}))).filter(o=>o).length;this.running&&i<t.length&&this.kb!=null&&(this.log("adding new contact %p",n.peer),this.kb.add(n))}get size(){return this.kb==null?0:this.kb.count()}async find(e){let t=await Ye(e),n=this.closestPeer(t);if(n!=null&&e.equals(n))return n}closestPeer(e){let t=this.closestPeers(e,1);if(t.length>0)return t[0]}closestPeers(e,t=this.kBucketSize){return this.kb==null?[]:this.kb.closest(e,t).map(s=>s.peer)}async add(e){if(this.kb==null)throw new Error("RoutingTable is not started");let t=await Ye(e);this.kb.add({id:t,peer:e}),this.log("added %p with kad id %b",e,t),this.metrics?.routingTableSize.update(this.size)}async remove(e){if(this.kb==null)throw new Error("RoutingTable is not started");let t=await Ye(e);this.kb.remove(t),this.metrics?.routingTableSize.update(this.size)}};var $4=[77591,22417,43971,28421,740,29829,71467,228973,196661,78537,27689,36431,44415,14362,19456,106025,96308,2882,49509,21149,87173,131409,75844,23676,121838,30291,17492,2953,7564,110620,129477,127283,53113,72417,165166,109690,21200,102125,24049,71504,90342,25307,72039,26812,26715,32264,133800,71161,88956,171987,51779,24425,16671,30251,186294,247761,14202,2121,8465,35024,4876,85917,169730,3638,256836,96184,943,18678,6583,52907,35807,112254,214097,18796,11595,9243,23554,887,268203,382004,24590,111335,11625,16619,29039,102425,69006,97976,92362,32552,63717,41433,128974,137630,59943,10019,13986,35430,33665,108037,43799,43280,38195,29078,58629,18265,14425,46832,235538,40830,77881,110717,58937,3463,325358,51300,47623,117252,19007,10170,20540,91237,294813,4951,79841,56232,36270,128547,69209,66275,100156,32063,73531,34439,80937,28892,44466,88595,216307,32583,49620,16605,82127,45807,21630,78726,20235,40163,111007,96926,5567,72083,21665,58844,39419,179767,48328,42662,51550,5251,37811,49608,81056,50854,55513,20922,18891,197409,164656,32593,71449,220474,58919,85682,67854,13758,35066,3565,61905,214793,119572,141419,21504,10302,27354,67003,46131,32668,15165,64871,34450,17821,2757,11452,34189,5160,12257,85523,560,53385,65887,119549,135620,312353,115979,122356,10867,193231,124537,54783,90675,120791,4715,142253,50943,17271,43358,25331,4917,120566,34580,12878,33786,160528,32523,4869,301307,104817,81491,23276,8832,97911,31265,52065,7998,49622,9715,43998,34091,84587,20664,69041,29419,53205,10838,58288,116145,6185,5154,141795,35924,21307,144738,43730,12085,8279,10002,119,133779,199668,72938,31768,39176,67875,38453,9700,44144,4121,116048,41733,12868,82669,92308,128,34262,11332,7712,90764,36141,13553,71312,77470,117314,96549,49135,23602,54468,28605,6327,62308,17171,67531,21319,14105,894,107722,46157,8503,51069,100472,45138,15246,14577,35609,191464,1757,13364,161349,32067,91705,81144,52339,5408,91066,21983,14157,100545,4372,26630,129112,1423,29676,213626,4397,88436,99190,6877,49958,26122,114348,60661,29818,293118,50042,179738,16400,163423,89627,31040,43973,36638,45952,5153,1894,109322,1898,134021,12402,112077,68309,190269,69866,31938,107383,11522,105232,11248,14868,39852,71707,186525,16530,38162,106212,11700,5130,16608,26998,59586,108399,230033,43683,48135,82179,2073,5015,196684,189293,16378,23452,8301,35640,11632,214551,29240,57644,33137,91949,55157,52384,117313,5090,17717,89668,49363,82238,241035,66216,29066,184088,97206,62820,26595,4241,135635,173672,8202,459,71355,146294,29587,3008,135385,141203,14803,6634,45094,69362,50925,546,51884,62011,83296,234584,44515,56050,89476,87751,19373,12691,149923,19794,13833,35846,87557,58339,2884,19145,25647,12224,11024,77338,64608,122297,53025,7205,36189,36294,170779,21750,7739,173883,75192,35664,224240,113121,30181,26267,27036,117827,92015,106516,55628,203549,67949,60462,60844,35911,20457,1820,920,19773,8738,73173,181993,38521,98254,76257,46008,92796,5384,26868,151566,22124,2411,15919,186872,180021,28099,152961,78811,80237,62352,102653,74259,184890,16792,123702,224945,29940,19512,75283,14059,112691,92811,233329,20411,138569,53341,109802,50600,134528,66747,5529,166531,31578,64732,67189,1596,126357,967,167999,206598,109752,119431,207825,78791,91938,10301,27311,24233,252343,28831,32812,66002,112267,90895,8786,8095,16824,22866,21813,60507,174833,19549,130985,117051,52110,6938,81923,123864,38061,919,18680,53534,46739,112893,161529,85429,26761,11900,81121,91968,15390,217947,56524,1713,6654,37089,85630,138866,61850,16491,75577,16884,98296,73523,6140,44645,6062,36366,29844,57946,37932,42472,5266,20834,19309,33753,127182,134259,35810,41805,45878,312001,14881,47757,49251,120050,44252,3708,25856,107864,120347,1228,36550,41682,34496,47025,8393,173365,246526,12894,161607,35670,90785,126572,2095,124731,157033,58694,554,12786,9642,4817,16136,47864,174698,66992,4639,69284,10625,40710,27763,51738,30404,264105,137904,109882,52487,42824,57514,2740,10479,146799,107390,16586,88038,174951,9410,16185,44158,5568,40658,46108,12763,97385,26175,108859,664,230732,67470,46663,14395,50750,141320,93140,15361,47997,55784,6791,307840,118569,107326,18056,58281,260415,54691,8790,73332,45633,7511,45674,143373,14031,11799,94491,35646,96544,14560,26049,32983,25791,83814,42094,231370,63955,139212,2359,169908,3108,183486,105867,28197,32941,124968,26402,88267,149768,23053,3078,19091,52924,25383,19209,111548,97361,3959,24880,235061,9099,24921,161254,151405,20508,7159,34381,20133,11434,74036,19974,34769,36585,1076,22454,17354,38727,235160,111547,96454,117448,156940,91330,37299,7310,26915,117060,51369,22620,61861,322264,106850,111694,15091,2624,40345,300446,177064,1707,27389,54792,327783,132669,183543,59003,17744,20603,151134,106923,53084,71803,279424,319816,11579,21946,16728,38274,72711,5085,83391,88646,40159,25027,34680,10752,12988,54126,30365,18338,100445,230674,44874,84974,143877,123253,139372,28082,91477,144002,13096,219729,46016,50029,42377,14601,6660,58244,58978,23918,88206,113611,64452,17541,41032,10942,12021,49189,10978,40175,37156,10947,71709,106894,112538,57007,137486,150608,152719,40615,7746,279716,13101,19524,28708,40578,72320,1096,182051,94527,51275,22833,45164,81917,77519,48508,5421,140302,37845,149830,5587,27579,5357,428725,248187,6326,206760,39814,32585,89923,44341,288753,284443,96368,31201,94189,119504,20359,52073,103216,179,27934,32801,96035,34111,34309,101326,18198,20704,210266,37643,27880,141873,106e3,19414,56614,167714,66483,107885,86602,4379,20796,75467,4987,5017,118857,26003,34308,114428,29198,6686,29697,73632,3739,69795,16798,41504,7207,30722,21436,36735,28067,28545,3239,11221,36031,41889,100010,19247,317673,29495,174554,6424,129725,53845,94986,7955,59676,2604,191497,19735,102214,62954,23844,11872,179525,261436,34492,428,78404,142035,16747,17246,27578,37021,33672,57944,26056,135760,2369,61674,122066,31327,19374,157065,40553,130982,69619,71290,38855,72100,92903,95940,51422,165999,65713,57873,50726,7288,20272,2081,42326,22624,81120,57914,79352,19447,1684,72302,11774,302559,161481,96396,13692,414988,3721,79066,56627,46883,21150,11747,12184,5856,113458,176117,84416,52079,27933,3354,59765,141359,2212,216309,2555,23458,196722,142463,45701,44548,28798,19418,215,29916,9396,10574,114226,84475,13520,18694,34056,4524,90302,62930,13539,19407,77209,7728,38088,9535,2263,23875,183945,17750,26274,67172,10585,28042,22199,7478,51331,66030,26774,192929,31434,25850,50197,52926,178158,4679,181256,70184,229600,9959,105594,72158,73974,2726,35085,78087,23284,35568,51713,155676,5401,27254,11966,17569,223253,71993,103357,111477,55722,30504,26034,46774,35392,36285,214814,41143,163465,1051,16094,81044,6636,76489,179102,20712,39178,35683,125177,54219,30617,52994,25324,50123,2543,87529,58995,10688,125199,12388,60158,125481,131646,7642,133350,65874,3438,97277,101450,10075,56344,116821,50778,60547,98016,106135,13859,14255,16300,77373,173521,8285,45932,37426,4054,114295,55947,7703,39114,52,51119,128135,19714,60715,9554,50492,88180,2823,118271,52993,122625,97919,23859,37895,25040,33614,32102,20431,3577,9275,15686,43031,157741,110358,1884,40291,125391,13736,5008,64881,87336,77381,70711,43032,49155,118587,70494,4318,10168,30126,12580,10524,280104,104001,145413,2862,84140,6603,106005,13566,12780,11251,42830,571,179910,82443,13146,469,42714,32591,265217,424024,92553,54721,134100,6007,15242,114681,59030,16718,85465,200214,85982,55174,165013,23493,56964,82529,109150,32706,27568,82442,5350,14976,13165,44890,60021,21343,33978,17264,4655,22328,27819,75730,16567,55483,14510,17926,45827,150609,3704,7385,272531,161543,76904,122163,52405,2039,19165,41623,14423,228354,3369,176360,85491,7122,35789,303724,4465,13628,2233,55311,118771,20713,10006,221519,45115,71021,35650,29775,7337,10864,20665,21142,1746,15080,1624,32449,10905,105743,229797,7701,3940,22997,178467,57208,389057,39683,59403,63344,63125,54847,69691,18336,56448,3362,37202,18282,29648,138224,35867,10495,5911,28814,26653,31514,176702,26550,45621,11734,4525,40543,73944,121080,27858,155561,14887,44670,30742,8796,107455,113472,56369,75581,183777,240095,133699,153299,8768,160464,26058,49078,103971,21875,71486,44888,17156,9678,89541,123019,102337,3972,83930,21245,87852,109660,287918,183019,686,10100,39177,283941,11274,24736,26793,26214,25995,77011,141580,4070,23742,46285,46632,30700,26669,19056,35951,115575,174034,56097,35463,87425,24575,44245,38701,82317,85922,281616,100333,147697,61503,7730,84330,8530,59917,61597,17173,9092,32658,90288,193136,39023,20381,56654,31132,7779,1919,1375,117128,30819,11169,40938,23935,115201,101155,151034,4835,11231,74550,89388,59951,91704,107312,167882,115062,12732,72738,88703,464019,158267,57995,60496,737,14371,123867,4174,243339,159946,7568,16025,134556,110916,38103,191,80226,88794,29688,27230,10454,76308,57647,77409,113483,66864,14745,19808,12023,46583,84805,16015,17102,2231,20611,3547,95740,250131,34559,108894,8498,15853,159169,148920,20942,2813,93160,45188,210613,45531,52587,149062,39782,28194,57849,60965,84954,89766,84453,100927,16501,27658,165311,103841,54192,207341,19558,20084,319622,5672,205467,98462,61849,36279,13609,147177,24726,165015,209489,59591,31157,6551,117580,75060,141146,277310,21072,22023,106474,63041,137443,122965,68371,5383,42146,98961,113467,30863,23794,4843,99630,30392,82679,13699,241612,33601,93146,24319,18643,32155,95669,40440,15333,34089,67799,142144,58245,38633,114531,117400,77861,188726,5507,2568,8853,10987,107222,2663,2421,11530,13345,30075,41785,118661,104786,17459,12490,16281,71936,193555,17431,5944,71758,26485,77317,20803,367167,158,7362,93430,11735,172445,46002,11532,54482,930,62911,2235,23004,179236,4764,101859,208113,22477,55163,95579,14098,67320,162556,90709,156949,3826,57492,4025,34092,87442,104565,6718,186015,28214,14209,10039,107186,233912,58877,81637,55265,39828,6194,145813,50831,105849,4974,88319,122296,10272,197216,95714,51540,72418,23324,91555,8743,140452,250249,51666,34124,7229,38592,129641,78169,174242,22464,149964,51450,14034,10026,95376,26190,120062,14401,8700,265,31386,143573,7203,229889,61567,4227,140981,2466,72052,10787,10062,30958,6099,38471,30103,23202,208101,70847,467,58934,32271,32984,36637,24107,30771,17109,73353,13650,2098,157040,67366,66904,106018,265380,107238,18535,44025,32681,144983,62505,91295,56120,3082,77508,10322,63023,36700,81885,224127,16721,45023,239261,111272,13852,7866,149243,204199,32309,22084,42029,38316,126644,104973,14406,43454,67322,61310,15789,40285,24026,181047,6301,70927,23319,115823,27248,66693,115875,278566,63007,146844,56841,59007,87368,180001,22370,42114,80605,12022,10374,308,25079,14689,12618,63368,7936,264973,212291,136713,95999,105801,18965,32075,48700,52230,35119,96912,32992,8586,16606,101333,101812,14969,39930,759,193090,27387,42914,12937,5058,62646,64528,38624,25743,37502,3716,4435,30352,178687,26461,132611,42002,138442,35833,59582,16345,8048,60319,49349,309,47800,49739,90482,26405,34470,63786,32479,85028,39866,47846,11649,23934,29466,2816,42864,31828,7410,74885,49632,47629,111801,90749,19536,18767,105764,59606,21223,10746,76298,22220,39408,7190,79654,64856,11602,82156,272765,17079,70089,245473,51813,184407,384678,1576,122249,5064,27481,6188,25790,74361,27541,318284,45430,31488,620,93579,45723,192118,22670,51913,4162,70244,35966,26397,16199,50899,209613,121702,287507,2993,36101,132229,67345,33062,76295,118628,78705,52316,34375,107083,107454,44863,127561,33964,3073,154010,190914,55967,39074,6272,31047,5550,41123,26154,98638,47110,19998,148091,50229,31329,59900,195442,19106,61347,73497,70015,682,45850,25776,38022,148951,6288,37411,232526,109277,27286,32342,9262,5220,16651,23175,46740,129438,78614,121925,66914,88710,127952,5563,21500,34521,10739,14863,191006,62956,17359,16749,67027,56284,69134,43301,35039,58883,54466,60823,404451,75743,59856,86979,7923,34273,83785,32142,7693,268986,197428,282681,17049,22346,22990,92245,107180,3357,37104,96724,49153,7683,31197,43267,82231,164276,23696,20848,188364,22309,24821,158707,1018,22514,70922,27792,45589,59709,10765,736,35218,63479,51987,24275,63588,55361,92929,81964,4658,20122,12330,44058,13065,311456,72224,8337,211229,38979,22590,138478,52757,32595,133600,8838,31549,94412,43391,90056,1585,94802,127271,6223,31889,137038,132910,2165,57616,230152,6080,10748,36737,74579,134062,50525,180532,119270,34556,76155,82394,52595,29258,31435,87820,67996,26943,183878,38007,2410,13526,180297,69856,3503,187396,167700,7838,16701,9199,56267,3661,37407,65994,23767,5708,62508,221700,67088,86978,46776,84434,32088,5612,9149,88244,21685,95151,46750,189612,2979,506311,2594,3628,40074,105039,78243,28523,6651,38058,71999,30992,12764,68261,108991,6165,26450,61961,13400,22426,7490,60890,109623,2070,12958,50355,67979,257096,7213,42578,52121,35716,65461,7516,124758,39268,302,64712,14977,1467,219452,2840,34229,11121,21602,19270,63574,8024,1532,17331,79839,78885,52029,180767,57957,6069,91265,61380,55767,8927,32881,287603,22149,35029,68876,6428,199567,46926,13412,104132,21434,366616,45060,110046,81924,128910,45886,52821,130416,29416,77342,21762,67329,121432,79924,11724,38625,81006,102033,28338,13326,3250,82056,82526,38212,21112,12382,111495,3263,7414,86274,93490,40844,30224,45212,24019,48411,71367,24941,76729,57776,3769,38114,202019,197745,31953,237533,33270,201580,255648,100798,44741,32241,98468,106931,10085,15090,170358,33154,66787,18819,69760,25061,234005,82660,6295,131975,16874,9076,4094,25005,17740,40908,19533,220019,44330,99792,50040,19619,13950,55228,24423,31253,95308,103177,184795,28590,82285,5059,3210,75525,49894,70007,56178,10580,36051,139681,21617,98736,3555,106306,164189,37352,63915,47824,24883,145530,61904,28444,11483,19837,145446,30420,112972,85939,11835,191233,2262,20705,58630,1753,148334,1197,144714,6887,11223,107667,60879,77914,4151,57417,81594,96681,169430,1784,20444,95138,254041,27038,596,7117,72808,13759,3353,126776,21074,55322,27081,36942,39547,139830,179275,4453,713,8722,71399,19204,25785,22794,23923,104114,11291,25458,102309,88396,75288,230440,206396,104551,58447,130857,37247,94734,31548,176529,226077,65159,20104,10096,66881,94191,237909,27109,37404,1520,27421,25220,113003,23423,24884,50585,6286,231877,150800,11789,3226,90004,60642,5053,202400,61442,132531,175329,57138,30116,103847,9973,75367,16452,32360,59119,21246,10191,164804,23305,61051,37348,154530,13214,5468,50403,66754,130976,50559,80515,14436,155492,84017,5472,43107,41240,2890,90431,70188,382,76234,48040,50211,281038,237007,32115,142178,1536,22761,96429,1811,31243,1679,49143,55209,17402,235054,61494,7462,77030,34925,87609,78002,9499,9027,73289,201078,101379,63544,27666,5469,10642,30029,49816,132979,95620,58086,351930,116300,2110,2043,30845,6154,11279,16727,4122,2277,27281,4971,3650,39060,61970,65951,39674,75686,38151,11370,130809,177895,32665,63725,122267,7857,39618,118483,44792,157755,178624,136994,24260,41308,22471,12404,21707,12486,30473,52781,50246,20247,39065,909,56825,103158,128603,31542,1089,41935,32744,12428,37963,84420,33134,72921,208449,42622,168151,127335,147107,46699,38216,12591,94342,85814,31423,24944,2605,87542,67473,192551,4496,56321,91819,17630,6300,256183,114569,202090,33209,35289,34897,24967,40520,43470,5344,10199,34810,14283,10381,10017,62923,49924,23233,64539,13051,35686,19698,11570,135555,120868,44924,87065,52318,52335,47586,140906,245885,109834,78668,9065,46990,25258,72022,61243,40838,4545,146387,10537,11557,17470,36930,68104,46711,24264,79401,81043,18225,120488,24746,84338,81652,28266,13776,21878,46973,1047,230465,73357,95777,24973,210160,62210,58404,110633,169651,6937,41870,9909,26822,191062,76553,27519,96256,239070,2478,205678,67955,58532,20601,50120,19148,78501,195724,110740,8249,109665,27446,30568,57631,31425,49752,32820,65504,50079,3663,102256,219898,23849,211315,14645,4359,91767,9528,12449,49366,7941,49763,107848,8930,27086,50686,9744,10447,81935,39513,46514,1670,29229,6172,22312,137280,97759,9806,14445,22976,56458,73391,34983,93760,174219,52573,33149,59747,2429,136277,75123,165263,91040,7446,57632,48633,97140,246081,84766,151684,79918,93268,120346,54059,54875,77858,32996,103590,45276,11968,19600,25849,17159,132907,42828,16817,4913,99462,103303,27395,5737,74184,20749,21160,14377,77062,131403,158735,10999,27799,77785,9320,34366,51593,61070,33746,47048,29268,36675,30262,53297,9832,82e3,20188,122292,39917,7331,18160,68301,185935,134830,15031,4935,10004,165845,185534,46923,30109,44134,122631,18874,22903,112790,26561,18549,348902,82871,140345,255565,135390,63556,103747,145055,179600,145662,296111,61661,211987,23952,52342,126343,48450,32919,44277,82185,9591,62139,205363,376969,394874,108461,18040,120885,14798,39863,16571,16794,58271,81025,55206,14640,118656,6361,44092,85970,6262,153863,108244,180200,72264,79947,38044,10050,5735,61221,80712,5471,115689,11391,11661,184257,20010,60116,30320,19327,134598,45455,27542,18004,125092,452272,1549,91523,46567,180063,156026,2608,11174,58848,37788,65907,80194,30490,5786,40775,119519,106241,11323,156297,8425,61495,2617,29675,2425,59886,112582,49142,59618,4863,50597,86710,50650,168632,27693,85641,83643,18993,25768,84284,28090,93592,36627,312804,43381,9887,9402,100931,97165,3311,173330,66805,28935,4963,184460,3201,78102,19126,21607,37496,24938,22615,16153,32862,134792,153318,61120,6067,2812,12826,12792,23825,37559,64662,202250,102694,155488,85881,149193,46233,65383,15521,106982,11358,176786,25752,39717,34208,24510,32464,77742,39371,72028,138229,60688,71386,102834,132477,2208,11548,63670,271279,28351,30338,38620,32491,99845,143885,152266,13252,2825,178663,108097,1775,78201,14897,113573,163346,62292,171129,22183,96598,38733,64971,166776,117445,9968,146393,44677,74867,20908,97328,12761,25656,26785,9148,112344,26115,99176,110121,22437,49547,6180,79320,5835,31392,43328,33377,75870,119860,69497,80273,7325,155219,43167,111173,28347,20222,3763,71752,55041,47252,14618,28088,15012,97805,194698,54636,2036,41349,6173,96604,61530,51859,43782,13361,24334,22668,24792,7070,23441,16789,3209,36211,208475,26242,32880,122181,182407,21444,31060,88459,29929,77907,12716,10934,97005,20599,31690,8403,58445,30303,22700,10336,86731,103115,337709,72556,46788,112566,47684,67089,53548,36874,56487,41387,125985,26893,40071,106683,73712,18787,40105,72992,67246,137276,50802,36790,70328,138827,22466,39263,183295,29858,50975,9322,57397,10654,24364,30383,55799,41600,23584,127295,296610,129078,143558,244131,86397,36049,1085,80677,3820,108139,5476,34767,24683,7758,13060,7239,131671,250593,59556,103392,29810,4188,252323,39404,116877,7651,43600,40338,13554,157253,39196,25978,144387,61211,234,50104,6129,10449,93777,9240,356378,274148,4439,72970,3724,147770,78680,62570,115877,40027,40547,36817,224392,64609,34795,165027,67440,2477,37206,23431,50754,164797,46018,94995,170982,27051,7957,22767,3674,27900,56419,18930,60701,41302,2692,84749,339721,61996,111094,80221,50129,1045,8153,62945,19202,8250,37208,37418,32560,79477,41106,88569,33963,36693,5892,30570,1581,66471,49647,11922,160717,29442,5643,114865,82962,95982,132098,22633,22838,94726,54556,28566,205039,162340,33216,16849,35847,221339,94851,26533,71469,1805,3804,12935,45483,71020,36310,65381,192960,34240,35165,59773,1248,46954,155332,96864,4246,388800,16129,57133,74592,44807,442014,38203,42574,80818,91592,26377,36424,65760,977,77387,22628,147610,28018,30561,98454,6969,119628,63648,18170,36854,26601,64018,22027,37279,51395,152934,21153,9430,58760,194742,5330,55115,34158,28917,174111,13171,122326,1526,43896,66094,25325,4234,148354,11450,275,18999,112191,44365,22723,68409,8733,57746,96565,75007,14196,108844,29475,88599,177563,100792,106156,86323,93726,14248,135341,194131,40126,47099,14779,8272,39597,95983,171398,65882,28052,10393,47213,40689,22120,72212,106829,34964,109146,753,648,21660,30047,17527,181025,5619,145357,4085,216883,9359,186951,24779,53931,24545,36197,223296,62628,168101,4243,107313,30321,26642,13049,51059,31027,107912,807,73550,26551,84369,122422,165872,49754,74213,234264,33151,52014,33100,87183,22365,52500,40013,23302,5652,72723,21404,26107,48434,587,94049,168493,96418,32871,70860,31709,25128,443,71597,166253,15670,70994,26341,133675,28280,75491,54756,47955,56028,26182,11952,113272,472197,64640,110753,17919,337,50642,22576,142,87371,53391,93210,126694,15285,19642,85667,14148,1506,42092,52962,33243,11970,20734,135843,57044,58880,13002,219134,22876,64754,232519,4257,43120,321573,24799,64526,124728,52579,81472,70831,276848,17403,74359,23021,182101,74597,23744,148267,12055,7976,5349,11772,67540,167347,65318,18720,127832,108238,22828,90233,9987,259080,118185,73209,79270,13775,90100,137742,90799,70569,15699,19961,9087,67475,57872,39731,8810,134897,131868,146849,19898,3334,2281,167061,91073,60356,467742,74712,188,53179,137679,92769,29241,9537,132595,80119,1041,88962,5976,40171,44911,102859,139059,104558,98987,47761,19272,71472,113864,175377,73338,10857,23402,23758,1591,139864,5644,4076,118760,16427,134198,18853,20291,100849,37423,22038,36677,19071,195521,57445,11069,31869,55718,66882,148490,44,41296,75242,49704,166810,9906,20943,122258,49112,105667,15969,10344,6408,187694,21399,72742,58970,14867,14376,81889,41856,23225,15042,56993,16074,131389,74276,72407,53875,383108,53597,37363,68993,44854,122548,430927,198279,38430,80409,12245,2981,628,2818,17760,37437,238229,7968,46892,2200,3730,34190,65983,37959,112291,87850,70827,6522,20750,73913,111621,41652,19587,2780,58668,25916,85259,18200,168962,95781,42445,102050,7776,57662,103313,47742,96358,41964,66174,100396,29069,204735,19679,27978,7479,40264,22534,61183,36081,107436,58223,14680,23002,101311,24716,124108,12908,5646,31750,40380,14215,232799,102772,14122,96775,61398,50917,12096,149880,67833,598749,124194,155871,49216,790,14677,65319,56917,7440,145744,95701,12206,49405,129269,76199,45732,9767,11058,9047,210885,11051,7392,26307,2130,8132,147526,20802,232698,115660,50060,59789,57344,107623,80343,112676,23291,9866,160971,34032,118291,15719,59730,164911,28975,2659,58046,78480,21854,66209,53863,109085,116045,29021,46481,107552,22130,18764,70254,31272,11300,52460,43933,84738,20721,53869,190840,79673,105300,7561,321817,66924,13940,33281,101046,183181,32176,71878,5678,62924,79535,56646,40303,19559,27703,93042,73368,42187,3670,37376,46440,7023,36816,109628,20680,5940,276440,275233,170848,112093,136996,14984,20226,111441,77693,112960,48577,39370,55707,50314,123404,26570,54281,61372,123391,4857,35928,246740,132507,106646,44241,7196,92258,9825,37688,51197,303141,5590,15476,132986,10955,85782,34486,26696,7991,28813,18858,39546,11703,11365,38185,5716,93555,11925,40121,60002,6985,10976,171384,3887,43394,13337,56346,6381,252336,39573,75042,53711,1028,31781,44295,95925,131713,7214,68125,43571,70954,213234,1628,8760,13391,65485,17320,56038,1710,25248,60803,57399,19839,3870,326,281556,50945,72400,21460,316244,75619,56246,98775,481,13513,55765,50427,7388,123519,32929,57908,27124,61316,101097,57467,30228,48792,10788,20402,37318,50526,155730,34456,158065,145305,17832,43733,64052,4506,35072,205355,177028,184004,187081,68616,35938,83703,10367,36892,93186,260137,51934,89970,4985,23445,26755,21558,7948,78741,23376,124405,85594,68596,57536,49351,12619,56593,132668,99924,109728,71844,71935,196018,65464,17617,14987,89701,143773,33997,8687,22701,33258,2914,4436,72108,85610,9671,49067,2327,82988,1361,1672,44033,35777,30269,24057,10605,82236,616,15793,13919,47249,112086,116698,9484,80207,90574,33304,68624,93127,56101,42210,160929,4827,38995,38095,4701,125119,5027,33680,9236,231236,14135,87837,23318,70261,78893,30151,81482,14332,1084,74256,27532,46644,79185,3148,62615,6981,55672,31668,36825,1849,14536,37446,14738,23779,43058,162749,72199,1168,21346,5592,85932,85302,9668,18351,57135,150360,2080,228015,77953,34670,119302,151751,31009,106725,84265,45214,59289,74178,113071,263206,111009,4021,44449,188119,192629,123592,392506,292847,114487,12831,205858,9852,20780,79648,75767,357014,97721,18166,21005,67950,33226,204009,16536,2987,11335,66717,144910,47950,17262,55060,15063,2934,51038,26775,178497,66008,3427,49433,128592,20036,157553,63861,3089,23015,51210,28696,35933,49942,71135,231518,99620,17248,21835,176536,20676,16944,38700,165831,233253,295625,36723,13023,52745,10907,19423,67972,125868,95473,82875,1183,108455,52685,33417,64095,21433,52438,33191,127809,44505,211823,7810,2752,95548,162031,7185,91196,47563,61721,33359,17897,23682,42806,178101,22874,49707,199897,75419,82456,8618,11171,79712,116847,18783,44190,46564,5346,59046,95032,7893,14916,3214,26800,24172,121453,34362,10250,17408,18888,4840,68696,22831,13162,36005,32512,14800,62357,41723,45046,27247,37486,5372,2564,34261,298500,66509,133920,89138,31305,117697,19097,108304,81386,84106,23802,46411,63304,946,51417,41777,41041,19501,115864,60743,294354,37955,94165,18116,1156,17937,20645,57114,90804,58042,48643,92288,9861,2557,88546,61333,101008,12853,5148,87856,4152,144503,73841,18718,9789,147565,10846,42085,12789,30223,8993,56352,67203,2448,28215,6052,23540,126319,75933,36689,80235,23231,23561,21383,38800,77548,102798,21234,31468,158608,46188,63960,191679,8051,67014,11185,170078,42186,28827,34777,41930,212079,12421,34750,24111,110344,73918,45171,70826,141949,40063,23979,24254,37309,26724,27179,24718,83648,54938,14591,17425,29525,102675,48975,48654,12316,8929,60640,41709,50168,63264,89812,50716,48632,38755,138583,160123,55579,71829,24230,233277,46322,39650,166388,34718,24108,98252,7031,106695,62498,18258,35062,217827,78731,34824,33354,19520,60852,2432,60224,8587,2836,62955,702,20227,42285,40560,95592,62486,11094,53035,143291,18842,46177,77994,1770,9657,107422,172915,32655,128716,25886,25164,156740,119928,165875,85817,11007,89110,33956,12652,65156,180266,8494,36889,19958,20955,96,1264,118288,135769,44754,86671,5632,19026,168220,289120,33569,93821,66144,70635,7687,5642,2714,55445,56636,71545,184182,93133,7332,37389,12643,52315,22729,11014,158742,17050,152889,50178,34601,41945,52136,9948,26914,63548,95721,115951,40759,8960,158258,38938,49232,48325,42234,81523,253019,66128,40978,20048,238048,38760,62928,122560,118532,43687,137472,163689,26680,9878,17448,51035,16211,60834,36749,29178,14241,59868,150086,2305,26477,42422,34342,165341,83279,33894,14257,29928,12743,13957,125571,89134,66712,10952,16507,147839,30146,7249,16565,45399,39874,114565,215780,31990,230881,171477,102,196546,44538,10880,84948,281705,86651,10617,31395,2342,453658,43569,60561,132901,21845,17727,58556,258242,22262,58728,4008,77997,11806,37431,30599,81375,109137,185787,114085,217292,97453,169085,30593,60212,11544,102056,65580,2384,91655,4855,95725,7295,157994,16228,20669,53276,141590,105246,17334,25440,76067,17967,39321,38911,11362,28559,63807,21627,26468,85816,40120,1025,15234,58319,69516,66512,124548,75845,78873,22137,46681,51242,85683,32909,76747,35555,43396,101465,1765,73094,1077,2962,39028,66777,57831,42048,15828,13962,36041,63657,52412,5242,58846,2141,5506,219012,134451,3936,182230,17558,17153,152237,22621,49377,170216,35257,68233,65374,6510,11126,212151,7184,2480,22517,3437,33073,30156,16557,3768,55067,86829,91e3,12350,148650,66017,79424,70885,49066,28250,21369,51213,34533,11510,3258,18176,18465,84413,6315,36411,163765,4346,356,107618,598,13727,285026,162695,8749,14583,7132,63521,184253,32378,25991,5604,30961,53675,4874,84693,5086,34811,26978,56564,7904,33519,51221,113942,69253,6664,125563,22055,220680,102008,742,51930,19494,176108,44424,35123,13025,75685,11759,74335,22250,181453,131147,16984,132115,154311,11991,76452,52609,85351,196,30969,9198,74919,2529,56838,71779,29187,116304,3504,62330,41190,86153,28393,254926,104228,105189,13264,84359,3574,12415,8534,57147,10175,188174,59504,60932,66318,16407,107921,17638,99103,49278,28403,39786,145865,8462,3558,43406,142271,29139,21989,36552,93955,72365,7176,13556,106185,37957,321774,17782,129017,51154,27938,24952,1935,39366,2791,33489,41582,56078,24558,9311,5449,218786,27808,190429,68013,36020,86003,29735,3404,87348,119357,115714,2324,86796,81973,40992,43376,93621,28784,16808,36367,2517,2909,191926,24978,55303,53308,205724,60068,3098,21375,64784,23949,26579,63121,12319,80145,39967,97861,6757,70143,67642,37082,34698,69140,122883,46151,62187,80934,429,19437,135071,137885,222647,13331,154065,327,61778,74257,40116,37493,14855,85079,237641,42342,102164,199965,71204,4662,29368,5042,113914,122214,8955,13149,102503,43173,5659,163787,69003,307084,63392,171080,21390,81918,86666,36622,24126,28887,5736,28054,207170,163428,79891,346467,95363,38980,111806,80828,9200,19288,294896,114468,87405,111715,141705,7015,72754,68463,48738,243147,33397,101210,37051,98801,82847,20397,4940,185559,18716,54718,83491,11725,40803,1128,12128,23060,5174,7745,67007,46701,1571,27807,180186,256996,18975,16837,7877,212758,250379,15440,87954,57755,24719,124057,83461,258,50864,8874,29038,71289,31627,15429,9005,4061,113851,107716,82819,13651,79656,117851,17539,111446,12938,39724,190787,4352,15402,21070,62708,8539,23777,73853,13552,38810,86117,16285,56400,1718,75342,142863,29033,378,110113,180321,32586,23606,26393,160984,207987,23783,8406,16904,24596,47274,11693,46539,60524,78595,48423,31718,20170,9009,146268,15183,191060,172765,1349,138436,37365,10970,40509,225817,20021,70394,152138,21541,66559,66544,89352,2725,17258,91345,7313,3815,115868,8660,40362,4071,103524,39388,118275,21950,6549,38226,32754,209574,29201,43495,18028,20296,40597,18370,47520,202450,24134,2219,8195,69545,38041,136934,46374,19041,159811,84865,58620,846,98749,13569,30714,97246,32186,4479,27355,92973,35214,151491,75963,37631,1561,27200,238083,23182,60756,12291,25766,39355,102333,87362,65741,59906,19538,201575,48772,102938,24438,292580,39964,66366,9004,61379,50548,37622,38732,28379,68180,76622,17488,69849,5963,7219,48143,43413,55358,540,58691,29506,19245,52193,48621,5518,13048,118625,44755,191081,42061,89197,2259,60665,66994,71210,51232,3585,142096,55024,7892,8345,58653,463307,65658,64319,137941,136323,53499,12746,43492,6978,95163,29925,60175,5128,7352,41463,184756,121146,20473,18426,4598,5309,54580,14277,121151,10691,56711,43880,63409,76682,11830,172218,264898,32632,66536,81062,31649,25788,92774,60222,11100,63159,9432,224657,25240,53613,152,138620,163829,2397,85345,12501,37507,64932,38575,43522,65789,80198,78796,35226,3851,108891,73311,3060,28391,93671,39663,46142,30982,66041,37281,68157,26553,71872,81142,211527,39747,118119,22695,2859,11066,20232,168911,7933,197005,17066,111071,44434,133994,120798,12766,227798,45756,132852,29917,36076,55352,65281,129800,41958,18944,84678,18580,168093,132621,39997,54092,27740,32354,3770,114118,103242,43918,15899,18574,145944,3190,123469,219903,24169,100571,62403,16776,92779,14535,17168,16475,14304,37231,1712,28218,242754,61688,28980,1318,51359,222657,99200,67989,31772,23932,35351,201251,49041,27306,19128,40135,3986,77333,19649,120683,151927,21081,7076,78375,77501,101599,8011,89585,96715,58179,5378,102138,106793,26051,217276,4197,16297,27014,46721,13322,22806,5278,29629,70632,9647,71519,58818,40603,128530,8903,36770,56900,31483,26935,43845,34265,34920,87658,6114,84767,64250,47318,50720,19264,162514,33357,13117,6705,46696,75032,71054,87004,42035,69138,11903,99854,102328,19611,34525,69312,6431,49842,101600,133178,108751,41829,89939,225664,48916,99556,9195,130387,5960,36857,116724,53518,94002,39077,53996,6945,22261,64291,8314,152785,57588,16522,9091,5048,87671,35441,39509,1945,12423,158923,178413,37549,14095,1475,73188,62878,4819,24012,68534,42606,4010,120809,57497,59564,101758,103718,32701,80116,12345,95834,46918,21468,53213,15665,31200,3867,5140,96013,250744,21016,10069,13968,35449,180829,27683,39704,59956,22893,3115,26293,32785,75934,62445,141162,62720,2018,83638,19949,114012,95006,3330,99829,130935,309272,9565,55874,121727,37017,23586,319858,40970,27602,8625,112329,61060,100088,118525,25922,16232,1907,60671,51583,44553,80993,5262,94679,8676,940,20736,11823,3020,16476,12340,152600,97416,3703,25744,66826,16245,16876,46446,84798,74227,176020,45192,61955,75496,23946,23626,40372,26036,6149,11822,30582,16541,41914,82385,232823,40921,80773,14930,3631,7517,39619,4348,36180,126106,138939,62611,1477,113512,47321,25052,14546,118881,29060,23589,128322,36795,18401,137921,104699,267929,36194,172791,18113,4766,188215,30083,332586,94089,5805,77909,22194,68234,154976,43220,40660,70001,184893,138095,11128,103010,22663,5108,212615,8485,5565,49222,54614,26530,42639,16319,55062,152662,105595,21114,22216,10294,68158,10436,86950,7206,62115,3977,3657,59874,456,118617,18156,106663,112229,80992,17442,8217,55551,5133,34344,251927,51153,39364,201321,7816,66803,23057,156724,145664,14276,95705,979,2796,6875,13429,212525,50602,26276,28284,3424,19465,52397,46963,31420,51399,206476,92317,48851,637,100820,83349,10317,60227,21972,6908,282439,32857,224767,95629,83882,42106,87338,69757,29840,68709,37665,45244,114577,49188,175943,54009,186746,106158,70168,3358,234002,50555,9221,129338,9562,20118,32923,78479,118280,65752,4977,10474,102174,60947,129006,10570,83451,8598,8078,159367,123785,80438,16742,5905,5281,181513,42402,6977,163136,93179,42191,14968,50421,112401,105440,33456,57347,121611,4221,94954,36517,24046,27796,6255,33394,72990,135408,116627,1233,57874,25654,95419,68156,401399,313338,55208,45573,93124,119251,47200,38196,11909,130667,45391,73904,64964,167846,4137,115606,52036,62214,7969,160925,7187,1132,134835,40309,73195,64494,80472,444841,61111,26500,45323,40743,53625,52797,22659,15631,29739,36706,28841,39147,102836,26794,10536,14845,87305,45874,12241,127587,83833,57183,79722,30844,41304,84655,20825,92500,3722,25655,27811,10157,81634,31362,34088,92487,70123,22190,185100,72658,139035,192523,88241,2078,230490,44528,85638,100198,22088,29982,291233,241062,13865,4445,137791,37835,107218,31726,19718,38234,72528,23046,19177,66695,5109,17251,28077,5617,21554,47839,72425,133825,1486,73065,181275,141508,21768,62971,63082,2512,34200,9904,120309,6392,91243,68416,268253,41199,116757,138551,185526,41246,28986,4093,19057,17295,4148,245766,122360,35356,112075,20301,75441,10998,7977,19769,62922,937,63547,100196,26427,157820,20983,236696,22935,8140,90315,156004,47204,140973,7726,45097,52725,22636,23436,257282,105247,522,88389,216031,202204,46812,211666,19693,68828,81691,45925,11256,30292,372,5236,167826,88328,232776,151611,5360,82104,18841,80393,25465,18285,20320,72377,31730,33160,45803,38715,27705,37379,24163,18360,103586,4015,32305,269494,91252,20080,36567,54650,7797,57073,12650,31164,42209,6375,261663,105528,81661,106002,2800,5375,17247,43151,4442,15727,194619,100855,144898,62320,78465,39929,16454,1967,28311,61363,17219,9395,8745,121445,76939,80385,162380,22009,54191,44248,16299,122830,48151,74429,78291,64755,14238,44966,2511,17712,67954,93583,829,105899,49935,84750,11591,33185,85447,42717,27409,208542,28965,62052,52525,5597,25694,65594,16343,63224,276188,12475,9331,127507,38522,57287,24128,133161,79723,105548,133695,48917,27558,43278,46520,13778,141954,110785,83366,17715,46317,105763,66298,147013,41086,94180,16478,220447,44611,730,19722,78975,117889,125643,26254,16574,18480,65006,15806,38549,246418,46052,36056,8440,34984,30170,3163,59800,4458,115442,4283,41970,33507,104078,1653,22,121158,276486,3655,6338,24048,133421,23641,2161,24422,36006,8086,10675,181474,12307,29514,59143,14729,52509,87128,122470,19446,80852,33314,24573,119864,14237,9652,57779,6612,51851,15284,98871,90581,124466,156831,21190,22015,71380,161906,87247,69201,18392,17908,108470,72962,40719,14338,17911,95260,43339,20610,78916,20710,72451,11315,31448,17263,58853,178878,48111,116002,45497,80506,82605,85880,36300,121755,25215,36118,301929,88728,405223,276136,553,34704,212438,49970,78329,922,20711,25036,257130,38295,145369,18128,15385,30829,55656,48345,8012,3561,28004,122041,192900,58338,112508,41085,29976,87040,47117,23905,4336,92061,138880,97407,42083,172121,6256,25192,172671,5,93568,1420,12677,31605,56743,40620,6015,78415,231077,31298,80026,13902,19048,24924,170586,32955,176119,87859,36731,6773,27711,24658,26475,115216,133207,93250,95820,88522,8317,5714,124047,55219,86860,19677,23961,22928,162209,8904,225992,359835,56084,96201,29392,96558,86071,93643,55114,13347,8183,95129,82012,2017,123336,34219,115554,157159,47747,101684,41008,18735,193781,104151,226906,7552,179874,124113,31159,21162,44010,14771,51268,166128,31382,73124,77438,92830,205709,12113,1292,38937,13114,1334,2118,15597,69581,14449,21934,76618,48728,67038,14967,51495,24243,87736,147249,26720,11119,46063,43749,5843,44147,152629,133428,65703,14269,45604,57982,28672,55616,45957,8438,95433,37698,220862,132034,39456,61870,4161,26501,73560,56418,9845,4654,20916,10456,88920,119358,9015,65931,96507,48029,38534,21676,109081,43078,34943,25089,6131,28766,23665,5477,10255,16695,67,45778,42443,42770,29534,23733,100513,62617,42630,48746,14191,43753,50295,26007,8792,57243,43119,54725,164253,58250,112304,131796,25165,4651,3188,24831,47748,3705,19540,13211,102095,5593,18699,23666,32005,117571,33541,60584,74573,86311,99443,25172,27222,168938,7143,11853,53560,18834,19960,86522,28217,53266,117700,72989,34323,18721,66450,34346,74056,47217,202002,46269,9429,68582,75458,37823,82843,96652,32549,145144,27958,19820,158086,31955,201406,135379,31207,192545,12950,51704,9094,248263,76147,64028,110009,79407,89345,99284,223492,47966,26848,15359,201137,2861,110507,71231,72297,31851,118777,71039,151051,240855,16333,50766,14727,7939,4149,80908,418780,88378,59276,1327,7284,38576,79814,65820,42199,84860,49574,62596,12396,70598,40117,8648,7994,16836,7630,14047,359699,106878,525,29037,28064,13380,11675,50669,74216,103539,180314,27449,56299,172344,19274,7301,246099,32043,19422,36506,129317,6806,30140,4614,46639,66926,932,86600,6322,27847,233103,10541,39025,34887,3517,12972,26220,2031,66561,115015,48658,47596,12714,33845,3893,16165,35237,89983,14769,11962,147224,47018,29977,27979,5552,82338,86023,131368,1218,24853,237840,132193,15455,40873,3668,65351,53388,15229,59889,272245,47934,11858,34347,18038,90853,86981,300602,19343,114181,29362,84921,6095,106059,79472,38015,1206,48741,6208,8e4,21916,17423,6002,108083,24479,34931,56661,9511,26995,100694,163853,35997,81254,58321,18919,171890,86877,91341,74503,70477,53412,7027,59281,39892,131302,5864,15947,61301,67466,162369,47956,27874,35624,282324,21270,111847,102548,41482,30955,116737,28264,8592,55458,22301,75090,29821,30697,51709,3041,19208,8038,24634,30467,87509,126428,19389,18814,152686,20701,83474,45832,80891,105808,11378,153223,120770,98186,150633,49838,9141,12755,30962,5260,74490,21256,31678,65062,33326,289838,187831,20595,89768,2805,58535,10844,70085,12090,2451,138068,98544,24461,4511,6754,41684,28203,3383,65355,82833,30161,83924,234361,128424,28921,222594,33975,125491,34069,11508,67464,144226,41850,98703,34371,7901,21254,38398,65651,23549,53883,213340,123269,12028,71764,177701,28758,2623,68395,11549,15232,68603,9660,63116,36079,57093,31198,20475,48467,89984,35619,186847,107469,31389,43631,73867,41949,68841,114250,1605,30564,63403,17588,27680,99533,12641,70325,50428,73426,78379,11855,91651,72081,91720,60198,15743,12065,83398,140046,6761,46598,45900,5068,886,62448,148968,37347,19405,9680,15819,43496,63370,75667,163700,37639,3633,22774,34341,183131,134335,37200,23915,7054,14194,12970,26438,13350,285521,25594,8219,104410,91039,168804,138480,149734,15907,33818,61132,60082,4622,110187,56736,13551,73571,3945,73463,65498,17758,263266,17593,2710,27585,54469,38200,45367,63754,28881,3473,12791,98287,31895,65787,4463,94536,24951,36332,59901,28803,52130,86403,7668,181822,74831,18977,9850,177206,145485,109798,7292,31421,26280,77211,58511,12507,127004,11113,147,8729,56208,43066,79926,129937,31345,83947,39915,46146,98763,42566,1337,13192,18323,105163,80570,117753,16555,72883,11077,159438,40764,70933,83329,26066,12276,72059,21655,173836,126713,69454,153482,91585,70644,102558,110483,6764,127864,190133,3961,101798,20945,71138,82402,90884,69669,44753,923,16939,59700,164258,25969,27082,31399,43846,6306,246093,51342,6153,151581,202801,182731,56475,162188,89426,141356,14355,121815,27536,28023,65257,77523,106668,127314,24947,12790,38796,169698,23555,10725,44573,183083,42088,62716,43265,105958,32050,44067,50118,1668,3874,6243,318411,16599,1691,94999,52378,28671,216728,123258,2059,34969,69225,5913,136280,171443,141515,91662,22175,135282,80020,92270,1663,4808,4482,3495,34691,5226,109830,108512,17342,107488,11606,123190,100247,29666,146527,113014,15794,30894,13224,39585,243192,22351,9903,7836,47699,11078,25468,122291,48821,26780,122679,75521,81450,630,4895,92900,55074,74293,17441,3563,111657,103102,51613,12318,52370,36191,68245,34269,40445,41354,122901,168604,182500,62012,42557,11259,24428,115113,86345,12362,3909,78430,86852,134602,20459,47853,93879,22577,7659,3688,38555,13349,17381,56715,91639,12493,10895,92438,3142,37057,28928,2004,36427,32268,34222,209974,10432,67436,41989,173518,107930,27079,62729,30908,55558,5828,45031,14902,53546,8204,144263,60255,14520,88212,86582,109589,69356,8064,47449,8505,66558,16886,4844,52817,111260,215129,12941,91118,650,20770,6273,73089,40618,62790,2873,35002,14023,97208,19386,102646,36993,143736,135457,35385,113601,17893,32627,84439,100619,56016,6581,57264,172160,45452,111710,203627,70131,24100,322787,1996,35665,70078,22358,90922,83658,4097,63200,58499,14542,99153,52159,6615,12414,63415,31986,16823,1579,65405,137809,8841,16898,48082,259,33014,42375,12260,179850,73667,91389,98882,29532,17311,326251,41092,5928,20742,44964,48019,43505,9317,49265,6643,192712,48424,163487,19861,20113,70848,31928,105333,23685,78563,14638,54755,7158,24142,44018,20774,125255,20331,24280,10163,1285,2336,39851,4299,117269,46714,63816,87779,159624,11731,9971,990,137317,108831,50994,74554,162680,23640,131597,146962,170620,34829,91205,21184,1913,63616,18427,93136,156592,17519,67565,115882,138220,78622,88535,18115,2711,33554,109492,54298,971,24914,25863,36363,45715,27099,194995,14299,178181,111488,72395,322385,157719,130787,11897,81843,83999,11369,49280,118604,40922,61332,110343,53407,75639,40582,300440,54722,25637,13694,48248,48278,194521,56203,52779,48783,72627,10953,376,16733,280238,26351,230789,15132,25168,137270,3588,63704,73376,94031,74284,19443,159557,9697,39901,13351,119050,15406,146455,3460,29556,75195,37673,102524,92329,47289,98413,15311,100684,56345,7116,95480,11590,7200,167,23610,58426,17730,136656,27944,53151,2701,8824,103124,3017,90744,113588,53216,79736,65940,26931,498,29568,80540,143543,21292,1740,59268,16561,180816,42323,50174,40890,52866,10703,57169,4700,17191,4424,93511,49698,166650,26972,48631,165169,82879,69326,202970,4007,2376,231325,139592,22119,62851,37504,68816,58345,67398,186643,43331,277416,53749,15746,23102,17432,4793,151138,48822,54265,48203,198688,14305,54287,2291,18018,113378,123260,7180,97549,87027,120085,2920,76080,8190,102005,5641,64580,14955,59802,54028,58884,19367,81779,412567,85957,97053,103637,78871,29364,27637,141728,4767,30686,112738,130146,42745,12730,105040,14844,232,210944,36581,152317,135543,29744,3129,55647,58149,46319,27265,17499,28005,59948,7170,34138,5702,293047,110892,408,91760,218674,18469,46095,81403,14389,4610,35672,73060,11006,74848,104820,118143,190357,20043,105358,141735,5115,27093,45924,123073,52599,29433,9616,238350,78610,24851,58858,26769,31969,24613,18294,4982,32735,39639,143563,112073,202205,12567,4873,88601,44897,81503,101648,81362,34662,85277,17574,48173,21435,221188,40215,39576,80786,26544,64668,81841,10731,37733,247986,149188,127703,495,18382,54388,72446,43071,30974,198723,89608,41360,190,33045,8386,31658,19992,237838,119015,137622,50890,100913,6460,116233,267230,26621,104129,65114,14190,41542,14888,85962,23342,23041,26453,43725,71809,45186,4770,46452,53894,56616,221286,18973,9038,109299,55365,19366,26863,18808,60909,69353,41738,83463,12100,68561,72860,3980,13796,49340,12332,31311,27418,4255,53430,18976,45523,510,14224,30477,26581,4530,3651,101663,139840,22709,150861,31996,63923,120623,262522,3076,10528,2929,14672,130238,18087,9816,121894,100308,25085,55111,14565,18952,53293,2042,369988,23674,61789,133529,28783,108293,35477,47119,36448,71049,40015,33055,78598,198442,1833,159937,40654,77444,189245,113153,8621,18599,38553,35223,166072,2375,11659,21786,89523,6032,12116,63046,159398,18454,3678,32521,47626,11411,103527,38896,42946,15696,26370,10185,8413,37080,165583,4331,63555,14907,72220,50056,6623,62236,36565,49783,10049,17503,100581,55951,146244,24724,9626,17969,25524,109300,173965,99994,101056,46459,43647,53737,277968,8347,123521,74858,33829,44762,77574,877,81377,222525,123532,30602,43881,53145,2973,16284,81940,61281,127044,63620,9875,14756,114829,19032,9202,52759,119141,23928,120551,19607,3599,33401,76821,73233,117430,39968,36539,7071,5446,121735,194059,15206,45283,6706,15603,65615,1207,165723,92275,34773,104447,8396,32353,205240,164323,13600,60555,79205,25532,22907,33410,57480,107111,69630,32137,47832,70913,33161,20321,2371,117348,10714,86246,1625,11763,17900,268,78457,99175,97940,101092,86660,32221,14041,128504,125080,53744,124263,31017,13897,403,31859,21964,5633,111630,5547,77329,17961,18241,84995,25984,12983,67491,62168,47262,5241,297,51191,7351,8967,147212,82060,16821,782,11033,82431,62957,5026,43459,77963,203477,53528,6247,191852,87774,74164,215654,13467,1522,219964,28589,244104,16242,117821,67725,72570,156792,17186,15979,26990,44128,193014,35276,57125,16212,166451,68017,6905,77608,16364,53777,75921,76426,37975,26203,269296,64099,84122,12077,38533,830,4407,20139,963,43028,38902,42911,37503,83343,85045,16979,1165,60835,137387,58380,86990,110066,134540,56331,193845,81238,17922,163093,38744,110641,12502,56404,34862,26865,125964,12965,111648,25547,7771,27196,136980,9555,29551,107158,57885,18831,37705,35505,101742,13970,102109,62548,124657,23328,11124,89592,146376,248050,6241,22033,18337,80685,29898,11908,216623,67721,106162,146610,21377,15085,91552,42041,62560,122532,125336,102365,121537,142559,29693,223919,11515,110495,18776,22494,5895,185059,103592,229351,51220,100102,37027,257855,29359,54123,36066,106493,12244,79258,32002,432,56205,94836,90182,6726,14762,29391,48938,26864,38083,60364,3310,60192,14766,205567,57504,110760,22649,24666,46333,21517,3430,13135,28873,27052,158809,11597,20529,6695,23138,22960,37137,45574,6545,305877,43423,26153,24769,59844,14501,10430,134352,56169,13213,103432,49523,35181,13435,12408,129475,64620,230854,77390,51990,15653,83248,33466,44571,117828,51481,2187,10559,68019,18021,54895,48247,18354,33737,4554,108595,37288,39767,116707,9175,3726,108877,21616,83684,49862,1938,8543,276466,20134,108498,48770,102254,31914,131520,185291,100559,51890,209,19526,76471,50544,71814,99351,8172,198526,28816,20419,9109,98389,136777,76479,75596,30635,165417,48216,120220,25955,211071,39314,24308,32164,2559,146280,43403,9233,17947,90585,1786,86920,125662,2457,64741,32152,32918,122882,78538,44001,31723,56426,23375,103172,88177,145697,52506,49319,68016,31664,41488,18486,110400,7030,28241,986,109199,19900,42147,56864,65287,49183,7858,24e3,30453,840,16673,25907,68916,89927,6309,158335,36407,199737,130464,13137,59603,201778,195292,21015,42466,179062,172561,89492,11075,180407,31868,72493,20998,60217,9865,19530,39274,130266,54539,21623,12535,13505,40641,73375,4087,85633,2153,3117,70680,55788,92096,47509,98493,37490,271936,151475,3032,16171,96642,34106,78425,125761,19591,3366,19316,54508,24183,50786,194248,91528,33253,34622,108355,41741,705,3814,3883,108929,13203,67831,10142,59754,68208,29128,84820,56880,38794,24972,48571,40821,40476,18137,164254,24064,236309,79181,11282,395,39169,2013,51587,28551,9645,701,109513,115899,113566,12762,62045,58322,103726,41343,40866,244102,143816,2490,70346,40973,52618,15412,30720,104315,38917,42027,93676,17513,107418,20706,123890,13399,97727,24044,87962,65606,44250,98044,65276,74790,101473,19350,91570,1326,87790,172042,7577,100813,86896,85891,41512,108130,27794,14875,71431,12835,156250,58135,3759,22476,42176,115873,34686,56523,73643,108505,51491,20838,12721,32863,45700,29496,13700,34294,55360,29206,155942,123812,7706,163234,203,132720,49358,144431,8130,175788,35818,3270,76832,25710,54095,97274,28779,94621,74396,19092,128242,58067,20885,14670,93255,15107,63291,23654,126900,129421,59294,262659,9798,3251,67344,28600,44629,50672,29072,26999,31526,23183,49175,165843,175455,17282,175411,32022,45989,30298,90690,78118,83156,23749,35636,31317,7069,80381,94561,133756,14960,97404,6138,41065,78041,32843,16601,34123,9559,146529,123377,96395,54441,42012,84257,123541,10745,22139,106459,11720,150883,172651,154996,110538,4728,53447,25704,2009,71152,119354,21166,66604,1429,216162,8637,122250,63520,27180,29172,36124,276428,107787,77184,4680,14952,104903,24418,14793,51561,52931,8371,26342,48526,7118,92066,67280,40653,8847,34597,105438,14198,50163,61188,146286,50315,41205,170829,161496,585,197359,95056,1687,365794,91349,48507,5804,49263,5146,104902,96365,117343,132222,46084,96919,16875,8073,262381,79982,52663,13928,16056,153908,15145,109256,132308,18763,24904,167644,13618,40750,18686,147124,114709,150038,52849,2938,12568,48617,8778,5459,44202,44591,74914,17183,248689,13878,7822,80060,23116,194037,18487,2067,7798,43077,33678,244028,31320,74273,2794,19466,8218,36280,183997,48124,19416,29656,19280,98734,7715,18311,30701,133602,150307,126956,7378,2933,79903,13178,12593,86571,26604,92446,13574,44205,65699,427599,21118,8245,14407,27877,47936,33542,7916,26460,117762,21596,37818,2249,127359,209394,60044,47677,308089,36791,154971,31417,6998,150042,174360,12255,43009,29335,48739,3912,101398,53340,2580,146939,151295,45360,125275,15273,45383,27456,48761,23314,8750,60801,85823,104759,27894,123685,66968,39480,26917,55290,83305,2696,98390,57569,145853,340733,4919,20024,52268,30884,7413,203685,70989,112855,4129,50536,349518,68205,332641,159581,135361,236026,37563,176404,64899,6578,122033,63871,1850,85234,82089,66124,74145,121098,107351,12687,36881,117334,13136,14698,85933,93866,18047,32620,310,15094,46e3,88451,23632,36645,27940,87618,80520,58892,20976,27702,140090,96075,67841,103292,238964,87778,107338,17019,83427,67522,7302,8261,47570,116787,8730,80484,61772,174422,56005,131193,52875,14588,28471,59817,9586,15720,158155,51307,109734,15196,11025,59331,3884,52626,102602,84797,25158,27314,4437,20488,76214,189248,35023,114952,157376,2827,62439,102878,129749,36405,10329,109339,108633,36662,1254,13267,5470,87105,58004,15397,10434,159667,21864,52022,179464,3013,32147,31496,116832,18494,105502,129227,107267,50033,13481,9954,24267,22141,16257,116154,36185,950,115685,11305,176708,2048,178671,112573,287867,162328,497663,95170,50979,193861,50987,30368,136257,31830,46549,15119,169876,23788,17462,249887,57377,1949,35448,14791,43769,210091,3783,34612,282103,88380,245190,5457,20491,98908,11402,86899,117916,16028,162584,60644,320177,156096,31065,55876,22e3,77655,9992,23397,13757,317623,63978,215255,2443,17648,93231,27388,104529,93807,55505,140477,12046,112040,70887,40152,94365,112353,25063,114679,266061,71248,119555,15589,2244,617,14129,211431,70110,100652,7777,4383,85911,89221,21010,120615,58357,86405,37554,41647,18,15143,69662,60491,14714,186134,148344,42347,5410,168175,44535,42449,343894,129417,99682,20659,27272,140483,63455,222159,17536,13722,42637,62324,11976,114691,148109,2283,32057,182393,4295,147364,33705,2075,44303,30274,28331,63740,69740,29148,10346,44862,33716,73937,153333,12930,38784,247159,2515,41053,20256,83368,256189,54639,115240,5096,24661,175419,153552,26516,141,138176,63885,34115,47222,55709,2765,28479,38875,236608,12229,22921,77291,54426,45388,2860,57787,114579,295139,105782,17826,71066,19119,54364,69385,16568,12323,28057,33346,34919,124763,155533,101386,31644,8627,49001,303600,29868,63213,9103,77280,71333,9696,138789,37059,24823,5057,21352,32368,114208,56803,19424,10445,58514,8661,209508,26187,171838,10460,63454,14016,122504,41328,21329,46618,32493,38225,7855,31763,7945,29876,8734,6438,24205,97490,139977,130740,47323,33195,85390,57194,13813,60600,21313,96251,7699,27584,170521,139271,1363,4402,336738,129223,84983,69150,13147,3590,163929,207225,155260,55916,20288,4503,8398,98490,11773,27512,37113,84976,86558,28365,11756,116005,182148,13733,115313,47644,67208,85069,9347,14995,226141,14704,101835,41159,35314,13113,63526,214039,29978,50446,83339,17440,129441,72522,118641,97816,24907,73844,15717,118884,167255,96509,162793,30847,36849,51297,78974,77793,10427,1873,2972,9999,35074,28190,64297,146836,46298,60038,163007,108919,61219,2403,75022,127339,4233,110389,69022,9833,128097,88016,79390,222936,22570,94657,28462,56956,38803,81536,30474,152794,19566,16481,147408,74574,81895,20731,1918,1366,76367,187321,54494,24366,21690,61696,33283,107477,77499,31112,414383,74362,18463,218441,120929,59848,258629,201924,69269,454,19989,13054,59894,3623,58908,20681,35723,78523,102680,38988,184112,108087,50944,132704,52966,21699,18860,96349,201411,82697,85395,95658,5093,6427,177894,44191,32755,26961,155739,6249,31310,81030,26574,84311,120155,86730,113535,7424,48888,13516,45747,98098,20077,183995,81945,43210,26704,40420,75831,45648,11180,6855,57927,65528,124096,34851,2598,156633,107572,127352,38169,123845,60142,62722,105584,232364,23211,68120,1601,22169,89299,747,258039,80572,7258,152249,11862,101204,8834,121434,33761,19175,133142,46343,40178,48723,3589,41977,30210,38868,62257,10087,82658,87827,90646,16415,47552,351723,28298,72225,91146,272760,1701,11295,1652,109651,300747,51863,198800,29446,11794,32345,37538,22356,33102,37590,113544,37970,11478,179743,25454,103417,59905,221970,105196,145604,7817,164809,102360,16974,75840,255333,56902,6659,1954,645,59400,67769,7689,18675,5215,13793,20536,27852,3387,29523,259718,16860,94625,43143,29245,15848,233581,22685,63631,78557,22836,133302,84513,1348,51826,47129,98836,58284,1830,1749,94642,10933,6145,12506,10975,13879,103781,144434,10268,28409,32346,52968,121567,107374,77268,23686,35097,10501,155275,15303,47136,21102,168741,55332,90385,15996,84817,681,137803,25054,142275,6163,38175,8056,124296,240642,65621,4934,178205,16101,62803,60964,18230,100622,76465,44689,14545,9543,47514,16852,93380,28048,12047,107106,37575,101485,77047,57326,34819,96137,76916,6469,46264,115983,75768,87668,69942,13027,165,8373,114231,26434,52844,42799,182044,23580,146254,38081,43236,33883,146220,382894,14606,46035,36481,166621,35417,95382,2957,59384,60428,36358,66343,75378,22267,22950,83528,17577,56474,25285,4619,179691,75355,95836,53295,34588,171410,4487,14679,84208,44015,18562,109133,54101,11531,86052,174479,303157,28095,9953,35642,14564,39802,16145,77606,117406,53038,121117,53624,22062,1212,7632,127157,237292,189087,10478,127345,102515,181997,86752,87623,10966,121602,68783,68681,83042,114380,138349,191305,67176,50085,39016,1427,42384,1412,67118,122616,72389,25260,2237,13576,137346,19938,20304,2191,68759,5373,61364,238507,75814,23931,69565,38993,131741,38364,12528,87762,5679,129853,5310,186831,32653,90338,260176,389531,108118,26843,43985,50175,30563,25106,56965,18130,140428,4542,165503,117991,24219,229605,1819,129663,1240,3797,76093,18398,71339,51919,93043,27175,47060,216257,6483,35051,1217,16512,80798,129064,13225,69339,8548,237079,72298,2575,34280,51379,117910,55671,53345,247552,29486,39328,140821,34681,57045,60177,5004,90269,78522,2479,322607,48474,61296,13057,31558,4678,59271,6699,27044,31988,35944,12503,83480,4389,136508,3781,114121,70279,4488,155829,42214,2898,68191,75695,305850,45041,74344,106509,30087,17429,93292,12477,290,23080,114802,35714,18751,26554,105424,17775,2144,2412,100610,65192,113975,52975,180272,135050,129815,76238,106483,21440,63186,4260,46189,9711,28249,4169,23429,23390,8324,141585,63809,67668,38457,38063,39226,59972,1189,203916,62368,14403,16949,61767,85801,1739,40147,35049,76757,33124,62102,15780,103593,103009,53484,22952,67973,114645,6566,5245,50462,7601,8288,3513,194571,80276,1908,54592,5124,58571,2513,6800,273997,193904,1119,17991,117245,2508,129156,82366,26278,71465,63341,56943,39662,106116,94966,156875,9736,2204,122308,94418,27134,1280,24539,49022,45314,3764,50904,46424,30699,28087,293839,9400,33646,40165,822,147499,50263,116179,29085,11863,31314,5578,17797,5104,12454,1604,15342,219206,10232,67800,94261,25872,13565,90339,78971,75377,26649,41184,47695,11514,35369,20767,14227,41953,309396,148270,147938,33074,14453,27499,109019,39018,25738,240196,158931,52820,8612,95853,21524,137010,84901,70869,70021,116794,48404,38771,6732,1070,70990,187297,49140,5238,576,3564,253975,16027,16483,2811,37775,19034,25259,4053,2e3,70083,95774,19713,33431,92703,91314,42381,288770,48194,95985,3991,77418,13406,241328,245086,56533,35275,62725,9246,51924,70181,95331,16163,31410,79016,39312,120878,119371,275987,80124,27712,9186,220,23598,146167,85209,68238,282190,57048,31273,30555,80913,17594,75779,59160,135002,101219,189377,29225,96735,60126,62522,104e3,27620,86814,17240,147533,11001,5425,43682,410,49460,87270,69480,46315,59448,1816,76201,9431,11788,87960,29063,65539,47347,11678,33846,7008,196704,9895,6753,8633,120892,59970,572824,115934,6646,202559,892,48351,37611,251282,57823,67263,57750,26527,34485,90747,7685,88370,6144,64182,1709,41969,21458,62327,181657,49247,225330,122600,114574,107124,85361,111833,63243,71420,15655,191178,72430,18063,51425,54002,12364,53225,86557,18193,97580,41232,138398,67821,128724,8944,233212,101353,52099,42127,14006,120107,32789,32132,3498,18123,33758,56058,5779,128760,59888,98869,18445,84702,51911,13234,218379,20093,39031,8074,70195,20708,23462,24355,131384,60189,26390,10403,41060,7140,10781,49410,42261,87202,82566,41663,43105,60276,2768,5733,74176,28329,2297,145430,131632,83615,122915,105441,655,224102,5284,136426,67763,16294,188511,32538,61049,27893,3394,13951,159099,28542,17930,145360,9492,190122,32285,78855,26440,13570,58648,73908,4239,124561,2444,74172,53131,11468,10794,73566,11623,35343,64710,30481,4163,10328,38309,29901,10538,154377,76132,92405,24839,11679,3465,13449,11637,7824,2337,57754,1260,14458,41118,19878,38661,13416,159180,37074,163164,54137,28627,52134,184900,8520,40385,29546,30502,22386,66527,107458,6850,24022,47983,30603,35083,8934,304066,39500,9,28261,33026,77251,9374,44833,116312,34990,29236,63563,125639,135405,165398,159055,55690,88141,69643,236964,31983,25572,20436,36746,60896,31850,16179,11828,5888,3043,66368,9750,31167,7915,53111,36430,1333,64344,93659,20061,60596,180191,51630,6792,30244,43509,101058,22409,420,44210,109783,43223,27030,72477,72831,32679,29235,7675,47556,12258,39907,149412,84926,118247,24692,71717,105038,86009,45941,41189,89453,29856,52543,30627,226798,67303,59230,67415,34408,1367,99685,16867,128419,52147,4111,125381,117881,16173,44093,102224,31575,23234,24870,83790,127407,239098,3200,994,1255,100903,242275,117266,55116,38205,16140,29662,11307,40414,208793,123355,56470,4862,75600,30119,58218,70828,24075,26974,7802,192353,4851,5475,78720,66596,3409,28573,64396,30381,30690,59859,88256,5406,99945,103064,34463,37727,24238,86643,60088,4057,23741,5967,162904,38240,28356,93858,25510,122879,6897,3278,7057,11971,4400,35461,211413,21395,59615,39471,87233,55795,128426,3051,22470,41950,14705,3974,180108,80476,78442,204996,91987,15634,67610,139015,142373,35611,51134,10387,4353,153456,57749,181039,14183,68447,151532,21107,36452,20551,3186,46247,46383,129666,88736,140662,146243,2066,8360,7978,64818,106963,17896,47801,10723,114821,223295,74192,3293,3393,16987,74064,11277,91622,4270,29828,27951,387869,103235,1374,61988,120083,477,145892,128378,11779,211263,61354,18221,17869,46530,83061,108538,157981,90608,67199,95080,49064,195814,12302,66307,10348,231346,160732,112859,63633,146558,21271,31037,198802,47622,12862,95710,3910,77850,73961,85585,34752,61e3,4082,24595,103679,71107,8208,79568,150019,16615,24961,139857,32664,197366,4559,54735,32696,4126,162019,75698,13916,70108,159638,19834,9349,24675,175560,49643,18206,52459,27992,10809,88865,401975,133172,29e3,34558,30915,3658,25834,42430,36562,125265,18182,10155,40149,97082,208980,19575,60853,90529,66545,9600,789,46420,2317,88593,55595,98980,115302,5742,169155,1073,177901,3472,11189,63711,78643,65472,50459,127979,93,42202,67053,21720,157650,11145,141378,42033,22824,85705,79114,35584,15974,1510,54172,28562,12451,104226,19190,97151,73024,20948,5151,81741,21499,29006,84183,198074,54003,45120,170125,26240,35177,28389,64863,79974,60778,176915,232183,45342,2038,80253,41564,40703,32689,5430,100689,5366,23007,134279,14266,26712,73993,24934,64242,52113,102887,61801,46415,201049,54251,62133,122757,164883,30815,139966,2319,30842,766,13362,10287,134518,86111,81665,82440,28333,43019,18963,8804,161944,23439,102144,101145,80029,39052,248708,30350,117340,11878,128467,974,138625,63961,5237,74778,61834,67040,43814,13690,65947,33809,232476,115258,181745,28824,94013,9510,10246,93722,81976,7217,114383,3493,16014,69045,72692,12145,80981,9507,6692,1620,60820,330444,35474,33962,4797,7053,295463,46445,27026,12491,77988,49524,35675,90947,29114,166705,101385,133782,32704,6186,84595,176031,185623,45966,151302,63069,1699,107491,947,15458,74452,196212,6046,10498,12163,10239,35191,243951,9277,9090,29539,54460,22820,26514,112549,60372,51753,48756,21812,70861,260326,41,44222,10441,16961,48148,138771,216194,5914,52153,53400,212036,56519,26245,10117,45888,15294,138019,90913,26368,43842,42111,23348,6082,194845,161089,156206,51546,11647,30759,302912,262094,8635,78876,26535,35283,54183,31183,85484,147873,12989,5197,6356,72894,65347,20150,27370,73787,1493,45918,12366,190217,20724,13858,10981,67449,81213,7553,14115,72242,271517,11842,48310,88743,143726,22177,3290,243231,58452,62937,12592,1654,40066,33477,13751,9921,128442,15868,7106,75236,83773,10775,36938,10482,170465,17368,17469,161508,32752,98340,800,19824,264456,3901,87319,2867,26782,9630,113102,185815,24197,44584,86366,40224,3636,140916,31731,267731,9567,53678,72984,29389,27963,17106,50282,284911,60170,8322,12608,23374,89652,5268,39044,229766,8869,151350,31436,177342,12269,183212,120418,116270,2843,78888,69192,7865,184099,1086,129897,18383,70508,20242,18508,229924,124569,35749,50589,55626,9884,83115,40971,30671,18135,14452,38861,17844,201826,5549,26413,17189,13561,38539,10679,143331,3314,36785,171194,49685,187713,67506,4618,104039,17060,195080,50648,33159,19238,67559,134840,28599,157523,17130,38064,117398,94355,31918,13575,34538,40326,13997,3494,348283,62481,26862,3603,104426,244363,153709,112487,304612,199674,41239,35545,54869,293005,28223,26277,26899,4533,18518,15492,38587,80488,70485,160395,263,60162,11382,222152,4696,250751,51921,182609,10707,48463,46243,1227,49111,111564,46502,33342,56846,68541,63559,858,139927,16654,229375,76759,26478,33205,95828,23399,92945,2637,35630,28470,143992,50214,14174,21456,166191,65665,1711,21594,78019,97599,111701,36,147151,110246,189022,43021,30397,40757,131935,42065,73335,48039,26596,28984,15102,2361,7421,202167,69744,43766,52826,3642,83304,33873,75140,63169,192389,36551,92748,13039,123959,233220,21738,84447,77230,20228,187852,19095,25799,92136,108774,29237,53947,2299,118106,2687,8830,42331,202924,33667,2023,73763,30704,19363,19779,16737,35629,48081,24068,101013,162338,291912,13749,24745,328289,167679,70086,48299,23306,16732,17801,43322,54589,3586,63653,43624,53474,925,109177,251316,43805,13082,19511,86565,142182,92461,17117,101033,103319,64589,4022,4351,235897,5352,82705,107142,46391,156084,5860,61365,10558,13045,7717,18357,33922,12590,33065,6928,46993,783,46937,67846,8952,26295,6107,119656,18799,17458,50747,4229,179559,112727,118080,20683,41464,125468,51560,49749,44231,7359,35339,62988,136487,67015,5208,29150,24956,105186,48858,6143,18097,6972,16404,73489,58742,97196,36357,164616,5834,32267,13746,147733,15113,132091,34127,106298,39729,106426,22294,9780,15602,36213,71502,42808,66802,599,60755,5851,39120,67363,108623,126368,72770,91263,32486,30596,151717,7951,52002,43103,11768,68942,40901,39344,24037,127500,116890,48403,16926,86750,17745,48648,159545,34460,58419,5634,114317,67865,31462,23352,24010,98185,125708,69686,68337,13610,26271,70691,2980,4768,27225,102402,75453,28106,8104,6931,1176,6274,6475,112635,22498,6176,238686,26832,28893,90319,14441,15682,15087,39517,45270,109134,104440,45965,47645,81772,7876,52683,87720,12898,4505,185665,2769,113401,15664,57592,105229,137381,97059,119268,6876,43309,33886,128363,35476,144249,67013,143587,83367,25703,91436,59347,53236,2289,16519,19844,46309,58558,99834,23313,218816,231303,36388,51333,183535,109792,139277,54306,90139,18235,8275,32710,37677,82464,86025,92204,88842,117723,37570,128723,234242,76350,73795,34896,148247,58424,11105,11744,45746,63372,17118,49772,199520,81902,38004,22911,33752,3125,1995,53792,4689,26909,108150,146062,69674,41811,161444,84855,8999,28561,16731,93937,3189,21967,24890,22943,1356,145300,51569,28802,517,118679,31703,40607,48098,108854,25003,10233,73969,177495,5248,24516,215347,146192,48712,60626,69188,40735,5866,586,101541,6509,47590,52129,5969,222045,110933,25733,24223,65339,62812,2414,155418,35819,16022,78423,43138,20995,128255,240673,46745,236093,72176,57085,97841,61248,107,36068,193177,105427,55726,215229,20446,47228,100420,87091,14429,121708,23605,21157,187721,21880,2997,203976,99166,95068,25877,7724,98925,83401,4829,13182,18229,13718,239662,38653,116505,153497,30589,89029,38962,181302,43853,78872,180301,4786,248240,7401,106136,112590,77745,19731,60880,77789,125748,135487,5975,48627,34084,12419,215770,47557,254582,10364,106495,21856,67539,88981,38805,21428,48732,42316,12149,16078,52808,25327,51322,33850,51147,12253,122354,46077,56483,254553,115417,81834,150991,94662,86668,7381,12841,100650,18218,15741,22372,68294,50705,15535,84660,61887,22553,72299,31361,24824,17743,46820,64288,31582,77006,111674,116384,30760,80920,86149,77192,51979,79691,60342,122805,103800,240873,160744,233114,78962,54920,8608,3484,316104,72548,24337,5088,230040,21926,10172,36838,26,86221,83458,102176,12062,17571,41929,41170,28428,68239,41750,103930,2634,18313,53019,34825,97837,63115,24606,73157,152474,14715,91439,37033,109806,140259,30668,174760,380,135597,95673,136073,65073,134249,13829,17279,122305,4420,46444,10237,64848,203623,70728,10349,182885,65075,24519,25783,40318,34139,22222,63394,55266,102764,41422,20126,65100,90408,53640,35128,48932,11192,38935,96839,34782,39492,19396,41332,6250,5511,19492,51304,25936,104466,54099,73771,86115,5080,7669,30891,111700,13931,25276,72289,135447,14820,258641,25265,31005,281179,75286,393,95359,14623,13584,6680,101227,80173,44933,76666,54542,13244,39348,458,25379,109451,134348,81143,6959,65554,12027,51311,8716,57589,140731,28467,23316,17272,30458,25980,55229,77197,83798,28302,114784,7428,34548,26241,14712,39336,103304,18928,54080,12870,334,87722,15208,16895,142098,114262,39820,83913,57817,28682,7721,14900,108672,11250,62246,42849,415188,1724,26555,24549,25505,26443,107450,145899,61035,43528,6901,60726,65906,267741,21338,147590,42079,18924,73017,135236,15393,5206,4026,84185,1531,5988,113890,82647,303391,7386,69844,71611,189865,76523,31877,13315,19314,198575,32821,1928,67641,25913,104475,103489,3297,70391,18406,15446,113347,19295,93790,27856,1792,167471,116449,8541,4408,41757,63233,25765,86680,64501,27034,24816,34975,6079,4486,49693,36229,16917,21581,62426,27862,11612,54284,35702,194034,355,24277,48262,87411,70504,310164,118018,12516,47559,43502,57433,107139,9290,66533,80863,14634,34312,91725,28606,21342,67241,72355,43244,375789,37402,174015,105070,8342,44167,67494,1890,16365,11723,271002,1865,47918,8350,45564,27742,25110,125803,8553,49504,81925,62211,4534,15491,19011,80373,206920,667,102405,128623,245524,5553,113309,192739,65766,19567,22832,261958,29679,21293,71134,20962,105123,24721,860,21752,33448,18372,157167,94822,35770,173224,232737,75729,28937,46828,28062,25453,5207,140366,36665,30652,6169,67920,150458,92040,23186,184604,92330,20891,176492,49427,27828,38305,42495,143982,49560,25503,90043,29747,65328,47830,12932,11068,77721,9003,25213,94205,140426,46090,89945,138173,192691,33329,112232,129905,35709,27514,1841,19957,31411,127476,53572,17497,173549,55063,175135,19841,69314,5192,237921,117660,150697,4060,273045,50414,98940,65348,153665,164423,58804,156695,48994,213928,86036,28608,8355,39574,34540,16927,135680,18374,151587,10830,53805,16878,16623,4282,48030,8537,14986,46102,13062,72897,72,33050,108227,39451,45935,651,113320,40535,95176,57450,48843,5003,19019,10407,211163,3848,1068,4988,32091,30095,41692,15099,43602,107434,50744,7627,171349,16313,150832,352665,207750,33937,38256,51091,156e3,87889,90663,84175,24908,114900,50365,31494,83829,5398,169342,47521,54818,18935,8356,43094,41212,174536,10082,92550,6678,60614,23355,69721,14796,34149,128830,58187,3179,208,40325,28399,225029,401412,51150,31580,207268,6657,10993,69818,64282,289845,23308,12961,38447,6681,52944,31855,2572,47646,120728,179148,37240,45196,218274,4816,3695,21961,50084,35209,18073,51452,27004,6100,33941,1377,84831,171214,85,141510,9078,99227,32610,6417,11718,49868,65579,87902,73018,49062,46280,61742,21512,40862,107733,15941,29168,157765,144919,14487,5767,158014,140070,7241,573,71584,16921,223566,40331,179473,35081,47926,140885,41508,52104,59180,42310,32811,29048,123517,102413,80208,10104,14746,12649,153641,126022,37965,113017,4171,83,142592,2809,6362,50416,71323,116894,260776,16204,1524,5760,30351,12658,20703,54403,36083,45408,74772,4946,14485,50759,111222,10890,2195,167147,92962,130534,16283,177256,35016,15472,210156,151187,73922,117691,43250,52051,37392,24811,24358,30830,5775,818,21969,1476,127322,151783,58392,31021,106913,65215,89407,90802,28531,11690,20234,95249,44602,37256,18707,11928,5161,4410,26571,51903,49768,22008,25252,65780,209499,68769,203726,13249,137363,48845,86823,6658,5674,31881,1083,1823,108676,34518,166752,13791,14287,91576,91429,8665,11529,26401,16191,91972,30964,5254,28486,54697,79613,66520,18447,22870,45203,194466,22822,51703,12278,76716,44595,73455,33546,12235,144843,36154,51247,11116,33040,3180,225753,60864,1972,28469,12891,28879,10338,144157,56294,353058,38302,41447,87532,110616,27065,168438,6557,1213,50804,144643,24817,2390,136531,38174,247513,16190,4059,122791,131994,137430,39506,57650,16305,5188,54309,106128,20628,88071,67394,395446,250285,66176,91254,1399,114196,43915,60230,44853,27206,106353,43013,18733,345105,226453,51202,16607,57106,117175,35492,10476,89598,127439,15187,39624,13688,61570,10615,31111,59370,6238,175252,32143,224492,41388,95408,34384,148238,78307,38959,9340,160091,61443,15737,11216,41244,170,38299,102443,113097,26382,14027,33707,3957,76300,66160,19431,18900,6952,1717,108656,82206,188021,257335,27295,43999,41210,31777,46956,57457,12657,11489,15697,48060,204748,53583,82422,284790,30503,137341,8120,19615,220311,15991,10217,63424,9808,67431,70976,98221,4491,15177,28535,144789,751,13230,2394,1504,33977,132104,30316,22230,931,97193,185240,24826,22687,174322,15307,22988,1390,188745,180325,29580,59068,74903,18994,29195,79,15436,7622,38462,11566,138710,44828,45774,37768,99236,68137,84083,19282,22698,17134,74807,126662,173497,46248,16938,119735,3212,28292,213652,49013,9975,32180,45660,86250,4801,68788,95490,77482,113751,11994,44624,94452,46839,128497,100316,5798,58588,73184,202987,65417,37790,88524,1606,43156,97964,105717,34947,11203,100060,37742,130074,93653,107799,94311,196106,41347,8035,10780,16390,27883,118236,167395,1979,25006,19375,31628,18916,144723,78502,114047,103107,86492,107686,5844,20934,206963,23556,22591,16562,146333,20167,10471,117434,33085,2863,9740,36669,41849,37271,22790,18209,28979,8231,12952,54408,21731,25130,45208,55748,138120,75826,414,29593,9925,292865,25999,683,123149,7036,92159,86055,61827,103680,23176,54918,58466,57578,13305,5709,86479,16697,31064,17660,200919,10770,49793,33423,32370,52047,16488,62555,6459,8426,83493,7763,59725,82812,18628,67760,79405,68557,9612,7673,28102,56517,69620,171797,32458,29541,15870,81109,32080,207644,71495,21202,11039,91036,61230,2810,130800,32260,4613,60590,37112,75214,33979,126402,155062,30642,63875,12810,194463,82799,47664,16725,36685,43367,61099,449,172150,102867,21691,301838,36745,7130,18671,57316,34852,38034,54182,35578,65900,99486,19771,3456,2658,16914,99866,28390,28109,8262,21147,34353,20006,4228,137085,1675,203023,283196,198286,214375,163329,290603,152574,40471,83506,30068,14730,23177,131539,34759,27668,32178,71896,104799,116305,85430,119262,42860,25160,8911,23428,49437,105322,6519,16203,6349,74711,1230,38045,8540,75165,44736,25909,51026,317034,4984,32281,91312,27060,44431,17817,45363,155937,239085,35697,59784,91993,29531,126740,213757,76560,167776,285273,24262,8237,65030,41160,74437,48804,118916,13159,37842,1031,75349,1478,11655,108777,23435,277425,101734,67469,70231,124711,43532,28514,65526,54956,1e3,21882,17728,25302,40952,52214,149632,1999,2111,3259,63362,89961,220561,39777,26335,9063,10572,12416,34551,34623,38604,24723,5947,15588,69927,66252,119177,69173,46629,28714,70715,212408,20521,406913,74380,11716,50659,50862,37009,88460,130101,7210,53853,538,65120,151950,55806,163748,52837,13153,21100,16674,64536,6091,138201,44837,58547,3723,163,2177,32288,85454,34033,8497,14282,25742,10535,10741,79559,117493,243787,49337,100718,79495,40139,42956,7551,55433,15421,31509,23034,45081,547,61176,53434,328001,8470,36263,30145,4519,74173,53935,11845,73774,60211,78025,3,4102,73782,109293,315332,48412,26683,13714,6865,20128,18490,104141,325,39470,171970,115860,15707,7268,73301,74336,31370,2368,111827,107757,136231,142844,97138,96638,84053,38691,23801,1588,10573,122098,77039,240,186135,146101,11996,18143,112963,46171,155836,348769,47795,121213,116266,132515,3344,144804,31286,99187,255838,129694,35894,48779,55235,148582,71967,65282,15174,13920,47080,6147,108242,157593,125025,7136,1286,28957,127956,28402,98813,20805,7532,109417,40610,5041,32958,15142,18408,108596,33543,50517,27748,80114,233434,91447,487,37094,100048,30541,43477,10639,89862,155868,37667,8726,60684,237903,73408,99589,12190,38739,97348,3914,13594,2680,149016,13907,30171,28343,23530,115225,61104,35821,147679,14337,4297,244282,24085,326976,56428,7851,21303,131620,71446,83253,68692,111870,5224,15813,38197,49026,45057,13660,3306,76345,40671,27905,91072,996,68527,62085,91351,122634,55109,168209,2024,27560,112707,17352,8306,167115,169921,166958,5031,46020,11844,67284,19130,76185,6920,32849,5450,14610,22451,21002,17392,31872,66682,84796,13709,40210,59898,12029,8719,53564,21462,91884,21647,88379,194428,12754,37797,132826,160016,22567,54383,53186,77611,31107,8339,4694,19185,90355,23597,17222,140675,28442,23668,55977,9128,61555,28774,155229,17658,9390,24379,69357,15752,127381,239631,62460,93181,55913,45133,140155,18676,25249,33164,29581,82837,67223,22362,29975,7317,52813,1943,29613,20012,207130,49617,49651,5636,15334,36313,29226,28084,95247,72072,19e3,224932,15811,114,32127,38097,37508,88507,37225,27359,91626,12193,69279,20608,11055,88156,92808,2152,57259,55275,72789,24475,104414,1708,9882,3818,48661,66897,1631,34806,227930,85815,87753,18321,250664,72733,25107,206797,50891,8082,196411,92596,96764,152823,65514,22819,387277,62176,51225,40329,15563,189,3659,73670,64357,51793,275136,33482,86653,74615,67058,11318,125720,15388,22388,8267,1730,102663,170910,40784,7144,85373,13040,7088,94309,583,44224,140424,77439,18496,164026,36578,4722,9151,5824,63365,26510,35199,40500,79277,32495,44614,35233,9566,203293,152144,7097,2330,183480,98629,13423,330887,44130,68600,30939,97829,31012,345465,56747,94879,4939,160027,149761,99423,46099,32251,15332,8761,96094,128555,5763,235318,222223,55729,30241,55420,201746,3987,81382,8259,49325,23287,7719,24633,251100,92311,18591,110533,64759,170260,393860,7175,21144,132887,3593,75346,101277,91109,16387,259187,11627,57459,173829,44694,55780,49797,89192,120443,62622,3904,14814,23887,1027,112258,64955,99800,11132,66353,36202,48624,18158,88481,96882,43059,11040,2455,7077,21651,181159,99126,100434,61388,68186,19161,110468,120052,8819,55324,41494,7014,37689,3618,87729,92615,207943,9823,128657,12587,15857,6379,67628,51216,71775,157617,63244,1503,3864,218754,110864,5769,21492,7243,1192,87921,85529,31512,18537,42698,35350,73510,84474,34301,8991,21013,35034,566,38832,19838,35586,37216,39413,55006,12178,59742,856,84563,6900,25632,17437,49786,30723,13847,70845,4044,7843,23944,235976,55530,48942,6518,20939,73769,192653,52936,95207,23895,132542,142982,22632,87452,48042,54018,178468,10728,26230,23559,363,81269,142012,5718,346258,31456,84333,246476,51018,66692,101804,120570,39962,30373,70593,2864,60541,19425,54209,104092,7201,31545,48018,25865,15442,46257,40443,8328,6451,111782,47527,97754,33046,470,245116,31095,39,91934,87208,73470,36708,36521,12801,70624,36272,8892,79768,12427,55454,103756,5908,52390,62962,22720,141138,94634,41689,128402,126390,6628,106394,35527,134394,82727,254651,194502,148064,89549,3202,28359,957,21954,27906,49840,142747,8307,24206,48978,1186,71728,133038,71474,91306,6333,110959,74600,70387,18983,62609,56057,22970,1147,135850,1321,28834,3578,59715,102227,32827,81415,99952,55636,257598,390,22702,35701,85872,402916,39216,189795,14929,19467,10112,144422,61514,5279,63421,134686,41436,8424,51925,10598,132295,124416,4604,194739,210929,57866,31829,51626,50007,9976,91878,61906,56168,81906,60918,61859,40017,23059,16887,40927,62064,12785,32893,32913,21782,93965,20169,44387,79084,38463,11457,93950,27127,157050,2697,337088,5116,54128,48255,33279,8821,27352,25515,124022,65710,28906,38557,33390,1722,104435,72215,38551,12094,30978,25113,6671,37355,175109,42862,98024,65406,221276,59624,118012,64637,78760,86697,21426,1639,40350,12584,67193,84144,31396,7863,143011,69629,63112,9454,28666,65798,46372,134721,6314,51402,30837,151922,2847,38676,38008,92823,136245,17540,5504,109295,205242,37606,5211,214892,1586,20670,208711,137743,19328,40652,16995,20023,14657,154919,34422,12996,13918,38221,47690,16398,2959,37680,89122,6721,198469,91876,172043,83898,101992,26084,94570,3635,76958,22853,76497,38266,176590,168403,44464,142840,79180,184594,1984,41806,83147,11985,6546,366068,59732,24533,271505,8736,39084,222992,93429,28962,58985,86665,8432,30028,14548,32439,54424,165029,55175,27458,69046,121277,46168,33732,20661,24581,135574,123110,37556,79260,72611,16957,12939,46162,58238,44907,72936,253758,41324,32518,96480,11949,124438,65280,43256,34107,53533,43531,37037,28366,45970,32741,173438,6121,194202,62969,26355,30314,58370,28455,1848,50519,82830,90393,21761,295490,10936,256940,133568,44050,20269,4089,27457,21610,219460,36743,14821,101388,52005,13124,30979,140816,167362,26054,18458,60789,34917,40447,26606,33422,9066,3452,83614,5761,20263,137238,25038,91310,101,52322,74548,42572,38084,214054,186568,31802,17665,30620,141936,37730,14420,4265,187218,49640,188208,51441,55388,96452,66659,40869,42039,60967,221027,19234,178581,29105,96050,9165,196118,157335,3738,40354,117436,2965,34136,59659,15570,50843,230035,31444,71260,43886,18316,5387,38500,168508,17406,32174,8828,103373,143806,90367,3560,18719,122310,16508,26719,2541,105429,6645,37998,73190,10591,235916,49737,87112,233941,53188,32193,79154,4544,52905,126477,7580,63501,57314,3216,31337,6541,103083,60846,49,9756,15481,1355,43840,14319,13743,27486,10222,73114,230718,418644,16706,6674,279748,23058,45273,295831,86306,2743,5535,88773,21829,35253,120938,31153,3169,16839,42847,8751,80974,33942,36867,35514,16485,26474,77775,56877,5391,48346,3882,108713,31403,27804,55248,26235,43821,136104,40118,175507,28034,203908,18732,1788,34030,106427,36958,54359,7251,44936,15356,69139,455,157915,22173,140291,50348,43275,82066,49621,54952,15216,36226,96695,66855,6936,1987,8227,196087,4631,68827,99004,47541,110265,17953,147605,110242,58520,31312,38724,329975,642,3155,34497,75937,6207,73843,6120,17249,51429,117746,3218,910,68961,319671,14938,29555,34700,1649,66673,72268,9655,76800,153087,6941,210168,27130,35398,1780,73242,3135,56689,19556,165307,8765,35967,121458,13333,70453,17350,117253,22265,13340,44265,39869,441,3742,135025,23581,33309,16543,17731,13291,157637,283005,21408,101360,63887,52312,83873,5338,233779,23759,186949,34531,177320,38069,156465,91004,19353,59852,68160,14891,1338,1072,29823,1950,28901,81407,313445,73038,84807,162348,240257,37162,138934,16111,58013,41253,102951,16457,96056,19541,56402,67217,41638,94381,89674,29481,37456,80815,151579,13937,13683,132537,19699,134545,67020,29816,222341,141235,427578,48868,129557,233342,23077,87871,16213,18728,16184,9469,37913,19680,2798,171356,178328,13216,50049,72690,71904,124644,55455,7504,29052,41036,266546,19899,30391,188755,8659,59469,16,104298,112943,53865,76203,138226,68857,139953,14125,107625,119795,173133,4398,50273,48808,54390,16466,122086,31835,67035,50971,48859,7508,46427,66477,73021,84615,39985,83076,46779,201569,53336,36443,60865,168164,143810,51393,25548,169307,32896,24485,38424,21837,29087,275813,51674,6714,64883,46169,187369,55186,76192,12852,12018,62134,31067,118303,16542,12125,10579,4928,26291,43854,7091,10946,253716,109062,39283,17261,113012,258512,47764,125126,32646,55892,80279,201623,149872,3192,385,1208,48750,5376,58738,22335,5427,82416,47811,32435,143086,38930,94128,59975,156037,37977,38224,62485,7698,50405,71027,16462,21559,136153,34131,107506,162069,63703,3101,215029,40407,4178,3774,9187,80019,17880,97926,67579,2600,18405,8351,47924,86638,70820,92206,86453,29610,42241,119200,3198,15466,67813,57863,35454,4779,99518,4649,104641,144269,33730,38073,65864,6838,109456,193298,154007,5623,45741,30846,182578,25573,157224,1543,58575,138703,146140,44971,49356,18275,59064,20300,13122,11848,24453,11973,9797,86843,2919,25530,49210,1130,161220,76788,75373,85604,34926,36014,17777,17255,51533,11676,92226,51845,119859,21525,5936,18507,28050,1140,31418,14857,34207,47859,10750,36382,32079,106909,59426,87757,38393,110042,15965,97104,33757,35344,97993,53979,33651,45407,41884,82515,173089,7177,58371,35365,47543,51927,35587,10670,23544,29306,84233,39976,76076,62097,9007,8668,28119,78281,120790,19835,143020,54968,18670,64959,20649,34469,42570,33001,136570,87796,120044,1106,58700,63951,127623,12805,83057,40212,31773,49850,7361,54336,347524,101314,23751,19569,48791,29174,49369,20467,7465,75842,38281,623,112457,60210,28849,51003,94720,6426,90047,85560,43761,3579,85105,34607,90410,118528,7224,42907,111163,18168,6960,161135,191298,5247,100584,127552,171568,20121,91173,12636,54615,20199,63730,98105,2396,40387,14438,125012,4765,33235,12865,45299,37728,82098,77872,114037,59253,19675,24838,398016,102561,11446,17069,57508,178277,65836,99941,26114,2585,271882,136866,50126,11027,155648,118367,14585,8910,123015,335383,40434,41016,53021,14439,87098,176860,201543,121888,2358,9286,5739,22666,54270,37884,169381,33984,93859,16124,89364,72207,51639,76366,99029,65812,2198,12147,174891,194289,6986,30252,88822,21284,11445,288337,160821,33034,100869,43852,25761,52882,1144,103809,1924,84458,86079,43411,13542,139276,18141,34978,41298,7276,26481,173800,33210,17951,142652,33616,33677,2210,19941,98568,2486,192414,80136,12058,235883,50963,249638,29572,27221,47034,6124,72107,63346,97620,158513,299699,40388,23235,37176,224244,198386,121323,67992,23827,63170,17838,106622,158590,26807,5345,23489,91891,55474,74834,37981,13058,5977,72552,34706,26828,145172,19904,21367,34043,960,77092,91381,4733,47446,7680,41697,5170,16960,14741,46101,13656,473,51842,37433,11103,11551,121951,13191,97536,165932,50397,51628,129028,9069,44885,6590,59195,47045,32940,225472,90345,21833,13303,29407,96615,141951,5198,6028,18395,7181,3861,14966,156358,167182,36529,55253,25942,173153,30959,27261,50691,150176,162201,38467,48462,80602,42163,118482,168,108756,26011,17166,54149,456538,22512,91374,13816,90358,131615,18132,226707,1824,28139,26860,42253,93877,77351,65575,8980,80574,22020,27948,40422,91324,76376,13528,39281,91685,82215,122541,144066,1983,193851,17283,26320,2739,194978,4790,26845,42627,61300,65815,174612,55133,4200,191130,79771,158321,52280,166796,221620,62461,11278,4067,88152,83409,31717,121367,13522,47325,37945,10406,174348,249321,154101,64912,29938,51775,17220,15776,166138,78890,84425,54121,42861,16368,24572,291647,10197,32073,22651,11677,97509,26952,35787,18424,41910,71614,94977,72318,41594,70024,275419,37702,60199,7335,39107,61315,18271,18394,33768,87884,104277,123724,7277,56288,71981,189803,49320,3352,6798,14240,8954,69220,94433,57372,28620,68863,193727,85575,42309,41667,67689,42081,22543,44824,12719,28540,114236,101553,27638,27296,4300,5353,4663,19379,94098,3758,95888,95144,80344,87320,28447,259518,12718,71391,152731,37063,24132,31911,104896,15672,103782,1521,4945,72541,23717,122632,15619,87175,206120,29428,189780,61416,28350,44457,972,1175,47233,198738,95789,41907,21953,97034,59341,22864,53713,16873,32971,20693,20954,31336,21477,16169,38370,16412,9019,3841,24599,21938,17085,6484,81198,76413,5849,72514,12320,65247,276175,37234,59796,52642,16312,57349,198507,94148,46134,18958,125552,1747,18725,151873,14901,5490,68287,29470,3689,64794,40814,26018,25692,54450,2703,88278,124886,173087,174e3,24159,179477,24276,46004,201876,209202,445,52876,31948,30206,157610,39180,18439,44124,50469,5774,96278,222758,200216,50290,45486,20435,46986,46276,140133,142326,15569,13363,47522,92583,2182,7135,16853,22998,30272,4952,63263,35623,39096,53789,44864,20053,110392,124213,4630,16087,28221,127787,25839,77481,44693,13464,113146,6983,27069,55717,50102,4760,7107,26186,66507,59145,36032,104182,71328,29425,64317,50781,47465,94298,69706,74899,22754,120756,25108,93077,56834,73286,39928,16218,41699,176763,7555,70819,50083,26895,23315,26014,16773,123079,41712,5719,31516,90427,158540,85051,183128,40864,27505,55392,9058,45224,96857,30901,136622,96557,56304,120061,11501,151448,5773,89743,7769,86069,2935,18471,41628,10114,33660,110170,49479,26745,92846,33221,26731,18795,87076,8550,2100,29972,120289,3077,72490,33784,2630,208722,50861,63483,79029,6419,39467,14302,45286,64207,9686,67513,44170,1050,77246,59266,17055,53801,7150,11111,42432,4278,94579,362117,36175,42902,41933,39002,98489,22913,74161,84773,57036,17556,162288,74485,178760,93867,73635,128860,50362,261,67455,80001,46080,35662,4368,25247,19230,74393,22588,1822,27682,235324,13798,85998,13194,235067,23514,71669,147632,23191,134748,214683,105101,1518,25489,247114,7380,54842,26922,3971,26361,20844,68642,170517,77339,123255,8963,77818,150998,48466,36806,2732,23261,11741,236162,18243,126216,28690,50546,16385,92760,197383,246558,201295,88255,67588,71687,176076,172653,169058,33906,63747,24835,157621,43338,30050,46152,132741,2770,51371,94835,6614,15112,11749,56936,1250,19027,399017,58036,100215,23388,55815,308768,124152,94803,9521,64186,8971,28,30427,62163,7616,103838,35079,29203,131235,7743,17389,10882,37420,61460,228512,85363,41581,131077,62822,119647,10130,54445,26925,19968,29016,24446,74028,24176,61448,67185,9254,8563,119129,9771,99184,37716,39514,10532,221512,258753,218630,55980,23394,32141,61924,66749,32411,3741,36475,26678,77010,44946,91203,128749,116953,20476,49625,53116,13735,102335,29376,51946,83407,67892,59212,34685,21083,1546,112982,32972,74397,1078,190545,16082,86140,58591,89611,101531,10061,105104,76319,20035,17551,52611,169061,190842,100780,23907,90413,115619,9675,34710,193435,49443,129734,11183,258877,16318,136182,126808,44635,27304,192375,2599,125648,47051,12091,23814,721,58800,40137,66726,97930,60877,74487,7942,54326,9841,41428,13762,8211,85383,6950,99177,79806,201786,296464,124087,13144,29741,41721,47634,55088,254286,106408,17041,99064,12942,64086,45233,14005,2612,55827,255,7984,13980,38574,12776,46654,73499,249951,2101,26676,25996,132326,116415,119062,50449,31033,23038,11589,179252,20007,14860,129270,21143,17796,144715,60106,70758,69842,34674,282133,44014,16774,57268,38528,24053,46373,201667,28327,471023,51889,102667,21193,114909,84132,69317,96723,67969,16134,68145,15058,28765,32035,2524,101089,98664,25045,76571,14957,86040,118506,262428,154764,81573,39681,283900,73287,127825,544,80448,52347,38512,175971,15180,45467,33086,46552,48894,81107,43213,36672,54025,76703,8053,7608,13299,56619,20752,238099,54164,105133,1444,32942,953,37564,8e3,66316,119463,106817,404,13667,149108,128597,31267,10269,49836,106150,1484,52330,76965,160486,171648,38456,31263,22424,37738,66245,67467,143369,60471,75610,20895,115528,86070,60854,40796,49347,18989,15030,11371,37578,15779,79867,10187,86462,46402,155626,93200,40229,7090,57547,108053,99598,11088,47505,41218,206017,2173,20988,30219,22919,80563,57566,42369,93141,41675,2407,182519,120495,27154,16702,29456,14349,7958,16688,117177,140375,42467,261919,74916,153569,10836,34742,49526,7621,105997,12212,2270,392377,7755,17959,25086,232152,138791,33847,13860,35316,5811,1344,71259,50452,207539,92635,50359,5821,33674,30255,2086,2587,96264,17543,42,6029,9580,43007,139248,82831,12917,29607,25786,51467,42137,85161,100698,31561,88989,121990,278500,3602,109344,37982,15279,116442,28936,30880,87894,58079,128661,126731,67392,28051,146885,4861,16216,97344,42827,147561,153948,22684,21335,47685,1853,43349,15185,59642,10229,25520,187921,108972,5579,98037,24945,6697,19193,63734,137934,75056,89740,19767,224268,56138,63643,151661,39313,70618,84031,89723,84074,13703,85626,35460,8867,64845,3439,57906,99776,63968,49270,81130,34356,16210,23547,36446,34090,140028,72439,2221,22163,57058,363492,113754,18913,95451,48663,54464,54037,176097,68425,3023,34906,29482,117389,341780,80431,58330,16753,92616,60907,94846,147486,4498,48646,7773,46801,7778,18946,464978,47558,33223,177444,7328,15626,63337,94700,11743,9351,255024,39098,16447,42647,96230,39769,58840,10068,63439,35800,65843,58823,413844,9156,51258,7434,61791,85018,6872,3692,28096,7121,33024,6009,75532,31997,192535,9661,3304,9547,14753,31987,25314,55689,15896,20430,39472,31340,99744,25398,115569,54883,28719,205423,23071,57855,64638,149867,25671,82403,37616,20668,39989,77996,74948,140555,175248,64810,36515,46595,4958,248773,24045,28728,136673,168704,20804,114833,100325,27135,21205,96151,153134,45992,7093,13992,76047,1980,19432,145001,75159,87462,17710,1013,45556,34297,144882,20648,26061,11319,129567,108555,18872,464580,33386,22717,65948,167189,5603,135042,79542,8801,202632,18114,91882,5973,5239,67315,4431,60916,47819,71693,32597,32606,18183,45072,80329,76385,24749,51305,40314,156514,14693,130345,13168,66214,18029,12858,34801,27628,14544,10823,40522,40185,33739,148694,23548,9923,61012,28859,17933,19442,34364,99849,164107,141167,30629,21054,6744,36491,8096,42474,41706,155060,30650,10600,163442,1143,96655,61390,52359,7559,51568,64256,203854,4467,22453,14504,436398,7878,6980,8293,63610,293747,16167,35763,19627,147603,15419,18032,110744,51346,33681,54571,40472,48615,39073,21604,13754,173027,92560,11083,47299,63062,11813,52007,29883,9734,139722,15953,1550,20651,13616,49306,16113,90089,92326,7584,30712,72424,164858,6831,152871,55746,197721,34167,196442,6022,112107,55215,7538,123381,4920,43539,77165,8939,50392,34192,20225,79762,22505,58667,40770,29788,97180,82835,4568,8579,13273,363569,35898,49983,436,36598,3237,131691,62418,35591,8101,4073,379438,65218,76072,33887,2968,27573,212619,288680,68278,72851,150504,217896,6913,121339,22017,35340,51072,43616,75043,31437,10833,81487,4364,22968,41454,106687,85446,19863,109625,149241,524,141850,214404,54376,657,237023,9401,108137,53800,32474,49712,53334,126876,27337,45552,177696,8269,15036,12097,42240,2328,125374,119295,99715,2500,19624,39441,27220,102691,60957,94543,39101,18566,67362,13975,78230,25017,34017,239007,90027,39351,41681,35354,43822,1043,916,58587,141983,94818,38799,75459,41114,67432,16195,36606,59568,22272,126769,31424,68659,12287,134302,257977,5756,207285,95637,47248,117689,19583,77451,22373,12200,54993,117118,34244,29386,34562,53819,71267,64172,77665,49368,7716,59301,25749,45426,194789,17297,2650,1766,32501,45198,20403,20984,6600,14171,94604,19037,5402,29896,9938,59935,109708,88081,145182,44844,39167,352626,164173,35374,45982,6122,154,73419,220487,53834,53601,17992,8609,229321,5610,68098,66815,71012,95069,140968,27396,8957,134489,24656,86659,56598,134852,17316,123838,255436,6613,41610,138033,81452,32023,32396,123687,63398,8693,29712,30407,19296,121188,3551,36099,20032,111948,56624,16547,27453,35916,15378,52039,56849,13489,22214,73177,53097,277349,2157,14029,187886,10260,141743,246460,91880,50869,3788,49486,133566,54950,33120,129337,53768,18333,9525,26902,312251,10297,9020,70759,16647,112432,59260,84609,9818,82766,73569,468,46001,75780,55028,52106,11498,43645,108069,17150,17753,29417,16705,31799,9606,289,122254,115975,8620,6133,255357,56908,14456,133464,43554,79224,11247,29630,160,12756,25464,65960,350428,62521,321796,100359,67358,35169,46172,113128,48988,88868,31094,33266,6847,60887,98188,49659,69117,92977,220228,13947,80181,35103,62170,97351,13475,2440,199768,19498,36597,46971,25234,67806,62881,84717,73648,181966,10488,94149,21550,26655,63436,48375,14405,165650,9621,24439,28043,42735,4490,29963,56674,45373,1934,262446,50855,67098,26898,5261,52696,40644,33900,9440,180286,87162,22940,19704,26936,69769,10254,101759,27406,12243,48e3,73926,113215,54935,5726,192787,4312,106216,9366,11550,52949,23457,212271,277152,133895,108374,6191,96477,29980,218916,58024,54696,40853,91124,65894,91170,65908,252552,6793,29212,15389,44516,122515,52617,35058,9017,103536,39510,49136,19242,130652,662077,74699,47024,31422,8517,73351,24399,13867,128360,4810,4434,61779,111983,61036,17798,110240,59722,102960,39688,10001,23803,23039,176498,56659,44814,134295,17188,77577,74466,226175,102472,154333,63900,111747,18062,41171,79669,32773,408933,42562,28931,30907,107388,43487,2946,240310,23938,24354,319,184983,7927,6488,1422,10790,68809,68209,64775,4361,202,17123,59634,51200,44391,18188,17843,2619,74278,3230,9540,47187,21702,36274,56894,43907,16310,34790,16866,6150,5561,13587,107545,108873,126867,86986,28640,33427,19017,5762,80637,17430,46903,2047,131055,25958,13558,5444,47152,13900,44563,122857,45348,70863,39593,54332,38068,33637,318,40310,143467,18502,24520,11377,62013,28942,27246,28269,83545,17999,59015,90707,30065,15161,34720,1263,37008,2012,6060,98575,92933,5721,299,199555,24578,29223,2985,743,115825,109523,136657,47454,26378,53586,3733,174945,93340,244456,5693,37386,28782,89767,27545,23573,18798,136425,34320,84778,20041,48453,38215,7477,71958,40621,8773,5874,187927,105965,51100,43533,18083,8443,10180,43597,2003,183999,69689,12216,129696,146188,62389,34044,68410,12765,43273,26949,266807,3345,34477,79197,5688,47539,213110,21634,22257,50092,32222,42346,39530,63668,98,134978,74022,5152,59088,174145,37220,9934,9545,118937,5724,87240,19875,15784,40143,23263,87513,181654,285152,37881,263241,4966,43934,10433,186657,6470,74416,225854,25908,142677,246262,32280,6192,75890,45546,143264,135305,29742,47013,77787,11732,126658,8763,37950,21806,57557,113464,89465,108995,164574,23894,22996,23169,15369,23117,17642,130607,40503,36239,280990,44666,9981,40427,147487,26869,168452,32886,32991,46798,240839,15111,70502,65697,88548,44145,28701,48767,31139,206777,35659,181164,166262,14554,171445,31786,66523,76607,17956,6507,31279,90476,116611,167918,6560,1243,115324,80128,41867,55897,187323,37069,32596,189444,145931,13390,105530,65709,26805,6999,55714,41300,22915,68951,22138,21120,22264,10058,19945,33635,56123,99085,10032,5818,6016,46649,57476,35264,94413,112522,262288,93686,83038,14341,23204,28807,66084,77987,6101,126673,7133,38126,5923,122091,170240,97772,46874,215746,43948,41622,3272,55596,8332,146411,251315,13533,8561,81521,115449,48616,175175,2063,186556,3036,134537,75772,29728,82360,22973,186559,86348,89100,38388,82297,45610,2613,87082,9986,177812,57884,23591,47485,42543,33582,44713,74439,257444,252451,31825,35631,38540,33066,5147,13973,4343,51830,70378,22827,26448,95560,36896,241741,48067,203953,298860,61620,20450,3220,67272,6586,107662,100160,108684,6929,57226,4762,7457,1320,40404,77204,99309,62750,208653,59977,44e3,74315,34332,5819,172217,64904,114077,18147,84012,1791,98456,90930,21446,116669,103938,7422,85140,59713,5768,326211,16239,75411,13229,29398,10758,236107,1539,112472,95979,152154,151294,306,21196,38146,10700,6891,84282,109646,56492,40539,6589,119491,51354,30685,140209,136906,29622,73617,49553,70525,51671,166869,139616,74395,37439,49595,45678,11959,33211,86560,52434,9282,62690,112155,130810,5243,108261,99970,265613,72551,80049,6391,33365,90721,66737,69872,87011,1860,9032,112544,60905,37371,89015,140351,19076,850,373531,2802,36725,218795,72062,28990,16550,24614,7815,6187,26336,33373,32162,42791,73555,32062,23386,10244,56392,49442,27076,136262,12412,14883,1134,33675,97153,199281,15608,100152,74072,47942,254301,36451,16026,10687,65067,56708,254030,30290,50490,13864,57941,259331,35588,23485,43486,24869,21620,92971,22072,88645,1048,182050,13343,32452,14825,19509,3325,216938,45740,99716,189082,53740,78245,25609,24311,176777,47340,308354,40669,66085,14102,125339,9225,128709,97207,1271,200933,78439,113451,88975,18324,46521,11819,18570,141756,72512,170020,52754,63550,118515,103073,93330,32736,50499,14722,31600,68452,398867,29316,172786,18417,104924,2606,5670,84818,16288,67106,59580,82929,607401,291,85829,359,15897,35830,50696,65630,52672,22115,356968,29895,40837,231192,34024,38957,26722,406,23335,124952,72068,68804,13268,147101,164740,276569,162596,66943,11569,26654,66358,4777,23229,102127,5848,978,2921,59666,5371,28212,90108,42938,39320,2499,4271,108792,33510,125072,71653,65239,38250,66357,38577,13964,86251,35708,50755,36010,29448,12209,3844,38222,206337,100876,67827,137088,14167,252225,84163,195270,1306,5703,54198,779,46802,22028,51124,86759,70560,113164,35685,162145,45471,34561,422,2611,6464,47486,19223,38246,9191,18331,89942,243642,212364,15893,17518,22617,6409,30046,126182,59716,36560,104428,18846,26592,19458,50793,147333,30826,1388,27647,10922,14495,33545,19269,135828,39727,41601,46931,233379,49169,131130,182112,16276,82381,118209,142445,128310,19672,28740,82907,33436,3118,102206,28723,24819,41937,38854,5157,3881,111491,1142,9776,421673,152241,29309,14961,87854,6054,15424,3796,82656,54996,2108,55367,239450,154525,9643,118103,106041,64601,68549,48707,30266,25772,18740,9462,229669,91798,112152,191327,14493,72828,8175,66636,236474,25817,87351,129027,76653,20422,22983,71240,27846,44661,12399,46158,77704,53101,35032,11072,17300,109294,33638,24408,1895,11241,760,17584,82479,125877,63150,141075,34259,23274,81698,15732,43577,48340,91584,14688,16379,24481,150280,96420,262050,48635,43727,61819,56268,72003,88178,17281,79912,13218,122519,125295,166396,11811,2171,118930,67746,17636,178278,174656,95661,173039,83845,79689,17473,98555,127696,203415,54730,22925,232239,9309,12136,175026,20740,180188,10747,39816,314017,266131,10040,175732,112550,220651,31974,37393,888,23008,86799,4303,64905,148467,75337,251,3284,370102,50264,9835,5438,23655,4481,29851,329,12855,7162,64931,78141,12804,42372,296771,83547,18624,34874,86271,3360,48665,77735,88767,11463,63527,28889,22258,29140,194315,113924,25499,6406,31334,1845,4802,49184,43455,35469,127594,92970,61038,115005,38840,87761,106838,8811,20572,55637,11162,96721,132425,108925,2948,125457,36356,3502,75270,27622,127192,2561,123095,49394,61155,16897,110064,9699,89448,53356,19628,220310,21622,83036,9885,112214,6087,26713,17901,161912,91492,3440,68594,9266,92238,8087,6866,150194,72175,80701,13459,31836,43243,239700,95846,44749,50647,21945,230538,120612,132371,244604,5193,105637,34661,41341,68775,85393,1874,8771,33718,49672,77403,595452,99507,6490,58895,128742,7704,39239,73217,43816,62824,37804,199976,22361,80005,87514,94832,14089,4574,139975,59142,75523,100268,43906,53442,15152,2547,186002,17011,19513,204282,3343,60568,128318,119250,4298,51871,41336,71759,21921,45074,98169,145889,99427,11350,1237,5520,28799,7803,53702,21026,136352,38293,128690,12158,90132,44600,10184,26957,39459,126025,78904,82999,59373,39301,150198,120529,153042,20177,50089,14764,271571,30530,123161,38975,101562,22941,5648,124654,109243,69817,71675,49162,106884,21241,107795,30258,16572,188262,141456,7688,60718,8271,11044,32440,104608,103419,236109,93156,43293,128929,42107,67180,25201,115254,185488,130954,72813,167547,20537,39969,38432,22582,184022,1139,27199,5655,17767,97412,122606,209377,27070,35871,326617,188954,42680,73512,80911,22629,3011,95021,315242,157737,383,41821,41808,19335,27950,15674,25677,110950,35375,76835,59108,57370,35262,16569,160415,37706,78086,32041,49691,137143,9782,172080,50148,77917,6323,10110,69172,17711,21795,59511,76184,135114,31046,132319,59105,157578,20549,80778,57649,158421,65143,4575,72235,21899,10797,92745,34035,106079,80159,4508,78304,25350,75457,46458,32937,25623,47,8531,104751,84953,8138,36508,187199,66310,115274,13253,32461,38536,1916,42007,187160,35055,26325,84394,35963,94216,45590,97782];var Us=15,Os=class{log;peerRouting;routingTable;refreshInterval;refreshQueryTimeout;commonPrefixLengthRefreshedAt;refreshTimeoutId;constructor(e,t){let{peerRouting:n,routingTable:s,refreshInterval:i,refreshQueryTimeout:o,logPrefix:a}=t;this.log=e.logger.forComponent(`${a}:routing-table:refresh`),this.peerRouting=n,this.routingTable=s,this.refreshInterval=i??3e5,this.refreshQueryTimeout=o??3e4,this.commonPrefixLengthRefreshedAt=[],this.refreshTable=this.refreshTable.bind(this)}async afterStart(){this.log(`refreshing routing table every ${this.refreshInterval}ms`),this.refreshTable(!0)}async stop(){this.refreshTimeoutId!=null&&clearTimeout(this.refreshTimeoutId)}refreshTable(e=!1){this.log("refreshing routing table");let t=this._maxCommonPrefix(),n=this._getTrackedCommonPrefixLengthsForRefresh(t);this.log(`max common prefix length ${t}`),this.log(`tracked CPLs [ ${n.map(s=>s.toISOString()).join(", ")} ]`),Promise.all(n.map(async(s,i)=>{try{if(await this._refreshCommonPrefixLength(i,s,e),this._numPeersForCpl(t)===0){let o=Math.min(2*(i+1),n.length-1);for(let a=i+1;a<o+1;a++)try{await this._refreshCommonPrefixLength(a,s,e)}catch(c){this.log.error(c)}}}catch(o){this.log.error(o)}})).catch(s=>{this.log.error(s)}).then(()=>{this.refreshTimeoutId=setTimeout(this.refreshTable,this.refreshInterval),this.refreshTimeoutId.unref!=null&&this.refreshTimeoutId.unref()}).catch(s=>{this.log.error(s)})}async _refreshCommonPrefixLength(e,t,n){if(!n&&t.getTime()>Date.now()-this.refreshInterval){this.log("not running refresh for cpl %s as time since last refresh not above interval",e);return}let s=await this._generateRandomPeerId(e);this.log("starting refreshing cpl %s with key %p (routing table size was %s)",e,s,this.routingTable.size);let i=await Rs(this.peerRouting.getClosestPeers(s.toBytes(),{signal:AbortSignal.timeout(this.refreshQueryTimeout)}));this.log(`found ${i} peers that were close to imaginary peer %p`,s),this.log("finished refreshing cpl %s with key %p (routing table size is now %s)",e,s,this.routingTable.size)}_getTrackedCommonPrefixLengthsForRefresh(e){e>Us&&(e=Us);let t=[];for(let n=0;n<=e;n++)t[n]=this.commonPrefixLengthRefreshedAt[n]??new Date;return t}async _generateRandomPeerId(e){if(this.routingTable.kb==null)throw new Error("Routing table not started");let t=ct(2),n=(t[1]<<8)+t[0],s=await this._makePeerId(this.routingTable.kb.localNodeId,n,e);return gt(s)}async _makePeerId(e,t,n){if(n>Us)throw new Error(`Cannot generate peer ID for common prefix length greater than ${Us}`);let o=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(0,!1)^32768>>n,a=65535<<16-(n+1),c=o&a|t&~a,l=$4[c],f=new ArrayBuffer(34),u=new DataView(f,0,f.byteLength);return u.setUint8(0,ne.code),u.setUint8(1,32),u.setUint32(2,l,!1),new Uint8Array(u.buffer,u.byteOffset,u.byteLength)}_maxCommonPrefix(){let e=0;for(let t of this._prefixLengths())t>e&&(e=t);return e}_numPeersForCpl(e){let t=0;for(let n of this._prefixLengths())n===e&&t++;return t}*_prefixLengths(){if(this.routingTable.kb!=null)for(let{id:e}of this.routingTable.kb.toIterable()){let t=Lt(this.routingTable.kb.localNodeId,e),n=0;for(let s of t)if(s===0)n++;else break;yield n}}};function Vs(r){return r[Symbol.asyncIterator]!=null}var Fs=r=>{let e=he(r),t=be(e);return Ke(r,t),Fs.bytes=e,t};Fs.bytes=0;function Ms(r,e){e=e??{};let t=e.lengthEncoder??Fs;function*n(s){let i=t(s.byteLength);i instanceof Uint8Array?yield i:yield*i,s instanceof Uint8Array?yield s:yield*s}return Vs(r)?async function*(){for await(let s of r)yield*n(s)}():function*(){for(let s of r)yield*n(s)}()}Ms.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??Fs;return new Me(t(r.byteLength),r)};var sn=cn(j4(),1);var Z7=8,Q7=1024*1024*4,wr;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(wr||(wr={}));var t2=r=>{let e=Ue(r);return t2.bytes=he(e),e};t2.bytes=0;function Hn(r,e){let t=new Me,n=wr.LENGTH,s=-1,i=e?.lengthDecoder??t2,o=e?.maxLengthLength??Z7,a=e?.maxDataLength??Q7;function*c(){for(;t.byteLength>0;){if(n===wr.LENGTH)try{if(s=i(t),s<0)throw(0,sn.default)(new Error("invalid message length"),"ERR_INVALID_MSG_LENGTH");if(s>a)throw(0,sn.default)(new Error("message length too long"),"ERR_MSG_DATA_TOO_LONG");let l=i.bytes;t.consume(l),e?.onLength!=null&&e.onLength(s),n=wr.DATA}catch(l){if(l instanceof RangeError){if(t.byteLength>o)throw(0,sn.default)(new Error("message length length too long"),"ERR_MSG_LENGTH_TOO_LONG");break}throw l}if(n===wr.DATA){if(t.byteLength<s)break;let l=t.sublist(0,s);t.consume(s),e?.onData!=null&&e.onData(l),yield l,n=wr.LENGTH}}}return Vs(r)?async function*(){for await(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw(0,sn.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}():function*(){for(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw(0,sn.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}()}Hn.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 Hn(n,{...e??{},onLength:i=>{t=i}})};var Hs=class{providers;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:add-provider`),this.providers=t.providers}async handle(e,t){if(this.log("start"),t.key==null||t.key.length===0)throw new x("Missing key","ERR_MISSING_KEY");let n;try{n=_e.decode(t.key)}catch{throw new x("Invalid CID","ERR_INVALID_CID")}(t.providers==null||t.providers.length===0)&&this.log.error("no providers found in message"),await Promise.all(t.providers.map(async s=>{if(!e.equals(s.id)){this.log("invalid provider peer %p from %p",s.id,e);return}if(s.multiaddrs.length<1){this.log("no valid addresses for provider %p. Ignore",e);return}this.log("received provider %p for %s (addrs %s)",e,n,s.multiaddrs.map(i=>yr(i).toString())),await this.providers.addProvider(n,gt(s.id))}))}};var Ks=class{peerRouting;peerInfoMapper;peerId;addressManager;log;constructor(e,t){let{peerRouting:n,logPrefix:s}=t;this.log=e.logger.forComponent(`${s}:rpc:handlers:find-node`),this.peerId=e.peerId,this.addressManager=e.addressManager,this.peerRouting=n,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(this.log("incoming request from %p for peers closer to %b",e,t.key),t.key==null)throw new x("Invalid FIND_NODE message received - key was missing","ERR_INVALID_MESSAGE");let n=await this.peerRouting.getCloserPeersOffline(t.key,e);Q(this.peerId.toBytes(),t.key)&&n.push({id:this.peerId,multiaddrs:this.addressManager.getAddresses().map(i=>i.decapsulateCode(W("p2p").code))});let s={type:M.FIND_NODE,clusterLevel:t.clusterLevel,closer:n.map(this.peerInfoMapper).filter(({multiaddrs:i})=>i.length).map(i=>({id:i.id.toBytes(),multiaddrs:i.multiaddrs.map(o=>o.bytes)})),providers:[]};return s.closer.length===0&&this.log("could not find any peers closer to %b than %p",t.key,e),s}};var qs=class{peerRouting;providers;peerStore;peerInfoMapper;log;constructor(e,t){let{peerRouting:n,providers:s,logPrefix:i}=t;this.log=e.logger.forComponent(`${i}:rpc:handlers:get-providers`),this.peerStore=e.peerStore,this.peerRouting=n,this.providers=s,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(t.key==null)throw new x("Invalid GET_PROVIDERS message received - key was missing","ERR_INVALID_MESSAGE");let n;try{n=_e.decode(t.key)}catch{throw new x("Invalid CID","ERR_INVALID_CID")}this.log("%p asking for providers for %s",e,n);let[s,i]=await Promise.all([this.providers.getProviders(n),this.peerRouting.getCloserPeersOffline(t.key,e)]),o=await this._getPeers(s),a=await this._getPeers(i.map(({id:l})=>l)),c={type:M.GET_PROVIDERS,key:t.key,clusterLevel:t.clusterLevel,closer:a.map(this.peerInfoMapper).filter(({multiaddrs:l})=>l.length).map(l=>({id:l.id.toBytes(),multiaddrs:l.multiaddrs.map(f=>f.bytes)})),providers:o.map(this.peerInfoMapper).filter(({multiaddrs:l})=>l.length).map(l=>({id:l.id.toBytes(),multiaddrs:l.multiaddrs.map(f=>f.bytes)}))};return this.log("got %s providers %s closerPeers",c.providers.length,c.closer.length),c}async _getAddresses(e){return[]}async _getPeers(e){let t=[];for(let n of e)try{let s=await this.peerStore.get(n),i=this.peerInfoMapper({id:n,multiaddrs:s.addresses.map(({multiaddr:o})=>o)});i.multiaddrs.length>0&&t.push(i)}catch(s){if(s.code!=="ERR_NOT_FOUND")throw s}return t}};var $s=class{peerStore;datastore;peerRouting;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:get-value`),this.peerStore=e.peerStore,this.datastore=e.datastore,this.peerRouting=t.peerRouting}async handle(e,t){let n=t.key;if(this.log("%p asked for key %b",e,n),n==null||n.length===0)throw new x("Invalid key","ERR_INVALID_KEY");let s={type:M.GET_VALUE,key:n,clusterLevel:t.clusterLevel,closer:[],providers:[]};if(m0(n)){this.log("is public key");let a=y0(n),c;try{let l=await this.peerStore.get(a);if(l.id.publicKey==null)throw new x("No public key found in key book","ERR_NOT_FOUND");c=l.id.publicKey}catch(l){if(l.code!=="ERR_NOT_FOUND")throw l}if(c!=null)return this.log("returning found public key"),s.record=new me(n,c,new Date).serialize(),s}let[i,o]=await Promise.all([this._checkLocalDatastore(n),this.peerRouting.getCloserPeersOffline(n,e)]);return i!=null&&(this.log("had record for %b in local datastore",n),s.record=i.serialize()),o.length>0&&(this.log("had %s closer peers in routing table",o.length),s.closer=o.map(a=>({id:a.id.toBytes(),multiaddrs:a.multiaddrs.map(c=>c.bytes)}))),s}async _checkLocalDatastore(e){this.log("checkLocalDatastore looking for %b",e);let t=Ht(e),n;try{n=await this.datastore.get(t)}catch(i){if(i.code==="ERR_NOT_FOUND")return;throw i}let s=me.deserialize(n);if(s==null)throw new x("Invalid record","ERR_INVALID_RECORD");if(s.timeReceived==null||Date.now()-s.timeReceived.getTime()>1296e5){await this.datastore.delete(t);return}return s}};var zs=class{log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:ping`)}async handle(e,t){return this.log("ping from %p",e),t}};var Gs=class{components;validators;log;constructor(e,t){let{validators:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:put-value`),this.validators=n}async handle(e,t){let n=t.key;if(this.log("%p asked us to store value for key %b",e,n),t.record==null){let s=`Empty record from: ${e.toString()}`;throw this.log.error(s),new x(s,"ERR_EMPTY_RECORD")}try{let s=me.deserialize(t.record);await _r(this.validators,s),s.timeReceived=new Date;let i=Ht(s.key);await this.components.datastore.put(i,s.serialize().subarray()),this.log("put record for %b into datastore under key %k",n,i)}catch(s){this.log("did not put record for key %b into datastore %o",n,s)}return t}};var js=class{handlers;routingTable;log;constructor(e,t){let{providers:n,peerRouting:s,validators:i,logPrefix:o,peerInfoMapper:a}=t;this.log=e.logger.forComponent(`${o}:rpc`),this.routingTable=t.routingTable,this.handlers={[M.GET_VALUE.toString()]:new $s(e,{peerRouting:s,logPrefix:o}),[M.PUT_VALUE.toString()]:new Gs(e,{validators:i,logPrefix:o}),[M.FIND_NODE.toString()]:new Ks(e,{peerRouting:s,logPrefix:o,peerInfoMapper:a}),[M.ADD_PROVIDER.toString()]:new Hs(e,{providers:n,logPrefix:o}),[M.GET_PROVIDERS.toString()]:new qs(e,{peerRouting:s,providers:n,logPrefix:o,peerInfoMapper:a}),[M.PING.toString()]:new zs(e,{logPrefix:o})}}async handleMessage(e,t){try{await this.routingTable.add(e)}catch(s){this.log.error("Failed to update the kbucket store",s)}let n=this.handlers[t.type];if(n==null){this.log.error(`no handler found for message type: ${t.type}`);return}return n.handle(e,t)}onIncomingStream(e){Promise.resolve().then(async()=>{let{stream:t,connection:n}=e,s=n.remotePeer;try{await this.routingTable.add(s)}catch(o){this.log.error(o)}let i=this;await Ft(t,o=>Hn(o),async function*(o){for await(let a of o){let c=qe.decode(a);i.log("incoming %s from %p",c.type,s);let l=await i.handleMessage(s,c);l!=null&&(yield qe.encode(l))}},o=>Ms(o),t)}).catch(t=>{this.log.error(t)})}};var Ys=class extends Be{log;components;protocol;running;registrarId;constructor(e,t){super();let{protocol:n,logPrefix:s}=t;this.components=e,this.log=e.logger.forComponent(`${s}:topology-listener`),this.running=!1,this.protocol=n}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.registrarId=await this.components.registrar.register(this.protocol,{onConnect:e=>{this.log("observed peer %p with protocol %s",e,this.protocol),this.dispatchEvent(new Ne("peer",{detail:e}))}}))}async stop(){this.running=!1,this.registrarId!=null&&(this.components.registrar.unregister(this.registrarId),this.registrarId=void 0)}};var r2=class{dht;constructor(e){this.dht=e}async provide(e,t={}){await Xs(this.dht.provide(e,t))}async*findProviders(e,t={}){for await(let n of this.dht.findProviders(e,t))n.name==="PROVIDER"&&(yield*n.providers)}async put(e,t,n){await Xs(this.dht.put(e,t,n))}async get(e,t){for await(let n of this.dht.get(e,t))if(n.name==="VALUE")return n.value;throw new x("Not found","ERR_NOT_FOUND")}},n2=class{dht;constructor(e){this.dht=e}async findPeer(e,t={}){for await(let n of this.dht.findPeer(e,t))if(n.name==="FINAL_PEER")return n.peer;throw new x("Not found","ERR_NOT_FOUND")}async*getClosestPeers(e,t={}){for await(let n of this.dht.getClosestPeers(e,t))n.name==="FINAL_PEER"&&(yield n.peer)}},J7=32,ec=64,Ws=class extends Be{protocol;routingTable;providers;network;peerRouting;components;log;running;kBucketSize;clientMode;validators;selectors;queryManager;contentFetching;contentRouting;routingTableRefresh;rpc;topologyListener;querySelf;maxInboundStreams;maxOutboundStreams;dhtContentRouting;dhtPeerRouting;peerInfoMapper;constructor(e,t){super();let{kBucketSize:n,clientMode:s,validators:i,selectors:o,querySelfInterval:a,protocol:c,logPrefix:l,pingTimeout:f,pingConcurrency:u,maxInboundStreams:h,maxOutboundStreams:m,providers:p}=t,d=l??"libp2p:kad-dht";this.running=!1,this.components=e,this.log=e.logger.forComponent(d),this.protocol=c??x2,this.kBucketSize=n??20,this.clientMode=s??!0,this.maxInboundStreams=h??J7,this.maxOutboundStreams=m??ec,this.peerInfoMapper=t.peerInfoMapper??a1,this.routingTable=new Ds(e,{kBucketSize:n,pingTimeout:f,pingConcurrency:u,protocol:this.protocol,logPrefix:d}),this.providers=new Is(e,p??{}),this.validators={...i0,...i},this.selectors={...s0,...o},this.network=new vs(e,{protocol:this.protocol,logPrefix:d});let g=fe();t.allowQueryWithZeroPeers===!0&&g.resolve(),this.queryManager=new Ss(e,{disjointPaths:Math.ceil(this.kBucketSize/2),logPrefix:d,initialQuerySelfHasRun:g,routingTable:this.routingTable}),this.peerRouting=new As(e,{routingTable:this.routingTable,network:this.network,validators:this.validators,queryManager:this.queryManager,logPrefix:d}),this.contentFetching=new c1(e,{validators:this.validators,selectors:this.selectors,peerRouting:this.peerRouting,queryManager:this.queryManager,network:this.network,logPrefix:d}),this.contentRouting=new ms(e,{network:this.network,peerRouting:this.peerRouting,queryManager:this.queryManager,routingTable:this.routingTable,providers:this.providers,logPrefix:d}),this.routingTableRefresh=new Os(e,{peerRouting:this.peerRouting,routingTable:this.routingTable,logPrefix:d}),this.rpc=new js(e,{routingTable:this.routingTable,providers:this.providers,peerRouting:this.peerRouting,validators:this.validators,logPrefix:d,peerInfoMapper:this.peerInfoMapper}),this.topologyListener=new Ys(e,{protocol:this.protocol,logPrefix:d}),this.querySelf=new ks(e,{peerRouting:this.peerRouting,interval:a,initialInterval:t.initialQuerySelfInterval,logPrefix:d,initialQuerySelfHasRun:g,routingTable:this.routingTable}),this.network.addEventListener("peer",y=>{let v=y.detail;this.onPeerConnect(v).catch(b=>{this.log.error("could not add %p to routing table",v.id,b)}),this.dispatchEvent(new Ne("peer",{detail:v}))}),this.topologyListener.addEventListener("peer",y=>{let v=y.detail;Promise.resolve().then(async()=>{let b=await this.components.peerStore.get(v),S={id:v,multiaddrs:b.addresses.map(({multiaddr:E})=>E),protocols:b.protocols};await this.onPeerConnect(S)}).catch(b=>{this.log.error("could not add %p to routing table",v,b)})}),this.dhtPeerRouting=new n2(this),this.dhtContentRouting=new r2(this),t.clientMode==null&&e.events.addEventListener("self:peer:update",y=>{this.log("received update of self-peer info"),Promise.resolve().then(async()=>{let v=y.detail.peer.addresses.some(({multiaddr:S})=>w0(S)),b=this.getMode();v&&b==="client"?await this.setMode("server"):b==="server"&&!v&&await this.setMode("client")}).catch(v=>{this.log.error("error setting dht server mode",v)})})}get[p2](){return this.dhtContentRouting}get[y2](){return this.dhtPeerRouting}get[g2](){return this}async onPeerConnect(e){if(this.log("peer %p connected",e.id),e=this.peerInfoMapper(e),e.multiaddrs.length===0){this.log("ignoring %p as there were no valid addresses in %s after filtering",e.id,e.multiaddrs.map(t=>t.toString()));return}try{await this.routingTable.add(e.id)}catch(t){this.log.error("could not add %p to routing table",e.id,t)}}isStarted(){return this.running}getMode(){return this.clientMode?"client":"server"}async setMode(e){await this.components.registrar.unhandle(this.protocol),e==="client"?(this.log("enabling client mode"),this.clientMode=!0):(this.log("enabling server mode"),this.clientMode=!1,await this.components.registrar.handle(this.protocol,this.rpc.onIncomingStream.bind(this.rpc),{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}))}async start(){this.running=!0,await this.setMode(this.clientMode?"client":"server"),await w2(this.querySelf,this.providers,this.queryManager,this.network,this.routingTable,this.topologyListener,this.routingTableRefresh)}async stop(){this.running=!1,await v2(this.querySelf,this.providers,this.queryManager,this.network,this.routingTable,this.routingTableRefresh,this.topologyListener)}async*put(e,t,n={}){yield*this.contentFetching.put(e,t,n)}async*get(e,t={}){yield*this.contentFetching.get(e,t)}async*provide(e,t={}){yield*this.contentRouting.provide(e,this.components.addressManager.getAddresses(),t)}async*findProviders(e,t={}){yield*this.contentRouting.findProviders(e,t)}async*findPeer(e,t={}){yield*this.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t={}){yield*this.peerRouting.getClosestPeers(e,t)}async refreshRoutingTable(){this.routingTableRefresh.refreshTable(!0)}};var s2;(function(r){r[r.SEND_QUERY=0]="SEND_QUERY",r[r.PEER_RESPONSE=1]="PEER_RESPONSE",r[r.FINAL_PEER=2]="FINAL_PEER",r[r.QUERY_ERROR=3]="QUERY_ERROR",r[r.PROVIDER=4]="PROVIDER",r[r.VALUE=5]="VALUE",r[r.ADD_PEER=6]="ADD_PEER",r[r.DIAL_PEER=7]="DIAL_PEER"})(s2||(s2={}));function tc(r){return e=>new Ws(e,r)}return a5(rc);})();
6
+ `)}`:`${t} :`}};d3=Wt;R.Constructed=d3;Wt.NAME="CONSTRUCTED";var C1=class extends Re{fromBER(e,t,n){return t}toBER(e){return et}};C1.override="EndOfContentValueBlock";var p3,D1=class extends Ee{constructor(e={}){super(e,C1),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};p3=D1;R.EndOfContent=p3;D1.NAME=kn;var g3,Zt=class extends Ee{constructor(e={}){super(e,Re),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(e,t,n){return this.lenBlock.length>0&&this.warnings.push("Non-zero length of value block for Null type"),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=n,t+n>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+n}toBER(e,t){let n=new ArrayBuffer(2);if(!e){let s=new Uint8Array(n);s[0]=5,s[1]=0}return t&&t.write(n),n}onAsciiEncoding(){return`${this.constructor.NAME}`}};g3=Zt;R.Null=g3;Zt.NAME="NULL";var U1=class extends Nt(Re){constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=H.BufferSourceConverter.toUint8Array(t.valueHex):this.valueHexView=new Uint8Array(1),e&&(this.value=e)}get value(){for(let e of this.valueHexView)if(e>0)return!0;return!1}set value(e){this.valueHexView[0]=e?255:0}fromBER(e,t,n){let s=H.BufferSourceConverter.toUint8Array(e);return kt(this,s,t,n)?(this.valueHexView=s.subarray(t,t+n),n>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,Ao.call(this),this.blockLength=n,t+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};U1.NAME="BooleanValueBlock";var m3,O1=class extends Ee{constructor(e={}){super(e,U1),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}};m3=O1;R.Boolean=m3;O1.NAME="BOOLEAN";var V1=class extends Nt(lt){constructor({isConstructed:e=!1,...t}={}){super(t),this.isConstructed=e}fromBER(e,t,n){let s=0;if(this.isConstructed){if(this.isHexOnly=!1,s=lt.prototype.fromBER.call(this,e,t,n),s===-1)return s;for(let i=0;i<this.value.length;i++){let o=this.value[i].constructor.NAME;if(o===kn){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(o!==l3)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,s=super.fromBER(e,t,n),this.blockLength=n;return s}toBER(e,t){return this.isConstructed?lt.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};V1.NAME="OctetStringValueBlock";var y3,St=class r extends Ee{constructor({idBlock:e={},lenBlock:t={},...n}={}){var s,i;(s=n.isConstructed)!==null&&s!==void 0||(n.isConstructed=!!(!((i=n.value)===null||i===void 0)&&i.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},V1),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(e,t,n){if(this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,n===0)return this.idBlock.error.length===0&&(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length===0&&(this.blockLength+=this.lenBlock.blockLength),t;if(!this.valueBlock.isConstructed){let i=(e instanceof ArrayBuffer?new Uint8Array(e):e).subarray(t,t+n);try{if(i.byteLength){let o=hs(i,0,i.byteLength);o.offset!==-1&&o.offset===n&&(this.valueBlock.value=[o.result])}}catch{}}return super.fromBER(e,t,n)}onAsciiEncoding(){return this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length?Wt.prototype.onAsciiEncoding.call(this):`${this.constructor.NAME} : ${H.Convert.ToHex(this.valueBlock.valueHexView)}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;let e=[];for(let t of this.valueBlock.value)t instanceof r&&e.push(t.valueBlock.valueHexView);return H.BufferSourceConverter.concat(e)}};y3=St;R.OctetString=y3;St.NAME=l3;var F1=class extends Nt(lt){constructor({unusedBits:e=0,isConstructed:t=!1,...n}={}){super(n),this.unusedBits=e,this.isConstructed=t,this.blockLength=this.valueHexView.byteLength}fromBER(e,t,n){if(!n)return t;let s=-1;if(this.isConstructed){if(s=lt.prototype.fromBER.call(this,e,t,n),s===-1)return s;for(let a of this.value){let c=a.constructor.NAME;if(c===kn){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(c!==u3)return this.error="BIT STRING may consists of BIT STRINGs only",-1;let l=a.valueBlock;if(this.unusedBits>0&&l.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=l.unusedBits}return s}let i=H.BufferSourceConverter.toUint8Array(e);if(!kt(this,i,t,n))return-1;let o=i.subarray(t,t+n);if(this.unusedBits=o[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;if(!this.unusedBits){let a=o.subarray(1);try{if(a.byteLength){let c=hs(a,0,a.byteLength);c.offset!==-1&&c.offset===n-1&&(this.value=[c.result])}}catch{}}return this.valueHexView=o.subarray(1),this.blockLength=o.length,t+n}toBER(e,t){if(this.isConstructed)return lt.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength)return et;let n=new Uint8Array(this.valueHexView.length+1);return n[0]=this.unusedBits,n.set(this.valueHexView,1),n.buffer}toJSON(){return{...super.toJSON(),unusedBits:this.unusedBits,isConstructed:this.isConstructed}}};F1.NAME="BitStringValueBlock";var b3,Xr=class extends Ee{constructor({idBlock:e={},lenBlock:t={},...n}={}){var s,i;(s=n.isConstructed)!==null&&s!==void 0||(n.isConstructed=!!(!((i=n.value)===null||i===void 0)&&i.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},F1),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(e,t,n){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(e,t,n)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return Wt.prototype.onAsciiEncoding.call(this);{let e=[],t=this.valueBlock.valueHexView;for(let s of t)e.push(s.toString(2).padStart(8,"0"));let n=e.join("");return`${this.constructor.NAME} : ${n.substring(0,n.length-this.valueBlock.unusedBits)}`}}};b3=Xr;R.BitString=b3;Xr.NAME=u3;var w3;function L8(r,e){let t=new Uint8Array([0]),n=new Uint8Array(r),s=new Uint8Array(e),i=n.slice(0),o=i.length-1,a=s.slice(0),c=a.length-1,l=0,f=c<o?o:c,u=0;for(let h=f;h>=0;h--,u++){switch(!0){case u<a.length:l=i[o-u]+a[c-u]+t[0];break;default:l=i[o-u]+t[0]}switch(t[0]=l/10,!0){case u>=i.length:i=R1(new Uint8Array([l%10]),i);break;default:i[o-u]=l%10}}return t[0]>0&&(i=R1(t,i)),i}function c3(r){if(r>=Sn.length)for(let e=Sn.length;e<=r;e++){let t=new Uint8Array([0]),n=Sn[e-1].slice(0);for(let s=n.length-1;s>=0;s--){let i=new Uint8Array([(n[s]<<1)+t[0]]);t[0]=i[0]/10,n[s]=i[0]%10}t[0]>0&&(n=R1(t,n)),Sn.push(n)}return Sn[r]}function P8(r,e){let t=0,n=new Uint8Array(r),s=new Uint8Array(e),i=n.slice(0),o=i.length-1,a=s.slice(0),c=a.length-1,l,f=0;for(let u=c;u>=0;u--,f++)switch(l=i[o-f]-a[c-f]-t,!0){case l<0:t=1,i[o-f]=l+10;break;default:t=0,i[o-f]=l}if(t>0)for(let u=o-c+1;u>=0;u--,f++)if(l=i[o-f]-t,l<0)t=1,i[o-f]=l+10;else{t=0,i[o-f]=l;break}return i.slice()}var Nn=class extends Nt(Re){constructor({value:e,...t}={}){super(t),this._valueDec=0,t.valueHex&&this.setValueHex(),e!==void 0&&(this.valueDec=e)}setValueHex(){this.valueHexView.length>=4?(this.warnings.push("Too big Integer for decoding, hex only"),this.isHexOnly=!0,this._valueDec=0):(this.isHexOnly=!1,this.valueHexView.length>0&&(this._valueDec=Ao.call(this)))}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(i3(e))}get valueDec(){return this._valueDec}fromDER(e,t,n,s=0){let i=this.fromBER(e,t,n);if(i===-1)return i;let o=this.valueHexView;return o[0]===0&&o[1]&128?this.valueHexView=o.subarray(1):s!==0&&o.length<s&&(s-o.length>1&&(s=o.length+1),this.valueHexView=o.subarray(s-o.length)),i}toDER(e=!1){let t=this.valueHexView;switch(!0){case(t[0]&128)!==0:{let n=new Uint8Array(this.valueHexView.length+1);n[0]=0,n.set(t,1),this.valueHexView=n}break;case(t[0]===0&&(t[1]&128)===0):this.valueHexView=this.valueHexView.subarray(1);break}return this.toBER(e)}fromBER(e,t,n){let s=super.fromBER(e,t,n);return s===-1||this.setValueHex(),s}toBER(e){return e?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){let e=this.valueHexView.length*8-1,t=new Uint8Array(this.valueHexView.length*8/3),n=0,s,i=this.valueHexView,o="",a=!1;for(let c=i.byteLength-1;c>=0;c--){s=i[c];for(let l=0;l<8;l++){if((s&1)===1)switch(n){case e:t=P8(c3(n),t),o="-";break;default:t=L8(t,c3(n))}n++,s>>=1}}for(let c=0;c<t.length;c++)t[c]&&(a=!0),a&&(o+=a3.charAt(t[c]));return a===!1&&(o+=a3.charAt(0)),o}};w3=Nn;Nn.NAME="IntegerValueBlock";Object.defineProperty(w3.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var v3,de=class r extends Ee{constructor(e={}){super(e,Nn),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return k1(),BigInt(this.valueBlock.toString())}static fromBigInt(e){k1();let t=BigInt(e),n=new Rn,s=t.toString(16).replace(/^-/,""),i=new Uint8Array(H.Convert.FromHex(s));if(t<0){let a=new Uint8Array(i.length+(i[0]&128?1:0));a[0]|=128;let l=BigInt(`0x${H.Convert.ToHex(a)}`)+t,f=H.BufferSourceConverter.toUint8Array(H.Convert.FromHex(l.toString(16)));f[0]|=128,n.write(f)}else i[0]&128&&n.write(new Uint8Array([0])),n.write(i);return new r({valueHex:n.final()})}convertToDER(){let e=new r({valueHex:this.valueBlock.valueHexView});return e.valueBlock.toDER(),e}convertFromDER(){return new r({valueHex:this.valueBlock.valueHexView[0]===0?this.valueBlock.valueHexView.subarray(1):this.valueBlock.valueHexView})}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()}`}};v3=de;R.Integer=v3;de.NAME="INTEGER";var x3,M1=class extends de{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};x3=M1;R.Enumerated=x3;M1.NAME="ENUMERATED";var Tn=class extends Nt(Re){constructor({valueDec:e=-1,isFirstSid:t=!1,...n}={}){super(n),this.valueDec=e,this.isFirstSid=t}fromBER(e,t,n){if(!n)return t;let s=H.BufferSourceConverter.toUint8Array(e);if(!kt(this,s,t,n))return-1;let i=s.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=i[a]&127,this.blockLength++,!!(i[a]&128));a++);let o=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)o[a]=this.valueHexView[a];return this.valueHexView=o,i[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=hr(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){k1();let t=BigInt(e).toString(2);for(;t.length%7;)t="0"+t;let n=new Uint8Array(t.length/7);for(let s=0;s<n.length;s++)n[s]=parseInt(t.slice(s*7,s*7+7),2)+(s+1<n.length?128:0);this.fromBER(n.buffer,0,n.length)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let s=this.valueHexView,i=new Uint8Array(this.blockLength);for(let o=0;o<this.blockLength-1;o++)i[o]=s[o]|128;return i[this.blockLength-1]=s[this.blockLength-1],i.buffer}let t=Yt(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",et;let n=new Uint8Array(t.byteLength);if(!e){let s=new Uint8Array(t),i=t.byteLength-1;for(let o=0;o<i;o++)n[o]=s[o]|128;n[i]=s[i]}return n}toString(){let e="";if(this.isHexOnly)e=H.Convert.ToHex(this.valueHexView);else if(this.isFirstSid){let t=this.valueDec;this.valueDec<=39?e="0.":this.valueDec<=79?(e="1.",t-=40):(e="2.",t-=80),e+=t.toString()}else e=this.valueDec.toString();return e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}};Tn.NAME="sidBlock";var H1=class extends Re{constructor({value:e=Jr,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let s=t;for(;n>0;){let i=new Tn;if(s=i.fromBER(e,s,n),s===-1)return this.blockLength=0,this.error=i.error,s;this.value.length===0&&(i.isFirstSid=!0),this.blockLength+=i.blockLength,n-=i.blockLength,this.value.push(i)}return s}toBER(e){let t=[];for(let n=0;n<this.value.length;n++){let s=this.value[n].toBER(e);if(s.byteLength===0)return this.error=this.value[n].error,et;t.push(s)}return Bo(t)}fromString(e){this.value=[];let t=0,n=0,s="",i=!1;do if(n=e.indexOf(".",t),n===-1?s=e.substring(t):s=e.substring(t,n),t=n+1,i){let o=this.value[0],a=0;switch(o.valueDec){case 0:break;case 1:a=40;break;case 2:a=80;break;default:this.value=[];return}let c=parseInt(s,10);if(isNaN(c))return;o.valueDec=c+a,i=!1}else{let o=new Tn;if(s>Number.MAX_SAFE_INTEGER){k1();let a=BigInt(s);o.valueBigInt=a}else if(o.valueDec=parseInt(s,10),isNaN(o.valueDec))return;this.value.length||(o.isFirstSid=!0,i=!0),this.value.push(o)}while(n!==-1)}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let s=this.value[n].toString();n!==0&&(e=`${e}.`),t?(s=`{${s}}`,this.value[n].isFirstSid?e=`2.{${s} - 80}`:e+=s):e+=s}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};H1.NAME="ObjectIdentifierValueBlock";var E3,Je=class extends Ee{constructor(e={}){super(e,H1),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};E3=Je;R.ObjectIdentifier=E3;Je.NAME="OBJECT IDENTIFIER";var _n=class extends Nt(It){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,n){if(n===0)return t;let s=H.BufferSourceConverter.toUint8Array(e);if(!kt(this,s,t,n))return-1;let i=s.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=i[a]&127,this.blockLength++,!!(i[a]&128));a++);let o=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)o[a]=this.valueHexView[a];return this.valueHexView=o,i[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=hr(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let s=this.valueHexView,i=new Uint8Array(this.blockLength);for(let o=0;o<this.blockLength-1;o++)i[o]=s[o]|128;return i[this.blockLength-1]=s[this.blockLength-1],i.buffer}let t=Yt(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",et;let n=new Uint8Array(t.byteLength);if(!e){let s=new Uint8Array(t),i=t.byteLength-1;for(let o=0;o<i;o++)n[o]=s[o]|128;n[i]=s[i]}return n.buffer}toString(){let e="";return this.isHexOnly?e=H.Convert.ToHex(this.valueHexView):e=this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};_n.NAME="relativeSidBlock";var K1=class extends Re{constructor({value:e=Jr,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let s=t;for(;n>0;){let i=new _n;if(s=i.fromBER(e,s,n),s===-1)return this.blockLength=0,this.error=i.error,s;this.blockLength+=i.blockLength,n-=i.blockLength,this.value.push(i)}return s}toBER(e,t){let n=[];for(let s=0;s<this.value.length;s++){let i=this.value[s].toBER(e);if(i.byteLength===0)return this.error=this.value[s].error,et;n.push(i)}return Bo(n)}fromString(e){this.value=[];let t=0,n=0,s="";do{n=e.indexOf(".",t),n===-1?s=e.substring(t):s=e.substring(t,n),t=n+1;let i=new _n;if(i.valueDec=parseInt(s,10),isNaN(i.valueDec))return!0;this.value.push(i)}while(n!==-1);return!0}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let s=this.value[n].toString();n!==0&&(e=`${e}.`),t&&(s=`{${s}}`),e+=s}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};K1.NAME="RelativeObjectIdentifierValueBlock";var A3,q1=class extends Ee{constructor(e={}){super(e,K1),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};A3=q1;R.RelativeObjectIdentifier=A3;q1.NAME="RelativeObjectIdentifier";var B3,we=class extends Wt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};B3=we;R.Sequence=B3;we.NAME="SEQUENCE";var I3,$1=class extends Wt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};I3=$1;R.Set=I3;$1.NAME="SET";var z1=class extends Nt(Re){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=Jr}toJSON(){return{...super.toJSON(),value:this.value}}};z1.NAME="StringValueBlock";var G1=class extends z1{};G1.NAME="SimpleStringValueBlock";var Le=class extends _1{constructor({...e}={}){super(e,G1)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,H.BufferSourceConverter.toUint8Array(e))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t);for(let s=0;s<t;s++)n[s]=e.charCodeAt(s);this.valueBlock.value=e}};Le.NAME="SIMPLE STRING";var j1=class extends Le{fromBuffer(e){this.valueBlock.valueHexView=H.BufferSourceConverter.toUint8Array(e);try{this.valueBlock.value=H.Convert.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=H.Convert.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(H.Convert.FromUtf8String(e)),this.valueBlock.value=e}};j1.NAME="Utf8StringValueBlock";var S3,Rt=class extends j1{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};S3=Rt;R.Utf8String=S3;Rt.NAME="UTF8String";var Y1=class extends Le{fromBuffer(e){this.valueBlock.value=H.Convert.ToUtf16String(e),this.valueBlock.valueHexView=H.BufferSourceConverter.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(H.Convert.FromUtf16String(e))}};Y1.NAME="BmpStringValueBlock";var R3,W1=class extends Y1{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};R3=W1;R.BmpString=R3;W1.NAME="BMPString";var Z1=class extends Le{fromBuffer(e){let t=ArrayBuffer.isView(e)?e.slice().buffer:e.slice(0),n=new Uint8Array(t);for(let s=0;s<n.length;s+=4)n[s]=n[s+3],n[s+1]=n[s+2],n[s+2]=0,n[s+3]=0;this.valueBlock.value=String.fromCharCode.apply(null,new Uint32Array(t))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t*4);for(let s=0;s<t;s++){let i=Yt(e.charCodeAt(s),8),o=new Uint8Array(i);if(o.length>4)continue;let a=4-o.length;for(let c=o.length-1;c>=0;c--)n[s*4+c+a]=o[c]}this.valueBlock.value=e}};Z1.NAME="UniversalStringValueBlock";var k3,Q1=class extends Z1{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};k3=Q1;R.UniversalString=k3;Q1.NAME="UniversalString";var N3,X1=class extends Le{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};N3=X1;R.NumericString=N3;X1.NAME="NumericString";var T3,J1=class extends Le{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};T3=J1;R.PrintableString=T3;J1.NAME="PrintableString";var _3,es=class extends Le{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};_3=es;R.TeletexString=_3;es.NAME="TeletexString";var L3,ts=class extends Le{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};L3=ts;R.VideotexString=L3;ts.NAME="VideotexString";var P3,rs=class extends Le{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};P3=rs;R.IA5String=P3;rs.NAME="IA5String";var C3,ns=class extends Le{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};C3=ns;R.GraphicString=C3;ns.NAME="GraphicString";var D3,Ln=class extends Le{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};D3=Ln;R.VisibleString=D3;Ln.NAME="VisibleString";var U3,ss=class extends Le{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};U3=ss;R.GeneralString=U3;ss.NAME="GeneralString";var O3,is=class extends Le{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};O3=is;R.CharacterString=O3;is.NAME="CharacterString";var V3,Pn=class extends Ln{constructor({value:e,valueDate:t,...n}={}){if(super(n),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,e){this.fromString(e),this.valueBlock.valueHexView=new Uint8Array(e.length);for(let s=0;s<e.length;s++)this.valueBlock.valueHexView[s]=e.charCodeAt(s)}t&&(this.fromDate(t),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(e){this.fromString(String.fromCharCode.apply(null,H.BufferSourceConverter.toUint8Array(e)))}toBuffer(){let e=this.toString(),t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let s=0;s<e.length;s++)n[s]=e.charCodeAt(s);return t}fromDate(e){this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(e){let n=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/ig.exec(e);if(n===null){this.error="Wrong input string for conversion";return}let s=parseInt(n[1],10);s>=50?this.year=1900+s:this.year=2e3+s,this.month=parseInt(n[2],10),this.day=parseInt(n[3],10),this.hour=parseInt(n[4],10),this.minute=parseInt(n[5],10),this.second=parseInt(n[6],10)}toString(e="iso"){if(e==="iso"){let t=new Array(7);return t[0]=De(this.year<2e3?this.year-1900:this.year-2e3,2),t[1]=De(this.month,2),t[2]=De(this.day,2),t[3]=De(this.hour,2),t[4]=De(this.minute,2),t[5]=De(this.second,2),t[6]="Z",t.join("")}return super.toString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.toDate().toISOString()}`}toJSON(){return{...super.toJSON(),year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second}}};V3=Pn;R.UTCTime=V3;Pn.NAME="UTCTime";var F3,os=class extends Pn{constructor(e={}){var t;super(e),(t=this.millisecond)!==null&&t!==void 0||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(e){super.fromDate(e),this.millisecond=e.getUTCMilliseconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond))}fromString(e){let t=!1,n="",s="",i=0,o,a=0,c=0;if(e[e.length-1]==="Z")n=e.substring(0,e.length-1),t=!0;else{let u=new Number(e[e.length-1]);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");n=e}if(t){if(n.indexOf("+")!==-1)throw new Error("Wrong input string for conversion");if(n.indexOf("-")!==-1)throw new Error("Wrong input string for conversion")}else{let u=1,h=n.indexOf("+"),m="";if(h===-1&&(h=n.indexOf("-"),u=-1),h!==-1){if(m=n.substring(h+1),n=n.substring(0,h),m.length!==2&&m.length!==4)throw new Error("Wrong input string for conversion");let p=parseInt(m.substring(0,2),10);if(isNaN(p.valueOf()))throw new Error("Wrong input string for conversion");if(a=u*p,m.length===4){if(p=parseInt(m.substring(2,4),10),isNaN(p.valueOf()))throw new Error("Wrong input string for conversion");c=u*p}}}let l=n.indexOf(".");if(l===-1&&(l=n.indexOf(",")),l!==-1){let u=new Number(`0${n.substring(l)}`);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");i=u.valueOf(),s=n.substring(0,l)}else s=n;switch(!0){case s.length===8:if(o=/(\d{4})(\d{2})(\d{2})/ig,l!==-1)throw new Error("Wrong input string for conversion");break;case s.length===10:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=60*i;this.minute=Math.floor(u),u=60*(u-this.minute),this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case s.length===12:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=60*i;this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case s.length===14:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=1e3*i;this.millisecond=Math.floor(u)}break;default:throw new Error("Wrong input string for conversion")}let f=o.exec(s);if(f===null)throw new Error("Wrong input string for conversion");for(let u=1;u<f.length;u++)switch(u){case 1:this.year=parseInt(f[u],10);break;case 2:this.month=parseInt(f[u],10);break;case 3:this.day=parseInt(f[u],10);break;case 4:this.hour=parseInt(f[u],10)+a;break;case 5:this.minute=parseInt(f[u],10)+c;break;case 6:this.second=parseInt(f[u],10);break;default:throw new Error("Wrong input string for conversion")}if(t===!1){let u=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=u.getUTCFullYear(),this.month=u.getUTCMonth(),this.day=u.getUTCDay(),this.hour=u.getUTCHours(),this.minute=u.getUTCMinutes(),this.second=u.getUTCSeconds(),this.millisecond=u.getUTCMilliseconds()}}toString(e="iso"){if(e==="iso"){let t=[];return t.push(De(this.year,4)),t.push(De(this.month,2)),t.push(De(this.day,2)),t.push(De(this.hour,2)),t.push(De(this.minute,2)),t.push(De(this.second,2)),this.millisecond!==0&&(t.push("."),t.push(De(this.millisecond,3))),t.push("Z"),t.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};F3=os;R.GeneralizedTime=F3;os.NAME="GeneralizedTime";var M3,as=class extends Rt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};M3=as;R.DATE=M3;as.NAME="DATE";var H3,cs=class extends Rt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};H3=cs;R.TimeOfDay=H3;cs.NAME="TimeOfDay";var K3,ls=class extends Rt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};K3=ls;R.DateTime=K3;ls.NAME="DateTime";var q3,us=class extends Rt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};q3=us;R.Duration=q3;us.NAME="Duration";var $3,fs=class extends Rt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};$3=fs;R.TIME=$3;fs.NAME="TIME";function D8(r){let{result:e}=en(r),t=e.valueBlock.value;return{n:P(ut(t[1].toBigInt()),"base64url"),e:P(ut(t[2].toBigInt()),"base64url"),d:P(ut(t[3].toBigInt()),"base64url"),p:P(ut(t[4].toBigInt()),"base64url"),q:P(ut(t[5].toBigInt()),"base64url"),dp:P(ut(t[6].toBigInt()),"base64url"),dq:P(ut(t[7].toBigInt()),"base64url"),qi:P(ut(t[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function U8(r){if(r.n==null||r.e==null||r.d==null||r.p==null||r.q==null||r.dp==null||r.dq==null||r.qi==null)throw new x("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new we({value:[new de({value:0}),de.fromBigInt(ft(z(r.n,"base64url"))),de.fromBigInt(ft(z(r.e,"base64url"))),de.fromBigInt(ft(z(r.d,"base64url"))),de.fromBigInt(ft(z(r.p,"base64url"))),de.fromBigInt(ft(z(r.q,"base64url"))),de.fromBigInt(ft(z(r.dp,"base64url"))),de.fromBigInt(ft(z(r.dq,"base64url"))),de.fromBigInt(ft(z(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function O8(r){let{result:e}=en(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:P(ut(t[0].toBigInt()),"base64url"),e:P(ut(t[1].toBigInt()),"base64url")}}function V8(r){if(r.n==null||r.e==null)throw new x("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new we({value:[new we({value:[new Je({value:"1.2.840.113549.1.1.1"}),new Zt]}),new Xr({valueHex:new we({value:[de.fromBigInt(ft(z(r.n,"base64url"))),de.fromBigInt(ft(z(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function ut(r){let e=r.toString(16);e.length%2>0&&(e=`0${e}`);let t=e.length/2,n=new Uint8Array(t),s=0,i=0;for(;s<t;)n[s]=parseInt(e.slice(i,i+2),16),s+=1,i+=2;return n}function ft(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}var F8=16,So=32,Ro=1e4;async function M8(r,e){let t=ee.get(),s=new we({value:[new de({value:0}),new we({value:[new Je({value:"1.2.840.113549.1.1.1"}),new Zt]}),new St({valueHex:r.marshal()})]}).toBER(),i=new Uint8Array(s,0,s.byteLength),o=ct(F8),a=await xo($r,e,o,{c:Ro,dkLen:So}),c=ct(16),l=await t.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),f=await t.subtle.encrypt({name:"AES-CBC",iv:c},l,i),u=new we({value:[new St({valueHex:o}),new de({value:Ro}),new de({value:So}),new we({value:[new Je({value:"1.2.840.113549.2.11"}),new Zt]})]}),h=new we({value:[new Je({value:"1.2.840.113549.1.5.13"}),new we({value:[new we({value:[new Je({value:"1.2.840.113549.1.5.12"}),u]}),new we({value:[new Je({value:"2.16.840.1.101.3.4.1.42"}),new St({valueHex:c})]})]})]}),p=new we({value:[h,new St({valueHex:f})]}).toBER(),d=new Uint8Array(p,0,p.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...P(d,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
7
+ `)}async function ko(r,e){let t=ee.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let s=z(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:i}=en(s),{iv:o,salt:a,iterations:c,keySize:l,cipherText:f}=H8(i),u=await xo($r,e,a,{c,dkLen:l}),h=await t.subtle.importKey("raw",u,"AES-CBC",!1,["decrypt"]),m=Cn(await t.subtle.decrypt({name:"AES-CBC",iv:o},h,f)),{result:p}=en(m);n=z3(p)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let s=z(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:i}=en(s);n=z3(i)}else throw new x("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return No(n)}function H8(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new x("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new x("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let i=n.valueBlock.value[1],o=Cn(i.valueBlock.value[0].getValue()),a=Ro,c=So;if(i.valueBlock.value.length===3)a=Number(i.valueBlock.value[1].toBigInt()),c=Number(i.valueBlock.value[2].toBigInt());else if(i.valueBlock.value.length===2)throw new x("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let l=e.valueBlock.value[1].valueBlock.value[1],f=l.valueBlock.value[0].toString();if(f!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(f!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new x("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let u=Cn(l.valueBlock.value[1].getValue());return{cipherText:Cn(r.valueBlock.value[1].getValue()),salt:o,iterations:a,keySize:c,iv:u}}function z3(r){return Cn(r.valueBlock.value[2].getValue())}function Cn(r){return new Uint8Array(r,0,r.byteLength)}async function G3(r){let e=await ee.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await W3(e);return{privateKey:t[0],publicKey:t[1]}}async function To(r){let t=[await ee.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await K8(r)],n=await W3({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function j3(r,e){let t=await ee.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await ee.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function Y3(r,e,t){let n=await ee.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return ee.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function W3(r){if(r.privateKey==null||r.publicKey==null)throw new x("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([ee.get().subtle.exportKey("jwk",r.privateKey),ee.get().subtle.exportKey("jwk",r.publicKey)])}async function K8(r){return ee.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function ds(r){if(r.kty!=="RSA")throw new x("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new x("invalid key modulus","ERR_INVALID_KEY_MODULUS");return z(r.n,"base64url").length*8}var pr=8192,dr=class{_key;constructor(e){this._key=e}verify(e,t){return Y3(this._key,t,e)}marshal(){return Qt.jwkToPkix(this._key)}get bytes(){return Qe.encode({Type:X.RSA,Data:this.marshal()}).subarray()}equals(e){return Q(this.bytes,e.bytes)}hash(){let e=ne.digest(this.bytes);return $e(e)?e.then(({bytes:t})=>t):e.bytes}},Xt=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return ct(16)}sign(e){return j3(this._key,e)}get public(){if(this._publicKey==null)throw new x("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new dr(this._publicKey)}marshal(){return Qt.jwkToPkcs1(this._key)}get bytes(){return Xe.encode({Type:X.RSA,Data:this.marshal()}).subarray()}equals(e){return Q(this.bytes,e.bytes)}hash(){let e=ne.digest(this.bytes);return $e(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return P(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return Qt.exportToPem(this,e);if(t==="libp2p-key")return Yr(this.bytes,e);throw new x(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function No(r){let e=Qt.pkcs1ToJwk(r);if(ds(e)>pr)throw new x("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await To(e);return new Xt(t.privateKey,t.publicKey)}function $8(r){let e=Qt.pkixToJwk(r);if(ds(e)>pr)throw new x("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new dr(e)}async function z8(r){if(ds(r)>pr)throw new x("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await To(r);return new Xt(e.privateKey,e.publicKey)}async function G8(r){if(r>pr)throw new x("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await G3(r);return new Xt(e.privateKey,e.publicKey)}var Uo={};ue(Uo,{Secp256k1PrivateKey:()=>yr,Secp256k1PublicKey:()=>mr,generateKeyPair:()=>i7,unmarshalSecp256k1PrivateKey:()=>n7,unmarshalSecp256k1PublicKey:()=>s7});var j8=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Jt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),er=new Uint32Array(64),Lo=class extends qr{constructor(){super(64,32,8,!1),this.A=Jt[0]|0,this.B=Jt[1]|0,this.C=Jt[2]|0,this.D=Jt[3]|0,this.E=Jt[4]|0,this.F=Jt[5]|0,this.G=Jt[6]|0,this.H=Jt[7]|0}get(){let{A:e,B:t,C:n,D:s,E:i,F:o,G:a,H:c}=this;return[e,t,n,s,i,o,a,c]}set(e,t,n,s,i,o,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=s|0,this.E=i|0,this.F=o|0,this.G=a|0,this.H=c|0}process(e,t){for(let u=0;u<16;u++,t+=4)er[u]=e.getUint32(t,!1);for(let u=16;u<64;u++){let h=er[u-15],m=er[u-2],p=We(h,7)^We(h,18)^h>>>3,d=We(m,17)^We(m,19)^m>>>10;er[u]=d+er[u-7]+p+er[u-16]|0}let{A:n,B:s,C:i,D:o,E:a,F:c,G:l,H:f}=this;for(let u=0;u<64;u++){let h=We(a,6)^We(a,11)^We(a,25),m=f+h+R0(a,c,l)+j8[u]+er[u]|0,d=(We(n,2)^We(n,13)^We(n,22))+k0(n,s,i)|0;f=l,l=c,c=a,a=o+m|0,o=i,i=s,s=n,n=m+d|0}n=n+this.A|0,s=s+this.B|0,i=i+this.C|0,o=o+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,f=f+this.H|0,this.set(n,s,i,o,a,c,l,f)}roundClean(){er.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Z3=d1(()=>new Lo);function Y8(r){let e=Bn(r);at(e,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:t,Fp:n,a:s}=e;if(t){if(!n.eql(s,n.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if(typeof t!="object"||typeof t.beta!="bigint"||typeof t.splitScalar!="function")throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...e})}var{bytesToNumberBE:W8,hexToBytes:Z8}=m1,gr={Err:class extends Error{constructor(e=""){super(e)}},_parseInt(r){let{Err:e}=gr;if(r.length<2||r[0]!==2)throw new e("Invalid signature integer tag");let t=r[1],n=r.subarray(2,t+2);if(!t||n.length!==t)throw new e("Invalid signature integer: wrong length");if(n[0]&128)throw new e("Invalid signature integer: negative");if(n[0]===0&&!(n[1]&128))throw new e("Invalid signature integer: unnecessary leading zero");return{d:W8(n),l:r.subarray(t+2)}},toSig(r){let{Err:e}=gr,t=typeof r=="string"?Z8(r):r;zr(t);let n=t.length;if(n<2||t[0]!=48)throw new e("Invalid signature tag");if(t[1]!==n-2)throw new e("Invalid signature: incorrect length");let{d:s,l:i}=gr._parseInt(t.subarray(2)),{d:o,l:a}=gr._parseInt(i);if(a.length)throw new e("Invalid signature: left bytes after parsing");return{r:s,s:o}},hexFromSig(r){let e=l=>Number.parseInt(l[0],16)&8?"00"+l:l,t=l=>{let f=l.toString(16);return f.length&1?`0${f}`:f},n=e(t(r.s)),s=e(t(r.r)),i=n.length/2,o=s.length/2,a=t(i),c=t(o);return`30${t(o+i+4)}02${c}${s}02${a}${n}`}},Tt=BigInt(0),Ge=BigInt(1),Sh=BigInt(2),Q3=BigInt(3),Rh=BigInt(4);function Q8(r){let e=Y8(r),{Fp:t}=e,n=e.toBytes||((p,d,g)=>{let y=d.toAffine();return vt(Uint8Array.from([4]),t.toBytes(y.x),t.toBytes(y.y))}),s=e.fromBytes||(p=>{let d=p.subarray(1),g=t.fromBytes(d.subarray(0,t.BYTES)),y=t.fromBytes(d.subarray(t.BYTES,2*t.BYTES));return{x:g,y}});function i(p){let{a:d,b:g}=e,y=t.sqr(p),v=t.mul(y,p);return t.add(t.add(v,t.mul(p,d)),g)}if(!t.eql(t.sqr(e.Gy),i(e.Gx)))throw new Error("bad generator point: equation left != right");function o(p){return typeof p=="bigint"&&Tt<p&&p<e.n}function a(p){if(!o(p))throw new Error("Expected valid bigint: 0 < bigint < curve.n")}function c(p){let{allowedPrivateKeyLengths:d,nByteLength:g,wrapPrivateKey:y,n:v}=e;if(d&&typeof p!="bigint"){if(zt(p)&&(p=bt(p)),typeof p!="string"||!d.includes(p.length))throw new Error("Invalid key");p=p.padStart(g*2,"0")}let b;try{b=typeof p=="bigint"?p:wt(oe("private key",p,g))}catch{throw new Error(`private key must be ${g} bytes, hex or bigint, not ${typeof p}`)}return y&&(b=Z(b,v)),a(b),b}let l=new Map;function f(p){if(!(p instanceof u))throw new Error("ProjectivePoint expected")}class u{constructor(d,g,y){if(this.px=d,this.py=g,this.pz=y,d==null||!t.isValid(d))throw new Error("x required");if(g==null||!t.isValid(g))throw new Error("y required");if(y==null||!t.isValid(y))throw new Error("z required")}static fromAffine(d){let{x:g,y}=d||{};if(!d||!t.isValid(g)||!t.isValid(y))throw new Error("invalid affine point");if(d instanceof u)throw new Error("projective point not allowed");let v=b=>t.eql(b,t.ZERO);return v(g)&&v(y)?u.ZERO:new u(g,y,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(d){let g=t.invertBatch(d.map(y=>y.pz));return d.map((y,v)=>y.toAffine(g[v])).map(u.fromAffine)}static fromHex(d){let g=u.fromAffine(s(oe("pointHex",d)));return g.assertValidity(),g}static fromPrivateKey(d){return u.BASE.multiply(c(d))}_setWindowSize(d){this._WINDOW_SIZE=d,l.delete(this)}assertValidity(){if(this.is0()){if(e.allowInfinityPoint&&!t.is0(this.py))return;throw new Error("bad point: ZERO")}let{x:d,y:g}=this.toAffine();if(!t.isValid(d)||!t.isValid(g))throw new Error("bad point: x or y not FE");let y=t.sqr(g),v=i(d);if(!t.eql(y,v))throw new Error("bad point: equation left != right");if(!this.isTorsionFree())throw new Error("bad point: not in prime-order subgroup")}hasEvenY(){let{y:d}=this.toAffine();if(t.isOdd)return!t.isOdd(d);throw new Error("Field doesn't support isOdd")}equals(d){f(d);let{px:g,py:y,pz:v}=this,{px:b,py:S,pz:E}=d,I=t.eql(t.mul(g,E),t.mul(b,v)),N=t.eql(t.mul(y,E),t.mul(S,v));return I&&N}negate(){return new u(this.px,t.neg(this.py),this.pz)}double(){let{a:d,b:g}=e,y=t.mul(g,Q3),{px:v,py:b,pz:S}=this,E=t.ZERO,I=t.ZERO,N=t.ZERO,_=t.mul(v,v),j=t.mul(b,b),q=t.mul(S,S),U=t.mul(v,b);return U=t.add(U,U),N=t.mul(v,S),N=t.add(N,N),E=t.mul(d,N),I=t.mul(y,q),I=t.add(E,I),E=t.sub(j,I),I=t.add(j,I),I=t.mul(E,I),E=t.mul(U,E),N=t.mul(y,N),q=t.mul(d,q),U=t.sub(_,q),U=t.mul(d,U),U=t.add(U,N),N=t.add(_,_),_=t.add(N,_),_=t.add(_,q),_=t.mul(_,U),I=t.add(I,_),q=t.mul(b,S),q=t.add(q,q),_=t.mul(q,U),E=t.sub(E,_),N=t.mul(q,j),N=t.add(N,N),N=t.add(N,N),new u(E,I,N)}add(d){f(d);let{px:g,py:y,pz:v}=this,{px:b,py:S,pz:E}=d,I=t.ZERO,N=t.ZERO,_=t.ZERO,j=e.a,q=t.mul(e.b,Q3),U=t.mul(g,b),ce=t.mul(y,S),ae=t.mul(v,E),He=t.add(g,y),A=t.add(b,S);He=t.mul(He,A),A=t.add(U,ce),He=t.sub(He,A),A=t.add(g,v);let T=t.add(b,E);return A=t.mul(A,T),T=t.add(U,ae),A=t.sub(A,T),T=t.add(y,v),I=t.add(S,E),T=t.mul(T,I),I=t.add(ce,ae),T=t.sub(T,I),_=t.mul(j,A),I=t.mul(q,ae),_=t.add(I,_),I=t.sub(ce,_),_=t.add(ce,_),N=t.mul(I,_),ce=t.add(U,U),ce=t.add(ce,U),ae=t.mul(j,ae),A=t.mul(q,A),ce=t.add(ce,ae),ae=t.sub(U,ae),ae=t.mul(j,ae),A=t.add(A,ae),U=t.mul(ce,A),N=t.add(N,U),U=t.mul(T,A),I=t.mul(He,I),I=t.sub(I,U),U=t.mul(He,ce),_=t.mul(T,_),_=t.add(_,U),new u(I,N,_)}subtract(d){return this.add(d.negate())}is0(){return this.equals(u.ZERO)}wNAF(d){return m.wNAFCached(this,l,d,g=>{let y=t.invertBatch(g.map(v=>v.pz));return g.map((v,b)=>v.toAffine(y[b])).map(u.fromAffine)})}multiplyUnsafe(d){let g=u.ZERO;if(d===Tt)return g;if(a(d),d===Ge)return this;let{endo:y}=e;if(!y)return m.unsafeLadder(this,d);let{k1neg:v,k1:b,k2neg:S,k2:E}=y.splitScalar(d),I=g,N=g,_=this;for(;b>Tt||E>Tt;)b&Ge&&(I=I.add(_)),E&Ge&&(N=N.add(_)),_=_.double(),b>>=Ge,E>>=Ge;return v&&(I=I.negate()),S&&(N=N.negate()),N=new u(t.mul(N.px,y.beta),N.py,N.pz),I.add(N)}multiply(d){a(d);let g=d,y,v,{endo:b}=e;if(b){let{k1neg:S,k1:E,k2neg:I,k2:N}=b.splitScalar(g),{p:_,f:j}=this.wNAF(E),{p:q,f:U}=this.wNAF(N);_=m.constTimeNegate(S,_),q=m.constTimeNegate(I,q),q=new u(t.mul(q.px,b.beta),q.py,q.pz),y=_.add(q),v=j.add(U)}else{let{p:S,f:E}=this.wNAF(g);y=S,v=E}return u.normalizeZ([y,v])[0]}multiplyAndAddUnsafe(d,g,y){let v=u.BASE,b=(E,I)=>I===Tt||I===Ge||!E.equals(v)?E.multiplyUnsafe(I):E.multiply(I),S=b(this,g).add(b(d,y));return S.is0()?void 0:S}toAffine(d){let{px:g,py:y,pz:v}=this,b=this.is0();d==null&&(d=b?t.ONE:t.inv(v));let S=t.mul(g,d),E=t.mul(y,d),I=t.mul(v,d);if(b)return{x:t.ZERO,y:t.ZERO};if(!t.eql(I,t.ONE))throw new Error("invZ was invalid");return{x:S,y:E}}isTorsionFree(){let{h:d,isTorsionFree:g}=e;if(d===Ge)return!0;if(g)return g(u,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:d,clearCofactor:g}=e;return d===Ge?this:g?g(u,this):this.multiplyUnsafe(e.h)}toRawBytes(d=!0){return this.assertValidity(),n(u,this,d)}toHex(d=!0){return bt(this.toRawBytes(d))}}u.BASE=new u(e.Gx,e.Gy,t.ONE),u.ZERO=new u(t.ZERO,t.ONE,t.ZERO);let h=e.nBitLength,m=w1(u,e.endo?Math.ceil(h/2):h);return{CURVE:e,ProjectivePoint:u,normPrivateKeyToScalar:c,weierstrassEquation:i,isWithinCurveOrder:o}}function X8(r){let e=Bn(r);return at(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function X3(r){let e=X8(r),{Fp:t,n}=e,s=t.BYTES+1,i=2*t.BYTES+1;function o(A){return Tt<A&&A<t.ORDER}function a(A){return Z(A,n)}function c(A){return y1(A,n)}let{ProjectivePoint:l,normPrivateKeyToScalar:f,weierstrassEquation:u,isWithinCurveOrder:h}=Q8({...e,toBytes(A,T,O){let B=T.toAffine(),w=t.toBytes(B.x),k=vt;return O?k(Uint8Array.from([T.hasEvenY()?2:3]),w):k(Uint8Array.from([4]),w,t.toBytes(B.y))},fromBytes(A){let T=A.length,O=A[0],B=A.subarray(1);if(T===s&&(O===2||O===3)){let w=wt(B);if(!o(w))throw new Error("Point is not on curve");let k=u(w),L;try{L=t.sqrt(k)}catch(F){let G=F instanceof Error?": "+F.message:"";throw new Error("Point is not on curve"+G)}let C=(L&Ge)===Ge;return(O&1)===1!==C&&(L=t.neg(L)),{x:w,y:L}}else if(T===i&&O===4){let w=t.fromBytes(B.subarray(0,t.BYTES)),k=t.fromBytes(B.subarray(t.BYTES,2*t.BYTES));return{x:w,y:k}}else throw new Error(`Point of length ${T} was invalid. Expected ${s} compressed bytes or ${i} uncompressed bytes`)}}),m=A=>bt(jt(A,e.nByteLength));function p(A){let T=n>>Ge;return A>T}function d(A){return p(A)?a(-A):A}let g=(A,T,O)=>wt(A.slice(T,O));class y{constructor(T,O,B){this.r=T,this.s=O,this.recovery=B,this.assertValidity()}static fromCompact(T){let O=e.nByteLength;return T=oe("compactSignature",T,O*2),new y(g(T,0,O),g(T,O,2*O))}static fromDER(T){let{r:O,s:B}=gr.toSig(oe("DER",T));return new y(O,B)}assertValidity(){if(!h(this.r))throw new Error("r must be 0 < r < CURVE.n");if(!h(this.s))throw new Error("s must be 0 < s < CURVE.n")}addRecoveryBit(T){return new y(this.r,this.s,T)}recoverPublicKey(T){let{r:O,s:B,recovery:w}=this,k=N(oe("msgHash",T));if(w==null||![0,1,2,3].includes(w))throw new Error("recovery id invalid");let L=w===2||w===3?O+e.n:O;if(L>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");let C=w&1?"03":"02",V=l.fromHex(C+m(L)),F=c(L),G=a(-k*F),K=a(B*F),$=l.BASE.multiplyAndAddUnsafe(V,G,K);if(!$)throw new Error("point at infinify");return $.assertValidity(),$}hasHighS(){return p(this.s)}normalizeS(){return this.hasHighS()?new y(this.r,a(-this.s),this.recovery):this}toDERRawBytes(){return cr(this.toDERHex())}toDERHex(){return gr.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return cr(this.toCompactHex())}toCompactHex(){return m(this.r)+m(this.s)}}let v={isValidPrivateKey(A){try{return f(A),!0}catch{return!1}},normPrivateKeyToScalar:f,randomPrivateKey:()=>{let A=uo(e.n);return F0(e.randomBytes(A),e.n)},precompute(A=8,T=l.BASE){return T._setWindowSize(A),T.multiply(BigInt(3)),T}};function b(A,T=!0){return l.fromPrivateKey(A).toRawBytes(T)}function S(A){let T=zt(A),O=typeof A=="string",B=(T||O)&&A.length;return T?B===s||B===i:O?B===2*s||B===2*i:A instanceof l}function E(A,T,O=!0){if(S(A))throw new Error("first arg must be private key");if(!S(T))throw new Error("second arg must be public key");return l.fromHex(T).multiply(f(A)).toRawBytes(O)}let I=e.bits2int||function(A){let T=wt(A),O=A.length*8-e.nBitLength;return O>0?T>>BigInt(O):T},N=e.bits2int_modN||function(A){return a(I(A))},_=An(e.nBitLength);function j(A){if(typeof A!="bigint")throw new Error("bigint expected");if(!(Tt<=A&&A<_))throw new Error(`bigint expected < 2^${e.nBitLength}`);return jt(A,e.nByteLength)}function q(A,T,O=U){if(["recovered","canonical"].some(se=>se in O))throw new Error("sign() legacy options not supported");let{hash:B,randomBytes:w}=e,{lowS:k,prehash:L,extraEntropy:C}=O;k==null&&(k=!0),A=oe("msgHash",A),L&&(A=oe("prehashed msgHash",B(A)));let V=N(A),F=f(T),G=[j(F),j(V)];if(C!=null&&C!==!1){let se=C===!0?w(t.BYTES):C;G.push(oe("extraEntropy",se))}let K=vt(...G),$=V;function le(se){let ve=I(se);if(!h(ve))return;let xe=c(ve),pe=l.BASE.multiply(ve).toAffine(),Ae=a(pe.x);if(Ae===Tt)return;let ht=a(xe*a($+Ae*F));if(ht===Tt)return;let rr=(pe.x===Ae?0:2)|Number(pe.y&Ge),an=ht;return k&&p(ht)&&(an=d(ht),rr^=1),new y(Ae,an,rr)}return{seed:K,k2sig:le}}let U={lowS:e.lowS,prehash:!1},ce={lowS:e.lowS,prehash:!1};function ae(A,T,O=U){let{seed:B,k2sig:w}=q(A,T,O),k=e;return oo(k.hash.outputLen,k.nByteLength,k.hmac)(B,w)}l.BASE._setWindowSize(8);function He(A,T,O,B=ce){let w=A;if(T=oe("msgHash",T),O=oe("publicKey",O),"strict"in B)throw new Error("options.strict was renamed to lowS");let{lowS:k,prehash:L}=B,C,V;try{if(typeof w=="string"||zt(w))try{C=y.fromDER(w)}catch(pe){if(!(pe instanceof gr.Err))throw pe;C=y.fromCompact(w)}else if(typeof w=="object"&&typeof w.r=="bigint"&&typeof w.s=="bigint"){let{r:pe,s:Ae}=w;C=new y(pe,Ae)}else throw new Error("PARSE");V=l.fromHex(O)}catch(pe){if(pe.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(k&&C.hasHighS())return!1;L&&(T=e.hash(T));let{r:F,s:G}=C,K=N(T),$=c(G),le=a(K*$),se=a(F*$),ve=l.BASE.multiplyAndAddUnsafe(V,le,se)?.toAffine();return ve?a(ve.x)===F:!1}return{CURVE:e,getPublicKey:b,getSharedSecret:E,sign:ae,verify:He,ProjectivePoint:l,Signature:y,utils:v}}function J8(r){return{hash:r,hmac:(e,...t)=>In(r,e,h1(...t)),randomBytes:Kr}}function J3(r,e){let t=n=>X3({...r,...J8(n)});return Object.freeze({...t(e),create:t})}var r4=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),e4=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),e7=BigInt(1),Po=BigInt(2),t4=(r,e)=>(r+e/Po)/e;function t7(r){let e=r4,t=BigInt(3),n=BigInt(6),s=BigInt(11),i=BigInt(22),o=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%e,f=l*l*r%e,u=re(f,t,e)*f%e,h=re(u,t,e)*f%e,m=re(h,Po,e)*l%e,p=re(m,s,e)*m%e,d=re(p,i,e)*p%e,g=re(d,a,e)*d%e,y=re(g,c,e)*g%e,v=re(y,a,e)*d%e,b=re(v,t,e)*f%e,S=re(b,o,e)*p%e,E=re(S,n,e)*l%e,I=re(E,Po,e);if(!Co.eql(Co.sqr(I),r))throw new Error("Cannot find square root");return I}var Co=b1(r4,void 0,void 0,{sqrt:t7}),tt=J3({a:BigInt(0),b:BigInt(7),Fp:Co,n:e4,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let e=e4,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-e7*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),s=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),i=t,o=BigInt("0x100000000000000000000000000000000"),a=t4(i*r,e),c=t4(-n*r,e),l=Z(r-a*t-c*s,e),f=Z(-a*n-c*i,e),u=l>o,h=f>o;if(u&&(l=e-l),h&&(f=e-f),l>o||f>o)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:u,k1:l,k2neg:h,k2:f}}}},Z3),Uh=BigInt(0);var Oh=tt.ProjectivePoint;function n4(){return tt.utils.randomPrivateKey()}function s4(r,e){let t=ne.digest(e instanceof Uint8Array?e:e.subarray());if($e(t))return t.then(({digest:n})=>tt.sign(n,r).toDERRawBytes()).catch(n=>{throw new x(String(n),"ERR_INVALID_INPUT")});try{return tt.sign(t.digest,r).toDERRawBytes()}catch(n){throw new x(String(n),"ERR_INVALID_INPUT")}}function i4(r,e,t){let n=ne.digest(t instanceof Uint8Array?t:t.subarray());if($e(n))return n.then(({digest:s})=>tt.verify(e,s,r)).catch(s=>{throw new x(String(s),"ERR_INVALID_INPUT")});try{return tt.verify(e,n.digest,r)}catch(s){throw new x(String(s),"ERR_INVALID_INPUT")}}function o4(r){return tt.ProjectivePoint.fromHex(r).toRawBytes(!0)}function a4(r){try{tt.getPublicKey(r,!0)}catch(e){throw new x(String(e),"ERR_INVALID_PRIVATE_KEY")}}function Do(r){try{tt.ProjectivePoint.fromHex(r)}catch(e){throw new x(String(e),"ERR_INVALID_PUBLIC_KEY")}}function c4(r){try{return tt.getPublicKey(r,!0)}catch(e){throw new x(String(e),"ERR_INVALID_PRIVATE_KEY")}}var mr=class{_key;constructor(e){Do(e),this._key=e}verify(e,t){return i4(this._key,t,e)}marshal(){return o4(this._key)}get bytes(){return Qe.encode({Type:X.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return Q(this.bytes,e.bytes)}async hash(){let e=ne.digest(this.bytes),t;return $e(e)?{bytes:t}=await e:t=e.bytes,t}},yr=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??c4(e),a4(this._key),Do(this._publicKey)}sign(e){return s4(this._key,e)}get public(){return new mr(this._publicKey)}marshal(){return this._key}get bytes(){return Xe.encode({Type:X.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return Q(this.bytes,e.bytes)}hash(){let e=ne.digest(this.bytes);return $e(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return P(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Yr(this.bytes,e);throw new x(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function n7(r){return new yr(r)}function s7(r){return new mr(r)}async function i7(){let r=n4();return new yr(r)}var _t={rsa:_o,ed25519:wo,secp256k1:Uo};function Oo(r){let e=Object.keys(_t).join(" / ");return new x(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function Vo(r){if(r=r.toLowerCase(),r==="rsa"||r==="ed25519"||r==="secp256k1")return _t[r];throw Oo(r)}async function o7(r,e){return Vo(r).generateKeyPair(e??2048)}async function a7(r,e,t){if(r.toLowerCase()!=="ed25519")throw new x("Seed key derivation is unimplemented for RSA or secp256k1","ERR_UNSUPPORTED_KEY_DERIVATION_TYPE");return bo(e)}function c7(r){let e=Qe.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case X.RSA:return _t.rsa.unmarshalRsaPublicKey(t);case X.Ed25519:return _t.ed25519.unmarshalEd25519PublicKey(t);case X.Secp256k1:return _t.secp256k1.unmarshalSecp256k1PublicKey(t);default:throw Oo(e.Type??"unknown")}}function l7(r,e){return e=(e??"rsa").toLowerCase(),Vo(e),r.bytes}async function l4(r){let e=Xe.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case X.RSA:return _t.rsa.unmarshalRsaPrivateKey(t);case X.Ed25519:return _t.ed25519.unmarshalEd25519PrivateKey(t);case X.Secp256k1:return _t.secp256k1.unmarshalSecp256k1PrivateKey(t);default:throw Oo(e.Type??"RSA")}}function u7(r,e){return e=(e??"rsa").toLowerCase(),Vo(e),r.bytes}async function f7(r,e){try{let t=await t3(r,e);return await l4(t)}catch{}if(!r.includes("BEGIN"))throw new x("Encrypted key was not a libp2p-key or a PEM file","ERR_INVALID_IMPORT_FORMAT");return ko(r,e)}var f4=Symbol.for("@achingbrain/uint8arraylist");function u4(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 gs(r){return!!r?.[f4]}var Me=class r{bufs;length;[f4]=!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(gs(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(gs(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=u4(this.bufs,e);return t.buf[t.index]}set(e,t){let n=u4(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(gs(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 J(n,s)}subarray(e,t){let{bufs:n,length:s}=this._subList(e,t);return n.length===1?n[0]:J(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 l=e>=a&&e<c,f=t>a&&t<=c;if(l&&f){if(e===a&&t===c){n.push(o);break}let u=e-a;n.push(o.subarray(u,u+(t-e)));break}if(l){if(e===0){n.push(o);continue}n.push(o.subarray(e-a));continue}if(f){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(!gs(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 u=0;u<i;u++)o[u]=-1;for(let u=0;u<s;u++)o[n[u]]=u;let a=o,c=this.byteLength-n.byteLength,l=n.byteLength-1,f;for(let u=t;u<=c;u+=f){f=0;for(let h=l;h>=0;h--){let m=this.get(u+h);if(n[h]!==m){f=Math.max(1,h-a[m]);break}}if(f===0)return u}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=be(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=Ce(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=Ce(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=Ce(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=be(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=Ce(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=Ce(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=Ce(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=Ce(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=Ce(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(!Q(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 bd=parseInt("0xFFFF",16),wd=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);var p4=n1,m7=s1,Fo=function(r){let e=0;if(r=r.toString().trim(),p4(r)){let t=new Uint8Array(e+4);return r.split(/\./g).forEach(n=>{t[e++]=parseInt(n,10)&255}),t}if(m7(r)){let t=r.split(":",8),n;for(n=0;n<t.length;n++){let i=p4(t[n]),o;i&&(o=Fo(t[n]),t[n]=P(o.slice(0,2),"base16")),o!=null&&++n<8&&t.splice(n,0,P(o.slice(2,4),"base16"))}if(t[0]==="")for(;t.length<8;)t.unshift("0");else if(t[t.length-1]==="")for(;t.length<8;)t.push("0");else if(t.length<8){for(n=0;n<t.length&&t[n]!=="";n++);let i=[n,1];for(n=9-t.length;n>0;n--)i.push("0");t.splice.apply(t,i)}let s=new Uint8Array(e+16);for(n=0;n<t.length;n++){let i=parseInt(t[n],16);s[e++]=i>>8&255,s[e++]=i&255}return s}throw new Error("invalid ip address")},g4=function(r,e=0,t){e=~~e,t=t??r.length-e;let n=new DataView(r.buffer);if(t===4){let s=[];for(let i=0;i<t;i++)s.push(r[e+i]);return s.join(".")}if(t===16){let s=[];for(let i=0;i<t;i+=2)s.push(n.getUint16(e+i).toString(16));return s.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var tn={},Mo={},b7=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,-1,"ip6zone"],[43,8,"ipcidr"],[53,-1,"dns",!0],[54,-1,"dns4",!0],[55,-1,"dns6",!0],[56,-1,"dnsaddr",!0],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[280,0,"webrtc-direct"],[281,0,"webrtc"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,-1,"unix",!1,!0],[421,-1,"ipfs"],[421,-1,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,-1,"garlic64"],[448,0,"tls"],[449,-1,"sni"],[460,0,"quic"],[461,0,"quic-v1"],[465,0,"webtransport"],[466,-1,"certhash"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[777,-1,"memory"]];b7.forEach(r=>{let e=w7(...r);Mo[e.code]=e,tn[e.name]=e});function w7(r,e,t,n,s){return{code:r,size:e,name:t,resolvable:!!n,path:!!s}}function W(r){if(typeof r=="number"){if(Mo[r]!=null)return Mo[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(tn[r]!=null)return tn[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var ep=W("ip4"),tp=W("ip6"),rp=W("ipcidr");function Ko(r,e){switch(W(r).code){case 4:case 41:return x7(e);case 42:return b4(e);case 6:case 273:case 33:case 132:return v4(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return b4(e);case 421:return I7(e);case 444:return w4(e);case 445:return w4(e);case 466:return B7(e);default:return P(e,"base16")}}function qo(r,e){switch(W(r).code){case 4:return m4(e);case 41:return m4(e);case 42:return y4(e);case 6:case 273:case 33:case 132:return $o(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return y4(e);case 421:return E7(e);case 444:return S7(e);case 445:return R7(e);case 466:return A7(e);default:return z(e,"base16")}}var Ho=Object.values(Ot).map(r=>r.decoder),v7=function(){let r=Ho[0].or(Ho[1]);return Ho.slice(2).forEach(e=>r=r.or(e)),r}();function m4(r){if(!i1(r))throw new Error("invalid ip address");return Fo(r)}function x7(r){let e=g4(r,0,r.length);if(e==null)throw new Error("ipBuff is required");if(!i1(e))throw new Error("invalid ip address");return e}function $o(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r),new Uint8Array(e)}function v4(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function y4(r){let e=z(r),t=Uint8Array.from(Ke(e.length));return J([t,e],t.length+e.length)}function b4(r){let e=Ue(r);if(r=r.slice(he(e)),r.length!==e)throw new Error("inconsistent lengths");return P(r)}function E7(r){let e;r[0]==="Q"||r[0]==="1"?e=sr(ge.decode(`z${r}`)).bytes:e=_e.parse(r).multihash.bytes;let t=Uint8Array.from(Ke(e.length));return J([t,e],t.length+e.length)}function A7(r){let e=v7.decode(r),t=Uint8Array.from(Ke(e.length));return J([t,e],t.length+e.length)}function B7(r){let e=Ue(r),t=r.slice(he(e));if(t.length!==e)throw new Error("inconsistent lengths");return"u"+P(t,"base64url")}function I7(r){let e=Ue(r),t=r.slice(he(e));if(t.length!==e)throw new Error("inconsistent lengths");return P(t,"base58btc")}function S7(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==16)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion address.`);let t=pt.decode("b"+e[0]),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let s=$o(n);return J([t,s],t.length+s.length)}function R7(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==56)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion3 address.`);let t=pt.decode(`b${e[0]}`),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let s=$o(n);return J([t,s],t.length+s.length)}function w4(r){let e=r.slice(0,r.length-2),t=r.slice(r.length-2),n=P(e,"base32"),s=v4(t);return`${n}:${s}`}function x4(r){r=zo(r);let e=[],t=[],n=null,s=r.split("/").slice(1);if(s.length===1&&s[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let i=0;i<s.length;i++){let o=s[i],a=W(o);if(a.size===0){e.push([a.code]),t.push([a.code]);continue}if(i++,i>=s.length)throw A4("invalid address: "+r);if(a.path===!0){n=zo(s.slice(i).join("/")),e.push([a.code,qo(a.code,n)]),t.push([a.code,n]);break}let c=qo(a.code,s[i]);e.push([a.code,c]),t.push([a.code,Ko(a.code,c)])}return{string:E4(t),bytes:jo(e),tuples:e,stringTuples:t,path:n}}function Go(r){let e=[],t=[],n=null,s=0;for(;s<r.length;){let i=Ue(r,s),o=he(i),a=W(i),c=k7(a,r.slice(s+o));if(c===0){e.push([i]),t.push([i]),s+=o;continue}let l=r.slice(s+o,s+o+c);if(s+=c+o,s>r.length)throw A4("Invalid address Uint8Array: "+P(r,"base16"));e.push([i,l]);let f=Ko(i,l);if(t.push([i,f]),a.path===!0){n=f;break}}return{bytes:Uint8Array.from(r),string:E4(t),tuples:e,stringTuples:t,path:n}}function E4(r){let e=[];return r.map(t=>{let n=W(t[0]);return e.push(n.name),t.length>1&&t[1]!=null&&e.push(t[1]),null}),zo(e.join("/"))}function jo(r){return J(r.map(e=>{let t=W(e[0]),n=Uint8Array.from(Ke(t.code));return e.length>1&&e[1]!=null&&(n=J([n,e[1]])),n}))}function k7(r,e){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let t=Ue(e instanceof Uint8Array?e:Uint8Array.from(e));return t+he(t)}}function zo(r){return"/"+r.trim().split("/").filter(e=>e).join("/")}function A4(r){return new Error("Error parsing address: "+r)}var N7=Symbol.for("nodejs.util.inspect.custom"),Yo=Symbol.for("@multiformats/js-multiaddr/multiaddr"),T7=[W("dns").code,W("dns4").code,W("dns6").code,W("dnsaddr").code],ms=class r{bytes;#e;#r;#i;#a;[Yo]=!0;constructor(e){e==null&&(e="");let t;if(e instanceof Uint8Array)t=Go(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);t=x4(e)}else if(I4(e))t=Go(e.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=t.bytes,this.#e=t.string,this.#r=t.tuples,this.#i=t.stringTuples,this.#a=t.path}toString(){return this.#e}toJSON(){return this.toString()}toOptions(){let e,t,n,s,i="",o=W("tcp"),a=W("udp"),c=W("ip4"),l=W("ip6"),f=W("dns6"),u=W("ip6zone");for(let[m,p]of this.stringTuples())m===u.code&&(i=`%${p??""}`),T7.includes(m)&&(t=o.name,s=443,n=`${p??""}${i}`,e=m===f.code?6:4),(m===o.code||m===a.code)&&(t=W(m).name,s=parseInt(p??"")),(m===c.code||m===l.code)&&(t=W(m).name,n=`${p??""}${i}`,e=m===l.code?6:4);if(e==null||t==null||n==null||s==null)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:e,host:n,transport:t,port:s}}protos(){return this.#r.map(([e])=>Object.assign({},W(e)))}protoCodes(){return this.#r.map(([e])=>e)}protoNames(){return this.#r.map(([e])=>W(e).name)}tuples(){return this.#r}stringTuples(){return this.#i}encapsulate(e){return e=new r(e),new r(this.toString()+e.toString())}decapsulate(e){let t=e.toString(),n=this.toString(),s=n.lastIndexOf(t);if(s<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${e.toString()}`);return new r(n.slice(0,s))}decapsulateCode(e){let t=this.tuples();for(let n=t.length-1;n>=0;n--)if(t[n][0]===e)return new r(jo(t.slice(0,n)));return this}getPeerId(){try{let e=[];this.stringTuples().forEach(([n,s])=>{n===tn.p2p.code&&e.push([n,s]),n===tn["p2p-circuit"].code&&(e=[])});let t=e.pop();if(t?.[1]!=null){let n=t[1];return n[0]==="Q"||n[0]==="1"?P(ge.decode(`z${n}`),"base58btc"):P(_e.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#a}equals(e){return Q(this.bytes,e.bytes)}async resolve(e){let t=this.protos().find(i=>i.resolvable);if(t==null)return[this];let n=B4.get(t.name);if(n==null)throw new x(`no available resolver for ${t.name}`,"ERR_NO_AVAILABLE_RESOLVER");return(await n(this,e)).map(i=>br(i))}nodeAddress(){let e=this.toOptions();if(e.transport!=="tcp"&&e.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${e.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:e.family,address:e.host,port:e.port}}isThinWaistAddress(e){let t=(e??this).protos();return!(t.length!==2||t[0].code!==4&&t[0].code!==41||t[1].code!==6&&t[1].code!==273)}[N7](){return`Multiaddr(${this.#e})`}};var B4=new Map;function I4(r){return!!r?.[Yo]}function br(r){return new ms(r)}function S4(r,e){return{id:r.id.toBytes(),multiaddrs:(r.multiaddrs??[]).map(n=>n.bytes),connection:e}}function Dn(r){if(r.id==null)throw new Error("Invalid peer in message");return{id:gt(r.id),multiaddrs:(r.multiaddrs??[]).map(e=>br(e))}}var ys=class{log;components;network;peerRouting;queryManager;routingTable;providers;constructor(e,t){let{network:n,peerRouting:s,queryManager:i,routingTable:o,providers:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-routing`),this.network=n,this.peerRouting=s,this.queryManager=i,this.routingTable=o,this.providers=a}async*provide(e,t,n={}){this.log("provide %s",e),await this.providers.addProvider(e,this.components.peerId);let s={type:M.ADD_PROVIDER,key:e.multihash.bytes,providers:[S4({id:this.components.peerId,multiaddrs:t})]},i=0,o=a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[];this.log("putProvider %s to %p",e,a.peer.id);try{this.log("sending provider record for %s to %p",e,a.peer.id);for await(let l of this.network.sendMessage(a.peer.id,s,n))l.name==="PEER_RESPONSE"&&(this.log("sent provider record for %s to %p",e,a.peer.id),i++),c.push(l)}catch(l){this.log.error("error sending provide record to peer %p",a.peer.id,l),c.push(Ve({from:a.peer.id,error:l},n))}return c};yield*Ft(this.peerRouting.getClosestPeers(e.multihash.bytes,n),a=>Wn(a,c=>o(c)),a=>bn(a,{ordered:!1,concurrency:3}),async function*(a){for await(let c of a)yield*c}),this.log("sent provider records to %d peers",i)}async*findProviders(e,t){let n=this.routingTable.kBucketSize,s=0,i=e.multihash.bytes,o=this;this.log("findProviders %c",e);let a=await this.providers.getProviders(e);if(a.length>0){let f=[];for(let u of a.slice(0,n))try{let h=await this.components.peerStore.get(u);f.push({id:u,multiaddrs:h.addresses.map(({multiaddr:m})=>m)})}catch(h){if(h.code!=="ERR_NOT_FOUND")throw h;this.log("no peer store entry for %p",u)}if(yield wn({from:this.components.peerId,messageType:M.GET_PROVIDERS,providers:f},t),yield $i({from:this.components.peerId,providers:f},t),s+=f.length,s>=n)return}let c=async function*({peer:f,signal:u}){let h={type:M.GET_PROVIDERS,key:i};yield*o.network.sendRequest(f,h,{...t,signal:u})},l=new ot(a);for await(let f of this.queryManager.run(i,c,t))if(yield f,f.name==="PEER_RESPONSE"){this.log("Found %d provider entries for %c and %d closer peers",f.providers.length,e,f.closer.length);let u=[];for(let h of f.providers)l.has(h.id)||(l.add(h.id),u.push(h));if(u.length>0&&(yield $i({from:f.from,providers:u},t),s+=u.length,s>=n))return}}};function tr(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 rn=class{movingAverage;variance;deviation;forecast;timespan;previousTime;constructor(e){this.timespan=e,this.movingAverage=0,this.variance=0,this.deviation=0,this.forecast=0}alpha(e,t){return 1-Math.exp(-(e-t)/this.timespan)}push(e,t=Date.now()){if(this.previousTime!=null){let n=this.alpha(t,this.previousTime),s=e-this.movingAverage,i=n*s;this.movingAverage=n*e+(1-n)*this.movingAverage,this.variance=(1-n)*(this.variance+s*i),this.deviation=Math.sqrt(this.variance),this.forecast=this.movingAverage+n*s}else this.movingAverage=e;this.previousTime=t}};var _7=1.2,L7=2,P7=2e3,bs=class{success;failure;next;metric;timeoutMultiplier;failureMultiplier;minTimeout;constructor(e={}){this.success=new rn(e.interval??5e3),this.failure=new rn(e.interval??5e3),this.next=new rn(e.interval??5e3),this.failureMultiplier=e.failureMultiplier??L7,this.timeoutMultiplier=e.timeoutMultiplier??_7,this.minTimeout=e.minTimeout??P7,e.metricName!=null&&(this.metric=e.metrics?.registerMetricGroup(e.metricName))}getTimeoutSignal(e={}){let t=Math.max(Math.round(this.next.movingAverage*(e.timeoutFactor??this.timeoutMultiplier)),this.minTimeout),n=AbortSignal.timeout(t),s=tr([e.signal,n]);return Ne(1/0,s,n),s.start=Date.now(),s.timeout=t,s}cleanUp(e){let t=Date.now()-e.start;e.aborted?(this.failure.push(t),this.next.push(t*this.failureMultiplier),this.metric?.update({failureMovingAverage:this.failure.movingAverage,failureDeviation:this.failure.deviation,failureForecast:this.failure.forecast,failureVariance:this.failure.variance,failure:t})):(this.success.push(t),this.next.push(t),this.metric?.update({successMovingAverage:this.success.movingAverage,successDeviation:this.success.deviation,successForecast:this.success.forecast,successVariance:this.success.variance,success:t}))}};var ws=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function nn(r,e,t){if(e==null)return r;if(e.aborted)return Promise.reject(new ws(t?.errorMessage,t?.errorCode));let n,s=new ws(t?.errorMessage,t?.errorCode);try{return await Promise.race([r,new Promise((i,o)=>{n=()=>{o(s)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var Wo=class{readNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.readNext=fe(),this.haveNext=fe()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let e=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=fe(),e}async throw(e){return this.ended=!0,e!=null&&this.haveNext.reject(e),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return await this._push(void 0),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw new Error("Cannot push value onto an ended pushable");if(this.nextResult!=null&&(await this.readNext.promise,this.nextResult!=null))throw new Error("NeedNext promise resolved but nextResult was not consumed");e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=fe(),await nn(this.readNext.promise,t?.signal,t)}};function R4(){return new Wo}var vs=class extends Error{code;constructor(e,t){super(e),this.code=t}},Zo=class extends vs{type;constructor(e){super(e,"ABORT_ERR"),this.type="aborted"}};function k4(r,e){let t=R4();r.sink(t).catch(async o=>{await t.end(o)}),r.sink=async o=>{for await(let a of o)await t.push(a);await t.end()};let n=r.source;r.source[Symbol.iterator]!=null?n=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(n=r.source[Symbol.asyncIterator]());let s=new Me;return{read:async(o,a)=>{a?.signal?.throwIfAborted();let c,l=new Promise((f,u)=>{c=()=>{u(new Zo("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(o==null){let{done:u,value:h}=await Promise.race([n.next(),l]);return u===!0?new Me:h}for(;s.byteLength<o;){let{value:u,done:h}=await Promise.race([n.next(),l]);if(h===!0)throw new vs("unexpected end of input","ERR_UNEXPECTED_EOF");s.append(u)}let f=s.sublist(0,o);return s.consume(o),f}finally{c!=null&&a?.signal?.removeEventListener("abort",c)}},write:async(o,a)=>{a?.signal?.throwIfAborted(),o instanceof Uint8Array?await t.push(o,a):await t.push(o.subarray(),a)},unwrap:()=>{if(s.byteLength>0){let o=r.source;r.source=async function*(){e?.yieldBytes===!1?yield s:yield*s,yield*o}()}return r}}}var xs=class extends Error{code;constructor(e,t){super(e),this.code=t}};function N4(r,e={}){let t=k4(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=he(e.maxDataLength));let n=e?.lengthDecoder??Ue,s=e?.lengthEncoder??Ke;return{read:async o=>{let a=-1,c=new Me;for(;;){c.append(await t.read(1,o));try{a=n(c)}catch(l){if(l instanceof RangeError)continue;throw l}if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new xs("message length length too long","ERR_MSG_LENGTH_TOO_LONG");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new xs("message length too long","ERR_MSG_DATA_TOO_LONG");return t.read(a,o)},write:async(o,a)=>{await t.write(new Me(s(o.byteLength),o),a)},writeV:async(o,a)=>{let c=new Me(...o.flatMap(l=>[s(l.byteLength),l]));await t.write(c,a)},unwrap:()=>t.unwrap()}}function Un(r,e){let t=N4(r,e),n={read:async(s,i)=>{let o=await t.read(i);return s.decode(o)},write:async(s,i,o)=>{await t.write(i.encode(s),o)},writeV:async(s,i,o)=>{await t.writeV(s.map(a=>i.encode(a)),o)},pb:s=>({read:async i=>n.read(s,i),write:async(i,o)=>n.write(i,s,o),writeV:async(i,o)=>n.writeV(i,s,o),unwrap:()=>n}),unwrap:()=>t.unwrap()};return n}var Es=class extends Be{log;protocol;running;components;timeout;constructor(e,t){super();let{protocol:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:network`),this.running=!1,this.protocol=n,this.timeout=new bs({...t.timeout??{},metrics:e.metrics,metricName:`${t.logPrefix.replaceAll(":","_")}_network_message_send_times_milliseconds`})}async start(){this.running||(this.running=!0)}async stop(){this.running=!1}isStarted(){return this.running}async*sendRequest(e,t,n={}){if(!this.running)return;let s=t.type;if(s==null)throw new mn("Message type was missing","ERR_INVALID_PARAMETERS");this.log("sending %s to %p",t.type,e),yield zi({peer:e},n),yield qi({to:e,type:s},n);let i,o=this.timeout.getTimeoutSignal(n);n={...n,signal:o};try{i=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n);let c=await this._writeReadMessage(i,t,n);i.close(n).catch(l=>{this.log.error("error closing stream to %p",e,l),i?.abort(l)}),yield wn({from:e,messageType:c.type,closer:c.closer.map(Dn),providers:c.providers.map(Dn),record:c.record==null?void 0:me.deserialize(c.record)},n)}catch(a){i?.abort(a),this.log.error("could not send %s to %p",t.type,e,a),yield Ve({from:e,error:a},n)}finally{this.timeout.cleanUp(o)}}async*sendMessage(e,t,n={}){if(!this.running)return;let s=t.type;if(s==null)throw new mn("Message type was missing","ERR_INVALID_PARAMETERS");this.log("sending %s to %p",t.type,e),yield zi({peer:e},n),yield qi({to:e,type:s},n);let i,o=this.timeout.getTimeoutSignal(n);n={...n,signal:o};try{i=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n),await this._writeMessage(i,t,n),i.close(n).catch(c=>{this.log.error("error closing stream to %p",e,c),i?.abort(c)}),yield wn({from:e,messageType:s},n)}catch(a){i?.abort(a),yield Ve({from:e,error:a},n)}finally{this.timeout.cleanUp(o)}}async _writeMessage(e,t,n){let s=Un(e);await s.write(t,qe,n),await s.unwrap().close(n)}async _writeReadMessage(e,t,n){let s=Un(e);await s.write(t,qe,n);let i=await s.read(qe,n);return await s.unwrap().close(n),i.closer.forEach(o=>{this.safeDispatchEvent("peer",{detail:Dn(o)})}),i.providers.forEach(o=>{this.safeDispatchEvent("peer",{detail:Dn(o)})}),i}};function As(r,e){for(let t=0;t<r.byteLength;t++){if(r[t]<e[t])return-1;if(r[t]>e[t])return 1}return r.byteLength>e.byteLength?1:r.byteLength<e.byteLength?-1:0}function Lt(r,e){if(r.length!==e.length)throw new Error("Inputs should have the same length");let t=be(r.length);for(let n=0;n<r.length;n++)t[n]=r[n]^e[n];return t}var Bs=class{originDhtKey;capacity;peerDistances;constructor(e,t){this.originDhtKey=e,this.capacity=t,this.peerDistances=[]}get length(){return this.peerDistances.length}get peers(){return this.peerDistances.map(e=>e.peerId)}async add(e){if(this.peerDistances.find(s=>s.peerId.equals(e))!=null)return;let t=await Ye(e),n={peerId:e,distance:Lt(this.originDhtKey,t)};this.peerDistances.push(n),this.peerDistances.sort((s,i)=>As(s.distance,i.distance)),this.peerDistances=this.peerDistances.slice(0,this.capacity)}async anyCloser(e){if(e.length===0)return!1;if(this.length===0)return!0;let t=await Promise.all(e.map(Ye)),n=this.peerDistances[this.peerDistances.length-1].distance;for(let s of t){let i=Lt(this.originDhtKey,s);if(As(i,n)<0)return!0}return!1}};var Is=class{log;routingTable;network;validators;queryManager;peerStore;peerId;constructor(e,t){let{routingTable:n,network:s,validators:i,queryManager:o,logPrefix:a}=t;this.routingTable=n,this.network=s,this.validators=i,this.queryManager=o,this.peerStore=e.peerStore,this.peerId=e.peerId,this.log=e.logger.forComponent(`${a}:peer-routing`)}async findPeerLocal(e){let t,n=await this.routingTable.find(e);if(n!=null){this.log("findPeerLocal found %p in routing table",e);try{t=await this.peerStore.get(n)}catch(s){if(s.code!=="ERR_NOT_FOUND")throw s}}if(t==null)try{t=await this.peerStore.get(e)}catch(s){if(s.code!=="ERR_NOT_FOUND")throw s}if(t!=null)return this.log("findPeerLocal found %p in peer store",e),{id:t.id,multiaddrs:t.addresses.map(s=>s.multiaddr)}}async*_getValueSingle(e,t,n={}){let s={type:M.GET_VALUE,key:t};yield*this.network.sendRequest(e,s,n)}async*getPublicKeyFromNode(e,t={}){let n=y0(e);for await(let s of this._getValueSingle(e,n,t))if(yield s,s.name==="PEER_RESPONSE"&&s.record!=null){let i=await u0(ps.marshalPublicKey({bytes:s.record.value}));if(!i.equals(e))throw new x("public key does not match id","ERR_PUBLIC_KEY_DOES_NOT_MATCH_ID");if(i.publicKey==null)throw new x("public key missing","ERR_PUBLIC_KEY_MISSING");yield vn({from:e,value:i.publicKey},t)}throw new x(`Node not responding with its public key: ${e.toString()}`,"ERR_INVALID_RECORD")}async*findPeer(e,t={}){if(this.log("findPeer %p",e),t.useCache!==!1){let s=await this.findPeerLocal(e);if(s!=null){this.log("found local"),yield e1({from:this.peerId,peer:s},t);return}}let n=!1;if(t.useNetwork!==!1){let s=this,i=async function*({peer:o,signal:a}){let c={type:M.FIND_NODE,key:e.toBytes()};for await(let l of s.network.sendRequest(o,c,{...t,signal:a}))if(yield l,l.name==="PEER_RESPONSE"){let f=l.closer.find(u=>u.id.equals(e));f!=null&&(yield e1({from:l.from,peer:f},t))}};for await(let o of this.queryManager.run(e.toBytes(),i,t))o.name==="FINAL_PEER"&&(n=!0),yield o}n||(yield Ve({from:this.peerId,error:new x("Not found","ERR_NOT_FOUND")},t))}async*getClosestPeers(e,t={}){this.log("getClosestPeers to %b",e);let n=await Mt(e),s=this.routingTable.closestPeers(n),i=this,o=new Bs(n,this.routingTable.kBucketSize);await Promise.all(s.map(async c=>{await o.add(c)}));let a=async function*({peer:c,signal:l}){i.log("closerPeersSingle %s from %p",P(e,"base32"),c);let f={type:M.FIND_NODE,key:e};yield*i.network.sendRequest(c,f,{...t,signal:l})};for await(let c of this.queryManager.run(e,a,t))yield c,c.name==="PEER_RESPONSE"&&await Promise.all(c.closer.map(async l=>{await o.add(l.id)}));this.log("found %d peers close to %b",o.length,e);for(let c of o.peers)try{let l=await this.peerStore.get(c);yield e1({from:this.peerId,peer:{id:c,multiaddrs:l.addresses.map(({multiaddr:f})=>f)}},t)}catch(l){if(l.code!=="ERR_NOT_FOUND")throw l}}async*getValueOrPeers(e,t,n={}){for await(let s of this._getValueSingle(e,t,n)){if(s.name==="PEER_RESPONSE"&&s.record!=null)try{await this._verifyRecordOnline(s.record)}catch{let o="invalid record received, discarded";this.log(o),yield Ve({from:s.from,error:new x(o,"ERR_INVALID_RECORD")},n);continue}yield s}}async _verifyRecordOnline(e){if(e.timeReceived==null)throw new x("invalid record received","ERR_INVALID_RECORD");await _r(this.validators,new me(e.key,e.value,e.timeReceived))}async getCloserPeersOffline(e,t){let n=await Mt(e),s=this.routingTable.closestPeers(n),i=[];for(let o of s)if(!o.equals(t))try{let a=await this.peerStore.get(o);i.push({id:o,multiaddrs:a.addresses.map(({multiaddr:c})=>c)})}catch(a){if(a.code!=="ERR_NOT_FOUND")throw a}return i.length>0?this.log("getCloserPeersOffline found %d peer(s) closer to %b than %p",i.length,e,t):this.log("getCloserPeersOffline could not find peer closer to %b than %p with %d peers in the routing table",e,t,this.routingTable.size),i}};var U4=ln(_4(),1);var Xo=ln(P4(),1);var sn=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},Jo=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},C4=r=>globalThis.DOMException===void 0?new Jo(r):new DOMException(r),D4=r=>{let e=r.reason===void 0?C4("This operation was aborted."):r.reason;return e instanceof Error?e:C4(e)};function Vn(r,e){let{milliseconds:t,fallback:n,message:s,customTimers:i={setTimeout,clearTimeout}}=e,o,c=new Promise((l,f)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){let{signal:h}=e;h.aborted&&f(D4(h)),h.addEventListener("abort",()=>{f(D4(h))})}if(t===Number.POSITIVE_INFINITY){r.then(l,f);return}let u=new sn;o=i.setTimeout.call(void 0,()=>{if(n){try{l(n())}catch(h){f(h)}return}typeof r.cancel=="function"&&r.cancel(),s===!1?l():s instanceof Error?f(s):(u.message=s??`Promise timed out after ${t} milliseconds`,f(u))},t),(async()=>{try{l(await r)}catch(h){f(h)}})()}).finally(()=>{c.clear()});return c.clear=()=>{i.clearTimeout.call(void 0,o),o=void 0},c}function e2(r,e,t){let n=0,s=r.length;for(;s>0;){let i=Math.trunc(s/2),o=n+i;t(r[o],e)<=0?(n=++o,s-=i+1):s=i}return n}var Fn=class{#e=[];enqueue(e,t){t={priority:0,...t};let n={priority:t.priority,run:e};if(this.size&&this.#e[this.size-1].priority>=t.priority){this.#e.push(n);return}let s=e2(this.#e,n,(i,o)=>o.priority-i.priority);this.#e.splice(s,0,n)}dequeue(){return this.#e.shift()?.run}filter(e){return this.#e.filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return this.#e.length}};var wr=class extends Xo.default{#e;#r;#i=0;#a;#c;#p=0;#n;#l;#t;#g;#s=0;#u;#o;#m;timeout;constructor(e){if(super(),e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:Fn,...e},!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap?.toString()??""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval?.toString()??""}\` (${typeof e.interval})`);this.#e=e.carryoverConcurrencyCount,this.#r=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#a=e.intervalCap,this.#c=e.interval,this.#t=new e.queueClass,this.#g=e.queueClass,this.concurrency=e.concurrency,this.timeout=e.timeout,this.#m=e.throwOnTimeout===!0,this.#o=e.autoStart===!1}get#w(){return this.#r||this.#i<this.#a}get#v(){return this.#s<this.#u}#x(){this.#s--,this.#f(),this.emit("next")}#E(){this.#b(),this.#y(),this.#l=void 0}get#A(){let e=Date.now();if(this.#n===void 0){let t=this.#p-e;if(t<0)this.#i=this.#e?this.#s:0;else return this.#l===void 0&&(this.#l=setTimeout(()=>{this.#E()},t)),!0}return!1}#f(){if(this.#t.size===0)return this.#n&&clearInterval(this.#n),this.#n=void 0,this.emit("empty"),this.#s===0&&this.emit("idle"),!1;if(!this.#o){let e=!this.#A;if(this.#w&&this.#v){let t=this.#t.dequeue();return t?(this.emit("active"),t(),e&&this.#y(),!0):!1}}return!1}#y(){this.#r||this.#n!==void 0||(this.#n=setInterval(()=>{this.#b()},this.#c),this.#p=Date.now()+this.#c)}#b(){this.#i===0&&this.#s===0&&this.#n&&(clearInterval(this.#n),this.#n=void 0),this.#i=this.#e?this.#s:0,this.#h()}#h(){for(;this.#f(););}get concurrency(){return this.#u}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this.#u=e,this.#h()}async#B(e){return new Promise((t,n)=>{e.addEventListener("abort",()=>{n(e.reason)},{once:!0})})}async add(e,t={}){return t={timeout:this.timeout,throwOnTimeout:this.#m,...t},new Promise((n,s)=>{this.#t.enqueue(async()=>{this.#s++,this.#i++;try{t.signal?.throwIfAborted();let i=e({signal:t.signal});t.timeout&&(i=Vn(Promise.resolve(i),{milliseconds:t.timeout})),t.signal&&(i=Promise.race([i,this.#B(t.signal)]));let o=await i;n(o),this.emit("completed",o)}catch(i){if(i instanceof sn&&!t.throwOnTimeout){n();return}s(i),this.emit("error",i)}finally{this.#x()}},t),this.emit("add"),this.#f()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#o?(this.#o=!1,this.#h(),this):this}pause(){this.#o=!0}clear(){this.#t=new this.#g}async onEmpty(){this.#t.size!==0&&await this.#d("empty")}async onSizeLessThan(e){this.#t.size<e||await this.#d("next",()=>this.#t.size<e)}async onIdle(){this.#s===0&&this.#t.size===0||await this.#d("idle")}async#d(e,t){return new Promise(n=>{let s=()=>{t&&!t()||(this.off(e,s),n())};this.on(e,s)})}get size(){return this.#t.size}sizeBy(e){return this.#t.filter(e).length}get pending(){return this.#s}get isPaused(){return this.#o}};var Rs=class{log;datastore;cache;cleanupInterval;provideValidity;syncQueue;started;cleaner;constructor(e,t={}){let{cacheSize:n,cleanupInterval:s,provideValidity:i}=t;this.log=e.logger.forComponent("libp2p:kad-dht:providers"),this.datastore=e.datastore,this.cleanupInterval=s??36e5,this.provideValidity=i??864e5,this.cache=(0,U4.default)(n??256),this.syncQueue=new wr({concurrency:1}),this.started=!1}isStarted(){return this.started}async start(){this.started||(this.started=!0,this.cleaner=setInterval(()=>{this._cleanup().catch(e=>{this.log.error(e)})},this.cleanupInterval))}async stop(){this.started=!1,this.cleaner!=null&&(clearInterval(this.cleaner),this.cleaner=void 0)}async _cleanup(){await this.syncQueue.add(async()=>{let e=Date.now(),t=0,n=0,s=new Map,i=this.datastore.batch(),o=this.datastore.query({prefix:ti});for await(let a of o)try{let{cid:c,peerId:l}=O4(a.key),f=V4(a.value).getTime(),u=Date.now(),h=u-f,m=h>this.provideValidity;if(this.log("comparing: %d - %d = %d > %d %s",u,f,h,this.provideValidity,m?"(expired)":""),m){n++,i.delete(a.key);let p=s.get(c)??new Set;p.add(l),s.set(c,p)}t++}catch(c){this.log.error(c.message)}s.size>0?(this.log("deleting %d / %d entries",n,t),await i.commit()):this.log("nothing to delete");for(let[a,c]of s){let l=Mn(a),f=this.cache.get(l);if(f!=null){for(let u of c)f.delete(u);f.size===0?this.cache.remove(l):this.cache.set(l,f)}}this.log("Cleanup successful (%dms)",Date.now()-e)})}async _getProvidersMap(e){let t=Mn(e),n=this.cache.get(t);return n==null&&(n=await M7(this.datastore,e),this.cache.set(t,n)),n}async addProvider(e,t){await this.syncQueue.add(async()=>{this.log("%p provides %s",t,e);let n=await this._getProvidersMap(e);this.log("loaded %s provs",n.size);let s=new Date;n.set(t.toString(),s);let i=Mn(e);this.cache.set(i,n),await F7(this.datastore,e,t,s)})}async getProviders(e){return this.syncQueue.add(async()=>(this.log("get providers for %s",e),[...(await this._getProvidersMap(e)).keys()].map(n=>ar(n))),{throwOnTimeout:!0})}};function Mn(r){let e=typeof r=="string"?r:P(r.multihash.bytes,"base32");return`${ti}/${e}`}async function F7(r,e,t,n){let s=[Mn(e),"/",t.toString()].join(""),i=new Ur(s),o=Ke(n.getTime());await r.put(i,o)}function O4(r){let e=r.toString().split("/");if(e.length!==5)throw new Error(`incorrectly formatted provider entry key in datastore: ${r.toString()}`);return{cid:e[3],peerId:e[4]}}async function M7(r,e){let t=new Map,n=r.query({prefix:Mn(e)});for await(let s of n){let{peerId:i}=O4(s.key);t.set(i,V4(s.value))}return t}function V4(r){return new Date(Ue(r))}async function*F4(r,e,t,n){let s=Vt({objectMode:!0}),i=u=>{n("clean up queue, results %d, queue size %d, pending tasks %d",s.readableLength,r.size,r.pending),r.clear(),s.end(u)},o=u=>{u!=null&&s.push(u)},a=u=>{n("queue error",u),i(u)},c=()=>{n("queue idle"),i()},l=()=>{n("abort queue"),i(new x("Query aborted","ERR_QUERY_ABORTED"))},f=()=>{i()};r.on("completed",o),r.on("error",a),r.on("idle",c),e.addEventListener("abort",l),t.addEventListener("cleanup",f);try{yield*s}finally{r.removeListener("completed",o),r.removeListener("error",a),r.removeListener("idle",c),e.removeEventListener("abort",l),t.removeEventListener("cleanup",f)}}var H7=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");async function*M4(r){let{key:e,startingPeer:t,ourPeerId:n,signal:s,query:i,alpha:o,pathIndex:a,numPaths:c,cleanUp:l,queryFuncTimeout:f,log:u,peersSeen:h}=r,m=new wr({concurrency:o}),p=await Mt(e);function d(g,y){if(g==null)return;h.add(g);let v=BigInt("0x"+P(Lt(y,p),"base16"));m.add(async()=>{let b=[s];f!=null&&b.push(AbortSignal.timeout(f));let S=tr(b);Ne(1/0,S);try{for await(let E of i({key:e,peer:g,signal:S,pathIndex:a,numPaths:c})){if(S.aborted)return;if(E.name==="PEER_RESPONSE")for(let I of E.closer){if(h.has(I.id)){u("already seen %p in query",I.id);continue}if(n.equals(I.id)){u("not querying ourselves");continue}let N=await Ye(I.id);if(BigInt("0x"+P(Lt(N,p),"base16"))>v){u("skipping %p as they are not closer to %b than %p",I.id,e,g);continue}u("querying closer peer %p",I.id),d(I.id,N)}m.emit("completed",E)}}catch(E){if(!s.aborted)return Ve({from:g,error:E},r)}finally{S.clear()}},{priority:H7-v}).catch(b=>{u.error(b)})}d(t,await Ye(t)),yield*F4(m,s,l,u)}var ks=class{disjointPaths;alpha;shutDownController;running;queries;logger;peerId;routingTable;initialQuerySelfHasRun;logPrefix;metrics;constructor(e,t){let{disjointPaths:n=20,alpha:s=3,logPrefix:i}=t;this.logPrefix=i,this.disjointPaths=n??20,this.running=!1,this.alpha=s??3,this.queries=0,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.routingTable=t.routingTable,this.logger=e.logger,this.peerId=e.peerId,e.metrics!=null&&(this.metrics={runningQueries:e.metrics.registerMetric(`${i.replaceAll(":","_")}_running_queries`),queryTime:e.metrics.registerMetric(`${i.replaceAll(":","_")}_query_time_seconds`)}),this.shutDownController=new AbortController,Ne(1/0,this.shutDownController.signal)}isStarted(){return this.running}async start(){this.running=!0,this.shutDownController=new AbortController,Ne(1/0,this.shutDownController.signal)}async stop(){this.running=!1,this.shutDownController.abort()}async*run(e,t,n={}){if(!this.running)throw new Error("QueryManager not started");let s=this.metrics?.queryTime.timer();if(n.signal==null){let u=AbortSignal.timeout(18e4);Ne(1/0,u),n={...n,signal:u}}let i=new AbortController,o=tr([this.shutDownController.signal,i.signal,n.signal]);Ne(1/0,o,i.signal);let a=this.logger.forComponent(`${this.logPrefix}:query:`+P(e,"base58btc")),c=Date.now(),l=new Be,f=!1;try{n.isSelfQuery!==!0&&this.initialQuerySelfHasRun!=null&&(a("waiting for initial query-self query before continuing"),await nn(this.initialQuerySelfHasRun.promise,o),this.initialQuerySelfHasRun=void 0),a("query:start"),this.queries++,this.metrics?.runningQueries.update(this.queries);let u=await Mt(e),h=this.routingTable.closestPeers(u),m=h.slice(0,Math.min(this.disjointPaths,h.length));if(h.length===0){a.error("Running query with no peers");return}let p=new ot,d=m.map((g,y)=>M4({key:e,startingPeer:g,ourPeerId:this.peerId,signal:o,query:t,pathIndex:y,numPaths:m.length,alpha:this.alpha,cleanUp:l,queryFuncTimeout:n.queryFuncTimeout,log:a,peersSeen:p,onProgress:n.onProgress}));for await(let g of Xn(...d))g.name==="QUERY_ERROR"&&a.error("query error",g.error),yield g;f=!0}catch(u){if(!(!this.running&&u.code==="ERR_QUERY_ABORTED"))throw u}finally{f||(a("query exited early"),i.abort()),o.clear(),this.queries--,this.metrics?.runningQueries.update(this.queries),s?.(),l.dispatchEvent(new Te("cleanup")),a("query:done in %dms",Date.now()-c)}}};function K7(r){return r[Symbol.asyncIterator]!=null}function q7(r){if(K7(r))return(async()=>{let e=0;for await(let t of r)e++;return e})();{let e=0;for(let t of r)e++;return e}}var Ns=q7;function $7(r){return r[Symbol.asyncIterator]!=null}function z7(r,e){return $7(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 K4=z7;var G7=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 j7(r,e,t){let n,s=new Promise((i,o)=>{if(t={rejectionEvents:["error"],multiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:f}=G7(r),u=(...m)=>{let p=t.multiArgs?m:m[0];t.filter&&!t.filter(p)||(c.push(p),t.count===c.length&&(n(),i(c)))},h=m=>{n(),o(m)};n=()=>{for(let m of a)f(m,u);for(let m of t.rejectionEvents)f(m,h)};for(let m of a)l(m,u);for(let m of t.rejectionEvents)l(m,h);t.signal&&t.signal.addEventListener("abort",()=>{h(t.signal.reason)},{once:!0}),t.resolveImmediately&&i(c)});if(s.cancel=n,typeof t.timeout=="number"){let i=Vn(s,{milliseconds:t.timeout});return i.cancel=n,i}return s}function q4(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=j7(r,e,t),s=n.then(i=>i[0]);return s.cancel=n.cancel,s}var Ts=class{log;peerId;peerRouting;routingTable;count;interval;initialInterval;queryTimeout;started;timeoutId;controller;initialQuerySelfHasRun;querySelfPromise;constructor(e,t){let{peerRouting:n,logPrefix:s,count:i,interval:o,queryTimeout:a,routingTable:c}=t;this.peerId=e.peerId,this.log=e.logger.forComponent(`${s}:query-self`),this.started=!1,this.peerRouting=n,this.routingTable=c,this.count=i??20,this.interval=o??3e5,this.initialInterval=t.initialInterval??1e3,this.queryTimeout=a??5e3,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun}isStarted(){return this.started}start(){this.started||(this.started=!0,clearTimeout(this.timeoutId),this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.initialInterval))}stop(){this.started=!1,this.timeoutId!=null&&clearTimeout(this.timeoutId),this.controller!=null&&this.controller.abort()}async querySelf(){if(!this.started){this.log("skip self-query because we are not started");return}if(this.querySelfPromise!=null)return this.log("joining existing self query"),this.querySelfPromise.promise;if(this.querySelfPromise=fe(),this.started){this.controller=new AbortController;let e=AbortSignal.timeout(this.queryTimeout),t=tr([this.controller.signal,e]);Ne(1/0,t,this.controller.signal,e);try{this.routingTable.size===0&&(this.log("routing table was empty, waiting for some peers before running query"),await q4(this.routingTable,"peer:add",{signal:t})),this.log("run self-query, look for %d peers timing out after %dms",this.count,this.queryTimeout);let n=Date.now(),s=await Ft(this.peerRouting.getClosestPeers(this.peerId.toBytes(),{signal:t,isSelfQuery:!0}),i=>K4(i,this.count),async i=>Ns(i));this.log("self-query found %d peers in %dms",s,Date.now()-n)}catch(n){this.log.error("self-query error",n)}finally{t.clear(),this.initialQuerySelfHasRun!=null&&(this.initialQuerySelfHasRun.resolve(),this.initialQuerySelfHasRun=void 0)}}this.querySelfPromise.resolve(),this.querySelfPromise=void 0,this.started&&(this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.interval))}};var t2=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function _s(r,e,t,n){let s=new t2(n?.errorMessage,n?.errorCode);return t?.aborted===!0?Promise.reject(s):new Promise((i,o)=>{function a(){t?.removeEventListener("abort",f),r.removeEventListener(e,c),n?.errorEvent!=null&&r.removeEventListener(n.errorEvent,l)}let c=u=>{try{if(n?.filter?.(u)===!1)return}catch(h){a(),o(h);return}a(),i(u)},l=u=>{a(),o(u.detail)},f=()=>{a(),o(s)};t?.addEventListener("abort",f),r.addEventListener(e,c),n?.errorEvent!=null&&r.addEventListener(n.errorEvent,l)})}var Ls=class{deferred;signal;where;constructor(e,t){this.signal=t,this.deferred=fe(),this.where=e,this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new Pt)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function Y7(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var Ps=class{id;fn;options;priority;recipients;status;timeline;controller;constructor(e,t,n=0){this.id=Y7(),this.status="queued",this.fn=e,this.priority=n,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,Ne(1/0,this.controller.signal),this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new Pt),this.cleanup())}async join(e={}){let t=new Ls(new Error("where").stack,e.signal);return this.recipients.push(t),e.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await nn(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};function W7(r,e,t){let n=0,s=r.length;for(;s>0;){let i=Math.trunc(s/2),o=n+i;t(r[o],e)<=0?(n=++o,s-=i+1):s=i}return n}var Cs=class extends Be{concurrency;queue;pending;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.pending=0,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.queue=[]}tryToStartAnother(){if(this.size===0)return queueMicrotask(()=>{this.safeDispatchEvent("empty")}),this.running===0&&queueMicrotask(()=>{this.safeDispatchEvent("idle")}),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){if(this.queue[this.size-1]?.priority>=e.priority){this.queue.push(e);return}let t=W7(this.queue,e,(n,s)=>s.priority-n.priority);this.queue.splice(t,0,e)}async add(e,t){t?.signal?.throwIfAborted();let n=new Ps(e,t,t?.priority),s=n.join(t).then(i=>(this.safeDispatchEvent("completed",{detail:i}),this.safeDispatchEvent("success",{detail:{job:n,result:i}}),i)).catch(i=>{if(n.status==="queued"){for(let o=0;o<this.queue.length;o++)if(this.queue[o]===n){this.queue.splice(o,1);break}}throw this.safeDispatchEvent("error",{detail:i}),this.safeDispatchEvent("failure",{detail:{job:n,error:i}}),i});return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),s}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new Pt)}),this.clear()}async onEmpty(e){this.size!==0&&await _s(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await _s(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await _s(this,"idle",e?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=Vt({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)},o=()=>{n()},a=()=>{n(new x("Queue aborted","ERR_QUEUE_ABORTED"))};this.addEventListener("completed",s),this.addEventListener("error",i),this.addEventListener("idle",o),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",s),this.removeEventListener("error",i),this.removeEventListener("idle",o),e?.signal?.removeEventListener("abort",a),n()}}};var Ds=class extends Cs{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};function $4(r,e){if(r===e)return!0;if(r.length!==e.length)return!1;for(let t=0,n=r.length;t<n;++t)if(r[t]!==e[t])return!1;return!0}function r2(){return{contacts:[],dontSplit:!1,left:null,right:null}}function Hn(r,e){if(!(e instanceof Uint8Array))throw new TypeError(r+" is not a Uint8Array")}var Us=class r extends Be{localNodeId;root;numberOfNodesPerKBucket;numberOfNodesToPing;distance;arbiter;constructor(e){super(),this.localNodeId=e.localNodeId,this.numberOfNodesPerKBucket=e.numberOfNodesPerKBucket??20,this.numberOfNodesToPing=e.numberOfNodesToPing??3,this.distance=e.distance??r.distance,this.arbiter=e.arbiter??r.arbiter,Hn("option.localNodeId as parameter 1",this.localNodeId),this.root=r2()}static arbiter(e,t){return(e.vectorClock??0)>(t.vectorClock??0)?e:t}static distance(e,t){let n=0,s=0,i=Math.min(e.length,t.length),o=Math.max(e.length,t.length);for(;s<i;++s)n=n*256+(e[s]^t[s]);for(;s<o;++s)n=n*256+255;return n}add(e){Hn("contact.id",e?.id);let t=0,n=this.root;for(;n.contacts===null;)n=this._determineNode(n,e.id,t++);let s=this._indexOf(n,e.id);return s>=0?(this._update(n,s,e),this):n.contacts.length<this.numberOfNodesPerKBucket?(n.contacts.push(e),this.safeDispatchEvent("added",{detail:e}),this):n.dontSplit?(this.safeDispatchEvent("ping",{detail:{oldContacts:n.contacts.slice(0,this.numberOfNodesToPing),newContact:e}}),this):(this._split(n,t),this.add(e))}closest(e,t=1/0){if(Hn("id",e),!Number.isInteger(t)&&t!==1/0||t<=0)throw new TypeError("n is not positive number");let n=[];for(let s=[this.root],i=0;s.length>0&&n.length<t;){let o=s.pop();if(o!=null)if(o.contacts===null){let a=this._determineNode(o,e,i++);s.push(o.left===a?o.right:o.left),s.push(a)}else n=n.concat(o.contacts)}return n.map(s=>({distance:this.distance(s.id,e),contact:s})).sort((s,i)=>s.distance-i.distance).slice(0,t).map(s=>s.contact)}count(){let e=0;for(let t=[this.root];t.length>0;){let n=t.pop();n!=null&&(n.contacts===null?t.push(n.right,n.left):e+=n.contacts.length)}return e}_determineNode(e,t,n){let s=n>>3,i=n%8;return t.length<=s&&i!==0?e.left:t[s]&1<<7-i?e.right:e.left}get(e){Hn("id",e);let t=0,n=this.root;for(;n.contacts===null;)n=this._determineNode(n,e,t++);let s=this._indexOf(n,e);return s>=0?n.contacts[s]:void 0}_indexOf(e,t){for(let n=0;n<e.contacts.length;++n)if($4(e.contacts[n].id,t))return n;return-1}remove(e){Hn("the id as parameter 1",e);let t=0,n=this.root;for(;n.contacts===null;)n=this._determineNode(n,e,t++);let s=this._indexOf(n,e);if(s>=0){let i=n.contacts.splice(s,1)[0];this.safeDispatchEvent("removed",{detail:i})}return this}_split(e,t){e.left=r2(),e.right=r2();for(let i of e.contacts)this._determineNode(e,i.id,t).contacts.push(i);e.contacts=null;let n=this._determineNode(e,this.localNodeId,t),s=e.left===n?e.right:e.left;s.dontSplit=!0}toArray(){let e=[];for(let t=[this.root];t.length>0;){let n=t.pop();n!=null&&(n.contacts===null?t.push(n.right,n.left):e=e.concat(n.contacts))}return e}*toIterable(){for(let e=[this.root];e.length>0;){let t=e.pop();t!=null&&(t.contacts===null?e.push(t.right,t.left):yield*t.contacts)}}_update(e,t,n){if(!$4(e.contacts[t].id,n.id))throw new Error("wrong index for _update");let s=e.contacts[t],i=this.arbiter(s,n);i===s&&s!==n||(e.contacts.splice(t,1),e.contacts.push(i),this.safeDispatchEvent("updated",{detail:{incumbent:s,selection:i}}))}};var Z7="kad-close",Q7=50,z4=20,X7=1e4,J7=10,Os=class extends Be{kBucketSize;kb;pingQueue;log;components;pingTimeout;pingConcurrency;running;protocol;tagName;tagValue;metrics;constructor(e,t){super();let{kBucketSize:n,pingTimeout:s,logPrefix:i,pingConcurrency:o,protocol:a,tagName:c,tagValue:l}=t;this.components=e,this.log=e.logger.forComponent(`${i}:routing-table`),this.kBucketSize=n??z4,this.pingTimeout=s??X7,this.pingConcurrency=o??J7,this.running=!1,this.protocol=a,this.tagName=c??Z7,this.tagValue=l??Q7,this.pingQueue=new Ds({concurrency:this.pingConcurrency,metricName:`${i.replaceAll(":","_")}_ping_queue`,metrics:this.components.metrics}),this.pingQueue.addEventListener("error",f=>{this.log.error("error pinging peer",f.detail)}),this.components.metrics!=null&&(this.metrics={routingTableSize:this.components.metrics.registerMetric(`${i.replaceAll(":","_")}_routing_table_size`)})}isStarted(){return this.running}async start(){this.running=!0;let e=new Us({localNodeId:await Ye(this.components.peerId),numberOfNodesPerKBucket:this.kBucketSize,numberOfNodesToPing:1});this.kb=e,e.addEventListener("ping",t=>{this._onPing(t).catch(n=>{this.log.error("could not process k-bucket ping event",n)})}),this._tagPeers(e)}async stop(){this.running=!1,this.pingQueue.clear(),this.kb=void 0}_tagPeers(e){let t=new ot,n=v0(()=>{let s=new ot(e.closest(e.localNodeId,z4).map(a=>a.peer)),i=s.difference(t),o=t.difference(s);Promise.resolve().then(async()=>{for(let a of i)await this.components.peerStore.merge(a,{tags:{[this.tagName]:{value:this.tagValue}}});for(let a of o)await this.components.peerStore.merge(a,{tags:{[this.tagName]:void 0}})}).catch(a=>{this.log.error("Could not update peer tags",a)}),t=s});e.addEventListener("added",s=>{n(),this.safeDispatchEvent("peer:add",{detail:s.detail.peer})}),e.addEventListener("removed",s=>{n(),this.safeDispatchEvent("peer:remove",{detail:s.detail.peer})})}async _onPing(e){if(!this.running)return;let{oldContacts:t,newContact:n}=e.detail,i=(await Promise.all(t.map(async o=>{let a=this.pingQueue.find(o.peer);return a!=null?a.join():this.pingQueue.add(async()=>{let c;try{let l={signal:AbortSignal.timeout(this.pingTimeout)};this.log("pinging old contact %p",o.peer),c=await(await this.components.connectionManager.openConnection(o.peer,l)).newStream(this.protocol,l);let u=Un(c);await u.write({type:M.PING},qe,l);let h=await u.read(qe,l);if(await u.unwrap().close(),h.type!==M.PING)throw new x(`Incorrect message type received, expected PING got ${h.type}`,"ERR_BAD_PING_RESPONSE");return!0}catch(l){return this.running&&this.kb!=null&&(this.log.error("could not ping peer %p",o.peer,l),this.log("evicting old contact after ping failed %p",o.peer),this.kb.remove(o.id)),c?.abort(l),!1}finally{this.metrics?.routingTableSize.update(this.size)}},{peerId:o.peer})}))).filter(o=>o).length;this.running&&i<t.length&&this.kb!=null&&(this.log("adding new contact %p",n.peer),this.kb.add(n))}get size(){return this.kb==null?0:this.kb.count()}async find(e){let t=await Ye(e),n=this.closestPeer(t);if(n!=null&&e.equals(n))return n}closestPeer(e){let t=this.closestPeers(e,1);if(t.length>0)return t[0]}closestPeers(e,t=this.kBucketSize){return this.kb==null?[]:this.kb.closest(e,t).map(s=>s.peer)}async add(e){if(this.kb==null)throw new Error("RoutingTable is not started");let t=await Ye(e);this.kb.add({id:t,peer:e}),this.log("added %p with kad id %b",e,t),this.metrics?.routingTableSize.update(this.size)}async remove(e){if(this.kb==null)throw new Error("RoutingTable is not started");let t=await Ye(e);this.kb.remove(t),this.metrics?.routingTableSize.update(this.size)}};var G4=[77591,22417,43971,28421,740,29829,71467,228973,196661,78537,27689,36431,44415,14362,19456,106025,96308,2882,49509,21149,87173,131409,75844,23676,121838,30291,17492,2953,7564,110620,129477,127283,53113,72417,165166,109690,21200,102125,24049,71504,90342,25307,72039,26812,26715,32264,133800,71161,88956,171987,51779,24425,16671,30251,186294,247761,14202,2121,8465,35024,4876,85917,169730,3638,256836,96184,943,18678,6583,52907,35807,112254,214097,18796,11595,9243,23554,887,268203,382004,24590,111335,11625,16619,29039,102425,69006,97976,92362,32552,63717,41433,128974,137630,59943,10019,13986,35430,33665,108037,43799,43280,38195,29078,58629,18265,14425,46832,235538,40830,77881,110717,58937,3463,325358,51300,47623,117252,19007,10170,20540,91237,294813,4951,79841,56232,36270,128547,69209,66275,100156,32063,73531,34439,80937,28892,44466,88595,216307,32583,49620,16605,82127,45807,21630,78726,20235,40163,111007,96926,5567,72083,21665,58844,39419,179767,48328,42662,51550,5251,37811,49608,81056,50854,55513,20922,18891,197409,164656,32593,71449,220474,58919,85682,67854,13758,35066,3565,61905,214793,119572,141419,21504,10302,27354,67003,46131,32668,15165,64871,34450,17821,2757,11452,34189,5160,12257,85523,560,53385,65887,119549,135620,312353,115979,122356,10867,193231,124537,54783,90675,120791,4715,142253,50943,17271,43358,25331,4917,120566,34580,12878,33786,160528,32523,4869,301307,104817,81491,23276,8832,97911,31265,52065,7998,49622,9715,43998,34091,84587,20664,69041,29419,53205,10838,58288,116145,6185,5154,141795,35924,21307,144738,43730,12085,8279,10002,119,133779,199668,72938,31768,39176,67875,38453,9700,44144,4121,116048,41733,12868,82669,92308,128,34262,11332,7712,90764,36141,13553,71312,77470,117314,96549,49135,23602,54468,28605,6327,62308,17171,67531,21319,14105,894,107722,46157,8503,51069,100472,45138,15246,14577,35609,191464,1757,13364,161349,32067,91705,81144,52339,5408,91066,21983,14157,100545,4372,26630,129112,1423,29676,213626,4397,88436,99190,6877,49958,26122,114348,60661,29818,293118,50042,179738,16400,163423,89627,31040,43973,36638,45952,5153,1894,109322,1898,134021,12402,112077,68309,190269,69866,31938,107383,11522,105232,11248,14868,39852,71707,186525,16530,38162,106212,11700,5130,16608,26998,59586,108399,230033,43683,48135,82179,2073,5015,196684,189293,16378,23452,8301,35640,11632,214551,29240,57644,33137,91949,55157,52384,117313,5090,17717,89668,49363,82238,241035,66216,29066,184088,97206,62820,26595,4241,135635,173672,8202,459,71355,146294,29587,3008,135385,141203,14803,6634,45094,69362,50925,546,51884,62011,83296,234584,44515,56050,89476,87751,19373,12691,149923,19794,13833,35846,87557,58339,2884,19145,25647,12224,11024,77338,64608,122297,53025,7205,36189,36294,170779,21750,7739,173883,75192,35664,224240,113121,30181,26267,27036,117827,92015,106516,55628,203549,67949,60462,60844,35911,20457,1820,920,19773,8738,73173,181993,38521,98254,76257,46008,92796,5384,26868,151566,22124,2411,15919,186872,180021,28099,152961,78811,80237,62352,102653,74259,184890,16792,123702,224945,29940,19512,75283,14059,112691,92811,233329,20411,138569,53341,109802,50600,134528,66747,5529,166531,31578,64732,67189,1596,126357,967,167999,206598,109752,119431,207825,78791,91938,10301,27311,24233,252343,28831,32812,66002,112267,90895,8786,8095,16824,22866,21813,60507,174833,19549,130985,117051,52110,6938,81923,123864,38061,919,18680,53534,46739,112893,161529,85429,26761,11900,81121,91968,15390,217947,56524,1713,6654,37089,85630,138866,61850,16491,75577,16884,98296,73523,6140,44645,6062,36366,29844,57946,37932,42472,5266,20834,19309,33753,127182,134259,35810,41805,45878,312001,14881,47757,49251,120050,44252,3708,25856,107864,120347,1228,36550,41682,34496,47025,8393,173365,246526,12894,161607,35670,90785,126572,2095,124731,157033,58694,554,12786,9642,4817,16136,47864,174698,66992,4639,69284,10625,40710,27763,51738,30404,264105,137904,109882,52487,42824,57514,2740,10479,146799,107390,16586,88038,174951,9410,16185,44158,5568,40658,46108,12763,97385,26175,108859,664,230732,67470,46663,14395,50750,141320,93140,15361,47997,55784,6791,307840,118569,107326,18056,58281,260415,54691,8790,73332,45633,7511,45674,143373,14031,11799,94491,35646,96544,14560,26049,32983,25791,83814,42094,231370,63955,139212,2359,169908,3108,183486,105867,28197,32941,124968,26402,88267,149768,23053,3078,19091,52924,25383,19209,111548,97361,3959,24880,235061,9099,24921,161254,151405,20508,7159,34381,20133,11434,74036,19974,34769,36585,1076,22454,17354,38727,235160,111547,96454,117448,156940,91330,37299,7310,26915,117060,51369,22620,61861,322264,106850,111694,15091,2624,40345,300446,177064,1707,27389,54792,327783,132669,183543,59003,17744,20603,151134,106923,53084,71803,279424,319816,11579,21946,16728,38274,72711,5085,83391,88646,40159,25027,34680,10752,12988,54126,30365,18338,100445,230674,44874,84974,143877,123253,139372,28082,91477,144002,13096,219729,46016,50029,42377,14601,6660,58244,58978,23918,88206,113611,64452,17541,41032,10942,12021,49189,10978,40175,37156,10947,71709,106894,112538,57007,137486,150608,152719,40615,7746,279716,13101,19524,28708,40578,72320,1096,182051,94527,51275,22833,45164,81917,77519,48508,5421,140302,37845,149830,5587,27579,5357,428725,248187,6326,206760,39814,32585,89923,44341,288753,284443,96368,31201,94189,119504,20359,52073,103216,179,27934,32801,96035,34111,34309,101326,18198,20704,210266,37643,27880,141873,106e3,19414,56614,167714,66483,107885,86602,4379,20796,75467,4987,5017,118857,26003,34308,114428,29198,6686,29697,73632,3739,69795,16798,41504,7207,30722,21436,36735,28067,28545,3239,11221,36031,41889,100010,19247,317673,29495,174554,6424,129725,53845,94986,7955,59676,2604,191497,19735,102214,62954,23844,11872,179525,261436,34492,428,78404,142035,16747,17246,27578,37021,33672,57944,26056,135760,2369,61674,122066,31327,19374,157065,40553,130982,69619,71290,38855,72100,92903,95940,51422,165999,65713,57873,50726,7288,20272,2081,42326,22624,81120,57914,79352,19447,1684,72302,11774,302559,161481,96396,13692,414988,3721,79066,56627,46883,21150,11747,12184,5856,113458,176117,84416,52079,27933,3354,59765,141359,2212,216309,2555,23458,196722,142463,45701,44548,28798,19418,215,29916,9396,10574,114226,84475,13520,18694,34056,4524,90302,62930,13539,19407,77209,7728,38088,9535,2263,23875,183945,17750,26274,67172,10585,28042,22199,7478,51331,66030,26774,192929,31434,25850,50197,52926,178158,4679,181256,70184,229600,9959,105594,72158,73974,2726,35085,78087,23284,35568,51713,155676,5401,27254,11966,17569,223253,71993,103357,111477,55722,30504,26034,46774,35392,36285,214814,41143,163465,1051,16094,81044,6636,76489,179102,20712,39178,35683,125177,54219,30617,52994,25324,50123,2543,87529,58995,10688,125199,12388,60158,125481,131646,7642,133350,65874,3438,97277,101450,10075,56344,116821,50778,60547,98016,106135,13859,14255,16300,77373,173521,8285,45932,37426,4054,114295,55947,7703,39114,52,51119,128135,19714,60715,9554,50492,88180,2823,118271,52993,122625,97919,23859,37895,25040,33614,32102,20431,3577,9275,15686,43031,157741,110358,1884,40291,125391,13736,5008,64881,87336,77381,70711,43032,49155,118587,70494,4318,10168,30126,12580,10524,280104,104001,145413,2862,84140,6603,106005,13566,12780,11251,42830,571,179910,82443,13146,469,42714,32591,265217,424024,92553,54721,134100,6007,15242,114681,59030,16718,85465,200214,85982,55174,165013,23493,56964,82529,109150,32706,27568,82442,5350,14976,13165,44890,60021,21343,33978,17264,4655,22328,27819,75730,16567,55483,14510,17926,45827,150609,3704,7385,272531,161543,76904,122163,52405,2039,19165,41623,14423,228354,3369,176360,85491,7122,35789,303724,4465,13628,2233,55311,118771,20713,10006,221519,45115,71021,35650,29775,7337,10864,20665,21142,1746,15080,1624,32449,10905,105743,229797,7701,3940,22997,178467,57208,389057,39683,59403,63344,63125,54847,69691,18336,56448,3362,37202,18282,29648,138224,35867,10495,5911,28814,26653,31514,176702,26550,45621,11734,4525,40543,73944,121080,27858,155561,14887,44670,30742,8796,107455,113472,56369,75581,183777,240095,133699,153299,8768,160464,26058,49078,103971,21875,71486,44888,17156,9678,89541,123019,102337,3972,83930,21245,87852,109660,287918,183019,686,10100,39177,283941,11274,24736,26793,26214,25995,77011,141580,4070,23742,46285,46632,30700,26669,19056,35951,115575,174034,56097,35463,87425,24575,44245,38701,82317,85922,281616,100333,147697,61503,7730,84330,8530,59917,61597,17173,9092,32658,90288,193136,39023,20381,56654,31132,7779,1919,1375,117128,30819,11169,40938,23935,115201,101155,151034,4835,11231,74550,89388,59951,91704,107312,167882,115062,12732,72738,88703,464019,158267,57995,60496,737,14371,123867,4174,243339,159946,7568,16025,134556,110916,38103,191,80226,88794,29688,27230,10454,76308,57647,77409,113483,66864,14745,19808,12023,46583,84805,16015,17102,2231,20611,3547,95740,250131,34559,108894,8498,15853,159169,148920,20942,2813,93160,45188,210613,45531,52587,149062,39782,28194,57849,60965,84954,89766,84453,100927,16501,27658,165311,103841,54192,207341,19558,20084,319622,5672,205467,98462,61849,36279,13609,147177,24726,165015,209489,59591,31157,6551,117580,75060,141146,277310,21072,22023,106474,63041,137443,122965,68371,5383,42146,98961,113467,30863,23794,4843,99630,30392,82679,13699,241612,33601,93146,24319,18643,32155,95669,40440,15333,34089,67799,142144,58245,38633,114531,117400,77861,188726,5507,2568,8853,10987,107222,2663,2421,11530,13345,30075,41785,118661,104786,17459,12490,16281,71936,193555,17431,5944,71758,26485,77317,20803,367167,158,7362,93430,11735,172445,46002,11532,54482,930,62911,2235,23004,179236,4764,101859,208113,22477,55163,95579,14098,67320,162556,90709,156949,3826,57492,4025,34092,87442,104565,6718,186015,28214,14209,10039,107186,233912,58877,81637,55265,39828,6194,145813,50831,105849,4974,88319,122296,10272,197216,95714,51540,72418,23324,91555,8743,140452,250249,51666,34124,7229,38592,129641,78169,174242,22464,149964,51450,14034,10026,95376,26190,120062,14401,8700,265,31386,143573,7203,229889,61567,4227,140981,2466,72052,10787,10062,30958,6099,38471,30103,23202,208101,70847,467,58934,32271,32984,36637,24107,30771,17109,73353,13650,2098,157040,67366,66904,106018,265380,107238,18535,44025,32681,144983,62505,91295,56120,3082,77508,10322,63023,36700,81885,224127,16721,45023,239261,111272,13852,7866,149243,204199,32309,22084,42029,38316,126644,104973,14406,43454,67322,61310,15789,40285,24026,181047,6301,70927,23319,115823,27248,66693,115875,278566,63007,146844,56841,59007,87368,180001,22370,42114,80605,12022,10374,308,25079,14689,12618,63368,7936,264973,212291,136713,95999,105801,18965,32075,48700,52230,35119,96912,32992,8586,16606,101333,101812,14969,39930,759,193090,27387,42914,12937,5058,62646,64528,38624,25743,37502,3716,4435,30352,178687,26461,132611,42002,138442,35833,59582,16345,8048,60319,49349,309,47800,49739,90482,26405,34470,63786,32479,85028,39866,47846,11649,23934,29466,2816,42864,31828,7410,74885,49632,47629,111801,90749,19536,18767,105764,59606,21223,10746,76298,22220,39408,7190,79654,64856,11602,82156,272765,17079,70089,245473,51813,184407,384678,1576,122249,5064,27481,6188,25790,74361,27541,318284,45430,31488,620,93579,45723,192118,22670,51913,4162,70244,35966,26397,16199,50899,209613,121702,287507,2993,36101,132229,67345,33062,76295,118628,78705,52316,34375,107083,107454,44863,127561,33964,3073,154010,190914,55967,39074,6272,31047,5550,41123,26154,98638,47110,19998,148091,50229,31329,59900,195442,19106,61347,73497,70015,682,45850,25776,38022,148951,6288,37411,232526,109277,27286,32342,9262,5220,16651,23175,46740,129438,78614,121925,66914,88710,127952,5563,21500,34521,10739,14863,191006,62956,17359,16749,67027,56284,69134,43301,35039,58883,54466,60823,404451,75743,59856,86979,7923,34273,83785,32142,7693,268986,197428,282681,17049,22346,22990,92245,107180,3357,37104,96724,49153,7683,31197,43267,82231,164276,23696,20848,188364,22309,24821,158707,1018,22514,70922,27792,45589,59709,10765,736,35218,63479,51987,24275,63588,55361,92929,81964,4658,20122,12330,44058,13065,311456,72224,8337,211229,38979,22590,138478,52757,32595,133600,8838,31549,94412,43391,90056,1585,94802,127271,6223,31889,137038,132910,2165,57616,230152,6080,10748,36737,74579,134062,50525,180532,119270,34556,76155,82394,52595,29258,31435,87820,67996,26943,183878,38007,2410,13526,180297,69856,3503,187396,167700,7838,16701,9199,56267,3661,37407,65994,23767,5708,62508,221700,67088,86978,46776,84434,32088,5612,9149,88244,21685,95151,46750,189612,2979,506311,2594,3628,40074,105039,78243,28523,6651,38058,71999,30992,12764,68261,108991,6165,26450,61961,13400,22426,7490,60890,109623,2070,12958,50355,67979,257096,7213,42578,52121,35716,65461,7516,124758,39268,302,64712,14977,1467,219452,2840,34229,11121,21602,19270,63574,8024,1532,17331,79839,78885,52029,180767,57957,6069,91265,61380,55767,8927,32881,287603,22149,35029,68876,6428,199567,46926,13412,104132,21434,366616,45060,110046,81924,128910,45886,52821,130416,29416,77342,21762,67329,121432,79924,11724,38625,81006,102033,28338,13326,3250,82056,82526,38212,21112,12382,111495,3263,7414,86274,93490,40844,30224,45212,24019,48411,71367,24941,76729,57776,3769,38114,202019,197745,31953,237533,33270,201580,255648,100798,44741,32241,98468,106931,10085,15090,170358,33154,66787,18819,69760,25061,234005,82660,6295,131975,16874,9076,4094,25005,17740,40908,19533,220019,44330,99792,50040,19619,13950,55228,24423,31253,95308,103177,184795,28590,82285,5059,3210,75525,49894,70007,56178,10580,36051,139681,21617,98736,3555,106306,164189,37352,63915,47824,24883,145530,61904,28444,11483,19837,145446,30420,112972,85939,11835,191233,2262,20705,58630,1753,148334,1197,144714,6887,11223,107667,60879,77914,4151,57417,81594,96681,169430,1784,20444,95138,254041,27038,596,7117,72808,13759,3353,126776,21074,55322,27081,36942,39547,139830,179275,4453,713,8722,71399,19204,25785,22794,23923,104114,11291,25458,102309,88396,75288,230440,206396,104551,58447,130857,37247,94734,31548,176529,226077,65159,20104,10096,66881,94191,237909,27109,37404,1520,27421,25220,113003,23423,24884,50585,6286,231877,150800,11789,3226,90004,60642,5053,202400,61442,132531,175329,57138,30116,103847,9973,75367,16452,32360,59119,21246,10191,164804,23305,61051,37348,154530,13214,5468,50403,66754,130976,50559,80515,14436,155492,84017,5472,43107,41240,2890,90431,70188,382,76234,48040,50211,281038,237007,32115,142178,1536,22761,96429,1811,31243,1679,49143,55209,17402,235054,61494,7462,77030,34925,87609,78002,9499,9027,73289,201078,101379,63544,27666,5469,10642,30029,49816,132979,95620,58086,351930,116300,2110,2043,30845,6154,11279,16727,4122,2277,27281,4971,3650,39060,61970,65951,39674,75686,38151,11370,130809,177895,32665,63725,122267,7857,39618,118483,44792,157755,178624,136994,24260,41308,22471,12404,21707,12486,30473,52781,50246,20247,39065,909,56825,103158,128603,31542,1089,41935,32744,12428,37963,84420,33134,72921,208449,42622,168151,127335,147107,46699,38216,12591,94342,85814,31423,24944,2605,87542,67473,192551,4496,56321,91819,17630,6300,256183,114569,202090,33209,35289,34897,24967,40520,43470,5344,10199,34810,14283,10381,10017,62923,49924,23233,64539,13051,35686,19698,11570,135555,120868,44924,87065,52318,52335,47586,140906,245885,109834,78668,9065,46990,25258,72022,61243,40838,4545,146387,10537,11557,17470,36930,68104,46711,24264,79401,81043,18225,120488,24746,84338,81652,28266,13776,21878,46973,1047,230465,73357,95777,24973,210160,62210,58404,110633,169651,6937,41870,9909,26822,191062,76553,27519,96256,239070,2478,205678,67955,58532,20601,50120,19148,78501,195724,110740,8249,109665,27446,30568,57631,31425,49752,32820,65504,50079,3663,102256,219898,23849,211315,14645,4359,91767,9528,12449,49366,7941,49763,107848,8930,27086,50686,9744,10447,81935,39513,46514,1670,29229,6172,22312,137280,97759,9806,14445,22976,56458,73391,34983,93760,174219,52573,33149,59747,2429,136277,75123,165263,91040,7446,57632,48633,97140,246081,84766,151684,79918,93268,120346,54059,54875,77858,32996,103590,45276,11968,19600,25849,17159,132907,42828,16817,4913,99462,103303,27395,5737,74184,20749,21160,14377,77062,131403,158735,10999,27799,77785,9320,34366,51593,61070,33746,47048,29268,36675,30262,53297,9832,82e3,20188,122292,39917,7331,18160,68301,185935,134830,15031,4935,10004,165845,185534,46923,30109,44134,122631,18874,22903,112790,26561,18549,348902,82871,140345,255565,135390,63556,103747,145055,179600,145662,296111,61661,211987,23952,52342,126343,48450,32919,44277,82185,9591,62139,205363,376969,394874,108461,18040,120885,14798,39863,16571,16794,58271,81025,55206,14640,118656,6361,44092,85970,6262,153863,108244,180200,72264,79947,38044,10050,5735,61221,80712,5471,115689,11391,11661,184257,20010,60116,30320,19327,134598,45455,27542,18004,125092,452272,1549,91523,46567,180063,156026,2608,11174,58848,37788,65907,80194,30490,5786,40775,119519,106241,11323,156297,8425,61495,2617,29675,2425,59886,112582,49142,59618,4863,50597,86710,50650,168632,27693,85641,83643,18993,25768,84284,28090,93592,36627,312804,43381,9887,9402,100931,97165,3311,173330,66805,28935,4963,184460,3201,78102,19126,21607,37496,24938,22615,16153,32862,134792,153318,61120,6067,2812,12826,12792,23825,37559,64662,202250,102694,155488,85881,149193,46233,65383,15521,106982,11358,176786,25752,39717,34208,24510,32464,77742,39371,72028,138229,60688,71386,102834,132477,2208,11548,63670,271279,28351,30338,38620,32491,99845,143885,152266,13252,2825,178663,108097,1775,78201,14897,113573,163346,62292,171129,22183,96598,38733,64971,166776,117445,9968,146393,44677,74867,20908,97328,12761,25656,26785,9148,112344,26115,99176,110121,22437,49547,6180,79320,5835,31392,43328,33377,75870,119860,69497,80273,7325,155219,43167,111173,28347,20222,3763,71752,55041,47252,14618,28088,15012,97805,194698,54636,2036,41349,6173,96604,61530,51859,43782,13361,24334,22668,24792,7070,23441,16789,3209,36211,208475,26242,32880,122181,182407,21444,31060,88459,29929,77907,12716,10934,97005,20599,31690,8403,58445,30303,22700,10336,86731,103115,337709,72556,46788,112566,47684,67089,53548,36874,56487,41387,125985,26893,40071,106683,73712,18787,40105,72992,67246,137276,50802,36790,70328,138827,22466,39263,183295,29858,50975,9322,57397,10654,24364,30383,55799,41600,23584,127295,296610,129078,143558,244131,86397,36049,1085,80677,3820,108139,5476,34767,24683,7758,13060,7239,131671,250593,59556,103392,29810,4188,252323,39404,116877,7651,43600,40338,13554,157253,39196,25978,144387,61211,234,50104,6129,10449,93777,9240,356378,274148,4439,72970,3724,147770,78680,62570,115877,40027,40547,36817,224392,64609,34795,165027,67440,2477,37206,23431,50754,164797,46018,94995,170982,27051,7957,22767,3674,27900,56419,18930,60701,41302,2692,84749,339721,61996,111094,80221,50129,1045,8153,62945,19202,8250,37208,37418,32560,79477,41106,88569,33963,36693,5892,30570,1581,66471,49647,11922,160717,29442,5643,114865,82962,95982,132098,22633,22838,94726,54556,28566,205039,162340,33216,16849,35847,221339,94851,26533,71469,1805,3804,12935,45483,71020,36310,65381,192960,34240,35165,59773,1248,46954,155332,96864,4246,388800,16129,57133,74592,44807,442014,38203,42574,80818,91592,26377,36424,65760,977,77387,22628,147610,28018,30561,98454,6969,119628,63648,18170,36854,26601,64018,22027,37279,51395,152934,21153,9430,58760,194742,5330,55115,34158,28917,174111,13171,122326,1526,43896,66094,25325,4234,148354,11450,275,18999,112191,44365,22723,68409,8733,57746,96565,75007,14196,108844,29475,88599,177563,100792,106156,86323,93726,14248,135341,194131,40126,47099,14779,8272,39597,95983,171398,65882,28052,10393,47213,40689,22120,72212,106829,34964,109146,753,648,21660,30047,17527,181025,5619,145357,4085,216883,9359,186951,24779,53931,24545,36197,223296,62628,168101,4243,107313,30321,26642,13049,51059,31027,107912,807,73550,26551,84369,122422,165872,49754,74213,234264,33151,52014,33100,87183,22365,52500,40013,23302,5652,72723,21404,26107,48434,587,94049,168493,96418,32871,70860,31709,25128,443,71597,166253,15670,70994,26341,133675,28280,75491,54756,47955,56028,26182,11952,113272,472197,64640,110753,17919,337,50642,22576,142,87371,53391,93210,126694,15285,19642,85667,14148,1506,42092,52962,33243,11970,20734,135843,57044,58880,13002,219134,22876,64754,232519,4257,43120,321573,24799,64526,124728,52579,81472,70831,276848,17403,74359,23021,182101,74597,23744,148267,12055,7976,5349,11772,67540,167347,65318,18720,127832,108238,22828,90233,9987,259080,118185,73209,79270,13775,90100,137742,90799,70569,15699,19961,9087,67475,57872,39731,8810,134897,131868,146849,19898,3334,2281,167061,91073,60356,467742,74712,188,53179,137679,92769,29241,9537,132595,80119,1041,88962,5976,40171,44911,102859,139059,104558,98987,47761,19272,71472,113864,175377,73338,10857,23402,23758,1591,139864,5644,4076,118760,16427,134198,18853,20291,100849,37423,22038,36677,19071,195521,57445,11069,31869,55718,66882,148490,44,41296,75242,49704,166810,9906,20943,122258,49112,105667,15969,10344,6408,187694,21399,72742,58970,14867,14376,81889,41856,23225,15042,56993,16074,131389,74276,72407,53875,383108,53597,37363,68993,44854,122548,430927,198279,38430,80409,12245,2981,628,2818,17760,37437,238229,7968,46892,2200,3730,34190,65983,37959,112291,87850,70827,6522,20750,73913,111621,41652,19587,2780,58668,25916,85259,18200,168962,95781,42445,102050,7776,57662,103313,47742,96358,41964,66174,100396,29069,204735,19679,27978,7479,40264,22534,61183,36081,107436,58223,14680,23002,101311,24716,124108,12908,5646,31750,40380,14215,232799,102772,14122,96775,61398,50917,12096,149880,67833,598749,124194,155871,49216,790,14677,65319,56917,7440,145744,95701,12206,49405,129269,76199,45732,9767,11058,9047,210885,11051,7392,26307,2130,8132,147526,20802,232698,115660,50060,59789,57344,107623,80343,112676,23291,9866,160971,34032,118291,15719,59730,164911,28975,2659,58046,78480,21854,66209,53863,109085,116045,29021,46481,107552,22130,18764,70254,31272,11300,52460,43933,84738,20721,53869,190840,79673,105300,7561,321817,66924,13940,33281,101046,183181,32176,71878,5678,62924,79535,56646,40303,19559,27703,93042,73368,42187,3670,37376,46440,7023,36816,109628,20680,5940,276440,275233,170848,112093,136996,14984,20226,111441,77693,112960,48577,39370,55707,50314,123404,26570,54281,61372,123391,4857,35928,246740,132507,106646,44241,7196,92258,9825,37688,51197,303141,5590,15476,132986,10955,85782,34486,26696,7991,28813,18858,39546,11703,11365,38185,5716,93555,11925,40121,60002,6985,10976,171384,3887,43394,13337,56346,6381,252336,39573,75042,53711,1028,31781,44295,95925,131713,7214,68125,43571,70954,213234,1628,8760,13391,65485,17320,56038,1710,25248,60803,57399,19839,3870,326,281556,50945,72400,21460,316244,75619,56246,98775,481,13513,55765,50427,7388,123519,32929,57908,27124,61316,101097,57467,30228,48792,10788,20402,37318,50526,155730,34456,158065,145305,17832,43733,64052,4506,35072,205355,177028,184004,187081,68616,35938,83703,10367,36892,93186,260137,51934,89970,4985,23445,26755,21558,7948,78741,23376,124405,85594,68596,57536,49351,12619,56593,132668,99924,109728,71844,71935,196018,65464,17617,14987,89701,143773,33997,8687,22701,33258,2914,4436,72108,85610,9671,49067,2327,82988,1361,1672,44033,35777,30269,24057,10605,82236,616,15793,13919,47249,112086,116698,9484,80207,90574,33304,68624,93127,56101,42210,160929,4827,38995,38095,4701,125119,5027,33680,9236,231236,14135,87837,23318,70261,78893,30151,81482,14332,1084,74256,27532,46644,79185,3148,62615,6981,55672,31668,36825,1849,14536,37446,14738,23779,43058,162749,72199,1168,21346,5592,85932,85302,9668,18351,57135,150360,2080,228015,77953,34670,119302,151751,31009,106725,84265,45214,59289,74178,113071,263206,111009,4021,44449,188119,192629,123592,392506,292847,114487,12831,205858,9852,20780,79648,75767,357014,97721,18166,21005,67950,33226,204009,16536,2987,11335,66717,144910,47950,17262,55060,15063,2934,51038,26775,178497,66008,3427,49433,128592,20036,157553,63861,3089,23015,51210,28696,35933,49942,71135,231518,99620,17248,21835,176536,20676,16944,38700,165831,233253,295625,36723,13023,52745,10907,19423,67972,125868,95473,82875,1183,108455,52685,33417,64095,21433,52438,33191,127809,44505,211823,7810,2752,95548,162031,7185,91196,47563,61721,33359,17897,23682,42806,178101,22874,49707,199897,75419,82456,8618,11171,79712,116847,18783,44190,46564,5346,59046,95032,7893,14916,3214,26800,24172,121453,34362,10250,17408,18888,4840,68696,22831,13162,36005,32512,14800,62357,41723,45046,27247,37486,5372,2564,34261,298500,66509,133920,89138,31305,117697,19097,108304,81386,84106,23802,46411,63304,946,51417,41777,41041,19501,115864,60743,294354,37955,94165,18116,1156,17937,20645,57114,90804,58042,48643,92288,9861,2557,88546,61333,101008,12853,5148,87856,4152,144503,73841,18718,9789,147565,10846,42085,12789,30223,8993,56352,67203,2448,28215,6052,23540,126319,75933,36689,80235,23231,23561,21383,38800,77548,102798,21234,31468,158608,46188,63960,191679,8051,67014,11185,170078,42186,28827,34777,41930,212079,12421,34750,24111,110344,73918,45171,70826,141949,40063,23979,24254,37309,26724,27179,24718,83648,54938,14591,17425,29525,102675,48975,48654,12316,8929,60640,41709,50168,63264,89812,50716,48632,38755,138583,160123,55579,71829,24230,233277,46322,39650,166388,34718,24108,98252,7031,106695,62498,18258,35062,217827,78731,34824,33354,19520,60852,2432,60224,8587,2836,62955,702,20227,42285,40560,95592,62486,11094,53035,143291,18842,46177,77994,1770,9657,107422,172915,32655,128716,25886,25164,156740,119928,165875,85817,11007,89110,33956,12652,65156,180266,8494,36889,19958,20955,96,1264,118288,135769,44754,86671,5632,19026,168220,289120,33569,93821,66144,70635,7687,5642,2714,55445,56636,71545,184182,93133,7332,37389,12643,52315,22729,11014,158742,17050,152889,50178,34601,41945,52136,9948,26914,63548,95721,115951,40759,8960,158258,38938,49232,48325,42234,81523,253019,66128,40978,20048,238048,38760,62928,122560,118532,43687,137472,163689,26680,9878,17448,51035,16211,60834,36749,29178,14241,59868,150086,2305,26477,42422,34342,165341,83279,33894,14257,29928,12743,13957,125571,89134,66712,10952,16507,147839,30146,7249,16565,45399,39874,114565,215780,31990,230881,171477,102,196546,44538,10880,84948,281705,86651,10617,31395,2342,453658,43569,60561,132901,21845,17727,58556,258242,22262,58728,4008,77997,11806,37431,30599,81375,109137,185787,114085,217292,97453,169085,30593,60212,11544,102056,65580,2384,91655,4855,95725,7295,157994,16228,20669,53276,141590,105246,17334,25440,76067,17967,39321,38911,11362,28559,63807,21627,26468,85816,40120,1025,15234,58319,69516,66512,124548,75845,78873,22137,46681,51242,85683,32909,76747,35555,43396,101465,1765,73094,1077,2962,39028,66777,57831,42048,15828,13962,36041,63657,52412,5242,58846,2141,5506,219012,134451,3936,182230,17558,17153,152237,22621,49377,170216,35257,68233,65374,6510,11126,212151,7184,2480,22517,3437,33073,30156,16557,3768,55067,86829,91e3,12350,148650,66017,79424,70885,49066,28250,21369,51213,34533,11510,3258,18176,18465,84413,6315,36411,163765,4346,356,107618,598,13727,285026,162695,8749,14583,7132,63521,184253,32378,25991,5604,30961,53675,4874,84693,5086,34811,26978,56564,7904,33519,51221,113942,69253,6664,125563,22055,220680,102008,742,51930,19494,176108,44424,35123,13025,75685,11759,74335,22250,181453,131147,16984,132115,154311,11991,76452,52609,85351,196,30969,9198,74919,2529,56838,71779,29187,116304,3504,62330,41190,86153,28393,254926,104228,105189,13264,84359,3574,12415,8534,57147,10175,188174,59504,60932,66318,16407,107921,17638,99103,49278,28403,39786,145865,8462,3558,43406,142271,29139,21989,36552,93955,72365,7176,13556,106185,37957,321774,17782,129017,51154,27938,24952,1935,39366,2791,33489,41582,56078,24558,9311,5449,218786,27808,190429,68013,36020,86003,29735,3404,87348,119357,115714,2324,86796,81973,40992,43376,93621,28784,16808,36367,2517,2909,191926,24978,55303,53308,205724,60068,3098,21375,64784,23949,26579,63121,12319,80145,39967,97861,6757,70143,67642,37082,34698,69140,122883,46151,62187,80934,429,19437,135071,137885,222647,13331,154065,327,61778,74257,40116,37493,14855,85079,237641,42342,102164,199965,71204,4662,29368,5042,113914,122214,8955,13149,102503,43173,5659,163787,69003,307084,63392,171080,21390,81918,86666,36622,24126,28887,5736,28054,207170,163428,79891,346467,95363,38980,111806,80828,9200,19288,294896,114468,87405,111715,141705,7015,72754,68463,48738,243147,33397,101210,37051,98801,82847,20397,4940,185559,18716,54718,83491,11725,40803,1128,12128,23060,5174,7745,67007,46701,1571,27807,180186,256996,18975,16837,7877,212758,250379,15440,87954,57755,24719,124057,83461,258,50864,8874,29038,71289,31627,15429,9005,4061,113851,107716,82819,13651,79656,117851,17539,111446,12938,39724,190787,4352,15402,21070,62708,8539,23777,73853,13552,38810,86117,16285,56400,1718,75342,142863,29033,378,110113,180321,32586,23606,26393,160984,207987,23783,8406,16904,24596,47274,11693,46539,60524,78595,48423,31718,20170,9009,146268,15183,191060,172765,1349,138436,37365,10970,40509,225817,20021,70394,152138,21541,66559,66544,89352,2725,17258,91345,7313,3815,115868,8660,40362,4071,103524,39388,118275,21950,6549,38226,32754,209574,29201,43495,18028,20296,40597,18370,47520,202450,24134,2219,8195,69545,38041,136934,46374,19041,159811,84865,58620,846,98749,13569,30714,97246,32186,4479,27355,92973,35214,151491,75963,37631,1561,27200,238083,23182,60756,12291,25766,39355,102333,87362,65741,59906,19538,201575,48772,102938,24438,292580,39964,66366,9004,61379,50548,37622,38732,28379,68180,76622,17488,69849,5963,7219,48143,43413,55358,540,58691,29506,19245,52193,48621,5518,13048,118625,44755,191081,42061,89197,2259,60665,66994,71210,51232,3585,142096,55024,7892,8345,58653,463307,65658,64319,137941,136323,53499,12746,43492,6978,95163,29925,60175,5128,7352,41463,184756,121146,20473,18426,4598,5309,54580,14277,121151,10691,56711,43880,63409,76682,11830,172218,264898,32632,66536,81062,31649,25788,92774,60222,11100,63159,9432,224657,25240,53613,152,138620,163829,2397,85345,12501,37507,64932,38575,43522,65789,80198,78796,35226,3851,108891,73311,3060,28391,93671,39663,46142,30982,66041,37281,68157,26553,71872,81142,211527,39747,118119,22695,2859,11066,20232,168911,7933,197005,17066,111071,44434,133994,120798,12766,227798,45756,132852,29917,36076,55352,65281,129800,41958,18944,84678,18580,168093,132621,39997,54092,27740,32354,3770,114118,103242,43918,15899,18574,145944,3190,123469,219903,24169,100571,62403,16776,92779,14535,17168,16475,14304,37231,1712,28218,242754,61688,28980,1318,51359,222657,99200,67989,31772,23932,35351,201251,49041,27306,19128,40135,3986,77333,19649,120683,151927,21081,7076,78375,77501,101599,8011,89585,96715,58179,5378,102138,106793,26051,217276,4197,16297,27014,46721,13322,22806,5278,29629,70632,9647,71519,58818,40603,128530,8903,36770,56900,31483,26935,43845,34265,34920,87658,6114,84767,64250,47318,50720,19264,162514,33357,13117,6705,46696,75032,71054,87004,42035,69138,11903,99854,102328,19611,34525,69312,6431,49842,101600,133178,108751,41829,89939,225664,48916,99556,9195,130387,5960,36857,116724,53518,94002,39077,53996,6945,22261,64291,8314,152785,57588,16522,9091,5048,87671,35441,39509,1945,12423,158923,178413,37549,14095,1475,73188,62878,4819,24012,68534,42606,4010,120809,57497,59564,101758,103718,32701,80116,12345,95834,46918,21468,53213,15665,31200,3867,5140,96013,250744,21016,10069,13968,35449,180829,27683,39704,59956,22893,3115,26293,32785,75934,62445,141162,62720,2018,83638,19949,114012,95006,3330,99829,130935,309272,9565,55874,121727,37017,23586,319858,40970,27602,8625,112329,61060,100088,118525,25922,16232,1907,60671,51583,44553,80993,5262,94679,8676,940,20736,11823,3020,16476,12340,152600,97416,3703,25744,66826,16245,16876,46446,84798,74227,176020,45192,61955,75496,23946,23626,40372,26036,6149,11822,30582,16541,41914,82385,232823,40921,80773,14930,3631,7517,39619,4348,36180,126106,138939,62611,1477,113512,47321,25052,14546,118881,29060,23589,128322,36795,18401,137921,104699,267929,36194,172791,18113,4766,188215,30083,332586,94089,5805,77909,22194,68234,154976,43220,40660,70001,184893,138095,11128,103010,22663,5108,212615,8485,5565,49222,54614,26530,42639,16319,55062,152662,105595,21114,22216,10294,68158,10436,86950,7206,62115,3977,3657,59874,456,118617,18156,106663,112229,80992,17442,8217,55551,5133,34344,251927,51153,39364,201321,7816,66803,23057,156724,145664,14276,95705,979,2796,6875,13429,212525,50602,26276,28284,3424,19465,52397,46963,31420,51399,206476,92317,48851,637,100820,83349,10317,60227,21972,6908,282439,32857,224767,95629,83882,42106,87338,69757,29840,68709,37665,45244,114577,49188,175943,54009,186746,106158,70168,3358,234002,50555,9221,129338,9562,20118,32923,78479,118280,65752,4977,10474,102174,60947,129006,10570,83451,8598,8078,159367,123785,80438,16742,5905,5281,181513,42402,6977,163136,93179,42191,14968,50421,112401,105440,33456,57347,121611,4221,94954,36517,24046,27796,6255,33394,72990,135408,116627,1233,57874,25654,95419,68156,401399,313338,55208,45573,93124,119251,47200,38196,11909,130667,45391,73904,64964,167846,4137,115606,52036,62214,7969,160925,7187,1132,134835,40309,73195,64494,80472,444841,61111,26500,45323,40743,53625,52797,22659,15631,29739,36706,28841,39147,102836,26794,10536,14845,87305,45874,12241,127587,83833,57183,79722,30844,41304,84655,20825,92500,3722,25655,27811,10157,81634,31362,34088,92487,70123,22190,185100,72658,139035,192523,88241,2078,230490,44528,85638,100198,22088,29982,291233,241062,13865,4445,137791,37835,107218,31726,19718,38234,72528,23046,19177,66695,5109,17251,28077,5617,21554,47839,72425,133825,1486,73065,181275,141508,21768,62971,63082,2512,34200,9904,120309,6392,91243,68416,268253,41199,116757,138551,185526,41246,28986,4093,19057,17295,4148,245766,122360,35356,112075,20301,75441,10998,7977,19769,62922,937,63547,100196,26427,157820,20983,236696,22935,8140,90315,156004,47204,140973,7726,45097,52725,22636,23436,257282,105247,522,88389,216031,202204,46812,211666,19693,68828,81691,45925,11256,30292,372,5236,167826,88328,232776,151611,5360,82104,18841,80393,25465,18285,20320,72377,31730,33160,45803,38715,27705,37379,24163,18360,103586,4015,32305,269494,91252,20080,36567,54650,7797,57073,12650,31164,42209,6375,261663,105528,81661,106002,2800,5375,17247,43151,4442,15727,194619,100855,144898,62320,78465,39929,16454,1967,28311,61363,17219,9395,8745,121445,76939,80385,162380,22009,54191,44248,16299,122830,48151,74429,78291,64755,14238,44966,2511,17712,67954,93583,829,105899,49935,84750,11591,33185,85447,42717,27409,208542,28965,62052,52525,5597,25694,65594,16343,63224,276188,12475,9331,127507,38522,57287,24128,133161,79723,105548,133695,48917,27558,43278,46520,13778,141954,110785,83366,17715,46317,105763,66298,147013,41086,94180,16478,220447,44611,730,19722,78975,117889,125643,26254,16574,18480,65006,15806,38549,246418,46052,36056,8440,34984,30170,3163,59800,4458,115442,4283,41970,33507,104078,1653,22,121158,276486,3655,6338,24048,133421,23641,2161,24422,36006,8086,10675,181474,12307,29514,59143,14729,52509,87128,122470,19446,80852,33314,24573,119864,14237,9652,57779,6612,51851,15284,98871,90581,124466,156831,21190,22015,71380,161906,87247,69201,18392,17908,108470,72962,40719,14338,17911,95260,43339,20610,78916,20710,72451,11315,31448,17263,58853,178878,48111,116002,45497,80506,82605,85880,36300,121755,25215,36118,301929,88728,405223,276136,553,34704,212438,49970,78329,922,20711,25036,257130,38295,145369,18128,15385,30829,55656,48345,8012,3561,28004,122041,192900,58338,112508,41085,29976,87040,47117,23905,4336,92061,138880,97407,42083,172121,6256,25192,172671,5,93568,1420,12677,31605,56743,40620,6015,78415,231077,31298,80026,13902,19048,24924,170586,32955,176119,87859,36731,6773,27711,24658,26475,115216,133207,93250,95820,88522,8317,5714,124047,55219,86860,19677,23961,22928,162209,8904,225992,359835,56084,96201,29392,96558,86071,93643,55114,13347,8183,95129,82012,2017,123336,34219,115554,157159,47747,101684,41008,18735,193781,104151,226906,7552,179874,124113,31159,21162,44010,14771,51268,166128,31382,73124,77438,92830,205709,12113,1292,38937,13114,1334,2118,15597,69581,14449,21934,76618,48728,67038,14967,51495,24243,87736,147249,26720,11119,46063,43749,5843,44147,152629,133428,65703,14269,45604,57982,28672,55616,45957,8438,95433,37698,220862,132034,39456,61870,4161,26501,73560,56418,9845,4654,20916,10456,88920,119358,9015,65931,96507,48029,38534,21676,109081,43078,34943,25089,6131,28766,23665,5477,10255,16695,67,45778,42443,42770,29534,23733,100513,62617,42630,48746,14191,43753,50295,26007,8792,57243,43119,54725,164253,58250,112304,131796,25165,4651,3188,24831,47748,3705,19540,13211,102095,5593,18699,23666,32005,117571,33541,60584,74573,86311,99443,25172,27222,168938,7143,11853,53560,18834,19960,86522,28217,53266,117700,72989,34323,18721,66450,34346,74056,47217,202002,46269,9429,68582,75458,37823,82843,96652,32549,145144,27958,19820,158086,31955,201406,135379,31207,192545,12950,51704,9094,248263,76147,64028,110009,79407,89345,99284,223492,47966,26848,15359,201137,2861,110507,71231,72297,31851,118777,71039,151051,240855,16333,50766,14727,7939,4149,80908,418780,88378,59276,1327,7284,38576,79814,65820,42199,84860,49574,62596,12396,70598,40117,8648,7994,16836,7630,14047,359699,106878,525,29037,28064,13380,11675,50669,74216,103539,180314,27449,56299,172344,19274,7301,246099,32043,19422,36506,129317,6806,30140,4614,46639,66926,932,86600,6322,27847,233103,10541,39025,34887,3517,12972,26220,2031,66561,115015,48658,47596,12714,33845,3893,16165,35237,89983,14769,11962,147224,47018,29977,27979,5552,82338,86023,131368,1218,24853,237840,132193,15455,40873,3668,65351,53388,15229,59889,272245,47934,11858,34347,18038,90853,86981,300602,19343,114181,29362,84921,6095,106059,79472,38015,1206,48741,6208,8e4,21916,17423,6002,108083,24479,34931,56661,9511,26995,100694,163853,35997,81254,58321,18919,171890,86877,91341,74503,70477,53412,7027,59281,39892,131302,5864,15947,61301,67466,162369,47956,27874,35624,282324,21270,111847,102548,41482,30955,116737,28264,8592,55458,22301,75090,29821,30697,51709,3041,19208,8038,24634,30467,87509,126428,19389,18814,152686,20701,83474,45832,80891,105808,11378,153223,120770,98186,150633,49838,9141,12755,30962,5260,74490,21256,31678,65062,33326,289838,187831,20595,89768,2805,58535,10844,70085,12090,2451,138068,98544,24461,4511,6754,41684,28203,3383,65355,82833,30161,83924,234361,128424,28921,222594,33975,125491,34069,11508,67464,144226,41850,98703,34371,7901,21254,38398,65651,23549,53883,213340,123269,12028,71764,177701,28758,2623,68395,11549,15232,68603,9660,63116,36079,57093,31198,20475,48467,89984,35619,186847,107469,31389,43631,73867,41949,68841,114250,1605,30564,63403,17588,27680,99533,12641,70325,50428,73426,78379,11855,91651,72081,91720,60198,15743,12065,83398,140046,6761,46598,45900,5068,886,62448,148968,37347,19405,9680,15819,43496,63370,75667,163700,37639,3633,22774,34341,183131,134335,37200,23915,7054,14194,12970,26438,13350,285521,25594,8219,104410,91039,168804,138480,149734,15907,33818,61132,60082,4622,110187,56736,13551,73571,3945,73463,65498,17758,263266,17593,2710,27585,54469,38200,45367,63754,28881,3473,12791,98287,31895,65787,4463,94536,24951,36332,59901,28803,52130,86403,7668,181822,74831,18977,9850,177206,145485,109798,7292,31421,26280,77211,58511,12507,127004,11113,147,8729,56208,43066,79926,129937,31345,83947,39915,46146,98763,42566,1337,13192,18323,105163,80570,117753,16555,72883,11077,159438,40764,70933,83329,26066,12276,72059,21655,173836,126713,69454,153482,91585,70644,102558,110483,6764,127864,190133,3961,101798,20945,71138,82402,90884,69669,44753,923,16939,59700,164258,25969,27082,31399,43846,6306,246093,51342,6153,151581,202801,182731,56475,162188,89426,141356,14355,121815,27536,28023,65257,77523,106668,127314,24947,12790,38796,169698,23555,10725,44573,183083,42088,62716,43265,105958,32050,44067,50118,1668,3874,6243,318411,16599,1691,94999,52378,28671,216728,123258,2059,34969,69225,5913,136280,171443,141515,91662,22175,135282,80020,92270,1663,4808,4482,3495,34691,5226,109830,108512,17342,107488,11606,123190,100247,29666,146527,113014,15794,30894,13224,39585,243192,22351,9903,7836,47699,11078,25468,122291,48821,26780,122679,75521,81450,630,4895,92900,55074,74293,17441,3563,111657,103102,51613,12318,52370,36191,68245,34269,40445,41354,122901,168604,182500,62012,42557,11259,24428,115113,86345,12362,3909,78430,86852,134602,20459,47853,93879,22577,7659,3688,38555,13349,17381,56715,91639,12493,10895,92438,3142,37057,28928,2004,36427,32268,34222,209974,10432,67436,41989,173518,107930,27079,62729,30908,55558,5828,45031,14902,53546,8204,144263,60255,14520,88212,86582,109589,69356,8064,47449,8505,66558,16886,4844,52817,111260,215129,12941,91118,650,20770,6273,73089,40618,62790,2873,35002,14023,97208,19386,102646,36993,143736,135457,35385,113601,17893,32627,84439,100619,56016,6581,57264,172160,45452,111710,203627,70131,24100,322787,1996,35665,70078,22358,90922,83658,4097,63200,58499,14542,99153,52159,6615,12414,63415,31986,16823,1579,65405,137809,8841,16898,48082,259,33014,42375,12260,179850,73667,91389,98882,29532,17311,326251,41092,5928,20742,44964,48019,43505,9317,49265,6643,192712,48424,163487,19861,20113,70848,31928,105333,23685,78563,14638,54755,7158,24142,44018,20774,125255,20331,24280,10163,1285,2336,39851,4299,117269,46714,63816,87779,159624,11731,9971,990,137317,108831,50994,74554,162680,23640,131597,146962,170620,34829,91205,21184,1913,63616,18427,93136,156592,17519,67565,115882,138220,78622,88535,18115,2711,33554,109492,54298,971,24914,25863,36363,45715,27099,194995,14299,178181,111488,72395,322385,157719,130787,11897,81843,83999,11369,49280,118604,40922,61332,110343,53407,75639,40582,300440,54722,25637,13694,48248,48278,194521,56203,52779,48783,72627,10953,376,16733,280238,26351,230789,15132,25168,137270,3588,63704,73376,94031,74284,19443,159557,9697,39901,13351,119050,15406,146455,3460,29556,75195,37673,102524,92329,47289,98413,15311,100684,56345,7116,95480,11590,7200,167,23610,58426,17730,136656,27944,53151,2701,8824,103124,3017,90744,113588,53216,79736,65940,26931,498,29568,80540,143543,21292,1740,59268,16561,180816,42323,50174,40890,52866,10703,57169,4700,17191,4424,93511,49698,166650,26972,48631,165169,82879,69326,202970,4007,2376,231325,139592,22119,62851,37504,68816,58345,67398,186643,43331,277416,53749,15746,23102,17432,4793,151138,48822,54265,48203,198688,14305,54287,2291,18018,113378,123260,7180,97549,87027,120085,2920,76080,8190,102005,5641,64580,14955,59802,54028,58884,19367,81779,412567,85957,97053,103637,78871,29364,27637,141728,4767,30686,112738,130146,42745,12730,105040,14844,232,210944,36581,152317,135543,29744,3129,55647,58149,46319,27265,17499,28005,59948,7170,34138,5702,293047,110892,408,91760,218674,18469,46095,81403,14389,4610,35672,73060,11006,74848,104820,118143,190357,20043,105358,141735,5115,27093,45924,123073,52599,29433,9616,238350,78610,24851,58858,26769,31969,24613,18294,4982,32735,39639,143563,112073,202205,12567,4873,88601,44897,81503,101648,81362,34662,85277,17574,48173,21435,221188,40215,39576,80786,26544,64668,81841,10731,37733,247986,149188,127703,495,18382,54388,72446,43071,30974,198723,89608,41360,190,33045,8386,31658,19992,237838,119015,137622,50890,100913,6460,116233,267230,26621,104129,65114,14190,41542,14888,85962,23342,23041,26453,43725,71809,45186,4770,46452,53894,56616,221286,18973,9038,109299,55365,19366,26863,18808,60909,69353,41738,83463,12100,68561,72860,3980,13796,49340,12332,31311,27418,4255,53430,18976,45523,510,14224,30477,26581,4530,3651,101663,139840,22709,150861,31996,63923,120623,262522,3076,10528,2929,14672,130238,18087,9816,121894,100308,25085,55111,14565,18952,53293,2042,369988,23674,61789,133529,28783,108293,35477,47119,36448,71049,40015,33055,78598,198442,1833,159937,40654,77444,189245,113153,8621,18599,38553,35223,166072,2375,11659,21786,89523,6032,12116,63046,159398,18454,3678,32521,47626,11411,103527,38896,42946,15696,26370,10185,8413,37080,165583,4331,63555,14907,72220,50056,6623,62236,36565,49783,10049,17503,100581,55951,146244,24724,9626,17969,25524,109300,173965,99994,101056,46459,43647,53737,277968,8347,123521,74858,33829,44762,77574,877,81377,222525,123532,30602,43881,53145,2973,16284,81940,61281,127044,63620,9875,14756,114829,19032,9202,52759,119141,23928,120551,19607,3599,33401,76821,73233,117430,39968,36539,7071,5446,121735,194059,15206,45283,6706,15603,65615,1207,165723,92275,34773,104447,8396,32353,205240,164323,13600,60555,79205,25532,22907,33410,57480,107111,69630,32137,47832,70913,33161,20321,2371,117348,10714,86246,1625,11763,17900,268,78457,99175,97940,101092,86660,32221,14041,128504,125080,53744,124263,31017,13897,403,31859,21964,5633,111630,5547,77329,17961,18241,84995,25984,12983,67491,62168,47262,5241,297,51191,7351,8967,147212,82060,16821,782,11033,82431,62957,5026,43459,77963,203477,53528,6247,191852,87774,74164,215654,13467,1522,219964,28589,244104,16242,117821,67725,72570,156792,17186,15979,26990,44128,193014,35276,57125,16212,166451,68017,6905,77608,16364,53777,75921,76426,37975,26203,269296,64099,84122,12077,38533,830,4407,20139,963,43028,38902,42911,37503,83343,85045,16979,1165,60835,137387,58380,86990,110066,134540,56331,193845,81238,17922,163093,38744,110641,12502,56404,34862,26865,125964,12965,111648,25547,7771,27196,136980,9555,29551,107158,57885,18831,37705,35505,101742,13970,102109,62548,124657,23328,11124,89592,146376,248050,6241,22033,18337,80685,29898,11908,216623,67721,106162,146610,21377,15085,91552,42041,62560,122532,125336,102365,121537,142559,29693,223919,11515,110495,18776,22494,5895,185059,103592,229351,51220,100102,37027,257855,29359,54123,36066,106493,12244,79258,32002,432,56205,94836,90182,6726,14762,29391,48938,26864,38083,60364,3310,60192,14766,205567,57504,110760,22649,24666,46333,21517,3430,13135,28873,27052,158809,11597,20529,6695,23138,22960,37137,45574,6545,305877,43423,26153,24769,59844,14501,10430,134352,56169,13213,103432,49523,35181,13435,12408,129475,64620,230854,77390,51990,15653,83248,33466,44571,117828,51481,2187,10559,68019,18021,54895,48247,18354,33737,4554,108595,37288,39767,116707,9175,3726,108877,21616,83684,49862,1938,8543,276466,20134,108498,48770,102254,31914,131520,185291,100559,51890,209,19526,76471,50544,71814,99351,8172,198526,28816,20419,9109,98389,136777,76479,75596,30635,165417,48216,120220,25955,211071,39314,24308,32164,2559,146280,43403,9233,17947,90585,1786,86920,125662,2457,64741,32152,32918,122882,78538,44001,31723,56426,23375,103172,88177,145697,52506,49319,68016,31664,41488,18486,110400,7030,28241,986,109199,19900,42147,56864,65287,49183,7858,24e3,30453,840,16673,25907,68916,89927,6309,158335,36407,199737,130464,13137,59603,201778,195292,21015,42466,179062,172561,89492,11075,180407,31868,72493,20998,60217,9865,19530,39274,130266,54539,21623,12535,13505,40641,73375,4087,85633,2153,3117,70680,55788,92096,47509,98493,37490,271936,151475,3032,16171,96642,34106,78425,125761,19591,3366,19316,54508,24183,50786,194248,91528,33253,34622,108355,41741,705,3814,3883,108929,13203,67831,10142,59754,68208,29128,84820,56880,38794,24972,48571,40821,40476,18137,164254,24064,236309,79181,11282,395,39169,2013,51587,28551,9645,701,109513,115899,113566,12762,62045,58322,103726,41343,40866,244102,143816,2490,70346,40973,52618,15412,30720,104315,38917,42027,93676,17513,107418,20706,123890,13399,97727,24044,87962,65606,44250,98044,65276,74790,101473,19350,91570,1326,87790,172042,7577,100813,86896,85891,41512,108130,27794,14875,71431,12835,156250,58135,3759,22476,42176,115873,34686,56523,73643,108505,51491,20838,12721,32863,45700,29496,13700,34294,55360,29206,155942,123812,7706,163234,203,132720,49358,144431,8130,175788,35818,3270,76832,25710,54095,97274,28779,94621,74396,19092,128242,58067,20885,14670,93255,15107,63291,23654,126900,129421,59294,262659,9798,3251,67344,28600,44629,50672,29072,26999,31526,23183,49175,165843,175455,17282,175411,32022,45989,30298,90690,78118,83156,23749,35636,31317,7069,80381,94561,133756,14960,97404,6138,41065,78041,32843,16601,34123,9559,146529,123377,96395,54441,42012,84257,123541,10745,22139,106459,11720,150883,172651,154996,110538,4728,53447,25704,2009,71152,119354,21166,66604,1429,216162,8637,122250,63520,27180,29172,36124,276428,107787,77184,4680,14952,104903,24418,14793,51561,52931,8371,26342,48526,7118,92066,67280,40653,8847,34597,105438,14198,50163,61188,146286,50315,41205,170829,161496,585,197359,95056,1687,365794,91349,48507,5804,49263,5146,104902,96365,117343,132222,46084,96919,16875,8073,262381,79982,52663,13928,16056,153908,15145,109256,132308,18763,24904,167644,13618,40750,18686,147124,114709,150038,52849,2938,12568,48617,8778,5459,44202,44591,74914,17183,248689,13878,7822,80060,23116,194037,18487,2067,7798,43077,33678,244028,31320,74273,2794,19466,8218,36280,183997,48124,19416,29656,19280,98734,7715,18311,30701,133602,150307,126956,7378,2933,79903,13178,12593,86571,26604,92446,13574,44205,65699,427599,21118,8245,14407,27877,47936,33542,7916,26460,117762,21596,37818,2249,127359,209394,60044,47677,308089,36791,154971,31417,6998,150042,174360,12255,43009,29335,48739,3912,101398,53340,2580,146939,151295,45360,125275,15273,45383,27456,48761,23314,8750,60801,85823,104759,27894,123685,66968,39480,26917,55290,83305,2696,98390,57569,145853,340733,4919,20024,52268,30884,7413,203685,70989,112855,4129,50536,349518,68205,332641,159581,135361,236026,37563,176404,64899,6578,122033,63871,1850,85234,82089,66124,74145,121098,107351,12687,36881,117334,13136,14698,85933,93866,18047,32620,310,15094,46e3,88451,23632,36645,27940,87618,80520,58892,20976,27702,140090,96075,67841,103292,238964,87778,107338,17019,83427,67522,7302,8261,47570,116787,8730,80484,61772,174422,56005,131193,52875,14588,28471,59817,9586,15720,158155,51307,109734,15196,11025,59331,3884,52626,102602,84797,25158,27314,4437,20488,76214,189248,35023,114952,157376,2827,62439,102878,129749,36405,10329,109339,108633,36662,1254,13267,5470,87105,58004,15397,10434,159667,21864,52022,179464,3013,32147,31496,116832,18494,105502,129227,107267,50033,13481,9954,24267,22141,16257,116154,36185,950,115685,11305,176708,2048,178671,112573,287867,162328,497663,95170,50979,193861,50987,30368,136257,31830,46549,15119,169876,23788,17462,249887,57377,1949,35448,14791,43769,210091,3783,34612,282103,88380,245190,5457,20491,98908,11402,86899,117916,16028,162584,60644,320177,156096,31065,55876,22e3,77655,9992,23397,13757,317623,63978,215255,2443,17648,93231,27388,104529,93807,55505,140477,12046,112040,70887,40152,94365,112353,25063,114679,266061,71248,119555,15589,2244,617,14129,211431,70110,100652,7777,4383,85911,89221,21010,120615,58357,86405,37554,41647,18,15143,69662,60491,14714,186134,148344,42347,5410,168175,44535,42449,343894,129417,99682,20659,27272,140483,63455,222159,17536,13722,42637,62324,11976,114691,148109,2283,32057,182393,4295,147364,33705,2075,44303,30274,28331,63740,69740,29148,10346,44862,33716,73937,153333,12930,38784,247159,2515,41053,20256,83368,256189,54639,115240,5096,24661,175419,153552,26516,141,138176,63885,34115,47222,55709,2765,28479,38875,236608,12229,22921,77291,54426,45388,2860,57787,114579,295139,105782,17826,71066,19119,54364,69385,16568,12323,28057,33346,34919,124763,155533,101386,31644,8627,49001,303600,29868,63213,9103,77280,71333,9696,138789,37059,24823,5057,21352,32368,114208,56803,19424,10445,58514,8661,209508,26187,171838,10460,63454,14016,122504,41328,21329,46618,32493,38225,7855,31763,7945,29876,8734,6438,24205,97490,139977,130740,47323,33195,85390,57194,13813,60600,21313,96251,7699,27584,170521,139271,1363,4402,336738,129223,84983,69150,13147,3590,163929,207225,155260,55916,20288,4503,8398,98490,11773,27512,37113,84976,86558,28365,11756,116005,182148,13733,115313,47644,67208,85069,9347,14995,226141,14704,101835,41159,35314,13113,63526,214039,29978,50446,83339,17440,129441,72522,118641,97816,24907,73844,15717,118884,167255,96509,162793,30847,36849,51297,78974,77793,10427,1873,2972,9999,35074,28190,64297,146836,46298,60038,163007,108919,61219,2403,75022,127339,4233,110389,69022,9833,128097,88016,79390,222936,22570,94657,28462,56956,38803,81536,30474,152794,19566,16481,147408,74574,81895,20731,1918,1366,76367,187321,54494,24366,21690,61696,33283,107477,77499,31112,414383,74362,18463,218441,120929,59848,258629,201924,69269,454,19989,13054,59894,3623,58908,20681,35723,78523,102680,38988,184112,108087,50944,132704,52966,21699,18860,96349,201411,82697,85395,95658,5093,6427,177894,44191,32755,26961,155739,6249,31310,81030,26574,84311,120155,86730,113535,7424,48888,13516,45747,98098,20077,183995,81945,43210,26704,40420,75831,45648,11180,6855,57927,65528,124096,34851,2598,156633,107572,127352,38169,123845,60142,62722,105584,232364,23211,68120,1601,22169,89299,747,258039,80572,7258,152249,11862,101204,8834,121434,33761,19175,133142,46343,40178,48723,3589,41977,30210,38868,62257,10087,82658,87827,90646,16415,47552,351723,28298,72225,91146,272760,1701,11295,1652,109651,300747,51863,198800,29446,11794,32345,37538,22356,33102,37590,113544,37970,11478,179743,25454,103417,59905,221970,105196,145604,7817,164809,102360,16974,75840,255333,56902,6659,1954,645,59400,67769,7689,18675,5215,13793,20536,27852,3387,29523,259718,16860,94625,43143,29245,15848,233581,22685,63631,78557,22836,133302,84513,1348,51826,47129,98836,58284,1830,1749,94642,10933,6145,12506,10975,13879,103781,144434,10268,28409,32346,52968,121567,107374,77268,23686,35097,10501,155275,15303,47136,21102,168741,55332,90385,15996,84817,681,137803,25054,142275,6163,38175,8056,124296,240642,65621,4934,178205,16101,62803,60964,18230,100622,76465,44689,14545,9543,47514,16852,93380,28048,12047,107106,37575,101485,77047,57326,34819,96137,76916,6469,46264,115983,75768,87668,69942,13027,165,8373,114231,26434,52844,42799,182044,23580,146254,38081,43236,33883,146220,382894,14606,46035,36481,166621,35417,95382,2957,59384,60428,36358,66343,75378,22267,22950,83528,17577,56474,25285,4619,179691,75355,95836,53295,34588,171410,4487,14679,84208,44015,18562,109133,54101,11531,86052,174479,303157,28095,9953,35642,14564,39802,16145,77606,117406,53038,121117,53624,22062,1212,7632,127157,237292,189087,10478,127345,102515,181997,86752,87623,10966,121602,68783,68681,83042,114380,138349,191305,67176,50085,39016,1427,42384,1412,67118,122616,72389,25260,2237,13576,137346,19938,20304,2191,68759,5373,61364,238507,75814,23931,69565,38993,131741,38364,12528,87762,5679,129853,5310,186831,32653,90338,260176,389531,108118,26843,43985,50175,30563,25106,56965,18130,140428,4542,165503,117991,24219,229605,1819,129663,1240,3797,76093,18398,71339,51919,93043,27175,47060,216257,6483,35051,1217,16512,80798,129064,13225,69339,8548,237079,72298,2575,34280,51379,117910,55671,53345,247552,29486,39328,140821,34681,57045,60177,5004,90269,78522,2479,322607,48474,61296,13057,31558,4678,59271,6699,27044,31988,35944,12503,83480,4389,136508,3781,114121,70279,4488,155829,42214,2898,68191,75695,305850,45041,74344,106509,30087,17429,93292,12477,290,23080,114802,35714,18751,26554,105424,17775,2144,2412,100610,65192,113975,52975,180272,135050,129815,76238,106483,21440,63186,4260,46189,9711,28249,4169,23429,23390,8324,141585,63809,67668,38457,38063,39226,59972,1189,203916,62368,14403,16949,61767,85801,1739,40147,35049,76757,33124,62102,15780,103593,103009,53484,22952,67973,114645,6566,5245,50462,7601,8288,3513,194571,80276,1908,54592,5124,58571,2513,6800,273997,193904,1119,17991,117245,2508,129156,82366,26278,71465,63341,56943,39662,106116,94966,156875,9736,2204,122308,94418,27134,1280,24539,49022,45314,3764,50904,46424,30699,28087,293839,9400,33646,40165,822,147499,50263,116179,29085,11863,31314,5578,17797,5104,12454,1604,15342,219206,10232,67800,94261,25872,13565,90339,78971,75377,26649,41184,47695,11514,35369,20767,14227,41953,309396,148270,147938,33074,14453,27499,109019,39018,25738,240196,158931,52820,8612,95853,21524,137010,84901,70869,70021,116794,48404,38771,6732,1070,70990,187297,49140,5238,576,3564,253975,16027,16483,2811,37775,19034,25259,4053,2e3,70083,95774,19713,33431,92703,91314,42381,288770,48194,95985,3991,77418,13406,241328,245086,56533,35275,62725,9246,51924,70181,95331,16163,31410,79016,39312,120878,119371,275987,80124,27712,9186,220,23598,146167,85209,68238,282190,57048,31273,30555,80913,17594,75779,59160,135002,101219,189377,29225,96735,60126,62522,104e3,27620,86814,17240,147533,11001,5425,43682,410,49460,87270,69480,46315,59448,1816,76201,9431,11788,87960,29063,65539,47347,11678,33846,7008,196704,9895,6753,8633,120892,59970,572824,115934,6646,202559,892,48351,37611,251282,57823,67263,57750,26527,34485,90747,7685,88370,6144,64182,1709,41969,21458,62327,181657,49247,225330,122600,114574,107124,85361,111833,63243,71420,15655,191178,72430,18063,51425,54002,12364,53225,86557,18193,97580,41232,138398,67821,128724,8944,233212,101353,52099,42127,14006,120107,32789,32132,3498,18123,33758,56058,5779,128760,59888,98869,18445,84702,51911,13234,218379,20093,39031,8074,70195,20708,23462,24355,131384,60189,26390,10403,41060,7140,10781,49410,42261,87202,82566,41663,43105,60276,2768,5733,74176,28329,2297,145430,131632,83615,122915,105441,655,224102,5284,136426,67763,16294,188511,32538,61049,27893,3394,13951,159099,28542,17930,145360,9492,190122,32285,78855,26440,13570,58648,73908,4239,124561,2444,74172,53131,11468,10794,73566,11623,35343,64710,30481,4163,10328,38309,29901,10538,154377,76132,92405,24839,11679,3465,13449,11637,7824,2337,57754,1260,14458,41118,19878,38661,13416,159180,37074,163164,54137,28627,52134,184900,8520,40385,29546,30502,22386,66527,107458,6850,24022,47983,30603,35083,8934,304066,39500,9,28261,33026,77251,9374,44833,116312,34990,29236,63563,125639,135405,165398,159055,55690,88141,69643,236964,31983,25572,20436,36746,60896,31850,16179,11828,5888,3043,66368,9750,31167,7915,53111,36430,1333,64344,93659,20061,60596,180191,51630,6792,30244,43509,101058,22409,420,44210,109783,43223,27030,72477,72831,32679,29235,7675,47556,12258,39907,149412,84926,118247,24692,71717,105038,86009,45941,41189,89453,29856,52543,30627,226798,67303,59230,67415,34408,1367,99685,16867,128419,52147,4111,125381,117881,16173,44093,102224,31575,23234,24870,83790,127407,239098,3200,994,1255,100903,242275,117266,55116,38205,16140,29662,11307,40414,208793,123355,56470,4862,75600,30119,58218,70828,24075,26974,7802,192353,4851,5475,78720,66596,3409,28573,64396,30381,30690,59859,88256,5406,99945,103064,34463,37727,24238,86643,60088,4057,23741,5967,162904,38240,28356,93858,25510,122879,6897,3278,7057,11971,4400,35461,211413,21395,59615,39471,87233,55795,128426,3051,22470,41950,14705,3974,180108,80476,78442,204996,91987,15634,67610,139015,142373,35611,51134,10387,4353,153456,57749,181039,14183,68447,151532,21107,36452,20551,3186,46247,46383,129666,88736,140662,146243,2066,8360,7978,64818,106963,17896,47801,10723,114821,223295,74192,3293,3393,16987,74064,11277,91622,4270,29828,27951,387869,103235,1374,61988,120083,477,145892,128378,11779,211263,61354,18221,17869,46530,83061,108538,157981,90608,67199,95080,49064,195814,12302,66307,10348,231346,160732,112859,63633,146558,21271,31037,198802,47622,12862,95710,3910,77850,73961,85585,34752,61e3,4082,24595,103679,71107,8208,79568,150019,16615,24961,139857,32664,197366,4559,54735,32696,4126,162019,75698,13916,70108,159638,19834,9349,24675,175560,49643,18206,52459,27992,10809,88865,401975,133172,29e3,34558,30915,3658,25834,42430,36562,125265,18182,10155,40149,97082,208980,19575,60853,90529,66545,9600,789,46420,2317,88593,55595,98980,115302,5742,169155,1073,177901,3472,11189,63711,78643,65472,50459,127979,93,42202,67053,21720,157650,11145,141378,42033,22824,85705,79114,35584,15974,1510,54172,28562,12451,104226,19190,97151,73024,20948,5151,81741,21499,29006,84183,198074,54003,45120,170125,26240,35177,28389,64863,79974,60778,176915,232183,45342,2038,80253,41564,40703,32689,5430,100689,5366,23007,134279,14266,26712,73993,24934,64242,52113,102887,61801,46415,201049,54251,62133,122757,164883,30815,139966,2319,30842,766,13362,10287,134518,86111,81665,82440,28333,43019,18963,8804,161944,23439,102144,101145,80029,39052,248708,30350,117340,11878,128467,974,138625,63961,5237,74778,61834,67040,43814,13690,65947,33809,232476,115258,181745,28824,94013,9510,10246,93722,81976,7217,114383,3493,16014,69045,72692,12145,80981,9507,6692,1620,60820,330444,35474,33962,4797,7053,295463,46445,27026,12491,77988,49524,35675,90947,29114,166705,101385,133782,32704,6186,84595,176031,185623,45966,151302,63069,1699,107491,947,15458,74452,196212,6046,10498,12163,10239,35191,243951,9277,9090,29539,54460,22820,26514,112549,60372,51753,48756,21812,70861,260326,41,44222,10441,16961,48148,138771,216194,5914,52153,53400,212036,56519,26245,10117,45888,15294,138019,90913,26368,43842,42111,23348,6082,194845,161089,156206,51546,11647,30759,302912,262094,8635,78876,26535,35283,54183,31183,85484,147873,12989,5197,6356,72894,65347,20150,27370,73787,1493,45918,12366,190217,20724,13858,10981,67449,81213,7553,14115,72242,271517,11842,48310,88743,143726,22177,3290,243231,58452,62937,12592,1654,40066,33477,13751,9921,128442,15868,7106,75236,83773,10775,36938,10482,170465,17368,17469,161508,32752,98340,800,19824,264456,3901,87319,2867,26782,9630,113102,185815,24197,44584,86366,40224,3636,140916,31731,267731,9567,53678,72984,29389,27963,17106,50282,284911,60170,8322,12608,23374,89652,5268,39044,229766,8869,151350,31436,177342,12269,183212,120418,116270,2843,78888,69192,7865,184099,1086,129897,18383,70508,20242,18508,229924,124569,35749,50589,55626,9884,83115,40971,30671,18135,14452,38861,17844,201826,5549,26413,17189,13561,38539,10679,143331,3314,36785,171194,49685,187713,67506,4618,104039,17060,195080,50648,33159,19238,67559,134840,28599,157523,17130,38064,117398,94355,31918,13575,34538,40326,13997,3494,348283,62481,26862,3603,104426,244363,153709,112487,304612,199674,41239,35545,54869,293005,28223,26277,26899,4533,18518,15492,38587,80488,70485,160395,263,60162,11382,222152,4696,250751,51921,182609,10707,48463,46243,1227,49111,111564,46502,33342,56846,68541,63559,858,139927,16654,229375,76759,26478,33205,95828,23399,92945,2637,35630,28470,143992,50214,14174,21456,166191,65665,1711,21594,78019,97599,111701,36,147151,110246,189022,43021,30397,40757,131935,42065,73335,48039,26596,28984,15102,2361,7421,202167,69744,43766,52826,3642,83304,33873,75140,63169,192389,36551,92748,13039,123959,233220,21738,84447,77230,20228,187852,19095,25799,92136,108774,29237,53947,2299,118106,2687,8830,42331,202924,33667,2023,73763,30704,19363,19779,16737,35629,48081,24068,101013,162338,291912,13749,24745,328289,167679,70086,48299,23306,16732,17801,43322,54589,3586,63653,43624,53474,925,109177,251316,43805,13082,19511,86565,142182,92461,17117,101033,103319,64589,4022,4351,235897,5352,82705,107142,46391,156084,5860,61365,10558,13045,7717,18357,33922,12590,33065,6928,46993,783,46937,67846,8952,26295,6107,119656,18799,17458,50747,4229,179559,112727,118080,20683,41464,125468,51560,49749,44231,7359,35339,62988,136487,67015,5208,29150,24956,105186,48858,6143,18097,6972,16404,73489,58742,97196,36357,164616,5834,32267,13746,147733,15113,132091,34127,106298,39729,106426,22294,9780,15602,36213,71502,42808,66802,599,60755,5851,39120,67363,108623,126368,72770,91263,32486,30596,151717,7951,52002,43103,11768,68942,40901,39344,24037,127500,116890,48403,16926,86750,17745,48648,159545,34460,58419,5634,114317,67865,31462,23352,24010,98185,125708,69686,68337,13610,26271,70691,2980,4768,27225,102402,75453,28106,8104,6931,1176,6274,6475,112635,22498,6176,238686,26832,28893,90319,14441,15682,15087,39517,45270,109134,104440,45965,47645,81772,7876,52683,87720,12898,4505,185665,2769,113401,15664,57592,105229,137381,97059,119268,6876,43309,33886,128363,35476,144249,67013,143587,83367,25703,91436,59347,53236,2289,16519,19844,46309,58558,99834,23313,218816,231303,36388,51333,183535,109792,139277,54306,90139,18235,8275,32710,37677,82464,86025,92204,88842,117723,37570,128723,234242,76350,73795,34896,148247,58424,11105,11744,45746,63372,17118,49772,199520,81902,38004,22911,33752,3125,1995,53792,4689,26909,108150,146062,69674,41811,161444,84855,8999,28561,16731,93937,3189,21967,24890,22943,1356,145300,51569,28802,517,118679,31703,40607,48098,108854,25003,10233,73969,177495,5248,24516,215347,146192,48712,60626,69188,40735,5866,586,101541,6509,47590,52129,5969,222045,110933,25733,24223,65339,62812,2414,155418,35819,16022,78423,43138,20995,128255,240673,46745,236093,72176,57085,97841,61248,107,36068,193177,105427,55726,215229,20446,47228,100420,87091,14429,121708,23605,21157,187721,21880,2997,203976,99166,95068,25877,7724,98925,83401,4829,13182,18229,13718,239662,38653,116505,153497,30589,89029,38962,181302,43853,78872,180301,4786,248240,7401,106136,112590,77745,19731,60880,77789,125748,135487,5975,48627,34084,12419,215770,47557,254582,10364,106495,21856,67539,88981,38805,21428,48732,42316,12149,16078,52808,25327,51322,33850,51147,12253,122354,46077,56483,254553,115417,81834,150991,94662,86668,7381,12841,100650,18218,15741,22372,68294,50705,15535,84660,61887,22553,72299,31361,24824,17743,46820,64288,31582,77006,111674,116384,30760,80920,86149,77192,51979,79691,60342,122805,103800,240873,160744,233114,78962,54920,8608,3484,316104,72548,24337,5088,230040,21926,10172,36838,26,86221,83458,102176,12062,17571,41929,41170,28428,68239,41750,103930,2634,18313,53019,34825,97837,63115,24606,73157,152474,14715,91439,37033,109806,140259,30668,174760,380,135597,95673,136073,65073,134249,13829,17279,122305,4420,46444,10237,64848,203623,70728,10349,182885,65075,24519,25783,40318,34139,22222,63394,55266,102764,41422,20126,65100,90408,53640,35128,48932,11192,38935,96839,34782,39492,19396,41332,6250,5511,19492,51304,25936,104466,54099,73771,86115,5080,7669,30891,111700,13931,25276,72289,135447,14820,258641,25265,31005,281179,75286,393,95359,14623,13584,6680,101227,80173,44933,76666,54542,13244,39348,458,25379,109451,134348,81143,6959,65554,12027,51311,8716,57589,140731,28467,23316,17272,30458,25980,55229,77197,83798,28302,114784,7428,34548,26241,14712,39336,103304,18928,54080,12870,334,87722,15208,16895,142098,114262,39820,83913,57817,28682,7721,14900,108672,11250,62246,42849,415188,1724,26555,24549,25505,26443,107450,145899,61035,43528,6901,60726,65906,267741,21338,147590,42079,18924,73017,135236,15393,5206,4026,84185,1531,5988,113890,82647,303391,7386,69844,71611,189865,76523,31877,13315,19314,198575,32821,1928,67641,25913,104475,103489,3297,70391,18406,15446,113347,19295,93790,27856,1792,167471,116449,8541,4408,41757,63233,25765,86680,64501,27034,24816,34975,6079,4486,49693,36229,16917,21581,62426,27862,11612,54284,35702,194034,355,24277,48262,87411,70504,310164,118018,12516,47559,43502,57433,107139,9290,66533,80863,14634,34312,91725,28606,21342,67241,72355,43244,375789,37402,174015,105070,8342,44167,67494,1890,16365,11723,271002,1865,47918,8350,45564,27742,25110,125803,8553,49504,81925,62211,4534,15491,19011,80373,206920,667,102405,128623,245524,5553,113309,192739,65766,19567,22832,261958,29679,21293,71134,20962,105123,24721,860,21752,33448,18372,157167,94822,35770,173224,232737,75729,28937,46828,28062,25453,5207,140366,36665,30652,6169,67920,150458,92040,23186,184604,92330,20891,176492,49427,27828,38305,42495,143982,49560,25503,90043,29747,65328,47830,12932,11068,77721,9003,25213,94205,140426,46090,89945,138173,192691,33329,112232,129905,35709,27514,1841,19957,31411,127476,53572,17497,173549,55063,175135,19841,69314,5192,237921,117660,150697,4060,273045,50414,98940,65348,153665,164423,58804,156695,48994,213928,86036,28608,8355,39574,34540,16927,135680,18374,151587,10830,53805,16878,16623,4282,48030,8537,14986,46102,13062,72897,72,33050,108227,39451,45935,651,113320,40535,95176,57450,48843,5003,19019,10407,211163,3848,1068,4988,32091,30095,41692,15099,43602,107434,50744,7627,171349,16313,150832,352665,207750,33937,38256,51091,156e3,87889,90663,84175,24908,114900,50365,31494,83829,5398,169342,47521,54818,18935,8356,43094,41212,174536,10082,92550,6678,60614,23355,69721,14796,34149,128830,58187,3179,208,40325,28399,225029,401412,51150,31580,207268,6657,10993,69818,64282,289845,23308,12961,38447,6681,52944,31855,2572,47646,120728,179148,37240,45196,218274,4816,3695,21961,50084,35209,18073,51452,27004,6100,33941,1377,84831,171214,85,141510,9078,99227,32610,6417,11718,49868,65579,87902,73018,49062,46280,61742,21512,40862,107733,15941,29168,157765,144919,14487,5767,158014,140070,7241,573,71584,16921,223566,40331,179473,35081,47926,140885,41508,52104,59180,42310,32811,29048,123517,102413,80208,10104,14746,12649,153641,126022,37965,113017,4171,83,142592,2809,6362,50416,71323,116894,260776,16204,1524,5760,30351,12658,20703,54403,36083,45408,74772,4946,14485,50759,111222,10890,2195,167147,92962,130534,16283,177256,35016,15472,210156,151187,73922,117691,43250,52051,37392,24811,24358,30830,5775,818,21969,1476,127322,151783,58392,31021,106913,65215,89407,90802,28531,11690,20234,95249,44602,37256,18707,11928,5161,4410,26571,51903,49768,22008,25252,65780,209499,68769,203726,13249,137363,48845,86823,6658,5674,31881,1083,1823,108676,34518,166752,13791,14287,91576,91429,8665,11529,26401,16191,91972,30964,5254,28486,54697,79613,66520,18447,22870,45203,194466,22822,51703,12278,76716,44595,73455,33546,12235,144843,36154,51247,11116,33040,3180,225753,60864,1972,28469,12891,28879,10338,144157,56294,353058,38302,41447,87532,110616,27065,168438,6557,1213,50804,144643,24817,2390,136531,38174,247513,16190,4059,122791,131994,137430,39506,57650,16305,5188,54309,106128,20628,88071,67394,395446,250285,66176,91254,1399,114196,43915,60230,44853,27206,106353,43013,18733,345105,226453,51202,16607,57106,117175,35492,10476,89598,127439,15187,39624,13688,61570,10615,31111,59370,6238,175252,32143,224492,41388,95408,34384,148238,78307,38959,9340,160091,61443,15737,11216,41244,170,38299,102443,113097,26382,14027,33707,3957,76300,66160,19431,18900,6952,1717,108656,82206,188021,257335,27295,43999,41210,31777,46956,57457,12657,11489,15697,48060,204748,53583,82422,284790,30503,137341,8120,19615,220311,15991,10217,63424,9808,67431,70976,98221,4491,15177,28535,144789,751,13230,2394,1504,33977,132104,30316,22230,931,97193,185240,24826,22687,174322,15307,22988,1390,188745,180325,29580,59068,74903,18994,29195,79,15436,7622,38462,11566,138710,44828,45774,37768,99236,68137,84083,19282,22698,17134,74807,126662,173497,46248,16938,119735,3212,28292,213652,49013,9975,32180,45660,86250,4801,68788,95490,77482,113751,11994,44624,94452,46839,128497,100316,5798,58588,73184,202987,65417,37790,88524,1606,43156,97964,105717,34947,11203,100060,37742,130074,93653,107799,94311,196106,41347,8035,10780,16390,27883,118236,167395,1979,25006,19375,31628,18916,144723,78502,114047,103107,86492,107686,5844,20934,206963,23556,22591,16562,146333,20167,10471,117434,33085,2863,9740,36669,41849,37271,22790,18209,28979,8231,12952,54408,21731,25130,45208,55748,138120,75826,414,29593,9925,292865,25999,683,123149,7036,92159,86055,61827,103680,23176,54918,58466,57578,13305,5709,86479,16697,31064,17660,200919,10770,49793,33423,32370,52047,16488,62555,6459,8426,83493,7763,59725,82812,18628,67760,79405,68557,9612,7673,28102,56517,69620,171797,32458,29541,15870,81109,32080,207644,71495,21202,11039,91036,61230,2810,130800,32260,4613,60590,37112,75214,33979,126402,155062,30642,63875,12810,194463,82799,47664,16725,36685,43367,61099,449,172150,102867,21691,301838,36745,7130,18671,57316,34852,38034,54182,35578,65900,99486,19771,3456,2658,16914,99866,28390,28109,8262,21147,34353,20006,4228,137085,1675,203023,283196,198286,214375,163329,290603,152574,40471,83506,30068,14730,23177,131539,34759,27668,32178,71896,104799,116305,85430,119262,42860,25160,8911,23428,49437,105322,6519,16203,6349,74711,1230,38045,8540,75165,44736,25909,51026,317034,4984,32281,91312,27060,44431,17817,45363,155937,239085,35697,59784,91993,29531,126740,213757,76560,167776,285273,24262,8237,65030,41160,74437,48804,118916,13159,37842,1031,75349,1478,11655,108777,23435,277425,101734,67469,70231,124711,43532,28514,65526,54956,1e3,21882,17728,25302,40952,52214,149632,1999,2111,3259,63362,89961,220561,39777,26335,9063,10572,12416,34551,34623,38604,24723,5947,15588,69927,66252,119177,69173,46629,28714,70715,212408,20521,406913,74380,11716,50659,50862,37009,88460,130101,7210,53853,538,65120,151950,55806,163748,52837,13153,21100,16674,64536,6091,138201,44837,58547,3723,163,2177,32288,85454,34033,8497,14282,25742,10535,10741,79559,117493,243787,49337,100718,79495,40139,42956,7551,55433,15421,31509,23034,45081,547,61176,53434,328001,8470,36263,30145,4519,74173,53935,11845,73774,60211,78025,3,4102,73782,109293,315332,48412,26683,13714,6865,20128,18490,104141,325,39470,171970,115860,15707,7268,73301,74336,31370,2368,111827,107757,136231,142844,97138,96638,84053,38691,23801,1588,10573,122098,77039,240,186135,146101,11996,18143,112963,46171,155836,348769,47795,121213,116266,132515,3344,144804,31286,99187,255838,129694,35894,48779,55235,148582,71967,65282,15174,13920,47080,6147,108242,157593,125025,7136,1286,28957,127956,28402,98813,20805,7532,109417,40610,5041,32958,15142,18408,108596,33543,50517,27748,80114,233434,91447,487,37094,100048,30541,43477,10639,89862,155868,37667,8726,60684,237903,73408,99589,12190,38739,97348,3914,13594,2680,149016,13907,30171,28343,23530,115225,61104,35821,147679,14337,4297,244282,24085,326976,56428,7851,21303,131620,71446,83253,68692,111870,5224,15813,38197,49026,45057,13660,3306,76345,40671,27905,91072,996,68527,62085,91351,122634,55109,168209,2024,27560,112707,17352,8306,167115,169921,166958,5031,46020,11844,67284,19130,76185,6920,32849,5450,14610,22451,21002,17392,31872,66682,84796,13709,40210,59898,12029,8719,53564,21462,91884,21647,88379,194428,12754,37797,132826,160016,22567,54383,53186,77611,31107,8339,4694,19185,90355,23597,17222,140675,28442,23668,55977,9128,61555,28774,155229,17658,9390,24379,69357,15752,127381,239631,62460,93181,55913,45133,140155,18676,25249,33164,29581,82837,67223,22362,29975,7317,52813,1943,29613,20012,207130,49617,49651,5636,15334,36313,29226,28084,95247,72072,19e3,224932,15811,114,32127,38097,37508,88507,37225,27359,91626,12193,69279,20608,11055,88156,92808,2152,57259,55275,72789,24475,104414,1708,9882,3818,48661,66897,1631,34806,227930,85815,87753,18321,250664,72733,25107,206797,50891,8082,196411,92596,96764,152823,65514,22819,387277,62176,51225,40329,15563,189,3659,73670,64357,51793,275136,33482,86653,74615,67058,11318,125720,15388,22388,8267,1730,102663,170910,40784,7144,85373,13040,7088,94309,583,44224,140424,77439,18496,164026,36578,4722,9151,5824,63365,26510,35199,40500,79277,32495,44614,35233,9566,203293,152144,7097,2330,183480,98629,13423,330887,44130,68600,30939,97829,31012,345465,56747,94879,4939,160027,149761,99423,46099,32251,15332,8761,96094,128555,5763,235318,222223,55729,30241,55420,201746,3987,81382,8259,49325,23287,7719,24633,251100,92311,18591,110533,64759,170260,393860,7175,21144,132887,3593,75346,101277,91109,16387,259187,11627,57459,173829,44694,55780,49797,89192,120443,62622,3904,14814,23887,1027,112258,64955,99800,11132,66353,36202,48624,18158,88481,96882,43059,11040,2455,7077,21651,181159,99126,100434,61388,68186,19161,110468,120052,8819,55324,41494,7014,37689,3618,87729,92615,207943,9823,128657,12587,15857,6379,67628,51216,71775,157617,63244,1503,3864,218754,110864,5769,21492,7243,1192,87921,85529,31512,18537,42698,35350,73510,84474,34301,8991,21013,35034,566,38832,19838,35586,37216,39413,55006,12178,59742,856,84563,6900,25632,17437,49786,30723,13847,70845,4044,7843,23944,235976,55530,48942,6518,20939,73769,192653,52936,95207,23895,132542,142982,22632,87452,48042,54018,178468,10728,26230,23559,363,81269,142012,5718,346258,31456,84333,246476,51018,66692,101804,120570,39962,30373,70593,2864,60541,19425,54209,104092,7201,31545,48018,25865,15442,46257,40443,8328,6451,111782,47527,97754,33046,470,245116,31095,39,91934,87208,73470,36708,36521,12801,70624,36272,8892,79768,12427,55454,103756,5908,52390,62962,22720,141138,94634,41689,128402,126390,6628,106394,35527,134394,82727,254651,194502,148064,89549,3202,28359,957,21954,27906,49840,142747,8307,24206,48978,1186,71728,133038,71474,91306,6333,110959,74600,70387,18983,62609,56057,22970,1147,135850,1321,28834,3578,59715,102227,32827,81415,99952,55636,257598,390,22702,35701,85872,402916,39216,189795,14929,19467,10112,144422,61514,5279,63421,134686,41436,8424,51925,10598,132295,124416,4604,194739,210929,57866,31829,51626,50007,9976,91878,61906,56168,81906,60918,61859,40017,23059,16887,40927,62064,12785,32893,32913,21782,93965,20169,44387,79084,38463,11457,93950,27127,157050,2697,337088,5116,54128,48255,33279,8821,27352,25515,124022,65710,28906,38557,33390,1722,104435,72215,38551,12094,30978,25113,6671,37355,175109,42862,98024,65406,221276,59624,118012,64637,78760,86697,21426,1639,40350,12584,67193,84144,31396,7863,143011,69629,63112,9454,28666,65798,46372,134721,6314,51402,30837,151922,2847,38676,38008,92823,136245,17540,5504,109295,205242,37606,5211,214892,1586,20670,208711,137743,19328,40652,16995,20023,14657,154919,34422,12996,13918,38221,47690,16398,2959,37680,89122,6721,198469,91876,172043,83898,101992,26084,94570,3635,76958,22853,76497,38266,176590,168403,44464,142840,79180,184594,1984,41806,83147,11985,6546,366068,59732,24533,271505,8736,39084,222992,93429,28962,58985,86665,8432,30028,14548,32439,54424,165029,55175,27458,69046,121277,46168,33732,20661,24581,135574,123110,37556,79260,72611,16957,12939,46162,58238,44907,72936,253758,41324,32518,96480,11949,124438,65280,43256,34107,53533,43531,37037,28366,45970,32741,173438,6121,194202,62969,26355,30314,58370,28455,1848,50519,82830,90393,21761,295490,10936,256940,133568,44050,20269,4089,27457,21610,219460,36743,14821,101388,52005,13124,30979,140816,167362,26054,18458,60789,34917,40447,26606,33422,9066,3452,83614,5761,20263,137238,25038,91310,101,52322,74548,42572,38084,214054,186568,31802,17665,30620,141936,37730,14420,4265,187218,49640,188208,51441,55388,96452,66659,40869,42039,60967,221027,19234,178581,29105,96050,9165,196118,157335,3738,40354,117436,2965,34136,59659,15570,50843,230035,31444,71260,43886,18316,5387,38500,168508,17406,32174,8828,103373,143806,90367,3560,18719,122310,16508,26719,2541,105429,6645,37998,73190,10591,235916,49737,87112,233941,53188,32193,79154,4544,52905,126477,7580,63501,57314,3216,31337,6541,103083,60846,49,9756,15481,1355,43840,14319,13743,27486,10222,73114,230718,418644,16706,6674,279748,23058,45273,295831,86306,2743,5535,88773,21829,35253,120938,31153,3169,16839,42847,8751,80974,33942,36867,35514,16485,26474,77775,56877,5391,48346,3882,108713,31403,27804,55248,26235,43821,136104,40118,175507,28034,203908,18732,1788,34030,106427,36958,54359,7251,44936,15356,69139,455,157915,22173,140291,50348,43275,82066,49621,54952,15216,36226,96695,66855,6936,1987,8227,196087,4631,68827,99004,47541,110265,17953,147605,110242,58520,31312,38724,329975,642,3155,34497,75937,6207,73843,6120,17249,51429,117746,3218,910,68961,319671,14938,29555,34700,1649,66673,72268,9655,76800,153087,6941,210168,27130,35398,1780,73242,3135,56689,19556,165307,8765,35967,121458,13333,70453,17350,117253,22265,13340,44265,39869,441,3742,135025,23581,33309,16543,17731,13291,157637,283005,21408,101360,63887,52312,83873,5338,233779,23759,186949,34531,177320,38069,156465,91004,19353,59852,68160,14891,1338,1072,29823,1950,28901,81407,313445,73038,84807,162348,240257,37162,138934,16111,58013,41253,102951,16457,96056,19541,56402,67217,41638,94381,89674,29481,37456,80815,151579,13937,13683,132537,19699,134545,67020,29816,222341,141235,427578,48868,129557,233342,23077,87871,16213,18728,16184,9469,37913,19680,2798,171356,178328,13216,50049,72690,71904,124644,55455,7504,29052,41036,266546,19899,30391,188755,8659,59469,16,104298,112943,53865,76203,138226,68857,139953,14125,107625,119795,173133,4398,50273,48808,54390,16466,122086,31835,67035,50971,48859,7508,46427,66477,73021,84615,39985,83076,46779,201569,53336,36443,60865,168164,143810,51393,25548,169307,32896,24485,38424,21837,29087,275813,51674,6714,64883,46169,187369,55186,76192,12852,12018,62134,31067,118303,16542,12125,10579,4928,26291,43854,7091,10946,253716,109062,39283,17261,113012,258512,47764,125126,32646,55892,80279,201623,149872,3192,385,1208,48750,5376,58738,22335,5427,82416,47811,32435,143086,38930,94128,59975,156037,37977,38224,62485,7698,50405,71027,16462,21559,136153,34131,107506,162069,63703,3101,215029,40407,4178,3774,9187,80019,17880,97926,67579,2600,18405,8351,47924,86638,70820,92206,86453,29610,42241,119200,3198,15466,67813,57863,35454,4779,99518,4649,104641,144269,33730,38073,65864,6838,109456,193298,154007,5623,45741,30846,182578,25573,157224,1543,58575,138703,146140,44971,49356,18275,59064,20300,13122,11848,24453,11973,9797,86843,2919,25530,49210,1130,161220,76788,75373,85604,34926,36014,17777,17255,51533,11676,92226,51845,119859,21525,5936,18507,28050,1140,31418,14857,34207,47859,10750,36382,32079,106909,59426,87757,38393,110042,15965,97104,33757,35344,97993,53979,33651,45407,41884,82515,173089,7177,58371,35365,47543,51927,35587,10670,23544,29306,84233,39976,76076,62097,9007,8668,28119,78281,120790,19835,143020,54968,18670,64959,20649,34469,42570,33001,136570,87796,120044,1106,58700,63951,127623,12805,83057,40212,31773,49850,7361,54336,347524,101314,23751,19569,48791,29174,49369,20467,7465,75842,38281,623,112457,60210,28849,51003,94720,6426,90047,85560,43761,3579,85105,34607,90410,118528,7224,42907,111163,18168,6960,161135,191298,5247,100584,127552,171568,20121,91173,12636,54615,20199,63730,98105,2396,40387,14438,125012,4765,33235,12865,45299,37728,82098,77872,114037,59253,19675,24838,398016,102561,11446,17069,57508,178277,65836,99941,26114,2585,271882,136866,50126,11027,155648,118367,14585,8910,123015,335383,40434,41016,53021,14439,87098,176860,201543,121888,2358,9286,5739,22666,54270,37884,169381,33984,93859,16124,89364,72207,51639,76366,99029,65812,2198,12147,174891,194289,6986,30252,88822,21284,11445,288337,160821,33034,100869,43852,25761,52882,1144,103809,1924,84458,86079,43411,13542,139276,18141,34978,41298,7276,26481,173800,33210,17951,142652,33616,33677,2210,19941,98568,2486,192414,80136,12058,235883,50963,249638,29572,27221,47034,6124,72107,63346,97620,158513,299699,40388,23235,37176,224244,198386,121323,67992,23827,63170,17838,106622,158590,26807,5345,23489,91891,55474,74834,37981,13058,5977,72552,34706,26828,145172,19904,21367,34043,960,77092,91381,4733,47446,7680,41697,5170,16960,14741,46101,13656,473,51842,37433,11103,11551,121951,13191,97536,165932,50397,51628,129028,9069,44885,6590,59195,47045,32940,225472,90345,21833,13303,29407,96615,141951,5198,6028,18395,7181,3861,14966,156358,167182,36529,55253,25942,173153,30959,27261,50691,150176,162201,38467,48462,80602,42163,118482,168,108756,26011,17166,54149,456538,22512,91374,13816,90358,131615,18132,226707,1824,28139,26860,42253,93877,77351,65575,8980,80574,22020,27948,40422,91324,76376,13528,39281,91685,82215,122541,144066,1983,193851,17283,26320,2739,194978,4790,26845,42627,61300,65815,174612,55133,4200,191130,79771,158321,52280,166796,221620,62461,11278,4067,88152,83409,31717,121367,13522,47325,37945,10406,174348,249321,154101,64912,29938,51775,17220,15776,166138,78890,84425,54121,42861,16368,24572,291647,10197,32073,22651,11677,97509,26952,35787,18424,41910,71614,94977,72318,41594,70024,275419,37702,60199,7335,39107,61315,18271,18394,33768,87884,104277,123724,7277,56288,71981,189803,49320,3352,6798,14240,8954,69220,94433,57372,28620,68863,193727,85575,42309,41667,67689,42081,22543,44824,12719,28540,114236,101553,27638,27296,4300,5353,4663,19379,94098,3758,95888,95144,80344,87320,28447,259518,12718,71391,152731,37063,24132,31911,104896,15672,103782,1521,4945,72541,23717,122632,15619,87175,206120,29428,189780,61416,28350,44457,972,1175,47233,198738,95789,41907,21953,97034,59341,22864,53713,16873,32971,20693,20954,31336,21477,16169,38370,16412,9019,3841,24599,21938,17085,6484,81198,76413,5849,72514,12320,65247,276175,37234,59796,52642,16312,57349,198507,94148,46134,18958,125552,1747,18725,151873,14901,5490,68287,29470,3689,64794,40814,26018,25692,54450,2703,88278,124886,173087,174e3,24159,179477,24276,46004,201876,209202,445,52876,31948,30206,157610,39180,18439,44124,50469,5774,96278,222758,200216,50290,45486,20435,46986,46276,140133,142326,15569,13363,47522,92583,2182,7135,16853,22998,30272,4952,63263,35623,39096,53789,44864,20053,110392,124213,4630,16087,28221,127787,25839,77481,44693,13464,113146,6983,27069,55717,50102,4760,7107,26186,66507,59145,36032,104182,71328,29425,64317,50781,47465,94298,69706,74899,22754,120756,25108,93077,56834,73286,39928,16218,41699,176763,7555,70819,50083,26895,23315,26014,16773,123079,41712,5719,31516,90427,158540,85051,183128,40864,27505,55392,9058,45224,96857,30901,136622,96557,56304,120061,11501,151448,5773,89743,7769,86069,2935,18471,41628,10114,33660,110170,49479,26745,92846,33221,26731,18795,87076,8550,2100,29972,120289,3077,72490,33784,2630,208722,50861,63483,79029,6419,39467,14302,45286,64207,9686,67513,44170,1050,77246,59266,17055,53801,7150,11111,42432,4278,94579,362117,36175,42902,41933,39002,98489,22913,74161,84773,57036,17556,162288,74485,178760,93867,73635,128860,50362,261,67455,80001,46080,35662,4368,25247,19230,74393,22588,1822,27682,235324,13798,85998,13194,235067,23514,71669,147632,23191,134748,214683,105101,1518,25489,247114,7380,54842,26922,3971,26361,20844,68642,170517,77339,123255,8963,77818,150998,48466,36806,2732,23261,11741,236162,18243,126216,28690,50546,16385,92760,197383,246558,201295,88255,67588,71687,176076,172653,169058,33906,63747,24835,157621,43338,30050,46152,132741,2770,51371,94835,6614,15112,11749,56936,1250,19027,399017,58036,100215,23388,55815,308768,124152,94803,9521,64186,8971,28,30427,62163,7616,103838,35079,29203,131235,7743,17389,10882,37420,61460,228512,85363,41581,131077,62822,119647,10130,54445,26925,19968,29016,24446,74028,24176,61448,67185,9254,8563,119129,9771,99184,37716,39514,10532,221512,258753,218630,55980,23394,32141,61924,66749,32411,3741,36475,26678,77010,44946,91203,128749,116953,20476,49625,53116,13735,102335,29376,51946,83407,67892,59212,34685,21083,1546,112982,32972,74397,1078,190545,16082,86140,58591,89611,101531,10061,105104,76319,20035,17551,52611,169061,190842,100780,23907,90413,115619,9675,34710,193435,49443,129734,11183,258877,16318,136182,126808,44635,27304,192375,2599,125648,47051,12091,23814,721,58800,40137,66726,97930,60877,74487,7942,54326,9841,41428,13762,8211,85383,6950,99177,79806,201786,296464,124087,13144,29741,41721,47634,55088,254286,106408,17041,99064,12942,64086,45233,14005,2612,55827,255,7984,13980,38574,12776,46654,73499,249951,2101,26676,25996,132326,116415,119062,50449,31033,23038,11589,179252,20007,14860,129270,21143,17796,144715,60106,70758,69842,34674,282133,44014,16774,57268,38528,24053,46373,201667,28327,471023,51889,102667,21193,114909,84132,69317,96723,67969,16134,68145,15058,28765,32035,2524,101089,98664,25045,76571,14957,86040,118506,262428,154764,81573,39681,283900,73287,127825,544,80448,52347,38512,175971,15180,45467,33086,46552,48894,81107,43213,36672,54025,76703,8053,7608,13299,56619,20752,238099,54164,105133,1444,32942,953,37564,8e3,66316,119463,106817,404,13667,149108,128597,31267,10269,49836,106150,1484,52330,76965,160486,171648,38456,31263,22424,37738,66245,67467,143369,60471,75610,20895,115528,86070,60854,40796,49347,18989,15030,11371,37578,15779,79867,10187,86462,46402,155626,93200,40229,7090,57547,108053,99598,11088,47505,41218,206017,2173,20988,30219,22919,80563,57566,42369,93141,41675,2407,182519,120495,27154,16702,29456,14349,7958,16688,117177,140375,42467,261919,74916,153569,10836,34742,49526,7621,105997,12212,2270,392377,7755,17959,25086,232152,138791,33847,13860,35316,5811,1344,71259,50452,207539,92635,50359,5821,33674,30255,2086,2587,96264,17543,42,6029,9580,43007,139248,82831,12917,29607,25786,51467,42137,85161,100698,31561,88989,121990,278500,3602,109344,37982,15279,116442,28936,30880,87894,58079,128661,126731,67392,28051,146885,4861,16216,97344,42827,147561,153948,22684,21335,47685,1853,43349,15185,59642,10229,25520,187921,108972,5579,98037,24945,6697,19193,63734,137934,75056,89740,19767,224268,56138,63643,151661,39313,70618,84031,89723,84074,13703,85626,35460,8867,64845,3439,57906,99776,63968,49270,81130,34356,16210,23547,36446,34090,140028,72439,2221,22163,57058,363492,113754,18913,95451,48663,54464,54037,176097,68425,3023,34906,29482,117389,341780,80431,58330,16753,92616,60907,94846,147486,4498,48646,7773,46801,7778,18946,464978,47558,33223,177444,7328,15626,63337,94700,11743,9351,255024,39098,16447,42647,96230,39769,58840,10068,63439,35800,65843,58823,413844,9156,51258,7434,61791,85018,6872,3692,28096,7121,33024,6009,75532,31997,192535,9661,3304,9547,14753,31987,25314,55689,15896,20430,39472,31340,99744,25398,115569,54883,28719,205423,23071,57855,64638,149867,25671,82403,37616,20668,39989,77996,74948,140555,175248,64810,36515,46595,4958,248773,24045,28728,136673,168704,20804,114833,100325,27135,21205,96151,153134,45992,7093,13992,76047,1980,19432,145001,75159,87462,17710,1013,45556,34297,144882,20648,26061,11319,129567,108555,18872,464580,33386,22717,65948,167189,5603,135042,79542,8801,202632,18114,91882,5973,5239,67315,4431,60916,47819,71693,32597,32606,18183,45072,80329,76385,24749,51305,40314,156514,14693,130345,13168,66214,18029,12858,34801,27628,14544,10823,40522,40185,33739,148694,23548,9923,61012,28859,17933,19442,34364,99849,164107,141167,30629,21054,6744,36491,8096,42474,41706,155060,30650,10600,163442,1143,96655,61390,52359,7559,51568,64256,203854,4467,22453,14504,436398,7878,6980,8293,63610,293747,16167,35763,19627,147603,15419,18032,110744,51346,33681,54571,40472,48615,39073,21604,13754,173027,92560,11083,47299,63062,11813,52007,29883,9734,139722,15953,1550,20651,13616,49306,16113,90089,92326,7584,30712,72424,164858,6831,152871,55746,197721,34167,196442,6022,112107,55215,7538,123381,4920,43539,77165,8939,50392,34192,20225,79762,22505,58667,40770,29788,97180,82835,4568,8579,13273,363569,35898,49983,436,36598,3237,131691,62418,35591,8101,4073,379438,65218,76072,33887,2968,27573,212619,288680,68278,72851,150504,217896,6913,121339,22017,35340,51072,43616,75043,31437,10833,81487,4364,22968,41454,106687,85446,19863,109625,149241,524,141850,214404,54376,657,237023,9401,108137,53800,32474,49712,53334,126876,27337,45552,177696,8269,15036,12097,42240,2328,125374,119295,99715,2500,19624,39441,27220,102691,60957,94543,39101,18566,67362,13975,78230,25017,34017,239007,90027,39351,41681,35354,43822,1043,916,58587,141983,94818,38799,75459,41114,67432,16195,36606,59568,22272,126769,31424,68659,12287,134302,257977,5756,207285,95637,47248,117689,19583,77451,22373,12200,54993,117118,34244,29386,34562,53819,71267,64172,77665,49368,7716,59301,25749,45426,194789,17297,2650,1766,32501,45198,20403,20984,6600,14171,94604,19037,5402,29896,9938,59935,109708,88081,145182,44844,39167,352626,164173,35374,45982,6122,154,73419,220487,53834,53601,17992,8609,229321,5610,68098,66815,71012,95069,140968,27396,8957,134489,24656,86659,56598,134852,17316,123838,255436,6613,41610,138033,81452,32023,32396,123687,63398,8693,29712,30407,19296,121188,3551,36099,20032,111948,56624,16547,27453,35916,15378,52039,56849,13489,22214,73177,53097,277349,2157,14029,187886,10260,141743,246460,91880,50869,3788,49486,133566,54950,33120,129337,53768,18333,9525,26902,312251,10297,9020,70759,16647,112432,59260,84609,9818,82766,73569,468,46001,75780,55028,52106,11498,43645,108069,17150,17753,29417,16705,31799,9606,289,122254,115975,8620,6133,255357,56908,14456,133464,43554,79224,11247,29630,160,12756,25464,65960,350428,62521,321796,100359,67358,35169,46172,113128,48988,88868,31094,33266,6847,60887,98188,49659,69117,92977,220228,13947,80181,35103,62170,97351,13475,2440,199768,19498,36597,46971,25234,67806,62881,84717,73648,181966,10488,94149,21550,26655,63436,48375,14405,165650,9621,24439,28043,42735,4490,29963,56674,45373,1934,262446,50855,67098,26898,5261,52696,40644,33900,9440,180286,87162,22940,19704,26936,69769,10254,101759,27406,12243,48e3,73926,113215,54935,5726,192787,4312,106216,9366,11550,52949,23457,212271,277152,133895,108374,6191,96477,29980,218916,58024,54696,40853,91124,65894,91170,65908,252552,6793,29212,15389,44516,122515,52617,35058,9017,103536,39510,49136,19242,130652,662077,74699,47024,31422,8517,73351,24399,13867,128360,4810,4434,61779,111983,61036,17798,110240,59722,102960,39688,10001,23803,23039,176498,56659,44814,134295,17188,77577,74466,226175,102472,154333,63900,111747,18062,41171,79669,32773,408933,42562,28931,30907,107388,43487,2946,240310,23938,24354,319,184983,7927,6488,1422,10790,68809,68209,64775,4361,202,17123,59634,51200,44391,18188,17843,2619,74278,3230,9540,47187,21702,36274,56894,43907,16310,34790,16866,6150,5561,13587,107545,108873,126867,86986,28640,33427,19017,5762,80637,17430,46903,2047,131055,25958,13558,5444,47152,13900,44563,122857,45348,70863,39593,54332,38068,33637,318,40310,143467,18502,24520,11377,62013,28942,27246,28269,83545,17999,59015,90707,30065,15161,34720,1263,37008,2012,6060,98575,92933,5721,299,199555,24578,29223,2985,743,115825,109523,136657,47454,26378,53586,3733,174945,93340,244456,5693,37386,28782,89767,27545,23573,18798,136425,34320,84778,20041,48453,38215,7477,71958,40621,8773,5874,187927,105965,51100,43533,18083,8443,10180,43597,2003,183999,69689,12216,129696,146188,62389,34044,68410,12765,43273,26949,266807,3345,34477,79197,5688,47539,213110,21634,22257,50092,32222,42346,39530,63668,98,134978,74022,5152,59088,174145,37220,9934,9545,118937,5724,87240,19875,15784,40143,23263,87513,181654,285152,37881,263241,4966,43934,10433,186657,6470,74416,225854,25908,142677,246262,32280,6192,75890,45546,143264,135305,29742,47013,77787,11732,126658,8763,37950,21806,57557,113464,89465,108995,164574,23894,22996,23169,15369,23117,17642,130607,40503,36239,280990,44666,9981,40427,147487,26869,168452,32886,32991,46798,240839,15111,70502,65697,88548,44145,28701,48767,31139,206777,35659,181164,166262,14554,171445,31786,66523,76607,17956,6507,31279,90476,116611,167918,6560,1243,115324,80128,41867,55897,187323,37069,32596,189444,145931,13390,105530,65709,26805,6999,55714,41300,22915,68951,22138,21120,22264,10058,19945,33635,56123,99085,10032,5818,6016,46649,57476,35264,94413,112522,262288,93686,83038,14341,23204,28807,66084,77987,6101,126673,7133,38126,5923,122091,170240,97772,46874,215746,43948,41622,3272,55596,8332,146411,251315,13533,8561,81521,115449,48616,175175,2063,186556,3036,134537,75772,29728,82360,22973,186559,86348,89100,38388,82297,45610,2613,87082,9986,177812,57884,23591,47485,42543,33582,44713,74439,257444,252451,31825,35631,38540,33066,5147,13973,4343,51830,70378,22827,26448,95560,36896,241741,48067,203953,298860,61620,20450,3220,67272,6586,107662,100160,108684,6929,57226,4762,7457,1320,40404,77204,99309,62750,208653,59977,44e3,74315,34332,5819,172217,64904,114077,18147,84012,1791,98456,90930,21446,116669,103938,7422,85140,59713,5768,326211,16239,75411,13229,29398,10758,236107,1539,112472,95979,152154,151294,306,21196,38146,10700,6891,84282,109646,56492,40539,6589,119491,51354,30685,140209,136906,29622,73617,49553,70525,51671,166869,139616,74395,37439,49595,45678,11959,33211,86560,52434,9282,62690,112155,130810,5243,108261,99970,265613,72551,80049,6391,33365,90721,66737,69872,87011,1860,9032,112544,60905,37371,89015,140351,19076,850,373531,2802,36725,218795,72062,28990,16550,24614,7815,6187,26336,33373,32162,42791,73555,32062,23386,10244,56392,49442,27076,136262,12412,14883,1134,33675,97153,199281,15608,100152,74072,47942,254301,36451,16026,10687,65067,56708,254030,30290,50490,13864,57941,259331,35588,23485,43486,24869,21620,92971,22072,88645,1048,182050,13343,32452,14825,19509,3325,216938,45740,99716,189082,53740,78245,25609,24311,176777,47340,308354,40669,66085,14102,125339,9225,128709,97207,1271,200933,78439,113451,88975,18324,46521,11819,18570,141756,72512,170020,52754,63550,118515,103073,93330,32736,50499,14722,31600,68452,398867,29316,172786,18417,104924,2606,5670,84818,16288,67106,59580,82929,607401,291,85829,359,15897,35830,50696,65630,52672,22115,356968,29895,40837,231192,34024,38957,26722,406,23335,124952,72068,68804,13268,147101,164740,276569,162596,66943,11569,26654,66358,4777,23229,102127,5848,978,2921,59666,5371,28212,90108,42938,39320,2499,4271,108792,33510,125072,71653,65239,38250,66357,38577,13964,86251,35708,50755,36010,29448,12209,3844,38222,206337,100876,67827,137088,14167,252225,84163,195270,1306,5703,54198,779,46802,22028,51124,86759,70560,113164,35685,162145,45471,34561,422,2611,6464,47486,19223,38246,9191,18331,89942,243642,212364,15893,17518,22617,6409,30046,126182,59716,36560,104428,18846,26592,19458,50793,147333,30826,1388,27647,10922,14495,33545,19269,135828,39727,41601,46931,233379,49169,131130,182112,16276,82381,118209,142445,128310,19672,28740,82907,33436,3118,102206,28723,24819,41937,38854,5157,3881,111491,1142,9776,421673,152241,29309,14961,87854,6054,15424,3796,82656,54996,2108,55367,239450,154525,9643,118103,106041,64601,68549,48707,30266,25772,18740,9462,229669,91798,112152,191327,14493,72828,8175,66636,236474,25817,87351,129027,76653,20422,22983,71240,27846,44661,12399,46158,77704,53101,35032,11072,17300,109294,33638,24408,1895,11241,760,17584,82479,125877,63150,141075,34259,23274,81698,15732,43577,48340,91584,14688,16379,24481,150280,96420,262050,48635,43727,61819,56268,72003,88178,17281,79912,13218,122519,125295,166396,11811,2171,118930,67746,17636,178278,174656,95661,173039,83845,79689,17473,98555,127696,203415,54730,22925,232239,9309,12136,175026,20740,180188,10747,39816,314017,266131,10040,175732,112550,220651,31974,37393,888,23008,86799,4303,64905,148467,75337,251,3284,370102,50264,9835,5438,23655,4481,29851,329,12855,7162,64931,78141,12804,42372,296771,83547,18624,34874,86271,3360,48665,77735,88767,11463,63527,28889,22258,29140,194315,113924,25499,6406,31334,1845,4802,49184,43455,35469,127594,92970,61038,115005,38840,87761,106838,8811,20572,55637,11162,96721,132425,108925,2948,125457,36356,3502,75270,27622,127192,2561,123095,49394,61155,16897,110064,9699,89448,53356,19628,220310,21622,83036,9885,112214,6087,26713,17901,161912,91492,3440,68594,9266,92238,8087,6866,150194,72175,80701,13459,31836,43243,239700,95846,44749,50647,21945,230538,120612,132371,244604,5193,105637,34661,41341,68775,85393,1874,8771,33718,49672,77403,595452,99507,6490,58895,128742,7704,39239,73217,43816,62824,37804,199976,22361,80005,87514,94832,14089,4574,139975,59142,75523,100268,43906,53442,15152,2547,186002,17011,19513,204282,3343,60568,128318,119250,4298,51871,41336,71759,21921,45074,98169,145889,99427,11350,1237,5520,28799,7803,53702,21026,136352,38293,128690,12158,90132,44600,10184,26957,39459,126025,78904,82999,59373,39301,150198,120529,153042,20177,50089,14764,271571,30530,123161,38975,101562,22941,5648,124654,109243,69817,71675,49162,106884,21241,107795,30258,16572,188262,141456,7688,60718,8271,11044,32440,104608,103419,236109,93156,43293,128929,42107,67180,25201,115254,185488,130954,72813,167547,20537,39969,38432,22582,184022,1139,27199,5655,17767,97412,122606,209377,27070,35871,326617,188954,42680,73512,80911,22629,3011,95021,315242,157737,383,41821,41808,19335,27950,15674,25677,110950,35375,76835,59108,57370,35262,16569,160415,37706,78086,32041,49691,137143,9782,172080,50148,77917,6323,10110,69172,17711,21795,59511,76184,135114,31046,132319,59105,157578,20549,80778,57649,158421,65143,4575,72235,21899,10797,92745,34035,106079,80159,4508,78304,25350,75457,46458,32937,25623,47,8531,104751,84953,8138,36508,187199,66310,115274,13253,32461,38536,1916,42007,187160,35055,26325,84394,35963,94216,45590,97782];var Vs=15,Fs=class{log;peerRouting;routingTable;refreshInterval;refreshQueryTimeout;commonPrefixLengthRefreshedAt;refreshTimeoutId;constructor(e,t){let{peerRouting:n,routingTable:s,refreshInterval:i,refreshQueryTimeout:o,logPrefix:a}=t;this.log=e.logger.forComponent(`${a}:routing-table:refresh`),this.peerRouting=n,this.routingTable=s,this.refreshInterval=i??3e5,this.refreshQueryTimeout=o??3e4,this.commonPrefixLengthRefreshedAt=[],this.refreshTable=this.refreshTable.bind(this)}async afterStart(){this.log(`refreshing routing table every ${this.refreshInterval}ms`),this.refreshTable(!0)}async stop(){this.refreshTimeoutId!=null&&clearTimeout(this.refreshTimeoutId)}refreshTable(e=!1){this.log("refreshing routing table");let t=this._maxCommonPrefix(),n=this._getTrackedCommonPrefixLengthsForRefresh(t);this.log(`max common prefix length ${t}`),this.log(`tracked CPLs [ ${n.map(s=>s.toISOString()).join(", ")} ]`),Promise.all(n.map(async(s,i)=>{try{if(await this._refreshCommonPrefixLength(i,s,e),this._numPeersForCpl(t)===0){let o=Math.min(2*(i+1),n.length-1);for(let a=i+1;a<o+1;a++)try{await this._refreshCommonPrefixLength(a,s,e)}catch(c){this.log.error(c)}}}catch(o){this.log.error(o)}})).catch(s=>{this.log.error(s)}).then(()=>{this.refreshTimeoutId=setTimeout(this.refreshTable,this.refreshInterval),this.refreshTimeoutId.unref!=null&&this.refreshTimeoutId.unref()}).catch(s=>{this.log.error(s)})}async _refreshCommonPrefixLength(e,t,n){if(!n&&t.getTime()>Date.now()-this.refreshInterval){this.log("not running refresh for cpl %s as time since last refresh not above interval",e);return}let s=await this._generateRandomPeerId(e);this.log("starting refreshing cpl %s with key %p (routing table size was %s)",e,s,this.routingTable.size);let i=await Ns(this.peerRouting.getClosestPeers(s.toBytes(),{signal:AbortSignal.timeout(this.refreshQueryTimeout)}));this.log(`found ${i} peers that were close to imaginary peer %p`,s),this.log("finished refreshing cpl %s with key %p (routing table size is now %s)",e,s,this.routingTable.size)}_getTrackedCommonPrefixLengthsForRefresh(e){e>Vs&&(e=Vs);let t=[];for(let n=0;n<=e;n++)t[n]=this.commonPrefixLengthRefreshedAt[n]??new Date;return t}async _generateRandomPeerId(e){if(this.routingTable.kb==null)throw new Error("Routing table not started");let t=ct(2),n=(t[1]<<8)+t[0],s=await this._makePeerId(this.routingTable.kb.localNodeId,n,e);return gt(s)}async _makePeerId(e,t,n){if(n>Vs)throw new Error(`Cannot generate peer ID for common prefix length greater than ${Vs}`);let o=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(0,!1)^32768>>n,a=65535<<16-(n+1),c=o&a|t&~a,l=G4[c],f=new ArrayBuffer(34),u=new DataView(f,0,f.byteLength);return u.setUint8(0,ne.code),u.setUint8(1,32),u.setUint32(2,l,!1),new Uint8Array(u.buffer,u.byteOffset,u.byteLength)}_maxCommonPrefix(){let e=0;for(let t of this._prefixLengths())t>e&&(e=t);return e}_numPeersForCpl(e){let t=0;for(let n of this._prefixLengths())n===e&&t++;return t}*_prefixLengths(){if(this.routingTable.kb!=null)for(let{id:e}of this.routingTable.kb.toIterable()){let t=Lt(this.routingTable.kb.localNodeId,e),n=0;for(let s of t)if(s===0)n++;else break;yield n}}};function Ms(r){return r[Symbol.asyncIterator]!=null}var Hs=r=>{let e=he(r),t=be(e);return Ke(r,t),Hs.bytes=e,t};Hs.bytes=0;function Ks(r,e){e=e??{};let t=e.lengthEncoder??Hs;function*n(s){let i=t(s.byteLength);i instanceof Uint8Array?yield i:yield*i,s instanceof Uint8Array?yield s:yield*s}return Ms(r)?async function*(){for await(let s of r)yield*n(s)}():function*(){for(let s of r)yield*n(s)}()}Ks.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??Hs;return new Me(t(r.byteLength),r)};var on=ln(W4(),1);var tc=8,rc=1024*1024*4,vr;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(vr||(vr={}));var n2=r=>{let e=Ue(r);return n2.bytes=he(e),e};n2.bytes=0;function Kn(r,e){let t=new Me,n=vr.LENGTH,s=-1,i=e?.lengthDecoder??n2,o=e?.maxLengthLength??tc,a=e?.maxDataLength??rc;function*c(){for(;t.byteLength>0;){if(n===vr.LENGTH)try{if(s=i(t),s<0)throw(0,on.default)(new Error("invalid message length"),"ERR_INVALID_MSG_LENGTH");if(s>a)throw(0,on.default)(new Error("message length too long"),"ERR_MSG_DATA_TOO_LONG");let l=i.bytes;t.consume(l),e?.onLength!=null&&e.onLength(s),n=vr.DATA}catch(l){if(l instanceof RangeError){if(t.byteLength>o)throw(0,on.default)(new Error("message length length too long"),"ERR_MSG_LENGTH_TOO_LONG");break}throw l}if(n===vr.DATA){if(t.byteLength<s)break;let l=t.sublist(0,s);t.consume(s),e?.onData!=null&&e.onData(l),yield l,n=vr.LENGTH}}}return Ms(r)?async function*(){for await(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw(0,on.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}():function*(){for(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw(0,on.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}()}Kn.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 Kn(n,{...e??{},onLength:i=>{t=i}})};var qs=class{providers;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:add-provider`),this.providers=t.providers}async handle(e,t){if(this.log("start"),t.key==null||t.key.length===0)throw new x("Missing key","ERR_MISSING_KEY");let n;try{n=_e.decode(t.key)}catch{throw new x("Invalid CID","ERR_INVALID_CID")}(t.providers==null||t.providers.length===0)&&this.log.error("no providers found in message"),await Promise.all(t.providers.map(async s=>{if(!e.equals(s.id)){this.log("invalid provider peer %p from %p",s.id,e);return}if(s.multiaddrs.length<1){this.log("no valid addresses for provider %p. Ignore",e);return}this.log("received provider %p for %s (addrs %s)",e,n,s.multiaddrs.map(i=>br(i).toString())),await this.providers.addProvider(n,gt(s.id))}))}};var $s=class{peerRouting;peerInfoMapper;peerId;addressManager;log;constructor(e,t){let{peerRouting:n,logPrefix:s}=t;this.log=e.logger.forComponent(`${s}:rpc:handlers:find-node`),this.peerId=e.peerId,this.addressManager=e.addressManager,this.peerRouting=n,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(this.log("incoming request from %p for peers closer to %b",e,t.key),t.key==null)throw new x("Invalid FIND_NODE message received - key was missing","ERR_INVALID_MESSAGE");let n=await this.peerRouting.getCloserPeersOffline(t.key,e);Q(this.peerId.toBytes(),t.key)&&n.push({id:this.peerId,multiaddrs:this.addressManager.getAddresses().map(i=>i.decapsulateCode(W("p2p").code))});let s={type:M.FIND_NODE,clusterLevel:t.clusterLevel,closer:n.map(this.peerInfoMapper).filter(({multiaddrs:i})=>i.length).map(i=>({id:i.id.toBytes(),multiaddrs:i.multiaddrs.map(o=>o.bytes)})),providers:[]};return s.closer.length===0&&this.log("could not find any peers closer to %b than %p",t.key,e),s}};var zs=class{peerRouting;providers;peerStore;peerInfoMapper;log;constructor(e,t){let{peerRouting:n,providers:s,logPrefix:i}=t;this.log=e.logger.forComponent(`${i}:rpc:handlers:get-providers`),this.peerStore=e.peerStore,this.peerRouting=n,this.providers=s,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(t.key==null)throw new x("Invalid GET_PROVIDERS message received - key was missing","ERR_INVALID_MESSAGE");let n;try{n=_e.decode(t.key)}catch{throw new x("Invalid CID","ERR_INVALID_CID")}this.log("%p asking for providers for %s",e,n);let[s,i]=await Promise.all([this.providers.getProviders(n),this.peerRouting.getCloserPeersOffline(t.key,e)]),o=await this._getPeers(s),a=await this._getPeers(i.map(({id:l})=>l)),c={type:M.GET_PROVIDERS,key:t.key,clusterLevel:t.clusterLevel,closer:a.map(this.peerInfoMapper).filter(({multiaddrs:l})=>l.length).map(l=>({id:l.id.toBytes(),multiaddrs:l.multiaddrs.map(f=>f.bytes)})),providers:o.map(this.peerInfoMapper).filter(({multiaddrs:l})=>l.length).map(l=>({id:l.id.toBytes(),multiaddrs:l.multiaddrs.map(f=>f.bytes)}))};return this.log("got %s providers %s closerPeers",c.providers.length,c.closer.length),c}async _getAddresses(e){return[]}async _getPeers(e){let t=[];for(let n of e)try{let s=await this.peerStore.get(n),i=this.peerInfoMapper({id:n,multiaddrs:s.addresses.map(({multiaddr:o})=>o)});i.multiaddrs.length>0&&t.push(i)}catch(s){if(s.code!=="ERR_NOT_FOUND")throw s}return t}};var Gs=class{peerStore;datastore;peerRouting;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:get-value`),this.peerStore=e.peerStore,this.datastore=e.datastore,this.peerRouting=t.peerRouting}async handle(e,t){let n=t.key;if(this.log("%p asked for key %b",e,n),n==null||n.length===0)throw new x("Invalid key","ERR_INVALID_KEY");let s={type:M.GET_VALUE,key:n,clusterLevel:t.clusterLevel,closer:[],providers:[]};if(b0(n)){this.log("is public key");let a=w0(n),c;try{let l=await this.peerStore.get(a);if(l.id.publicKey==null)throw new x("No public key found in key book","ERR_NOT_FOUND");c=l.id.publicKey}catch(l){if(l.code!=="ERR_NOT_FOUND")throw l}if(c!=null)return this.log("returning found public key"),s.record=new me(n,c,new Date).serialize(),s}let[i,o]=await Promise.all([this._checkLocalDatastore(n),this.peerRouting.getCloserPeersOffline(n,e)]);return i!=null&&(this.log("had record for %b in local datastore",n),s.record=i.serialize()),o.length>0&&(this.log("had %s closer peers in routing table",o.length),s.closer=o.map(a=>({id:a.id.toBytes(),multiaddrs:a.multiaddrs.map(c=>c.bytes)}))),s}async _checkLocalDatastore(e){this.log("checkLocalDatastore looking for %b",e);let t=Ht(e),n;try{n=await this.datastore.get(t)}catch(i){if(i.code==="ERR_NOT_FOUND")return;throw i}let s=me.deserialize(n);if(s==null)throw new x("Invalid record","ERR_INVALID_RECORD");if(s.timeReceived==null||Date.now()-s.timeReceived.getTime()>1296e5){await this.datastore.delete(t);return}return s}};var js=class{log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:ping`)}async handle(e,t){return this.log("ping from %p",e),t}};var Ys=class{components;validators;log;constructor(e,t){let{validators:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:put-value`),this.validators=n}async handle(e,t){let n=t.key;if(this.log("%p asked us to store value for key %b",e,n),t.record==null){let s=`Empty record from: ${e.toString()}`;throw this.log.error(s),new x(s,"ERR_EMPTY_RECORD")}try{let s=me.deserialize(t.record);await _r(this.validators,s),s.timeReceived=new Date;let i=Ht(s.key);await this.components.datastore.put(i,s.serialize().subarray()),this.log("put record for %b into datastore under key %k",n,i)}catch(s){this.log("did not put record for key %b into datastore %o",n,s)}return t}};var Ws=class{handlers;routingTable;log;constructor(e,t){let{providers:n,peerRouting:s,validators:i,logPrefix:o,peerInfoMapper:a}=t;this.log=e.logger.forComponent(`${o}:rpc`),this.routingTable=t.routingTable,this.handlers={[M.GET_VALUE.toString()]:new Gs(e,{peerRouting:s,logPrefix:o}),[M.PUT_VALUE.toString()]:new Ys(e,{validators:i,logPrefix:o}),[M.FIND_NODE.toString()]:new $s(e,{peerRouting:s,logPrefix:o,peerInfoMapper:a}),[M.ADD_PROVIDER.toString()]:new qs(e,{providers:n,logPrefix:o}),[M.GET_PROVIDERS.toString()]:new zs(e,{peerRouting:s,providers:n,logPrefix:o,peerInfoMapper:a}),[M.PING.toString()]:new js(e,{logPrefix:o})}}async handleMessage(e,t){try{await this.routingTable.add(e)}catch(s){this.log.error("Failed to update the kbucket store",s)}let n=this.handlers[t.type];if(n==null){this.log.error(`no handler found for message type: ${t.type}`);return}return n.handle(e,t)}onIncomingStream(e){Promise.resolve().then(async()=>{let{stream:t,connection:n}=e,s=n.remotePeer;try{await this.routingTable.add(s)}catch(o){this.log.error(o)}let i=this;await Ft(t,o=>Kn(o),async function*(o){for await(let a of o){let c=qe.decode(a);i.log("incoming %s from %p",c.type,s);let l=await i.handleMessage(s,c);l!=null&&(yield qe.encode(l))}},o=>Ks(o),t)}).catch(t=>{this.log.error(t)})}};var Zs=class extends Be{log;components;protocol;running;registrarId;constructor(e,t){super();let{protocol:n,logPrefix:s}=t;this.components=e,this.log=e.logger.forComponent(`${s}:topology-listener`),this.running=!1,this.protocol=n}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.registrarId=await this.components.registrar.register(this.protocol,{onConnect:e=>{this.log("observed peer %p with protocol %s",e,this.protocol),this.dispatchEvent(new Te("peer",{detail:e}))}}))}async stop(){this.running=!1,this.registrarId!=null&&(this.components.registrar.unregister(this.registrarId),this.registrarId=void 0)}};var s2=class{dht;constructor(e){this.dht=e}async provide(e,t={}){await ei(this.dht.provide(e,t))}async*findProviders(e,t={}){for await(let n of this.dht.findProviders(e,t))n.name==="PROVIDER"&&(yield*n.providers)}async put(e,t,n){await ei(this.dht.put(e,t,n))}async get(e,t){for await(let n of this.dht.get(e,t))if(n.name==="VALUE")return n.value;throw new x("Not found","ERR_NOT_FOUND")}},i2=class{dht;constructor(e){this.dht=e}async findPeer(e,t={}){for await(let n of this.dht.findPeer(e,t))if(n.name==="FINAL_PEER")return n.peer;throw new x("Not found","ERR_NOT_FOUND")}async*getClosestPeers(e,t={}){for await(let n of this.dht.getClosestPeers(e,t))n.name==="FINAL_PEER"&&(yield n.peer)}},sc=32,ic=64,Qs=class extends Be{protocol;routingTable;providers;network;peerRouting;components;log;running;kBucketSize;clientMode;validators;selectors;queryManager;contentFetching;contentRouting;routingTableRefresh;rpc;topologyListener;querySelf;maxInboundStreams;maxOutboundStreams;dhtContentRouting;dhtPeerRouting;peerInfoMapper;constructor(e,t){super();let{kBucketSize:n,clientMode:s,validators:i,selectors:o,querySelfInterval:a,protocol:c,logPrefix:l,pingTimeout:f,pingConcurrency:u,maxInboundStreams:h,maxOutboundStreams:m,providers:p}=t,d=l??"libp2p:kad-dht";this.running=!1,this.components=e,this.log=e.logger.forComponent(d),this.protocol=c??A2,this.kBucketSize=n??20,this.clientMode=s??!0,this.maxInboundStreams=h??sc,this.maxOutboundStreams=m??ic,this.peerInfoMapper=t.peerInfoMapper??c1,this.routingTable=new Os(e,{kBucketSize:n,pingTimeout:f,pingConcurrency:u,protocol:this.protocol,logPrefix:d}),this.providers=new Rs(e,p??{}),this.validators={...a0,...i},this.selectors={...o0,...o},this.network=new Es(e,{protocol:this.protocol,logPrefix:d});let g=fe();t.allowQueryWithZeroPeers===!0&&g.resolve(),this.queryManager=new ks(e,{disjointPaths:Math.ceil(this.kBucketSize/2),logPrefix:d,initialQuerySelfHasRun:g,routingTable:this.routingTable}),this.peerRouting=new Is(e,{routingTable:this.routingTable,network:this.network,validators:this.validators,queryManager:this.queryManager,logPrefix:d}),this.contentFetching=new l1(e,{validators:this.validators,selectors:this.selectors,peerRouting:this.peerRouting,queryManager:this.queryManager,network:this.network,logPrefix:d}),this.contentRouting=new ys(e,{network:this.network,peerRouting:this.peerRouting,queryManager:this.queryManager,routingTable:this.routingTable,providers:this.providers,logPrefix:d}),this.routingTableRefresh=new Fs(e,{peerRouting:this.peerRouting,routingTable:this.routingTable,logPrefix:d}),this.rpc=new Ws(e,{routingTable:this.routingTable,providers:this.providers,peerRouting:this.peerRouting,validators:this.validators,logPrefix:d,peerInfoMapper:this.peerInfoMapper}),this.topologyListener=new Zs(e,{protocol:this.protocol,logPrefix:d}),this.querySelf=new Ts(e,{peerRouting:this.peerRouting,interval:a,initialInterval:t.initialQuerySelfInterval,logPrefix:d,initialQuerySelfHasRun:g,routingTable:this.routingTable}),this.network.addEventListener("peer",y=>{let v=y.detail;this.onPeerConnect(v).catch(b=>{this.log.error("could not add %p to routing table",v.id,b)}),this.dispatchEvent(new Te("peer",{detail:v}))}),this.topologyListener.addEventListener("peer",y=>{let v=y.detail;Promise.resolve().then(async()=>{let b=await this.components.peerStore.get(v),S={id:v,multiaddrs:b.addresses.map(({multiaddr:E})=>E),protocols:b.protocols};await this.onPeerConnect(S)}).catch(b=>{this.log.error("could not add %p to routing table",v,b)})}),this.dhtPeerRouting=new i2(this),this.dhtContentRouting=new s2(this),t.clientMode==null&&e.events.addEventListener("self:peer:update",y=>{this.log("received update of self-peer info"),Promise.resolve().then(async()=>{let v=y.detail.peer.addresses.some(({multiaddr:S})=>x0(S)),b=this.getMode();v&&b==="client"?await this.setMode("server"):b==="server"&&!v&&await this.setMode("client")}).catch(v=>{this.log.error("error setting dht server mode",v)})})}get[m2](){return this.dhtContentRouting}get[w2](){return this.dhtPeerRouting}get[y2](){return this}async onPeerConnect(e){if(this.log("peer %p connected",e.id),e=this.peerInfoMapper(e),e.multiaddrs.length===0){this.log("ignoring %p as there were no valid addresses in %s after filtering",e.id,e.multiaddrs.map(t=>t.toString()));return}try{await this.routingTable.add(e.id)}catch(t){this.log.error("could not add %p to routing table",e.id,t)}}isStarted(){return this.running}getMode(){return this.clientMode?"client":"server"}async setMode(e){await this.components.registrar.unhandle(this.protocol),e==="client"?(this.log("enabling client mode"),this.clientMode=!0):(this.log("enabling server mode"),this.clientMode=!1,await this.components.registrar.handle(this.protocol,this.rpc.onIncomingStream.bind(this.rpc),{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}))}async start(){this.running=!0,await this.setMode(this.clientMode?"client":"server"),await x2(this.querySelf,this.providers,this.queryManager,this.network,this.routingTable,this.topologyListener,this.routingTableRefresh)}async stop(){this.running=!1,await E2(this.querySelf,this.providers,this.queryManager,this.network,this.routingTable,this.routingTableRefresh,this.topologyListener)}async*put(e,t,n={}){yield*this.contentFetching.put(e,t,n)}async*get(e,t={}){yield*this.contentFetching.get(e,t)}async*provide(e,t={}){yield*this.contentRouting.provide(e,this.components.addressManager.getAddresses(),t)}async*findProviders(e,t={}){yield*this.contentRouting.findProviders(e,t)}async*findPeer(e,t={}){yield*this.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t={}){yield*this.peerRouting.getClosestPeers(e,t)}async refreshRoutingTable(){this.routingTableRefresh.refreshTable(!0)}};var o2;(function(r){r[r.SEND_QUERY=0]="SEND_QUERY",r[r.PEER_RESPONSE=1]="PEER_RESPONSE",r[r.FINAL_PEER=2]="FINAL_PEER",r[r.QUERY_ERROR=3]="QUERY_ERROR",r[r.PROVIDER=4]="PROVIDER",r[r.VALUE=5]="VALUE",r[r.ADD_PEER=6]="ADD_PEER",r[r.DIAL_PEER=7]="DIAL_PEER"})(o2||(o2={}));function oc(r){return e=>new Qs(e,r)}return l5(ac);})();
8
8
  /*! Bundled license information:
9
9
 
10
10
  pvtsutils/build/index.js: