@oracle-agent/oracle 0.25.4 → 0.27.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/README.md +1 -1
- package/dist/assets/skills/oracle-desk-product/SKILL.md +1 -1
- package/dist/bin/desk-server.mjs +35 -79
- package/dist/bin/oracle-data-mcp.mjs +13 -57
- package/dist/bin/oracle-public-server.mjs +4 -48
- package/dist/bin/oracle-route.mjs +22 -66
- package/dist/bin/oracle-scan.mjs +15 -59
- package/dist/cli/commands/chat.mjs +100 -135
- package/dist/cli/commands/doctor.mjs +4 -4
- package/dist/cli/commands/eval.mjs +147 -190
- package/dist/cli/commands/farm.mjs +34 -78
- package/dist/cli/commands/follow.mjs +17 -61
- package/dist/cli/commands/model.mjs +106 -141
- package/dist/cli/commands/receipt.mjs +3 -3
- package/dist/cli/commands/resolve.mjs +13 -57
- package/dist/cli/commands/sign.mjs +14 -14
- package/dist/cli/commands/signer.mjs +14 -14
- package/dist/cli/commands/strategy.mjs +5 -49
- package/dist/cli/commands/swap.mjs +27 -71
- package/dist/cli/commands/venues.mjs +3 -3
- package/dist/data/desk-data.mjs +33 -77
- package/dist/data/names.mjs +2 -46
- package/dist/data/providers/farming.mjs +2 -46
- package/dist/index.mjs +37 -81
- package/dist/local-signer/anvil-attestation-worker.mjs +2 -0
- package/dist/local-signer/index.mjs +3 -3
- package/dist/local-signer/runtime.mjs +13 -0
- package/dist/nft/universal-mint-router.mjs +3 -47
- package/dist/router/index.mjs +2 -46
- package/dist/router/prepare-bridge.mjs +2 -46
- package/dist/scanner/index.mjs +4 -48
- package/dist/strategy/index.mjs +3 -47
- package/package.json +2 -1
- package/public/oracle-splash/_variants/ice.html +1 -1
- package/public/oracle-splash/_variants/ivory.html +1 -1
- package/public/oracle-splash/index.html +1 -1
|
@@ -1,49 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var Rp=Object.create;var pu=Object.defineProperty;var Np=Object.getOwnPropertyDescriptor;var Fp=Object.getOwnPropertyNames;var Up=Object.getPrototypeOf,Mp=Object.prototype.hasOwnProperty;var f=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,A)=>(typeof require<"u"?require:t)[A]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var Xn=(e,t,A)=>()=>{if(A)throw A[0];try{return e&&(t=e(e=0)),t}catch(r){throw A=[r],r}};var p=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(A){throw t=0,A}};var Lp=(e,t,A,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Fp(t))!Mp.call(e,n)&&n!==A&&pu(e,n,{get:()=>t[n],enumerable:!(r=Np(t,n))||r.enumerable});return e};var xp=(e,t,A)=>(A=e!=null?Rp(Up(e)):{},Lp(t||!e||!e.__esModule?pu(A,"default",{value:e,enumerable:!0}):A,e));var ee=p((ZT,Ou)=>{Ou.exports={kClose:Symbol("close"),kDestroy:Symbol("destroy"),kDispatch:Symbol("dispatch"),kUrl:Symbol("url"),kWriting:Symbol("writing"),kResuming:Symbol("resuming"),kQueue:Symbol("queue"),kConnect:Symbol("connect"),kConnecting:Symbol("connecting"),kKeepAliveDefaultTimeout:Symbol("default keep alive timeout"),kKeepAliveMaxTimeout:Symbol("max keep alive timeout"),kKeepAliveTimeoutThreshold:Symbol("keep alive timeout threshold"),kKeepAliveTimeoutValue:Symbol("keep alive timeout"),kKeepAlive:Symbol("keep alive"),kHeadersTimeout:Symbol("headers timeout"),kBodyTimeout:Symbol("body timeout"),kServerName:Symbol("server name"),kLocalAddress:Symbol("local address"),kHost:Symbol("host"),kNoRef:Symbol("no ref"),kBodyUsed:Symbol("used"),kBody:Symbol("abstracted request body"),kRunning:Symbol("running"),kBlocking:Symbol("blocking"),kPending:Symbol("pending"),kSize:Symbol("size"),kBusy:Symbol("busy"),kQueued:Symbol("queued"),kFree:Symbol("free"),kConnected:Symbol("connected"),kClosed:Symbol("closed"),kNeedDrain:Symbol("need drain"),kReset:Symbol("reset"),kDestroyed:Symbol.for("nodejs.stream.destroyed"),kResume:Symbol("resume"),kOnError:Symbol("on error"),kMaxHeadersSize:Symbol("max headers size"),kRunningIdx:Symbol("running index"),kPendingIdx:Symbol("pending index"),kError:Symbol("error"),kClients:Symbol("clients"),kClient:Symbol("client"),kParser:Symbol("parser"),kOnDestroyed:Symbol("destroy callbacks"),kPipelining:Symbol("pipelining"),kSocket:Symbol("socket"),kHostHeader:Symbol("host header"),kConnector:Symbol("connector"),kStrictContentLength:Symbol("strict content length"),kMaxRedirections:Symbol("maxRedirections"),kMaxRequests:Symbol("maxRequestsPerClient"),kProxy:Symbol("proxy agent options"),kCounter:Symbol("socket request counter"),kInterceptors:Symbol("dispatch interceptors"),kMaxResponseSize:Symbol("max response size"),kHTTP2Session:Symbol("http2Session"),kHTTP2SessionState:Symbol("http2Session state"),kRetryHandlerDefaultRetry:Symbol("retry agent default retry"),kConstruct:Symbol("constructable"),kListeners:Symbol("listeners"),kHTTPContext:Symbol("http context"),kMaxConcurrentStreams:Symbol("max concurrent streams"),kNoProxyAgent:Symbol("no proxy agent"),kHttpProxyAgent:Symbol("http proxy agent"),kHttpsProxyAgent:Symbol("https proxy agent")}});var O=p(($T,Qg)=>{"use strict";var Wu=Symbol.for("undici.error.UND_ERR"),te=class extends Error{constructor(t){super(t),this.name="UndiciError",this.code="UND_ERR"}static[Symbol.hasInstance](t){return t&&t[Wu]===!0}[Wu]=!0},_u=Symbol.for("undici.error.UND_ERR_CONNECT_TIMEOUT"),di=class extends te{constructor(t){super(t),this.name="ConnectTimeoutError",this.message=t||"Connect Timeout Error",this.code="UND_ERR_CONNECT_TIMEOUT"}static[Symbol.hasInstance](t){return t&&t[_u]===!0}[_u]=!0},zu=Symbol.for("undici.error.UND_ERR_HEADERS_TIMEOUT"),hi=class extends te{constructor(t){super(t),this.name="HeadersTimeoutError",this.message=t||"Headers Timeout Error",this.code="UND_ERR_HEADERS_TIMEOUT"}static[Symbol.hasInstance](t){return t&&t[zu]===!0}[zu]=!0},Ku=Symbol.for("undici.error.UND_ERR_HEADERS_OVERFLOW"),Qi=class extends te{constructor(t){super(t),this.name="HeadersOverflowError",this.message=t||"Headers Overflow Error",this.code="UND_ERR_HEADERS_OVERFLOW"}static[Symbol.hasInstance](t){return t&&t[Ku]===!0}[Ku]=!0},Zu=Symbol.for("undici.error.UND_ERR_BODY_TIMEOUT"),Ii=class extends te{constructor(t){super(t),this.name="BodyTimeoutError",this.message=t||"Body Timeout Error",this.code="UND_ERR_BODY_TIMEOUT"}static[Symbol.hasInstance](t){return t&&t[Zu]===!0}[Zu]=!0},$u=Symbol.for("undici.error.UND_ERR_RESPONSE_STATUS_CODE"),Bi=class extends te{constructor(t,A,r,n){super(t),this.name="ResponseStatusCodeError",this.message=t||"Response Status Code Error",this.code="UND_ERR_RESPONSE_STATUS_CODE",this.body=n,this.status=A,this.statusCode=A,this.headers=r}static[Symbol.hasInstance](t){return t&&t[$u]===!0}[$u]=!0},Xu=Symbol.for("undici.error.UND_ERR_INVALID_ARG"),Ci=class extends te{constructor(t){super(t),this.name="InvalidArgumentError",this.message=t||"Invalid Argument Error",this.code="UND_ERR_INVALID_ARG"}static[Symbol.hasInstance](t){return t&&t[Xu]===!0}[Xu]=!0},ju=Symbol.for("undici.error.UND_ERR_INVALID_RETURN_VALUE"),fi=class extends te{constructor(t){super(t),this.name="InvalidReturnValueError",this.message=t||"Invalid Return Value Error",this.code="UND_ERR_INVALID_RETURN_VALUE"}static[Symbol.hasInstance](t){return t&&t[ju]===!0}[ju]=!0},eg=Symbol.for("undici.error.UND_ERR_ABORT"),ts=class extends te{constructor(t){super(t),this.name="AbortError",this.message=t||"The operation was aborted",this.code="UND_ERR_ABORT"}static[Symbol.hasInstance](t){return t&&t[eg]===!0}[eg]=!0},tg=Symbol.for("undici.error.UND_ERR_ABORTED"),pi=class extends ts{constructor(t){super(t),this.name="AbortError",this.message=t||"Request aborted",this.code="UND_ERR_ABORTED"}static[Symbol.hasInstance](t){return t&&t[tg]===!0}[tg]=!0},Ag=Symbol.for("undici.error.UND_ERR_INFO"),mi=class extends te{constructor(t){super(t),this.name="InformationalError",this.message=t||"Request information",this.code="UND_ERR_INFO"}static[Symbol.hasInstance](t){return t&&t[Ag]===!0}[Ag]=!0},rg=Symbol.for("undici.error.UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"),yi=class extends te{constructor(t){super(t),this.name="RequestContentLengthMismatchError",this.message=t||"Request body length does not match content-length header",this.code="UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"}static[Symbol.hasInstance](t){return t&&t[rg]===!0}[rg]=!0},ng=Symbol.for("undici.error.UND_ERR_RES_CONTENT_LENGTH_MISMATCH"),wi=class extends te{constructor(t){super(t),this.name="ResponseContentLengthMismatchError",this.message=t||"Response body length does not match content-length header",this.code="UND_ERR_RES_CONTENT_LENGTH_MISMATCH"}static[Symbol.hasInstance](t){return t&&t[ng]===!0}[ng]=!0},sg=Symbol.for("undici.error.UND_ERR_DESTROYED"),bi=class extends te{constructor(t){super(t),this.name="ClientDestroyedError",this.message=t||"The client is destroyed",this.code="UND_ERR_DESTROYED"}static[Symbol.hasInstance](t){return t&&t[sg]===!0}[sg]=!0},og=Symbol.for("undici.error.UND_ERR_CLOSED"),ki=class extends te{constructor(t){super(t),this.name="ClientClosedError",this.message=t||"The client is closed",this.code="UND_ERR_CLOSED"}static[Symbol.hasInstance](t){return t&&t[og]===!0}[og]=!0},ig=Symbol.for("undici.error.UND_ERR_SOCKET"),Di=class extends te{constructor(t,A){super(t),this.name="SocketError",this.message=t||"Socket error",this.code="UND_ERR_SOCKET",this.socket=A}static[Symbol.hasInstance](t){return t&&t[ig]===!0}[ig]=!0},ag=Symbol.for("undici.error.UND_ERR_NOT_SUPPORTED"),Si=class extends te{constructor(t){super(t),this.name="NotSupportedError",this.message=t||"Not supported error",this.code="UND_ERR_NOT_SUPPORTED"}static[Symbol.hasInstance](t){return t&&t[ag]===!0}[ag]=!0},cg=Symbol.for("undici.error.UND_ERR_BPL_MISSING_UPSTREAM"),Ri=class extends te{constructor(t){super(t),this.name="MissingUpstreamError",this.message=t||"No upstream has been added to the BalancedPool",this.code="UND_ERR_BPL_MISSING_UPSTREAM"}static[Symbol.hasInstance](t){return t&&t[cg]===!0}[cg]=!0},lg=Symbol.for("undici.error.UND_ERR_HTTP_PARSER"),Ni=class extends Error{constructor(t,A,r){super(t),this.name="HTTPParserError",this.code=A?`HPE_${A}`:void 0,this.data=r?r.toString():void 0}static[Symbol.hasInstance](t){return t&&t[lg]===!0}[lg]=!0},ug=Symbol.for("undici.error.UND_ERR_RES_EXCEEDED_MAX_SIZE"),Fi=class extends te{constructor(t){super(t),this.name="ResponseExceededMaxSizeError",this.message=t||"Response content exceeded max size",this.code="UND_ERR_RES_EXCEEDED_MAX_SIZE"}static[Symbol.hasInstance](t){return t&&t[ug]===!0}[ug]=!0},gg=Symbol.for("undici.error.UND_ERR_REQ_RETRY"),Ui=class extends te{constructor(t,A,{headers:r,data:n}){super(t),this.name="RequestRetryError",this.message=t||"Request retry error",this.code="UND_ERR_REQ_RETRY",this.statusCode=A,this.data=n,this.headers=r}static[Symbol.hasInstance](t){return t&&t[gg]===!0}[gg]=!0},Eg=Symbol.for("undici.error.UND_ERR_RESPONSE"),Mi=class extends te{constructor(t,A,{headers:r,data:n}){super(t),this.name="ResponseError",this.message=t||"Response error",this.code="UND_ERR_RESPONSE",this.statusCode=A,this.data=n,this.headers=r}static[Symbol.hasInstance](t){return t&&t[Eg]===!0}[Eg]=!0},dg=Symbol.for("undici.error.UND_ERR_PRX_TLS"),Li=class extends te{constructor(t,A,r){super(A,{cause:t,...r??{}}),this.name="SecureProxyConnectionError",this.message=A||"Secure Proxy Connection failed",this.code="UND_ERR_PRX_TLS",this.cause=t}static[Symbol.hasInstance](t){return t&&t[dg]===!0}[dg]=!0},hg=Symbol.for("undici.error.UND_ERR_WS_MESSAGE_SIZE_EXCEEDED"),xi=class extends te{constructor(t){super(t),this.name="MessageSizeExceededError",this.message=t||"Max decompressed message size exceeded",this.code="UND_ERR_WS_MESSAGE_SIZE_EXCEEDED"}static[Symbol.hasInstance](t){return t&&t[hg]===!0}get[hg](){return!0}};Qg.exports={AbortError:ts,HTTPParserError:Ni,UndiciError:te,HeadersTimeoutError:hi,HeadersOverflowError:Qi,BodyTimeoutError:Ii,RequestContentLengthMismatchError:yi,ConnectTimeoutError:di,ResponseStatusCodeError:Bi,InvalidArgumentError:Ci,InvalidReturnValueError:fi,RequestAbortedError:pi,ClientDestroyedError:bi,ClientClosedError:ki,InformationalError:mi,SocketError:Di,NotSupportedError:Si,ResponseContentLengthMismatchError:wi,BalancedPoolMissingUpstreamError:Ri,ResponseExceededMaxSizeError:Fi,RequestRetryError:Ui,ResponseError:Mi,SecureProxyConnectionError:Li,MessageSizeExceededError:xi}});var rs=p((XT,Ig)=>{"use strict";var As={},Ti=["Accept","Accept-Encoding","Accept-Language","Accept-Ranges","Access-Control-Allow-Credentials","Access-Control-Allow-Headers","Access-Control-Allow-Methods","Access-Control-Allow-Origin","Access-Control-Expose-Headers","Access-Control-Max-Age","Access-Control-Request-Headers","Access-Control-Request-Method","Age","Allow","Alt-Svc","Alt-Used","Authorization","Cache-Control","Clear-Site-Data","Connection","Content-Disposition","Content-Encoding","Content-Language","Content-Length","Content-Location","Content-Range","Content-Security-Policy","Content-Security-Policy-Report-Only","Content-Type","Cookie","Cross-Origin-Embedder-Policy","Cross-Origin-Opener-Policy","Cross-Origin-Resource-Policy","Date","Device-Memory","Downlink","ECT","ETag","Expect","Expect-CT","Expires","Forwarded","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Keep-Alive","Last-Modified","Link","Location","Max-Forwards","Origin","Permissions-Policy","Pragma","Proxy-Authenticate","Proxy-Authorization","RTT","Range","Referer","Referrer-Policy","Refresh","Retry-After","Sec-WebSocket-Accept","Sec-WebSocket-Extensions","Sec-WebSocket-Key","Sec-WebSocket-Protocol","Sec-WebSocket-Version","Server","Server-Timing","Service-Worker-Allowed","Service-Worker-Navigation-Preload","Set-Cookie","SourceMap","Strict-Transport-Security","Supports-Loading-Mode","TE","Timing-Allow-Origin","Trailer","Transfer-Encoding","Upgrade","Upgrade-Insecure-Requests","User-Agent","Vary","Via","WWW-Authenticate","X-Content-Type-Options","X-DNS-Prefetch-Control","X-Frame-Options","X-Permitted-Cross-Domain-Policies","X-Powered-By","X-Requested-With","X-XSS-Protection"];for(let e=0;e<Ti.length;++e){let t=Ti[e],A=t.toLowerCase();As[t]=As[A]=A}Object.setPrototypeOf(As,null);Ig.exports={wellknownHeaderNames:Ti,headerNameLowerCasedRecord:As}});var pg=p((jT,fg)=>{"use strict";var{wellknownHeaderNames:Bg,headerNameLowerCasedRecord:Xp}=rs(),vi=class e{value=null;left=null;middle=null;right=null;code;constructor(t,A,r){if(r===void 0||r>=t.length)throw new TypeError("Unreachable");if((this.code=t.charCodeAt(r))>127)throw new TypeError("key must be ascii string");t.length!==++r?this.middle=new e(t,A,r):this.value=A}add(t,A){let r=t.length;if(r===0)throw new TypeError("Unreachable");let n=0,s=this;for(;;){let o=t.charCodeAt(n);if(o>127)throw new TypeError("key must be ascii string");if(s.code===o)if(r===++n){s.value=A;break}else if(s.middle!==null)s=s.middle;else{s.middle=new e(t,A,n);break}else if(s.code<o)if(s.left!==null)s=s.left;else{s.left=new e(t,A,n);break}else if(s.right!==null)s=s.right;else{s.right=new e(t,A,n);break}}}search(t){let A=t.length,r=0,n=this;for(;n!==null&&r<A;){let s=t[r];for(s<=90&&s>=65&&(s|=32);n!==null;){if(s===n.code){if(A===++r)return n;n=n.middle;break}n=n.code<s?n.left:n.right}}return null}},ns=class{node=null;insert(t,A){this.node===null?this.node=new vi(t,A,0):this.node.add(t,A)}lookup(t){return this.node?.search(t)?.value??null}},Cg=new ns;for(let e=0;e<Bg.length;++e){let t=Xp[Bg[e]];Cg.insert(t,t)}fg.exports={TernarySearchTree:ns,tree:Cg}});var Y=p((ev,vg)=>{"use strict";var zr=f("node:assert"),{kDestroyed:yg,kBodyUsed:JA,kListeners:Gi,kBody:mg}=ee(),{IncomingMessage:jp}=f("node:http"),is=f("node:stream"),em=f("node:net"),{Blob:tm}=f("node:buffer"),Am=f("node:util"),{stringify:rm}=f("node:querystring"),{EventEmitter:nm}=f("node:events"),{InvalidArgumentError:ue}=O(),{headerNameLowerCasedRecord:sm}=rs(),{tree:wg}=pg(),[om,im]=process.versions.node.split(".").map(e=>Number(e)),os=class{constructor(t){this[mg]=t,this[JA]=!1}async*[Symbol.asyncIterator](){zr(!this[JA],"disturbed"),this[JA]=!0,yield*this[mg]}};function am(e){return as(e)?(Rg(e)===0&&e.on("data",function(){zr(!1)}),typeof e.readableDidRead!="boolean"&&(e[JA]=!1,nm.prototype.on.call(e,"data",function(){this[JA]=!0})),e):e&&typeof e.pipeTo=="function"?new os(e):e&&typeof e!="string"&&!ArrayBuffer.isView(e)&&Sg(e)?new os(e):e}function cm(){}function as(e){return e&&typeof e=="object"&&typeof e.pipe=="function"&&typeof e.on=="function"}function bg(e){if(e===null)return!1;if(e instanceof tm)return!0;if(typeof e!="object")return!1;{let t=e[Symbol.toStringTag];return(t==="Blob"||t==="File")&&("stream"in e&&typeof e.stream=="function"||"arrayBuffer"in e&&typeof e.arrayBuffer=="function")}}function lm(e,t){if(e.includes("?")||e.includes("#"))throw new Error('Query params cannot be passed when url already contains "?" or "#".');let A=rm(t);return A&&(e+="?"+A),e}function kg(e){let t=parseInt(e,10);return t===Number(e)&&t>=0&&t<=65535}function ss(e){return e!=null&&e[0]==="h"&&e[1]==="t"&&e[2]==="t"&&e[3]==="p"&&(e[4]===":"||e[4]==="s"&&e[5]===":")}function Dg(e){if(typeof e=="string"){if(e=new URL(e),!ss(e.origin||e.protocol))throw new ue("Invalid URL protocol: the URL must start with `http:` or `https:`.");return e}if(!e||typeof e!="object")throw new ue("Invalid URL: The URL argument must be a non-null object.");if(!(e instanceof URL)){if(e.port!=null&&e.port!==""&&kg(e.port)===!1)throw new ue("Invalid URL: port must be a valid integer or a string representation of an integer.");if(e.path!=null&&typeof e.path!="string")throw new ue("Invalid URL path: the path must be a string or null/undefined.");if(e.pathname!=null&&typeof e.pathname!="string")throw new ue("Invalid URL pathname: the pathname must be a string or null/undefined.");if(e.hostname!=null&&typeof e.hostname!="string")throw new ue("Invalid URL hostname: the hostname must be a string or null/undefined.");if(e.origin!=null&&typeof e.origin!="string")throw new ue("Invalid URL origin: the origin must be a string or null/undefined.");if(!ss(e.origin||e.protocol))throw new ue("Invalid URL protocol: the URL must start with `http:` or `https:`.");let t=e.port!=null?e.port:e.protocol==="https:"?443:80,A=e.origin!=null?e.origin:`${e.protocol||""}//${e.hostname||""}:${t}`,r=e.path!=null?e.path:`${e.pathname||""}${e.search||""}`;return A[A.length-1]==="/"&&(A=A.slice(0,A.length-1)),r&&r[0]!=="/"&&(r=`/${r}`),new URL(`${A}${r}`)}if(!ss(e.origin||e.protocol))throw new ue("Invalid URL protocol: the URL must start with `http:` or `https:`.");return e}function um(e){if(e=Dg(e),e.pathname!=="/"||e.search||e.hash)throw new ue("invalid url");return e}function gm(e){if(e[0]==="["){let A=e.indexOf("]");return zr(A!==-1),e.substring(1,A)}let t=e.indexOf(":");return t===-1?e:e.substring(0,t)}function Em(e){if(!e)return null;zr(typeof e=="string");let t=gm(e);return em.isIP(t)?"":t}function dm(e){return JSON.parse(JSON.stringify(e))}function hm(e){return e!=null&&typeof e[Symbol.asyncIterator]=="function"}function Sg(e){return e!=null&&(typeof e[Symbol.iterator]=="function"||typeof e[Symbol.asyncIterator]=="function")}function Rg(e){if(e==null)return 0;if(as(e)){let t=e._readableState;return t&&t.objectMode===!1&&t.ended===!0&&Number.isFinite(t.length)?t.length:null}else{if(bg(e))return e.size!=null?e.size:null;if(Ug(e))return e.byteLength}return null}function Ng(e){return e&&!!(e.destroyed||e[yg]||is.isDestroyed?.(e))}function Qm(e,t){e==null||!as(e)||Ng(e)||(typeof e.destroy=="function"?(Object.getPrototypeOf(e).constructor===jp&&(e.socket=null),e.destroy(t)):t&&queueMicrotask(()=>{e.emit("error",t)}),e.destroyed!==!0&&(e[yg]=!0))}var Im=/timeout=(\d+)/;function Bm(e){let t=e.toString().match(Im);return t?parseInt(t[1],10)*1e3:null}function Fg(e){return typeof e=="string"?sm[e]??e.toLowerCase():wg.lookup(e)??e.toString("latin1").toLowerCase()}function Cm(e){return wg.lookup(e)??e.toString("latin1").toLowerCase()}function fm(e,t){t===void 0&&(t={});for(let A=0;A<e.length;A+=2){let r=Fg(e[A]),n=t[r];if(n)typeof n=="string"&&(n=[n],t[r]=n),n.push(e[A+1].toString("utf8"));else{let s=e[A+1];typeof s=="string"?t[r]=s:t[r]=Array.isArray(s)?s.map(o=>o.toString("utf8")):s.toString("utf8")}}return"content-length"in t&&"content-disposition"in t&&(t["content-disposition"]=Buffer.from(t["content-disposition"]).toString("latin1")),t}function pm(e){let t=e.length,A=new Array(t),r=!1,n=-1,s,o,i=0;for(let a=0;a<e.length;a+=2)s=e[a],o=e[a+1],typeof s!="string"&&(s=s.toString()),typeof o!="string"&&(o=o.toString("utf8")),i=s.length,i===14&&s[7]==="-"&&(s==="content-length"||s.toLowerCase()==="content-length")?r=!0:i===19&&s[7]==="-"&&(s==="content-disposition"||s.toLowerCase()==="content-disposition")&&(n=a+1),A[a]=s,A[a+1]=o;return r&&n!==-1&&(A[n]=Buffer.from(A[n]).toString("latin1")),A}function Ug(e){return e instanceof Uint8Array||Buffer.isBuffer(e)}function mm(e,t,A){if(!e||typeof e!="object")throw new ue("handler must be an object");if(typeof e.onConnect!="function")throw new ue("invalid onConnect method");if(typeof e.onError!="function")throw new ue("invalid onError method");if(typeof e.onBodySent!="function"&&e.onBodySent!==void 0)throw new ue("invalid onBodySent method");if(A||t==="CONNECT"){if(typeof e.onUpgrade!="function")throw new ue("invalid onUpgrade method")}else{if(typeof e.onHeaders!="function")throw new ue("invalid onHeaders method");if(typeof e.onData!="function")throw new ue("invalid onData method");if(typeof e.onComplete!="function")throw new ue("invalid onComplete method")}}function ym(e){return!!(e&&(is.isDisturbed(e)||e[JA]))}function wm(e){return!!(e&&is.isErrored(e))}function bm(e){return!!(e&&is.isReadable(e))}function km(e){return{localAddress:e.localAddress,localPort:e.localPort,remoteAddress:e.remoteAddress,remotePort:e.remotePort,remoteFamily:e.remoteFamily,timeout:e.timeout,bytesWritten:e.bytesWritten,bytesRead:e.bytesRead}}function Dm(e){let t;return new ReadableStream({async start(){t=e[Symbol.asyncIterator]()},async pull(A){let{done:r,value:n}=await t.next();if(r)queueMicrotask(()=>{A.close(),A.byobRequest?.respond(0)});else{let s=Buffer.isBuffer(n)?n:Buffer.from(n);s.byteLength&&A.enqueue(new Uint8Array(s))}return A.desiredSize>0},async cancel(A){await t.return()},type:"bytes"})}function Sm(e){return e&&typeof e=="object"&&typeof e.append=="function"&&typeof e.delete=="function"&&typeof e.get=="function"&&typeof e.getAll=="function"&&typeof e.has=="function"&&typeof e.set=="function"&&e[Symbol.toStringTag]==="FormData"}function Rm(e,t){return"addEventListener"in e?(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)):(e.addListener("abort",t),()=>e.removeListener("abort",t))}var Nm=typeof String.prototype.toWellFormed=="function",Fm=typeof String.prototype.isWellFormed=="function";function Mg(e){return Nm?`${e}`.toWellFormed():Am.toUSVString(e)}function Um(e){return Fm?`${e}`.isWellFormed():Mg(e)===`${e}`}function Lg(e){switch(e){case 34:case 40:case 41:case 44:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 123:case 125:return!1;default:return e>=33&&e<=126}}function Mm(e){if(e.length===0)return!1;for(let t=0;t<e.length;++t)if(!Lg(e.charCodeAt(t)))return!1;return!0}var Lm=/[^\t\x20-\x7e\x80-\xff]/;function xm(e){return!Lm.test(e)}function Tm(e){if(e==null||e==="")return{start:0,end:null,size:null};let t=e?e.match(/^bytes (\d+)-(\d+)\/(\d+)?$/):null;return t?{start:parseInt(t[1]),end:t[2]?parseInt(t[2]):null,size:t[3]?parseInt(t[3]):null}:null}function vm(e,t,A){return(e[Gi]??=[]).push([t,A]),e.on(t,A),e}function Gm(e){for(let[t,A]of e[Gi]??[])e.removeListener(t,A);e[Gi]=null}function Ym(e,t,A){try{t.onError(A),zr(t.aborted)}catch(r){e.emit("error",r)}}var xg=Object.create(null);xg.enumerable=!0;var Yi={delete:"DELETE",DELETE:"DELETE",get:"GET",GET:"GET",head:"HEAD",HEAD:"HEAD",options:"OPTIONS",OPTIONS:"OPTIONS",post:"POST",POST:"POST",put:"PUT",PUT:"PUT"},Tg={...Yi,patch:"patch",PATCH:"PATCH"};Object.setPrototypeOf(Yi,null);Object.setPrototypeOf(Tg,null);vg.exports={kEnumerableProperty:xg,nop:cm,isDisturbed:ym,isErrored:wm,isReadable:bm,toUSVString:Mg,isUSVString:Um,isBlobLike:bg,parseOrigin:um,parseURL:Dg,getServerName:Em,isStream:as,isIterable:Sg,isAsyncIterable:hm,isDestroyed:Ng,headerNameToString:Fg,bufferToLowerCasedHeaderName:Cm,addListener:vm,removeAllListeners:Gm,errorRequest:Ym,parseRawHeaders:pm,parseHeaders:fm,parseKeepAliveTimeout:Bm,destroy:Qm,bodyLength:Rg,deepClone:dm,ReadableStreamFrom:Dm,isBuffer:Ug,validateHandler:mm,getSocketInfo:km,isFormDataLike:Sm,buildURL:lm,addAbortListener:Rm,isValidHTTPToken:Mm,isValidHeaderValue:xm,isTokenCharCode:Lg,parseRangeHeader:Tm,normalizedMethodRecordsBase:Yi,normalizedMethodRecords:Tg,isValidPort:kg,isHttpOrHttpsPrefixed:ss,nodeMajor:om,nodeMinor:im,safeHTTPMethods:["GET","HEAD","OPTIONS","TRACE"],wrapRequestBody:am}});var VA=p((tv,Yg)=>{"use strict";var _=f("node:diagnostics_channel"),Ji=f("node:util"),cs=Ji.debuglog("undici"),Hi=Ji.debuglog("fetch"),lA=Ji.debuglog("websocket"),Gg=!1,Hm={beforeConnect:_.channel("undici:client:beforeConnect"),connected:_.channel("undici:client:connected"),connectError:_.channel("undici:client:connectError"),sendHeaders:_.channel("undici:client:sendHeaders"),create:_.channel("undici:request:create"),bodySent:_.channel("undici:request:bodySent"),headers:_.channel("undici:request:headers"),trailers:_.channel("undici:request:trailers"),error:_.channel("undici:request:error"),open:_.channel("undici:websocket:open"),close:_.channel("undici:websocket:close"),socketError:_.channel("undici:websocket:socket_error"),ping:_.channel("undici:websocket:ping"),pong:_.channel("undici:websocket:pong")};if(cs.enabled||Hi.enabled){let e=Hi.enabled?Hi:cs;_.channel("undici:client:beforeConnect").subscribe(t=>{let{connectParams:{version:A,protocol:r,port:n,host:s}}=t;e("connecting to %s using %s%s",`${s}${n?`:${n}`:""}`,r,A)}),_.channel("undici:client:connected").subscribe(t=>{let{connectParams:{version:A,protocol:r,port:n,host:s}}=t;e("connected to %s using %s%s",`${s}${n?`:${n}`:""}`,r,A)}),_.channel("undici:client:connectError").subscribe(t=>{let{connectParams:{version:A,protocol:r,port:n,host:s},error:o}=t;e("connection to %s using %s%s errored - %s",`${s}${n?`:${n}`:""}`,r,A,o.message)}),_.channel("undici:client:sendHeaders").subscribe(t=>{let{request:{method:A,path:r,origin:n}}=t;e("sending request to %s %s/%s",A,n,r)}),_.channel("undici:request:headers").subscribe(t=>{let{request:{method:A,path:r,origin:n},response:{statusCode:s}}=t;e("received response to %s %s/%s - HTTP %d",A,n,r,s)}),_.channel("undici:request:trailers").subscribe(t=>{let{request:{method:A,path:r,origin:n}}=t;e("trailers received from %s %s/%s",A,n,r)}),_.channel("undici:request:error").subscribe(t=>{let{request:{method:A,path:r,origin:n},error:s}=t;e("request to %s %s/%s errored - %s",A,n,r,s.message)}),Gg=!0}if(lA.enabled){if(!Gg){let e=cs.enabled?cs:lA;_.channel("undici:client:beforeConnect").subscribe(t=>{let{connectParams:{version:A,protocol:r,port:n,host:s}}=t;e("connecting to %s%s using %s%s",s,n?`:${n}`:"",r,A)}),_.channel("undici:client:connected").subscribe(t=>{let{connectParams:{version:A,protocol:r,port:n,host:s}}=t;e("connected to %s%s using %s%s",s,n?`:${n}`:"",r,A)}),_.channel("undici:client:connectError").subscribe(t=>{let{connectParams:{version:A,protocol:r,port:n,host:s},error:o}=t;e("connection to %s%s using %s%s errored - %s",s,n?`:${n}`:"",r,A,o.message)}),_.channel("undici:client:sendHeaders").subscribe(t=>{let{request:{method:A,path:r,origin:n}}=t;e("sending request to %s %s/%s",A,n,r)})}_.channel("undici:websocket:open").subscribe(e=>{let{address:{address:t,port:A}}=e;lA("connection opened %s%s",t,A?`:${A}`:"")}),_.channel("undici:websocket:close").subscribe(e=>{let{websocket:t,code:A,reason:r}=e;lA("closed connection to %s - %s %s",t.url,A,r)}),_.channel("undici:websocket:socket_error").subscribe(e=>{lA("connection errored - %s",e.message)}),_.channel("undici:websocket:ping").subscribe(e=>{lA("ping received")}),_.channel("undici:websocket:pong").subscribe(e=>{lA("pong received")})}Yg.exports={channels:Hm}});var qg=p((Av,Vg)=>{"use strict";var{InvalidArgumentError:K,NotSupportedError:Jm}=O(),wt=f("node:assert"),{isValidHTTPToken:Jg,isValidHeaderValue:Kr,isStream:Vm,destroy:qm,isBuffer:Pm,isFormDataLike:Om,isIterable:Wm,isBlobLike:_m,buildURL:zm,validateHandler:Km,getServerName:Zm,normalizedMethodRecords:$m}=Y(),{channels:Et}=VA(),{headerNameLowerCasedRecord:Hg}=rs(),Xm=/[^\u0021-\u00ff]/,ze=Symbol("handler"),Vi=class{constructor(t,{path:A,method:r,body:n,headers:s,query:o,idempotent:i,blocking:a,upgrade:l,headersTimeout:c,bodyTimeout:u,reset:g,throwOnError:E,expectContinue:h,servername:Q},I){if(typeof A!="string")throw new K("path must be a string");if(A[0]!=="/"&&!(A.startsWith("http://")||A.startsWith("https://"))&&r!=="CONNECT")throw new K("path must be an absolute URL or start with a slash");if(Xm.test(A))throw new K("invalid request path");if(typeof r!="string")throw new K("method must be a string");if($m[r]===void 0&&!Jg(r))throw new K("invalid request method");if(l&&typeof l!="string")throw new K("upgrade must be a string");if(l&&!Kr(l))throw new K("invalid upgrade header");if(c!=null&&(!Number.isFinite(c)||c<0))throw new K("invalid headersTimeout");if(u!=null&&(!Number.isFinite(u)||u<0))throw new K("invalid bodyTimeout");if(g!=null&&typeof g!="boolean")throw new K("invalid reset");if(h!=null&&typeof h!="boolean")throw new K("invalid expectContinue");if(this.headersTimeout=c,this.bodyTimeout=u,this.throwOnError=E===!0,this.method=r,this.abort=null,n==null)this.body=null;else if(Vm(n)){this.body=n;let d=this.body._readableState;(!d||!d.autoDestroy)&&(this.endHandler=function(){qm(this)},this.body.on("end",this.endHandler)),this.errorHandler=C=>{this.abort?this.abort(C):this.error=C},this.body.on("error",this.errorHandler)}else if(Pm(n))this.body=n.byteLength?n:null;else if(ArrayBuffer.isView(n))this.body=n.buffer.byteLength?Buffer.from(n.buffer,n.byteOffset,n.byteLength):null;else if(n instanceof ArrayBuffer)this.body=n.byteLength?Buffer.from(n):null;else if(typeof n=="string")this.body=n.length?Buffer.from(n):null;else if(Om(n)||Wm(n)||_m(n))this.body=n;else throw new K("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable");if(this.completed=!1,this.aborted=!1,this.upgrade=l||null,this.path=o?zm(A,o):A,this.origin=t,this.idempotent=i??(r==="HEAD"||r==="GET"),this.blocking=a??!1,this.reset=g??null,this.host=null,this.contentLength=null,this.contentType=null,this.headers=[],this.expectContinue=h??!1,Array.isArray(s)){if(s.length%2!==0)throw new K("headers array must be even");for(let d=0;d<s.length;d+=2)ls(this,s[d],s[d+1])}else if(s&&typeof s=="object")if(s[Symbol.iterator])for(let d of s){if(!Array.isArray(d)||d.length!==2)throw new K("headers must be in key-value pair format");ls(this,d[0],d[1])}else{let d=Object.keys(s);for(let C=0;C<d.length;++C)ls(this,d[C],s[d[C]])}else if(s!=null)throw new K("headers must be an object or an array");Km(I,r,l),this.servername=Q||Zm(this.host),this[ze]=I,Et.create.hasSubscribers&&Et.create.publish({request:this})}onBodySent(t){if(this[ze].onBodySent)try{return this[ze].onBodySent(t)}catch(A){this.abort(A)}}onRequestSent(){if(Et.bodySent.hasSubscribers&&Et.bodySent.publish({request:this}),this[ze].onRequestSent)try{return this[ze].onRequestSent()}catch(t){this.abort(t)}}onConnect(t){if(wt(!this.aborted),wt(!this.completed),this.error)t(this.error);else return this.abort=t,this[ze].onConnect(t)}onResponseStarted(){return this[ze].onResponseStarted?.()}onHeaders(t,A,r,n){wt(!this.aborted),wt(!this.completed),Et.headers.hasSubscribers&&Et.headers.publish({request:this,response:{statusCode:t,headers:A,statusText:n}});try{return this[ze].onHeaders(t,A,r,n)}catch(s){this.abort(s)}}onData(t){wt(!this.aborted),wt(!this.completed);try{return this[ze].onData(t)}catch(A){return this.abort(A),!1}}onUpgrade(t,A,r){return wt(!this.aborted),wt(!this.completed),this[ze].onUpgrade(t,A,r)}onComplete(t){this.onFinally(),wt(!this.aborted),this.completed=!0,Et.trailers.hasSubscribers&&Et.trailers.publish({request:this,trailers:t});try{return this[ze].onComplete(t)}catch(A){this.onError(A)}}onError(t){if(this.onFinally(),Et.error.hasSubscribers&&Et.error.publish({request:this,error:t}),!this.aborted)return this.aborted=!0,this[ze].onError(t)}onFinally(){this.errorHandler&&(this.body.off("error",this.errorHandler),this.errorHandler=null),this.endHandler&&(this.body.off("end",this.endHandler),this.endHandler=null)}addHeader(t,A){return ls(this,t,A),this}};function ls(e,t,A){if(A&&typeof A=="object"&&!Array.isArray(A))throw new K(`invalid ${t} header`);if(A===void 0)return;let r=Hg[t];if(r===void 0&&(r=t.toLowerCase(),Hg[r]===void 0&&!Jg(r)))throw new K("invalid header key");if(Array.isArray(A)){let n=[];for(let s=0;s<A.length;s++)if(typeof A[s]=="string"){if(!Kr(A[s]))throw new K(`invalid ${t} header`);n.push(A[s])}else if(A[s]===null)n.push("");else{if(typeof A[s]=="object")throw new K(`invalid ${t} header`);{let o=`${A[s]}`;if(!Kr(o))throw new K(`invalid ${t} header`);n.push(o)}}A=n}else if(typeof A=="string"){if(!Kr(A))throw new K(`invalid ${t} header`)}else if(A===null)A="";else if(A=`${A}`,!Kr(A))throw new K(`invalid ${t} header`);if(r==="host"){if(e.host!==null)throw new K("duplicate host header");if(typeof A!="string")throw new K("invalid host header");e.host=A}else if(r==="content-length"){if(e.contentLength!==null)throw new K("duplicate content-length header");if(e.contentLength=parseInt(A,10),!Number.isFinite(e.contentLength))throw new K("invalid content-length header")}else if(e.contentType===null&&r==="content-type")e.contentType=A,e.headers.push(t,A);else{if(r==="transfer-encoding"||r==="keep-alive"||r==="upgrade")throw new K(`invalid ${r} header`);if(r==="connection"){let n=typeof A=="string"?A.toLowerCase():null;if(n!=="close"&&n!=="keep-alive")throw new K("invalid connection header");n==="close"&&(e.reset=!0)}else{if(r==="expect")throw new Jm("expect header not supported");e.headers.push(t,A)}}}Vg.exports=Vi});var Zr=p((rv,Pg)=>{"use strict";var jm=f("node:events"),us=class extends jm{dispatch(){throw new Error("not implemented")}close(){throw new Error("not implemented")}destroy(){throw new Error("not implemented")}compose(...t){let A=Array.isArray(t[0])?t[0]:t,r=this.dispatch.bind(this);for(let n of A)if(n!=null){if(typeof n!="function")throw new TypeError(`invalid interceptor, expected function received ${typeof n}`);if(r=n(r),r==null||typeof r!="function"||r.length!==2)throw new TypeError("invalid interceptor")}return new qi(this,r)}},qi=class extends us{#e=null;#t=null;constructor(t,A){super(),this.#e=t,this.#t=A}dispatch(...t){this.#t(...t)}close(...t){return this.#e.close(...t)}destroy(...t){return this.#e.destroy(...t)}};Pg.exports=us});var WA=p((nv,Og)=>{"use strict";var ey=Zr(),{ClientDestroyedError:Pi,ClientClosedError:ty,InvalidArgumentError:qA}=O(),{kDestroy:Ay,kClose:ry,kClosed:$r,kDestroyed:PA,kDispatch:Oi,kInterceptors:uA}=ee(),bt=Symbol("onDestroyed"),OA=Symbol("onClosed"),gs=Symbol("Intercepted Dispatch"),Wi=Symbol("webSocketOptions"),_i=class extends ey{constructor(t){super(),this[PA]=!1,this[bt]=null,this[$r]=!1,this[OA]=[],this[Wi]=t?.webSocket??{}}get webSocketOptions(){return{maxFragments:this[Wi].maxFragments??131072,maxPayloadSize:this[Wi].maxPayloadSize??128*1024*1024}}get destroyed(){return this[PA]}get closed(){return this[$r]}get interceptors(){return this[uA]}set interceptors(t){if(t){for(let A=t.length-1;A>=0;A--)if(typeof this[uA][A]!="function")throw new qA("interceptor must be an function")}this[uA]=t}close(t){if(t===void 0)return new Promise((r,n)=>{this.close((s,o)=>s?n(s):r(o))});if(typeof t!="function")throw new qA("invalid callback");if(this[PA]){queueMicrotask(()=>t(new Pi,null));return}if(this[$r]){this[OA]?this[OA].push(t):queueMicrotask(()=>t(null,null));return}this[$r]=!0,this[OA].push(t);let A=()=>{let r=this[OA];this[OA]=null;for(let n=0;n<r.length;n++)r[n](null,null)};this[ry]().then(()=>this.destroy()).then(()=>{queueMicrotask(A)})}destroy(t,A){if(typeof t=="function"&&(A=t,t=null),A===void 0)return new Promise((n,s)=>{this.destroy(t,(o,i)=>o?s(o):n(i))});if(typeof A!="function")throw new qA("invalid callback");if(this[PA]){this[bt]?this[bt].push(A):queueMicrotask(()=>A(null,null));return}t||(t=new Pi),this[PA]=!0,this[bt]=this[bt]||[],this[bt].push(A);let r=()=>{let n=this[bt];this[bt]=null;for(let s=0;s<n.length;s++)n[s](null,null)};this[Ay](t).then(()=>{queueMicrotask(r)})}[gs](t,A){if(!this[uA]||this[uA].length===0)return this[gs]=this[Oi],this[Oi](t,A);let r=this[Oi].bind(this);for(let n=this[uA].length-1;n>=0;n--)r=this[uA][n](r);return this[gs]=r,r(t,A)}dispatch(t,A){if(!A||typeof A!="object")throw new qA("handler must be an object");try{if(!t||typeof t!="object")throw new qA("opts must be an object.");if(this[PA]||this[bt])throw new Pi;if(this[$r])throw new ty;return this[gs](t,A)}catch(r){if(typeof A.onError!="function")throw new qA("invalid onError method");return A.onError(r),!1}}};Og.exports=_i});var ea=p((sv,Kg)=>{"use strict";var _A=0,zi=1e3,Ki=(zi>>1)-1,kt,Zi=Symbol("kFastTimer"),Dt=[],$i=-2,Xi=-1,_g=0,Wg=1;function ji(){_A+=Ki;let e=0,t=Dt.length;for(;e<t;){let A=Dt[e];A._state===_g?(A._idleStart=_A-Ki,A._state=Wg):A._state===Wg&&_A>=A._idleStart+A._idleTimeout&&(A._state=Xi,A._idleStart=-1,A._onTimeout(A._timerArg)),A._state===Xi?(A._state=$i,--t!==0&&(Dt[e]=Dt[t])):++e}Dt.length=t,Dt.length!==0&&zg()}function zg(){kt?kt.refresh():(clearTimeout(kt),kt=setTimeout(ji,Ki),kt.unref&&kt.unref())}var Es=class{[Zi]=!0;_state=$i;_idleTimeout=-1;_idleStart=-1;_onTimeout;_timerArg;constructor(t,A,r){this._onTimeout=t,this._idleTimeout=A,this._timerArg=r,this.refresh()}refresh(){this._state===$i&&Dt.push(this),(!kt||Dt.length===1)&&zg(),this._state=_g}clear(){this._state=Xi,this._idleStart=-1}};Kg.exports={setTimeout(e,t,A){return t<=zi?setTimeout(e,t,A):new Es(e,t,A)},clearTimeout(e){e[Zi]?e.clear():clearTimeout(e)},setFastTimeout(e,t,A){return new Es(e,t,A)},clearFastTimeout(e){e.clear()},now(){return _A},tick(e=0){_A+=e-zi+1,ji(),ji()},reset(){_A=0,Dt.length=0,clearTimeout(kt),kt=null},kFastTimer:Zi}});var Xr=p((av,eE)=>{"use strict";var ny=f("node:net"),Zg=f("node:assert"),jg=Y(),{InvalidArgumentError:sy,ConnectTimeoutError:oy}=O(),ds=ea();function $g(){}var ta,Aa;global.FinalizationRegistry&&!(process.env.NODE_V8_COVERAGE||process.env.UNDICI_NO_FG)?Aa=class{constructor(t){this._maxCachedSessions=t,this._sessionCache=new Map,this._sessionRegistry=new global.FinalizationRegistry(A=>{if(this._sessionCache.size<this._maxCachedSessions)return;let r=this._sessionCache.get(A);r!==void 0&&r.deref()===void 0&&this._sessionCache.delete(A)})}get(t){let A=this._sessionCache.get(t);return A?A.deref():null}set(t,A){this._maxCachedSessions!==0&&(this._sessionCache.set(t,new WeakRef(A)),this._sessionRegistry.register(A,t))}}:Aa=class{constructor(t){this._maxCachedSessions=t,this._sessionCache=new Map}get(t){return this._sessionCache.get(t)}set(t,A){if(this._maxCachedSessions!==0){if(this._sessionCache.size>=this._maxCachedSessions){let{value:r}=this._sessionCache.keys().next();this._sessionCache.delete(r)}this._sessionCache.set(t,A)}}};function iy({allowH2:e,maxCachedSessions:t,socketPath:A,timeout:r,session:n,...s}){if(t!=null&&(!Number.isInteger(t)||t<0))throw new sy("maxCachedSessions must be a positive integer or zero");let o={path:A,...s},i=new Aa(t??100);return r=r??1e4,e=e??!1,function({hostname:l,host:c,protocol:u,port:g,servername:E,localAddress:h,httpSocket:Q},I){let d;if(u==="https:"){ta||(ta=f("node:tls")),E=E||o.servername||jg.getServerName(c)||null;let w=E||l;Zg(w);let B=n||i.get(w)||null;g=g||443,d=ta.connect({highWaterMark:16384,...o,servername:E,session:B,localAddress:h,ALPNProtocols:e?["http/1.1","h2"]:["http/1.1"],socket:Q,port:g,host:l}),d.on("session",function(k){i.set(w,k)})}else Zg(!Q,"httpSocket can only be sent on TLS update"),g=g||80,d=ny.connect({highWaterMark:64*1024,...o,localAddress:h,port:g,host:l});if(o.keepAlive==null||o.keepAlive){let w=o.keepAliveInitialDelay===void 0?6e4:o.keepAliveInitialDelay;d.setKeepAlive(!0,w)}let C=ay(new WeakRef(d),{timeout:r,hostname:l,port:g});return d.setNoDelay(!0).once(u==="https:"?"secureConnect":"connect",function(){if(queueMicrotask(C),I){let w=I;I=null,w(null,this)}}).on("error",function(w){if(queueMicrotask(C),I){let B=I;I=null,B(w)}}),d}}var ay=process.platform==="win32"?(e,t)=>{if(!t.timeout)return $g;let A=null,r=null,n=ds.setFastTimeout(()=>{A=setImmediate(()=>{r=setImmediate(()=>Xg(e.deref(),t))})},t.timeout);return()=>{ds.clearFastTimeout(n),clearImmediate(A),clearImmediate(r)}}:(e,t)=>{if(!t.timeout)return $g;let A=null,r=ds.setFastTimeout(()=>{A=setImmediate(()=>{Xg(e.deref(),t)})},t.timeout);return()=>{ds.clearFastTimeout(r),clearImmediate(A)}};function Xg(e,t){if(e==null)return;let A="Connect Timeout Error";Array.isArray(e.autoSelectFamilyAttemptedAddresses)?A+=` (attempted addresses: ${e.autoSelectFamilyAttemptedAddresses.join(", ")},`:A+=` (attempted address: ${t.hostname}:${t.port},`,A+=` timeout: ${t.timeout}ms)`,jg.destroy(e,new oy(A))}eE.exports=iy});var tE=p(hs=>{"use strict";Object.defineProperty(hs,"__esModule",{value:!0});hs.enumToMap=void 0;function cy(e){let t={};return Object.keys(e).forEach(A=>{let r=e[A];typeof r=="number"&&(t[A]=r)}),t}hs.enumToMap=cy});var AE=p(y=>{"use strict";Object.defineProperty(y,"__esModule",{value:!0});y.SPECIAL_HEADERS=y.HEADER_STATE=y.MINOR=y.MAJOR=y.CONNECTION_TOKEN_CHARS=y.HEADER_CHARS=y.TOKEN=y.STRICT_TOKEN=y.HEX=y.URL_CHAR=y.STRICT_URL_CHAR=y.USERINFO_CHARS=y.MARK=y.ALPHANUM=y.NUM=y.HEX_MAP=y.NUM_MAP=y.ALPHA=y.FINISH=y.H_METHOD_MAP=y.METHOD_MAP=y.METHODS_RTSP=y.METHODS_ICE=y.METHODS_HTTP=y.METHODS=y.LENIENT_FLAGS=y.FLAGS=y.TYPE=y.ERROR=void 0;var ly=tE(),uy;(function(e){e[e.OK=0]="OK",e[e.INTERNAL=1]="INTERNAL",e[e.STRICT=2]="STRICT",e[e.LF_EXPECTED=3]="LF_EXPECTED",e[e.UNEXPECTED_CONTENT_LENGTH=4]="UNEXPECTED_CONTENT_LENGTH",e[e.CLOSED_CONNECTION=5]="CLOSED_CONNECTION",e[e.INVALID_METHOD=6]="INVALID_METHOD",e[e.INVALID_URL=7]="INVALID_URL",e[e.INVALID_CONSTANT=8]="INVALID_CONSTANT",e[e.INVALID_VERSION=9]="INVALID_VERSION",e[e.INVALID_HEADER_TOKEN=10]="INVALID_HEADER_TOKEN",e[e.INVALID_CONTENT_LENGTH=11]="INVALID_CONTENT_LENGTH",e[e.INVALID_CHUNK_SIZE=12]="INVALID_CHUNK_SIZE",e[e.INVALID_STATUS=13]="INVALID_STATUS",e[e.INVALID_EOF_STATE=14]="INVALID_EOF_STATE",e[e.INVALID_TRANSFER_ENCODING=15]="INVALID_TRANSFER_ENCODING",e[e.CB_MESSAGE_BEGIN=16]="CB_MESSAGE_BEGIN",e[e.CB_HEADERS_COMPLETE=17]="CB_HEADERS_COMPLETE",e[e.CB_MESSAGE_COMPLETE=18]="CB_MESSAGE_COMPLETE",e[e.CB_CHUNK_HEADER=19]="CB_CHUNK_HEADER",e[e.CB_CHUNK_COMPLETE=20]="CB_CHUNK_COMPLETE",e[e.PAUSED=21]="PAUSED",e[e.PAUSED_UPGRADE=22]="PAUSED_UPGRADE",e[e.PAUSED_H2_UPGRADE=23]="PAUSED_H2_UPGRADE",e[e.USER=24]="USER"})(uy=y.ERROR||(y.ERROR={}));var gy;(function(e){e[e.BOTH=0]="BOTH",e[e.REQUEST=1]="REQUEST",e[e.RESPONSE=2]="RESPONSE"})(gy=y.TYPE||(y.TYPE={}));var Ey;(function(e){e[e.CONNECTION_KEEP_ALIVE=1]="CONNECTION_KEEP_ALIVE",e[e.CONNECTION_CLOSE=2]="CONNECTION_CLOSE",e[e.CONNECTION_UPGRADE=4]="CONNECTION_UPGRADE",e[e.CHUNKED=8]="CHUNKED",e[e.UPGRADE=16]="UPGRADE",e[e.CONTENT_LENGTH=32]="CONTENT_LENGTH",e[e.SKIPBODY=64]="SKIPBODY",e[e.TRAILING=128]="TRAILING",e[e.TRANSFER_ENCODING=512]="TRANSFER_ENCODING"})(Ey=y.FLAGS||(y.FLAGS={}));var dy;(function(e){e[e.HEADERS=1]="HEADERS",e[e.CHUNKED_LENGTH=2]="CHUNKED_LENGTH",e[e.KEEP_ALIVE=4]="KEEP_ALIVE"})(dy=y.LENIENT_FLAGS||(y.LENIENT_FLAGS={}));var N;(function(e){e[e.DELETE=0]="DELETE",e[e.GET=1]="GET",e[e.HEAD=2]="HEAD",e[e.POST=3]="POST",e[e.PUT=4]="PUT",e[e.CONNECT=5]="CONNECT",e[e.OPTIONS=6]="OPTIONS",e[e.TRACE=7]="TRACE",e[e.COPY=8]="COPY",e[e.LOCK=9]="LOCK",e[e.MKCOL=10]="MKCOL",e[e.MOVE=11]="MOVE",e[e.PROPFIND=12]="PROPFIND",e[e.PROPPATCH=13]="PROPPATCH",e[e.SEARCH=14]="SEARCH",e[e.UNLOCK=15]="UNLOCK",e[e.BIND=16]="BIND",e[e.REBIND=17]="REBIND",e[e.UNBIND=18]="UNBIND",e[e.ACL=19]="ACL",e[e.REPORT=20]="REPORT",e[e.MKACTIVITY=21]="MKACTIVITY",e[e.CHECKOUT=22]="CHECKOUT",e[e.MERGE=23]="MERGE",e[e["M-SEARCH"]=24]="M-SEARCH",e[e.NOTIFY=25]="NOTIFY",e[e.SUBSCRIBE=26]="SUBSCRIBE",e[e.UNSUBSCRIBE=27]="UNSUBSCRIBE",e[e.PATCH=28]="PATCH",e[e.PURGE=29]="PURGE",e[e.MKCALENDAR=30]="MKCALENDAR",e[e.LINK=31]="LINK",e[e.UNLINK=32]="UNLINK",e[e.SOURCE=33]="SOURCE",e[e.PRI=34]="PRI",e[e.DESCRIBE=35]="DESCRIBE",e[e.ANNOUNCE=36]="ANNOUNCE",e[e.SETUP=37]="SETUP",e[e.PLAY=38]="PLAY",e[e.PAUSE=39]="PAUSE",e[e.TEARDOWN=40]="TEARDOWN",e[e.GET_PARAMETER=41]="GET_PARAMETER",e[e.SET_PARAMETER=42]="SET_PARAMETER",e[e.REDIRECT=43]="REDIRECT",e[e.RECORD=44]="RECORD",e[e.FLUSH=45]="FLUSH"})(N=y.METHODS||(y.METHODS={}));y.METHODS_HTTP=[N.DELETE,N.GET,N.HEAD,N.POST,N.PUT,N.CONNECT,N.OPTIONS,N.TRACE,N.COPY,N.LOCK,N.MKCOL,N.MOVE,N.PROPFIND,N.PROPPATCH,N.SEARCH,N.UNLOCK,N.BIND,N.REBIND,N.UNBIND,N.ACL,N.REPORT,N.MKACTIVITY,N.CHECKOUT,N.MERGE,N["M-SEARCH"],N.NOTIFY,N.SUBSCRIBE,N.UNSUBSCRIBE,N.PATCH,N.PURGE,N.MKCALENDAR,N.LINK,N.UNLINK,N.PRI,N.SOURCE];y.METHODS_ICE=[N.SOURCE];y.METHODS_RTSP=[N.OPTIONS,N.DESCRIBE,N.ANNOUNCE,N.SETUP,N.PLAY,N.PAUSE,N.TEARDOWN,N.GET_PARAMETER,N.SET_PARAMETER,N.REDIRECT,N.RECORD,N.FLUSH,N.GET,N.POST];y.METHOD_MAP=ly.enumToMap(N);y.H_METHOD_MAP={};Object.keys(y.METHOD_MAP).forEach(e=>{/^H/.test(e)&&(y.H_METHOD_MAP[e]=y.METHOD_MAP[e])});var hy;(function(e){e[e.SAFE=0]="SAFE",e[e.SAFE_WITH_CB=1]="SAFE_WITH_CB",e[e.UNSAFE=2]="UNSAFE"})(hy=y.FINISH||(y.FINISH={}));y.ALPHA=[];for(let e=65;e<=90;e++)y.ALPHA.push(String.fromCharCode(e)),y.ALPHA.push(String.fromCharCode(e+32));y.NUM_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9};y.HEX_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15};y.NUM=["0","1","2","3","4","5","6","7","8","9"];y.ALPHANUM=y.ALPHA.concat(y.NUM);y.MARK=["-","_",".","!","~","*","'","(",")"];y.USERINFO_CHARS=y.ALPHANUM.concat(y.MARK).concat(["%",";",":","&","=","+","$",","]);y.STRICT_URL_CHAR=["!",'"',"$","%","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","@","[","\\","]","^","_","`","{","|","}","~"].concat(y.ALPHANUM);y.URL_CHAR=y.STRICT_URL_CHAR.concat([" ","\f"]);for(let e=128;e<=255;e++)y.URL_CHAR.push(e);y.HEX=y.NUM.concat(["a","b","c","d","e","f","A","B","C","D","E","F"]);y.STRICT_TOKEN=["!","#","$","%","&","'","*","+","-",".","^","_","`","|","~"].concat(y.ALPHANUM);y.TOKEN=y.STRICT_TOKEN.concat([" "]);y.HEADER_CHARS=[" "];for(let e=32;e<=255;e++)e!==127&&y.HEADER_CHARS.push(e);y.CONNECTION_TOKEN_CHARS=y.HEADER_CHARS.filter(e=>e!==44);y.MAJOR=y.NUM_MAP;y.MINOR=y.MAJOR;var zA;(function(e){e[e.GENERAL=0]="GENERAL",e[e.CONNECTION=1]="CONNECTION",e[e.CONTENT_LENGTH=2]="CONTENT_LENGTH",e[e.TRANSFER_ENCODING=3]="TRANSFER_ENCODING",e[e.UPGRADE=4]="UPGRADE",e[e.CONNECTION_KEEP_ALIVE=5]="CONNECTION_KEEP_ALIVE",e[e.CONNECTION_CLOSE=6]="CONNECTION_CLOSE",e[e.CONNECTION_UPGRADE=7]="CONNECTION_UPGRADE",e[e.TRANSFER_ENCODING_CHUNKED=8]="TRANSFER_ENCODING_CHUNKED"})(zA=y.HEADER_STATE||(y.HEADER_STATE={}));y.SPECIAL_HEADERS={connection:zA.CONNECTION,"content-length":zA.CONTENT_LENGTH,"proxy-connection":zA.CONNECTION,"transfer-encoding":zA.TRANSFER_ENCODING,upgrade:zA.UPGRADE}});var ra=p((uv,rE)=>{"use strict";var{Buffer:Qy}=f("node:buffer");rE.exports=Qy.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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CABB3AgLii1JbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fbWV0aG9kAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAF4TAAAmEwAAMBAAAPAXAACdEwAAFRIAADkXAADwEgAAChAAAHUSAACtEgAAghMAAE8UAAB/EAAAoBUAACMUAACJEgAAixQAAE0VAADUEQAAzxQAABAYAADJFgAA3BYAAMERAADgFwAAuxQAAHQUAAB8FQAA5RQAAAgXAAAfEAAAZRUAAKMUAAAoFQAAAhUAAJkVAAAsEAAAixkAAE8PAADUDgAAahAAAM4QAAACFwAAiQ4AAG4TAAAcEwAAZhQAAFYXAADBEwAAzRMAAGwTAABoFwAAZhcAAF8XAAAiEwAAzg8AAGkOAADYDgAAYxYAAMsTAACqDgAAKBcAACYXAADFEwAAXRYAAOgRAABnEwAAZRMAAPIWAABzEwAAHRcAAPkWAADzEQAAzw4AAM4VAAAMEgAAsxEAAKURAABhEAAAMhcAALsTAEH5NQsBAQBBkDYL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB/TcLAQEAQZE4C14CAwICAgICAAACAgACAgACAgICAgICAgICAAQAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEH9OQsBAQBBkToLXgIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAQfA7Cw1sb3NlZWVwLWFsaXZlAEGJPAsBAQBBoDwL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBiT4LAQEAQaA+C+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGwwAALXwEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGQwgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBwMIACy1yYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AQfnCAAsFAQIAAQMAQZDDAAvgAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5xAALBQECAAEDAEGQxQAL4AEEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cYACwQBAAABAEGRxwAL3wEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH6yAALBAEAAAIAQZDJAAtfAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAQfrKAAsEAQAAAQBBkMsACwEBAEGqywALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEH6zAALBAEAAAEAQZDNAAsBAQBBms0ACwYCAAAAAAIAQbHNAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB8M4AC5YBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv","base64")});var sE=p((gv,nE)=>{"use strict";var{Buffer:Iy}=f("node:buffer");nE.exports=Iy.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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AAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==","base64")});var jr=p((Ev,EE)=>{"use strict";var oE=["GET","HEAD","POST"],By=new Set(oE),Cy=[101,204,205,304],iE=[301,302,303,307,308],fy=new Set(iE),aE=["1","7","9","11","13","15","17","19","20","21","22","23","25","37","42","43","53","69","77","79","87","95","101","102","103","104","109","110","111","113","115","117","119","123","135","137","139","143","161","179","389","427","465","512","513","514","515","526","530","531","532","540","548","554","556","563","587","601","636","989","990","993","995","1719","1720","1723","2049","3659","4045","4190","5060","5061","6000","6566","6665","6666","6667","6668","6669","6679","6697","10080"],py=new Set(aE),cE=["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"],my=new Set(cE),yy=["follow","manual","error"],lE=["GET","HEAD","OPTIONS","TRACE"],wy=new Set(lE),by=["navigate","same-origin","no-cors","cors"],ky=["omit","same-origin","include"],Dy=["default","no-store","reload","no-cache","force-cache","only-if-cached"],Sy=["content-encoding","content-language","content-location","content-type","content-length"],Ry=["half"],uE=["CONNECT","TRACE","TRACK"],Ny=new Set(uE),gE=["audio","audioworklet","font","image","manifest","paintworklet","script","style","track","video","xslt",""],Fy=new Set(gE);EE.exports={subresource:gE,forbiddenMethods:uE,requestBodyHeader:Sy,referrerPolicy:cE,requestRedirect:yy,requestMode:by,requestCredentials:ky,requestCache:Dy,redirectStatus:iE,corsSafeListedMethods:oE,nullBodyStatus:Cy,safeMethods:lE,badPorts:aE,requestDuplex:Ry,subresourceSet:Fy,badPortsSet:py,redirectStatusSet:fy,corsSafeListedMethodsSet:By,safeMethodsSet:wy,forbiddenMethodsSet:Ny,referrerPolicySet:my}});var sa=p((dv,dE)=>{"use strict";var na=Symbol.for("undici.globalOrigin.1");function Uy(){return globalThis[na]}function My(e){if(e===void 0){Object.defineProperty(globalThis,na,{value:void 0,writable:!0,enumerable:!1,configurable:!1});return}let t=new URL(e);if(t.protocol!=="http:"&&t.protocol!=="https:")throw new TypeError(`Only http & https urls are allowed, received ${t.protocol}`);Object.defineProperty(globalThis,na,{value:t,writable:!0,enumerable:!1,configurable:!1})}dE.exports={getGlobalOrigin:Uy,setGlobalOrigin:My}});var ke=p((hv,pE)=>{"use strict";var Is=f("node:assert"),Ly=new TextEncoder,en=/^[!#$%&'*+\-.^_|~A-Za-z0-9]+$/,xy=/[\u000A\u000D\u0009\u0020]/,Ty=/[\u0009\u000A\u000C\u000D\u0020]/g,vy=/^[\u0009\u0020-\u007E\u0080-\u00FF]+$/;function Gy(e){Is(e.protocol==="data:");let t=IE(e,!0);t=t.slice(5);let A={position:0},r=KA(",",t,A),n=r.length;if(r=Py(r,!0,!0),A.position>=t.length)return"failure";A.position++;let s=t.slice(n+1),o=BE(s);if(/;(\u0020){0,}base64$/i.test(r)){let a=fE(o);if(o=Hy(a),o==="failure")return"failure";r=r.slice(0,-6),r=r.replace(/(\u0020)+$/,""),r=r.slice(0,-1)}r.startsWith(";")&&(r="text/plain"+r);let i=oa(r);return i==="failure"&&(i=oa("text/plain;charset=US-ASCII")),{mimeType:i,body:o}}function IE(e,t=!1){if(!t)return e.href;let A=e.href,r=e.hash.length,n=r===0?A:A.substring(0,A.length-r);return!r&&A.endsWith("#")?n.slice(0,-1):n}function Bs(e,t,A){let r="";for(;A.position<t.length&&e(t[A.position]);)r+=t[A.position],A.position++;return r}function KA(e,t,A){let r=t.indexOf(e,A.position),n=A.position;return r===-1?(A.position=t.length,t.slice(n)):(A.position=r,t.slice(n,A.position))}function BE(e){let t=Ly.encode(e);return Yy(t)}function hE(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function QE(e){return e>=48&&e<=57?e-48:(e&223)-55}function Yy(e){let t=e.length,A=new Uint8Array(t),r=0;for(let n=0;n<t;++n){let s=e[n];s!==37?A[r++]=s:s===37&&!(hE(e[n+1])&&hE(e[n+2]))?A[r++]=37:(A[r++]=QE(e[n+1])<<4|QE(e[n+2]),n+=2)}return t===r?A:A.subarray(0,r)}function oa(e){e=Qs(e,!0,!0);let t={position:0},A=KA("/",e,t);if(A.length===0||!en.test(A)||t.position>e.length)return"failure";t.position++;let r=KA(";",e,t);if(r=Qs(r,!1,!0),r.length===0||!en.test(r))return"failure";let n=A.toLowerCase(),s=r.toLowerCase(),o={type:n,subtype:s,parameters:new Map,essence:`${n}/${s}`};for(;t.position<e.length;){t.position++,Bs(l=>xy.test(l),e,t);let i=Bs(l=>l!==";"&&l!=="=",e,t);if(i=i.toLowerCase(),t.position<e.length){if(e[t.position]===";")continue;t.position++}if(t.position>e.length)break;let a=null;if(e[t.position]==='"')a=CE(e,t,!0),KA(";",e,t);else if(a=KA(";",e,t),a=Qs(a,!1,!0),a.length===0)continue;i.length!==0&&en.test(i)&&(a.length===0||vy.test(a))&&!o.parameters.has(i)&&o.parameters.set(i,a)}return o}function Hy(e){e=e.replace(Ty,"");let t=e.length;if(t%4===0&&e.charCodeAt(t-1)===61&&(--t,e.charCodeAt(t-1)===61&&--t),t%4===1||/[^+/0-9A-Za-z]/.test(e.length===t?e:e.substring(0,t)))return"failure";let A=Buffer.from(e,"base64");return new Uint8Array(A.buffer,A.byteOffset,A.byteLength)}function CE(e,t,A){let r=t.position,n="";for(Is(e[t.position]==='"'),t.position++;n+=Bs(o=>o!=='"'&&o!=="\\",e,t),!(t.position>=e.length);){let s=e[t.position];if(t.position++,s==="\\"){if(t.position>=e.length){n+="\\";break}n+=e[t.position],t.position++}else{Is(s==='"');break}}return A?n:e.slice(r,t.position)}function Jy(e){Is(e!=="failure");let{parameters:t,essence:A}=e,r=A;for(let[n,s]of t.entries())r+=";",r+=n,r+="=",en.test(s)||(s=s.replace(/(\\|")/g,"\\$1"),s='"'+s,s+='"'),r+=s;return r}function Vy(e){return e===13||e===10||e===9||e===32}function Qs(e,t=!0,A=!0){return ia(e,t,A,Vy)}function qy(e){return e===13||e===10||e===9||e===12||e===32}function Py(e,t=!0,A=!0){return ia(e,t,A,qy)}function ia(e,t,A,r){let n=0,s=e.length-1;if(t)for(;n<e.length&&r(e.charCodeAt(n));)n++;if(A)for(;s>0&&r(e.charCodeAt(s));)s--;return n===0&&s===e.length-1?e:e.slice(n,s+1)}function fE(e){let t=e.length;if(65535>t)return String.fromCharCode.apply(null,e);let A="",r=0,n=65535;for(;r<t;)r+n>t&&(n=t-r),A+=String.fromCharCode.apply(null,e.subarray(r,r+=n));return A}function Oy(e){switch(e.essence){case"application/ecmascript":case"application/javascript":case"application/x-ecmascript":case"application/x-javascript":case"text/ecmascript":case"text/javascript":case"text/javascript1.0":case"text/javascript1.1":case"text/javascript1.2":case"text/javascript1.3":case"text/javascript1.4":case"text/javascript1.5":case"text/jscript":case"text/livescript":case"text/x-ecmascript":case"text/x-javascript":return"text/javascript";case"application/json":case"text/json":return"application/json";case"image/svg+xml":return"image/svg+xml";case"text/xml":case"application/xml":return"application/xml"}return e.subtype.endsWith("+json")?"application/json":e.subtype.endsWith("+xml")?"application/xml":""}pE.exports={dataURLProcessor:Gy,URLSerializer:IE,collectASequenceOfCodePoints:Bs,collectASequenceOfCodePointsFast:KA,stringPercentDecode:BE,parseMIMEType:oa,collectAnHTTPQuotedString:CE,serializeAMimeType:Jy,removeChars:ia,removeHTTPWhitespace:Qs,minimizeSupportedMimeType:Oy,HTTP_TOKEN_CODEPOINTS:en,isomorphicDecode:fE}});var de=p((Qv,mE)=>{"use strict";var{types:dt,inspect:Wy}=f("node:util"),{markAsUncloneable:_y}=f("node:worker_threads"),{toUSVString:zy}=Y(),m={};m.converters={};m.util={};m.errors={};m.errors.exception=function(e){return new TypeError(`${e.header}: ${e.message}`)};m.errors.conversionFailed=function(e){let t=e.types.length===1?"":" one of",A=`${e.argument} could not be converted to${t}: ${e.types.join(", ")}.`;return m.errors.exception({header:e.prefix,message:A})};m.errors.invalidArgument=function(e){return m.errors.exception({header:e.prefix,message:`"${e.value}" is an invalid ${e.type}.`})};m.brandCheck=function(e,t,A){if(A?.strict!==!1){if(!(e instanceof t)){let r=new TypeError("Illegal invocation");throw r.code="ERR_INVALID_THIS",r}}else if(e?.[Symbol.toStringTag]!==t.prototype[Symbol.toStringTag]){let r=new TypeError("Illegal invocation");throw r.code="ERR_INVALID_THIS",r}};m.argumentLengthCheck=function({length:e},t,A){if(e<t)throw m.errors.exception({message:`${t} argument${t!==1?"s":""} required, but${e?" only":""} ${e} found.`,header:A})};m.illegalConstructor=function(){throw m.errors.exception({header:"TypeError",message:"Illegal constructor"})};m.util.Type=function(e){switch(typeof e){case"undefined":return"Undefined";case"boolean":return"Boolean";case"string":return"String";case"symbol":return"Symbol";case"number":return"Number";case"bigint":return"BigInt";case"function":case"object":return e===null?"Null":"Object"}};m.util.markAsUncloneable=_y||(()=>{});m.util.ConvertToInt=function(e,t,A,r){let n,s;t===64?(n=Math.pow(2,53)-1,A==="unsigned"?s=0:s=Math.pow(-2,53)+1):A==="unsigned"?(s=0,n=Math.pow(2,t)-1):(s=Math.pow(-2,t)-1,n=Math.pow(2,t-1)-1);let o=Number(e);if(o===0&&(o=0),r?.enforceRange===!0){if(Number.isNaN(o)||o===Number.POSITIVE_INFINITY||o===Number.NEGATIVE_INFINITY)throw m.errors.exception({header:"Integer conversion",message:`Could not convert ${m.util.Stringify(e)} to an integer.`});if(o=m.util.IntegerPart(o),o<s||o>n)throw m.errors.exception({header:"Integer conversion",message:`Value must be between ${s}-${n}, got ${o}.`});return o}return!Number.isNaN(o)&&r?.clamp===!0?(o=Math.min(Math.max(o,s),n),Math.floor(o)%2===0?o=Math.floor(o):o=Math.ceil(o),o):Number.isNaN(o)||o===0&&Object.is(0,o)||o===Number.POSITIVE_INFINITY||o===Number.NEGATIVE_INFINITY?0:(o=m.util.IntegerPart(o),o=o%Math.pow(2,t),A==="signed"&&o>=Math.pow(2,t)-1?o-Math.pow(2,t):o)};m.util.IntegerPart=function(e){let t=Math.floor(Math.abs(e));return e<0?-1*t:t};m.util.Stringify=function(e){switch(m.util.Type(e)){case"Symbol":return`Symbol(${e.description})`;case"Object":return Wy(e);case"String":return`"${e}"`;default:return`${e}`}};m.sequenceConverter=function(e){return(t,A,r,n)=>{if(m.util.Type(t)!=="Object")throw m.errors.exception({header:A,message:`${r} (${m.util.Stringify(t)}) is not iterable.`});let s=typeof n=="function"?n():t?.[Symbol.iterator]?.(),o=[],i=0;if(s===void 0||typeof s.next!="function")throw m.errors.exception({header:A,message:`${r} is not iterable.`});for(;;){let{done:a,value:l}=s.next();if(a)break;o.push(e(l,A,`${r}[${i++}]`))}return o}};m.recordConverter=function(e,t){return(A,r,n)=>{if(m.util.Type(A)!=="Object")throw m.errors.exception({header:r,message:`${n} ("${m.util.Type(A)}") is not an Object.`});let s={};if(!dt.isProxy(A)){let i=[...Object.getOwnPropertyNames(A),...Object.getOwnPropertySymbols(A)];for(let a of i){let l=e(a,r,n),c=t(A[a],r,n);s[l]=c}return s}let o=Reflect.ownKeys(A);for(let i of o)if(Reflect.getOwnPropertyDescriptor(A,i)?.enumerable){let l=e(i,r,n),c=t(A[i],r,n);s[l]=c}return s}};m.interfaceConverter=function(e){return(t,A,r,n)=>{if(n?.strict!==!1&&!(t instanceof e))throw m.errors.exception({header:A,message:`Expected ${r} ("${m.util.Stringify(t)}") to be an instance of ${e.name}.`});return t}};m.dictionaryConverter=function(e){return(t,A,r)=>{let n=m.util.Type(t),s={};if(n==="Null"||n==="Undefined")return s;if(n!=="Object")throw m.errors.exception({header:A,message:`Expected ${t} to be one of: Null, Undefined, Object.`});for(let o of e){let{key:i,defaultValue:a,required:l,converter:c}=o;if(l===!0&&!Object.hasOwn(t,i))throw m.errors.exception({header:A,message:`Missing required key "${i}".`});let u=t[i],g=Object.hasOwn(o,"defaultValue");if(g&&u!==null&&(u??=a()),l||g||u!==void 0){if(u=c(u,A,`${r}.${i}`),o.allowedValues&&!o.allowedValues.includes(u))throw m.errors.exception({header:A,message:`${u} is not an accepted type. Expected one of ${o.allowedValues.join(", ")}.`});s[i]=u}}return s}};m.nullableConverter=function(e){return(t,A,r)=>t===null?t:e(t,A,r)};m.converters.DOMString=function(e,t,A,r){if(e===null&&r?.legacyNullToEmptyString)return"";if(typeof e=="symbol")throw m.errors.exception({header:t,message:`${A} is a symbol, which cannot be converted to a DOMString.`});return String(e)};m.converters.ByteString=function(e,t,A){let r=m.converters.DOMString(e,t,A);for(let n=0;n<r.length;n++)if(r.charCodeAt(n)>255)throw new TypeError(`Cannot convert argument to a ByteString because the character at index ${n} has a value of ${r.charCodeAt(n)} which is greater than 255.`);return r};m.converters.USVString=zy;m.converters.boolean=function(e){return!!e};m.converters.any=function(e){return e};m.converters["long long"]=function(e,t,A){return m.util.ConvertToInt(e,64,"signed",void 0,t,A)};m.converters["unsigned long long"]=function(e,t,A){return m.util.ConvertToInt(e,64,"unsigned",void 0,t,A)};m.converters["unsigned long"]=function(e,t,A){return m.util.ConvertToInt(e,32,"unsigned",void 0,t,A)};m.converters["unsigned short"]=function(e,t,A,r){return m.util.ConvertToInt(e,16,"unsigned",r,t,A)};m.converters.ArrayBuffer=function(e,t,A,r){if(m.util.Type(e)!=="Object"||!dt.isAnyArrayBuffer(e))throw m.errors.conversionFailed({prefix:t,argument:`${A} ("${m.util.Stringify(e)}")`,types:["ArrayBuffer"]});if(r?.allowShared===!1&&dt.isSharedArrayBuffer(e))throw m.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."});if(e.resizable||e.growable)throw m.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."});return e};m.converters.TypedArray=function(e,t,A,r,n){if(m.util.Type(e)!=="Object"||!dt.isTypedArray(e)||e.constructor.name!==t.name)throw m.errors.conversionFailed({prefix:A,argument:`${r} ("${m.util.Stringify(e)}")`,types:[t.name]});if(n?.allowShared===!1&&dt.isSharedArrayBuffer(e.buffer))throw m.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."});if(e.buffer.resizable||e.buffer.growable)throw m.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."});return e};m.converters.DataView=function(e,t,A,r){if(m.util.Type(e)!=="Object"||!dt.isDataView(e))throw m.errors.exception({header:t,message:`${A} is not a DataView.`});if(r?.allowShared===!1&&dt.isSharedArrayBuffer(e.buffer))throw m.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."});if(e.buffer.resizable||e.buffer.growable)throw m.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."});return e};m.converters.BufferSource=function(e,t,A,r){if(dt.isAnyArrayBuffer(e))return m.converters.ArrayBuffer(e,t,A,{...r,allowShared:!1});if(dt.isTypedArray(e))return m.converters.TypedArray(e,e.constructor,t,A,{...r,allowShared:!1});if(dt.isDataView(e))return m.converters.DataView(e,t,A,{...r,allowShared:!1});throw m.errors.conversionFailed({prefix:t,argument:`${A} ("${m.util.Stringify(e)}")`,types:["BufferSource"]})};m.converters["sequence<ByteString>"]=m.sequenceConverter(m.converters.ByteString);m.converters["sequence<sequence<ByteString>>"]=m.sequenceConverter(m.converters["sequence<ByteString>"]);m.converters["record<ByteString, ByteString>"]=m.recordConverter(m.converters.ByteString,m.converters.ByteString);mE.exports={webidl:m}});var Te=p((Iv,TE)=>{"use strict";var{Transform:Ky}=f("node:stream"),yE=f("node:zlib"),{redirectStatusSet:Zy,referrerPolicySet:$y,badPortsSet:Xy}=jr(),{getGlobalOrigin:wE}=sa(),{collectASequenceOfCodePoints:gA,collectAnHTTPQuotedString:jy,removeChars:ew,parseMIMEType:tw}=ke(),{performance:Aw}=f("node:perf_hooks"),{isBlobLike:rw,ReadableStreamFrom:nw,isValidHTTPToken:bE,normalizedMethodRecordsBase:sw}=Y(),EA=f("node:assert"),{isUint8Array:ow}=f("node:util/types"),{webidl:tn}=de(),kE=[],fs;try{fs=f("node:crypto");let e=["sha256","sha384","sha512"];kE=fs.getHashes().filter(t=>e.includes(t))}catch{}function DE(e){let t=e.urlList,A=t.length;return A===0?null:t[A-1].toString()}function iw(e,t){if(!Zy.has(e.status))return null;let A=e.headersList.get("location",!0);return A!==null&&RE(A)&&(SE(A)||(A=aw(A)),A=new URL(A,DE(e))),A&&!A.hash&&(A.hash=t),A}function SE(e){for(let t=0;t<e.length;++t){let A=e.charCodeAt(t);if(A>126||A<32)return!1}return!0}function aw(e){return Buffer.from(e,"binary").toString("utf8")}function rn(e){return e.urlList[e.urlList.length-1]}function cw(e){let t=rn(e);return LE(t)&&Xy.has(t.port)?"blocked":"allowed"}function lw(e){return e instanceof Error||e?.constructor?.name==="Error"||e?.constructor?.name==="DOMException"}function uw(e){for(let t=0;t<e.length;++t){let A=e.charCodeAt(t);if(!(A===9||A>=32&&A<=126||A>=128&&A<=255))return!1}return!0}var gw=bE;function RE(e){return(e[0]===" "||e[0]===" "||e[e.length-1]===" "||e[e.length-1]===" "||e.includes(`
|
|
3
|
-
`)||e.includes("\r")||e.includes("\0"))===!1}function Ew(e,t){let{headersList:A}=t,r=(A.get("referrer-policy",!0)??"").split(","),n="";if(r.length>0)for(let s=r.length;s!==0;s--){let o=r[s-1].trim();if($y.has(o)){n=o;break}}n!==""&&(e.referrerPolicy=n)}function dw(){return"allowed"}function hw(){return"success"}function Qw(){return"success"}function Iw(e){let t=null;t=e.mode,e.headersList.set("sec-fetch-mode",t,!0)}function Bw(e){let t=e.origin;if(!(t==="client"||t===void 0)){if(e.responseTainting==="cors"||e.mode==="websocket")e.headersList.append("origin",t,!0);else if(e.method!=="GET"&&e.method!=="HEAD"){switch(e.referrerPolicy){case"no-referrer":t=null;break;case"no-referrer-when-downgrade":case"strict-origin":case"strict-origin-when-cross-origin":e.origin&&ca(e.origin)&&!ca(rn(e))&&(t=null);break;case"same-origin":ps(e,rn(e))||(t=null);break;default:}e.headersList.append("origin",t,!0)}}}function ZA(e,t){return e}function Cw(e,t,A){return!e?.startTime||e.startTime<t?{domainLookupStartTime:t,domainLookupEndTime:t,connectionStartTime:t,connectionEndTime:t,secureConnectionStartTime:t,ALPNNegotiatedProtocol:e?.ALPNNegotiatedProtocol}:{domainLookupStartTime:ZA(e.domainLookupStartTime,A),domainLookupEndTime:ZA(e.domainLookupEndTime,A),connectionStartTime:ZA(e.connectionStartTime,A),connectionEndTime:ZA(e.connectionEndTime,A),secureConnectionStartTime:ZA(e.secureConnectionStartTime,A),ALPNNegotiatedProtocol:e.ALPNNegotiatedProtocol}}function fw(e){return ZA(Aw.now(),e)}function pw(e){return{startTime:e.startTime??0,redirectStartTime:0,redirectEndTime:0,postRedirectStartTime:e.startTime??0,finalServiceWorkerStartTime:0,finalNetworkResponseStartTime:0,finalNetworkRequestStartTime:0,endTime:0,encodedBodySize:0,decodedBodySize:0,finalConnectionTimingInfo:null}}function NE(){return{referrerPolicy:"strict-origin-when-cross-origin"}}function mw(e){return{referrerPolicy:e.referrerPolicy}}function yw(e){let t=e.referrerPolicy;EA(t);let A=null;if(e.referrer==="client"){let i=wE();if(!i||i.origin==="null")return"no-referrer";A=new URL(i)}else e.referrer instanceof URL&&(A=e.referrer);let r=aa(A),n=aa(A,!0);r.toString().length>4096&&(r=n);let s=ps(e,r),o=An(r)&&!An(e.url);switch(t){case"origin":return n??aa(A,!0);case"unsafe-url":return r;case"same-origin":return s?n:"no-referrer";case"origin-when-cross-origin":return s?r:n;case"strict-origin-when-cross-origin":{let i=rn(e);return ps(r,i)?r:An(r)&&!An(i)?"no-referrer":n}default:return o?"no-referrer":n}}function aa(e,t){return EA(e instanceof URL),e=new URL(e),e.protocol==="file:"||e.protocol==="about:"||e.protocol==="blank:"?"no-referrer":(e.username="",e.password="",e.hash="",t&&(e.pathname="",e.search=""),e)}function An(e){if(!(e instanceof URL))return!1;if(e.href==="about:blank"||e.href==="about:srcdoc"||e.protocol==="data:"||e.protocol==="file:")return!0;return t(e.origin);function t(A){if(A==null||A==="null")return!1;let r=new URL(A);return!!(r.protocol==="https:"||r.protocol==="wss:"||/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(r.hostname)||r.hostname==="localhost"||r.hostname.includes("localhost.")||r.hostname.endsWith(".localhost"))}}function ww(e,t){if(fs===void 0)return!0;let A=FE(t);if(A==="no metadata"||A.length===0)return!0;let r=kw(A),n=Dw(A,r);for(let s of n){let o=s.algo,i=s.hash,a=fs.createHash(o).update(e).digest("base64");if(a[a.length-1]==="="&&(a[a.length-2]==="="?a=a.slice(0,-2):a=a.slice(0,-1)),Sw(a,i))return!0}return!1}var bw=/(?<algo>sha256|sha384|sha512)-((?<hash>[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i;function FE(e){let t=[],A=!0;for(let r of e.split(" ")){A=!1;let n=bw.exec(r);if(n===null||n.groups===void 0||n.groups.algo===void 0)continue;let s=n.groups.algo.toLowerCase();kE.includes(s)&&t.push(n.groups)}return A===!0?"no metadata":t}function kw(e){let t=e[0].algo;if(t[3]==="5")return t;for(let A=1;A<e.length;++A){let r=e[A];if(r.algo[3]==="5"){t="sha512";break}else{if(t[3]==="3")continue;r.algo[3]==="3"&&(t="sha384")}}return t}function Dw(e,t){if(e.length===1)return e;let A=0;for(let r=0;r<e.length;++r)e[r].algo===t&&(e[A++]=e[r]);return e.length=A,e}function Sw(e,t){if(e.length!==t.length)return!1;for(let A=0;A<e.length;++A)if(e[A]!==t[A]){if(e[A]==="+"&&t[A]==="-"||e[A]==="/"&&t[A]==="_")continue;return!1}return!0}function Rw(e){}function ps(e,t){return e.origin===t.origin&&e.origin==="null"||e.protocol===t.protocol&&e.hostname===t.hostname&&e.port===t.port}function Nw(){let e,t;return{promise:new Promise((r,n)=>{e=r,t=n}),resolve:e,reject:t}}function Fw(e){return e.controller.state==="aborted"}function Uw(e){return e.controller.state==="aborted"||e.controller.state==="terminated"}function Mw(e){return sw[e.toLowerCase()]??e}function Lw(e){let t=JSON.stringify(e);if(t===void 0)throw new TypeError("Value is not JSON serializable");return EA(typeof t=="string"),t}var xw=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function UE(e,t,A=0,r=1){class n{#e;#t;#A;constructor(o,i){this.#e=o,this.#t=i,this.#A=0}next(){if(typeof this!="object"||this===null||!(#e in this))throw new TypeError(`'next' called on an object that does not implement interface ${e} Iterator.`);let o=this.#A,i=this.#e[t],a=i.length;if(o>=a)return{value:void 0,done:!0};let{[A]:l,[r]:c}=i[o];this.#A=o+1;let u;switch(this.#t){case"key":u=l;break;case"value":u=c;break;case"key+value":u=[l,c];break}return{value:u,done:!1}}}return delete n.prototype.constructor,Object.setPrototypeOf(n.prototype,xw),Object.defineProperties(n.prototype,{[Symbol.toStringTag]:{writable:!1,enumerable:!1,configurable:!0,value:`${e} Iterator`},next:{writable:!0,enumerable:!0,configurable:!0}}),function(s,o){return new n(s,o)}}function Tw(e,t,A,r=0,n=1){let s=UE(e,A,r,n),o={keys:{writable:!0,enumerable:!0,configurable:!0,value:function(){return tn.brandCheck(this,t),s(this,"key")}},values:{writable:!0,enumerable:!0,configurable:!0,value:function(){return tn.brandCheck(this,t),s(this,"value")}},entries:{writable:!0,enumerable:!0,configurable:!0,value:function(){return tn.brandCheck(this,t),s(this,"key+value")}},forEach:{writable:!0,enumerable:!0,configurable:!0,value:function(a,l=globalThis){if(tn.brandCheck(this,t),tn.argumentLengthCheck(arguments,1,`${e}.forEach`),typeof a!="function")throw new TypeError(`Failed to execute 'forEach' on '${e}': parameter 1 is not of type 'Function'.`);for(let{0:c,1:u}of s(this,"key+value"))a.call(l,u,c,this)}}};return Object.defineProperties(t.prototype,{...o,[Symbol.iterator]:{writable:!0,enumerable:!1,configurable:!0,value:o.entries.value}})}async function vw(e,t,A){let r=t,n=A,s;try{s=e.stream.getReader()}catch(o){n(o);return}try{r(await ME(s))}catch(o){n(o)}}function Gw(e){return e instanceof ReadableStream||e[Symbol.toStringTag]==="ReadableStream"&&typeof e.tee=="function"}function Yw(e){try{e.close(),e.byobRequest?.respond(0)}catch(t){if(!t.message.includes("Controller is already closed")&&!t.message.includes("ReadableStream is already closed"))throw t}}var Hw=/[^\x00-\xFF]/;function Cs(e){return EA(!Hw.test(e)),e}async function ME(e){let t=[],A=0;for(;;){let{done:r,value:n}=await e.read();if(r)return Buffer.concat(t,A);if(!ow(n))throw new TypeError("Received non-Uint8Array chunk");t.push(n),A+=n.length}}function Jw(e){EA("protocol"in e);let t=e.protocol;return t==="about:"||t==="blob:"||t==="data:"}function ca(e){return typeof e=="string"&&e[5]===":"&&e[0]==="h"&&e[1]==="t"&&e[2]==="t"&&e[3]==="p"&&e[4]==="s"||e.protocol==="https:"}function LE(e){EA("protocol"in e);let t=e.protocol;return t==="http:"||t==="https:"}function Vw(e,t){let A=e;if(!A.startsWith("bytes"))return"failure";let r={position:5};if(t&&gA(a=>a===" "||a===" ",A,r),A.charCodeAt(r.position)!==61)return"failure";r.position++,t&&gA(a=>a===" "||a===" ",A,r);let n=gA(a=>{let l=a.charCodeAt(0);return l>=48&&l<=57},A,r),s=n.length?Number(n):null;if(t&&gA(a=>a===" "||a===" ",A,r),A.charCodeAt(r.position)!==45)return"failure";r.position++,t&&gA(a=>a===" "||a===" ",A,r);let o=gA(a=>{let l=a.charCodeAt(0);return l>=48&&l<=57},A,r),i=o.length?Number(o):null;return r.position<A.length||i===null&&s===null||s>i?"failure":{rangeStartValue:s,rangeEndValue:i}}function qw(e,t,A){let r="bytes ";return r+=Cs(`${e}`),r+="-",r+=Cs(`${t}`),r+="/",r+=Cs(`${A}`),r}var la=class extends Ky{#e;constructor(t){super(),this.#e=t}_transform(t,A,r){if(!this._inflateStream){if(t.length===0){r();return}this._inflateStream=(t[0]&15)===8?yE.createInflate(this.#e):yE.createInflateRaw(this.#e),this._inflateStream.on("data",this.push.bind(this)),this._inflateStream.on("end",()=>this.push(null)),this._inflateStream.on("error",n=>this.destroy(n))}this._inflateStream.write(t,A,r)}_final(t){this._inflateStream&&(this._inflateStream.end(),this._inflateStream=null),t()}};function Pw(e){return new la(e)}function Ow(e){let t=null,A=null,r=null,n=xE("content-type",e);if(n===null)return"failure";for(let s of n){let o=tw(s);o==="failure"||o.essence==="*/*"||(r=o,r.essence!==A?(t=null,r.parameters.has("charset")&&(t=r.parameters.get("charset")),A=r.essence):!r.parameters.has("charset")&&t!==null&&r.parameters.set("charset",t))}return r??"failure"}function Ww(e){let t=e,A={position:0},r=[],n="";for(;A.position<t.length;){if(n+=gA(s=>s!=='"'&&s!==",",t,A),A.position<t.length)if(t.charCodeAt(A.position)===34){if(n+=jy(t,A),A.position<t.length)continue}else EA(t.charCodeAt(A.position)===44),A.position++;n=ew(n,!0,!0,s=>s===9||s===32),r.push(n),n=""}return r}function xE(e,t){let A=t.get(e,!0);return A===null?null:Ww(A)}var _w=new TextDecoder;function zw(e){return e.length===0?"":(e[0]===239&&e[1]===187&&e[2]===191&&(e=e.subarray(3)),_w.decode(e))}var ua=class{get baseUrl(){return wE()}get origin(){return this.baseUrl?.origin}policyContainer=NE()},ga=class{settingsObject=new ua},Kw=new ga;TE.exports={isAborted:Fw,isCancelled:Uw,isValidEncodedURL:SE,createDeferredPromise:Nw,ReadableStreamFrom:nw,tryUpgradeRequestToAPotentiallyTrustworthyURL:Rw,clampAndCoarsenConnectionTimingInfo:Cw,coarsenedSharedCurrentTime:fw,determineRequestsReferrer:yw,makePolicyContainer:NE,clonePolicyContainer:mw,appendFetchMetadata:Iw,appendRequestOriginHeader:Bw,TAOCheck:Qw,corsCheck:hw,crossOriginResourcePolicyCheck:dw,createOpaqueTimingInfo:pw,setRequestReferrerPolicyOnRedirect:Ew,isValidHTTPToken:bE,requestBadPort:cw,requestCurrentURL:rn,responseURL:DE,responseLocationURL:iw,isBlobLike:rw,isURLPotentiallyTrustworthy:An,isValidReasonPhrase:uw,sameOrigin:ps,normalizeMethod:Mw,serializeJavascriptValueToJSONString:Lw,iteratorMixin:Tw,createIterator:UE,isValidHeaderName:gw,isValidHeaderValue:RE,isErrorLike:lw,fullyReadBody:vw,bytesMatch:ww,isReadableStreamLike:Gw,readableStreamClose:Yw,isomorphicEncode:Cs,urlIsLocal:Jw,urlHasHttpsScheme:ca,urlIsHttpHttpsScheme:LE,readAllBytes:ME,simpleRangeHeaderValue:Vw,buildContentRange:qw,parseMetadata:FE,createInflate:Pw,extractMimeType:Ow,getDecodeSplit:xE,utf8DecodeBytes:zw,environmentSettingsObject:Kw}});var Vt=p((Bv,vE)=>{"use strict";vE.exports={kUrl:Symbol("url"),kHeaders:Symbol("headers"),kSignal:Symbol("signal"),kState:Symbol("state"),kDispatcher:Symbol("dispatcher")}});var da=p((Cv,GE)=>{"use strict";var{Blob:Zw,File:$w}=f("node:buffer"),{kState:St}=Vt(),{webidl:ht}=de(),Ea=class e{constructor(t,A,r={}){let n=A,s=r.type,o=r.lastModified??Date.now();this[St]={blobLike:t,name:n,type:s,lastModified:o}}stream(...t){return ht.brandCheck(this,e),this[St].blobLike.stream(...t)}arrayBuffer(...t){return ht.brandCheck(this,e),this[St].blobLike.arrayBuffer(...t)}slice(...t){return ht.brandCheck(this,e),this[St].blobLike.slice(...t)}text(...t){return ht.brandCheck(this,e),this[St].blobLike.text(...t)}get size(){return ht.brandCheck(this,e),this[St].blobLike.size}get type(){return ht.brandCheck(this,e),this[St].blobLike.type}get name(){return ht.brandCheck(this,e),this[St].name}get lastModified(){return ht.brandCheck(this,e),this[St].lastModified}get[Symbol.toStringTag](){return"File"}};ht.converters.Blob=ht.interfaceConverter(Zw);function Xw(e){return e instanceof $w||e&&(typeof e.stream=="function"||typeof e.arrayBuffer=="function")&&e[Symbol.toStringTag]==="File"}GE.exports={FileLike:Ea,isFileLike:Xw}});var sn=p((fv,qE)=>{"use strict";var{isBlobLike:ms,iteratorMixin:jw}=Te(),{kState:ye}=Vt(),{kEnumerableProperty:$A}=Y(),{FileLike:YE,isFileLike:e0}=da(),{webidl:$}=de(),{File:VE}=f("node:buffer"),HE=f("node:util"),JE=globalThis.File??VE,nn=class e{constructor(t){if($.util.markAsUncloneable(this),t!==void 0)throw $.errors.conversionFailed({prefix:"FormData constructor",argument:"Argument 1",types:["undefined"]});this[ye]=[]}append(t,A,r=void 0){$.brandCheck(this,e);let n="FormData.append";if($.argumentLengthCheck(arguments,2,n),arguments.length===3&&!ms(A))throw new TypeError("Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'");t=$.converters.USVString(t,n,"name"),A=ms(A)?$.converters.Blob(A,n,"value",{strict:!1}):$.converters.USVString(A,n,"value"),r=arguments.length===3?$.converters.USVString(r,n,"filename"):void 0;let s=ha(t,A,r);this[ye].push(s)}delete(t){$.brandCheck(this,e);let A="FormData.delete";$.argumentLengthCheck(arguments,1,A),t=$.converters.USVString(t,A,"name"),this[ye]=this[ye].filter(r=>r.name!==t)}get(t){$.brandCheck(this,e);let A="FormData.get";$.argumentLengthCheck(arguments,1,A),t=$.converters.USVString(t,A,"name");let r=this[ye].findIndex(n=>n.name===t);return r===-1?null:this[ye][r].value}getAll(t){$.brandCheck(this,e);let A="FormData.getAll";return $.argumentLengthCheck(arguments,1,A),t=$.converters.USVString(t,A,"name"),this[ye].filter(r=>r.name===t).map(r=>r.value)}has(t){$.brandCheck(this,e);let A="FormData.has";return $.argumentLengthCheck(arguments,1,A),t=$.converters.USVString(t,A,"name"),this[ye].findIndex(r=>r.name===t)!==-1}set(t,A,r=void 0){$.brandCheck(this,e);let n="FormData.set";if($.argumentLengthCheck(arguments,2,n),arguments.length===3&&!ms(A))throw new TypeError("Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'");t=$.converters.USVString(t,n,"name"),A=ms(A)?$.converters.Blob(A,n,"name",{strict:!1}):$.converters.USVString(A,n,"name"),r=arguments.length===3?$.converters.USVString(r,n,"name"):void 0;let s=ha(t,A,r),o=this[ye].findIndex(i=>i.name===t);o!==-1?this[ye]=[...this[ye].slice(0,o),s,...this[ye].slice(o+1).filter(i=>i.name!==t)]:this[ye].push(s)}[HE.inspect.custom](t,A){let r=this[ye].reduce((s,o)=>(s[o.name]?Array.isArray(s[o.name])?s[o.name].push(o.value):s[o.name]=[s[o.name],o.value]:s[o.name]=o.value,s),{__proto__:null});A.depth??=t,A.colors??=!0;let n=HE.formatWithOptions(A,r);return`FormData ${n.slice(n.indexOf("]")+2)}`}};jw("FormData",nn,ye,"name","value");Object.defineProperties(nn.prototype,{append:$A,delete:$A,get:$A,getAll:$A,has:$A,set:$A,[Symbol.toStringTag]:{value:"FormData",configurable:!0}});function ha(e,t,A){if(typeof t!="string"){if(e0(t)||(t=t instanceof Blob?new JE([t],"blob",{type:t.type}):new YE(t,"blob",{type:t.type})),A!==void 0){let r={type:t.type,lastModified:t.lastModified};t=t instanceof VE?new JE([t],A,r):new YE(t,A,r)}}return{name:e,value:t}}qE.exports={FormData:nn,makeEntry:ha}});var KE=p((pv,zE)=>{"use strict";var{isUSVString:PE,bufferToLowerCasedHeaderName:t0}=Y(),{utf8DecodeBytes:A0}=Te(),{HTTP_TOKEN_CODEPOINTS:r0,isomorphicDecode:OE}=ke(),{isFileLike:n0}=da(),{makeEntry:s0}=sn(),ys=f("node:assert"),{File:o0}=f("node:buffer"),i0=globalThis.File??o0,a0=Buffer.from('form-data; name="'),WE=Buffer.from("; filename"),c0=Buffer.from("--"),l0=Buffer.from(`--\r
|
|
4
|
-
`);function u0(e){for(let t=0;t<e.length;++t)if((e.charCodeAt(t)&-128)!==0)return!1;return!0}function g0(e){let t=e.length;if(t<27||t>70)return!1;for(let A=0;A<t;++A){let r=e.charCodeAt(A);if(!(r>=48&&r<=57||r>=65&&r<=90||r>=97&&r<=122||r===39||r===45||r===95))return!1}return!0}function E0(e,t){ys(t!=="failure"&&t.essence==="multipart/form-data");let A=t.parameters.get("boundary");if(A===void 0)return"failure";let r=Buffer.from(`--${A}`,"utf8"),n=[],s={position:0};for(;e[s.position]===13&&e[s.position+1]===10;)s.position+=2;let o=e.length;for(;e[o-1]===10&&e[o-2]===13;)o-=2;for(o!==e.length&&(e=e.subarray(0,o));;){if(e.subarray(s.position,s.position+r.length).equals(r))s.position+=r.length;else return"failure";if(s.position===e.length-2&&ws(e,c0,s)||s.position===e.length-4&&ws(e,l0,s))return n;if(e[s.position]!==13||e[s.position+1]!==10)return"failure";s.position+=2;let i=d0(e,s);if(i==="failure")return"failure";let{name:a,filename:l,contentType:c,encoding:u}=i;s.position+=2;let g;{let h=e.indexOf(r.subarray(2),s.position);if(h===-1)return"failure";g=e.subarray(s.position,h-4),s.position+=g.length,u==="base64"&&(g=Buffer.from(g.toString(),"base64"))}if(e[s.position]!==13||e[s.position+1]!==10)return"failure";s.position+=2;let E;l!==null?(c??="text/plain",u0(c)||(c=""),E=new i0([g],l,{type:c})):E=A0(Buffer.from(g)),ys(PE(a)),ys(typeof E=="string"&&PE(E)||n0(E)),n.push(s0(a,E,l))}}function d0(e,t){let A=null,r=null,n=null,s=null;for(;;){if(e[t.position]===13&&e[t.position+1]===10)return A===null?"failure":{name:A,filename:r,contentType:n,encoding:s};let o=XA(i=>i!==10&&i!==13&&i!==58,e,t);if(o=Qa(o,!0,!0,i=>i===9||i===32),!r0.test(o.toString())||e[t.position]!==58)return"failure";switch(t.position++,XA(i=>i===32||i===9,e,t),t0(o)){case"content-disposition":{if(A=r=null,!ws(e,a0,t)||(t.position+=17,A=_E(e,t),A===null))return"failure";if(ws(e,WE,t)){let i=t.position+WE.length;if(e[i]===42&&(t.position+=1,i+=1),e[i]!==61||e[i+1]!==34||(t.position+=12,r=_E(e,t),r===null))return"failure"}break}case"content-type":{let i=XA(a=>a!==10&&a!==13,e,t);i=Qa(i,!1,!0,a=>a===9||a===32),n=OE(i);break}case"content-transfer-encoding":{let i=XA(a=>a!==10&&a!==13,e,t);i=Qa(i,!1,!0,a=>a===9||a===32),s=OE(i);break}default:XA(i=>i!==10&&i!==13,e,t)}if(e[t.position]!==13&&e[t.position+1]!==10)return"failure";t.position+=2}}function _E(e,t){ys(e[t.position-1]===34);let A=XA(r=>r!==10&&r!==13&&r!==34,e,t);return e[t.position]!==34?null:(t.position++,A=new TextDecoder().decode(A).replace(/%0A/ig,`
|
|
5
|
-
`).replace(/%0D/ig,"\r").replace(/%22/g,'"'),A)}function XA(e,t,A){let r=A.position;for(;r<t.length&&e(t[r]);)++r;return t.subarray(A.position,A.position=r)}function Qa(e,t,A,r){let n=0,s=e.length-1;if(t)for(;n<e.length&&r(e[n]);)n++;if(A)for(;s>0&&r(e[s]);)s--;return n===0&&s===e.length-1?e:e.subarray(n,s+1)}function ws(e,t,A){if(e.length<t.length)return!1;for(let r=0;r<t.length;r++)if(t[r]!==e[A.position+r])return!1;return!0}zE.exports={multipartFormDataParser:E0,validateBoundary:g0}});var tr=p((mv,sd)=>{"use strict";var on=Y(),{ReadableStreamFrom:h0,isBlobLike:ZE,isReadableStreamLike:Q0,readableStreamClose:I0,createDeferredPromise:B0,fullyReadBody:C0,extractMimeType:f0,utf8DecodeBytes:jE}=Te(),{FormData:$E}=sn(),{kState:er}=Vt(),{webidl:p0}=de(),{Blob:m0}=f("node:buffer"),Ia=f("node:assert"),{isErrored:ed,isDisturbed:y0}=f("node:stream"),{isArrayBuffer:w0}=f("node:util/types"),{serializeAMimeType:b0}=ke(),{multipartFormDataParser:k0}=KE(),Ba;try{let e=f("node:crypto");Ba=t=>e.randomInt(0,t)}catch{Ba=e=>Math.floor(Math.random(e))}var bs=new TextEncoder;function D0(){}var td=globalThis.FinalizationRegistry&&process.version.indexOf("v18")!==0,Ad;td&&(Ad=new FinalizationRegistry(e=>{let t=e.deref();t&&!t.locked&&!y0(t)&&!ed(t)&&t.cancel("Response object has been garbage collected").catch(D0)}));function rd(e,t=!1){let A=null;e instanceof ReadableStream?A=e:ZE(e)?A=e.stream():A=new ReadableStream({async pull(a){let l=typeof n=="string"?bs.encode(n):n;l.byteLength&&a.enqueue(l),queueMicrotask(()=>I0(a))},start(){},type:"bytes"}),Ia(Q0(A));let r=null,n=null,s=null,o=null;if(typeof e=="string")n=e,o="text/plain;charset=UTF-8";else if(e instanceof URLSearchParams)n=e.toString(),o="application/x-www-form-urlencoded;charset=UTF-8";else if(w0(e))n=new Uint8Array(e.slice());else if(ArrayBuffer.isView(e))n=new Uint8Array(e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength));else if(on.isFormDataLike(e)){let a=`----formdata-undici-0${`${Ba(1e11)}`.padStart(11,"0")}`,l=`--${a}\r
|
|
6
|
-
Content-Disposition: form-data`;let c=I=>I.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22"),u=I=>I.replace(/\r?\n|\r/g,`\r
|
|
7
|
-
`),g=[],E=new Uint8Array([13,10]);s=0;let h=!1;for(let[I,d]of e)if(typeof d=="string"){let C=bs.encode(l+`; name="${c(u(I))}"\r
|
|
8
|
-
\r
|
|
9
|
-
${u(d)}\r
|
|
10
|
-
`);g.push(C),s+=C.byteLength}else{let C=bs.encode(`${l}; name="${c(u(I))}"`+(d.name?`; filename="${c(d.name)}"`:"")+`\r
|
|
11
|
-
Content-Type: ${d.type||"application/octet-stream"}\r
|
|
12
|
-
\r
|
|
13
|
-
`);g.push(C,d,E),typeof d.size=="number"?s+=C.byteLength+d.size+E.byteLength:h=!0}let Q=bs.encode(`--${a}--\r
|
|
14
|
-
`);g.push(Q),s+=Q.byteLength,h&&(s=null),n=e,r=async function*(){for(let I of g)I.stream?yield*I.stream():yield I},o=`multipart/form-data; boundary=${a}`}else if(ZE(e))n=e,s=e.size,e.type&&(o=e.type);else if(typeof e[Symbol.asyncIterator]=="function"){if(t)throw new TypeError("keepalive");if(on.isDisturbed(e)||e.locked)throw new TypeError("Response body object should not be disturbed or locked");A=e instanceof ReadableStream?e:h0(e)}if((typeof n=="string"||on.isBuffer(n))&&(s=Buffer.byteLength(n)),r!=null){let a;A=new ReadableStream({async start(){a=r(e)[Symbol.asyncIterator]()},async pull(l){let{value:c,done:u}=await a.next();if(u)queueMicrotask(()=>{l.close(),l.byobRequest?.respond(0)});else if(!ed(A)){let g=new Uint8Array(c);g.byteLength&&l.enqueue(g)}return l.desiredSize>0},async cancel(l){await a.return()},type:"bytes"})}return[{stream:A,source:n,length:s},o]}function S0(e,t=!1){return e instanceof ReadableStream&&(Ia(!on.isDisturbed(e),"The body has already been consumed."),Ia(!e.locked,"The stream is locked.")),rd(e,t)}function R0(e,t){let[A,r]=t.stream.tee();return t.stream=A,{stream:r,length:t.length,source:t.source}}function N0(e){if(e.aborted)throw new DOMException("The operation was aborted.","AbortError")}function F0(e){return{blob(){return jA(this,A=>{let r=XE(this);return r===null?r="":r&&(r=b0(r)),new m0([A],{type:r})},e)},arrayBuffer(){return jA(this,A=>new Uint8Array(A).buffer,e)},text(){return jA(this,jE,e)},json(){return jA(this,M0,e)},formData(){return jA(this,A=>{let r=XE(this);if(r!==null)switch(r.essence){case"multipart/form-data":{let n=k0(A,r);if(n==="failure")throw new TypeError("Failed to parse body as FormData.");let s=new $E;return s[er]=n,s}case"application/x-www-form-urlencoded":{let n=new URLSearchParams(A.toString()),s=new $E;for(let[o,i]of n)s.append(o,i);return s}}throw new TypeError('Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".')},e)},bytes(){return jA(this,A=>new Uint8Array(A),e)}}}function U0(e){Object.assign(e.prototype,F0(e))}async function jA(e,t,A){if(p0.brandCheck(e,A),nd(e))throw new TypeError("Body is unusable: Body has already been read");N0(e[er]);let r=B0(),n=o=>r.reject(o),s=o=>{try{r.resolve(t(o))}catch(i){n(i)}};return e[er].body==null?(s(Buffer.allocUnsafe(0)),r.promise):(await C0(e[er].body,s,n),r.promise)}function nd(e){let t=e[er].body;return t!=null&&(t.stream.locked||on.isDisturbed(t.stream))}function M0(e){return JSON.parse(jE(e))}function XE(e){let t=e[er].headersList,A=f0(t);return A==="failure"?null:A}sd.exports={extractBody:rd,safelyExtractBody:S0,cloneBody:R0,mixinBody:U0,streamRegistry:Ad,hasFinalizationRegistry:td,bodyUnusable:nd}});var pd=p((yv,fd)=>{"use strict";var R=f("node:assert"),F=Y(),{channels:od}=VA(),Ca=ea(),{RequestContentLengthMismatchError:dA,ResponseContentLengthMismatchError:id,RequestAbortedError:hd,InvalidArgumentError:L0,HeadersTimeoutError:x0,HeadersOverflowError:T0,SocketError:Ar,InformationalError:rr,BodyTimeoutError:v0,HTTPParserError:G0,ResponseExceededMaxSizeError:Y0}=O(),{kUrl:Qd,kReset:De,kClient:Rs,kParser:X,kBlocking:ln,kRunning:ae,kPending:Id,kSize:ad,kWriting:qt,kQueue:tt,kNoRef:an,kKeepAliveDefaultTimeout:H0,kHostHeader:J0,kPendingIdx:V0,kRunningIdx:Ke,kError:we,kPipelining:Ns,kSocket:QA,kKeepAliveTimeoutValue:Us,kMaxHeadersSize:fa,kKeepAliveMaxTimeout:q0,kKeepAliveTimeoutThreshold:P0,kHeadersTimeout:O0,kBodyTimeout:W0,kStrictContentLength:ya,kMaxRequests:cd,kCounter:_0,kMaxResponseSize:z0,kOnError:ld,kResume:Rt,kHTTPContext:Bd}=ee(),ve=AE(),ud=Buffer.alloc(0),ks=Buffer[Symbol.species],Ds=F.addListener,K0=F.removeAllListeners,IA=Symbol("kIdleSocketValidation"),hA=Symbol("kIdleSocketValidationTimeout"),Da=Symbol("kSocketUsed"),pa;async function Z0(){let e=process.env.JEST_WORKER_ID?ra():void 0,t;try{t=await WebAssembly.compile(sE())}catch{t=await WebAssembly.compile(e||ra())}return await WebAssembly.instantiate(t,{env:{wasm_on_url:(A,r,n)=>0,wasm_on_status:(A,r,n)=>{R(re.ptr===A);let s=r-It+Qt.byteOffset;return re.onStatus(new ks(Qt.buffer,s,n))||0},wasm_on_message_begin:A=>(R(re.ptr===A),re.onMessageBegin()||0),wasm_on_header_field:(A,r,n)=>{R(re.ptr===A);let s=r-It+Qt.byteOffset;return re.onHeaderField(new ks(Qt.buffer,s,n))||0},wasm_on_header_value:(A,r,n)=>{R(re.ptr===A);let s=r-It+Qt.byteOffset;return re.onHeaderValue(new ks(Qt.buffer,s,n))||0},wasm_on_headers_complete:(A,r,n,s)=>(R(re.ptr===A),re.onHeadersComplete(r,!!n,!!s)||0),wasm_on_body:(A,r,n)=>{R(re.ptr===A);let s=r-It+Qt.byteOffset;return re.onBody(new ks(Qt.buffer,s,n))||0},wasm_on_message_complete:A=>(R(re.ptr===A),re.onMessageComplete()||0)}})}var ma=null,wa=Z0();wa.catch();var re=null,Qt=null,Ss=0,It=null,$0=0,cn=1,nr=2|cn,Fs=4|cn,ba=8|$0,ka=class{constructor(t,A,{exports:r}){R(Number.isFinite(t[fa])&&t[fa]>0),this.llhttp=r,this.ptr=this.llhttp.llhttp_alloc(ve.TYPE.RESPONSE),this.client=t,this.socket=A,this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.statusCode=null,this.statusText="",this.upgrade=!1,this.headers=[],this.headersSize=0,this.headersMaxSize=t[fa],this.shouldKeepAlive=!1,this.paused=!1,this.resume=this.resume.bind(this),this.bytesRead=0,this.keepAlive="",this.contentLength="",this.connection="",this.maxResponseSize=t[z0]}setTimeout(t,A){t!==this.timeoutValue||A&cn^this.timeoutType&cn?(this.timeout&&(Ca.clearTimeout(this.timeout),this.timeout=null),t&&(A&cn?this.timeout=Ca.setFastTimeout(gd,t,new WeakRef(this)):(this.timeout=setTimeout(gd,t,new WeakRef(this)),this.timeout.unref())),this.timeoutValue=t):this.timeout&&this.timeout.refresh&&this.timeout.refresh(),this.timeoutType=A}resume(){this.socket.destroyed||!this.paused||(R(this.ptr!=null),R(re==null),this.llhttp.llhttp_resume(this.ptr),R(this.timeoutType===Fs),this.timeout&&this.timeout.refresh&&this.timeout.refresh(),this.paused=!1,this.execute(this.socket.read()||ud),this.readMore())}readMore(){for(;!this.paused&&this.ptr;){let t=this.socket.read();if(t===null)break;this.execute(t)}}execute(t){R(this.ptr!=null),R(re==null),R(!this.paused);let{socket:A,llhttp:r}=this;t.length>Ss&&(It&&r.free(It),Ss=Math.ceil(t.length/4096)*4096,It=r.malloc(Ss)),new Uint8Array(r.memory.buffer,It,Ss).set(t);try{let n;try{Qt=t,re=this,n=r.llhttp_execute(this.ptr,It,t.length)}catch(o){throw o}finally{re=null,Qt=null}let s=r.llhttp_get_error_pos(this.ptr)-It;if(n!==ve.ERROR.OK){let o=t.subarray(s);if(n===ve.ERROR.PAUSED_UPGRADE)this.onUpgrade(o);else if(n===ve.ERROR.PAUSED)this.paused=!0,A.unshift(o);else throw this.createError(n,o)}}catch(n){F.destroy(A,n)}}finish(){R(re===null),R(this.ptr!=null),R(!this.paused);let{llhttp:t}=this,A;try{re=this,A=t.llhttp_finish(this.ptr)}finally{re=null}return A===ve.ERROR.OK?null:A===ve.ERROR.PAUSED||A===ve.ERROR.PAUSED_UPGRADE?(this.paused=!0,null):this.createError(A,ud)}createError(t,A){let{llhttp:r,contentLength:n,bytesRead:s}=this;if(n&&s!==parseInt(n,10))return new id;let o=r.llhttp_get_error_reason(this.ptr),i="";if(o){let a=new Uint8Array(r.memory.buffer,o).indexOf(0);i="Response does not match the HTTP/1.1 protocol ("+Buffer.from(r.memory.buffer,o,a).toString()+")"}return new G0(i,ve.ERROR[t],A)}destroy(){R(this.ptr!=null),R(re==null),this.llhttp.llhttp_free(this.ptr),this.ptr=null,this.timeout&&Ca.clearTimeout(this.timeout),this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.paused=!1}onStatus(t){this.statusText=t.toString()}onMessageBegin(){let{socket:t,client:A}=this;if(t.destroyed)return-1;if(A[ae]===0)return F.destroy(t,new Ar("bad response",F.getSocketInfo(t))),-1;let r=A[tt][A[Ke]];if(!r)return-1;r.onResponseStarted()}onHeaderField(t){let A=this.headers.length;(A&1)===0?this.headers.push(t):this.headers[A-1]=Buffer.concat([this.headers[A-1],t]),this.trackHeader(t.length)}onHeaderValue(t){let A=this.headers.length;(A&1)===1?(this.headers.push(t),A+=1):this.headers[A-1]=Buffer.concat([this.headers[A-1],t]);let r=this.headers[A-2];if(r.length===10){let n=F.bufferToLowerCasedHeaderName(r);n==="keep-alive"?this.keepAlive+=t.toString():n==="connection"&&(this.connection+=t.toString())}else r.length===14&&F.bufferToLowerCasedHeaderName(r)==="content-length"&&(this.contentLength+=t.toString());this.trackHeader(t.length)}trackHeader(t){this.headersSize+=t,this.headersSize>=this.headersMaxSize&&F.destroy(this.socket,new T0)}onUpgrade(t){let{upgrade:A,client:r,socket:n,headers:s,statusCode:o}=this;R(A),R(r[QA]===n),R(!n.destroyed),R(!this.paused),R((s.length&1)===0);let i=r[tt][r[Ke]];R(i),R(i.upgrade||i.method==="CONNECT"),this.statusCode=null,this.statusText="",this.shouldKeepAlive=null,this.headers=[],this.headersSize=0,n.unshift(t),n[X].destroy(),n[X]=null,n[Rs]=null,n[we]=null,K0(n),r[QA]=null,r[Bd]=null,r[tt][r[Ke]++]=null,r.emit("disconnect",r[Qd],[r],new rr("upgrade"));try{i.onUpgrade(o,s,n)}catch(a){F.destroy(n,a)}r[Rt]()}onHeadersComplete(t,A,r){let{client:n,socket:s,headers:o,statusText:i}=this;if(s.destroyed)return-1;if(n[ae]===0)return F.destroy(s,new Ar("bad response",F.getSocketInfo(s))),-1;let a=n[tt][n[Ke]];if(!a)return-1;if(R(!this.upgrade),R(this.statusCode<200),t===100)return F.destroy(s,new Ar("bad response",F.getSocketInfo(s))),-1;if(A&&!a.upgrade)return F.destroy(s,new Ar("bad upgrade",F.getSocketInfo(s))),-1;if(R(this.timeoutType===nr),this.statusCode=t,this.shouldKeepAlive=r||a.method==="HEAD"&&!s[De]&&this.connection.toLowerCase()==="keep-alive",this.statusCode>=200){let c=a.bodyTimeout!=null?a.bodyTimeout:n[W0];this.setTimeout(c,Fs)}else this.timeout&&this.timeout.refresh&&this.timeout.refresh();if(a.method==="CONNECT")return R(n[ae]===1),this.upgrade=!0,2;if(A)return R(n[ae]===1),this.upgrade=!0,2;if(R((this.headers.length&1)===0),this.headers=[],this.headersSize=0,this.shouldKeepAlive&&n[Ns]){let c=this.keepAlive?F.parseKeepAliveTimeout(this.keepAlive):null;if(c!=null){let u=Math.min(c-n[P0],n[q0]);u<=0?s[De]=!0:n[Us]=u}else n[Us]=n[H0]}else s[De]=!0;let l=a.onHeaders(t,o,this.resume,i)===!1;return a.aborted?-1:a.method==="HEAD"||t<200?1:(s[ln]&&(s[ln]=!1,n[Rt]()),l?ve.ERROR.PAUSED:0)}onBody(t){let{client:A,socket:r,statusCode:n,maxResponseSize:s}=this;if(r.destroyed)return-1;let o=A[tt][A[Ke]];if(R(o),R(this.timeoutType===Fs),this.timeout&&this.timeout.refresh&&this.timeout.refresh(),R(n>=200),s>-1&&this.bytesRead+t.length>s)return F.destroy(r,new Y0),-1;if(this.bytesRead+=t.length,o.onData(t)===!1)return ve.ERROR.PAUSED}onMessageComplete(){let{client:t,socket:A,statusCode:r,upgrade:n,headers:s,contentLength:o,bytesRead:i,shouldKeepAlive:a}=this;if(A.destroyed&&(!r||a))return-1;if(n)return;R(r>=100),R((this.headers.length&1)===0);let l=t[tt][t[Ke]];if(R(l),this.statusCode=null,this.statusText="",this.bytesRead=0,this.contentLength="",this.keepAlive="",this.connection="",this.headers=[],this.headersSize=0,!(r<200)){if(l.method!=="HEAD"&&o&&i!==parseInt(o,10))return F.destroy(A,new id),-1;if(l.onComplete(s),t[tt][t[Ke]++]=null,A[Da]=!0,A[qt])return R(t[ae]===0),F.destroy(A,new rr("reset")),ve.ERROR.PAUSED;if(a){if(A[De]&&t[ae]===0)return F.destroy(A,new rr("reset")),ve.ERROR.PAUSED;t[Ns]==null||t[Ns]===1?setImmediate(()=>t[Rt]()):t[Rt]()}else return F.destroy(A,new rr("reset")),ve.ERROR.PAUSED}}};function gd(e){let{socket:t,timeoutType:A,client:r,paused:n}=e.deref();A===nr?(!t[qt]||t.writableNeedDrain||r[ae]>1)&&(R(!n,"cannot be paused while waiting for headers"),F.destroy(t,new x0)):A===Fs?n||F.destroy(t,new v0):A===ba&&(R(r[ae]===0&&r[Us]),F.destroy(t,new rr("socket idle timeout")))}async function X0(e,t){e[QA]=t,ma||(ma=await wa,wa=null),t[an]=!1,t[qt]=!1,t[De]=!1,t[ln]=!1,t[IA]=0,t[hA]=null,t[Da]=!1,t[X]=new ka(e,t,ma),Ds(t,"error",function(r){R(r.code!=="ERR_TLS_CERT_ALTNAME_INVALID");let n=this[X];if(r.code==="ECONNRESET"&&n.statusCode&&!n.shouldKeepAlive){let s=n.finish();s&&(this[we]=s,this[Rs][ld](s));return}this[we]=r,this[Rs][ld](r)}),Ds(t,"readable",function(){let r=this[X];r&&r.readMore()}),Ds(t,"end",function(){let r=this[X];if(r.statusCode&&!r.shouldKeepAlive){let n=r.finish();n&&F.destroy(this,n);return}F.destroy(this,new Ar("other side closed",F.getSocketInfo(this)))}),Ds(t,"close",function(){let r=this[Rs],n=this[X];Cd(this),n&&(!this[we]&&n.statusCode&&!n.shouldKeepAlive&&(this[we]=n.finish()||this[we]),this[X].destroy(),this[X]=null);let s=this[we]||new Ar("closed",F.getSocketInfo(this));if(r[QA]=null,r[Bd]=null,r.destroyed){R(r[Id]===0);let o=r[tt].splice(r[Ke]);for(let i=0;i<o.length;i++){let a=o[i];F.errorRequest(r,a,s)}}else if(r[ae]>0&&s.code!=="UND_ERR_INFO"){let o=r[tt][r[Ke]];r[tt][r[Ke]++]=null,F.errorRequest(r,o,s)}r[V0]=r[Ke],R(r[ae]===0),r.emit("disconnect",r[Qd],[r],s),r[Rt]()});let A=!1;return t.on("close",()=>{A=!0}),{version:"h1",defaultPipelining:1,write(...r){return Ab(e,...r)},resume(){eb(e)},destroy(r,n){A?queueMicrotask(n):t.destroy(r).on("close",n)},get destroyed(){return t.destroyed},busy(r){return!!(t[qt]||t[De]||t[ln]||t[IA]===1||r&&(e[ae]>0&&!r.idempotent||e[ae]>0&&(r.upgrade||r.method==="CONNECT")||e[ae]>0&&F.bodyLength(r.body)!==0&&(F.isStream(r.body)||F.isAsyncIterable(r.body)||F.isFormDataLike(r.body))))}}}function Cd(e){e[hA]&&(clearTimeout(e[hA]),e[hA]=null),e[IA]=0}function j0(e,t){t[IA]=1,t[hA]=setTimeout(()=>{t[hA]=null,t[IA]=2,e[QA]===t&&!t.destroyed&&e[Rt]()},0),t[hA].unref?.()}function eb(e){let t=e[QA];if(t&&!t.destroyed){if(e[ad]===0?!t[an]&&t.unref&&(t.unref(),t[an]=!0):t[an]&&t.ref&&(t.ref(),t[an]=!1),e[ae]===0&&e[Id]>0&&t[Da]){if(t[IA]===0)return j0(e,t),t[X].readMore(),t.destroyed,void 0;if(t[IA]===1)return t[X].readMore(),t.destroyed,void 0}if(e[ae]===0&&(t[X].readMore(),t.destroyed))return;if(e[ad]===0)t[X].timeoutType!==ba&&t[X].setTimeout(e[Us],ba);else if(e[ae]>0&&t[X].statusCode<200&&t[X].timeoutType!==nr){let A=e[tt][e[Ke]],r=A.headersTimeout!=null?A.headersTimeout:e[O0];t[X].setTimeout(r,nr)}}}function tb(e){return e!=="GET"&&e!=="HEAD"&&e!=="OPTIONS"&&e!=="TRACE"&&e!=="CONNECT"}function Ab(e,t){let{method:A,path:r,host:n,upgrade:s,blocking:o,reset:i}=t,{body:a,headers:l,contentLength:c}=t,u=A==="PUT"||A==="POST"||A==="PATCH"||A==="QUERY"||A==="PROPFIND"||A==="PROPPATCH";if(F.isFormDataLike(a)){pa||(pa=tr().extractBody);let[I,d]=pa(a);t.contentType==null&&l.push("content-type",d),a=I.stream,c=I.length}else if(F.isBlobLike(a)&&t.contentType==null){let I=a.type;if(I){let d=`${I}`;if(!F.isValidHeaderValue(d))return F.errorRequest(e,t,new L0("invalid content-type header")),!1;l.push("content-type",d)}}a&&typeof a.read=="function"&&a.read(0);let g=F.bodyLength(a);if(c=g??c,c===null&&(c=t.contentLength),c===0&&!u&&(c=null),tb(A)&&c>0&&t.contentLength!==null&&t.contentLength!==c){if(e[ya])return F.errorRequest(e,t,new dA),!1;process.emitWarning(new dA)}let E=e[QA];Cd(E);let h=I=>{t.aborted||t.completed||(F.errorRequest(e,t,I||new hd),F.destroy(a),F.destroy(E,new rr("aborted")))};try{t.onConnect(h)}catch(I){F.errorRequest(e,t,I)}if(t.aborted)return!1;A==="HEAD"&&(E[De]=!0),(s||A==="CONNECT")&&(E[De]=!0),i!=null&&(E[De]=i),e[cd]&&E[_0]++>=e[cd]&&(E[De]=!0),o&&(E[ln]=!0);let Q=`${A} ${r} HTTP/1.1\r
|
|
15
|
-
`;if(typeof n=="string"?Q+=`host: ${n}\r
|
|
16
|
-
`:Q+=e[J0],s?Q+=`connection: upgrade\r
|
|
17
|
-
upgrade: ${s}\r
|
|
18
|
-
`:e[Ns]&&!E[De]?Q+=`connection: keep-alive\r
|
|
19
|
-
`:Q+=`connection: close\r
|
|
20
|
-
`,Array.isArray(l))for(let I=0;I<l.length;I+=2){let d=l[I+0],C=l[I+1];if(Array.isArray(C))for(let w=0;w<C.length;w++)Q+=`${d}: ${C[w]}\r
|
|
21
|
-
`;else Q+=`${d}: ${C}\r
|
|
22
|
-
`}return od.sendHeaders.hasSubscribers&&od.sendHeaders.publish({request:t,headers:Q,socket:E}),!a||g===0?Ed(h,null,e,t,E,c,Q,u):F.isBuffer(a)?Ed(h,a,e,t,E,c,Q,u):F.isBlobLike(a)?typeof a.stream=="function"?dd(h,a.stream(),e,t,E,c,Q,u):nb(h,a,e,t,E,c,Q,u):F.isStream(a)?rb(h,a,e,t,E,c,Q,u):F.isIterable(a)?dd(h,a,e,t,E,c,Q,u):R(!1),!0}function rb(e,t,A,r,n,s,o,i){R(s!==0||A[ae]===0,"stream body cannot be pipelined");let a=!1,l=new Ms({abort:e,socket:n,request:r,contentLength:s,client:A,expectsPayload:i,header:o}),c=function(h){if(!a)try{!l.write(h)&&this.pause&&this.pause()}catch(Q){F.destroy(this,Q)}},u=function(){a||t.resume&&t.resume()},g=function(){if(queueMicrotask(()=>{t.removeListener("error",E)}),!a){let h=new hd;queueMicrotask(()=>E(h))}},E=function(h){if(!a){if(a=!0,R(n.destroyed||n[qt]&&A[ae]<=1),n.off("drain",u).off("error",E),t.removeListener("data",c).removeListener("end",E).removeListener("close",g),!h)try{l.end()}catch(Q){h=Q}l.destroy(h),h&&(h.code!=="UND_ERR_INFO"||h.message!=="reset")?F.destroy(t,h):F.destroy(t)}};t.on("data",c).on("end",E).on("error",E).on("close",g),t.resume&&t.resume(),n.on("drain",u).on("error",E),t.errorEmitted??t.errored?setImmediate(()=>E(t.errored)):(t.endEmitted??t.readableEnded)&&setImmediate(()=>E(null)),(t.closeEmitted??t.closed)&&setImmediate(g)}function Ed(e,t,A,r,n,s,o,i){try{t?F.isBuffer(t)&&(R(s===t.byteLength,"buffer body must have content length"),n.cork(),n.write(`${o}content-length: ${s}\r
|
|
23
|
-
\r
|
|
24
|
-
`,"latin1"),n.write(t),n.uncork(),r.onBodySent(t),!i&&r.reset!==!1&&(n[De]=!0)):s===0?n.write(`${o}content-length: 0\r
|
|
25
|
-
\r
|
|
26
|
-
`,"latin1"):(R(s===null,"no body must not have content length"),n.write(`${o}\r
|
|
27
|
-
`,"latin1")),r.onRequestSent(),A[Rt]()}catch(a){e(a)}}async function nb(e,t,A,r,n,s,o,i){R(s===t.size,"blob body must have content length");try{if(s!=null&&s!==t.size)throw new dA;let a=Buffer.from(await t.arrayBuffer());n.cork(),n.write(`${o}content-length: ${s}\r
|
|
28
|
-
\r
|
|
29
|
-
`,"latin1"),n.write(a),n.uncork(),r.onBodySent(a),r.onRequestSent(),!i&&r.reset!==!1&&(n[De]=!0),A[Rt]()}catch(a){e(a)}}async function dd(e,t,A,r,n,s,o,i){R(s!==0||A[ae]===0,"iterator body cannot be pipelined");let a=null;function l(){if(a){let g=a;a=null,g()}}let c=()=>new Promise((g,E)=>{R(a===null),n[we]?E(n[we]):a=g});n.on("close",l).on("drain",l);let u=new Ms({abort:e,socket:n,request:r,contentLength:s,client:A,expectsPayload:i,header:o});try{for await(let g of t){if(n[we])throw n[we];u.write(g)||await c()}u.end()}catch(g){u.destroy(g)}finally{n.off("close",l).off("drain",l)}}var Ms=class{constructor({abort:t,socket:A,request:r,contentLength:n,client:s,expectsPayload:o,header:i}){this.socket=A,this.request=r,this.contentLength=n,this.client=s,this.bytesWritten=0,this.expectsPayload=o,this.header=i,this.abort=t,A[qt]=!0}write(t){let{socket:A,request:r,contentLength:n,client:s,bytesWritten:o,expectsPayload:i,header:a}=this;if(A[we])throw A[we];if(A.destroyed)return!1;let l=Buffer.byteLength(t);if(!l)return!0;if(n!==null&&o+l>n){if(s[ya])throw new dA;process.emitWarning(new dA)}A.cork(),o===0&&(!i&&r.reset!==!1&&(A[De]=!0),n===null?A.write(`${a}transfer-encoding: chunked\r
|
|
30
|
-
`,"latin1"):A.write(`${a}content-length: ${n}\r
|
|
31
|
-
\r
|
|
32
|
-
`,"latin1")),n===null&&A.write(`\r
|
|
33
|
-
${l.toString(16)}\r
|
|
34
|
-
`,"latin1"),this.bytesWritten+=l;let c=A.write(t);return A.uncork(),r.onBodySent(t),c||A[X].timeout&&A[X].timeoutType===nr&&A[X].timeout.refresh&&A[X].timeout.refresh(),c}end(){let{socket:t,contentLength:A,client:r,bytesWritten:n,expectsPayload:s,header:o,request:i}=this;if(i.onRequestSent(),t[qt]=!1,t[we])throw t[we];if(!t.destroyed){if(n===0?s?t.write(`${o}content-length: 0\r
|
|
35
|
-
\r
|
|
36
|
-
`,"latin1"):t.write(`${o}\r
|
|
37
|
-
`,"latin1"):A===null&&t.write(`\r
|
|
38
|
-
0\r
|
|
39
|
-
\r
|
|
40
|
-
`,"latin1"),A!==null&&n!==A){if(r[ya])throw new dA;process.emitWarning(new dA)}t[X].timeout&&t[X].timeoutType===nr&&t[X].timeout.refresh&&t[X].timeout.refresh(),r[Rt]()}}destroy(t){let{socket:A,client:r,abort:n}=this;A[qt]=!1,t&&(R(r[ae]<=1,"pipeline should only contain this request"),n(t))}};fd.exports=X0});var Rd=p((wv,Sd)=>{"use strict";var Ze=f("node:assert"),{pipeline:sb}=f("node:stream"),H=Y(),{RequestContentLengthMismatchError:Sa,RequestAbortedError:md,SocketError:un,InformationalError:Ra}=O(),{kUrl:Ls,kReset:Ts,kClient:sr,kRunning:vs,kPending:ob,kQueue:Pt,kPendingIdx:Na,kRunningIdx:At,kError:nt,kSocket:ge,kStrictContentLength:ib,kOnError:Fa,kMaxConcurrentStreams:Dd,kHTTP2Session:rt,kResume:Ot,kSize:ab,kHTTPContext:cb}=ee(),Nt=Symbol("open streams"),yd,wd=!1,xs;try{xs=f("node:http2")}catch{xs={constants:{}}}var{constants:{HTTP2_HEADER_AUTHORITY:lb,HTTP2_HEADER_METHOD:ub,HTTP2_HEADER_PATH:gb,HTTP2_HEADER_SCHEME:Eb,HTTP2_HEADER_CONTENT_LENGTH:db,HTTP2_HEADER_EXPECT:hb,HTTP2_HEADER_STATUS:Qb}}=xs;function Ib(e){let t=[];for(let[A,r]of Object.entries(e))if(Array.isArray(r))for(let n of r)t.push(Buffer.from(A),Buffer.from(n));else t.push(Buffer.from(A),Buffer.from(r));return t}async function Bb(e,t){e[ge]=t,wd||(wd=!0,process.emitWarning("H2 support is experimental, expect them to change at any time.",{code:"UNDICI-H2"}));let A=xs.connect(e[Ls],{createConnection:()=>t,peerMaxConcurrentStreams:e[Dd]});A[Nt]=0,A[sr]=e,A[ge]=t,H.addListener(A,"error",fb),H.addListener(A,"frameError",pb),H.addListener(A,"end",mb),H.addListener(A,"goaway",yb),H.addListener(A,"close",function(){let{[sr]:n}=this,{[ge]:s}=n,o=this[ge][nt]||this[nt]||new un("closed",H.getSocketInfo(s));if(n[rt]=null,n.destroyed){Ze(n[ob]===0);let i=n[Pt].splice(n[At]);for(let a=0;a<i.length;a++){let l=i[a];H.errorRequest(n,l,o)}}}),A.unref(),e[rt]=A,t[rt]=A,H.addListener(t,"error",function(n){Ze(n.code!=="ERR_TLS_CERT_ALTNAME_INVALID"),this[nt]=n,this[sr][Fa](n)}),H.addListener(t,"end",function(){H.destroy(this,new un("other side closed",H.getSocketInfo(this)))}),H.addListener(t,"close",function(){let n=this[nt]||new un("closed",H.getSocketInfo(this));e[ge]=null,this[rt]!=null&&this[rt].destroy(n),e[Na]=e[At],Ze(e[vs]===0),e.emit("disconnect",e[Ls],[e],n),e[Ot]()});let r=!1;return t.on("close",()=>{r=!0}),{version:"h2",defaultPipelining:1/0,write(...n){return bb(e,...n)},resume(){Cb(e)},destroy(n,s){r?queueMicrotask(s):t.destroy(n).on("close",s)},get destroyed(){return t.destroyed},busy(){return!1}}}function Cb(e){let t=e[ge];t?.destroyed===!1&&(e[ab]===0&&e[Dd]===0?(t.unref(),e[rt].unref()):(t.ref(),e[rt].ref()))}function fb(e){Ze(e.code!=="ERR_TLS_CERT_ALTNAME_INVALID"),this[ge][nt]=e,this[sr][Fa](e)}function pb(e,t,A){if(A===0){let r=new Ra(`HTTP/2: "frameError" received - type ${e}, code ${t}`);this[ge][nt]=r,this[sr][Fa](r)}}function mb(){let e=new un("other side closed",H.getSocketInfo(this[ge]));this.destroy(e),H.destroy(this[ge],e)}function yb(e){let t=this[nt]||new un(`HTTP/2: "GOAWAY" frame received with code ${e}`,H.getSocketInfo(this)),A=this[sr];if(A[ge]=null,A[cb]=null,this[rt]!=null&&(this[rt].destroy(t),this[rt]=null),H.destroy(this[ge],t),A[At]<A[Pt].length){let r=A[Pt][A[At]];A[Pt][A[At]++]=null,H.errorRequest(A,r,t),A[Na]=A[At]}Ze(A[vs]===0),A.emit("disconnect",A[Ls],[A],t),A[Ot]()}function wb(e){return e!=="GET"&&e!=="HEAD"&&e!=="OPTIONS"&&e!=="TRACE"&&e!=="CONNECT"}function bb(e,t){let A=e[rt],{method:r,path:n,host:s,upgrade:o,expectContinue:i,signal:a,headers:l}=t,{body:c}=t;if(o)return H.errorRequest(e,t,new Error("Upgrade not supported for H2")),!1;let u={};for(let B=0;B<l.length;B+=2){let k=l[B+0],G=l[B+1];if(Array.isArray(G))for(let q=0;q<G.length;q++)u[k]?u[k]+=`,${G[q]}`:u[k]=G[q];else u[k]=G}let g,{hostname:E,port:h}=e[Ls];u[lb]=s||`${E}${h?`:${h}`:""}`,u[ub]=r;let Q=B=>{t.aborted||t.completed||(B=B||new md,H.errorRequest(e,t,B),g!=null&&H.destroy(g,B),H.destroy(c,B),e[Pt][e[At]++]=null,e[Ot]())};try{t.onConnect(Q)}catch(B){H.errorRequest(e,t,B)}if(t.aborted)return!1;if(r==="CONNECT")return A.ref(),g=A.request(u,{endStream:!1,signal:a}),g.id&&!g.pending?(t.onUpgrade(null,null,g),++A[Nt],e[Pt][e[At]++]=null):g.once("ready",()=>{t.onUpgrade(null,null,g),++A[Nt],e[Pt][e[At]++]=null}),g.once("close",()=>{A[Nt]-=1,A[Nt]===0&&A.unref()}),!0;u[gb]=n,u[Eb]="https";let I=r==="PUT"||r==="POST"||r==="PATCH";c&&typeof c.read=="function"&&c.read(0);let d=H.bodyLength(c);if(H.isFormDataLike(c)){yd??=tr().extractBody;let[B,k]=yd(c);u["content-type"]=k,c=B.stream,d=B.length}if(d==null&&(d=t.contentLength),(d===0||!I)&&(d=null),wb(r)&&d>0&&t.contentLength!=null&&t.contentLength!==d){if(e[ib])return H.errorRequest(e,t,new Sa),!1;process.emitWarning(new Sa)}d!=null&&(Ze(c,"no body must not have content length"),u[db]=`${d}`),A.ref();let C=r==="GET"||r==="HEAD"||c===null;return i?(u[hb]="100-continue",g=A.request(u,{endStream:C,signal:a}),g.once("continue",w)):(g=A.request(u,{endStream:C,signal:a}),w()),++A[Nt],g.once("response",B=>{let{[Qb]:k,...G}=B;if(t.onResponseStarted(),t.aborted){let q=new md;H.errorRequest(e,t,q),H.destroy(g,q);return}t.onHeaders(Number(k),Ib(G),g.resume.bind(g),"")===!1&&g.pause(),g.on("data",q=>{t.onData(q)===!1&&g.pause()})}),g.once("end",()=>{(g.state?.state==null||g.state.state<6)&&t.onComplete([]),A[Nt]===0&&A.unref(),Q(new Ra("HTTP/2: stream half-closed (remote)")),e[Pt][e[At]++]=null,e[Na]=e[At],e[Ot]()}),g.once("close",()=>{A[Nt]-=1,A[Nt]===0&&A.unref()}),g.once("error",function(B){Q(B)}),g.once("frameError",(B,k)=>{Q(new Ra(`HTTP/2: "frameError" received - type ${B}, code ${k}`))}),!0;function w(){!c||d===0?bd(Q,g,null,e,t,e[ge],d,I):H.isBuffer(c)?bd(Q,g,c,e,t,e[ge],d,I):H.isBlobLike(c)?typeof c.stream=="function"?kd(Q,g,c.stream(),e,t,e[ge],d,I):Db(Q,g,c,e,t,e[ge],d,I):H.isStream(c)?kb(Q,e[ge],I,g,c,e,t,d):H.isIterable(c)?kd(Q,g,c,e,t,e[ge],d,I):Ze(!1)}}function bd(e,t,A,r,n,s,o,i){try{A!=null&&H.isBuffer(A)&&(Ze(o===A.byteLength,"buffer body must have content length"),t.cork(),t.write(A),t.uncork(),t.end(),n.onBodySent(A)),i||(s[Ts]=!0),n.onRequestSent(),r[Ot]()}catch(a){e(a)}}function kb(e,t,A,r,n,s,o,i){Ze(i!==0||s[vs]===0,"stream body cannot be pipelined");let a=sb(n,r,c=>{c?(H.destroy(a,c),e(c)):(H.removeAllListeners(a),o.onRequestSent(),A||(t[Ts]=!0),s[Ot]())});H.addListener(a,"data",l);function l(c){o.onBodySent(c)}}async function Db(e,t,A,r,n,s,o,i){Ze(o===A.size,"blob body must have content length");try{if(o!=null&&o!==A.size)throw new Sa;let a=Buffer.from(await A.arrayBuffer());t.cork(),t.write(a),t.uncork(),t.end(),n.onBodySent(a),n.onRequestSent(),i||(s[Ts]=!0),r[Ot]()}catch(a){e(a)}}async function kd(e,t,A,r,n,s,o,i){Ze(o!==0||r[vs]===0,"iterator body cannot be pipelined");let a=null;function l(){if(a){let u=a;a=null,u()}}let c=()=>new Promise((u,g)=>{Ze(a===null),s[nt]?g(s[nt]):a=u});t.on("close",l).on("drain",l);try{for await(let u of A){if(s[nt])throw s[nt];let g=t.write(u);n.onBodySent(u),g||await c()}t.end(),n.onRequestSent(),i||(s[Ts]=!0),r[Ot]()}catch(u){e(u)}finally{t.off("close",l).off("drain",l)}}Sd.exports=Bb});var Ys=p((bv,Ud)=>{"use strict";var Bt=Y(),{kBodyUsed:gn}=ee(),Ma=f("node:assert"),{InvalidArgumentError:Sb}=O(),Rb=f("node:events"),Nb=[300,301,302,303,307,308],Nd=Symbol("body"),Gs=class{constructor(t){this[Nd]=t,this[gn]=!1}async*[Symbol.asyncIterator](){Ma(!this[gn],"disturbed"),this[gn]=!0,yield*this[Nd]}},Ua=class{constructor(t,A,r,n){if(A!=null&&(!Number.isInteger(A)||A<0))throw new Sb("maxRedirections must be a positive number");Bt.validateHandler(n,r.method,r.upgrade),this.dispatch=t,this.location=null,this.abort=null,this.opts={...r,maxRedirections:0},this.maxRedirections=A,this.handler=n,this.history=[],this.redirectionLimitReached=!1,Bt.isStream(this.opts.body)?(Bt.bodyLength(this.opts.body)===0&&this.opts.body.on("data",function(){Ma(!1)}),typeof this.opts.body.readableDidRead!="boolean"&&(this.opts.body[gn]=!1,Rb.prototype.on.call(this.opts.body,"data",function(){this[gn]=!0}))):this.opts.body&&typeof this.opts.body.pipeTo=="function"?this.opts.body=new Gs(this.opts.body):this.opts.body&&typeof this.opts.body!="string"&&!ArrayBuffer.isView(this.opts.body)&&Bt.isIterable(this.opts.body)&&(this.opts.body=new Gs(this.opts.body))}onConnect(t){this.abort=t,this.handler.onConnect(t,{history:this.history})}onUpgrade(t,A,r){this.handler.onUpgrade(t,A,r)}onError(t){this.handler.onError(t)}onHeaders(t,A,r,n){if(this.location=this.history.length>=this.maxRedirections||Bt.isDisturbed(this.opts.body)?null:Fb(t,A),this.opts.throwOnMaxRedirect&&this.history.length>=this.maxRedirections){this.request&&this.request.abort(new Error("max redirects")),this.redirectionLimitReached=!0,this.abort(new Error("max redirects"));return}if(this.opts.origin&&this.history.push(new URL(this.opts.path,this.opts.origin)),!this.location)return this.handler.onHeaders(t,A,r,n);let{origin:s,pathname:o,search:i}=Bt.parseURL(new URL(this.location,this.opts.origin&&new URL(this.opts.path,this.opts.origin))),a=i?`${o}${i}`:o;this.opts.headers=Ub(this.opts.headers,t===303,this.opts.origin!==s),this.opts.path=a,this.opts.origin=s,this.opts.maxRedirections=0,this.opts.query=null,t===303&&this.opts.method!=="HEAD"&&(this.opts.method="GET",this.opts.body=null)}onData(t){if(!this.location)return this.handler.onData(t)}onComplete(t){this.location?(this.location=null,this.abort=null,this.dispatch(this.opts,this)):this.handler.onComplete(t)}onBodySent(t){this.handler.onBodySent&&this.handler.onBodySent(t)}};function Fb(e,t){if(Nb.indexOf(e)===-1)return null;for(let A=0;A<t.length;A+=2)if(t[A].length===8&&Bt.headerNameToString(t[A])==="location")return t[A+1]}function Fd(e,t,A){if(e.length===4)return Bt.headerNameToString(e)==="host";if(t&&Bt.headerNameToString(e).startsWith("content-"))return!0;if(A&&(e.length===13||e.length===6||e.length===19)){let r=Bt.headerNameToString(e);return r==="authorization"||r==="cookie"||r==="proxy-authorization"}return!1}function Ub(e,t,A){let r=[];if(Array.isArray(e))for(let n=0;n<e.length;n+=2)Fd(e[n],t,A)||r.push(e[n],e[n+1]);else if(e&&typeof e=="object")for(let n of Object.keys(e))Fd(n,t,A)||r.push(n,e[n]);else Ma(e==null,"headers must be an object or an array");return r}Ud.exports=Ua});var Hs=p((kv,Md)=>{"use strict";var Mb=Ys();function Lb({maxRedirections:e}){return t=>function(r,n){let{maxRedirections:s=e}=r;if(!s)return t(r,n);let o=new Mb(t,s,r,n);return r={...r,maxRedirections:0},t(r,o)}}Md.exports=Lb});var ar=p((Dv,qd)=>{"use strict";var Ft=f("node:assert"),Yd=f("node:net"),xb=f("node:http"),BA=Y(),{channels:or}=VA(),Tb=qg(),vb=WA(),{InvalidArgumentError:se,InformationalError:Gb,ClientDestroyedError:Yb}=O(),Hb=Xr(),{kUrl:Ct,kServerName:Wt,kClient:Jb,kBusy:La,kConnect:Vb,kResuming:CA,kRunning:In,kPending:Bn,kSize:Qn,kQueue:st,kConnected:qb,kConnecting:ir,kNeedDrain:zt,kKeepAliveDefaultTimeout:Ld,kHostHeader:Pb,kPendingIdx:ot,kRunningIdx:Ut,kError:Ob,kPipelining:Js,kKeepAliveTimeoutValue:Wb,kMaxHeadersSize:_b,kKeepAliveMaxTimeout:zb,kKeepAliveTimeoutThreshold:Kb,kHeadersTimeout:Zb,kBodyTimeout:$b,kStrictContentLength:Xb,kConnector:En,kMaxRedirections:jb,kMaxRequests:xa,kCounter:ek,kClose:tk,kDestroy:Ak,kDispatch:rk,kInterceptors:xd,kLocalAddress:dn,kMaxResponseSize:nk,kOnError:sk,kHTTPContext:oe,kMaxConcurrentStreams:ok,kResume:hn}=ee(),ik=pd(),ak=Rd(),Td=!1,_t=Symbol("kClosedResolve"),vd=()=>{};function Hd(e){return e[Js]??e[oe]?.defaultPipelining??1}var Ta=class extends vb{constructor(t,{interceptors:A,maxHeaderSize:r,headersTimeout:n,socketTimeout:s,requestTimeout:o,connectTimeout:i,bodyTimeout:a,idleTimeout:l,keepAlive:c,keepAliveTimeout:u,maxKeepAliveTimeout:g,keepAliveMaxTimeout:E,keepAliveTimeoutThreshold:h,socketPath:Q,pipelining:I,tls:d,strictContentLength:C,maxCachedSessions:w,maxRedirections:B,connect:k,maxRequestsPerClient:G,localAddress:q,maxResponseSize:Ee,autoSelectFamily:pe,autoSelectFamilyAttemptTimeout:We,maxConcurrentStreams:me,allowH2:Qe,webSocket:ut}={}){if(super({webSocket:ut}),c!==void 0)throw new se("unsupported keepAlive, use pipelining=0 instead");if(s!==void 0)throw new se("unsupported socketTimeout, use headersTimeout & bodyTimeout instead");if(o!==void 0)throw new se("unsupported requestTimeout, use headersTimeout & bodyTimeout instead");if(l!==void 0)throw new se("unsupported idleTimeout, use keepAliveTimeout instead");if(g!==void 0)throw new se("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead");if(r!=null&&!Number.isFinite(r))throw new se("invalid maxHeaderSize");if(Q!=null&&typeof Q!="string")throw new se("invalid socketPath");if(i!=null&&(!Number.isFinite(i)||i<0))throw new se("invalid connectTimeout");if(u!=null&&(!Number.isFinite(u)||u<=0))throw new se("invalid keepAliveTimeout");if(E!=null&&(!Number.isFinite(E)||E<=0))throw new se("invalid keepAliveMaxTimeout");if(h!=null&&!Number.isFinite(h))throw new se("invalid keepAliveTimeoutThreshold");if(n!=null&&(!Number.isInteger(n)||n<0))throw new se("headersTimeout must be a positive integer or zero");if(a!=null&&(!Number.isInteger(a)||a<0))throw new se("bodyTimeout must be a positive integer or zero");if(k!=null&&typeof k!="function"&&typeof k!="object")throw new se("connect must be a function or an object");if(B!=null&&(!Number.isInteger(B)||B<0))throw new se("maxRedirections must be a positive number");if(G!=null&&(!Number.isInteger(G)||G<0))throw new se("maxRequestsPerClient must be a positive number");if(q!=null&&(typeof q!="string"||Yd.isIP(q)===0))throw new se("localAddress must be valid string IP address");if(Ee!=null&&(!Number.isInteger(Ee)||Ee<-1))throw new se("maxResponseSize must be a positive number");if(We!=null&&(!Number.isInteger(We)||We<-1))throw new se("autoSelectFamilyAttemptTimeout must be a positive number");if(Qe!=null&&typeof Qe!="boolean")throw new se("allowH2 must be a valid boolean value");if(me!=null&&(typeof me!="number"||me<1))throw new se("maxConcurrentStreams must be a positive integer, greater than 0");typeof k!="function"&&(k=Hb({...d,maxCachedSessions:w,allowH2:Qe,socketPath:Q,timeout:i,...pe?{autoSelectFamily:pe,autoSelectFamilyAttemptTimeout:We}:void 0,...k})),A?.Client&&Array.isArray(A.Client)?(this[xd]=A.Client,Td||(Td=!0,process.emitWarning("Client.Options#interceptor is deprecated. Use Dispatcher#compose instead.",{code:"UNDICI-CLIENT-INTERCEPTOR-DEPRECATED"}))):this[xd]=[ck({maxRedirections:B})],this[Ct]=BA.parseOrigin(t),this[En]=k,this[Js]=I??1,this[_b]=r||xb.maxHeaderSize,this[Ld]=u??4e3,this[zb]=E??6e5,this[Kb]=h??2e3,this[Wb]=this[Ld],this[Wt]=null,this[dn]=q??null,this[CA]=0,this[zt]=0,this[Pb]=`host: ${this[Ct].hostname}${this[Ct].port?`:${this[Ct].port}`:""}\r
|
|
41
|
-
`,this[$b]=a??3e5,this[Zb]=n??3e5,this[Xb]=C??!0,this[jb]=B,this[xa]=G,this[_t]=null,this[nk]=Ee>-1?Ee:-1,this[ok]=me??100,this[oe]=null,this[st]=[],this[Ut]=0,this[ot]=0,this[hn]=Yt=>va(this,Yt),this[sk]=Yt=>Jd(this,Yt)}get pipelining(){return this[Js]}set pipelining(t){this[Js]=t,this[hn](!0)}get[Bn](){return this[st].length-this[ot]}get[In](){return this[ot]-this[Ut]}get[Qn](){return this[st].length-this[Ut]}get[qb](){return!!this[oe]&&!this[ir]&&!this[oe].destroyed}get[La](){return!!(this[oe]?.busy(null)||this[Qn]>=(Hd(this)||1)||this[Bn]>0)}[Vb](t){Vd(this),this.once("connect",t)}[rk](t,A){let r=t.origin||this[Ct].origin,n=new Tb(r,t,A);return this[st].push(n),this[CA]||(BA.bodyLength(n.body)==null&&BA.isIterable(n.body)?(this[CA]=1,queueMicrotask(()=>va(this))):this[hn](!0)),this[CA]&&this[zt]!==2&&this[La]&&(this[zt]=2),this[zt]<2}async[tk](){return new Promise(t=>{this[Qn]?this[_t]=t:t(null)})}async[Ak](t){return new Promise(A=>{let r=this[st].splice(this[ot]);for(let s=0;s<r.length;s++){let o=r[s];BA.errorRequest(this,o,t)}let n=()=>{this[_t]&&(this[_t](),this[_t]=null),A(null)};this[oe]?(this[oe].destroy(t,n),this[oe]=null):queueMicrotask(n),this[hn]()})}},ck=Hs();function Jd(e,t){if(e[In]===0&&t.code!=="UND_ERR_INFO"&&t.code!=="UND_ERR_SOCKET"){Ft(e[ot]===e[Ut]);let A=e[st].splice(e[Ut]);for(let r=0;r<A.length;r++){let n=A[r];BA.errorRequest(e,n,t)}Ft(e[Qn]===0)}}async function Vd(e){Ft(!e[ir]),Ft(!e[oe]);let{host:t,hostname:A,protocol:r,port:n}=e[Ct];if(A[0]==="["){let s=A.indexOf("]");Ft(s!==-1);let o=A.substring(1,s);Ft(Yd.isIP(o)),A=o}e[ir]=!0,or.beforeConnect.hasSubscribers&&or.beforeConnect.publish({connectParams:{host:t,hostname:A,protocol:r,port:n,version:e[oe]?.version,servername:e[Wt],localAddress:e[dn]},connector:e[En]});try{let s=await new Promise((o,i)=>{e[En]({host:t,hostname:A,protocol:r,port:n,servername:e[Wt],localAddress:e[dn]},(a,l)=>{a?i(a):o(l)})});if(e.destroyed){BA.destroy(s.on("error",vd),new Yb);return}Ft(s);try{e[oe]=s.alpnProtocol==="h2"?await ak(e,s):await ik(e,s)}catch(o){throw s.destroy().on("error",vd),o}e[ir]=!1,s[ek]=0,s[xa]=e[xa],s[Jb]=e,s[Ob]=null,or.connected.hasSubscribers&&or.connected.publish({connectParams:{host:t,hostname:A,protocol:r,port:n,version:e[oe]?.version,servername:e[Wt],localAddress:e[dn]},connector:e[En],socket:s}),e.emit("connect",e[Ct],[e])}catch(s){if(e.destroyed)return;if(e[ir]=!1,or.connectError.hasSubscribers&&or.connectError.publish({connectParams:{host:t,hostname:A,protocol:r,port:n,version:e[oe]?.version,servername:e[Wt],localAddress:e[dn]},connector:e[En],error:s}),s.code==="ERR_TLS_CERT_ALTNAME_INVALID")for(Ft(e[In]===0);e[Bn]>0&&e[st][e[ot]].servername===e[Wt];){let o=e[st][e[ot]++];BA.errorRequest(e,o,s)}else Jd(e,s);e.emit("connectionError",e[Ct],[e],s)}e[hn]()}function Gd(e){e[zt]=0,e.emit("drain",e[Ct],[e])}function va(e,t){e[CA]!==2&&(e[CA]=2,lk(e,t),e[CA]=0,e[Ut]>256&&(e[st].splice(0,e[Ut]),e[ot]-=e[Ut],e[Ut]=0))}function lk(e,t){for(;;){if(e.destroyed){Ft(e[Bn]===0);return}if(e[_t]&&!e[Qn]){e[_t](),e[_t]=null;return}if(e[oe]&&e[oe].resume(),e[La])e[zt]=2;else if(e[zt]===2){t?(e[zt]=1,queueMicrotask(()=>Gd(e))):Gd(e);continue}if(e[Bn]===0||e[In]>=(Hd(e)||1))return;let A=e[st][e[ot]];if(e[Ct].protocol==="https:"&&e[Wt]!==A.servername){if(e[In]>0)return;e[Wt]=A.servername,e[oe]?.destroy(new Gb("servername changed"),()=>{e[oe]=null,va(e)})}if(e[ir])return;if(!e[oe]){Vd(e);return}if(e[oe].destroyed||e[oe].busy(A))return;!A.aborted&&e[oe].write(A)?e[ot]++:e[st].splice(e[ot],1)}}qd.exports=Ta});var Ga=p((Rv,Pd)=>{"use strict";var Vs=class{constructor(){this.bottom=0,this.top=0,this.list=new Array(2048),this.next=null}isEmpty(){return this.top===this.bottom}isFull(){return(this.top+1&2047)===this.bottom}push(t){this.list[this.top]=t,this.top=this.top+1&2047}shift(){let t=this.list[this.bottom];return t===void 0?null:(this.list[this.bottom]=void 0,this.bottom=this.bottom+1&2047,t)}};Pd.exports=class{constructor(){this.head=this.tail=new Vs}isEmpty(){return this.head.isEmpty()}push(t){this.head.isFull()&&(this.head=this.head.next=new Vs),this.head.push(t)}shift(){let t=this.tail,A=t.shift();return t.isEmpty()&&t.next!==null&&(this.tail=t.next),A}}});var Wd=p((Nv,Od)=>{var{kFree:uk,kConnected:gk,kPending:Ek,kQueued:dk,kRunning:hk,kSize:Qk}=ee(),fA=Symbol("pool"),Ya=class{constructor(t){this[fA]=t}get connected(){return this[fA][gk]}get free(){return this[fA][uk]}get pending(){return this[fA][Ek]}get queued(){return this[fA][dk]}get running(){return this[fA][hk]}get size(){return this[fA][Qk]}};Od.exports=Ya});var Oa=p((Fv,Ah)=>{"use strict";var Ik=WA(),Bk=Ga(),{kConnected:Ha,kSize:_d,kRunning:zd,kPending:Kd,kQueued:Cn,kBusy:Ck,kFree:fk,kUrl:pk,kClose:mk,kDestroy:yk,kDispatch:wk}=ee(),bk=Wd(),Se=Symbol("clients"),be=Symbol("needDrain"),fn=Symbol("queue"),Ja=Symbol("closed resolve"),Va=Symbol("onDrain"),Zd=Symbol("onConnect"),$d=Symbol("onDisconnect"),Xd=Symbol("onConnectionError"),qa=Symbol("get dispatcher"),eh=Symbol("add client"),th=Symbol("remove client"),jd=Symbol("stats"),Pa=class extends Ik{constructor(t){super(t),this[fn]=new Bk,this[Se]=[],this[Cn]=0;let A=this;this[Va]=function(n,s){let o=A[fn],i=!1;for(;!i;){let a=o.shift();if(!a)break;A[Cn]--,i=!this.dispatch(a.opts,a.handler)}this[be]=i,!this[be]&&A[be]&&(A[be]=!1,A.emit("drain",n,[A,...s])),A[Ja]&&o.isEmpty()&&Promise.all(A[Se].map(a=>a.close())).then(A[Ja])},this[Zd]=(r,n)=>{A.emit("connect",r,[A,...n])},this[$d]=(r,n,s)=>{A.emit("disconnect",r,[A,...n],s)},this[Xd]=(r,n,s)=>{A.emit("connectionError",r,[A,...n],s)},this[jd]=new bk(this)}get[Ck](){return this[be]}get[Ha](){return this[Se].filter(t=>t[Ha]).length}get[fk](){return this[Se].filter(t=>t[Ha]&&!t[be]).length}get[Kd](){let t=this[Cn];for(let{[Kd]:A}of this[Se])t+=A;return t}get[zd](){let t=0;for(let{[zd]:A}of this[Se])t+=A;return t}get[_d](){let t=this[Cn];for(let{[_d]:A}of this[Se])t+=A;return t}get stats(){return this[jd]}async[mk](){this[fn].isEmpty()?await Promise.all(this[Se].map(t=>t.close())):await new Promise(t=>{this[Ja]=t})}async[yk](t){for(;;){let A=this[fn].shift();if(!A)break;A.handler.onError(t)}await Promise.all(this[Se].map(A=>A.destroy(t)))}[wk](t,A){let r=this[qa]();return r?r.dispatch(t,A)||(r[be]=!0,this[be]=!this[qa]()):(this[be]=!0,this[fn].push({opts:t,handler:A}),this[Cn]++),!this[be]}[eh](t){return t.on("drain",this[Va]).on("connect",this[Zd]).on("disconnect",this[$d]).on("connectionError",this[Xd]),this[Se].push(t),this[be]&&queueMicrotask(()=>{this[be]&&this[Va](t[pk],[this,t])}),this}[th](t){t.close(()=>{let A=this[Se].indexOf(t);A!==-1&&this[Se].splice(A,1)}),this[be]=this[Se].some(A=>!A[be]&&A.closed!==!0&&A.destroyed!==!0)}};Ah.exports={PoolBase:Pa,kClients:Se,kNeedDrain:be,kAddClient:eh,kRemoveClient:th,kGetDispatcher:qa}});var cr=p((Uv,oh)=>{"use strict";var{PoolBase:kk,kClients:qs,kNeedDrain:Dk,kAddClient:Sk,kGetDispatcher:Rk}=Oa(),Nk=ar(),{InvalidArgumentError:Wa}=O(),rh=Y(),{kUrl:nh,kInterceptors:Fk}=ee(),Uk=Xr(),_a=Symbol("options"),za=Symbol("connections"),sh=Symbol("factory");function Mk(e,t){return new Nk(e,t)}var Ka=class extends kk{constructor(t,{connections:A,factory:r=Mk,connect:n,connectTimeout:s,tls:o,maxCachedSessions:i,socketPath:a,autoSelectFamily:l,autoSelectFamilyAttemptTimeout:c,allowH2:u,...g}={}){if(A!=null&&(!Number.isFinite(A)||A<0))throw new Wa("invalid connections");if(typeof r!="function")throw new Wa("factory must be a function.");if(n!=null&&typeof n!="function"&&typeof n!="object")throw new Wa("connect must be a function or an object");typeof n!="function"&&(n=Uk({...o,maxCachedSessions:i,allowH2:u,socketPath:a,timeout:s,...l?{autoSelectFamily:l,autoSelectFamilyAttemptTimeout:c}:void 0,...n})),super(g),this[Fk]=g.interceptors?.Pool&&Array.isArray(g.interceptors.Pool)?g.interceptors.Pool:[],this[za]=A||null,this[nh]=rh.parseOrigin(t),this[_a]={...rh.deepClone(g),connect:n,allowH2:u},this[_a].interceptors=g.interceptors?{...g.interceptors}:void 0,this[sh]=r,this.on("connectionError",(E,h,Q)=>{for(let I of h){let d=this[qs].indexOf(I);d!==-1&&this[qs].splice(d,1)}})}[Rk](){for(let t of this[qs])if(!t[Dk])return t;if(!this[za]||this[qs].length<this[za]){let t=this[sh](this[nh],this[_a]);return this[Sk](t),t}}};oh.exports=Ka});var uh=p((Mv,lh)=>{"use strict";var{BalancedPoolMissingUpstreamError:Lk,InvalidArgumentError:xk}=O(),{PoolBase:Tk,kClients:Be,kNeedDrain:pn,kAddClient:vk,kRemoveClient:Gk,kGetDispatcher:Yk}=Oa(),Hk=cr(),{kUrl:Za,kInterceptors:Jk}=ee(),{parseOrigin:ih}=Y(),ah=Symbol("factory"),Ps=Symbol("options"),ch=Symbol("kGreatestCommonDivisor"),pA=Symbol("kCurrentWeight"),mA=Symbol("kIndex"),$e=Symbol("kWeight"),Os=Symbol("kMaxWeightPerServer"),Ws=Symbol("kErrorPenalty");function Vk(e,t){if(e===0)return t;for(;t!==0;){let A=t;t=e%t,e=A}return e}function qk(e,t){return new Hk(e,t)}var $a=class extends Tk{constructor(t=[],{factory:A=qk,...r}={}){if(super(),this[Ps]=r,this[mA]=-1,this[pA]=0,this[Os]=this[Ps].maxWeightPerServer||100,this[Ws]=this[Ps].errorPenalty||15,Array.isArray(t)||(t=[t]),typeof A!="function")throw new xk("factory must be a function.");this[Jk]=r.interceptors?.BalancedPool&&Array.isArray(r.interceptors.BalancedPool)?r.interceptors.BalancedPool:[],this[ah]=A;for(let n of t)this.addUpstream(n);this._updateBalancedPoolStats()}addUpstream(t){let A=ih(t).origin;if(this[Be].find(n=>n[Za].origin===A&&n.closed!==!0&&n.destroyed!==!0))return this;let r=this[ah](A,Object.assign({},this[Ps]));this[vk](r),r.on("connect",()=>{r[$e]=Math.min(this[Os],r[$e]+this[Ws])}),r.on("connectionError",()=>{r[$e]=Math.max(1,r[$e]-this[Ws]),this._updateBalancedPoolStats()}),r.on("disconnect",(...n)=>{let s=n[2];s&&s.code==="UND_ERR_SOCKET"&&(r[$e]=Math.max(1,r[$e]-this[Ws]),this._updateBalancedPoolStats())});for(let n of this[Be])n[$e]=this[Os];return this._updateBalancedPoolStats(),this}_updateBalancedPoolStats(){let t=0;for(let A=0;A<this[Be].length;A++)t=Vk(this[Be][A][$e],t);this[ch]=t}removeUpstream(t){let A=ih(t).origin,r=this[Be].find(n=>n[Za].origin===A&&n.closed!==!0&&n.destroyed!==!0);return r&&this[Gk](r),this}get upstreams(){return this[Be].filter(t=>t.closed!==!0&&t.destroyed!==!0).map(t=>t[Za].origin)}[Yk](){if(this[Be].length===0)throw new Lk;if(!this[Be].find(s=>!s[pn]&&s.closed!==!0&&s.destroyed!==!0)||this[Be].map(s=>s[pn]).reduce((s,o)=>s&&o,!0))return;let r=0,n=this[Be].findIndex(s=>!s[pn]);for(;r++<this[Be].length;){this[mA]=(this[mA]+1)%this[Be].length;let s=this[Be][this[mA]];if(s[$e]>this[Be][n][$e]&&!s[pn]&&(n=this[mA]),this[mA]===0&&(this[pA]=this[pA]-this[ch],this[pA]<=0&&(this[pA]=this[Os])),s[$e]>=this[pA]&&!s[pn])return s}return this[pA]=this[Be][n][$e],this[mA]=n,this[Be][n]}};lh.exports=$a});var lr=p((Lv,Bh)=>{"use strict";var{InvalidArgumentError:_s}=O(),{kClients:Kt,kRunning:gh,kClose:Pk,kDestroy:Ok,kDispatch:Wk,kInterceptors:_k}=ee(),zk=WA(),Kk=cr(),Zk=ar(),$k=Y(),Xk=Hs(),Eh=Symbol("onConnect"),dh=Symbol("onDisconnect"),hh=Symbol("onConnectionError"),jk=Symbol("maxRedirections"),Qh=Symbol("onDrain"),Ih=Symbol("factory"),Xa=Symbol("options");function eD(e,t){return t&&t.connections===1?new Zk(e,t):new Kk(e,t)}var ja=class extends zk{constructor({factory:t=eD,maxRedirections:A=0,connect:r,...n}={}){if(typeof t!="function")throw new _s("factory must be a function.");if(r!=null&&typeof r!="function"&&typeof r!="object")throw new _s("connect must be a function or an object");if(!Number.isInteger(A)||A<0)throw new _s("maxRedirections must be a positive number");super(n),r&&typeof r!="function"&&(r={...r}),this[_k]=n.interceptors?.Agent&&Array.isArray(n.interceptors.Agent)?n.interceptors.Agent:[Xk({maxRedirections:A})],this[Xa]={...$k.deepClone(n),connect:r},this[Xa].interceptors=n.interceptors?{...n.interceptors}:void 0,this[jk]=A,this[Ih]=t,this[Kt]=new Map,this[Qh]=(s,o)=>{this.emit("drain",s,[this,...o])},this[Eh]=(s,o)=>{this.emit("connect",s,[this,...o])},this[dh]=(s,o,i)=>{this.emit("disconnect",s,[this,...o],i)},this[hh]=(s,o,i)=>{this.emit("connectionError",s,[this,...o],i)}}get[gh](){let t=0;for(let A of this[Kt].values())t+=A[gh];return t}[Wk](t,A){let r;if(t.origin&&(typeof t.origin=="string"||t.origin instanceof URL))r=String(t.origin);else throw new _s("opts.origin must be a non-empty string or URL.");let n=this[Kt].get(r);return n||(n=this[Ih](t.origin,this[Xa]).on("drain",this[Qh]).on("connect",this[Eh]).on("disconnect",this[dh]).on("connectionError",this[hh]),this[Kt].set(r,n)),n.dispatch(t,A)}async[Pk](){let t=[];for(let A of this[Kt].values())t.push(A.close());this[Kt].clear(),await Promise.all(t)}async[Ok](t){let A=[];for(let r of this[Kt].values())A.push(r.destroy(t));this[Kt].clear(),await Promise.all(A)}};Bh.exports=ja});var nc=p((xv,Rh)=>{"use strict";var{kProxy:ec,kClose:wh,kDestroy:bh,kDispatch:Ch,kInterceptors:tD}=ee(),{URL:yA}=f("node:url"),AD=lr(),kh=cr(),Dh=WA(),{InvalidArgumentError:ur,RequestAbortedError:rD,SecureProxyConnectionError:nD}=O(),fh=Xr(),Sh=ar(),zs=Symbol("proxy agent"),Ks=Symbol("proxy client"),Zt=Symbol("proxy headers"),tc=Symbol("request tls settings"),ph=Symbol("proxy tls settings"),mh=Symbol("connect endpoint function"),yh=Symbol("tunnel proxy");function sD(e){return e==="https:"?443:80}function oD(e,t){return new kh(e,t)}var iD=()=>{};function aD(e,t){return t.connections===1?new Sh(e,t):new kh(e,t)}var Ac=class extends Dh{#e;constructor(t,{headers:A={},connect:r,factory:n}){if(super(),!t)throw new ur("Proxy URL is mandatory");this[Zt]=A,n?this.#e=n(t,{connect:r}):this.#e=new Sh(t,{connect:r})}[Ch](t,A){let r=A.onHeaders;A.onHeaders=function(i,a,l){if(i===407){typeof A.onError=="function"&&A.onError(new ur("Proxy Authentication Required (407)"));return}r&&r.call(this,i,a,l)};let{origin:n,path:s="/",headers:o={}}=t;if(t.path=n+s,!("host"in o)&&!("Host"in o)){let{host:i}=new yA(n);o.host=i}return t.headers={...this[Zt],...o},this.#e[Ch](t,A)}async[wh](){return this.#e.close()}async[bh](t){return this.#e.destroy(t)}},rc=class extends Dh{constructor(t){if(super(),!t||typeof t=="object"&&!(t instanceof yA)&&!t.uri)throw new ur("Proxy uri is mandatory");let{clientFactory:A=oD}=t;if(typeof A!="function")throw new ur("Proxy opts.clientFactory must be a function.");let{proxyTunnel:r=!0}=t,n=this.#e(t),{href:s,origin:o,port:i,protocol:a,username:l,password:c,hostname:u}=n;if(this[ec]={uri:s,protocol:a},this[tD]=t.interceptors?.ProxyAgent&&Array.isArray(t.interceptors.ProxyAgent)?t.interceptors.ProxyAgent:[],this[tc]=t.requestTls,this[ph]=t.proxyTls,this[Zt]=t.headers||{},this[yh]=r,t.auth&&t.token)throw new ur("opts.auth cannot be used in combination with opts.token");t.auth?this[Zt]["proxy-authorization"]=`Basic ${t.auth}`:t.token?this[Zt]["proxy-authorization"]=t.token:l&&c&&(this[Zt]["proxy-authorization"]=`Basic ${Buffer.from(`${decodeURIComponent(l)}:${decodeURIComponent(c)}`).toString("base64")}`);let g=fh({...t.proxyTls});this[mh]=fh({...t.requestTls});let E=t.factory||aD,h=(Q,I)=>{let{protocol:d}=new yA(Q);return!this[yh]&&d==="http:"&&this[ec].protocol==="http:"?new Ac(this[ec].uri,{headers:this[Zt],connect:g,factory:E}):E(Q,I)};this[Ks]=A(n,{connect:g}),this[zs]=new AD({...t,factory:h,connect:async(Q,I)=>{let d=Q.host;Q.port||(d+=`:${sD(Q.protocol)}`);try{let{socket:C,statusCode:w}=await this[Ks].connect({origin:o,port:i,path:d,signal:Q.signal,headers:{...this[Zt],host:Q.host},servername:this[ph]?.servername||u});if(w!==200&&(C.on("error",iD).destroy(),I(new rD(`Proxy response (${w}) !== 200 when HTTP Tunneling`))),Q.protocol!=="https:"){I(null,C);return}let B;this[tc]?B=this[tc].servername:B=Q.servername,this[mh]({...Q,servername:B,httpSocket:C},I)}catch(C){C.code==="ERR_TLS_CERT_ALTNAME_INVALID"?I(new nD(C)):I(C)}}})}dispatch(t,A){let r=cD(t.headers);if(lD(r),r&&!("host"in r)&&!("Host"in r)){let{host:n}=new yA(t.origin);r.host=n}return this[zs].dispatch({...t,headers:r},A)}#e(t){return typeof t=="string"?new yA(t):t instanceof yA?t:new yA(t.uri)}async[wh](){await this[zs].close(),await this[Ks].close()}async[bh](){await this[zs].destroy(),await this[Ks].destroy()}};function cD(e){if(Array.isArray(e)){let t={};for(let A=0;A<e.length;A+=2)t[e[A]]=e[A+1];return t}return e}function lD(e){if(e&&Object.keys(e).find(A=>A.toLowerCase()==="proxy-authorization"))throw new ur("Proxy-Authorization should be sent in ProxyAgent constructor")}Rh.exports=rc});var xh=p((Tv,Lh)=>{"use strict";var uD=WA(),{kClose:gD,kDestroy:ED,kClosed:Nh,kDestroyed:Fh,kDispatch:dD,kNoProxyAgent:mn,kHttpProxyAgent:$t,kHttpsProxyAgent:wA}=ee(),Uh=nc(),hD=lr(),QD={"http:":80,"https:":443},Mh=!1,sc=class extends uD{#e=null;#t=null;#A=null;constructor(t={}){super(),this.#A=t,Mh||(Mh=!0,process.emitWarning("EnvHttpProxyAgent is experimental, expect them to change at any time.",{code:"UNDICI-EHPA"}));let{httpProxy:A,httpsProxy:r,noProxy:n,...s}=t;this[mn]=new hD(s);let o=A??process.env.http_proxy??process.env.HTTP_PROXY;o?this[$t]=new Uh({...s,uri:o}):this[$t]=this[mn];let i=r??process.env.https_proxy??process.env.HTTPS_PROXY;i?this[wA]=new Uh({...s,uri:i}):this[wA]=this[$t],this.#r()}[dD](t,A){let r=new URL(t.origin);return this.#s(r).dispatch(t,A)}async[gD](){await this[mn].close(),this[$t][Nh]||await this[$t].close(),this[wA][Nh]||await this[wA].close()}async[ED](t){await this[mn].destroy(t),this[$t][Fh]||await this[$t].destroy(t),this[wA][Fh]||await this[wA].destroy(t)}#s(t){let{protocol:A,host:r,port:n}=t;return r=r.replace(/:\d*$/,"").toLowerCase(),n=Number.parseInt(n,10)||QD[A]||0,this.#n(r,n)?A==="https:"?this[wA]:this[$t]:this[mn]}#n(t,A){if(this.#o&&this.#r(),this.#t.length===0)return!0;if(this.#e==="*")return!1;for(let r=0;r<this.#t.length;r++){let n=this.#t[r];if(!(n.port&&n.port!==A)){if(/^[.*]/.test(n.hostname)){if(t.endsWith(n.hostname.replace(/^\*/,"")))return!1}else if(t===n.hostname)return!1}}return!0}#r(){let t=this.#A.noProxy??this.#i,A=t.split(/[,\s]/),r=[];for(let n=0;n<A.length;n++){let s=A[n];if(!s)continue;let o=s.match(/^(.+):(\d+)$/);r.push({hostname:(o?o[1]:s).toLowerCase(),port:o?Number.parseInt(o[2],10):0})}this.#e=t,this.#t=r}get#o(){return this.#A.noProxy!==void 0?!1:this.#e!==this.#i}get#i(){return process.env.no_proxy??process.env.NO_PROXY??""}};Lh.exports=sc});var Zs=p((vv,Hh)=>{"use strict";var gr=f("node:assert"),{kRetryHandlerDefaultRetry:Th}=ee(),{RequestRetryError:Er}=O(),{isDisturbed:vh,parseHeaders:ID,parseRangeHeader:Gh,wrapRequestBody:BD}=Y();function CD(e){let t=Date.now();return new Date(e).getTime()-t}function Yh(e,t,A,r){let n=e["content-length"];if(n==null||!Number.isFinite(t.start)||!Number.isFinite(t.end))return null;let s=Number(n),o=t.end-t.start+1;return!Number.isFinite(s)||s!==o?new Er("Content-Length mismatch",A,{headers:e,data:{count:r}}):null}var oc=class e{constructor(t,A){let{retryOptions:r,...n}=t,{retry:s,maxRetries:o,maxTimeout:i,minTimeout:a,timeoutFactor:l,methods:c,errorCodes:u,retryAfter:g,statusCodes:E}=r??{};this.dispatch=A.dispatch,this.handler=A.handler,this.opts={...n,body:BD(t.body)},this.abort=null,this.aborted=!1,this.retryOpts={retry:s??e[Th],retryAfter:g??!0,maxTimeout:i??30*1e3,minTimeout:a??500,timeoutFactor:l??2,maxRetries:o??5,methods:c??["GET","HEAD","OPTIONS","PUT","DELETE","TRACE"],statusCodes:E??[500,502,503,504,429],errorCodes:u??["ECONNRESET","ECONNREFUSED","ENOTFOUND","ENETDOWN","ENETUNREACH","EHOSTDOWN","EHOSTUNREACH","EPIPE","UND_ERR_SOCKET"]},this.retryCount=0,this.retryCountCheckpoint=0,this.start=0,this.end=null,this.etag=null,this.resume=null,this.handler.onConnect(h=>{this.aborted=!0,this.abort?this.abort(h):this.reason=h})}onRequestSent(){this.handler.onRequestSent&&this.handler.onRequestSent()}onUpgrade(t,A,r){this.handler.onUpgrade&&this.handler.onUpgrade(t,A,r)}onConnect(t){this.aborted?t(this.reason):this.abort=t}onBodySent(t){if(this.handler.onBodySent)return this.handler.onBodySent(t)}static[Th](t,{state:A,opts:r},n){let{statusCode:s,code:o,headers:i}=t,{method:a,retryOptions:l}=r,{maxRetries:c,minTimeout:u,maxTimeout:g,timeoutFactor:E,statusCodes:h,errorCodes:Q,methods:I}=l,{counter:d}=A;if(o&&o!=="UND_ERR_REQ_RETRY"&&!Q.includes(o)){n(t);return}if(Array.isArray(I)&&!I.includes(a)){n(t);return}if(s!=null&&Array.isArray(h)&&!h.includes(s)){n(t);return}if(d>c){n(t);return}let C=i?.["retry-after"];C&&(C=Number(C),C=Number.isNaN(C)?CD(C):C*1e3);let w=C>0?Math.min(C,g):Math.min(u*E**(d-1),g);setTimeout(()=>n(null),w)}onHeaders(t,A,r,n){let s=ID(A);if(this.retryCount+=1,t>=300)return this.retryOpts.statusCodes.includes(t)===!1?this.handler.onHeaders(t,A,r,n):(this.abort(new Er("Request failed",t,{headers:s,data:{count:this.retryCount}})),!1);if(this.resume!=null){if(this.resume=null,t!==206&&(this.start>0||t!==200))return this.abort(new Er("server does not support the range header and the payload was partially consumed",t,{headers:s,data:{count:this.retryCount}})),!1;let i=Gh(s["content-range"]);if(!i)return this.abort(new Er("Content-Range mismatch",t,{headers:s,data:{count:this.retryCount}})),!1;if(this.etag!=null&&this.etag!==s.etag)return this.abort(new Er("ETag mismatch",t,{headers:s,data:{count:this.retryCount}})),!1;let a=Yh(s,i,t,this.retryCount);if(a!=null)return this.abort(a),!1;let{start:l,size:c,end:u=c-1}=i;return gr(this.start===l,"content-range mismatch"),gr(this.end==null||this.end===u,"content-range mismatch"),this.resume=r,!0}if(this.end==null){if(t===206){let i=Gh(s["content-range"]);if(i==null)return this.handler.onHeaders(t,A,r,n);let a=Yh(s,i,t,this.retryCount);if(a!=null)return this.abort(a),!1;let{start:l,size:c,end:u=c-1}=i;gr(l!=null&&Number.isFinite(l),"content-range mismatch"),gr(u!=null&&Number.isFinite(u),"invalid content-length"),this.start=l,this.end=u}if(this.end==null){let i=s["content-length"];this.end=i!=null?Number(i)-1:null}return gr(Number.isFinite(this.start)),gr(this.end==null||Number.isFinite(this.end),"invalid content-length"),this.resume=r,this.etag=s.etag!=null?s.etag:null,this.etag!=null&&this.etag.startsWith("W/")&&(this.etag=null),this.handler.onHeaders(t,A,r,n)}let o=new Er("Request failed",t,{headers:s,data:{count:this.retryCount}});return this.abort(o),!1}onData(t){return this.start+=t.length,this.handler.onData(t)}onComplete(t){return this.retryCount=0,this.handler.onComplete(t)}onError(t){if(this.aborted||vh(this.opts.body))return this.handler.onError(t);this.retryCount-this.retryCountCheckpoint>0?this.retryCount=this.retryCountCheckpoint+(this.retryCount-this.retryCountCheckpoint):this.retryCount+=1,this.retryOpts.retry(t,{state:{counter:this.retryCount},opts:{retryOptions:this.retryOpts,...this.opts}},A.bind(this));function A(r){if(r!=null||this.aborted||vh(this.opts.body))return this.handler.onError(r);if(this.start!==0){let n={range:`bytes=${this.start}-${this.end??""}`};this.etag!=null&&(n["if-match"]=this.etag),this.opts={...this.opts,headers:{...this.opts.headers,...n}}}try{this.retryCountCheckpoint=this.retryCount,this.dispatch(this.opts,this)}catch(n){this.handler.onError(n)}}}};Hh.exports=oc});var Vh=p((Gv,Jh)=>{"use strict";var fD=Zr(),pD=Zs(),ic=class extends fD{#e=null;#t=null;constructor(t,A={}){super(A),this.#e=t,this.#t=A}dispatch(t,A){let r=new pD({...t,retryOptions:this.#t},{dispatch:this.#e.dispatch.bind(this.#e),handler:A});return this.#e.dispatch(t,r)}close(){return this.#e.close()}destroy(){return this.#e.destroy()}};Jh.exports=ic});var Ec=p((Yv,$h)=>{"use strict";var _h=f("node:assert"),{Readable:mD}=f("node:stream"),{RequestAbortedError:zh,NotSupportedError:yD,InvalidArgumentError:wD,AbortError:ac}=O(),Kh=Y(),{ReadableStreamFrom:bD}=Y(),Ge=Symbol("kConsume"),yn=Symbol("kReading"),Xt=Symbol("kBody"),qh=Symbol("kAbort"),Zh=Symbol("kContentType"),Ph=Symbol("kContentLength"),kD=()=>{},cc=class extends mD{constructor({resume:t,abort:A,contentType:r="",contentLength:n,highWaterMark:s=64*1024}){super({autoDestroy:!0,read:t,highWaterMark:s}),this._readableState.dataEmitted=!1,this[qh]=A,this[Ge]=null,this[Xt]=null,this[Zh]=r,this[Ph]=n,this[yn]=!1}destroy(t){return!t&&!this._readableState.endEmitted&&(t=new zh),t&&this[qh](),super.destroy(t)}_destroy(t,A){this[yn]?A(t):setImmediate(()=>{A(t)})}on(t,...A){return(t==="data"||t==="readable")&&(this[yn]=!0),super.on(t,...A)}addListener(t,...A){return this.on(t,...A)}off(t,...A){let r=super.off(t,...A);return(t==="data"||t==="readable")&&(this[yn]=this.listenerCount("data")>0||this.listenerCount("readable")>0),r}removeListener(t,...A){return this.off(t,...A)}push(t){return this[Ge]&&t!==null?(uc(this[Ge],t),this[yn]?super.push(t):!0):super.push(t)}async text(){return wn(this,"text")}async json(){return wn(this,"json")}async blob(){return wn(this,"blob")}async bytes(){return wn(this,"bytes")}async arrayBuffer(){return wn(this,"arrayBuffer")}async formData(){throw new yD}get bodyUsed(){return Kh.isDisturbed(this)}get body(){return this[Xt]||(this[Xt]=bD(this),this[Ge]&&(this[Xt].getReader(),_h(this[Xt].locked))),this[Xt]}async dump(t){let A=Number.isFinite(t?.limit)?t.limit:131072,r=t?.signal;if(r!=null&&(typeof r!="object"||!("aborted"in r)))throw new wD("signal must be an AbortSignal");return r?.throwIfAborted(),this._readableState.closeEmitted?null:await new Promise((n,s)=>{this[Ph]>A&&this.destroy(new ac);let o=()=>{this.destroy(r.reason??new ac)};r?.addEventListener("abort",o),this.on("close",function(){r?.removeEventListener("abort",o),r?.aborted?s(r.reason??new ac):n(null)}).on("error",kD).on("data",function(i){A-=i.length,A<=0&&this.destroy()}).resume()})}};function DD(e){return e[Xt]&&e[Xt].locked===!0||e[Ge]}function SD(e){return Kh.isDisturbed(e)||DD(e)}async function wn(e,t){return _h(!e[Ge]),new Promise((A,r)=>{if(SD(e)){let n=e._readableState;n.destroyed&&n.closeEmitted===!1?e.on("error",s=>{r(s)}).on("close",()=>{r(new TypeError("unusable"))}):r(n.errored??new TypeError("unusable"))}else queueMicrotask(()=>{e[Ge]={type:t,stream:e,resolve:A,reject:r,length:0,body:[]},e.on("error",function(n){gc(this[Ge],n)}).on("close",function(){this[Ge].body!==null&&gc(this[Ge],new zh)}),RD(e[Ge])})})}function RD(e){if(e.body===null)return;let{_readableState:t}=e.stream;if(t.bufferIndex){let A=t.bufferIndex,r=t.buffer.length;for(let n=A;n<r;n++)uc(e,t.buffer[n])}else for(let A of t.buffer)uc(e,A);for(t.endEmitted?Wh(this[Ge]):e.stream.on("end",function(){Wh(this[Ge])}),e.stream.resume();e.stream.read()!=null;);}function lc(e,t){if(e.length===0||t===0)return"";let A=e.length===1?e[0]:Buffer.concat(e,t),r=A.length,n=r>2&&A[0]===239&&A[1]===187&&A[2]===191?3:0;return A.utf8Slice(n,r)}function Oh(e,t){if(e.length===0||t===0)return new Uint8Array(0);if(e.length===1)return new Uint8Array(e[0]);let A=new Uint8Array(Buffer.allocUnsafeSlow(t).buffer),r=0;for(let n=0;n<e.length;++n){let s=e[n];A.set(s,r),r+=s.length}return A}function Wh(e){let{type:t,body:A,resolve:r,stream:n,length:s}=e;try{t==="text"?r(lc(A,s)):t==="json"?r(JSON.parse(lc(A,s))):t==="arrayBuffer"?r(Oh(A,s).buffer):t==="blob"?r(new Blob(A,{type:n[Zh]})):t==="bytes"&&r(Oh(A,s)),gc(e)}catch(o){n.destroy(o)}}function uc(e,t){e.length+=t.length,e.body.push(t)}function gc(e,t){e.body!==null&&(t?e.reject(t):e.resolve(),e.type=null,e.stream=null,e.resolve=null,e.reject=null,e.length=0,e.body=null)}$h.exports={Readable:cc,chunksDecode:lc}});var dc=p((Hv,AQ)=>{var ND=f("node:assert"),{ResponseStatusCodeError:Xh}=O(),{chunksDecode:jh}=Ec(),FD=128*1024;async function UD({callback:e,body:t,contentType:A,statusCode:r,statusMessage:n,headers:s}){ND(t);let o=[],i=0;try{for await(let u of t)if(o.push(u),i+=u.length,i>FD){o=[],i=0;break}}catch{o=[],i=0}let a=`Response status code ${r}${n?`: ${n}`:""}`;if(r===204||!A||!i){queueMicrotask(()=>e(new Xh(a,r,s)));return}let l=Error.stackTraceLimit;Error.stackTraceLimit=0;let c;try{eQ(A)?c=JSON.parse(jh(o,i)):tQ(A)&&(c=jh(o,i))}catch{}finally{Error.stackTraceLimit=l}queueMicrotask(()=>e(new Xh(a,r,s,c)))}var eQ=e=>e.length>15&&e[11]==="/"&&e[0]==="a"&&e[1]==="p"&&e[2]==="p"&&e[3]==="l"&&e[4]==="i"&&e[5]==="c"&&e[6]==="a"&&e[7]==="t"&&e[8]==="i"&&e[9]==="o"&&e[10]==="n"&&e[12]==="j"&&e[13]==="s"&&e[14]==="o"&&e[15]==="n",tQ=e=>e.length>4&&e[4]==="/"&&e[0]==="t"&&e[1]==="e"&&e[2]==="x"&&e[3]==="t";AQ.exports={getResolveErrorBodyCallback:UD,isContentTypeApplicationJson:eQ,isContentTypeText:tQ}});var sQ=p((Jv,hc)=>{"use strict";var MD=f("node:assert"),{Readable:LD}=Ec(),{InvalidArgumentError:dr,RequestAbortedError:rQ}=O(),Ye=Y(),{getResolveErrorBodyCallback:xD}=dc(),{AsyncResource:TD}=f("node:async_hooks"),$s=class extends TD{constructor(t,A){if(!t||typeof t!="object")throw new dr("invalid opts");let{signal:r,method:n,opaque:s,body:o,onInfo:i,responseHeaders:a,throwOnError:l,highWaterMark:c}=t;try{if(typeof A!="function")throw new dr("invalid callback");if(c&&(typeof c!="number"||c<0))throw new dr("invalid highWaterMark");if(r&&typeof r.on!="function"&&typeof r.addEventListener!="function")throw new dr("signal must be an EventEmitter or EventTarget");if(n==="CONNECT")throw new dr("invalid method");if(i&&typeof i!="function")throw new dr("invalid onInfo callback");super("UNDICI_REQUEST")}catch(u){throw Ye.isStream(o)&&Ye.destroy(o.on("error",Ye.nop),u),u}this.method=n,this.responseHeaders=a||null,this.opaque=s||null,this.callback=A,this.res=null,this.abort=null,this.body=o,this.trailers={},this.context=null,this.onInfo=i||null,this.throwOnError=l,this.highWaterMark=c,this.signal=r,this.reason=null,this.removeAbortListener=null,Ye.isStream(o)&&o.on("error",u=>{this.onError(u)}),this.signal&&(this.signal.aborted?this.reason=this.signal.reason??new rQ:this.removeAbortListener=Ye.addAbortListener(this.signal,()=>{this.reason=this.signal.reason??new rQ,this.res?Ye.destroy(this.res.on("error",Ye.nop),this.reason):this.abort&&this.abort(this.reason),this.removeAbortListener&&(this.res?.off("close",this.removeAbortListener),this.removeAbortListener(),this.removeAbortListener=null)}))}onConnect(t,A){if(this.reason){t(this.reason);return}MD(this.callback),this.abort=t,this.context=A}onHeaders(t,A,r,n){let{callback:s,opaque:o,abort:i,context:a,responseHeaders:l,highWaterMark:c}=this,u=l==="raw"?Ye.parseRawHeaders(A):Ye.parseHeaders(A);if(t<200){this.onInfo&&this.onInfo({statusCode:t,headers:u});return}let g=l==="raw"?Ye.parseHeaders(A):u,E=g["content-type"],h=g["content-length"],Q=new LD({resume:r,abort:i,contentType:E,contentLength:this.method!=="HEAD"&&h?Number(h):null,highWaterMark:c});this.removeAbortListener&&Q.on("close",this.removeAbortListener),this.callback=null,this.res=Q,s!==null&&(this.throwOnError&&t>=400?this.runInAsyncScope(xD,null,{callback:s,body:Q,contentType:E,statusCode:t,statusMessage:n,headers:u}):this.runInAsyncScope(s,null,null,{statusCode:t,headers:u,trailers:this.trailers,opaque:o,body:Q,context:a}))}onData(t){return this.res.push(t)}onComplete(t){Ye.parseHeaders(t,this.trailers),this.res.push(null)}onError(t){let{res:A,callback:r,body:n,opaque:s}=this;r&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(r,null,t,{opaque:s})})),A&&(this.res=null,queueMicrotask(()=>{Ye.destroy(A,t)})),n&&(this.body=null,Ye.destroy(n,t)),this.removeAbortListener&&(A?.off("close",this.removeAbortListener),this.removeAbortListener(),this.removeAbortListener=null)}};function nQ(e,t){if(t===void 0)return new Promise((A,r)=>{nQ.call(this,e,(n,s)=>n?r(n):A(s))});try{this.dispatch(e,new $s(e,t))}catch(A){if(typeof t!="function")throw A;let r=e?.opaque;queueMicrotask(()=>t(A,{opaque:r}))}}hc.exports=nQ;hc.exports.RequestHandler=$s});var bn=p((Vv,aQ)=>{var{addAbortListener:vD}=Y(),{RequestAbortedError:GD}=O(),hr=Symbol("kListener"),ft=Symbol("kSignal");function oQ(e){e.abort?e.abort(e[ft]?.reason):e.reason=e[ft]?.reason??new GD,iQ(e)}function YD(e,t){if(e.reason=null,e[ft]=null,e[hr]=null,!!t){if(t.aborted){oQ(e);return}e[ft]=t,e[hr]=()=>{oQ(e)},vD(e[ft],e[hr])}}function iQ(e){e[ft]&&("removeEventListener"in e[ft]?e[ft].removeEventListener("abort",e[hr]):e[ft].removeListener("abort",e[hr]),e[ft]=null,e[hr]=null)}aQ.exports={addSignal:YD,removeSignal:iQ}});var gQ=p((qv,uQ)=>{"use strict";var HD=f("node:assert"),{finished:JD,PassThrough:VD}=f("node:stream"),{InvalidArgumentError:Qr,InvalidReturnValueError:qD}=O(),it=Y(),{getResolveErrorBodyCallback:PD}=dc(),{AsyncResource:OD}=f("node:async_hooks"),{addSignal:WD,removeSignal:cQ}=bn(),Qc=class extends OD{constructor(t,A,r){if(!t||typeof t!="object")throw new Qr("invalid opts");let{signal:n,method:s,opaque:o,body:i,onInfo:a,responseHeaders:l,throwOnError:c}=t;try{if(typeof r!="function")throw new Qr("invalid callback");if(typeof A!="function")throw new Qr("invalid factory");if(n&&typeof n.on!="function"&&typeof n.addEventListener!="function")throw new Qr("signal must be an EventEmitter or EventTarget");if(s==="CONNECT")throw new Qr("invalid method");if(a&&typeof a!="function")throw new Qr("invalid onInfo callback");super("UNDICI_STREAM")}catch(u){throw it.isStream(i)&&it.destroy(i.on("error",it.nop),u),u}this.responseHeaders=l||null,this.opaque=o||null,this.factory=A,this.callback=r,this.res=null,this.abort=null,this.context=null,this.trailers=null,this.body=i,this.onInfo=a||null,this.throwOnError=c||!1,it.isStream(i)&&i.on("error",u=>{this.onError(u)}),WD(this,n)}onConnect(t,A){if(this.reason){t(this.reason);return}HD(this.callback),this.abort=t,this.context=A}onHeaders(t,A,r,n){let{factory:s,opaque:o,context:i,callback:a,responseHeaders:l}=this,c=l==="raw"?it.parseRawHeaders(A):it.parseHeaders(A);if(t<200){this.onInfo&&this.onInfo({statusCode:t,headers:c});return}this.factory=null;let u;if(this.throwOnError&&t>=400){let h=(l==="raw"?it.parseHeaders(A):c)["content-type"];u=new VD,this.callback=null,this.runInAsyncScope(PD,null,{callback:a,body:u,contentType:h,statusCode:t,statusMessage:n,headers:c})}else{if(s===null)return;if(u=this.runInAsyncScope(s,null,{statusCode:t,headers:c,opaque:o,context:i}),!u||typeof u.write!="function"||typeof u.end!="function"||typeof u.on!="function")throw new qD("expected Writable");JD(u,{readable:!1},E=>{let{callback:h,res:Q,opaque:I,trailers:d,abort:C}=this;this.res=null,(E||!Q.readable)&&it.destroy(Q,E),this.callback=null,this.runInAsyncScope(h,null,E||null,{opaque:I,trailers:d}),E&&C()})}return u.on("drain",r),this.res=u,(u.writableNeedDrain!==void 0?u.writableNeedDrain:u._writableState?.needDrain)!==!0}onData(t){let{res:A}=this;return A?A.write(t):!0}onComplete(t){let{res:A}=this;cQ(this),A&&(this.trailers=it.parseHeaders(t),A.end())}onError(t){let{res:A,callback:r,opaque:n,body:s}=this;cQ(this),this.factory=null,A?(this.res=null,it.destroy(A,t)):r&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(r,null,t,{opaque:n})})),s&&(this.body=null,it.destroy(s,t))}};function lQ(e,t,A){if(A===void 0)return new Promise((r,n)=>{lQ.call(this,e,t,(s,o)=>s?n(s):r(o))});try{this.dispatch(e,new Qc(e,t,A))}catch(r){if(typeof A!="function")throw r;let n=e?.opaque;queueMicrotask(()=>A(r,{opaque:n}))}}uQ.exports=lQ});var QQ=p((Pv,hQ)=>{"use strict";var{Readable:dQ,Duplex:_D,PassThrough:zD}=f("node:stream"),{InvalidArgumentError:kn,InvalidReturnValueError:KD,RequestAbortedError:Ic}=O(),Xe=Y(),{AsyncResource:ZD}=f("node:async_hooks"),{addSignal:$D,removeSignal:XD}=bn(),EQ=f("node:assert"),Ir=Symbol("resume"),Bc=class extends dQ{constructor(){super({autoDestroy:!0}),this[Ir]=null}_read(){let{[Ir]:t}=this;t&&(this[Ir]=null,t())}_destroy(t,A){this._read(),A(t)}},Cc=class extends dQ{constructor(t){super({autoDestroy:!0}),this[Ir]=t}_read(){this[Ir]()}_destroy(t,A){!t&&!this._readableState.endEmitted&&(t=new Ic),A(t)}},fc=class extends ZD{constructor(t,A){if(!t||typeof t!="object")throw new kn("invalid opts");if(typeof A!="function")throw new kn("invalid handler");let{signal:r,method:n,opaque:s,onInfo:o,responseHeaders:i}=t;if(r&&typeof r.on!="function"&&typeof r.addEventListener!="function")throw new kn("signal must be an EventEmitter or EventTarget");if(n==="CONNECT")throw new kn("invalid method");if(o&&typeof o!="function")throw new kn("invalid onInfo callback");super("UNDICI_PIPELINE"),this.opaque=s||null,this.responseHeaders=i||null,this.handler=A,this.abort=null,this.context=null,this.onInfo=o||null,this.req=new Bc().on("error",Xe.nop),this.ret=new _D({readableObjectMode:t.objectMode,autoDestroy:!0,read:()=>{let{body:a}=this;a?.resume&&a.resume()},write:(a,l,c)=>{let{req:u}=this;u.push(a,l)||u._readableState.destroyed?c():u[Ir]=c},destroy:(a,l)=>{let{body:c,req:u,res:g,ret:E,abort:h}=this;!a&&!E._readableState.endEmitted&&(a=new Ic),h&&a&&h(),Xe.destroy(c,a),Xe.destroy(u,a),Xe.destroy(g,a),XD(this),l(a)}}).on("prefinish",()=>{let{req:a}=this;a.push(null)}),this.res=null,$D(this,r)}onConnect(t,A){let{ret:r,res:n}=this;if(this.reason){t(this.reason);return}EQ(!n,"pipeline cannot be retried"),EQ(!r.destroyed),this.abort=t,this.context=A}onHeaders(t,A,r){let{opaque:n,handler:s,context:o}=this;if(t<200){if(this.onInfo){let a=this.responseHeaders==="raw"?Xe.parseRawHeaders(A):Xe.parseHeaders(A);this.onInfo({statusCode:t,headers:a})}return}this.res=new Cc(r);let i;try{this.handler=null;let a=this.responseHeaders==="raw"?Xe.parseRawHeaders(A):Xe.parseHeaders(A);i=this.runInAsyncScope(s,null,{statusCode:t,headers:a,opaque:n,body:this.res,context:o})}catch(a){throw this.res.on("error",Xe.nop),a}if(!i||typeof i.on!="function")throw new KD("expected Readable");i.on("data",a=>{let{ret:l,body:c}=this;!l.push(a)&&c.pause&&c.pause()}).on("error",a=>{let{ret:l}=this;Xe.destroy(l,a)}).on("end",()=>{let{ret:a}=this;a.push(null)}).on("close",()=>{let{ret:a}=this;a._readableState.ended||Xe.destroy(a,new Ic)}),this.body=i}onData(t){let{res:A}=this;return A.push(t)}onComplete(t){let{res:A}=this;A.push(null)}onError(t){let{ret:A}=this;this.handler=null,Xe.destroy(A,t)}};function jD(e,t){try{let A=new fc(e,t);return this.dispatch({...e,body:A.req},A),A.ret}catch(A){return new zD().destroy(A)}}hQ.exports=jD});var mQ=p((Ov,pQ)=>{"use strict";var{InvalidArgumentError:pc,SocketError:eS}=O(),{AsyncResource:tS}=f("node:async_hooks"),IQ=Y(),{addSignal:AS,removeSignal:BQ}=bn(),CQ=f("node:assert"),mc=class extends tS{constructor(t,A){if(!t||typeof t!="object")throw new pc("invalid opts");if(typeof A!="function")throw new pc("invalid callback");let{signal:r,opaque:n,responseHeaders:s}=t;if(r&&typeof r.on!="function"&&typeof r.addEventListener!="function")throw new pc("signal must be an EventEmitter or EventTarget");super("UNDICI_UPGRADE"),this.responseHeaders=s||null,this.opaque=n||null,this.callback=A,this.abort=null,this.context=null,AS(this,r)}onConnect(t,A){if(this.reason){t(this.reason);return}CQ(this.callback),this.abort=t,this.context=null}onHeaders(){throw new eS("bad upgrade",null)}onUpgrade(t,A,r){CQ(t===101);let{callback:n,opaque:s,context:o}=this;BQ(this),this.callback=null;let i=this.responseHeaders==="raw"?IQ.parseRawHeaders(A):IQ.parseHeaders(A);this.runInAsyncScope(n,null,null,{headers:i,socket:r,opaque:s,context:o})}onError(t){let{callback:A,opaque:r}=this;BQ(this),A&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(A,null,t,{opaque:r})}))}};function fQ(e,t){if(t===void 0)return new Promise((A,r)=>{fQ.call(this,e,(n,s)=>n?r(n):A(s))});try{let A=new mc(e,t);this.dispatch({...e,method:e.method||"GET",upgrade:e.protocol||"Websocket"},A)}catch(A){if(typeof t!="function")throw A;let r=e?.opaque;queueMicrotask(()=>t(A,{opaque:r}))}}pQ.exports=fQ});var DQ=p((Wv,kQ)=>{"use strict";var rS=f("node:assert"),{AsyncResource:nS}=f("node:async_hooks"),{InvalidArgumentError:yc,SocketError:sS}=O(),yQ=Y(),{addSignal:oS,removeSignal:wQ}=bn(),wc=class extends nS{constructor(t,A){if(!t||typeof t!="object")throw new yc("invalid opts");if(typeof A!="function")throw new yc("invalid callback");let{signal:r,opaque:n,responseHeaders:s}=t;if(r&&typeof r.on!="function"&&typeof r.addEventListener!="function")throw new yc("signal must be an EventEmitter or EventTarget");super("UNDICI_CONNECT"),this.opaque=n||null,this.responseHeaders=s||null,this.callback=A,this.abort=null,oS(this,r)}onConnect(t,A){if(this.reason){t(this.reason);return}rS(this.callback),this.abort=t,this.context=A}onHeaders(){throw new sS("bad connect",null)}onUpgrade(t,A,r){let{callback:n,opaque:s,context:o}=this;wQ(this),this.callback=null;let i=A;i!=null&&(i=this.responseHeaders==="raw"?yQ.parseRawHeaders(A):yQ.parseHeaders(A)),this.runInAsyncScope(n,null,null,{statusCode:t,headers:i,socket:r,opaque:s,context:o})}onError(t){let{callback:A,opaque:r}=this;wQ(this),A&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(A,null,t,{opaque:r})}))}};function bQ(e,t){if(t===void 0)return new Promise((A,r)=>{bQ.call(this,e,(n,s)=>n?r(n):A(s))});try{let A=new wc(e,t);this.dispatch({...e,method:"CONNECT"},A)}catch(A){if(typeof t!="function")throw A;let r=e?.opaque;queueMicrotask(()=>t(A,{opaque:r}))}}kQ.exports=bQ});var SQ=p((_v,Br)=>{"use strict";Br.exports.request=sQ();Br.exports.stream=gQ();Br.exports.pipeline=QQ();Br.exports.upgrade=mQ();Br.exports.connect=DQ()});var kc=p((zv,NQ)=>{"use strict";var{UndiciError:iS}=O(),RQ=Symbol.for("undici.error.UND_MOCK_ERR_MOCK_NOT_MATCHED"),bc=class e extends iS{constructor(t){super(t),Error.captureStackTrace(this,e),this.name="MockNotMatchedError",this.message=t||"The request does not match any registered mock dispatches",this.code="UND_MOCK_ERR_MOCK_NOT_MATCHED"}static[Symbol.hasInstance](t){return t&&t[RQ]===!0}[RQ]=!0};NQ.exports={MockNotMatchedError:bc}});var Cr=p((Kv,FQ)=>{"use strict";FQ.exports={kAgent:Symbol("agent"),kOptions:Symbol("options"),kFactory:Symbol("factory"),kDispatches:Symbol("dispatches"),kDispatchKey:Symbol("dispatch key"),kDefaultHeaders:Symbol("default headers"),kDefaultTrailers:Symbol("default trailers"),kContentLength:Symbol("content length"),kMockAgent:Symbol("mock agent"),kMockAgentSet:Symbol("mock agent set"),kMockAgentGet:Symbol("mock agent get"),kMockDispatch:Symbol("mock dispatch"),kClose:Symbol("close"),kOriginalClose:Symbol("original agent close"),kOrigin:Symbol("origin"),kIsMockActive:Symbol("is mock active"),kNetConnect:Symbol("net connect"),kGetNetConnect:Symbol("get net connect"),kConnected:Symbol("connected")}});var Dn=p((Zv,VQ)=>{"use strict";var{MockNotMatchedError:bA}=kc(),{kDispatches:Xs,kMockAgent:aS,kOriginalDispatch:cS,kOrigin:lS,kGetNetConnect:uS}=Cr(),{buildURL:gS}=Y(),{STATUS_CODES:ES}=f("node:http"),{types:{isPromise:dS}}=f("node:util");function Mt(e,t){return typeof e=="string"?e===t:e instanceof RegExp?e.test(t):typeof e=="function"?e(t)===!0:!1}function MQ(e){return Object.fromEntries(Object.entries(e).map(([t,A])=>[t.toLocaleLowerCase(),A]))}function LQ(e,t){if(Array.isArray(e)){for(let A=0;A<e.length;A+=2)if(e[A].toLocaleLowerCase()===t.toLocaleLowerCase())return e[A+1];return}else return typeof e.get=="function"?e.get(t):MQ(e)[t.toLocaleLowerCase()]}function Rc(e){let t=e.slice(),A=[];for(let r=0;r<t.length;r+=2)A.push([t[r],t[r+1]]);return Object.fromEntries(A)}function xQ(e,t){if(typeof e.headers=="function")return Array.isArray(t)&&(t=Rc(t)),e.headers(t?MQ(t):{});if(typeof e.headers>"u")return!0;if(typeof t!="object"||typeof e.headers!="object")return!1;for(let[A,r]of Object.entries(e.headers)){let n=LQ(t,A);if(!Mt(r,n))return!1}return!0}function UQ(e){if(typeof e!="string")return e;let t=e.split("?");if(t.length!==2)return e;let A=new URLSearchParams(t.pop());return A.sort(),[...t,A.toString()].join("?")}function hS(e,{path:t,method:A,body:r,headers:n}){let s=Mt(e.path,t),o=Mt(e.method,A),i=typeof e.body<"u"?Mt(e.body,r):!0,a=xQ(e,n);return s&&o&&i&&a}function TQ(e){return Buffer.isBuffer(e)||e instanceof Uint8Array||e instanceof ArrayBuffer?e:typeof e=="object"?JSON.stringify(e):e.toString()}function vQ(e,t){let A=t.query?gS(t.path,t.query):t.path,r=typeof A=="string"?UQ(A):A,n=e.filter(({consumed:s})=>!s).filter(({path:s})=>Mt(UQ(s),r));if(n.length===0)throw new bA(`Mock dispatch not matched for path '${r}'`);if(n=n.filter(({method:s})=>Mt(s,t.method)),n.length===0)throw new bA(`Mock dispatch not matched for method '${t.method}' on path '${r}'`);if(n=n.filter(({body:s})=>typeof s<"u"?Mt(s,t.body):!0),n.length===0)throw new bA(`Mock dispatch not matched for body '${t.body}' on path '${r}'`);if(n=n.filter(s=>xQ(s,t.headers)),n.length===0){let s=typeof t.headers=="object"?JSON.stringify(t.headers):t.headers;throw new bA(`Mock dispatch not matched for headers '${s}' on path '${r}'`)}return n[0]}function QS(e,t,A){let r={timesInvoked:0,times:1,persist:!1,consumed:!1},n=typeof A=="function"?{callback:A}:{...A},s={...r,...t,pending:!0,data:{error:null,...n}};return e.push(s),s}function Dc(e,t){let A=e.findIndex(r=>r.consumed?hS(r,t):!1);A!==-1&&e.splice(A,1)}function GQ(e){let{path:t,method:A,body:r,headers:n,query:s}=e;return{path:t,method:A,body:r,headers:n,query:s}}function Sc(e){let t=Object.keys(e),A=[];for(let r=0;r<t.length;++r){let n=t[r],s=e[n],o=Buffer.from(`${n}`);if(Array.isArray(s))for(let i=0;i<s.length;++i)A.push(o,Buffer.from(`${s[i]}`));else A.push(o,Buffer.from(`${s}`))}return A}function YQ(e){return ES[e]||"unknown"}async function IS(e){let t=[];for await(let A of e)t.push(A);return Buffer.concat(t).toString("utf8")}function HQ(e,t){let A=GQ(e),r=vQ(this[Xs],A);r.timesInvoked++,r.data.callback&&(r.data={...r.data,...r.data.callback(e)});let{data:{statusCode:n,data:s,headers:o,trailers:i,error:a},delay:l,persist:c}=r,{timesInvoked:u,times:g}=r;if(r.consumed=!c&&u>=g,r.pending=u<g,a!==null)return Dc(this[Xs],A),t.onError(a),!0;typeof l=="number"&&l>0?setTimeout(()=>{E(this[Xs])},l):E(this[Xs]);function E(Q,I=s){let d=Array.isArray(e.headers)?Rc(e.headers):e.headers,C=typeof I=="function"?I({...e,headers:d}):I;if(dS(C)){C.then(G=>E(Q,G));return}let w=TQ(C),B=Sc(o),k=Sc(i);t.onConnect?.(G=>t.onError(G),null),t.onHeaders?.(n,B,h,YQ(n)),t.onData?.(Buffer.from(w)),t.onComplete?.(k),Dc(Q,A)}function h(){}return!0}function BS(){let e=this[aS],t=this[lS],A=this[cS];return function(n,s){if(e.isMockActive)try{HQ.call(this,n,s)}catch(o){if(o instanceof bA){let i=e[uS]();if(i===!1)throw new bA(`${o.message}: subsequent request to origin ${t} was not allowed (net.connect disabled)`);if(JQ(i,t))A.call(this,n,s);else throw new bA(`${o.message}: subsequent request to origin ${t} was not allowed (net.connect is not enabled for this origin)`)}else throw o}else A.call(this,n,s)}}function JQ(e,t){let A=new URL(t);return e===!0?!0:!!(Array.isArray(e)&&e.some(r=>Mt(r,A.host)))}function CS(e){if(e){let{agent:t,...A}=e;return A}}VQ.exports={getResponseData:TQ,getMockDispatch:vQ,addMockDispatch:QS,deleteMockDispatch:Dc,buildKey:GQ,generateKeyValues:Sc,matchValue:Mt,getResponse:IS,getStatusText:YQ,mockDispatch:HQ,buildMockDispatch:BS,checkNetConnect:JQ,buildMockOptions:CS,getHeaderByName:LQ,buildHeadersFromArray:Rc}});var Tc=p(($v,xc)=>{"use strict";var{getResponseData:fS,buildKey:pS,addMockDispatch:Nc}=Dn(),{kDispatches:js,kDispatchKey:eo,kDefaultHeaders:Fc,kDefaultTrailers:Uc,kContentLength:Mc,kMockDispatch:to}=Cr(),{InvalidArgumentError:pt}=O(),{buildURL:mS}=Y(),fr=class{constructor(t){this[to]=t}delay(t){if(typeof t!="number"||!Number.isInteger(t)||t<=0)throw new pt("waitInMs must be a valid integer > 0");return this[to].delay=t,this}persist(){return this[to].persist=!0,this}times(t){if(typeof t!="number"||!Number.isInteger(t)||t<=0)throw new pt("repeatTimes must be a valid integer > 0");return this[to].times=t,this}},Lc=class{constructor(t,A){if(typeof t!="object")throw new pt("opts must be an object");if(typeof t.path>"u")throw new pt("opts.path must be defined");if(typeof t.method>"u"&&(t.method="GET"),typeof t.path=="string")if(t.query)t.path=mS(t.path,t.query);else{let r=new URL(t.path,"data://");t.path=r.pathname+r.search}typeof t.method=="string"&&(t.method=t.method.toUpperCase()),this[eo]=pS(t),this[js]=A,this[Fc]={},this[Uc]={},this[Mc]=!1}createMockScopeDispatchData({statusCode:t,data:A,responseOptions:r}){let n=fS(A),s=this[Mc]?{"content-length":n.length}:{},o={...this[Fc],...s,...r.headers},i={...this[Uc],...r.trailers};return{statusCode:t,data:A,headers:o,trailers:i}}validateReplyParameters(t){if(typeof t.statusCode>"u")throw new pt("statusCode must be defined");if(typeof t.responseOptions!="object"||t.responseOptions===null)throw new pt("responseOptions must be an object")}reply(t){if(typeof t=="function"){let s=i=>{let a=t(i);if(typeof a!="object"||a===null)throw new pt("reply options callback must return an object");let l={data:"",responseOptions:{},...a};return this.validateReplyParameters(l),{...this.createMockScopeDispatchData(l)}},o=Nc(this[js],this[eo],s);return new fr(o)}let A={statusCode:t,data:arguments[1]===void 0?"":arguments[1],responseOptions:arguments[2]===void 0?{}:arguments[2]};this.validateReplyParameters(A);let r=this.createMockScopeDispatchData(A),n=Nc(this[js],this[eo],r);return new fr(n)}replyWithError(t){if(typeof t>"u")throw new pt("error must be defined");let A=Nc(this[js],this[eo],{error:t});return new fr(A)}defaultReplyHeaders(t){if(typeof t>"u")throw new pt("headers must be defined");return this[Fc]=t,this}defaultReplyTrailers(t){if(typeof t>"u")throw new pt("trailers must be defined");return this[Uc]=t,this}replyContentLength(){return this[Mc]=!0,this}};xc.exports.MockInterceptor=Lc;xc.exports.MockScope=fr});var Yc=p((Xv,KQ)=>{"use strict";var{promisify:yS}=f("node:util"),wS=ar(),{buildMockDispatch:bS}=Dn(),{kDispatches:qQ,kMockAgent:PQ,kClose:OQ,kOriginalClose:WQ,kOrigin:_Q,kOriginalDispatch:kS,kConnected:vc}=Cr(),{MockInterceptor:DS}=Tc(),zQ=ee(),{InvalidArgumentError:SS}=O(),Gc=class extends wS{constructor(t,A){if(super(t,A),!A||!A.agent||typeof A.agent.dispatch!="function")throw new SS("Argument opts.agent must implement Agent");this[PQ]=A.agent,this[_Q]=t,this[qQ]=[],this[vc]=1,this[kS]=this.dispatch,this[WQ]=this.close.bind(this),this.dispatch=bS.call(this),this.close=this[OQ]}get[zQ.kConnected](){return this[vc]}intercept(t){return new DS(t,this[qQ])}async[OQ](){await yS(this[WQ])(),this[vc]=0,this[PQ][zQ.kClients].delete(this[_Q])}};KQ.exports=Gc});var Vc=p((jv,AI)=>{"use strict";var{promisify:RS}=f("node:util"),NS=cr(),{buildMockDispatch:FS}=Dn(),{kDispatches:ZQ,kMockAgent:$Q,kClose:XQ,kOriginalClose:jQ,kOrigin:eI,kOriginalDispatch:US,kConnected:Hc}=Cr(),{MockInterceptor:MS}=Tc(),tI=ee(),{InvalidArgumentError:LS}=O(),Jc=class extends NS{constructor(t,A){if(super(t,A),!A||!A.agent||typeof A.agent.dispatch!="function")throw new LS("Argument opts.agent must implement Agent");this[$Q]=A.agent,this[eI]=t,this[ZQ]=[],this[Hc]=1,this[US]=this.dispatch,this[jQ]=this.close.bind(this),this.dispatch=FS.call(this),this.close=this[XQ]}get[tI.kConnected](){return this[Hc]}intercept(t){return new MS(t,this[ZQ])}async[XQ](){await RS(this[jQ])(),this[Hc]=0,this[$Q][tI.kClients].delete(this[eI])}};AI.exports=Jc});var nI=p((t2,rI)=>{"use strict";var xS={pronoun:"it",is:"is",was:"was",this:"this"},TS={pronoun:"they",is:"are",was:"were",this:"these"};rI.exports=class{constructor(t,A){this.singular=t,this.plural=A}pluralize(t){let A=t===1,r=A?xS:TS,n=A?this.singular:this.plural;return{...r,count:t,noun:n}}}});var oI=p((r2,sI)=>{"use strict";var{Transform:vS}=f("node:stream"),{Console:GS}=f("node:console"),YS=process.versions.icu?"\u2705":"Y ",HS=process.versions.icu?"\u274C":"N ";sI.exports=class{constructor({disableColors:t}={}){this.transform=new vS({transform(A,r,n){n(null,A)}}),this.logger=new GS({stdout:this.transform,inspectOptions:{colors:!t&&!process.env.CI}})}format(t){let A=t.map(({method:r,path:n,data:{statusCode:s},persist:o,times:i,timesInvoked:a,origin:l})=>({Method:r,Origin:l,Path:n,"Status code":s,Persistent:o?YS:HS,Invocations:a,Remaining:o?1/0:i-a}));return this.logger.table(A),this.transform.read().toString()}}});var lI=p((n2,cI)=>{"use strict";var{kClients:kA}=ee(),JS=lr(),{kAgent:qc,kMockAgentSet:Ao,kMockAgentGet:iI,kDispatches:Pc,kIsMockActive:ro,kNetConnect:DA,kGetNetConnect:VS,kOptions:no,kFactory:so}=Cr(),qS=Yc(),PS=Vc(),{matchValue:OS,buildMockOptions:WS}=Dn(),{InvalidArgumentError:aI,UndiciError:_S}=O(),zS=Zr(),KS=nI(),ZS=oI(),Oc=class extends zS{constructor(t){if(super(t),this[DA]=!0,this[ro]=!0,t?.agent&&typeof t.agent.dispatch!="function")throw new aI("Argument opts.agent must implement Agent");let A=t?.agent?t.agent:new JS(t);this[qc]=A,this[kA]=A[kA],this[no]=WS(t)}get(t){let A=this[iI](t);return A||(A=this[so](t),this[Ao](t,A)),A}dispatch(t,A){return this.get(t.origin),this[qc].dispatch(t,A)}async close(){await this[qc].close(),this[kA].clear()}deactivate(){this[ro]=!1}activate(){this[ro]=!0}enableNetConnect(t){if(typeof t=="string"||typeof t=="function"||t instanceof RegExp)Array.isArray(this[DA])?this[DA].push(t):this[DA]=[t];else if(typeof t>"u")this[DA]=!0;else throw new aI("Unsupported matcher. Must be one of String|Function|RegExp.")}disableNetConnect(){this[DA]=!1}get isMockActive(){return this[ro]}[Ao](t,A){this[kA].set(t,A)}[so](t){let A=Object.assign({agent:this},this[no]);return this[no]&&this[no].connections===1?new qS(t,A):new PS(t,A)}[iI](t){let A=this[kA].get(t);if(A)return A;if(typeof t!="string"){let r=this[so]("http://localhost:9999");return this[Ao](t,r),r}for(let[r,n]of Array.from(this[kA]))if(n&&typeof r!="string"&&OS(r,t)){let s=this[so](t);return this[Ao](t,s),s[Pc]=n[Pc],s}}[VS](){return this[DA]}pendingInterceptors(){let t=this[kA];return Array.from(t.entries()).flatMap(([A,r])=>r[Pc].map(n=>({...n,origin:A}))).filter(({pending:A})=>A)}assertNoPendingInterceptors({pendingInterceptorsFormatter:t=new ZS}={}){let A=this.pendingInterceptors();if(A.length===0)return;let r=new KS("interceptor","interceptors").pluralize(A.length);throw new _S(`
|
|
42
|
-
${r.count} ${r.noun} ${r.is} pending:
|
|
43
|
-
|
|
44
|
-
${t.format(A)}
|
|
45
|
-
`.trim())}};cI.exports=Oc});var oo=p((s2,dI)=>{"use strict";var uI=Symbol.for("undici.globalDispatcher.1"),{InvalidArgumentError:$S}=O(),XS=lr();EI()===void 0&&gI(new XS);function gI(e){if(!e||typeof e.dispatch!="function")throw new $S("Argument agent must implement Agent");Object.defineProperty(globalThis,uI,{value:e,writable:!0,enumerable:!1,configurable:!1})}function EI(){return globalThis[uI]}dI.exports={setGlobalDispatcher:gI,getGlobalDispatcher:EI}});var io=p((i2,hI)=>{"use strict";hI.exports=class{#e;constructor(t){if(typeof t!="object"||t===null)throw new TypeError("handler must be an object");this.#e=t}onConnect(...t){return this.#e.onConnect?.(...t)}onError(...t){return this.#e.onError?.(...t)}onUpgrade(...t){return this.#e.onUpgrade?.(...t)}onResponseStarted(...t){return this.#e.onResponseStarted?.(...t)}onHeaders(...t){return this.#e.onHeaders?.(...t)}onData(...t){return this.#e.onData?.(...t)}onComplete(...t){return this.#e.onComplete?.(...t)}onBodySent(...t){return this.#e.onBodySent?.(...t)}}});var II=p((a2,QI)=>{"use strict";var jS=Ys();QI.exports=e=>{let t=e?.maxRedirections;return A=>function(n,s){let{maxRedirections:o=t,...i}=n;if(!o)return A(n,s);let a=new jS(A,o,n,s);return A(i,a)}}});var CI=p((c2,BI)=>{"use strict";var eR=Zs();BI.exports=e=>t=>function(r,n){return t(r,new eR({...r,retryOptions:{...e,...r.retryOptions}},{handler:n,dispatch:t}))}});var pI=p((l2,fI)=>{"use strict";var tR=Y(),{InvalidArgumentError:AR,RequestAbortedError:rR}=O(),nR=io(),Wc=class extends nR{#e=1024*1024;#t=null;#A=!1;#s=!1;#n=0;#r=null;#o=null;constructor({maxSize:t},A){if(super(A),t!=null&&(!Number.isFinite(t)||t<1))throw new AR("maxSize must be a number greater than 0");this.#e=t??this.#e,this.#o=A}onConnect(t){this.#t=t,this.#o.onConnect(this.#i.bind(this))}#i(t){this.#s=!0,this.#r=t}onHeaders(t,A,r,n){let o=tR.parseHeaders(A)["content-length"];if(o!=null&&o>this.#e)throw new rR(`Response size (${o}) larger than maxSize (${this.#e})`);return this.#s?!0:this.#o.onHeaders(t,A,r,n)}onError(t){this.#A||(t=this.#r??t,this.#o.onError(t))}onData(t){return this.#n=this.#n+t.length,this.#n>=this.#e&&(this.#A=!0,this.#s?this.#o.onError(this.#r):this.#o.onComplete([])),!0}onComplete(t){if(!this.#A){if(this.#s){this.#o.onError(this.reason);return}this.#o.onComplete(t)}}};function sR({maxSize:e}={maxSize:1024*1024}){return t=>function(r,n){let{dumpMaxSize:s=e}=r,o=new Wc({maxSize:s},n);return t(r,o)}}fI.exports=sR});var wI=p((u2,yI)=>{"use strict";var{isIP:oR}=f("node:net"),{lookup:iR}=f("node:dns"),aR=io(),{InvalidArgumentError:pr,InformationalError:cR}=O(),mI=Math.pow(2,31)-1,_c=class{#e=0;#t=0;#A=new Map;dualStack=!0;affinity=null;lookup=null;pick=null;constructor(t){this.#e=t.maxTTL,this.#t=t.maxItems,this.dualStack=t.dualStack,this.affinity=t.affinity,this.lookup=t.lookup??this.#s,this.pick=t.pick??this.#n}get full(){return this.#A.size===this.#t}runLookup(t,A,r){let n=this.#A.get(t.hostname);if(n==null&&this.full){r(null,t.origin);return}let s={affinity:this.affinity,dualStack:this.dualStack,lookup:this.lookup,pick:this.pick,...A.dns,maxTTL:this.#e,maxItems:this.#t};if(n==null)this.lookup(t,s,(o,i)=>{if(o||i==null||i.length===0){r(o??new cR("No DNS entries found"));return}this.setRecords(t,i);let a=this.#A.get(t.hostname),l=this.pick(t,a,s.affinity),c;typeof l.port=="number"?c=`:${l.port}`:t.port!==""?c=`:${t.port}`:c="",r(null,`${t.protocol}//${l.family===6?`[${l.address}]`:l.address}${c}`)});else{let o=this.pick(t,n,s.affinity);if(o==null){this.#A.delete(t.hostname),this.runLookup(t,A,r);return}let i;typeof o.port=="number"?i=`:${o.port}`:t.port!==""?i=`:${t.port}`:i="",r(null,`${t.protocol}//${o.family===6?`[${o.address}]`:o.address}${i}`)}}#s(t,A,r){iR(t.hostname,{all:!0,family:this.dualStack===!1?this.affinity:0,order:"ipv4first"},(n,s)=>{if(n)return r(n);let o=new Map;for(let i of s)o.set(`${i.address}:${i.family}`,i);r(null,o.values())})}#n(t,A,r){let n=null,{records:s,offset:o}=A,i;if(this.dualStack?(r==null&&(o==null||o===mI?(A.offset=0,r=4):(A.offset++,r=(A.offset&1)===1?6:4)),s[r]!=null&&s[r].ips.length>0?i=s[r]:i=s[r===4?6:4]):i=s[r],i==null||i.ips.length===0)return n;i.offset==null||i.offset===mI?i.offset=0:i.offset++;let a=i.offset%i.ips.length;return n=i.ips[a]??null,n==null?n:Date.now()-n.timestamp>n.ttl?(i.ips.splice(a,1),this.pick(t,A,r)):n}setRecords(t,A){let r=Date.now(),n={records:{4:null,6:null}};for(let s of A){s.timestamp=r,typeof s.ttl=="number"?s.ttl=Math.min(s.ttl,this.#e):s.ttl=this.#e;let o=n.records[s.family]??{ips:[]};o.ips.push(s),n.records[s.family]=o}this.#A.set(t.hostname,n)}getHandler(t,A){return new zc(this,t,A)}},zc=class extends aR{#e=null;#t=null;#A=null;#s=null;#n=null;constructor(t,{origin:A,handler:r,dispatch:n},s){super(r),this.#n=A,this.#s=r,this.#t={...s},this.#e=t,this.#A=n}onError(t){switch(t.code){case"ETIMEDOUT":case"ECONNREFUSED":{if(this.#e.dualStack){this.#e.runLookup(this.#n,this.#t,(A,r)=>{if(A)return this.#s.onError(A);let n={...this.#t,origin:r};this.#A(n,this)});return}this.#s.onError(t);return}case"ENOTFOUND":this.#e.deleteRecord(this.#n);default:this.#s.onError(t);break}}};yI.exports=e=>{if(e?.maxTTL!=null&&(typeof e?.maxTTL!="number"||e?.maxTTL<0))throw new pr("Invalid maxTTL. Must be a positive number");if(e?.maxItems!=null&&(typeof e?.maxItems!="number"||e?.maxItems<1))throw new pr("Invalid maxItems. Must be a positive number and greater than zero");if(e?.affinity!=null&&e?.affinity!==4&&e?.affinity!==6)throw new pr("Invalid affinity. Must be either 4 or 6");if(e?.dualStack!=null&&typeof e?.dualStack!="boolean")throw new pr("Invalid dualStack. Must be a boolean");if(e?.lookup!=null&&typeof e?.lookup!="function")throw new pr("Invalid lookup. Must be a function");if(e?.pick!=null&&typeof e?.pick!="function")throw new pr("Invalid pick. Must be a function");let t=e?.dualStack??!0,A;t?A=e?.affinity??null:A=e?.affinity??4;let r={maxTTL:e?.maxTTL??1e4,lookup:e?.lookup??null,pick:e?.pick??null,dualStack:t,affinity:A,maxItems:e?.maxItems??1/0},n=new _c(r);return s=>function(i,a){let l=i.origin.constructor===URL?i.origin:new URL(i.origin);return oR(l.hostname)!==0?s(i,a):(n.runLookup(l,i,(c,u)=>{if(c)return a.onError(c);let g=null;g={...i,servername:l.hostname,origin:u,headers:{host:l.hostname,...i.headers}},s(g,n.getHandler({origin:l,dispatch:s,handler:a},i))}),!0)}}});var SA=p((g2,FI)=>{"use strict";var{kConstruct:lR}=ee(),{kEnumerableProperty:mr}=Y(),{iteratorMixin:uR,isValidHeaderName:Sn,isValidHeaderValue:kI}=Te(),{webidl:V}=de(),Kc=f("node:assert"),ao=f("node:util"),ce=Symbol("headers map"),He=Symbol("headers map sorted");function bI(e){return e===10||e===13||e===9||e===32}function DI(e){let t=0,A=e.length;for(;A>t&&bI(e.charCodeAt(A-1));)--A;for(;A>t&&bI(e.charCodeAt(t));)++t;return t===0&&A===e.length?e:e.substring(t,A)}function SI(e,t){if(Array.isArray(t))for(let A=0;A<t.length;++A){let r=t[A];if(r.length!==2)throw V.errors.exception({header:"Headers constructor",message:`expected name/value pair to be length 2, found ${r.length}.`});Zc(e,r[0],r[1])}else if(typeof t=="object"&&t!==null){let A=Object.keys(t);for(let r=0;r<A.length;++r)Zc(e,A[r],t[A[r]])}else throw V.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence<sequence<ByteString>>","record<ByteString, ByteString>"]})}function Zc(e,t,A){if(A=DI(A),Sn(t)){if(!kI(A))throw V.errors.invalidArgument({prefix:"Headers.append",value:A,type:"header value"})}else throw V.errors.invalidArgument({prefix:"Headers.append",value:t,type:"header name"});if(NI(e)==="immutable")throw new TypeError("immutable");return $c(e).append(t,A,!1)}function RI(e,t){return e[0]<t[0]?-1:1}var co=class e{cookies=null;constructor(t){t instanceof e?(this[ce]=new Map(t[ce]),this[He]=t[He],this.cookies=t.cookies===null?null:[...t.cookies]):(this[ce]=new Map(t),this[He]=null)}contains(t,A){return this[ce].has(A?t:t.toLowerCase())}clear(){this[ce].clear(),this[He]=null,this.cookies=null}append(t,A,r){this[He]=null;let n=r?t:t.toLowerCase(),s=this[ce].get(n);if(s){let o=n==="cookie"?"; ":", ";this[ce].set(n,{name:s.name,value:`${s.value}${o}${A}`})}else this[ce].set(n,{name:t,value:A});n==="set-cookie"&&(this.cookies??=[]).push(A)}set(t,A,r){this[He]=null;let n=r?t:t.toLowerCase();n==="set-cookie"&&(this.cookies=[A]),this[ce].set(n,{name:t,value:A})}delete(t,A){this[He]=null,A||(t=t.toLowerCase()),t==="set-cookie"&&(this.cookies=null),this[ce].delete(t)}get(t,A){return this[ce].get(A?t:t.toLowerCase())?.value??null}*[Symbol.iterator](){for(let{0:t,1:{value:A}}of this[ce])yield[t,A]}get entries(){let t={};if(this[ce].size!==0)for(let{name:A,value:r}of this[ce].values())t[A]=r;return t}rawValues(){return this[ce].values()}get entriesList(){let t=[];if(this[ce].size!==0)for(let{0:A,1:{name:r,value:n}}of this[ce])if(A==="set-cookie")for(let s of this.cookies)t.push([r,s]);else t.push([r,n]);return t}toSortedArray(){let t=this[ce].size,A=new Array(t);if(t<=32){if(t===0)return A;let r=this[ce][Symbol.iterator](),n=r.next().value;A[0]=[n[0],n[1].value],Kc(n[1].value!==null);for(let s=1,o=0,i=0,a=0,l=0,c,u;s<t;++s){for(u=r.next().value,c=A[s]=[u[0],u[1].value],Kc(c[1]!==null),a=0,i=s;a<i;)l=a+(i-a>>1),A[l][0]<=c[0]?a=l+1:i=l;if(s!==l){for(o=s;o>a;)A[o]=A[--o];A[a]=c}}if(!r.next().done)throw new TypeError("Unreachable");return A}else{let r=0;for(let{0:n,1:{value:s}}of this[ce])A[r++]=[n,s],Kc(s!==null);return A.sort(RI)}}},at=class e{#e;#t;constructor(t=void 0){V.util.markAsUncloneable(this),t!==lR&&(this.#t=new co,this.#e="none",t!==void 0&&(t=V.converters.HeadersInit(t,"Headers contructor","init"),SI(this,t)))}append(t,A){V.brandCheck(this,e),V.argumentLengthCheck(arguments,2,"Headers.append");let r="Headers.append";return t=V.converters.ByteString(t,r,"name"),A=V.converters.ByteString(A,r,"value"),Zc(this,t,A)}delete(t){if(V.brandCheck(this,e),V.argumentLengthCheck(arguments,1,"Headers.delete"),t=V.converters.ByteString(t,"Headers.delete","name"),!Sn(t))throw V.errors.invalidArgument({prefix:"Headers.delete",value:t,type:"header name"});if(this.#e==="immutable")throw new TypeError("immutable");this.#t.contains(t,!1)&&this.#t.delete(t,!1)}get(t){V.brandCheck(this,e),V.argumentLengthCheck(arguments,1,"Headers.get");let A="Headers.get";if(t=V.converters.ByteString(t,A,"name"),!Sn(t))throw V.errors.invalidArgument({prefix:A,value:t,type:"header name"});return this.#t.get(t,!1)}has(t){V.brandCheck(this,e),V.argumentLengthCheck(arguments,1,"Headers.has");let A="Headers.has";if(t=V.converters.ByteString(t,A,"name"),!Sn(t))throw V.errors.invalidArgument({prefix:A,value:t,type:"header name"});return this.#t.contains(t,!1)}set(t,A){V.brandCheck(this,e),V.argumentLengthCheck(arguments,2,"Headers.set");let r="Headers.set";if(t=V.converters.ByteString(t,r,"name"),A=V.converters.ByteString(A,r,"value"),A=DI(A),Sn(t)){if(!kI(A))throw V.errors.invalidArgument({prefix:r,value:A,type:"header value"})}else throw V.errors.invalidArgument({prefix:r,value:t,type:"header name"});if(this.#e==="immutable")throw new TypeError("immutable");this.#t.set(t,A,!1)}getSetCookie(){V.brandCheck(this,e);let t=this.#t.cookies;return t?[...t]:[]}get[He](){if(this.#t[He])return this.#t[He];let t=[],A=this.#t.toSortedArray(),r=this.#t.cookies;if(r===null||r.length===1)return this.#t[He]=A;for(let n=0;n<A.length;++n){let{0:s,1:o}=A[n];if(s==="set-cookie")for(let i=0;i<r.length;++i)t.push([s,r[i]]);else t.push([s,o])}return this.#t[He]=t}[ao.inspect.custom](t,A){return A.depth??=t,`Headers ${ao.formatWithOptions(A,this.#t.entries)}`}static getHeadersGuard(t){return t.#e}static setHeadersGuard(t,A){t.#e=A}static getHeadersList(t){return t.#t}static setHeadersList(t,A){t.#t=A}},{getHeadersGuard:NI,setHeadersGuard:gR,getHeadersList:$c,setHeadersList:ER}=at;Reflect.deleteProperty(at,"getHeadersGuard");Reflect.deleteProperty(at,"setHeadersGuard");Reflect.deleteProperty(at,"getHeadersList");Reflect.deleteProperty(at,"setHeadersList");uR("Headers",at,He,0,1);Object.defineProperties(at.prototype,{append:mr,delete:mr,get:mr,has:mr,set:mr,getSetCookie:mr,[Symbol.toStringTag]:{value:"Headers",configurable:!0},[ao.inspect.custom]:{enumerable:!1}});V.converters.HeadersInit=function(e,t,A){if(V.util.Type(e)==="Object"){let r=Reflect.get(e,Symbol.iterator);if(!ao.types.isProxy(e)&&r===at.prototype.entries)try{return $c(e).entriesList}catch{}return typeof r=="function"?V.converters["sequence<sequence<ByteString>>"](e,t,A,r.bind(e)):V.converters["record<ByteString, ByteString>"](e,t,A)}throw V.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence<sequence<ByteString>>","record<ByteString, ByteString>"]})};FI.exports={fill:SI,compareHeaderName:RI,Headers:at,HeadersList:co,getHeadersGuard:NI,setHeadersGuard:gR,setHeadersList:ER,getHeadersList:$c}});var Nn=p((E2,qI)=>{"use strict";var{Headers:vI,HeadersList:UI,fill:dR,getHeadersGuard:hR,setHeadersGuard:GI,setHeadersList:YI}=SA(),{extractBody:MI,cloneBody:QR,mixinBody:IR,hasFinalizationRegistry:HI,streamRegistry:JI,bodyUnusable:BR}=tr(),Xc=Y(),LI=f("node:util"),{kEnumerableProperty:Je}=Xc,{isValidReasonPhrase:CR,isCancelled:fR,isAborted:pR,isBlobLike:mR,serializeJavascriptValueToJSONString:yR,isErrorLike:wR,isomorphicEncode:bR,environmentSettingsObject:kR}=Te(),{redirectStatusSet:DR,nullBodyStatus:SR}=jr(),{kState:Ae,kHeaders:Lt}=Vt(),{webidl:v}=de(),{FormData:RR}=sn(),{URLSerializer:xI}=ke(),{kConstruct:uo}=ee(),jc=f("node:assert"),{types:NR}=f("node:util"),FR=new TextEncoder("utf-8"),RA=class e{static error(){return Rn(go(),"immutable")}static json(t,A={}){v.argumentLengthCheck(arguments,1,"Response.json"),A!==null&&(A=v.converters.ResponseInit(A));let r=FR.encode(yR(t)),n=MI(r),s=Rn(yr({}),"response");return TI(s,A,{body:n[0],type:"application/json"}),s}static redirect(t,A=302){v.argumentLengthCheck(arguments,1,"Response.redirect"),t=v.converters.USVString(t),A=v.converters["unsigned short"](A);let r;try{r=new URL(t,kR.settingsObject.baseUrl)}catch(o){throw new TypeError(`Failed to parse URL from ${t}`,{cause:o})}if(!DR.has(A))throw new RangeError(`Invalid status code ${A}`);let n=Rn(yr({}),"immutable");n[Ae].status=A;let s=bR(xI(r));return n[Ae].headersList.append("location",s,!0),n}constructor(t=null,A={}){if(v.util.markAsUncloneable(this),t===uo)return;t!==null&&(t=v.converters.BodyInit(t)),A=v.converters.ResponseInit(A),this[Ae]=yr({}),this[Lt]=new vI(uo),GI(this[Lt],"response"),YI(this[Lt],this[Ae].headersList);let r=null;if(t!=null){let[n,s]=MI(t);r={body:n,type:s}}TI(this,A,r)}get type(){return v.brandCheck(this,e),this[Ae].type}get url(){v.brandCheck(this,e);let t=this[Ae].urlList,A=t[t.length-1]??null;return A===null?"":xI(A,!0)}get redirected(){return v.brandCheck(this,e),this[Ae].urlList.length>1}get status(){return v.brandCheck(this,e),this[Ae].status}get ok(){return v.brandCheck(this,e),this[Ae].status>=200&&this[Ae].status<=299}get statusText(){return v.brandCheck(this,e),this[Ae].statusText}get headers(){return v.brandCheck(this,e),this[Lt]}get body(){return v.brandCheck(this,e),this[Ae].body?this[Ae].body.stream:null}get bodyUsed(){return v.brandCheck(this,e),!!this[Ae].body&&Xc.isDisturbed(this[Ae].body.stream)}clone(){if(v.brandCheck(this,e),BR(this))throw v.errors.exception({header:"Response.clone",message:"Body has already been consumed."});let t=el(this[Ae]);return HI&&this[Ae].body?.stream&&JI.register(this,new WeakRef(this[Ae].body.stream)),Rn(t,hR(this[Lt]))}[LI.inspect.custom](t,A){A.depth===null&&(A.depth=2),A.colors??=!0;let r={status:this.status,statusText:this.statusText,headers:this.headers,body:this.body,bodyUsed:this.bodyUsed,ok:this.ok,redirected:this.redirected,type:this.type,url:this.url};return`Response ${LI.formatWithOptions(A,r)}`}};IR(RA);Object.defineProperties(RA.prototype,{type:Je,url:Je,status:Je,ok:Je,redirected:Je,statusText:Je,headers:Je,clone:Je,body:Je,bodyUsed:Je,[Symbol.toStringTag]:{value:"Response",configurable:!0}});Object.defineProperties(RA,{json:Je,redirect:Je,error:Je});function el(e){if(e.internalResponse)return VI(el(e.internalResponse),e.type);let t=yr({...e,body:null});return e.body!=null&&(t.body=QR(t,e.body)),t}function yr(e){return{aborted:!1,rangeRequested:!1,timingAllowPassed:!1,requestIncludesCredentials:!1,type:"default",status:200,timingInfo:null,cacheState:"",statusText:"",...e,headersList:e?.headersList?new UI(e?.headersList):new UI,urlList:e?.urlList?[...e.urlList]:[]}}function go(e){let t=wR(e);return yr({type:"error",status:0,error:t?e:new Error(e&&String(e)),aborted:e&&e.name==="AbortError"})}function UR(e){return e.type==="error"&&e.status===0}function lo(e,t){return t={internalResponse:e,...t},new Proxy(e,{get(A,r){return r in t?t[r]:A[r]},set(A,r,n){return jc(!(r in t)),A[r]=n,!0}})}function VI(e,t){if(t==="basic")return lo(e,{type:"basic",headersList:e.headersList});if(t==="cors")return lo(e,{type:"cors",headersList:e.headersList});if(t==="opaque")return lo(e,{type:"opaque",urlList:Object.freeze([]),status:0,statusText:"",body:null});if(t==="opaqueredirect")return lo(e,{type:"opaqueredirect",status:0,statusText:"",headersList:[],body:null});jc(!1)}function MR(e,t=null){return jc(fR(e)),pR(e)?go(Object.assign(new DOMException("The operation was aborted.","AbortError"),{cause:t})):go(Object.assign(new DOMException("Request was cancelled."),{cause:t}))}function TI(e,t,A){if(t.status!==null&&(t.status<200||t.status>599))throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.');if("statusText"in t&&t.statusText!=null&&!CR(String(t.statusText)))throw new TypeError("Invalid statusText");if("status"in t&&t.status!=null&&(e[Ae].status=t.status),"statusText"in t&&t.statusText!=null&&(e[Ae].statusText=t.statusText),"headers"in t&&t.headers!=null&&dR(e[Lt],t.headers),A){if(SR.includes(e.status))throw v.errors.exception({header:"Response constructor",message:`Invalid response status code ${e.status}`});e[Ae].body=A.body,A.type!=null&&!e[Ae].headersList.contains("content-type",!0)&&e[Ae].headersList.append("content-type",A.type,!0)}}function Rn(e,t){let A=new RA(uo);return A[Ae]=e,A[Lt]=new vI(uo),YI(A[Lt],e.headersList),GI(A[Lt],t),HI&&e.body?.stream&&JI.register(A,new WeakRef(e.body.stream)),A}v.converters.ReadableStream=v.interfaceConverter(ReadableStream);v.converters.FormData=v.interfaceConverter(RR);v.converters.URLSearchParams=v.interfaceConverter(URLSearchParams);v.converters.XMLHttpRequestBodyInit=function(e,t,A){return typeof e=="string"?v.converters.USVString(e,t,A):mR(e)?v.converters.Blob(e,t,A,{strict:!1}):ArrayBuffer.isView(e)||NR.isArrayBuffer(e)?v.converters.BufferSource(e,t,A):Xc.isFormDataLike(e)?v.converters.FormData(e,t,A,{strict:!1}):e instanceof URLSearchParams?v.converters.URLSearchParams(e,t,A):v.converters.DOMString(e,t,A)};v.converters.BodyInit=function(e,t,A){return e instanceof ReadableStream?v.converters.ReadableStream(e,t,A):e?.[Symbol.asyncIterator]?e:v.converters.XMLHttpRequestBodyInit(e,t,A)};v.converters.ResponseInit=v.dictionaryConverter([{key:"status",converter:v.converters["unsigned short"],defaultValue:()=>200},{key:"statusText",converter:v.converters.ByteString,defaultValue:()=>""},{key:"headers",converter:v.converters.HeadersInit}]);qI.exports={isNetworkError:UR,makeNetworkError:go,makeResponse:yr,makeAppropriateNetworkError:MR,filterResponse:VI,Response:RA,cloneResponse:el,fromInnerResponse:Rn}});var _I=p((d2,WI)=>{"use strict";var{kConnected:PI,kSize:OI}=ee(),tl=class{constructor(t){this.value=t}deref(){return this.value[PI]===0&&this.value[OI]===0?void 0:this.value}},Al=class{constructor(t){this.finalizer=t}register(t,A){t.on&&t.on("disconnect",()=>{t[PI]===0&&t[OI]===0&&this.finalizer(A)})}unregister(t){}};WI.exports=function(){return process.env.NODE_V8_COVERAGE&&process.version.startsWith("v18")?(process._rawDebug("Using compatibility WeakRef and FinalizationRegistry"),{WeakRef:tl,FinalizationRegistry:Al}):{WeakRef,FinalizationRegistry}}});var wr=p((h2,aB)=>{"use strict";var{extractBody:LR,mixinBody:xR,cloneBody:TR,bodyUnusable:zI}=tr(),{Headers:rB,fill:vR,HeadersList:Io,setHeadersGuard:nl,getHeadersGuard:GR,setHeadersList:nB,getHeadersList:KI}=SA(),{FinalizationRegistry:YR}=_I()(),ho=Y(),ZI=f("node:util"),{isValidHTTPToken:HR,sameOrigin:$I,environmentSettingsObject:Eo}=Te(),{forbiddenMethodsSet:JR,corsSafeListedMethodsSet:VR,referrerPolicy:qR,requestRedirect:PR,requestMode:OR,requestCredentials:WR,requestCache:_R,requestDuplex:zR}=jr(),{kEnumerableProperty:le,normalizedMethodRecordsBase:KR,normalizedMethodRecords:ZR}=ho,{kHeaders:Ve,kSignal:Qo,kState:j,kDispatcher:rl}=Vt(),{webidl:M}=de(),{URLSerializer:$R}=ke(),{kConstruct:Bo}=ee(),XR=f("node:assert"),{getMaxListeners:XI,setMaxListeners:jI,getEventListeners:jR,defaultMaxListeners:eB}=f("node:events"),eN=Symbol("abortController"),sB=new YR(({signal:e,abort:t})=>{e.removeEventListener("abort",t)}),Co=new WeakMap;function tB(e){return t;function t(){let A=e.deref();if(A!==void 0){sB.unregister(t),this.removeEventListener("abort",t),A.abort(this.reason);let r=Co.get(A.signal);if(r!==void 0){if(r.size!==0){for(let n of r){let s=n.deref();s!==void 0&&s.abort(this.reason)}r.clear()}Co.delete(A.signal)}}}}var AB=!1,jt=class e{constructor(t,A={}){if(M.util.markAsUncloneable(this),t===Bo)return;let r="Request constructor";M.argumentLengthCheck(arguments,1,r),t=M.converters.RequestInfo(t,r,"input"),A=M.converters.RequestInit(A,r,"init");let n=null,s=null,o=Eo.settingsObject.baseUrl,i=null;if(typeof t=="string"){this[rl]=A.dispatcher;let d;try{d=new URL(t,o)}catch(C){throw new TypeError("Failed to parse URL from "+t,{cause:C})}if(d.username||d.password)throw new TypeError("Request cannot be constructed from a URL that includes credentials: "+t);n=fo({urlList:[d]}),s="cors"}else this[rl]=A.dispatcher||t[rl],XR(t instanceof e),n=t[j],i=t[Qo];let a=Eo.settingsObject.origin,l="client";if(n.window?.constructor?.name==="EnvironmentSettingsObject"&&$I(n.window,a)&&(l=n.window),A.window!=null)throw new TypeError(`'window' option '${l}' must be null`);"window"in A&&(l="no-window"),n=fo({method:n.method,headersList:n.headersList,unsafeRequest:n.unsafeRequest,client:Eo.settingsObject,window:l,priority:n.priority,origin:n.origin,referrer:n.referrer,referrerPolicy:n.referrerPolicy,mode:n.mode,credentials:n.credentials,cache:n.cache,redirect:n.redirect,integrity:n.integrity,keepalive:n.keepalive,reloadNavigation:n.reloadNavigation,historyNavigation:n.historyNavigation,urlList:[...n.urlList]});let c=Object.keys(A).length!==0;if(c&&(n.mode==="navigate"&&(n.mode="same-origin"),n.reloadNavigation=!1,n.historyNavigation=!1,n.origin="client",n.referrer="client",n.referrerPolicy="",n.url=n.urlList[n.urlList.length-1],n.urlList=[n.url]),A.referrer!==void 0){let d=A.referrer;if(d==="")n.referrer="no-referrer";else{let C;try{C=new URL(d,o)}catch(w){throw new TypeError(`Referrer "${d}" is not a valid URL.`,{cause:w})}C.protocol==="about:"&&C.hostname==="client"||a&&!$I(C,Eo.settingsObject.baseUrl)?n.referrer="client":n.referrer=C}}A.referrerPolicy!==void 0&&(n.referrerPolicy=A.referrerPolicy);let u;if(A.mode!==void 0?u=A.mode:u=s,u==="navigate")throw M.errors.exception({header:"Request constructor",message:"invalid request mode navigate."});if(u!=null&&(n.mode=u),A.credentials!==void 0&&(n.credentials=A.credentials),A.cache!==void 0&&(n.cache=A.cache),n.cache==="only-if-cached"&&n.mode!=="same-origin")throw new TypeError("'only-if-cached' can be set only with 'same-origin' mode");if(A.redirect!==void 0&&(n.redirect=A.redirect),A.integrity!=null&&(n.integrity=String(A.integrity)),A.keepalive!==void 0&&(n.keepalive=!!A.keepalive),A.method!==void 0){let d=A.method,C=ZR[d];if(C!==void 0)n.method=C;else{if(!HR(d))throw new TypeError(`'${d}' is not a valid HTTP method.`);let w=d.toUpperCase();if(JR.has(w))throw new TypeError(`'${d}' HTTP method is unsupported.`);d=KR[w]??d,n.method=d}!AB&&n.method==="patch"&&(process.emitWarning("Using `patch` is highly likely to result in a `405 Method Not Allowed`. `PATCH` is much more likely to succeed.",{code:"UNDICI-FETCH-patch"}),AB=!0)}A.signal!==void 0&&(i=A.signal),this[j]=n;let g=new AbortController;if(this[Qo]=g.signal,i!=null){if(!i||typeof i.aborted!="boolean"||typeof i.addEventListener!="function")throw new TypeError("Failed to construct 'Request': member signal is not of type AbortSignal.");if(i.aborted)g.abort(i.reason);else{this[eN]=g;let d=new WeakRef(g),C=tB(d);try{(typeof XI=="function"&&XI(i)===eB||jR(i,"abort").length>=eB)&&jI(1500,i)}catch{}ho.addAbortListener(i,C),sB.register(g,{signal:i,abort:C},C)}}if(this[Ve]=new rB(Bo),nB(this[Ve],n.headersList),nl(this[Ve],"request"),u==="no-cors"){if(!VR.has(n.method))throw new TypeError(`'${n.method} is unsupported in no-cors mode.`);nl(this[Ve],"request-no-cors")}if(c){let d=KI(this[Ve]),C=A.headers!==void 0?A.headers:new Io(d);if(d.clear(),C instanceof Io){for(let{name:w,value:B}of C.rawValues())d.append(w,B,!1);d.cookies=C.cookies}else vR(this[Ve],C)}let E=t instanceof e?t[j].body:null;if((A.body!=null||E!=null)&&(n.method==="GET"||n.method==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body.");let h=null;if(A.body!=null){let[d,C]=LR(A.body,n.keepalive);h=d,C&&!KI(this[Ve]).contains("content-type",!0)&&this[Ve].append("content-type",C)}let Q=h??E;if(Q!=null&&Q.source==null){if(h!=null&&A.duplex==null)throw new TypeError("RequestInit: duplex option is required when sending a body.");if(n.mode!=="same-origin"&&n.mode!=="cors")throw new TypeError('If request is made from ReadableStream, mode should be "same-origin" or "cors"');n.useCORSPreflightFlag=!0}let I=Q;if(h==null&&E!=null){if(zI(t))throw new TypeError("Cannot construct a Request with a Request object that has already been used.");let d=new TransformStream;E.stream.pipeThrough(d),I={source:E.source,length:E.length,stream:d.readable}}this[j].body=I}get method(){return M.brandCheck(this,e),this[j].method}get url(){return M.brandCheck(this,e),$R(this[j].url)}get headers(){return M.brandCheck(this,e),this[Ve]}get destination(){return M.brandCheck(this,e),this[j].destination}get referrer(){return M.brandCheck(this,e),this[j].referrer==="no-referrer"?"":this[j].referrer==="client"?"about:client":this[j].referrer.toString()}get referrerPolicy(){return M.brandCheck(this,e),this[j].referrerPolicy}get mode(){return M.brandCheck(this,e),this[j].mode}get credentials(){return this[j].credentials}get cache(){return M.brandCheck(this,e),this[j].cache}get redirect(){return M.brandCheck(this,e),this[j].redirect}get integrity(){return M.brandCheck(this,e),this[j].integrity}get keepalive(){return M.brandCheck(this,e),this[j].keepalive}get isReloadNavigation(){return M.brandCheck(this,e),this[j].reloadNavigation}get isHistoryNavigation(){return M.brandCheck(this,e),this[j].historyNavigation}get signal(){return M.brandCheck(this,e),this[Qo]}get body(){return M.brandCheck(this,e),this[j].body?this[j].body.stream:null}get bodyUsed(){return M.brandCheck(this,e),!!this[j].body&&ho.isDisturbed(this[j].body.stream)}get duplex(){return M.brandCheck(this,e),"half"}clone(){if(M.brandCheck(this,e),zI(this))throw new TypeError("unusable");let t=oB(this[j]),A=new AbortController;if(this.signal.aborted)A.abort(this.signal.reason);else{let r=Co.get(this.signal);r===void 0&&(r=new Set,Co.set(this.signal,r));let n=new WeakRef(A);r.add(n),ho.addAbortListener(A.signal,tB(n))}return iB(t,A.signal,GR(this[Ve]))}[ZI.inspect.custom](t,A){A.depth===null&&(A.depth=2),A.colors??=!0;let r={method:this.method,url:this.url,headers:this.headers,destination:this.destination,referrer:this.referrer,referrerPolicy:this.referrerPolicy,mode:this.mode,credentials:this.credentials,cache:this.cache,redirect:this.redirect,integrity:this.integrity,keepalive:this.keepalive,isReloadNavigation:this.isReloadNavigation,isHistoryNavigation:this.isHistoryNavigation,signal:this.signal};return`Request ${ZI.formatWithOptions(A,r)}`}};xR(jt);function fo(e){return{method:e.method??"GET",localURLsOnly:e.localURLsOnly??!1,unsafeRequest:e.unsafeRequest??!1,body:e.body??null,client:e.client??null,reservedClient:e.reservedClient??null,replacesClientId:e.replacesClientId??"",window:e.window??"client",keepalive:e.keepalive??!1,serviceWorkers:e.serviceWorkers??"all",initiator:e.initiator??"",destination:e.destination??"",priority:e.priority??null,origin:e.origin??"client",policyContainer:e.policyContainer??"client",referrer:e.referrer??"client",referrerPolicy:e.referrerPolicy??"",mode:e.mode??"no-cors",useCORSPreflightFlag:e.useCORSPreflightFlag??!1,credentials:e.credentials??"same-origin",useCredentials:e.useCredentials??!1,cache:e.cache??"default",redirect:e.redirect??"follow",integrity:e.integrity??"",cryptoGraphicsNonceMetadata:e.cryptoGraphicsNonceMetadata??"",parserMetadata:e.parserMetadata??"",reloadNavigation:e.reloadNavigation??!1,historyNavigation:e.historyNavigation??!1,userActivation:e.userActivation??!1,taintedOrigin:e.taintedOrigin??!1,redirectCount:e.redirectCount??0,responseTainting:e.responseTainting??"basic",preventNoCacheCacheControlHeaderModification:e.preventNoCacheCacheControlHeaderModification??!1,done:e.done??!1,timingAllowFailed:e.timingAllowFailed??!1,urlList:e.urlList,url:e.urlList[0],headersList:e.headersList?new Io(e.headersList):new Io}}function oB(e){let t=fo({...e,body:null});return e.body!=null&&(t.body=TR(t,e.body)),t}function iB(e,t,A){let r=new jt(Bo);return r[j]=e,r[Qo]=t,r[Ve]=new rB(Bo),nB(r[Ve],e.headersList),nl(r[Ve],A),r}Object.defineProperties(jt.prototype,{method:le,url:le,headers:le,redirect:le,clone:le,signal:le,duplex:le,destination:le,body:le,bodyUsed:le,isHistoryNavigation:le,isReloadNavigation:le,keepalive:le,integrity:le,cache:le,credentials:le,attribute:le,referrerPolicy:le,referrer:le,mode:le,[Symbol.toStringTag]:{value:"Request",configurable:!0}});M.converters.Request=M.interfaceConverter(jt);M.converters.RequestInfo=function(e,t,A){return typeof e=="string"?M.converters.USVString(e,t,A):e instanceof jt?M.converters.Request(e,t,A):M.converters.USVString(e,t,A)};M.converters.AbortSignal=M.interfaceConverter(AbortSignal);M.converters.RequestInit=M.dictionaryConverter([{key:"method",converter:M.converters.ByteString},{key:"headers",converter:M.converters.HeadersInit},{key:"body",converter:M.nullableConverter(M.converters.BodyInit)},{key:"referrer",converter:M.converters.USVString},{key:"referrerPolicy",converter:M.converters.DOMString,allowedValues:qR},{key:"mode",converter:M.converters.DOMString,allowedValues:OR},{key:"credentials",converter:M.converters.DOMString,allowedValues:WR},{key:"cache",converter:M.converters.DOMString,allowedValues:_R},{key:"redirect",converter:M.converters.DOMString,allowedValues:PR},{key:"integrity",converter:M.converters.DOMString},{key:"keepalive",converter:M.converters.boolean},{key:"signal",converter:M.nullableConverter(e=>M.converters.AbortSignal(e,"RequestInit","signal",{strict:!1}))},{key:"window",converter:M.converters.any},{key:"duplex",converter:M.converters.DOMString,allowedValues:zR},{key:"dispatcher",converter:M.converters.any}]);aB.exports={Request:jt,makeRequest:fo,fromInnerRequest:iB,cloneRequest:oB}});var Un=p((Q2,yB)=>{"use strict";var{makeNetworkError:z,makeAppropriateNetworkError:po,filterResponse:sl,makeResponse:mo,fromInnerResponse:tN}=Nn(),{HeadersList:cB}=SA(),{Request:AN,cloneRequest:rN}=wr(),eA=f("node:zlib"),{bytesMatch:nN,makePolicyContainer:sN,clonePolicyContainer:oN,requestBadPort:iN,TAOCheck:aN,appendRequestOriginHeader:cN,responseLocationURL:lN,requestCurrentURL:mt,setRequestReferrerPolicyOnRedirect:uN,tryUpgradeRequestToAPotentiallyTrustworthyURL:gN,createOpaqueTimingInfo:ll,appendFetchMetadata:EN,corsCheck:dN,crossOriginResourcePolicyCheck:hN,determineRequestsReferrer:QN,coarsenedSharedCurrentTime:Fn,createDeferredPromise:IN,isBlobLike:BN,sameOrigin:cl,isCancelled:NA,isAborted:lB,isErrorLike:CN,fullyReadBody:fN,readableStreamClose:pN,isomorphicEncode:yo,urlIsLocal:mN,urlIsHttpHttpsScheme:ul,urlHasHttpsScheme:yN,clampAndCoarsenConnectionTimingInfo:wN,simpleRangeHeaderValue:bN,buildContentRange:kN,createInflate:DN,extractMimeType:SN}=Te(),{kState:dB,kDispatcher:RN}=Vt(),FA=f("node:assert"),{safelyExtractBody:gl,extractBody:uB}=tr(),{redirectStatusSet:hB,nullBodyStatus:QB,safeMethodsSet:NN,requestBodyHeader:FN,subresourceSet:UN}=jr(),MN=f("node:events"),{Readable:LN,pipeline:xN,finished:TN}=f("node:stream"),{addAbortListener:vN,isErrored:GN,isReadable:wo,bufferToLowerCasedHeaderName:gB}=Y(),{dataURLProcessor:YN,serializeAMimeType:HN,minimizeSupportedMimeType:JN}=ke(),{getGlobalDispatcher:VN}=oo(),{webidl:qN}=de(),{STATUS_CODES:PN}=f("node:http"),ON=["GET","HEAD"],WN=typeof __UNDICI_IS_NODE__<"u"||typeof esbuildDetection<"u"?"node":"undici",ol,bo=class extends MN{constructor(t){super(),this.dispatcher=t,this.connection=null,this.dump=!1,this.state="ongoing"}terminate(t){this.state==="ongoing"&&(this.state="terminated",this.connection?.destroy(t),this.emit("terminated",t))}abort(t){this.state==="ongoing"&&(this.state="aborted",t||(t=new DOMException("The operation was aborted.","AbortError")),this.serializedAbortReason=t,this.connection?.destroy(t),this.emit("terminated",t))}};function _N(e){IB(e,"fetch")}function zN(e,t=void 0){qN.argumentLengthCheck(arguments,1,"globalThis.fetch");let A=IN(),r;try{r=new AN(e,t)}catch(c){return A.reject(c),A.promise}let n=r[dB];if(r.signal.aborted)return il(A,n,null,r.signal.reason),A.promise;n.client.globalObject?.constructor?.name==="ServiceWorkerGlobalScope"&&(n.serviceWorkers="none");let o=null,i=!1,a=null;return vN(r.signal,()=>{i=!0,FA(a!=null),a.abort(r.signal.reason);let c=o?.deref();il(A,n,c,r.signal.reason)}),a=CB({request:n,processResponseEndOfBody:_N,processResponse:c=>{if(!i){if(c.aborted){il(A,n,o,a.serializedAbortReason);return}if(c.type==="error"){A.reject(new TypeError("fetch failed",{cause:c.error}));return}o=new WeakRef(tN(c,"immutable")),A.resolve(o.deref()),A=null}},dispatcher:r[RN]}),A.promise}function IB(e,t="other"){if(e.type==="error"&&e.aborted||!e.urlList?.length)return;let A=e.urlList[0],r=e.timingInfo,n=e.cacheState;ul(A)&&r!==null&&(e.timingAllowPassed||(r=ll({startTime:r.startTime}),n=""),r.endTime=Fn(),e.timingInfo=r,BB(r,A.href,t,globalThis,n))}var BB=performance.markResourceTiming;function il(e,t,A,r){if(e&&e.reject(r),t.body!=null&&wo(t.body?.stream)&&t.body.stream.cancel(r).catch(s=>{if(s.code!=="ERR_INVALID_STATE")throw s}),A==null)return;let n=A[dB];n.body!=null&&wo(n.body?.stream)&&n.body.stream.cancel(r).catch(s=>{if(s.code!=="ERR_INVALID_STATE")throw s})}function CB({request:e,processRequestBodyChunkLength:t,processRequestEndOfBody:A,processResponse:r,processResponseEndOfBody:n,processResponseConsumeBody:s,useParallelQueue:o=!1,dispatcher:i=VN()}){FA(i);let a=null,l=!1;e.client!=null&&(a=e.client.globalObject,l=e.client.crossOriginIsolatedCapability);let c=Fn(l),u=ll({startTime:c}),g={controller:new bo(i),request:e,timingInfo:u,processRequestBodyChunkLength:t,processRequestEndOfBody:A,processResponse:r,processResponseConsumeBody:s,processResponseEndOfBody:n,taskDestination:a,crossOriginIsolatedCapability:l};return FA(!e.body||e.body.stream),e.window==="client"&&(e.window=e.client?.globalObject?.constructor?.name==="Window"?e.client:"no-window"),e.origin==="client"&&(e.origin=e.client.origin),e.policyContainer==="client"&&(e.client!=null?e.policyContainer=oN(e.client.policyContainer):e.policyContainer=sN()),e.headersList.contains("accept",!0)||e.headersList.append("accept","*/*",!0),e.headersList.contains("accept-language",!0)||e.headersList.append("accept-language","*",!0),e.priority,UN.has(e.destination),fB(g).catch(E=>{g.controller.terminate(E)}),g.controller}async function fB(e,t=!1){let A=e.request,r=null;if(A.localURLsOnly&&!mN(mt(A))&&(r=z("local URLs only")),gN(A),iN(A)==="blocked"&&(r=z("bad port")),A.referrerPolicy===""&&(A.referrerPolicy=A.policyContainer.referrerPolicy),A.referrer!=="no-referrer"&&(A.referrer=QN(A)),r===null&&(r=await(async()=>{let s=mt(A);return cl(s,A.url)&&A.responseTainting==="basic"||s.protocol==="data:"||A.mode==="navigate"||A.mode==="websocket"?(A.responseTainting="basic",await EB(e)):A.mode==="same-origin"?z('request mode cannot be "same-origin"'):A.mode==="no-cors"?A.redirect!=="follow"?z('redirect mode cannot be "follow" for "no-cors" request'):(A.responseTainting="opaque",await EB(e)):ul(mt(A))?(A.responseTainting="cors",await pB(e)):z("URL scheme must be a HTTP(S) scheme")})()),t)return r;r.status!==0&&!r.internalResponse&&(A.responseTainting,A.responseTainting==="basic"?r=sl(r,"basic"):A.responseTainting==="cors"?r=sl(r,"cors"):A.responseTainting==="opaque"?r=sl(r,"opaque"):FA(!1));let n=r.status===0?r:r.internalResponse;if(n.urlList.length===0&&n.urlList.push(...A.urlList),A.timingAllowFailed||(r.timingAllowPassed=!0),r.type==="opaque"&&n.status===206&&n.rangeRequested&&!A.headers.contains("range",!0)&&(r=n=z()),r.status!==0&&(A.method==="HEAD"||A.method==="CONNECT"||QB.includes(n.status))&&(n.body=null,e.controller.dump=!0),A.integrity){let s=i=>al(e,z(i));if(A.responseTainting==="opaque"||r.body==null){s(r.error);return}let o=i=>{if(!nN(i,A.integrity)){s("integrity mismatch");return}r.body=gl(i)[0],al(e,r)};await fN(r.body,o,s)}else al(e,r)}function EB(e){if(NA(e)&&e.request.redirectCount===0)return Promise.resolve(po(e));let{request:t}=e,{protocol:A}=mt(t);switch(A){case"about:":return Promise.resolve(z("about scheme is not supported"));case"blob:":{ol||(ol=f("node:buffer").resolveObjectURL);let r=mt(t);if(r.search.length!==0)return Promise.resolve(z("NetworkError when attempting to fetch resource."));let n=ol(r.toString());if(t.method!=="GET"||!BN(n))return Promise.resolve(z("invalid method"));let s=mo(),o=n.size,i=yo(`${o}`),a=n.type;if(t.headersList.contains("range",!0)){s.rangeRequested=!0;let l=t.headersList.get("range",!0),c=bN(l,!0);if(c==="failure")return Promise.resolve(z("failed to fetch the data URL"));let{rangeStartValue:u,rangeEndValue:g}=c;if(u===null)u=o-g,g=u+g-1;else{if(u>=o)return Promise.resolve(z("Range start is greater than the blob's size."));(g===null||g>=o)&&(g=o-1)}let E=n.slice(u,g,a),h=uB(E);s.body=h[0];let Q=yo(`${E.size}`),I=kN(u,g,o);s.status=206,s.statusText="Partial Content",s.headersList.set("content-length",Q,!0),s.headersList.set("content-type",a,!0),s.headersList.set("content-range",I,!0)}else{let l=uB(n);s.statusText="OK",s.body=l[0],s.headersList.set("content-length",i,!0),s.headersList.set("content-type",a,!0)}return Promise.resolve(s)}case"data:":{let r=mt(t),n=YN(r);if(n==="failure")return Promise.resolve(z("failed to fetch the data URL"));let s=HN(n.mimeType);return Promise.resolve(mo({statusText:"OK",headersList:[["content-type",{name:"Content-Type",value:s}]],body:gl(n.body)[0]}))}case"file:":return Promise.resolve(z("not implemented... yet..."));case"http:":case"https:":return pB(e).catch(r=>z(r));default:return Promise.resolve(z("unknown scheme"))}}function KN(e,t){e.request.done=!0,e.processResponseDone!=null&&queueMicrotask(()=>e.processResponseDone(t))}function al(e,t){let A=e.timingInfo,r=()=>{let s=Date.now();e.request.destination==="document"&&(e.controller.fullTimingInfo=A),e.controller.reportTimingSteps=()=>{if(e.request.url.protocol!=="https:")return;A.endTime=s;let i=t.cacheState,a=t.bodyInfo;t.timingAllowPassed||(A=ll(A),i="");let l=0;if(e.request.mode!=="navigator"||!t.hasCrossOriginRedirects){l=t.status;let c=SN(t.headersList);c!=="failure"&&(a.contentType=JN(c))}e.request.initiatorType!=null&&BB(A,e.request.url.href,e.request.initiatorType,globalThis,i,a,l)};let o=()=>{e.request.done=!0,e.processResponseEndOfBody!=null&&queueMicrotask(()=>e.processResponseEndOfBody(t)),e.request.initiatorType!=null&&e.controller.reportTimingSteps()};queueMicrotask(()=>o())};e.processResponse!=null&&queueMicrotask(()=>{e.processResponse(t),e.processResponse=null});let n=t.type==="error"?t:t.internalResponse??t;n.body==null?r():TN(n.body.stream,()=>{r()})}async function pB(e){let t=e.request,A=null,r=null,n=e.timingInfo;if(t.serviceWorkers,A===null){if(t.redirect==="follow"&&(t.serviceWorkers="none"),r=A=await mB(e),t.responseTainting==="cors"&&dN(t,A)==="failure")return z("cors failure");aN(t,A)==="failure"&&(t.timingAllowFailed=!0)}return(t.responseTainting==="opaque"||A.type==="opaque")&&hN(t.origin,t.client,t.destination,r)==="blocked"?z("blocked"):(hB.has(r.status)&&(t.redirect!=="manual"&&e.controller.connection.destroy(void 0,!1),t.redirect==="error"?A=z("unexpected redirect"):t.redirect==="manual"?A=r:t.redirect==="follow"?A=await ZN(e,A):FA(!1)),A.timingInfo=n,A)}function ZN(e,t){let A=e.request,r=t.internalResponse?t.internalResponse:t,n;try{if(n=lN(r,mt(A).hash),n==null)return t}catch(o){return Promise.resolve(z(o))}if(!ul(n))return Promise.resolve(z("URL scheme must be a HTTP(S) scheme"));if(A.redirectCount===20)return Promise.resolve(z("redirect count exceeded"));if(A.redirectCount+=1,A.mode==="cors"&&(n.username||n.password)&&!cl(A,n))return Promise.resolve(z('cross origin not allowed for request mode "cors"'));if(A.responseTainting==="cors"&&(n.username||n.password))return Promise.resolve(z('URL cannot contain credentials for request mode "cors"'));if(r.status!==303&&A.body!=null&&A.body.source==null)return Promise.resolve(z());if([301,302].includes(r.status)&&A.method==="POST"||r.status===303&&!ON.includes(A.method)){A.method="GET",A.body=null;for(let o of FN)A.headersList.delete(o)}cl(mt(A),n)||(A.headersList.delete("authorization",!0),A.headersList.delete("proxy-authorization",!0),A.headersList.delete("cookie",!0),A.headersList.delete("host",!0)),A.body!=null&&(FA(A.body.source!=null),A.body=gl(A.body.source)[0]);let s=e.timingInfo;return s.redirectEndTime=s.postRedirectStartTime=Fn(e.crossOriginIsolatedCapability),s.redirectStartTime===0&&(s.redirectStartTime=s.startTime),A.urlList.push(n),uN(A,r),fB(e,!0)}async function mB(e,t=!1,A=!1){let r=e.request,n=null,s=null,o=null,i=null,a=!1;r.window==="no-window"&&r.redirect==="error"?(n=e,s=r):(s=rN(r),n={...e},n.request=s);let l=r.credentials==="include"||r.credentials==="same-origin"&&r.responseTainting==="basic",c=s.body?s.body.length:null,u=null;if(s.body==null&&["POST","PUT"].includes(s.method)&&(u="0"),c!=null&&(u=yo(`${c}`)),u!=null&&s.headersList.append("content-length",u,!0),c!=null&&s.keepalive,s.referrer instanceof URL&&s.headersList.append("referer",yo(s.referrer.href),!0),cN(s),EN(s),s.headersList.contains("user-agent",!0)||s.headersList.append("user-agent",WN),s.cache==="default"&&(s.headersList.contains("if-modified-since",!0)||s.headersList.contains("if-none-match",!0)||s.headersList.contains("if-unmodified-since",!0)||s.headersList.contains("if-match",!0)||s.headersList.contains("if-range",!0))&&(s.cache="no-store"),s.cache==="no-cache"&&!s.preventNoCacheCacheControlHeaderModification&&!s.headersList.contains("cache-control",!0)&&s.headersList.append("cache-control","max-age=0",!0),(s.cache==="no-store"||s.cache==="reload")&&(s.headersList.contains("pragma",!0)||s.headersList.append("pragma","no-cache",!0),s.headersList.contains("cache-control",!0)||s.headersList.append("cache-control","no-cache",!0)),s.headersList.contains("range",!0)&&s.headersList.append("accept-encoding","identity",!0),s.headersList.contains("accept-encoding",!0)||(yN(mt(s))?s.headersList.append("accept-encoding","br, gzip, deflate",!0):s.headersList.append("accept-encoding","gzip, deflate",!0)),s.headersList.delete("host",!0),i==null&&(s.cache="no-store"),s.cache!=="no-store"&&s.cache,o==null){if(s.cache==="only-if-cached")return z("only if cached");let g=await $N(n,l,A);!NN.has(s.method)&&g.status>=200&&g.status<=399,a&&g.status,o==null&&(o=g)}if(o.urlList=[...s.urlList],s.headersList.contains("range",!0)&&(o.rangeRequested=!0),o.requestIncludesCredentials=l,o.status===407)return r.window==="no-window"?z():NA(e)?po(e):z("proxy authentication required");if(o.status===421&&!A&&(r.body==null||r.body.source!=null)){if(NA(e))return po(e);e.controller.connection.destroy(),o=await mB(e,t,!0)}return o}async function $N(e,t=!1,A=!1){FA(!e.controller.connection||e.controller.connection.destroyed),e.controller.connection={abort:null,destroyed:!1,destroy(h,Q=!0){this.destroyed||(this.destroyed=!0,Q&&this.abort?.(h??new DOMException("The operation was aborted.","AbortError")))}};let r=e.request,n=null,s=e.timingInfo;null==null&&(r.cache="no-store");let i=A?"yes":"no";r.mode;let a=null;if(r.body==null&&e.processRequestEndOfBody)queueMicrotask(()=>e.processRequestEndOfBody());else if(r.body!=null){let h=async function*(d){NA(e)||(yield d,e.processRequestBodyChunkLength?.(d.byteLength))},Q=()=>{NA(e)||e.processRequestEndOfBody&&e.processRequestEndOfBody()},I=d=>{NA(e)||(d.name==="AbortError"?e.controller.abort():e.controller.terminate(d))};a=(async function*(){try{for await(let d of r.body.stream)yield*h(d);Q()}catch(d){I(d)}})()}try{let{body:h,status:Q,statusText:I,headersList:d,socket:C}=await E({body:a});if(C)n=mo({status:Q,statusText:I,headersList:d,socket:C});else{let w=h[Symbol.asyncIterator]();e.controller.next=()=>w.next(),n=mo({status:Q,statusText:I,headersList:d})}}catch(h){return h.name==="AbortError"?(e.controller.connection.destroy(),po(e,h)):z(h)}let l=async()=>{await e.controller.resume()},c=h=>{NA(e)||e.controller.abort(h)},u=new ReadableStream({async start(h){e.controller.controller=h},async pull(h){await l(h)},async cancel(h){await c(h)},type:"bytes"});n.body={stream:u,source:null,length:null},e.controller.onAborted=g,e.controller.on("terminated",g),e.controller.resume=async()=>{for(;;){let h,Q;try{let{done:d,value:C}=await e.controller.next();if(lB(e))break;h=d?void 0:C}catch(d){e.controller.ended&&!s.encodedBodySize?h=void 0:(h=d,Q=!0)}if(h===void 0){pN(e.controller.controller),KN(e,n);return}if(s.decodedBodySize+=h?.byteLength??0,Q){e.controller.terminate(h);return}let I=new Uint8Array(h);if(I.byteLength&&e.controller.controller.enqueue(I),GN(u)){e.controller.terminate();return}if(e.controller.controller.desiredSize<=0)return}};function g(h){lB(e)?(n.aborted=!0,wo(u)&&e.controller.controller.error(e.controller.serializedAbortReason)):wo(u)&&e.controller.controller.error(new TypeError("terminated",{cause:CN(h)?h:void 0})),e.controller.connection.destroy()}return n;function E({body:h}){let Q=mt(r),I=e.controller.dispatcher;return new Promise((d,C)=>I.dispatch({path:Q.pathname+Q.search,origin:Q.origin,method:r.method,body:I.isMockActive?r.body&&(r.body.source||r.body.stream):h,headers:r.headersList.entries,maxRedirections:0,upgrade:r.mode==="websocket"?"websocket":void 0},{body:null,abort:null,onConnect(w){let{connection:B}=e.controller;s.finalConnectionTimingInfo=wN(void 0,s.postRedirectStartTime,e.crossOriginIsolatedCapability),B.destroyed?w(new DOMException("The operation was aborted.","AbortError")):(e.controller.on("terminated",w),this.abort=B.abort=w),s.finalNetworkRequestStartTime=Fn(e.crossOriginIsolatedCapability)},onResponseStarted(){s.finalNetworkResponseStartTime=Fn(e.crossOriginIsolatedCapability)},onHeaders(w,B,k,G){if(w<200)return;let q="",Ee=new cB;for(let Qe=0;Qe<B.length;Qe+=2)Ee.append(gB(B[Qe]),B[Qe+1].toString("latin1"),!0);q=Ee.get("location",!0),this.body=new LN({read:k});let pe=[],We=q&&r.redirect==="follow"&&hB.has(w);if(r.method!=="HEAD"&&r.method!=="CONNECT"&&!QB.includes(w)&&!We){let Qe=Ee.get("content-encoding",!0),ut=Qe?Qe.toLowerCase().split(","):[],Yt=5;if(ut.length>Yt)return C(new Error(`too many content-encodings in response: ${ut.length}, maximum allowed is ${Yt}`)),!0;for(let qr=ut.length-1;qr>=0;--qr){let Ht=ut[qr].trim();if(Ht==="x-gzip"||Ht==="gzip")pe.push(eA.createGunzip({flush:eA.constants.Z_SYNC_FLUSH,finishFlush:eA.constants.Z_SYNC_FLUSH}));else if(Ht==="deflate")pe.push(DN({flush:eA.constants.Z_SYNC_FLUSH,finishFlush:eA.constants.Z_SYNC_FLUSH}));else if(Ht==="br")pe.push(eA.createBrotliDecompress({flush:eA.constants.BROTLI_OPERATION_FLUSH,finishFlush:eA.constants.BROTLI_OPERATION_FLUSH}));else{pe.length=0;break}}}let me=this.onError.bind(this);return d({status:w,statusText:G,headersList:Ee,body:pe.length?xN(this.body,...pe,Qe=>{Qe&&this.onError(Qe)}).on("error",me):this.body.on("error",me)}),!0},onData(w){if(e.controller.dump)return;let B=w;return s.encodedBodySize+=B.byteLength,this.body.push(B)},onComplete(){this.abort&&e.controller.off("terminated",this.abort),e.controller.onAborted&&e.controller.off("terminated",e.controller.onAborted),e.controller.ended=!0,this.body.push(null)},onError(w){this.abort&&e.controller.off("terminated",this.abort),this.body?.destroy(w),e.controller.terminate(w),C(w)},onUpgrade(w,B,k){if(w!==101)return;let G=new cB;for(let q=0;q<B.length;q+=2)G.append(gB(B[q]),B[q+1].toString("latin1"),!0);return d({status:w,statusText:PN[w],headersList:G,socket:k}),!0}}))}}yB.exports={fetch:zN,Fetch:bo,fetching:CB,finalizeAndReportTiming:IB}});var El=p((I2,wB)=>{"use strict";wB.exports={kState:Symbol("FileReader state"),kResult:Symbol("FileReader result"),kError:Symbol("FileReader error"),kLastProgressEventFired:Symbol("FileReader last progress event fired timestamp"),kEvents:Symbol("FileReader events"),kAborted:Symbol("FileReader aborted")}});var kB=p((B2,bB)=>{"use strict";var{webidl:qe}=de(),ko=Symbol("ProgressEvent state"),dl=class e extends Event{constructor(t,A={}){t=qe.converters.DOMString(t,"ProgressEvent constructor","type"),A=qe.converters.ProgressEventInit(A??{}),super(t,A),this[ko]={lengthComputable:A.lengthComputable,loaded:A.loaded,total:A.total}}get lengthComputable(){return qe.brandCheck(this,e),this[ko].lengthComputable}get loaded(){return qe.brandCheck(this,e),this[ko].loaded}get total(){return qe.brandCheck(this,e),this[ko].total}};qe.converters.ProgressEventInit=qe.dictionaryConverter([{key:"lengthComputable",converter:qe.converters.boolean,defaultValue:()=>!1},{key:"loaded",converter:qe.converters["unsigned long long"],defaultValue:()=>0},{key:"total",converter:qe.converters["unsigned long long"],defaultValue:()=>0},{key:"bubbles",converter:qe.converters.boolean,defaultValue:()=>!1},{key:"cancelable",converter:qe.converters.boolean,defaultValue:()=>!1},{key:"composed",converter:qe.converters.boolean,defaultValue:()=>!1}]);bB.exports={ProgressEvent:dl}});var SB=p((C2,DB)=>{"use strict";function XN(e){if(!e)return"failure";switch(e.trim().toLowerCase()){case"unicode-1-1-utf-8":case"unicode11utf8":case"unicode20utf8":case"utf-8":case"utf8":case"x-unicode20utf8":return"UTF-8";case"866":case"cp866":case"csibm866":case"ibm866":return"IBM866";case"csisolatin2":case"iso-8859-2":case"iso-ir-101":case"iso8859-2":case"iso88592":case"iso_8859-2":case"iso_8859-2:1987":case"l2":case"latin2":return"ISO-8859-2";case"csisolatin3":case"iso-8859-3":case"iso-ir-109":case"iso8859-3":case"iso88593":case"iso_8859-3":case"iso_8859-3:1988":case"l3":case"latin3":return"ISO-8859-3";case"csisolatin4":case"iso-8859-4":case"iso-ir-110":case"iso8859-4":case"iso88594":case"iso_8859-4":case"iso_8859-4:1988":case"l4":case"latin4":return"ISO-8859-4";case"csisolatincyrillic":case"cyrillic":case"iso-8859-5":case"iso-ir-144":case"iso8859-5":case"iso88595":case"iso_8859-5":case"iso_8859-5:1988":return"ISO-8859-5";case"arabic":case"asmo-708":case"csiso88596e":case"csiso88596i":case"csisolatinarabic":case"ecma-114":case"iso-8859-6":case"iso-8859-6-e":case"iso-8859-6-i":case"iso-ir-127":case"iso8859-6":case"iso88596":case"iso_8859-6":case"iso_8859-6:1987":return"ISO-8859-6";case"csisolatingreek":case"ecma-118":case"elot_928":case"greek":case"greek8":case"iso-8859-7":case"iso-ir-126":case"iso8859-7":case"iso88597":case"iso_8859-7":case"iso_8859-7:1987":case"sun_eu_greek":return"ISO-8859-7";case"csiso88598e":case"csisolatinhebrew":case"hebrew":case"iso-8859-8":case"iso-8859-8-e":case"iso-ir-138":case"iso8859-8":case"iso88598":case"iso_8859-8":case"iso_8859-8:1988":case"visual":return"ISO-8859-8";case"csiso88598i":case"iso-8859-8-i":case"logical":return"ISO-8859-8-I";case"csisolatin6":case"iso-8859-10":case"iso-ir-157":case"iso8859-10":case"iso885910":case"l6":case"latin6":return"ISO-8859-10";case"iso-8859-13":case"iso8859-13":case"iso885913":return"ISO-8859-13";case"iso-8859-14":case"iso8859-14":case"iso885914":return"ISO-8859-14";case"csisolatin9":case"iso-8859-15":case"iso8859-15":case"iso885915":case"iso_8859-15":case"l9":return"ISO-8859-15";case"iso-8859-16":return"ISO-8859-16";case"cskoi8r":case"koi":case"koi8":case"koi8-r":case"koi8_r":return"KOI8-R";case"koi8-ru":case"koi8-u":return"KOI8-U";case"csmacintosh":case"mac":case"macintosh":case"x-mac-roman":return"macintosh";case"iso-8859-11":case"iso8859-11":case"iso885911":case"tis-620":case"windows-874":return"windows-874";case"cp1250":case"windows-1250":case"x-cp1250":return"windows-1250";case"cp1251":case"windows-1251":case"x-cp1251":return"windows-1251";case"ansi_x3.4-1968":case"ascii":case"cp1252":case"cp819":case"csisolatin1":case"ibm819":case"iso-8859-1":case"iso-ir-100":case"iso8859-1":case"iso88591":case"iso_8859-1":case"iso_8859-1:1987":case"l1":case"latin1":case"us-ascii":case"windows-1252":case"x-cp1252":return"windows-1252";case"cp1253":case"windows-1253":case"x-cp1253":return"windows-1253";case"cp1254":case"csisolatin5":case"iso-8859-9":case"iso-ir-148":case"iso8859-9":case"iso88599":case"iso_8859-9":case"iso_8859-9:1989":case"l5":case"latin5":case"windows-1254":case"x-cp1254":return"windows-1254";case"cp1255":case"windows-1255":case"x-cp1255":return"windows-1255";case"cp1256":case"windows-1256":case"x-cp1256":return"windows-1256";case"cp1257":case"windows-1257":case"x-cp1257":return"windows-1257";case"cp1258":case"windows-1258":case"x-cp1258":return"windows-1258";case"x-mac-cyrillic":case"x-mac-ukrainian":return"x-mac-cyrillic";case"chinese":case"csgb2312":case"csiso58gb231280":case"gb2312":case"gb_2312":case"gb_2312-80":case"gbk":case"iso-ir-58":case"x-gbk":return"GBK";case"gb18030":return"gb18030";case"big5":case"big5-hkscs":case"cn-big5":case"csbig5":case"x-x-big5":return"Big5";case"cseucpkdfmtjapanese":case"euc-jp":case"x-euc-jp":return"EUC-JP";case"csiso2022jp":case"iso-2022-jp":return"ISO-2022-JP";case"csshiftjis":case"ms932":case"ms_kanji":case"shift-jis":case"shift_jis":case"sjis":case"windows-31j":case"x-sjis":return"Shift_JIS";case"cseuckr":case"csksc56011987":case"euc-kr":case"iso-ir-149":case"korean":case"ks_c_5601-1987":case"ks_c_5601-1989":case"ksc5601":case"ksc_5601":case"windows-949":return"EUC-KR";case"csiso2022kr":case"hz-gb-2312":case"iso-2022-cn":case"iso-2022-cn-ext":case"iso-2022-kr":case"replacement":return"replacement";case"unicodefffe":case"utf-16be":return"UTF-16BE";case"csunicode":case"iso-10646-ucs-2":case"ucs-2":case"unicode":case"unicodefeff":case"utf-16":case"utf-16le":return"UTF-16LE";case"x-user-defined":return"x-user-defined";default:return"failure"}}DB.exports={getEncoding:XN}});var TB=p((f2,xB)=>{"use strict";var{kState:br,kError:hl,kResult:RB,kAborted:Mn,kLastProgressEventFired:Ql}=El(),{ProgressEvent:jN}=kB(),{getEncoding:NB}=SB(),{serializeAMimeType:eF,parseMIMEType:FB}=ke(),{types:tF}=f("node:util"),{StringDecoder:UB}=f("string_decoder"),{btoa:MB}=f("node:buffer"),AF={enumerable:!0,writable:!1,configurable:!1};function rF(e,t,A,r){if(e[br]==="loading")throw new DOMException("Invalid state","InvalidStateError");e[br]="loading",e[RB]=null,e[hl]=null;let s=t.stream().getReader(),o=[],i=s.read(),a=!0;(async()=>{for(;!e[Mn];)try{let{done:l,value:c}=await i;if(a&&!e[Mn]&&queueMicrotask(()=>{tA("loadstart",e)}),a=!1,!l&&tF.isUint8Array(c))o.push(c),(e[Ql]===void 0||Date.now()-e[Ql]>=50)&&!e[Mn]&&(e[Ql]=Date.now(),queueMicrotask(()=>{tA("progress",e)})),i=s.read();else if(l){queueMicrotask(()=>{e[br]="done";try{let u=nF(o,A,t.type,r);if(e[Mn])return;e[RB]=u,tA("load",e)}catch(u){e[hl]=u,tA("error",e)}e[br]!=="loading"&&tA("loadend",e)});break}}catch(l){if(e[Mn])return;queueMicrotask(()=>{e[br]="done",e[hl]=l,tA("error",e),e[br]!=="loading"&&tA("loadend",e)});break}})()}function tA(e,t){let A=new jN(e,{bubbles:!1,cancelable:!1});t.dispatchEvent(A)}function nF(e,t,A,r){switch(t){case"DataURL":{let n="data:",s=FB(A||"application/octet-stream");s!=="failure"&&(n+=eF(s)),n+=";base64,";let o=new UB("latin1");for(let i of e)n+=MB(o.write(i));return n+=MB(o.end()),n}case"Text":{let n="failure";if(r&&(n=NB(r)),n==="failure"&&A){let s=FB(A);s!=="failure"&&(n=NB(s.parameters.get("charset")))}return n==="failure"&&(n="UTF-8"),sF(e,n)}case"ArrayBuffer":return LB(e).buffer;case"BinaryString":{let n="",s=new UB("latin1");for(let o of e)n+=s.write(o);return n+=s.end(),n}}}function sF(e,t){let A=LB(e),r=oF(A),n=0;r!==null&&(t=r,n=r==="UTF-8"?3:2);let s=A.slice(n);return new TextDecoder(t).decode(s)}function oF(e){let[t,A,r]=e;return t===239&&A===187&&r===191?"UTF-8":t===254&&A===255?"UTF-16BE":t===255&&A===254?"UTF-16LE":null}function LB(e){let t=e.reduce((r,n)=>r+n.byteLength,0),A=0;return e.reduce((r,n)=>(r.set(n,A),A+=n.byteLength,r),new Uint8Array(t))}xB.exports={staticPropertyDescriptors:AF,readOperation:rF,fireAProgressEvent:tA}});var HB=p((p2,YB)=>{"use strict";var{staticPropertyDescriptors:kr,readOperation:Do,fireAProgressEvent:vB}=TB(),{kState:UA,kError:GB,kResult:So,kEvents:W,kAborted:iF}=El(),{webidl:Z}=de(),{kEnumerableProperty:Re}=Y(),ct=class e extends EventTarget{constructor(){super(),this[UA]="empty",this[So]=null,this[GB]=null,this[W]={loadend:null,error:null,abort:null,load:null,progress:null,loadstart:null}}readAsArrayBuffer(t){Z.brandCheck(this,e),Z.argumentLengthCheck(arguments,1,"FileReader.readAsArrayBuffer"),t=Z.converters.Blob(t,{strict:!1}),Do(this,t,"ArrayBuffer")}readAsBinaryString(t){Z.brandCheck(this,e),Z.argumentLengthCheck(arguments,1,"FileReader.readAsBinaryString"),t=Z.converters.Blob(t,{strict:!1}),Do(this,t,"BinaryString")}readAsText(t,A=void 0){Z.brandCheck(this,e),Z.argumentLengthCheck(arguments,1,"FileReader.readAsText"),t=Z.converters.Blob(t,{strict:!1}),A!==void 0&&(A=Z.converters.DOMString(A,"FileReader.readAsText","encoding")),Do(this,t,"Text",A)}readAsDataURL(t){Z.brandCheck(this,e),Z.argumentLengthCheck(arguments,1,"FileReader.readAsDataURL"),t=Z.converters.Blob(t,{strict:!1}),Do(this,t,"DataURL")}abort(){if(this[UA]==="empty"||this[UA]==="done"){this[So]=null;return}this[UA]==="loading"&&(this[UA]="done",this[So]=null),this[iF]=!0,vB("abort",this),this[UA]!=="loading"&&vB("loadend",this)}get readyState(){switch(Z.brandCheck(this,e),this[UA]){case"empty":return this.EMPTY;case"loading":return this.LOADING;case"done":return this.DONE}}get result(){return Z.brandCheck(this,e),this[So]}get error(){return Z.brandCheck(this,e),this[GB]}get onloadend(){return Z.brandCheck(this,e),this[W].loadend}set onloadend(t){Z.brandCheck(this,e),this[W].loadend&&this.removeEventListener("loadend",this[W].loadend),typeof t=="function"?(this[W].loadend=t,this.addEventListener("loadend",t)):this[W].loadend=null}get onerror(){return Z.brandCheck(this,e),this[W].error}set onerror(t){Z.brandCheck(this,e),this[W].error&&this.removeEventListener("error",this[W].error),typeof t=="function"?(this[W].error=t,this.addEventListener("error",t)):this[W].error=null}get onloadstart(){return Z.brandCheck(this,e),this[W].loadstart}set onloadstart(t){Z.brandCheck(this,e),this[W].loadstart&&this.removeEventListener("loadstart",this[W].loadstart),typeof t=="function"?(this[W].loadstart=t,this.addEventListener("loadstart",t)):this[W].loadstart=null}get onprogress(){return Z.brandCheck(this,e),this[W].progress}set onprogress(t){Z.brandCheck(this,e),this[W].progress&&this.removeEventListener("progress",this[W].progress),typeof t=="function"?(this[W].progress=t,this.addEventListener("progress",t)):this[W].progress=null}get onload(){return Z.brandCheck(this,e),this[W].load}set onload(t){Z.brandCheck(this,e),this[W].load&&this.removeEventListener("load",this[W].load),typeof t=="function"?(this[W].load=t,this.addEventListener("load",t)):this[W].load=null}get onabort(){return Z.brandCheck(this,e),this[W].abort}set onabort(t){Z.brandCheck(this,e),this[W].abort&&this.removeEventListener("abort",this[W].abort),typeof t=="function"?(this[W].abort=t,this.addEventListener("abort",t)):this[W].abort=null}};ct.EMPTY=ct.prototype.EMPTY=0;ct.LOADING=ct.prototype.LOADING=1;ct.DONE=ct.prototype.DONE=2;Object.defineProperties(ct.prototype,{EMPTY:kr,LOADING:kr,DONE:kr,readAsArrayBuffer:Re,readAsBinaryString:Re,readAsText:Re,readAsDataURL:Re,abort:Re,readyState:Re,result:Re,error:Re,onloadstart:Re,onprogress:Re,onload:Re,onabort:Re,onerror:Re,onloadend:Re,[Symbol.toStringTag]:{value:"FileReader",writable:!1,enumerable:!1,configurable:!0}});Object.defineProperties(ct,{EMPTY:kr,LOADING:kr,DONE:kr});YB.exports={FileReader:ct}});var Ro=p((m2,JB)=>{"use strict";JB.exports={kConstruct:ee().kConstruct}});var PB=p((y2,qB)=>{"use strict";var aF=f("node:assert"),{URLSerializer:VB}=ke(),{isValidHeaderName:cF}=Te();function lF(e,t,A=!1){let r=VB(e,A),n=VB(t,A);return r===n}function uF(e){aF(e!==null);let t=[];for(let A of e.split(","))A=A.trim(),cF(A)&&t.push(A);return t}qB.exports={urlEquals:lF,getFieldValues:uF}});var _B=p((w2,WB)=>{"use strict";var{kConstruct:gF}=Ro(),{urlEquals:EF,getFieldValues:Il}=PB(),{kEnumerableProperty:MA,isDisturbed:dF}=Y(),{webidl:S}=de(),{Response:hF,cloneResponse:QF,fromInnerResponse:IF}=Nn(),{Request:xt,fromInnerRequest:BF}=wr(),{kState:lt}=Vt(),{fetching:CF}=Un(),{urlIsHttpHttpsScheme:No,createDeferredPromise:Dr,readAllBytes:fF}=Te(),Bl=f("node:assert"),Fo=class e{#e;constructor(){arguments[0]!==gF&&S.illegalConstructor(),S.util.markAsUncloneable(this),this.#e=arguments[1]}async match(t,A={}){S.brandCheck(this,e);let r="Cache.match";S.argumentLengthCheck(arguments,1,r),t=S.converters.RequestInfo(t,r,"request"),A=S.converters.CacheQueryOptions(A,r,"options");let n=this.#n(t,A,1);if(n.length!==0)return n[0]}async matchAll(t=void 0,A={}){S.brandCheck(this,e);let r="Cache.matchAll";return t!==void 0&&(t=S.converters.RequestInfo(t,r,"request")),A=S.converters.CacheQueryOptions(A,r,"options"),this.#n(t,A)}async add(t){S.brandCheck(this,e);let A="Cache.add";S.argumentLengthCheck(arguments,1,A),t=S.converters.RequestInfo(t,A,"request");let r=[t];return await this.addAll(r)}async addAll(t){S.brandCheck(this,e);let A="Cache.addAll";S.argumentLengthCheck(arguments,1,A);let r=[],n=[];for(let g of t){if(g===void 0)throw S.errors.conversionFailed({prefix:A,argument:"Argument 1",types:["undefined is not allowed"]});if(g=S.converters.RequestInfo(g),typeof g=="string")continue;let E=g[lt];if(!No(E.url)||E.method!=="GET")throw S.errors.exception({header:A,message:"Expected http/s scheme when method is not GET."})}let s=[];for(let g of t){let E=new xt(g)[lt];if(!No(E.url))throw S.errors.exception({header:A,message:"Expected http/s scheme."});E.initiator="fetch",E.destination="subresource",n.push(E);let h=Dr();s.push(CF({request:E,processResponse(Q){if(Q.type==="error"||Q.status===206||Q.status<200||Q.status>299)h.reject(S.errors.exception({header:"Cache.addAll",message:"Received an invalid status code or the request failed."}));else if(Q.headersList.contains("vary")){let I=Il(Q.headersList.get("vary"));for(let d of I)if(d==="*"){h.reject(S.errors.exception({header:"Cache.addAll",message:"invalid vary field value"}));for(let C of s)C.abort();return}}},processResponseEndOfBody(Q){if(Q.aborted){h.reject(new DOMException("aborted","AbortError"));return}h.resolve(Q)}})),r.push(h.promise)}let i=await Promise.all(r),a=[],l=0;for(let g of i){let E={type:"put",request:n[l],response:g};a.push(E),l++}let c=Dr(),u=null;try{this.#t(a)}catch(g){u=g}return queueMicrotask(()=>{u===null?c.resolve(void 0):c.reject(u)}),c.promise}async put(t,A){S.brandCheck(this,e);let r="Cache.put";S.argumentLengthCheck(arguments,2,r),t=S.converters.RequestInfo(t,r,"request"),A=S.converters.Response(A,r,"response");let n=null;if(t instanceof xt?n=t[lt]:n=new xt(t)[lt],!No(n.url)||n.method!=="GET")throw S.errors.exception({header:r,message:"Expected an http/s scheme when method is not GET"});let s=A[lt];if(s.status===206)throw S.errors.exception({header:r,message:"Got 206 status"});if(s.headersList.contains("vary")){let E=Il(s.headersList.get("vary"));for(let h of E)if(h==="*")throw S.errors.exception({header:r,message:"Got * vary field value"})}if(s.body&&(dF(s.body.stream)||s.body.stream.locked))throw S.errors.exception({header:r,message:"Response body is locked or disturbed"});let o=QF(s),i=Dr();if(s.body!=null){let h=s.body.stream.getReader();fF(h).then(i.resolve,i.reject)}else i.resolve(void 0);let a=[],l={type:"put",request:n,response:o};a.push(l);let c=await i.promise;o.body!=null&&(o.body.source=c);let u=Dr(),g=null;try{this.#t(a)}catch(E){g=E}return queueMicrotask(()=>{g===null?u.resolve():u.reject(g)}),u.promise}async delete(t,A={}){S.brandCheck(this,e);let r="Cache.delete";S.argumentLengthCheck(arguments,1,r),t=S.converters.RequestInfo(t,r,"request"),A=S.converters.CacheQueryOptions(A,r,"options");let n=null;if(t instanceof xt){if(n=t[lt],n.method!=="GET"&&!A.ignoreMethod)return!1}else Bl(typeof t=="string"),n=new xt(t)[lt];let s=[],o={type:"delete",request:n,options:A};s.push(o);let i=Dr(),a=null,l;try{l=this.#t(s)}catch(c){a=c}return queueMicrotask(()=>{a===null?i.resolve(!!l?.length):i.reject(a)}),i.promise}async keys(t=void 0,A={}){S.brandCheck(this,e);let r="Cache.keys";t!==void 0&&(t=S.converters.RequestInfo(t,r,"request")),A=S.converters.CacheQueryOptions(A,r,"options");let n=null;if(t!==void 0)if(t instanceof xt){if(n=t[lt],n.method!=="GET"&&!A.ignoreMethod)return[]}else typeof t=="string"&&(n=new xt(t)[lt]);let s=Dr(),o=[];if(t===void 0)for(let i of this.#e)o.push(i[0]);else{let i=this.#A(n,A);for(let a of i)o.push(a[0])}return queueMicrotask(()=>{let i=[];for(let a of o){let l=BF(a,new AbortController().signal,"immutable");i.push(l)}s.resolve(Object.freeze(i))}),s.promise}#t(t){let A=this.#e,r=[...A],n=[],s=[];try{for(let o of t){if(o.type!=="delete"&&o.type!=="put")throw S.errors.exception({header:"Cache.#batchCacheOperations",message:'operation type does not match "delete" or "put"'});if(o.type==="delete"&&o.response!=null)throw S.errors.exception({header:"Cache.#batchCacheOperations",message:"delete operation should not have an associated response"});if(this.#A(o.request,o.options,n).length)throw new DOMException("???","InvalidStateError");let i;if(o.type==="delete"){if(i=this.#A(o.request,o.options),i.length===0)return[];for(let a of i){let l=A.indexOf(a);Bl(l!==-1),A.splice(l,1)}}else if(o.type==="put"){if(o.response==null)throw S.errors.exception({header:"Cache.#batchCacheOperations",message:"put operation should have an associated response"});let a=o.request;if(!No(a.url))throw S.errors.exception({header:"Cache.#batchCacheOperations",message:"expected http or https scheme"});if(a.method!=="GET")throw S.errors.exception({header:"Cache.#batchCacheOperations",message:"not get method"});if(o.options!=null)throw S.errors.exception({header:"Cache.#batchCacheOperations",message:"options must not be defined"});i=this.#A(o.request);for(let l of i){let c=A.indexOf(l);Bl(c!==-1),A.splice(c,1)}A.push([o.request,o.response]),n.push([o.request,o.response])}s.push([o.request,o.response])}return s}catch(o){throw this.#e.length=0,this.#e=r,o}}#A(t,A,r){let n=[],s=r??this.#e;for(let o of s){let[i,a]=o;this.#s(t,i,a,A)&&n.push(o)}return n}#s(t,A,r=null,n){let s=new URL(t.url),o=new URL(A.url);if(n?.ignoreSearch&&(o.search="",s.search=""),!EF(s,o,!0))return!1;if(r==null||n?.ignoreVary||!r.headersList.contains("vary"))return!0;let i=Il(r.headersList.get("vary"));for(let a of i){if(a==="*")return!1;let l=A.headersList.get(a),c=t.headersList.get(a);if(l!==c)return!1}return!0}#n(t,A,r=1/0){let n=null;if(t!==void 0)if(t instanceof xt){if(n=t[lt],n.method!=="GET"&&!A.ignoreMethod)return[]}else typeof t=="string"&&(n=new xt(t)[lt]);let s=[];if(t===void 0)for(let i of this.#e)s.push(i[1]);else{let i=this.#A(n,A);for(let a of i)s.push(a[1])}let o=[];for(let i of s){let a=IF(i,"immutable");if(o.push(a.clone()),o.length>=r)break}return Object.freeze(o)}};Object.defineProperties(Fo.prototype,{[Symbol.toStringTag]:{value:"Cache",configurable:!0},match:MA,matchAll:MA,add:MA,addAll:MA,put:MA,delete:MA,keys:MA});var OB=[{key:"ignoreSearch",converter:S.converters.boolean,defaultValue:()=>!1},{key:"ignoreMethod",converter:S.converters.boolean,defaultValue:()=>!1},{key:"ignoreVary",converter:S.converters.boolean,defaultValue:()=>!1}];S.converters.CacheQueryOptions=S.dictionaryConverter(OB);S.converters.MultiCacheQueryOptions=S.dictionaryConverter([...OB,{key:"cacheName",converter:S.converters.DOMString}]);S.converters.Response=S.interfaceConverter(hF);S.converters["sequence<RequestInfo>"]=S.sequenceConverter(S.converters.RequestInfo);WB.exports={Cache:Fo}});var KB=p((b2,zB)=>{"use strict";var{kConstruct:Ln}=Ro(),{Cache:Uo}=_B(),{webidl:Ce}=de(),{kEnumerableProperty:xn}=Y(),Mo=class e{#e=new Map;constructor(){arguments[0]!==Ln&&Ce.illegalConstructor(),Ce.util.markAsUncloneable(this)}async match(t,A={}){if(Ce.brandCheck(this,e),Ce.argumentLengthCheck(arguments,1,"CacheStorage.match"),t=Ce.converters.RequestInfo(t),A=Ce.converters.MultiCacheQueryOptions(A),A.cacheName!=null){if(this.#e.has(A.cacheName)){let r=this.#e.get(A.cacheName);return await new Uo(Ln,r).match(t,A)}}else for(let r of this.#e.values()){let s=await new Uo(Ln,r).match(t,A);if(s!==void 0)return s}}async has(t){Ce.brandCheck(this,e);let A="CacheStorage.has";return Ce.argumentLengthCheck(arguments,1,A),t=Ce.converters.DOMString(t,A,"cacheName"),this.#e.has(t)}async open(t){Ce.brandCheck(this,e);let A="CacheStorage.open";if(Ce.argumentLengthCheck(arguments,1,A),t=Ce.converters.DOMString(t,A,"cacheName"),this.#e.has(t)){let n=this.#e.get(t);return new Uo(Ln,n)}let r=[];return this.#e.set(t,r),new Uo(Ln,r)}async delete(t){Ce.brandCheck(this,e);let A="CacheStorage.delete";return Ce.argumentLengthCheck(arguments,1,A),t=Ce.converters.DOMString(t,A,"cacheName"),this.#e.delete(t)}async keys(){return Ce.brandCheck(this,e),[...this.#e.keys()]}};Object.defineProperties(Mo.prototype,{[Symbol.toStringTag]:{value:"CacheStorage",configurable:!0},match:xn,has:xn,open:xn,delete:xn,keys:xn});zB.exports={CacheStorage:Mo}});var $B=p((k2,ZB)=>{"use strict";ZB.exports={maxAttributeValueSize:1024,maxNameValuePairSize:4096}});var pl=p((D2,tC)=>{"use strict";function pF(e){for(let t=0;t<e.length;++t){let A=e.charCodeAt(t);if(A>=0&&A<=8||A>=10&&A<=31||A===127)return!0}return!1}function Cl(e){for(let t=0;t<e.length;++t){let A=e.charCodeAt(t);if(A<33||A>126||A===34||A===40||A===41||A===60||A===62||A===64||A===44||A===59||A===58||A===92||A===47||A===91||A===93||A===63||A===61||A===123||A===125)throw new Error("Invalid cookie name")}}function fl(e){let t=e.length,A=0;if(e[0]==='"'){if(t===1||e[t-1]!=='"')throw new Error("Invalid cookie value");--t,++A}for(;A<t;){let r=e.charCodeAt(A++);if(r<33||r>126||r===34||r===44||r===59||r===92)throw new Error("Invalid cookie value")}}function jB(e){for(let t=0;t<e.length;++t){let A=e.charCodeAt(t);if(A<32||A>126||A===59)throw new Error("Invalid cookie path")}}function XB(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122}function mF(e){if(e===" ")return;if(e.length>255)throw new Error("Invalid cookie domain");let t=0;for(let A=0;A<e.length;++A){let r=e.charCodeAt(A);if(r===46){if(t===0)throw new Error("Invalid cookie domain");if(e.charCodeAt(A-1)===45)throw new Error("Invalid cookie domain");t=0;continue}if(t===0&&!XB(r))throw new Error("Invalid cookie domain");if(!XB(r)&&r!==45)throw new Error("Invalid cookie domain");if(++t>63)throw new Error("Invalid cookie domain")}if(t===0||e.charCodeAt(e.length-1)===45)throw new Error("Invalid cookie domain")}var yF=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wF=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Lo=Array(61).fill(0).map((e,t)=>t.toString().padStart(2,"0"));function eC(e){return typeof e=="number"&&(e=new Date(e)),`${yF[e.getUTCDay()]}, ${Lo[e.getUTCDate()]} ${wF[e.getUTCMonth()]} ${e.getUTCFullYear()} ${Lo[e.getUTCHours()]}:${Lo[e.getUTCMinutes()]}:${Lo[e.getUTCSeconds()]} GMT`}function bF(e){if(e<0)throw new Error("Invalid cookie max-age")}function kF(e){if(e.name.length===0)return null;Cl(e.name),fl(e.value);let t=[`${e.name}=${e.value}`];e.name.startsWith("__Secure-")&&(e.secure=!0),e.name.startsWith("__Host-")&&(e.secure=!0,e.domain=null,e.path="/"),e.secure&&t.push("Secure"),e.httpOnly&&t.push("HttpOnly"),typeof e.maxAge=="number"&&(bF(e.maxAge),t.push(`Max-Age=${e.maxAge}`)),e.domain&&(mF(e.domain),t.push(`Domain=${e.domain}`)),e.path&&(jB(e.path),t.push(`Path=${e.path}`)),e.expires&&e.expires.toString()!=="Invalid Date"&&t.push(`Expires=${eC(e.expires)}`),e.sameSite&&t.push(`SameSite=${e.sameSite}`);for(let A of e.unparsed){if(!A.includes("="))throw new Error("Invalid unparsed");let[r,...n]=A.split("="),s=r.trim(),o=n.join("=");Cl(s),fl(o),t.push(`${s}=${o}`)}return t.join("; ")}tC.exports={isCTLExcludingHtab:pF,validateCookieName:Cl,validateCookiePath:jB,validateCookieValue:fl,toIMFDate:eC,stringify:kF}});var rC=p((S2,AC)=>{"use strict";var{maxNameValuePairSize:DF,maxAttributeValueSize:SF}=$B(),{isCTLExcludingHtab:RF}=pl(),{collectASequenceOfCodePointsFast:xo}=ke(),NF=f("node:assert");function FF(e){if(RF(e))return null;let t="",A="",r="",n="";if(e.includes(";")){let s={position:0};t=xo(";",e,s),A=e.slice(s.position)}else t=e;if(!t.includes("="))n=t;else{let s={position:0};r=xo("=",t,s),n=t.slice(s.position+1)}return r=r.trim(),n=n.trim(),r.length+n.length>DF?null:{name:r,value:n,...Sr(A)}}function Sr(e,t={}){if(e.length===0)return t;NF(e[0]===";"),e=e.slice(1);let A="";e.includes(";")?(A=xo(";",e,{position:0}),e=e.slice(A.length)):(A=e,e="");let r="",n="";if(A.includes("=")){let o={position:0};r=xo("=",A,o),n=A.slice(o.position+1)}else r=A;if(r=r.trim(),n=n.trim(),n.length>SF)return Sr(e,t);let s=r.toLowerCase();if(s==="expires"){let o=new Date(n);t.expires=o}else if(s==="max-age"){let o=n.charCodeAt(0);if((o<48||o>57)&&n[0]!=="-"||!/^\d+$/.test(n))return Sr(e,t);let i=Number(n);t.maxAge=i}else if(s==="domain"){let o=n;o[0]==="."&&(o=o.slice(1)),o=o.toLowerCase(),t.domain=o}else if(s==="path"){let o="";n.length===0||n[0]!=="/"?o="/":o=n,t.path=o}else if(s==="secure")t.secure=!0;else if(s==="httponly")t.httpOnly=!0;else if(s==="samesite"){let o=n.toLowerCase();o==="none"?t.sameSite="None":o==="strict"?t.sameSite="Strict":o==="lax"&&(t.sameSite="Lax")}else t.unparsed??=[],t.unparsed.push(`${r}=${n}`);return Sr(e,t)}AC.exports={parseSetCookie:FF,parseUnparsedAttributes:Sr}});var oC=p((R2,sC)=>{"use strict";var{parseSetCookie:UF}=rC(),{stringify:MF}=pl(),{webidl:J}=de(),{Headers:To}=SA();function LF(e){J.argumentLengthCheck(arguments,1,"getCookies"),J.brandCheck(e,To,{strict:!1});let t=e.get("cookie"),A={};if(!t)return A;for(let r of t.split(";")){let[n,...s]=r.split("=");A[n.trim()]=s.join("=")}return A}function xF(e,t,A){J.brandCheck(e,To,{strict:!1});let r="deleteCookie";J.argumentLengthCheck(arguments,2,r),t=J.converters.DOMString(t,r,"name"),A=J.converters.DeleteCookieAttributes(A),nC(e,{name:t,value:"",expires:new Date(0),...A})}function TF(e){J.argumentLengthCheck(arguments,1,"getSetCookies"),J.brandCheck(e,To,{strict:!1});let t=e.getSetCookie();return t?t.map(A=>UF(A)):[]}function nC(e,t){J.argumentLengthCheck(arguments,2,"setCookie"),J.brandCheck(e,To,{strict:!1}),t=J.converters.Cookie(t);let A=MF(t);A&&e.append("Set-Cookie",A)}J.converters.DeleteCookieAttributes=J.dictionaryConverter([{converter:J.nullableConverter(J.converters.DOMString),key:"path",defaultValue:()=>null},{converter:J.nullableConverter(J.converters.DOMString),key:"domain",defaultValue:()=>null}]);J.converters.Cookie=J.dictionaryConverter([{converter:J.converters.DOMString,key:"name"},{converter:J.converters.DOMString,key:"value"},{converter:J.nullableConverter(e=>typeof e=="number"?J.converters["unsigned long long"](e):new Date(e)),key:"expires",defaultValue:()=>null},{converter:J.nullableConverter(J.converters["long long"]),key:"maxAge",defaultValue:()=>null},{converter:J.nullableConverter(J.converters.DOMString),key:"domain",defaultValue:()=>null},{converter:J.nullableConverter(J.converters.DOMString),key:"path",defaultValue:()=>null},{converter:J.nullableConverter(J.converters.boolean),key:"secure",defaultValue:()=>null},{converter:J.nullableConverter(J.converters.boolean),key:"httpOnly",defaultValue:()=>null},{converter:J.converters.USVString,key:"sameSite",allowedValues:["Strict","Lax","None"]},{converter:J.sequenceConverter(J.converters.DOMString),key:"unparsed",defaultValue:()=>new Array(0)}]);sC.exports={getCookies:LF,deleteCookie:xF,getSetCookies:TF,setCookie:nC}});var Nr=p((N2,aC)=>{"use strict";var{webidl:D}=de(),{kEnumerableProperty:Ne}=Y(),{kConstruct:iC}=ee(),{MessagePort:vF}=f("node:worker_threads"),Rr=class e extends Event{#e;constructor(t,A={}){if(t===iC){super(arguments[1],arguments[2]),D.util.markAsUncloneable(this);return}let r="MessageEvent constructor";D.argumentLengthCheck(arguments,1,r),t=D.converters.DOMString(t,r,"type"),A=D.converters.MessageEventInit(A,r,"eventInitDict"),super(t,A),this.#e=A,D.util.markAsUncloneable(this)}get data(){return D.brandCheck(this,e),this.#e.data}get origin(){return D.brandCheck(this,e),this.#e.origin}get lastEventId(){return D.brandCheck(this,e),this.#e.lastEventId}get source(){return D.brandCheck(this,e),this.#e.source}get ports(){return D.brandCheck(this,e),Object.isFrozen(this.#e.ports)||Object.freeze(this.#e.ports),this.#e.ports}initMessageEvent(t,A=!1,r=!1,n=null,s="",o="",i=null,a=[]){return D.brandCheck(this,e),D.argumentLengthCheck(arguments,1,"MessageEvent.initMessageEvent"),new e(t,{bubbles:A,cancelable:r,data:n,origin:s,lastEventId:o,source:i,ports:a})}static createFastMessageEvent(t,A){let r=new e(iC,t,A);return r.#e=A,r.#e.data??=null,r.#e.origin??="",r.#e.lastEventId??="",r.#e.source??=null,r.#e.ports??=[],r}},{createFastMessageEvent:GF}=Rr;delete Rr.createFastMessageEvent;var vo=class e extends Event{#e;constructor(t,A={}){let r="CloseEvent constructor";D.argumentLengthCheck(arguments,1,r),t=D.converters.DOMString(t,r,"type"),A=D.converters.CloseEventInit(A),super(t,A),this.#e=A,D.util.markAsUncloneable(this)}get wasClean(){return D.brandCheck(this,e),this.#e.wasClean}get code(){return D.brandCheck(this,e),this.#e.code}get reason(){return D.brandCheck(this,e),this.#e.reason}},Go=class e extends Event{#e;constructor(t,A){let r="ErrorEvent constructor";D.argumentLengthCheck(arguments,1,r),super(t,A),D.util.markAsUncloneable(this),t=D.converters.DOMString(t,r,"type"),A=D.converters.ErrorEventInit(A??{}),this.#e=A}get message(){return D.brandCheck(this,e),this.#e.message}get filename(){return D.brandCheck(this,e),this.#e.filename}get lineno(){return D.brandCheck(this,e),this.#e.lineno}get colno(){return D.brandCheck(this,e),this.#e.colno}get error(){return D.brandCheck(this,e),this.#e.error}};Object.defineProperties(Rr.prototype,{[Symbol.toStringTag]:{value:"MessageEvent",configurable:!0},data:Ne,origin:Ne,lastEventId:Ne,source:Ne,ports:Ne,initMessageEvent:Ne});Object.defineProperties(vo.prototype,{[Symbol.toStringTag]:{value:"CloseEvent",configurable:!0},reason:Ne,code:Ne,wasClean:Ne});Object.defineProperties(Go.prototype,{[Symbol.toStringTag]:{value:"ErrorEvent",configurable:!0},message:Ne,filename:Ne,lineno:Ne,colno:Ne,error:Ne});D.converters.MessagePort=D.interfaceConverter(vF);D.converters["sequence<MessagePort>"]=D.sequenceConverter(D.converters.MessagePort);var ml=[{key:"bubbles",converter:D.converters.boolean,defaultValue:()=>!1},{key:"cancelable",converter:D.converters.boolean,defaultValue:()=>!1},{key:"composed",converter:D.converters.boolean,defaultValue:()=>!1}];D.converters.MessageEventInit=D.dictionaryConverter([...ml,{key:"data",converter:D.converters.any,defaultValue:()=>null},{key:"origin",converter:D.converters.USVString,defaultValue:()=>""},{key:"lastEventId",converter:D.converters.DOMString,defaultValue:()=>""},{key:"source",converter:D.nullableConverter(D.converters.MessagePort),defaultValue:()=>null},{key:"ports",converter:D.converters["sequence<MessagePort>"],defaultValue:()=>new Array(0)}]);D.converters.CloseEventInit=D.dictionaryConverter([...ml,{key:"wasClean",converter:D.converters.boolean,defaultValue:()=>!1},{key:"code",converter:D.converters["unsigned short"],defaultValue:()=>0},{key:"reason",converter:D.converters.USVString,defaultValue:()=>""}]);D.converters.ErrorEventInit=D.dictionaryConverter([...ml,{key:"message",converter:D.converters.DOMString,defaultValue:()=>""},{key:"filename",converter:D.converters.USVString,defaultValue:()=>""},{key:"lineno",converter:D.converters["unsigned long"],defaultValue:()=>0},{key:"colno",converter:D.converters["unsigned long"],defaultValue:()=>0},{key:"error",converter:D.converters.any}]);aC.exports={MessageEvent:Rr,CloseEvent:vo,ErrorEvent:Go,createFastMessageEvent:GF}});var LA=p((F2,cC)=>{"use strict";var YF="258EAFA5-E914-47DA-95CA-C5AB0DC85B11",HF={enumerable:!0,writable:!1,configurable:!1},JF={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3},VF={NOT_SENT:0,PROCESSING:1,SENT:2},qF={CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10},PF=2**16-1,OF={INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4},WF=Buffer.allocUnsafe(0),_F={string:1,typedArray:2,arrayBuffer:3,blob:4};cC.exports={uid:YF,sentCloseFrameState:VF,staticPropertyDescriptors:HF,states:JF,opcodes:qF,maxUnsigned16Bit:PF,parserStates:OF,emptyBuffer:WF,sendHints:_F}});var Tn=p((U2,lC)=>{"use strict";lC.exports={kWebSocketURL:Symbol("url"),kReadyState:Symbol("ready state"),kController:Symbol("controller"),kResponse:Symbol("response"),kBinaryType:Symbol("binary type"),kSentClose:Symbol("sent close"),kReceivedClose:Symbol("received close"),kByteParser:Symbol("byte parser")}});var Yn=p((M2,CC)=>{"use strict";var{kReadyState:vn,kController:zF,kResponse:KF,kBinaryType:ZF,kWebSocketURL:$F}=Tn(),{states:Gn,opcodes:AA}=LA(),{ErrorEvent:XF,createFastMessageEvent:jF}=Nr(),{isUtf8:eU}=f("node:buffer"),{collectASequenceOfCodePointsFast:tU,removeHTTPWhitespace:uC}=ke();function AU(e){return e[vn]===Gn.CONNECTING}function rU(e){return e[vn]===Gn.OPEN}function nU(e){return e[vn]===Gn.CLOSING}function sU(e){return e[vn]===Gn.CLOSED}function yl(e,t,A=(n,s)=>new Event(n,s),r={}){let n=A(e,r);t.dispatchEvent(n)}function oU(e,t,A){if(e[vn]!==Gn.OPEN)return;let r;if(t===AA.TEXT)try{r=BC(A)}catch{EC(e,"Received invalid UTF-8 in text frame.");return}else t===AA.BINARY&&(e[ZF]==="blob"?r=new Blob([A]):r=iU(A));yl("message",e,jF,{origin:e[$F].origin,data:r})}function iU(e){return e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}function aU(e){if(e.length===0)return!1;for(let t=0;t<e.length;++t){let A=e.charCodeAt(t);if(A<33||A>126||A===34||A===40||A===41||A===44||A===47||A===58||A===59||A===60||A===61||A===62||A===63||A===64||A===91||A===92||A===93||A===123||A===125)return!1}return!0}function cU(e){return e>=1e3&&e<1015?e!==1004&&e!==1005&&e!==1006:e>=3e3&&e<=4999}function EC(e,t){let{[zF]:A,[KF]:r}=e;A.abort(),r?.socket&&!r.socket.destroyed&&r.socket.destroy(),t&&yl("error",e,(n,s)=>new XF(n,s),{error:new Error(t),message:t})}function dC(e){return e===AA.CLOSE||e===AA.PING||e===AA.PONG}function hC(e){return e===AA.CONTINUATION}function QC(e){return e===AA.TEXT||e===AA.BINARY}function lU(e){return QC(e)||hC(e)||dC(e)}function uU(e){let t={position:0},A=new Map;for(;t.position<e.length;){let r=tU(";",e,t),[n,s=""]=r.split("=");A.set(uC(n,!0,!1),uC(s,!1,!0)),t.position++}return A}function gU(e){if(e.length===0)return!1;for(let A=0;A<e.length;A++){let r=e.charCodeAt(A);if(r<48||r>57)return!1}let t=Number.parseInt(e,10);return t>=8&&t<=15}var IC=typeof process.versions.icu=="string",gC=IC?new TextDecoder("utf-8",{fatal:!0}):void 0,BC=IC?gC.decode.bind(gC):function(e){if(eU(e))return e.toString("utf-8");throw new TypeError("Invalid utf-8 received.")};CC.exports={isConnecting:AU,isEstablished:rU,isClosing:nU,isClosed:sU,fireEvent:yl,isValidSubprotocol:aU,isValidStatusCode:cU,failWebsocketConnection:EC,websocketMessageReceived:oU,utf8Decode:BC,isControlFrame:dC,isContinuationFrame:hC,isTextBinaryFrame:QC,isValidOpcode:lU,parseExtensions:uU,isValidClientWindowBits:gU}});var Ho=p((L2,fC)=>{"use strict";var{maxUnsigned16Bit:EU}=LA(),Yo=16386,wl,Hn=null,Fr=Yo;try{wl=f("node:crypto")}catch{wl={randomFillSync:function(t,A,r){for(let n=0;n<t.length;++n)t[n]=Math.random()*255|0;return t}}}function dU(){return Fr===Yo&&(Fr=0,wl.randomFillSync(Hn??=Buffer.allocUnsafe(Yo),0,Yo)),[Hn[Fr++],Hn[Fr++],Hn[Fr++],Hn[Fr++]]}var bl=class{constructor(t){this.frameData=t}createFrame(t){let A=this.frameData,r=dU(),n=A?.byteLength??0,s=n,o=6;n>EU?(o+=8,s=127):n>125&&(o+=2,s=126);let i=Buffer.allocUnsafe(n+o);i[0]=i[1]=0,i[0]|=128,i[0]=(i[0]&240)+t;i[o-4]=r[0],i[o-3]=r[1],i[o-2]=r[2],i[o-1]=r[3],i[1]=s,s===126?i.writeUInt16BE(n,2):s===127&&(i[2]=i[3]=0,i.writeUIntBE(n,4,6)),i[1]|=128;for(let a=0;a<n;++a)i[o+a]=A[a]^r[a&3];return i}};fC.exports={WebsocketFrameSend:bl}});var Dl=p((x2,DC)=>{"use strict";var{uid:hU,states:Jn,sentCloseFrameState:Jo,emptyBuffer:QU,opcodes:IU}=LA(),{kReadyState:Vn,kSentClose:Vo,kByteParser:mC,kReceivedClose:pC,kResponse:yC}=Tn(),{fireEvent:BU,failWebsocketConnection:rA,isClosing:CU,isClosed:fU,isEstablished:pU,parseExtensions:mU}=Yn(),{channels:Ur}=VA(),{CloseEvent:yU}=Nr(),{makeRequest:wU}=wr(),{fetching:bU}=Un(),{Headers:kU,getHeadersList:DU}=SA(),{getDecodeSplit:SU}=Te(),{WebsocketFrameSend:RU}=Ho(),kl;try{kl=f("node:crypto")}catch{}function NU(e,t,A,r,n,s){let o=e;o.protocol=e.protocol==="ws:"?"http:":"https:";let i=wU({urlList:[o],client:A,serviceWorkers:"none",referrer:"no-referrer",mode:"websocket",credentials:"include",cache:"no-store",redirect:"error"});if(s.headers){let u=DU(new kU(s.headers));i.headersList=u}let a=kl.randomBytes(16).toString("base64");i.headersList.append("sec-websocket-key",a),i.headersList.append("sec-websocket-version","13");for(let u of t)i.headersList.append("sec-websocket-protocol",u);return i.headersList.append("sec-websocket-extensions","permessage-deflate; client_max_window_bits"),bU({request:i,useParallelQueue:!0,dispatcher:s.dispatcher,processResponse(u){if(u.type==="error"||u.status!==101){rA(r,"Received network error or non-101 status code.");return}if(t.length!==0&&!u.headersList.get("Sec-WebSocket-Protocol")){rA(r,"Server did not respond with sent protocols.");return}if(u.headersList.get("Upgrade")?.toLowerCase()!=="websocket"){rA(r,'Server did not set Upgrade header to "websocket".');return}if(u.headersList.get("Connection")?.toLowerCase()!=="upgrade"){rA(r,'Server did not set Connection header to "upgrade".');return}let g=u.headersList.get("Sec-WebSocket-Accept"),E=kl.createHash("sha1").update(a+hU).digest("base64");if(g!==E){rA(r,"Incorrect hash received in Sec-WebSocket-Accept header.");return}let h=u.headersList.get("Sec-WebSocket-Extensions"),Q;if(h!==null&&(Q=mU(h),!Q.has("permessage-deflate"))){rA(r,"Sec-WebSocket-Extensions header does not match.");return}let I=u.headersList.get("Sec-WebSocket-Protocol");if(I!==null&&!SU("sec-websocket-protocol",i.headersList).includes(I)){rA(r,"Protocol was not set in the opening handshake.");return}u.socket.on("data",wC),u.socket.on("close",bC),u.socket.on("error",kC),Ur.open.hasSubscribers&&Ur.open.publish({address:u.socket.address(),protocol:I,extensions:h}),n(u,Q)}})}function FU(e,t,A,r){if(!(CU(e)||fU(e)))if(!pU(e))rA(e,"Connection was closed before it was established."),e[Vn]=Jn.CLOSING;else if(e[Vo]===Jo.NOT_SENT){e[Vo]=Jo.PROCESSING;let n=new RU;t!==void 0&&A===void 0?(n.frameData=Buffer.allocUnsafe(2),n.frameData.writeUInt16BE(t,0)):t!==void 0&&A!==void 0?(n.frameData=Buffer.allocUnsafe(2+r),n.frameData.writeUInt16BE(t,0),n.frameData.write(A,2,"utf-8")):n.frameData=QU,e[yC].socket.write(n.createFrame(IU.CLOSE)),e[Vo]=Jo.SENT,e[Vn]=Jn.CLOSING}else e[Vn]=Jn.CLOSING}function wC(e){this.ws[mC].write(e)||this.pause()}function bC(){let{ws:e}=this,{[yC]:t}=e;t.socket.off("data",wC),t.socket.off("close",bC),t.socket.off("error",kC);let A=e[Vo]===Jo.SENT&&e[pC],r=1005,n="",s=e[mC].closingInfo;s&&!s.error?(r=s.code??1005,n=s.reason):e[pC]||(r=1006),e[Vn]=Jn.CLOSED,BU("close",e,(o,i)=>new yU(o,i),{wasClean:A,code:r,reason:n}),Ur.close.hasSubscribers&&Ur.close.publish({websocket:e,code:r,reason:n})}function kC(e){let{ws:t}=this;t[Vn]=Jn.CLOSING,Ur.socketError.hasSubscribers&&Ur.socketError.publish(e),this.destroy()}DC.exports={establishWebSocketConnection:NU,closeWebSocketConnection:FU}});var RC=p((T2,SC)=>{"use strict";var{createInflateRaw:UU,Z_DEFAULT_WINDOWBITS:MU}=f("node:zlib"),{isValidClientWindowBits:LU}=Yn(),{MessageSizeExceededError:xU}=O(),TU=Buffer.from([0,0,255,255]),qo=Symbol("kBuffer"),qn=Symbol("kLength"),Sl=class{#e;#t={};#A=0;constructor(t,A){this.#t.serverNoContextTakeover=t.has("server_no_context_takeover"),this.#t.serverMaxWindowBits=t.get("server_max_window_bits"),this.#A=A.maxPayloadSize}decompress(t,A,r){if(!this.#e){let n=MU;if(this.#t.serverMaxWindowBits){if(!LU(this.#t.serverMaxWindowBits)){r(new Error("Invalid server_max_window_bits"));return}n=Number.parseInt(this.#t.serverMaxWindowBits)}try{this.#e=UU({windowBits:n})}catch(s){r(s);return}this.#e[qo]=[],this.#e[qn]=0,this.#e.on("data",s=>{if(this.#e[qn]+=s.length,this.#A>0&&this.#e[qn]>this.#A){r(new xU),this.#e.removeAllListeners(),this.#e=null;return}this.#e[qo].push(s)}),this.#e.on("error",s=>{this.#e=null,r(s)})}this.#e.write(t),A&&this.#e.write(TU),this.#e.flush(()=>{if(!this.#e)return;let n=Buffer.concat(this.#e[qo],this.#e[qn]);this.#e[qo].length=0,this.#e[qn]=0,r(null,n)})}};SC.exports={PerMessageDeflate:Sl}});var YC=p((v2,GC)=>{"use strict";var{Writable:vU}=f("node:stream"),GU=f("node:assert"),{parserStates:Fe,opcodes:Mr,states:YU,emptyBuffer:NC,sentCloseFrameState:FC}=LA(),{kReadyState:HU,kSentClose:UC,kResponse:MC,kReceivedClose:LC}=Tn(),{channels:Po}=VA(),{isValidStatusCode:JU,isValidOpcode:VU,failWebsocketConnection:Pe,websocketMessageReceived:xC,utf8Decode:qU,isControlFrame:Rl,isTextBinaryFrame:Nl,isContinuationFrame:PU}=Yn(),{WebsocketFrameSend:TC}=Ho(),{closeWebSocketConnection:vC}=Dl(),{PerMessageDeflate:OU}=RC(),{MessageSizeExceededError:Fl}=O();function Pn(e,t,A){vC(e,t,A,Buffer.byteLength(A)),Pe(e,A)}var Ul=class extends vU{#e=[];#t=0;#A=0;#s=!1;#n=Fe.INFO;#r={};#o=[];#i;#c;#a;constructor(t,A,r={}){super(),this.ws=t,this.#i=A??new Map,this.#c=r.maxFragments??0,this.#a=r.maxPayloadSize??0,this.#i.has("permessage-deflate")&&this.#i.set("permessage-deflate",new OU(A,r))}_write(t,A,r){this.#e.push(t),this.#A+=t.length,this.#s=!0,this.run(r)}#l(){return this.#a>0&&!Rl(this.#r.opcode)&&this.#r.payloadLength+this.#t>this.#a?(Pn(this.ws,1009,"Payload size exceeds maximum allowed size"),!1):!0}run(t){for(;this.#s;)if(this.#n===Fe.INFO){if(this.#A<2)return t();let A=this.consume(2),r=(A[0]&128)!==0,n=A[0]&15,s=(A[1]&128)===128,o=!r&&n!==Mr.CONTINUATION,i=A[1]&127,a=A[0]&64,l=A[0]&32,c=A[0]&16;if(!VU(n))return Pe(this.ws,"Invalid opcode received"),t();if(s)return Pe(this.ws,"Frame cannot be masked"),t();if(a!==0&&!this.#i.has("permessage-deflate")){Pe(this.ws,"Expected RSV1 to be clear.");return}if(l!==0||c!==0){Pe(this.ws,"RSV1, RSV2, RSV3 must be clear");return}if(o&&!Nl(n)){Pe(this.ws,"Invalid frame type was fragmented.");return}if(Nl(n)&&this.#o.length>0){Pe(this.ws,"Expected continuation frame");return}if(this.#r.fragmented&&o){Pe(this.ws,"Fragmented frame exceeded 125 bytes.");return}if((i>125||o)&&Rl(n)){Pe(this.ws,"Control frame either too large or fragmented");return}if(PU(n)&&this.#o.length===0&&!this.#r.compressed){Pe(this.ws,"Unexpected continuation frame");return}if(i<=125){if(this.#r.payloadLength=i,this.#n=Fe.READ_DATA,!this.#l())return}else i===126?this.#n=Fe.PAYLOADLENGTH_16:i===127&&(this.#n=Fe.PAYLOADLENGTH_64);Nl(n)&&(this.#r.binaryType=n,this.#r.compressed=a!==0),this.#r.opcode=n,this.#r.masked=s,this.#r.fin=r,this.#r.fragmented=o}else if(this.#n===Fe.PAYLOADLENGTH_16){if(this.#A<2)return t();let A=this.consume(2);if(this.#r.payloadLength=A.readUInt16BE(0),this.#n=Fe.READ_DATA,!this.#l())return}else if(this.#n===Fe.PAYLOADLENGTH_64){if(this.#A<8)return t();let A=this.consume(8),r=A.readUInt32BE(0),n=A.readUInt32BE(4);if(r!==0||n>2**31-1){Pe(this.ws,"Received payload length > 2^31 bytes.");return}if(this.#r.payloadLength=n,this.#n=Fe.READ_DATA,!this.#l())return}else if(this.#n===Fe.READ_DATA){if(this.#A<this.#r.payloadLength)return t();let A=this.consume(this.#r.payloadLength);if(Rl(this.#r.opcode))this.#s=this.parseControlFrame(A),this.#n=Fe.INFO;else if(this.#r.compressed){this.#i.get("permessage-deflate").decompress(A,this.#r.fin,(r,n)=>{if(r){let s=r instanceof Fl?1009:1007;Pn(this.ws,s,r.message);return}if(this.writeFragments(n)){if(this.#a>0&&this.#t>this.#a){Pn(this.ws,1009,new Fl().message);return}if(!this.#r.fin){this.#n=Fe.INFO,this.#s=!0,this.run(t);return}xC(this.ws,this.#r.binaryType,this.consumeFragments()),this.#s=!0,this.#n=Fe.INFO,this.run(t)}}),this.#s=!1;break}else{if(!this.writeFragments(A))return;if(this.#a>0&&this.#t>this.#a){Pn(this.ws,1009,new Fl().message);return}!this.#r.fragmented&&this.#r.fin&&xC(this.ws,this.#r.binaryType,this.consumeFragments()),this.#n=Fe.INFO}}}consume(t){if(t>this.#A)throw new Error("Called consume() before buffers satiated.");if(t===0)return NC;if(this.#e[0].length===t)return this.#A-=this.#e[0].length,this.#e.shift();let A=Buffer.allocUnsafe(t),r=0;for(;r!==t;){let n=this.#e[0],{length:s}=n;if(s+r===t){A.set(this.#e.shift(),r);break}else if(s+r>t){A.set(n.subarray(0,t-r),r),this.#e[0]=n.subarray(t-r);break}else A.set(this.#e.shift(),r),r+=n.length}return this.#A-=t,A}writeFragments(t){return this.#c>0&&this.#o.length===this.#c?(Pn(this.ws,1008,"Too many message fragments"),!1):(this.#t+=t.length,this.#o.push(t),!0)}consumeFragments(){let t=this.#o;if(t.length===1)return this.#t=0,t.shift();let A=Buffer.concat(t,this.#t);return this.#o=[],this.#t=0,A}parseCloseBody(t){GU(t.length!==1);let A;if(t.length>=2&&(A=t.readUInt16BE(0)),A!==void 0&&!JU(A))return{code:1002,reason:"Invalid status code",error:!0};let r=t.subarray(2);r[0]===239&&r[1]===187&&r[2]===191&&(r=r.subarray(3));try{r=qU(r)}catch{return{code:1007,reason:"Invalid UTF-8",error:!0}}return{code:A,reason:r,error:!1}}parseControlFrame(t){let{opcode:A,payloadLength:r}=this.#r;if(A===Mr.CLOSE){if(r===1)return Pe(this.ws,"Received close frame with a 1-byte body."),!1;if(this.#r.closeInfo=this.parseCloseBody(t),this.#r.closeInfo.error){let{code:n,reason:s}=this.#r.closeInfo;return vC(this.ws,n,s,s.length),Pe(this.ws,s),!1}if(this.ws[UC]!==FC.SENT){let n=NC;this.#r.closeInfo.code&&(n=Buffer.allocUnsafe(2),n.writeUInt16BE(this.#r.closeInfo.code,0));let s=new TC(n);this.ws[MC].socket.write(s.createFrame(Mr.CLOSE),o=>{o||(this.ws[UC]=FC.SENT)})}return this.ws[HU]=YU.CLOSING,this.ws[LC]=!0,!1}else if(A===Mr.PING){if(!this.ws[LC]){let n=new TC(t);this.ws[MC].socket.write(n.createFrame(Mr.PONG)),Po.ping.hasSubscribers&&Po.ping.publish({payload:t})}}else A===Mr.PONG&&Po.pong.hasSubscribers&&Po.pong.publish({payload:t});return!0}get closingInfo(){return this.#r.closeInfo}};GC.exports={ByteParser:Ul}});var PC=p((G2,qC)=>{"use strict";var{WebsocketFrameSend:WU}=Ho(),{opcodes:HC,sendHints:Lr}=LA(),_U=Ga(),JC=Buffer[Symbol.species],Ml=class{#e=new _U;#t=!1;#A;constructor(t){this.#A=t}add(t,A,r){if(r!==Lr.blob){let s=VC(t,r);if(!this.#t)this.#A.write(s,A);else{let o={promise:null,callback:A,frame:s};this.#e.push(o)}return}let n={promise:t.arrayBuffer().then(s=>{n.promise=null,n.frame=VC(s,r)}),callback:A,frame:null};this.#e.push(n),this.#t||this.#s()}async#s(){this.#t=!0;let t=this.#e;for(;!t.isEmpty();){let A=t.shift();A.promise!==null&&await A.promise,this.#A.write(A.frame,A.callback),A.callback=A.frame=null}this.#t=!1}};function VC(e,t){return new WU(zU(e,t)).createFrame(t===Lr.string?HC.TEXT:HC.BINARY)}function zU(e,t){switch(t){case Lr.string:return Buffer.from(e);case Lr.arrayBuffer:case Lr.blob:return new JC(e);case Lr.typedArray:return new JC(e.buffer,e.byteOffset,e.byteLength)}}qC.exports={SendQueue:Ml}});var ef=p((Y2,jC)=>{"use strict";var{webidl:x}=de(),{URLSerializer:KU}=ke(),{environmentSettingsObject:OC}=Te(),{staticPropertyDescriptors:nA,states:On,sentCloseFrameState:ZU,sendHints:Oo}=LA(),{kWebSocketURL:WC,kReadyState:Ll,kController:_C,kBinaryType:Wo,kResponse:zC,kSentClose:$U,kByteParser:XU}=Tn(),{isConnecting:jU,isEstablished:eM,isClosing:tM,isValidSubprotocol:AM,fireEvent:KC}=Yn(),{establishWebSocketConnection:rM,closeWebSocketConnection:ZC}=Dl(),{ByteParser:nM}=YC(),{kEnumerableProperty:je,isBlobLike:$C}=Y(),{getGlobalDispatcher:sM}=oo(),{types:XC}=f("node:util"),{ErrorEvent:oM,CloseEvent:iM}=Nr(),{SendQueue:aM}=PC(),Oe=class e extends EventTarget{#e={open:null,error:null,close:null,message:null};#t=0;#A="";#s="";#n;constructor(t,A=[]){super(),x.util.markAsUncloneable(this);let r="WebSocket constructor";x.argumentLengthCheck(arguments,1,r);let n=x.converters["DOMString or sequence<DOMString> or WebSocketInit"](A,r,"options");t=x.converters.USVString(t,r,"url"),A=n.protocols;let s=OC.settingsObject.baseUrl,o;try{o=new URL(t,s)}catch(a){throw new DOMException(a,"SyntaxError")}if(o.protocol==="http:"?o.protocol="ws:":o.protocol==="https:"&&(o.protocol="wss:"),o.protocol!=="ws:"&&o.protocol!=="wss:")throw new DOMException(`Expected a ws: or wss: protocol, got ${o.protocol}`,"SyntaxError");if(o.hash||o.href.endsWith("#"))throw new DOMException("Got fragment","SyntaxError");if(typeof A=="string"&&(A=[A]),A.length!==new Set(A.map(a=>a.toLowerCase())).size)throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");if(A.length>0&&!A.every(a=>AM(a)))throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");this[WC]=new URL(o.href);let i=OC.settingsObject;this[_C]=rM(o,A,i,this,(a,l)=>this.#r(a,l),n),this[Ll]=e.CONNECTING,this[$U]=ZU.NOT_SENT,this[Wo]="blob"}close(t=void 0,A=void 0){x.brandCheck(this,e);let r="WebSocket.close";if(t!==void 0&&(t=x.converters["unsigned short"](t,r,"code",{clamp:!0})),A!==void 0&&(A=x.converters.USVString(A,r,"reason")),t!==void 0&&t!==1e3&&(t<3e3||t>4999))throw new DOMException("invalid code","InvalidAccessError");let n=0;if(A!==void 0&&(n=Buffer.byteLength(A),n>123))throw new DOMException(`Reason must be less than 123 bytes; received ${n}`,"SyntaxError");ZC(this,t,A,n)}send(t){x.brandCheck(this,e);let A="WebSocket.send";if(x.argumentLengthCheck(arguments,1,A),t=x.converters.WebSocketSendData(t,A,"data"),jU(this))throw new DOMException("Sent before connected.","InvalidStateError");if(!(!eM(this)||tM(this)))if(typeof t=="string"){let r=Buffer.byteLength(t);this.#t+=r,this.#n.add(t,()=>{this.#t-=r},Oo.string)}else XC.isArrayBuffer(t)?(this.#t+=t.byteLength,this.#n.add(t,()=>{this.#t-=t.byteLength},Oo.arrayBuffer)):ArrayBuffer.isView(t)?(this.#t+=t.byteLength,this.#n.add(t,()=>{this.#t-=t.byteLength},Oo.typedArray)):$C(t)&&(this.#t+=t.size,this.#n.add(t,()=>{this.#t-=t.size},Oo.blob))}get readyState(){return x.brandCheck(this,e),this[Ll]}get bufferedAmount(){return x.brandCheck(this,e),this.#t}get url(){return x.brandCheck(this,e),KU(this[WC])}get extensions(){return x.brandCheck(this,e),this.#s}get protocol(){return x.brandCheck(this,e),this.#A}get onopen(){return x.brandCheck(this,e),this.#e.open}set onopen(t){x.brandCheck(this,e),this.#e.open&&this.removeEventListener("open",this.#e.open),typeof t=="function"?(this.#e.open=t,this.addEventListener("open",t)):this.#e.open=null}get onerror(){return x.brandCheck(this,e),this.#e.error}set onerror(t){x.brandCheck(this,e),this.#e.error&&this.removeEventListener("error",this.#e.error),typeof t=="function"?(this.#e.error=t,this.addEventListener("error",t)):this.#e.error=null}get onclose(){return x.brandCheck(this,e),this.#e.close}set onclose(t){x.brandCheck(this,e),this.#e.close&&this.removeEventListener("close",this.#e.close),typeof t=="function"?(this.#e.close=t,this.addEventListener("close",t)):this.#e.close=null}get onmessage(){return x.brandCheck(this,e),this.#e.message}set onmessage(t){x.brandCheck(this,e),this.#e.message&&this.removeEventListener("message",this.#e.message),typeof t=="function"?(this.#e.message=t,this.addEventListener("message",t)):this.#e.message=null}get binaryType(){return x.brandCheck(this,e),this[Wo]}set binaryType(t){x.brandCheck(this,e),t!=="blob"&&t!=="arraybuffer"?this[Wo]="blob":this[Wo]=t}#r(t,A){this[zC]=t;let r=this[_C]?.dispatcher?.webSocketOptions,n=r?.maxFragments,s=r?.maxPayloadSize,o=new nM(this,A,{maxFragments:n,maxPayloadSize:s});o.on("drain",cM),o.on("error",lM.bind(this)),t.socket.ws=this,this[XU]=o,this.#n=new aM(t.socket),this[Ll]=On.OPEN;let i=t.headersList.get("sec-websocket-extensions");i!==null&&(this.#s=i);let a=t.headersList.get("sec-websocket-protocol");a!==null&&(this.#A=a),KC("open",this)}};Oe.CONNECTING=Oe.prototype.CONNECTING=On.CONNECTING;Oe.OPEN=Oe.prototype.OPEN=On.OPEN;Oe.CLOSING=Oe.prototype.CLOSING=On.CLOSING;Oe.CLOSED=Oe.prototype.CLOSED=On.CLOSED;Object.defineProperties(Oe.prototype,{CONNECTING:nA,OPEN:nA,CLOSING:nA,CLOSED:nA,url:je,readyState:je,bufferedAmount:je,onopen:je,onerror:je,onclose:je,close:je,onmessage:je,binaryType:je,send:je,extensions:je,protocol:je,[Symbol.toStringTag]:{value:"WebSocket",writable:!1,enumerable:!1,configurable:!0}});Object.defineProperties(Oe,{CONNECTING:nA,OPEN:nA,CLOSING:nA,CLOSED:nA});x.converters["sequence<DOMString>"]=x.sequenceConverter(x.converters.DOMString);x.converters["DOMString or sequence<DOMString>"]=function(e,t,A){return x.util.Type(e)==="Object"&&Symbol.iterator in e?x.converters["sequence<DOMString>"](e):x.converters.DOMString(e,t,A)};x.converters.WebSocketInit=x.dictionaryConverter([{key:"protocols",converter:x.converters["DOMString or sequence<DOMString>"],defaultValue:()=>new Array(0)},{key:"dispatcher",converter:x.converters.any,defaultValue:()=>sM()},{key:"headers",converter:x.nullableConverter(x.converters.HeadersInit)}]);x.converters["DOMString or sequence<DOMString> or WebSocketInit"]=function(e){return x.util.Type(e)==="Object"&&!(Symbol.iterator in e)?x.converters.WebSocketInit(e):{protocols:x.converters["DOMString or sequence<DOMString>"](e)}};x.converters.WebSocketSendData=function(e){if(x.util.Type(e)==="Object"){if($C(e))return x.converters.Blob(e,{strict:!1});if(ArrayBuffer.isView(e)||XC.isArrayBuffer(e))return x.converters.BufferSource(e)}return x.converters.USVString(e)};function cM(){this.ws[zC].socket.resume()}function lM(e){let t,A;e instanceof iM?(t=e.reason,A=e.code):t=e.message,KC("error",this,()=>new oM("error",{error:e,message:t})),ZC(this,A)}jC.exports={WebSocket:Oe}});var xl=p((H2,tf)=>{"use strict";function uM(e){return e.indexOf("\0")===-1}function gM(e){if(e.length===0)return!1;for(let t=0;t<e.length;t++)if(e.charCodeAt(t)<48||e.charCodeAt(t)>57)return!1;return!0}function EM(e){return new Promise(t=>{setTimeout(t,e).unref()})}tf.exports={isValidLastEventId:uM,isASCIINumber:gM,delay:EM}});var sf=p((J2,nf)=>{"use strict";var{Transform:dM}=f("node:stream"),{isASCIINumber:Af,isValidLastEventId:rf}=xl(),Tt=[239,187,191],Tl=10,_o=13,hM=58,QM=32,vl=class extends dM{state=null;checkBOM=!0;crlfCheck=!1;eventEndCheck=!1;buffer=null;pos=0;event={data:void 0,event:void 0,id:void 0,retry:void 0};constructor(t={}){t.readableObjectMode=!0,super(t),this.state=t.eventSourceSettings||{},t.push&&(this.push=t.push)}_transform(t,A,r){if(t.length===0){r();return}if(this.buffer?this.buffer=Buffer.concat([this.buffer,t]):this.buffer=t,this.checkBOM)switch(this.buffer.length){case 1:if(this.buffer[0]===Tt[0]){r();return}this.checkBOM=!1,r();return;case 2:if(this.buffer[0]===Tt[0]&&this.buffer[1]===Tt[1]){r();return}this.checkBOM=!1;break;case 3:if(this.buffer[0]===Tt[0]&&this.buffer[1]===Tt[1]&&this.buffer[2]===Tt[2]){this.buffer=Buffer.alloc(0),this.checkBOM=!1,r();return}this.checkBOM=!1;break;default:this.buffer[0]===Tt[0]&&this.buffer[1]===Tt[1]&&this.buffer[2]===Tt[2]&&(this.buffer=this.buffer.subarray(3)),this.checkBOM=!1;break}for(;this.pos<this.buffer.length;){if(this.eventEndCheck){if(this.crlfCheck){if(this.buffer[this.pos]===Tl){this.buffer=this.buffer.subarray(this.pos+1),this.pos=0,this.crlfCheck=!1;continue}this.crlfCheck=!1}if(this.buffer[this.pos]===Tl||this.buffer[this.pos]===_o){this.buffer[this.pos]===_o&&(this.crlfCheck=!0),this.buffer=this.buffer.subarray(this.pos+1),this.pos=0,(this.event.data!==void 0||this.event.event||this.event.id||this.event.retry)&&this.processEvent(this.event),this.clearEvent();continue}this.eventEndCheck=!1;continue}if(this.buffer[this.pos]===Tl||this.buffer[this.pos]===_o){this.buffer[this.pos]===_o&&(this.crlfCheck=!0),this.parseLine(this.buffer.subarray(0,this.pos),this.event),this.buffer=this.buffer.subarray(this.pos+1),this.pos=0,this.eventEndCheck=!0;continue}this.pos++}r()}parseLine(t,A){if(t.length===0)return;let r=t.indexOf(hM);if(r===0)return;let n="",s="";if(r!==-1){n=t.subarray(0,r).toString("utf8");let o=r+1;t[o]===QM&&++o,s=t.subarray(o).toString("utf8")}else n=t.toString("utf8"),s="";switch(n){case"data":A[n]===void 0?A[n]=s:A[n]+=`
|
|
46
|
-
${s}`;break;case"retry":Af(s)&&(A[n]=s);break;case"id":rf(s)&&(A[n]=s);break;case"event":s.length>0&&(A[n]=s);break}}processEvent(t){t.retry&&Af(t.retry)&&(this.state.reconnectionTime=parseInt(t.retry,10)),t.id&&rf(t.id)&&(this.state.lastEventId=t.id),t.data!==void 0&&this.push({type:t.event||"message",options:{data:t.data,lastEventId:this.state.lastEventId,origin:this.state.origin}})}clearEvent(){this.event={data:void 0,event:void 0,id:void 0,retry:void 0}}};nf.exports={EventSourceStream:vl}});var df=p((V2,Ef)=>{"use strict";var{pipeline:IM}=f("node:stream"),{fetching:BM}=Un(),{makeRequest:CM}=wr(),{webidl:vt}=de(),{EventSourceStream:fM}=sf(),{parseMIMEType:pM}=ke(),{createFastMessageEvent:mM}=Nr(),{isNetworkError:of}=Nn(),{delay:yM}=xl(),{kEnumerableProperty:xA}=Y(),{environmentSettingsObject:af}=Te(),cf=!1,lf=3e3,Wn=0,uf=1,_n=2,wM="anonymous",bM="use-credentials",xr=class e extends EventTarget{#e={open:null,error:null,message:null};#t=null;#A=!1;#s=Wn;#n=null;#r=null;#o;#i;constructor(t,A={}){super(),vt.util.markAsUncloneable(this);let r="EventSource constructor";vt.argumentLengthCheck(arguments,1,r),cf||(cf=!0,process.emitWarning("EventSource is experimental, expect them to change at any time.",{code:"UNDICI-ES"})),t=vt.converters.USVString(t,r,"url"),A=vt.converters.EventSourceInitDict(A,r,"eventSourceInitDict"),this.#o=A.dispatcher,this.#i={lastEventId:"",reconnectionTime:lf};let n=af,s;try{s=new URL(t,n.settingsObject.baseUrl),this.#i.origin=s.origin}catch(a){throw new DOMException(a,"SyntaxError")}this.#t=s.href;let o=wM;A.withCredentials&&(o=bM,this.#A=!0);let i={redirect:"follow",keepalive:!0,mode:"cors",credentials:o==="anonymous"?"same-origin":"omit",referrer:"no-referrer"};i.client=af.settingsObject,i.headersList=[["accept",{name:"accept",value:"text/event-stream"}]],i.cache="no-store",i.initiator="other",i.urlList=[new URL(this.#t)],this.#n=CM(i),this.#c()}get readyState(){return this.#s}get url(){return this.#t}get withCredentials(){return this.#A}#c(){if(this.#s===_n)return;this.#s=Wn;let t={request:this.#n,dispatcher:this.#o},A=r=>{of(r)&&(this.dispatchEvent(new Event("error")),this.close()),this.#a()};t.processResponseEndOfBody=A,t.processResponse=r=>{if(of(r))if(r.aborted){this.close(),this.dispatchEvent(new Event("error"));return}else{this.#a();return}let n=r.headersList.get("content-type",!0),s=n!==null?pM(n):"failure",o=s!=="failure"&&s.essence==="text/event-stream";if(r.status!==200||o===!1){this.close(),this.dispatchEvent(new Event("error"));return}this.#s=uf,this.dispatchEvent(new Event("open")),this.#i.origin=r.urlList[r.urlList.length-1].origin;let i=new fM({eventSourceSettings:this.#i,push:a=>{this.dispatchEvent(mM(a.type,a.options))}});IM(r.body.stream,i,a=>{a?.aborted===!1&&(this.close(),this.dispatchEvent(new Event("error")))})},this.#r=BM(t)}async#a(){this.#s!==_n&&(this.#s=Wn,this.dispatchEvent(new Event("error")),await yM(this.#i.reconnectionTime),this.#s===Wn&&(this.#i.lastEventId.length&&this.#n.headersList.set("last-event-id",this.#i.lastEventId,!0),this.#c()))}close(){vt.brandCheck(this,e),this.#s!==_n&&(this.#s=_n,this.#r.abort(),this.#n=null)}get onopen(){return this.#e.open}set onopen(t){this.#e.open&&this.removeEventListener("open",this.#e.open),typeof t=="function"?(this.#e.open=t,this.addEventListener("open",t)):this.#e.open=null}get onmessage(){return this.#e.message}set onmessage(t){this.#e.message&&this.removeEventListener("message",this.#e.message),typeof t=="function"?(this.#e.message=t,this.addEventListener("message",t)):this.#e.message=null}get onerror(){return this.#e.error}set onerror(t){this.#e.error&&this.removeEventListener("error",this.#e.error),typeof t=="function"?(this.#e.error=t,this.addEventListener("error",t)):this.#e.error=null}},gf={CONNECTING:{__proto__:null,configurable:!1,enumerable:!0,value:Wn,writable:!1},OPEN:{__proto__:null,configurable:!1,enumerable:!0,value:uf,writable:!1},CLOSED:{__proto__:null,configurable:!1,enumerable:!0,value:_n,writable:!1}};Object.defineProperties(xr,gf);Object.defineProperties(xr.prototype,gf);Object.defineProperties(xr.prototype,{close:xA,onerror:xA,onmessage:xA,onopen:xA,readyState:xA,url:xA,withCredentials:xA});vt.converters.EventSourceInitDict=vt.dictionaryConverter([{key:"withCredentials",converter:vt.converters.boolean,defaultValue:()=>!1},{key:"dispatcher",converter:vt.converters.any}]);Ef.exports={EventSource:xr,defaultReconnectionTime:lf}});var Bf=p((q2,L)=>{"use strict";var kM=ar(),hf=Zr(),DM=cr(),SM=uh(),RM=lr(),NM=nc(),FM=xh(),UM=Vh(),Qf=O(),Ko=Y(),{InvalidArgumentError:zo}=Qf,Tr=SQ(),MM=Xr(),LM=Yc(),xM=lI(),TM=Vc(),vM=kc(),GM=Zs(),{getGlobalDispatcher:If,setGlobalDispatcher:YM}=oo(),HM=io(),JM=Ys(),VM=Hs();Object.assign(hf.prototype,Tr);L.exports.Dispatcher=hf;L.exports.Client=kM;L.exports.Pool=DM;L.exports.BalancedPool=SM;L.exports.Agent=RM;L.exports.ProxyAgent=NM;L.exports.EnvHttpProxyAgent=FM;L.exports.RetryAgent=UM;L.exports.RetryHandler=GM;L.exports.DecoratorHandler=HM;L.exports.RedirectHandler=JM;L.exports.createRedirectInterceptor=VM;L.exports.interceptors={redirect:II(),retry:CI(),dump:pI(),dns:wI()};L.exports.buildConnector=MM;L.exports.errors=Qf;L.exports.util={parseHeaders:Ko.parseHeaders,headerNameToString:Ko.headerNameToString};function zn(e){return(t,A,r)=>{if(typeof A=="function"&&(r=A,A=null),!t||typeof t!="string"&&typeof t!="object"&&!(t instanceof URL))throw new zo("invalid url");if(A!=null&&typeof A!="object")throw new zo("invalid opts");if(A&&A.path!=null){if(typeof A.path!="string")throw new zo("invalid opts.path");let o=A.path;A.path.startsWith("/")||(o=`/${o}`),t=new URL(Ko.parseOrigin(t).origin+o)}else A||(A=typeof t=="object"?t:{}),t=Ko.parseURL(t);let{agent:n,dispatcher:s=If()}=A;if(n)throw new zo("unsupported opts.agent. Did you mean opts.client?");return e.call(s,{...A,origin:t.origin,path:t.search?`${t.pathname}${t.search}`:t.pathname,method:A.method||(A.body?"PUT":"GET")},r)}}L.exports.setGlobalDispatcher=YM;L.exports.getGlobalDispatcher=If;var qM=Un().fetch;L.exports.fetch=async function(t,A=void 0){try{return await qM(t,A)}catch(r){throw r&&typeof r=="object"&&Error.captureStackTrace(r),r}};L.exports.Headers=SA().Headers;L.exports.Response=Nn().Response;L.exports.Request=wr().Request;L.exports.FormData=sn().FormData;L.exports.File=globalThis.File??f("node:buffer").File;L.exports.FileReader=HB().FileReader;var{setGlobalOrigin:PM,getGlobalOrigin:OM}=sa();L.exports.setGlobalOrigin=PM;L.exports.getGlobalOrigin=OM;var{CacheStorage:WM}=KB(),{kConstruct:_M}=Ro();L.exports.caches=new WM(_M);var{deleteCookie:zM,getCookies:KM,getSetCookies:ZM,setCookie:$M}=oC();L.exports.deleteCookie=zM;L.exports.getCookies=KM;L.exports.getSetCookies=ZM;L.exports.setCookie=$M;var{parseMIMEType:XM,serializeAMimeType:jM}=ke();L.exports.parseMIMEType=XM;L.exports.serializeAMimeType=jM;var{CloseEvent:eL,ErrorEvent:tL,MessageEvent:AL}=Nr();L.exports.WebSocket=ef().WebSocket;L.exports.CloseEvent=eL;L.exports.ErrorEvent=tL;L.exports.MessageEvent=AL;L.exports.request=zn(Tr.request);L.exports.stream=zn(Tr.stream);L.exports.pipeline=zn(Tr.pipeline);L.exports.connect=zn(Tr.connect);L.exports.upgrade=zn(Tr.upgrade);L.exports.MockClient=LM;L.exports.MockPool=TM;L.exports.MockAgent=xM;L.exports.mockErrors=vM;var{EventSource:rL}=df();L.exports.EventSource=rL});import vr from"node:net";import nL from"node:dns";function Zo(e){let t=String(e).toLowerCase().split("%")[0];if((t.match(/::/g)||[]).length>1)return null;let A=c=>{if(!c)return[];let u=c.split(":"),g=u.at(-1);if(g?.includes(".")){let E=g.split(".").map(Number);if(E.length!==4||E.some(h=>!Number.isInteger(h)||h<0||h>255))return null;u.splice(u.length-1,1,(E[0]<<8|E[1]).toString(16),(E[2]<<8|E[3]).toString(16))}return u.some(E=>!/^[0-9a-f]{1,4}$/.test(E))?null:u.map(E=>Number.parseInt(E,16))},[r,n]=t.split("::"),s=A(r),o=A(n);if(!s||!o)return null;let i=t.includes("::"),a=8-s.length-o.length;if(!i&&a!==0||i&&a<1)return null;let l=[...s,...Array(Math.max(0,a)).fill(0),...o];return l.length!==8?null:Uint8Array.from(l.flatMap(c=>[c>>8,c&255]))}function Gl(e,t,A){let r=Math.floor(A/8),n=A%8;for(let o=0;o<r;o+=1)if(e[o]!==t[o])return!1;if(!n)return!0;let s=255<<8-n;return(e[r]&s)===(t[r]&s)}function Yl(e){if(vr.isIPv4(e)){let t=e.split(".").map(Number);return!(t[0]===0||t[0]===10||t[0]===127||t[0]>=224||t[0]===100&&t[1]>=64&&t[1]<=127||t[0]===169&&t[1]===254||t[0]===172&&t[1]>=16&&t[1]<=31||t[0]===192&&(t[1]===0||t[1]===2||t[1]===168)||t[0]===192&&t[1]===88&&t[2]===99||t[0]===198&&(t[1]===18||t[1]===19||t[1]===51)||t[0]===203&&t[1]===0&&t[2]===113)}if(vr.isIPv6(e)){let t=Zo(e);if(!t)return!1;let A=Zo("::ffff:0:0");return Gl(t,A,96)?Yl([...t.slice(12)].join(".")):Gl(t,Zo("2000::"),3)?![["2001::",23],["2001:db8::",32],["2001:10::",28],["2001:2::",48],["2002::",16],["3fff::",20]].some(([n,s])=>Gl(t,Zo(n),s)):!1}return!1}function oL(e){let t;try{t=new URL(String(e))}catch{return{ok:!1,error:`not a valid URL: ${String(e).slice(0,120)}`}}if(t.protocol!=="http:"&&t.protocol!=="https:")return{ok:!1,error:`refused protocol ${t.protocol} (only http/https)`};let A=t.hostname.toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,"");if(sL.has(A)||A.endsWith(".localhost")||A.endsWith(".internal"))return{ok:!1,error:`refused internal host ${A}`};let r=vr.isIP(A);return r!==0&&!Yl(A)?{ok:!1,error:`refused private address ${A}`}:{ok:!0,url:t,host:A,isLiteralIp:r!==0}}async function Cf(e,{lookupFn:t=nL.promises.lookup}={}){let A=oL(e);if(!A.ok)return A;if(A.isLiteralIp)return{ok:!0,url:A.url};let r;try{r=await t(A.host,{all:!0,verbatim:!0})}catch{return{ok:!1,error:`refused: ${A.host} did not resolve`}}return!Array.isArray(r)||r.length===0||r.some(n=>!Yl(n.address))?{ok:!1,error:`refused: ${A.host} resolves to a non-public address`}:{ok:!0,url:A.url,addresses:r}}async function ff(){let e,t;try{let i=await Promise.resolve().then(()=>xp(Bf(),1));e=i.Agent,t=i.fetch}catch{return null}if(typeof e!="function"||typeof t!="function")return null;let A=i=>String(i).toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,""),r=new Map,n=i=>(Array.isArray(i)?i:[i]).map(a=>typeof a=="string"?{address:a}:a).filter(a=>a&&a.address).map(a=>({address:a.address,family:a.family||(vr.isIPv6(a.address)?6:4)})),s=i=>{let a=A(i);if(vr.isIP(a))return[{address:a,family:vr.isIPv6(a)?6:4}];let l=r.get(a);if(!l||!l.length)throw new Error(`refused: unpinned host ${i} during pinned fetch`);return l},o=new e({connect:{lookup(i,a,l){let c;try{c=s(i)}catch(u){return l(u)}return a?.all?l(null,c):l(null,c[0].address,c[0].family)}}});return{dispatcher:o,fetch:(i,a={})=>t(i,{...a,dispatcher:o}),pin(i,a,l){r.set(A(i),n(typeof a=="string"?[{address:a,family:l}]:a))},resolve:s,async close(){try{await o.destroy()}catch{}}}}var sL,pf=Xn(()=>{sL=new Set(["localhost","metadata.google.internal","metadata.goog"])});import{createHash as iL}from"node:crypto";function uL(e){let t=String(e||"").toLowerCase();return bf.includes(t)||/(^|-)(api[-_]?key|key|token|secret|auth|authorization|session|cookie|signature|access)(-|$)/.test(t)}function gL(e){let t={};for(let[A,r]of Object.entries(e||{}))uL(A)||(t[A]=r);return t}function EL(e,t){if(!e)throw new Error(`HTTP redirect from ${t} missing Location`);let A=new URL(String(e),String(t));if(A.protocol!=="http:"&&A.protocol!=="https:")throw new Error(`HTTP redirect from ${t} used unsupported protocol ${A.protocol}`);return A.toString()}function dL(e,t){return new URL(String(e)).origin===new URL(String(t)).origin}function hL(e,t,A){let r={};for(let[a,l]of Object.entries(A||{}))r[a.toLowerCase()]=l;let n=Object.keys(r).filter(a=>/(^|-)(api[-_]?key|key|token|secret|auth|authorization|session|cookie|signature|access)(-|$)/.test(a)),o=[...new Set([...bf,...n])].sort().map(a=>`${a}=${r[a]??""}`).join(`
|
|
47
|
-
`),i=iL("sha256").update(o).digest("hex").slice(0,32);return`${e} ${t} ${i}`}function QL(e,t){let A=Number(t);return Number.isFinite(A)&&A>0?Math.min(A*1e3,yf):Math.min(250*2**e,yf)+Math.floor(Math.random()*100)}async function BL(e,{fetchImpl:t,method:A,headers:r,body:n,timeoutMs:s,lookupFn:o,realFetch:i}){let a=new AbortController,l=setTimeout(()=>a.abort(),s),c=null,u=t;try{let g=String(e),E={...r||{}};for(let h=0;h<=wf;h+=1){let Q=await u(g,{method:A,headers:E,body:n,signal:a.signal,redirect:"manual"}),I=await Q.text(),d=null;if(I)try{d=JSON.parse(I)}catch{d=null}if(lL.has(Q.status)){if(A!=="GET"&&A!=="HEAD"){let B=new Error(`HTTP ${Q.status} ${A} ${g} redirected non-idempotent request`);throw B.status=Q.status,B.body=d??I.slice(0,300),B}if(h===wf)throw new Error(`HTTP redirect loop for ${e}`);let C=EL(Q.headers?.get?.("location"),g);if(!dL(C,g)){let B=await Cf(C,o?{lookupFn:o}:{});if(!B.ok){let k=new Error(`HTTP redirect from ${g} ${B.error}`);throw k.status=Q.status,k}E=gL(E),i&&B.addresses?.length&&(c||(c=await ff()),c&&(c.pin(new URL(C).hostname,B.addresses[0].address,B.addresses[0].family),u=c.fetch))}g=C;continue}if(!Q.ok){let C=new Error(`HTTP ${Q.status} ${A} ${g}`);throw C.status=Q.status,C.retryAfter=Q.headers?.get?.("retry-after")??null,C.body=d??I.slice(0,300),C}return d??I}throw new Error(`HTTP redirect loop for ${e}`)}finally{clearTimeout(l),c&&await c.close()}}async function fe(e,t={}){let A=t.fetchImpl||globalThis.fetch;if(typeof A!="function")throw new Error("fetch unavailable \u2014 pass opts.fetchImpl");let r=t.timeoutMs??12e3,n=(t.method||"GET").toUpperCase(),s={Accept:"application/json",...t.headers||{}},o=t.body;o!=null&&typeof o!="string"&&(s["Content-Type"]=s["Content-Type"]||"application/json",o=JSON.stringify(o));let i=Number.isInteger(t.retries)?Math.max(t.retries,0):cL,a=t.lookupFn,l=!t.fetchImpl,c=async()=>{let Q;for(let I=0;I<=i;I++)try{return await BL(e,{fetchImpl:A,method:n,headers:s,body:o,timeoutMs:r,lookupFn:a,realFetch:l})}catch(d){Q=d;let C=d?.status,w=d?.name==="AbortError",B=new Set([408,425,429]),k=C!=null?B.has(C)||aL.has(C)&&mf.has(n):!w&&mf.has(n);if(I===i||!k)throw d;await IL(QL(I,d?.retryAfter))}throw Q};if(!(t.dedupe!==!1&&n==="GET"&&o==null))return c();let g=hL(n,e,s),E=Hl.get(g);if(E)return E;let h=c().finally(()=>Hl.delete(g));return Hl.set(g,h),h}async function he(e){let t=Date.now();try{let A=await e();return{ok:!0,ms:Date.now()-t,data:A}}catch(A){return{ok:!1,ms:Date.now()-t,error:String(A.message||A),status:A.status??null}}}async function sA(e,t,A){let r=Array.from(e),n=Math.max(1,Math.min(Number(t)||1,r.length||1)),s=new Array(r.length),o=0;return await Promise.all(Array.from({length:n},async()=>{for(;o<r.length;){let i=o++;s[i]=await A(r[i],i)}})),s}var aL,mf,cL,yf,bf,lL,wf,Hl,IL,Ue=Xn(()=>{pf();aL=new Set([408,425,429,500,502,503,504]),mf=new Set(["GET","HEAD","OPTIONS","PUT","DELETE"]),cL=2,yf=4e3,bf=["authorization","x-api-key","x-tensor-api-key","0x-api-key","api-key","cookie","proxy-authorization"],lL=new Set([301,302,303,307,308]),wf=3;Hl=new Map;IL=e=>new Promise(t=>setTimeout(t,e))});function Df(e){return CL.get(Number(e))||null}function Sf(e,t=process.env){let A=Df(e);if(!A)return null;for(let r of A.rpcEnv){let n=(t[r]||"").trim();if(n)return n}return null}var kf,CL,Rf=Xn(()=>{kf={robinhood:{chainId:4663,name:"Robinhood Chain",rpcEnv:["RH_CHAIN_RPC"],evm:!0},ethereum:{chainId:1,name:"Ethereum",rpcEnv:["ETH_RPC_URL","ETHEREUM_RPC_URL","MAINNET_RPC_URL"],evm:!0},polygon:{chainId:137,name:"Polygon",rpcEnv:["POLYGON_RPC_URL","POLYGON_RPC"],evm:!0},arbitrum:{chainId:42161,name:"Arbitrum One",rpcEnv:["ARBITRUM_RPC_URL","ARB_RPC_URL"],evm:!0},base:{chainId:8453,name:"Base",rpcEnv:["BASE_RPC_URL"],evm:!0},hyperevm:{chainId:999,name:"HyperEVM",rpcEnv:["HYPEREVM_RPC_URL","HYPER_EVM_RPC"],evm:!0},bsc:{chainId:56,name:"BNB Smart Chain",rpcEnv:["BSC_RPC_URL","BNB_RPC_URL"],evm:!0},avalanche:{chainId:43114,name:"Avalanche C-Chain",rpcEnv:["AVALANCHE_RPC_URL","AVAX_RPC_URL"],evm:!0},optimism:{chainId:10,name:"OP Mainnet",rpcEnv:["OPTIMISM_RPC_URL","OP_RPC_URL"],evm:!0},abstract:{chainId:2741,name:"Abstract",rpcEnv:["ABSTRACT_RPC_URL","ABS_RPC_URL"],evm:!0},stable:{chainId:988,name:"Stable Mainnet",rpcEnv:["STABLE_RPC_URL","STABLE_RPC"],evm:!0}},CL=new Map(Object.values(kf).map(e=>[e.chainId,e]))});import{Interface as fL,getAddress as pL}from"ethers";function Jl(e,t){try{return pL(e).toLowerCase()}catch{throw new Error(`${t} must be a valid EVM address`)}}function yL(e,{rpcUrl:t,env:A=process.env}={}){if(t)return t;let r=Sf(e,A);return r||mL[Number(e)]||null}function bL(e){let t=String(e||""),A=t.toLowerCase();if(t!==t.trim()||!/^[a-zA-Z0-9_]+$/.test(t)||!wL.test(A))throw new Error(`evm-rpc: ${t} refused \u2014 @oracle-agent/oracle is prepare-only (read RPC only; no broadcast/sign)`);return A}async function yt(e,t,A=[],r={}){let n=String(t||"");bL(n);let s=yL(e,r);if(!s)throw new Error(`No RPC URL for chainId ${e} (set env from chain registry rpcEnv or pass rpcUrl)`);let i=await fe(s,{method:"POST",body:{jsonrpc:"2.0",id:1,method:t,params:A},fetchImpl:r.fetchImpl,timeoutMs:r.timeoutMs??12e3});if(i?.error){let a=new Error(i.error.message||JSON.stringify(i.error));throw a.code=i.error.code,a}return i.result}async function Vl(e,t={}){let A=await yt(e,"eth_blockNumber",[],t);return parseInt(A,16)}async function ql(e,t,A={}){if(!t)throw new Error("rpcGetBalance requires address");let r=await yt(e,"eth_getBalance",[t,"latest"],A);return{chainId:Number(e),address:t,balanceWei:BigInt(r).toString(),balanceHex:r}}async function Ff(e={},t={}){let A=Number(e.chainId??t.chainId??1),r=Jl(e.token||e.tokenAddress,"token"),n=Jl(e.owner,"owner"),s=Jl(e.spender,"spender"),o=Nf.encodeFunctionData("allowance",[n,s]),i=await yt(A,"eth_call",[{to:r,data:o},e.blockTag||"latest"],t),a=Nf.decodeFunctionResult("allowance",i),l=BigInt(a[0]);return{chainId:A,token:r,owner:n,spender:s,allowance:l.toString(),allowanceHex:`0x${l.toString(16)}`,blockTag:e.blockTag||"latest"}}var Nf,mL,wL,Gr=Xn(()=>{Ue();Rf();Nf=new fL(["function allowance(address owner,address spender) view returns (uint256)","function balanceOf(address account) view returns (uint256)"]);mL={1:"https://ethereum.publicnode.com",137:"https://polygon-bor-rpc.publicnode.com",42161:"https://arbitrum-one-rpc.publicnode.com",8453:"https://base-rpc.publicnode.com",10:"https://optimism-rpc.publicnode.com",988:"https://rpc.stable.xyz",56:"https://bsc-rpc.publicnode.com",43114:"https://avalanche-c-chain-rpc.publicnode.com",999:"https://rpc.hyperliquid.xyz/evm",2741:"https://api.mainnet.abs.xyz",4663:"https://rpc.mainnet.chain.robinhood.com"};wL=/^(?:eth_(?:call|blocknumber|chainid|get[a-z0-9]+|feehistory|gasprice|maxpriorityfeepergas|syncing|protocolversion|estimategas|createaccesslist)|net_(?:version|listening|peercount)|web3_(?:clientversion|sha3))$/});import{createServer as tT}from"node:http";import{readFileSync as yp,existsSync as AT}from"node:fs";import{dirname as rT,join as hu,normalize as nT,sep as sT}from"node:path";import{fileURLToPath as oT}from"node:url";import{createHash as Tp}from"node:crypto";var Wr=1,mu=Object.freeze(["chainId","agentAddress","accountAddress","actions","targets","maxValueWei","maxGasWei","maxSlippageBps","expiresAt","nonce","revocationKey"]),vp=Object.freeze(["read","simulate"]),yu=1e4,wu=1440*60,bu=128,ku=256,Du=64,Su=256,Ru=/^0x[0-9a-fA-F]{40}$/,Gp=/^[a-z][a-z0-9_-]*:[a-z0-9._-]+$/,Yp=/^[a-z][a-z0-9_-]*:\*$/,Hp=/^[A-Za-z0-9._:-]+$/,Jp=/^[A-Za-z0-9._:-]+$/,Nu=/^(0|[1-9][0-9]*)$/,gt=class extends Error{constructor(t){let A=t.map(r=>`${r.field}: ${r.message}`);super(`invalid grant (${t.length} error${t.length===1?"":"s"}): ${A.join("; ")}`),this.name="GrantValidationError",this.errors=t}};function Fu(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function Vp(e){if(typeof e=="bigint")return e>=0n?e.toString(10):null;if(typeof e=="number")return!Number.isSafeInteger(e)||e<0?null:String(e);if(typeof e=="string"){let t=e.trim();return Nu.test(t)?t:null}return null}function Jt(e){if(typeof e=="bigint")return e<0n||e>BigInt(Number.MAX_SAFE_INTEGER)?null:Number(e);if(typeof e=="number")return!Number.isSafeInteger(e)||e<0?null:e;if(typeof e=="string"){let t=e.trim();if(!Nu.test(t))return null;let A=Number(t);return Number.isSafeInteger(A)?A:null}return null}function ci(e){let t=String(e).split(":")[0];return vp.includes(t)}function li(e,t={}){let A=[],r=(u,g)=>A.push({field:u,message:g});if(!Fu(e))return r("grant","grant must be a plain object"),{ok:!1,errors:A,grant:null};for(let u of Object.keys(e))mu.includes(u)||r(u,"unknown field is not allowed");for(let u of mu)(!(u in e)||e[u]==null)&&r(u,"required field is missing");if(A.length)return{ok:!1,errors:A,grant:null};let n={},s=Jt(e.chainId);s==null||s<=0?r("chainId","must be a positive integer chain id"):n.chainId=s;for(let u of["agentAddress","accountAddress"]){let g=e[u];typeof g!="string"||!Ru.test(g.trim())?r(u,"must be a 0x-prefixed 20-byte hex address"):n[u]=g.trim().toLowerCase()}if(!Array.isArray(e.actions)||e.actions.length===0)r("actions","must be a non-empty array of action scopes");else if(e.actions.length>Du)r("actions",`too many actions (max ${Du})`);else{let u=[];for(let g of e.actions){let E=typeof g=="string"?g.trim():null;if(!E){r("actions","action entries must be non-empty strings");continue}if(E.includes("*")){t.allowWildcardActions===!0&&Yp.test(E)?u.push(E):r("actions",`broad wildcard action "${E}" is rejected (fail closed)`);continue}if(!Gp.test(E)){r("actions",`malformed action "${E}" (expected verb:resource)`);continue}u.push(E)}n.actions=[...new Set(u)].sort()}if(!Array.isArray(e.targets))r("targets","must be an array of contract addresses");else if(e.targets.length>Su)r("targets",`too many targets (max ${Su})`);else{let u=[];for(let g of e.targets){let E=typeof g=="string"?g.trim():null;if(!E||!Ru.test(E)){r("targets",`target "${g}" must be a 0x-prefixed 20-byte hex address (wildcards not allowed)`);continue}u.push(E.toLowerCase())}if(n.targets=[...new Set(u)].sort(),n.targets.length===0&&Array.isArray(n.actions)){let g=n.actions.filter(E=>!ci(E));(g.length>0||n.actions.length===0)&&r("targets",`empty targets are only allowed for read/simulate scopes (blocked by: ${g.join(", ")||"no valid actions"})`)}}for(let u of["maxValueWei","maxGasWei"]){let g=Vp(e[u]);g==null?r(u,"must be a non-negative integer wei amount"):n[u]=g}let o=Jt(e.maxSlippageBps);o==null||o>yu?r("maxSlippageBps",`must be an integer between 0 and ${yu}`):n.maxSlippageBps=o;let i=864e10,a=Jt(e.expiresAt);if(a==null||a<=0)r("expiresAt","must be a positive unix-seconds timestamp");else if(a>i)r("expiresAt","exceeds the max unix-seconds timestamp (pass seconds, not milliseconds)");else if(n.expiresAt=a,t.now!=null){let u=Jt(t.now);u==null?r("expiresAt","opts.now must be a unix-seconds integer"):a<=u?r("expiresAt",`grant is expired (expiresAt ${a} <= now ${u})`):a-u>wu&&r("expiresAt",`grant exceeds the hard 24-hour TTL (${wu} seconds)`)}let l=typeof e.nonce=="string"?e.nonce.trim():Jt(e.nonce)!=null?String(Jt(e.nonce)):null;!l||l.length>bu||!Hp.test(l)?r("nonce",`must be a non-empty string (max ${bu} chars, [A-Za-z0-9._:-])`):n.nonce=l;let c=typeof e.revocationKey=="string"?e.revocationKey.trim():null;return!c||c.length>ku||!Jp.test(c)?r("revocationKey",`must be a non-empty public identifier (max ${ku} chars, [A-Za-z0-9._:-])`):n.revocationKey=c,A.length?{ok:!1,errors:A,grant:null}:{ok:!0,errors:[],grant:n}}function jn(e,t={}){let{ok:A,errors:r,grant:n}=li(e,t);if(!A)throw new gt(r);return n}function ui(e,t={}){let A=jn(e,t),n=Object.keys(A).sort().map(s=>`${JSON.stringify(s)}:${JSON.stringify(A[s])}`);return`{"version":${Wr},${n.join(",")}}`}function es(e,t={}){return Tp("sha256").update(ui(e,t),"utf8").digest("hex")}function Uu(e,t){let A=Jt(t),r=Jt(Fu(e)?e.expiresAt:null);return A==null||r==null?!0:r<=A}var Mu="oracle-connect-request",qp="oracle-unsigned-grant",Pp="oracle-grant-canonical-json-utf8-v1",et=class extends Error{constructor(t,A){super(`secret material must never appear in a public API object (at ${t}, rule: ${A})`),this.name="SecretLeakError",this.path=t,this.rule=A}},Op=/(private[_-]?key|secret|bearer|keystore|mnemonic|seed[_-]?phrase|passphrase|password|api[_-]?key|access[_-]?token|auth[_-]?token|session[_-]?token|signer[_-]?url|signature)/i,Wp=Object.freeze(["privkey","wif","xprv","seed"]);function gi(e){let t=String(e),A=t.toLowerCase().replace(/[\s._-]+/g,"");return Op.test(t)||Wp.includes(A)}var Lu=Object.freeze([{rule:"raw-32-byte-hex-key",re:/^0x[0-9a-fA-F]{64}$/},{rule:"raw-32-byte-hex-bare",re:/^[0-9a-fA-F]{64}$/},{rule:"extended-private-key",re:/\b(?:xprv|tprv|yprv|zprv)[1-9A-HJ-NP-Za-km-z]{107}\b/},{rule:"bitcoin-wif",re:/\b[59KLc][1-9A-HJ-NP-Za-km-z]{50,51}\b/},{rule:"bip39-mnemonic",re:/\b(?:[a-z]{3,8}\s+){11,23}[a-z]{3,8}\b/},{rule:"bearer-token",re:/bearer\s+[A-Za-z0-9._~+/=-]+/i},{rule:"pem-private-key",re:/-----BEGIN[A-Z ]*PRIVATE KEY-----/},{rule:"keystore-path",re:/keystore/i},{rule:"signer-url",re:/https?:\/\/\S*sign/i},{rule:"authorization-header",re:/authorization\s*:/i}]),xu=Object.freeze(["grantid","id","hash","sha256","sha256hex","checksum","txhash","transactionhash","blockhash","digest","userophash","commithash","prevhash","intenthash","canonicalhash","payloadhash","requestid"]);function _p(e){return e.replace(/"([A-Za-z0-9_-]+)"\s*:\s*"(?:0x)?([0-9a-fA-F]{64})"/g,(t,A)=>xu.includes(String(A).toLowerCase().replace(/[_-]/g,""))?`"${A}":"<hex64>"`:t)}function Tu(e){let t;try{t=JSON.stringify(e)}catch(n){throw new et("$",`unserializable-payload: ${String(n?.message||n)}`)}if(t===void 0)return"null";let A=_p(t);for(let{rule:n,re:s}of Lu)if(s.test(A))throw new et("$<serialized>",n);if(/(?:^|[^0-9a-fA-Fx])0x[0-9a-fA-F]{64}(?![0-9a-fA-F])/.test(A))throw new et("$<serialized>","raw-32-byte-hex-embedded");return JSON.parse(t,(n,s)=>{if(n&&gi(n))throw new et(`$<serialized>.${n}`,"forbidden-key-name");return s}),t}function _e(e,t="$",A=new Set,r=""){if(e==null)return e;if(typeof e=="string"){let n=xu.includes(String(r).toLowerCase().replace(/[_-]/g,""));for(let{rule:s,re:o}of Lu)if(!(n&&s.startsWith("raw-32-byte-hex"))&&o.test(e))throw new et(t,s);return e}if(typeof e!="object"||A.has(e)||(A.add(e),ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e;if(e instanceof Map){for(let[n,s]of e.entries()){if(typeof n=="string"&&gi(n))throw new et(`${t}[${JSON.stringify(n)}]`,"forbidden-key-name");_e(n,`${t}[key]`,A),_e(s,`${t}[${String(n)}]`,A)}return e}if(e instanceof Set){let n=0;for(let s of e.values())_e(s,`${t}[${n++}]`,A);return e}if(Array.isArray(e))return e.forEach((n,s)=>_e(n,`${t}[${s}]`,A)),e;for(let[n,s]of Object.entries(e)){if(gi(n))throw new et(`${t}.${n}`,"forbidden-key-name");_e(s,`${t}.${n}`,A,n)}return e}function _r(e){if(e&&typeof e=="object"&&!Object.isFrozen(e)){Object.freeze(e);for(let t of Object.values(e))_r(t)}return e}function vu(e,t){let A=Number(typeof e=="string"?e.trim():e);if(!Number.isSafeInteger(A)||A<=0)throw new gt([{field:t,message:"must be a positive unix-seconds integer"}]);return A}function Gu(e){if(e?.now==null)throw new gt([{field:"opts.now",message:"explicit reference time is required for live grant construction"}]);return vu(e.now,"opts.now")}function zp(e){return new Date(e*1e3).toISOString()}function Kp(e,t){let A=e.actions.every(r=>ci(r));return["ORACLE \u2014 CONNECT AGENT (unsigned grant, you sign it, we never do)","=================================================================",`Grant ID: ${t}`,`Version: ${Wr}`,`Chain: ${e.chainId}`,`Agent: ${e.agentAddress}`,`Your account: ${e.accountAddress}`,`Actions: ${e.actions.join(", ")}`,`Targets: ${e.targets.length?e.targets.join(", "):"(none \u2014 read/simulate only)"}`,`Max value: ${e.maxValueWei} wei`,`Max gas: ${e.maxGasWei} wei`,`Max slippage: ${e.maxSlippageBps} bps`,`Expires: ${zp(e.expiresAt)} (unix ${e.expiresAt})`,`Nonce: ${e.nonce}`,`Revocation: ${e.revocationKey}`,"-----------------------------------------------------------------",A?"Scope: read/simulate only \u2014 this grant cannot move funds.":"Scope: includes state-changing actions bounded by the caps above.","Self-custodial: this payload is UNSIGNED and contains public data only.","Sign the bytes below with YOUR wallet; Oracle never holds your keys."].join(`
|
|
48
|
-
`)}function Yu(e={},t={}){if(e==null||typeof e!="object"||Array.isArray(e))throw new gt([{field:"request",message:"request must be a plain object"}]);let A=Gu(t),{ttlSeconds:r,...n}=e,s={...n};if(r!=null){if(s.expiresAt!=null)throw new gt([{field:"ttlSeconds",message:"pass either ttlSeconds or expiresAt, not both"}]);let a=vu(r,"ttlSeconds");s.expiresAt=A+a}let o=jn(s,{now:A,allowWildcardActions:t.allowWildcardActions===!0}),i=_r({kind:Mu,version:Wr,grant:o});return _e(i)}function Hu(e={},t={}){let A=Gu(t),r=e&&e.kind===Mu?e.grant:e,n=jn(r,{now:A,allowWildcardActions:t.allowWildcardActions===!0}),s=ui(n),o=es(n),i=Buffer.from(s,"utf8"),a=_r({kind:qp,unsigned:!0,payload:_r({version:Wr,grantId:o,grant:n,canonical:s}),signing:_r({scheme:Pp,message:s,bytesHex:`0x${i.toString("hex")}`,byteLength:i.length,sha256:o}),render:Kp(n,o)});return _e(a)}var HA=Object.freeze({ACTIVE:"active",EXPIRED:"expired",REVOKED:"revoked",INVALID:"invalid"});function Ju(e){if(e==null)return[];if(Array.isArray(e))return e;if(e instanceof Map)return[...e.values()];if(typeof e[Symbol.iterator]=="function")return[...e];throw new TypeError("grant store must be an array, Map, or iterable of grant records")}function Zp(e){return e&&typeof e=="object"&&!Array.isArray(e)&&e.grant!=null?{grant:e.grant,revoked:e.revoked===!0||e.revokedAt!=null}:{grant:e,revoked:!1}}function Ei(e){let t=Number(typeof e=="string"?e.trim():e);if(!Number.isSafeInteger(t)||t<0)throw new TypeError("an explicit unix-seconds `now` is required (deterministic liveness, no wall-clock fallback)");return t}function $p(e,t,A){if(e==null)return!1;if(typeof e=="function")return e(t,A)===!0;let r=[t,A.revocationKey];return e instanceof Set?r.some(n=>e.has(n)):Array.isArray(e)?r.some(n=>e.includes(n)):typeof e.has=="function"?r.some(n=>e.has(n)):!1}function Vu(e,{now:t,revoked:A}={}){let r=Ei(t),{grant:n,revoked:s}=Zp(e),{ok:o,grant:i}=li(n);if(!o)return{status:HA.INVALID,id:null,grant:null};let a=es(i);return s||$p(A,a,i)?{status:HA.REVOKED,id:a,grant:i}:Uu(i,r)?{status:HA.EXPIRED,id:a,grant:i}:{status:HA.ACTIVE,id:a,grant:i}}function qu(e,{now:t,revoked:A,agentAddress:r,accountAddress:n,chainId:s}={}){let o=Ei(t),i=r!=null?String(r).trim().toLowerCase():null,a=n!=null?String(n).trim().toLowerCase():null,l=s!=null?Number(s):null,c=[];for(let u of Ju(e)){let{status:g,id:E,grant:h}=Vu(u,{now:o,revoked:A});g===HA.ACTIVE&&(i!=null&&h.agentAddress!==i||a!=null&&h.accountAddress!==a||l!=null&&h.chainId!==l||c.push(Object.freeze({id:E,grant:h})))}return c.sort((u,g)=>u.id<g.id?-1:u.id>g.id?1:0),_e(Object.freeze(c))}function Pu(e,t,{now:A,revoked:r}={}){let n=Ei(A),s=String(t??"").trim().toLowerCase();if(!/^[0-9a-f]{64}$/.test(s))return null;for(let o of Ju(e)){let i=Vu(o,{now:n,revoked:r});if(i.status!==HA.INVALID&&i.id===s)return _e(Object.freeze({id:i.id,status:i.status,grant:i.grant}))}return null}import{Interface as vf,getAddress as kL,id as Gf}from"ethers";Gr();Ue();var rG=Object.freeze({1:"ethereum",10:"optimism",56:"bsc",137:"polygon",8453:"base",42161:"arbitrum",43114:"avalanche",999:"hyperevm",4663:"robinhood"});var sG=Object.freeze(["blockNumber","nativeBalance","tokenBalance","resolveToken","resolvePools","scanBlocks","scoreRisk","quote","sellSimulation","prepareUnsignedTx"]),Pl=Object.freeze({LIVE:"LIVE",CACHED:"CACHED",STALE:"STALE",UNKNOWN:"UNKNOWN",UNAVAILABLE:"UNAVAILABLE"}),Ol=Object.freeze({PASS:"PASS",CAUTION:"CAUTION",FAIL:"FAIL",UNKNOWN:"UNKNOWN"});Gr();Gr();var $o=Object.freeze([{key:"ethereum",chainId:1,name:"Ethereum",rpcEnv:["ETH_RPC_URL","ETHEREUM_RPC_URL","MAINNET_RPC_URL"],nativeCurrency:{symbol:"ETH",decimals:18},explorer:"https://etherscan.io",dexscreenerSlug:"ethereum",venueKind:"uniswap-v3",wrappedNative:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",venues:[{kind:"quoter",address:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WETH->USDC fee 500 quoted 1908.71 USDC). A contract that correctly prices a known pair IS a working V3 quoter",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:1}},{kind:"router",address:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode on this chain and the paired quoter at the same deployment passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:1}}]},{key:"optimism",chainId:10,name:"OP Mainnet",rpcEnv:["OPTIMISM_RPC_URL","OP_RPC_URL"],nativeCurrency:{symbol:"ETH",decimals:18},explorer:"https://optimistic.etherscan.io",dexscreenerSlug:"optimism",venueKind:"uniswap-v3",wrappedNative:"0x4200000000000000000000000000000000000006",venues:[{kind:"quoter",address:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WETH->USDC fee 500 quoted 1905.23 USDC). A contract that correctly prices a known pair IS a working V3 quoter",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:10}},{kind:"router",address:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode on this chain and the paired quoter at the same deployment passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:10}}]},{key:"bsc",chainId:56,name:"BNB Smart Chain",rpcEnv:["BSC_RPC_URL","BNB_RPC_URL"],nativeCurrency:{symbol:"BNB",decimals:18},explorer:"https://bscscan.com",dexscreenerSlug:"bsc",venueKind:"uniswap-v3",wrappedNative:"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",venues:[{kind:"quoter",address:"0x78D78E420Da98ad378D7799bE8f4AF69033EB077",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WBNB->USDC fee 500 quoted 413.86 USDC). A contract that correctly prices a known pair IS a working V3 quoter",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:56}},{kind:"router",address:"0xB971eF87ede563556b2ED4b1C0b0019111Dd85d2",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode on this chain and the paired quoter at the same deployment passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:56}}]},{key:"polygon",chainId:137,name:"Polygon",rpcEnv:["POLYGON_RPC_URL","POLYGON_RPC"],nativeCurrency:{symbol:"POL",decimals:18},explorer:"https://polygonscan.com",dexscreenerSlug:"polygon",venueKind:"uniswap-v3",wrappedNative:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",venues:[{kind:"quoter",address:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WMATIC->USDC fee 500 quoted 0.0720 USDC). A contract that correctly prices a known pair IS a working V3 quoter",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:137}},{kind:"router",address:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode on this chain and the paired quoter at the same deployment passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:137}}]},{key:"stable",chainId:988,name:"Stable Mainnet",rpcEnv:["STABLE_RPC_URL","STABLE_RPC"],nativeCurrency:{symbol:"USDT0",decimals:18},venueKind:"uniswap-v3",wrappedNative:"0x5d442b349590a6048Eb2dC0eC346cAA5F47A9ab5",venues:[{kind:"quoter",address:"0xb070179E7032CdA868b53e6C1742F80c9e940d1A",label:"Uniswap V3 QuoterV2 (canonical)",verified:{method:"Stable is on the OFFICIAL Uniswap v3 Deployments List (governance-recognised 2026-05-12, UAC process completed 2026-04, deployed by Protofire), so this is a canonical deployment rather than a fork. eth_getCode returned 8273 bytes, the same size as the canonical quoter on the seven already-verified chains. Functional probe on a live pool (TOAST -> USDT0, fee 10000): 100 in -> 0.000003, 1000 -> 0.000031, 10000 -> 0.000319 USDT0. Output scales monotonically with input, which is a working quoter answering, not a revert. Two of three sampled pools carry non-zero liquidity. NOTE: the pools discovered so far are thin, so real routing size is limited -- the venue is proved, deep liquidity is not.",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-08-05",chainId:988}},{kind:"router",address:"0x32eaf9B5d5F2CD7361c5012890C943D7de84C22a",label:"Uniswap SwapRouter02 (canonical)",verified:{method:"eth_getCode returned 24497 bytes. Cross-checked on-chain rather than trusted from docs: router.factory() returns 0x88f0a512ef09175d456bc9547f914f48c013e4aa, the same v3 core factory that created the pools quoted above, and router.WETH9() returns the wrappedNative recorded on this chain entry. Address published in the Stable docs DEX reference and the Uniswap deployments list.",source:"docs.stable.xyz/en/reference/dexes + on-chain factory()/WETH9() round-trip",date:"2026-08-05",chainId:988}}]},{key:"hyperevm",chainId:999,name:"HyperEVM",rpcEnv:["HYPEREVM_RPC_URL","HYPER_EVM_RPC"],nativeCurrency:{symbol:"HYPE",decimals:18},dexscreenerSlug:"hyperevm",venueKind:"uniswap-v3",wrappedNative:"0x5555555555555555555555555555555555555555",venues:[{kind:"quoter",address:"0x03A918028f22D9E1473B7959C927AD7425A45C7C",label:"HyperSwap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle(1 WHYPE -> USDT0) returned live output on all four fee tiers (100: 57.3385, 500: 57.4187, 3000: 57.3237, 10000: 56.1963 USDT0). Decimals read on-chain: WHYPE 18, USDT0 6. Best tier checked against an INDEPENDENT control the same minute -- Hyperliquid allMids put HYPE at 57.3205, so the pool is 0.171% from the perp mid, which is the right shape for fee plus impact rather than a wrong contract or a decimals bug.",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-08-05",chainId:999}},{kind:"router",address:"0x4E2960a8cd19B467b82d26D83fAcb0fAE26b094D",label:"HyperSwap V3 SwapRouter",verified:{method:"eth_getCode returned 12070 bytes, and it is the router paired with the quoter proved above -- the same pair already shipped in UNI_V3_VENUES[999].hyperswap, which is the map the quote/prepare path actually routes through.",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-08-05",chainId:999}}]},{key:"abstract",chainId:2741,name:"Abstract",rpcEnv:["ABSTRACT_RPC_URL","ABS_RPC_URL"],nativeCurrency:{symbol:"ETH",decimals:18},venueKind:"uniswap-v3",wrappedNative:"0x3439153EB7AF838Ad19d56E1571FBD09333C2809",venues:[{kind:"quoter",address:"0x728BD3eC25D5EDBafebB84F3d67367Cd9EBC7693",label:"Uniswap V3 QuoterV2 (Abstract deployment)",verified:{method:"Abstract is a ZK-stack chain, so CREATE2 addresses differ and the canonical Uniswap addresses are NOT valid here -- probing them returns codesize 0, which is what previously made this chain look like it had no V3 at all. Found the real deployment from live traffic instead: scanned recent Swap(...) logs, took the busiest pool, read pool.factory() = 0xa1160e73b63f322ae88cc2d8e700833e71d0b2a1, then enumerated that factory's deployer (0xf3d63166F0Ca56C3c1A3508FcE03Ff0Cf3Fb691e) and probed each of its 56 contracts with a real quoteExactInputSingle call. Exactly one answered: 1 WETH -> 1846.475731 USDC.e at fee 500. Independent sanity check: the pool's own slot0() spot price is 1873.11 USDC.e per WETH, so the quoter sits ~1.4% below spot, the right shape for fee plus price impact on this size.",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-08-05",chainId:2741}},{kind:"router",address:"0x7712FA47387542819d4E35A23f8116C90C18767C",label:"Uniswap SwapRouter02 (Abstract deployment)",verified:{method:"eth_getCode returned 167392 bytes and the runtime contains the exactInputSingle selector. router.factory() matches the factory proved above and router.WETH9() matches the wrappedNative on this entry. Chosen over its byte-identical twin (0xfD6257F4...) because this is the address real users actually route through: it appeared as tx.to on live swaps against the WETH/USDC.e pool.",source:"on-chain factory()/WETH9() round-trip + live swap tx.to sampling",date:"2026-08-05",chainId:2741}}]},{key:"robinhood",chainId:4663,name:"Robinhood Chain",rpcEnv:["RH_CHAIN_RPC","ROBINHOOD_RPC_URL"],nativeCurrency:{symbol:"ETH",decimals:18},dexscreenerSlug:"robinhood",venueKind:"uniswap-v3",wrappedNative:"0x0bd7d308f8e1639fab988df18a8011f41eacad73",venues:[{kind:"quoter",address:"0x33e885ed0ec9bf04ecfb19341582aadcb4c8a9e7",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WETH->USDG fee 100 quoted 1866.58 USDG, and USDG->CASHCAT fee 10000 quoted a live amount). A contract that correctly prices known pairs IS a working V3 quoter",source:"live eth_call against rpc.mainnet.chain.robinhood.com",date:"2026-07-31",chainId:4663}},{kind:"router",address:"0xcaf681a66d020601342297493863e78c959e5cb2",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode (24497 bytes) on this chain and the paired quoter at the same deployment passed a live functional quote",source:"live eth_getCode against rpc.mainnet.chain.robinhood.com",date:"2026-07-31",chainId:4663}},{kind:"factory",address:"0x1f7d7550b1b028f7571e69a784071f0205fd2efa",label:"Uniswap V3 Factory",verified:{method:"eth_getCode returned real bytecode (24535 bytes) and a PoolCreated log scan over this factory returned 76 pools in ~9000 recent blocks",source:"live eth_getLogs against rpc.mainnet.chain.robinhood.com",date:"2026-07-31",chainId:4663}}]},{key:"base",chainId:8453,name:"Base",rpcEnv:["BASE_RPC_URL"],nativeCurrency:{symbol:"ETH",decimals:18},explorer:"https://basescan.org",dexscreenerSlug:"base",venueKind:"uniswap-v3",wrappedNative:"0x4200000000000000000000000000000000000006",venues:[{kind:"quoter",address:"0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a",label:"Uniswap V3 QuoterV2 (Base)",verified:{method:"functional probe: quoteExactInputSingle returned WETH->USDC at fee 500 = 1908.44 USDC, a live sane price. The canonical mainnet quoter address also has bytecode on Base but does NOT price this pair, which is exactly the false positive a codesize-only check accepts",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:8453}},{kind:"router",address:"0x2626664c2603336E57B271c5C0b26F421741e481",label:"Uniswap V3 SwapRouter02 (Base)",verified:{method:"eth_getCode returned real bytecode and the paired Base quoter passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:8453}},{kind:"router-v2",address:"0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24",label:"Uniswap V2 Router02 (Base)",verified:{method:"eth_getCode returned 17891 bytes; live getAmountsOut on WETH->USDC round-tripped to 98.75% (2x0.30% fee + impact)",source:"https://docs.uniswap.org/contracts/v2/reference/smart-contracts/v2-deployments",date:"2026-07-30",chainId:8453}}]},{key:"arbitrum",chainId:42161,name:"Arbitrum One",rpcEnv:["ARBITRUM_RPC_URL","ARB_RPC_URL"],nativeCurrency:{symbol:"ETH",decimals:18},explorer:"https://arbiscan.io",dexscreenerSlug:"arbitrum",venueKind:"uniswap-v3",wrappedNative:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",venues:[{kind:"quoter",address:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WETH->USDC fee 500 quoted 1908.72 USDC). A contract that correctly prices a known pair IS a working V3 quoter",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:42161}},{kind:"router",address:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode on this chain and the paired quoter at the same deployment passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:42161}}]},{key:"avalanche",chainId:43114,name:"Avalanche C-Chain",rpcEnv:["AVALANCHE_RPC_URL","AVAX_RPC_URL"],nativeCurrency:{symbol:"AVAX",decimals:18},explorer:"https://snowtrace.io",dexscreenerSlug:"avalanche",venueKind:"uniswap-v3",wrappedNative:"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7",venues:[{kind:"quoter",address:"0xbe0F5544EC67e9B3b2D979aaA43f18Fd87E6257F",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WAVAX->USDC fee 500 quoted 6.48 USDC). A contract that correctly prices a known pair IS a working V3 quoter",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:43114}},{kind:"router",address:"0xbb00FF08d01D300023C629E8fFfFcb65A5a578cE",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode on this chain and the paired quoter at the same deployment passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:43114}}]}]);Ue();Gr();var Uf=new vf(["function decimals() view returns (uint8)","function symbol() view returns (string)"]),Mf=new vf(["function isApprovedForAll(address owner, address operator) view returns (bool)","function name() view returns (string)"]),DL=Gf("Approval(address,address,uint256)"),UG=Gf("ApprovalForAll(address,address,bool)"),SL=1e4,RL=2e5,NL=Object.freeze({"0x1111111254eeb25477b68fb85ed929f73a960582":"1inch v5 Router","0x111111125421ca6dc452d289314280a0f8842a65":"1inch v6 Router","0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45":"Uniswap Universal Router","0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad":"Uniswap Universal Router","0x000000000022d473030f116ddee9f6b43ac78ba3":"Permit2","0xe592427a0aece92de3edee1f18e0157c05861564":"Uniswap v3 Router","0x7a250d5630b4cf539739df2c5dacb4c659f2488d":"Uniswap v2 Router","0xdef1c0ded9bec7f1a1670819833240f027b25eff":"0x Exchange Proxy","0x2626664c2603336e57b271c5c0b26f421741e481":"Uniswap SwapRouter02 (Base)","0x6131b5fae19ea4f9d964eac0408e4408b66337b5":"KyberSwap Meta Aggregator","0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48":"USDC (token contract)"}),FL=Object.freeze([{address:"0x000000000022d473030f116ddee9f6b43ac78ba3",label:"Permit2"},{address:"0x1111111254eeb25477b68fb85ed929f73a960582",label:"1inch v5 Router"},{address:"0x111111125421ca6dc452d289314280a0f8842a65",label:"1inch v6 Router"},{address:"0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45",label:"Uniswap Universal Router"},{address:"0xe592427a0aece92de3edee1f18e0157c05861564",label:"Uniswap v3 Router"},{address:"0x7a250d5630b4cf539739df2c5dacb4c659f2488d",label:"Uniswap v2 Router"},{address:"0xdef1c0ded9bec7f1a1670819833240f027b25eff",label:"0x Exchange Proxy"},{address:"0x2626664c2603336e57b271c5c0b26f421741e481",label:"Uniswap SwapRouter02"}]),UL=Object.freeze([{address:"0x1e0049783f008a0085193e00003d00cd54003c71",label:"OpenSea Seaport Conduit"},{address:"0x00000000000000adc04c56bf30ac9d3c0aaf14dc",label:"Seaport 1.5"},{address:"0x0000000000000068f116a894984e2db1123eb395",label:"Seaport 1.6"},{address:"0x00000000000001ad428e4906ae43d8f9852d0dd6",label:"Seaport 1.4"},{address:"0x000000000000ad05ccc4f10045630fb830b95127",label:"Blur Marketplace"},{address:"0x00000000000000000000000000000000000000a5",label:"Blur Execution Delegate"},{address:"0xf42aa99f011a1fa7cda90e5e98b277e306bca83e",label:"Rarible Transfer Proxy"},{address:"0x000000000022d473030f116ddee9f6b43ac78ba3",label:"Permit2"}]),ML=Object.freeze({1:[{address:"0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d",name:"Bored Ape Yacht Club"},{address:"0x60e4d786628fea6478f785a6d7e704777c86a7c6",name:"Mutant Ape Yacht Club"},{address:"0xed5af388653567af2f388e6224dc7c4b3241c544",name:"Azuki"},{address:"0x8a90cab2b38dba80c64b7734e58ee1db38b8992e",name:"Doodles"},{address:"0x49cf6f5d44e70224e2e23fdcdd2c053f30ada28b",name:"CloneX"},{address:"0x23581767a106ae21c074b2276d25e5c3e136a68b",name:"Moonbirds"}]}),LL=Object.freeze({1:[{address:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",symbol:"USDC",decimals:6},{address:"0xdac17f958d2ee523a2206206994597c13d831ec7",symbol:"USDT",decimals:6},{address:"0x6b175474e89094c44da98b954eedeac495271d0f",symbol:"DAI",decimals:18},{address:"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",symbol:"WETH",decimals:18},{address:"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599",symbol:"WBTC",decimals:8}],8453:[{address:"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",symbol:"USDC",decimals:6},{address:"0x4200000000000000000000000000000000000006",symbol:"WETH",decimals:18}],42161:[{address:"0xaf88d065e77c8cc2239327c5edb3a432268e5831",symbol:"USDC",decimals:6},{address:"0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9",symbol:"USDT",decimals:6},{address:"0x82af49447d8a07e3bd95bd0d56f35241523fbab1",symbol:"WETH",decimals:18}],10:[{address:"0x0b2c639c533813f4aa9d7837caf62653d097ff85",symbol:"USDC",decimals:6},{address:"0x4200000000000000000000000000000000000006",symbol:"WETH",decimals:18}],137:[{address:"0x3c499c542cef5e3811e1192ce70d8cc03d5c3359",symbol:"USDC",decimals:6},{address:"0xc2132d05d31c914a87c6611c10748aeb04b58e8f",symbol:"USDT",decimals:6}]}),xL=(1n<<256n)-1n,TL=xL/2n,vL=4320*60*60*1e3,GL=360*60*1e3,YL=600*1e3,HL=45*1e3,JL=512,VL=128,Lf=new Map,Wl=new Map,xf=new Map;function Yr(e){return e?.cache===!1?!1:!e?.fetchImpl||e.cache===!0}function zl(e,t,A){let r=e.get(t);return r?Date.now()-r.at>A?(e.delete(t),null):r:null}function Xo(e,t,A,r){for(e.delete(t),e.set(t,{at:Date.now(),value:A});e.size>r;){let n=e.keys().next();if(n.done)break;e.delete(n.value)}}function qL(e,t){try{return kL(e).toLowerCase()}catch{throw new Error(`${t} must be a valid EVM address`)}}function PL(e){return`0x${e.slice(2).toLowerCase().padStart(64,"0")}`}function Tf(e){return`0x${String(e).slice(-40).toLowerCase()}`}function OL({unlimited:e,spenderLabel:t,lastActivityAt:A}){if(e)return"unlimited";if(!t)return"unknown-spender";if(A){let r=Date.parse(A);if(Number.isFinite(r)&&Date.now()-r>vL)return"stale"}return"scoped"}function WL(e,t,A){if(A)return"UNLIMITED";if(t==null)return e.toString();let r=10n**BigInt(t),n=e/r,s=e%r;if(s===0n)return n.toLocaleString("en-US");let o=s.toString().padStart(t,"0").replace(/0+$/,"").slice(0,6);return`${n.toLocaleString("en-US")}${o?`.${o}`:""}`}async function _L(e,t,A,r){let n=`${e}:${t}`,s=r?.get(n);if(s)return s;if(Yr(A)){let i=zl(Lf,n,GL);if(i)return i.value}let o=(async()=>{let i=async u=>{try{let g=Uf.encodeFunctionData(u,[]),E=await yt(e,"eth_call",[{to:t,data:g},"latest"],A);return!E||E==="0x"?null:Uf.decodeFunctionResult(u,E)[0]}catch{return null}},[a,l]=await Promise.all([i("decimals"),i("symbol")]),c={decimals:a==null?null:Number(a),symbol:l==null?null:String(l).slice(0,24)};return Yr(A)&&Xo(Lf,n,c,JL),c})();return r?.set(n,o),o}async function zL(e,t,A){let r=Math.min(Math.max(Number(A.lookbackBlocks)||SL,1),RL),n=await Vl(e,A);if(!Number.isFinite(n))throw new Error("chain head unavailable");let s=Math.max(0,n-r),o=await yt(e,"eth_getLogs",[{fromBlock:`0x${s.toString(16)}`,toBlock:"latest",topics:[DL,PL(t)]}],A);if(!Array.isArray(o))throw new Error("log scan returned no array");let i=new Map;for(let a of o){let l=String(a?.address||"").toLowerCase(),c=a?.topics?.[2];!l||!c||i.set(`${l}:${Tf(c)}`,{token:l,spender:Tf(c)})}return{pairs:[...i.values()],fromBlock:s,toBlock:n}}function KL(e){return(LL[e]||[]).flatMap(A=>FL.map(r=>({token:A.address,spender:r.address,symbol:A.symbol,decimals:A.decimals})))}async function ZL(e,t,A={}){let r=[],n="direct-probe",s=null,o=KL(e),i=_l(e),a=Yr(A)&&zl(Wl,e,YL)?.value===!1;if(o.length===0&&i.length===0&&a)return{scan:{chainId:e,status:"unconfigured",method:n,error:"no Approval log access and no candidate token or collection set for this chain"},approvals:[]};try{let l=await zL(e,t,A);r=l.pairs,n="log-scan",s={fromBlock:l.fromBlock,toBlock:l.toBlock},Yr(A)&&Xo(Wl,e,!0,64)}catch{if(Yr(A)&&Xo(Wl,e,!1,64),r=o,r.length===0&&i.length===0)return{scan:{chainId:e,status:"unconfigured",method:n,error:"no Approval log access and no candidate token or collection set for this chain"},approvals:[]}}try{let l=new Map,u=(await sA(r,A.concurrency||4,async E=>{try{let h=await Ff({chainId:e,token:E.token,owner:t,spender:E.spender},A),Q=BigInt(h.allowance);if(Q<=0n)return null;let I=E.symbol?{symbol:E.symbol,decimals:E.decimals??null}:await _L(e,E.token,A,l),d=Q>=TL,C=NL[E.spender]||null;return{id:`${e}:${E.token}:${E.spender}`,chainId:e,standard:"erc20",token:E.token,tokenSymbol:I.symbol,decimals:I.decimals,spender:E.spender,spenderLabel:C,allowance:Q.toString(),allowanceDisplay:WL(Q,I.decimals,d),unlimited:d,lastActivityAt:null,risk:OL({unlimited:d,spenderLabel:C,lastActivityAt:null})}}catch{return null}})).filter(Boolean),g=await XL(e,t,A);return{scan:{chainId:e,status:"ok",method:n,pairsProbed:r.length,collectionsProbed:_l(e).length,...s||{}},approvals:[...u,...g]}}catch(l){return{scan:{chainId:e,status:"unavailable",method:n,error:String(l?.message||l).slice(0,200)},approvals:[]}}}async function $L(e,t,A,r,n){try{let s=Mf.encodeFunctionData("isApprovedForAll",[A,r]),o=await yt(e,"eth_call",[{to:t,data:s},"latest"],n);return!o||o==="0x"?null:!!Mf.decodeFunctionResult("isApprovedForAll",o)[0]}catch{return null}}function _l(e){return(ML[e]||[]).flatMap(A=>UL.map(r=>({collection:A.address,collectionName:A.name,operator:r.address,operatorLabel:r.label})))}async function XL(e,t,A){let r=_l(e);return r.length===0?[]:(await sA(r,A.concurrency||4,async s=>await $L(e,s.collection,t,s.operator,A)!==!0?null:{id:`${e}:${s.collection}:${s.operator}:all`,chainId:e,standard:"erc721",token:s.collection,tokenSymbol:s.collectionName,decimals:null,spender:s.operator,spenderLabel:s.operatorLabel,allowance:null,allowanceDisplay:"ALL ITEMS",unlimited:!0,lastActivityAt:null,risk:"operator-all"})).filter(Boolean)}async function Yf(e={},t={}){let A=qL(e.owner||e.address,"owner"),r=new Map($o.map(E=>[E.chainId,E])),n=Array.isArray(e.chainIds)&&e.chainIds.length?[...new Set(e.chainIds.map(Number))].filter(E=>r.has(E)):[...r.keys()],s=`${A}:${[...n].sort((E,h)=>E-h).join(",")}:${e.lookbackBlocks??""}`,o=Yr(t)&&!e.refresh;if(o){let E=zl(xf,s,HL);if(E)return{...E.value,cached:!0,cachedAgeMs:Date.now()-E.at}}let i=await sA(n,e.concurrency||3,E=>ZL(E,A,{...t,lookbackBlocks:e.lookbackBlocks})),a=i.flatMap(E=>E.approvals),l=i.map(E=>E.scan),c=l.find(E=>E.method==="log-scan"&&E.toBlock),u=l.some(E=>E.method==="direct-probe"&&E.status==="ok"),g={provider:"approvals",operation:"scan",readOnly:!0,queriedAt:new Date().toISOString(),owner:A,scannedRange:c?`last ${c.toBlock-c.fromBlock} blocks`:u?"known routers, live allowance probe":null,approvals:a,scans:l,warnings:["Approval discovery is scoped. Log scanning is used where the endpoint permits it; otherwise a curated router set is probed directly. An empty result means nothing was found in that scope, not that the wallet is safe.","NFT operator approval (setApprovalForAll) is checked against a curated collection and marketplace set on supported chains only. A collection outside that set is not checked."]};return o&&Xo(xf,s,g,VL),{...g,cached:!1,cachedAgeMs:0}}import{getAddress as px}from"ethers";Ue();Gr();Ue();var Hf="mainnet-beta",jL="https://api.mainnet-beta.solana.com",Kl="TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";function ex(e={}){return String(e.rpcUrl||process.env.SOLANA_RPC_URL||jL).trim()}function TA(e,t="address"){let A=String(e||"").trim();if(!/^[1-9A-HJ-NP-Za-km-z]{32,44}$/.test(A))throw new Error(`solana-rpc: ${t} must be a base58 public key`);return A}function tx(e,t){return t?[...e,{commitment:t}]:e}async function Jf(e,t=[],A={}){let r=String(e||"");if(r==="sendTransaction"||r==="sendRawTransaction"||r==="requestAirdrop"||r==="requestAirDrop"||/airdrop/i.test(r)||/^send/i.test(r))throw new Error(`solana-rpc: ${r} refused \u2014 @oracle-agent/oracle is prepare-only (no broadcast/airdrop)`);let n=await fe(ex(A),{method:"POST",body:{jsonrpc:"2.0",id:A.id||1,method:e,params:t},fetchImpl:A.fetchImpl,timeoutMs:A.timeoutMs??12e3});if(n?.error)throw new Error(`solana-rpc ${e}: ${n.error.message||JSON.stringify(n.error)}`);return n?.result}async function Vf(e={},t={}){let A=TA(e.address||e.owner,"address"),r=await Jf("getBalance",tx([A],e.commitment),t);return{provider:"solana-rpc",cluster:Hf,address:A,lamports:String(r?.value??0),slot:r?.context?.slot??null,raw:r}}function Ax(e={}){let t=e.account?.data?.parsed?.info||{},A=t.tokenAmount||{};return{pubkey:e.pubkey,mint:t.mint||null,owner:t.owner||null,amount:String(A.amount??"0"),decimals:A.decimals??null,uiAmount:A.uiAmount??null,uiAmountString:A.uiAmountString??null,raw:e}}async function Zl(e={},t={}){let A=TA(e.owner||e.address,"owner"),r=e.mint?{mint:TA(e.mint,"mint")}:{programId:TA(e.programId||Kl,"token program")},n={encoding:"jsonParsed"};e.commitment&&(n.commitment=e.commitment);let s=await Jf("getTokenAccountsByOwner",[A,r,n],t),o=Array.isArray(s?.value)?s.value.map(Ax):[];return{provider:"solana-rpc",cluster:Hf,owner:A,filter:r,slot:s?.context?.slot??null,accounts:o,raw:s}}Ue();var rx="mainnet",nx="https://mempool.space/api",sx="https://mempool.space/testnet/api";function qf(e={}){return String(e.network||process.env.BTC_NETWORK||rx).trim().toLowerCase()==="testnet"?"testnet":"mainnet"}function ox(e={}){return e.baseUrl?String(e.baseUrl).replace(/\/$/,""):process.env.BTC_ESPLORA_URL?String(process.env.BTC_ESPLORA_URL).replace(/\/$/,""):qf(e)==="testnet"?sx:nx}function oA(e,t="address"){let A=String(e||"").trim();if(!/^(bc1|tb1|bcrt1)[a-z0-9]{20,90}$/i.test(A)&&!/^[13mn2][a-km-zA-HJ-NP-Z1-9]{25,34}$/.test(A))throw new Error(`bitcoin-esplora: ${t} must look like a Bitcoin address`);return A}async function ix(e,t={}){let A=`${ox(t)}${e.startsWith("/")?e:`/${e}`}`,n=await(t.fetchImpl||fetch)(A,{method:"GET",headers:{accept:"application/json,text/plain;q=0.9,*/*;q=0.8"},signal:AbortSignal.timeout(t.timeoutMs??12e3)}),s=await n.text();if(!n.ok)throw new Error(`bitcoin-esplora GET ${e}: HTTP ${n.status} ${s.slice(0,160)}`);return s}async function ax(e,t={}){let A=await ix(e,t);try{return JSON.parse(A)}catch{return A}}async function Pf(e={},t={}){let A=oA(e.address||e.addr,"address"),r=await ax(`/address/${A}`,t),n=r.chain_stats||{},s=r.mempool_stats||{},o=Number(n.funded_txo_sum||0)+Number(s.funded_txo_sum||0),i=Number(n.spent_txo_sum||0)+Number(s.spent_txo_sum||0);return{provider:"bitcoin-esplora",network:qf(t),address:A,balanceSats:String(o-i),chainStats:n,mempoolStats:s,raw:r}}var Of="ORACLE_ALLOW_CUSTOM_PROVIDER_URL";function Hr({provider:e,defaultUrl:t,hosts:A=[],url:r,strict:n=!1}){let o=(String(r??"").trim()||String(t)).replace(/\/$/,"");if(o===String(t).replace(/\/$/,""))return{baseUrl:o,trusted:!0,host:Wf(t)};let i;try{i=new URL(o)}catch{throw new Error(`${e}: baseUrl must be an absolute http(s) URL`)}if(i.protocol!=="http:"&&i.protocol!=="https:")throw new Error(`${e}: baseUrl must be an absolute http(s) URL`);let a=i.host;if(!a)throw new Error(`${e}: baseUrl must be an absolute http(s) URL`);if(new Set([Wf(t),...A]).has(a)){let c=/^(127\.0\.0\.1|localhost|\[::1\])(:\d+)?$/i.test(a);return i.protocol==="http:"&&!c?{baseUrl:o,trusted:!1,host:a,reason:"plaintext http downgrade"}:{baseUrl:o,trusted:!0,host:a}}if(String(process.env[Of]||"")==="1")return{baseUrl:o,trusted:!1,host:a};if(n)throw new Error(`${e}: refusing to call non-allowlisted host ${a} (set ${Of}=1 to permit it)`);return{baseUrl:o,trusted:!1,host:a}}function Wf(e){let t=new URL(String(e));if(t.protocol!=="http:"&&t.protocol!=="https:")throw new Error("unsupported protocol");return t.host}function vA(e,t,A){let r={...e};if(!A)return r;for(let[n,s]of Object.entries(t||{}))s&&(r[n]=s);return r}function $l(e={}){return String(e.baseUrl||process.env.BTC_META_API_URL||process.env.UNISAT_API_URL||"").trim().replace(/\/$/,"")}var cx=["open-api.unisat.io","open-api-testnet.unisat.io","api.bestinslot.xyz","api.hiro.so"];function lx(e={}){let t=e.apiKey||process.env.UNISAT_API_KEY||process.env.BESTINSLOT_API_KEY||process.env.BTC_META_API_KEY||"",A=!1;try{let r=$l(e);if(r){let n=new URL(r).host,s=new URL(r).protocol,o=/^(127\.0\.0\.1|localhost|\[::1\])(:\d+)?$/i.test(n);A=cx.includes(n)&&(s==="https:"||o)}}catch{A=!1}return vA({accept:"application/json","user-agent":"oracle-btc-meta/0.1"},{authorization:t?`Bearer ${t}`:"","x-api-key":t},A)}async function _f(e,t={}){let r=await(t.fetchImpl||fetch)(e,{method:"GET",headers:lx(t),signal:AbortSignal.timeout(t.timeoutMs??12e3)}),n=await r.text(),s;try{s=JSON.parse(n)}catch{s=n}if(!r.ok)throw new Error(`bitcoin-meta GET ${e}: HTTP ${r.status} ${String(n).slice(0,160)}`);return s}async function zf(e={},t={}){let A=oA(e.address||e.addr,"address"),r=$l(t);if(!r)return{provider:"bitcoin-meta",address:A,ok:!1,balances:[],error:"no indexer configured (set BTC_META_API_URL or vendor API key env)"};let n=[`${r}/v1/indexer/address/${A}/runes/balance-list?start=0&limit=100`,`${r}/v1/runes/address/${A}`,`${r}/runes/balance/${A}`,`${r}/address/${A}/runes`],s=null;for(let o of n)try{let i=await _f(o,t),a=ux(i);return{provider:"bitcoin-meta",address:A,ok:!0,count:a.length,balances:a,source:o}}catch(i){s=i}return{provider:"bitcoin-meta",address:A,ok:!1,balances:[],error:String(s?.message||s||"all indexer paths failed")}}function ux(e){let t=e?.data?.detail||e?.data?.list||e?.data||e?.balances||e?.results||e?.runes||(Array.isArray(e)?e:[]);return(Array.isArray(t)?t:[]).map(r=>({rune:r.rune||r.runeid||r.runeId||r.spacedRune||r.name||r.ticker||null,runeId:r.runeid||r.runeId||r.id||null,amount:String(r.amount??r.balance??r.total??r.qty??"0"),symbol:r.symbol||null,divisibility:r.divisibility??r.div??null,raw:r}))}async function jo(e={},t={}){let A=oA(e.address||e.addr,"address"),r=$l(t);if(!r)return{provider:"bitcoin-meta",address:A,ok:!1,inscriptions:[],error:"no indexer configured \u2014 address-indexed lookups need a keyed indexer (BTC_META_API_URL + UNISAT_API_KEY / BESTINSLOT_API_KEY). ordinals.com recursive is keyless but has no address index.",unknownNotEmpty:!0,keylessAlternatives:["btc_inscription_info (by inscription id)","btc_meta_health"]};let n=Math.min(Number(e.limit||50),200),s=[`${r}/v1/indexer/address/${A}/inscription-data?cursor=0&size=${n}`,`${r}/v1/inscriptions/address/${A}?limit=${n}`,`${r}/address/${A}/inscriptions?limit=${n}`],o=null;for(let i of s)try{let a=await _f(i,t),l=gx(a);return{provider:"bitcoin-meta",address:A,ok:!0,count:l.length,inscriptions:l,source:i}}catch(a){o=a}return{provider:"bitcoin-meta",address:A,ok:!1,inscriptions:[],error:String(o?.message||o||"all indexer paths failed")}}function gx(e){let t=e?.data?.inscription||e?.data?.detail||e?.data?.list||e?.data||e?.inscriptions||e?.results||(Array.isArray(e)?e:[]);return(Array.isArray(t)?t:[]).map(r=>({id:r.inscriptionId||r.id||r.inscription_id||null,number:r.inscriptionNumber??r.number??null,sat:r.sat||r.satoshi||null,contentType:r.contentType||r.content_type||null,utxo:r.utxo||r.output||(r.txid!=null?`${r.txid}:${r.vout??r.n}`:null),raw:r}))}Ue();var Ex="https://api.hyperliquid.xyz/info",dx="https://api.hyperliquid-testnet.xyz/info";function hx({testnet:e,baseUrl:t}={}){if(t)return t.replace(/\/$/,"").endsWith("/info")?t:`${t.replace(/\/$/,"")}/info`;if(process.env.HL_INFO_URL)return process.env.HL_INFO_URL;if(process.env.HL_API_URL){let A=process.env.HL_API_URL.replace(/\/$/,"");return A.endsWith("/info")?A:`${A}/info`}return e||process.env.HL_TESTNET==="1"?dx:Ex}async function Xl(e,t={}){if(!e||!e.type)throw new Error("hlInfo requires body.type");let A=hx(t);return fe(A,{method:"POST",body:e,fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs})}async function Kf(e={}){return Xl({type:"allMids"},e)}async function Zf(e,t={}){if(!e)throw new Error("hlClearinghouse requires user address");return Xl({type:"spotClearinghouseState",user:e},t)}async function $f(e,t={}){if(!e)throw new Error("hlUserState requires user");return Xl({type:"clearinghouseState",user:e},t)}Ue();var Qx="https://coins.llama.fi";function Ix(e={}){return(e.baseUrl||process.env.DEFILLAMA_COINS_URL||Qx).replace(/\/$/,"")}async function jl(e,t={}){if(!Array.isArray(e)||!e.length)throw new Error("llamaPrices requires coins[]");let A=e.map(encodeURIComponent).join(",");return fe(`${Ix(t)}/prices/current/${A}`,{fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs})}Ue();var Xf=/[\u200B-\u200F\u202A-\u202E\u2060-\u2064\uFEFF]/g,Bx=/[<>&`*_~[\]()|\\]/g,Cx=/[\u0000-\u001F\u007F]/g;function eu(e,{max:t=32,fallback:A=""}={}){return e==null?A:String(e).normalize("NFKC").replace(Xf,"").replace(Cx,"").replace(Bx,"").replace(/\s+/g," ").trim().slice(0,t).trim()||A}function tu(e){if(e==null)return!1;let t=String(e);return Xf.test(t)?!0:/[\u0400-\u04FF\u0370-\u03FF]/.test(t)&&/[A-Za-z]/.test(t)}var jf=Object.freeze({1:"https://eth.blockscout.com",10:"https://explorer.optimism.io",137:"https://polygon.blockscout.com",324:"https://zksync.blockscout.com",8453:"https://base.blockscout.com",42161:"https://arbitrum.blockscout.com",534352:"https://scrollscan.com"});function fx(e,t={}){let A=Number(e),r=t.baseUrl||jf[A];if(!r)throw new Error(`Blockscout not configured for chainId ${A}`);return r.replace(/\/$/,"")}function ep(e){return!!jf[Number(e)]}async function tp(e={},t={}){if(!e.address)throw new Error("address required");let A=Number(e.chainId||1),r=`${fx(A,t)}/api/v2/addresses/${encodeURIComponent(e.address)}/token-balances`,n=await fe(r,{fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs??18e3,headers:{accept:"application/json","user-agent":"OraclePortfolio/1.0"}});return Array.isArray(n)?n:[]}function Ap(e=[],{fungibleOnly:t=!0}={}){let A=[];for(let r of e){if(!r||typeof r!="object")continue;let n=r.token&&typeof r.token=="object"?r.token:{},s=String(n.type||r.token_type||"").toUpperCase();if(t&&s&&!s.includes("ERC-20")&&s!=="ERC20")continue;let o=n.address_hash||n.address||r.token_address||r.tokenAddress||null;if(!o||typeof o!="string")continue;let i=String(r.value??r.balance??"0").replace(/^0x/i,"");if(!/^\d+$/.test(i)||i==="0")continue;let a=n.decimals??r.decimals;typeof a=="string"&&/^\d+$/.test(a)&&(a=Number(a)),(typeof a!="number"||!Number.isInteger(a)||a<0||a>36)&&(a=18);let l=eu(n.symbol||n.name,{max:32,fallback:"TOKEN"}),c=eu(n.name,{max:80,fallback:""})||null;A.push({address:o.toLowerCase().startsWith("0x")?o:`0x${o}`,symbol:l,name:c,decimals:a,amountRaw:i,tokenType:s||"ERC-20",source:"blockscout",verification:"indexer-reported",displaySuspicious:tu(n.symbol)||tu(n.name)||void 0})}return A}var mx="TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",np=Object.freeze({ETH:"coingecko:ethereum",POL:"coingecko:polygon-ecosystem-token",BNB:"coingecko:binancecoin",AVAX:"coingecko:avalanche-2",HYPE:"coingecko:hyperliquid",USDT0:"coingecko:tether",SOL:"coingecko:solana",BTC:"coingecko:bitcoin"});function iA(e={},t){return{fetchImpl:e.fetchImpl,timeoutMs:e.timeoutMs,env:e.env,...e[t]||{}}}function ei(e,...t){for(let A of t){let r=String(e?.[A]||"").trim();if(r)return r}return null}function rp(e){if(!e)return null;try{return px(String(e).trim().toLowerCase())}catch{throw new Error("portfolio: EVM address must be a valid 20-byte address")}}function nu(e={},t=process.env){let A=e.addresses||{},r=rp(A.evm||e.evmAddress||ei(t,"ORACLE_EVM_ADDRESS","ORACLE_DEFAULT_ADDRESS","MAD_OPERATOR_ADDRESS")),n=A.solana||e.solanaAddress||ei(t,"ORACLE_SOLANA_ADDRESS"),s=A.bitcoin||e.bitcoinAddress||ei(t,"ORACLE_BITCOIN_ADDRESS"),o=rp(A.hyperliquid||e.hyperliquidAddress||ei(t,"ORACLE_HYPERLIQUID_ADDRESS")||r);return{evm:r,solana:n?TA(n,"portfolio Solana address"):null,bitcoin:s?oA(s,"portfolio Bitcoin address"):null,hyperliquid:o}}function Kn(e,t){let A=BigInt(String(e||"0")),r=Number(t);if(!Number.isInteger(r)||r<0||r>36)throw new Error("portfolio: decimals must be an integer from 0 to 36");if(r===0)return A.toString();let n=A<0n,s=n?-A:A,o=10n**BigInt(r),i=s/o,a=String(s%o).padStart(r,"0").replace(/0+$/,"");return`${n?"-":""}${i}${a?`.${a}`:""}`}function Jr(e){let t=Number(e);return Number.isFinite(t)?t:null}function ti(e){return Number.isFinite(e)?Number(e.toFixed(2)):null}function aA(e){let t=Number(e);return Number.isFinite(t)&&t!==0}function sp(e,t){let A=np[t],r=A?e?.coins?.[A]:null,n=Number(r?.price);return{key:A||null,priceUsd:Number.isFinite(n)?n:null,timestamp:r?.timestamp??null,confidence:r?.confidence??null}}function yx(e){let t=new Map;for(let A of e)if(A?.ok)for(let r of A.data?.accounts||[]){let n=BigInt(String(r.amount||"0"));if(n===0n||!r.mint)continue;let s=`${r.mint}:${r.decimals??"unknown"}`,o=t.get(s)||{mint:r.mint,amountRaw:0n,decimals:r.decimals??null,programs:new Set,accounts:0};o.amountRaw+=n,o.accounts+=1,A.program&&o.programs.add(A.program),t.set(s,o)}return[...t.values()].map(A=>{let r=A.amountRaw.toString(),n=A.decimals==null?null:Kn(r,A.decimals),s=A.decimals===0&&A.amountRaw===1n;return{mint:A.mint,amountRaw:r,amount:n,decimals:A.decimals,tokenPrograms:[...A.programs],accountCount:A.accounts,verification:"unverified",classification:s?"collectible-candidate":"fungible-or-unclassified",priceUsd:null,usdValue:null}})}function Au(e,t){return{family:e,status:"unsupported",reason:t}}function ru(e,t){if(!e||e.status!=="ok")return e;let A=sp(t,e.symbol),r=Jr(e.amount),n=r!=null&&A.priceUsd!=null?ti(r*A.priceUsd):null;return{...e,price:A,usdValue:n}}async function op(e={},t={}){let A=new Date().toISOString(),r=nu(e,t.env||process.env),n=e.includePrices!==!1,s=e.includeTokens!==!1,o=e.includeCollectibles!==!1,i=new Map($o.map(b=>[b.chainId,b])),a=Array.isArray(e.evmChainIds)&&e.evmChainIds.length?[...new Set(e.evmChainIds.map(Number))]:[...i.keys()],l=[...new Set(Object.values(np))],c=n?he(()=>jl(l,iA(t,"prices"))):Promise.resolve({ok:!1,ms:0,error:"price lookup disabled"}),u=sA(a,e.concurrency||5,async b=>{let U=i.get(b);if(!U)return{family:"evm",chainId:b,name:null,address:r.evm,status:"unsupported",error:"chainId is not in Oracle's configured EVM registry"};if(!r.evm)return{family:"evm",chainId:b,name:U.name,address:null,status:"not-configured",error:"set ORACLE_EVM_ADDRESS or pass addresses.evm"};let P={...iA(t,"evm"),rpcUrl:e.rpcUrls?.[b]||t.evm?.rpcUrls?.[b]},ie=await he(()=>ql(b,r.evm,P));if(!ie.ok)return{family:"evm",chainId:b,name:U.name,address:r.evm,status:"unavailable",latencyMs:ie.ms,error:ie.error};let Ie=U.nativeCurrency?.decimals??18,xe=U.nativeCurrency?.symbol||"NATIVE",T=ie.data.balanceWei,ne={status:s?"unavailable":"not-requested",assets:[],reason:s?"EVM JSON-RPC cannot enumerate wallet tokens without an address indexer":"token discovery disabled"};if(s&&ep(b)){let cA=await he(()=>tp({chainId:b,address:r.evm},{...iA(t,"blockscout"),timeoutMs:t.timeoutMs??18e3}));cA.ok?ne={status:"ok",assets:Ap(cA.data,{fungibleOnly:!0}).map(Pr=>{let Or=Kn(Pr.amountRaw,Pr.decimals);return{...Pr,amount:Or,priceUsd:null,usdValue:null}}),reason:null,source:"blockscout",latencyMs:cA.ms}:ne={status:"unavailable",assets:[],reason:cA.error||"blockscout token-balances failed",source:"blockscout",latencyMs:cA.ms}}return{family:"evm",chainId:b,name:U.name,address:r.evm,status:"ok",latencyMs:ie.ms,native:{status:"ok",symbol:xe,amountRaw:T,decimals:Ie,amount:Kn(T,Ie)},fungibleTokens:ne,collectibles:{status:o?"unavailable":"not-requested",assets:[],reason:o?"EVM JSON-RPC cannot enumerate wallet NFTs without an address indexer":"collectible discovery disabled"},source:ne.source==="blockscout"?"evm-rpc+blockscout":"evm-rpc"}}),g=(async()=>{if(!r.solana)return{family:"solana",name:"Solana Mainnet",address:null,status:"not-configured",error:"set ORACLE_SOLANA_ADDRESS or pass addresses.solana"};let b=iA(t,"solana"),U=await he(()=>Vf({address:r.solana},b)),P=s||o?await Promise.all([he(()=>Zl({owner:r.solana,programId:Kl},b)).then(ne=>({...ne,program:"spl-token"})),he(()=>Zl({owner:r.solana,programId:mx},b)).then(ne=>({...ne,program:"token-2022"}))]):[],ie=yx(P),Ie=ie.filter(ne=>ne.classification==="collectible-candidate"),xe=ie.filter(ne=>ne.classification!=="collectible-candidate"),T=P.filter(ne=>!ne.ok).map(ne=>ne.error);return{family:"solana",name:"Solana Mainnet",address:r.solana,status:U.ok||P.some(ne=>ne.ok)?"ok":"unavailable",native:U.ok?{status:"ok",symbol:"SOL",amountRaw:U.data.lamports,decimals:9,amount:Kn(U.data.lamports,9),slot:U.data.slot}:{status:"unavailable",symbol:"SOL",error:U.error},fungibleTokens:{status:s?T.length===P.length?"unavailable":T.length?"partial":"ok":"not-requested",assets:s?xe:[],errors:T,note:"SPL accounts are unverified until a metadata/indexer source confirms symbol and spam status"},collectibles:{status:o?T.length===P.length?"unavailable":"partial":"not-requested",assets:o?Ie:[],errors:T,note:"decimals=0 and amount=1 is only a collectible candidate, not verified NFT metadata"},source:"solana-rpc"}})(),E=(async()=>{if(!r.bitcoin)return{family:"bitcoin",name:"Bitcoin Mainnet",address:null,status:"not-configured",error:"set ORACLE_BITCOIN_ADDRESS or pass addresses.bitcoin"};let b=iA(t,"bitcoin"),U=iA(t,"bitcoinMeta"),[P,ie,Ie]=await Promise.all([he(()=>Pf({address:r.bitcoin},b)),s?he(()=>zf({address:r.bitcoin},U)):Promise.resolve({ok:!1,ms:0,error:"token discovery disabled"}),o?he(()=>jo({address:r.bitcoin},U)):Promise.resolve({ok:!1,ms:0,error:"collectible discovery disabled"})]),xe=ie.ok?ie.data:null,T=Ie.ok?Ie.data:null;return{family:"bitcoin",name:"Bitcoin Mainnet",address:r.bitcoin,status:P.ok||xe?.ok||T?.ok?"ok":"unavailable",native:P.ok?{status:"ok",symbol:"BTC",amountRaw:P.data.balanceSats,decimals:8,amount:Kn(P.data.balanceSats,8)}:{status:"unavailable",symbol:"BTC",error:P.error},fungibleTokens:{status:s?xe?.ok?"ok":"unavailable":"not-requested",assets:xe?.balances||[],error:xe?.ok?null:xe?.error||ie.error,verification:"indexer-reported"},collectibles:{status:o?T?.ok?"ok":"unavailable":"not-requested",assets:T?.inscriptions||[],error:T?.ok?null:T?.error||Ie.error,unknownNotEmpty:!!T?.unknownNotEmpty,verification:"indexer-reported"},source:"bitcoin-esplora+bitcoin-meta"}})(),h=(async()=>{if(!r.hyperliquid)return{family:"hyperliquid",name:"Hyperliquid HyperCore",address:null,status:"not-configured",error:"set ORACLE_HYPERLIQUID_ADDRESS or pass addresses.hyperliquid"};let b=iA(t,"hyperliquid"),[U,P,ie]=await Promise.all([he(()=>Zf(r.hyperliquid,b)),he(()=>$f(r.hyperliquid,b)),he(()=>Kf(b))]),Ie=(U.ok&&Array.isArray(U.data?.balances)?U.data.balances:[]).filter(T=>aA(T.total)||aA(T.hold)).map(T=>({coin:T.coin||null,total:String(T.total??"0"),hold:String(T.hold??"0"),priceUsd:null,usdValue:null})),xe=(P.ok&&Array.isArray(P.data?.assetPositions)?P.data.assetPositions:[]).map(T=>T.position||T).filter(T=>aA(T.szi)).map(T=>({coin:T.coin||null,size:String(T.szi??"0"),entryPrice:T.entryPx??null,positionValueUsd:T.positionValue??null,unrealizedPnlUsd:T.unrealizedPnl??null,liquidationPrice:T.liquidationPx??null}));return{family:"hyperliquid",name:"Hyperliquid HyperCore",address:r.hyperliquid,status:U.ok||P.ok?"ok":"unavailable",spot:{status:U.ok?"ok":"unavailable",balances:Ie,error:U.ok?null:U.error},perps:{status:P.ok?"ok":"unavailable",accountValueUsd:P.data?.marginSummary?.accountValue??null,withdrawableUsd:P.data?.withdrawable??null,positions:xe,error:P.ok?null:P.error},mids:ie.ok?ie.data:{},source:"hyperliquid-info"}})(),[Q,I,d,C,w]=await Promise.all([u,g,E,h,c]),B=w.ok?w.data:null,k=Object.freeze({1:"ethereum",10:"optimism",56:"bsc",137:"polygon",8453:"base",42161:"arbitrum",43114:"avax",81457:"blast",534352:"scroll",59144:"linea",324:"era"}),G=[];for(let b of Q){if(b.family!=="evm"||b.fungibleTokens?.status!=="ok")continue;let U=k[b.chainId];if(U)for(let P of b.fungibleTokens.assets||[])P.address&&G.push(`${U}:${String(P.address).toLowerCase()}`)}let q=null;if(n&&G.length){let b=[...new Set(G)],U=await he(()=>jl(b,iA(t,"prices")));U.ok&&(q=U.data)}let Ee=Q.map(b=>{let U=b.native?{...b,native:ru(b.native,B)}:b;if(U.fungibleTokens?.status==="ok"&&Array.isArray(U.fungibleTokens.assets)){let P=k[U.chainId],ie=U.fungibleTokens.assets.map(Ie=>{let xe=String(Ie.symbol||"").toUpperCase(),T=null;if(["USDC","USDT","USDT0","DAI","USDBC","USDE","USDCE"].includes(xe)&&(T=1),T==null&&P&&Ie.address&&q?.coins){let fu=`${P}:${String(Ie.address).toLowerCase()}`,Pr=q.coins[fu],Or=Number(Pr?.price);Number.isFinite(Or)&&Or>0&&(T=Or)}let ne=Jr(Ie.amount),cA=ne!=null&&T!=null?ti(ne*T):null;return{...Ie,priceUsd:T,usdValue:cA}});U={...U,fungibleTokens:{...U.fungibleTokens,assets:ie}}}return U});I.native&&(I.native=ru(I.native,B)),d.native&&(d.native=ru(d.native,B));let pe=0,We=0,me=0;for(let b of[...Ee,I,d]){b.native?.status==="ok"&&aA(b.native.amount)&&(b.native.usdValue!=null?(pe+=b.native.usdValue,We+=1):me+=1);for(let U of b.fungibleTokens?.assets||[])!aA(U.amount)&&!aA(U.amountRaw)||(U.usdValue!=null?(pe+=U.usdValue,We+=1):me+=1)}let Qe=sp(B,"HYPE");for(let b of C.spot?.balances||[]){let U=String(b.coin||"").toUpperCase(),P=U==="USDC"||U==="USDT"||U==="USDT0"?1:U==="HYPE"?Qe.priceUsd||Jr(C.mids?.HYPE):Jr(C.mids?.[b.coin]),ie=Jr(b.total);b.priceUsd=P,b.usdValue=ie!=null&&P!=null?ti(ie*P):null,aA(b.total)&&(b.usdValue!=null?(pe+=b.usdValue,We+=1):me+=1)}let ut=Jr(C.perps?.accountValueUsd);ut!=null&&ut!==0&&(pe+=ut,We+=1);let Yt=[...I.fungibleTokens?.assets||[],...I.collectibles?.assets||[]].filter(b=>aA(b.amount)).length,qr=(d.fungibleTokens?.assets||[]).length+(d.collectibles?.assets||[]).length;me+=Yt+qr;let Ht=[...Ee,I,d,C],GA=b=>Ht.filter(U=>U.status===b).length,YA=[],ii=Ee.filter(b=>b.fungibleTokens?.status==="unavailable"),Cu=Ee.filter(b=>b.fungibleTokens?.status==="ok");ii.length&&!Cu.length?YA.push("EVM token discovery is unavailable without a working address indexer; native balances are still live."):ii.length&&YA.push(`EVM token discovery partial: Blockscout covered ${Cu.length} chain(s); ${ii.length} chain(s) still native-only.`),(I.fungibleTokens?.assets?.length||I.collectibles?.assets?.length)&&YA.push("Solana token accounts are unverified and may include spam; collectible candidates are not confirmed NFTs."),d.collectibles?.unknownNotEmpty&&YA.push("Bitcoin inscription holdings are unknown, not zero, because no address indexer is configured."),w.ok||YA.push(`Price provider unavailable: ${w.error}`);let ai=[Au("cosmos","requires a chain-specific bech32 address and LCD/RPC adapter"),Au("sui","Sui balance adapter is not installed"),Au("aptos","Aptos balance adapter is not installed")],Sp=Ht.some(b=>["unavailable","partial","not-configured"].includes(b.fungibleTokens?.status)||["unavailable","partial","not-configured"].includes(b.collectibles?.status));return{provider:"portfolio",operation:"balances",readOnly:!0,queriedAt:A,addresses:r,coverage:{requestedSurfaces:Ht.length,ok:GA("ok"),unavailable:GA("unavailable"),notConfigured:GA("not-configured"),unsupported:GA("unsupported")+ai.length,evmChainsRequested:a.length,evmChainsOk:Ee.filter(b=>b.status==="ok").length},valuation:{knownUsd:ti(pe),label:"known priced value, not a complete portfolio total",pricedItems:We,unpricedNonzeroItems:me,complete:me===0&&!Sp&&GA("unavailable")===0&&GA("not-configured")===0&&ai.length===0,priceSource:n?"DefiLlama":null,priceStatus:w.ok?"ok":"unavailable",priceQueriedAt:A},chains:[...Ee,I,d,C],unsupportedFamilies:ai,warnings:YA}}Ue();Ue();import{readFileSync as bx,existsSync as kx}from"node:fs";import{getAddress as Dx,Interface as Ai,TypedDataEncoder as EY,parseUnits as dY}from"ethers";var wx=300*1e3,iY=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})();var Sx="https://api.opensea.io/api/v2",Rx="fulfillAdvancedOrder(((address offerer,address zone,(uint8 itemType,address token,uint256 identifierOrCriteria,uint256 startAmount,uint256 endAmount)[] offer,(uint8 itemType,address token,uint256 identifierOrCriteria,uint256 startAmount,uint256 endAmount,address recipient)[] consideration,uint8 orderType,uint256 startTime,uint256 endTime,bytes32 zoneHash,uint256 salt,bytes32 conduitKey,uint256 totalOriginalConsiderationItems) parameters,uint120 numerator,uint120 denominator,bytes signature,bytes extraData) advancedOrder,(uint256 orderIndex,uint8 side,uint256 index,uint256 identifier,bytes32[] criteriaProof)[] criteriaResolvers,bytes32 fulfillerConduitKey,address recipient)",CY=new Ai([`function ${Rx}`]),fY=new Ai(["function mintPublic(address nftContract,address feeRecipient,address minterIfNotPayer,uint256 quantity) payable","function mintAllowList(address nftContract,address feeRecipient,address minterIfNotPayer,uint256 quantity,(uint80 mintPrice,uint48 maxTotalMintableByWallet,uint48 startTime,uint48 endTime,uint48 dropStageIndex,uint32 maxTokenSupplyForStage,uint16 feeBps,bool restrictFeeRecipients) mintParams,bytes32[] proof) payable"]),Nx=Object.freeze(["blast","base","ethereum","zora","arbitrum","sei","avalanche","polygon","optimism","ape_chain","flow","b3","soneium","ronin","bera_chain","solana","shape","unichain","gunzilla","abstract","animechain","hyperevm","somnia","monad","hyperliquid","megaeth","ink","robinhood","stablechain"]),Fx=new Set(Nx),Ux=new Set(["solana","flow"]);function Mx(){let e=process.env.OPENSEA_ENV_FILE||`${process.env.HOME||""}/.config/locals-only/opensea.env`;if(!kx(e))return"";try{for(let t of bx(e,"utf8").split(`
|
|
49
|
-
`)){let A=t.match(/^\s*OPENSEA_API_KEY\s*=\s*(.+)\s*$/);if(A)return A[1].replace(/^["']|["']$/g,"").trim()}}catch{}return""}function ou(e={}){return e.apiKey?e.apiKey:e.allowAmbientCredentials===!1||e.allowDiskCredentials===!1?e.env?.OPENSEA_API_KEY||e.env?.OPEN_SEA_API_KEY||"":e.env?.OPENSEA_API_KEY||process.env.OPENSEA_API_KEY||process.env.OPEN_SEA_API_KEY||Mx()}function ap(e={}){return Hr({provider:"opensea",defaultUrl:Sx,hosts:["api.opensea.io","testnets-api.opensea.io"],url:e.baseUrl||process.env.OPENSEA_API_URL})}function cp(e={}){return ap(e).baseUrl}function lp(e={}){return vA({accept:"application/json"},{"x-api-key":ou(e)},ap(e).trusted)}function Lx(e){let t=String(e||"ethereum").trim().toLowerCase();if(!Fx.has(t))throw new Error(`opensea: unsupported account chain ${t}`);return t}function ip(e,t="address"){try{return Dx(String(e||"").trim().toLowerCase())}catch{throw new Error(`opensea: invalid ${t}`)}}function up(e,t=null){let A=String(e||"").trim();if(!A)throw new Error("opensea: account address required");if(t&&!Ux.has(t)||!t&&/^0x[0-9a-fA-F]{40}$/.test(A))return ip(A,"account address");if(!/^[1-9A-HJ-NP-Za-km-z]{32,64}$/.test(A))throw new Error("opensea: invalid account address");return A}function xx(e={},t,A){return{chain:t,owner:A,contract:e.contract||null,tokenId:e.identifier==null?null:String(e.identifier),tokenStandard:e.token_standard||null,collection:e.collection||null,name:e.name||null,description:e.description||null,imageUrl:e.display_image_url||e.image_url||e.original_image_url||null,originalImageUrl:e.original_image_url||e.image_url||null,animationUrl:e.display_animation_url||e.original_animation_url||null,metadataUrl:e.metadata_url||null,marketplaceUrl:e.opensea_url||null,estimatedValueUsd:e.estimated_value_usd!=null&&Number.isFinite(Number(e.estimated_value_usd))?Number(e.estimated_value_usd):null,spam:e.is_disabled===!0,disabled:e.is_disabled===!0,nsfw:e.is_nsfw===!0,traits:Array.isArray(e.traits)?e.traits:[],updatedAt:e.updated_at||null,acquisitionCost:null,itemPnl:{status:"unavailable",reason:"OpenSea account inventory does not expose trustworthy per-item acquisition cost"}}}async function iu(e={},t={}){if(!ou(t))throw new Error("OPENSEA_API_KEY required");let A=Lx(e.chain),r=up(e.address||e.owner,A),n=Math.min(Math.max(Number(e.pageSize??e.limit??200)||200,1),200),s=Math.min(Math.max(Number(e.maxPages??5)||5,1),25),o=[],i=e.next?String(e.next):null,a=0;do{let l=new URL(`${cp(t)}/chain/${encodeURIComponent(A)}/account/${encodeURIComponent(r)}/nfts`);l.searchParams.set("limit",String(n)),e.collection&&l.searchParams.set("collection",String(e.collection)),i&&l.searchParams.set("next",i);let c=await fe(l.toString(),{headers:lp(t),fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs??2e4});for(let u of Array.isArray(c?.nfts)?c.nfts:[])o.push(xx(u,A,r));i=c?.next?String(c.next):null,a+=1}while(i&&a<s);return{provider:"opensea-nft",source:"opensea-account-inventory",chain:A,owner:r,count:o.length,pages:a,complete:!i,next:i,nfts:o,exec:!1,readOnly:!0}}async function gp(e={},t={}){if(!ou(t))throw new Error("OPENSEA_API_KEY required");let A=up(e.address||e.owner),r=await fe(`${cp(t)}/account/${encodeURIComponent(A)}/pnl`,{headers:lp(t),fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs??2e4});return{provider:"opensea-nft",source:"opensea-indexed-account-pnl",address:A,scope:"OpenSea-indexed account trading PnL across supported currencies, not per-item NFT cost basis",methodology:"provider-indexed",realizedPnlUsd:r?.realized_pnl_usd??null,unrealizedPnlUsd:r?.unrealized_pnl_usd??null,totalPnlUsd:r?.total_pnl_usd??null,netInvestedUsd:r?.net_invested_usd??null,currentValueUsd:r?.current_value_usd??null,returnPercentage:r?.return_percentage??null,itemLevelPnlAvailable:!1,raw:r,exec:!1,readOnly:!0}}var pY=Object.freeze({robinhood:4663,ethereum:1,base:8453,arbitrum:42161,optimism:10,polygon:137,avalanche:43114,zora:7777777,blast:81457,sei:1329,ape_chain:33139,b3:8333,soneium:1868,ronin:2020,bera_chain:80094,shape:360,unichain:130,gunzilla:43419,abstract:2741,animechain:69e3,hyperevm:999,somnia:5031,monad:143,megaeth:4326,ink:57073,stablechain:988});var mY=new Ai(["function setApprovalForAll(address operator,bool approved)"]),yY=new Ai(["function cancel((address offerer,address zone,(uint8 itemType,address token,uint256 identifierOrCriteria,uint256 startAmount,uint256 endAmount)[] offer,(uint8 itemType,address token,uint256 identifierOrCriteria,uint256 startAmount,uint256 endAmount,address recipient)[] consideration,uint8 orderType,uint256 startTime,uint256 endTime,bytes32 zoneHash,uint256 salt,bytes32 conduitKey,uint256 counter)[] orders) returns (bool cancelled)"]);var vx="https://api.satflow.com/v1";function Ep(e={}){return Hr({provider:"satflow",defaultUrl:vx,hosts:["api.satflow.com"],url:e.baseUrl||process.env.SATFLOW_API_URL})}function Gx(e={}){return Ep(e).baseUrl}function dp(e={}){return String(e.apiKey||process.env.SATFLOW_API_KEY||process.env.BTC_SATFLOW_API_KEY||"").trim()}function Yx(e={}){return vA({accept:"application/json","content-type":"application/json","user-agent":"oracle-btc-satflow/0.1"},{"x-api-key":dp(e)},Ep(e).trusted)}async function Hx(e,{method:t="GET",body:A,opts:r={}}={}){if(!dp(r))throw new Error("satflow: SATFLOW_API_KEY not set (request key via Satflow docs form)");let s=`${Gx(r)}${e.startsWith("/")?e:`/${e}`}`,i=await(r.fetchImpl||fetch)(s,{method:t,headers:Yx(r),body:A!=null?JSON.stringify(A):void 0,signal:AbortSignal.timeout(r.timeoutMs??2e4)}),a=await i.text(),l;try{l=JSON.parse(a)}catch{l=a}if(!i.ok)throw new Error(`satflow ${t} ${e}: HTTP ${i.status} ${String(a).slice(0,200)}`);return l}async function hp(e={},t={}){let A=oA(e.address||e.addr,"address"),r=new URLSearchParams({address:A});e.type&&r.set("type",e.type),e.limit!=null&&r.set("limit",String(e.limit)),e.offset!=null&&r.set("offset",String(e.offset));let n=await Hx(`/address/wallet-contents?${r}`,{opts:t});return{provider:"satflow",address:A,contents:n}}Ue();Ue();var GY=Object.freeze(["i.seadn.io","openseauserdata.com","arweave.net","ipfs.io","nftstorage.link","dweb.link","cloudflare-ipfs.com","ordinals.com","ordinals.g.com","cdn.helius-rpc.com","shdw-drive.genesysgo.net"]);var Jx=[/\bclaim\b/i,/\breward\b/i,/\bairdrop\b/i,/\bvoucher\b/i,/\bwinner\b/i,/\bfree\s*mint\b/i,/\bactivate\b/i,/\bunlock\b/i,/\bverify\b/i,/\bconnect\s+wallet\b/i],Vx=/(https?:\/\/|www\.|[a-z0-9-]+\.(?:com|net|io|xyz|org|app|finance|gift|claims?|site|link|live|vip|top|cc))/i,qx=/(\$\s?\d|\d[\d,.]*\s*(?:usd|usdc|usdt|eth|weth|btc|sol)\b)/i;function Px(e={}){let t=[],A=String(e.name||""),r=String(e.description||""),n=`${A} ${r}`;Vx.test(A)&&t.push("url-in-name");let s=Jx.filter(l=>l.test(n)).length;s>0&&t.push(`lure-language:${s}`),qx.test(A)&&t.push("value-claim-in-name"),/[\u200B-\u200F\u202A-\u202E\uFEFF]/.test(A)&&t.push("invisible-characters"),e.disabled===!0&&t.push("marketplace-disabled");let o=e.estimatedValueUsd==null&&e.estimatedValueSats==null,i=!Array.isArray(e.traits)||e.traits.length===0;o&&i&&s>0&&t.push("valueless-airdrop-with-lure");let a=t.includes("url-in-name")||t.includes("invisible-characters")||t.includes("valueless-airdrop-with-lure")||t.length>=2;return{spam:a,risk:a?"high":t.length>0?"low":"none",reasons:t}}function Qp(e={}){let t=Px(e);return{...e,spam:e.spam===!0||t.spam,riskLevel:t.risk,riskReasons:t.reasons.length?t.reasons:void 0}}var Ox=Object.freeze([{chain:"ethereum",chainId:1,family:"evm"},{chain:"optimism",chainId:10,family:"evm"},{chain:"polygon",chainId:137,family:"evm"},{chain:"stablechain",chainId:988,family:"evm"},{chain:"hyperevm",chainId:999,family:"evm"},{chain:"abstract",chainId:2741,family:"evm"},{chain:"robinhood",chainId:4663,family:"evm"},{chain:"base",chainId:8453,family:"evm"},{chain:"arbitrum",chainId:42161,family:"evm"},{chain:"avalanche",chainId:43114,family:"evm"},{chain:"hyperliquid",chainId:null,family:"hyperliquid"}]),Wx=Object.freeze([{family:"evm",chain:"bsc",chainId:56,reason:"OpenSea account inventory does not support BSC"},{family:"cosmos",reason:"requires a chain-specific bech32 address and NFT indexer"},{family:"sui",reason:"owner inventory adapter not installed"},{family:"aptos",reason:"owner inventory adapter not installed"}]);function au(e={},t){return{fetchImpl:e.fetchImpl,timeoutMs:e.timeoutMs,env:e.env,allowDiskCredentials:e.allowDiskCredentials,allowAmbientCredentials:e.allowAmbientCredentials,...e[t]||{}}}async function Zn(e,t){let A=await he(t);return A.ok?{ok:!0,data:A.data}:{ok:!1,error:`${e}: ${A.error}`.slice(0,300)}}function _x(e){if(Array.isArray(e))return e;for(let t of["items","results","ordinals","inscriptions","data"])if(Array.isArray(e?.[t]))return e[t];return[]}function zx(e={},t){let A=e.inscription_id||e.inscriptionId||e.id||e.inscription||null;return{chain:"bitcoin",family:"bitcoin",owner:t,contract:null,tokenId:A==null?null:String(A),tokenStandard:"ordinal",collection:e.collection_slug||e.collectionSlug||e.collection?.slug||e.collection||null,name:e.name||e.meta?.name||(A?`Inscription ${A}`:"Bitcoin inscription"),description:e.description||e.meta?.description||null,imageUrl:e.image_url||e.imageUrl||e.content_url||e.contentUrl||e.thumbnail||null,originalImageUrl:e.content_url||e.contentUrl||e.image_url||e.imageUrl||null,animationUrl:null,metadataUrl:e.metadata_url||e.metadataUrl||null,marketplaceUrl:e.marketplace_url||e.marketplaceUrl||null,estimatedValueUsd:e.estimated_value_usd!=null&&Number.isFinite(Number(e.estimated_value_usd))?Number(e.estimated_value_usd):null,estimatedValueSats:(e.floor_price_sats??e.price_sats)!=null&&Number.isFinite(Number(e.floor_price_sats??e.price_sats))?Number(e.floor_price_sats??e.price_sats):null,spam:!1,disabled:!1,nsfw:!1,listed:e.listed===!0||e.is_listed===!0,listingId:e.listing_id||e.listingId||null,traits:Array.isArray(e.traits)?e.traits:[],updatedAt:e.updated_at||e.updatedAt||null,acquisitionCost:null,itemPnl:{status:"unavailable",reason:"Satflow wallet inventory does not expose trustworthy acquisition cost"},listingAdapter:"satflow",source:"satflow-wallet-contents"}}function Kx(e,t){return{chain:"bitcoin",family:"bitcoin",owner:t,contract:null,tokenId:String(e),tokenStandard:"ordinal",collection:null,name:`Inscription ${e}`,description:null,imageUrl:null,originalImageUrl:null,animationUrl:null,metadataUrl:null,marketplaceUrl:null,estimatedValueUsd:null,spam:!1,disabled:!1,nsfw:!1,traits:[],updatedAt:null,acquisitionCost:null,itemPnl:{status:"unavailable",reason:"address indexer returned no acquisition or valuation data"},listingAdapter:"satflow",source:"bitcoin-meta-address-indexer"}}function Ip(e={}){return[e.chain||"unknown",e.contract||"native",e.tokenId||"unknown"].join(":").toLowerCase()}function Zx(e){let t=new Map;if(Array.isArray(e)){for(let A of e)A?.assetKey&&t.set(String(A.assetKey).toLowerCase(),A);return t}if(e&&typeof e=="object")for(let[A,r]of Object.entries(e))t.set(A.toLowerCase(),r);return t}function $x(e,t){let A=Ip(e),r=t.get(A),n=e.estimatedValueUsd==null?null:Number(e.estimatedValueUsd);if(!r)return{...e,assetKey:A};let s=Number(r.costUsd),o=Number(r.feesUsd??0);if(!Number.isFinite(s)||s<0||!Number.isFinite(o)||o<0)return{...e,assetKey:A,acquisitionCost:null,itemPnl:{status:"unavailable",reason:"invalid user-supplied cost basis"}};let i=Math.round((s+o)*100)/100;return Number.isFinite(n)?{...e,assetKey:A,acquisitionCost:{costUsd:s,feesUsd:o,totalCostUsd:i,acquiredAt:r.acquiredAt||null,source:r.source||"user-supplied"},itemPnl:{status:"estimated",methodology:"provider estimated current value minus supplied USD acquisition cost and fees",unrealizedUsd:Math.round((n-i)*100)/100,currentValueUsd:n,totalCostUsd:i,realizedUsd:null}}:{...e,assetKey:A,acquisitionCost:{costUsd:s,feesUsd:o,totalCostUsd:i,acquiredAt:r.acquiredAt||null,source:r.source||"user-supplied"},itemPnl:{status:"unavailable",reason:"current NFT valuation is unavailable"}}}function Xx(e){let t=new Map;for(let A of e){let r=Ip(A);t.has(r)||t.set(r,A)}return[...t.values()]}function jx(e,t){let A=e.filter(s=>s.itemPnl?.status==="estimated"),r=e.length-A.length,n=Math.round(A.reduce((s,o)=>s+Number(o.itemPnl.unrealizedUsd||0),0)*100)/100;return{nftItemPnl:{status:r===0&&e.length?"estimated-complete-for-held-items":A.length?"partial":"unavailable",methodology:"Only items with explicit acquisition cost and provider estimated current value are included",knownUnrealizedUsd:n,knownItems:A.length,unknownItems:r,realizedUsd:null,warning:"Transfers, gifts, airdrops, mints, bridges, gas, royalties, and off-market sales can make cost basis unavailable or incomplete."},providerAccountPnl:t}}async function Bp(e={},t={}){let A=new Date().toISOString(),r=nu(e,t.env||process.env),n=Array.isArray(e.chains)&&e.chains.length?new Set(e.chains.map(B=>String(B).toLowerCase())):null,s=Ox.filter(B=>!n||n.has(B.chain)),o=[],i=[],a=au(t,"opensea"),l=r.evm?s.filter(B=>B.family!=="solana"):[],c=await sA(l,4,async B=>({row:B,result:await Zn(`opensea-${B.chain}`,()=>iu({chain:B.chain,address:r.evm,pageSize:e.pageSize,maxPages:e.maxPages},a),t.timeoutMs??35e3)}));for(let{row:B,result:k}of c)if(k.ok){let G=k.data.nfts.map(q=>({...q,family:B.family,chainId:B.chainId,listingAdapter:"opensea",source:"opensea-account-inventory"}));i.push(...G),o.push({family:B.family,chain:B.chain,chainId:B.chainId,status:k.data.complete?"ok":"partial",count:G.length,complete:k.data.complete,next:k.data.next,source:"opensea"})}else o.push({family:B.family,chain:B.chain,chainId:B.chainId,status:"unavailable",error:k.error,source:"opensea"});if(!r.evm)for(let B of s.filter(k=>k.family!=="solana"))o.push({family:B.family,chain:B.chain,chainId:B.chainId,status:"not-configured",reason:"EVM address missing"});if(r.solana&&(!n||n.has("solana"))){let B=await Zn("opensea-solana",()=>iu({chain:"solana",address:r.solana,pageSize:e.pageSize,maxPages:e.maxPages},a),t.timeoutMs??35e3);if(B.ok){let k=B.data.nfts.map(G=>({...G,family:"solana",chainId:null,listingAdapter:null,source:"opensea-account-inventory"}));i.push(...k),o.push({family:"solana",chain:"solana",status:B.data.complete?"ok":"partial",count:k.length,complete:B.data.complete,next:B.data.next,source:"opensea"})}else o.push({family:"solana",chain:"solana",status:"unavailable",error:B.error,source:"opensea"})}else(!n||n.has("solana"))&&o.push({family:"solana",chain:"solana",status:"not-configured",reason:"Solana address missing"});if(r.bitcoin&&(!n||n.has("bitcoin"))){let B=await Zn("satflow-wallet-contents",()=>hp({address:r.bitcoin,type:"ordinals",limit:e.bitcoinLimit??100,offset:0},au(t,"satflow")),t.timeoutMs??35e3);if(B.ok){let k=_x(B.data.contents).map(q=>zx(q,r.bitcoin));i.push(...k);let G=k.length<Number(e.bitcoinLimit??100);o.push({family:"bitcoin",chain:"bitcoin",status:G?"ok":"partial",count:k.length,complete:G,source:"satflow"})}else{let k=await Zn("bitcoin-meta-inscriptions",()=>jo({address:r.bitcoin},au(t,"bitcoinMeta")),t.timeoutMs??35e3),G=k.ok&&k.data?.ok&&Array.isArray(k.data.inscriptions)?k.data.inscriptions:[];i.push(...G.map(q=>Kx(q,r.bitcoin))),o.push({family:"bitcoin",chain:"bitcoin",status:G.length?"partial":"unavailable",count:G.length,complete:!1,source:G.length?"bitcoin-meta":"satflow",error:G.length?"Satflow unavailable; fallback has IDs only":B.error})}}else(!n||n.has("bitcoin"))&&o.push({family:"bitcoin",chain:"bitcoin",status:"not-configured",reason:"Bitcoin address missing"});let u=[];if(e.includePnl!==!1)for(let B of[...new Set([r.evm,r.solana].filter(Boolean))]){let k=await Zn(`opensea-pnl-${B}`,()=>gp({address:B},a),t.timeoutMs??35e3);u.push(k.ok?{status:"ok",...k.data}:{status:"unavailable",address:B,source:"opensea-indexed-account-pnl",error:k.error})}let g=Zx(e.costBasis),E=Xx(i).map(B=>$x(B,g)).map(B=>Qp(B)),h=E.filter(B=>!B.spam),Q=E.filter(B=>B.spam),I=h.filter(B=>B.estimatedValueUsd!=null&&Number.isFinite(Number(B.estimatedValueUsd))),d=Math.round(I.reduce((B,k)=>B+Number(k.estimatedValueUsd),0)*100)/100,C=h.length-I.length,w=o.filter(B=>B.status!=="ok"||B.complete===!1);return{provider:"nft-portfolio",operation:"inventory",readOnly:!0,generatedAt:A,addresses:r,coverage:o,unsupported:Wx,inventory:{count:E.length,visibleCount:h.length,flaggedCount:Q.length,items:E,visibleItems:h,flaggedItems:Q},valuation:{estimatedCurrentValueUsd:d,valuedItems:I.length,unvaluedItems:C,complete:C===0&&w.length===0,methodology:"Sum of provider estimated_value_usd for non-flagged items. It is not an executable bid."},pnl:jx(h,u),listingCoverage:{opensea:"EVM listing actions available with OPENSEA_API_KEY, explicit price/currency/expiry, and user confirmation",satflow:"Bitcoin unsigned listing PSBT available with SATFLOW_API_KEY, explicit price/expiry, and user confirmation",solana:"Magic Eden unsigned list transaction available with MAGICEDEN_API_KEY, explicit SOL price/expiry, and user confirmation",unsupported:"Sui, Aptos, Cosmos, BSC, and unknown marketplaces fail closed"},traitSniperCoverage:{opensea:"Evaluates reveal/trait-floor mispricing only with recent trait sales and volume evidence. Buy intents require local vault signing.",execution:"prepare-only on hosted surfaces; local vault required for purchase"},metadataSafety:{imagesAreUntrusted:!0,animationAndHtmlNotRendered:!0,galleryRasterOnly:!0,missingImagesUsePlaceholders:!0}}}import{homedir as cu}from"node:os";import{join as lu}from"node:path";var Cp=process.env.ORACLE_PUBLIC_DESKTOP==="1",eT=Cp?process.env.ORACLE_CONFIG_DIR||lu(cu(),".config","oracle"):lu(cu(),".config","oracle"),r1=Cp?eT:lu(cu(),".config","mad-desk");function uu(e,t,A=""){let r=process.env[e];if(r!=null&&String(r).trim()!=="")return r;let n=t?process.env[t]:void 0;return n!=null&&String(n).trim()!==""?n:A}var iT=JSON.parse(yp(new URL("../../package.json",import.meta.url),"utf8")),Vr="public",aT="127.0.0.1",cT=8799,ni=iT.version,lT=new Set(["127.0.0.1","localhost","::1"]),uT=hu(rT(oT(import.meta.url)),"../.."),gu=hu(uT,"public","oracle-console"),fp=Object.freeze({"/":{file:"index.html",type:"text/html; charset=utf-8"},"/index.html":{file:"index.html",type:"text/html; charset=utf-8"},"/app.js":{file:"app.js",type:"application/javascript; charset=utf-8"},"/styles.css":{file:"styles.css",type:"text/css; charset=utf-8"},"/oracle-console":{file:"index.html",type:"text/html; charset=utf-8"},"/oracle-console/":{file:"index.html",type:"text/html; charset=utf-8"},"/oracle-console/index.html":{file:"index.html",type:"text/html; charset=utf-8"},"/oracle-console/app.js":{file:"app.js",type:"application/javascript; charset=utf-8"},"/oracle-console/styles.css":{file:"styles.css",type:"text/css; charset=utf-8"}}),gT=1e6,Le=class extends Error{constructor(t,A,r){super(r||A),this.status=t,this.code=A}};function Gt(e,t,A){let r=t,n;try{_e(A),n=Tu(A)}catch{r=500,n=JSON.stringify({error:"secret-leak-blocked"})}e.writeHead(r,{"content-type":"application/json; charset=utf-8","cache-control":"no-store","x-oracle-plane":Vr,"x-oracle-unsigned":"true"}),e.end(n)}function ET(e){return new Promise((t,A)=>{let r=[],n=0;e.on("data",s=>{if(n+=s.length,n>gT){A(new Le(413,"payload-too-large","request body too large")),e.destroy();return}r.push(s)}),e.on("end",()=>{let s=Buffer.concat(r).toString("utf8").trim();if(s==="")return t({});try{t(JSON.parse(s))}catch{A(new Le(400,"invalid-json","request body must be valid JSON"))}}),e.on("error",()=>A(new Le(400,"bad-request","request stream error")))})}function Me(e,t){if(e==null)return{};if(typeof e!="object"||Array.isArray(e))throw new Le(400,t,`${t} must be a JSON object`);return e}function dT(e){return String(e||"").trim().toLowerCase().replace(/^\[|\]$/g,"")}function hT(e){let t=dT(e);if(!lT.has(t))throw new TypeError(`oracle-public only binds loopback hosts; got ${String(e)}`);return t==="::1"?"::1":String(e).trim()}function QT(){return{status:200,body:{ok:!0,plane:Vr,version:ni}}}function si(e){return{...e,allowWildcardActions:!1,now:Math.floor(Date.now()/1e3)}}function IT(e){let t=Me(e,"body"),A=t.input!==void 0?Me(t.input,"input"):t,r=si(Me(t.opts,"opts")),n=A===t?(({opts:s,...o})=>o)(t):A;return{status:200,body:Yu(n,r)}}function BT(e){let t=Me(e,"body"),A=t.request!==void 0?Me(t.request,"request"):t.input!==void 0?Me(t.input,"input"):t,r=si(Me(t.opts,"opts")),n=A===t?(({opts:s,...o})=>o)(t):A;return{status:200,body:Hu(n,r)}}function CT(e){let t=Me(e,"body"),A=si(Me(t.opts,"opts")),r=qu(t.store??[],A);return{status:200,body:{ok:!0,count:r.length,grants:r}}}function fT(e){let t=Me(e,"body"),A=si(Me(t.opts,"opts")),r=Pu(t.store??[],t.id,A);return r==null?{status:404,body:{error:"grant-not-found"}}:{status:200,body:r}}function pT(){let e=(process.env.ORACLE_PRIVY_APP_ID||process.env.PRIVY_APP_ID||"").trim(),t=e.length>0,A=!0,r=[];return t&&r.push("privy"),A&&r.push("injected"),{status:200,body:{ok:!0,plane:Vr,version:ni,custody:{selfCustodial:!0,signer:"user-wallet",privyEnabled:t,injectedEnabled:A,modes:r},privy:{appId:e||null}}}}var Eu=400;function mT(e=[]){if(e.length<=Eu)return{rows:e,truncated:!1,omitted:0};let t=r=>r?.kind==="native"?0:r?.priced?1:2;return{rows:[...e].sort((r,n)=>t(r)-t(n)).slice(0,Eu),truncated:!0,omitted:e.length-Eu}}var du=300;function yT(e=[]){if(e.length<=du)return{items:e,truncated:!1,omitted:0};let t=r=>r?.spam===!0||r?.nsfw===!0?2:Number.isFinite(Number(r?.floorUsd))&&Number(r?.floorUsd)>0?0:1;return{items:[...e].sort((r,n)=>t(r)-t(n)).slice(0,du),truncated:!0,omitted:e.length-du}}var ri=12;async function wT(e){let t=Me(e,"body"),A=typeof t.owner=="string"?t.owner:null;if(!A)throw new Le(400,"owner-required","owner must be an EVM address");let r=Array.isArray(t.chainIds)?t.chainIds.map(Number).filter(Number.isFinite):void 0;if(r&&r.length>ri)throw new Le(400,"too-many-chains",`at most ${ri} chainIds per request`);let s=await Yf({owner:A,chainIds:r},bp());return{status:200,body:{ok:!0,owner:s.owner,scannedRange:s.scannedRange,approvals:s.approvals,scans:s.scans,warnings:s.warnings}}}var bT=/^[1-9A-HJ-NP-Za-km-z]{32,44}$/,kT=/^([13][1-9A-HJ-NP-Za-km-z]{25,34}|bc1[ac-hj-np-z02-9]{11,71})$/i;function DT(e){if(typeof e!="string")return null;let t=e.trim();return bT.test(t)?t:null}function ST(e){if(typeof e!="string")return null;let t=e.trim();return kT.test(t)?t:null}function wp(e){if(typeof e=="string")return e.trim()===""?null:e;if(e&&typeof e=="object"&&!Array.isArray(e)){let t=e.evm;if(typeof t=="string"&&t.trim()!=="")return t}return null}async function RT(e){let t=Me(e,"body"),A=wp(t.owner),r=DT(t.solana),n=ST(t.bitcoin);if(!A&&!r&&!n)throw new Le(400,"owner-required","owner must be an EVM address (or pass solana/bitcoin)");let s=Array.isArray(t.chainIds)?t.chainIds.map(Number).filter(Number.isFinite):void 0;if(s&&s.length>ri)throw new Le(400,"too-many-chains",`at most ${ri} chainIds per request`);let o=await op({addresses:{evm:A,solana:r,bitcoin:n},evmChainIds:s,includePrices:!0,includeTokens:!0,includeCollectibles:!1},{env:{}}),i=[],a=[],l=0,c=0;for(let E of o.chains||[]){if(!["evm","solana","bitcoin"].includes(E.family))continue;let h=E.fungibleTokens?.status??"unavailable";h==="ok"?l+=1:h==="unavailable"&&(c+=1),a.push({chainId:E.chainId,family:E.family,name:E.name,status:E.status,error:E.error??null,tokenDiscovery:h,tokenDiscoveryReason:E.fungibleTokens?.reason??null,tokenCount:Array.isArray(E.fungibleTokens?.assets)?E.fungibleTokens.assets.length:0});let Q=E.native;E.status==="ok"&&Q&&Q.status==="ok"&&Q.amountRaw&&Q.amountRaw!=="0"&&Q.amountRaw!=="0x0"&&i.push({chainId:E.chainId,family:E.family,chain:E.name,symbol:Q.symbol,decimals:Q.decimals,amount:String(Q.amountRaw),amountRaw:String(Q.amountRaw),amountFormatted:Q.amount,kind:"native",valueUsd:Q.usdValue!=null?String(Q.usdValue):null,priced:Q.usdValue!=null});for(let I of E.fungibleTokens?.assets||[]){let d=I.amountRaw!=null?String(I.amountRaw):null;if(!d||d==="0")continue;let C=typeof I.decimals=="number"&&Number.isInteger(I.decimals)?I.decimals:null;i.push({chainId:E.chainId,family:E.family,chain:E.name,symbol:I.symbol||I.coin||"TOKEN",decimals:C,amount:d,amountRaw:d,amountFormatted:I.amount!=null?String(I.amount):null,kind:E.family==="bitcoin"?"rune":E.family==="solana"?"spl":"erc20",address:I.address||I.mint||null,valueUsd:I.usdValue!=null?String(I.usdValue):null,priced:I.usdValue!=null,source:I.source||E.fungibleTokens?.source||null})}}let u=c>0||!!(o.valuation&&o.valuation.complete===!1),g=mT(i);return{status:200,body:{ok:!0,owner:o.addresses?.evm??A,queriedAt:o.queriedAt,portfolio:{rows:g.rows,rowsTruncated:g.truncated,rowsOmitted:g.omitted,chains:a,coverage:o.coverage,valuation:o.valuation??null,complete:!u&&c===0&&!g.truncated,incompleteReason:g.truncated?`Showing ${g.rows.length} of ${g.rows.length+g.omitted} rows (native and priced first); ${g.omitted} low-signal rows omitted.`:u?l?`Token scan live on ${l} chain(s); ${c} chain(s) still lack an indexer (native-only).`:"EVM token enumeration requires a public explorer/indexer; natives are still live.":null},warnings:o.warnings}}}function bp(){return{env:{},allowDiskCredentials:!1,allowAmbientCredentials:!1}}async function NT(e){let t=Me(e,"body"),A=wp(t.owner);if(!A)throw new Le(400,"owner-required","owner must be an EVM address");let r=await Bp({addresses:{evm:A}},bp()),n=r?.inventory&&typeof r.inventory=="object"?r.inventory:{},o=(Array.isArray(n.visibleItems)?n.visibleItems:Array.isArray(n.items)?n.items:Array.isArray(r?.items)?r.items:[]).map(c=>{if(!c||typeof c!="object")return null;let u=typeof c.collection=="string"?c.collection:c.collection&&typeof c.collection=="object"&&typeof c.collection.slug=="string"?c.collection.slug:typeof c.contract=="string"?c.contract:null;return{chain:c.chain??null,chainId:c.chainId??null,family:c.family??null,owner:c.owner??A,contract:c.contract??null,tokenId:c.tokenId==null?null:String(c.tokenId),tokenStandard:c.tokenStandard??null,collection:u,name:typeof c.name=="string"?c.name.slice(0,160):null,imageUrl:c.imageUrl??c.image??null,estimatedValueUsd:c.estimatedValueUsd!=null&&Number.isFinite(Number(c.estimatedValueUsd))?Number(c.estimatedValueUsd):null,floorUsd:c.floorUsd!=null&&Number.isFinite(Number(c.floorUsd))?Number(c.floorUsd):c.estimatedValueUsd!=null&&Number.isFinite(Number(c.estimatedValueUsd))?Number(c.estimatedValueUsd):null,spam:c.spam===!0,nsfw:c.nsfw===!0,source:typeof c.source=="string"?c.source.slice(0,64):null}}).filter(Boolean),i=Array.isArray(r?.coverage)?r.coverage:[],a=yT(o),l=r?.valuation?.complete===!0&&!a.truncated;return{status:200,body:{ok:!0,owner:A,queriedAt:r.generatedAt??new Date().toISOString(),nfts:{items:a.items,itemsTruncated:a.truncated,itemsOmitted:a.omitted,chains:i.map(c=>({family:c?.family??null,chain:c?.chain??null,chainId:c?.chainId??null,status:c?.status??null,count:c?.count??null,complete:c?.complete===!0,source:c?.source??null,error:null,reason:typeof c?.reason=="string"?c.reason.slice(0,120):null})),coverage:{operational:!0,complete:l,hasGaps:!l,degraded:i.filter(c=>c?.status==="partial").map(c=>c.chain).filter(Boolean),unavailable:i.filter(c=>c?.status==="unavailable").map(c=>c.chain).filter(Boolean),unconfigured:i.filter(c=>c?.status==="not-configured").map(c=>c.chain).filter(Boolean)},count:a.items.length,visibleCount:a.items.length,totalCount:o.length},valuation:r?.valuation?{estimatedCurrentValueUsd:r.valuation.estimatedCurrentValueUsd??null,valuedItems:r.valuation.valuedItems??null,unvaluedItems:r.valuation.unvaluedItems??null,complete:r.valuation.complete===!0}:null}}}var FT=6e4,UT=120,kp=10,MT=300,LT=kp,pp=Object.freeze(new Set(["/public/approvals","/public/portfolio","/public/nfts"])),xT=4096,$n=new Map;function TT(e){if(process.env.ORACLE_TRUST_PROXY==="1"){let t=e.headers["x-forwarded-for"];if(typeof t=="string"&&t.length>0){let A=t.split(",")[0].trim();if(A)return A.slice(0,64)}}return e.socket?.remoteAddress||"unknown"}function vT(e,t){let A=String(e.socket?.remoteAddress||"").replace(/^::ffff:/,""),r=A==="127.0.0.1"||A==="::1"||A.startsWith("127."),n=TT(e),s=r&&n!==A,o=pp.has(t)?r&&!s?LT:kp:r&&!s?MT:UT,i=Date.now(),a=`${n}:${pp.has(t)?"amp":"std"}`,l=$n.get(a);if(!l||i>=l.resetAt){for($n.set(a,{count:1,resetAt:i+FT});$n.size>xT;){let c=$n.keys().next();if(c.done)break;$n.delete(c.value)}return{allowed:!0,limit:o,remaining:o-1,retryAfterSec:0}}return l.count+=1,l.count>o?{allowed:!1,limit:o,remaining:0,retryAfterSec:Math.max(1,Math.ceil((l.resetAt-i)/1e3))}:{allowed:!0,limit:o,remaining:o-l.count,retryAfterSec:0}}var mp=Object.freeze({"GET /public/health":QT,"GET /public/config":pT,"POST /public/connect/request":IT,"POST /public/connect/assemble":BT,"POST /public/grants/active":CT,"POST /public/grants/get":fT,"POST /public/approvals":wT,"POST /public/portfolio":RT,"POST /public/nfts":NT});function Qu(e={}){return{"cache-control":"no-store","x-oracle-plane":Vr,"x-oracle-unsigned":"true",...e}}function GT(e,t,A,r){e.writeHead(t,Qu({"content-type":A})),e.end(r)}function YT(e,t,A){if(e.method!=="GET"&&e.method!=="HEAD")return!1;let r=A===""?"/":A,n=fp[r]||fp[r.replace(/\/+$/,"")||"/"];if(!n)return!1;let s=nT(hu(gu,n.file));if(!s.startsWith(gu+sT)&&s!==gu)return Gt(t,404,{error:"not-found",message:"unknown static path"}),!0;if(!AT(s))return Gt(t,404,{error:"not-found",message:`missing static file ${n.file}`}),!0;let o=yp(s);return e.method==="HEAD"?(t.writeHead(200,Qu({"content-type":n.type,"content-length":String(o.length)})),t.end(),!0):(GT(t,200,n.type,o),!0)}async function HT(e,t){let r=new URL(e.url,"http://localhost").pathname||"/";r.length>1&&r.endsWith("/")&&r!=="/oracle-console/"&&(r=r.replace(/\/+$/,"")),r===""&&(r="/");let n=r.replace(/\/+$/,"")||"/",s=`${e.method} ${n}`,o=mp[s];try{if(!o){if(YT(e,t,r))return;throw Object.keys(mp).some(u=>u.endsWith(` ${n}`))?new Le(405,"method-not-allowed",`unsupported method for ${n}`):new Le(404,"not-found",`unknown route ${n}`)}let i=vT(e,n);if(!i.allowed){t.writeHead(429,Qu({"content-type":"application/json","retry-after":String(i.retryAfterSec),"x-ratelimit-limit":String(i.limit),"x-ratelimit-remaining":"0"})),t.end(JSON.stringify({error:"rate-limited",message:`too many requests for ${n}; retry in ${i.retryAfterSec}s`}));return}let a=e.method==="GET"||e.method==="HEAD"?void 0:await ET(e),l=await o(a);Gt(t,l.status,l.body)}catch(i){if(i instanceof et){Gt(t,500,{error:"secret-leak-blocked"});return}if(i instanceof gt){Gt(t,400,{error:"invalid-grant",errors:i.errors.map(a=>({field:a.field,message:a.message}))});return}if(i instanceof Le){Gt(t,i.status,{error:i.code,message:i.message});return}if(i instanceof TypeError){Gt(t,400,{error:"bad-request",message:i.message});return}Gt(t,500,{error:"internal-error"})}}function JT(){return tT((e,t)=>{HT(e,t).catch(()=>{try{Gt(t,500,{error:"internal-error"})}catch{}})})}function Iu({host:e,port:t}={}){let A=hT(e??uu("ORACLE_PUBLIC_HOST","MAD_PUBLIC_HOST",aT)),r=t??uu("ORACLE_PUBLIC_PORT","MAD_PUBLIC_PORT",String(cT)),n=Number(r);if(!Number.isInteger(n)||n<0||n>65535)throw new TypeError(`invalid public port: ${String(r)}`);return{host:A,port:n}}function Dp(e={}){let{host:t,port:A}=Iu(e),r=JT();return r.listen(A,t),r}var Bu=Iu(),oi=Dp(Bu);oi.on("listening",()=>{let e=oi.address(),t=typeof e=="object"&&e?e.address:Bu.host,A=typeof e=="object"&&e?e.port:Bu.port;console.log(`oracle-public-server listening on http://${t}:${A} (plane=${Vr}, version=${ni}, unsigned-only)`)});oi.on("error",e=>{console.error(`oracle-public-server failed to bind: ${e.code||e.message}`),process.exit(1)});for(let e of["SIGINT","SIGTERM"])process.on(e,()=>{oi.close(()=>process.exit(0)),setTimeout(()=>process.exit(0),1e3).unref()});
|
|
2
|
+
var we=(e,t,r)=>()=>{if(r)throw r[0];try{return e&&(t=e(e=0)),t}catch(n){throw r=[n],n}};import Z from"node:net";import Nr from"node:dns";function Ee(e){let t=String(e).toLowerCase().split("%")[0];if((t.match(/::/g)||[]).length>1)return null;let r=c=>{if(!c)return[];let d=c.split(":"),f=d.at(-1);if(f?.includes(".")){let u=f.split(".").map(Number);if(u.length!==4||u.some(g=>!Number.isInteger(g)||g<0||g>255))return null;d.splice(d.length-1,1,(u[0]<<8|u[1]).toString(16),(u[2]<<8|u[3]).toString(16))}return d.some(u=>!/^[0-9a-f]{1,4}$/.test(u))?null:d.map(u=>Number.parseInt(u,16))},[n,o]=t.split("::"),i=r(n),s=r(o);if(!i||!s)return null;let a=t.includes("::"),l=8-i.length-s.length;if(!a&&l!==0||a&&l<1)return null;let p=[...i,...Array(Math.max(0,l)).fill(0),...s];return p.length!==8?null:Uint8Array.from(p.flatMap(c=>[c>>8,c&255]))}function He(e,t,r){let n=Math.floor(r/8),o=r%8;for(let s=0;s<n;s+=1)if(e[s]!==t[s])return!1;if(!o)return!0;let i=255<<8-o;return(e[n]&i)===(t[n]&i)}function Ve(e){if(Z.isIPv4(e)){let t=e.split(".").map(Number);return!(t[0]===0||t[0]===10||t[0]===127||t[0]>=224||t[0]===100&&t[1]>=64&&t[1]<=127||t[0]===169&&t[1]===254||t[0]===172&&t[1]>=16&&t[1]<=31||t[0]===192&&(t[1]===0||t[1]===2||t[1]===168)||t[0]===192&&t[1]===88&&t[2]===99||t[0]===198&&(t[1]===18||t[1]===19||t[1]===51)||t[0]===203&&t[1]===0&&t[2]===113)}if(Z.isIPv6(e)){let t=Ee(e);if(!t)return!1;let r=Ee("::ffff:0:0");return He(t,r,96)?Ve([...t.slice(12)].join(".")):He(t,Ee("2000::"),3)?![["2001::",23],["2001:db8::",32],["2001:10::",28],["2001:2::",48],["2002::",16],["3fff::",20]].some(([o,i])=>He(t,Ee(o),i)):!1}return!1}function Pr(e){let t;try{t=new URL(String(e))}catch{return{ok:!1,error:`not a valid URL: ${String(e).slice(0,120)}`}}if(t.protocol!=="http:"&&t.protocol!=="https:")return{ok:!1,error:`refused protocol ${t.protocol} (only http/https)`};let r=t.hostname.toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,"");if(Cr.has(r)||r.endsWith(".localhost")||r.endsWith(".internal"))return{ok:!1,error:`refused internal host ${r}`};let n=Z.isIP(r);return n!==0&&!Ve(r)?{ok:!1,error:`refused private address ${r}`}:{ok:!0,url:t,host:r,isLiteralIp:n!==0}}async function ze(e,{lookupFn:t=Nr.promises.lookup}={}){let r=Pr(e);if(!r.ok)return r;if(r.isLiteralIp)return{ok:!0,url:r.url,addresses:[{address:r.host,family:Z.isIPv6(r.host)?6:4}]};let n;try{n=await t(r.host,{all:!0,verbatim:!0})}catch{return{ok:!1,error:`refused: ${r.host} did not resolve`}}return!Array.isArray(n)||n.length===0||n.some(o=>!Ve(o.address))?{ok:!1,error:`refused: ${r.host} resolves to a non-public address`}:{ok:!0,url:r.url,addresses:n}}async function je({requireUndici:e=!1,importUndici:t=()=>import("undici")}={}){let r,n;try{let d=await t();r=d.Agent,n=d.fetch}catch(d){if(e)throw new Error(`egress-guard: untrustedUrl pinning requires the undici package, which failed to load: ${d?.message||d}`);return null}if(typeof r!="function"||typeof n!="function"){if(e)throw new Error("egress-guard: untrustedUrl pinning requires undici's Agent and fetch exports, which were not found on the imported module");return null}let o=d=>String(d).toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,""),i=new Map,s=d=>(Array.isArray(d)?d:[d]).map(f=>typeof f=="string"?{address:f}:f).filter(f=>f&&f.address).map(f=>({address:f.address,family:f.family||(Z.isIPv6(f.address)?6:4)})),a=(d,f,u)=>{i.set(o(d),s(typeof f=="string"?[{address:f,family:u}]:f))},l=d=>{let f=o(d);if(Z.isIP(f))return[{address:f,family:Z.isIPv6(f)?6:4}];let u=i.get(f);if(!u||!u.length)throw new Error(`refused: unpinned host ${d} during pinned fetch`);return u},p=new r({connect:{lookup(d,f,u){let g;try{g=l(d)}catch(E){return u(E)}return f?.all?u(null,g):u(null,g[0].address,g[0].family)}}}),c=$r((d,f={})=>n(d,{...f,dispatcher:p}),a);return{dispatcher:p,fetch:c,pin:a,resolve:l,async close(){try{await p.destroy()}catch{}}}}function $r(e,t){if(typeof e!="function")throw new Error("markPinCapableFetch: fetchImpl must be a function");if(typeof t!="function")throw new Error("markPinCapableFetch: pin must be a function");return e[We]=Object.freeze({pin:t}),e}function Ke(e){return typeof e=="function"&&typeof e[We]?.pin=="function"}function Zt(e,t,r){if(!Ke(e))throw new Error("pinFetchToAddresses: fetchImpl is not pin-capable");e[We].pin(t,r)}var Cr,We,en=we(()=>{Cr=new Set(["localhost","metadata.google.internal","metadata.goog"]);We=Symbol.for("oracle.egressGuard.pinCapableFetch")});import{createHash as Rr}from"node:crypto";function Mr(e){let t=String(e||"").toLowerCase();return an.includes(t)||/(^|-)(api[-_]?key|key|token|secret|auth|authorization|session|cookie|signature|access)(-|$)/.test(t)}function Fr(e){let t={};for(let[r,n]of Object.entries(e||{}))Mr(r)||(t[r]=n);return t}function qr(e,t){if(!e)throw new Error(`HTTP redirect from ${t} missing Location`);let r=new URL(String(e),String(t));if(r.protocol!=="http:"&&r.protocol!=="https:")throw new Error(`HTTP redirect from ${t} used unsupported protocol ${r.protocol}`);return r.toString()}function Dr(e,t){return new URL(String(e)).origin===new URL(String(t)).origin}function Hr(e,t,r,n={}){let o={};for(let[c,d]of Object.entries(r||{}))o[c.toLowerCase()]=d;let i=Object.keys(o).filter(c=>/(^|-)(api[-_]?key|key|token|secret|auth|authorization|session|cookie|signature|access)(-|$)/.test(c)),a=[...new Set([...an,...i])].sort().map(c=>`${c}=${o[c]??""}`).join(`
|
|
3
|
+
`),l=Rr("sha256").update(a).digest("hex").slice(0,32),p=`${n.untrustedUrl?"untrusted":"trusted"}:${n.maxResponseBytes??"unbounded"}`;return`${e} ${t} ${p} ${l}`}function Vr(e,t){let r=Number(t);return Number.isFinite(r)&&r>0?Math.min(r*1e3,nn):Math.min(250*2**e,nn)+Math.floor(Math.random()*100)}function me(e,t={}){let r=new Error(e);return r.retryable=!1,Object.assign(r,t),r}function Ye(e,t,r){return me(`HTTP response from ${e} exceeded maxResponseBytes ${r} (${t})`,{oversize:!0})}function he(e){try{let t=e?.body?.cancel?.();t&&typeof t.then=="function"&&t.catch(()=>{})}catch{}}function jr(e){return e?e.byteLength??e.length??0:0}async function on(e,t,{url:r,truncate:n=!1,onOversize:o}={}){if(t==null)return await e.text();let i=Number(e.headers?.get?.("content-length"));if(Number.isFinite(i)&&i>t&&(he(e),!n))throw Ye(r,`content-length ${i}`,t);let s=e.body?.getReader?.();if(!s){let d=await e.text(),f=Buffer.byteLength(d,"utf8");if(f>t){if(!n)throw Ye(r,`body ${f} bytes`,t);return Buffer.from(d,"utf8").subarray(0,t).toString("utf8")}return d}let a=[],l=0,p=!1;try{for(;;){let{value:d,done:f}=await s.read();if(f)break;if(d&&(a.push(Buffer.from(d)),l+=jr(d),l>t)){p=!0;break}}}finally{if(p)try{await s.cancel()}catch{}try{s.releaseLock?.()}catch{}}if(p&&(typeof o=="function"&&o(),!n))throw Ye(r,`streamed ${l} bytes`,t);let c=Buffer.concat(a);return(p?c.subarray(0,t):c).toString("utf8")}function sn(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}async function Wr(e,{fetchImpl:t,method:r,headers:n,body:o,timeoutMs:i,lookupFn:s,realFetch:a,untrustedUrl:l=!1,maxResponseBytes:p=null,importUndici:c,validateResponse:d}){let f=new AbortController,u=setTimeout(()=>f.abort(),i),g=null,E=t,S=s?{lookupFn:s}:{};if(l&&!a&&!Ke(E))throw me(`HTTP refused ${e}: untrustedUrl requires a pin-capable fetchImpl (see markPinCapableFetch in egress-guard.mjs) or no fetchImpl override so Oracle can pin the connection itself`);let I=async(v,{status:k=null}={})=>{let m=await ze(v,S);if(!m.ok)throw me(k==null?`HTTP refused ${v}: ${m.error}`:`HTTP redirect to ${v} ${m.error}`,k==null?{}:{status:k});let y=new URL(v).hostname;if(a){if(g&&(await g.close(),g=null),!g)try{g=await je({requireUndici:!0,...c?{importUndici:c}:{}})}catch(A){throw me(k==null?`HTTP refused ${v}: ${A?.message||A}`:`HTTP redirect to ${v} refused: ${A?.message||A}`,k==null?{}:{status:k})}g.pin(y,m.addresses),E=g.fetch}else Zt(E,y,m.addresses);return m};try{let v=String(e),k={...n||{}};l&&await I(v);for(let m=0;m<=rn;m+=1){let y=await E(v,{method:r,headers:k,body:o,signal:f.signal,redirect:"manual"});if(Ur.has(y.status)){if(r!=="GET"&&r!=="HEAD"){let $=await on(y,p??Br,{url:v,truncate:!0}),j=new Error(`HTTP ${y.status} ${r} ${v} redirected non-idempotent request`);throw j.status=y.status,j.body=sn($)??$.slice(0,300),j}if(m===rn)throw he(y),new Error(`HTTP redirect loop for ${e}`);let N=y.headers?.get?.("location"),L;try{L=qr(N,v)}catch($){throw he(y),$}let H=!Dr(L,v);if(he(y),H&&(k=Fr(k)),l)await I(L,{status:y.status});else if(H){let $=await ze(L,S);if(!$.ok){let j=new Error(`HTTP redirect from ${v} ${$.error}`);throw j.status=y.status,j.retryable=!1,j}a&&$.addresses?.length&&(g||(g=await je(c?{importUndici:c}:{})),g&&(g.pin(new URL(L).hostname,$.addresses),E=g.fetch))}v=L;continue}if(typeof d=="function")try{await d(y,{url:v})}catch(N){throw he(y),me(N?.message||String(N))}let A=await on(y,p,{url:v,onOversize:()=>f.abort()}),P=sn(A);if(!y.ok){let N=new Error(`HTTP ${y.status} ${r} ${v}`);throw N.status=y.status,N.retryAfter=y.headers?.get?.("retry-after")??null,N.body=P??A.slice(0,300),N}return P??A}throw new Error(`HTTP redirect loop for ${e}`)}finally{clearTimeout(u),g&&await g.close()}}async function O(e,t={}){let r=t.fetchImpl||globalThis.fetch;if(typeof r!="function")throw new Error("fetch unavailable \u2014 pass opts.fetchImpl");let n=t.timeoutMs??12e3,o=(t.method||"GET").toUpperCase(),i={Accept:"application/json",...t.headers||{}},s=t.body;s!=null&&typeof s!="string"&&(i["Content-Type"]=i["Content-Type"]||"application/json",s=JSON.stringify(s));let a=Number.isInteger(t.retries)?Math.max(t.retries,0):Lr,l=t.lookupFn,p=!t.fetchImpl,c=t.untrustedUrl===!0,d=t.importUndici,f=t.validateResponse,u=Number(t.maxResponseBytes),g=Number.isFinite(u)&&u>0?Math.floor(u):null,E=async()=>{let m;for(let y=0;y<=a;y++)try{return await Wr(e,{fetchImpl:r,method:o,headers:i,body:s,timeoutMs:n,lookupFn:l,realFetch:p,untrustedUrl:c,maxResponseBytes:g,importUndici:d,validateResponse:f})}catch(A){m=A;let P=A?.status,N=A?.name==="AbortError",L=new Set([408,425,429]),H=A?.retryable===!1?!1:P!=null?L.has(P)||Or.has(P)&&tn.has(o):!N&&tn.has(o);if(y===a||!H)throw A;await zr(Vr(y,A?.retryAfter))}throw m};if(!(t.dedupe!==!1&&o==="GET"&&s==null))return E();let I=Hr(o,e,i,{untrustedUrl:c,maxResponseBytes:g}),v=Ge.get(I);if(v)return v;let k=E().finally(()=>Ge.delete(I));return Ge.set(I,k),k}async function C(e){let t=Date.now();try{let r=await e();return{ok:!0,ms:Date.now()-t,data:r}}catch(r){return{ok:!1,ms:Date.now()-t,error:String(r.message||r),status:r.status??null}}}async function G(e,t,r){let n=Array.from(e),o=Math.max(1,Math.min(Number(t)||1,n.length||1)),i=new Array(n.length),s=0;return await Promise.all(Array.from({length:o},async()=>{for(;s<n.length;){let a=s++;i[a]=await r(n[a],a)}})),i}var Or,tn,Lr,nn,an,Ur,rn,Br,Ge,zr,U=we(()=>{en();Or=new Set([408,425,429,500,502,503,504]),tn=new Set(["GET","HEAD","OPTIONS","PUT","DELETE"]),Lr=2,nn=4e3,an=["authorization","x-api-key","x-tensor-api-key","0x-api-key","api-key","cookie","proxy-authorization"],Ur=new Set([301,302,303,307,308]),rn=3,Br=64*1024;Ge=new Map;zr=e=>new Promise(t=>setTimeout(t,e))});function ln(e){return Kr.get(Number(e))||null}function un(e,t=process.env){let r=ln(e);if(!r)return null;for(let n of r.rpcEnv){let o=(t[n]||"").trim();if(o)return o}return null}var cn,Kr,dn=we(()=>{cn={robinhood:{chainId:4663,name:"Robinhood Chain",rpcEnv:["RH_CHAIN_RPC"],evm:!0},ethereum:{chainId:1,name:"Ethereum",rpcEnv:["ETH_RPC_URL","ETHEREUM_RPC_URL","MAINNET_RPC_URL"],evm:!0},polygon:{chainId:137,name:"Polygon",rpcEnv:["POLYGON_RPC_URL","POLYGON_RPC"],evm:!0},arbitrum:{chainId:42161,name:"Arbitrum One",rpcEnv:["ARBITRUM_RPC_URL","ARB_RPC_URL"],evm:!0},base:{chainId:8453,name:"Base",rpcEnv:["BASE_RPC_URL"],evm:!0},hyperevm:{chainId:999,name:"HyperEVM",rpcEnv:["HYPEREVM_RPC_URL","HYPER_EVM_RPC"],evm:!0},bsc:{chainId:56,name:"BNB Smart Chain",rpcEnv:["BSC_RPC_URL","BNB_RPC_URL"],evm:!0},avalanche:{chainId:43114,name:"Avalanche C-Chain",rpcEnv:["AVALANCHE_RPC_URL","AVAX_RPC_URL"],evm:!0},optimism:{chainId:10,name:"OP Mainnet",rpcEnv:["OPTIMISM_RPC_URL","OP_RPC_URL"],evm:!0},abstract:{chainId:2741,name:"Abstract",rpcEnv:["ABSTRACT_RPC_URL","ABS_RPC_URL"],evm:!0},stable:{chainId:988,name:"Stable Mainnet",rpcEnv:["STABLE_RPC_URL","STABLE_RPC"],evm:!0}},Kr=new Map(Object.values(cn).map(e=>[e.chainId,e]))});import{Interface as Gr,getAddress as Yr}from"ethers";function Xe(e,t){try{return Yr(e).toLowerCase()}catch{throw new Error(`${t} must be a valid EVM address`)}}function Jr(e,{rpcUrl:t,env:r=process.env}={}){if(t)return t;let n=un(e,r);return n||Xr[Number(e)]||null}function Zr(e){let t=String(e||""),r=t.toLowerCase();if(t!==t.trim()||!/^[a-zA-Z0-9_]+$/.test(t)||!Qr.test(r))throw new Error(`evm-rpc: ${t} refused \u2014 @oracle-agent/oracle is prepare-only (read RPC only; no broadcast/sign)`);return r}async function z(e,t,r=[],n={}){let o=String(t||"");Zr(o);let i=Jr(e,n);if(!i)throw new Error(`No RPC URL for chainId ${e} (set env from chain registry rpcEnv or pass rpcUrl)`);let a=await O(i,{method:"POST",body:{jsonrpc:"2.0",id:1,method:t,params:r},fetchImpl:n.fetchImpl,timeoutMs:n.timeoutMs??12e3});if(a?.error){let l=new Error(a.error.message||JSON.stringify(a.error));throw l.code=a.error.code,l}return a.result}async function Je(e,t={}){let r=await z(e,"eth_blockNumber",[],t);return parseInt(r,16)}async function Qe(e,t,r={}){if(!t)throw new Error("rpcGetBalance requires address");let n=await z(e,"eth_getBalance",[t,"latest"],r);return{chainId:Number(e),address:t,balanceWei:BigInt(n).toString(),balanceHex:n}}async function fn(e={},t={}){let r=Number(e.chainId??t.chainId??1),n=Xe(e.token||e.tokenAddress,"token"),o=Xe(e.owner,"owner"),i=Xe(e.spender,"spender"),s=pn.encodeFunctionData("allowance",[o,i]),a=await z(r,"eth_call",[{to:n,data:s},e.blockTag||"latest"],t),l=pn.decodeFunctionResult("allowance",a),p=BigInt(l[0]);return{chainId:r,token:n,owner:o,spender:i,allowance:p.toString(),allowanceHex:`0x${p.toString(16)}`,blockTag:e.blockTag||"latest"}}var pn,Xr,Qr,ie=we(()=>{U();dn();pn=new Gr(["function allowance(address owner,address spender) view returns (uint256)","function balanceOf(address account) view returns (uint256)"]);Xr={1:"https://ethereum.publicnode.com",137:"https://polygon-bor-rpc.publicnode.com",42161:"https://arbitrum-one-rpc.publicnode.com",8453:"https://base-rpc.publicnode.com",10:"https://optimism-rpc.publicnode.com",988:"https://rpc.stable.xyz",56:"https://bsc-rpc.publicnode.com",43114:"https://avalanche-c-chain-rpc.publicnode.com",999:"https://rpc.hyperliquid.xyz/evm",2741:"https://api.mainnet.abs.xyz",4663:"https://rpc.mainnet.chain.robinhood.com"};Qr=/^(?:eth_(?:call|blocknumber|chainid|get[a-z0-9]+|feehistory|gasprice|maxpriorityfeepergas|syncing|protocolversion|estimategas|createaccesslist)|net_(?:version|listening|peercount)|web3_(?:clientversion|sha3))$/});import{createServer as Ci}from"node:http";import{readFileSync as ir,existsSync as Pi}from"node:fs";import{dirname as $i,join as xt,normalize as Ri,sep as Oi}from"node:path";import{fileURLToPath as Li}from"node:url";import{createHash as fr}from"node:crypto";var pe=1,Ct=Object.freeze(["chainId","agentAddress","accountAddress","actions","targets","maxValueWei","maxGasWei","maxSlippageBps","expiresAt","nonce","revocationKey"]),mr=Object.freeze(["read","simulate"]),Pt=1e4,$t=1440*60,Rt=128,Ot=256,Lt=64,Ut=256,Bt=/^0x[0-9a-fA-F]{40}$/,hr=/^[a-z][a-z0-9_-]*:[a-z0-9._-]+$/,yr=/^[a-z][a-z0-9_-]*:\*$/,br=/^[A-Za-z0-9._:-]+$/,gr=/^[A-Za-z0-9._:-]+$/,Mt=/^(0|[1-9][0-9]*)$/,V=class extends Error{constructor(t){let r=t.map(n=>`${n.field}: ${n.message}`);super(`invalid grant (${t.length} error${t.length===1?"":"s"}): ${r.join("; ")}`),this.name="GrantValidationError",this.errors=t}};function Ft(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function wr(e){if(typeof e=="bigint")return e>=0n?e.toString(10):null;if(typeof e=="number")return!Number.isSafeInteger(e)||e<0?null:String(e);if(typeof e=="string"){let t=e.trim();return Mt.test(t)?t:null}return null}function K(e){if(typeof e=="bigint")return e<0n||e>BigInt(Number.MAX_SAFE_INTEGER)?null:Number(e);if(typeof e=="number")return!Number.isSafeInteger(e)||e<0?null:e;if(typeof e=="string"){let t=e.trim();if(!Mt.test(t))return null;let r=Number(t);return Number.isSafeInteger(r)?r:null}return null}function Be(e){let t=String(e).split(":")[0];return mr.includes(t)}function Me(e,t={}){let r=[],n=(d,f)=>r.push({field:d,message:f});if(!Ft(e))return n("grant","grant must be a plain object"),{ok:!1,errors:r,grant:null};for(let d of Object.keys(e))Ct.includes(d)||n(d,"unknown field is not allowed");for(let d of Ct)(!(d in e)||e[d]==null)&&n(d,"required field is missing");if(r.length)return{ok:!1,errors:r,grant:null};let o={},i=K(e.chainId);i==null||i<=0?n("chainId","must be a positive integer chain id"):o.chainId=i;for(let d of["agentAddress","accountAddress"]){let f=e[d];typeof f!="string"||!Bt.test(f.trim())?n(d,"must be a 0x-prefixed 20-byte hex address"):o[d]=f.trim().toLowerCase()}if(!Array.isArray(e.actions)||e.actions.length===0)n("actions","must be a non-empty array of action scopes");else if(e.actions.length>Lt)n("actions",`too many actions (max ${Lt})`);else{let d=[];for(let f of e.actions){let u=typeof f=="string"?f.trim():null;if(!u){n("actions","action entries must be non-empty strings");continue}if(u.includes("*")){t.allowWildcardActions===!0&&yr.test(u)?d.push(u):n("actions",`broad wildcard action "${u}" is rejected (fail closed)`);continue}if(!hr.test(u)){n("actions",`malformed action "${u}" (expected verb:resource)`);continue}d.push(u)}o.actions=[...new Set(d)].sort()}if(!Array.isArray(e.targets))n("targets","must be an array of contract addresses");else if(e.targets.length>Ut)n("targets",`too many targets (max ${Ut})`);else{let d=[];for(let f of e.targets){let u=typeof f=="string"?f.trim():null;if(!u||!Bt.test(u)){n("targets",`target "${f}" must be a 0x-prefixed 20-byte hex address (wildcards not allowed)`);continue}d.push(u.toLowerCase())}if(o.targets=[...new Set(d)].sort(),o.targets.length===0&&Array.isArray(o.actions)){let f=o.actions.filter(u=>!Be(u));(f.length>0||o.actions.length===0)&&n("targets",`empty targets are only allowed for read/simulate scopes (blocked by: ${f.join(", ")||"no valid actions"})`)}}for(let d of["maxValueWei","maxGasWei"]){let f=wr(e[d]);f==null?n(d,"must be a non-negative integer wei amount"):o[d]=f}let s=K(e.maxSlippageBps);s==null||s>Pt?n("maxSlippageBps",`must be an integer between 0 and ${Pt}`):o.maxSlippageBps=s;let a=864e10,l=K(e.expiresAt);if(l==null||l<=0)n("expiresAt","must be a positive unix-seconds timestamp");else if(l>a)n("expiresAt","exceeds the max unix-seconds timestamp (pass seconds, not milliseconds)");else if(o.expiresAt=l,t.now!=null){let d=K(t.now);d==null?n("expiresAt","opts.now must be a unix-seconds integer"):l<=d?n("expiresAt",`grant is expired (expiresAt ${l} <= now ${d})`):l-d>$t&&n("expiresAt",`grant exceeds the hard 24-hour TTL (${$t} seconds)`)}let p=typeof e.nonce=="string"?e.nonce.trim():K(e.nonce)!=null?String(K(e.nonce)):null;!p||p.length>Rt||!br.test(p)?n("nonce",`must be a non-empty string (max ${Rt} chars, [A-Za-z0-9._:-])`):o.nonce=p;let c=typeof e.revocationKey=="string"?e.revocationKey.trim():null;return!c||c.length>Ot||!gr.test(c)?n("revocationKey",`must be a non-empty public identifier (max ${Ot} chars, [A-Za-z0-9._:-])`):o.revocationKey=c,r.length?{ok:!1,errors:r,grant:null}:{ok:!0,errors:[],grant:o}}function Se(e,t={}){let{ok:r,errors:n,grant:o}=Me(e,t);if(!r)throw new V(n);return o}function Fe(e,t={}){let r=Se(e,t),o=Object.keys(r).sort().map(i=>`${JSON.stringify(i)}:${JSON.stringify(r[i])}`);return`{"version":${pe},${o.join(",")}}`}function ve(e,t={}){return fr("sha256").update(Fe(e,t),"utf8").digest("hex")}function qt(e,t){let r=K(t),n=K(Ft(e)?e.expiresAt:null);return r==null||n==null?!0:n<=r}var Dt="oracle-connect-request",Sr="oracle-unsigned-grant",vr="oracle-grant-canonical-json-utf8-v1",D=class extends Error{constructor(t,r){super(`secret material must never appear in a public API object (at ${t}, rule: ${r})`),this.name="SecretLeakError",this.path=t,this.rule=r}},Er=/(private[_-]?key|secret|bearer|keystore|mnemonic|seed[_-]?phrase|passphrase|password|api[_-]?key|access[_-]?token|auth[_-]?token|session[_-]?token|signer[_-]?url|signature)/i,Ar=Object.freeze(["privkey","wif","xprv","seed"]);function qe(e){let t=String(e),r=t.toLowerCase().replace(/[\s._-]+/g,"");return Er.test(t)||Ar.includes(r)}var Ht=Object.freeze([{rule:"raw-32-byte-hex-key",re:/^0x[0-9a-fA-F]{64}$/},{rule:"raw-32-byte-hex-bare",re:/^[0-9a-fA-F]{64}$/},{rule:"extended-private-key",re:/\b(?:xprv|tprv|yprv|zprv)[1-9A-HJ-NP-Za-km-z]{107}\b/},{rule:"bitcoin-wif",re:/\b[59KLc][1-9A-HJ-NP-Za-km-z]{50,51}\b/},{rule:"bip39-mnemonic",re:/\b(?:[a-z]{3,8}\s+){11,23}[a-z]{3,8}\b/},{rule:"bearer-token",re:/bearer\s+[A-Za-z0-9._~+/=-]+/i},{rule:"pem-private-key",re:/-----BEGIN[A-Z ]*PRIVATE KEY-----/},{rule:"keystore-path",re:/keystore/i},{rule:"signer-url",re:/https?:\/\/\S*sign/i},{rule:"authorization-header",re:/authorization\s*:/i}]),Vt=Object.freeze(["grantid","id","hash","sha256","sha256hex","checksum","txhash","transactionhash","blockhash","digest","userophash","commithash","prevhash","intenthash","canonicalhash","payloadhash","requestid"]);function xr(e){return e.replace(/"([A-Za-z0-9_-]+)"\s*:\s*"(?:0x)?([0-9a-fA-F]{64})"/g,(t,r)=>Vt.includes(String(r).toLowerCase().replace(/[_-]/g,""))?`"${r}":"<hex64>"`:t)}function zt(e){let t;try{t=JSON.stringify(e)}catch(o){throw new D("$",`unserializable-payload: ${String(o?.message||o)}`)}if(t===void 0)return"null";let r=xr(t);for(let{rule:o,re:i}of Ht)if(i.test(r))throw new D("$<serialized>",o);if(/(?:^|[^0-9a-fA-Fx])0x[0-9a-fA-F]{64}(?![0-9a-fA-F])/.test(r))throw new D("$<serialized>","raw-32-byte-hex-embedded");return JSON.parse(t,(o,i)=>{if(o&&qe(o))throw new D(`$<serialized>.${o}`,"forbidden-key-name");return i}),t}function q(e,t="$",r=new Set,n=""){if(e==null)return e;if(typeof e=="string"){let o=Vt.includes(String(n).toLowerCase().replace(/[_-]/g,""));for(let{rule:i,re:s}of Ht)if(!(o&&i.startsWith("raw-32-byte-hex"))&&s.test(e))throw new D(t,i);return e}if(typeof e!="object"||r.has(e)||(r.add(e),ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e;if(e instanceof Map){for(let[o,i]of e.entries()){if(typeof o=="string"&&qe(o))throw new D(`${t}[${JSON.stringify(o)}]`,"forbidden-key-name");q(o,`${t}[key]`,r),q(i,`${t}[${String(o)}]`,r)}return e}if(e instanceof Set){let o=0;for(let i of e.values())q(i,`${t}[${o++}]`,r);return e}if(Array.isArray(e))return e.forEach((o,i)=>q(o,`${t}[${i}]`,r)),e;for(let[o,i]of Object.entries(e)){if(qe(o))throw new D(`${t}.${o}`,"forbidden-key-name");q(i,`${t}.${o}`,r,o)}return e}function fe(e){if(e&&typeof e=="object"&&!Object.isFrozen(e)){Object.freeze(e);for(let t of Object.values(e))fe(t)}return e}function jt(e,t){let r=Number(typeof e=="string"?e.trim():e);if(!Number.isSafeInteger(r)||r<=0)throw new V([{field:t,message:"must be a positive unix-seconds integer"}]);return r}function Wt(e){if(e?.now==null)throw new V([{field:"opts.now",message:"explicit reference time is required for live grant construction"}]);return jt(e.now,"opts.now")}function Ir(e){return new Date(e*1e3).toISOString()}function kr(e,t){let r=e.actions.every(n=>Be(n));return["ORACLE \u2014 CONNECT AGENT (unsigned grant, you sign it, we never do)","=================================================================",`Grant ID: ${t}`,`Version: ${pe}`,`Chain: ${e.chainId}`,`Agent: ${e.agentAddress}`,`Your account: ${e.accountAddress}`,`Actions: ${e.actions.join(", ")}`,`Targets: ${e.targets.length?e.targets.join(", "):"(none \u2014 read/simulate only)"}`,`Max value: ${e.maxValueWei} wei`,`Max gas: ${e.maxGasWei} wei`,`Max slippage: ${e.maxSlippageBps} bps`,`Expires: ${Ir(e.expiresAt)} (unix ${e.expiresAt})`,`Nonce: ${e.nonce}`,`Revocation: ${e.revocationKey}`,"-----------------------------------------------------------------",r?"Scope: read/simulate only \u2014 this grant cannot move funds.":"Scope: includes state-changing actions bounded by the caps above.","Self-custodial: this payload is UNSIGNED and contains public data only.","Sign the bytes below with YOUR wallet; Oracle never holds your keys."].join(`
|
|
4
|
+
`)}function Kt(e={},t={}){if(e==null||typeof e!="object"||Array.isArray(e))throw new V([{field:"request",message:"request must be a plain object"}]);let r=Wt(t),{ttlSeconds:n,...o}=e,i={...o};if(n!=null){if(i.expiresAt!=null)throw new V([{field:"ttlSeconds",message:"pass either ttlSeconds or expiresAt, not both"}]);let l=jt(n,"ttlSeconds");i.expiresAt=r+l}let s=Se(i,{now:r,allowWildcardActions:t.allowWildcardActions===!0}),a=fe({kind:Dt,version:pe,grant:s});return q(a)}function Gt(e={},t={}){let r=Wt(t),n=e&&e.kind===Dt?e.grant:e,o=Se(n,{now:r,allowWildcardActions:t.allowWildcardActions===!0}),i=Fe(o),s=ve(o),a=Buffer.from(i,"utf8"),l=fe({kind:Sr,unsigned:!0,payload:fe({version:pe,grantId:s,grant:o,canonical:i}),signing:fe({scheme:vr,message:i,bytesHex:`0x${a.toString("hex")}`,byteLength:a.length,sha256:s}),render:kr(o,s)});return q(l)}var oe=Object.freeze({ACTIVE:"active",EXPIRED:"expired",REVOKED:"revoked",INVALID:"invalid"});function Yt(e){if(e==null)return[];if(Array.isArray(e))return e;if(e instanceof Map)return[...e.values()];if(typeof e[Symbol.iterator]=="function")return[...e];throw new TypeError("grant store must be an array, Map, or iterable of grant records")}function _r(e){return e&&typeof e=="object"&&!Array.isArray(e)&&e.grant!=null?{grant:e.grant,revoked:e.revoked===!0||e.revokedAt!=null}:{grant:e,revoked:!1}}function De(e){let t=Number(typeof e=="string"?e.trim():e);if(!Number.isSafeInteger(t)||t<0)throw new TypeError("an explicit unix-seconds `now` is required (deterministic liveness, no wall-clock fallback)");return t}function Tr(e,t,r){if(e==null)return!1;if(typeof e=="function")return e(t,r)===!0;let n=[t,r.revocationKey];return e instanceof Set?n.some(o=>e.has(o)):Array.isArray(e)?n.some(o=>e.includes(o)):typeof e.has=="function"?n.some(o=>e.has(o)):!1}function Xt(e,{now:t,revoked:r}={}){let n=De(t),{grant:o,revoked:i}=_r(e),{ok:s,grant:a}=Me(o);if(!s)return{status:oe.INVALID,id:null,grant:null};let l=ve(a);return i||Tr(r,l,a)?{status:oe.REVOKED,id:l,grant:a}:qt(a,n)?{status:oe.EXPIRED,id:l,grant:a}:{status:oe.ACTIVE,id:l,grant:a}}function Jt(e,{now:t,revoked:r,agentAddress:n,accountAddress:o,chainId:i}={}){let s=De(t),a=n!=null?String(n).trim().toLowerCase():null,l=o!=null?String(o).trim().toLowerCase():null,p=i!=null?Number(i):null,c=[];for(let d of Yt(e)){let{status:f,id:u,grant:g}=Xt(d,{now:s,revoked:r});f===oe.ACTIVE&&(a!=null&&g.agentAddress!==a||l!=null&&g.accountAddress!==l||p!=null&&g.chainId!==p||c.push(Object.freeze({id:u,grant:g})))}return c.sort((d,f)=>d.id<f.id?-1:d.id>f.id?1:0),q(Object.freeze(c))}function Qt(e,t,{now:r,revoked:n}={}){let o=De(r),i=String(t??"").trim().toLowerCase();if(!/^[0-9a-f]{64}$/.test(i))return null;for(let s of Yt(e)){let a=Xt(s,{now:o,revoked:n});if(a.status!==oe.INVALID&&a.id===i)return q(Object.freeze({id:a.id,status:a.status,grant:a.grant}))}return null}import{Interface as wn,getAddress as eo,id as Sn}from"ethers";ie();U();var Ms=Object.freeze({1:"ethereum",10:"optimism",56:"bsc",137:"polygon",8453:"base",42161:"arbitrum",43114:"avalanche",999:"hyperevm",4663:"robinhood"});var qs=Object.freeze(["blockNumber","nativeBalance","tokenBalance","resolveToken","resolvePools","scanBlocks","scoreRisk","quote","sellSimulation","prepareUnsignedTx"]),Ze=Object.freeze({LIVE:"LIVE",CACHED:"CACHED",STALE:"STALE",UNKNOWN:"UNKNOWN",UNAVAILABLE:"UNAVAILABLE"}),et=Object.freeze({PASS:"PASS",CAUTION:"CAUTION",FAIL:"FAIL",UNKNOWN:"UNKNOWN"});ie();ie();var Ae=Object.freeze([{key:"ethereum",chainId:1,name:"Ethereum",rpcEnv:["ETH_RPC_URL","ETHEREUM_RPC_URL","MAINNET_RPC_URL"],nativeCurrency:{symbol:"ETH",decimals:18},explorer:"https://etherscan.io",dexscreenerSlug:"ethereum",venueKind:"uniswap-v3",wrappedNative:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",venues:[{kind:"quoter",address:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WETH->USDC fee 500 quoted 1908.71 USDC). A contract that correctly prices a known pair IS a working V3 quoter",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:1}},{kind:"router",address:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode on this chain and the paired quoter at the same deployment passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:1}}]},{key:"optimism",chainId:10,name:"OP Mainnet",rpcEnv:["OPTIMISM_RPC_URL","OP_RPC_URL"],nativeCurrency:{symbol:"ETH",decimals:18},explorer:"https://optimistic.etherscan.io",dexscreenerSlug:"optimism",venueKind:"uniswap-v3",wrappedNative:"0x4200000000000000000000000000000000000006",venues:[{kind:"quoter",address:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WETH->USDC fee 500 quoted 1905.23 USDC). A contract that correctly prices a known pair IS a working V3 quoter",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:10}},{kind:"router",address:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode on this chain and the paired quoter at the same deployment passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:10}}]},{key:"bsc",chainId:56,name:"BNB Smart Chain",rpcEnv:["BSC_RPC_URL","BNB_RPC_URL"],nativeCurrency:{symbol:"BNB",decimals:18},explorer:"https://bscscan.com",dexscreenerSlug:"bsc",venueKind:"uniswap-v3",wrappedNative:"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",venues:[{kind:"quoter",address:"0x78D78E420Da98ad378D7799bE8f4AF69033EB077",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WBNB->USDC fee 500 quoted 413.86 USDC). A contract that correctly prices a known pair IS a working V3 quoter",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:56}},{kind:"router",address:"0xB971eF87ede563556b2ED4b1C0b0019111Dd85d2",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode on this chain and the paired quoter at the same deployment passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:56}}]},{key:"polygon",chainId:137,name:"Polygon",rpcEnv:["POLYGON_RPC_URL","POLYGON_RPC"],nativeCurrency:{symbol:"POL",decimals:18},explorer:"https://polygonscan.com",dexscreenerSlug:"polygon",venueKind:"uniswap-v3",wrappedNative:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",venues:[{kind:"quoter",address:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WMATIC->USDC fee 500 quoted 0.0720 USDC). A contract that correctly prices a known pair IS a working V3 quoter",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:137}},{kind:"router",address:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode on this chain and the paired quoter at the same deployment passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:137}}]},{key:"stable",chainId:988,name:"Stable Mainnet",rpcEnv:["STABLE_RPC_URL","STABLE_RPC"],nativeCurrency:{symbol:"USDT0",decimals:18},venueKind:"uniswap-v3",wrappedNative:"0x5d442b349590a6048Eb2dC0eC346cAA5F47A9ab5",venues:[{kind:"quoter",address:"0xb070179E7032CdA868b53e6C1742F80c9e940d1A",label:"Uniswap V3 QuoterV2 (canonical)",verified:{method:"Stable is on the OFFICIAL Uniswap v3 Deployments List (governance-recognised 2026-05-12, UAC process completed 2026-04, deployed by Protofire), so this is a canonical deployment rather than a fork. eth_getCode returned 8273 bytes, the same size as the canonical quoter on the seven already-verified chains. Functional probe on a live pool (TOAST -> USDT0, fee 10000): 100 in -> 0.000003, 1000 -> 0.000031, 10000 -> 0.000319 USDT0. Output scales monotonically with input, which is a working quoter answering, not a revert. Two of three sampled pools carry non-zero liquidity. NOTE: the pools discovered so far are thin, so real routing size is limited -- the venue is proved, deep liquidity is not.",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-08-05",chainId:988}},{kind:"router",address:"0x32eaf9B5d5F2CD7361c5012890C943D7de84C22a",label:"Uniswap SwapRouter02 (canonical)",verified:{method:"eth_getCode returned 24497 bytes. Cross-checked on-chain rather than trusted from docs: router.factory() returns 0x88f0a512ef09175d456bc9547f914f48c013e4aa, the same v3 core factory that created the pools quoted above, and router.WETH9() returns the wrappedNative recorded on this chain entry. Address published in the Stable docs DEX reference and the Uniswap deployments list.",source:"docs.stable.xyz/en/reference/dexes + on-chain factory()/WETH9() round-trip",date:"2026-08-05",chainId:988}}]},{key:"hyperevm",chainId:999,name:"HyperEVM",rpcEnv:["HYPEREVM_RPC_URL","HYPER_EVM_RPC"],nativeCurrency:{symbol:"HYPE",decimals:18},dexscreenerSlug:"hyperevm",venueKind:"uniswap-v3",wrappedNative:"0x5555555555555555555555555555555555555555",venues:[{kind:"quoter",address:"0x03A918028f22D9E1473B7959C927AD7425A45C7C",label:"HyperSwap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle(1 WHYPE -> USDT0) returned live output on all four fee tiers (100: 57.3385, 500: 57.4187, 3000: 57.3237, 10000: 56.1963 USDT0). Decimals read on-chain: WHYPE 18, USDT0 6. Best tier checked against an INDEPENDENT control the same minute -- Hyperliquid allMids put HYPE at 57.3205, so the pool is 0.171% from the perp mid, which is the right shape for fee plus impact rather than a wrong contract or a decimals bug.",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-08-05",chainId:999}},{kind:"router",address:"0x4E2960a8cd19B467b82d26D83fAcb0fAE26b094D",label:"HyperSwap V3 SwapRouter",verified:{method:"eth_getCode returned 12070 bytes, and it is the router paired with the quoter proved above -- the same pair already shipped in UNI_V3_VENUES[999].hyperswap, which is the map the quote/prepare path actually routes through.",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-08-05",chainId:999}}]},{key:"abstract",chainId:2741,name:"Abstract",rpcEnv:["ABSTRACT_RPC_URL","ABS_RPC_URL"],nativeCurrency:{symbol:"ETH",decimals:18},venueKind:"uniswap-v3",wrappedNative:"0x3439153EB7AF838Ad19d56E1571FBD09333C2809",venues:[{kind:"quoter",address:"0x728BD3eC25D5EDBafebB84F3d67367Cd9EBC7693",label:"Uniswap V3 QuoterV2 (Abstract deployment)",verified:{method:"Abstract is a ZK-stack chain, so CREATE2 addresses differ and the canonical Uniswap addresses are NOT valid here -- probing them returns codesize 0, which is what previously made this chain look like it had no V3 at all. Found the real deployment from live traffic instead: scanned recent Swap(...) logs, took the busiest pool, read pool.factory() = 0xa1160e73b63f322ae88cc2d8e700833e71d0b2a1, then enumerated that factory's deployer (0xf3d63166F0Ca56C3c1A3508FcE03Ff0Cf3Fb691e) and probed each of its 56 contracts with a real quoteExactInputSingle call. Exactly one answered: 1 WETH -> 1846.475731 USDC.e at fee 500. Independent sanity check: the pool's own slot0() spot price is 1873.11 USDC.e per WETH, so the quoter sits ~1.4% below spot, the right shape for fee plus price impact on this size.",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-08-05",chainId:2741}},{kind:"router",address:"0x7712FA47387542819d4E35A23f8116C90C18767C",label:"Uniswap SwapRouter02 (Abstract deployment)",verified:{method:"eth_getCode returned 167392 bytes and the runtime contains the exactInputSingle selector. router.factory() matches the factory proved above and router.WETH9() matches the wrappedNative on this entry. Chosen over its byte-identical twin (0xfD6257F4...) because this is the address real users actually route through: it appeared as tx.to on live swaps against the WETH/USDC.e pool.",source:"on-chain factory()/WETH9() round-trip + live swap tx.to sampling",date:"2026-08-05",chainId:2741}}]},{key:"robinhood",chainId:4663,name:"Robinhood Chain",rpcEnv:["RH_CHAIN_RPC","ROBINHOOD_RPC_URL"],nativeCurrency:{symbol:"ETH",decimals:18},dexscreenerSlug:"robinhood",venueKind:"uniswap-v3",wrappedNative:"0x0bd7d308f8e1639fab988df18a8011f41eacad73",venues:[{kind:"quoter",address:"0x33e885ed0ec9bf04ecfb19341582aadcb4c8a9e7",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WETH->USDG fee 100 quoted 1866.58 USDG, and USDG->CASHCAT fee 10000 quoted a live amount). A contract that correctly prices known pairs IS a working V3 quoter",source:"live eth_call against rpc.mainnet.chain.robinhood.com",date:"2026-07-31",chainId:4663}},{kind:"router",address:"0xcaf681a66d020601342297493863e78c959e5cb2",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode (24497 bytes) on this chain and the paired quoter at the same deployment passed a live functional quote",source:"live eth_getCode against rpc.mainnet.chain.robinhood.com",date:"2026-07-31",chainId:4663}},{kind:"factory",address:"0x1f7d7550b1b028f7571e69a784071f0205fd2efa",label:"Uniswap V3 Factory",verified:{method:"eth_getCode returned real bytecode (24535 bytes) and a PoolCreated log scan over this factory returned 76 pools in ~9000 recent blocks",source:"live eth_getLogs against rpc.mainnet.chain.robinhood.com",date:"2026-07-31",chainId:4663}}]},{key:"base",chainId:8453,name:"Base",rpcEnv:["BASE_RPC_URL"],nativeCurrency:{symbol:"ETH",decimals:18},explorer:"https://basescan.org",dexscreenerSlug:"base",venueKind:"uniswap-v3",wrappedNative:"0x4200000000000000000000000000000000000006",venues:[{kind:"quoter",address:"0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a",label:"Uniswap V3 QuoterV2 (Base)",verified:{method:"functional probe: quoteExactInputSingle returned WETH->USDC at fee 500 = 1908.44 USDC, a live sane price. The canonical mainnet quoter address also has bytecode on Base but does NOT price this pair, which is exactly the false positive a codesize-only check accepts",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:8453}},{kind:"router",address:"0x2626664c2603336E57B271c5C0b26F421741e481",label:"Uniswap V3 SwapRouter02 (Base)",verified:{method:"eth_getCode returned real bytecode and the paired Base quoter passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:8453}},{kind:"router-v2",address:"0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24",label:"Uniswap V2 Router02 (Base)",verified:{method:"eth_getCode returned 17891 bytes; live getAmountsOut on WETH->USDC round-tripped to 98.75% (2x0.30% fee + impact)",source:"https://docs.uniswap.org/contracts/v2/reference/smart-contracts/v2-deployments",date:"2026-07-30",chainId:8453}}]},{key:"arbitrum",chainId:42161,name:"Arbitrum One",rpcEnv:["ARBITRUM_RPC_URL","ARB_RPC_URL"],nativeCurrency:{symbol:"ETH",decimals:18},explorer:"https://arbiscan.io",dexscreenerSlug:"arbitrum",venueKind:"uniswap-v3",wrappedNative:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",venues:[{kind:"quoter",address:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WETH->USDC fee 500 quoted 1908.72 USDC). A contract that correctly prices a known pair IS a working V3 quoter",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:42161}},{kind:"router",address:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode on this chain and the paired quoter at the same deployment passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:42161}}]},{key:"avalanche",chainId:43114,name:"Avalanche C-Chain",rpcEnv:["AVALANCHE_RPC_URL","AVAX_RPC_URL"],nativeCurrency:{symbol:"AVAX",decimals:18},explorer:"https://snowtrace.io",dexscreenerSlug:"avalanche",venueKind:"uniswap-v3",wrappedNative:"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7",venues:[{kind:"quoter",address:"0xbe0F5544EC67e9B3b2D979aaA43f18Fd87E6257F",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WAVAX->USDC fee 500 quoted 6.48 USDC). A contract that correctly prices a known pair IS a working V3 quoter",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:43114}},{kind:"router",address:"0xbb00FF08d01D300023C629E8fFfFcb65A5a578cE",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode on this chain and the paired quoter at the same deployment passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:43114}}]}]);U();ie();var mn=new wn(["function decimals() view returns (uint8)","function symbol() view returns (string)"]),hn=new wn(["function isApprovedForAll(address owner, address operator) view returns (bool)","function name() view returns (string)"]),to=Sn("Approval(address,address,uint256)"),fa=Sn("ApprovalForAll(address,address,bool)"),no=1e4,ro=2e5,oo=Object.freeze({"0x1111111254eeb25477b68fb85ed929f73a960582":"1inch v5 Router","0x111111125421ca6dc452d289314280a0f8842a65":"1inch v6 Router","0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45":"Uniswap Universal Router","0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad":"Uniswap Universal Router","0x000000000022d473030f116ddee9f6b43ac78ba3":"Permit2","0xe592427a0aece92de3edee1f18e0157c05861564":"Uniswap v3 Router","0x7a250d5630b4cf539739df2c5dacb4c659f2488d":"Uniswap v2 Router","0xdef1c0ded9bec7f1a1670819833240f027b25eff":"0x Exchange Proxy","0x2626664c2603336e57b271c5c0b26f421741e481":"Uniswap SwapRouter02 (Base)","0x6131b5fae19ea4f9d964eac0408e4408b66337b5":"KyberSwap Meta Aggregator","0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48":"USDC (token contract)"}),io=Object.freeze([{address:"0x000000000022d473030f116ddee9f6b43ac78ba3",label:"Permit2"},{address:"0x1111111254eeb25477b68fb85ed929f73a960582",label:"1inch v5 Router"},{address:"0x111111125421ca6dc452d289314280a0f8842a65",label:"1inch v6 Router"},{address:"0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45",label:"Uniswap Universal Router"},{address:"0xe592427a0aece92de3edee1f18e0157c05861564",label:"Uniswap v3 Router"},{address:"0x7a250d5630b4cf539739df2c5dacb4c659f2488d",label:"Uniswap v2 Router"},{address:"0xdef1c0ded9bec7f1a1670819833240f027b25eff",label:"0x Exchange Proxy"},{address:"0x2626664c2603336e57b271c5c0b26f421741e481",label:"Uniswap SwapRouter02"}]),so=Object.freeze([{address:"0x1e0049783f008a0085193e00003d00cd54003c71",label:"OpenSea Seaport Conduit"},{address:"0x00000000000000adc04c56bf30ac9d3c0aaf14dc",label:"Seaport 1.5"},{address:"0x0000000000000068f116a894984e2db1123eb395",label:"Seaport 1.6"},{address:"0x00000000000001ad428e4906ae43d8f9852d0dd6",label:"Seaport 1.4"},{address:"0x000000000000ad05ccc4f10045630fb830b95127",label:"Blur Marketplace"},{address:"0x00000000000000000000000000000000000000a5",label:"Blur Execution Delegate"},{address:"0xf42aa99f011a1fa7cda90e5e98b277e306bca83e",label:"Rarible Transfer Proxy"},{address:"0x000000000022d473030f116ddee9f6b43ac78ba3",label:"Permit2"}]),ao=Object.freeze({1:[{address:"0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d",name:"Bored Ape Yacht Club"},{address:"0x60e4d786628fea6478f785a6d7e704777c86a7c6",name:"Mutant Ape Yacht Club"},{address:"0xed5af388653567af2f388e6224dc7c4b3241c544",name:"Azuki"},{address:"0x8a90cab2b38dba80c64b7734e58ee1db38b8992e",name:"Doodles"},{address:"0x49cf6f5d44e70224e2e23fdcdd2c053f30ada28b",name:"CloneX"},{address:"0x23581767a106ae21c074b2276d25e5c3e136a68b",name:"Moonbirds"}]}),co=Object.freeze({1:[{address:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",symbol:"USDC",decimals:6},{address:"0xdac17f958d2ee523a2206206994597c13d831ec7",symbol:"USDT",decimals:6},{address:"0x6b175474e89094c44da98b954eedeac495271d0f",symbol:"DAI",decimals:18},{address:"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",symbol:"WETH",decimals:18},{address:"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599",symbol:"WBTC",decimals:8}],8453:[{address:"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",symbol:"USDC",decimals:6},{address:"0x4200000000000000000000000000000000000006",symbol:"WETH",decimals:18}],42161:[{address:"0xaf88d065e77c8cc2239327c5edb3a432268e5831",symbol:"USDC",decimals:6},{address:"0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9",symbol:"USDT",decimals:6},{address:"0x82af49447d8a07e3bd95bd0d56f35241523fbab1",symbol:"WETH",decimals:18}],10:[{address:"0x0b2c639c533813f4aa9d7837caf62653d097ff85",symbol:"USDC",decimals:6},{address:"0x4200000000000000000000000000000000000006",symbol:"WETH",decimals:18}],137:[{address:"0x3c499c542cef5e3811e1192ce70d8cc03d5c3359",symbol:"USDC",decimals:6},{address:"0xc2132d05d31c914a87c6611c10748aeb04b58e8f",symbol:"USDT",decimals:6}]}),lo=(1n<<256n)-1n,uo=lo/2n,po=4320*60*60*1e3,fo=360*60*1e3,mo=600*1e3,ho=45*1e3,yo=512,bo=128,yn=new Map,tt=new Map,bn=new Map;function se(e){return e?.cache===!1?!1:!e?.fetchImpl||e.cache===!0}function rt(e,t,r){let n=e.get(t);return n?Date.now()-n.at>r?(e.delete(t),null):n:null}function xe(e,t,r,n){for(e.delete(t),e.set(t,{at:Date.now(),value:r});e.size>n;){let o=e.keys().next();if(o.done)break;e.delete(o.value)}}function go(e,t){try{return eo(e).toLowerCase()}catch{throw new Error(`${t} must be a valid EVM address`)}}function wo(e){return`0x${e.slice(2).toLowerCase().padStart(64,"0")}`}function gn(e){return`0x${String(e).slice(-40).toLowerCase()}`}function So({unlimited:e,spenderLabel:t,lastActivityAt:r}){if(e)return"unlimited";if(!t)return"unknown-spender";if(r){let n=Date.parse(r);if(Number.isFinite(n)&&Date.now()-n>po)return"stale"}return"scoped"}function vo(e,t,r){if(r)return"UNLIMITED";if(t==null)return e.toString();let n=10n**BigInt(t),o=e/n,i=e%n;if(i===0n)return o.toLocaleString("en-US");let s=i.toString().padStart(t,"0").replace(/0+$/,"").slice(0,6);return`${o.toLocaleString("en-US")}${s?`.${s}`:""}`}async function Eo(e,t,r,n){let o=`${e}:${t}`,i=n?.get(o);if(i)return i;if(se(r)){let a=rt(yn,o,fo);if(a)return a.value}let s=(async()=>{let a=async d=>{try{let f=mn.encodeFunctionData(d,[]),u=await z(e,"eth_call",[{to:t,data:f},"latest"],r);return!u||u==="0x"?null:mn.decodeFunctionResult(d,u)[0]}catch{return null}},[l,p]=await Promise.all([a("decimals"),a("symbol")]),c={decimals:l==null?null:Number(l),symbol:p==null?null:String(p).slice(0,24)};return se(r)&&xe(yn,o,c,yo),c})();return n?.set(o,s),s}async function Ao(e,t,r){let n=Math.min(Math.max(Number(r.lookbackBlocks)||no,1),ro),o=await Je(e,r);if(!Number.isFinite(o))throw new Error("chain head unavailable");let i=Math.max(0,o-n),s=await z(e,"eth_getLogs",[{fromBlock:`0x${i.toString(16)}`,toBlock:"latest",topics:[to,wo(t)]}],r);if(!Array.isArray(s))throw new Error("log scan returned no array");let a=new Map;for(let l of s){let p=String(l?.address||"").toLowerCase(),c=l?.topics?.[2];!p||!c||a.set(`${p}:${gn(c)}`,{token:p,spender:gn(c)})}return{pairs:[...a.values()],fromBlock:i,toBlock:o}}function xo(e){return(co[e]||[]).flatMap(r=>io.map(n=>({token:r.address,spender:n.address,symbol:r.symbol,decimals:r.decimals})))}async function Io(e,t,r={}){let n=[],o="direct-probe",i=null,s=xo(e),a=nt(e),l=se(r)&&rt(tt,e,mo)?.value===!1;if(s.length===0&&a.length===0&&l)return{scan:{chainId:e,status:"unconfigured",method:o,error:"no Approval log access and no candidate token or collection set for this chain"},approvals:[]};try{let p=await Ao(e,t,r);n=p.pairs,o="log-scan",i={fromBlock:p.fromBlock,toBlock:p.toBlock},se(r)&&xe(tt,e,!0,64)}catch{if(se(r)&&xe(tt,e,!1,64),n=s,n.length===0&&a.length===0)return{scan:{chainId:e,status:"unconfigured",method:o,error:"no Approval log access and no candidate token or collection set for this chain"},approvals:[]}}try{let p=new Map,d=(await G(n,r.concurrency||4,async u=>{try{let g=await fn({chainId:e,token:u.token,owner:t,spender:u.spender},r),E=BigInt(g.allowance);if(E<=0n)return null;let S=u.symbol?{symbol:u.symbol,decimals:u.decimals??null}:await Eo(e,u.token,r,p),I=E>=uo,v=oo[u.spender]||null;return{id:`${e}:${u.token}:${u.spender}`,chainId:e,standard:"erc20",token:u.token,tokenSymbol:S.symbol,decimals:S.decimals,spender:u.spender,spenderLabel:v,allowance:E.toString(),allowanceDisplay:vo(E,S.decimals,I),unlimited:I,lastActivityAt:null,risk:So({unlimited:I,spenderLabel:v,lastActivityAt:null})}}catch{return null}})).filter(Boolean),f=await _o(e,t,r);return{scan:{chainId:e,status:"ok",method:o,pairsProbed:n.length,collectionsProbed:nt(e).length,...i||{}},approvals:[...d,...f]}}catch(p){return{scan:{chainId:e,status:"unavailable",method:o,error:String(p?.message||p).slice(0,200)},approvals:[]}}}async function ko(e,t,r,n,o){try{let i=hn.encodeFunctionData("isApprovedForAll",[r,n]),s=await z(e,"eth_call",[{to:t,data:i},"latest"],o);return!s||s==="0x"?null:!!hn.decodeFunctionResult("isApprovedForAll",s)[0]}catch{return null}}function nt(e){return(ao[e]||[]).flatMap(r=>so.map(n=>({collection:r.address,collectionName:r.name,operator:n.address,operatorLabel:n.label})))}async function _o(e,t,r){let n=nt(e);return n.length===0?[]:(await G(n,r.concurrency||4,async i=>await ko(e,i.collection,t,i.operator,r)!==!0?null:{id:`${e}:${i.collection}:${i.operator}:all`,chainId:e,standard:"erc721",token:i.collection,tokenSymbol:i.collectionName,decimals:null,spender:i.operator,spenderLabel:i.operatorLabel,allowance:null,allowanceDisplay:"ALL ITEMS",unlimited:!0,lastActivityAt:null,risk:"operator-all"})).filter(Boolean)}async function vn(e={},t={}){let r=go(e.owner||e.address,"owner"),n=new Map(Ae.map(u=>[u.chainId,u])),o=Array.isArray(e.chainIds)&&e.chainIds.length?[...new Set(e.chainIds.map(Number))].filter(u=>n.has(u)):[...n.keys()],i=`${r}:${[...o].sort((u,g)=>u-g).join(",")}:${e.lookbackBlocks??""}`,s=se(t)&&!e.refresh;if(s){let u=rt(bn,i,ho);if(u)return{...u.value,cached:!0,cachedAgeMs:Date.now()-u.at}}let a=await G(o,e.concurrency||3,u=>Io(u,r,{...t,lookbackBlocks:e.lookbackBlocks})),l=a.flatMap(u=>u.approvals),p=a.map(u=>u.scan),c=p.find(u=>u.method==="log-scan"&&u.toBlock),d=p.some(u=>u.method==="direct-probe"&&u.status==="ok"),f={provider:"approvals",operation:"scan",readOnly:!0,queriedAt:new Date().toISOString(),owner:r,scannedRange:c?`last ${c.toBlock-c.fromBlock} blocks`:d?"known routers, live allowance probe":null,approvals:l,scans:p,warnings:["Approval discovery is scoped. Log scanning is used where the endpoint permits it; otherwise a curated router set is probed directly. An empty result means nothing was found in that scope, not that the wallet is safe.","NFT operator approval (setApprovalForAll) is checked against a curated collection and marketplace set on supported chains only. A collection outside that set is not checked."]};return s&&xe(bn,i,f,bo),{...f,cached:!1,cachedAgeMs:0}}import{getAddress as Xo}from"ethers";U();ie();U();var En="mainnet-beta",To="https://api.mainnet-beta.solana.com",ot="TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";function No(e={}){return String(e.rpcUrl||process.env.SOLANA_RPC_URL||To).trim()}function ee(e,t="address"){let r=String(e||"").trim();if(!/^[1-9A-HJ-NP-Za-km-z]{32,44}$/.test(r))throw new Error(`solana-rpc: ${t} must be a base58 public key`);return r}function Co(e,t){return t?[...e,{commitment:t}]:e}async function An(e,t=[],r={}){let n=String(e||"");if(n==="sendTransaction"||n==="sendRawTransaction"||n==="requestAirdrop"||n==="requestAirDrop"||/airdrop/i.test(n)||/^send/i.test(n))throw new Error(`solana-rpc: ${n} refused \u2014 @oracle-agent/oracle is prepare-only (no broadcast/airdrop)`);let o=await O(No(r),{method:"POST",body:{jsonrpc:"2.0",id:r.id||1,method:e,params:t},fetchImpl:r.fetchImpl,timeoutMs:r.timeoutMs??12e3});if(o?.error)throw new Error(`solana-rpc ${e}: ${o.error.message||JSON.stringify(o.error)}`);return o?.result}async function xn(e={},t={}){let r=ee(e.address||e.owner,"address"),n=await An("getBalance",Co([r],e.commitment),t);return{provider:"solana-rpc",cluster:En,address:r,lamports:String(n?.value??0),slot:n?.context?.slot??null,raw:n}}function Po(e={}){let t=e.account?.data?.parsed?.info||{},r=t.tokenAmount||{};return{pubkey:e.pubkey,mint:t.mint||null,owner:t.owner||null,amount:String(r.amount??"0"),decimals:r.decimals??null,uiAmount:r.uiAmount??null,uiAmountString:r.uiAmountString??null,raw:e}}async function it(e={},t={}){let r=ee(e.owner||e.address,"owner"),n=e.mint?{mint:ee(e.mint,"mint")}:{programId:ee(e.programId||ot,"token program")},o={encoding:"jsonParsed"};e.commitment&&(o.commitment=e.commitment);let i=await An("getTokenAccountsByOwner",[r,n,o],t),s=Array.isArray(i?.value)?i.value.map(Po):[];return{provider:"solana-rpc",cluster:En,owner:r,filter:n,slot:i?.context?.slot??null,accounts:s,raw:i}}U();var $o="mainnet",Ro="https://mempool.space/api",Oo="https://mempool.space/testnet/api";function In(e={}){return String(e.network||process.env.BTC_NETWORK||$o).trim().toLowerCase()==="testnet"?"testnet":"mainnet"}function Lo(e={}){return e.baseUrl?String(e.baseUrl).replace(/\/$/,""):process.env.BTC_ESPLORA_URL?String(process.env.BTC_ESPLORA_URL).replace(/\/$/,""):In(e)==="testnet"?Oo:Ro}function Y(e,t="address"){let r=String(e||"").trim();if(!/^(bc1|tb1|bcrt1)[a-z0-9]{20,90}$/i.test(r)&&!/^[13mn2][a-km-zA-HJ-NP-Z1-9]{25,34}$/.test(r))throw new Error(`bitcoin-esplora: ${t} must look like a Bitcoin address`);return r}async function Uo(e,t={}){let r=`${Lo(t)}${e.startsWith("/")?e:`/${e}`}`,o=await(t.fetchImpl||fetch)(r,{method:"GET",headers:{accept:"application/json,text/plain;q=0.9,*/*;q=0.8"},signal:AbortSignal.timeout(t.timeoutMs??12e3)}),i=await o.text();if(!o.ok)throw new Error(`bitcoin-esplora GET ${e}: HTTP ${o.status} ${i.slice(0,160)}`);return i}async function Bo(e,t={}){let r=await Uo(e,t);try{return JSON.parse(r)}catch{return r}}async function kn(e={},t={}){let r=Y(e.address||e.addr,"address"),n=await Bo(`/address/${r}`,t),o=n.chain_stats||{},i=n.mempool_stats||{},s=Number(o.funded_txo_sum||0)+Number(i.funded_txo_sum||0),a=Number(o.spent_txo_sum||0)+Number(i.spent_txo_sum||0);return{provider:"bitcoin-esplora",network:In(t),address:r,balanceSats:String(s-a),chainStats:o,mempoolStats:i,raw:n}}var _n="ORACLE_ALLOW_CUSTOM_PROVIDER_URL";function ae({provider:e,defaultUrl:t,hosts:r=[],url:n,strict:o=!1}){let s=(String(n??"").trim()||String(t)).replace(/\/$/,"");if(s===String(t).replace(/\/$/,""))return{baseUrl:s,trusted:!0,host:Tn(t)};let a;try{a=new URL(s)}catch{throw new Error(`${e}: baseUrl must be an absolute http(s) URL`)}if(a.protocol!=="http:"&&a.protocol!=="https:")throw new Error(`${e}: baseUrl must be an absolute http(s) URL`);let l=a.host;if(!l)throw new Error(`${e}: baseUrl must be an absolute http(s) URL`);if(new Set([Tn(t),...r]).has(l)){let c=/^(127\.0\.0\.1|localhost|\[::1\])(:\d+)?$/i.test(l);return a.protocol==="http:"&&!c?{baseUrl:s,trusted:!1,host:l,reason:"plaintext http downgrade"}:{baseUrl:s,trusted:!0,host:l}}if(String(process.env[_n]||"")==="1")return{baseUrl:s,trusted:!1,host:l};if(o)throw new Error(`${e}: refusing to call non-allowlisted host ${l} (set ${_n}=1 to permit it)`);return{baseUrl:s,trusted:!1,host:l}}function Tn(e){let t=new URL(String(e));if(t.protocol!=="http:"&&t.protocol!=="https:")throw new Error("unsupported protocol");return t.host}function te(e,t,r){let n={...e};if(!r)return n;for(let[o,i]of Object.entries(t||{}))i&&(n[o]=i);return n}function st(e={}){return String(e.baseUrl||process.env.BTC_META_API_URL||process.env.UNISAT_API_URL||"").trim().replace(/\/$/,"")}var Mo=["open-api.unisat.io","open-api-testnet.unisat.io","api.bestinslot.xyz","api.hiro.so"];function Fo(e={}){let t=e.apiKey||process.env.UNISAT_API_KEY||process.env.BESTINSLOT_API_KEY||process.env.BTC_META_API_KEY||"",r=!1;try{let n=st(e);if(n){let o=new URL(n).host,i=new URL(n).protocol,s=/^(127\.0\.0\.1|localhost|\[::1\])(:\d+)?$/i.test(o);r=Mo.includes(o)&&(i==="https:"||s)}}catch{r=!1}return te({accept:"application/json","user-agent":"oracle-btc-meta/0.1"},{authorization:t?`Bearer ${t}`:"","x-api-key":t},r)}async function Nn(e,t={}){let n=await(t.fetchImpl||fetch)(e,{method:"GET",headers:Fo(t),signal:AbortSignal.timeout(t.timeoutMs??12e3)}),o=await n.text(),i;try{i=JSON.parse(o)}catch{i=o}if(!n.ok)throw new Error(`bitcoin-meta GET ${e}: HTTP ${n.status} ${String(o).slice(0,160)}`);return i}async function Cn(e={},t={}){let r=Y(e.address||e.addr,"address"),n=st(t);if(!n)return{provider:"bitcoin-meta",address:r,ok:!1,balances:[],error:"no indexer configured (set BTC_META_API_URL or vendor API key env)"};let o=[`${n}/v1/indexer/address/${r}/runes/balance-list?start=0&limit=100`,`${n}/v1/runes/address/${r}`,`${n}/runes/balance/${r}`,`${n}/address/${r}/runes`],i=null;for(let s of o)try{let a=await Nn(s,t),l=qo(a);return{provider:"bitcoin-meta",address:r,ok:!0,count:l.length,balances:l,source:s}}catch(a){i=a}return{provider:"bitcoin-meta",address:r,ok:!1,balances:[],error:String(i?.message||i||"all indexer paths failed")}}function qo(e){let t=e?.data?.detail||e?.data?.list||e?.data||e?.balances||e?.results||e?.runes||(Array.isArray(e)?e:[]);return(Array.isArray(t)?t:[]).map(n=>({rune:n.rune||n.runeid||n.runeId||n.spacedRune||n.name||n.ticker||null,runeId:n.runeid||n.runeId||n.id||null,amount:String(n.amount??n.balance??n.total??n.qty??"0"),symbol:n.symbol||null,divisibility:n.divisibility??n.div??null,raw:n}))}async function Ie(e={},t={}){let r=Y(e.address||e.addr,"address"),n=st(t);if(!n)return{provider:"bitcoin-meta",address:r,ok:!1,inscriptions:[],error:"no indexer configured \u2014 address-indexed lookups need a keyed indexer (BTC_META_API_URL + UNISAT_API_KEY / BESTINSLOT_API_KEY). ordinals.com recursive is keyless but has no address index.",unknownNotEmpty:!0,keylessAlternatives:["btc_inscription_info (by inscription id)","btc_meta_health"]};let o=Math.min(Number(e.limit||50),200),i=[`${n}/v1/indexer/address/${r}/inscription-data?cursor=0&size=${o}`,`${n}/v1/inscriptions/address/${r}?limit=${o}`,`${n}/address/${r}/inscriptions?limit=${o}`],s=null;for(let a of i)try{let l=await Nn(a,t),p=Do(l);return{provider:"bitcoin-meta",address:r,ok:!0,count:p.length,inscriptions:p,source:a}}catch(l){s=l}return{provider:"bitcoin-meta",address:r,ok:!1,inscriptions:[],error:String(s?.message||s||"all indexer paths failed")}}function Do(e){let t=e?.data?.inscription||e?.data?.detail||e?.data?.list||e?.data||e?.inscriptions||e?.results||(Array.isArray(e)?e:[]);return(Array.isArray(t)?t:[]).map(n=>({id:n.inscriptionId||n.id||n.inscription_id||null,number:n.inscriptionNumber??n.number??null,sat:n.sat||n.satoshi||null,contentType:n.contentType||n.content_type||null,utxo:n.utxo||n.output||(n.txid!=null?`${n.txid}:${n.vout??n.n}`:null),raw:n}))}U();var Ho="https://api.hyperliquid.xyz/info",Vo="https://api.hyperliquid-testnet.xyz/info";function zo({testnet:e,baseUrl:t}={}){if(t)return t.replace(/\/$/,"").endsWith("/info")?t:`${t.replace(/\/$/,"")}/info`;if(process.env.HL_INFO_URL)return process.env.HL_INFO_URL;if(process.env.HL_API_URL){let r=process.env.HL_API_URL.replace(/\/$/,"");return r.endsWith("/info")?r:`${r}/info`}return e||process.env.HL_TESTNET==="1"?Vo:Ho}async function at(e,t={}){if(!e||!e.type)throw new Error("hlInfo requires body.type");let r=zo(t);return O(r,{method:"POST",body:e,fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs})}async function Pn(e={}){return at({type:"allMids"},e)}async function $n(e,t={}){if(!e)throw new Error("hlClearinghouse requires user address");return at({type:"spotClearinghouseState",user:e},t)}async function Rn(e,t={}){if(!e)throw new Error("hlUserState requires user");return at({type:"clearinghouseState",user:e},t)}U();var jo="https://coins.llama.fi";function Wo(e={}){return(e.baseUrl||process.env.DEFILLAMA_COINS_URL||jo).replace(/\/$/,"")}async function ct(e,t={}){if(!Array.isArray(e)||!e.length)throw new Error("llamaPrices requires coins[]");let r=e.map(encodeURIComponent).join(",");return O(`${Wo(t)}/prices/current/${r}`,{fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs})}U();var On=/[\u200B-\u200F\u202A-\u202E\u2060-\u2064\uFEFF]/g,Ko=/[<>&`*_~[\]()|\\]/g,Go=/[\u0000-\u001F\u007F]/g;function lt(e,{max:t=32,fallback:r=""}={}){return e==null?r:String(e).normalize("NFKC").replace(On,"").replace(Go,"").replace(Ko,"").replace(/\s+/g," ").trim().slice(0,t).trim()||r}function ut(e){if(e==null)return!1;let t=String(e);return On.test(t)?!0:/[\u0400-\u04FF\u0370-\u03FF]/.test(t)&&/[A-Za-z]/.test(t)}var Ln=Object.freeze({1:"https://eth.blockscout.com",10:"https://explorer.optimism.io",137:"https://polygon.blockscout.com",324:"https://zksync.blockscout.com",8453:"https://base.blockscout.com",42161:"https://arbitrum.blockscout.com",534352:"https://scrollscan.com"});function Yo(e,t={}){let r=Number(e),n=t.baseUrl||Ln[r];if(!n)throw new Error(`Blockscout not configured for chainId ${r}`);return n.replace(/\/$/,"")}function Un(e){return!!Ln[Number(e)]}async function Bn(e={},t={}){if(!e.address)throw new Error("address required");let r=Number(e.chainId||1),n=`${Yo(r,t)}/api/v2/addresses/${encodeURIComponent(e.address)}/token-balances`,o=await O(n,{fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs??18e3,headers:{accept:"application/json","user-agent":"OraclePortfolio/1.0"}});return Array.isArray(o)?o:[]}function Mn(e=[],{fungibleOnly:t=!0}={}){let r=[];for(let n of e){if(!n||typeof n!="object")continue;let o=n.token&&typeof n.token=="object"?n.token:{},i=String(o.type||n.token_type||"").toUpperCase();if(t&&i&&!i.includes("ERC-20")&&i!=="ERC20")continue;let s=o.address_hash||o.address||n.token_address||n.tokenAddress||null;if(!s||typeof s!="string")continue;let a=String(n.value??n.balance??"0").replace(/^0x/i,"");if(!/^\d+$/.test(a)||a==="0")continue;let l=o.decimals??n.decimals;typeof l=="string"&&/^\d+$/.test(l)&&(l=Number(l)),(typeof l!="number"||!Number.isInteger(l)||l<0||l>36)&&(l=18);let p=lt(o.symbol||o.name,{max:32,fallback:"TOKEN"}),c=lt(o.name,{max:80,fallback:""})||null;r.push({address:s.toLowerCase().startsWith("0x")?s:`0x${s}`,symbol:p,name:c,decimals:l,amountRaw:a,tokenType:i||"ERC-20",source:"blockscout",verification:"indexer-reported",displaySuspicious:ut(o.symbol)||ut(o.name)||void 0})}return r}var Jo="TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",qn=Object.freeze({ETH:"coingecko:ethereum",POL:"coingecko:polygon-ecosystem-token",BNB:"coingecko:binancecoin",AVAX:"coingecko:avalanche-2",HYPE:"coingecko:hyperliquid",USDT0:"coingecko:tether",SOL:"coingecko:solana",BTC:"coingecko:bitcoin"});function X(e={},t){return{fetchImpl:e.fetchImpl,timeoutMs:e.timeoutMs,env:e.env,...e[t]||{}}}function ke(e,...t){for(let r of t){let n=String(e?.[r]||"").trim();if(n)return n}return null}function Fn(e){if(!e)return null;try{return Xo(String(e).trim().toLowerCase())}catch{throw new Error("portfolio: EVM address must be a valid 20-byte address")}}function ft(e={},t=process.env){let r=e.addresses||{},n=Fn(r.evm||e.evmAddress||ke(t,"ORACLE_EVM_ADDRESS","ORACLE_DEFAULT_ADDRESS","MAD_OPERATOR_ADDRESS")),o=r.solana||e.solanaAddress||ke(t,"ORACLE_SOLANA_ADDRESS"),i=r.bitcoin||e.bitcoinAddress||ke(t,"ORACLE_BITCOIN_ADDRESS"),s=Fn(r.hyperliquid||e.hyperliquidAddress||ke(t,"ORACLE_HYPERLIQUID_ADDRESS")||n);return{evm:n,solana:o?ee(o,"portfolio Solana address"):null,bitcoin:i?Y(i,"portfolio Bitcoin address"):null,hyperliquid:s}}function ye(e,t){let r=BigInt(String(e||"0")),n=Number(t);if(!Number.isInteger(n)||n<0||n>36)throw new Error("portfolio: decimals must be an integer from 0 to 36");if(n===0)return r.toString();let o=r<0n,i=o?-r:r,s=10n**BigInt(n),a=i/s,l=String(i%s).padStart(n,"0").replace(/0+$/,"");return`${o?"-":""}${a}${l?`.${l}`:""}`}function ce(e){let t=Number(e);return Number.isFinite(t)?t:null}function _e(e){return Number.isFinite(e)?Number(e.toFixed(2)):null}function J(e){let t=Number(e);return Number.isFinite(t)&&t!==0}function Dn(e,t){let r=qn[t],n=r?e?.coins?.[r]:null,o=Number(n?.price);return{key:r||null,priceUsd:Number.isFinite(o)?o:null,timestamp:n?.timestamp??null,confidence:n?.confidence??null}}function Qo(e){let t=new Map;for(let r of e)if(r?.ok)for(let n of r.data?.accounts||[]){let o=BigInt(String(n.amount||"0"));if(o===0n||!n.mint)continue;let i=`${n.mint}:${n.decimals??"unknown"}`,s=t.get(i)||{mint:n.mint,amountRaw:0n,decimals:n.decimals??null,programs:new Set,accounts:0};s.amountRaw+=o,s.accounts+=1,r.program&&s.programs.add(r.program),t.set(i,s)}return[...t.values()].map(r=>{let n=r.amountRaw.toString(),o=r.decimals==null?null:ye(n,r.decimals),i=r.decimals===0&&r.amountRaw===1n;return{mint:r.mint,amountRaw:n,amount:o,decimals:r.decimals,tokenPrograms:[...r.programs],accountCount:r.accounts,verification:"unverified",classification:i?"collectible-candidate":"fungible-or-unclassified",priceUsd:null,usdValue:null}})}function dt(e,t){return{family:e,status:"unsupported",reason:t}}function pt(e,t){if(!e||e.status!=="ok")return e;let r=Dn(t,e.symbol),n=ce(e.amount),o=n!=null&&r.priceUsd!=null?_e(n*r.priceUsd):null;return{...e,price:r,usdValue:o}}async function Hn(e={},t={}){let r=new Date().toISOString(),n=ft(e,t.env||process.env),o=e.includePrices!==!1,i=e.includeTokens!==!1,s=e.includeCollectibles!==!1,a=new Map(Ae.map(h=>[h.chainId,h])),l=Array.isArray(e.evmChainIds)&&e.evmChainIds.length?[...new Set(e.evmChainIds.map(Number))]:[...a.keys()],p=[...new Set(Object.values(qn))],c=o?C(()=>ct(p,X(t,"prices"))):Promise.resolve({ok:!1,ms:0,error:"price lookup disabled"}),d=G(l,e.concurrency||5,async h=>{let b=a.get(h);if(!b)return{family:"evm",chainId:h,name:null,address:n.evm,status:"unsupported",error:"chainId is not in Oracle's configured EVM registry"};if(!n.evm)return{family:"evm",chainId:h,name:b.name,address:null,status:"not-configured",error:"set ORACLE_EVM_ADDRESS or pass addresses.evm"};let x={...X(t,"evm"),rpcUrl:e.rpcUrls?.[h]||t.evm?.rpcUrls?.[h]},T=await C(()=>Qe(h,n.evm,x));if(!T.ok)return{family:"evm",chainId:h,name:b.name,address:n.evm,status:"unavailable",latencyMs:T.ms,error:T.error};let R=b.nativeCurrency?.decimals??18,F=b.nativeCurrency?.symbol||"NATIVE",w=T.data.balanceWei,_={status:i?"unavailable":"not-requested",assets:[],reason:i?"EVM JSON-RPC cannot enumerate wallet tokens without an address indexer":"token discovery disabled"};if(i&&Un(h)){let Q=await C(()=>Bn({chainId:h,address:n.evm},{...X(t,"blockscout"),timeoutMs:t.timeoutMs??18e3}));Q.ok?_={status:"ok",assets:Mn(Q.data,{fungibleOnly:!0}).map(ue=>{let de=ye(ue.amountRaw,ue.decimals);return{...ue,amount:de,priceUsd:null,usdValue:null}}),reason:null,source:"blockscout",latencyMs:Q.ms}:_={status:"unavailable",assets:[],reason:Q.error||"blockscout token-balances failed",source:"blockscout",latencyMs:Q.ms}}return{family:"evm",chainId:h,name:b.name,address:n.evm,status:"ok",latencyMs:T.ms,native:{status:"ok",symbol:F,amountRaw:w,decimals:R,amount:ye(w,R)},fungibleTokens:_,collectibles:{status:s?"unavailable":"not-requested",assets:[],reason:s?"EVM JSON-RPC cannot enumerate wallet NFTs without an address indexer":"collectible discovery disabled"},source:_.source==="blockscout"?"evm-rpc+blockscout":"evm-rpc"}}),f=(async()=>{if(!n.solana)return{family:"solana",name:"Solana Mainnet",address:null,status:"not-configured",error:"set ORACLE_SOLANA_ADDRESS or pass addresses.solana"};let h=X(t,"solana"),b=await C(()=>xn({address:n.solana},h)),x=i||s?await Promise.all([C(()=>it({owner:n.solana,programId:ot},h)).then(_=>({..._,program:"spl-token"})),C(()=>it({owner:n.solana,programId:Jo},h)).then(_=>({..._,program:"token-2022"}))]):[],T=Qo(x),R=T.filter(_=>_.classification==="collectible-candidate"),F=T.filter(_=>_.classification!=="collectible-candidate"),w=x.filter(_=>!_.ok).map(_=>_.error);return{family:"solana",name:"Solana Mainnet",address:n.solana,status:b.ok||x.some(_=>_.ok)?"ok":"unavailable",native:b.ok?{status:"ok",symbol:"SOL",amountRaw:b.data.lamports,decimals:9,amount:ye(b.data.lamports,9),slot:b.data.slot}:{status:"unavailable",symbol:"SOL",error:b.error},fungibleTokens:{status:i?w.length===x.length?"unavailable":w.length?"partial":"ok":"not-requested",assets:i?F:[],errors:w,note:"SPL accounts are unverified until a metadata/indexer source confirms symbol and spam status"},collectibles:{status:s?w.length===x.length?"unavailable":"partial":"not-requested",assets:s?R:[],errors:w,note:"decimals=0 and amount=1 is only a collectible candidate, not verified NFT metadata"},source:"solana-rpc"}})(),u=(async()=>{if(!n.bitcoin)return{family:"bitcoin",name:"Bitcoin Mainnet",address:null,status:"not-configured",error:"set ORACLE_BITCOIN_ADDRESS or pass addresses.bitcoin"};let h=X(t,"bitcoin"),b=X(t,"bitcoinMeta"),[x,T,R]=await Promise.all([C(()=>kn({address:n.bitcoin},h)),i?C(()=>Cn({address:n.bitcoin},b)):Promise.resolve({ok:!1,ms:0,error:"token discovery disabled"}),s?C(()=>Ie({address:n.bitcoin},b)):Promise.resolve({ok:!1,ms:0,error:"collectible discovery disabled"})]),F=T.ok?T.data:null,w=R.ok?R.data:null;return{family:"bitcoin",name:"Bitcoin Mainnet",address:n.bitcoin,status:x.ok||F?.ok||w?.ok?"ok":"unavailable",native:x.ok?{status:"ok",symbol:"BTC",amountRaw:x.data.balanceSats,decimals:8,amount:ye(x.data.balanceSats,8)}:{status:"unavailable",symbol:"BTC",error:x.error},fungibleTokens:{status:i?F?.ok?"ok":"unavailable":"not-requested",assets:F?.balances||[],error:F?.ok?null:F?.error||T.error,verification:"indexer-reported"},collectibles:{status:s?w?.ok?"ok":"unavailable":"not-requested",assets:w?.inscriptions||[],error:w?.ok?null:w?.error||R.error,unknownNotEmpty:!!w?.unknownNotEmpty,verification:"indexer-reported"},source:"bitcoin-esplora+bitcoin-meta"}})(),g=(async()=>{if(!n.hyperliquid)return{family:"hyperliquid",name:"Hyperliquid HyperCore",address:null,status:"not-configured",error:"set ORACLE_HYPERLIQUID_ADDRESS or pass addresses.hyperliquid"};let h=X(t,"hyperliquid"),[b,x,T]=await Promise.all([C(()=>$n(n.hyperliquid,h)),C(()=>Rn(n.hyperliquid,h)),C(()=>Pn(h))]),R=(b.ok&&Array.isArray(b.data?.balances)?b.data.balances:[]).filter(w=>J(w.total)||J(w.hold)).map(w=>({coin:w.coin||null,total:String(w.total??"0"),hold:String(w.hold??"0"),priceUsd:null,usdValue:null})),F=(x.ok&&Array.isArray(x.data?.assetPositions)?x.data.assetPositions:[]).map(w=>w.position||w).filter(w=>J(w.szi)).map(w=>({coin:w.coin||null,size:String(w.szi??"0"),entryPrice:w.entryPx??null,positionValueUsd:w.positionValue??null,unrealizedPnlUsd:w.unrealizedPnl??null,liquidationPrice:w.liquidationPx??null}));return{family:"hyperliquid",name:"Hyperliquid HyperCore",address:n.hyperliquid,status:b.ok||x.ok?"ok":"unavailable",spot:{status:b.ok?"ok":"unavailable",balances:R,error:b.ok?null:b.error},perps:{status:x.ok?"ok":"unavailable",accountValueUsd:x.data?.marginSummary?.accountValue??null,withdrawableUsd:x.data?.withdrawable??null,positions:F,error:x.ok?null:x.error},mids:T.ok?T.data:{},source:"hyperliquid-info"}})(),[E,S,I,v,k]=await Promise.all([d,f,u,g,c]),m=k.ok?k.data:null,y=Object.freeze({1:"ethereum",10:"optimism",56:"bsc",137:"polygon",8453:"base",42161:"arbitrum",43114:"avax",81457:"blast",534352:"scroll",59144:"linea",324:"era"}),A=[];for(let h of E){if(h.family!=="evm"||h.fungibleTokens?.status!=="ok")continue;let b=y[h.chainId];if(b)for(let x of h.fungibleTokens.assets||[])x.address&&A.push(`${b}:${String(x.address).toLowerCase()}`)}let P=null;if(o&&A.length){let h=[...new Set(A)],b=await C(()=>ct(h,X(t,"prices")));b.ok&&(P=b.data)}let N=E.map(h=>{let b=h.native?{...h,native:pt(h.native,m)}:h;if(b.fungibleTokens?.status==="ok"&&Array.isArray(b.fungibleTokens.assets)){let x=y[b.chainId],T=b.fungibleTokens.assets.map(R=>{let F=String(R.symbol||"").toUpperCase(),w=null;if(["USDC","USDT","USDT0","DAI","USDBC","USDE","USDCE"].includes(F)&&(w=1),w==null&&x&&R.address&&P?.coins){let Nt=`${x}:${String(R.address).toLowerCase()}`,ue=P.coins[Nt],de=Number(ue?.price);Number.isFinite(de)&&de>0&&(w=de)}let _=ce(R.amount),Q=_!=null&&w!=null?_e(_*w):null;return{...R,priceUsd:w,usdValue:Q}});b={...b,fungibleTokens:{...b.fungibleTokens,assets:T}}}return b});S.native&&(S.native=pt(S.native,m)),I.native&&(I.native=pt(I.native,m));let L=0,H=0,$=0;for(let h of[...N,S,I]){h.native?.status==="ok"&&J(h.native.amount)&&(h.native.usdValue!=null?(L+=h.native.usdValue,H+=1):$+=1);for(let b of h.fungibleTokens?.assets||[])!J(b.amount)&&!J(b.amountRaw)||(b.usdValue!=null?(L+=b.usdValue,H+=1):$+=1)}let j=Dn(m,"HYPE");for(let h of v.spot?.balances||[]){let b=String(h.coin||"").toUpperCase(),x=b==="USDC"||b==="USDT"||b==="USDT0"?1:b==="HYPE"?j.priceUsd||ce(v.mids?.HYPE):ce(v.mids?.[h.coin]),T=ce(h.total);h.priceUsd=x,h.usdValue=T!=null&&x!=null?_e(T*x):null,J(h.total)&&(h.usdValue!=null?(L+=h.usdValue,H+=1):$+=1)}let Re=ce(v.perps?.accountValueUsd);Re!=null&&Re!==0&&(L+=Re,H+=1);let ur=[...S.fungibleTokens?.assets||[],...S.collectibles?.assets||[]].filter(h=>J(h.amount)).length,dr=(I.fungibleTokens?.assets||[]).length+(I.collectibles?.assets||[]).length;$+=ur+dr;let Oe=[...N,S,I,v],ne=h=>Oe.filter(b=>b.status===h).length,re=[],Le=N.filter(h=>h.fungibleTokens?.status==="unavailable"),Tt=N.filter(h=>h.fungibleTokens?.status==="ok");Le.length&&!Tt.length?re.push("EVM token discovery is unavailable without a working address indexer; native balances are still live."):Le.length&&re.push(`EVM token discovery partial: Blockscout covered ${Tt.length} chain(s); ${Le.length} chain(s) still native-only.`),(S.fungibleTokens?.assets?.length||S.collectibles?.assets?.length)&&re.push("Solana token accounts are unverified and may include spam; collectible candidates are not confirmed NFTs."),I.collectibles?.unknownNotEmpty&&re.push("Bitcoin inscription holdings are unknown, not zero, because no address indexer is configured."),k.ok||re.push(`Price provider unavailable: ${k.error}`);let Ue=[dt("cosmos","requires a chain-specific bech32 address and LCD/RPC adapter"),dt("sui","Sui balance adapter is not installed"),dt("aptos","Aptos balance adapter is not installed")],pr=Oe.some(h=>["unavailable","partial","not-configured"].includes(h.fungibleTokens?.status)||["unavailable","partial","not-configured"].includes(h.collectibles?.status));return{provider:"portfolio",operation:"balances",readOnly:!0,queriedAt:r,addresses:n,coverage:{requestedSurfaces:Oe.length,ok:ne("ok"),unavailable:ne("unavailable"),notConfigured:ne("not-configured"),unsupported:ne("unsupported")+Ue.length,evmChainsRequested:l.length,evmChainsOk:N.filter(h=>h.status==="ok").length},valuation:{knownUsd:_e(L),label:"known priced value, not a complete portfolio total",pricedItems:H,unpricedNonzeroItems:$,complete:$===0&&!pr&&ne("unavailable")===0&&ne("not-configured")===0&&Ue.length===0,priceSource:o?"DefiLlama":null,priceStatus:k.ok?"ok":"unavailable",priceQueriedAt:r},chains:[...N,S,I,v],unsupportedFamilies:Ue,warnings:re}}U();U();import{readFileSync as ei,existsSync as ti}from"node:fs";import{getAddress as ni,Interface as Te,TypedDataEncoder as Ga,parseUnits as Ya}from"ethers";var Zo=300*1e3,Ha=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})();var ri="https://api.opensea.io/api/v2",oi="fulfillAdvancedOrder(((address offerer,address zone,(uint8 itemType,address token,uint256 identifierOrCriteria,uint256 startAmount,uint256 endAmount)[] offer,(uint8 itemType,address token,uint256 identifierOrCriteria,uint256 startAmount,uint256 endAmount,address recipient)[] consideration,uint8 orderType,uint256 startTime,uint256 endTime,bytes32 zoneHash,uint256 salt,bytes32 conduitKey,uint256 totalOriginalConsiderationItems) parameters,uint120 numerator,uint120 denominator,bytes signature,bytes extraData) advancedOrder,(uint256 orderIndex,uint8 side,uint256 index,uint256 identifier,bytes32[] criteriaProof)[] criteriaResolvers,bytes32 fulfillerConduitKey,address recipient)",ec=new Te([`function ${oi}`]),tc=new Te(["function mintPublic(address nftContract,address feeRecipient,address minterIfNotPayer,uint256 quantity) payable","function mintAllowList(address nftContract,address feeRecipient,address minterIfNotPayer,uint256 quantity,(uint80 mintPrice,uint48 maxTotalMintableByWallet,uint48 startTime,uint48 endTime,uint48 dropStageIndex,uint32 maxTokenSupplyForStage,uint16 feeBps,bool restrictFeeRecipients) mintParams,bytes32[] proof) payable"]),ii=Object.freeze(["blast","base","ethereum","zora","arbitrum","sei","avalanche","polygon","optimism","ape_chain","flow","b3","soneium","ronin","bera_chain","solana","shape","unichain","gunzilla","abstract","animechain","hyperevm","somnia","monad","hyperliquid","megaeth","ink","robinhood","stablechain"]),si=new Set(ii),ai=new Set(["solana","flow"]);function ci(){let e=process.env.OPENSEA_ENV_FILE||`${process.env.HOME||""}/.config/locals-only/opensea.env`;if(!ti(e))return"";try{for(let t of ei(e,"utf8").split(`
|
|
5
|
+
`)){let r=t.match(/^\s*OPENSEA_API_KEY\s*=\s*(.+)\s*$/);if(r)return r[1].replace(/^["']|["']$/g,"").trim()}}catch{}return""}function ht(e={}){return e.apiKey?e.apiKey:e.allowAmbientCredentials===!1||e.allowDiskCredentials===!1?e.env?.OPENSEA_API_KEY||e.env?.OPEN_SEA_API_KEY||"":e.env?.OPENSEA_API_KEY||process.env.OPENSEA_API_KEY||process.env.OPEN_SEA_API_KEY||ci()}function zn(e={}){return ae({provider:"opensea",defaultUrl:ri,hosts:["api.opensea.io","testnets-api.opensea.io"],url:e.baseUrl||process.env.OPENSEA_API_URL})}function jn(e={}){return zn(e).baseUrl}function Wn(e={}){return te({accept:"application/json"},{"x-api-key":ht(e)},zn(e).trusted)}function li(e){let t=String(e||"ethereum").trim().toLowerCase();if(!si.has(t))throw new Error(`opensea: unsupported account chain ${t}`);return t}function Vn(e,t="address"){try{return ni(String(e||"").trim().toLowerCase())}catch{throw new Error(`opensea: invalid ${t}`)}}function Kn(e,t=null){let r=String(e||"").trim();if(!r)throw new Error("opensea: account address required");if(t&&!ai.has(t)||!t&&/^0x[0-9a-fA-F]{40}$/.test(r))return Vn(r,"account address");if(!/^[1-9A-HJ-NP-Za-km-z]{32,64}$/.test(r))throw new Error("opensea: invalid account address");return r}function ui(e={},t,r){return{chain:t,owner:r,contract:e.contract||null,tokenId:e.identifier==null?null:String(e.identifier),tokenStandard:e.token_standard||null,collection:e.collection||null,name:e.name||null,description:e.description||null,imageUrl:e.display_image_url||e.image_url||e.original_image_url||null,originalImageUrl:e.original_image_url||e.image_url||null,animationUrl:e.display_animation_url||e.original_animation_url||null,metadataUrl:e.metadata_url||null,marketplaceUrl:e.opensea_url||null,estimatedValueUsd:e.estimated_value_usd!=null&&Number.isFinite(Number(e.estimated_value_usd))?Number(e.estimated_value_usd):null,spam:e.is_disabled===!0,disabled:e.is_disabled===!0,nsfw:e.is_nsfw===!0,traits:Array.isArray(e.traits)?e.traits:[],updatedAt:e.updated_at||null,acquisitionCost:null,itemPnl:{status:"unavailable",reason:"OpenSea account inventory does not expose trustworthy per-item acquisition cost"}}}async function yt(e={},t={}){if(!ht(t))throw new Error("OPENSEA_API_KEY required");let r=li(e.chain),n=Kn(e.address||e.owner,r),o=Math.min(Math.max(Number(e.pageSize??e.limit??200)||200,1),200),i=Math.min(Math.max(Number(e.maxPages??5)||5,1),25),s=[],a=e.next?String(e.next):null,l=0;do{let p=new URL(`${jn(t)}/chain/${encodeURIComponent(r)}/account/${encodeURIComponent(n)}/nfts`);p.searchParams.set("limit",String(o)),e.collection&&p.searchParams.set("collection",String(e.collection)),a&&p.searchParams.set("next",a);let c=await O(p.toString(),{headers:Wn(t),fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs??2e4});for(let d of Array.isArray(c?.nfts)?c.nfts:[])s.push(ui(d,r,n));a=c?.next?String(c.next):null,l+=1}while(a&&l<i);return{provider:"opensea-nft",source:"opensea-account-inventory",chain:r,owner:n,count:s.length,pages:l,complete:!a,next:a,nfts:s,exec:!1,readOnly:!0}}async function Gn(e={},t={}){if(!ht(t))throw new Error("OPENSEA_API_KEY required");let r=Kn(e.address||e.owner),n=await O(`${jn(t)}/account/${encodeURIComponent(r)}/pnl`,{headers:Wn(t),fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs??2e4});return{provider:"opensea-nft",source:"opensea-indexed-account-pnl",address:r,scope:"OpenSea-indexed account trading PnL across supported currencies, not per-item NFT cost basis",methodology:"provider-indexed",realizedPnlUsd:n?.realized_pnl_usd??null,unrealizedPnlUsd:n?.unrealized_pnl_usd??null,totalPnlUsd:n?.total_pnl_usd??null,netInvestedUsd:n?.net_invested_usd??null,currentValueUsd:n?.current_value_usd??null,returnPercentage:n?.return_percentage??null,itemLevelPnlAvailable:!1,raw:n,exec:!1,readOnly:!0}}var nc=Object.freeze({robinhood:4663,ethereum:1,base:8453,arbitrum:42161,optimism:10,polygon:137,avalanche:43114,zora:7777777,blast:81457,sei:1329,ape_chain:33139,b3:8333,soneium:1868,ronin:2020,bera_chain:80094,shape:360,unichain:130,gunzilla:43419,abstract:2741,animechain:69e3,hyperevm:999,somnia:5031,monad:143,megaeth:4326,ink:57073,stablechain:988});var rc=Object.freeze({OrderComponents:[{name:"offerer",type:"address"},{name:"zone",type:"address"},{name:"offer",type:"OfferItem[]"},{name:"consideration",type:"ConsiderationItem[]"},{name:"orderType",type:"uint8"},{name:"startTime",type:"uint256"},{name:"endTime",type:"uint256"},{name:"zoneHash",type:"bytes32"},{name:"salt",type:"uint256"},{name:"conduitKey",type:"bytes32"},{name:"counter",type:"uint256"}],OfferItem:[{name:"itemType",type:"uint8"},{name:"token",type:"address"},{name:"identifierOrCriteria",type:"uint256"},{name:"startAmount",type:"uint256"},{name:"endAmount",type:"uint256"}],ConsiderationItem:[{name:"itemType",type:"uint8"},{name:"token",type:"address"},{name:"identifierOrCriteria",type:"uint256"},{name:"startAmount",type:"uint256"},{name:"endAmount",type:"uint256"},{name:"recipient",type:"address"}]});var oc=new Te(["function setApprovalForAll(address operator,bool approved)"]),ic=new Te(["function cancel((address offerer,address zone,(uint8 itemType,address token,uint256 identifierOrCriteria,uint256 startAmount,uint256 endAmount)[] offer,(uint8 itemType,address token,uint256 identifierOrCriteria,uint256 startAmount,uint256 endAmount,address recipient)[] consideration,uint8 orderType,uint256 startTime,uint256 endTime,bytes32 zoneHash,uint256 salt,bytes32 conduitKey,uint256 counter)[] orders) returns (bool cancelled)"]);var pi="https://api.satflow.com/v1";function Yn(e={}){return ae({provider:"satflow",defaultUrl:pi,hosts:["api.satflow.com"],url:e.baseUrl||process.env.SATFLOW_API_URL})}function fi(e={}){return Yn(e).baseUrl}function Xn(e={}){return String(e.apiKey||process.env.SATFLOW_API_KEY||process.env.BTC_SATFLOW_API_KEY||"").trim()}function mi(e={}){return te({accept:"application/json","content-type":"application/json","user-agent":"oracle-btc-satflow/0.1"},{"x-api-key":Xn(e)},Yn(e).trusted)}async function hi(e,{method:t="GET",body:r,opts:n={}}={}){if(!Xn(n))throw new Error("satflow: SATFLOW_API_KEY not set (request key via Satflow docs form)");let i=`${fi(n)}${e.startsWith("/")?e:`/${e}`}`,a=await(n.fetchImpl||fetch)(i,{method:t,headers:mi(n),body:r!=null?JSON.stringify(r):void 0,signal:AbortSignal.timeout(n.timeoutMs??2e4)}),l=await a.text(),p;try{p=JSON.parse(l)}catch{p=l}if(!a.ok)throw new Error(`satflow ${t} ${e}: HTTP ${a.status} ${String(l).slice(0,200)}`);return p}async function Jn(e={},t={}){let r=Y(e.address||e.addr,"address"),n=new URLSearchParams({address:r});e.type&&n.set("type",e.type),e.limit!=null&&n.set("limit",String(e.limit)),e.offset!=null&&n.set("offset",String(e.offset));let o=await hi(`/address/wallet-contents?${n}`,{opts:t});return{provider:"satflow",address:r,contents:o}}U();U();var Sc=Object.freeze(["i.seadn.io","openseauserdata.com","arweave.net","ipfs.io","nftstorage.link","dweb.link","cloudflare-ipfs.com","ordinals.com","ordinals.g.com","cdn.helius-rpc.com","shdw-drive.genesysgo.net"]);var yi=[/\bclaim\b/i,/\breward\b/i,/\bairdrop\b/i,/\bvoucher\b/i,/\bwinner\b/i,/\bfree\s*mint\b/i,/\bactivate\b/i,/\bunlock\b/i,/\bverify\b/i,/\bconnect\s+wallet\b/i],bi=/(https?:\/\/|www\.|[a-z0-9-]+\.(?:com|net|io|xyz|org|app|finance|gift|claims?|site|link|live|vip|top|cc))/i,gi=/(\$\s?\d|\d[\d,.]*\s*(?:usd|usdc|usdt|eth|weth|btc|sol)\b)/i;function wi(e={}){let t=[],r=String(e.name||""),n=String(e.description||""),o=`${r} ${n}`;bi.test(r)&&t.push("url-in-name");let i=yi.filter(p=>p.test(o)).length;i>0&&t.push(`lure-language:${i}`),gi.test(r)&&t.push("value-claim-in-name"),/[\u200B-\u200F\u202A-\u202E\uFEFF]/.test(r)&&t.push("invisible-characters"),e.disabled===!0&&t.push("marketplace-disabled");let s=e.estimatedValueUsd==null&&e.estimatedValueSats==null,a=!Array.isArray(e.traits)||e.traits.length===0;s&&a&&i>0&&t.push("valueless-airdrop-with-lure");let l=t.includes("url-in-name")||t.includes("invisible-characters")||t.includes("valueless-airdrop-with-lure")||t.length>=2;return{spam:l,risk:l?"high":t.length>0?"low":"none",reasons:t}}function Qn(e={}){let t=wi(e);return{...e,spam:e.spam===!0||t.spam,riskLevel:t.risk,riskReasons:t.reasons.length?t.reasons:void 0}}var Si=Object.freeze([{chain:"ethereum",chainId:1,family:"evm"},{chain:"optimism",chainId:10,family:"evm"},{chain:"polygon",chainId:137,family:"evm"},{chain:"stablechain",chainId:988,family:"evm"},{chain:"hyperevm",chainId:999,family:"evm"},{chain:"abstract",chainId:2741,family:"evm"},{chain:"robinhood",chainId:4663,family:"evm"},{chain:"base",chainId:8453,family:"evm"},{chain:"arbitrum",chainId:42161,family:"evm"},{chain:"avalanche",chainId:43114,family:"evm"},{chain:"hyperliquid",chainId:null,family:"hyperliquid"}]),vi=Object.freeze([{family:"evm",chain:"bsc",chainId:56,reason:"OpenSea account inventory does not support BSC"},{family:"cosmos",reason:"requires a chain-specific bech32 address and NFT indexer"},{family:"sui",reason:"owner inventory adapter not installed"},{family:"aptos",reason:"owner inventory adapter not installed"}]);function bt(e={},t){return{fetchImpl:e.fetchImpl,timeoutMs:e.timeoutMs,env:e.env,allowDiskCredentials:e.allowDiskCredentials,allowAmbientCredentials:e.allowAmbientCredentials,...e[t]||{}}}async function be(e,t){let r=await C(t);return r.ok?{ok:!0,data:r.data}:{ok:!1,error:`${e}: ${r.error}`.slice(0,300)}}function Ei(e){if(Array.isArray(e))return e;for(let t of["items","results","ordinals","inscriptions","data"])if(Array.isArray(e?.[t]))return e[t];return[]}function Ai(e={},t){let r=e.inscription_id||e.inscriptionId||e.id||e.inscription||null;return{chain:"bitcoin",family:"bitcoin",owner:t,contract:null,tokenId:r==null?null:String(r),tokenStandard:"ordinal",collection:e.collection_slug||e.collectionSlug||e.collection?.slug||e.collection||null,name:e.name||e.meta?.name||(r?`Inscription ${r}`:"Bitcoin inscription"),description:e.description||e.meta?.description||null,imageUrl:e.image_url||e.imageUrl||e.content_url||e.contentUrl||e.thumbnail||null,originalImageUrl:e.content_url||e.contentUrl||e.image_url||e.imageUrl||null,animationUrl:null,metadataUrl:e.metadata_url||e.metadataUrl||null,marketplaceUrl:e.marketplace_url||e.marketplaceUrl||null,estimatedValueUsd:e.estimated_value_usd!=null&&Number.isFinite(Number(e.estimated_value_usd))?Number(e.estimated_value_usd):null,estimatedValueSats:(e.floor_price_sats??e.price_sats)!=null&&Number.isFinite(Number(e.floor_price_sats??e.price_sats))?Number(e.floor_price_sats??e.price_sats):null,spam:!1,disabled:!1,nsfw:!1,listed:e.listed===!0||e.is_listed===!0,listingId:e.listing_id||e.listingId||null,traits:Array.isArray(e.traits)?e.traits:[],updatedAt:e.updated_at||e.updatedAt||null,acquisitionCost:null,itemPnl:{status:"unavailable",reason:"Satflow wallet inventory does not expose trustworthy acquisition cost"},listingAdapter:"satflow",source:"satflow-wallet-contents"}}function xi(e,t){return{chain:"bitcoin",family:"bitcoin",owner:t,contract:null,tokenId:String(e),tokenStandard:"ordinal",collection:null,name:`Inscription ${e}`,description:null,imageUrl:null,originalImageUrl:null,animationUrl:null,metadataUrl:null,marketplaceUrl:null,estimatedValueUsd:null,spam:!1,disabled:!1,nsfw:!1,traits:[],updatedAt:null,acquisitionCost:null,itemPnl:{status:"unavailable",reason:"address indexer returned no acquisition or valuation data"},listingAdapter:"satflow",source:"bitcoin-meta-address-indexer"}}function Zn(e={}){return[e.chain||"unknown",e.contract||"native",e.tokenId||"unknown"].join(":").toLowerCase()}function Ii(e){let t=new Map;if(Array.isArray(e)){for(let r of e)r?.assetKey&&t.set(String(r.assetKey).toLowerCase(),r);return t}if(e&&typeof e=="object")for(let[r,n]of Object.entries(e))t.set(r.toLowerCase(),n);return t}function ki(e,t){let r=Zn(e),n=t.get(r),o=e.estimatedValueUsd==null?null:Number(e.estimatedValueUsd);if(!n)return{...e,assetKey:r};let i=Number(n.costUsd),s=Number(n.feesUsd??0);if(!Number.isFinite(i)||i<0||!Number.isFinite(s)||s<0)return{...e,assetKey:r,acquisitionCost:null,itemPnl:{status:"unavailable",reason:"invalid user-supplied cost basis"}};let a=Math.round((i+s)*100)/100;return Number.isFinite(o)?{...e,assetKey:r,acquisitionCost:{costUsd:i,feesUsd:s,totalCostUsd:a,acquiredAt:n.acquiredAt||null,source:n.source||"user-supplied"},itemPnl:{status:"estimated",methodology:"provider estimated current value minus supplied USD acquisition cost and fees",unrealizedUsd:Math.round((o-a)*100)/100,currentValueUsd:o,totalCostUsd:a,realizedUsd:null}}:{...e,assetKey:r,acquisitionCost:{costUsd:i,feesUsd:s,totalCostUsd:a,acquiredAt:n.acquiredAt||null,source:n.source||"user-supplied"},itemPnl:{status:"unavailable",reason:"current NFT valuation is unavailable"}}}function _i(e){let t=new Map;for(let r of e){let n=Zn(r);t.has(n)||t.set(n,r)}return[...t.values()]}function Ti(e,t){let r=e.filter(i=>i.itemPnl?.status==="estimated"),n=e.length-r.length,o=Math.round(r.reduce((i,s)=>i+Number(s.itemPnl.unrealizedUsd||0),0)*100)/100;return{nftItemPnl:{status:n===0&&e.length?"estimated-complete-for-held-items":r.length?"partial":"unavailable",methodology:"Only items with explicit acquisition cost and provider estimated current value are included",knownUnrealizedUsd:o,knownItems:r.length,unknownItems:n,realizedUsd:null,warning:"Transfers, gifts, airdrops, mints, bridges, gas, royalties, and off-market sales can make cost basis unavailable or incomplete."},providerAccountPnl:t}}async function er(e={},t={}){let r=new Date().toISOString(),n=ft(e,t.env||process.env),o=Array.isArray(e.chains)&&e.chains.length?new Set(e.chains.map(m=>String(m).toLowerCase())):null,i=Si.filter(m=>!o||o.has(m.chain)),s=[],a=[],l=bt(t,"opensea"),p=n.evm?i.filter(m=>m.family!=="solana"):[],c=await G(p,4,async m=>({row:m,result:await be(`opensea-${m.chain}`,()=>yt({chain:m.chain,address:n.evm,pageSize:e.pageSize,maxPages:e.maxPages},l),t.timeoutMs??35e3)}));for(let{row:m,result:y}of c)if(y.ok){let A=y.data.nfts.map(P=>({...P,family:m.family,chainId:m.chainId,listingAdapter:"opensea",source:"opensea-account-inventory"}));a.push(...A),s.push({family:m.family,chain:m.chain,chainId:m.chainId,status:y.data.complete?"ok":"partial",count:A.length,complete:y.data.complete,next:y.data.next,source:"opensea"})}else s.push({family:m.family,chain:m.chain,chainId:m.chainId,status:"unavailable",error:y.error,source:"opensea"});if(!n.evm)for(let m of i.filter(y=>y.family!=="solana"))s.push({family:m.family,chain:m.chain,chainId:m.chainId,status:"not-configured",reason:"EVM address missing"});if(n.solana&&(!o||o.has("solana"))){let m=await be("opensea-solana",()=>yt({chain:"solana",address:n.solana,pageSize:e.pageSize,maxPages:e.maxPages},l),t.timeoutMs??35e3);if(m.ok){let y=m.data.nfts.map(A=>({...A,family:"solana",chainId:null,listingAdapter:null,source:"opensea-account-inventory"}));a.push(...y),s.push({family:"solana",chain:"solana",status:m.data.complete?"ok":"partial",count:y.length,complete:m.data.complete,next:m.data.next,source:"opensea"})}else s.push({family:"solana",chain:"solana",status:"unavailable",error:m.error,source:"opensea"})}else(!o||o.has("solana"))&&s.push({family:"solana",chain:"solana",status:"not-configured",reason:"Solana address missing"});if(n.bitcoin&&(!o||o.has("bitcoin"))){let m=await be("satflow-wallet-contents",()=>Jn({address:n.bitcoin,type:"ordinals",limit:e.bitcoinLimit??100,offset:0},bt(t,"satflow")),t.timeoutMs??35e3);if(m.ok){let y=Ei(m.data.contents).map(P=>Ai(P,n.bitcoin));a.push(...y);let A=y.length<Number(e.bitcoinLimit??100);s.push({family:"bitcoin",chain:"bitcoin",status:A?"ok":"partial",count:y.length,complete:A,source:"satflow"})}else{let y=await be("bitcoin-meta-inscriptions",()=>Ie({address:n.bitcoin},bt(t,"bitcoinMeta")),t.timeoutMs??35e3),A=y.ok&&y.data?.ok&&Array.isArray(y.data.inscriptions)?y.data.inscriptions:[];a.push(...A.map(P=>xi(P,n.bitcoin))),s.push({family:"bitcoin",chain:"bitcoin",status:A.length?"partial":"unavailable",count:A.length,complete:!1,source:A.length?"bitcoin-meta":"satflow",error:A.length?"Satflow unavailable; fallback has IDs only":m.error})}}else(!o||o.has("bitcoin"))&&s.push({family:"bitcoin",chain:"bitcoin",status:"not-configured",reason:"Bitcoin address missing"});let d=[];if(e.includePnl!==!1)for(let m of[...new Set([n.evm,n.solana].filter(Boolean))]){let y=await be(`opensea-pnl-${m}`,()=>Gn({address:m},l),t.timeoutMs??35e3);d.push(y.ok?{status:"ok",...y.data}:{status:"unavailable",address:m,source:"opensea-indexed-account-pnl",error:y.error})}let f=Ii(e.costBasis),u=_i(a).map(m=>ki(m,f)).map(m=>Qn(m)),g=u.filter(m=>!m.spam),E=u.filter(m=>m.spam),S=g.filter(m=>m.estimatedValueUsd!=null&&Number.isFinite(Number(m.estimatedValueUsd))),I=Math.round(S.reduce((m,y)=>m+Number(y.estimatedValueUsd),0)*100)/100,v=g.length-S.length,k=s.filter(m=>m.status!=="ok"||m.complete===!1);return{provider:"nft-portfolio",operation:"inventory",readOnly:!0,generatedAt:r,addresses:n,coverage:s,unsupported:vi,inventory:{count:u.length,visibleCount:g.length,flaggedCount:E.length,items:u,visibleItems:g,flaggedItems:E},valuation:{estimatedCurrentValueUsd:I,valuedItems:S.length,unvaluedItems:v,complete:v===0&&k.length===0,methodology:"Sum of provider estimated_value_usd for non-flagged items. It is not an executable bid."},pnl:Ti(g,d),listingCoverage:{opensea:"EVM listing actions available with OPENSEA_API_KEY, explicit price/currency/expiry, and user confirmation",satflow:"Bitcoin unsigned listing PSBT available with SATFLOW_API_KEY, explicit price/expiry, and user confirmation",solana:"Magic Eden unsigned list transaction available with MAGICEDEN_API_KEY, explicit SOL price/expiry, and user confirmation",unsupported:"Sui, Aptos, Cosmos, BSC, and unknown marketplaces fail closed"},traitSniperCoverage:{opensea:"Evaluates reveal/trait-floor mispricing only with recent trait sales and volume evidence. Buy intents require local vault signing.",execution:"prepare-only on hosted surfaces; local vault required for purchase"},metadataSafety:{imagesAreUntrusted:!0,animationAndHtmlNotRendered:!0,galleryRasterOnly:!0,missingImagesUsePlaceholders:!0}}}import{homedir as gt}from"node:os";import{join as wt}from"node:path";var tr=process.env.ORACLE_PUBLIC_DESKTOP==="1",Ni=tr?process.env.ORACLE_CONFIG_DIR||wt(gt(),".config","oracle"):wt(gt(),".config","oracle"),Fc=tr?Ni:wt(gt(),".config","mad-desk");function St(e,t,r=""){let n=process.env[e];if(n!=null&&String(n).trim()!=="")return n;let o=t?process.env[t]:void 0;return o!=null&&String(o).trim()!==""?o:r}var Ui=JSON.parse(ir(new URL("../../package.json",import.meta.url),"utf8")),le="public",Bi="127.0.0.1",Mi=8799,Ce=Ui.version,Fi=new Set(["127.0.0.1","localhost","::1"]),qi=xt($i(Li(import.meta.url)),"../.."),vt=xt(qi,"public","oracle-console"),nr=Object.freeze({"/":{file:"index.html",type:"text/html; charset=utf-8"},"/index.html":{file:"index.html",type:"text/html; charset=utf-8"},"/app.js":{file:"app.js",type:"application/javascript; charset=utf-8"},"/styles.css":{file:"styles.css",type:"text/css; charset=utf-8"},"/oracle-console":{file:"index.html",type:"text/html; charset=utf-8"},"/oracle-console/":{file:"index.html",type:"text/html; charset=utf-8"},"/oracle-console/index.html":{file:"index.html",type:"text/html; charset=utf-8"},"/oracle-console/app.js":{file:"app.js",type:"application/javascript; charset=utf-8"},"/oracle-console/styles.css":{file:"styles.css",type:"text/css; charset=utf-8"}}),Di=1e6,M=class extends Error{constructor(t,r,n){super(n||r),this.status=t,this.code=r}};function W(e,t,r){let n=t,o;try{q(r),o=zt(r)}catch{n=500,o=JSON.stringify({error:"secret-leak-blocked"})}e.writeHead(n,{"content-type":"application/json; charset=utf-8","cache-control":"no-store","x-oracle-plane":le,"x-oracle-unsigned":"true"}),e.end(o)}function Hi(e){return new Promise((t,r)=>{let n=[],o=0;e.on("data",i=>{if(o+=i.length,o>Di){r(new M(413,"payload-too-large","request body too large")),e.destroy();return}n.push(i)}),e.on("end",()=>{let i=Buffer.concat(n).toString("utf8").trim();if(i==="")return t({});try{t(JSON.parse(i))}catch{r(new M(400,"invalid-json","request body must be valid JSON"))}}),e.on("error",()=>r(new M(400,"bad-request","request stream error")))})}function B(e,t){if(e==null)return{};if(typeof e!="object"||Array.isArray(e))throw new M(400,t,`${t} must be a JSON object`);return e}function Vi(e){return String(e||"").trim().toLowerCase().replace(/^\[|\]$/g,"")}function zi(e){let t=Vi(e);if(!Fi.has(t))throw new TypeError(`oracle-public only binds loopback hosts; got ${String(e)}`);return t==="::1"?"::1":String(e).trim()}function ji(){return{status:200,body:{ok:!0,plane:le,version:Ce}}}function Pe(e){return{...e,allowWildcardActions:!1,now:Math.floor(Date.now()/1e3)}}function Wi(e){let t=B(e,"body"),r=t.input!==void 0?B(t.input,"input"):t,n=Pe(B(t.opts,"opts")),o=r===t?(({opts:i,...s})=>s)(t):r;return{status:200,body:Kt(o,n)}}function Ki(e){let t=B(e,"body"),r=t.request!==void 0?B(t.request,"request"):t.input!==void 0?B(t.input,"input"):t,n=Pe(B(t.opts,"opts")),o=r===t?(({opts:i,...s})=>s)(t):r;return{status:200,body:Gt(o,n)}}function Gi(e){let t=B(e,"body"),r=Pe(B(t.opts,"opts")),n=Jt(t.store??[],r);return{status:200,body:{ok:!0,count:n.length,grants:n}}}function Yi(e){let t=B(e,"body"),r=Pe(B(t.opts,"opts")),n=Qt(t.store??[],t.id,r);return n==null?{status:404,body:{error:"grant-not-found"}}:{status:200,body:n}}function Xi(){let e=(process.env.ORACLE_PRIVY_APP_ID||process.env.PRIVY_APP_ID||"").trim(),t=e.length>0,r=!0,n=[];return t&&n.push("privy"),r&&n.push("injected"),{status:200,body:{ok:!0,plane:le,version:Ce,custody:{selfCustodial:!0,signer:"user-wallet",privyEnabled:t,injectedEnabled:r,modes:n},privy:{appId:e||null}}}}var Et=400;function Ji(e=[]){if(e.length<=Et)return{rows:e,truncated:!1,omitted:0};let t=n=>n?.kind==="native"?0:n?.priced?1:2;return{rows:[...e].sort((n,o)=>t(n)-t(o)).slice(0,Et),truncated:!0,omitted:e.length-Et}}var At=300;function Qi(e=[]){if(e.length<=At)return{items:e,truncated:!1,omitted:0};let t=n=>n?.spam===!0||n?.nsfw===!0?2:Number.isFinite(Number(n?.floorUsd))&&Number(n?.floorUsd)>0?0:1;return{items:[...e].sort((n,o)=>t(n)-t(o)).slice(0,At),truncated:!0,omitted:e.length-At}}var Ne=12;async function Zi(e){let t=B(e,"body"),r=typeof t.owner=="string"?t.owner:null;if(!r)throw new M(400,"owner-required","owner must be an EVM address");let n=Array.isArray(t.chainIds)?t.chainIds.map(Number).filter(Number.isFinite):void 0;if(n&&n.length>Ne)throw new M(400,"too-many-chains",`at most ${Ne} chainIds per request`);let i=await vn({owner:r,chainIds:n},ar());return{status:200,body:{ok:!0,owner:i.owner,scannedRange:i.scannedRange,approvals:i.approvals,scans:i.scans,warnings:i.warnings}}}var es=/^[1-9A-HJ-NP-Za-km-z]{32,44}$/,ts=/^([13][1-9A-HJ-NP-Za-km-z]{25,34}|bc1[ac-hj-np-z02-9]{11,71})$/i;function ns(e){if(typeof e!="string")return null;let t=e.trim();return es.test(t)?t:null}function rs(e){if(typeof e!="string")return null;let t=e.trim();return ts.test(t)?t:null}function sr(e){if(typeof e=="string")return e.trim()===""?null:e;if(e&&typeof e=="object"&&!Array.isArray(e)){let t=e.evm;if(typeof t=="string"&&t.trim()!=="")return t}return null}async function os(e){let t=B(e,"body"),r=sr(t.owner),n=ns(t.solana),o=rs(t.bitcoin);if(!r&&!n&&!o)throw new M(400,"owner-required","owner must be an EVM address (or pass solana/bitcoin)");let i=Array.isArray(t.chainIds)?t.chainIds.map(Number).filter(Number.isFinite):void 0;if(i&&i.length>Ne)throw new M(400,"too-many-chains",`at most ${Ne} chainIds per request`);let s=await Hn({addresses:{evm:r,solana:n,bitcoin:o},evmChainIds:i,includePrices:!0,includeTokens:!0,includeCollectibles:!1},{env:{}}),a=[],l=[],p=0,c=0;for(let u of s.chains||[]){if(!["evm","solana","bitcoin"].includes(u.family))continue;let g=u.fungibleTokens?.status??"unavailable";g==="ok"?p+=1:g==="unavailable"&&(c+=1),l.push({chainId:u.chainId,family:u.family,name:u.name,status:u.status,error:u.error??null,tokenDiscovery:g,tokenDiscoveryReason:u.fungibleTokens?.reason??null,tokenCount:Array.isArray(u.fungibleTokens?.assets)?u.fungibleTokens.assets.length:0});let E=u.native;u.status==="ok"&&E&&E.status==="ok"&&E.amountRaw&&E.amountRaw!=="0"&&E.amountRaw!=="0x0"&&a.push({chainId:u.chainId,family:u.family,chain:u.name,symbol:E.symbol,decimals:E.decimals,amount:String(E.amountRaw),amountRaw:String(E.amountRaw),amountFormatted:E.amount,kind:"native",valueUsd:E.usdValue!=null?String(E.usdValue):null,priced:E.usdValue!=null});for(let S of u.fungibleTokens?.assets||[]){let I=S.amountRaw!=null?String(S.amountRaw):null;if(!I||I==="0")continue;let v=typeof S.decimals=="number"&&Number.isInteger(S.decimals)?S.decimals:null;a.push({chainId:u.chainId,family:u.family,chain:u.name,symbol:S.symbol||S.coin||"TOKEN",decimals:v,amount:I,amountRaw:I,amountFormatted:S.amount!=null?String(S.amount):null,kind:u.family==="bitcoin"?"rune":u.family==="solana"?"spl":"erc20",address:S.address||S.mint||null,valueUsd:S.usdValue!=null?String(S.usdValue):null,priced:S.usdValue!=null,source:S.source||u.fungibleTokens?.source||null})}}let d=c>0||!!(s.valuation&&s.valuation.complete===!1),f=Ji(a);return{status:200,body:{ok:!0,owner:s.addresses?.evm??r,queriedAt:s.queriedAt,portfolio:{rows:f.rows,rowsTruncated:f.truncated,rowsOmitted:f.omitted,chains:l,coverage:s.coverage,valuation:s.valuation??null,complete:!d&&c===0&&!f.truncated,incompleteReason:f.truncated?`Showing ${f.rows.length} of ${f.rows.length+f.omitted} rows (native and priced first); ${f.omitted} low-signal rows omitted.`:d?p?`Token scan live on ${p} chain(s); ${c} chain(s) still lack an indexer (native-only).`:"EVM token enumeration requires a public explorer/indexer; natives are still live.":null},warnings:s.warnings}}}function ar(){return{env:{},allowDiskCredentials:!1,allowAmbientCredentials:!1}}async function is(e){let t=B(e,"body"),r=sr(t.owner);if(!r)throw new M(400,"owner-required","owner must be an EVM address");let n=await er({addresses:{evm:r}},ar()),o=n?.inventory&&typeof n.inventory=="object"?n.inventory:{},s=(Array.isArray(o.visibleItems)?o.visibleItems:Array.isArray(o.items)?o.items:Array.isArray(n?.items)?n.items:[]).map(c=>{if(!c||typeof c!="object")return null;let d=typeof c.collection=="string"?c.collection:c.collection&&typeof c.collection=="object"&&typeof c.collection.slug=="string"?c.collection.slug:typeof c.contract=="string"?c.contract:null;return{chain:c.chain??null,chainId:c.chainId??null,family:c.family??null,owner:c.owner??r,contract:c.contract??null,tokenId:c.tokenId==null?null:String(c.tokenId),tokenStandard:c.tokenStandard??null,collection:d,name:typeof c.name=="string"?c.name.slice(0,160):null,imageUrl:c.imageUrl??c.image??null,estimatedValueUsd:c.estimatedValueUsd!=null&&Number.isFinite(Number(c.estimatedValueUsd))?Number(c.estimatedValueUsd):null,floorUsd:c.floorUsd!=null&&Number.isFinite(Number(c.floorUsd))?Number(c.floorUsd):c.estimatedValueUsd!=null&&Number.isFinite(Number(c.estimatedValueUsd))?Number(c.estimatedValueUsd):null,spam:c.spam===!0,nsfw:c.nsfw===!0,source:typeof c.source=="string"?c.source.slice(0,64):null}}).filter(Boolean),a=Array.isArray(n?.coverage)?n.coverage:[],l=Qi(s),p=n?.valuation?.complete===!0&&!l.truncated;return{status:200,body:{ok:!0,owner:r,queriedAt:n.generatedAt??new Date().toISOString(),nfts:{items:l.items,itemsTruncated:l.truncated,itemsOmitted:l.omitted,chains:a.map(c=>({family:c?.family??null,chain:c?.chain??null,chainId:c?.chainId??null,status:c?.status??null,count:c?.count??null,complete:c?.complete===!0,source:c?.source??null,error:null,reason:typeof c?.reason=="string"?c.reason.slice(0,120):null})),coverage:{operational:!0,complete:p,hasGaps:!p,degraded:a.filter(c=>c?.status==="partial").map(c=>c.chain).filter(Boolean),unavailable:a.filter(c=>c?.status==="unavailable").map(c=>c.chain).filter(Boolean),unconfigured:a.filter(c=>c?.status==="not-configured").map(c=>c.chain).filter(Boolean)},count:l.items.length,visibleCount:l.items.length,totalCount:s.length},valuation:n?.valuation?{estimatedCurrentValueUsd:n.valuation.estimatedCurrentValueUsd??null,valuedItems:n.valuation.valuedItems??null,unvaluedItems:n.valuation.unvaluedItems??null,complete:n.valuation.complete===!0}:null}}}var ss=6e4,as=120,cr=10,cs=300,ls=cr,rr=Object.freeze(new Set(["/public/approvals","/public/portfolio","/public/nfts"])),us=4096,ge=new Map;function ds(e){if(process.env.ORACLE_TRUST_PROXY==="1"){let t=e.headers["x-forwarded-for"];if(typeof t=="string"&&t.length>0){let r=t.split(",")[0].trim();if(r)return r.slice(0,64)}}return e.socket?.remoteAddress||"unknown"}function ps(e,t){let r=String(e.socket?.remoteAddress||"").replace(/^::ffff:/,""),n=r==="127.0.0.1"||r==="::1"||r.startsWith("127."),o=ds(e),i=n&&o!==r,s=rr.has(t)?n&&!i?ls:cr:n&&!i?cs:as,a=Date.now(),l=`${o}:${rr.has(t)?"amp":"std"}`,p=ge.get(l);if(!p||a>=p.resetAt){for(ge.set(l,{count:1,resetAt:a+ss});ge.size>us;){let c=ge.keys().next();if(c.done)break;ge.delete(c.value)}return{allowed:!0,limit:s,remaining:s-1,retryAfterSec:0}}return p.count+=1,p.count>s?{allowed:!1,limit:s,remaining:0,retryAfterSec:Math.max(1,Math.ceil((p.resetAt-a)/1e3))}:{allowed:!0,limit:s,remaining:s-p.count,retryAfterSec:0}}var or=Object.freeze({"GET /public/health":ji,"GET /public/config":Xi,"POST /public/connect/request":Wi,"POST /public/connect/assemble":Ki,"POST /public/grants/active":Gi,"POST /public/grants/get":Yi,"POST /public/approvals":Zi,"POST /public/portfolio":os,"POST /public/nfts":is});function It(e={}){return{"cache-control":"no-store","x-oracle-plane":le,"x-oracle-unsigned":"true",...e}}function fs(e,t,r,n){e.writeHead(t,It({"content-type":r})),e.end(n)}function ms(e,t,r){if(e.method!=="GET"&&e.method!=="HEAD")return!1;let n=r===""?"/":r,o=nr[n]||nr[n.replace(/\/+$/,"")||"/"];if(!o)return!1;let i=Ri(xt(vt,o.file));if(!i.startsWith(vt+Oi)&&i!==vt)return W(t,404,{error:"not-found",message:"unknown static path"}),!0;if(!Pi(i))return W(t,404,{error:"not-found",message:`missing static file ${o.file}`}),!0;let s=ir(i);return e.method==="HEAD"?(t.writeHead(200,It({"content-type":o.type,"content-length":String(s.length)})),t.end(),!0):(fs(t,200,o.type,s),!0)}async function hs(e,t){let n=new URL(e.url,"http://localhost").pathname||"/";n.length>1&&n.endsWith("/")&&n!=="/oracle-console/"&&(n=n.replace(/\/+$/,"")),n===""&&(n="/");let o=n.replace(/\/+$/,"")||"/",i=`${e.method} ${o}`,s=or[i];try{if(!s){if(ms(e,t,n))return;throw Object.keys(or).some(d=>d.endsWith(` ${o}`))?new M(405,"method-not-allowed",`unsupported method for ${o}`):new M(404,"not-found",`unknown route ${o}`)}let a=ps(e,o);if(!a.allowed){t.writeHead(429,It({"content-type":"application/json","retry-after":String(a.retryAfterSec),"x-ratelimit-limit":String(a.limit),"x-ratelimit-remaining":"0"})),t.end(JSON.stringify({error:"rate-limited",message:`too many requests for ${o}; retry in ${a.retryAfterSec}s`}));return}let l=e.method==="GET"||e.method==="HEAD"?void 0:await Hi(e),p=await s(l);W(t,p.status,p.body)}catch(a){if(a instanceof D){W(t,500,{error:"secret-leak-blocked"});return}if(a instanceof V){W(t,400,{error:"invalid-grant",errors:a.errors.map(l=>({field:l.field,message:l.message}))});return}if(a instanceof M){W(t,a.status,{error:a.code,message:a.message});return}if(a instanceof TypeError){W(t,400,{error:"bad-request",message:a.message});return}W(t,500,{error:"internal-error"})}}function ys(){return Ci((e,t)=>{hs(e,t).catch(()=>{try{W(t,500,{error:"internal-error"})}catch{}})})}function kt({host:e,port:t}={}){let r=zi(e??St("ORACLE_PUBLIC_HOST","MAD_PUBLIC_HOST",Bi)),n=t??St("ORACLE_PUBLIC_PORT","MAD_PUBLIC_PORT",String(Mi)),o=Number(n);if(!Number.isInteger(o)||o<0||o>65535)throw new TypeError(`invalid public port: ${String(n)}`);return{host:r,port:o}}function lr(e={}){let{host:t,port:r}=kt(e),n=ys();return n.listen(r,t),n}var _t=kt(),$e=lr(_t);$e.on("listening",()=>{let e=$e.address(),t=typeof e=="object"&&e?e.address:_t.host,r=typeof e=="object"&&e?e.port:_t.port;console.log(`oracle-public-server listening on http://${t}:${r} (plane=${le}, version=${Ce}, unsigned-only)`)});$e.on("error",e=>{console.error(`oracle-public-server failed to bind: ${e.code||e.message}`),process.exit(1)});for(let e of["SIGINT","SIGTERM"])process.on(e,()=>{$e.close(()=>process.exit(0)),setTimeout(()=>process.exit(0),1e3).unref()});
|