helia 2.0.0-9f9bc60 → 2.0.0
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 +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.d.ts.map +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/package.json +2 -2
- package/src/version.ts +1 -1
package/dist/index.min.js
CHANGED
|
@@ -81,7 +81,7 @@ a=candidate:1467250027 1 UDP 1467250027 ${t} ${n} typ host\r
|
|
|
81
81
|
a=ice-ufrag:`+e+`
|
|
82
82
|
`).replace(/\na=ice-pwd:[^\n]*\n/,`
|
|
83
83
|
a=ice-pwd:`+e+`
|
|
84
|
-
`),r}var FT=Array.from("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),KT=r=>[...Array(r)].map(()=>FT.at(Math.floor(Math.random()*FT.length))).join("");var xp=C("libp2p:webrtc:transport"),dY=1e4,pY=le("webrtc-direct").code,sy=le("certhash").code,vp=class{metrics;components;init;constructor(e,t={}){this.components=e,this.init=t,e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_webrtc_dialer_events_total",{label:"event",help:"Total count of WebRTC dial events by type"})})}async dial(e,t){let n=await this._connect(e,t);return xp(`dialing address - ${e.toString()}`),n}createListener(e){throw YI("WebRTCTransport.createListener")}filter(e){return e.filter(mY)}[Symbol.toStringTag]="@libp2p/webrtc-direct";[Wi]=!0;async _connect(e,t){let n=new AbortController,i=n.signal,s=e.getPeerId();if(s===null)throw np("we need to have the remote's PeerId");let o=we(s),a=ny(Ep(e)),c=await yu.generateCertificate({name:"ECDSA",namedCurve:"P-256",hash:iy(a.name)}),u=new yu({certificates:[c]});try{let l=new Promise((T,P)=>{let V=u.createDataChannel("",{negotiated:!0,id:0}),$=setTimeout(()=>{let Y=`Data channel was never opened: state: ${V.readyState}`;xp.error(Y),this.metrics?.dialerEvents.increment({open_error:!0}),P(m8("data",Y))},dY);V.onopen=Y=>{clearTimeout($),T(V)},V.onerror=Y=>{clearTimeout($);let _e=`Error opening a data channel for handshaking: ${Y.target?.toString()??"not specified"}`;xp.error(_e),this.metrics?.dialerEvents.increment({unknown_error:!0}),P(m8("data",_e))}}),f="libp2p+webrtc+v1/"+KT(32),h=await u.createOffer(),d=UT(h,f);await u.setLocalDescription(d);let p=MT(e,f);await u.setRemoteDescription(p);let m=await l,g=this.components.peerId,y=this.generateNoisePrologue(u,a.code,e),b=au({prologueBytes:y})(),w=wu({channel:m,direction:"inbound",dataChannelOptions:this.init.dataChannel}),_={...w,sink:w.sink.bind(w),source:async function*(){for await(let T of w.source)for(let P of T)yield P}()},x=new Ua({peerConnection:u,remoteAddr:e,timeline:{open:Date.now()},metrics:this.metrics?.dialerEvents}),v=Ff?"iceconnectionstatechange":"connectionstatechange";u.addEventListener(v,()=>{switch(u.connectionState){case"failed":case"disconnected":case"closed":x.close().catch(T=>{xp.error("error closing connection",T)}).finally(()=>{n.abort()});break;default:break}},{signal:i}),this.metrics?.dialerEvents.increment({peer_connection:!0});let R=new Fa({peerConnection:u,metrics:this.metrics?.dialerEvents,dataChannelOptions:this.init.dataChannel});return await b.secureInbound(g,_,o),await t.upgrader.upgradeOutbound(x,{skipProtection:!0,skipEncryption:!0,muxerFactory:R})}catch(l){throw u.close(),l}}generateNoisePrologue(e,t,n){if(e.getConfiguration().certificates?.length===0)throw Uf("no local certificate");let i=LT(e);if(i==null)throw Uf("no local fingerprint found");let s=i.trim().toLowerCase().replaceAll(":",""),o=G(s,"hex"),a=qT.encode(o,t),c=ry.decode(Ep(n)),u=G("libp2p-webrtc-noise:");return ve([u,a,c])}};function mY(r){let e=r.protoCodes();return e.includes(pY)&&e.includes(sy)&&r.getPeerId()!=null&&!e.includes(le("p2p-circuit").code)}function VT(r){return e=>new vp(e,r)}function zT(r){return e=>new cp(e,r)}function $T(r){let e;try{e=le("sni").code}catch{return null}for(let[t,n]of r)if(t===e&&n!==void 0)return n;return null}function HT(r){return r.some(([e,t])=>e===le("tls").code)}function wn(r,e,t){let n=GT[le(r).name];if(n===void 0)throw new Error(`Can't interpret protocol ${le(r).name}`);let i=n(e,t);return r===le("ip6").code?`[${i}]`:i}var GT={ip4:(r,e)=>r,ip6:(r,e)=>e.length===0?r:`[${r}]`,tcp:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`tcp://${wn(t[0],t[1]??"",e)}:${r}`},udp:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`udp://${wn(t[0],t[1]??"",e)}:${r}`},dnsaddr:(r,e)=>r,dns4:(r,e)=>r,dns6:(r,e)=>r,dns:(r,e)=>r,ipfs:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${wn(t[0],t[1]??"",e)}/ipfs/${r}`},p2p:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${wn(t[0],t[1]??"",e)}/p2p/${r}`},http:(r,e)=>{let t=HT(e),n=$T(e);if(t&&n!==null)return`https://${n}`;let i=t?"https://":"http://",s=e.pop();if(s===void 0)throw new Error("Unexpected end of multiaddr");let o=wn(s[0],s[1]??"",e);return o=o.replace("tcp://",""),`${i}${o}`},tls:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return wn(t[0],t[1]??"",e)},sni:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return wn(t[0],t[1]??"",e)},https:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");let n=wn(t[0],t[1]??"",e);return n=n.replace("tcp://",""),`https://${n}`},ws:(r,e)=>{let t=HT(e),n=$T(e);if(t&&n!==null)return`wss://${n}`;let i=t?"wss://":"ws://",s=e.pop();if(s===void 0)throw new Error("Unexpected end of multiaddr");let o=wn(s[0],s[1]??"",e);return o=o.replace("tcp://",""),`${i}${o}`},wss:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");let n=wn(t[0],t[1]??"",e);return n=n.replace("tcp://",""),`wss://${n}`},"p2p-websocket-star":(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${wn(t[0],t[1]??"",e)}/p2p-websocket-star`},"p2p-webrtc-star":(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${wn(t[0],t[1]??"",e)}/p2p-webrtc-star`},"p2p-webrtc-direct":(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${wn(t[0],t[1]??"",e)}/p2p-webrtc-direct`}};function WT(r,e){let n=ye(r).stringTuples(),i=n.pop();if(i===void 0)throw new Error("Unexpected end of multiaddr");let s=le(i[0]),o=GT[s.name];if(o==null)throw new Error(`No interpreter found for ${s.name}`);let a=o(i[1]??"",n);return e?.assumeHttp!==!1&&i[0]===le("tcp").code&&(a=a.replace("tcp://","http://"),(i[1]==="443"||i[1]==="80")&&(i[1]==="443"&&(a=a.replace("http://","https://")),a=a.substring(0,a.lastIndexOf(":")))),a}var YT=async r=>{if(r.readyState>=2)throw new Error("socket closed");r.readyState!==1&&await new Promise((e,t)=>{function n(){r.removeEventListener("open",i),r.removeEventListener("error",s)}function i(){n(),e()}function s(o){n(),t(o.error??new Error(`connect ECONNREFUSED ${r.url}`))}r.addEventListener("open",i),r.addEventListener("error",s)})};var QT=(r,e)=>(e=e??{},e.closeOnEnd=e.closeOnEnd!==!1,async n=>{for await(let i of n){try{await YT(r)}catch(s){if(s.message==="socket closed")break;throw s}if(r.readyState===r.CLOSING||r.readyState===r.CLOSED)break;r.send(i)}e.closeOnEnd!=null&&r.readyState<=1&&await new Promise((i,s)=>{r.addEventListener("close",o=>{if(o.wasClean||o.code===1006)i();else{let a=Object.assign(new Error("ws error"),{event:o});s(a)}}),setTimeout(()=>{r.close()})})});var JT=X(jT(),1);function ZT(r){return r instanceof ArrayBuffer||r?.constructor?.name==="ArrayBuffer"&&typeof r?.byteLength=="number"}var eD=r=>{r.binaryType="arraybuffer";let e=async()=>{await new Promise((s,o)=>{if(n){s();return}if(i!=null){o(i);return}let a=l=>{r.removeEventListener("open",c),r.removeEventListener("error",u),l()},c=()=>{a(s)},u=l=>{a(()=>{o(l.error??new Error(`connect ECONNREFUSED ${r.url}`))})};r.addEventListener("open",c),r.addEventListener("error",u)})},t=async function*(){let s=new JT.EventIterator(({push:o,stop:a,fail:c})=>{let u=f=>{let h=null;typeof f.data=="string"&&(h=G(f.data)),ZT(f.data)&&(h=new Uint8Array(f.data)),f.data instanceof Uint8Array&&(h=f.data),h!=null&&o(h)},l=f=>{c(f.error??new Error("Socket error"))};return r.addEventListener("message",u),r.addEventListener("error",l),r.addEventListener("close",a),()=>{r.removeEventListener("message",u),r.removeEventListener("error",l),r.removeEventListener("close",a)}},{highWaterMark:1/0});await e();for await(let o of s)yield ZT(o)?new Uint8Array(o):o}(),n=r.readyState===1,i;return r.addEventListener("open",()=>{n=!0,i=null}),r.addEventListener("close",()=>{n=!1,i=null}),r.addEventListener("error",s=>{n||(i=s.error??new Error(`connect ECONNREFUSED ${r.url}`))}),Object.assign(t,{connected:e})};var tD=(r,e)=>{e=e??{};let t=eD(r),n=e.remoteAddress,i=e.remotePort;if(r.url!=null)try{let o=new URL(r.url);n=o.hostname,i=parseInt(o.port,10)}catch{}if(n==null||i==null)throw new Error("Remote connection did not have address and/or port");return{sink:QT(r,e),source:t,connected:async()=>{await t.connected()},close:async()=>{(r.readyState===r.CONNECTING||r.readyState===r.OPEN)&&await new Promise(o=>{r.addEventListener("close",()=>{o()}),r.close()})},destroy:()=>{r.terminate!=null?r.terminate():r.close()},remoteAddress:n,remotePort:i,socket:r}};var rD=WebSocket;var lD=X(uD(),1),IY={http:"ws",https:"wss"},AY="ws",fD=(r,e)=>(0,lD.relative)(r,e,IY,AY);function hD(r,e){let t=typeof window>"u"?"":window.location;e=e??{};let n=fD(r,t.toString()),i=new rD(n,e.websocket);return tD(i,e)}var mD=X(pD(),1),ly=typeof window=="object"&&typeof document=="object"&&document.nodeType===9,Rp=(0,mD.default)(),Ip=ly&&!Rp,gD=Rp&&!ly,yD=Rp&&ly,bD=typeof globalThis.process<"u"&&typeof globalThis.process.release<"u"&&globalThis.process.release.name==="node"&&!Rp,Ap=typeof importScripts=="function"&&typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,gEe=typeof globalThis.process<"u"&&typeof globalThis.process.env<"u"&&globalThis.process.env["NODE"+(()=>"_")()+"ENV"]==="test",wD=typeof navigator<"u"&&navigator.product==="ReactNative";function vD(r){return r.filter(e=>{if(e.protoCodes().includes(290))return!1;let t=e.decapsulateCode(421);return lu.matches(t)||Ba.matches(t)})}function _D(r){return r.filter(e=>{if(e.protoCodes().includes(290))return!1;let t=e.decapsulateCode(421);return Ba.matches(t)})}function SD(){throw new Error("WebSocket Servers can not be created in the browser!")}var fy=C("libp2p:websockets:socket");function RD(r,e,t){t=t??{};let n={async sink(i){t?.signal!=null&&(i=gr(i,t.signal));try{await r.sink(i)}catch(s){s.type!=="aborted"&&fy.error(s)}},source:t.signal!=null?gr(r.source,t.signal):r.source,remoteAddr:e,timeline:{open:Date.now()},async close(i={}){let s=Date.now();i.signal=i.signal??AbortSignal.timeout(500);let o=()=>{let{host:a,port:c}=n.remoteAddr.toOptions();fy("timeout closing stream to %s:%s after %dms, destroying it manually",a,c,Date.now()-s),this.abort(new E("Socket close timeout","ERR_SOCKET_CLOSE_TIMEOUT"))};i.signal.addEventListener("abort",o);try{await r.close()}catch(a){this.abort(a)}finally{i.signal.removeEventListener("abort",o),n.timeline.close=Date.now()}},abort(i){let{host:s,port:o}=n.remoteAddr.toOptions();fy("timeout closing stream to %s:%s due to error",s,o,i),r.destroy(),n.timeline.close=Date.now()}};return r.socket.addEventListener("close",()=>{n.timeline.close==null&&(n.timeline.close=Date.now())},{once:!0}),n}var Ao=C("libp2p:websockets"),hy=class{init;constructor(e){this.init=e}[Symbol.toStringTag]="@libp2p/websockets";[Wi]=!0;async dial(e,t){Ao("dialing %s",e),t=t??{};let n=await this._connect(e,t),i=RD(n,e);Ao("new outbound connection %s",i.remoteAddr);let s=await t.upgrader.upgradeOutbound(i);return Ao("outbound connection %s upgraded",i.remoteAddr),s}async _connect(e,t){if(t?.signal?.aborted===!0)throw new ni;let n=e.toOptions();Ao("dialing %s:%s",n.host,n.port);let i=Le(),s=hD(WT(e),this.init);if(s.socket.addEventListener("error",()=>{let c=new E(`Could not connect to ${e.toString()}`,"ERR_CONNECTION_FAILED");Ao.error("connection error:",c),i.reject(c)}),t.signal==null)return await Promise.race([s.connected(),i.promise]),Ao("connected %s",e),s;let o,a=new Promise((c,u)=>{if(o=()=>{u(new ni),s.close().catch(l=>{Ao.error("error closing raw socket",l)})},t?.signal?.aborted===!0){o();return}t?.signal?.addEventListener("abort",o)});try{await Promise.race([a,i.promise,s.connected()])}finally{o!=null&&t?.signal?.removeEventListener("abort",o)}return Ao("connected %s",e),s}createListener(e){return SD({...this.init,...e})}filter(e){return e=Array.isArray(e)?e:[e],this.init?.filter!=null?this.init?.filter(e):Ip||Ap?_D(e):vD(e)}};function ID(r={}){return()=>new hy(r)}var Tp=C("libp2p:webtransport:stream");async function dy(r,e,t,n,i){let s=r.writable.getWriter(),o=r.readable.getReader();await s.ready;function a(){let h=n.findIndex(d=>d===f);h!==-1&&(n.splice(h,1),f.timeline.close=Date.now(),i?.(f))}let c=!1,u=!1;(async function(){let h=await s.closed.catch(d=>d);if(h!=null){let d=h.message;d.includes("aborted by the remote server")||d.includes("STOP_SENDING")||Tp.error(`WebTransport writer closed unexpectedly: streamId=${e} err=${h.message}`)}c=!0,c&&u&&a()})().catch(()=>{Tp.error("WebTransport failed to cleanup closed stream")}),async function(){let h=await o.closed.catch(d=>d);h!=null&&Tp.error(`WebTransport reader closed unexpectedly: streamId=${e} err=${h.message}`),u=!0,c&&u&&a()}().catch(()=>{Tp.error("WebTransport failed to cleanup closed stream")});let l=!1,f={id:e,status:"open",writeStatus:"ready",readStatus:"ready",abort(h){c||(s.abort(h),c=!0),u=!0,this.status="aborted",this.writeStatus="closed",this.readStatus="closed",this.timeline.reset=this.timeline.close=this.timeline.closeRead=this.timeline.closeWrite=Date.now(),a()},async close(h){this.status="closing",await Promise.all([f.closeRead(h),f.closeWrite(h)]),a(),this.status="closed",this.timeline.close=Date.now()},async closeRead(h){if(!u){this.readStatus="closing";try{await o.cancel()}catch(d){d.toString().includes("RESET_STREAM")===!0&&(c=!0)}this.timeline.closeRead=Date.now(),this.readStatus="closed",u=!0}c&&a()},async closeWrite(h){if(!c){c=!0,this.writeStatus="closing";try{await s.close()}catch(d){d.toString().includes("RESET_STREAM")===!0&&(u=!0)}this.timeline.closeWrite=Date.now(),this.writeStatus="closed"}u&&a()},direction:t,timeline:{open:Date.now()},metadata:{},source:async function*(){for(;;){let h=await o.read();if(h.done===!0){u=!0,c&&a();return}yield new Te(h.value)}}(),sink:async function(h){if(l)throw new Error("sink already called on stream");l=!0;try{this.writeStatus="writing";for await(let d of h)if(d instanceof Uint8Array)await s.write(d);else for(let p of d)await s.write(p);this.writeStatus="done"}finally{this.timeline.closeWrite=Date.now(),this.writeStatus="closed",await f.closeWrite()}}};return f}function py(){return{source:{[Symbol.asyncIterator](){return{async next(){return new Promise(()=>{})}}}},sink:async r=>new Promise(()=>{})}}function AD(r,e){return e.filter(n=>!!r.find(i=>fe(n,i))).length===e.length}var PY=Object.values(Cn).map(r=>r.decoder).reduce((r,e)=>r.or(e));function kY(r){return ti.decode(PY.decode(r))}function TD(r){let e=r.stringTuples(),{url:t,certhashes:n,remotePeer:i}=e.reduce((s,[o,a])=>{switch(o){case le("ip6").code:case le("dns6").code:a?.includes(":")===!0&&(a=`[${a}]`);case le("ip4").code:case le("dns4").code:if(s.seenHost||s.seenPort)throw new Error("Invalid multiaddr, saw host and already saw the host or port");return{...s,url:`${s.url}${a??""}`,seenHost:!0};case le("quic").code:case le("quic-v1").code:case le("webtransport").code:if(!s.seenHost||!s.seenPort)throw new Error("Invalid multiaddr, Didn't see host and port, but saw quic/webtransport");return s;case le("udp").code:if(s.seenPort)throw new Error("Invalid multiaddr, saw port but already saw the port");return{...s,url:`${s.url}:${a??""}`,seenPort:!0};case le("certhash").code:if(!s.seenHost||!s.seenPort)throw new Error("Invalid multiaddr, saw the certhash before seeing the host and port");return{...s,certhashes:s.certhashes.concat([kY(a??"")])};case le("p2p").code:return{...s,remotePeer:we(a??"")};default:throw new Error(`unexpected component in multiaddr: ${o} ${le(o).name} ${a??""} `)}},{url:"https://",seenHost:!1,seenPort:!1,certhashes:[]});return{url:t,certhashes:n,remotePeer:i}}var En=C("libp2p:webtransport"),my=class{components;config;constructor(e,t={}){this.components=e,this.config={maxInboundStreams:t.maxInboundStreams??1e3}}[Symbol.toStringTag]="@libp2p/webtransport";[Wi]=!0;async dial(e,t){t?.signal?.throwIfAborted(),En("dialing %s",e);let n=this.components.peerId;if(n===void 0)throw new Error("Need a local peerid");t=t??{};let{url:i,certhashes:s,remotePeer:o}=TD(e);if(o==null)throw new Error("Need a target peerid");if(s.length===0)throw new Error("Expected multiaddr to contain certhashes");let a,c,u=()=>{};try{let l=!1,f=new WebTransport(`${i}/.well-known/libp2p-webtransport?type=noise`,{serverCertificateHashes:s.map(h=>({algorithm:"sha-256",value:h.digest}))});if(u=h=>{try{if(c!=null){if(c.timeline.close!=null)return;c.timeline.close=Date.now()}if(l)return;f.close(h)}catch(d){En.error("error closing wt session",d)}finally{l=!0}},f.closed.then(async()=>{await c?.close()}).catch(h=>{En.error("error on remote wt session close",h),c?.abort(h)}).finally(()=>{c==null&&u()}),a=()=>{a!=null&&t.signal?.removeEventListener("abort",a),u()},t.signal?.addEventListener("abort",a),await f.ready,!await this.authenticateWebTransport(f,n,o,s))throw new Error("Failed to authenticate webtransport");return c={close:async h=>{En("Closing webtransport"),u()},abort:h=>{En("aborting webtransport due to passed err",h),u({closeCode:0,reason:h.message})},remoteAddr:e,timeline:{open:Date.now()},...py()},t?.signal?.throwIfAborted(),await t.upgrader.upgradeOutbound(c,{skipEncryption:!0,muxerFactory:this.webtransportMuxer(f,u),skipProtection:!0})}catch(l){throw En.error("caught wt session err",l),u({closeCode:0,reason:l.message}),l}finally{a!=null&&t.signal?.removeEventListener("abort",a)}}async authenticateWebTransport(e,t,n,i){let s=await e.createBidirectionalStream(),o=s.writable.getWriter(),a=s.readable.getReader();await o.ready;let c={source:async function*(){for(;;){let f=await a.read();if(f.value!=null&&(yield f.value),f.done===!0)break}}(),sink:async function(f){for await(let h of f)await o.write(h)}},u=au()(),{remoteExtensions:l}=await u.secureOutbound(t,c,n);if(o.close().catch(f=>{En.error(`Failed to close authentication stream writer: ${f.message}`)}),a.cancel().catch(f=>{En.error(`Failed to close authentication stream reader: ${f.message}`)}),!AD(l?.webtransportCerthashes??[],i.map(f=>f.bytes)))throw new Error("Our certhashes are not a subset of the remote's reported certhashes");return!0}webtransportMuxer(e,t){let n=0,i=this.config;return{protocol:"webtransport",createStreamMuxer:s=>{typeof s=="function"&&(s={onIncomingStream:s});let o=[];return async function(){let c=e.incomingBidirectionalStreams.getReader();for(;;){let{done:u,value:l}=await c.read();if(u===!0)break;if(o.length>=i.maxInboundStreams)l.writable.close().catch(f=>{En.error(`Failed to close inbound stream that crossed our maxInboundStream limit: ${f.message}`)}),l.readable.cancel().catch(f=>{En.error(`Failed to close inbound stream that crossed our maxInboundStream limit: ${f.message}`)});else{let f=await dy(l,String(n++),"inbound",o,s?.onStreamEnd);o.push(f),s?.onIncomingStream?.(f)}}}().catch(()=>{En.error("WebTransport failed to receive incoming stream")}),{protocol:"webtransport",streams:o,newStream:async c=>{let u=await e.createBidirectionalStream(),l=await dy(u,String(n++),s?.direction??"outbound",o,s?.onStreamEnd);return o.push(l),l},close:async c=>{En("Closing webtransport muxer"),t()},abort:c=>{En("Aborting webtransport muxer with err:",c),t({closeCode:0,reason:c.message})},...py()}}}}createListener(e){throw new Error("Webtransport servers are not supported in Node or the browser")}filter(e){return e.filter(t=>t.protoNames().includes("webtransport"))}};function DD(r={}){return e=>new my(e,r)}var ji;(function(r){let e;(function(i){i.EOL="EOL"})(e=r.ValidityType||(r.ValidityType={}));let t;(function(i){i[i.EOL=0]="EOL"})(t||(t={})),function(i){i.codec=()=>xt(t)}(e=r.ValidityType||(r.ValidityType={}));let n;r.codec=()=>(n==null&&(n=me((i,s,o={})=>{o.lengthDelimited!==!1&&s.fork(),i.value!=null&&(s.uint32(10),s.bytes(i.value)),i.signature!=null&&(s.uint32(18),s.bytes(i.signature)),i.validityType!=null&&(s.uint32(24),r.ValidityType.codec().encode(i.validityType,s)),i.validity!=null&&(s.uint32(34),s.bytes(i.validity)),i.sequence!=null&&(s.uint32(40),s.uint64(i.sequence)),i.ttl!=null&&(s.uint32(48),s.uint64(i.ttl)),i.pubKey!=null&&(s.uint32(58),s.bytes(i.pubKey)),i.signatureV2!=null&&(s.uint32(66),s.bytes(i.signatureV2)),i.data!=null&&(s.uint32(74),s.bytes(i.data)),o.lengthDelimited!==!1&&s.ldelim()},(i,s)=>{let o={},a=s==null?i.len:i.pos+s;for(;i.pos<a;){let c=i.uint32();switch(c>>>3){case 1:o.value=i.bytes();break;case 2:o.signature=i.bytes();break;case 3:o.validityType=r.ValidityType.codec().decode(i);break;case 4:o.validity=i.bytes();break;case 5:o.sequence=i.uint64();break;case 6:o.ttl=i.uint64();break;case 7:o.pubKey=i.bytes();break;case 8:o.signatureV2=i.bytes();break;case 9:o.data=i.bytes();break;default:i.skipType(c&7);break}}return o})),n),r.encode=i=>pe(i,r.codec()),r.decode=i=>de(i,r.codec())})(ji||(ji={}));var qve=X(aa(),1),Vve=X(g3(),1);var ut=class extends Error{code;props;constructor(e,t,n){super(e),this.code=t,this.name=n?.name??"CodeError",this.props=n??{}}};var cX=X(qe(),1);var Uy={};be(Uy,{Ed25519PrivateKey:()=>za,Ed25519PublicKey:()=>i0,generateKeyPair:()=>DQ,generateKeyPairFromSeed:()=>sC,unmarshalEd25519PrivateKey:()=>AQ,unmarshalEd25519PublicKey:()=>TQ});var Ey={};be(Ey,{base58btc:()=>Er,base58flickr:()=>UY});function NY(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 i=0;i<r.length;i++){var s=r.charAt(i),o=s.charCodeAt(0);if(t[o]!==255)throw new TypeError(s+" is ambiguous");t[o]=i}var a=r.length,c=r.charAt(0),u=Math.log(a)/Math.log(256),l=Math.log(256)/Math.log(a);function f(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var m=0,g=0,y=0,b=p.length;y!==b&&p[y]===0;)y++,m++;for(var w=(b-y)*l+1>>>0,_=new Uint8Array(w);y!==b;){for(var x=p[y],v=0,R=w-1;(x!==0||v<g)&&R!==-1;R--,v++)x+=256*_[R]>>>0,_[R]=x%a>>>0,x=x/a>>>0;if(x!==0)throw new Error("Non-zero carry");g=v,y++}for(var T=w-g;T!==w&&_[T]===0;)T++;for(var P=c.repeat(m);T<w;++T)P+=r.charAt(_[T]);return P}function h(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var m=0;if(p[m]!==" "){for(var g=0,y=0;p[m]===c;)g++,m++;for(var b=(p.length-m)*u+1>>>0,w=new Uint8Array(b);p[m];){var _=t[p.charCodeAt(m)];if(_===255)return;for(var x=0,v=b-1;(_!==0||x<y)&&v!==-1;v--,x++)_+=a*w[v]>>>0,w[v]=_%256>>>0,_=_/256>>>0;if(_!==0)throw new Error("Non-zero carry");y=x,m++}if(p[m]!==" "){for(var R=b-y;R!==b&&w[R]===0;)R++;for(var T=new Uint8Array(g+(b-R)),P=g;R!==b;)T[P++]=w[R++];return T}}}function d(p){var m=h(p);if(m)return m;throw new Error(`Non-${e} character`)}return{encode:f,decodeUnsafe:h,decode:d}}var BY=NY,OY=BY,CD=OY;var cxe=new Uint8Array(0);var PD=(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},Ns=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")};var kD=r=>new TextEncoder().encode(r),ND=r=>new TextDecoder().decode(r);var gy=class{constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},yy=class{constructor(e,t,n){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return OD(this,e)}},by=class{constructor(e){this.decoders=e}or(e){return OD(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},OD=(r,e)=>new by({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}}),wy=class{constructor(e,t,n,i){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=i,this.encoder=new gy(e,t,n),this.decoder=new yy(e,t,i)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}},Du=({name:r,prefix:e,encode:t,decode:n})=>new wy(r,e,t,n),To=({prefix:r,name:e,alphabet:t})=>{let{encode:n,decode:i}=CD(t,e);return Du({prefix:r,name:e,encode:n,decode:s=>Ns(i(s))})},LY=(r,e,t,n)=>{let i={};for(let l=0;l<e.length;++l)i[e[l]]=l;let s=r.length;for(;r[s-1]==="=";)--s;let o=new Uint8Array(s*t/8|0),a=0,c=0,u=0;for(let l=0;l<s;++l){let f=i[r[l]];if(f===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|f,a+=t,a>=8&&(a-=8,o[u++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return o},MY=(r,e,t)=>{let n=e[e.length-1]==="=",i=(1<<t)-1,s="",o=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],o+=8;o>t;)o-=t,s+=e[i&a>>o];if(o&&(s+=e[i&a<<t-o]),n)for(;s.length*t&7;)s+="=";return s},Lt=({name:r,prefix:e,bitsPerChar:t,alphabet:n})=>Du({prefix:e,name:r,encode(i){return MY(i,n,t)},decode(i){return LY(i,n,t,r)}});var Er=To({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),UY=To({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var vy={};be(vy,{identity:()=>Do});var FY=UD,LD=128,KY=127,qY=~KY,VY=Math.pow(2,31);function UD(r,e,t){e=e||[],t=t||0;for(var n=t;r>=VY;)e[t++]=r&255|LD,r/=128;for(;r&qY;)e[t++]=r&255|LD,r>>>=7;return e[t]=r|0,UD.bytes=t-n+1,e}var zY=xy,$Y=128,MD=127;function xy(r,n){var t=0,n=n||0,i=0,s=n,o,a=r.length;do{if(s>=a)throw xy.bytes=0,new RangeError("Could not decode varint");o=r[s++],t+=i<28?(o&MD)<<i:(o&MD)*Math.pow(2,i),i+=7}while(o>=$Y);return xy.bytes=s-n,t}var HY=Math.pow(2,7),GY=Math.pow(2,14),WY=Math.pow(2,21),YY=Math.pow(2,28),QY=Math.pow(2,35),XY=Math.pow(2,42),jY=Math.pow(2,49),ZY=Math.pow(2,56),JY=Math.pow(2,63),eQ=function(r){return r<HY?1:r<GY?2:r<WY?3:r<YY?4:r<QY?5:r<XY?6:r<jY?7:r<ZY?8:r<JY?9:10},tQ={encode:FY,decode:zY,encodingLength:eQ},rQ=tQ,Xf=rQ;var jf=(r,e=0)=>[Xf.decode(r,e),Xf.decode.bytes],Cu=(r,e,t=0)=>(Xf.encode(r,e,t),e),Pu=r=>Xf.encodingLength(r);var Zi=(r,e)=>{let t=e.byteLength,n=Pu(r),i=n+Pu(t),s=new Uint8Array(i+t);return Cu(r,s,0),Cu(t,s,n),s.set(e,i),new ku(r,t,e,s)},Zf=r=>{let e=Ns(r),[t,n]=jf(e),[i,s]=jf(e.subarray(n)),o=e.subarray(n+s);if(o.byteLength!==i)throw new Error("Incorrect length");return new ku(t,i,o,e)},FD=(r,e)=>{if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&PD(r.bytes,t.bytes)}},ku=class{constructor(e,t,n,i){this.code=e,this.size=t,this.digest=n,this.bytes=i}};var KD=0,nQ="identity",qD=Ns,iQ=r=>Zi(KD,qD(r)),Do={code:KD,name:nQ,encode:qD,digest:iQ};var Ry={};be(Ry,{sha256:()=>xr,sha512:()=>sQ});var Sy=({name:r,code:e,encode:t})=>new _y(r,e,t),_y=class{constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?Zi(this.code,t):t.then(n=>Zi(this.code,n))}else throw Error("Unknown type, must be binary type")}};var zD=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),xr=Sy({name:"sha2-256",code:18,encode:zD("SHA-256")}),sQ=Sy({name:"sha2-512",code:19,encode:zD("SHA-512")});var oQ=X(la(),1);var cr=BigInt(0),$e=BigInt(1),ko=BigInt(2),aQ=BigInt(8),$D=BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),wt=Object.freeze({a:BigInt(-1),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),P:BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),l:$D,n:$D,h:BigInt(8),Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960")});var QD=BigInt("0x10000000000000000000000000000000000000000000000000000000000000000"),Jf=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),bxe=BigInt("6853475219497561581579357271197624642482790079785650197046958215289687604742"),cQ=BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235"),uQ=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),lQ=BigInt("1159843021668779879193775521855586647937357759715417654439879720876111806838"),fQ=BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952"),Jt=class r{constructor(e,t,n,i){this.x=e,this.y=t,this.z=n,this.t=i}static fromAffine(e){if(!(e instanceof $t))throw new TypeError("ExtendedPoint#fromAffine: expected Point");return e.equals($t.ZERO)?r.ZERO:new r(e.x,e.y,$e,q(e.x*e.y))}static toAffineBatch(e){let t=pQ(e.map(n=>n.z));return e.map((n,i)=>n.toAffine(t[i]))}static normalizeZ(e){return this.toAffineBatch(e).map(this.fromAffine)}equals(e){GD(e);let{x:t,y:n,z:i}=this,{x:s,y:o,z:a}=e,c=q(t*a),u=q(s*i),l=q(n*a),f=q(o*i);return c===u&&l===f}negate(){return new r(q(-this.x),this.y,this.z,q(-this.t))}double(){let{x:e,y:t,z:n}=this,{a:i}=wt,s=q(e*e),o=q(t*t),a=q(ko*q(n*n)),c=q(i*s),u=e+t,l=q(q(u*u)-s-o),f=c+o,h=f-a,d=c-o,p=q(l*h),m=q(f*d),g=q(l*d),y=q(h*f);return new r(p,m,y,g)}add(e){GD(e);let{x:t,y:n,z:i,t:s}=this,{x:o,y:a,z:c,t:u}=e,l=q((n-t)*(a+o)),f=q((n+t)*(a-o)),h=q(f-l);if(h===cr)return this.double();let d=q(i*ko*u),p=q(s*ko*c),m=p+d,g=f+l,y=p-d,b=q(m*h),w=q(g*y),_=q(m*y),x=q(h*g);return new r(b,w,x,_)}subtract(e){return this.add(e.negate())}precomputeWindow(e){let t=1+256/e,n=[],i=this,s=i;for(let o=0;o<t;o++){s=i,n.push(s);for(let a=1;a<2**(e-1);a++)s=s.add(i),n.push(s);i=s.double()}return n}wNAF(e,t){!t&&this.equals(r.BASE)&&(t=$t.BASE);let n=t&&t._WINDOW_SIZE||1;if(256%n)throw new Error("Point#wNAF: Invalid precomputation window, must be power of 2");let i=t&&Cy.get(t);i||(i=this.precomputeWindow(n),t&&n!==1&&(i=r.normalizeZ(i),Cy.set(t,i)));let s=r.ZERO,o=r.BASE,a=1+256/n,c=2**(n-1),u=BigInt(2**n-1),l=2**n,f=BigInt(n);for(let h=0;h<a;h++){let d=h*c,p=Number(e&u);e>>=f,p>c&&(p-=l,e+=$e);let m=d,g=d+Math.abs(p)-1,y=h%2!==0,b=p<0;p===0?o=o.add(HD(y,i[m])):s=s.add(HD(b,i[g]))}return r.normalizeZ([s,o])[0]}multiply(e,t){return this.wNAF(Pp(e,wt.l),t)}multiplyUnsafe(e){let t=Pp(e,wt.l,!1),n=r.BASE,i=r.ZERO;if(t===cr)return i;if(this.equals(i)||t===$e)return this;if(this.equals(n))return this.wNAF(t);let s=i,o=this;for(;t>cr;)t&$e&&(s=s.add(o)),o=o.double(),t>>=$e;return s}isSmallOrder(){return this.multiplyUnsafe(wt.h).equals(r.ZERO)}isTorsionFree(){let e=this.multiplyUnsafe(wt.l/ko).double();return wt.l%ko&&(e=e.add(this)),e.equals(r.ZERO)}toAffine(e){let{x:t,y:n,z:i}=this,s=this.equals(r.ZERO);e==null&&(e=s?aQ:kp(i));let o=q(t*e),a=q(n*e),c=q(i*e);if(s)return $t.ZERO;if(c!==$e)throw new Error("invZ was invalid");return new $t(o,a)}fromRistrettoBytes(){Ay()}toRistrettoBytes(){Ay()}fromRistrettoHash(){Ay()}};Jt.BASE=new Jt(wt.Gx,wt.Gy,$e,q(wt.Gx*wt.Gy));Jt.ZERO=new Jt(cr,$e,$e,cr);function HD(r,e){let t=e.negate();return r?t:e}function GD(r){if(!(r instanceof Jt))throw new TypeError("ExtendedPoint expected")}function Iy(r){if(!(r instanceof Va))throw new TypeError("RistrettoPoint expected")}function Ay(){throw new Error("Legacy method: switch to RistrettoPoint")}var Va=class r{constructor(e){this.ep=e}static calcElligatorRistrettoMap(e){let{d:t}=wt,n=q(Jf*e*e),i=q((n+$e)*lQ),s=BigInt(-1),o=q((s-t*n)*q(n+t)),{isValid:a,value:c}=ky(i,o),u=q(c*e);Po(u)||(u=q(-u)),a||(c=u),a||(s=n);let l=q(s*(n-$e)*fQ-o),f=c*c,h=q((c+c)*o),d=q(l*cQ),p=q($e-f),m=q($e+f);return new Jt(q(h*m),q(p*d),q(d*m),q(h*p))}static hashToCurve(e){e=No(e,64);let t=Ty(e.slice(0,32)),n=this.calcElligatorRistrettoMap(t),i=Ty(e.slice(32,64)),s=this.calcElligatorRistrettoMap(i);return new r(n.add(s))}static fromHex(e){e=No(e,32);let{a:t,d:n}=wt,i="RistrettoPoint.fromHex: the hex is not valid encoding of RistrettoPoint",s=Ty(e);if(!gQ(t0(s),e)||Po(s))throw new Error(i);let o=q(s*s),a=q($e+t*o),c=q($e-t*o),u=q(a*a),l=q(c*c),f=q(t*n*u-l),{isValid:h,value:d}=YD(q(f*l)),p=q(d*c),m=q(d*p*f),g=q((s+s)*p);Po(g)&&(g=q(-g));let y=q(a*m),b=q(g*y);if(!h||Po(b)||y===cr)throw new Error(i);return new r(new Jt(g,y,$e,b))}toRawBytes(){let{x:e,y:t,z:n,t:i}=this.ep,s=q(q(n+t)*q(n-t)),o=q(e*t),a=q(o*o),{value:c}=YD(q(s*a)),u=q(c*s),l=q(c*o),f=q(u*l*i),h;if(Po(i*f)){let p=q(t*Jf),m=q(e*Jf);e=p,t=m,h=q(u*uQ)}else h=l;Po(e*f)&&(t=q(-t));let d=q((n-t)*h);return Po(d)&&(d=q(-d)),t0(d)}toHex(){return r0(this.toRawBytes())}toString(){return this.toHex()}equals(e){Iy(e);let t=this.ep,n=e.ep,i=q(t.x*n.y)===q(t.y*n.x),s=q(t.y*n.y)===q(t.x*n.x);return i||s}add(e){return Iy(e),new r(this.ep.add(e.ep))}subtract(e){return Iy(e),new r(this.ep.subtract(e.ep))}multiply(e){return new r(this.ep.multiply(e))}multiplyUnsafe(e){return new r(this.ep.multiplyUnsafe(e))}};Va.BASE=new Va(Jt.BASE);Va.ZERO=new Va(Jt.ZERO);var Cy=new WeakMap,$t=class r{constructor(e,t){this.x=e,this.y=t}_setWindowSize(e){this._WINDOW_SIZE=e,Cy.delete(this)}static fromHex(e,t=!0){let{d:n,P:i}=wt;e=No(e,32);let s=e.slice();s[31]=e[31]&-129;let o=n0(s);if(t&&o>=i)throw new Error("Expected 0 < hex < P");if(!t&&o>=QD)throw new Error("Expected 0 < hex < 2**256");let a=q(o*o),c=q(a-$e),u=q(n*a+$e),{isValid:l,value:f}=ky(c,u);if(!l)throw new Error("Point.fromHex: invalid y coordinate");let h=(f&$e)===$e;return(e[31]&128)!==0!==h&&(f=q(-f)),new r(f,o)}static async fromPrivateKey(e){return(await Np(e)).point}toRawBytes(){let e=t0(this.y);return e[31]|=this.x&$e?128:0,e}toHex(){return r0(this.toRawBytes())}toX25519(){let{y:e}=this,t=q(($e+e)*kp($e-e));return t0(t)}isTorsionFree(){return Jt.fromAffine(this).isTorsionFree()}equals(e){return this.x===e.x&&this.y===e.y}negate(){return new r(q(-this.x),this.y)}add(e){return Jt.fromAffine(this).add(Jt.fromAffine(e)).toAffine()}subtract(e){return this.add(e.negate())}multiply(e){return Jt.fromAffine(this).multiply(e,this).toAffine()}};$t.BASE=new $t(wt.Gx,wt.Gy);$t.ZERO=new $t(cr,$e);var e0=class r{constructor(e,t){this.r=e,this.s=t,this.assertValidity()}static fromHex(e){let t=No(e,64),n=$t.fromHex(t.slice(0,32),!1),i=n0(t.slice(32,64));return new r(n,i)}assertValidity(){let{r:e,s:t}=this;if(!(e instanceof $t))throw new Error("Expected Point instance");return Pp(t,wt.l,!1),this}toRawBytes(){let e=new Uint8Array(64);return e.set(this.r.toRawBytes()),e.set(t0(this.s),32),e}toHex(){return r0(this.toRawBytes())}};function WD(...r){if(!r.every(n=>n instanceof Uint8Array))throw new Error("Expected Uint8Array list");if(r.length===1)return r[0];let e=r.reduce((n,i)=>n+i.length,0),t=new Uint8Array(e);for(let n=0,i=0;n<r.length;n++){let s=r[n];t.set(s,i),i+=s.length}return t}var hQ=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function r0(r){if(!(r instanceof Uint8Array))throw new Error("Uint8Array expected");let e="";for(let t=0;t<r.length;t++)e+=hQ[r[t]];return e}function Py(r){if(typeof r!="string")throw new TypeError("hexToBytes: expected string, got "+typeof r);if(r.length%2)throw new Error("hexToBytes: received invalid unpadded hex");let e=new Uint8Array(r.length/2);for(let t=0;t<e.length;t++){let n=t*2,i=r.slice(n,n+2),s=Number.parseInt(i,16);if(Number.isNaN(s)||s<0)throw new Error("Invalid byte sequence");e[t]=s}return e}function XD(r){let t=r.toString(16).padStart(64,"0");return Py(t)}function t0(r){return XD(r).reverse()}function Po(r){return(q(r)&$e)===$e}function n0(r){if(!(r instanceof Uint8Array))throw new Error("Expected Uint8Array");return BigInt("0x"+r0(Uint8Array.from(r).reverse()))}var dQ=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");function Ty(r){return q(n0(r)&dQ)}function q(r,e=wt.P){let t=r%e;return t>=cr?t:e+t}function kp(r,e=wt.P){if(r===cr||e<=cr)throw new Error(`invert: expected positive integers, got n=${r} mod=${e}`);let t=q(r,e),n=e,i=cr,s=$e,o=$e,a=cr;for(;t!==cr;){let u=n/t,l=n%t,f=i-o*u,h=s-a*u;n=t,t=l,i=o,s=a,o=f,a=h}if(n!==$e)throw new Error("invert: does not exist");return q(i,e)}function pQ(r,e=wt.P){let t=new Array(r.length),n=r.reduce((s,o,a)=>o===cr?s:(t[a]=s,q(s*o,e)),$e),i=kp(n,e);return r.reduceRight((s,o,a)=>o===cr?s:(t[a]=q(s*t[a],e),q(s*o,e)),i),t}function Ji(r,e){let{P:t}=wt,n=r;for(;e-- >cr;)n*=n,n%=t;return n}function mQ(r){let{P:e}=wt,t=BigInt(5),n=BigInt(10),i=BigInt(20),s=BigInt(40),o=BigInt(80),c=r*r%e*r%e,u=Ji(c,ko)*c%e,l=Ji(u,$e)*r%e,f=Ji(l,t)*l%e,h=Ji(f,n)*f%e,d=Ji(h,i)*h%e,p=Ji(d,s)*d%e,m=Ji(p,o)*p%e,g=Ji(m,o)*p%e,y=Ji(g,n)*f%e;return{pow_p_5_8:Ji(y,ko)*r%e,b2:c}}function ky(r,e){let t=q(e*e*e),n=q(t*t*e),i=mQ(r*n).pow_p_5_8,s=q(r*t*i),o=q(e*s*s),a=s,c=q(s*Jf),u=o===r,l=o===q(-r),f=o===q(-r*Jf);return u&&(s=a),(l||f)&&(s=c),Po(s)&&(s=q(-s)),{isValid:u||l,value:s}}function YD(r){return ky($e,r)}function Cp(r){return q(n0(r),wt.l)}function gQ(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(r[t]!==e[t])return!1;return!0}function No(r,e){let t=r instanceof Uint8Array?Uint8Array.from(r):Py(r);if(typeof e=="number"&&t.length!==e)throw new Error(`Expected ${e} bytes`);return t}function Pp(r,e,t=!0){if(!e)throw new TypeError("Specify max value");if(typeof r=="number"&&Number.isSafeInteger(r)&&(r=BigInt(r)),typeof r=="bigint"&&r<e){if(t){if(cr<r)return r}else if(cr<=r)return r}throw new TypeError("Expected valid scalar: 0 < scalar < max")}function yQ(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function bQ(r){if(r=typeof r=="bigint"||typeof r=="number"?XD(Pp(r,QD)):No(r),r.length!==32)throw new Error("Expected 32 bytes");return r}function wQ(r){let e=yQ(r.slice(0,32)),t=r.slice(32,64),n=Cp(e),i=$t.BASE.multiply(n),s=i.toRawBytes();return{head:e,prefix:t,scalar:n,point:i,pointBytes:s}}var Dy;async function Np(r){return wQ(await Bo.sha512(bQ(r)))}async function Ny(r){return(await Np(r)).pointBytes}async function jD(r,e){r=No(r);let{prefix:t,scalar:n,pointBytes:i}=await Np(e),s=Cp(await Bo.sha512(t,r)),o=$t.BASE.multiply(s),a=Cp(await Bo.sha512(o.toRawBytes(),i,r)),c=q(s+a*n,wt.l);return new e0(o,c).toRawBytes()}function EQ(r,e,t){e=No(e),t instanceof $t||(t=$t.fromHex(t,!1));let{r:n,s:i}=r instanceof e0?r.assertValidity():e0.fromHex(r),s=Jt.BASE.multiplyUnsafe(i);return{r:n,s:i,SB:s,pub:t,msg:e}}function xQ(r,e,t,n){let i=Cp(n),s=Jt.fromAffine(r).multiplyUnsafe(i);return Jt.fromAffine(e).add(s).subtract(t).multiplyUnsafe(wt.h).equals(Jt.ZERO)}async function ZD(r,e,t){let{r:n,SB:i,msg:s,pub:o}=EQ(r,e,t),a=await Bo.sha512(n.toRawBytes(),o.toRawBytes(),s);return xQ(o,n,i,a)}$t.BASE._setWindowSize(8);var Co={node:oQ,web:typeof self=="object"&&"crypto"in self?self.crypto:void 0},Bo={bytesToHex:r0,hexToBytes:Py,concatBytes:WD,getExtendedPublicKey:Np,mod:q,invert:kp,TORSION_SUBGROUP:["0100000000000000000000000000000000000000000000000000000000000000","c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a","0000000000000000000000000000000000000000000000000000000000000080","26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05","ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f","26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85","0000000000000000000000000000000000000000000000000000000000000000","c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa"],hashToPrivateScalar:r=>{if(r=No(r),r.length<40||r.length>1024)throw new Error("Expected 40-1024 bytes of private key as per FIPS 186");return q(n0(r),wt.l-$e)+$e},randomBytes:(r=32)=>{if(Co.web)return Co.web.getRandomValues(new Uint8Array(r));if(Co.node){let{randomBytes:e}=Co.node;return new Uint8Array(e(r).buffer)}else throw new Error("The environment doesn't have randomBytes function")},randomPrivateKey:()=>Bo.randomBytes(32),sha512:async(...r)=>{let e=WD(...r);if(Co.web){let t=await Co.web.subtle.digest("SHA-512",e.buffer);return new Uint8Array(t)}else{if(Co.node)return Uint8Array.from(Co.node.createHash("sha512").update(e).digest());throw new Error("The environment doesn't have sha512 function")}},precompute(r=8,e=$t.BASE){let t=e.equals($t.BASE)?e:new $t(e.x,e.y);return t._setWindowSize(r),t.multiply(ko),t},sha512Sync:void 0};Object.defineProperties(Bo,{sha512Sync:{configurable:!1,get(){return Dy},set(r){Dy||(Dy=r)}}});var Bu=32,Bs=64,Bp=32;async function JD(){let r=Bo.randomPrivateKey(),e=await Ny(r);return{privateKey:nC(r,e),publicKey:e}}async function eC(r){if(r.length!==Bp)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=await Ny(e);return{privateKey:nC(e,t),publicKey:t}}async function tC(r,e){let t=r.subarray(0,Bp);return jD(e,t)}async function rC(r,e,t){return ZD(e,t,r)}function nC(r,e){let t=new Uint8Array(Bs);for(let n=0;n<Bp;n++)t[n]=r[n],t[Bp+n]=e[n];return t}var By={};be(By,{base64:()=>Ou,base64pad:()=>SQ,base64url:()=>RQ,base64urlpad:()=>IQ});var Ou=Lt({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),SQ=Lt({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),RQ=Lt({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),IQ=Lt({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var jr={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-crypto/blob/master/README.md#web-crypto-api"),{code:"ERR_MISSING_WEB_CRYPTO"});return e}};var Oy={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function Ly(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,i=r?.digest??"SHA-256",s=r?.saltLength??16,o=r?.iterations??32767,a=jr.get();t*=8;async function c(f,h){let d=a.getRandomValues(new Uint8Array(s)),p=a.getRandomValues(new Uint8Array(n)),m={name:e,iv:p};typeof h=="string"&&(h=G(h));let g;if(h.length===0){g=await a.subtle.importKey("jwk",Oy,{name:"AES-GCM"},!0,["encrypt"]);try{let b={name:"PBKDF2",salt:d,iterations:o,hash:{name:i}},w=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(b,w,{name:e,length:t},!0,["encrypt"])}catch{g=await a.subtle.importKey("jwk",Oy,{name:"AES-GCM"},!0,["encrypt"])}}else{let b={name:"PBKDF2",salt:d,iterations:o,hash:{name:i}},w=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(b,w,{name:e,length:t},!0,["encrypt"])}let y=await a.subtle.encrypt(m,g,f);return ve([d,m.iv,new Uint8Array(y)])}async function u(f,h){let d=f.subarray(0,s),p=f.subarray(s,s+n),m=f.subarray(s+n),g={name:e,iv:p};typeof h=="string"&&(h=G(h));let y;if(h.length===0)try{let w={name:"PBKDF2",salt:d,iterations:o,hash:{name:i}},_=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);y=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}catch{y=await a.subtle.importKey("jwk",Oy,{name:"AES-GCM"},!0,["decrypt"])}else{let w={name:"PBKDF2",salt:d,iterations:o,hash:{name:i}},_=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);y=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}let b=await a.subtle.decrypt(g,y,m);return new Uint8Array(b)}return{encrypt:c,decrypt:u}}async function Lu(r,e){let n=await Ly().encrypt(r,e);return Ou.encode(n)}var Ht;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(Ht||(Ht={}));var My;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(My||(My={}));(function(r){r.codec=()=>xt(My)})(Ht||(Ht={}));var es;(function(r){let e;r.codec=()=>(e==null&&(e=me((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Ht.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),i.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let i={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let o=t.uint32();switch(o>>>3){case 1:i.Type=Ht.codec().decode(t);break;case 2:i.Data=t.bytes();break;default:t.skipType(o&7);break}}return i})),e),r.encode=t=>pe(t,r.codec()),r.decode=t=>de(t,r.codec())})(es||(es={}));var Os;(function(r){let e;r.codec=()=>(e==null&&(e=me((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Ht.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),i.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let i={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let o=t.uint32();switch(o>>>3){case 1:i.Type=Ht.codec().decode(t);break;case 2:i.Data=t.bytes();break;default:t.skipType(o&7);break}}return i})),e),r.encode=t=>pe(t,r.codec()),r.decode=t=>de(t,r.codec())})(Os||(Os={}));var i0=class{_key;constructor(e){this._key=Mu(e,Bu)}async verify(e,t){return rC(this._key,t,e)}marshal(){return this._key}get bytes(){return es.encode({Type:Ht.Ed25519,Data:this.marshal()}).subarray()}equals(e){return fe(this.bytes,e.bytes)}async hash(){let{bytes:e}=await xr.digest(this.bytes);return e}},za=class{_key;_publicKey;constructor(e,t){this._key=Mu(e,Bs),this._publicKey=Mu(t,Bu)}async sign(e){return tC(this._key,e)}get public(){return new i0(this._publicKey)}marshal(){return this._key}get bytes(){return Os.encode({Type:Ht.Ed25519,Data:this.marshal()}).subarray()}equals(e){return fe(this.bytes,e.bytes)}async hash(){let{bytes:e}=await xr.digest(this.bytes);return e}async id(){let e=Do.digest(this.public.bytes);return Er.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Lu(this.bytes,e);throw new ut(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function AQ(r){if(r.length>Bs){r=Mu(r,Bs+Bu);let n=r.subarray(0,Bs),i=r.subarray(Bs,r.length);return new za(n,i)}r=Mu(r,Bs);let e=r.subarray(0,Bs),t=r.subarray(Bu);return new za(e,t)}function TQ(r){return r=Mu(r,Bu),new i0(r)}async function DQ(){let{privateKey:r,publicKey:e}=await JD();return new za(r,e)}async function sC(r){let{privateKey:e,publicKey:t}=await eC(r);return new za(e,t)}function Mu(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new ut(`Key must be a Uint8Array of length ${e}, got ${r.length}`,"ERR_INVALID_KEY_TYPE");return r}var Nxe=X(kt(),1),Bxe=X(Ul(),1),oC=X(qe(),1);function Ii(r,e){let t=Uint8Array.from(r.abs().toByteArray());if(t=t[0]===0?t.subarray(1):t,e!=null){if(t.length>e)throw new Error("byte array longer than desired length");t=ve([new Uint8Array(e-t.length),t])}return U(t,"base64url")}function xn(r){let e=aC(r);return new oC.default.jsbn.BigInteger(U(e,"base16"),16)}function aC(r,e){let t=G(r,"base64urlpad");if(e!=null){if(t.length>e)throw new Error("byte array longer than desired length");t=ve([new Uint8Array(e-t.length),t])}return t}var CQ={"P-256":256,"P-384":384,"P-521":521},PQ=Object.keys(CQ),Hxe=PQ.join(" / ");var Wy={};be(Wy,{RsaPrivateKey:()=>Hu,RsaPublicKey:()=>l0,fromJwk:()=>rX,generateKeyPair:()=>nX,unmarshalRsaPrivateKey:()=>eX,unmarshalRsaPublicKey:()=>tX});var u0=X(qe(),1);var Tve=X(q3(),1);var NQ=X(la(),1);var He=BigInt(0),Et=BigInt(1),Lo=BigInt(2),o0=BigInt(3),cC=BigInt(8),Mt=Object.freeze({a:He,b:BigInt(7),P:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:Et,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee")}),uC=(r,e)=>(r+e/Lo)/e,Lp={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar(r){let{n:e}=Mt,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-Et*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),i=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),s=t,o=BigInt("0x100000000000000000000000000000000"),a=uC(s*r,e),c=uC(-n*r,e),u=se(r-a*t-c*i,e),l=se(-a*n-c*s,e),f=u>o,h=l>o;if(f&&(u=e-u),h&&(l=e-l),u>o||l>o)throw new Error("splitScalarEndo: Endomorphism failed, k="+r);return{k1neg:f,k1:u,k2neg:h,k2:l}}},Ai=32,qu=32,BQ=32,lC=Ai+1,fC=2*Ai+1;function hC(r){let{a:e,b:t}=Mt,n=se(r*r),i=se(n*r);return se(i+e*r+t)}var Mp=Mt.a===He,Kp=class extends Error{constructor(e){super(e)}};function dC(r){if(!(r instanceof Kr))throw new TypeError("JacobianPoint expected")}var Kr=class r{constructor(e,t,n){this.x=e,this.y=t,this.z=n}static fromAffine(e){if(!(e instanceof Tt))throw new TypeError("JacobianPoint#fromAffine: expected Point");return e.equals(Tt.ZERO)?r.ZERO:new r(e.x,e.y,Et)}static toAffineBatch(e){let t=FQ(e.map(n=>n.z));return e.map((n,i)=>n.toAffine(t[i]))}static normalizeZ(e){return r.toAffineBatch(e).map(r.fromAffine)}equals(e){dC(e);let{x:t,y:n,z:i}=this,{x:s,y:o,z:a}=e,c=se(i*i),u=se(a*a),l=se(t*u),f=se(s*c),h=se(se(n*a)*u),d=se(se(o*i)*c);return l===f&&h===d}negate(){return new r(this.x,se(-this.y),this.z)}double(){let{x:e,y:t,z:n}=this,i=se(e*e),s=se(t*t),o=se(s*s),a=e+s,c=se(Lo*(se(a*a)-i-o)),u=se(o0*i),l=se(u*u),f=se(l-Lo*c),h=se(u*(c-f)-cC*o),d=se(Lo*t*n);return new r(f,h,d)}add(e){dC(e);let{x:t,y:n,z:i}=this,{x:s,y:o,z:a}=e;if(s===He||o===He)return this;if(t===He||n===He)return e;let c=se(i*i),u=se(a*a),l=se(t*u),f=se(s*c),h=se(se(n*a)*u),d=se(se(o*i)*c),p=se(f-l),m=se(d-h);if(p===He)return m===He?this.double():r.ZERO;let g=se(p*p),y=se(p*g),b=se(l*g),w=se(m*m-y-Lo*b),_=se(m*(b-w)-h*y),x=se(i*a*p);return new r(w,_,x)}subtract(e){return this.add(e.negate())}multiplyUnsafe(e){let t=r.ZERO;if(typeof e=="bigint"&&e===He)return t;let n=gC(e);if(n===Et)return this;if(!Mp){let f=t,h=this;for(;n>He;)n&Et&&(f=f.add(h)),h=h.double(),n>>=Et;return f}let{k1neg:i,k1:s,k2neg:o,k2:a}=Lp.splitScalar(n),c=t,u=t,l=this;for(;s>He||a>He;)s&Et&&(c=c.add(l)),a&Et&&(u=u.add(l)),l=l.double(),s>>=Et,a>>=Et;return i&&(c=c.negate()),o&&(u=u.negate()),u=new r(se(u.x*Lp.beta),u.y,u.z),c.add(u)}precomputeWindow(e){let t=Mp?128/e+1:256/e+1,n=[],i=this,s=i;for(let o=0;o<t;o++){s=i,n.push(s);for(let a=1;a<2**(e-1);a++)s=s.add(i),n.push(s);i=s.double()}return n}wNAF(e,t){!t&&this.equals(r.BASE)&&(t=Tt.BASE);let n=t&&t._WINDOW_SIZE||1;if(256%n)throw new Error("Point#wNAF: Invalid precomputation window, must be power of 2");let i=t&&Ky.get(t);i||(i=this.precomputeWindow(n),t&&n!==1&&(i=r.normalizeZ(i),Ky.set(t,i)));let s=r.ZERO,o=r.BASE,a=1+(Mp?128/n:256/n),c=2**(n-1),u=BigInt(2**n-1),l=2**n,f=BigInt(n);for(let h=0;h<a;h++){let d=h*c,p=Number(e&u);e>>=f,p>c&&(p-=l,e+=Et);let m=d,g=d+Math.abs(p)-1,y=h%2!==0,b=p<0;p===0?o=o.add(Up(y,i[m])):s=s.add(Up(b,i[g]))}return{p:s,f:o}}multiply(e,t){let n=gC(e),i,s;if(Mp){let{k1neg:o,k1:a,k2neg:c,k2:u}=Lp.splitScalar(n),{p:l,f}=this.wNAF(a,t),{p:h,f:d}=this.wNAF(u,t);l=Up(o,l),h=Up(c,h),h=new r(se(h.x*Lp.beta),h.y,h.z),i=l.add(h),s=f.add(d)}else{let{p:o,f:a}=this.wNAF(n,t);i=o,s=a}return r.normalizeZ([i,s])[0]}toAffine(e){let{x:t,y:n,z:i}=this,s=this.equals(r.ZERO);e==null&&(e=s?cC:$u(i));let o=e,a=se(o*o),c=se(a*o),u=se(t*a),l=se(n*c),f=se(i*o);if(s)return Tt.ZERO;if(f!==Et)throw new Error("invZ was invalid");return new Tt(u,l)}};Kr.BASE=new Kr(Mt.Gx,Mt.Gy,Et);Kr.ZERO=new Kr(He,Et,He);function Up(r,e){let t=e.negate();return r?t:e}var Ky=new WeakMap,Tt=class r{constructor(e,t){this.x=e,this.y=t}_setWindowSize(e){this._WINDOW_SIZE=e,Ky.delete(this)}hasEvenY(){return this.y%Lo===He}static fromCompressedHex(e){let t=e.length===32,n=Mo(t?e:e.subarray(1));if(!Fy(n))throw new Error("Point is not on curve");let i=hC(n),s=UQ(i),o=(s&Et)===Et;t?o&&(s=se(-s)):(e[0]&1)===1!==o&&(s=se(-s));let a=new r(n,s);return a.assertValidity(),a}static fromUncompressedHex(e){let t=Mo(e.subarray(1,Ai+1)),n=Mo(e.subarray(Ai+1,Ai*2+1)),i=new r(t,n);return i.assertValidity(),i}static fromHex(e){let t=zu(e),n=t.length,i=t[0];if(n===Ai)return this.fromCompressedHex(t);if(n===lC&&(i===2||i===3))return this.fromCompressedHex(t);if(n===fC&&i===4)return this.fromUncompressedHex(t);throw new Error(`Point.fromHex: received invalid point. Expected 32-${lC} compressed bytes or ${fC} uncompressed bytes, not ${n}`)}static fromPrivateKey(e){return r.BASE.multiply(Vp(e))}static fromSignature(e,t,n){let{r:i,s}=yC(t);if(![0,1,2,3].includes(n))throw new Error("Cannot recover: invalid recovery bit");let o=zy(zu(e)),{n:a}=Mt,c=n===2||n===3?i+a:i,u=$u(c,a),l=se(-o*u,a),f=se(s*u,a),h=n&1?"03":"02",d=r.fromHex(h+Fu(c)),p=r.BASE.multiplyAndAddUnsafe(d,l,f);if(!p)throw new Error("Cannot recover signature: point at infinify");return p.assertValidity(),p}toRawBytes(e=!1){return $a(this.toHex(e))}toHex(e=!1){let t=Fu(this.x);return e?`${this.hasEvenY()?"02":"03"}${t}`:`04${t}${Fu(this.y)}`}toHexX(){return this.toHex(!0).slice(2)}toRawX(){return this.toRawBytes(!0).slice(1)}assertValidity(){let e="Point is not on elliptic curve",{x:t,y:n}=this;if(!Fy(t)||!Fy(n))throw new Error(e);let i=se(n*n),s=hC(t);if(se(i-s)!==He)throw new Error(e)}equals(e){return this.x===e.x&&this.y===e.y}negate(){return new r(this.x,se(-this.y))}double(){return Kr.fromAffine(this).double().toAffine()}add(e){return Kr.fromAffine(this).add(Kr.fromAffine(e)).toAffine()}subtract(e){return this.add(e.negate())}multiply(e){return Kr.fromAffine(this).multiply(e,this).toAffine()}multiplyAndAddUnsafe(e,t,n){let i=Kr.fromAffine(this),s=t===He||t===Et||this!==r.BASE?i.multiplyUnsafe(t):i.multiply(t),o=Kr.fromAffine(e).multiplyUnsafe(n),a=s.add(o);return a.equals(Kr.ZERO)?void 0:a.toAffine()}};Tt.BASE=new Tt(Mt.Gx,Mt.Gy);Tt.ZERO=new Tt(He,He);function pC(r){return Number.parseInt(r[0],16)>=8?"00"+r:r}function mC(r){if(r.length<2||r[0]!==2)throw new Error(`Invalid signature integer tag: ${Vu(r)}`);let e=r[1],t=r.subarray(2,e+2);if(!e||t.length!==e)throw new Error("Invalid signature integer: wrong length");if(t[0]===0&&t[1]<=127)throw new Error("Invalid signature integer: trailing length");return{data:Mo(t),left:r.subarray(e+2)}}function OQ(r){if(r.length<2||r[0]!=48)throw new Error(`Invalid signature tag: ${Vu(r)}`);if(r[1]!==r.length-2)throw new Error("Invalid signature: incorrect length");let{data:e,left:t}=mC(r.subarray(2)),{data:n,left:i}=mC(t);if(i.length)throw new Error(`Invalid signature: left bytes after parsing: ${Vu(i)}`);return{r:e,s:n}}var Uu=class r{constructor(e,t){this.r=e,this.s=t,this.assertValidity()}static fromCompact(e){let t=e instanceof Uint8Array,n="Signature.fromCompact";if(typeof e!="string"&&!t)throw new TypeError(`${n}: Expected string or Uint8Array`);let i=t?Vu(e):e;if(i.length!==128)throw new Error(`${n}: Expected 64-byte hex`);return new r(qp(i.slice(0,64)),qp(i.slice(64,128)))}static fromDER(e){let t=e instanceof Uint8Array;if(typeof e!="string"&&!t)throw new TypeError("Signature.fromDER: Expected string or Uint8Array");let{r:n,s:i}=OQ(t?e:$a(e));return new r(n,i)}static fromHex(e){return this.fromDER(e)}assertValidity(){let{r:e,s:t}=this;if(!c0(e))throw new Error("Invalid Signature: r must be 0 < r < n");if(!c0(t))throw new Error("Invalid Signature: s must be 0 < s < n")}hasHighS(){let e=Mt.n>>Et;return this.s>e}normalizeS(){return this.hasHighS()?new r(this.r,se(-this.s,Mt.n)):this}toDERRawBytes(){return $a(this.toDERHex())}toDERHex(){let e=pC(s0(this.s)),t=pC(s0(this.r)),n=e.length/2,i=t.length/2,s=s0(n),o=s0(i);return`30${s0(i+n+4)}02${o}${t}02${s}${e}`}toRawBytes(){return this.toDERRawBytes()}toHex(){return this.toDERHex()}toCompactRawBytes(){return $a(this.toCompactHex())}toCompactHex(){return Fu(this.r)+Fu(this.s)}};function Oo(...r){if(!r.every(n=>n instanceof Uint8Array))throw new Error("Uint8Array list expected");if(r.length===1)return r[0];let e=r.reduce((n,i)=>n+i.length,0),t=new Uint8Array(e);for(let n=0,i=0;n<r.length;n++){let s=r[n];t.set(s,i),i+=s.length}return t}var LQ=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function Vu(r){if(!(r instanceof Uint8Array))throw new Error("Expected Uint8Array");let e="";for(let t=0;t<r.length;t++)e+=LQ[r[t]];return e}var MQ=BigInt("0x10000000000000000000000000000000000000000000000000000000000000000");function Fu(r){if(typeof r!="bigint")throw new Error("Expected bigint");if(!(He<=r&&r<MQ))throw new Error("Expected number 0 <= n < 2^256");return r.toString(16).padStart(64,"0")}function qy(r){let e=$a(Fu(r));if(e.length!==32)throw new Error("Error: expected 32 bytes");return e}function s0(r){let e=r.toString(16);return e.length&1?`0${e}`:e}function qp(r){if(typeof r!="string")throw new TypeError("hexToNumber: expected string, got "+typeof r);return BigInt(`0x${r}`)}function $a(r){if(typeof r!="string")throw new TypeError("hexToBytes: expected string, got "+typeof r);if(r.length%2)throw new Error("hexToBytes: received invalid unpadded hex"+r.length);let e=new Uint8Array(r.length/2);for(let t=0;t<e.length;t++){let n=t*2,i=r.slice(n,n+2),s=Number.parseInt(i,16);if(Number.isNaN(s)||s<0)throw new Error("Invalid byte sequence");e[t]=s}return e}function Mo(r){return qp(Vu(r))}function zu(r){return r instanceof Uint8Array?Uint8Array.from(r):$a(r)}function gC(r){if(typeof r=="number"&&Number.isSafeInteger(r)&&r>0)return BigInt(r);if(typeof r=="bigint"&&c0(r))return r;throw new TypeError("Expected valid private scalar: 0 < scalar < curve.n")}function se(r,e=Mt.P){let t=r%e;return t>=He?t:e+t}function Xn(r,e){let{P:t}=Mt,n=r;for(;e-- >He;)n*=n,n%=t;return n}function UQ(r){let{P:e}=Mt,t=BigInt(6),n=BigInt(11),i=BigInt(22),s=BigInt(23),o=BigInt(44),a=BigInt(88),c=r*r*r%e,u=c*c*r%e,l=Xn(u,o0)*u%e,f=Xn(l,o0)*u%e,h=Xn(f,Lo)*c%e,d=Xn(h,n)*h%e,p=Xn(d,i)*d%e,m=Xn(p,o)*p%e,g=Xn(m,a)*m%e,y=Xn(g,o)*p%e,b=Xn(y,o0)*u%e,w=Xn(b,s)*d%e,_=Xn(w,t)*c%e,x=Xn(_,Lo);if(x*x%e!==r)throw new Error("Cannot find square root");return x}function $u(r,e=Mt.P){if(r===He||e<=He)throw new Error(`invert: expected positive integers, got n=${r} mod=${e}`);let t=se(r,e),n=e,i=He,s=Et,o=Et,a=He;for(;t!==He;){let u=n/t,l=n%t,f=i-o*u,h=s-a*u;n=t,t=l,i=o,s=a,o=f,a=h}if(n!==Et)throw new Error("invert: does not exist");return se(i,e)}function FQ(r,e=Mt.P){let t=new Array(r.length),n=r.reduce((s,o,a)=>o===He?s:(t[a]=s,se(s*o,e)),Et),i=$u(n,e);return r.reduceRight((s,o,a)=>o===He?s:(t[a]=se(s*t[a],e),se(s*o,e)),i),t}function KQ(r){let e=r.length*8-qu*8,t=Mo(r);return e>0?t>>BigInt(e):t}function zy(r,e=!1){let t=KQ(r);if(e)return t;let{n}=Mt;return t>=n?t-n:t}var Ku,a0,Vy=class{constructor(e,t){if(this.hashLen=e,this.qByteLen=t,typeof e!="number"||e<2)throw new Error("hashLen must be a number");if(typeof t!="number"||t<2)throw new Error("qByteLen must be a number");this.v=new Uint8Array(e).fill(1),this.k=new Uint8Array(e).fill(0),this.counter=0}hmac(...e){return Ti.hmacSha256(this.k,...e)}hmacSync(...e){return a0(this.k,...e)}checkSync(){if(typeof a0!="function")throw new Kp("hmacSha256Sync needs to be set")}incr(){if(this.counter>=1e3)throw new Error("Tried 1,000 k values for sign(), all were invalid");this.counter+=1}async reseed(e=new Uint8Array){this.k=await this.hmac(this.v,Uint8Array.from([0]),e),this.v=await this.hmac(this.v),e.length!==0&&(this.k=await this.hmac(this.v,Uint8Array.from([1]),e),this.v=await this.hmac(this.v))}reseedSync(e=new Uint8Array){this.checkSync(),this.k=this.hmacSync(this.v,Uint8Array.from([0]),e),this.v=this.hmacSync(this.v),e.length!==0&&(this.k=this.hmacSync(this.v,Uint8Array.from([1]),e),this.v=this.hmacSync(this.v))}async generate(){this.incr();let e=0,t=[];for(;e<this.qByteLen;){this.v=await this.hmac(this.v);let n=this.v.slice();t.push(n),e+=this.v.length}return Oo(...t)}generateSync(){this.checkSync(),this.incr();let e=0,t=[];for(;e<this.qByteLen;){this.v=this.hmacSync(this.v);let n=this.v.slice();t.push(n),e+=this.v.length}return Oo(...t)}};function c0(r){return He<r&&r<Mt.n}function Fy(r){return He<r&&r<Mt.P}function qQ(r,e,t,n=!0){let{n:i}=Mt,s=zy(r,!0);if(!c0(s))return;let o=$u(s,i),a=Tt.BASE.multiply(s),c=se(a.x,i);if(c===He)return;let u=se(o*se(e+t*c,i),i);if(u===He)return;let l=new Uu(c,u),f=(a.x===l.r?0:2)|Number(a.y&Et);return n&&l.hasHighS()&&(l=l.normalizeS(),f^=1),{sig:l,recovery:f}}function Vp(r){let e;if(typeof r=="bigint")e=r;else if(typeof r=="number"&&Number.isSafeInteger(r)&&r>0)e=BigInt(r);else if(typeof r=="string"){if(r.length!==2*qu)throw new Error("Expected 32 bytes of private key");e=qp(r)}else if(r instanceof Uint8Array){if(r.length!==qu)throw new Error("Expected 32 bytes of private key");e=Mo(r)}else throw new TypeError("Expected valid private key");if(!c0(e))throw new Error("Expected private key: 0 < key < n");return e}function VQ(r){return r instanceof Tt?(r.assertValidity(),r):Tt.fromHex(r)}function yC(r){if(r instanceof Uu)return r.assertValidity(),r;try{return Uu.fromDER(r)}catch{return Uu.fromCompact(r)}}function $y(r,e=!1){return Tt.fromPrivateKey(r).toRawBytes(e)}function bC(r){let e=r.length>Ai?r.slice(0,Ai):r;return Mo(e)}function zQ(r){let e=bC(r),t=se(e,Mt.n);return wC(t<He?e:t)}function wC(r){return qy(r)}function $Q(r,e,t){if(r==null)throw new Error(`sign: expected valid message hash, not "${r}"`);let n=zu(r),i=Vp(e),s=[wC(i),zQ(n)];if(t!=null){t===!0&&(t=Ti.randomBytes(Ai));let c=zu(t);if(c.length!==Ai)throw new Error(`sign: Expected ${Ai} bytes of extra data`);s.push(c)}let o=Oo(...s),a=bC(n);return{seed:o,m:a,d:i}}function HQ(r,e){let{sig:t,recovery:n}=r,{der:i,recovered:s}=Object.assign({canonical:!0,der:!0},e),o=i?t.toDERRawBytes():t.toCompactRawBytes();return s?[o,n]:o}async function EC(r,e,t={}){let{seed:n,m:i,d:s}=$Q(r,e,t.extraEntropy),o=new Vy(BQ,qu);await o.reseed(n);let a;for(;!(a=qQ(await o.generate(),i,s,t.canonical));)await o.reseed();return HQ(a,t)}var GQ={strict:!0};function xC(r,e,t,n=GQ){let i;try{i=yC(r),e=zu(e)}catch{return!1}let{r:s,s:o}=i;if(n.strict&&i.hasHighS())return!1;let a=zy(e),c;try{c=VQ(t)}catch{return!1}let{n:u}=Mt,l=$u(o,u),f=se(a*l,u),h=se(s*l,u),d=Tt.BASE.multiplyAndAddUnsafe(c,f,h);return d?se(d.x,u)===s:!1}Tt.BASE._setWindowSize(8);var vn={node:NQ,web:typeof self=="object"&&"crypto"in self?self.crypto:void 0};var Fp={},Ti={bytesToHex:Vu,hexToBytes:$a,concatBytes:Oo,mod:se,invert:$u,isValidPrivateKey(r){try{return Vp(r),!0}catch{return!1}},_bigintTo32Bytes:qy,_normalizePrivateKey:Vp,hashToPrivateKey:r=>{r=zu(r);let e=qu+8;if(r.length<e||r.length>1024)throw new Error("Expected valid bytes of private key as per FIPS 186");let t=se(Mo(r),Mt.n-Et)+Et;return qy(t)},randomBytes:(r=32)=>{if(vn.web)return vn.web.getRandomValues(new Uint8Array(r));if(vn.node){let{randomBytes:e}=vn.node;return Uint8Array.from(e(r))}else throw new Error("The environment doesn't have randomBytes function")},randomPrivateKey:()=>Ti.hashToPrivateKey(Ti.randomBytes(qu+8)),precompute(r=8,e=Tt.BASE){let t=e===Tt.BASE?e:new Tt(e.x,e.y);return t._setWindowSize(r),t.multiply(o0),t},sha256:async(...r)=>{if(vn.web){let e=await vn.web.subtle.digest("SHA-256",Oo(...r));return new Uint8Array(e)}else if(vn.node){let{createHash:e}=vn.node,t=e("sha256");return r.forEach(n=>t.update(n)),Uint8Array.from(t.digest())}else throw new Error("The environment doesn't have sha256 function")},hmacSha256:async(r,...e)=>{if(vn.web){let t=await vn.web.subtle.importKey("raw",r,{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign"]),n=Oo(...e),i=await vn.web.subtle.sign("HMAC",t,n);return new Uint8Array(i)}else if(vn.node){let{createHmac:t}=vn.node,n=t("sha256",r);return e.forEach(i=>n.update(i)),Uint8Array.from(n.digest())}else throw new Error("The environment doesn't have hmac-sha256 function")},sha256Sync:void 0,hmacSha256Sync:void 0,taggedHash:async(r,...e)=>{let t=Fp[r];if(t===void 0){let n=await Ti.sha256(Uint8Array.from(r,i=>i.charCodeAt(0)));t=Oo(n,n),Fp[r]=t}return Ti.sha256(t,...e)},taggedHashSync:(r,...e)=>{if(typeof Ku!="function")throw new Kp("sha256Sync is undefined, you need to set it");let t=Fp[r];if(t===void 0){let n=Ku(Uint8Array.from(r,i=>i.charCodeAt(0)));t=Oo(n,n),Fp[r]=t}return Ku(t,...e)},_JacobianPoint:Kr};Object.defineProperties(Ti,{sha256Sync:{configurable:!1,get(){return Ku},set(r){Ku||(Ku=r)}},hmacSha256Sync:{configurable:!1,get(){return a0},set(r){a0||(a0=r)}}});function zp(r){if(isNaN(r)||r<=0)throw new ut("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return Ti.randomBytes(r)}var lve=X(xc(),1),Hy=X(qe(),1);function vC(r,e){return e.map(t=>xn(r[t]))}function _C(r){return Hy.default.pki.setRsaPrivateKey(...vC(r,["n","e","d","p","q","dp","dq","qi"]))}function SC(r){return Hy.default.pki.setRsaPublicKey(...vC(r,["n","e"]))}var Ha={};be(Ha,{jwkToPkcs1:()=>QQ,jwkToPkix:()=>jQ,pkcs1ToJwk:()=>YQ,pkixToJwk:()=>XQ});var dve=X(aa(),1),pve=X(xc(),1);var Ls=X(qe(),1);function YQ(r){let e=Ls.default.asn1.fromDer(U(r,"ascii")),t=Ls.default.pki.privateKeyFromAsn1(e);return{kty:"RSA",n:Ii(t.n),e:Ii(t.e),d:Ii(t.d),p:Ii(t.p),q:Ii(t.q),dp:Ii(t.dP),dq:Ii(t.dQ),qi:Ii(t.qInv),alg:"RS256"}}function QQ(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 ut("JWK was missing components","ERR_INVALID_PARAMETERS");let e=Ls.default.pki.privateKeyToAsn1({n:xn(r.n),e:xn(r.e),d:xn(r.d),p:xn(r.p),q:xn(r.q),dP:xn(r.dp),dQ:xn(r.dq),qInv:xn(r.qi)});return G(Ls.default.asn1.toDer(e).getBytes(),"ascii")}function XQ(r){let e=Ls.default.asn1.fromDer(U(r,"ascii")),t=Ls.default.pki.publicKeyFromAsn1(e);return{kty:"RSA",n:Ii(t.n),e:Ii(t.e)}}function jQ(r){if(r.n==null||r.e==null)throw new ut("JWK was missing components","ERR_INVALID_PARAMETERS");let e=Ls.default.pki.publicKeyToAsn1({n:xn(r.n),e:xn(r.e)});return G(Ls.default.asn1.toDer(e).getBytes(),"ascii")}async function RC(r){let e=await jr.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 TC(e);return{privateKey:t[0],publicKey:t[1]}}async function Gy(r){let t=[await jr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await ZQ(r)],n=await TC({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function IC(r,e){let t=await jr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await jr.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,Uint8Array.from(e));return new Uint8Array(n,0,n.byteLength)}async function AC(r,e,t){let n=await jr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return jr.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t)}async function TC(r){if(r.privateKey==null||r.publicKey==null)throw new ut("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([jr.get().subtle.exportKey("jwk",r.privateKey),jr.get().subtle.exportKey("jwk",r.publicKey)])}async function ZQ(r){return jr.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 DC(r,e,t,n){let i=e?SC(r):_C(r),s=U(Uint8Array.from(t),"ascii"),o=n(s,i);return G(o,"ascii")}function CC(r,e){return DC(r,!0,e,(t,n)=>n.encrypt(t))}function PC(r,e){return DC(r,!1,e,(t,n)=>n.decrypt(t))}var l0=class{_key;constructor(e){this._key=e}async verify(e,t){return AC(this._key,t,e)}marshal(){return Ha.jwkToPkix(this._key)}get bytes(){return es.encode({Type:Ht.RSA,Data:this.marshal()}).subarray()}encrypt(e){return CC(this._key,e)}equals(e){return fe(this.bytes,e.bytes)}async hash(){let{bytes:e}=await xr.digest(this.bytes);return e}},Hu=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return zp(16)}async sign(e){return IC(this._key,e)}get public(){if(this._publicKey==null)throw new ut("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new l0(this._publicKey)}decrypt(e){return PC(this._key,e)}marshal(){return Ha.jwkToPkcs1(this._key)}get bytes(){return Os.encode({Type:Ht.RSA,Data:this.marshal()}).subarray()}equals(e){return fe(this.bytes,e.bytes)}async hash(){let{bytes:e}=await xr.digest(this.bytes);return e}async id(){let e=await this.public.hash();return U(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8"){let n=new u0.default.util.ByteBuffer(this.marshal()),i=u0.default.asn1.fromDer(n),s=u0.default.pki.privateKeyFromAsn1(i),o={algorithm:"aes256",count:1e4,saltSize:128/8,prfAlgorithm:"sha512"};return u0.default.pki.encryptRsaPrivateKey(s,e,o)}else{if(t==="libp2p-key")return Lu(this.bytes,e);throw new ut(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}}};async function eX(r){let e=Ha.pkcs1ToJwk(r),t=await Gy(e);return new Hu(t.privateKey,t.publicKey)}function tX(r){let e=Ha.pkixToJwk(r);return new l0(e)}async function rX(r){let e=await Gy(r);return new Hu(e.privateKey,e.publicKey)}async function nX(r){let e=await RC(r);return new Hu(e.privateKey,e.publicKey)}var Qy={};be(Qy,{Secp256k1PrivateKey:()=>h0,Secp256k1PublicKey:()=>f0,generateKeyPair:()=>aX,unmarshalSecp256k1PrivateKey:()=>sX,unmarshalSecp256k1PublicKey:()=>oX});function kC(){return Ti.randomPrivateKey()}async function NC(r,e){let{digest:t}=await xr.digest(e);try{return await EC(t,r)}catch(n){throw new ut(String(n),"ERR_INVALID_INPUT")}}async function BC(r,e,t){try{let{digest:n}=await xr.digest(t);return xC(e,n,r)}catch(n){throw new ut(String(n),"ERR_INVALID_INPUT")}}function OC(r){return Tt.fromHex(r).toRawBytes(!0)}function LC(r){try{$y(r,!0)}catch(e){throw new ut(String(e),"ERR_INVALID_PRIVATE_KEY")}}function Yy(r){try{Tt.fromHex(r)}catch(e){throw new ut(String(e),"ERR_INVALID_PUBLIC_KEY")}}function MC(r){try{return $y(r,!0)}catch(e){throw new ut(String(e),"ERR_INVALID_PRIVATE_KEY")}}var f0=class{_key;constructor(e){Yy(e),this._key=e}async verify(e,t){return BC(this._key,t,e)}marshal(){return OC(this._key)}get bytes(){return es.encode({Type:Ht.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return fe(this.bytes,e.bytes)}async hash(){let{bytes:e}=await xr.digest(this.bytes);return e}},h0=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??MC(e),LC(this._key),Yy(this._publicKey)}async sign(e){return NC(this._key,e)}get public(){return new f0(this._publicKey)}marshal(){return this._key}get bytes(){return Os.encode({Type:Ht.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return fe(this.bytes,e.bytes)}async hash(){let{bytes:e}=await xr.digest(this.bytes);return e}async id(){let e=await this.public.hash();return U(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Lu(this.bytes,e);throw new ut(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function sX(r){return new h0(r)}function oX(r){return new f0(r)}async function aX(){let r=kC();return new h0(r)}var $p={rsa:Wy,ed25519:Uy,secp256k1:Qy};function uX(r){let e=Object.keys($p).join(" / ");return new ut(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function Xy(r){let e=es.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case Ht.RSA:return $p.rsa.unmarshalRsaPublicKey(t);case Ht.Ed25519:return $p.ed25519.unmarshalEd25519PublicKey(t);case Ht.Secp256k1:return $p.secp256k1.unmarshalSecp256k1PublicKey(t);default:throw uX(e.Type??"RSA")}}var _n=X(A0(),1);var jy={};be(jy,{base32:()=>Uo,base32hex:()=>dX,base32hexpad:()=>mX,base32hexpadupper:()=>gX,base32hexupper:()=>pX,base32pad:()=>fX,base32padupper:()=>hX,base32upper:()=>lX,base32z:()=>yX});var Uo=Lt({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),lX=Lt({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),fX=Lt({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),hX=Lt({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),dX=Lt({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),pX=Lt({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),mX=Lt({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),gX=Lt({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),yX=Lt({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});_n.default.formatters.b=r=>r==null?"undefined":Er.baseEncode(r);_n.default.formatters.t=r=>r==null?"undefined":Uo.baseEncode(r);_n.default.formatters.m=r=>r==null?"undefined":Ou.baseEncode(r);_n.default.formatters.p=r=>r==null?"undefined":r.toString();_n.default.formatters.c=r=>r==null?"undefined":r.toString();_n.default.formatters.k=r=>r==null?"undefined":r.toString();_n.default.formatters.a=r=>r==null?"undefined":r.toString();function bX(r){let e=()=>{};return e.enabled=!1,e.color="",e.diff=0,e.log=()=>{},e.namespace=r,e.destroy=()=>!0,e.extend=()=>e,e}function Hp(r){let e=bX(`${r}:trace`);return _n.default.enabled(`${r}:trace`)&&_n.default.names.map(t=>t.toString()).find(t=>t.includes(":trace"))!=null&&(e=(0,_n.default)(`${r}:trace`)),Object.assign((0,_n.default)(r),{error:(0,_n.default)(`${r}:error`),trace:e})}var UC=Symbol.for("@libp2p/peer-id");var Zy={};be(Zy,{identity:()=>wX});var wX=Du({prefix:"\0",name:"identity",encode:r=>ND(r),decode:r=>kD(r)});var Jy={};be(Jy,{base2:()=>EX});var EX=Lt({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var e5={};be(e5,{base8:()=>xX});var xX=Lt({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var t5={};be(t5,{base10:()=>vX});var vX=To({prefix:"9",name:"base10",alphabet:"0123456789"});var r5={};be(r5,{base16:()=>_X,base16upper:()=>SX});var _X=Lt({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),SX=Lt({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var n5={};be(n5,{base36:()=>RX,base36upper:()=>IX});var RX=To({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),IX=To({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var i5={};be(i5,{base256emoji:()=>PX});var FC=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}"),AX=FC.reduce((r,e,t)=>(r[t]=e,r),[]),TX=FC.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function DX(r){return r.reduce((e,t)=>(e+=AX[t],e),"")}function CX(r){let e=[];for(let t of r){let n=TX[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var PX=Du({prefix:"\u{1F680}",name:"base256emoji",encode:DX,decode:CX});var l_e=new TextEncoder,f_e=new TextDecoder;var KC=(r,e)=>{let{bytes:t,version:n}=r;switch(n){case 0:return OX(t,s5(r),e||Er.encoder);default:return LX(t,s5(r),e||Uo.encoder)}};var qC=new WeakMap,s5=r=>{let e=qC.get(r);if(e==null){let t=new Map;return qC.set(r,t),t}return e},Ga=class r{constructor(e,t,n,i){this.code=t,this.version=e,this.multihash=n,this.bytes=i,this["/"]=i}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!==d0)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==MX)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=Zi(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&&e.code===n.code&&e.version===n.version&&FD(e.multihash,n.multihash)}toString(e){return KC(this,e)}toJSON(){return{"/":KC(this)}}link(){return this}get[Symbol.toStringTag](){return"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:i,multihash:s,bytes:o}=t;return new r(n,i,s,o||VC(n,i,s.bytes))}else if(t[UX]===!0){let{version:n,multihash:i,code:s}=t,o=Zf(i);return r.create(n,s,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!==d0)throw new Error(`Version 0 CID must use dag-pb (code: ${d0}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let i=VC(e,t,n.bytes);return new r(e,t,n,i)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,d0,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,i=Ns(e.subarray(n,n+t.multihashSize));if(i.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=i.subarray(t.multihashSize-t.digestSize),o=new ku(t.multihashCode,t.digestSize,s,i);return[t.version===0?r.createV0(o):r.createV1(t.codec,o),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[f,h]=jf(e.subarray(t));return t+=h,f},i=n(),s=d0;if(i===18?(i=0,t=0):s=n(),i!==0&&i!==1)throw new RangeError(`Invalid CID version ${i}`);let o=t,a=n(),c=n(),u=t+c,l=u-o;return{version:i,codec:s,multihashCode:a,digestSize:c,multihashSize:l,size:u}}static parse(e,t){let[n,i]=BX(e,t),s=r.decode(i);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return s5(s).set(n,e),s}},BX=(r,e)=>{switch(r[0]){case"Q":{let t=e||Er;return[Er.prefix,t.decode(`${Er.prefix}${r}`)]}case Er.prefix:{let t=e||Er;return[Er.prefix,t.decode(r)]}case Uo.prefix:{let t=e||Uo;return[Uo.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)]}}},OX=(r,e,t)=>{let{prefix:n}=t;if(n!==Er.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let i=e.get(n);if(i==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return i},LX=(r,e,t)=>{let{prefix:n}=t,i=e.get(n);if(i==null){let s=t.encode(r);return e.set(n,s),s}else return i},d0=112,MX=18,VC=(r,e,t)=>{let n=Pu(r),i=n+Pu(e),s=new Uint8Array(i+t.byteLength);return Cu(r,s,0),Cu(e,s,n),s.set(t,i),s},UX=Symbol.for("@ipld/js-cid/CID");var o5={...Zy,...Jy,...e5,...t5,...r5,...jy,...n5,...Ey,...By,...i5},x_e={...Ry,...vy};var FX=Symbol.for("nodejs.util.inspect.custom"),zC=Object.values(o5).map(r=>r.decoder).reduce((r,e)=>r.or(e),o5.identity.decoder),$C=114,a5=36,c5=37,p0=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()})`}[UC]=!0;toString(){return this.string==null&&(this.string=Er.encode(this.multihash.bytes).slice(1)),this.string}toCID(){return Ga.createV1($C,this.multihash)}toBytes(){return this.multihash.bytes}toJSON(){return this.toString()}equals(e){if(e instanceof Uint8Array)return fe(this.multihash.bytes,e);if(typeof e=="string")return KX(e).equals(this);if(e?.multihash?.bytes!=null)return fe(this.multihash.bytes,e.multihash.bytes);throw new Error("not valid Id")}[FX](){return`PeerId(${this.toString()})`}},Gu=class extends p0{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},Wu=class extends p0{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.multihash.digest}},Yu=class extends p0{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.multihash.digest}};function KX(r,e){if(e=e??zC,r.charAt(0)==="1"||r.charAt(0)==="Q"){let t=Zf(Er.decode(`z${r}`));return r.startsWith("12D")?new Wu({multihash:t}):r.startsWith("16U")?new Yu({multihash:t}):new Gu({multihash:t})}return u5(zC.decode(r))}function u5(r){try{let e=Zf(r);if(e.code===Do.code){if(e.digest.length===a5)return new Wu({multihash:e});if(e.digest.length===c5)return new Yu({multihash:e})}if(e.code===xr.code)return new Gu({multihash:e})}catch{return qX(Ga.decode(r))}throw new Error("Supplied PeerID CID is invalid")}function qX(r){if(r==null||r.multihash==null||r.version==null||r.version===1&&r.code!==$C)throw new Error("Supplied PeerID CID is invalid");let e=r.multihash;if(e.code===xr.code)return new Gu({multihash:r.multihash});if(e.code===Do.code){if(e.digest.length===a5)return new Wu({multihash:r.multihash});if(e.digest.length===c5)return new Yu({multihash:r.multihash})}throw new Error("Supplied PeerID CID is invalid")}async function HC(r,e){return r.length===a5?new Wu({multihash:Zi(Do.code,r),privateKey:e}):r.length===c5?new Yu({multihash:Zi(Do.code,r),privateKey:e}):new Gu({multihash:await xr.digest(r),publicKey:r,privateKey:e})}var VX=["string","number","bigint","symbol"],zX=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","HTMLElement","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function GC(r){if(r===null)return"null";if(r===void 0)return"undefined";if(r===!0||r===!1)return"boolean";let e=typeof r;if(VX.includes(e))return e;if(e==="function")return"Function";if(Array.isArray(r))return"Array";if($X(r))return"Buffer";let t=HX(r);return t||"Object"}function $X(r){return r&&r.constructor&&r.constructor.isBuffer&&r.constructor.isBuffer.call(null,r)}function HX(r){let e=Object.prototype.toString.call(r).slice(8,-1);if(zX.includes(e))return e}var L=class{constructor(e,t,n){this.major=e,this.majorEncoded=e<<5,this.name=t,this.terminal=n}toString(){return`Type[${this.major}].${this.name}`}compare(e){return this.major<e.major?-1:this.major>e.major?1:0}};L.uint=new L(0,"uint",!0);L.negint=new L(1,"negint",!0);L.bytes=new L(2,"bytes",!0);L.string=new L(3,"string",!0);L.array=new L(4,"array",!1);L.map=new L(5,"map",!1);L.tag=new L(6,"tag",!1);L.float=new L(7,"float",!0);L.false=new L(7,"false",!0);L.true=new L(7,"true",!0);L.null=new L(7,"null",!0);L.undefined=new L(7,"undefined",!0);L.break=new L(7,"break",!0);var oe=class{constructor(e,t,n){this.type=e,this.value=t,this.encodedLength=n,this.encodedBytes=void 0,this.byteValue=void 0}toString(){return`Token[${this.type}].${this.value}`}};var Qu=globalThis.process&&!globalThis.process.browser&&globalThis.Buffer&&typeof globalThis.Buffer.isBuffer=="function",GX=new TextDecoder,WX=new TextEncoder;function Gp(r){return Qu&&globalThis.Buffer.isBuffer(r)}function XC(r){return r instanceof Uint8Array?Gp(r)?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r:Uint8Array.from(r)}var jC=Qu?(r,e,t)=>t-e>64?globalThis.Buffer.from(r.subarray(e,t)).toString("utf8"):YC(r,e,t):(r,e,t)=>t-e>64?GX.decode(r.subarray(e,t)):YC(r,e,t),ZC=Qu?r=>r.length>64?globalThis.Buffer.from(r):WC(r):r=>r.length>64?WX.encode(r):WC(r);var Xu=Qu?(r,e,t)=>Gp(r)?new Uint8Array(r.subarray(e,t)):r.slice(e,t):(r,e,t)=>r.slice(e,t),JC=Qu?(r,e)=>(r=r.map(t=>t instanceof Uint8Array?t:globalThis.Buffer.from(t)),XC(globalThis.Buffer.concat(r,e))):(r,e)=>{let t=new Uint8Array(e),n=0;for(let i of r)n+i.length>t.length&&(i=i.subarray(0,t.length-n)),t.set(i,n),n+=i.length;return t},eP=Qu?r=>globalThis.Buffer.allocUnsafe(r):r=>new Uint8Array(r);function tP(r,e){if(Gp(r)&&Gp(e))return r.compare(e);for(let t=0;t<r.length;t++)if(r[t]!==e[t])return r[t]<e[t]?-1:1;return 0}function WC(r,e=1/0){let t,n=r.length,i=null,s=[];for(let o=0;o<n;++o){if(t=r.charCodeAt(o),t>55295&&t<57344){if(!i){if(t>56319){(e-=3)>-1&&s.push(239,191,189);continue}else if(o+1===n){(e-=3)>-1&&s.push(239,191,189);continue}i=t;continue}if(t<56320){(e-=3)>-1&&s.push(239,191,189),i=t;continue}t=(i-55296<<10|t-56320)+65536}else i&&(e-=3)>-1&&s.push(239,191,189);if(i=null,t<128){if((e-=1)<0)break;s.push(t)}else if(t<2048){if((e-=2)<0)break;s.push(t>>6|192,t&63|128)}else if(t<65536){if((e-=3)<0)break;s.push(t>>12|224,t>>6&63|128,t&63|128)}else if(t<1114112){if((e-=4)<0)break;s.push(t>>18|240,t>>12&63|128,t>>6&63|128,t&63|128)}else throw new Error("Invalid code point")}return s}function YC(r,e,t){let n=[];for(;e<t;){let i=r[e],s=null,o=i>239?4:i>223?3:i>191?2:1;if(e+o<=t){let a,c,u,l;switch(o){case 1:i<128&&(s=i);break;case 2:a=r[e+1],(a&192)===128&&(l=(i&31)<<6|a&63,l>127&&(s=l));break;case 3:a=r[e+1],c=r[e+2],(a&192)===128&&(c&192)===128&&(l=(i&15)<<12|(a&63)<<6|c&63,l>2047&&(l<55296||l>57343)&&(s=l));break;case 4:a=r[e+1],c=r[e+2],u=r[e+3],(a&192)===128&&(c&192)===128&&(u&192)===128&&(l=(i&15)<<18|(a&63)<<12|(c&63)<<6|u&63,l>65535&&l<1114112&&(s=l))}}s===null?(s=65533,o=1):s>65535&&(s-=65536,n.push(s>>>10&1023|55296),s=56320|s&1023),n.push(s),e+=o}return YX(n)}var QC=4096;function YX(r){let e=r.length;if(e<=QC)return String.fromCharCode.apply(String,r);let t="",n=0;for(;n<e;)t+=String.fromCharCode.apply(String,r.slice(n,n+=QC));return t}var QX=256,Wp=class{constructor(e=QX){this.chunkSize=e,this.cursor=0,this.maxCursor=-1,this.chunks=[],this._initReuseChunk=null}reset(){this.cursor=0,this.maxCursor=-1,this.chunks.length&&(this.chunks=[]),this._initReuseChunk!==null&&(this.chunks.push(this._initReuseChunk),this.maxCursor=this._initReuseChunk.length-1)}push(e){let t=this.chunks[this.chunks.length-1];if(this.cursor+e.length<=this.maxCursor+1){let i=t.length-(this.maxCursor-this.cursor)-1;t.set(e,i)}else{if(t){let i=t.length-(this.maxCursor-this.cursor)-1;i<t.length&&(this.chunks[this.chunks.length-1]=t.subarray(0,i),this.maxCursor=this.cursor-1)}e.length<64&&e.length<this.chunkSize?(t=eP(this.chunkSize),this.chunks.push(t),this.maxCursor+=t.length,this._initReuseChunk===null&&(this._initReuseChunk=t),t.set(e,0)):(this.chunks.push(e),this.maxCursor+=e.length)}this.cursor+=e.length}toBytes(e=!1){let t;if(this.chunks.length===1){let n=this.chunks[0];e&&this.cursor>n.length/2?(t=this.cursor===n.length?n:n.subarray(0,this.cursor),this._initReuseChunk=null,this.chunks=[]):t=Xu(n,0,this.cursor)}else t=JC(this.chunks,this.cursor);return e&&this.reset(),t}};var Re="CBOR decode error:",l5="CBOR encode error:",m0=[];m0[23]=1;m0[24]=2;m0[25]=3;m0[26]=5;m0[27]=9;function Ms(r,e,t){if(r.length-e<t)throw new Error(`${Re} not enough data for type`)}var ur=[24,256,65536,4294967296,BigInt("18446744073709551616")];function Sn(r,e,t){Ms(r,e,1);let n=r[e];if(t.strict===!0&&n<ur[0])throw new Error(`${Re} integer encoded in more bytes than necessary (strict decode)`);return n}function Rn(r,e,t){Ms(r,e,2);let n=r[e]<<8|r[e+1];if(t.strict===!0&&n<ur[1])throw new Error(`${Re} integer encoded in more bytes than necessary (strict decode)`);return n}function In(r,e,t){Ms(r,e,4);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3];if(t.strict===!0&&n<ur[2])throw new Error(`${Re} integer encoded in more bytes than necessary (strict decode)`);return n}function An(r,e,t){Ms(r,e,8);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3],i=r[e+4]*16777216+(r[e+5]<<16)+(r[e+6]<<8)+r[e+7],s=(BigInt(n)<<BigInt(32))+BigInt(i);if(t.strict===!0&&s<ur[3])throw new Error(`${Re} integer encoded in more bytes than necessary (strict decode)`);if(s<=Number.MAX_SAFE_INTEGER)return Number(s);if(t.allowBigInt===!0)return s;throw new Error(`${Re} integers outside of the safe integer range are not supported`)}function rP(r,e,t,n){return new oe(L.uint,Sn(r,e+1,n),2)}function nP(r,e,t,n){return new oe(L.uint,Rn(r,e+1,n),3)}function iP(r,e,t,n){return new oe(L.uint,In(r,e+1,n),5)}function sP(r,e,t,n){return new oe(L.uint,An(r,e+1,n),9)}function jn(r,e){return vr(r,0,e.value)}function vr(r,e,t){if(t<ur[0]){let n=Number(t);r.push([e|n])}else if(t<ur[1]){let n=Number(t);r.push([e|24,n])}else if(t<ur[2]){let n=Number(t);r.push([e|25,n>>>8,n&255])}else if(t<ur[3]){let n=Number(t);r.push([e|26,n>>>24&255,n>>>16&255,n>>>8&255,n&255])}else{let n=BigInt(t);if(n<ur[4]){let i=[e|27,0,0,0,0,0,0,0],s=Number(n&BigInt(4294967295)),o=Number(n>>BigInt(32)&BigInt(4294967295));i[8]=s&255,s=s>>8,i[7]=s&255,s=s>>8,i[6]=s&255,s=s>>8,i[5]=s&255,i[4]=o&255,o=o>>8,i[3]=o&255,o=o>>8,i[2]=o&255,o=o>>8,i[1]=o&255,r.push(i)}else throw new Error(`${Re} encountered BigInt larger than allowable range`)}}jn.encodedSize=function(e){return vr.encodedSize(e.value)};vr.encodedSize=function(e){return e<ur[0]?1:e<ur[1]?2:e<ur[2]?3:e<ur[3]?5:9};jn.compareTokens=function(e,t){return e.value<t.value?-1:e.value>t.value?1:0};function oP(r,e,t,n){return new oe(L.negint,-1-Sn(r,e+1,n),2)}function aP(r,e,t,n){return new oe(L.negint,-1-Rn(r,e+1,n),3)}function cP(r,e,t,n){return new oe(L.negint,-1-In(r,e+1,n),5)}var f5=BigInt(-1),uP=BigInt(1);function lP(r,e,t,n){let i=An(r,e+1,n);if(typeof i!="bigint"){let s=-1-i;if(s>=Number.MIN_SAFE_INTEGER)return new oe(L.negint,s,9)}if(n.allowBigInt!==!0)throw new Error(`${Re} integers outside of the safe integer range are not supported`);return new oe(L.negint,f5-BigInt(i),9)}function Yp(r,e){let t=e.value,n=typeof t=="bigint"?t*f5-uP:t*-1-1;vr(r,e.type.majorEncoded,n)}Yp.encodedSize=function(e){let t=e.value,n=typeof t=="bigint"?t*f5-uP:t*-1-1;return n<ur[0]?1:n<ur[1]?2:n<ur[2]?3:n<ur[3]?5:9};Yp.compareTokens=function(e,t){return e.value<t.value?1:e.value>t.value?-1:0};function g0(r,e,t,n){Ms(r,e,t+n);let i=Xu(r,e+t,e+t+n);return new oe(L.bytes,i,t+n)}function fP(r,e,t,n){return g0(r,e,1,t)}function hP(r,e,t,n){return g0(r,e,2,Sn(r,e+1,n))}function dP(r,e,t,n){return g0(r,e,3,Rn(r,e+1,n))}function pP(r,e,t,n){return g0(r,e,5,In(r,e+1,n))}function mP(r,e,t,n){let i=An(r,e+1,n);if(typeof i=="bigint")throw new Error(`${Re} 64-bit integer bytes lengths not supported`);return g0(r,e,9,i)}function Qp(r){return r.encodedBytes===void 0&&(r.encodedBytes=r.type===L.string?ZC(r.value):r.value),r.encodedBytes}function ju(r,e){let t=Qp(e);vr(r,e.type.majorEncoded,t.length),r.push(t)}ju.encodedSize=function(e){let t=Qp(e);return vr.encodedSize(t.length)+t.length};ju.compareTokens=function(e,t){return jX(Qp(e),Qp(t))};function jX(r,e){return r.length<e.length?-1:r.length>e.length?1:tP(r,e)}function y0(r,e,t,n,i){let s=t+n;Ms(r,e,s);let o=new oe(L.string,jC(r,e+t,e+s),s);return i.retainStringBytes===!0&&(o.byteValue=Xu(r,e+t,e+s)),o}function gP(r,e,t,n){return y0(r,e,1,t,n)}function yP(r,e,t,n){return y0(r,e,2,Sn(r,e+1,n),n)}function bP(r,e,t,n){return y0(r,e,3,Rn(r,e+1,n),n)}function wP(r,e,t,n){return y0(r,e,5,In(r,e+1,n),n)}function EP(r,e,t,n){let i=An(r,e+1,n);if(typeof i=="bigint")throw new Error(`${Re} 64-bit integer string lengths not supported`);return y0(r,e,9,i,n)}var xP=ju;function Zu(r,e,t,n){return new oe(L.array,n,t)}function vP(r,e,t,n){return Zu(r,e,1,t)}function _P(r,e,t,n){return Zu(r,e,2,Sn(r,e+1,n))}function SP(r,e,t,n){return Zu(r,e,3,Rn(r,e+1,n))}function RP(r,e,t,n){return Zu(r,e,5,In(r,e+1,n))}function IP(r,e,t,n){let i=An(r,e+1,n);if(typeof i=="bigint")throw new Error(`${Re} 64-bit integer array lengths not supported`);return Zu(r,e,9,i)}function AP(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${Re} indefinite length items not allowed`);return Zu(r,e,1,1/0)}function Xp(r,e){vr(r,L.array.majorEncoded,e.value)}Xp.compareTokens=jn.compareTokens;Xp.encodedSize=function(e){return vr.encodedSize(e.value)};function Ju(r,e,t,n){return new oe(L.map,n,t)}function TP(r,e,t,n){return Ju(r,e,1,t)}function DP(r,e,t,n){return Ju(r,e,2,Sn(r,e+1,n))}function CP(r,e,t,n){return Ju(r,e,3,Rn(r,e+1,n))}function PP(r,e,t,n){return Ju(r,e,5,In(r,e+1,n))}function kP(r,e,t,n){let i=An(r,e+1,n);if(typeof i=="bigint")throw new Error(`${Re} 64-bit integer map lengths not supported`);return Ju(r,e,9,i)}function NP(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${Re} indefinite length items not allowed`);return Ju(r,e,1,1/0)}function jp(r,e){vr(r,L.map.majorEncoded,e.value)}jp.compareTokens=jn.compareTokens;jp.encodedSize=function(e){return vr.encodedSize(e.value)};function BP(r,e,t,n){return new oe(L.tag,t,1)}function OP(r,e,t,n){return new oe(L.tag,Sn(r,e+1,n),2)}function LP(r,e,t,n){return new oe(L.tag,Rn(r,e+1,n),3)}function MP(r,e,t,n){return new oe(L.tag,In(r,e+1,n),5)}function UP(r,e,t,n){return new oe(L.tag,An(r,e+1,n),9)}function Zp(r,e){vr(r,L.tag.majorEncoded,e.value)}Zp.compareTokens=jn.compareTokens;Zp.encodedSize=function(e){return vr.encodedSize(e.value)};var nj=20,ij=21,sj=22,oj=23;function FP(r,e,t,n){if(n.allowUndefined===!1)throw new Error(`${Re} undefined values are not supported`);return n.coerceUndefinedToNull===!0?new oe(L.null,null,1):new oe(L.undefined,void 0,1)}function KP(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${Re} indefinite length items not allowed`);return new oe(L.break,void 0,1)}function h5(r,e,t){if(t){if(t.allowNaN===!1&&Number.isNaN(r))throw new Error(`${Re} NaN values are not supported`);if(t.allowInfinity===!1&&(r===1/0||r===-1/0))throw new Error(`${Re} Infinity values are not supported`)}return new oe(L.float,r,e)}function qP(r,e,t,n){return h5(d5(r,e+1),3,n)}function VP(r,e,t,n){return h5(p5(r,e+1),5,n)}function zP(r,e,t,n){return h5(WP(r,e+1),9,n)}function Jp(r,e,t){let n=e.value;if(n===!1)r.push([L.float.majorEncoded|nj]);else if(n===!0)r.push([L.float.majorEncoded|ij]);else if(n===null)r.push([L.float.majorEncoded|sj]);else if(n===void 0)r.push([L.float.majorEncoded|oj]);else{let i,s=!1;(!t||t.float64!==!0)&&(HP(n),i=d5(Di,1),n===i||Number.isNaN(n)?(Di[0]=249,r.push(Di.slice(0,3)),s=!0):(GP(n),i=p5(Di,1),n===i&&(Di[0]=250,r.push(Di.slice(0,5)),s=!0))),s||(aj(n),i=WP(Di,1),Di[0]=251,r.push(Di.slice(0,9)))}}Jp.encodedSize=function(e,t){let n=e.value;if(n===!1||n===!0||n===null||n===void 0)return 1;if(!t||t.float64!==!0){HP(n);let i=d5(Di,1);if(n===i||Number.isNaN(n))return 3;if(GP(n),i=p5(Di,1),n===i)return 5}return 9};var $P=new ArrayBuffer(9),Zn=new DataView($P,1),Di=new Uint8Array($P,0);function HP(r){if(r===1/0)Zn.setUint16(0,31744,!1);else if(r===-1/0)Zn.setUint16(0,64512,!1);else if(Number.isNaN(r))Zn.setUint16(0,32256,!1);else{Zn.setFloat32(0,r);let e=Zn.getUint32(0),t=(e&2139095040)>>23,n=e&8388607;if(t===255)Zn.setUint16(0,31744,!1);else if(t===0)Zn.setUint16(0,(r&2147483648)>>16|n>>13,!1);else{let i=t-127;i<-24?Zn.setUint16(0,0):i<-14?Zn.setUint16(0,(e&2147483648)>>16|1<<24+i,!1):Zn.setUint16(0,(e&2147483648)>>16|i+15<<10|n>>13,!1)}}}function d5(r,e){if(r.length-e<2)throw new Error(`${Re} not enough data for float16`);let t=(r[e]<<8)+r[e+1];if(t===31744)return 1/0;if(t===64512)return-1/0;if(t===32256)return NaN;let n=t>>10&31,i=t&1023,s;return n===0?s=i*2**-24:n!==31?s=(i+1024)*2**(n-25):s=i===0?1/0:NaN,t&32768?-s:s}function GP(r){Zn.setFloat32(0,r,!1)}function p5(r,e){if(r.length-e<4)throw new Error(`${Re} not enough data for float32`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,4).getFloat32(0,!1)}function aj(r){Zn.setFloat64(0,r,!1)}function WP(r,e){if(r.length-e<8)throw new Error(`${Re} not enough data for float64`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,8).getFloat64(0,!1)}Jp.compareTokens=jn.compareTokens;function Ze(r,e,t){throw new Error(`${Re} encountered invalid minor (${t}) for major ${r[e]>>>5}`)}function e2(r){return()=>{throw new Error(`${Re} ${r}`)}}var J=[];for(let r=0;r<=23;r++)J[r]=Ze;J[24]=rP;J[25]=nP;J[26]=iP;J[27]=sP;J[28]=Ze;J[29]=Ze;J[30]=Ze;J[31]=Ze;for(let r=32;r<=55;r++)J[r]=Ze;J[56]=oP;J[57]=aP;J[58]=cP;J[59]=lP;J[60]=Ze;J[61]=Ze;J[62]=Ze;J[63]=Ze;for(let r=64;r<=87;r++)J[r]=fP;J[88]=hP;J[89]=dP;J[90]=pP;J[91]=mP;J[92]=Ze;J[93]=Ze;J[94]=Ze;J[95]=e2("indefinite length bytes/strings are not supported");for(let r=96;r<=119;r++)J[r]=gP;J[120]=yP;J[121]=bP;J[122]=wP;J[123]=EP;J[124]=Ze;J[125]=Ze;J[126]=Ze;J[127]=e2("indefinite length bytes/strings are not supported");for(let r=128;r<=151;r++)J[r]=vP;J[152]=_P;J[153]=SP;J[154]=RP;J[155]=IP;J[156]=Ze;J[157]=Ze;J[158]=Ze;J[159]=AP;for(let r=160;r<=183;r++)J[r]=TP;J[184]=DP;J[185]=CP;J[186]=PP;J[187]=kP;J[188]=Ze;J[189]=Ze;J[190]=Ze;J[191]=NP;for(let r=192;r<=215;r++)J[r]=BP;J[216]=OP;J[217]=LP;J[218]=MP;J[219]=UP;J[220]=Ze;J[221]=Ze;J[222]=Ze;J[223]=Ze;for(let r=224;r<=243;r++)J[r]=e2("simple values are not supported");J[244]=Ze;J[245]=Ze;J[246]=Ze;J[247]=FP;J[248]=e2("simple values are not supported");J[249]=qP;J[250]=VP;J[251]=zP;J[252]=Ze;J[253]=Ze;J[254]=Ze;J[255]=KP;var Ci=[];for(let r=0;r<24;r++)Ci[r]=new oe(L.uint,r,1);for(let r=-1;r>=-24;r--)Ci[31-r]=new oe(L.negint,r,1);Ci[64]=new oe(L.bytes,new Uint8Array(0),1);Ci[96]=new oe(L.string,"",1);Ci[128]=new oe(L.array,0,1);Ci[160]=new oe(L.map,0,1);Ci[244]=new oe(L.false,!1,1);Ci[245]=new oe(L.true,!0,1);Ci[246]=new oe(L.null,null,1);function uj(){let r=[];return r[L.uint.major]=jn,r[L.negint.major]=Yp,r[L.bytes.major]=ju,r[L.string.major]=xP,r[L.array.major]=Xp,r[L.map.major]=jp,r[L.tag.major]=Zp,r[L.float.major]=Jp,r}var _Se=uj(),SSe=new Wp,t2=class r{constructor(e,t){this.obj=e,this.parent=t}includes(e){let t=this;do if(t.obj===e)return!0;while(t=t.parent);return!1}static createCheck(e,t){if(e&&e.includes(t))throw new Error(`${l5} object contains circular references`);return new r(t,e)}},Fo={null:new oe(L.null,null),undefined:new oe(L.undefined,void 0),true:new oe(L.true,!0),false:new oe(L.false,!1),emptyArray:new oe(L.array,0),emptyMap:new oe(L.map,0)},Ko={number(r,e,t,n){return!Number.isInteger(r)||!Number.isSafeInteger(r)?new oe(L.float,r):r>=0?new oe(L.uint,r):new oe(L.negint,r)},bigint(r,e,t,n){return r>=BigInt(0)?new oe(L.uint,r):new oe(L.negint,r)},Uint8Array(r,e,t,n){return new oe(L.bytes,r)},string(r,e,t,n){return new oe(L.string,r)},boolean(r,e,t,n){return r?Fo.true:Fo.false},null(r,e,t,n){return Fo.null},undefined(r,e,t,n){return Fo.undefined},ArrayBuffer(r,e,t,n){return new oe(L.bytes,new Uint8Array(r))},DataView(r,e,t,n){return new oe(L.bytes,new Uint8Array(r.buffer,r.byteOffset,r.byteLength))},Array(r,e,t,n){if(!r.length)return t.addBreakTokens===!0?[Fo.emptyArray,new oe(L.break)]:Fo.emptyArray;n=t2.createCheck(n,r);let i=[],s=0;for(let o of r)i[s++]=m5(o,t,n);return t.addBreakTokens?[new oe(L.array,r.length),i,new oe(L.break)]:[new oe(L.array,r.length),i]},Object(r,e,t,n){let i=e!=="Object",s=i?r.keys():Object.keys(r),o=i?r.size:s.length;if(!o)return t.addBreakTokens===!0?[Fo.emptyMap,new oe(L.break)]:Fo.emptyMap;n=t2.createCheck(n,r);let a=[],c=0;for(let u of s)a[c++]=[m5(u,t,n),m5(i?r.get(u):r[u],t,n)];return lj(a,t),t.addBreakTokens?[new oe(L.map,o),a,new oe(L.break)]:[new oe(L.map,o),a]}};Ko.Map=Ko.Object;Ko.Buffer=Ko.Uint8Array;for(let r of"Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64".split(" "))Ko[`${r}Array`]=Ko.DataView;function m5(r,e={},t){let n=GC(r),i=e&&e.typeEncoders&&e.typeEncoders[n]||Ko[n];if(typeof i=="function"){let o=i(r,n,e,t);if(o!=null)return o}let s=Ko[n];if(!s)throw new Error(`${l5} unsupported type: ${n}`);return s(r,n,e,t)}function lj(r,e){e.mapSorter&&r.sort(e.mapSorter)}var fj={strict:!1,allowIndefinite:!0,allowUndefined:!0,allowBigInt:!0},g5=class{constructor(e,t={}){this.pos=0,this.data=e,this.options=t}done(){return this.pos>=this.data.length}next(){let e=this.data[this.pos],t=Ci[e];if(t===void 0){let n=J[e];if(!n)throw new Error(`${Re} no decoder for major type ${e>>>5} (byte 0x${e.toString(16).padStart(2,"0")})`);let i=e&31;t=n(this.data,this.pos,i,this.options)}return this.pos+=t.encodedLength,t}},b0=Symbol.for("DONE"),r2=Symbol.for("BREAK");function hj(r,e,t){let n=[];for(let i=0;i<r.value;i++){let s=w0(e,t);if(s===r2){if(r.value===1/0)break;throw new Error(`${Re} got unexpected break to lengthed array`)}if(s===b0)throw new Error(`${Re} found array but not enough entries (got ${i}, expected ${r.value})`);n[i]=s}return n}function dj(r,e,t){let n=t.useMaps===!0,i=n?void 0:{},s=n?new Map:void 0;for(let o=0;o<r.value;o++){let a=w0(e,t);if(a===r2){if(r.value===1/0)break;throw new Error(`${Re} got unexpected break to lengthed map`)}if(a===b0)throw new Error(`${Re} found map but not enough entries (got ${o} [no key], expected ${r.value})`);if(n!==!0&&typeof a!="string")throw new Error(`${Re} non-string keys not supported (got ${typeof a})`);if(t.rejectDuplicateMapKeys===!0&&(n&&s.has(a)||!n&&a in i))throw new Error(`${Re} found repeat map key "${a}"`);let c=w0(e,t);if(c===b0)throw new Error(`${Re} found map but not enough entries (got ${o} [no value], expected ${r.value})`);n?s.set(a,c):i[a]=c}return n?s:i}function w0(r,e){if(r.done())return b0;let t=r.next();if(t.type===L.break)return r2;if(t.type.terminal)return t.value;if(t.type===L.array)return hj(t,r,e);if(t.type===L.map)return dj(t,r,e);if(t.type===L.tag){if(e.tags&&typeof e.tags[t.value]=="function"){let n=w0(r,e);return e.tags[t.value](n)}throw new Error(`${Re} tag not supported (${t.value})`)}throw new Error("unsupported")}function y5(r,e){if(!(r instanceof Uint8Array))throw new Error(`${Re} data to decode must be a Uint8Array`);e=Object.assign({},fj,e);let t=e.tokenizer||new g5(r,e),n=w0(t,e);if(n===b0)throw new Error(`${Re} did not find any content to decode`);if(n===r2)throw new Error(`${Re} got unexpected break`);if(!t.done())throw new Error(`${Re} too many terminals, data makes no sense`);return n}var E0=X(Ja(),1);var YP="ERR_IPNS_EXPIRED_RECORD",n2="ERR_UNRECOGNIZED_VALIDITY";var qo="ERR_SIGNATURE_VERIFICATION",QP="ERR_UNRECOGNIZED_FORMAT";var b5="ERR_UNDEFINED_PARAMETER",XP="ERR_INVALID_RECORD_DATA",jP="ERR_INVALID_EMBEDDED_KEY";var ZP="ERR_RECORD_TOO_LARGE";var ek=Hp("ipns:utils"),gj=G("/ipns/");function x0(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),i=parseInt(t[2],10)-1,s=parseInt(t[3],10),o=parseInt(t[4],10),a=parseInt(t[5],10),c=parseInt(t[6],10),u=parseInt(t[7].slice(0,-6),10);return new Date(Date.UTC(n,i,s,o,a,c,u))}var tk=async(r,e)=>{if(e==null||r==null){let n=new Error("one or more of the provided parameters are not defined");throw ek.error(n),(0,E0.default)(n,b5)}let t;if(e.pubKey!=null){try{t=Xy(e.pubKey)}catch(i){throw ek.error(i),i}if(!(await HC(e.pubKey)).equals(r))throw(0,E0.default)(new Error("Embedded public key did not match PeerID"),jP)}else r.publicKey!=null&&(t=Xy(r.publicKey));if(t!=null)return t;throw(0,E0.default)(new Error("no public key is available"),b5)};var rk=r=>{let e=G("ipns-signature:");return ve([e,r])};var nk=r=>{let e=ji.decode(r);return e.sequence!=null&&(e.sequence=BigInt(e.sequence)),e.ttl!=null&&(e.ttl=BigInt(e.ttl)),{value:e.value??new Uint8Array(0),signature:e.signature??new Uint8Array(0),validityType:e.validityType??ji.ValidityType.EOL,validity:e.validity??new Uint8Array(0),sequence:e.sequence??0n,pubKey:e.pubKey,ttl:e.ttl??void 0,signatureV2:e.signatureV2,data:e.data}};var ik=r=>u5(r.slice(gj.length));var sk=r=>{let e=y5(r);if(e.ValidityType===0)e.ValidityType=ji.ValidityType.EOL;else throw(0,E0.default)(new Error("Unknown validity type"),n2);return Number.isInteger(e.Sequence)&&(e.Sequence=BigInt(e.Sequence)),Number.isInteger(e.TTL)&&(e.TTL=BigInt(e.TTL)),e};var ok=(r,e)=>{let t=e.map((n,i)=>({entry:ji.decode(n),index:i}));return t.sort((n,i)=>{if(n.entry.signatureV2!=null&&i.entry.signatureV2==null)return-1;if(n.entry.signatureV2==null&&i.entry.signatureV2!=null)return 1;let s=n.entry.sequence??0n,o=i.entry.sequence??0n;if(s>o)return-1;if(s<o)return 1;let a=n.entry.validity??new Uint8Array(0),c=i.entry.validity??new Uint8Array(0),u=x0(U(a)),l=x0(U(c));return u.getTime()>l.getTime()?-1:u.getTime()<l.getTime()?1:0}),t[0].index};var Tn=X(Ja(),1);var v0=Hp("ipns:validator"),yj=1024*10,bj=async(r,e)=>{let{value:t,validityType:n,validity:i}=e,s,o;if(e.signatureV2!=null&&e.data!=null)o=e.signatureV2,s=rk(e.data),wj(e);else throw(0,Tn.default)(new Error("missing data or signatureV2"),qo);let a;try{a=await r.verify(s,o)}catch{a=!1}if(!a)throw v0.error("record signature verification failed"),(0,Tn.default)(new Error("record signature verification failed"),qo);if(i!=null&&n===ji.ValidityType.EOL){let c;try{c=x0(U(i))}catch{throw v0.error("unrecognized validity format (not an rfc3339 format)"),(0,Tn.default)(new Error("unrecognized validity format (not an rfc3339 format)"),QP)}if(c.getTime()<Date.now())throw v0.error("record has expired"),(0,Tn.default)(new Error("record has expired"),YP)}else if(n!=null)throw v0.error("unrecognized validity type"),(0,Tn.default)(new Error("unrecognized validity type"),n2);v0("ipns entry for %b is valid",t)},wj=r=>{if(r.data==null)throw(0,Tn.default)(new Error("Record data is missing"),XP);let e=sk(r.data);if(!fe(e.Value,r.value))throw(0,Tn.default)(new Error('Field "value" did not match between protobuf and CBOR'),qo);if(!fe(e.Validity,r.validity))throw(0,Tn.default)(new Error('Field "validity" did not match between protobuf and CBOR'),qo);if(e.ValidityType!==r.validityType)throw(0,Tn.default)(new Error('Field "validityType" did not match between protobuf and CBOR'),qo);if(e.Sequence!==r.sequence)throw(0,Tn.default)(new Error('Field "sequence" did not match between protobuf and CBOR'),qo);if(e.TTL!==r.ttl)throw(0,Tn.default)(new Error('Field "ttl" did not match between protobuf and CBOR'),qo)},ak=async(r,e)=>{if(e.byteLength>yj)throw(0,Tn.default)(new Error("record too large"),ZP);let t=ik(r),n=nk(e),i=await tk(t,n);await bj(i,n)};var E5=X(Hr(),1);var ck="libp2p",uk="autonat",lk="1.0.0";var Be;(function(r){let e;(function(u){u.DIAL="DIAL",u.DIAL_RESPONSE="DIAL_RESPONSE"})(e=r.MessageType||(r.MessageType={}));let t;(function(u){u[u.DIAL=0]="DIAL",u[u.DIAL_RESPONSE=1]="DIAL_RESPONSE"})(t||(t={})),function(u){u.codec=()=>xt(t)}(e=r.MessageType||(r.MessageType={}));let n;(function(u){u.OK="OK",u.E_DIAL_ERROR="E_DIAL_ERROR",u.E_DIAL_REFUSED="E_DIAL_REFUSED",u.E_BAD_REQUEST="E_BAD_REQUEST",u.E_INTERNAL_ERROR="E_INTERNAL_ERROR"})(n=r.ResponseStatus||(r.ResponseStatus={}));let i;(function(u){u[u.OK=0]="OK",u[u.E_DIAL_ERROR=100]="E_DIAL_ERROR",u[u.E_DIAL_REFUSED=101]="E_DIAL_REFUSED",u[u.E_BAD_REQUEST=200]="E_BAD_REQUEST",u[u.E_INTERNAL_ERROR=300]="E_INTERNAL_ERROR"})(i||(i={})),function(u){u.codec=()=>xt(i)}(n=r.ResponseStatus||(r.ResponseStatus={}));let s;(function(u){let l;u.codec=()=>(l==null&&(l=me((f,h,d={})=>{if(d.lengthDelimited!==!1&&h.fork(),f.id!=null&&(h.uint32(10),h.bytes(f.id)),f.addrs!=null)for(let p of f.addrs)h.uint32(18),h.bytes(p);d.lengthDelimited!==!1&&h.ldelim()},(f,h)=>{let d={addrs:[]},p=h==null?f.len:f.pos+h;for(;f.pos<p;){let m=f.uint32();switch(m>>>3){case 1:d.id=f.bytes();break;case 2:d.addrs.push(f.bytes());break;default:f.skipType(m&7);break}}return d})),l),u.encode=f=>pe(f,u.codec()),u.decode=f=>de(f,u.codec())})(s=r.PeerInfo||(r.PeerInfo={}));let o;(function(u){let l;u.codec=()=>(l==null&&(l=me((f,h,d={})=>{d.lengthDelimited!==!1&&h.fork(),f.peer!=null&&(h.uint32(10),r.PeerInfo.codec().encode(f.peer,h)),d.lengthDelimited!==!1&&h.ldelim()},(f,h)=>{let d={},p=h==null?f.len:f.pos+h;for(;f.pos<p;){let m=f.uint32();switch(m>>>3){case 1:d.peer=r.PeerInfo.codec().decode(f,f.uint32());break;default:f.skipType(m&7);break}}return d})),l),u.encode=f=>pe(f,u.codec()),u.decode=f=>de(f,u.codec())})(o=r.Dial||(r.Dial={}));let a;(function(u){let l;u.codec=()=>(l==null&&(l=me((f,h,d={})=>{d.lengthDelimited!==!1&&h.fork(),f.status!=null&&(h.uint32(8),r.ResponseStatus.codec().encode(f.status,h)),f.statusText!=null&&(h.uint32(18),h.string(f.statusText)),f.addr!=null&&(h.uint32(26),h.bytes(f.addr)),d.lengthDelimited!==!1&&h.ldelim()},(f,h)=>{let d={},p=h==null?f.len:f.pos+h;for(;f.pos<p;){let m=f.uint32();switch(m>>>3){case 1:d.status=r.ResponseStatus.codec().decode(f);break;case 2:d.statusText=f.string();break;case 3:d.addr=f.bytes();break;default:f.skipType(m&7);break}}return d})),l),u.encode=f=>pe(f,u.codec()),u.decode=f=>de(f,u.codec())})(a=r.DialResponse||(r.DialResponse={}));let c;r.codec=()=>(c==null&&(c=me((u,l,f={})=>{f.lengthDelimited!==!1&&l.fork(),u.type!=null&&(l.uint32(8),r.MessageType.codec().encode(u.type,l)),u.dial!=null&&(l.uint32(18),r.Dial.codec().encode(u.dial,l)),u.dialResponse!=null&&(l.uint32(26),r.DialResponse.codec().encode(u.dialResponse,l)),f.lengthDelimited!==!1&&l.ldelim()},(u,l)=>{let f={},h=l==null?u.len:u.pos+l;for(;u.pos<h;){let d=u.uint32();switch(d>>>3){case 1:f.type=r.MessageType.codec().decode(u);break;case 2:f.dial=r.Dial.codec().decode(u,u.uint32());break;case 3:f.dialResponse=r.DialResponse.codec().decode(u,u.uint32());break;default:u.skipType(d&7);break}}return f})),c),r.encode=u=>pe(u,r.codec()),r.decode=u=>de(u,r.codec())})(Be||(Be={}));var Je=C("libp2p:autonat"),w5=4,x5=class{components;startupDelay;refreshInterval;protocol;timeout;maxInboundStreams;maxOutboundStreams;verifyAddressTimeout;started;constructor(e,t){this.components=e,this.started=!1,this.protocol=`/${t.protocolPrefix??ck}/${uk}/${lk}`,this.timeout=t.timeout??3e4,this.maxInboundStreams=t.maxInboundStreams??1,this.maxOutboundStreams=t.maxOutboundStreams??1,this.startupDelay=t.startupDelay??5e3,this.refreshInterval=t.refreshInterval??6e4,this._verifyExternalAddresses=this._verifyExternalAddresses.bind(this)}isStarted(){return this.started}async start(){this.started||(await this.components.registrar.handle(this.protocol,e=>{this.handleIncomingAutonatStream(e).catch(t=>{Je.error("error handling incoming autonat stream",t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}),this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.startupDelay),this.started=!0)}async stop(){await this.components.registrar.unhandle(this.protocol),clearTimeout(this.verifyAddressTimeout),this.started=!1}async handleIncomingAutonatStream(e){let t=jt([AbortSignal.timeout(this.timeout)]);try{(0,E5.setMaxListeners)?.(1/0,t)}catch{}let n=this.components.addressManager.getAddresses().map(i=>i.toOptions().host);try{let i=xi(e.stream,t),s=this;await Me(i,o=>Gt(o),async function*(o){let a=await Rs(o);if(a==null){Je("no message received"),yield Be.encode({type:Be.MessageType.DIAL_RESPONSE,dialResponse:{status:Be.ResponseStatus.E_BAD_REQUEST,statusText:"No message was sent"}});return}let c;try{c=Be.decode(a)}catch(m){Je.error("could not decode message",m),yield Be.encode({type:Be.MessageType.DIAL_RESPONSE,dialResponse:{status:Be.ResponseStatus.E_BAD_REQUEST,statusText:"Could not decode message"}});return}let u=c.dial;if(u==null){Je.error("dial was missing from message"),yield Be.encode({type:Be.MessageType.DIAL_RESPONSE,dialResponse:{status:Be.ResponseStatus.E_BAD_REQUEST,statusText:"No Dial message found in message"}});return}let l,f=u.peer;if(f==null||f.id==null){Je.error("PeerId missing from message"),yield Be.encode({type:Be.MessageType.DIAL_RESPONSE,dialResponse:{status:Be.ResponseStatus.E_BAD_REQUEST,statusText:"missing peer info"}});return}try{l=Nt(f.id)}catch(m){Je.error("invalid PeerId",m),yield Be.encode({type:Be.MessageType.DIAL_RESPONSE,dialResponse:{status:Be.ResponseStatus.E_BAD_REQUEST,statusText:"bad peer id"}});return}if(Je("incoming request from %p",l),!e.connection.remotePeer.equals(l)){Je("target peer %p did not equal sending peer %p",l,e.connection.remotePeer),yield Be.encode({type:Be.MessageType.DIAL_RESPONSE,dialResponse:{status:Be.ResponseStatus.E_BAD_REQUEST,statusText:"peer id mismatch"}});return}let h=f.addrs.map(m=>ye(m)).filter(m=>{let g=m.toOptions().host===e.connection.remoteAddr.toOptions().host;return Je.trace("request to dial %a was sent from %a is same host %s",m,e.connection.remoteAddr,g),g}).filter(m=>{let g=m.toOptions().host,y=!(Vn(g)??!1);return Je.trace("host %s was public %s",g,y),y}).filter(m=>{let g=m.toOptions().host,y=!n.includes(g);return Je.trace("host %s was not our host %s",g,y),y}).filter(m=>{let g=!!s.components.transportManager.transportForMultiaddr(m);return Je.trace("transport for %a is supported %s",m,g),g}).map(m=>(m.getPeerId()==null&&(m=m.encapsulate(`/p2p/${l.toString()}`)),m));if(h.length===0){Je("no valid multiaddrs for %p in message",l),yield Be.encode({type:Be.MessageType.DIAL_RESPONSE,dialResponse:{status:Be.ResponseStatus.E_DIAL_REFUSED,statusText:"no dialable addresses"}});return}Je("dial multiaddrs %s for peer %p",h.map(m=>m.toString()).join(", "),l);let d="",p=h[0];for await(let m of h){let g;p=m;try{if(g=await s.components.connectionManager.openConnection(m,{signal:t}),!g.remoteAddr.equals(m))throw Je.error("tried to dial %a but dialed %a",m,g.remoteAddr),new Error("Unexpected remote address");Je("Success %p",l),yield Be.encode({type:Be.MessageType.DIAL_RESPONSE,dialResponse:{status:Be.ResponseStatus.OK,addr:g.remoteAddr.decapsulateCode(le("p2p").code).bytes}});return}catch(y){Je("could not dial %p",l,y),d=y.message}finally{g!=null&&await g.close()}}yield Be.encode({type:Be.MessageType.DIAL_RESPONSE,dialResponse:{status:Be.ResponseStatus.E_DIAL_ERROR,statusText:d,addr:p.bytes}})},o=>Ft(o),e.stream)}catch(i){Je.error("error handling incoming autonat stream",i)}finally{t.clear()}}_verifyExternalAddresses(){this.verifyExternalAddresses().catch(e=>{Je.error("error verifying external address",e)})}async verifyExternalAddresses(){if(clearTimeout(this.verifyAddressTimeout),!this.isStarted())return;let e=this.components.addressManager,t=e.getObservedAddrs().filter(s=>{let o=s.toOptions();return!(Vn(o.host)??!1)});if(t.length===0){Je("no public addresses found, not requesting verification"),this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.refreshInterval);return}let n=AbortSignal.timeout(this.timeout);try{(0,E5.setMaxListeners)?.(1/0,n)}catch{}let i=this;try{Je("verify multiaddrs %s",t.map(f=>f.toString()).join(", "));let s=Be.encode({type:Be.MessageType.DIAL,dial:{peer:{id:this.components.peerId.toBytes(),addrs:t.map(f=>f.bytes)}}}),a=(await wd()).toBytes(),c={},u=[],l=async f=>{try{Je("asking %p to verify multiaddr",f.id);let h=await i.components.connectionManager.openConnection(f.id,{signal:n}),d=await h.newStream(this.protocol,{signal:n}),p=xi(d,n),m=await Me([s],y=>Ft(y),p,y=>Gt(y),async y=>Rs(y));if(m==null){Je("no response received from %p",h.remotePeer);return}let g=Be.decode(m);if(g.type!==Be.MessageType.DIAL_RESPONSE||g.dialResponse==null){Je("invalid autonat response from %p",h.remotePeer);return}if(g.dialResponse.status===Be.ResponseStatus.OK){let y=h.remoteAddr.toOptions(),b;if(y.family===4)b=y.host.split(".")[0];else if(y.family===6)b=y.host.split(":")[0];else{Je('remote address "%s" was not IP4 or IP6?',y.host);return}if(u.includes(b)){Je("already have response from network segment %d - %s",b,y.host);return}u.push(b)}return g.dialResponse}catch(h){Je.error("error asking remote to verify multiaddr",h)}};for await(let f of La(ri(this.components.peerRouting.getClosestPeers(a,{signal:n}),h=>async()=>l(h)),{concurrency:w5}))try{if(f==null)continue;let h=f.addr==null?t[0]:ye(f.addr);if(Je("autonat response for %a is %s",h,f.status),f.status===Be.ResponseStatus.E_BAD_REQUEST||f.status===Be.ResponseStatus.E_DIAL_REFUSED||f.addr==null&&t.length>1)continue;if(!t.some(p=>p.equals(h))){Je("peer reported %a as %s but it was not in our observed address list",h,f.status);continue}let d=h.toString();if(c[d]==null&&(c[d]={success:0,failure:0}),f.status===Be.ResponseStatus.OK?c[d].success++:f.status===Be.ResponseStatus.E_DIAL_ERROR&&c[d].failure++,c[d].success===w5){Je("%a is externally dialable",h),e.confirmObservedAddr(h);return}if(c[d].failure===w5){Je("%a is not externally dialable",h),e.removeObservedAddr(h);return}}catch(h){Je.error("could not verify external address",h)}}finally{this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.refreshInterval)}}};function fk(r={}){return e=>new x5(e,r)}var Cj=X(Hr(),1);var v5="/libp2p/relay";var hk="circuit-relay-relay";var dk=BigInt(131072),Vo="/libp2p/circuit/relay/0.2.0/hop",i2="/libp2p/circuit/relay/0.2.0/stop",Rj=30*1e3,Ij=30*1e3;var Us;(function(r){let e;(function(i){i.RESERVE="RESERVE",i.CONNECT="CONNECT",i.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(i){i[i.RESERVE=0]="RESERVE",i[i.CONNECT=1]="CONNECT",i[i.STATUS=2]="STATUS"})(t||(t={})),function(i){i.codec=()=>xt(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=me((i,s,o={})=>{o.lengthDelimited!==!1&&s.fork(),i.type!=null&&(s.uint32(8),r.Type.codec().encode(i.type,s)),i.peer!=null&&(s.uint32(18),el.codec().encode(i.peer,s)),i.reservation!=null&&(s.uint32(26),s2.codec().encode(i.reservation,s)),i.limit!=null&&(s.uint32(34),tl.codec().encode(i.limit,s)),i.status!=null&&(s.uint32(40),er.codec().encode(i.status,s)),o.lengthDelimited!==!1&&s.ldelim()},(i,s)=>{let o={},a=s==null?i.len:i.pos+s;for(;i.pos<a;){let c=i.uint32();switch(c>>>3){case 1:o.type=r.Type.codec().decode(i);break;case 2:o.peer=el.codec().decode(i,i.uint32());break;case 3:o.reservation=s2.codec().decode(i,i.uint32());break;case 4:o.limit=tl.codec().decode(i,i.uint32());break;case 5:o.status=er.codec().decode(i);break;default:i.skipType(c&7);break}}return o})),n),r.encode=i=>pe(i,r.codec()),r.decode=i=>de(i,r.codec())})(Us||(Us={}));var Pi;(function(r){let e;(function(i){i.CONNECT="CONNECT",i.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(i){i[i.CONNECT=0]="CONNECT",i[i.STATUS=1]="STATUS"})(t||(t={})),function(i){i.codec=()=>xt(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=me((i,s,o={})=>{o.lengthDelimited!==!1&&s.fork(),i.type!=null&&(s.uint32(8),r.Type.codec().encode(i.type,s)),i.peer!=null&&(s.uint32(18),el.codec().encode(i.peer,s)),i.limit!=null&&(s.uint32(26),tl.codec().encode(i.limit,s)),i.status!=null&&(s.uint32(32),er.codec().encode(i.status,s)),o.lengthDelimited!==!1&&s.ldelim()},(i,s)=>{let o={},a=s==null?i.len:i.pos+s;for(;i.pos<a;){let c=i.uint32();switch(c>>>3){case 1:o.type=r.Type.codec().decode(i);break;case 2:o.peer=el.codec().decode(i,i.uint32());break;case 3:o.limit=tl.codec().decode(i,i.uint32());break;case 4:o.status=er.codec().decode(i);break;default:i.skipType(c&7);break}}return o})),n),r.encode=i=>pe(i,r.codec()),r.decode=i=>de(i,r.codec())})(Pi||(Pi={}));var el;(function(r){let e;r.codec=()=>(e==null&&(e=me((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.addrs!=null)for(let s of t.addrs)n.uint32(18),n.bytes(s);i.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let i={id:new Uint8Array(0),addrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let o=t.uint32();switch(o>>>3){case 1:i.id=t.bytes();break;case 2:i.addrs.push(t.bytes());break;default:t.skipType(o&7);break}}return i})),e),r.encode=t=>pe(t,r.codec()),r.decode=t=>de(t,r.codec())})(el||(el={}));var s2;(function(r){let e;r.codec=()=>(e==null&&(e=me((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.expire!=null&&t.expire!==0n&&(n.uint32(8),n.uint64(t.expire)),t.addrs!=null)for(let s of t.addrs)n.uint32(18),n.bytes(s);t.voucher!=null&&(n.uint32(26),n.bytes(t.voucher)),i.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let i={expire:0n,addrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let o=t.uint32();switch(o>>>3){case 1:i.expire=t.uint64();break;case 2:i.addrs.push(t.bytes());break;case 3:i.voucher=t.bytes();break;default:t.skipType(o&7);break}}return i})),e),r.encode=t=>pe(t,r.codec()),r.decode=t=>de(t,r.codec())})(s2||(s2={}));var tl;(function(r){let e;r.codec=()=>(e==null&&(e=me((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.duration!=null&&(n.uint32(8),n.uint32(t.duration)),t.data!=null&&(n.uint32(16),n.uint64(t.data)),i.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let i={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let o=t.uint32();switch(o>>>3){case 1:i.duration=t.uint32();break;case 2:i.data=t.uint64();break;default:t.skipType(o&7);break}}return i})),e),r.encode=t=>pe(t,r.codec()),r.decode=t=>de(t,r.codec())})(tl||(tl={}));var er;(function(r){r.UNUSED="UNUSED",r.OK="OK",r.RESERVATION_REFUSED="RESERVATION_REFUSED",r.RESOURCE_LIMIT_EXCEEDED="RESOURCE_LIMIT_EXCEEDED",r.PERMISSION_DENIED="PERMISSION_DENIED",r.CONNECTION_FAILED="CONNECTION_FAILED",r.NO_RESERVATION="NO_RESERVATION",r.MALFORMED_MESSAGE="MALFORMED_MESSAGE",r.UNEXPECTED_MESSAGE="UNEXPECTED_MESSAGE"})(er||(er={}));var _5;(function(r){r[r.UNUSED=0]="UNUSED",r[r.OK=100]="OK",r[r.RESERVATION_REFUSED=200]="RESERVATION_REFUSED",r[r.RESOURCE_LIMIT_EXCEEDED=201]="RESOURCE_LIMIT_EXCEEDED",r[r.PERMISSION_DENIED=202]="PERMISSION_DENIED",r[r.CONNECTION_FAILED=203]="CONNECTION_FAILED",r[r.NO_RESERVATION=204]="NO_RESERVATION",r[r.MALFORMED_MESSAGE=400]="MALFORMED_MESSAGE",r[r.UNEXPECTED_MESSAGE=401]="UNEXPECTED_MESSAGE"})(_5||(_5={}));(function(r){r.codec=()=>xt(_5)})(er||(er={}));var S5;(function(r){let e;r.codec=()=>(e==null&&(e=me((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.relay!=null&&t.relay.byteLength>0&&(n.uint32(10),n.bytes(t.relay)),t.peer!=null&&t.peer.byteLength>0&&(n.uint32(18),n.bytes(t.peer)),t.expiration!=null&&t.expiration!==0n&&(n.uint32(24),n.uint64(t.expiration)),i.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let i={relay:new Uint8Array(0),peer:new Uint8Array(0),expiration:0n},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let o=t.uint32();switch(o>>>3){case 1:i.relay=t.bytes();break;case 2:i.peer=t.bytes();break;case 3:i.expiration=t.uint64();break;default:t.skipType(o&7);break}}return i})),e),r.encode=t=>pe(t,r.codec()),r.decode=t=>de(t,r.codec())})(S5||(S5={}));var vRe=C("libp2p:circuit-relay:utils");async function R5(r){let e=new TextEncoder().encode(r),t=await Ke.digest(e);return Ne.createV0(t)}function I5(r){let e=r*BigInt(1e3),t=new Date().getTime();return Number(e-BigInt(t))}var Dj=X(bk(),1);var ORe=C("libp2p:circuit-relay:advert-service");var fIe=C("libp2p:circuit-relay:server");var Pj=C("libp2p:stream:converter");function A5(r){let{stream:e,remoteAddr:t}=r,{sink:n,source:i}=e,s=async function*(){for await(let c of i)c instanceof Uint8Array?yield c:yield*c}(),o={async sink(c){try{await n(c),a()}catch(u){u.type!=="aborted"&&Pj(u)}},source:s,remoteAddr:t,timeline:{open:Date.now(),close:void 0},async close(c){a(),await e.close(c)},abort(c){a(),e.abort(c)}};function a(){o.timeline.close==null&&(o.timeline.close=Date.now())}return o}var zo=C("libp2p:circuit-relay:discover-relays"),o2=class extends Ye{peerId;peerStore;contentRouting;registrar;started;topologyId;constructor(e){super(),this.started=!1,this.peerId=e.peerId,this.peerStore=e.peerStore,this.contentRouting=e.contentRouting,this.registrar=e.registrar}isStarted(){return this.started}async start(){this.topologyId=await this.registrar.register(Vo,{onConnect:e=>{this.safeDispatchEvent("relay:discover",{detail:e})}}),this.discover().catch(e=>{zo.error("error listening on relays",e)}),this.started=!0}stop(){this.topologyId!=null&&this.registrar.unregister(this.topologyId),this.started=!1}async discover(){zo("searching peer store for relays");let e=await this.peerStore.all({filters:[t=>t.protocols.includes(Vo)],orders:[()=>Math.random()<.5?1:-1]});for(let t of e)zo("found relay peer %p in content peer store",t.id),this.safeDispatchEvent("relay:discover",{detail:t.id});zo("found %d relay peers in peer store",e.length);try{zo("searching content routing for relays");let t=await R5(v5),n=0;for await(let i of this.contentRouting.findProviders(t))if(i.multiaddrs.length>0&&!i.id.equals(this.peerId)){let s=i.id;n++,await this.peerStore.merge(s,{multiaddrs:i.multiaddrs}),zo("found relay peer %p in content routing",s),this.safeDispatchEvent("relay:discover",{detail:s})}zo("found %d relay peers in content routing",n)}catch(t){zo.error("failed when finding relays on the network",t)}}};var T5=C("libp2p:circuit-relay:transport:listener"),D5=class extends Ye{connectionManager;relayStore;listeningAddrs;constructor(e){super(),this.connectionManager=e.connectionManager,this.relayStore=e.relayStore,this.listeningAddrs=new Ar,this.relayStore.addEventListener("relay:removed",t=>{this.#e(t.detail)})}async listen(e){T5("listen on %a",e);let t=e.getPeerId(),n;if(t!=null){let s=we(t),o=this.connectionManager.getConnectionsMap().get(s)??[];o.length>0&&(n=o[0])}if(n==null){let s=e.toString().split("/p2p-circuit").find(a=>a!==""),o=ye(s);n=await this.connectionManager.openConnection(o)}if(!this.relayStore.hasReservation(n.remotePeer)){await this.relayStore.addRelay(n.remotePeer,"configured");return}let i=this.relayStore.getReservation(n.remotePeer);if(i==null)throw new E("Did not have reservation after making reservation","ERR_NO_RESERVATION");if(this.listeningAddrs.has(n.remotePeer)){T5("already listening on relay %p",n.remotePeer);return}this.listeningAddrs.set(n.remotePeer,i.addrs.map(s=>ye(s).encapsulate("/p2p-circuit"))),this.safeDispatchEvent("listening",{})}getAddrs(){return[...this.listeningAddrs.values()].flat()}async close(){}#e(e){let t=this.listeningAddrs.has(e);T5("relay peer removed %p - had reservation",e,t),this.listeningAddrs.delete(e),t&&this.safeDispatchEvent("close",{})}};function Ek(r){return new D5(r)}var qr=C("libp2p:circuit-relay:transport:reservation-store"),Nj=60*1e3*10,Bj=60*1e3*5,Oj=30*1e3,a2=class extends Ye{peerId;connectionManager;transportManager;peerStore;events;reserveQueue;reservations;maxDiscoveredRelays;maxReservationQueueLength;reservationCompletionTimeout;started;constructor(e,t){super(),this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.peerStore=e.peerStore,this.events=e.events,this.reservations=new Ar,this.maxDiscoveredRelays=t?.discoverRelays??0,this.maxReservationQueueLength=t?.maxReservationQueueLength??100,this.reservationCompletionTimeout=t?.reservationCompletionTimeout??1e4,this.started=!1,this.reserveQueue=new Yc({concurrency:t?.reservationConcurrency??1}),this.events.addEventListener("peer:disconnect",n=>{this.#t(n.detail)})}isStarted(){return this.started}async start(){this.started=!0}async stop(){this.reserveQueue.clear(),this.reservations.forEach(({timeout:e})=>{clearTimeout(e)}),this.reservations.clear(),this.started=!1}async addRelay(e,t){if(this.peerId.equals(e)){qr("not trying to use self as relay");return}if(this.reserveQueue.size>this.maxReservationQueueLength){qr("not adding relay as the queue is full");return}if(this.reserveQueue.hasJob(e)){qr("relay peer is already in the reservation queue");return}qr("add relay %p",e),await this.reserveQueue.add(async()=>{try{let n=this.reservations.get(e);if(n!=null){if(I5(n.reservation.expire)>Nj){qr("already have reservation on relay peer %p and it expires in more than 10 minutes",e);return}clearTimeout(n.timeout),this.reservations.delete(e)}if(t==="discovered"&&[...this.reservations.values()].reduce((l,f)=>(f.type==="discovered"&&l++,l),0)>=this.maxDiscoveredRelays){qr("already have enough discovered relays");return}let i=AbortSignal.timeout(this.reservationCompletionTimeout),s=await this.connectionManager.openConnection(e,{signal:i});if(s.remoteAddr.protoNames().includes("p2p-circuit")){qr("not creating reservation over relayed connection");return}let o=await this.#e(s,{signal:i});qr("created reservation on relay peer %p",e);let a=I5(o.expire),c=Math.min(Math.max(a-Bj,Oj),Math.pow(2,31)-1),u=setTimeout(()=>{this.addRelay(e,t).catch(l=>{qr.error("could not refresh reservation to relay %p",e,l)})},c);this.reservations.set(e,{timeout:u,reservation:o,type:t}),await this.peerStore.merge(e,{tags:{[hk]:{value:1,ttl:a}}}),await this.transportManager.listen([ye(`/p2p/${e.toString()}/p2p-circuit`)])}catch(n){qr.error("could not reserve slot on %p",e,n);let i=this.reservations.get(e);i!=null&&clearTimeout(i.timeout),this.reservations.delete(e)}},{peerId:e})}hasReservation(e){return this.reservations.has(e)}getReservation(e){return this.reservations.get(e)?.reservation}async#e(e,t){t.signal?.throwIfAborted(),qr("requesting reservation from %p",e.remotePeer);let n=await e.newStream(Vo),s=Xr(n).pb(Us);await s.write({type:Us.Type.RESERVE},t);let o;try{o=await s.read(t)}catch(c){throw qr.error("error parsing reserve message response from %p because",e.remotePeer,c),c}finally{await n.close()}if(o.status===er.OK&&o.reservation!=null)return o.reservation;let a=`reservation failed with status ${o.status??"undefined"}`;throw qr.error(a),new Error(a)}#t(e){let t=this.reservations.get(e);t!=null&&(qr("connection to relay %p closed, removing reservation from local store",e),clearTimeout(t.timeout),this.reservations.delete(e),this.safeDispatchEvent("relay:removed",{detail:e}),this.reservations.size<this.maxDiscoveredRelays&&(qr("not enough relays %d/%d",this.reservations.size,this.maxDiscoveredRelays),this.safeDispatchEvent("relay:not-enough-relays",{})))}};var Dr=C("libp2p:circuit-relay:transport"),Lj=r=>{if(r.peer==null)return!1;try{r.peer.addrs.forEach(ye)}catch{return!1}return!0},C5={maxInboundStopStreams:po,maxOutboundStopStreams:po,stopTimeout:3e4},P5=class{discovery;registrar;peerStore;connectionManager;peerId;upgrader;addressManager;connectionGater;reservationStore;maxInboundStopStreams;maxOutboundStopStreams;stopTimeout;started;constructor(e,t){this.registrar=e.registrar,this.peerStore=e.peerStore,this.connectionManager=e.connectionManager,this.peerId=e.peerId,this.upgrader=e.upgrader,this.addressManager=e.addressManager,this.connectionGater=e.connectionGater,this.maxInboundStopStreams=t.maxInboundStopStreams??C5.maxInboundStopStreams,this.maxOutboundStopStreams=t.maxOutboundStopStreams??C5.maxOutboundStopStreams,this.stopTimeout=t.stopTimeout??C5.stopTimeout,t.discoverRelays!=null&&t.discoverRelays>0&&(this.discovery=new o2(e),this.discovery.addEventListener("relay:discover",n=>{this.reservationStore.addRelay(n.detail,"discovered").catch(i=>{Dr.error("could not add discovered relay %p",n.detail,i)})})),this.reservationStore=new a2(e,t),this.reservationStore.addEventListener("relay:not-enough-relays",()=>{this.discovery?.discover().catch(n=>{Dr.error("could not discover relays",n)})}),this.started=!1}isStarted(){return this.started}async start(){await this.reservationStore.start(),await this.discovery?.start(),await this.registrar.handle(i2,e=>{this.onStop(e).catch(t=>{Dr.error("error while handling STOP protocol",t),e.stream.abort(t)})},{maxInboundStreams:this.maxInboundStopStreams,maxOutboundStreams:this.maxOutboundStopStreams,runOnTransientConnection:!0}),this.started=!0}async stop(){this.discovery?.stop(),await this.reservationStore.stop(),await this.registrar.unhandle(i2),this.started=!1}[Wi]=!0;[Symbol.toStringTag]="libp2p/circuit-relay-v2";async dial(e,t={}){if(e.protoCodes().filter(p=>p===290).length!==1){let p="Invalid circuit relay address";throw Dr.error(p,e),new E(p,j.ERR_RELAYED_DIAL)}let n=e.toString().split("/p2p-circuit"),i=ye(n[0]),s=ye(n[n.length-1]),o=i.getPeerId(),a=s.getPeerId();if(o==null||a==null){let p=`Circuit relay dial to ${e.toString()} failed as address did not have peer ids`;throw Dr.error(p),new E(p,j.ERR_RELAYED_DIAL)}let c=we(o),u=we(a),l=!1,h=this.connectionManager.getConnections(c)[0];h==null&&(await this.peerStore.merge(c,{multiaddrs:[i]}),h=await this.connectionManager.openConnection(c,t),l=!0);let d;try{return d=await h.newStream([Vo]),await this.connectV2({stream:d,connection:h,destinationPeer:u,destinationAddr:s,relayAddr:i,ma:e,disconnectOnFailure:l})}catch(p){throw Dr.error(`Circuit relay dial to destination ${u.toString()} via relay ${c.toString()} failed`,p),d?.abort(p),l&&await h.close(),p}}async connectV2({stream:e,connection:t,destinationPeer:n,destinationAddr:i,relayAddr:s,ma:o,disconnectOnFailure:a}){try{let c=Xr(e),u=c.pb(Us);await u.write({type:Us.Type.CONNECT,peer:{id:n.toBytes(),addrs:[ye(i).bytes]}});let l=await u.read();if(l.status!==er.OK)throw new E(`failed to connect via relay with status ${l?.status?.toString()??"undefined"}`,j.ERR_HOP_REQUEST_FAILED);let f=A5({stream:c.unwrap(),remoteAddr:o,localAddr:s.encapsulate(`/p2p-circuit/p2p/${this.peerId.toString()}`)});return Dr("new outbound transient connection %a",f.remoteAddr),await this.upgrader.upgradeOutbound(f,{transient:!0})}catch(c){throw Dr.error(`Circuit relay dial to destination ${n.toString()} via relay ${t.remotePeer.toString()} failed`,c),a&&await t.close(),c}}createListener(e){return Ek({connectionManager:this.connectionManager,relayStore:this.reservationStore})}filter(e){return e=Array.isArray(e)?e:[e],e.filter(t=>_i.matches(t))}async onStop({connection:e,stream:t}){let n=AbortSignal.timeout(this.stopTimeout),i=Xr(t).pb(Pi),s=await i.read({signal:n});if(Dr("new circuit relay v2 stop stream from %p with type %s",e.remotePeer,s.type),s?.type===void 0){Dr.error("type was missing from circuit v2 stop protocol request from %s",e.remotePeer),await i.write({type:Pi.Type.STATUS,status:er.MALFORMED_MESSAGE},{signal:n}),await t.close();return}if(s.type!==Pi.Type.CONNECT){Dr.error("invalid stop connect request via peer %p",e.remotePeer),await i.write({type:Pi.Type.STATUS,status:er.UNEXPECTED_MESSAGE},{signal:n}),await t.close();return}if(!Lj(s)){Dr.error("invalid stop connect request via peer %p",e.remotePeer),await i.write({type:Pi.Type.STATUS,status:er.MALFORMED_MESSAGE},{signal:n}),await t.close();return}let o=Nt(s.peer.id);if(await this.connectionGater.denyInboundRelayedConnection?.(e.remotePeer,o)===!0){Dr.error("connection gater denied inbound relayed connection from %p",e.remotePeer),await i.write({type:Pi.Type.STATUS,status:er.PERMISSION_DENIED},{signal:n}),await t.close();return}Dr.trace("sending success response to %p",e.remotePeer),await i.write({type:Pi.Type.STATUS,status:er.OK},{signal:n});let a=e.remoteAddr.encapsulate(`/p2p-circuit/p2p/${o.toString()}`),c=this.addressManager.getAddresses()[0],u=A5({stream:i.unwrap().unwrap(),remoteAddr:a,localAddr:c});Dr("new inbound transient connection %a",u.remoteAddr),await this.upgrader.upgradeInbound(u,{transient:!0}),Dr("%s connection %a upgraded","inbound",u.remoteAddr)}};function k5(r={}){return e=>new P5(e,r)}var xk="0.46.5";var N5=`js-libp2p/${xk}`;var vk="0.1.0",_k="id",Sk="id/push",Rk="1.0.0",Ik="1.0.0";var O5=X(Hr(),1);var $o;(function(r){let e;r.codec=()=>(e==null&&(e=me((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.protocolVersion!=null&&(n.uint32(42),n.string(t.protocolVersion)),t.agentVersion!=null&&(n.uint32(50),n.string(t.agentVersion)),t.publicKey!=null&&(n.uint32(10),n.bytes(t.publicKey)),t.listenAddrs!=null)for(let s of t.listenAddrs)n.uint32(18),n.bytes(s);if(t.observedAddr!=null&&(n.uint32(34),n.bytes(t.observedAddr)),t.protocols!=null)for(let s of t.protocols)n.uint32(26),n.string(s);t.signedPeerRecord!=null&&(n.uint32(66),n.bytes(t.signedPeerRecord)),i.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let i={listenAddrs:[],protocols:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let o=t.uint32();switch(o>>>3){case 5:i.protocolVersion=t.string();break;case 6:i.agentVersion=t.string();break;case 1:i.publicKey=t.bytes();break;case 2:i.listenAddrs.push(t.bytes());break;case 4:i.observedAddr=t.bytes();break;case 3:i.protocols.push(t.string());break;case 8:i.signedPeerRecord=t.bytes();break;default:t.skipType(o&7);break}}return i})),e),r.encode=t=>pe(t,r.codec()),r.decode=t=>de(t,r.codec())})($o||($o={}));var Cr=C("libp2p:identify"),B5=1024*8,Dn={protocolPrefix:"ipfs",agentVersion:N5,timeout:6e4,maxInboundStreams:1,maxOutboundStreams:1,maxPushIncomingStreams:1,maxPushOutgoingStreams:1,maxObservedAddresses:10,maxIdentifyMessageSize:8192,runOnConnectionOpen:!0,runOnTransientConnection:!0},c2=class{identifyProtocolStr;identifyPushProtocolStr;host;started;timeout;peerId;peerStore;registrar;connectionManager;addressManager;maxInboundStreams;maxOutboundStreams;maxPushIncomingStreams;maxPushOutgoingStreams;maxIdentifyMessageSize;maxObservedAddresses;events;runOnTransientConnection;constructor(e,t){this.started=!1,this.peerId=e.peerId,this.peerStore=e.peerStore,this.registrar=e.registrar,this.addressManager=e.addressManager,this.connectionManager=e.connectionManager,this.events=e.events,this.identifyProtocolStr=`/${t.protocolPrefix??Dn.protocolPrefix}/${_k}/${Rk}`,this.identifyPushProtocolStr=`/${t.protocolPrefix??Dn.protocolPrefix}/${Sk}/${Ik}`,this.timeout=t.timeout??Dn.timeout,this.maxInboundStreams=t.maxInboundStreams??Dn.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??Dn.maxOutboundStreams,this.maxPushIncomingStreams=t.maxPushIncomingStreams??Dn.maxPushIncomingStreams,this.maxPushOutgoingStreams=t.maxPushOutgoingStreams??Dn.maxPushOutgoingStreams,this.maxIdentifyMessageSize=t.maxIdentifyMessageSize??Dn.maxIdentifyMessageSize,this.maxObservedAddresses=t.maxObservedAddresses??Dn.maxObservedAddresses,this.runOnTransientConnection=t.runOnTransientConnection??Dn.runOnTransientConnection,this.host={protocolVersion:`${t.protocolPrefix??Dn.protocolPrefix}/${vk}`,agentVersion:t.agentVersion??Dn.agentVersion},(t.runOnConnectionOpen??Dn.runOnConnectionOpen)&&e.events.addEventListener("connection:open",n=>{let i=n.detail;this.identify(i).catch(s=>{Cr.error("error during identify trigged by connection:open",s)})}),e.events.addEventListener("self:peer:update",n=>{this.push().catch(i=>{Cr.error(i)})}),this.host.agentVersion===N5&&(bD||gD?this.host.agentVersion+=` UserAgent=${globalThis.process.version}`:(Ip||Ap||yD||wD)&&(this.host.agentVersion+=` UserAgent=${globalThis.navigator.userAgent}`))}isStarted(){return this.started}async start(){this.started||(await this.peerStore.merge(this.peerId,{metadata:{AgentVersion:G(this.host.agentVersion),ProtocolVersion:G(this.host.protocolVersion)}}),await this.registrar.handle(this.identifyProtocolStr,e=>{this._handleIdentify(e).catch(t=>{Cr.error(t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:this.runOnTransientConnection}),await this.registrar.handle(this.identifyPushProtocolStr,e=>{this._handlePush(e).catch(t=>{Cr.error(t)})},{maxInboundStreams:this.maxPushIncomingStreams,maxOutboundStreams:this.maxPushOutgoingStreams,runOnTransientConnection:this.runOnTransientConnection}),this.started=!0)}async stop(){await this.registrar.unhandle(this.identifyProtocolStr),await this.registrar.unhandle(this.identifyPushProtocolStr),this.started=!1}async pushToConnections(e){let t=this.addressManager.getAddresses().map(l=>l.decapsulateCode(le("p2p").code)),n=new hn({peerId:this.peerId,multiaddrs:t}),i=await qn.seal(n,this.peerId),s=this.registrar.getProtocols(),o=await this.peerStore.get(this.peerId),a=U(o.metadata.get("AgentVersion")??G(this.host.agentVersion)),c=U(o.metadata.get("ProtocolVersion")??G(this.host.protocolVersion)),u=e.map(async l=>{let f,h=AbortSignal.timeout(this.timeout);try{(0,O5.setMaxListeners)?.(1/0,h)}catch{}try{f=await l.newStream([this.identifyPushProtocolStr],{signal:h,runOnTransientConnection:this.runOnTransientConnection}),await Xr(f,{maxDataLength:this.maxIdentifyMessageSize??B5}).pb($o).write({listenAddrs:t.map(p=>p.bytes),signedPeerRecord:i.marshal(),protocols:s,agentVersion:a,protocolVersion:c},{signal:h}),await f.close({signal:h})}catch(d){Cr.error("could not push identify update to peer",d),f?.abort(d)}});await Promise.all(u)}async push(){if(!this.isStarted())return;let e=[];await Promise.all(this.connectionManager.getConnections().map(async t=>{try{if(!(await this.peerStore.get(t.remotePeer)).protocols.includes(this.identifyPushProtocolStr))return;e.push(t)}catch(n){if(n.code!==j.ERR_NOT_FOUND)throw n}})),await this.pushToConnections(e)}async _identify(e,t={}){let n;t.signal=t.signal??AbortSignal.timeout(this.timeout);try{n=await e.newStream([this.identifyProtocolStr],{...t,runOnTransientConnection:this.runOnTransientConnection});let s=await Xr(n,{maxDataLength:this.maxIdentifyMessageSize??B5}).pb($o).read(t);return await n.close(t),s}catch(i){throw Cr.error("error while reading identify message",i),n?.abort(i),i}}async identify(e,t={}){let n=await this._identify(e,t),{publicKey:i,protocols:s,observedAddr:o}=n;if(i==null)throw new E("public key was missing from identify message",j.ERR_MISSING_PUBLIC_KEY);let a=await Wr(i);if(!e.remotePeer.equals(a))throw new E("identified peer does not match the expected peer",j.ERR_INVALID_PEER);if(this.peerId.equals(a))throw new E("identified peer is our own peer id?",j.ERR_INVALID_PEER);let c=Mj(o);Cr("identify completed for peer %p and protocols %o",a,s),Cr("our observed address is %a",c),c!=null&&this.addressManager.getObservedAddrs().length<(this.maxObservedAddresses??1/0)&&(Cr("storing our observed address %a",c),this.addressManager.addObservedAddr(c));let u=await this.#e(e.remotePeer,n),l={peerId:a,protocolVersion:n.protocolVersion,agentVersion:n.agentVersion,publicKey:n.publicKey,listenAddrs:n.listenAddrs.map(f=>ye(f)),observedAddr:n.observedAddr==null?void 0:ye(n.observedAddr),protocols:n.protocols,signedPeerRecord:u};return this.events.safeDispatchEvent("peer:identify",{detail:l}),l}async _handleIdentify(e){let{connection:t,stream:n}=e,i=AbortSignal.timeout(this.timeout);try{(0,O5.setMaxListeners)?.(1/0,i)}catch{}try{let s=this.peerId.publicKey??new Uint8Array(0),o=await this.peerStore.get(this.peerId),a=this.addressManager.getAddresses().map(l=>l.decapsulateCode(le("p2p").code)),c=o.peerRecordEnvelope;if(a.length>0&&c==null){let l=new hn({peerId:this.peerId,multiaddrs:a});c=(await qn.seal(l,this.peerId)).marshal().subarray()}await Xr(n).pb($o).write({protocolVersion:this.host.protocolVersion,agentVersion:this.host.agentVersion,publicKey:s,listenAddrs:a.map(l=>l.bytes),signedPeerRecord:c,observedAddr:t.remoteAddr.bytes,protocols:o.protocols},{signal:i}),await n.close({signal:i})}catch(s){Cr.error("could not respond to identify request",s),n.abort(s)}}async _handlePush(e){let{connection:t,stream:n}=e;try{if(this.peerId.equals(t.remotePeer))throw new Error("received push from ourselves?");let i={signal:AbortSignal.timeout(this.timeout)},o=await Xr(n,{maxDataLength:this.maxIdentifyMessageSize??B5}).pb($o).read(i);await n.close(i),await this.#e(t.remotePeer,o)}catch(i){Cr.error("received invalid message",i),n.abort(i);return}Cr("handled push from %p",t.remotePeer)}async#e(e,t){if(Cr("received identify from %p",e),t==null)throw new Error("Message was null or undefined");let n={addresses:t.listenAddrs.map(s=>({isCertified:!1,multiaddr:ye(s)})),protocols:t.protocols,metadata:new Map,peerRecordEnvelope:t.signedPeerRecord},i;if(t.signedPeerRecord!=null){Cr("received signedPeerRecord in push from %p",e);let s=t.signedPeerRecord,o=await qn.openAndCertify(s,hn.DOMAIN),a=hn.createFromProtobuf(o.payload);if(!a.peerId.equals(o.peerId))throw new Error("signing key does not match PeerId in the PeerRecord");if(!e.equals(a.peerId))throw new Error("signing key does not match remote PeerId");let c;try{c=await this.peerStore.get(a.peerId)}catch(u){if(u.code!=="ERR_NOT_FOUND")throw u}if(c!=null&&(n.metadata=c.metadata,c.peerRecordEnvelope!=null)){let u=await qn.createFromProtobuf(c.peerRecordEnvelope),l=hn.createFromProtobuf(u.payload);l.seqNumber>=a.seqNumber&&(Cr("sequence number was lower or equal to existing sequence number - stored: %d received: %d",l.seqNumber,a.seqNumber),a=l,s=c.peerRecordEnvelope)}n.peerRecordEnvelope=s,n.addresses=a.multiaddrs.map(u=>({isCertified:!0,multiaddr:u})),i={seq:a.seqNumber,addresses:a.multiaddrs}}else Cr("%p did not send a signed peer record",e);return t.agentVersion!=null&&n.metadata.set("AgentVersion",G(t.agentVersion)),t.protocolVersion!=null&&n.metadata.set("ProtocolVersion",G(t.protocolVersion)),await this.peerStore.patch(e,n),i}};function Mj(r){if(r!=null&&r.length>0)try{return ye(r)}catch{}}function Ak(r={}){return e=>new c2(e,r)}var Tk={list:["/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN","/dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa","/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb","/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt","/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ"]};function Dk(){return{addresses:{listen:["/webrtc"]},transports:[zT(),VT(),DD(),ID(),k5({discoverRelays:1})],connectionEncryption:[au()],streamMuxers:[MR(),WI()],peerDiscovery:[QR(Tk)],contentRouters:[rI("https://cid.contact")],services:{identify:Ak(),autoNAT:fk(),pubsub:YS(),dht:LI({clientMode:!0,validators:{ipns:ak},selectors:{ipns:ok}})}}}async function Ck(r,e){let t=Dk();return e=e??{},cS({datastore:r,...t,...e,start:!1})}var L5="2.0.0-9f9bc60",u2="helia";var Uj=C("helia");async function Fj(r={}){let e=r.datastore??new Qo,t=r.blockstore??new al,n;Kj(r.libp2p)?n=r.libp2p:n=await Ck(e,r.libp2p);let i=new Ph({...r,datastore:e,blockstore:t,libp2p:n});return r.start!==!1&&await i.start(),i.libp2p.isStarted()?await Pk(i):i.libp2p.addEventListener("start",()=>{Pk(i).catch(s=>{Uj.error("could not add Helia to agent version",s)})}),i}function Kj(r){return r==null?!1:["dial","dialProtocol","hangUp","handle","unhandle","getMultiaddrs","getProtocols"].every(t=>typeof r[t]=="function")}async function Pk(r){let t=(await r.libp2p.peerStore.get(r.libp2p.peerId)).metadata.get("AgentVersion");if(t==null)return;let n=new TextDecoder().decode(t);n.match(/js-libp2p\/\d+\.\d+\.\d+\sUserAgent=/)!=null&&(n.includes(u2)?n=`${u2}/${L5} ${n.split(" ").slice(1).join(" ")}`:n=`${u2}/${L5} ${n}`,await r.libp2p.peerStore.merge(r.libp2p.peerId,{metadata:{AgentVersion:new TextEncoder().encode(n)}}))}return S0(qj);})();
|
|
84
|
+
`),r}var FT=Array.from("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),KT=r=>[...Array(r)].map(()=>FT.at(Math.floor(Math.random()*FT.length))).join("");var xp=C("libp2p:webrtc:transport"),dY=1e4,pY=le("webrtc-direct").code,sy=le("certhash").code,vp=class{metrics;components;init;constructor(e,t={}){this.components=e,this.init=t,e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_webrtc_dialer_events_total",{label:"event",help:"Total count of WebRTC dial events by type"})})}async dial(e,t){let n=await this._connect(e,t);return xp(`dialing address - ${e.toString()}`),n}createListener(e){throw YI("WebRTCTransport.createListener")}filter(e){return e.filter(mY)}[Symbol.toStringTag]="@libp2p/webrtc-direct";[Wi]=!0;async _connect(e,t){let n=new AbortController,i=n.signal,s=e.getPeerId();if(s===null)throw np("we need to have the remote's PeerId");let o=we(s),a=ny(Ep(e)),c=await yu.generateCertificate({name:"ECDSA",namedCurve:"P-256",hash:iy(a.name)}),u=new yu({certificates:[c]});try{let l=new Promise((T,P)=>{let V=u.createDataChannel("",{negotiated:!0,id:0}),$=setTimeout(()=>{let Y=`Data channel was never opened: state: ${V.readyState}`;xp.error(Y),this.metrics?.dialerEvents.increment({open_error:!0}),P(m8("data",Y))},dY);V.onopen=Y=>{clearTimeout($),T(V)},V.onerror=Y=>{clearTimeout($);let _e=`Error opening a data channel for handshaking: ${Y.target?.toString()??"not specified"}`;xp.error(_e),this.metrics?.dialerEvents.increment({unknown_error:!0}),P(m8("data",_e))}}),f="libp2p+webrtc+v1/"+KT(32),h=await u.createOffer(),d=UT(h,f);await u.setLocalDescription(d);let p=MT(e,f);await u.setRemoteDescription(p);let m=await l,g=this.components.peerId,y=this.generateNoisePrologue(u,a.code,e),b=au({prologueBytes:y})(),w=wu({channel:m,direction:"inbound",dataChannelOptions:this.init.dataChannel}),_={...w,sink:w.sink.bind(w),source:async function*(){for await(let T of w.source)for(let P of T)yield P}()},x=new Ua({peerConnection:u,remoteAddr:e,timeline:{open:Date.now()},metrics:this.metrics?.dialerEvents}),v=Ff?"iceconnectionstatechange":"connectionstatechange";u.addEventListener(v,()=>{switch(u.connectionState){case"failed":case"disconnected":case"closed":x.close().catch(T=>{xp.error("error closing connection",T)}).finally(()=>{n.abort()});break;default:break}},{signal:i}),this.metrics?.dialerEvents.increment({peer_connection:!0});let R=new Fa({peerConnection:u,metrics:this.metrics?.dialerEvents,dataChannelOptions:this.init.dataChannel});return await b.secureInbound(g,_,o),await t.upgrader.upgradeOutbound(x,{skipProtection:!0,skipEncryption:!0,muxerFactory:R})}catch(l){throw u.close(),l}}generateNoisePrologue(e,t,n){if(e.getConfiguration().certificates?.length===0)throw Uf("no local certificate");let i=LT(e);if(i==null)throw Uf("no local fingerprint found");let s=i.trim().toLowerCase().replaceAll(":",""),o=G(s,"hex"),a=qT.encode(o,t),c=ry.decode(Ep(n)),u=G("libp2p-webrtc-noise:");return ve([u,a,c])}};function mY(r){let e=r.protoCodes();return e.includes(pY)&&e.includes(sy)&&r.getPeerId()!=null&&!e.includes(le("p2p-circuit").code)}function VT(r){return e=>new vp(e,r)}function zT(r){return e=>new cp(e,r)}function $T(r){let e;try{e=le("sni").code}catch{return null}for(let[t,n]of r)if(t===e&&n!==void 0)return n;return null}function HT(r){return r.some(([e,t])=>e===le("tls").code)}function wn(r,e,t){let n=GT[le(r).name];if(n===void 0)throw new Error(`Can't interpret protocol ${le(r).name}`);let i=n(e,t);return r===le("ip6").code?`[${i}]`:i}var GT={ip4:(r,e)=>r,ip6:(r,e)=>e.length===0?r:`[${r}]`,tcp:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`tcp://${wn(t[0],t[1]??"",e)}:${r}`},udp:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`udp://${wn(t[0],t[1]??"",e)}:${r}`},dnsaddr:(r,e)=>r,dns4:(r,e)=>r,dns6:(r,e)=>r,dns:(r,e)=>r,ipfs:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${wn(t[0],t[1]??"",e)}/ipfs/${r}`},p2p:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${wn(t[0],t[1]??"",e)}/p2p/${r}`},http:(r,e)=>{let t=HT(e),n=$T(e);if(t&&n!==null)return`https://${n}`;let i=t?"https://":"http://",s=e.pop();if(s===void 0)throw new Error("Unexpected end of multiaddr");let o=wn(s[0],s[1]??"",e);return o=o.replace("tcp://",""),`${i}${o}`},tls:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return wn(t[0],t[1]??"",e)},sni:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return wn(t[0],t[1]??"",e)},https:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");let n=wn(t[0],t[1]??"",e);return n=n.replace("tcp://",""),`https://${n}`},ws:(r,e)=>{let t=HT(e),n=$T(e);if(t&&n!==null)return`wss://${n}`;let i=t?"wss://":"ws://",s=e.pop();if(s===void 0)throw new Error("Unexpected end of multiaddr");let o=wn(s[0],s[1]??"",e);return o=o.replace("tcp://",""),`${i}${o}`},wss:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");let n=wn(t[0],t[1]??"",e);return n=n.replace("tcp://",""),`wss://${n}`},"p2p-websocket-star":(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${wn(t[0],t[1]??"",e)}/p2p-websocket-star`},"p2p-webrtc-star":(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${wn(t[0],t[1]??"",e)}/p2p-webrtc-star`},"p2p-webrtc-direct":(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${wn(t[0],t[1]??"",e)}/p2p-webrtc-direct`}};function WT(r,e){let n=ye(r).stringTuples(),i=n.pop();if(i===void 0)throw new Error("Unexpected end of multiaddr");let s=le(i[0]),o=GT[s.name];if(o==null)throw new Error(`No interpreter found for ${s.name}`);let a=o(i[1]??"",n);return e?.assumeHttp!==!1&&i[0]===le("tcp").code&&(a=a.replace("tcp://","http://"),(i[1]==="443"||i[1]==="80")&&(i[1]==="443"&&(a=a.replace("http://","https://")),a=a.substring(0,a.lastIndexOf(":")))),a}var YT=async r=>{if(r.readyState>=2)throw new Error("socket closed");r.readyState!==1&&await new Promise((e,t)=>{function n(){r.removeEventListener("open",i),r.removeEventListener("error",s)}function i(){n(),e()}function s(o){n(),t(o.error??new Error(`connect ECONNREFUSED ${r.url}`))}r.addEventListener("open",i),r.addEventListener("error",s)})};var QT=(r,e)=>(e=e??{},e.closeOnEnd=e.closeOnEnd!==!1,async n=>{for await(let i of n){try{await YT(r)}catch(s){if(s.message==="socket closed")break;throw s}if(r.readyState===r.CLOSING||r.readyState===r.CLOSED)break;r.send(i)}e.closeOnEnd!=null&&r.readyState<=1&&await new Promise((i,s)=>{r.addEventListener("close",o=>{if(o.wasClean||o.code===1006)i();else{let a=Object.assign(new Error("ws error"),{event:o});s(a)}}),setTimeout(()=>{r.close()})})});var JT=X(jT(),1);function ZT(r){return r instanceof ArrayBuffer||r?.constructor?.name==="ArrayBuffer"&&typeof r?.byteLength=="number"}var eD=r=>{r.binaryType="arraybuffer";let e=async()=>{await new Promise((s,o)=>{if(n){s();return}if(i!=null){o(i);return}let a=l=>{r.removeEventListener("open",c),r.removeEventListener("error",u),l()},c=()=>{a(s)},u=l=>{a(()=>{o(l.error??new Error(`connect ECONNREFUSED ${r.url}`))})};r.addEventListener("open",c),r.addEventListener("error",u)})},t=async function*(){let s=new JT.EventIterator(({push:o,stop:a,fail:c})=>{let u=f=>{let h=null;typeof f.data=="string"&&(h=G(f.data)),ZT(f.data)&&(h=new Uint8Array(f.data)),f.data instanceof Uint8Array&&(h=f.data),h!=null&&o(h)},l=f=>{c(f.error??new Error("Socket error"))};return r.addEventListener("message",u),r.addEventListener("error",l),r.addEventListener("close",a),()=>{r.removeEventListener("message",u),r.removeEventListener("error",l),r.removeEventListener("close",a)}},{highWaterMark:1/0});await e();for await(let o of s)yield ZT(o)?new Uint8Array(o):o}(),n=r.readyState===1,i;return r.addEventListener("open",()=>{n=!0,i=null}),r.addEventListener("close",()=>{n=!1,i=null}),r.addEventListener("error",s=>{n||(i=s.error??new Error(`connect ECONNREFUSED ${r.url}`))}),Object.assign(t,{connected:e})};var tD=(r,e)=>{e=e??{};let t=eD(r),n=e.remoteAddress,i=e.remotePort;if(r.url!=null)try{let o=new URL(r.url);n=o.hostname,i=parseInt(o.port,10)}catch{}if(n==null||i==null)throw new Error("Remote connection did not have address and/or port");return{sink:QT(r,e),source:t,connected:async()=>{await t.connected()},close:async()=>{(r.readyState===r.CONNECTING||r.readyState===r.OPEN)&&await new Promise(o=>{r.addEventListener("close",()=>{o()}),r.close()})},destroy:()=>{r.terminate!=null?r.terminate():r.close()},remoteAddress:n,remotePort:i,socket:r}};var rD=WebSocket;var lD=X(uD(),1),IY={http:"ws",https:"wss"},AY="ws",fD=(r,e)=>(0,lD.relative)(r,e,IY,AY);function hD(r,e){let t=typeof window>"u"?"":window.location;e=e??{};let n=fD(r,t.toString()),i=new rD(n,e.websocket);return tD(i,e)}var mD=X(pD(),1),ly=typeof window=="object"&&typeof document=="object"&&document.nodeType===9,Rp=(0,mD.default)(),Ip=ly&&!Rp,gD=Rp&&!ly,yD=Rp&&ly,bD=typeof globalThis.process<"u"&&typeof globalThis.process.release<"u"&&globalThis.process.release.name==="node"&&!Rp,Ap=typeof importScripts=="function"&&typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,gEe=typeof globalThis.process<"u"&&typeof globalThis.process.env<"u"&&globalThis.process.env["NODE"+(()=>"_")()+"ENV"]==="test",wD=typeof navigator<"u"&&navigator.product==="ReactNative";function vD(r){return r.filter(e=>{if(e.protoCodes().includes(290))return!1;let t=e.decapsulateCode(421);return lu.matches(t)||Ba.matches(t)})}function _D(r){return r.filter(e=>{if(e.protoCodes().includes(290))return!1;let t=e.decapsulateCode(421);return Ba.matches(t)})}function SD(){throw new Error("WebSocket Servers can not be created in the browser!")}var fy=C("libp2p:websockets:socket");function RD(r,e,t){t=t??{};let n={async sink(i){t?.signal!=null&&(i=gr(i,t.signal));try{await r.sink(i)}catch(s){s.type!=="aborted"&&fy.error(s)}},source:t.signal!=null?gr(r.source,t.signal):r.source,remoteAddr:e,timeline:{open:Date.now()},async close(i={}){let s=Date.now();i.signal=i.signal??AbortSignal.timeout(500);let o=()=>{let{host:a,port:c}=n.remoteAddr.toOptions();fy("timeout closing stream to %s:%s after %dms, destroying it manually",a,c,Date.now()-s),this.abort(new E("Socket close timeout","ERR_SOCKET_CLOSE_TIMEOUT"))};i.signal.addEventListener("abort",o);try{await r.close()}catch(a){this.abort(a)}finally{i.signal.removeEventListener("abort",o),n.timeline.close=Date.now()}},abort(i){let{host:s,port:o}=n.remoteAddr.toOptions();fy("timeout closing stream to %s:%s due to error",s,o,i),r.destroy(),n.timeline.close=Date.now()}};return r.socket.addEventListener("close",()=>{n.timeline.close==null&&(n.timeline.close=Date.now())},{once:!0}),n}var Ao=C("libp2p:websockets"),hy=class{init;constructor(e){this.init=e}[Symbol.toStringTag]="@libp2p/websockets";[Wi]=!0;async dial(e,t){Ao("dialing %s",e),t=t??{};let n=await this._connect(e,t),i=RD(n,e);Ao("new outbound connection %s",i.remoteAddr);let s=await t.upgrader.upgradeOutbound(i);return Ao("outbound connection %s upgraded",i.remoteAddr),s}async _connect(e,t){if(t?.signal?.aborted===!0)throw new ni;let n=e.toOptions();Ao("dialing %s:%s",n.host,n.port);let i=Le(),s=hD(WT(e),this.init);if(s.socket.addEventListener("error",()=>{let c=new E(`Could not connect to ${e.toString()}`,"ERR_CONNECTION_FAILED");Ao.error("connection error:",c),i.reject(c)}),t.signal==null)return await Promise.race([s.connected(),i.promise]),Ao("connected %s",e),s;let o,a=new Promise((c,u)=>{if(o=()=>{u(new ni),s.close().catch(l=>{Ao.error("error closing raw socket",l)})},t?.signal?.aborted===!0){o();return}t?.signal?.addEventListener("abort",o)});try{await Promise.race([a,i.promise,s.connected()])}finally{o!=null&&t?.signal?.removeEventListener("abort",o)}return Ao("connected %s",e),s}createListener(e){return SD({...this.init,...e})}filter(e){return e=Array.isArray(e)?e:[e],this.init?.filter!=null?this.init?.filter(e):Ip||Ap?_D(e):vD(e)}};function ID(r={}){return()=>new hy(r)}var Tp=C("libp2p:webtransport:stream");async function dy(r,e,t,n,i){let s=r.writable.getWriter(),o=r.readable.getReader();await s.ready;function a(){let h=n.findIndex(d=>d===f);h!==-1&&(n.splice(h,1),f.timeline.close=Date.now(),i?.(f))}let c=!1,u=!1;(async function(){let h=await s.closed.catch(d=>d);if(h!=null){let d=h.message;d.includes("aborted by the remote server")||d.includes("STOP_SENDING")||Tp.error(`WebTransport writer closed unexpectedly: streamId=${e} err=${h.message}`)}c=!0,c&&u&&a()})().catch(()=>{Tp.error("WebTransport failed to cleanup closed stream")}),async function(){let h=await o.closed.catch(d=>d);h!=null&&Tp.error(`WebTransport reader closed unexpectedly: streamId=${e} err=${h.message}`),u=!0,c&&u&&a()}().catch(()=>{Tp.error("WebTransport failed to cleanup closed stream")});let l=!1,f={id:e,status:"open",writeStatus:"ready",readStatus:"ready",abort(h){c||(s.abort(h),c=!0),u=!0,this.status="aborted",this.writeStatus="closed",this.readStatus="closed",this.timeline.reset=this.timeline.close=this.timeline.closeRead=this.timeline.closeWrite=Date.now(),a()},async close(h){this.status="closing",await Promise.all([f.closeRead(h),f.closeWrite(h)]),a(),this.status="closed",this.timeline.close=Date.now()},async closeRead(h){if(!u){this.readStatus="closing";try{await o.cancel()}catch(d){d.toString().includes("RESET_STREAM")===!0&&(c=!0)}this.timeline.closeRead=Date.now(),this.readStatus="closed",u=!0}c&&a()},async closeWrite(h){if(!c){c=!0,this.writeStatus="closing";try{await s.close()}catch(d){d.toString().includes("RESET_STREAM")===!0&&(u=!0)}this.timeline.closeWrite=Date.now(),this.writeStatus="closed"}u&&a()},direction:t,timeline:{open:Date.now()},metadata:{},source:async function*(){for(;;){let h=await o.read();if(h.done===!0){u=!0,c&&a();return}yield new Te(h.value)}}(),sink:async function(h){if(l)throw new Error("sink already called on stream");l=!0;try{this.writeStatus="writing";for await(let d of h)if(d instanceof Uint8Array)await s.write(d);else for(let p of d)await s.write(p);this.writeStatus="done"}finally{this.timeline.closeWrite=Date.now(),this.writeStatus="closed",await f.closeWrite()}}};return f}function py(){return{source:{[Symbol.asyncIterator](){return{async next(){return new Promise(()=>{})}}}},sink:async r=>new Promise(()=>{})}}function AD(r,e){return e.filter(n=>!!r.find(i=>fe(n,i))).length===e.length}var PY=Object.values(Cn).map(r=>r.decoder).reduce((r,e)=>r.or(e));function kY(r){return ti.decode(PY.decode(r))}function TD(r){let e=r.stringTuples(),{url:t,certhashes:n,remotePeer:i}=e.reduce((s,[o,a])=>{switch(o){case le("ip6").code:case le("dns6").code:a?.includes(":")===!0&&(a=`[${a}]`);case le("ip4").code:case le("dns4").code:if(s.seenHost||s.seenPort)throw new Error("Invalid multiaddr, saw host and already saw the host or port");return{...s,url:`${s.url}${a??""}`,seenHost:!0};case le("quic").code:case le("quic-v1").code:case le("webtransport").code:if(!s.seenHost||!s.seenPort)throw new Error("Invalid multiaddr, Didn't see host and port, but saw quic/webtransport");return s;case le("udp").code:if(s.seenPort)throw new Error("Invalid multiaddr, saw port but already saw the port");return{...s,url:`${s.url}:${a??""}`,seenPort:!0};case le("certhash").code:if(!s.seenHost||!s.seenPort)throw new Error("Invalid multiaddr, saw the certhash before seeing the host and port");return{...s,certhashes:s.certhashes.concat([kY(a??"")])};case le("p2p").code:return{...s,remotePeer:we(a??"")};default:throw new Error(`unexpected component in multiaddr: ${o} ${le(o).name} ${a??""} `)}},{url:"https://",seenHost:!1,seenPort:!1,certhashes:[]});return{url:t,certhashes:n,remotePeer:i}}var En=C("libp2p:webtransport"),my=class{components;config;constructor(e,t={}){this.components=e,this.config={maxInboundStreams:t.maxInboundStreams??1e3}}[Symbol.toStringTag]="@libp2p/webtransport";[Wi]=!0;async dial(e,t){t?.signal?.throwIfAborted(),En("dialing %s",e);let n=this.components.peerId;if(n===void 0)throw new Error("Need a local peerid");t=t??{};let{url:i,certhashes:s,remotePeer:o}=TD(e);if(o==null)throw new Error("Need a target peerid");if(s.length===0)throw new Error("Expected multiaddr to contain certhashes");let a,c,u=()=>{};try{let l=!1,f=new WebTransport(`${i}/.well-known/libp2p-webtransport?type=noise`,{serverCertificateHashes:s.map(h=>({algorithm:"sha-256",value:h.digest}))});if(u=h=>{try{if(c!=null){if(c.timeline.close!=null)return;c.timeline.close=Date.now()}if(l)return;f.close(h)}catch(d){En.error("error closing wt session",d)}finally{l=!0}},f.closed.then(async()=>{await c?.close()}).catch(h=>{En.error("error on remote wt session close",h),c?.abort(h)}).finally(()=>{c==null&&u()}),a=()=>{a!=null&&t.signal?.removeEventListener("abort",a),u()},t.signal?.addEventListener("abort",a),await f.ready,!await this.authenticateWebTransport(f,n,o,s))throw new Error("Failed to authenticate webtransport");return c={close:async h=>{En("Closing webtransport"),u()},abort:h=>{En("aborting webtransport due to passed err",h),u({closeCode:0,reason:h.message})},remoteAddr:e,timeline:{open:Date.now()},...py()},t?.signal?.throwIfAborted(),await t.upgrader.upgradeOutbound(c,{skipEncryption:!0,muxerFactory:this.webtransportMuxer(f,u),skipProtection:!0})}catch(l){throw En.error("caught wt session err",l),u({closeCode:0,reason:l.message}),l}finally{a!=null&&t.signal?.removeEventListener("abort",a)}}async authenticateWebTransport(e,t,n,i){let s=await e.createBidirectionalStream(),o=s.writable.getWriter(),a=s.readable.getReader();await o.ready;let c={source:async function*(){for(;;){let f=await a.read();if(f.value!=null&&(yield f.value),f.done===!0)break}}(),sink:async function(f){for await(let h of f)await o.write(h)}},u=au()(),{remoteExtensions:l}=await u.secureOutbound(t,c,n);if(o.close().catch(f=>{En.error(`Failed to close authentication stream writer: ${f.message}`)}),a.cancel().catch(f=>{En.error(`Failed to close authentication stream reader: ${f.message}`)}),!AD(l?.webtransportCerthashes??[],i.map(f=>f.bytes)))throw new Error("Our certhashes are not a subset of the remote's reported certhashes");return!0}webtransportMuxer(e,t){let n=0,i=this.config;return{protocol:"webtransport",createStreamMuxer:s=>{typeof s=="function"&&(s={onIncomingStream:s});let o=[];return async function(){let c=e.incomingBidirectionalStreams.getReader();for(;;){let{done:u,value:l}=await c.read();if(u===!0)break;if(o.length>=i.maxInboundStreams)l.writable.close().catch(f=>{En.error(`Failed to close inbound stream that crossed our maxInboundStream limit: ${f.message}`)}),l.readable.cancel().catch(f=>{En.error(`Failed to close inbound stream that crossed our maxInboundStream limit: ${f.message}`)});else{let f=await dy(l,String(n++),"inbound",o,s?.onStreamEnd);o.push(f),s?.onIncomingStream?.(f)}}}().catch(()=>{En.error("WebTransport failed to receive incoming stream")}),{protocol:"webtransport",streams:o,newStream:async c=>{let u=await e.createBidirectionalStream(),l=await dy(u,String(n++),s?.direction??"outbound",o,s?.onStreamEnd);return o.push(l),l},close:async c=>{En("Closing webtransport muxer"),t()},abort:c=>{En("Aborting webtransport muxer with err:",c),t({closeCode:0,reason:c.message})},...py()}}}}createListener(e){throw new Error("Webtransport servers are not supported in Node or the browser")}filter(e){return e.filter(t=>t.protoNames().includes("webtransport"))}};function DD(r={}){return e=>new my(e,r)}var ji;(function(r){let e;(function(i){i.EOL="EOL"})(e=r.ValidityType||(r.ValidityType={}));let t;(function(i){i[i.EOL=0]="EOL"})(t||(t={})),function(i){i.codec=()=>xt(t)}(e=r.ValidityType||(r.ValidityType={}));let n;r.codec=()=>(n==null&&(n=me((i,s,o={})=>{o.lengthDelimited!==!1&&s.fork(),i.value!=null&&(s.uint32(10),s.bytes(i.value)),i.signature!=null&&(s.uint32(18),s.bytes(i.signature)),i.validityType!=null&&(s.uint32(24),r.ValidityType.codec().encode(i.validityType,s)),i.validity!=null&&(s.uint32(34),s.bytes(i.validity)),i.sequence!=null&&(s.uint32(40),s.uint64(i.sequence)),i.ttl!=null&&(s.uint32(48),s.uint64(i.ttl)),i.pubKey!=null&&(s.uint32(58),s.bytes(i.pubKey)),i.signatureV2!=null&&(s.uint32(66),s.bytes(i.signatureV2)),i.data!=null&&(s.uint32(74),s.bytes(i.data)),o.lengthDelimited!==!1&&s.ldelim()},(i,s)=>{let o={},a=s==null?i.len:i.pos+s;for(;i.pos<a;){let c=i.uint32();switch(c>>>3){case 1:o.value=i.bytes();break;case 2:o.signature=i.bytes();break;case 3:o.validityType=r.ValidityType.codec().decode(i);break;case 4:o.validity=i.bytes();break;case 5:o.sequence=i.uint64();break;case 6:o.ttl=i.uint64();break;case 7:o.pubKey=i.bytes();break;case 8:o.signatureV2=i.bytes();break;case 9:o.data=i.bytes();break;default:i.skipType(c&7);break}}return o})),n),r.encode=i=>pe(i,r.codec()),r.decode=i=>de(i,r.codec())})(ji||(ji={}));var qve=X(aa(),1),Vve=X(g3(),1);var ut=class extends Error{code;props;constructor(e,t,n){super(e),this.code=t,this.name=n?.name??"CodeError",this.props=n??{}}};var cX=X(qe(),1);var Uy={};be(Uy,{Ed25519PrivateKey:()=>za,Ed25519PublicKey:()=>i0,generateKeyPair:()=>DQ,generateKeyPairFromSeed:()=>sC,unmarshalEd25519PrivateKey:()=>AQ,unmarshalEd25519PublicKey:()=>TQ});var Ey={};be(Ey,{base58btc:()=>Er,base58flickr:()=>UY});function NY(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 i=0;i<r.length;i++){var s=r.charAt(i),o=s.charCodeAt(0);if(t[o]!==255)throw new TypeError(s+" is ambiguous");t[o]=i}var a=r.length,c=r.charAt(0),u=Math.log(a)/Math.log(256),l=Math.log(256)/Math.log(a);function f(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var m=0,g=0,y=0,b=p.length;y!==b&&p[y]===0;)y++,m++;for(var w=(b-y)*l+1>>>0,_=new Uint8Array(w);y!==b;){for(var x=p[y],v=0,R=w-1;(x!==0||v<g)&&R!==-1;R--,v++)x+=256*_[R]>>>0,_[R]=x%a>>>0,x=x/a>>>0;if(x!==0)throw new Error("Non-zero carry");g=v,y++}for(var T=w-g;T!==w&&_[T]===0;)T++;for(var P=c.repeat(m);T<w;++T)P+=r.charAt(_[T]);return P}function h(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var m=0;if(p[m]!==" "){for(var g=0,y=0;p[m]===c;)g++,m++;for(var b=(p.length-m)*u+1>>>0,w=new Uint8Array(b);p[m];){var _=t[p.charCodeAt(m)];if(_===255)return;for(var x=0,v=b-1;(_!==0||x<y)&&v!==-1;v--,x++)_+=a*w[v]>>>0,w[v]=_%256>>>0,_=_/256>>>0;if(_!==0)throw new Error("Non-zero carry");y=x,m++}if(p[m]!==" "){for(var R=b-y;R!==b&&w[R]===0;)R++;for(var T=new Uint8Array(g+(b-R)),P=g;R!==b;)T[P++]=w[R++];return T}}}function d(p){var m=h(p);if(m)return m;throw new Error(`Non-${e} character`)}return{encode:f,decodeUnsafe:h,decode:d}}var BY=NY,OY=BY,CD=OY;var cxe=new Uint8Array(0);var PD=(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},Ns=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")};var kD=r=>new TextEncoder().encode(r),ND=r=>new TextDecoder().decode(r);var gy=class{constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},yy=class{constructor(e,t,n){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return OD(this,e)}},by=class{constructor(e){this.decoders=e}or(e){return OD(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},OD=(r,e)=>new by({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}}),wy=class{constructor(e,t,n,i){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=i,this.encoder=new gy(e,t,n),this.decoder=new yy(e,t,i)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}},Du=({name:r,prefix:e,encode:t,decode:n})=>new wy(r,e,t,n),To=({prefix:r,name:e,alphabet:t})=>{let{encode:n,decode:i}=CD(t,e);return Du({prefix:r,name:e,encode:n,decode:s=>Ns(i(s))})},LY=(r,e,t,n)=>{let i={};for(let l=0;l<e.length;++l)i[e[l]]=l;let s=r.length;for(;r[s-1]==="=";)--s;let o=new Uint8Array(s*t/8|0),a=0,c=0,u=0;for(let l=0;l<s;++l){let f=i[r[l]];if(f===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|f,a+=t,a>=8&&(a-=8,o[u++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return o},MY=(r,e,t)=>{let n=e[e.length-1]==="=",i=(1<<t)-1,s="",o=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],o+=8;o>t;)o-=t,s+=e[i&a>>o];if(o&&(s+=e[i&a<<t-o]),n)for(;s.length*t&7;)s+="=";return s},Lt=({name:r,prefix:e,bitsPerChar:t,alphabet:n})=>Du({prefix:e,name:r,encode(i){return MY(i,n,t)},decode(i){return LY(i,n,t,r)}});var Er=To({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),UY=To({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var vy={};be(vy,{identity:()=>Do});var FY=UD,LD=128,KY=127,qY=~KY,VY=Math.pow(2,31);function UD(r,e,t){e=e||[],t=t||0;for(var n=t;r>=VY;)e[t++]=r&255|LD,r/=128;for(;r&qY;)e[t++]=r&255|LD,r>>>=7;return e[t]=r|0,UD.bytes=t-n+1,e}var zY=xy,$Y=128,MD=127;function xy(r,n){var t=0,n=n||0,i=0,s=n,o,a=r.length;do{if(s>=a)throw xy.bytes=0,new RangeError("Could not decode varint");o=r[s++],t+=i<28?(o&MD)<<i:(o&MD)*Math.pow(2,i),i+=7}while(o>=$Y);return xy.bytes=s-n,t}var HY=Math.pow(2,7),GY=Math.pow(2,14),WY=Math.pow(2,21),YY=Math.pow(2,28),QY=Math.pow(2,35),XY=Math.pow(2,42),jY=Math.pow(2,49),ZY=Math.pow(2,56),JY=Math.pow(2,63),eQ=function(r){return r<HY?1:r<GY?2:r<WY?3:r<YY?4:r<QY?5:r<XY?6:r<jY?7:r<ZY?8:r<JY?9:10},tQ={encode:FY,decode:zY,encodingLength:eQ},rQ=tQ,Xf=rQ;var jf=(r,e=0)=>[Xf.decode(r,e),Xf.decode.bytes],Cu=(r,e,t=0)=>(Xf.encode(r,e,t),e),Pu=r=>Xf.encodingLength(r);var Zi=(r,e)=>{let t=e.byteLength,n=Pu(r),i=n+Pu(t),s=new Uint8Array(i+t);return Cu(r,s,0),Cu(t,s,n),s.set(e,i),new ku(r,t,e,s)},Zf=r=>{let e=Ns(r),[t,n]=jf(e),[i,s]=jf(e.subarray(n)),o=e.subarray(n+s);if(o.byteLength!==i)throw new Error("Incorrect length");return new ku(t,i,o,e)},FD=(r,e)=>{if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&PD(r.bytes,t.bytes)}},ku=class{constructor(e,t,n,i){this.code=e,this.size=t,this.digest=n,this.bytes=i}};var KD=0,nQ="identity",qD=Ns,iQ=r=>Zi(KD,qD(r)),Do={code:KD,name:nQ,encode:qD,digest:iQ};var Ry={};be(Ry,{sha256:()=>xr,sha512:()=>sQ});var Sy=({name:r,code:e,encode:t})=>new _y(r,e,t),_y=class{constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?Zi(this.code,t):t.then(n=>Zi(this.code,n))}else throw Error("Unknown type, must be binary type")}};var zD=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),xr=Sy({name:"sha2-256",code:18,encode:zD("SHA-256")}),sQ=Sy({name:"sha2-512",code:19,encode:zD("SHA-512")});var oQ=X(la(),1);var cr=BigInt(0),$e=BigInt(1),ko=BigInt(2),aQ=BigInt(8),$D=BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),wt=Object.freeze({a:BigInt(-1),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),P:BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),l:$D,n:$D,h:BigInt(8),Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960")});var QD=BigInt("0x10000000000000000000000000000000000000000000000000000000000000000"),Jf=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),bxe=BigInt("6853475219497561581579357271197624642482790079785650197046958215289687604742"),cQ=BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235"),uQ=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),lQ=BigInt("1159843021668779879193775521855586647937357759715417654439879720876111806838"),fQ=BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952"),Jt=class r{constructor(e,t,n,i){this.x=e,this.y=t,this.z=n,this.t=i}static fromAffine(e){if(!(e instanceof $t))throw new TypeError("ExtendedPoint#fromAffine: expected Point");return e.equals($t.ZERO)?r.ZERO:new r(e.x,e.y,$e,q(e.x*e.y))}static toAffineBatch(e){let t=pQ(e.map(n=>n.z));return e.map((n,i)=>n.toAffine(t[i]))}static normalizeZ(e){return this.toAffineBatch(e).map(this.fromAffine)}equals(e){GD(e);let{x:t,y:n,z:i}=this,{x:s,y:o,z:a}=e,c=q(t*a),u=q(s*i),l=q(n*a),f=q(o*i);return c===u&&l===f}negate(){return new r(q(-this.x),this.y,this.z,q(-this.t))}double(){let{x:e,y:t,z:n}=this,{a:i}=wt,s=q(e*e),o=q(t*t),a=q(ko*q(n*n)),c=q(i*s),u=e+t,l=q(q(u*u)-s-o),f=c+o,h=f-a,d=c-o,p=q(l*h),m=q(f*d),g=q(l*d),y=q(h*f);return new r(p,m,y,g)}add(e){GD(e);let{x:t,y:n,z:i,t:s}=this,{x:o,y:a,z:c,t:u}=e,l=q((n-t)*(a+o)),f=q((n+t)*(a-o)),h=q(f-l);if(h===cr)return this.double();let d=q(i*ko*u),p=q(s*ko*c),m=p+d,g=f+l,y=p-d,b=q(m*h),w=q(g*y),_=q(m*y),x=q(h*g);return new r(b,w,x,_)}subtract(e){return this.add(e.negate())}precomputeWindow(e){let t=1+256/e,n=[],i=this,s=i;for(let o=0;o<t;o++){s=i,n.push(s);for(let a=1;a<2**(e-1);a++)s=s.add(i),n.push(s);i=s.double()}return n}wNAF(e,t){!t&&this.equals(r.BASE)&&(t=$t.BASE);let n=t&&t._WINDOW_SIZE||1;if(256%n)throw new Error("Point#wNAF: Invalid precomputation window, must be power of 2");let i=t&&Cy.get(t);i||(i=this.precomputeWindow(n),t&&n!==1&&(i=r.normalizeZ(i),Cy.set(t,i)));let s=r.ZERO,o=r.BASE,a=1+256/n,c=2**(n-1),u=BigInt(2**n-1),l=2**n,f=BigInt(n);for(let h=0;h<a;h++){let d=h*c,p=Number(e&u);e>>=f,p>c&&(p-=l,e+=$e);let m=d,g=d+Math.abs(p)-1,y=h%2!==0,b=p<0;p===0?o=o.add(HD(y,i[m])):s=s.add(HD(b,i[g]))}return r.normalizeZ([s,o])[0]}multiply(e,t){return this.wNAF(Pp(e,wt.l),t)}multiplyUnsafe(e){let t=Pp(e,wt.l,!1),n=r.BASE,i=r.ZERO;if(t===cr)return i;if(this.equals(i)||t===$e)return this;if(this.equals(n))return this.wNAF(t);let s=i,o=this;for(;t>cr;)t&$e&&(s=s.add(o)),o=o.double(),t>>=$e;return s}isSmallOrder(){return this.multiplyUnsafe(wt.h).equals(r.ZERO)}isTorsionFree(){let e=this.multiplyUnsafe(wt.l/ko).double();return wt.l%ko&&(e=e.add(this)),e.equals(r.ZERO)}toAffine(e){let{x:t,y:n,z:i}=this,s=this.equals(r.ZERO);e==null&&(e=s?aQ:kp(i));let o=q(t*e),a=q(n*e),c=q(i*e);if(s)return $t.ZERO;if(c!==$e)throw new Error("invZ was invalid");return new $t(o,a)}fromRistrettoBytes(){Ay()}toRistrettoBytes(){Ay()}fromRistrettoHash(){Ay()}};Jt.BASE=new Jt(wt.Gx,wt.Gy,$e,q(wt.Gx*wt.Gy));Jt.ZERO=new Jt(cr,$e,$e,cr);function HD(r,e){let t=e.negate();return r?t:e}function GD(r){if(!(r instanceof Jt))throw new TypeError("ExtendedPoint expected")}function Iy(r){if(!(r instanceof Va))throw new TypeError("RistrettoPoint expected")}function Ay(){throw new Error("Legacy method: switch to RistrettoPoint")}var Va=class r{constructor(e){this.ep=e}static calcElligatorRistrettoMap(e){let{d:t}=wt,n=q(Jf*e*e),i=q((n+$e)*lQ),s=BigInt(-1),o=q((s-t*n)*q(n+t)),{isValid:a,value:c}=ky(i,o),u=q(c*e);Po(u)||(u=q(-u)),a||(c=u),a||(s=n);let l=q(s*(n-$e)*fQ-o),f=c*c,h=q((c+c)*o),d=q(l*cQ),p=q($e-f),m=q($e+f);return new Jt(q(h*m),q(p*d),q(d*m),q(h*p))}static hashToCurve(e){e=No(e,64);let t=Ty(e.slice(0,32)),n=this.calcElligatorRistrettoMap(t),i=Ty(e.slice(32,64)),s=this.calcElligatorRistrettoMap(i);return new r(n.add(s))}static fromHex(e){e=No(e,32);let{a:t,d:n}=wt,i="RistrettoPoint.fromHex: the hex is not valid encoding of RistrettoPoint",s=Ty(e);if(!gQ(t0(s),e)||Po(s))throw new Error(i);let o=q(s*s),a=q($e+t*o),c=q($e-t*o),u=q(a*a),l=q(c*c),f=q(t*n*u-l),{isValid:h,value:d}=YD(q(f*l)),p=q(d*c),m=q(d*p*f),g=q((s+s)*p);Po(g)&&(g=q(-g));let y=q(a*m),b=q(g*y);if(!h||Po(b)||y===cr)throw new Error(i);return new r(new Jt(g,y,$e,b))}toRawBytes(){let{x:e,y:t,z:n,t:i}=this.ep,s=q(q(n+t)*q(n-t)),o=q(e*t),a=q(o*o),{value:c}=YD(q(s*a)),u=q(c*s),l=q(c*o),f=q(u*l*i),h;if(Po(i*f)){let p=q(t*Jf),m=q(e*Jf);e=p,t=m,h=q(u*uQ)}else h=l;Po(e*f)&&(t=q(-t));let d=q((n-t)*h);return Po(d)&&(d=q(-d)),t0(d)}toHex(){return r0(this.toRawBytes())}toString(){return this.toHex()}equals(e){Iy(e);let t=this.ep,n=e.ep,i=q(t.x*n.y)===q(t.y*n.x),s=q(t.y*n.y)===q(t.x*n.x);return i||s}add(e){return Iy(e),new r(this.ep.add(e.ep))}subtract(e){return Iy(e),new r(this.ep.subtract(e.ep))}multiply(e){return new r(this.ep.multiply(e))}multiplyUnsafe(e){return new r(this.ep.multiplyUnsafe(e))}};Va.BASE=new Va(Jt.BASE);Va.ZERO=new Va(Jt.ZERO);var Cy=new WeakMap,$t=class r{constructor(e,t){this.x=e,this.y=t}_setWindowSize(e){this._WINDOW_SIZE=e,Cy.delete(this)}static fromHex(e,t=!0){let{d:n,P:i}=wt;e=No(e,32);let s=e.slice();s[31]=e[31]&-129;let o=n0(s);if(t&&o>=i)throw new Error("Expected 0 < hex < P");if(!t&&o>=QD)throw new Error("Expected 0 < hex < 2**256");let a=q(o*o),c=q(a-$e),u=q(n*a+$e),{isValid:l,value:f}=ky(c,u);if(!l)throw new Error("Point.fromHex: invalid y coordinate");let h=(f&$e)===$e;return(e[31]&128)!==0!==h&&(f=q(-f)),new r(f,o)}static async fromPrivateKey(e){return(await Np(e)).point}toRawBytes(){let e=t0(this.y);return e[31]|=this.x&$e?128:0,e}toHex(){return r0(this.toRawBytes())}toX25519(){let{y:e}=this,t=q(($e+e)*kp($e-e));return t0(t)}isTorsionFree(){return Jt.fromAffine(this).isTorsionFree()}equals(e){return this.x===e.x&&this.y===e.y}negate(){return new r(q(-this.x),this.y)}add(e){return Jt.fromAffine(this).add(Jt.fromAffine(e)).toAffine()}subtract(e){return this.add(e.negate())}multiply(e){return Jt.fromAffine(this).multiply(e,this).toAffine()}};$t.BASE=new $t(wt.Gx,wt.Gy);$t.ZERO=new $t(cr,$e);var e0=class r{constructor(e,t){this.r=e,this.s=t,this.assertValidity()}static fromHex(e){let t=No(e,64),n=$t.fromHex(t.slice(0,32),!1),i=n0(t.slice(32,64));return new r(n,i)}assertValidity(){let{r:e,s:t}=this;if(!(e instanceof $t))throw new Error("Expected Point instance");return Pp(t,wt.l,!1),this}toRawBytes(){let e=new Uint8Array(64);return e.set(this.r.toRawBytes()),e.set(t0(this.s),32),e}toHex(){return r0(this.toRawBytes())}};function WD(...r){if(!r.every(n=>n instanceof Uint8Array))throw new Error("Expected Uint8Array list");if(r.length===1)return r[0];let e=r.reduce((n,i)=>n+i.length,0),t=new Uint8Array(e);for(let n=0,i=0;n<r.length;n++){let s=r[n];t.set(s,i),i+=s.length}return t}var hQ=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function r0(r){if(!(r instanceof Uint8Array))throw new Error("Uint8Array expected");let e="";for(let t=0;t<r.length;t++)e+=hQ[r[t]];return e}function Py(r){if(typeof r!="string")throw new TypeError("hexToBytes: expected string, got "+typeof r);if(r.length%2)throw new Error("hexToBytes: received invalid unpadded hex");let e=new Uint8Array(r.length/2);for(let t=0;t<e.length;t++){let n=t*2,i=r.slice(n,n+2),s=Number.parseInt(i,16);if(Number.isNaN(s)||s<0)throw new Error("Invalid byte sequence");e[t]=s}return e}function XD(r){let t=r.toString(16).padStart(64,"0");return Py(t)}function t0(r){return XD(r).reverse()}function Po(r){return(q(r)&$e)===$e}function n0(r){if(!(r instanceof Uint8Array))throw new Error("Expected Uint8Array");return BigInt("0x"+r0(Uint8Array.from(r).reverse()))}var dQ=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");function Ty(r){return q(n0(r)&dQ)}function q(r,e=wt.P){let t=r%e;return t>=cr?t:e+t}function kp(r,e=wt.P){if(r===cr||e<=cr)throw new Error(`invert: expected positive integers, got n=${r} mod=${e}`);let t=q(r,e),n=e,i=cr,s=$e,o=$e,a=cr;for(;t!==cr;){let u=n/t,l=n%t,f=i-o*u,h=s-a*u;n=t,t=l,i=o,s=a,o=f,a=h}if(n!==$e)throw new Error("invert: does not exist");return q(i,e)}function pQ(r,e=wt.P){let t=new Array(r.length),n=r.reduce((s,o,a)=>o===cr?s:(t[a]=s,q(s*o,e)),$e),i=kp(n,e);return r.reduceRight((s,o,a)=>o===cr?s:(t[a]=q(s*t[a],e),q(s*o,e)),i),t}function Ji(r,e){let{P:t}=wt,n=r;for(;e-- >cr;)n*=n,n%=t;return n}function mQ(r){let{P:e}=wt,t=BigInt(5),n=BigInt(10),i=BigInt(20),s=BigInt(40),o=BigInt(80),c=r*r%e*r%e,u=Ji(c,ko)*c%e,l=Ji(u,$e)*r%e,f=Ji(l,t)*l%e,h=Ji(f,n)*f%e,d=Ji(h,i)*h%e,p=Ji(d,s)*d%e,m=Ji(p,o)*p%e,g=Ji(m,o)*p%e,y=Ji(g,n)*f%e;return{pow_p_5_8:Ji(y,ko)*r%e,b2:c}}function ky(r,e){let t=q(e*e*e),n=q(t*t*e),i=mQ(r*n).pow_p_5_8,s=q(r*t*i),o=q(e*s*s),a=s,c=q(s*Jf),u=o===r,l=o===q(-r),f=o===q(-r*Jf);return u&&(s=a),(l||f)&&(s=c),Po(s)&&(s=q(-s)),{isValid:u||l,value:s}}function YD(r){return ky($e,r)}function Cp(r){return q(n0(r),wt.l)}function gQ(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(r[t]!==e[t])return!1;return!0}function No(r,e){let t=r instanceof Uint8Array?Uint8Array.from(r):Py(r);if(typeof e=="number"&&t.length!==e)throw new Error(`Expected ${e} bytes`);return t}function Pp(r,e,t=!0){if(!e)throw new TypeError("Specify max value");if(typeof r=="number"&&Number.isSafeInteger(r)&&(r=BigInt(r)),typeof r=="bigint"&&r<e){if(t){if(cr<r)return r}else if(cr<=r)return r}throw new TypeError("Expected valid scalar: 0 < scalar < max")}function yQ(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function bQ(r){if(r=typeof r=="bigint"||typeof r=="number"?XD(Pp(r,QD)):No(r),r.length!==32)throw new Error("Expected 32 bytes");return r}function wQ(r){let e=yQ(r.slice(0,32)),t=r.slice(32,64),n=Cp(e),i=$t.BASE.multiply(n),s=i.toRawBytes();return{head:e,prefix:t,scalar:n,point:i,pointBytes:s}}var Dy;async function Np(r){return wQ(await Bo.sha512(bQ(r)))}async function Ny(r){return(await Np(r)).pointBytes}async function jD(r,e){r=No(r);let{prefix:t,scalar:n,pointBytes:i}=await Np(e),s=Cp(await Bo.sha512(t,r)),o=$t.BASE.multiply(s),a=Cp(await Bo.sha512(o.toRawBytes(),i,r)),c=q(s+a*n,wt.l);return new e0(o,c).toRawBytes()}function EQ(r,e,t){e=No(e),t instanceof $t||(t=$t.fromHex(t,!1));let{r:n,s:i}=r instanceof e0?r.assertValidity():e0.fromHex(r),s=Jt.BASE.multiplyUnsafe(i);return{r:n,s:i,SB:s,pub:t,msg:e}}function xQ(r,e,t,n){let i=Cp(n),s=Jt.fromAffine(r).multiplyUnsafe(i);return Jt.fromAffine(e).add(s).subtract(t).multiplyUnsafe(wt.h).equals(Jt.ZERO)}async function ZD(r,e,t){let{r:n,SB:i,msg:s,pub:o}=EQ(r,e,t),a=await Bo.sha512(n.toRawBytes(),o.toRawBytes(),s);return xQ(o,n,i,a)}$t.BASE._setWindowSize(8);var Co={node:oQ,web:typeof self=="object"&&"crypto"in self?self.crypto:void 0},Bo={bytesToHex:r0,hexToBytes:Py,concatBytes:WD,getExtendedPublicKey:Np,mod:q,invert:kp,TORSION_SUBGROUP:["0100000000000000000000000000000000000000000000000000000000000000","c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a","0000000000000000000000000000000000000000000000000000000000000080","26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05","ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f","26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85","0000000000000000000000000000000000000000000000000000000000000000","c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa"],hashToPrivateScalar:r=>{if(r=No(r),r.length<40||r.length>1024)throw new Error("Expected 40-1024 bytes of private key as per FIPS 186");return q(n0(r),wt.l-$e)+$e},randomBytes:(r=32)=>{if(Co.web)return Co.web.getRandomValues(new Uint8Array(r));if(Co.node){let{randomBytes:e}=Co.node;return new Uint8Array(e(r).buffer)}else throw new Error("The environment doesn't have randomBytes function")},randomPrivateKey:()=>Bo.randomBytes(32),sha512:async(...r)=>{let e=WD(...r);if(Co.web){let t=await Co.web.subtle.digest("SHA-512",e.buffer);return new Uint8Array(t)}else{if(Co.node)return Uint8Array.from(Co.node.createHash("sha512").update(e).digest());throw new Error("The environment doesn't have sha512 function")}},precompute(r=8,e=$t.BASE){let t=e.equals($t.BASE)?e:new $t(e.x,e.y);return t._setWindowSize(r),t.multiply(ko),t},sha512Sync:void 0};Object.defineProperties(Bo,{sha512Sync:{configurable:!1,get(){return Dy},set(r){Dy||(Dy=r)}}});var Bu=32,Bs=64,Bp=32;async function JD(){let r=Bo.randomPrivateKey(),e=await Ny(r);return{privateKey:nC(r,e),publicKey:e}}async function eC(r){if(r.length!==Bp)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=await Ny(e);return{privateKey:nC(e,t),publicKey:t}}async function tC(r,e){let t=r.subarray(0,Bp);return jD(e,t)}async function rC(r,e,t){return ZD(e,t,r)}function nC(r,e){let t=new Uint8Array(Bs);for(let n=0;n<Bp;n++)t[n]=r[n],t[Bp+n]=e[n];return t}var By={};be(By,{base64:()=>Ou,base64pad:()=>SQ,base64url:()=>RQ,base64urlpad:()=>IQ});var Ou=Lt({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),SQ=Lt({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),RQ=Lt({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),IQ=Lt({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var jr={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-crypto/blob/master/README.md#web-crypto-api"),{code:"ERR_MISSING_WEB_CRYPTO"});return e}};var Oy={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function Ly(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,i=r?.digest??"SHA-256",s=r?.saltLength??16,o=r?.iterations??32767,a=jr.get();t*=8;async function c(f,h){let d=a.getRandomValues(new Uint8Array(s)),p=a.getRandomValues(new Uint8Array(n)),m={name:e,iv:p};typeof h=="string"&&(h=G(h));let g;if(h.length===0){g=await a.subtle.importKey("jwk",Oy,{name:"AES-GCM"},!0,["encrypt"]);try{let b={name:"PBKDF2",salt:d,iterations:o,hash:{name:i}},w=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(b,w,{name:e,length:t},!0,["encrypt"])}catch{g=await a.subtle.importKey("jwk",Oy,{name:"AES-GCM"},!0,["encrypt"])}}else{let b={name:"PBKDF2",salt:d,iterations:o,hash:{name:i}},w=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(b,w,{name:e,length:t},!0,["encrypt"])}let y=await a.subtle.encrypt(m,g,f);return ve([d,m.iv,new Uint8Array(y)])}async function u(f,h){let d=f.subarray(0,s),p=f.subarray(s,s+n),m=f.subarray(s+n),g={name:e,iv:p};typeof h=="string"&&(h=G(h));let y;if(h.length===0)try{let w={name:"PBKDF2",salt:d,iterations:o,hash:{name:i}},_=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);y=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}catch{y=await a.subtle.importKey("jwk",Oy,{name:"AES-GCM"},!0,["decrypt"])}else{let w={name:"PBKDF2",salt:d,iterations:o,hash:{name:i}},_=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);y=await a.subtle.deriveKey(w,_,{name:e,length:t},!0,["decrypt"])}let b=await a.subtle.decrypt(g,y,m);return new Uint8Array(b)}return{encrypt:c,decrypt:u}}async function Lu(r,e){let n=await Ly().encrypt(r,e);return Ou.encode(n)}var Ht;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(Ht||(Ht={}));var My;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(My||(My={}));(function(r){r.codec=()=>xt(My)})(Ht||(Ht={}));var es;(function(r){let e;r.codec=()=>(e==null&&(e=me((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Ht.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),i.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let i={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let o=t.uint32();switch(o>>>3){case 1:i.Type=Ht.codec().decode(t);break;case 2:i.Data=t.bytes();break;default:t.skipType(o&7);break}}return i})),e),r.encode=t=>pe(t,r.codec()),r.decode=t=>de(t,r.codec())})(es||(es={}));var Os;(function(r){let e;r.codec=()=>(e==null&&(e=me((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Ht.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),i.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let i={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let o=t.uint32();switch(o>>>3){case 1:i.Type=Ht.codec().decode(t);break;case 2:i.Data=t.bytes();break;default:t.skipType(o&7);break}}return i})),e),r.encode=t=>pe(t,r.codec()),r.decode=t=>de(t,r.codec())})(Os||(Os={}));var i0=class{_key;constructor(e){this._key=Mu(e,Bu)}async verify(e,t){return rC(this._key,t,e)}marshal(){return this._key}get bytes(){return es.encode({Type:Ht.Ed25519,Data:this.marshal()}).subarray()}equals(e){return fe(this.bytes,e.bytes)}async hash(){let{bytes:e}=await xr.digest(this.bytes);return e}},za=class{_key;_publicKey;constructor(e,t){this._key=Mu(e,Bs),this._publicKey=Mu(t,Bu)}async sign(e){return tC(this._key,e)}get public(){return new i0(this._publicKey)}marshal(){return this._key}get bytes(){return Os.encode({Type:Ht.Ed25519,Data:this.marshal()}).subarray()}equals(e){return fe(this.bytes,e.bytes)}async hash(){let{bytes:e}=await xr.digest(this.bytes);return e}async id(){let e=Do.digest(this.public.bytes);return Er.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Lu(this.bytes,e);throw new ut(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function AQ(r){if(r.length>Bs){r=Mu(r,Bs+Bu);let n=r.subarray(0,Bs),i=r.subarray(Bs,r.length);return new za(n,i)}r=Mu(r,Bs);let e=r.subarray(0,Bs),t=r.subarray(Bu);return new za(e,t)}function TQ(r){return r=Mu(r,Bu),new i0(r)}async function DQ(){let{privateKey:r,publicKey:e}=await JD();return new za(r,e)}async function sC(r){let{privateKey:e,publicKey:t}=await eC(r);return new za(e,t)}function Mu(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new ut(`Key must be a Uint8Array of length ${e}, got ${r.length}`,"ERR_INVALID_KEY_TYPE");return r}var Nxe=X(kt(),1),Bxe=X(Ul(),1),oC=X(qe(),1);function Ii(r,e){let t=Uint8Array.from(r.abs().toByteArray());if(t=t[0]===0?t.subarray(1):t,e!=null){if(t.length>e)throw new Error("byte array longer than desired length");t=ve([new Uint8Array(e-t.length),t])}return U(t,"base64url")}function xn(r){let e=aC(r);return new oC.default.jsbn.BigInteger(U(e,"base16"),16)}function aC(r,e){let t=G(r,"base64urlpad");if(e!=null){if(t.length>e)throw new Error("byte array longer than desired length");t=ve([new Uint8Array(e-t.length),t])}return t}var CQ={"P-256":256,"P-384":384,"P-521":521},PQ=Object.keys(CQ),Hxe=PQ.join(" / ");var Wy={};be(Wy,{RsaPrivateKey:()=>Hu,RsaPublicKey:()=>l0,fromJwk:()=>rX,generateKeyPair:()=>nX,unmarshalRsaPrivateKey:()=>eX,unmarshalRsaPublicKey:()=>tX});var u0=X(qe(),1);var Tve=X(q3(),1);var NQ=X(la(),1);var He=BigInt(0),Et=BigInt(1),Lo=BigInt(2),o0=BigInt(3),cC=BigInt(8),Mt=Object.freeze({a:He,b:BigInt(7),P:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:Et,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee")}),uC=(r,e)=>(r+e/Lo)/e,Lp={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar(r){let{n:e}=Mt,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-Et*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),i=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),s=t,o=BigInt("0x100000000000000000000000000000000"),a=uC(s*r,e),c=uC(-n*r,e),u=se(r-a*t-c*i,e),l=se(-a*n-c*s,e),f=u>o,h=l>o;if(f&&(u=e-u),h&&(l=e-l),u>o||l>o)throw new Error("splitScalarEndo: Endomorphism failed, k="+r);return{k1neg:f,k1:u,k2neg:h,k2:l}}},Ai=32,qu=32,BQ=32,lC=Ai+1,fC=2*Ai+1;function hC(r){let{a:e,b:t}=Mt,n=se(r*r),i=se(n*r);return se(i+e*r+t)}var Mp=Mt.a===He,Kp=class extends Error{constructor(e){super(e)}};function dC(r){if(!(r instanceof Kr))throw new TypeError("JacobianPoint expected")}var Kr=class r{constructor(e,t,n){this.x=e,this.y=t,this.z=n}static fromAffine(e){if(!(e instanceof Tt))throw new TypeError("JacobianPoint#fromAffine: expected Point");return e.equals(Tt.ZERO)?r.ZERO:new r(e.x,e.y,Et)}static toAffineBatch(e){let t=FQ(e.map(n=>n.z));return e.map((n,i)=>n.toAffine(t[i]))}static normalizeZ(e){return r.toAffineBatch(e).map(r.fromAffine)}equals(e){dC(e);let{x:t,y:n,z:i}=this,{x:s,y:o,z:a}=e,c=se(i*i),u=se(a*a),l=se(t*u),f=se(s*c),h=se(se(n*a)*u),d=se(se(o*i)*c);return l===f&&h===d}negate(){return new r(this.x,se(-this.y),this.z)}double(){let{x:e,y:t,z:n}=this,i=se(e*e),s=se(t*t),o=se(s*s),a=e+s,c=se(Lo*(se(a*a)-i-o)),u=se(o0*i),l=se(u*u),f=se(l-Lo*c),h=se(u*(c-f)-cC*o),d=se(Lo*t*n);return new r(f,h,d)}add(e){dC(e);let{x:t,y:n,z:i}=this,{x:s,y:o,z:a}=e;if(s===He||o===He)return this;if(t===He||n===He)return e;let c=se(i*i),u=se(a*a),l=se(t*u),f=se(s*c),h=se(se(n*a)*u),d=se(se(o*i)*c),p=se(f-l),m=se(d-h);if(p===He)return m===He?this.double():r.ZERO;let g=se(p*p),y=se(p*g),b=se(l*g),w=se(m*m-y-Lo*b),_=se(m*(b-w)-h*y),x=se(i*a*p);return new r(w,_,x)}subtract(e){return this.add(e.negate())}multiplyUnsafe(e){let t=r.ZERO;if(typeof e=="bigint"&&e===He)return t;let n=gC(e);if(n===Et)return this;if(!Mp){let f=t,h=this;for(;n>He;)n&Et&&(f=f.add(h)),h=h.double(),n>>=Et;return f}let{k1neg:i,k1:s,k2neg:o,k2:a}=Lp.splitScalar(n),c=t,u=t,l=this;for(;s>He||a>He;)s&Et&&(c=c.add(l)),a&Et&&(u=u.add(l)),l=l.double(),s>>=Et,a>>=Et;return i&&(c=c.negate()),o&&(u=u.negate()),u=new r(se(u.x*Lp.beta),u.y,u.z),c.add(u)}precomputeWindow(e){let t=Mp?128/e+1:256/e+1,n=[],i=this,s=i;for(let o=0;o<t;o++){s=i,n.push(s);for(let a=1;a<2**(e-1);a++)s=s.add(i),n.push(s);i=s.double()}return n}wNAF(e,t){!t&&this.equals(r.BASE)&&(t=Tt.BASE);let n=t&&t._WINDOW_SIZE||1;if(256%n)throw new Error("Point#wNAF: Invalid precomputation window, must be power of 2");let i=t&&Ky.get(t);i||(i=this.precomputeWindow(n),t&&n!==1&&(i=r.normalizeZ(i),Ky.set(t,i)));let s=r.ZERO,o=r.BASE,a=1+(Mp?128/n:256/n),c=2**(n-1),u=BigInt(2**n-1),l=2**n,f=BigInt(n);for(let h=0;h<a;h++){let d=h*c,p=Number(e&u);e>>=f,p>c&&(p-=l,e+=Et);let m=d,g=d+Math.abs(p)-1,y=h%2!==0,b=p<0;p===0?o=o.add(Up(y,i[m])):s=s.add(Up(b,i[g]))}return{p:s,f:o}}multiply(e,t){let n=gC(e),i,s;if(Mp){let{k1neg:o,k1:a,k2neg:c,k2:u}=Lp.splitScalar(n),{p:l,f}=this.wNAF(a,t),{p:h,f:d}=this.wNAF(u,t);l=Up(o,l),h=Up(c,h),h=new r(se(h.x*Lp.beta),h.y,h.z),i=l.add(h),s=f.add(d)}else{let{p:o,f:a}=this.wNAF(n,t);i=o,s=a}return r.normalizeZ([i,s])[0]}toAffine(e){let{x:t,y:n,z:i}=this,s=this.equals(r.ZERO);e==null&&(e=s?cC:$u(i));let o=e,a=se(o*o),c=se(a*o),u=se(t*a),l=se(n*c),f=se(i*o);if(s)return Tt.ZERO;if(f!==Et)throw new Error("invZ was invalid");return new Tt(u,l)}};Kr.BASE=new Kr(Mt.Gx,Mt.Gy,Et);Kr.ZERO=new Kr(He,Et,He);function Up(r,e){let t=e.negate();return r?t:e}var Ky=new WeakMap,Tt=class r{constructor(e,t){this.x=e,this.y=t}_setWindowSize(e){this._WINDOW_SIZE=e,Ky.delete(this)}hasEvenY(){return this.y%Lo===He}static fromCompressedHex(e){let t=e.length===32,n=Mo(t?e:e.subarray(1));if(!Fy(n))throw new Error("Point is not on curve");let i=hC(n),s=UQ(i),o=(s&Et)===Et;t?o&&(s=se(-s)):(e[0]&1)===1!==o&&(s=se(-s));let a=new r(n,s);return a.assertValidity(),a}static fromUncompressedHex(e){let t=Mo(e.subarray(1,Ai+1)),n=Mo(e.subarray(Ai+1,Ai*2+1)),i=new r(t,n);return i.assertValidity(),i}static fromHex(e){let t=zu(e),n=t.length,i=t[0];if(n===Ai)return this.fromCompressedHex(t);if(n===lC&&(i===2||i===3))return this.fromCompressedHex(t);if(n===fC&&i===4)return this.fromUncompressedHex(t);throw new Error(`Point.fromHex: received invalid point. Expected 32-${lC} compressed bytes or ${fC} uncompressed bytes, not ${n}`)}static fromPrivateKey(e){return r.BASE.multiply(Vp(e))}static fromSignature(e,t,n){let{r:i,s}=yC(t);if(![0,1,2,3].includes(n))throw new Error("Cannot recover: invalid recovery bit");let o=zy(zu(e)),{n:a}=Mt,c=n===2||n===3?i+a:i,u=$u(c,a),l=se(-o*u,a),f=se(s*u,a),h=n&1?"03":"02",d=r.fromHex(h+Fu(c)),p=r.BASE.multiplyAndAddUnsafe(d,l,f);if(!p)throw new Error("Cannot recover signature: point at infinify");return p.assertValidity(),p}toRawBytes(e=!1){return $a(this.toHex(e))}toHex(e=!1){let t=Fu(this.x);return e?`${this.hasEvenY()?"02":"03"}${t}`:`04${t}${Fu(this.y)}`}toHexX(){return this.toHex(!0).slice(2)}toRawX(){return this.toRawBytes(!0).slice(1)}assertValidity(){let e="Point is not on elliptic curve",{x:t,y:n}=this;if(!Fy(t)||!Fy(n))throw new Error(e);let i=se(n*n),s=hC(t);if(se(i-s)!==He)throw new Error(e)}equals(e){return this.x===e.x&&this.y===e.y}negate(){return new r(this.x,se(-this.y))}double(){return Kr.fromAffine(this).double().toAffine()}add(e){return Kr.fromAffine(this).add(Kr.fromAffine(e)).toAffine()}subtract(e){return this.add(e.negate())}multiply(e){return Kr.fromAffine(this).multiply(e,this).toAffine()}multiplyAndAddUnsafe(e,t,n){let i=Kr.fromAffine(this),s=t===He||t===Et||this!==r.BASE?i.multiplyUnsafe(t):i.multiply(t),o=Kr.fromAffine(e).multiplyUnsafe(n),a=s.add(o);return a.equals(Kr.ZERO)?void 0:a.toAffine()}};Tt.BASE=new Tt(Mt.Gx,Mt.Gy);Tt.ZERO=new Tt(He,He);function pC(r){return Number.parseInt(r[0],16)>=8?"00"+r:r}function mC(r){if(r.length<2||r[0]!==2)throw new Error(`Invalid signature integer tag: ${Vu(r)}`);let e=r[1],t=r.subarray(2,e+2);if(!e||t.length!==e)throw new Error("Invalid signature integer: wrong length");if(t[0]===0&&t[1]<=127)throw new Error("Invalid signature integer: trailing length");return{data:Mo(t),left:r.subarray(e+2)}}function OQ(r){if(r.length<2||r[0]!=48)throw new Error(`Invalid signature tag: ${Vu(r)}`);if(r[1]!==r.length-2)throw new Error("Invalid signature: incorrect length");let{data:e,left:t}=mC(r.subarray(2)),{data:n,left:i}=mC(t);if(i.length)throw new Error(`Invalid signature: left bytes after parsing: ${Vu(i)}`);return{r:e,s:n}}var Uu=class r{constructor(e,t){this.r=e,this.s=t,this.assertValidity()}static fromCompact(e){let t=e instanceof Uint8Array,n="Signature.fromCompact";if(typeof e!="string"&&!t)throw new TypeError(`${n}: Expected string or Uint8Array`);let i=t?Vu(e):e;if(i.length!==128)throw new Error(`${n}: Expected 64-byte hex`);return new r(qp(i.slice(0,64)),qp(i.slice(64,128)))}static fromDER(e){let t=e instanceof Uint8Array;if(typeof e!="string"&&!t)throw new TypeError("Signature.fromDER: Expected string or Uint8Array");let{r:n,s:i}=OQ(t?e:$a(e));return new r(n,i)}static fromHex(e){return this.fromDER(e)}assertValidity(){let{r:e,s:t}=this;if(!c0(e))throw new Error("Invalid Signature: r must be 0 < r < n");if(!c0(t))throw new Error("Invalid Signature: s must be 0 < s < n")}hasHighS(){let e=Mt.n>>Et;return this.s>e}normalizeS(){return this.hasHighS()?new r(this.r,se(-this.s,Mt.n)):this}toDERRawBytes(){return $a(this.toDERHex())}toDERHex(){let e=pC(s0(this.s)),t=pC(s0(this.r)),n=e.length/2,i=t.length/2,s=s0(n),o=s0(i);return`30${s0(i+n+4)}02${o}${t}02${s}${e}`}toRawBytes(){return this.toDERRawBytes()}toHex(){return this.toDERHex()}toCompactRawBytes(){return $a(this.toCompactHex())}toCompactHex(){return Fu(this.r)+Fu(this.s)}};function Oo(...r){if(!r.every(n=>n instanceof Uint8Array))throw new Error("Uint8Array list expected");if(r.length===1)return r[0];let e=r.reduce((n,i)=>n+i.length,0),t=new Uint8Array(e);for(let n=0,i=0;n<r.length;n++){let s=r[n];t.set(s,i),i+=s.length}return t}var LQ=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function Vu(r){if(!(r instanceof Uint8Array))throw new Error("Expected Uint8Array");let e="";for(let t=0;t<r.length;t++)e+=LQ[r[t]];return e}var MQ=BigInt("0x10000000000000000000000000000000000000000000000000000000000000000");function Fu(r){if(typeof r!="bigint")throw new Error("Expected bigint");if(!(He<=r&&r<MQ))throw new Error("Expected number 0 <= n < 2^256");return r.toString(16).padStart(64,"0")}function qy(r){let e=$a(Fu(r));if(e.length!==32)throw new Error("Error: expected 32 bytes");return e}function s0(r){let e=r.toString(16);return e.length&1?`0${e}`:e}function qp(r){if(typeof r!="string")throw new TypeError("hexToNumber: expected string, got "+typeof r);return BigInt(`0x${r}`)}function $a(r){if(typeof r!="string")throw new TypeError("hexToBytes: expected string, got "+typeof r);if(r.length%2)throw new Error("hexToBytes: received invalid unpadded hex"+r.length);let e=new Uint8Array(r.length/2);for(let t=0;t<e.length;t++){let n=t*2,i=r.slice(n,n+2),s=Number.parseInt(i,16);if(Number.isNaN(s)||s<0)throw new Error("Invalid byte sequence");e[t]=s}return e}function Mo(r){return qp(Vu(r))}function zu(r){return r instanceof Uint8Array?Uint8Array.from(r):$a(r)}function gC(r){if(typeof r=="number"&&Number.isSafeInteger(r)&&r>0)return BigInt(r);if(typeof r=="bigint"&&c0(r))return r;throw new TypeError("Expected valid private scalar: 0 < scalar < curve.n")}function se(r,e=Mt.P){let t=r%e;return t>=He?t:e+t}function Xn(r,e){let{P:t}=Mt,n=r;for(;e-- >He;)n*=n,n%=t;return n}function UQ(r){let{P:e}=Mt,t=BigInt(6),n=BigInt(11),i=BigInt(22),s=BigInt(23),o=BigInt(44),a=BigInt(88),c=r*r*r%e,u=c*c*r%e,l=Xn(u,o0)*u%e,f=Xn(l,o0)*u%e,h=Xn(f,Lo)*c%e,d=Xn(h,n)*h%e,p=Xn(d,i)*d%e,m=Xn(p,o)*p%e,g=Xn(m,a)*m%e,y=Xn(g,o)*p%e,b=Xn(y,o0)*u%e,w=Xn(b,s)*d%e,_=Xn(w,t)*c%e,x=Xn(_,Lo);if(x*x%e!==r)throw new Error("Cannot find square root");return x}function $u(r,e=Mt.P){if(r===He||e<=He)throw new Error(`invert: expected positive integers, got n=${r} mod=${e}`);let t=se(r,e),n=e,i=He,s=Et,o=Et,a=He;for(;t!==He;){let u=n/t,l=n%t,f=i-o*u,h=s-a*u;n=t,t=l,i=o,s=a,o=f,a=h}if(n!==Et)throw new Error("invert: does not exist");return se(i,e)}function FQ(r,e=Mt.P){let t=new Array(r.length),n=r.reduce((s,o,a)=>o===He?s:(t[a]=s,se(s*o,e)),Et),i=$u(n,e);return r.reduceRight((s,o,a)=>o===He?s:(t[a]=se(s*t[a],e),se(s*o,e)),i),t}function KQ(r){let e=r.length*8-qu*8,t=Mo(r);return e>0?t>>BigInt(e):t}function zy(r,e=!1){let t=KQ(r);if(e)return t;let{n}=Mt;return t>=n?t-n:t}var Ku,a0,Vy=class{constructor(e,t){if(this.hashLen=e,this.qByteLen=t,typeof e!="number"||e<2)throw new Error("hashLen must be a number");if(typeof t!="number"||t<2)throw new Error("qByteLen must be a number");this.v=new Uint8Array(e).fill(1),this.k=new Uint8Array(e).fill(0),this.counter=0}hmac(...e){return Ti.hmacSha256(this.k,...e)}hmacSync(...e){return a0(this.k,...e)}checkSync(){if(typeof a0!="function")throw new Kp("hmacSha256Sync needs to be set")}incr(){if(this.counter>=1e3)throw new Error("Tried 1,000 k values for sign(), all were invalid");this.counter+=1}async reseed(e=new Uint8Array){this.k=await this.hmac(this.v,Uint8Array.from([0]),e),this.v=await this.hmac(this.v),e.length!==0&&(this.k=await this.hmac(this.v,Uint8Array.from([1]),e),this.v=await this.hmac(this.v))}reseedSync(e=new Uint8Array){this.checkSync(),this.k=this.hmacSync(this.v,Uint8Array.from([0]),e),this.v=this.hmacSync(this.v),e.length!==0&&(this.k=this.hmacSync(this.v,Uint8Array.from([1]),e),this.v=this.hmacSync(this.v))}async generate(){this.incr();let e=0,t=[];for(;e<this.qByteLen;){this.v=await this.hmac(this.v);let n=this.v.slice();t.push(n),e+=this.v.length}return Oo(...t)}generateSync(){this.checkSync(),this.incr();let e=0,t=[];for(;e<this.qByteLen;){this.v=this.hmacSync(this.v);let n=this.v.slice();t.push(n),e+=this.v.length}return Oo(...t)}};function c0(r){return He<r&&r<Mt.n}function Fy(r){return He<r&&r<Mt.P}function qQ(r,e,t,n=!0){let{n:i}=Mt,s=zy(r,!0);if(!c0(s))return;let o=$u(s,i),a=Tt.BASE.multiply(s),c=se(a.x,i);if(c===He)return;let u=se(o*se(e+t*c,i),i);if(u===He)return;let l=new Uu(c,u),f=(a.x===l.r?0:2)|Number(a.y&Et);return n&&l.hasHighS()&&(l=l.normalizeS(),f^=1),{sig:l,recovery:f}}function Vp(r){let e;if(typeof r=="bigint")e=r;else if(typeof r=="number"&&Number.isSafeInteger(r)&&r>0)e=BigInt(r);else if(typeof r=="string"){if(r.length!==2*qu)throw new Error("Expected 32 bytes of private key");e=qp(r)}else if(r instanceof Uint8Array){if(r.length!==qu)throw new Error("Expected 32 bytes of private key");e=Mo(r)}else throw new TypeError("Expected valid private key");if(!c0(e))throw new Error("Expected private key: 0 < key < n");return e}function VQ(r){return r instanceof Tt?(r.assertValidity(),r):Tt.fromHex(r)}function yC(r){if(r instanceof Uu)return r.assertValidity(),r;try{return Uu.fromDER(r)}catch{return Uu.fromCompact(r)}}function $y(r,e=!1){return Tt.fromPrivateKey(r).toRawBytes(e)}function bC(r){let e=r.length>Ai?r.slice(0,Ai):r;return Mo(e)}function zQ(r){let e=bC(r),t=se(e,Mt.n);return wC(t<He?e:t)}function wC(r){return qy(r)}function $Q(r,e,t){if(r==null)throw new Error(`sign: expected valid message hash, not "${r}"`);let n=zu(r),i=Vp(e),s=[wC(i),zQ(n)];if(t!=null){t===!0&&(t=Ti.randomBytes(Ai));let c=zu(t);if(c.length!==Ai)throw new Error(`sign: Expected ${Ai} bytes of extra data`);s.push(c)}let o=Oo(...s),a=bC(n);return{seed:o,m:a,d:i}}function HQ(r,e){let{sig:t,recovery:n}=r,{der:i,recovered:s}=Object.assign({canonical:!0,der:!0},e),o=i?t.toDERRawBytes():t.toCompactRawBytes();return s?[o,n]:o}async function EC(r,e,t={}){let{seed:n,m:i,d:s}=$Q(r,e,t.extraEntropy),o=new Vy(BQ,qu);await o.reseed(n);let a;for(;!(a=qQ(await o.generate(),i,s,t.canonical));)await o.reseed();return HQ(a,t)}var GQ={strict:!0};function xC(r,e,t,n=GQ){let i;try{i=yC(r),e=zu(e)}catch{return!1}let{r:s,s:o}=i;if(n.strict&&i.hasHighS())return!1;let a=zy(e),c;try{c=VQ(t)}catch{return!1}let{n:u}=Mt,l=$u(o,u),f=se(a*l,u),h=se(s*l,u),d=Tt.BASE.multiplyAndAddUnsafe(c,f,h);return d?se(d.x,u)===s:!1}Tt.BASE._setWindowSize(8);var vn={node:NQ,web:typeof self=="object"&&"crypto"in self?self.crypto:void 0};var Fp={},Ti={bytesToHex:Vu,hexToBytes:$a,concatBytes:Oo,mod:se,invert:$u,isValidPrivateKey(r){try{return Vp(r),!0}catch{return!1}},_bigintTo32Bytes:qy,_normalizePrivateKey:Vp,hashToPrivateKey:r=>{r=zu(r);let e=qu+8;if(r.length<e||r.length>1024)throw new Error("Expected valid bytes of private key as per FIPS 186");let t=se(Mo(r),Mt.n-Et)+Et;return qy(t)},randomBytes:(r=32)=>{if(vn.web)return vn.web.getRandomValues(new Uint8Array(r));if(vn.node){let{randomBytes:e}=vn.node;return Uint8Array.from(e(r))}else throw new Error("The environment doesn't have randomBytes function")},randomPrivateKey:()=>Ti.hashToPrivateKey(Ti.randomBytes(qu+8)),precompute(r=8,e=Tt.BASE){let t=e===Tt.BASE?e:new Tt(e.x,e.y);return t._setWindowSize(r),t.multiply(o0),t},sha256:async(...r)=>{if(vn.web){let e=await vn.web.subtle.digest("SHA-256",Oo(...r));return new Uint8Array(e)}else if(vn.node){let{createHash:e}=vn.node,t=e("sha256");return r.forEach(n=>t.update(n)),Uint8Array.from(t.digest())}else throw new Error("The environment doesn't have sha256 function")},hmacSha256:async(r,...e)=>{if(vn.web){let t=await vn.web.subtle.importKey("raw",r,{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign"]),n=Oo(...e),i=await vn.web.subtle.sign("HMAC",t,n);return new Uint8Array(i)}else if(vn.node){let{createHmac:t}=vn.node,n=t("sha256",r);return e.forEach(i=>n.update(i)),Uint8Array.from(n.digest())}else throw new Error("The environment doesn't have hmac-sha256 function")},sha256Sync:void 0,hmacSha256Sync:void 0,taggedHash:async(r,...e)=>{let t=Fp[r];if(t===void 0){let n=await Ti.sha256(Uint8Array.from(r,i=>i.charCodeAt(0)));t=Oo(n,n),Fp[r]=t}return Ti.sha256(t,...e)},taggedHashSync:(r,...e)=>{if(typeof Ku!="function")throw new Kp("sha256Sync is undefined, you need to set it");let t=Fp[r];if(t===void 0){let n=Ku(Uint8Array.from(r,i=>i.charCodeAt(0)));t=Oo(n,n),Fp[r]=t}return Ku(t,...e)},_JacobianPoint:Kr};Object.defineProperties(Ti,{sha256Sync:{configurable:!1,get(){return Ku},set(r){Ku||(Ku=r)}},hmacSha256Sync:{configurable:!1,get(){return a0},set(r){a0||(a0=r)}}});function zp(r){if(isNaN(r)||r<=0)throw new ut("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return Ti.randomBytes(r)}var lve=X(xc(),1),Hy=X(qe(),1);function vC(r,e){return e.map(t=>xn(r[t]))}function _C(r){return Hy.default.pki.setRsaPrivateKey(...vC(r,["n","e","d","p","q","dp","dq","qi"]))}function SC(r){return Hy.default.pki.setRsaPublicKey(...vC(r,["n","e"]))}var Ha={};be(Ha,{jwkToPkcs1:()=>QQ,jwkToPkix:()=>jQ,pkcs1ToJwk:()=>YQ,pkixToJwk:()=>XQ});var dve=X(aa(),1),pve=X(xc(),1);var Ls=X(qe(),1);function YQ(r){let e=Ls.default.asn1.fromDer(U(r,"ascii")),t=Ls.default.pki.privateKeyFromAsn1(e);return{kty:"RSA",n:Ii(t.n),e:Ii(t.e),d:Ii(t.d),p:Ii(t.p),q:Ii(t.q),dp:Ii(t.dP),dq:Ii(t.dQ),qi:Ii(t.qInv),alg:"RS256"}}function QQ(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 ut("JWK was missing components","ERR_INVALID_PARAMETERS");let e=Ls.default.pki.privateKeyToAsn1({n:xn(r.n),e:xn(r.e),d:xn(r.d),p:xn(r.p),q:xn(r.q),dP:xn(r.dp),dQ:xn(r.dq),qInv:xn(r.qi)});return G(Ls.default.asn1.toDer(e).getBytes(),"ascii")}function XQ(r){let e=Ls.default.asn1.fromDer(U(r,"ascii")),t=Ls.default.pki.publicKeyFromAsn1(e);return{kty:"RSA",n:Ii(t.n),e:Ii(t.e)}}function jQ(r){if(r.n==null||r.e==null)throw new ut("JWK was missing components","ERR_INVALID_PARAMETERS");let e=Ls.default.pki.publicKeyToAsn1({n:xn(r.n),e:xn(r.e)});return G(Ls.default.asn1.toDer(e).getBytes(),"ascii")}async function RC(r){let e=await jr.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 TC(e);return{privateKey:t[0],publicKey:t[1]}}async function Gy(r){let t=[await jr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await ZQ(r)],n=await TC({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function IC(r,e){let t=await jr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await jr.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,Uint8Array.from(e));return new Uint8Array(n,0,n.byteLength)}async function AC(r,e,t){let n=await jr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return jr.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t)}async function TC(r){if(r.privateKey==null||r.publicKey==null)throw new ut("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([jr.get().subtle.exportKey("jwk",r.privateKey),jr.get().subtle.exportKey("jwk",r.publicKey)])}async function ZQ(r){return jr.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 DC(r,e,t,n){let i=e?SC(r):_C(r),s=U(Uint8Array.from(t),"ascii"),o=n(s,i);return G(o,"ascii")}function CC(r,e){return DC(r,!0,e,(t,n)=>n.encrypt(t))}function PC(r,e){return DC(r,!1,e,(t,n)=>n.decrypt(t))}var l0=class{_key;constructor(e){this._key=e}async verify(e,t){return AC(this._key,t,e)}marshal(){return Ha.jwkToPkix(this._key)}get bytes(){return es.encode({Type:Ht.RSA,Data:this.marshal()}).subarray()}encrypt(e){return CC(this._key,e)}equals(e){return fe(this.bytes,e.bytes)}async hash(){let{bytes:e}=await xr.digest(this.bytes);return e}},Hu=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return zp(16)}async sign(e){return IC(this._key,e)}get public(){if(this._publicKey==null)throw new ut("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new l0(this._publicKey)}decrypt(e){return PC(this._key,e)}marshal(){return Ha.jwkToPkcs1(this._key)}get bytes(){return Os.encode({Type:Ht.RSA,Data:this.marshal()}).subarray()}equals(e){return fe(this.bytes,e.bytes)}async hash(){let{bytes:e}=await xr.digest(this.bytes);return e}async id(){let e=await this.public.hash();return U(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8"){let n=new u0.default.util.ByteBuffer(this.marshal()),i=u0.default.asn1.fromDer(n),s=u0.default.pki.privateKeyFromAsn1(i),o={algorithm:"aes256",count:1e4,saltSize:128/8,prfAlgorithm:"sha512"};return u0.default.pki.encryptRsaPrivateKey(s,e,o)}else{if(t==="libp2p-key")return Lu(this.bytes,e);throw new ut(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}}};async function eX(r){let e=Ha.pkcs1ToJwk(r),t=await Gy(e);return new Hu(t.privateKey,t.publicKey)}function tX(r){let e=Ha.pkixToJwk(r);return new l0(e)}async function rX(r){let e=await Gy(r);return new Hu(e.privateKey,e.publicKey)}async function nX(r){let e=await RC(r);return new Hu(e.privateKey,e.publicKey)}var Qy={};be(Qy,{Secp256k1PrivateKey:()=>h0,Secp256k1PublicKey:()=>f0,generateKeyPair:()=>aX,unmarshalSecp256k1PrivateKey:()=>sX,unmarshalSecp256k1PublicKey:()=>oX});function kC(){return Ti.randomPrivateKey()}async function NC(r,e){let{digest:t}=await xr.digest(e);try{return await EC(t,r)}catch(n){throw new ut(String(n),"ERR_INVALID_INPUT")}}async function BC(r,e,t){try{let{digest:n}=await xr.digest(t);return xC(e,n,r)}catch(n){throw new ut(String(n),"ERR_INVALID_INPUT")}}function OC(r){return Tt.fromHex(r).toRawBytes(!0)}function LC(r){try{$y(r,!0)}catch(e){throw new ut(String(e),"ERR_INVALID_PRIVATE_KEY")}}function Yy(r){try{Tt.fromHex(r)}catch(e){throw new ut(String(e),"ERR_INVALID_PUBLIC_KEY")}}function MC(r){try{return $y(r,!0)}catch(e){throw new ut(String(e),"ERR_INVALID_PRIVATE_KEY")}}var f0=class{_key;constructor(e){Yy(e),this._key=e}async verify(e,t){return BC(this._key,t,e)}marshal(){return OC(this._key)}get bytes(){return es.encode({Type:Ht.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return fe(this.bytes,e.bytes)}async hash(){let{bytes:e}=await xr.digest(this.bytes);return e}},h0=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??MC(e),LC(this._key),Yy(this._publicKey)}async sign(e){return NC(this._key,e)}get public(){return new f0(this._publicKey)}marshal(){return this._key}get bytes(){return Os.encode({Type:Ht.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return fe(this.bytes,e.bytes)}async hash(){let{bytes:e}=await xr.digest(this.bytes);return e}async id(){let e=await this.public.hash();return U(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Lu(this.bytes,e);throw new ut(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function sX(r){return new h0(r)}function oX(r){return new f0(r)}async function aX(){let r=kC();return new h0(r)}var $p={rsa:Wy,ed25519:Uy,secp256k1:Qy};function uX(r){let e=Object.keys($p).join(" / ");return new ut(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function Xy(r){let e=es.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case Ht.RSA:return $p.rsa.unmarshalRsaPublicKey(t);case Ht.Ed25519:return $p.ed25519.unmarshalEd25519PublicKey(t);case Ht.Secp256k1:return $p.secp256k1.unmarshalSecp256k1PublicKey(t);default:throw uX(e.Type??"RSA")}}var _n=X(A0(),1);var jy={};be(jy,{base32:()=>Uo,base32hex:()=>dX,base32hexpad:()=>mX,base32hexpadupper:()=>gX,base32hexupper:()=>pX,base32pad:()=>fX,base32padupper:()=>hX,base32upper:()=>lX,base32z:()=>yX});var Uo=Lt({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),lX=Lt({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),fX=Lt({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),hX=Lt({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),dX=Lt({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),pX=Lt({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),mX=Lt({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),gX=Lt({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),yX=Lt({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});_n.default.formatters.b=r=>r==null?"undefined":Er.baseEncode(r);_n.default.formatters.t=r=>r==null?"undefined":Uo.baseEncode(r);_n.default.formatters.m=r=>r==null?"undefined":Ou.baseEncode(r);_n.default.formatters.p=r=>r==null?"undefined":r.toString();_n.default.formatters.c=r=>r==null?"undefined":r.toString();_n.default.formatters.k=r=>r==null?"undefined":r.toString();_n.default.formatters.a=r=>r==null?"undefined":r.toString();function bX(r){let e=()=>{};return e.enabled=!1,e.color="",e.diff=0,e.log=()=>{},e.namespace=r,e.destroy=()=>!0,e.extend=()=>e,e}function Hp(r){let e=bX(`${r}:trace`);return _n.default.enabled(`${r}:trace`)&&_n.default.names.map(t=>t.toString()).find(t=>t.includes(":trace"))!=null&&(e=(0,_n.default)(`${r}:trace`)),Object.assign((0,_n.default)(r),{error:(0,_n.default)(`${r}:error`),trace:e})}var UC=Symbol.for("@libp2p/peer-id");var Zy={};be(Zy,{identity:()=>wX});var wX=Du({prefix:"\0",name:"identity",encode:r=>ND(r),decode:r=>kD(r)});var Jy={};be(Jy,{base2:()=>EX});var EX=Lt({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var e5={};be(e5,{base8:()=>xX});var xX=Lt({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var t5={};be(t5,{base10:()=>vX});var vX=To({prefix:"9",name:"base10",alphabet:"0123456789"});var r5={};be(r5,{base16:()=>_X,base16upper:()=>SX});var _X=Lt({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),SX=Lt({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var n5={};be(n5,{base36:()=>RX,base36upper:()=>IX});var RX=To({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),IX=To({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var i5={};be(i5,{base256emoji:()=>PX});var FC=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}"),AX=FC.reduce((r,e,t)=>(r[t]=e,r),[]),TX=FC.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function DX(r){return r.reduce((e,t)=>(e+=AX[t],e),"")}function CX(r){let e=[];for(let t of r){let n=TX[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var PX=Du({prefix:"\u{1F680}",name:"base256emoji",encode:DX,decode:CX});var l_e=new TextEncoder,f_e=new TextDecoder;var KC=(r,e)=>{let{bytes:t,version:n}=r;switch(n){case 0:return OX(t,s5(r),e||Er.encoder);default:return LX(t,s5(r),e||Uo.encoder)}};var qC=new WeakMap,s5=r=>{let e=qC.get(r);if(e==null){let t=new Map;return qC.set(r,t),t}return e},Ga=class r{constructor(e,t,n,i){this.code=t,this.version=e,this.multihash=n,this.bytes=i,this["/"]=i}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!==d0)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==MX)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=Zi(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&&e.code===n.code&&e.version===n.version&&FD(e.multihash,n.multihash)}toString(e){return KC(this,e)}toJSON(){return{"/":KC(this)}}link(){return this}get[Symbol.toStringTag](){return"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:i,multihash:s,bytes:o}=t;return new r(n,i,s,o||VC(n,i,s.bytes))}else if(t[UX]===!0){let{version:n,multihash:i,code:s}=t,o=Zf(i);return r.create(n,s,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!==d0)throw new Error(`Version 0 CID must use dag-pb (code: ${d0}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let i=VC(e,t,n.bytes);return new r(e,t,n,i)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,d0,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,i=Ns(e.subarray(n,n+t.multihashSize));if(i.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=i.subarray(t.multihashSize-t.digestSize),o=new ku(t.multihashCode,t.digestSize,s,i);return[t.version===0?r.createV0(o):r.createV1(t.codec,o),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[f,h]=jf(e.subarray(t));return t+=h,f},i=n(),s=d0;if(i===18?(i=0,t=0):s=n(),i!==0&&i!==1)throw new RangeError(`Invalid CID version ${i}`);let o=t,a=n(),c=n(),u=t+c,l=u-o;return{version:i,codec:s,multihashCode:a,digestSize:c,multihashSize:l,size:u}}static parse(e,t){let[n,i]=BX(e,t),s=r.decode(i);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return s5(s).set(n,e),s}},BX=(r,e)=>{switch(r[0]){case"Q":{let t=e||Er;return[Er.prefix,t.decode(`${Er.prefix}${r}`)]}case Er.prefix:{let t=e||Er;return[Er.prefix,t.decode(r)]}case Uo.prefix:{let t=e||Uo;return[Uo.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)]}}},OX=(r,e,t)=>{let{prefix:n}=t;if(n!==Er.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let i=e.get(n);if(i==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return i},LX=(r,e,t)=>{let{prefix:n}=t,i=e.get(n);if(i==null){let s=t.encode(r);return e.set(n,s),s}else return i},d0=112,MX=18,VC=(r,e,t)=>{let n=Pu(r),i=n+Pu(e),s=new Uint8Array(i+t.byteLength);return Cu(r,s,0),Cu(e,s,n),s.set(t,i),s},UX=Symbol.for("@ipld/js-cid/CID");var o5={...Zy,...Jy,...e5,...t5,...r5,...jy,...n5,...Ey,...By,...i5},x_e={...Ry,...vy};var FX=Symbol.for("nodejs.util.inspect.custom"),zC=Object.values(o5).map(r=>r.decoder).reduce((r,e)=>r.or(e),o5.identity.decoder),$C=114,a5=36,c5=37,p0=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()})`}[UC]=!0;toString(){return this.string==null&&(this.string=Er.encode(this.multihash.bytes).slice(1)),this.string}toCID(){return Ga.createV1($C,this.multihash)}toBytes(){return this.multihash.bytes}toJSON(){return this.toString()}equals(e){if(e instanceof Uint8Array)return fe(this.multihash.bytes,e);if(typeof e=="string")return KX(e).equals(this);if(e?.multihash?.bytes!=null)return fe(this.multihash.bytes,e.multihash.bytes);throw new Error("not valid Id")}[FX](){return`PeerId(${this.toString()})`}},Gu=class extends p0{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},Wu=class extends p0{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.multihash.digest}},Yu=class extends p0{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.multihash.digest}};function KX(r,e){if(e=e??zC,r.charAt(0)==="1"||r.charAt(0)==="Q"){let t=Zf(Er.decode(`z${r}`));return r.startsWith("12D")?new Wu({multihash:t}):r.startsWith("16U")?new Yu({multihash:t}):new Gu({multihash:t})}return u5(zC.decode(r))}function u5(r){try{let e=Zf(r);if(e.code===Do.code){if(e.digest.length===a5)return new Wu({multihash:e});if(e.digest.length===c5)return new Yu({multihash:e})}if(e.code===xr.code)return new Gu({multihash:e})}catch{return qX(Ga.decode(r))}throw new Error("Supplied PeerID CID is invalid")}function qX(r){if(r==null||r.multihash==null||r.version==null||r.version===1&&r.code!==$C)throw new Error("Supplied PeerID CID is invalid");let e=r.multihash;if(e.code===xr.code)return new Gu({multihash:r.multihash});if(e.code===Do.code){if(e.digest.length===a5)return new Wu({multihash:r.multihash});if(e.digest.length===c5)return new Yu({multihash:r.multihash})}throw new Error("Supplied PeerID CID is invalid")}async function HC(r,e){return r.length===a5?new Wu({multihash:Zi(Do.code,r),privateKey:e}):r.length===c5?new Yu({multihash:Zi(Do.code,r),privateKey:e}):new Gu({multihash:await xr.digest(r),publicKey:r,privateKey:e})}var VX=["string","number","bigint","symbol"],zX=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","HTMLElement","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function GC(r){if(r===null)return"null";if(r===void 0)return"undefined";if(r===!0||r===!1)return"boolean";let e=typeof r;if(VX.includes(e))return e;if(e==="function")return"Function";if(Array.isArray(r))return"Array";if($X(r))return"Buffer";let t=HX(r);return t||"Object"}function $X(r){return r&&r.constructor&&r.constructor.isBuffer&&r.constructor.isBuffer.call(null,r)}function HX(r){let e=Object.prototype.toString.call(r).slice(8,-1);if(zX.includes(e))return e}var L=class{constructor(e,t,n){this.major=e,this.majorEncoded=e<<5,this.name=t,this.terminal=n}toString(){return`Type[${this.major}].${this.name}`}compare(e){return this.major<e.major?-1:this.major>e.major?1:0}};L.uint=new L(0,"uint",!0);L.negint=new L(1,"negint",!0);L.bytes=new L(2,"bytes",!0);L.string=new L(3,"string",!0);L.array=new L(4,"array",!1);L.map=new L(5,"map",!1);L.tag=new L(6,"tag",!1);L.float=new L(7,"float",!0);L.false=new L(7,"false",!0);L.true=new L(7,"true",!0);L.null=new L(7,"null",!0);L.undefined=new L(7,"undefined",!0);L.break=new L(7,"break",!0);var oe=class{constructor(e,t,n){this.type=e,this.value=t,this.encodedLength=n,this.encodedBytes=void 0,this.byteValue=void 0}toString(){return`Token[${this.type}].${this.value}`}};var Qu=globalThis.process&&!globalThis.process.browser&&globalThis.Buffer&&typeof globalThis.Buffer.isBuffer=="function",GX=new TextDecoder,WX=new TextEncoder;function Gp(r){return Qu&&globalThis.Buffer.isBuffer(r)}function XC(r){return r instanceof Uint8Array?Gp(r)?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r:Uint8Array.from(r)}var jC=Qu?(r,e,t)=>t-e>64?globalThis.Buffer.from(r.subarray(e,t)).toString("utf8"):YC(r,e,t):(r,e,t)=>t-e>64?GX.decode(r.subarray(e,t)):YC(r,e,t),ZC=Qu?r=>r.length>64?globalThis.Buffer.from(r):WC(r):r=>r.length>64?WX.encode(r):WC(r);var Xu=Qu?(r,e,t)=>Gp(r)?new Uint8Array(r.subarray(e,t)):r.slice(e,t):(r,e,t)=>r.slice(e,t),JC=Qu?(r,e)=>(r=r.map(t=>t instanceof Uint8Array?t:globalThis.Buffer.from(t)),XC(globalThis.Buffer.concat(r,e))):(r,e)=>{let t=new Uint8Array(e),n=0;for(let i of r)n+i.length>t.length&&(i=i.subarray(0,t.length-n)),t.set(i,n),n+=i.length;return t},eP=Qu?r=>globalThis.Buffer.allocUnsafe(r):r=>new Uint8Array(r);function tP(r,e){if(Gp(r)&&Gp(e))return r.compare(e);for(let t=0;t<r.length;t++)if(r[t]!==e[t])return r[t]<e[t]?-1:1;return 0}function WC(r,e=1/0){let t,n=r.length,i=null,s=[];for(let o=0;o<n;++o){if(t=r.charCodeAt(o),t>55295&&t<57344){if(!i){if(t>56319){(e-=3)>-1&&s.push(239,191,189);continue}else if(o+1===n){(e-=3)>-1&&s.push(239,191,189);continue}i=t;continue}if(t<56320){(e-=3)>-1&&s.push(239,191,189),i=t;continue}t=(i-55296<<10|t-56320)+65536}else i&&(e-=3)>-1&&s.push(239,191,189);if(i=null,t<128){if((e-=1)<0)break;s.push(t)}else if(t<2048){if((e-=2)<0)break;s.push(t>>6|192,t&63|128)}else if(t<65536){if((e-=3)<0)break;s.push(t>>12|224,t>>6&63|128,t&63|128)}else if(t<1114112){if((e-=4)<0)break;s.push(t>>18|240,t>>12&63|128,t>>6&63|128,t&63|128)}else throw new Error("Invalid code point")}return s}function YC(r,e,t){let n=[];for(;e<t;){let i=r[e],s=null,o=i>239?4:i>223?3:i>191?2:1;if(e+o<=t){let a,c,u,l;switch(o){case 1:i<128&&(s=i);break;case 2:a=r[e+1],(a&192)===128&&(l=(i&31)<<6|a&63,l>127&&(s=l));break;case 3:a=r[e+1],c=r[e+2],(a&192)===128&&(c&192)===128&&(l=(i&15)<<12|(a&63)<<6|c&63,l>2047&&(l<55296||l>57343)&&(s=l));break;case 4:a=r[e+1],c=r[e+2],u=r[e+3],(a&192)===128&&(c&192)===128&&(u&192)===128&&(l=(i&15)<<18|(a&63)<<12|(c&63)<<6|u&63,l>65535&&l<1114112&&(s=l))}}s===null?(s=65533,o=1):s>65535&&(s-=65536,n.push(s>>>10&1023|55296),s=56320|s&1023),n.push(s),e+=o}return YX(n)}var QC=4096;function YX(r){let e=r.length;if(e<=QC)return String.fromCharCode.apply(String,r);let t="",n=0;for(;n<e;)t+=String.fromCharCode.apply(String,r.slice(n,n+=QC));return t}var QX=256,Wp=class{constructor(e=QX){this.chunkSize=e,this.cursor=0,this.maxCursor=-1,this.chunks=[],this._initReuseChunk=null}reset(){this.cursor=0,this.maxCursor=-1,this.chunks.length&&(this.chunks=[]),this._initReuseChunk!==null&&(this.chunks.push(this._initReuseChunk),this.maxCursor=this._initReuseChunk.length-1)}push(e){let t=this.chunks[this.chunks.length-1];if(this.cursor+e.length<=this.maxCursor+1){let i=t.length-(this.maxCursor-this.cursor)-1;t.set(e,i)}else{if(t){let i=t.length-(this.maxCursor-this.cursor)-1;i<t.length&&(this.chunks[this.chunks.length-1]=t.subarray(0,i),this.maxCursor=this.cursor-1)}e.length<64&&e.length<this.chunkSize?(t=eP(this.chunkSize),this.chunks.push(t),this.maxCursor+=t.length,this._initReuseChunk===null&&(this._initReuseChunk=t),t.set(e,0)):(this.chunks.push(e),this.maxCursor+=e.length)}this.cursor+=e.length}toBytes(e=!1){let t;if(this.chunks.length===1){let n=this.chunks[0];e&&this.cursor>n.length/2?(t=this.cursor===n.length?n:n.subarray(0,this.cursor),this._initReuseChunk=null,this.chunks=[]):t=Xu(n,0,this.cursor)}else t=JC(this.chunks,this.cursor);return e&&this.reset(),t}};var Re="CBOR decode error:",l5="CBOR encode error:",m0=[];m0[23]=1;m0[24]=2;m0[25]=3;m0[26]=5;m0[27]=9;function Ms(r,e,t){if(r.length-e<t)throw new Error(`${Re} not enough data for type`)}var ur=[24,256,65536,4294967296,BigInt("18446744073709551616")];function Sn(r,e,t){Ms(r,e,1);let n=r[e];if(t.strict===!0&&n<ur[0])throw new Error(`${Re} integer encoded in more bytes than necessary (strict decode)`);return n}function Rn(r,e,t){Ms(r,e,2);let n=r[e]<<8|r[e+1];if(t.strict===!0&&n<ur[1])throw new Error(`${Re} integer encoded in more bytes than necessary (strict decode)`);return n}function In(r,e,t){Ms(r,e,4);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3];if(t.strict===!0&&n<ur[2])throw new Error(`${Re} integer encoded in more bytes than necessary (strict decode)`);return n}function An(r,e,t){Ms(r,e,8);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3],i=r[e+4]*16777216+(r[e+5]<<16)+(r[e+6]<<8)+r[e+7],s=(BigInt(n)<<BigInt(32))+BigInt(i);if(t.strict===!0&&s<ur[3])throw new Error(`${Re} integer encoded in more bytes than necessary (strict decode)`);if(s<=Number.MAX_SAFE_INTEGER)return Number(s);if(t.allowBigInt===!0)return s;throw new Error(`${Re} integers outside of the safe integer range are not supported`)}function rP(r,e,t,n){return new oe(L.uint,Sn(r,e+1,n),2)}function nP(r,e,t,n){return new oe(L.uint,Rn(r,e+1,n),3)}function iP(r,e,t,n){return new oe(L.uint,In(r,e+1,n),5)}function sP(r,e,t,n){return new oe(L.uint,An(r,e+1,n),9)}function jn(r,e){return vr(r,0,e.value)}function vr(r,e,t){if(t<ur[0]){let n=Number(t);r.push([e|n])}else if(t<ur[1]){let n=Number(t);r.push([e|24,n])}else if(t<ur[2]){let n=Number(t);r.push([e|25,n>>>8,n&255])}else if(t<ur[3]){let n=Number(t);r.push([e|26,n>>>24&255,n>>>16&255,n>>>8&255,n&255])}else{let n=BigInt(t);if(n<ur[4]){let i=[e|27,0,0,0,0,0,0,0],s=Number(n&BigInt(4294967295)),o=Number(n>>BigInt(32)&BigInt(4294967295));i[8]=s&255,s=s>>8,i[7]=s&255,s=s>>8,i[6]=s&255,s=s>>8,i[5]=s&255,i[4]=o&255,o=o>>8,i[3]=o&255,o=o>>8,i[2]=o&255,o=o>>8,i[1]=o&255,r.push(i)}else throw new Error(`${Re} encountered BigInt larger than allowable range`)}}jn.encodedSize=function(e){return vr.encodedSize(e.value)};vr.encodedSize=function(e){return e<ur[0]?1:e<ur[1]?2:e<ur[2]?3:e<ur[3]?5:9};jn.compareTokens=function(e,t){return e.value<t.value?-1:e.value>t.value?1:0};function oP(r,e,t,n){return new oe(L.negint,-1-Sn(r,e+1,n),2)}function aP(r,e,t,n){return new oe(L.negint,-1-Rn(r,e+1,n),3)}function cP(r,e,t,n){return new oe(L.negint,-1-In(r,e+1,n),5)}var f5=BigInt(-1),uP=BigInt(1);function lP(r,e,t,n){let i=An(r,e+1,n);if(typeof i!="bigint"){let s=-1-i;if(s>=Number.MIN_SAFE_INTEGER)return new oe(L.negint,s,9)}if(n.allowBigInt!==!0)throw new Error(`${Re} integers outside of the safe integer range are not supported`);return new oe(L.negint,f5-BigInt(i),9)}function Yp(r,e){let t=e.value,n=typeof t=="bigint"?t*f5-uP:t*-1-1;vr(r,e.type.majorEncoded,n)}Yp.encodedSize=function(e){let t=e.value,n=typeof t=="bigint"?t*f5-uP:t*-1-1;return n<ur[0]?1:n<ur[1]?2:n<ur[2]?3:n<ur[3]?5:9};Yp.compareTokens=function(e,t){return e.value<t.value?1:e.value>t.value?-1:0};function g0(r,e,t,n){Ms(r,e,t+n);let i=Xu(r,e+t,e+t+n);return new oe(L.bytes,i,t+n)}function fP(r,e,t,n){return g0(r,e,1,t)}function hP(r,e,t,n){return g0(r,e,2,Sn(r,e+1,n))}function dP(r,e,t,n){return g0(r,e,3,Rn(r,e+1,n))}function pP(r,e,t,n){return g0(r,e,5,In(r,e+1,n))}function mP(r,e,t,n){let i=An(r,e+1,n);if(typeof i=="bigint")throw new Error(`${Re} 64-bit integer bytes lengths not supported`);return g0(r,e,9,i)}function Qp(r){return r.encodedBytes===void 0&&(r.encodedBytes=r.type===L.string?ZC(r.value):r.value),r.encodedBytes}function ju(r,e){let t=Qp(e);vr(r,e.type.majorEncoded,t.length),r.push(t)}ju.encodedSize=function(e){let t=Qp(e);return vr.encodedSize(t.length)+t.length};ju.compareTokens=function(e,t){return jX(Qp(e),Qp(t))};function jX(r,e){return r.length<e.length?-1:r.length>e.length?1:tP(r,e)}function y0(r,e,t,n,i){let s=t+n;Ms(r,e,s);let o=new oe(L.string,jC(r,e+t,e+s),s);return i.retainStringBytes===!0&&(o.byteValue=Xu(r,e+t,e+s)),o}function gP(r,e,t,n){return y0(r,e,1,t,n)}function yP(r,e,t,n){return y0(r,e,2,Sn(r,e+1,n),n)}function bP(r,e,t,n){return y0(r,e,3,Rn(r,e+1,n),n)}function wP(r,e,t,n){return y0(r,e,5,In(r,e+1,n),n)}function EP(r,e,t,n){let i=An(r,e+1,n);if(typeof i=="bigint")throw new Error(`${Re} 64-bit integer string lengths not supported`);return y0(r,e,9,i,n)}var xP=ju;function Zu(r,e,t,n){return new oe(L.array,n,t)}function vP(r,e,t,n){return Zu(r,e,1,t)}function _P(r,e,t,n){return Zu(r,e,2,Sn(r,e+1,n))}function SP(r,e,t,n){return Zu(r,e,3,Rn(r,e+1,n))}function RP(r,e,t,n){return Zu(r,e,5,In(r,e+1,n))}function IP(r,e,t,n){let i=An(r,e+1,n);if(typeof i=="bigint")throw new Error(`${Re} 64-bit integer array lengths not supported`);return Zu(r,e,9,i)}function AP(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${Re} indefinite length items not allowed`);return Zu(r,e,1,1/0)}function Xp(r,e){vr(r,L.array.majorEncoded,e.value)}Xp.compareTokens=jn.compareTokens;Xp.encodedSize=function(e){return vr.encodedSize(e.value)};function Ju(r,e,t,n){return new oe(L.map,n,t)}function TP(r,e,t,n){return Ju(r,e,1,t)}function DP(r,e,t,n){return Ju(r,e,2,Sn(r,e+1,n))}function CP(r,e,t,n){return Ju(r,e,3,Rn(r,e+1,n))}function PP(r,e,t,n){return Ju(r,e,5,In(r,e+1,n))}function kP(r,e,t,n){let i=An(r,e+1,n);if(typeof i=="bigint")throw new Error(`${Re} 64-bit integer map lengths not supported`);return Ju(r,e,9,i)}function NP(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${Re} indefinite length items not allowed`);return Ju(r,e,1,1/0)}function jp(r,e){vr(r,L.map.majorEncoded,e.value)}jp.compareTokens=jn.compareTokens;jp.encodedSize=function(e){return vr.encodedSize(e.value)};function BP(r,e,t,n){return new oe(L.tag,t,1)}function OP(r,e,t,n){return new oe(L.tag,Sn(r,e+1,n),2)}function LP(r,e,t,n){return new oe(L.tag,Rn(r,e+1,n),3)}function MP(r,e,t,n){return new oe(L.tag,In(r,e+1,n),5)}function UP(r,e,t,n){return new oe(L.tag,An(r,e+1,n),9)}function Zp(r,e){vr(r,L.tag.majorEncoded,e.value)}Zp.compareTokens=jn.compareTokens;Zp.encodedSize=function(e){return vr.encodedSize(e.value)};var nj=20,ij=21,sj=22,oj=23;function FP(r,e,t,n){if(n.allowUndefined===!1)throw new Error(`${Re} undefined values are not supported`);return n.coerceUndefinedToNull===!0?new oe(L.null,null,1):new oe(L.undefined,void 0,1)}function KP(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${Re} indefinite length items not allowed`);return new oe(L.break,void 0,1)}function h5(r,e,t){if(t){if(t.allowNaN===!1&&Number.isNaN(r))throw new Error(`${Re} NaN values are not supported`);if(t.allowInfinity===!1&&(r===1/0||r===-1/0))throw new Error(`${Re} Infinity values are not supported`)}return new oe(L.float,r,e)}function qP(r,e,t,n){return h5(d5(r,e+1),3,n)}function VP(r,e,t,n){return h5(p5(r,e+1),5,n)}function zP(r,e,t,n){return h5(WP(r,e+1),9,n)}function Jp(r,e,t){let n=e.value;if(n===!1)r.push([L.float.majorEncoded|nj]);else if(n===!0)r.push([L.float.majorEncoded|ij]);else if(n===null)r.push([L.float.majorEncoded|sj]);else if(n===void 0)r.push([L.float.majorEncoded|oj]);else{let i,s=!1;(!t||t.float64!==!0)&&(HP(n),i=d5(Di,1),n===i||Number.isNaN(n)?(Di[0]=249,r.push(Di.slice(0,3)),s=!0):(GP(n),i=p5(Di,1),n===i&&(Di[0]=250,r.push(Di.slice(0,5)),s=!0))),s||(aj(n),i=WP(Di,1),Di[0]=251,r.push(Di.slice(0,9)))}}Jp.encodedSize=function(e,t){let n=e.value;if(n===!1||n===!0||n===null||n===void 0)return 1;if(!t||t.float64!==!0){HP(n);let i=d5(Di,1);if(n===i||Number.isNaN(n))return 3;if(GP(n),i=p5(Di,1),n===i)return 5}return 9};var $P=new ArrayBuffer(9),Zn=new DataView($P,1),Di=new Uint8Array($P,0);function HP(r){if(r===1/0)Zn.setUint16(0,31744,!1);else if(r===-1/0)Zn.setUint16(0,64512,!1);else if(Number.isNaN(r))Zn.setUint16(0,32256,!1);else{Zn.setFloat32(0,r);let e=Zn.getUint32(0),t=(e&2139095040)>>23,n=e&8388607;if(t===255)Zn.setUint16(0,31744,!1);else if(t===0)Zn.setUint16(0,(r&2147483648)>>16|n>>13,!1);else{let i=t-127;i<-24?Zn.setUint16(0,0):i<-14?Zn.setUint16(0,(e&2147483648)>>16|1<<24+i,!1):Zn.setUint16(0,(e&2147483648)>>16|i+15<<10|n>>13,!1)}}}function d5(r,e){if(r.length-e<2)throw new Error(`${Re} not enough data for float16`);let t=(r[e]<<8)+r[e+1];if(t===31744)return 1/0;if(t===64512)return-1/0;if(t===32256)return NaN;let n=t>>10&31,i=t&1023,s;return n===0?s=i*2**-24:n!==31?s=(i+1024)*2**(n-25):s=i===0?1/0:NaN,t&32768?-s:s}function GP(r){Zn.setFloat32(0,r,!1)}function p5(r,e){if(r.length-e<4)throw new Error(`${Re} not enough data for float32`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,4).getFloat32(0,!1)}function aj(r){Zn.setFloat64(0,r,!1)}function WP(r,e){if(r.length-e<8)throw new Error(`${Re} not enough data for float64`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,8).getFloat64(0,!1)}Jp.compareTokens=jn.compareTokens;function Ze(r,e,t){throw new Error(`${Re} encountered invalid minor (${t}) for major ${r[e]>>>5}`)}function e2(r){return()=>{throw new Error(`${Re} ${r}`)}}var J=[];for(let r=0;r<=23;r++)J[r]=Ze;J[24]=rP;J[25]=nP;J[26]=iP;J[27]=sP;J[28]=Ze;J[29]=Ze;J[30]=Ze;J[31]=Ze;for(let r=32;r<=55;r++)J[r]=Ze;J[56]=oP;J[57]=aP;J[58]=cP;J[59]=lP;J[60]=Ze;J[61]=Ze;J[62]=Ze;J[63]=Ze;for(let r=64;r<=87;r++)J[r]=fP;J[88]=hP;J[89]=dP;J[90]=pP;J[91]=mP;J[92]=Ze;J[93]=Ze;J[94]=Ze;J[95]=e2("indefinite length bytes/strings are not supported");for(let r=96;r<=119;r++)J[r]=gP;J[120]=yP;J[121]=bP;J[122]=wP;J[123]=EP;J[124]=Ze;J[125]=Ze;J[126]=Ze;J[127]=e2("indefinite length bytes/strings are not supported");for(let r=128;r<=151;r++)J[r]=vP;J[152]=_P;J[153]=SP;J[154]=RP;J[155]=IP;J[156]=Ze;J[157]=Ze;J[158]=Ze;J[159]=AP;for(let r=160;r<=183;r++)J[r]=TP;J[184]=DP;J[185]=CP;J[186]=PP;J[187]=kP;J[188]=Ze;J[189]=Ze;J[190]=Ze;J[191]=NP;for(let r=192;r<=215;r++)J[r]=BP;J[216]=OP;J[217]=LP;J[218]=MP;J[219]=UP;J[220]=Ze;J[221]=Ze;J[222]=Ze;J[223]=Ze;for(let r=224;r<=243;r++)J[r]=e2("simple values are not supported");J[244]=Ze;J[245]=Ze;J[246]=Ze;J[247]=FP;J[248]=e2("simple values are not supported");J[249]=qP;J[250]=VP;J[251]=zP;J[252]=Ze;J[253]=Ze;J[254]=Ze;J[255]=KP;var Ci=[];for(let r=0;r<24;r++)Ci[r]=new oe(L.uint,r,1);for(let r=-1;r>=-24;r--)Ci[31-r]=new oe(L.negint,r,1);Ci[64]=new oe(L.bytes,new Uint8Array(0),1);Ci[96]=new oe(L.string,"",1);Ci[128]=new oe(L.array,0,1);Ci[160]=new oe(L.map,0,1);Ci[244]=new oe(L.false,!1,1);Ci[245]=new oe(L.true,!0,1);Ci[246]=new oe(L.null,null,1);function uj(){let r=[];return r[L.uint.major]=jn,r[L.negint.major]=Yp,r[L.bytes.major]=ju,r[L.string.major]=xP,r[L.array.major]=Xp,r[L.map.major]=jp,r[L.tag.major]=Zp,r[L.float.major]=Jp,r}var _Se=uj(),SSe=new Wp,t2=class r{constructor(e,t){this.obj=e,this.parent=t}includes(e){let t=this;do if(t.obj===e)return!0;while(t=t.parent);return!1}static createCheck(e,t){if(e&&e.includes(t))throw new Error(`${l5} object contains circular references`);return new r(t,e)}},Fo={null:new oe(L.null,null),undefined:new oe(L.undefined,void 0),true:new oe(L.true,!0),false:new oe(L.false,!1),emptyArray:new oe(L.array,0),emptyMap:new oe(L.map,0)},Ko={number(r,e,t,n){return!Number.isInteger(r)||!Number.isSafeInteger(r)?new oe(L.float,r):r>=0?new oe(L.uint,r):new oe(L.negint,r)},bigint(r,e,t,n){return r>=BigInt(0)?new oe(L.uint,r):new oe(L.negint,r)},Uint8Array(r,e,t,n){return new oe(L.bytes,r)},string(r,e,t,n){return new oe(L.string,r)},boolean(r,e,t,n){return r?Fo.true:Fo.false},null(r,e,t,n){return Fo.null},undefined(r,e,t,n){return Fo.undefined},ArrayBuffer(r,e,t,n){return new oe(L.bytes,new Uint8Array(r))},DataView(r,e,t,n){return new oe(L.bytes,new Uint8Array(r.buffer,r.byteOffset,r.byteLength))},Array(r,e,t,n){if(!r.length)return t.addBreakTokens===!0?[Fo.emptyArray,new oe(L.break)]:Fo.emptyArray;n=t2.createCheck(n,r);let i=[],s=0;for(let o of r)i[s++]=m5(o,t,n);return t.addBreakTokens?[new oe(L.array,r.length),i,new oe(L.break)]:[new oe(L.array,r.length),i]},Object(r,e,t,n){let i=e!=="Object",s=i?r.keys():Object.keys(r),o=i?r.size:s.length;if(!o)return t.addBreakTokens===!0?[Fo.emptyMap,new oe(L.break)]:Fo.emptyMap;n=t2.createCheck(n,r);let a=[],c=0;for(let u of s)a[c++]=[m5(u,t,n),m5(i?r.get(u):r[u],t,n)];return lj(a,t),t.addBreakTokens?[new oe(L.map,o),a,new oe(L.break)]:[new oe(L.map,o),a]}};Ko.Map=Ko.Object;Ko.Buffer=Ko.Uint8Array;for(let r of"Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64".split(" "))Ko[`${r}Array`]=Ko.DataView;function m5(r,e={},t){let n=GC(r),i=e&&e.typeEncoders&&e.typeEncoders[n]||Ko[n];if(typeof i=="function"){let o=i(r,n,e,t);if(o!=null)return o}let s=Ko[n];if(!s)throw new Error(`${l5} unsupported type: ${n}`);return s(r,n,e,t)}function lj(r,e){e.mapSorter&&r.sort(e.mapSorter)}var fj={strict:!1,allowIndefinite:!0,allowUndefined:!0,allowBigInt:!0},g5=class{constructor(e,t={}){this.pos=0,this.data=e,this.options=t}done(){return this.pos>=this.data.length}next(){let e=this.data[this.pos],t=Ci[e];if(t===void 0){let n=J[e];if(!n)throw new Error(`${Re} no decoder for major type ${e>>>5} (byte 0x${e.toString(16).padStart(2,"0")})`);let i=e&31;t=n(this.data,this.pos,i,this.options)}return this.pos+=t.encodedLength,t}},b0=Symbol.for("DONE"),r2=Symbol.for("BREAK");function hj(r,e,t){let n=[];for(let i=0;i<r.value;i++){let s=w0(e,t);if(s===r2){if(r.value===1/0)break;throw new Error(`${Re} got unexpected break to lengthed array`)}if(s===b0)throw new Error(`${Re} found array but not enough entries (got ${i}, expected ${r.value})`);n[i]=s}return n}function dj(r,e,t){let n=t.useMaps===!0,i=n?void 0:{},s=n?new Map:void 0;for(let o=0;o<r.value;o++){let a=w0(e,t);if(a===r2){if(r.value===1/0)break;throw new Error(`${Re} got unexpected break to lengthed map`)}if(a===b0)throw new Error(`${Re} found map but not enough entries (got ${o} [no key], expected ${r.value})`);if(n!==!0&&typeof a!="string")throw new Error(`${Re} non-string keys not supported (got ${typeof a})`);if(t.rejectDuplicateMapKeys===!0&&(n&&s.has(a)||!n&&a in i))throw new Error(`${Re} found repeat map key "${a}"`);let c=w0(e,t);if(c===b0)throw new Error(`${Re} found map but not enough entries (got ${o} [no value], expected ${r.value})`);n?s.set(a,c):i[a]=c}return n?s:i}function w0(r,e){if(r.done())return b0;let t=r.next();if(t.type===L.break)return r2;if(t.type.terminal)return t.value;if(t.type===L.array)return hj(t,r,e);if(t.type===L.map)return dj(t,r,e);if(t.type===L.tag){if(e.tags&&typeof e.tags[t.value]=="function"){let n=w0(r,e);return e.tags[t.value](n)}throw new Error(`${Re} tag not supported (${t.value})`)}throw new Error("unsupported")}function y5(r,e){if(!(r instanceof Uint8Array))throw new Error(`${Re} data to decode must be a Uint8Array`);e=Object.assign({},fj,e);let t=e.tokenizer||new g5(r,e),n=w0(t,e);if(n===b0)throw new Error(`${Re} did not find any content to decode`);if(n===r2)throw new Error(`${Re} got unexpected break`);if(!t.done())throw new Error(`${Re} too many terminals, data makes no sense`);return n}var E0=X(Ja(),1);var YP="ERR_IPNS_EXPIRED_RECORD",n2="ERR_UNRECOGNIZED_VALIDITY";var qo="ERR_SIGNATURE_VERIFICATION",QP="ERR_UNRECOGNIZED_FORMAT";var b5="ERR_UNDEFINED_PARAMETER",XP="ERR_INVALID_RECORD_DATA",jP="ERR_INVALID_EMBEDDED_KEY";var ZP="ERR_RECORD_TOO_LARGE";var ek=Hp("ipns:utils"),gj=G("/ipns/");function x0(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),i=parseInt(t[2],10)-1,s=parseInt(t[3],10),o=parseInt(t[4],10),a=parseInt(t[5],10),c=parseInt(t[6],10),u=parseInt(t[7].slice(0,-6),10);return new Date(Date.UTC(n,i,s,o,a,c,u))}var tk=async(r,e)=>{if(e==null||r==null){let n=new Error("one or more of the provided parameters are not defined");throw ek.error(n),(0,E0.default)(n,b5)}let t;if(e.pubKey!=null){try{t=Xy(e.pubKey)}catch(i){throw ek.error(i),i}if(!(await HC(e.pubKey)).equals(r))throw(0,E0.default)(new Error("Embedded public key did not match PeerID"),jP)}else r.publicKey!=null&&(t=Xy(r.publicKey));if(t!=null)return t;throw(0,E0.default)(new Error("no public key is available"),b5)};var rk=r=>{let e=G("ipns-signature:");return ve([e,r])};var nk=r=>{let e=ji.decode(r);return e.sequence!=null&&(e.sequence=BigInt(e.sequence)),e.ttl!=null&&(e.ttl=BigInt(e.ttl)),{value:e.value??new Uint8Array(0),signature:e.signature??new Uint8Array(0),validityType:e.validityType??ji.ValidityType.EOL,validity:e.validity??new Uint8Array(0),sequence:e.sequence??0n,pubKey:e.pubKey,ttl:e.ttl??void 0,signatureV2:e.signatureV2,data:e.data}};var ik=r=>u5(r.slice(gj.length));var sk=r=>{let e=y5(r);if(e.ValidityType===0)e.ValidityType=ji.ValidityType.EOL;else throw(0,E0.default)(new Error("Unknown validity type"),n2);return Number.isInteger(e.Sequence)&&(e.Sequence=BigInt(e.Sequence)),Number.isInteger(e.TTL)&&(e.TTL=BigInt(e.TTL)),e};var ok=(r,e)=>{let t=e.map((n,i)=>({entry:ji.decode(n),index:i}));return t.sort((n,i)=>{if(n.entry.signatureV2!=null&&i.entry.signatureV2==null)return-1;if(n.entry.signatureV2==null&&i.entry.signatureV2!=null)return 1;let s=n.entry.sequence??0n,o=i.entry.sequence??0n;if(s>o)return-1;if(s<o)return 1;let a=n.entry.validity??new Uint8Array(0),c=i.entry.validity??new Uint8Array(0),u=x0(U(a)),l=x0(U(c));return u.getTime()>l.getTime()?-1:u.getTime()<l.getTime()?1:0}),t[0].index};var Tn=X(Ja(),1);var v0=Hp("ipns:validator"),yj=1024*10,bj=async(r,e)=>{let{value:t,validityType:n,validity:i}=e,s,o;if(e.signatureV2!=null&&e.data!=null)o=e.signatureV2,s=rk(e.data),wj(e);else throw(0,Tn.default)(new Error("missing data or signatureV2"),qo);let a;try{a=await r.verify(s,o)}catch{a=!1}if(!a)throw v0.error("record signature verification failed"),(0,Tn.default)(new Error("record signature verification failed"),qo);if(i!=null&&n===ji.ValidityType.EOL){let c;try{c=x0(U(i))}catch{throw v0.error("unrecognized validity format (not an rfc3339 format)"),(0,Tn.default)(new Error("unrecognized validity format (not an rfc3339 format)"),QP)}if(c.getTime()<Date.now())throw v0.error("record has expired"),(0,Tn.default)(new Error("record has expired"),YP)}else if(n!=null)throw v0.error("unrecognized validity type"),(0,Tn.default)(new Error("unrecognized validity type"),n2);v0("ipns entry for %b is valid",t)},wj=r=>{if(r.data==null)throw(0,Tn.default)(new Error("Record data is missing"),XP);let e=sk(r.data);if(!fe(e.Value,r.value))throw(0,Tn.default)(new Error('Field "value" did not match between protobuf and CBOR'),qo);if(!fe(e.Validity,r.validity))throw(0,Tn.default)(new Error('Field "validity" did not match between protobuf and CBOR'),qo);if(e.ValidityType!==r.validityType)throw(0,Tn.default)(new Error('Field "validityType" did not match between protobuf and CBOR'),qo);if(e.Sequence!==r.sequence)throw(0,Tn.default)(new Error('Field "sequence" did not match between protobuf and CBOR'),qo);if(e.TTL!==r.ttl)throw(0,Tn.default)(new Error('Field "ttl" did not match between protobuf and CBOR'),qo)},ak=async(r,e)=>{if(e.byteLength>yj)throw(0,Tn.default)(new Error("record too large"),ZP);let t=ik(r),n=nk(e),i=await tk(t,n);await bj(i,n)};var E5=X(Hr(),1);var ck="libp2p",uk="autonat",lk="1.0.0";var Be;(function(r){let e;(function(u){u.DIAL="DIAL",u.DIAL_RESPONSE="DIAL_RESPONSE"})(e=r.MessageType||(r.MessageType={}));let t;(function(u){u[u.DIAL=0]="DIAL",u[u.DIAL_RESPONSE=1]="DIAL_RESPONSE"})(t||(t={})),function(u){u.codec=()=>xt(t)}(e=r.MessageType||(r.MessageType={}));let n;(function(u){u.OK="OK",u.E_DIAL_ERROR="E_DIAL_ERROR",u.E_DIAL_REFUSED="E_DIAL_REFUSED",u.E_BAD_REQUEST="E_BAD_REQUEST",u.E_INTERNAL_ERROR="E_INTERNAL_ERROR"})(n=r.ResponseStatus||(r.ResponseStatus={}));let i;(function(u){u[u.OK=0]="OK",u[u.E_DIAL_ERROR=100]="E_DIAL_ERROR",u[u.E_DIAL_REFUSED=101]="E_DIAL_REFUSED",u[u.E_BAD_REQUEST=200]="E_BAD_REQUEST",u[u.E_INTERNAL_ERROR=300]="E_INTERNAL_ERROR"})(i||(i={})),function(u){u.codec=()=>xt(i)}(n=r.ResponseStatus||(r.ResponseStatus={}));let s;(function(u){let l;u.codec=()=>(l==null&&(l=me((f,h,d={})=>{if(d.lengthDelimited!==!1&&h.fork(),f.id!=null&&(h.uint32(10),h.bytes(f.id)),f.addrs!=null)for(let p of f.addrs)h.uint32(18),h.bytes(p);d.lengthDelimited!==!1&&h.ldelim()},(f,h)=>{let d={addrs:[]},p=h==null?f.len:f.pos+h;for(;f.pos<p;){let m=f.uint32();switch(m>>>3){case 1:d.id=f.bytes();break;case 2:d.addrs.push(f.bytes());break;default:f.skipType(m&7);break}}return d})),l),u.encode=f=>pe(f,u.codec()),u.decode=f=>de(f,u.codec())})(s=r.PeerInfo||(r.PeerInfo={}));let o;(function(u){let l;u.codec=()=>(l==null&&(l=me((f,h,d={})=>{d.lengthDelimited!==!1&&h.fork(),f.peer!=null&&(h.uint32(10),r.PeerInfo.codec().encode(f.peer,h)),d.lengthDelimited!==!1&&h.ldelim()},(f,h)=>{let d={},p=h==null?f.len:f.pos+h;for(;f.pos<p;){let m=f.uint32();switch(m>>>3){case 1:d.peer=r.PeerInfo.codec().decode(f,f.uint32());break;default:f.skipType(m&7);break}}return d})),l),u.encode=f=>pe(f,u.codec()),u.decode=f=>de(f,u.codec())})(o=r.Dial||(r.Dial={}));let a;(function(u){let l;u.codec=()=>(l==null&&(l=me((f,h,d={})=>{d.lengthDelimited!==!1&&h.fork(),f.status!=null&&(h.uint32(8),r.ResponseStatus.codec().encode(f.status,h)),f.statusText!=null&&(h.uint32(18),h.string(f.statusText)),f.addr!=null&&(h.uint32(26),h.bytes(f.addr)),d.lengthDelimited!==!1&&h.ldelim()},(f,h)=>{let d={},p=h==null?f.len:f.pos+h;for(;f.pos<p;){let m=f.uint32();switch(m>>>3){case 1:d.status=r.ResponseStatus.codec().decode(f);break;case 2:d.statusText=f.string();break;case 3:d.addr=f.bytes();break;default:f.skipType(m&7);break}}return d})),l),u.encode=f=>pe(f,u.codec()),u.decode=f=>de(f,u.codec())})(a=r.DialResponse||(r.DialResponse={}));let c;r.codec=()=>(c==null&&(c=me((u,l,f={})=>{f.lengthDelimited!==!1&&l.fork(),u.type!=null&&(l.uint32(8),r.MessageType.codec().encode(u.type,l)),u.dial!=null&&(l.uint32(18),r.Dial.codec().encode(u.dial,l)),u.dialResponse!=null&&(l.uint32(26),r.DialResponse.codec().encode(u.dialResponse,l)),f.lengthDelimited!==!1&&l.ldelim()},(u,l)=>{let f={},h=l==null?u.len:u.pos+l;for(;u.pos<h;){let d=u.uint32();switch(d>>>3){case 1:f.type=r.MessageType.codec().decode(u);break;case 2:f.dial=r.Dial.codec().decode(u,u.uint32());break;case 3:f.dialResponse=r.DialResponse.codec().decode(u,u.uint32());break;default:u.skipType(d&7);break}}return f})),c),r.encode=u=>pe(u,r.codec()),r.decode=u=>de(u,r.codec())})(Be||(Be={}));var Je=C("libp2p:autonat"),w5=4,x5=class{components;startupDelay;refreshInterval;protocol;timeout;maxInboundStreams;maxOutboundStreams;verifyAddressTimeout;started;constructor(e,t){this.components=e,this.started=!1,this.protocol=`/${t.protocolPrefix??ck}/${uk}/${lk}`,this.timeout=t.timeout??3e4,this.maxInboundStreams=t.maxInboundStreams??1,this.maxOutboundStreams=t.maxOutboundStreams??1,this.startupDelay=t.startupDelay??5e3,this.refreshInterval=t.refreshInterval??6e4,this._verifyExternalAddresses=this._verifyExternalAddresses.bind(this)}isStarted(){return this.started}async start(){this.started||(await this.components.registrar.handle(this.protocol,e=>{this.handleIncomingAutonatStream(e).catch(t=>{Je.error("error handling incoming autonat stream",t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}),this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.startupDelay),this.started=!0)}async stop(){await this.components.registrar.unhandle(this.protocol),clearTimeout(this.verifyAddressTimeout),this.started=!1}async handleIncomingAutonatStream(e){let t=jt([AbortSignal.timeout(this.timeout)]);try{(0,E5.setMaxListeners)?.(1/0,t)}catch{}let n=this.components.addressManager.getAddresses().map(i=>i.toOptions().host);try{let i=xi(e.stream,t),s=this;await Me(i,o=>Gt(o),async function*(o){let a=await Rs(o);if(a==null){Je("no message received"),yield Be.encode({type:Be.MessageType.DIAL_RESPONSE,dialResponse:{status:Be.ResponseStatus.E_BAD_REQUEST,statusText:"No message was sent"}});return}let c;try{c=Be.decode(a)}catch(m){Je.error("could not decode message",m),yield Be.encode({type:Be.MessageType.DIAL_RESPONSE,dialResponse:{status:Be.ResponseStatus.E_BAD_REQUEST,statusText:"Could not decode message"}});return}let u=c.dial;if(u==null){Je.error("dial was missing from message"),yield Be.encode({type:Be.MessageType.DIAL_RESPONSE,dialResponse:{status:Be.ResponseStatus.E_BAD_REQUEST,statusText:"No Dial message found in message"}});return}let l,f=u.peer;if(f==null||f.id==null){Je.error("PeerId missing from message"),yield Be.encode({type:Be.MessageType.DIAL_RESPONSE,dialResponse:{status:Be.ResponseStatus.E_BAD_REQUEST,statusText:"missing peer info"}});return}try{l=Nt(f.id)}catch(m){Je.error("invalid PeerId",m),yield Be.encode({type:Be.MessageType.DIAL_RESPONSE,dialResponse:{status:Be.ResponseStatus.E_BAD_REQUEST,statusText:"bad peer id"}});return}if(Je("incoming request from %p",l),!e.connection.remotePeer.equals(l)){Je("target peer %p did not equal sending peer %p",l,e.connection.remotePeer),yield Be.encode({type:Be.MessageType.DIAL_RESPONSE,dialResponse:{status:Be.ResponseStatus.E_BAD_REQUEST,statusText:"peer id mismatch"}});return}let h=f.addrs.map(m=>ye(m)).filter(m=>{let g=m.toOptions().host===e.connection.remoteAddr.toOptions().host;return Je.trace("request to dial %a was sent from %a is same host %s",m,e.connection.remoteAddr,g),g}).filter(m=>{let g=m.toOptions().host,y=!(Vn(g)??!1);return Je.trace("host %s was public %s",g,y),y}).filter(m=>{let g=m.toOptions().host,y=!n.includes(g);return Je.trace("host %s was not our host %s",g,y),y}).filter(m=>{let g=!!s.components.transportManager.transportForMultiaddr(m);return Je.trace("transport for %a is supported %s",m,g),g}).map(m=>(m.getPeerId()==null&&(m=m.encapsulate(`/p2p/${l.toString()}`)),m));if(h.length===0){Je("no valid multiaddrs for %p in message",l),yield Be.encode({type:Be.MessageType.DIAL_RESPONSE,dialResponse:{status:Be.ResponseStatus.E_DIAL_REFUSED,statusText:"no dialable addresses"}});return}Je("dial multiaddrs %s for peer %p",h.map(m=>m.toString()).join(", "),l);let d="",p=h[0];for await(let m of h){let g;p=m;try{if(g=await s.components.connectionManager.openConnection(m,{signal:t}),!g.remoteAddr.equals(m))throw Je.error("tried to dial %a but dialed %a",m,g.remoteAddr),new Error("Unexpected remote address");Je("Success %p",l),yield Be.encode({type:Be.MessageType.DIAL_RESPONSE,dialResponse:{status:Be.ResponseStatus.OK,addr:g.remoteAddr.decapsulateCode(le("p2p").code).bytes}});return}catch(y){Je("could not dial %p",l,y),d=y.message}finally{g!=null&&await g.close()}}yield Be.encode({type:Be.MessageType.DIAL_RESPONSE,dialResponse:{status:Be.ResponseStatus.E_DIAL_ERROR,statusText:d,addr:p.bytes}})},o=>Ft(o),e.stream)}catch(i){Je.error("error handling incoming autonat stream",i)}finally{t.clear()}}_verifyExternalAddresses(){this.verifyExternalAddresses().catch(e=>{Je.error("error verifying external address",e)})}async verifyExternalAddresses(){if(clearTimeout(this.verifyAddressTimeout),!this.isStarted())return;let e=this.components.addressManager,t=e.getObservedAddrs().filter(s=>{let o=s.toOptions();return!(Vn(o.host)??!1)});if(t.length===0){Je("no public addresses found, not requesting verification"),this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.refreshInterval);return}let n=AbortSignal.timeout(this.timeout);try{(0,E5.setMaxListeners)?.(1/0,n)}catch{}let i=this;try{Je("verify multiaddrs %s",t.map(f=>f.toString()).join(", "));let s=Be.encode({type:Be.MessageType.DIAL,dial:{peer:{id:this.components.peerId.toBytes(),addrs:t.map(f=>f.bytes)}}}),a=(await wd()).toBytes(),c={},u=[],l=async f=>{try{Je("asking %p to verify multiaddr",f.id);let h=await i.components.connectionManager.openConnection(f.id,{signal:n}),d=await h.newStream(this.protocol,{signal:n}),p=xi(d,n),m=await Me([s],y=>Ft(y),p,y=>Gt(y),async y=>Rs(y));if(m==null){Je("no response received from %p",h.remotePeer);return}let g=Be.decode(m);if(g.type!==Be.MessageType.DIAL_RESPONSE||g.dialResponse==null){Je("invalid autonat response from %p",h.remotePeer);return}if(g.dialResponse.status===Be.ResponseStatus.OK){let y=h.remoteAddr.toOptions(),b;if(y.family===4)b=y.host.split(".")[0];else if(y.family===6)b=y.host.split(":")[0];else{Je('remote address "%s" was not IP4 or IP6?',y.host);return}if(u.includes(b)){Je("already have response from network segment %d - %s",b,y.host);return}u.push(b)}return g.dialResponse}catch(h){Je.error("error asking remote to verify multiaddr",h)}};for await(let f of La(ri(this.components.peerRouting.getClosestPeers(a,{signal:n}),h=>async()=>l(h)),{concurrency:w5}))try{if(f==null)continue;let h=f.addr==null?t[0]:ye(f.addr);if(Je("autonat response for %a is %s",h,f.status),f.status===Be.ResponseStatus.E_BAD_REQUEST||f.status===Be.ResponseStatus.E_DIAL_REFUSED||f.addr==null&&t.length>1)continue;if(!t.some(p=>p.equals(h))){Je("peer reported %a as %s but it was not in our observed address list",h,f.status);continue}let d=h.toString();if(c[d]==null&&(c[d]={success:0,failure:0}),f.status===Be.ResponseStatus.OK?c[d].success++:f.status===Be.ResponseStatus.E_DIAL_ERROR&&c[d].failure++,c[d].success===w5){Je("%a is externally dialable",h),e.confirmObservedAddr(h);return}if(c[d].failure===w5){Je("%a is not externally dialable",h),e.removeObservedAddr(h);return}}catch(h){Je.error("could not verify external address",h)}}finally{this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.refreshInterval)}}};function fk(r={}){return e=>new x5(e,r)}var Cj=X(Hr(),1);var v5="/libp2p/relay";var hk="circuit-relay-relay";var dk=BigInt(131072),Vo="/libp2p/circuit/relay/0.2.0/hop",i2="/libp2p/circuit/relay/0.2.0/stop",Rj=30*1e3,Ij=30*1e3;var Us;(function(r){let e;(function(i){i.RESERVE="RESERVE",i.CONNECT="CONNECT",i.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(i){i[i.RESERVE=0]="RESERVE",i[i.CONNECT=1]="CONNECT",i[i.STATUS=2]="STATUS"})(t||(t={})),function(i){i.codec=()=>xt(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=me((i,s,o={})=>{o.lengthDelimited!==!1&&s.fork(),i.type!=null&&(s.uint32(8),r.Type.codec().encode(i.type,s)),i.peer!=null&&(s.uint32(18),el.codec().encode(i.peer,s)),i.reservation!=null&&(s.uint32(26),s2.codec().encode(i.reservation,s)),i.limit!=null&&(s.uint32(34),tl.codec().encode(i.limit,s)),i.status!=null&&(s.uint32(40),er.codec().encode(i.status,s)),o.lengthDelimited!==!1&&s.ldelim()},(i,s)=>{let o={},a=s==null?i.len:i.pos+s;for(;i.pos<a;){let c=i.uint32();switch(c>>>3){case 1:o.type=r.Type.codec().decode(i);break;case 2:o.peer=el.codec().decode(i,i.uint32());break;case 3:o.reservation=s2.codec().decode(i,i.uint32());break;case 4:o.limit=tl.codec().decode(i,i.uint32());break;case 5:o.status=er.codec().decode(i);break;default:i.skipType(c&7);break}}return o})),n),r.encode=i=>pe(i,r.codec()),r.decode=i=>de(i,r.codec())})(Us||(Us={}));var Pi;(function(r){let e;(function(i){i.CONNECT="CONNECT",i.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(i){i[i.CONNECT=0]="CONNECT",i[i.STATUS=1]="STATUS"})(t||(t={})),function(i){i.codec=()=>xt(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=me((i,s,o={})=>{o.lengthDelimited!==!1&&s.fork(),i.type!=null&&(s.uint32(8),r.Type.codec().encode(i.type,s)),i.peer!=null&&(s.uint32(18),el.codec().encode(i.peer,s)),i.limit!=null&&(s.uint32(26),tl.codec().encode(i.limit,s)),i.status!=null&&(s.uint32(32),er.codec().encode(i.status,s)),o.lengthDelimited!==!1&&s.ldelim()},(i,s)=>{let o={},a=s==null?i.len:i.pos+s;for(;i.pos<a;){let c=i.uint32();switch(c>>>3){case 1:o.type=r.Type.codec().decode(i);break;case 2:o.peer=el.codec().decode(i,i.uint32());break;case 3:o.limit=tl.codec().decode(i,i.uint32());break;case 4:o.status=er.codec().decode(i);break;default:i.skipType(c&7);break}}return o})),n),r.encode=i=>pe(i,r.codec()),r.decode=i=>de(i,r.codec())})(Pi||(Pi={}));var el;(function(r){let e;r.codec=()=>(e==null&&(e=me((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.addrs!=null)for(let s of t.addrs)n.uint32(18),n.bytes(s);i.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let i={id:new Uint8Array(0),addrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let o=t.uint32();switch(o>>>3){case 1:i.id=t.bytes();break;case 2:i.addrs.push(t.bytes());break;default:t.skipType(o&7);break}}return i})),e),r.encode=t=>pe(t,r.codec()),r.decode=t=>de(t,r.codec())})(el||(el={}));var s2;(function(r){let e;r.codec=()=>(e==null&&(e=me((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.expire!=null&&t.expire!==0n&&(n.uint32(8),n.uint64(t.expire)),t.addrs!=null)for(let s of t.addrs)n.uint32(18),n.bytes(s);t.voucher!=null&&(n.uint32(26),n.bytes(t.voucher)),i.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let i={expire:0n,addrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let o=t.uint32();switch(o>>>3){case 1:i.expire=t.uint64();break;case 2:i.addrs.push(t.bytes());break;case 3:i.voucher=t.bytes();break;default:t.skipType(o&7);break}}return i})),e),r.encode=t=>pe(t,r.codec()),r.decode=t=>de(t,r.codec())})(s2||(s2={}));var tl;(function(r){let e;r.codec=()=>(e==null&&(e=me((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.duration!=null&&(n.uint32(8),n.uint32(t.duration)),t.data!=null&&(n.uint32(16),n.uint64(t.data)),i.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let i={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let o=t.uint32();switch(o>>>3){case 1:i.duration=t.uint32();break;case 2:i.data=t.uint64();break;default:t.skipType(o&7);break}}return i})),e),r.encode=t=>pe(t,r.codec()),r.decode=t=>de(t,r.codec())})(tl||(tl={}));var er;(function(r){r.UNUSED="UNUSED",r.OK="OK",r.RESERVATION_REFUSED="RESERVATION_REFUSED",r.RESOURCE_LIMIT_EXCEEDED="RESOURCE_LIMIT_EXCEEDED",r.PERMISSION_DENIED="PERMISSION_DENIED",r.CONNECTION_FAILED="CONNECTION_FAILED",r.NO_RESERVATION="NO_RESERVATION",r.MALFORMED_MESSAGE="MALFORMED_MESSAGE",r.UNEXPECTED_MESSAGE="UNEXPECTED_MESSAGE"})(er||(er={}));var _5;(function(r){r[r.UNUSED=0]="UNUSED",r[r.OK=100]="OK",r[r.RESERVATION_REFUSED=200]="RESERVATION_REFUSED",r[r.RESOURCE_LIMIT_EXCEEDED=201]="RESOURCE_LIMIT_EXCEEDED",r[r.PERMISSION_DENIED=202]="PERMISSION_DENIED",r[r.CONNECTION_FAILED=203]="CONNECTION_FAILED",r[r.NO_RESERVATION=204]="NO_RESERVATION",r[r.MALFORMED_MESSAGE=400]="MALFORMED_MESSAGE",r[r.UNEXPECTED_MESSAGE=401]="UNEXPECTED_MESSAGE"})(_5||(_5={}));(function(r){r.codec=()=>xt(_5)})(er||(er={}));var S5;(function(r){let e;r.codec=()=>(e==null&&(e=me((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.relay!=null&&t.relay.byteLength>0&&(n.uint32(10),n.bytes(t.relay)),t.peer!=null&&t.peer.byteLength>0&&(n.uint32(18),n.bytes(t.peer)),t.expiration!=null&&t.expiration!==0n&&(n.uint32(24),n.uint64(t.expiration)),i.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let i={relay:new Uint8Array(0),peer:new Uint8Array(0),expiration:0n},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let o=t.uint32();switch(o>>>3){case 1:i.relay=t.bytes();break;case 2:i.peer=t.bytes();break;case 3:i.expiration=t.uint64();break;default:t.skipType(o&7);break}}return i})),e),r.encode=t=>pe(t,r.codec()),r.decode=t=>de(t,r.codec())})(S5||(S5={}));var vRe=C("libp2p:circuit-relay:utils");async function R5(r){let e=new TextEncoder().encode(r),t=await Ke.digest(e);return Ne.createV0(t)}function I5(r){let e=r*BigInt(1e3),t=new Date().getTime();return Number(e-BigInt(t))}var Dj=X(bk(),1);var ORe=C("libp2p:circuit-relay:advert-service");var fIe=C("libp2p:circuit-relay:server");var Pj=C("libp2p:stream:converter");function A5(r){let{stream:e,remoteAddr:t}=r,{sink:n,source:i}=e,s=async function*(){for await(let c of i)c instanceof Uint8Array?yield c:yield*c}(),o={async sink(c){try{await n(c),a()}catch(u){u.type!=="aborted"&&Pj(u)}},source:s,remoteAddr:t,timeline:{open:Date.now(),close:void 0},async close(c){a(),await e.close(c)},abort(c){a(),e.abort(c)}};function a(){o.timeline.close==null&&(o.timeline.close=Date.now())}return o}var zo=C("libp2p:circuit-relay:discover-relays"),o2=class extends Ye{peerId;peerStore;contentRouting;registrar;started;topologyId;constructor(e){super(),this.started=!1,this.peerId=e.peerId,this.peerStore=e.peerStore,this.contentRouting=e.contentRouting,this.registrar=e.registrar}isStarted(){return this.started}async start(){this.topologyId=await this.registrar.register(Vo,{onConnect:e=>{this.safeDispatchEvent("relay:discover",{detail:e})}}),this.discover().catch(e=>{zo.error("error listening on relays",e)}),this.started=!0}stop(){this.topologyId!=null&&this.registrar.unregister(this.topologyId),this.started=!1}async discover(){zo("searching peer store for relays");let e=await this.peerStore.all({filters:[t=>t.protocols.includes(Vo)],orders:[()=>Math.random()<.5?1:-1]});for(let t of e)zo("found relay peer %p in content peer store",t.id),this.safeDispatchEvent("relay:discover",{detail:t.id});zo("found %d relay peers in peer store",e.length);try{zo("searching content routing for relays");let t=await R5(v5),n=0;for await(let i of this.contentRouting.findProviders(t))if(i.multiaddrs.length>0&&!i.id.equals(this.peerId)){let s=i.id;n++,await this.peerStore.merge(s,{multiaddrs:i.multiaddrs}),zo("found relay peer %p in content routing",s),this.safeDispatchEvent("relay:discover",{detail:s})}zo("found %d relay peers in content routing",n)}catch(t){zo.error("failed when finding relays on the network",t)}}};var T5=C("libp2p:circuit-relay:transport:listener"),D5=class extends Ye{connectionManager;relayStore;listeningAddrs;constructor(e){super(),this.connectionManager=e.connectionManager,this.relayStore=e.relayStore,this.listeningAddrs=new Ar,this.relayStore.addEventListener("relay:removed",t=>{this.#e(t.detail)})}async listen(e){T5("listen on %a",e);let t=e.getPeerId(),n;if(t!=null){let s=we(t),o=this.connectionManager.getConnectionsMap().get(s)??[];o.length>0&&(n=o[0])}if(n==null){let s=e.toString().split("/p2p-circuit").find(a=>a!==""),o=ye(s);n=await this.connectionManager.openConnection(o)}if(!this.relayStore.hasReservation(n.remotePeer)){await this.relayStore.addRelay(n.remotePeer,"configured");return}let i=this.relayStore.getReservation(n.remotePeer);if(i==null)throw new E("Did not have reservation after making reservation","ERR_NO_RESERVATION");if(this.listeningAddrs.has(n.remotePeer)){T5("already listening on relay %p",n.remotePeer);return}this.listeningAddrs.set(n.remotePeer,i.addrs.map(s=>ye(s).encapsulate("/p2p-circuit"))),this.safeDispatchEvent("listening",{})}getAddrs(){return[...this.listeningAddrs.values()].flat()}async close(){}#e(e){let t=this.listeningAddrs.has(e);T5("relay peer removed %p - had reservation",e,t),this.listeningAddrs.delete(e),t&&this.safeDispatchEvent("close",{})}};function Ek(r){return new D5(r)}var qr=C("libp2p:circuit-relay:transport:reservation-store"),Nj=60*1e3*10,Bj=60*1e3*5,Oj=30*1e3,a2=class extends Ye{peerId;connectionManager;transportManager;peerStore;events;reserveQueue;reservations;maxDiscoveredRelays;maxReservationQueueLength;reservationCompletionTimeout;started;constructor(e,t){super(),this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.peerStore=e.peerStore,this.events=e.events,this.reservations=new Ar,this.maxDiscoveredRelays=t?.discoverRelays??0,this.maxReservationQueueLength=t?.maxReservationQueueLength??100,this.reservationCompletionTimeout=t?.reservationCompletionTimeout??1e4,this.started=!1,this.reserveQueue=new Yc({concurrency:t?.reservationConcurrency??1}),this.events.addEventListener("peer:disconnect",n=>{this.#t(n.detail)})}isStarted(){return this.started}async start(){this.started=!0}async stop(){this.reserveQueue.clear(),this.reservations.forEach(({timeout:e})=>{clearTimeout(e)}),this.reservations.clear(),this.started=!1}async addRelay(e,t){if(this.peerId.equals(e)){qr("not trying to use self as relay");return}if(this.reserveQueue.size>this.maxReservationQueueLength){qr("not adding relay as the queue is full");return}if(this.reserveQueue.hasJob(e)){qr("relay peer is already in the reservation queue");return}qr("add relay %p",e),await this.reserveQueue.add(async()=>{try{let n=this.reservations.get(e);if(n!=null){if(I5(n.reservation.expire)>Nj){qr("already have reservation on relay peer %p and it expires in more than 10 minutes",e);return}clearTimeout(n.timeout),this.reservations.delete(e)}if(t==="discovered"&&[...this.reservations.values()].reduce((l,f)=>(f.type==="discovered"&&l++,l),0)>=this.maxDiscoveredRelays){qr("already have enough discovered relays");return}let i=AbortSignal.timeout(this.reservationCompletionTimeout),s=await this.connectionManager.openConnection(e,{signal:i});if(s.remoteAddr.protoNames().includes("p2p-circuit")){qr("not creating reservation over relayed connection");return}let o=await this.#e(s,{signal:i});qr("created reservation on relay peer %p",e);let a=I5(o.expire),c=Math.min(Math.max(a-Bj,Oj),Math.pow(2,31)-1),u=setTimeout(()=>{this.addRelay(e,t).catch(l=>{qr.error("could not refresh reservation to relay %p",e,l)})},c);this.reservations.set(e,{timeout:u,reservation:o,type:t}),await this.peerStore.merge(e,{tags:{[hk]:{value:1,ttl:a}}}),await this.transportManager.listen([ye(`/p2p/${e.toString()}/p2p-circuit`)])}catch(n){qr.error("could not reserve slot on %p",e,n);let i=this.reservations.get(e);i!=null&&clearTimeout(i.timeout),this.reservations.delete(e)}},{peerId:e})}hasReservation(e){return this.reservations.has(e)}getReservation(e){return this.reservations.get(e)?.reservation}async#e(e,t){t.signal?.throwIfAborted(),qr("requesting reservation from %p",e.remotePeer);let n=await e.newStream(Vo),s=Xr(n).pb(Us);await s.write({type:Us.Type.RESERVE},t);let o;try{o=await s.read(t)}catch(c){throw qr.error("error parsing reserve message response from %p because",e.remotePeer,c),c}finally{await n.close()}if(o.status===er.OK&&o.reservation!=null)return o.reservation;let a=`reservation failed with status ${o.status??"undefined"}`;throw qr.error(a),new Error(a)}#t(e){let t=this.reservations.get(e);t!=null&&(qr("connection to relay %p closed, removing reservation from local store",e),clearTimeout(t.timeout),this.reservations.delete(e),this.safeDispatchEvent("relay:removed",{detail:e}),this.reservations.size<this.maxDiscoveredRelays&&(qr("not enough relays %d/%d",this.reservations.size,this.maxDiscoveredRelays),this.safeDispatchEvent("relay:not-enough-relays",{})))}};var Dr=C("libp2p:circuit-relay:transport"),Lj=r=>{if(r.peer==null)return!1;try{r.peer.addrs.forEach(ye)}catch{return!1}return!0},C5={maxInboundStopStreams:po,maxOutboundStopStreams:po,stopTimeout:3e4},P5=class{discovery;registrar;peerStore;connectionManager;peerId;upgrader;addressManager;connectionGater;reservationStore;maxInboundStopStreams;maxOutboundStopStreams;stopTimeout;started;constructor(e,t){this.registrar=e.registrar,this.peerStore=e.peerStore,this.connectionManager=e.connectionManager,this.peerId=e.peerId,this.upgrader=e.upgrader,this.addressManager=e.addressManager,this.connectionGater=e.connectionGater,this.maxInboundStopStreams=t.maxInboundStopStreams??C5.maxInboundStopStreams,this.maxOutboundStopStreams=t.maxOutboundStopStreams??C5.maxOutboundStopStreams,this.stopTimeout=t.stopTimeout??C5.stopTimeout,t.discoverRelays!=null&&t.discoverRelays>0&&(this.discovery=new o2(e),this.discovery.addEventListener("relay:discover",n=>{this.reservationStore.addRelay(n.detail,"discovered").catch(i=>{Dr.error("could not add discovered relay %p",n.detail,i)})})),this.reservationStore=new a2(e,t),this.reservationStore.addEventListener("relay:not-enough-relays",()=>{this.discovery?.discover().catch(n=>{Dr.error("could not discover relays",n)})}),this.started=!1}isStarted(){return this.started}async start(){await this.reservationStore.start(),await this.discovery?.start(),await this.registrar.handle(i2,e=>{this.onStop(e).catch(t=>{Dr.error("error while handling STOP protocol",t),e.stream.abort(t)})},{maxInboundStreams:this.maxInboundStopStreams,maxOutboundStreams:this.maxOutboundStopStreams,runOnTransientConnection:!0}),this.started=!0}async stop(){this.discovery?.stop(),await this.reservationStore.stop(),await this.registrar.unhandle(i2),this.started=!1}[Wi]=!0;[Symbol.toStringTag]="libp2p/circuit-relay-v2";async dial(e,t={}){if(e.protoCodes().filter(p=>p===290).length!==1){let p="Invalid circuit relay address";throw Dr.error(p,e),new E(p,j.ERR_RELAYED_DIAL)}let n=e.toString().split("/p2p-circuit"),i=ye(n[0]),s=ye(n[n.length-1]),o=i.getPeerId(),a=s.getPeerId();if(o==null||a==null){let p=`Circuit relay dial to ${e.toString()} failed as address did not have peer ids`;throw Dr.error(p),new E(p,j.ERR_RELAYED_DIAL)}let c=we(o),u=we(a),l=!1,h=this.connectionManager.getConnections(c)[0];h==null&&(await this.peerStore.merge(c,{multiaddrs:[i]}),h=await this.connectionManager.openConnection(c,t),l=!0);let d;try{return d=await h.newStream([Vo]),await this.connectV2({stream:d,connection:h,destinationPeer:u,destinationAddr:s,relayAddr:i,ma:e,disconnectOnFailure:l})}catch(p){throw Dr.error(`Circuit relay dial to destination ${u.toString()} via relay ${c.toString()} failed`,p),d?.abort(p),l&&await h.close(),p}}async connectV2({stream:e,connection:t,destinationPeer:n,destinationAddr:i,relayAddr:s,ma:o,disconnectOnFailure:a}){try{let c=Xr(e),u=c.pb(Us);await u.write({type:Us.Type.CONNECT,peer:{id:n.toBytes(),addrs:[ye(i).bytes]}});let l=await u.read();if(l.status!==er.OK)throw new E(`failed to connect via relay with status ${l?.status?.toString()??"undefined"}`,j.ERR_HOP_REQUEST_FAILED);let f=A5({stream:c.unwrap(),remoteAddr:o,localAddr:s.encapsulate(`/p2p-circuit/p2p/${this.peerId.toString()}`)});return Dr("new outbound transient connection %a",f.remoteAddr),await this.upgrader.upgradeOutbound(f,{transient:!0})}catch(c){throw Dr.error(`Circuit relay dial to destination ${n.toString()} via relay ${t.remotePeer.toString()} failed`,c),a&&await t.close(),c}}createListener(e){return Ek({connectionManager:this.connectionManager,relayStore:this.reservationStore})}filter(e){return e=Array.isArray(e)?e:[e],e.filter(t=>_i.matches(t))}async onStop({connection:e,stream:t}){let n=AbortSignal.timeout(this.stopTimeout),i=Xr(t).pb(Pi),s=await i.read({signal:n});if(Dr("new circuit relay v2 stop stream from %p with type %s",e.remotePeer,s.type),s?.type===void 0){Dr.error("type was missing from circuit v2 stop protocol request from %s",e.remotePeer),await i.write({type:Pi.Type.STATUS,status:er.MALFORMED_MESSAGE},{signal:n}),await t.close();return}if(s.type!==Pi.Type.CONNECT){Dr.error("invalid stop connect request via peer %p",e.remotePeer),await i.write({type:Pi.Type.STATUS,status:er.UNEXPECTED_MESSAGE},{signal:n}),await t.close();return}if(!Lj(s)){Dr.error("invalid stop connect request via peer %p",e.remotePeer),await i.write({type:Pi.Type.STATUS,status:er.MALFORMED_MESSAGE},{signal:n}),await t.close();return}let o=Nt(s.peer.id);if(await this.connectionGater.denyInboundRelayedConnection?.(e.remotePeer,o)===!0){Dr.error("connection gater denied inbound relayed connection from %p",e.remotePeer),await i.write({type:Pi.Type.STATUS,status:er.PERMISSION_DENIED},{signal:n}),await t.close();return}Dr.trace("sending success response to %p",e.remotePeer),await i.write({type:Pi.Type.STATUS,status:er.OK},{signal:n});let a=e.remoteAddr.encapsulate(`/p2p-circuit/p2p/${o.toString()}`),c=this.addressManager.getAddresses()[0],u=A5({stream:i.unwrap().unwrap(),remoteAddr:a,localAddr:c});Dr("new inbound transient connection %a",u.remoteAddr),await this.upgrader.upgradeInbound(u,{transient:!0}),Dr("%s connection %a upgraded","inbound",u.remoteAddr)}};function k5(r={}){return e=>new P5(e,r)}var xk="0.46.5";var N5=`js-libp2p/${xk}`;var vk="0.1.0",_k="id",Sk="id/push",Rk="1.0.0",Ik="1.0.0";var O5=X(Hr(),1);var $o;(function(r){let e;r.codec=()=>(e==null&&(e=me((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.protocolVersion!=null&&(n.uint32(42),n.string(t.protocolVersion)),t.agentVersion!=null&&(n.uint32(50),n.string(t.agentVersion)),t.publicKey!=null&&(n.uint32(10),n.bytes(t.publicKey)),t.listenAddrs!=null)for(let s of t.listenAddrs)n.uint32(18),n.bytes(s);if(t.observedAddr!=null&&(n.uint32(34),n.bytes(t.observedAddr)),t.protocols!=null)for(let s of t.protocols)n.uint32(26),n.string(s);t.signedPeerRecord!=null&&(n.uint32(66),n.bytes(t.signedPeerRecord)),i.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let i={listenAddrs:[],protocols:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let o=t.uint32();switch(o>>>3){case 5:i.protocolVersion=t.string();break;case 6:i.agentVersion=t.string();break;case 1:i.publicKey=t.bytes();break;case 2:i.listenAddrs.push(t.bytes());break;case 4:i.observedAddr=t.bytes();break;case 3:i.protocols.push(t.string());break;case 8:i.signedPeerRecord=t.bytes();break;default:t.skipType(o&7);break}}return i})),e),r.encode=t=>pe(t,r.codec()),r.decode=t=>de(t,r.codec())})($o||($o={}));var Cr=C("libp2p:identify"),B5=1024*8,Dn={protocolPrefix:"ipfs",agentVersion:N5,timeout:6e4,maxInboundStreams:1,maxOutboundStreams:1,maxPushIncomingStreams:1,maxPushOutgoingStreams:1,maxObservedAddresses:10,maxIdentifyMessageSize:8192,runOnConnectionOpen:!0,runOnTransientConnection:!0},c2=class{identifyProtocolStr;identifyPushProtocolStr;host;started;timeout;peerId;peerStore;registrar;connectionManager;addressManager;maxInboundStreams;maxOutboundStreams;maxPushIncomingStreams;maxPushOutgoingStreams;maxIdentifyMessageSize;maxObservedAddresses;events;runOnTransientConnection;constructor(e,t){this.started=!1,this.peerId=e.peerId,this.peerStore=e.peerStore,this.registrar=e.registrar,this.addressManager=e.addressManager,this.connectionManager=e.connectionManager,this.events=e.events,this.identifyProtocolStr=`/${t.protocolPrefix??Dn.protocolPrefix}/${_k}/${Rk}`,this.identifyPushProtocolStr=`/${t.protocolPrefix??Dn.protocolPrefix}/${Sk}/${Ik}`,this.timeout=t.timeout??Dn.timeout,this.maxInboundStreams=t.maxInboundStreams??Dn.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??Dn.maxOutboundStreams,this.maxPushIncomingStreams=t.maxPushIncomingStreams??Dn.maxPushIncomingStreams,this.maxPushOutgoingStreams=t.maxPushOutgoingStreams??Dn.maxPushOutgoingStreams,this.maxIdentifyMessageSize=t.maxIdentifyMessageSize??Dn.maxIdentifyMessageSize,this.maxObservedAddresses=t.maxObservedAddresses??Dn.maxObservedAddresses,this.runOnTransientConnection=t.runOnTransientConnection??Dn.runOnTransientConnection,this.host={protocolVersion:`${t.protocolPrefix??Dn.protocolPrefix}/${vk}`,agentVersion:t.agentVersion??Dn.agentVersion},(t.runOnConnectionOpen??Dn.runOnConnectionOpen)&&e.events.addEventListener("connection:open",n=>{let i=n.detail;this.identify(i).catch(s=>{Cr.error("error during identify trigged by connection:open",s)})}),e.events.addEventListener("self:peer:update",n=>{this.push().catch(i=>{Cr.error(i)})}),this.host.agentVersion===N5&&(bD||gD?this.host.agentVersion+=` UserAgent=${globalThis.process.version}`:(Ip||Ap||yD||wD)&&(this.host.agentVersion+=` UserAgent=${globalThis.navigator.userAgent}`))}isStarted(){return this.started}async start(){this.started||(await this.peerStore.merge(this.peerId,{metadata:{AgentVersion:G(this.host.agentVersion),ProtocolVersion:G(this.host.protocolVersion)}}),await this.registrar.handle(this.identifyProtocolStr,e=>{this._handleIdentify(e).catch(t=>{Cr.error(t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:this.runOnTransientConnection}),await this.registrar.handle(this.identifyPushProtocolStr,e=>{this._handlePush(e).catch(t=>{Cr.error(t)})},{maxInboundStreams:this.maxPushIncomingStreams,maxOutboundStreams:this.maxPushOutgoingStreams,runOnTransientConnection:this.runOnTransientConnection}),this.started=!0)}async stop(){await this.registrar.unhandle(this.identifyProtocolStr),await this.registrar.unhandle(this.identifyPushProtocolStr),this.started=!1}async pushToConnections(e){let t=this.addressManager.getAddresses().map(l=>l.decapsulateCode(le("p2p").code)),n=new hn({peerId:this.peerId,multiaddrs:t}),i=await qn.seal(n,this.peerId),s=this.registrar.getProtocols(),o=await this.peerStore.get(this.peerId),a=U(o.metadata.get("AgentVersion")??G(this.host.agentVersion)),c=U(o.metadata.get("ProtocolVersion")??G(this.host.protocolVersion)),u=e.map(async l=>{let f,h=AbortSignal.timeout(this.timeout);try{(0,O5.setMaxListeners)?.(1/0,h)}catch{}try{f=await l.newStream([this.identifyPushProtocolStr],{signal:h,runOnTransientConnection:this.runOnTransientConnection}),await Xr(f,{maxDataLength:this.maxIdentifyMessageSize??B5}).pb($o).write({listenAddrs:t.map(p=>p.bytes),signedPeerRecord:i.marshal(),protocols:s,agentVersion:a,protocolVersion:c},{signal:h}),await f.close({signal:h})}catch(d){Cr.error("could not push identify update to peer",d),f?.abort(d)}});await Promise.all(u)}async push(){if(!this.isStarted())return;let e=[];await Promise.all(this.connectionManager.getConnections().map(async t=>{try{if(!(await this.peerStore.get(t.remotePeer)).protocols.includes(this.identifyPushProtocolStr))return;e.push(t)}catch(n){if(n.code!==j.ERR_NOT_FOUND)throw n}})),await this.pushToConnections(e)}async _identify(e,t={}){let n;t.signal=t.signal??AbortSignal.timeout(this.timeout);try{n=await e.newStream([this.identifyProtocolStr],{...t,runOnTransientConnection:this.runOnTransientConnection});let s=await Xr(n,{maxDataLength:this.maxIdentifyMessageSize??B5}).pb($o).read(t);return await n.close(t),s}catch(i){throw Cr.error("error while reading identify message",i),n?.abort(i),i}}async identify(e,t={}){let n=await this._identify(e,t),{publicKey:i,protocols:s,observedAddr:o}=n;if(i==null)throw new E("public key was missing from identify message",j.ERR_MISSING_PUBLIC_KEY);let a=await Wr(i);if(!e.remotePeer.equals(a))throw new E("identified peer does not match the expected peer",j.ERR_INVALID_PEER);if(this.peerId.equals(a))throw new E("identified peer is our own peer id?",j.ERR_INVALID_PEER);let c=Mj(o);Cr("identify completed for peer %p and protocols %o",a,s),Cr("our observed address is %a",c),c!=null&&this.addressManager.getObservedAddrs().length<(this.maxObservedAddresses??1/0)&&(Cr("storing our observed address %a",c),this.addressManager.addObservedAddr(c));let u=await this.#e(e.remotePeer,n),l={peerId:a,protocolVersion:n.protocolVersion,agentVersion:n.agentVersion,publicKey:n.publicKey,listenAddrs:n.listenAddrs.map(f=>ye(f)),observedAddr:n.observedAddr==null?void 0:ye(n.observedAddr),protocols:n.protocols,signedPeerRecord:u};return this.events.safeDispatchEvent("peer:identify",{detail:l}),l}async _handleIdentify(e){let{connection:t,stream:n}=e,i=AbortSignal.timeout(this.timeout);try{(0,O5.setMaxListeners)?.(1/0,i)}catch{}try{let s=this.peerId.publicKey??new Uint8Array(0),o=await this.peerStore.get(this.peerId),a=this.addressManager.getAddresses().map(l=>l.decapsulateCode(le("p2p").code)),c=o.peerRecordEnvelope;if(a.length>0&&c==null){let l=new hn({peerId:this.peerId,multiaddrs:a});c=(await qn.seal(l,this.peerId)).marshal().subarray()}await Xr(n).pb($o).write({protocolVersion:this.host.protocolVersion,agentVersion:this.host.agentVersion,publicKey:s,listenAddrs:a.map(l=>l.bytes),signedPeerRecord:c,observedAddr:t.remoteAddr.bytes,protocols:o.protocols},{signal:i}),await n.close({signal:i})}catch(s){Cr.error("could not respond to identify request",s),n.abort(s)}}async _handlePush(e){let{connection:t,stream:n}=e;try{if(this.peerId.equals(t.remotePeer))throw new Error("received push from ourselves?");let i={signal:AbortSignal.timeout(this.timeout)},o=await Xr(n,{maxDataLength:this.maxIdentifyMessageSize??B5}).pb($o).read(i);await n.close(i),await this.#e(t.remotePeer,o)}catch(i){Cr.error("received invalid message",i),n.abort(i);return}Cr("handled push from %p",t.remotePeer)}async#e(e,t){if(Cr("received identify from %p",e),t==null)throw new Error("Message was null or undefined");let n={addresses:t.listenAddrs.map(s=>({isCertified:!1,multiaddr:ye(s)})),protocols:t.protocols,metadata:new Map,peerRecordEnvelope:t.signedPeerRecord},i;if(t.signedPeerRecord!=null){Cr("received signedPeerRecord in push from %p",e);let s=t.signedPeerRecord,o=await qn.openAndCertify(s,hn.DOMAIN),a=hn.createFromProtobuf(o.payload);if(!a.peerId.equals(o.peerId))throw new Error("signing key does not match PeerId in the PeerRecord");if(!e.equals(a.peerId))throw new Error("signing key does not match remote PeerId");let c;try{c=await this.peerStore.get(a.peerId)}catch(u){if(u.code!=="ERR_NOT_FOUND")throw u}if(c!=null&&(n.metadata=c.metadata,c.peerRecordEnvelope!=null)){let u=await qn.createFromProtobuf(c.peerRecordEnvelope),l=hn.createFromProtobuf(u.payload);l.seqNumber>=a.seqNumber&&(Cr("sequence number was lower or equal to existing sequence number - stored: %d received: %d",l.seqNumber,a.seqNumber),a=l,s=c.peerRecordEnvelope)}n.peerRecordEnvelope=s,n.addresses=a.multiaddrs.map(u=>({isCertified:!0,multiaddr:u})),i={seq:a.seqNumber,addresses:a.multiaddrs}}else Cr("%p did not send a signed peer record",e);return t.agentVersion!=null&&n.metadata.set("AgentVersion",G(t.agentVersion)),t.protocolVersion!=null&&n.metadata.set("ProtocolVersion",G(t.protocolVersion)),await this.peerStore.patch(e,n),i}};function Mj(r){if(r!=null&&r.length>0)try{return ye(r)}catch{}}function Ak(r={}){return e=>new c2(e,r)}var Tk={list:["/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN","/dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa","/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb","/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt","/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ"]};function Dk(){return{addresses:{listen:["/webrtc"]},transports:[zT(),VT(),DD(),ID(),k5({discoverRelays:1})],connectionEncryption:[au()],streamMuxers:[MR(),WI()],peerDiscovery:[QR(Tk)],contentRouters:[rI("https://cid.contact")],services:{identify:Ak(),autoNAT:fk(),pubsub:YS(),dht:LI({clientMode:!0,validators:{ipns:ak},selectors:{ipns:ok}})}}}async function Ck(r,e){let t=Dk();return e=e??{},cS({datastore:r,...t,...e,start:!1})}var L5="2.0.0",u2="helia";var Uj=C("helia");async function Fj(r={}){let e=r.datastore??new Qo,t=r.blockstore??new al,n;Kj(r.libp2p)?n=r.libp2p:n=await Ck(e,r.libp2p);let i=new Ph({...r,datastore:e,blockstore:t,libp2p:n});return r.start!==!1&&await i.start(),i.libp2p.isStarted()?await Pk(i):i.libp2p.addEventListener("start",()=>{Pk(i).catch(s=>{Uj.error("could not add Helia to agent version",s)})}),i}function Kj(r){return r==null?!1:["dial","dialProtocol","hangUp","handle","unhandle","getMultiaddrs","getProtocols"].every(t=>typeof r[t]=="function")}async function Pk(r){let t=(await r.libp2p.peerStore.get(r.libp2p.peerId)).metadata.get("AgentVersion");if(t==null)return;let n=new TextDecoder().decode(t);n.match(/js-libp2p\/\d+\.\d+\.\d+\sUserAgent=/)!=null&&(n.includes(u2)?n=`${u2}/${L5} ${n.split(" ").slice(1).join(" ")}`:n=`${u2}/${L5} ${n}`,await r.libp2p.peerStore.merge(r.libp2p.peerId,{metadata:{AgentVersion:new TextEncoder().encode(n)}}))}return S0(qj);})();
|
|
85
85
|
/*! Bundled license information:
|
|
86
86
|
|
|
87
87
|
@noble/hashes/esm/utils.js:
|
package/dist/src/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAA;AAC9B,eAAO,MAAM,IAAI,UAAU,CAAA"}
|
package/dist/src/version.js
CHANGED
package/dist/src/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAA;AAC9B,MAAM,CAAC,MAAM,IAAI,GAAG,OAAO,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "helia",
|
|
3
|
-
"version": "2.0.0
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "An implementation of IPFS in JavaScript",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/ipfs/helia/tree/master/packages/helia#readme",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"@chainsafe/libp2p-gossipsub": "^10.0.0",
|
|
53
53
|
"@chainsafe/libp2p-noise": "^13.0.0",
|
|
54
54
|
"@chainsafe/libp2p-yamux": "^5.0.0",
|
|
55
|
-
"@helia/interface": "2.0.0
|
|
55
|
+
"@helia/interface": "^2.0.0",
|
|
56
56
|
"@ipld/dag-pb": "^4.0.3",
|
|
57
57
|
"@libp2p/bootstrap": "^9.0.2",
|
|
58
58
|
"@libp2p/interface": "^0.1.1",
|
package/src/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '2.0.0
|
|
1
|
+
export const version = '2.0.0'
|
|
2
2
|
export const name = 'helia'
|