@oracle-agent/oracle 0.26.0 → 0.28.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.
Files changed (44) hide show
  1. package/README.md +2 -2
  2. package/SETUP.md +27 -1
  3. package/dist/assets/skills/oracle-desk-product/SKILL.md +1 -1
  4. package/dist/bin/desk-server.mjs +35 -79
  5. package/dist/bin/oracle-data-mcp.mjs +13 -57
  6. package/dist/bin/oracle-gateway.mjs +1 -1
  7. package/dist/bin/oracle-public-server.mjs +4 -48
  8. package/dist/bin/oracle-route.mjs +22 -66
  9. package/dist/bin/oracle-scan.mjs +15 -59
  10. package/dist/cli/commands/auth.mjs +3 -3
  11. package/dist/cli/commands/chat.mjs +154 -145
  12. package/dist/cli/commands/doctor.mjs +4 -4
  13. package/dist/cli/commands/eval.mjs +147 -190
  14. package/dist/cli/commands/farm.mjs +34 -78
  15. package/dist/cli/commands/follow.mjs +17 -61
  16. package/dist/cli/commands/harness.mjs +3 -3
  17. package/dist/cli/commands/init.mjs +2 -2
  18. package/dist/cli/commands/model.mjs +158 -150
  19. package/dist/cli/commands/receipt.mjs +3 -3
  20. package/dist/cli/commands/resolve.mjs +13 -57
  21. package/dist/cli/commands/setup.mjs +43 -39
  22. package/dist/cli/commands/sign.mjs +14 -14
  23. package/dist/cli/commands/signer.mjs +14 -14
  24. package/dist/cli/commands/strategy.mjs +5 -49
  25. package/dist/cli/commands/swap.mjs +27 -71
  26. package/dist/cli/commands/venues.mjs +3 -3
  27. package/dist/data/desk-data.mjs +33 -77
  28. package/dist/data/names.mjs +2 -46
  29. package/dist/data/providers/farming.mjs +2 -46
  30. package/dist/index.mjs +37 -81
  31. package/dist/local-signer/anvil-attestation-worker.mjs +2 -0
  32. package/dist/local-signer/index.mjs +3 -3
  33. package/dist/local-signer/runtime.mjs +13 -0
  34. package/dist/nft/universal-mint-router.mjs +3 -47
  35. package/dist/router/index.mjs +2 -46
  36. package/dist/router/prepare-bridge.mjs +2 -46
  37. package/dist/scanner/index.mjs +4 -48
  38. package/dist/strategy/index.mjs +3 -47
  39. package/package.json +2 -1
  40. package/public/install.sh +20 -0
  41. package/public/oracle-splash/_variants/ice.html +1 -1
  42. package/public/oracle-splash/_variants/ivory.html +1 -1
  43. package/public/oracle-splash/index.html +1 -1
  44. package/public/oracle-splash/install.sh +20 -0
@@ -1,47 +1,3 @@
1
- var dw=Object.create;var Wl=Object.defineProperty;var ww=Object.getOwnPropertyDescriptor;var yw=Object.getOwnPropertyNames;var pw=Object.getPrototypeOf,mw=Object.prototype.hasOwnProperty;var y=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(A,t)=>(typeof require<"u"?require:A)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var p=(e,A)=>()=>{try{return A||e((A={exports:{}}).exports,A),A.exports}catch(t){throw A=0,t}};var Dw=(e,A,t,r)=>{if(A&&typeof A=="object"||typeof A=="function")for(let n of yw(A))!mw.call(e,n)&&n!==t&&Wl(e,n,{get:()=>A[n],enumerable:!(r=ww(A,n))||r.enumerable});return e};var kw=(e,A,t)=>(t=e!=null?dw(pw(e)):{},Dw(A||!e||!e.__esModule?Wl(t,"default",{value:e,enumerable:!0}):t,e));var Qe=p((KT,Pl)=>{Pl.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 Z=p((XT,IQ)=>{"use strict";var Ol=Symbol.for("undici.error.UND_ERR"),Ee=class extends Error{constructor(A){super(A),this.name="UndiciError",this.code="UND_ERR"}static[Symbol.hasInstance](A){return A&&A[Ol]===!0}[Ol]=!0},zl=Symbol.for("undici.error.UND_ERR_CONNECT_TIMEOUT"),ko=class extends Ee{constructor(A){super(A),this.name="ConnectTimeoutError",this.message=A||"Connect Timeout Error",this.code="UND_ERR_CONNECT_TIMEOUT"}static[Symbol.hasInstance](A){return A&&A[zl]===!0}[zl]=!0},Zl=Symbol.for("undici.error.UND_ERR_HEADERS_TIMEOUT"),bo=class extends Ee{constructor(A){super(A),this.name="HeadersTimeoutError",this.message=A||"Headers Timeout Error",this.code="UND_ERR_HEADERS_TIMEOUT"}static[Symbol.hasInstance](A){return A&&A[Zl]===!0}[Zl]=!0},_l=Symbol.for("undici.error.UND_ERR_HEADERS_OVERFLOW"),Fo=class extends Ee{constructor(A){super(A),this.name="HeadersOverflowError",this.message=A||"Headers Overflow Error",this.code="UND_ERR_HEADERS_OVERFLOW"}static[Symbol.hasInstance](A){return A&&A[_l]===!0}[_l]=!0},Kl=Symbol.for("undici.error.UND_ERR_BODY_TIMEOUT"),Ro=class extends Ee{constructor(A){super(A),this.name="BodyTimeoutError",this.message=A||"Body Timeout Error",this.code="UND_ERR_BODY_TIMEOUT"}static[Symbol.hasInstance](A){return A&&A[Kl]===!0}[Kl]=!0},Xl=Symbol.for("undici.error.UND_ERR_RESPONSE_STATUS_CODE"),So=class extends Ee{constructor(A,t,r,n){super(A),this.name="ResponseStatusCodeError",this.message=A||"Response Status Code Error",this.code="UND_ERR_RESPONSE_STATUS_CODE",this.body=n,this.status=t,this.statusCode=t,this.headers=r}static[Symbol.hasInstance](A){return A&&A[Xl]===!0}[Xl]=!0},jl=Symbol.for("undici.error.UND_ERR_INVALID_ARG"),No=class extends Ee{constructor(A){super(A),this.name="InvalidArgumentError",this.message=A||"Invalid Argument Error",this.code="UND_ERR_INVALID_ARG"}static[Symbol.hasInstance](A){return A&&A[jl]===!0}[jl]=!0},$l=Symbol.for("undici.error.UND_ERR_INVALID_RETURN_VALUE"),Mo=class extends Ee{constructor(A){super(A),this.name="InvalidReturnValueError",this.message=A||"Invalid Return Value Error",this.code="UND_ERR_INVALID_RETURN_VALUE"}static[Symbol.hasInstance](A){return A&&A[$l]===!0}[$l]=!0},eQ=Symbol.for("undici.error.UND_ERR_ABORT"),Es=class extends Ee{constructor(A){super(A),this.name="AbortError",this.message=A||"The operation was aborted",this.code="UND_ERR_ABORT"}static[Symbol.hasInstance](A){return A&&A[eQ]===!0}[eQ]=!0},AQ=Symbol.for("undici.error.UND_ERR_ABORTED"),Uo=class extends Es{constructor(A){super(A),this.name="AbortError",this.message=A||"Request aborted",this.code="UND_ERR_ABORTED"}static[Symbol.hasInstance](A){return A&&A[AQ]===!0}[AQ]=!0},tQ=Symbol.for("undici.error.UND_ERR_INFO"),Lo=class extends Ee{constructor(A){super(A),this.name="InformationalError",this.message=A||"Request information",this.code="UND_ERR_INFO"}static[Symbol.hasInstance](A){return A&&A[tQ]===!0}[tQ]=!0},rQ=Symbol.for("undici.error.UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"),To=class extends Ee{constructor(A){super(A),this.name="RequestContentLengthMismatchError",this.message=A||"Request body length does not match content-length header",this.code="UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"}static[Symbol.hasInstance](A){return A&&A[rQ]===!0}[rQ]=!0},nQ=Symbol.for("undici.error.UND_ERR_RES_CONTENT_LENGTH_MISMATCH"),xo=class extends Ee{constructor(A){super(A),this.name="ResponseContentLengthMismatchError",this.message=A||"Response body length does not match content-length header",this.code="UND_ERR_RES_CONTENT_LENGTH_MISMATCH"}static[Symbol.hasInstance](A){return A&&A[nQ]===!0}[nQ]=!0},sQ=Symbol.for("undici.error.UND_ERR_DESTROYED"),Yo=class extends Ee{constructor(A){super(A),this.name="ClientDestroyedError",this.message=A||"The client is destroyed",this.code="UND_ERR_DESTROYED"}static[Symbol.hasInstance](A){return A&&A[sQ]===!0}[sQ]=!0},iQ=Symbol.for("undici.error.UND_ERR_CLOSED"),Go=class extends Ee{constructor(A){super(A),this.name="ClientClosedError",this.message=A||"The client is closed",this.code="UND_ERR_CLOSED"}static[Symbol.hasInstance](A){return A&&A[iQ]===!0}[iQ]=!0},oQ=Symbol.for("undici.error.UND_ERR_SOCKET"),Jo=class extends Ee{constructor(A,t){super(A),this.name="SocketError",this.message=A||"Socket error",this.code="UND_ERR_SOCKET",this.socket=t}static[Symbol.hasInstance](A){return A&&A[oQ]===!0}[oQ]=!0},aQ=Symbol.for("undici.error.UND_ERR_NOT_SUPPORTED"),Ho=class extends Ee{constructor(A){super(A),this.name="NotSupportedError",this.message=A||"Not supported error",this.code="UND_ERR_NOT_SUPPORTED"}static[Symbol.hasInstance](A){return A&&A[aQ]===!0}[aQ]=!0},cQ=Symbol.for("undici.error.UND_ERR_BPL_MISSING_UPSTREAM"),Vo=class extends Ee{constructor(A){super(A),this.name="MissingUpstreamError",this.message=A||"No upstream has been added to the BalancedPool",this.code="UND_ERR_BPL_MISSING_UPSTREAM"}static[Symbol.hasInstance](A){return A&&A[cQ]===!0}[cQ]=!0},gQ=Symbol.for("undici.error.UND_ERR_HTTP_PARSER"),vo=class extends Error{constructor(A,t,r){super(A),this.name="HTTPParserError",this.code=t?`HPE_${t}`:void 0,this.data=r?r.toString():void 0}static[Symbol.hasInstance](A){return A&&A[gQ]===!0}[gQ]=!0},lQ=Symbol.for("undici.error.UND_ERR_RES_EXCEEDED_MAX_SIZE"),qo=class extends Ee{constructor(A){super(A),this.name="ResponseExceededMaxSizeError",this.message=A||"Response content exceeded max size",this.code="UND_ERR_RES_EXCEEDED_MAX_SIZE"}static[Symbol.hasInstance](A){return A&&A[lQ]===!0}[lQ]=!0},QQ=Symbol.for("undici.error.UND_ERR_REQ_RETRY"),Wo=class extends Ee{constructor(A,t,{headers:r,data:n}){super(A),this.name="RequestRetryError",this.message=A||"Request retry error",this.code="UND_ERR_REQ_RETRY",this.statusCode=t,this.data=n,this.headers=r}static[Symbol.hasInstance](A){return A&&A[QQ]===!0}[QQ]=!0},EQ=Symbol.for("undici.error.UND_ERR_RESPONSE"),Po=class extends Ee{constructor(A,t,{headers:r,data:n}){super(A),this.name="ResponseError",this.message=A||"Response error",this.code="UND_ERR_RESPONSE",this.statusCode=t,this.data=n,this.headers=r}static[Symbol.hasInstance](A){return A&&A[EQ]===!0}[EQ]=!0},BQ=Symbol.for("undici.error.UND_ERR_PRX_TLS"),Oo=class extends Ee{constructor(A,t,r){super(t,{cause:A,...r??{}}),this.name="SecureProxyConnectionError",this.message=t||"Secure Proxy Connection failed",this.code="UND_ERR_PRX_TLS",this.cause=A}static[Symbol.hasInstance](A){return A&&A[BQ]===!0}[BQ]=!0},uQ=Symbol.for("undici.error.UND_ERR_WS_MESSAGE_SIZE_EXCEEDED"),zo=class extends Ee{constructor(A){super(A),this.name="MessageSizeExceededError",this.message=A||"Max decompressed message size exceeded",this.code="UND_ERR_WS_MESSAGE_SIZE_EXCEEDED"}static[Symbol.hasInstance](A){return A&&A[uQ]===!0}get[uQ](){return!0}};IQ.exports={AbortError:Es,HTTPParserError:vo,UndiciError:Ee,HeadersTimeoutError:bo,HeadersOverflowError:Fo,BodyTimeoutError:Ro,RequestContentLengthMismatchError:To,ConnectTimeoutError:ko,ResponseStatusCodeError:So,InvalidArgumentError:No,InvalidReturnValueError:Mo,RequestAbortedError:Uo,ClientDestroyedError:Yo,ClientClosedError:Go,InformationalError:Lo,SocketError:Jo,NotSupportedError:Ho,ResponseContentLengthMismatchError:xo,BalancedPoolMissingUpstreamError:Vo,ResponseExceededMaxSizeError:qo,RequestRetryError:Wo,ResponseError:Po,SecureProxyConnectionError:Oo,MessageSizeExceededError:zo}});var us=p((jT,hQ)=>{"use strict";var Bs={},Zo=["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<Zo.length;++e){let A=Zo[e],t=A.toLowerCase();Bs[A]=Bs[t]=t}Object.setPrototypeOf(Bs,null);hQ.exports={wellknownHeaderNames:Zo,headerNameLowerCasedRecord:Bs}});var wQ=p(($T,dQ)=>{"use strict";var{wellknownHeaderNames:CQ,headerNameLowerCasedRecord:bw}=us(),_o=class e{value=null;left=null;middle=null;right=null;code;constructor(A,t,r){if(r===void 0||r>=A.length)throw new TypeError("Unreachable");if((this.code=A.charCodeAt(r))>127)throw new TypeError("key must be ascii string");A.length!==++r?this.middle=new e(A,t,r):this.value=t}add(A,t){let r=A.length;if(r===0)throw new TypeError("Unreachable");let n=0,s=this;for(;;){let i=A.charCodeAt(n);if(i>127)throw new TypeError("key must be ascii string");if(s.code===i)if(r===++n){s.value=t;break}else if(s.middle!==null)s=s.middle;else{s.middle=new e(A,t,n);break}else if(s.code<i)if(s.left!==null)s=s.left;else{s.left=new e(A,t,n);break}else if(s.right!==null)s=s.right;else{s.right=new e(A,t,n);break}}}search(A){let t=A.length,r=0,n=this;for(;n!==null&&r<t;){let s=A[r];for(s<=90&&s>=65&&(s|=32);n!==null;){if(s===n.code){if(t===++r)return n;n=n.middle;break}n=n.code<s?n.left:n.right}}return null}},Is=class{node=null;insert(A,t){this.node===null?this.node=new _o(A,t,0):this.node.add(A,t)}lookup(A){return this.node?.search(A)?.value??null}},fQ=new Is;for(let e=0;e<CQ.length;++e){let A=bw[CQ[e]];fQ.insert(A,A)}dQ.exports={TernarySearchTree:Is,tree:fQ}});var v=p((ex,YQ)=>{"use strict";var An=y("node:assert"),{kDestroyed:pQ,kBodyUsed:Zt,kListeners:Ko,kBody:yQ}=Qe(),{IncomingMessage:Fw}=y("node:http"),fs=y("node:stream"),Rw=y("node:net"),{Blob:Sw}=y("node:buffer"),Nw=y("node:util"),{stringify:Mw}=y("node:querystring"),{EventEmitter:Uw}=y("node:events"),{InvalidArgumentError:ke}=Z(),{headerNameLowerCasedRecord:Lw}=us(),{tree:mQ}=wQ(),[Tw,xw]=process.versions.node.split(".").map(e=>Number(e)),Cs=class{constructor(A){this[yQ]=A,this[Zt]=!1}async*[Symbol.asyncIterator](){An(!this[Zt],"disturbed"),this[Zt]=!0,yield*this[yQ]}};function Yw(e){return ds(e)?(RQ(e)===0&&e.on("data",function(){An(!1)}),typeof e.readableDidRead!="boolean"&&(e[Zt]=!1,Uw.prototype.on.call(e,"data",function(){this[Zt]=!0})),e):e&&typeof e.pipeTo=="function"?new Cs(e):e&&typeof e!="string"&&!ArrayBuffer.isView(e)&&FQ(e)?new Cs(e):e}function Gw(){}function ds(e){return e&&typeof e=="object"&&typeof e.pipe=="function"&&typeof e.on=="function"}function DQ(e){if(e===null)return!1;if(e instanceof Sw)return!0;if(typeof e!="object")return!1;{let A=e[Symbol.toStringTag];return(A==="Blob"||A==="File")&&("stream"in e&&typeof e.stream=="function"||"arrayBuffer"in e&&typeof e.arrayBuffer=="function")}}function Jw(e,A){if(e.includes("?")||e.includes("#"))throw new Error('Query params cannot be passed when url already contains "?" or "#".');let t=Mw(A);return t&&(e+="?"+t),e}function kQ(e){let A=parseInt(e,10);return A===Number(e)&&A>=0&&A<=65535}function hs(e){return e!=null&&e[0]==="h"&&e[1]==="t"&&e[2]==="t"&&e[3]==="p"&&(e[4]===":"||e[4]==="s"&&e[5]===":")}function bQ(e){if(typeof e=="string"){if(e=new URL(e),!hs(e.origin||e.protocol))throw new ke("Invalid URL protocol: the URL must start with `http:` or `https:`.");return e}if(!e||typeof e!="object")throw new ke("Invalid URL: The URL argument must be a non-null object.");if(!(e instanceof URL)){if(e.port!=null&&e.port!==""&&kQ(e.port)===!1)throw new ke("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 ke("Invalid URL path: the path must be a string or null/undefined.");if(e.pathname!=null&&typeof e.pathname!="string")throw new ke("Invalid URL pathname: the pathname must be a string or null/undefined.");if(e.hostname!=null&&typeof e.hostname!="string")throw new ke("Invalid URL hostname: the hostname must be a string or null/undefined.");if(e.origin!=null&&typeof e.origin!="string")throw new ke("Invalid URL origin: the origin must be a string or null/undefined.");if(!hs(e.origin||e.protocol))throw new ke("Invalid URL protocol: the URL must start with `http:` or `https:`.");let A=e.port!=null?e.port:e.protocol==="https:"?443:80,t=e.origin!=null?e.origin:`${e.protocol||""}//${e.hostname||""}:${A}`,r=e.path!=null?e.path:`${e.pathname||""}${e.search||""}`;return t[t.length-1]==="/"&&(t=t.slice(0,t.length-1)),r&&r[0]!=="/"&&(r=`/${r}`),new URL(`${t}${r}`)}if(!hs(e.origin||e.protocol))throw new ke("Invalid URL protocol: the URL must start with `http:` or `https:`.");return e}function Hw(e){if(e=bQ(e),e.pathname!=="/"||e.search||e.hash)throw new ke("invalid url");return e}function Vw(e){if(e[0]==="["){let t=e.indexOf("]");return An(t!==-1),e.substring(1,t)}let A=e.indexOf(":");return A===-1?e:e.substring(0,A)}function vw(e){if(!e)return null;An(typeof e=="string");let A=Vw(e);return Rw.isIP(A)?"":A}function qw(e){return JSON.parse(JSON.stringify(e))}function Ww(e){return e!=null&&typeof e[Symbol.asyncIterator]=="function"}function FQ(e){return e!=null&&(typeof e[Symbol.iterator]=="function"||typeof e[Symbol.asyncIterator]=="function")}function RQ(e){if(e==null)return 0;if(ds(e)){let A=e._readableState;return A&&A.objectMode===!1&&A.ended===!0&&Number.isFinite(A.length)?A.length:null}else{if(DQ(e))return e.size!=null?e.size:null;if(MQ(e))return e.byteLength}return null}function SQ(e){return e&&!!(e.destroyed||e[pQ]||fs.isDestroyed?.(e))}function Pw(e,A){e==null||!ds(e)||SQ(e)||(typeof e.destroy=="function"?(Object.getPrototypeOf(e).constructor===Fw&&(e.socket=null),e.destroy(A)):A&&queueMicrotask(()=>{e.emit("error",A)}),e.destroyed!==!0&&(e[pQ]=!0))}var Ow=/timeout=(\d+)/;function zw(e){let A=e.toString().match(Ow);return A?parseInt(A[1],10)*1e3:null}function NQ(e){return typeof e=="string"?Lw[e]??e.toLowerCase():mQ.lookup(e)??e.toString("latin1").toLowerCase()}function Zw(e){return mQ.lookup(e)??e.toString("latin1").toLowerCase()}function _w(e,A){A===void 0&&(A={});for(let t=0;t<e.length;t+=2){let r=NQ(e[t]),n=A[r];if(n)typeof n=="string"&&(n=[n],A[r]=n),n.push(e[t+1].toString("utf8"));else{let s=e[t+1];typeof s=="string"?A[r]=s:A[r]=Array.isArray(s)?s.map(i=>i.toString("utf8")):s.toString("utf8")}}return"content-length"in A&&"content-disposition"in A&&(A["content-disposition"]=Buffer.from(A["content-disposition"]).toString("latin1")),A}function Kw(e){let A=e.length,t=new Array(A),r=!1,n=-1,s,i,o=0;for(let a=0;a<e.length;a+=2)s=e[a],i=e[a+1],typeof s!="string"&&(s=s.toString()),typeof i!="string"&&(i=i.toString("utf8")),o=s.length,o===14&&s[7]==="-"&&(s==="content-length"||s.toLowerCase()==="content-length")?r=!0:o===19&&s[7]==="-"&&(s==="content-disposition"||s.toLowerCase()==="content-disposition")&&(n=a+1),t[a]=s,t[a+1]=i;return r&&n!==-1&&(t[n]=Buffer.from(t[n]).toString("latin1")),t}function MQ(e){return e instanceof Uint8Array||Buffer.isBuffer(e)}function Xw(e,A,t){if(!e||typeof e!="object")throw new ke("handler must be an object");if(typeof e.onConnect!="function")throw new ke("invalid onConnect method");if(typeof e.onError!="function")throw new ke("invalid onError method");if(typeof e.onBodySent!="function"&&e.onBodySent!==void 0)throw new ke("invalid onBodySent method");if(t||A==="CONNECT"){if(typeof e.onUpgrade!="function")throw new ke("invalid onUpgrade method")}else{if(typeof e.onHeaders!="function")throw new ke("invalid onHeaders method");if(typeof e.onData!="function")throw new ke("invalid onData method");if(typeof e.onComplete!="function")throw new ke("invalid onComplete method")}}function jw(e){return!!(e&&(fs.isDisturbed(e)||e[Zt]))}function $w(e){return!!(e&&fs.isErrored(e))}function ey(e){return!!(e&&fs.isReadable(e))}function Ay(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 ty(e){let A;return new ReadableStream({async start(){A=e[Symbol.asyncIterator]()},async pull(t){let{done:r,value:n}=await A.next();if(r)queueMicrotask(()=>{t.close(),t.byobRequest?.respond(0)});else{let s=Buffer.isBuffer(n)?n:Buffer.from(n);s.byteLength&&t.enqueue(new Uint8Array(s))}return t.desiredSize>0},async cancel(t){await A.return()},type:"bytes"})}function ry(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 ny(e,A){return"addEventListener"in e?(e.addEventListener("abort",A,{once:!0}),()=>e.removeEventListener("abort",A)):(e.addListener("abort",A),()=>e.removeListener("abort",A))}var sy=typeof String.prototype.toWellFormed=="function",iy=typeof String.prototype.isWellFormed=="function";function UQ(e){return sy?`${e}`.toWellFormed():Nw.toUSVString(e)}function oy(e){return iy?`${e}`.isWellFormed():UQ(e)===`${e}`}function LQ(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 ay(e){if(e.length===0)return!1;for(let A=0;A<e.length;++A)if(!LQ(e.charCodeAt(A)))return!1;return!0}var cy=/[^\t\x20-\x7e\x80-\xff]/;function gy(e){return!cy.test(e)}function ly(e){if(e==null||e==="")return{start:0,end:null,size:null};let A=e?e.match(/^bytes (\d+)-(\d+)\/(\d+)?$/):null;return A?{start:parseInt(A[1]),end:A[2]?parseInt(A[2]):null,size:A[3]?parseInt(A[3]):null}:null}function Qy(e,A,t){return(e[Ko]??=[]).push([A,t]),e.on(A,t),e}function Ey(e){for(let[A,t]of e[Ko]??[])e.removeListener(A,t);e[Ko]=null}function By(e,A,t){try{A.onError(t),An(A.aborted)}catch(r){e.emit("error",r)}}var TQ=Object.create(null);TQ.enumerable=!0;var Xo={delete:"DELETE",DELETE:"DELETE",get:"GET",GET:"GET",head:"HEAD",HEAD:"HEAD",options:"OPTIONS",OPTIONS:"OPTIONS",post:"POST",POST:"POST",put:"PUT",PUT:"PUT"},xQ={...Xo,patch:"patch",PATCH:"PATCH"};Object.setPrototypeOf(Xo,null);Object.setPrototypeOf(xQ,null);YQ.exports={kEnumerableProperty:TQ,nop:Gw,isDisturbed:jw,isErrored:$w,isReadable:ey,toUSVString:UQ,isUSVString:oy,isBlobLike:DQ,parseOrigin:Hw,parseURL:bQ,getServerName:vw,isStream:ds,isIterable:FQ,isAsyncIterable:Ww,isDestroyed:SQ,headerNameToString:NQ,bufferToLowerCasedHeaderName:Zw,addListener:Qy,removeAllListeners:Ey,errorRequest:By,parseRawHeaders:Kw,parseHeaders:_w,parseKeepAliveTimeout:zw,destroy:Pw,bodyLength:RQ,deepClone:qw,ReadableStreamFrom:ty,isBuffer:MQ,validateHandler:Xw,getSocketInfo:Ay,isFormDataLike:ry,buildURL:Jw,addAbortListener:ny,isValidHTTPToken:ay,isValidHeaderValue:gy,isTokenCharCode:LQ,parseRangeHeader:ly,normalizedMethodRecordsBase:Xo,normalizedMethodRecords:xQ,isValidPort:kQ,isHttpOrHttpsPrefixed:hs,nodeMajor:Tw,nodeMinor:xw,safeHTTPMethods:["GET","HEAD","OPTIONS","TRACE"],wrapRequestBody:Yw}});var _t=p((Ax,JQ)=>{"use strict";var $=y("node:diagnostics_channel"),$o=y("node:util"),ws=$o.debuglog("undici"),jo=$o.debuglog("fetch"),Ct=$o.debuglog("websocket"),GQ=!1,uy={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(ws.enabled||jo.enabled){let e=jo.enabled?jo:ws;$.channel("undici:client:beforeConnect").subscribe(A=>{let{connectParams:{version:t,protocol:r,port:n,host:s}}=A;e("connecting to %s using %s%s",`${s}${n?`:${n}`:""}`,r,t)}),$.channel("undici:client:connected").subscribe(A=>{let{connectParams:{version:t,protocol:r,port:n,host:s}}=A;e("connected to %s using %s%s",`${s}${n?`:${n}`:""}`,r,t)}),$.channel("undici:client:connectError").subscribe(A=>{let{connectParams:{version:t,protocol:r,port:n,host:s},error:i}=A;e("connection to %s using %s%s errored - %s",`${s}${n?`:${n}`:""}`,r,t,i.message)}),$.channel("undici:client:sendHeaders").subscribe(A=>{let{request:{method:t,path:r,origin:n}}=A;e("sending request to %s %s/%s",t,n,r)}),$.channel("undici:request:headers").subscribe(A=>{let{request:{method:t,path:r,origin:n},response:{statusCode:s}}=A;e("received response to %s %s/%s - HTTP %d",t,n,r,s)}),$.channel("undici:request:trailers").subscribe(A=>{let{request:{method:t,path:r,origin:n}}=A;e("trailers received from %s %s/%s",t,n,r)}),$.channel("undici:request:error").subscribe(A=>{let{request:{method:t,path:r,origin:n},error:s}=A;e("request to %s %s/%s errored - %s",t,n,r,s.message)}),GQ=!0}if(Ct.enabled){if(!GQ){let e=ws.enabled?ws:Ct;$.channel("undici:client:beforeConnect").subscribe(A=>{let{connectParams:{version:t,protocol:r,port:n,host:s}}=A;e("connecting to %s%s using %s%s",s,n?`:${n}`:"",r,t)}),$.channel("undici:client:connected").subscribe(A=>{let{connectParams:{version:t,protocol:r,port:n,host:s}}=A;e("connected to %s%s using %s%s",s,n?`:${n}`:"",r,t)}),$.channel("undici:client:connectError").subscribe(A=>{let{connectParams:{version:t,protocol:r,port:n,host:s},error:i}=A;e("connection to %s%s using %s%s errored - %s",s,n?`:${n}`:"",r,t,i.message)}),$.channel("undici:client:sendHeaders").subscribe(A=>{let{request:{method:t,path:r,origin:n}}=A;e("sending request to %s %s/%s",t,n,r)})}$.channel("undici:websocket:open").subscribe(e=>{let{address:{address:A,port:t}}=e;Ct("connection opened %s%s",A,t?`:${t}`:"")}),$.channel("undici:websocket:close").subscribe(e=>{let{websocket:A,code:t,reason:r}=e;Ct("closed connection to %s - %s %s",A.url,t,r)}),$.channel("undici:websocket:socket_error").subscribe(e=>{Ct("connection errored - %s",e.message)}),$.channel("undici:websocket:ping").subscribe(e=>{Ct("ping received")}),$.channel("undici:websocket:pong").subscribe(e=>{Ct("pong received")})}JQ.exports={channels:uy}});var qQ=p((tx,vQ)=>{"use strict";var{InvalidArgumentError:re,NotSupportedError:Iy}=Z(),xA=y("node:assert"),{isValidHTTPToken:VQ,isValidHeaderValue:tn,isStream:hy,destroy:Cy,isBuffer:fy,isFormDataLike:dy,isIterable:wy,isBlobLike:yy,buildURL:py,validateHandler:my,getServerName:Dy,normalizedMethodRecords:ky}=v(),{channels:yA}=_t(),{headerNameLowerCasedRecord:HQ}=us(),by=/[^\u0021-\u00ff]/,AA=Symbol("handler"),ea=class{constructor(A,{path:t,method:r,body:n,headers:s,query:i,idempotent:o,blocking:a,upgrade:g,headersTimeout:l,bodyTimeout:c,reset:Q,throwOnError:B,expectContinue:E,servername:u},h){if(typeof t!="string")throw new re("path must be a string");if(t[0]!=="/"&&!(t.startsWith("http://")||t.startsWith("https://"))&&r!=="CONNECT")throw new re("path must be an absolute URL or start with a slash");if(by.test(t))throw new re("invalid request path");if(typeof r!="string")throw new re("method must be a string");if(ky[r]===void 0&&!VQ(r))throw new re("invalid request method");if(g&&typeof g!="string")throw new re("upgrade must be a string");if(g&&!tn(g))throw new re("invalid upgrade header");if(l!=null&&(!Number.isFinite(l)||l<0))throw new re("invalid headersTimeout");if(c!=null&&(!Number.isFinite(c)||c<0))throw new re("invalid bodyTimeout");if(Q!=null&&typeof Q!="boolean")throw new re("invalid reset");if(E!=null&&typeof E!="boolean")throw new re("invalid expectContinue");if(this.headersTimeout=l,this.bodyTimeout=c,this.throwOnError=B===!0,this.method=r,this.abort=null,n==null)this.body=null;else if(hy(n)){this.body=n;let I=this.body._readableState;(!I||!I.autoDestroy)&&(this.endHandler=function(){Cy(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(fy(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(dy(n)||wy(n)||yy(n))this.body=n;else throw new re("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=g||null,this.path=i?py(t,i):t,this.origin=A,this.idempotent=o??(r==="HEAD"||r==="GET"),this.blocking=a??!1,this.reset=Q??null,this.host=null,this.contentLength=null,this.contentType=null,this.headers=[],this.expectContinue=E??!1,Array.isArray(s)){if(s.length%2!==0)throw new re("headers array must be even");for(let I=0;I<s.length;I+=2)ys(this,s[I],s[I+1])}else if(s&&typeof s=="object")if(s[Symbol.iterator])for(let I of s){if(!Array.isArray(I)||I.length!==2)throw new re("headers must be in key-value pair format");ys(this,I[0],I[1])}else{let I=Object.keys(s);for(let C=0;C<I.length;++C)ys(this,I[C],s[I[C]])}else if(s!=null)throw new re("headers must be an object or an array");my(h,r,g),this.servername=u||Dy(this.host),this[AA]=h,yA.create.hasSubscribers&&yA.create.publish({request:this})}onBodySent(A){if(this[AA].onBodySent)try{return this[AA].onBodySent(A)}catch(t){this.abort(t)}}onRequestSent(){if(yA.bodySent.hasSubscribers&&yA.bodySent.publish({request:this}),this[AA].onRequestSent)try{return this[AA].onRequestSent()}catch(A){this.abort(A)}}onConnect(A){if(xA(!this.aborted),xA(!this.completed),this.error)A(this.error);else return this.abort=A,this[AA].onConnect(A)}onResponseStarted(){return this[AA].onResponseStarted?.()}onHeaders(A,t,r,n){xA(!this.aborted),xA(!this.completed),yA.headers.hasSubscribers&&yA.headers.publish({request:this,response:{statusCode:A,headers:t,statusText:n}});try{return this[AA].onHeaders(A,t,r,n)}catch(s){this.abort(s)}}onData(A){xA(!this.aborted),xA(!this.completed);try{return this[AA].onData(A)}catch(t){return this.abort(t),!1}}onUpgrade(A,t,r){return xA(!this.aborted),xA(!this.completed),this[AA].onUpgrade(A,t,r)}onComplete(A){this.onFinally(),xA(!this.aborted),this.completed=!0,yA.trailers.hasSubscribers&&yA.trailers.publish({request:this,trailers:A});try{return this[AA].onComplete(A)}catch(t){this.onError(t)}}onError(A){if(this.onFinally(),yA.error.hasSubscribers&&yA.error.publish({request:this,error:A}),!this.aborted)return this.aborted=!0,this[AA].onError(A)}onFinally(){this.errorHandler&&(this.body.off("error",this.errorHandler),this.errorHandler=null),this.endHandler&&(this.body.off("end",this.endHandler),this.endHandler=null)}addHeader(A,t){return ys(this,A,t),this}};function ys(e,A,t){if(t&&typeof t=="object"&&!Array.isArray(t))throw new re(`invalid ${A} header`);if(t===void 0)return;let r=HQ[A];if(r===void 0&&(r=A.toLowerCase(),HQ[r]===void 0&&!VQ(r)))throw new re("invalid header key");if(Array.isArray(t)){let n=[];for(let s=0;s<t.length;s++)if(typeof t[s]=="string"){if(!tn(t[s]))throw new re(`invalid ${A} header`);n.push(t[s])}else if(t[s]===null)n.push("");else{if(typeof t[s]=="object")throw new re(`invalid ${A} header`);{let i=`${t[s]}`;if(!tn(i))throw new re(`invalid ${A} header`);n.push(i)}}t=n}else if(typeof t=="string"){if(!tn(t))throw new re(`invalid ${A} header`)}else if(t===null)t="";else if(t=`${t}`,!tn(t))throw new re(`invalid ${A} header`);if(r==="host"){if(e.host!==null)throw new re("duplicate host header");if(typeof t!="string")throw new re("invalid host header");e.host=t}else if(r==="content-length"){if(e.contentLength!==null)throw new re("duplicate content-length header");if(e.contentLength=parseInt(t,10),!Number.isFinite(e.contentLength))throw new re("invalid content-length header")}else if(e.contentType===null&&r==="content-type")e.contentType=t,e.headers.push(A,t);else{if(r==="transfer-encoding"||r==="keep-alive"||r==="upgrade")throw new re(`invalid ${r} header`);if(r==="connection"){let n=typeof t=="string"?t.toLowerCase():null;if(n!=="close"&&n!=="keep-alive")throw new re("invalid connection header");n==="close"&&(e.reset=!0)}else{if(r==="expect")throw new Iy("expect header not supported");e.headers.push(A,t)}}}vQ.exports=ea});var rn=p((rx,WQ)=>{"use strict";var Fy=y("node:events"),ps=class extends Fy{dispatch(){throw new Error("not implemented")}close(){throw new Error("not implemented")}destroy(){throw new Error("not implemented")}compose(...A){let t=Array.isArray(A[0])?A[0]:A,r=this.dispatch.bind(this);for(let n of t)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 Aa(this,r)}},Aa=class extends ps{#e=null;#A=null;constructor(A,t){super(),this.#e=A,this.#A=t}dispatch(...A){this.#A(...A)}close(...A){return this.#e.close(...A)}destroy(...A){return this.#e.destroy(...A)}};WQ.exports=ps});var $t=p((nx,PQ)=>{"use strict";var Ry=rn(),{ClientDestroyedError:ta,ClientClosedError:Sy,InvalidArgumentError:Kt}=Z(),{kDestroy:Ny,kClose:My,kClosed:nn,kDestroyed:Xt,kDispatch:ra,kInterceptors:ft}=Qe(),YA=Symbol("onDestroyed"),jt=Symbol("onClosed"),ms=Symbol("Intercepted Dispatch"),na=Symbol("webSocketOptions"),sa=class extends Ry{constructor(A){super(),this[Xt]=!1,this[YA]=null,this[nn]=!1,this[jt]=[],this[na]=A?.webSocket??{}}get webSocketOptions(){return{maxFragments:this[na].maxFragments??131072,maxPayloadSize:this[na].maxPayloadSize??128*1024*1024}}get destroyed(){return this[Xt]}get closed(){return this[nn]}get interceptors(){return this[ft]}set interceptors(A){if(A){for(let t=A.length-1;t>=0;t--)if(typeof this[ft][t]!="function")throw new Kt("interceptor must be an function")}this[ft]=A}close(A){if(A===void 0)return new Promise((r,n)=>{this.close((s,i)=>s?n(s):r(i))});if(typeof A!="function")throw new Kt("invalid callback");if(this[Xt]){queueMicrotask(()=>A(new ta,null));return}if(this[nn]){this[jt]?this[jt].push(A):queueMicrotask(()=>A(null,null));return}this[nn]=!0,this[jt].push(A);let t=()=>{let r=this[jt];this[jt]=null;for(let n=0;n<r.length;n++)r[n](null,null)};this[My]().then(()=>this.destroy()).then(()=>{queueMicrotask(t)})}destroy(A,t){if(typeof A=="function"&&(t=A,A=null),t===void 0)return new Promise((n,s)=>{this.destroy(A,(i,o)=>i?s(i):n(o))});if(typeof t!="function")throw new Kt("invalid callback");if(this[Xt]){this[YA]?this[YA].push(t):queueMicrotask(()=>t(null,null));return}A||(A=new ta),this[Xt]=!0,this[YA]=this[YA]||[],this[YA].push(t);let r=()=>{let n=this[YA];this[YA]=null;for(let s=0;s<n.length;s++)n[s](null,null)};this[Ny](A).then(()=>{queueMicrotask(r)})}[ms](A,t){if(!this[ft]||this[ft].length===0)return this[ms]=this[ra],this[ra](A,t);let r=this[ra].bind(this);for(let n=this[ft].length-1;n>=0;n--)r=this[ft][n](r);return this[ms]=r,r(A,t)}dispatch(A,t){if(!t||typeof t!="object")throw new Kt("handler must be an object");try{if(!A||typeof A!="object")throw new Kt("opts must be an object.");if(this[Xt]||this[YA])throw new ta;if(this[nn])throw new Sy;return this[ms](A,t)}catch(r){if(typeof t.onError!="function")throw new Kt("invalid onError method");return t.onError(r),!1}}};PQ.exports=sa});var Qa=p((sx,_Q)=>{"use strict";var er=0,ia=1e3,oa=(ia>>1)-1,GA,aa=Symbol("kFastTimer"),JA=[],ca=-2,ga=-1,zQ=0,OQ=1;function la(){er+=oa;let e=0,A=JA.length;for(;e<A;){let t=JA[e];t._state===zQ?(t._idleStart=er-oa,t._state=OQ):t._state===OQ&&er>=t._idleStart+t._idleTimeout&&(t._state=ga,t._idleStart=-1,t._onTimeout(t._timerArg)),t._state===ga?(t._state=ca,--A!==0&&(JA[e]=JA[A])):++e}JA.length=A,JA.length!==0&&ZQ()}function ZQ(){GA?GA.refresh():(clearTimeout(GA),GA=setTimeout(la,oa),GA.unref&&GA.unref())}var Ds=class{[aa]=!0;_state=ca;_idleTimeout=-1;_idleStart=-1;_onTimeout;_timerArg;constructor(A,t,r){this._onTimeout=A,this._idleTimeout=t,this._timerArg=r,this.refresh()}refresh(){this._state===ca&&JA.push(this),(!GA||JA.length===1)&&ZQ(),this._state=zQ}clear(){this._state=ga,this._idleStart=-1}};_Q.exports={setTimeout(e,A,t){return A<=ia?setTimeout(e,A,t):new Ds(e,A,t)},clearTimeout(e){e[aa]?e.clear():clearTimeout(e)},setFastTimeout(e,A,t){return new Ds(e,A,t)},clearFastTimeout(e){e.clear()},now(){return er},tick(e=0){er+=e-ia+1,la(),la()},reset(){er=0,JA.length=0,clearTimeout(GA),GA=null},kFastTimer:aa}});var sn=p((ax,eE)=>{"use strict";var Uy=y("node:net"),KQ=y("node:assert"),$Q=v(),{InvalidArgumentError:Ly,ConnectTimeoutError:Ty}=Z(),ks=Qa();function XQ(){}var Ea,Ba;global.FinalizationRegistry&&!(process.env.NODE_V8_COVERAGE||process.env.UNDICI_NO_FG)?Ba=class{constructor(A){this._maxCachedSessions=A,this._sessionCache=new Map,this._sessionRegistry=new global.FinalizationRegistry(t=>{if(this._sessionCache.size<this._maxCachedSessions)return;let r=this._sessionCache.get(t);r!==void 0&&r.deref()===void 0&&this._sessionCache.delete(t)})}get(A){let t=this._sessionCache.get(A);return t?t.deref():null}set(A,t){this._maxCachedSessions!==0&&(this._sessionCache.set(A,new WeakRef(t)),this._sessionRegistry.register(t,A))}}:Ba=class{constructor(A){this._maxCachedSessions=A,this._sessionCache=new Map}get(A){return this._sessionCache.get(A)}set(A,t){if(this._maxCachedSessions!==0){if(this._sessionCache.size>=this._maxCachedSessions){let{value:r}=this._sessionCache.keys().next();this._sessionCache.delete(r)}this._sessionCache.set(A,t)}}};function xy({allowH2:e,maxCachedSessions:A,socketPath:t,timeout:r,session:n,...s}){if(A!=null&&(!Number.isInteger(A)||A<0))throw new Ly("maxCachedSessions must be a positive integer or zero");let i={path:t,...s},o=new Ba(A??100);return r=r??1e4,e=e??!1,function({hostname:g,host:l,protocol:c,port:Q,servername:B,localAddress:E,httpSocket:u},h){let I;if(c==="https:"){Ea||(Ea=y("node:tls")),B=B||i.servername||$Q.getServerName(l)||null;let D=B||g;KQ(D);let f=n||o.get(D)||null;Q=Q||443,I=Ea.connect({highWaterMark:16384,...i,servername:B,session:f,localAddress:E,ALPNProtocols:e?["http/1.1","h2"]:["http/1.1"],socket:u,port:Q,host:g}),I.on("session",function(R){o.set(D,R)})}else KQ(!u,"httpSocket can only be sent on TLS update"),Q=Q||80,I=Uy.connect({highWaterMark:64*1024,...i,localAddress:E,port:Q,host:g});if(i.keepAlive==null||i.keepAlive){let D=i.keepAliveInitialDelay===void 0?6e4:i.keepAliveInitialDelay;I.setKeepAlive(!0,D)}let C=Yy(new WeakRef(I),{timeout:r,hostname:g,port:Q});return I.setNoDelay(!0).once(c==="https:"?"secureConnect":"connect",function(){if(queueMicrotask(C),h){let D=h;h=null,D(null,this)}}).on("error",function(D){if(queueMicrotask(C),h){let f=h;h=null,f(D)}}),I}}var Yy=process.platform==="win32"?(e,A)=>{if(!A.timeout)return XQ;let t=null,r=null,n=ks.setFastTimeout(()=>{t=setImmediate(()=>{r=setImmediate(()=>jQ(e.deref(),A))})},A.timeout);return()=>{ks.clearFastTimeout(n),clearImmediate(t),clearImmediate(r)}}:(e,A)=>{if(!A.timeout)return XQ;let t=null,r=ks.setFastTimeout(()=>{t=setImmediate(()=>{jQ(e.deref(),A)})},A.timeout);return()=>{ks.clearFastTimeout(r),clearImmediate(t)}};function jQ(e,A){if(e==null)return;let t="Connect Timeout Error";Array.isArray(e.autoSelectFamilyAttemptedAddresses)?t+=` (attempted addresses: ${e.autoSelectFamilyAttemptedAddresses.join(", ")},`:t+=` (attempted address: ${A.hostname}:${A.port},`,t+=` timeout: ${A.timeout}ms)`,$Q.destroy(e,new Ty(t))}eE.exports=xy});var AE=p(bs=>{"use strict";Object.defineProperty(bs,"__esModule",{value:!0});bs.enumToMap=void 0;function Gy(e){let A={};return Object.keys(e).forEach(t=>{let r=e[t];typeof r=="number"&&(A[t]=r)}),A}bs.enumToMap=Gy});var tE=p(b=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});b.SPECIAL_HEADERS=b.HEADER_STATE=b.MINOR=b.MAJOR=b.CONNECTION_TOKEN_CHARS=b.HEADER_CHARS=b.TOKEN=b.STRICT_TOKEN=b.HEX=b.URL_CHAR=b.STRICT_URL_CHAR=b.USERINFO_CHARS=b.MARK=b.ALPHANUM=b.NUM=b.HEX_MAP=b.NUM_MAP=b.ALPHA=b.FINISH=b.H_METHOD_MAP=b.METHOD_MAP=b.METHODS_RTSP=b.METHODS_ICE=b.METHODS_HTTP=b.METHODS=b.LENIENT_FLAGS=b.FLAGS=b.TYPE=b.ERROR=void 0;var Jy=AE(),Hy;(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"})(Hy=b.ERROR||(b.ERROR={}));var Vy;(function(e){e[e.BOTH=0]="BOTH",e[e.REQUEST=1]="REQUEST",e[e.RESPONSE=2]="RESPONSE"})(Vy=b.TYPE||(b.TYPE={}));var vy;(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"})(vy=b.FLAGS||(b.FLAGS={}));var qy;(function(e){e[e.HEADERS=1]="HEADERS",e[e.CHUNKED_LENGTH=2]="CHUNKED_LENGTH",e[e.KEEP_ALIVE=4]="KEEP_ALIVE"})(qy=b.LENIENT_FLAGS||(b.LENIENT_FLAGS={}));var L;(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"})(L=b.METHODS||(b.METHODS={}));b.METHODS_HTTP=[L.DELETE,L.GET,L.HEAD,L.POST,L.PUT,L.CONNECT,L.OPTIONS,L.TRACE,L.COPY,L.LOCK,L.MKCOL,L.MOVE,L.PROPFIND,L.PROPPATCH,L.SEARCH,L.UNLOCK,L.BIND,L.REBIND,L.UNBIND,L.ACL,L.REPORT,L.MKACTIVITY,L.CHECKOUT,L.MERGE,L["M-SEARCH"],L.NOTIFY,L.SUBSCRIBE,L.UNSUBSCRIBE,L.PATCH,L.PURGE,L.MKCALENDAR,L.LINK,L.UNLINK,L.PRI,L.SOURCE];b.METHODS_ICE=[L.SOURCE];b.METHODS_RTSP=[L.OPTIONS,L.DESCRIBE,L.ANNOUNCE,L.SETUP,L.PLAY,L.PAUSE,L.TEARDOWN,L.GET_PARAMETER,L.SET_PARAMETER,L.REDIRECT,L.RECORD,L.FLUSH,L.GET,L.POST];b.METHOD_MAP=Jy.enumToMap(L);b.H_METHOD_MAP={};Object.keys(b.METHOD_MAP).forEach(e=>{/^H/.test(e)&&(b.H_METHOD_MAP[e]=b.METHOD_MAP[e])});var Wy;(function(e){e[e.SAFE=0]="SAFE",e[e.SAFE_WITH_CB=1]="SAFE_WITH_CB",e[e.UNSAFE=2]="UNSAFE"})(Wy=b.FINISH||(b.FINISH={}));b.ALPHA=[];for(let e=65;e<=90;e++)b.ALPHA.push(String.fromCharCode(e)),b.ALPHA.push(String.fromCharCode(e+32));b.NUM_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9};b.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};b.NUM=["0","1","2","3","4","5","6","7","8","9"];b.ALPHANUM=b.ALPHA.concat(b.NUM);b.MARK=["-","_",".","!","~","*","'","(",")"];b.USERINFO_CHARS=b.ALPHANUM.concat(b.MARK).concat(["%",";",":","&","=","+","$",","]);b.STRICT_URL_CHAR=["!",'"',"$","%","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","@","[","\\","]","^","_","`","{","|","}","~"].concat(b.ALPHANUM);b.URL_CHAR=b.STRICT_URL_CHAR.concat([" ","\f"]);for(let e=128;e<=255;e++)b.URL_CHAR.push(e);b.HEX=b.NUM.concat(["a","b","c","d","e","f","A","B","C","D","E","F"]);b.STRICT_TOKEN=["!","#","$","%","&","'","*","+","-",".","^","_","`","|","~"].concat(b.ALPHANUM);b.TOKEN=b.STRICT_TOKEN.concat([" "]);b.HEADER_CHARS=[" "];for(let e=32;e<=255;e++)e!==127&&b.HEADER_CHARS.push(e);b.CONNECTION_TOKEN_CHARS=b.HEADER_CHARS.filter(e=>e!==44);b.MAJOR=b.NUM_MAP;b.MINOR=b.MAJOR;var Ar;(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"})(Ar=b.HEADER_STATE||(b.HEADER_STATE={}));b.SPECIAL_HEADERS={connection:Ar.CONNECTION,"content-length":Ar.CONTENT_LENGTH,"proxy-connection":Ar.CONNECTION,"transfer-encoding":Ar.TRANSFER_ENCODING,upgrade:Ar.UPGRADE}});var ua=p((lx,rE)=>{"use strict";var{Buffer:Py}=y("node:buffer");rE.exports=Py.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((Qx,nE)=>{"use strict";var{Buffer:Oy}=y("node:buffer");nE.exports=Oy.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADDsYBAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHyAhIyUmKCorLC8wMTIzNDU2Nzk6Ozw9lANAQkRFRklLTk9QUVJTVFVWWFpbXF1eX2BhYmNkZWZnaGpsb3Bxc3V2eHl6e3x/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcsBzAHNAc4BzwGKA4kDiAOHA4QDgwOAA/sC+gL5AvgC9wL0AvMC8gLLAsECsALZAQsgASAERw3wAkHdASEDDLMDCyABIARHDcgBQcMBIQMMsgMLIAEgBEcNe0H3ACEDDLEDCyABIARHDXBB7wAhAwywAwsgASAERw1pQeoAIQMMrwMLIAEgBEcNZUHoACEDDK4DCyABIARHDWJB5gAhAwytAwsgASAERw0aQRghAwysAwsgASAERw0VQRIhAwyrAwsgASAERw1CQcUAIQMMqgMLIAEgBEcNNEE/IQMMqQMLIAEgBEcNMkE8IQMMqAMLIAEgBEcNK0ExIQMMpwMLIAItAC5BAUYNnwMMwQILQQAhAAJAAkACQCACLQAqRQ0AIAItACtFDQAgAi8BMCIDQQJxRQ0BDAILIAIvATAiA0EBcUUNAQtBASEAIAItAChBAUYNACACLwEyIgVB5ABrQeQASQ0AIAVBzAFGDQAgBUGwAkYNACADQcAAcQ0AQQAhACADQYgEcUGABEYNACADQShxQQBHIQALIAJBADsBMCACQQA6AC8gAEUN3wIgAkIANwMgDOACC0EAIQACQCACKAI4IgNFDQAgAygCLCIDRQ0AIAIgAxEAACEACyAARQ3MASAAQRVHDd0CIAJBBDYCHCACIAE2AhQgAkGwGDYCECACQRU2AgxBACEDDKQDCyABIARGBEBBBiEDDKQDCyABQQFqIQFBACEAAkAgAigCOCIDRQ0AIAMoAlQiA0UNACACIAMRAAAhAAsgAA3ZAgwcCyACQgA3AyBBEiEDDIkDCyABIARHDRZBHSEDDKEDCyABIARHBEAgAUEBaiEBQRAhAwyIAwtBByEDDKADCyACIAIpAyAiCiAEIAFrrSILfSIMQgAgCiAMWhs3AyAgCiALWA3UAkEIIQMMnwMLIAEgBEcEQCACQQk2AgggAiABNgIEQRQhAwyGAwtBCSEDDJ4DCyACKQMgQgBSDccBIAIgAi8BMEGAAXI7ATAMQgsgASAERw0/QdAAIQMMnAMLIAEgBEYEQEELIQMMnAMLIAFBAWohAUEAIQACQCACKAI4IgNFDQAgAygCUCIDRQ0AIAIgAxEAACEACyAADc8CDMYBC0EAIQACQCACKAI4IgNFDQAgAygCSCIDRQ0AIAIgAxEAACEACyAARQ3GASAAQRVHDc0CIAJBCzYCHCACIAE2AhQgAkGCGTYCECACQRU2AgxBACEDDJoDC0EAIQACQCACKAI4IgNFDQAgAygCSCIDRQ0AIAIgAxEAACEACyAARQ0MIABBFUcNygIgAkEaNgIcIAIgATYCFCACQYIZNgIQIAJBFTYCDEEAIQMMmQMLQQAhAAJAIAIoAjgiA0UNACADKAJMIgNFDQAgAiADEQAAIQALIABFDcQBIABBFUcNxwIgAkELNgIcIAIgATYCFCACQZEXNgIQIAJBFTYCDEEAIQMMmAMLIAEgBEYEQEEPIQMMmAMLIAEtAAAiAEE7Rg0HIABBDUcNxAIgAUEBaiEBDMMBC0EAIQACQCACKAI4IgNFDQAgAygCTCIDRQ0AIAIgAxEAACEACyAARQ3DASAAQRVHDcICIAJBDzYCHCACIAE2AhQgAkGRFzYCECACQRU2AgxBACEDDJYDCwNAIAEtAABB8DVqLQAAIgBBAUcEQCAAQQJHDcECIAIoAgQhAEEAIQMgAkEANgIEIAIgACABQQFqIgEQLSIADcICDMUBCyAEIAFBAWoiAUcNAAtBEiEDDJUDC0EAIQACQCACKAI4IgNFDQAgAygCTCIDRQ0AIAIgAxEAACEACyAARQ3FASAAQRVHDb0CIAJBGzYCHCACIAE2AhQgAkGRFzYCECACQRU2AgxBACEDDJQDCyABIARGBEBBFiEDDJQDCyACQQo2AgggAiABNgIEQQAhAAJAIAIoAjgiA0UNACADKAJIIgNFDQAgAiADEQAAIQALIABFDcIBIABBFUcNuQIgAkEVNgIcIAIgATYCFCACQYIZNgIQIAJBFTYCDEEAIQMMkwMLIAEgBEcEQANAIAEtAABB8DdqLQAAIgBBAkcEQAJAIABBAWsOBMQCvQIAvgK9AgsgAUEBaiEBQQghAwz8AgsgBCABQQFqIgFHDQALQRUhAwyTAwtBFSEDDJIDCwNAIAEtAABB8DlqLQAAIgBBAkcEQCAAQQFrDgTFArcCwwK4ArcCCyAEIAFBAWoiAUcNAAtBGCEDDJEDCyABIARHBEAgAkELNgIIIAIgATYCBEEHIQMM+AILQRkhAwyQAwsgAUEBaiEBDAILIAEgBEYEQEEaIQMMjwMLAkAgAS0AAEENaw4UtQG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwEAvwELQQAhAyACQQA2AhwgAkGvCzYCECACQQI2AgwgAiABQQFqNgIUDI4DCyABIARGBEBBGyEDDI4DCyABLQAAIgBBO0cEQCAAQQ1HDbECIAFBAWohAQy6AQsgAUEBaiEBC0EiIQMM8wILIAEgBEYEQEEcIQMMjAMLQgAhCgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AAEEwaw43wQLAAgABAgMEBQYH0AHQAdAB0AHQAdAB0AEICQoLDA3QAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdABDg8QERIT0AELQgIhCgzAAgtCAyEKDL8CC0IEIQoMvgILQgUhCgy9AgtCBiEKDLwCC0IHIQoMuwILQgghCgy6AgtCCSEKDLkCC0IKIQoMuAILQgshCgy3AgtCDCEKDLYCC0INIQoMtQILQg4hCgy0AgtCDyEKDLMCC0IKIQoMsgILQgshCgyxAgtCDCEKDLACC0INIQoMrwILQg4hCgyuAgtCDyEKDK0CC0IAIQoCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtAABBMGsON8ACvwIAAQIDBAUGB74CvgK+Ar4CvgK+Ar4CCAkKCwwNvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ag4PEBESE74CC0ICIQoMvwILQgMhCgy+AgtCBCEKDL0CC0IFIQoMvAILQgYhCgy7AgtCByEKDLoCC0IIIQoMuQILQgkhCgy4AgtCCiEKDLcCC0ILIQoMtgILQgwhCgy1AgtCDSEKDLQCC0IOIQoMswILQg8hCgyyAgtCCiEKDLECC0ILIQoMsAILQgwhCgyvAgtCDSEKDK4CC0IOIQoMrQILQg8hCgysAgsgAiACKQMgIgogBCABa60iC30iDEIAIAogDFobNwMgIAogC1gNpwJBHyEDDIkDCyABIARHBEAgAkEJNgIIIAIgATYCBEElIQMM8AILQSAhAwyIAwtBASEFIAIvATAiA0EIcUUEQCACKQMgQgBSIQULAkAgAi0ALgRAQQEhACACLQApQQVGDQEgA0HAAHFFIAVxRQ0BC0EAIQAgA0HAAHENAEECIQAgA0EIcQ0AIANBgARxBEACQCACLQAoQQFHDQAgAi0ALUEKcQ0AQQUhAAwCC0EEIQAMAQsgA0EgcUUEQAJAIAItAChBAUYNACACLwEyIgBB5ABrQeQASQ0AIABBzAFGDQAgAEGwAkYNAEEEIQAgA0EocUUNAiADQYgEcUGABEYNAgtBACEADAELQQBBAyACKQMgUBshAAsgAEEBaw4FvgIAsAEBpAKhAgtBESEDDO0CCyACQQE6AC8MhAMLIAEgBEcNnQJBJCEDDIQDCyABIARHDRxBxgAhAwyDAwtBACEAAkAgAigCOCIDRQ0AIAMoAkQiA0UNACACIAMRAAAhAAsgAEUNJyAAQRVHDZgCIAJB0AA2AhwgAiABNgIUIAJBkRg2AhAgAkEVNgIMQQAhAwyCAwsgASAERgRAQSghAwyCAwtBACEDIAJBADYCBCACQQw2AgggAiABIAEQKiIARQ2UAiACQSc2AhwgAiABNgIUIAIgADYCDAyBAwsgASAERgRAQSkhAwyBAwsgAS0AACIAQSBGDRMgAEEJRw2VAiABQQFqIQEMFAsgASAERwRAIAFBAWohAQwWC0EqIQMM/wILIAEgBEYEQEErIQMM/wILIAEtAAAiAEEJRyAAQSBHcQ2QAiACLQAsQQhHDd0CIAJBADoALAzdAgsgASAERgRAQSwhAwz+AgsgAS0AAEEKRw2OAiABQQFqIQEMsAELIAEgBEcNigJBLyEDDPwCCwNAIAEtAAAiAEEgRwRAIABBCmsOBIQCiAKIAoQChgILIAQgAUEBaiIBRw0AC0ExIQMM+wILQTIhAyABIARGDfoCIAIoAgAiACAEIAFraiEHIAEgAGtBA2ohBgJAA0AgAEHwO2otAAAgAS0AACIFQSByIAUgBUHBAGtB/wFxQRpJG0H/AXFHDQEgAEEDRgRAQQYhAQziAgsgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAc2AgAM+wILIAJBADYCAAyGAgtBMyEDIAQgASIARg35AiAEIAFrIAIoAgAiAWohByAAIAFrQQhqIQYCQANAIAFB9DtqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw0BIAFBCEYEQEEFIQEM4QILIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADPoCCyACQQA2AgAgACEBDIUCC0E0IQMgBCABIgBGDfgCIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgJAA0AgAUHQwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw0BIAFBBUYEQEEHIQEM4AILIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADPkCCyACQQA2AgAgACEBDIQCCyABIARHBEADQCABLQAAQYA+ai0AACIAQQFHBEAgAEECRg0JDIECCyAEIAFBAWoiAUcNAAtBMCEDDPgCC0EwIQMM9wILIAEgBEcEQANAIAEtAAAiAEEgRwRAIABBCmsOBP8B/gH+Af8B/gELIAQgAUEBaiIBRw0AC0E4IQMM9wILQTghAwz2AgsDQCABLQAAIgBBIEcgAEEJR3EN9gEgBCABQQFqIgFHDQALQTwhAwz1AgsDQCABLQAAIgBBIEcEQAJAIABBCmsOBPkBBAT5AQALIABBLEYN9QEMAwsgBCABQQFqIgFHDQALQT8hAwz0AgtBwAAhAyABIARGDfMCIAIoAgAiACAEIAFraiEFIAEgAGtBBmohBgJAA0AgAEGAQGstAAAgAS0AAEEgckcNASAAQQZGDdsCIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADPQCCyACQQA2AgALQTYhAwzZAgsgASAERgRAQcEAIQMM8gILIAJBDDYCCCACIAE2AgQgAi0ALEEBaw4E+wHuAewB6wHUAgsgAUEBaiEBDPoBCyABIARHBEADQAJAIAEtAAAiAEEgciAAIABBwQBrQf8BcUEaSRtB/wFxIgBBCUYNACAAQSBGDQACQAJAAkACQCAAQeMAaw4TAAMDAwMDAwMBAwMDAwMDAwMDAgMLIAFBAWohAUExIQMM3AILIAFBAWohAUEyIQMM2wILIAFBAWohAUEzIQMM2gILDP4BCyAEIAFBAWoiAUcNAAtBNSEDDPACC0E1IQMM7wILIAEgBEcEQANAIAEtAABBgDxqLQAAQQFHDfcBIAQgAUEBaiIBRw0AC0E9IQMM7wILQT0hAwzuAgtBACEAAkAgAigCOCIDRQ0AIAMoAkAiA0UNACACIAMRAAAhAAsgAEUNASAAQRVHDeYBIAJBwgA2AhwgAiABNgIUIAJB4xg2AhAgAkEVNgIMQQAhAwztAgsgAUEBaiEBC0E8IQMM0gILIAEgBEYEQEHCACEDDOsCCwJAA0ACQCABLQAAQQlrDhgAAswCzALRAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAgDMAgsgBCABQQFqIgFHDQALQcIAIQMM6wILIAFBAWohASACLQAtQQFxRQ3+AQtBLCEDDNACCyABIARHDd4BQcQAIQMM6AILA0AgAS0AAEGQwABqLQAAQQFHDZwBIAQgAUEBaiIBRw0AC0HFACEDDOcCCyABLQAAIgBBIEYN/gEgAEE6Rw3AAiACKAIEIQBBACEDIAJBADYCBCACIAAgARApIgAN3gEM3QELQccAIQMgBCABIgBGDeUCIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgNAIAFBkMIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNvwIgAUEFRg3CAiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBzYCAAzlAgtByAAhAyAEIAEiAEYN5AIgBCABayACKAIAIgFqIQcgACABa0EJaiEGA0AgAUGWwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw2+AkECIAFBCUYNwgIaIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADOQCCyABIARGBEBByQAhAwzkAgsCQAJAIAEtAAAiAEEgciAAIABBwQBrQf8BcUEaSRtB/wFxQe4Aaw4HAL8CvwK/Ar8CvwIBvwILIAFBAWohAUE+IQMMywILIAFBAWohAUE/IQMMygILQcoAIQMgBCABIgBGDeICIAQgAWsgAigCACIBaiEGIAAgAWtBAWohBwNAIAFBoMIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNvAIgAUEBRg2+AiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBjYCAAziAgtBywAhAyAEIAEiAEYN4QIgBCABayACKAIAIgFqIQcgACABa0EOaiEGA0AgAUGiwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw27AiABQQ5GDb4CIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADOECC0HMACEDIAQgASIARg3gAiAEIAFrIAIoAgAiAWohByAAIAFrQQ9qIQYDQCABQcDCAGotAAAgAC0AACIFQSByIAUgBUHBAGtB/wFxQRpJG0H/AXFHDboCQQMgAUEPRg2+AhogAUEBaiEBIAQgAEEBaiIARw0ACyACIAc2AgAM4AILQc0AIQMgBCABIgBGDd8CIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgNAIAFB0MIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNuQJBBCABQQVGDb0CGiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBzYCAAzfAgsgASAERgRAQc4AIQMM3wILAkACQAJAAkAgAS0AACIAQSByIAAgAEHBAGtB/wFxQRpJG0H/AXFB4wBrDhMAvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCAbwCvAK8AgIDvAILIAFBAWohAUHBACEDDMgCCyABQQFqIQFBwgAhAwzHAgsgAUEBaiEBQcMAIQMMxgILIAFBAWohAUHEACEDDMUCCyABIARHBEAgAkENNgIIIAIgATYCBEHFACEDDMUCC0HPACEDDN0CCwJAAkAgAS0AAEEKaw4EAZABkAEAkAELIAFBAWohAQtBKCEDDMMCCyABIARGBEBB0QAhAwzcAgsgAS0AAEEgRw0AIAFBAWohASACLQAtQQFxRQ3QAQtBFyEDDMECCyABIARHDcsBQdIAIQMM2QILQdMAIQMgASAERg3YAiACKAIAIgAgBCABa2ohBiABIABrQQFqIQUDQCABLQAAIABB1sIAai0AAEcNxwEgAEEBRg3KASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBjYCAAzYAgsgASAERgRAQdUAIQMM2AILIAEtAABBCkcNwgEgAUEBaiEBDMoBCyABIARGBEBB1gAhAwzXAgsCQAJAIAEtAABBCmsOBADDAcMBAcMBCyABQQFqIQEMygELIAFBAWohAUHKACEDDL0CC0EAIQACQCACKAI4IgNFDQAgAygCPCIDRQ0AIAIgAxEAACEACyAADb8BQc0AIQMMvAILIAItAClBIkYNzwIMiQELIAQgASIFRgRAQdsAIQMM1AILQQAhAEEBIQFBASEGQQAhAwJAAn8CQAJAAkACQAJAAkACQCAFLQAAQTBrDgrFAcQBAAECAwQFBgjDAQtBAgwGC0EDDAULQQQMBAtBBQwDC0EGDAILQQcMAQtBCAshA0EAIQFBACEGDL0BC0EJIQNBASEAQQAhAUEAIQYMvAELIAEgBEYEQEHdACEDDNMCCyABLQAAQS5HDbgBIAFBAWohAQyIAQsgASAERw22AUHfACEDDNECCyABIARHBEAgAkEONgIIIAIgATYCBEHQACEDDLgCC0HgACEDDNACC0HhACEDIAEgBEYNzwIgAigCACIAIAQgAWtqIQUgASAAa0EDaiEGA0AgAS0AACAAQeLCAGotAABHDbEBIABBA0YNswEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMzwILQeIAIQMgASAERg3OAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYDQCABLQAAIABB5sIAai0AAEcNsAEgAEECRg2vASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAzOAgtB4wAhAyABIARGDc0CIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgNAIAEtAAAgAEHpwgBqLQAARw2vASAAQQNGDa0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADM0CCyABIARGBEBB5QAhAwzNAgsgAUEBaiEBQQAhAAJAIAIoAjgiA0UNACADKAIwIgNFDQAgAiADEQAAIQALIAANqgFB1gAhAwyzAgsgASAERwRAA0AgAS0AACIAQSBHBEACQAJAAkAgAEHIAGsOCwABswGzAbMBswGzAbMBswGzAQKzAQsgAUEBaiEBQdIAIQMMtwILIAFBAWohAUHTACEDDLYCCyABQQFqIQFB1AAhAwy1AgsgBCABQQFqIgFHDQALQeQAIQMMzAILQeQAIQMMywILA0AgAS0AAEHwwgBqLQAAIgBBAUcEQCAAQQJrDgOnAaYBpQGkAQsgBCABQQFqIgFHDQALQeYAIQMMygILIAFBAWogASAERw0CGkHnACEDDMkCCwNAIAEtAABB8MQAai0AACIAQQFHBEACQCAAQQJrDgSiAaEBoAEAnwELQdcAIQMMsQILIAQgAUEBaiIBRw0AC0HoACEDDMgCCyABIARGBEBB6QAhAwzIAgsCQCABLQAAIgBBCmsOGrcBmwGbAbQBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBpAGbAZsBAJkBCyABQQFqCyEBQQYhAwytAgsDQCABLQAAQfDGAGotAABBAUcNfSAEIAFBAWoiAUcNAAtB6gAhAwzFAgsgAUEBaiABIARHDQIaQesAIQMMxAILIAEgBEYEQEHsACEDDMQCCyABQQFqDAELIAEgBEYEQEHtACEDDMMCCyABQQFqCyEBQQQhAwyoAgsgASAERgRAQe4AIQMMwQILAkACQAJAIAEtAABB8MgAai0AAEEBaw4HkAGPAY4BAHwBAo0BCyABQQFqIQEMCwsgAUEBagyTAQtBACEDIAJBADYCHCACQZsSNgIQIAJBBzYCDCACIAFBAWo2AhQMwAILAkADQCABLQAAQfDIAGotAAAiAEEERwRAAkACQCAAQQFrDgeUAZMBkgGNAQAEAY0BC0HaACEDDKoCCyABQQFqIQFB3AAhAwypAgsgBCABQQFqIgFHDQALQe8AIQMMwAILIAFBAWoMkQELIAQgASIARgRAQfAAIQMMvwILIAAtAABBL0cNASAAQQFqIQEMBwsgBCABIgBGBEBB8QAhAwy+AgsgAC0AACIBQS9GBEAgAEEBaiEBQd0AIQMMpQILIAFBCmsiA0EWSw0AIAAhAUEBIAN0QYmAgAJxDfkBC0EAIQMgAkEANgIcIAIgADYCFCACQYwcNgIQIAJBBzYCDAy8AgsgASAERwRAIAFBAWohAUHeACEDDKMCC0HyACEDDLsCCyABIARGBEBB9AAhAwy7AgsCQCABLQAAQfDMAGotAABBAWsOA/cBcwCCAQtB4QAhAwyhAgsgASAERwRAA0AgAS0AAEHwygBqLQAAIgBBA0cEQAJAIABBAWsOAvkBAIUBC0HfACEDDKMCCyAEIAFBAWoiAUcNAAtB8wAhAwy6AgtB8wAhAwy5AgsgASAERwRAIAJBDzYCCCACIAE2AgRB4AAhAwygAgtB9QAhAwy4AgsgASAERgRAQfYAIQMMuAILIAJBDzYCCCACIAE2AgQLQQMhAwydAgsDQCABLQAAQSBHDY4CIAQgAUEBaiIBRw0AC0H3ACEDDLUCCyABIARGBEBB+AAhAwy1AgsgAS0AAEEgRw16IAFBAWohAQxbC0EAIQACQCACKAI4IgNFDQAgAygCOCIDRQ0AIAIgAxEAACEACyAADXgMgAILIAEgBEYEQEH6ACEDDLMCCyABLQAAQcwARw10IAFBAWohAUETDHYLQfsAIQMgASAERg2xAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYDQCABLQAAIABB8M4Aai0AAEcNcyAAQQVGDXUgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMsQILIAEgBEYEQEH8ACEDDLECCwJAAkAgAS0AAEHDAGsODAB0dHR0dHR0dHR0AXQLIAFBAWohAUHmACEDDJgCCyABQQFqIQFB5wAhAwyXAgtB/QAhAyABIARGDa8CIAIoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQe3PAGotAABHDXIgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADLACCyACQQA2AgAgBkEBaiEBQRAMcwtB/gAhAyABIARGDa4CIAIoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQfbOAGotAABHDXEgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADK8CCyACQQA2AgAgBkEBaiEBQRYMcgtB/wAhAyABIARGDa0CIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQfzOAGotAABHDXAgAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADK4CCyACQQA2AgAgBkEBaiEBQQUMcQsgASAERgRAQYABIQMMrQILIAEtAABB2QBHDW4gAUEBaiEBQQgMcAsgASAERgRAQYEBIQMMrAILAkACQCABLQAAQc4Aaw4DAG8BbwsgAUEBaiEBQesAIQMMkwILIAFBAWohAUHsACEDDJICCyABIARGBEBBggEhAwyrAgsCQAJAIAEtAABByABrDggAbm5ubm5uAW4LIAFBAWohAUHqACEDDJICCyABQQFqIQFB7QAhAwyRAgtBgwEhAyABIARGDakCIAIoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQYDPAGotAABHDWwgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADKoCCyACQQA2AgAgBkEBaiEBQQAMbQtBhAEhAyABIARGDagCIAIoAgAiACAEIAFraiEFIAEgAGtBBGohBgJAA0AgAS0AACAAQYPPAGotAABHDWsgAEEERg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADKkCCyACQQA2AgAgBkEBaiEBQSMMbAsgASAERgRAQYUBIQMMqAILAkACQCABLQAAQcwAaw4IAGtra2trawFrCyABQQFqIQFB7wAhAwyPAgsgAUEBaiEBQfAAIQMMjgILIAEgBEYEQEGGASEDDKcCCyABLQAAQcUARw1oIAFBAWohAQxgC0GHASEDIAEgBEYNpQIgAigCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBiM8Aai0AAEcNaCAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMpgILIAJBADYCACAGQQFqIQFBLQxpC0GIASEDIAEgBEYNpAIgAigCACIAIAQgAWtqIQUgASAAa0EIaiEGAkADQCABLQAAIABB0M8Aai0AAEcNZyAAQQhGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMpQILIAJBADYCACAGQQFqIQFBKQxoCyABIARGBEBBiQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB9ysPC0GQMQ8LQdcxDwtBoi0PC0HUJw8LQeArDwtBnywPC0HrMQ8LQdUfDwtByjEPC0HeJQ8LQdQeDwtB9BwPC0GnMg8LQbEdDwtBoB0PC0G5MQ8LQbwwDwtBkiEPC0GzJg8LQeksDwtBrB4PC0HUKw8LQfcmDwtBgCYPC0GwIQ8LQf4eDwtBjSMPC0GJLQ8LQfciDwtBoDEPC0GuHw8LQcYlDwtB6B4PC0GTIg8LQcIvDwtBwx0PC0GLLA8LQeEdDwtBjS8PC0HqIQ8LQbQtDwtB0i8PC0HfMg8LQdIyDwtB8DAPC0GpIg8LQfkjDwtBmR4PC0G1LA8LQZswDwtBkjIPC0G2Kw8LQcIiDwtB+DIPC0GeJQ8LQdAiDwtBuh4PC0GBHg8LAAtB1iEhAQsgAQsWACAAIAAtAC1B/gFxIAFBAEdyOgAtCxkAIAAgAC0ALUH9AXEgAUEAR0EBdHI6AC0LGQAgACAALQAtQfsBcSABQQBHQQJ0cjoALQsZACAAIAAtAC1B9wFxIAFBAEdBA3RyOgAtCz4BAn8CQCAAKAI4IgNFDQAgAygCBCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBxhE2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCCCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB9go2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCDCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB7Ro2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCECIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBlRA2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCFCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBqhs2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCGCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB7RM2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCKCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB9gg2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCHCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBwhk2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCICIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBlBQ2AhBBGCEECyAEC1kBAn8CQCAALQAoQQFGDQAgAC8BMiIBQeQAa0HkAEkNACABQcwBRg0AIAFBsAJGDQAgAC8BMCIAQcAAcQ0AQQEhAiAAQYgEcUGABEYNACAAQShxRSECCyACC4wBAQJ/AkACQAJAIAAtACpFDQAgAC0AK0UNACAALwEwIgFBAnFFDQEMAgsgAC8BMCIBQQFxRQ0BC0EBIQIgAC0AKEEBRg0AIAAvATIiAEHkAGtB5ABJDQAgAEHMAUYNACAAQbACRg0AIAFBwABxDQBBACECIAFBiARxQYAERg0AIAFBKHFBAEchAgsgAgtzACAAQRBq/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAA/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAAQTBq/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAAQSBq/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAAQd0BNgIcCwYAIAAQMguaLQELfyMAQRBrIgokAEGk0AAoAgAiCUUEQEHk0wAoAgAiBUUEQEHw0wBCfzcCAEHo0wBCgICEgICAwAA3AgBB5NMAIApBCGpBcHFB2KrVqgVzIgU2AgBB+NMAQQA2AgBByNMAQQA2AgALQczTAEGA1AQ2AgBBnNAAQYDUBDYCAEGw0AAgBTYCAEGs0ABBfzYCAEHQ0wBBgKwDNgIAA0AgAUHI0ABqIAFBvNAAaiICNgIAIAIgAUG00ABqIgM2AgAgAUHA0ABqIAM2AgAgAUHQ0ABqIAFBxNAAaiIDNgIAIAMgAjYCACABQdjQAGogAUHM0ABqIgI2AgAgAiADNgIAIAFB1NAAaiACNgIAIAFBIGoiAUGAAkcNAAtBjNQEQcGrAzYCAEGo0ABB9NMAKAIANgIAQZjQAEHAqwM2AgBBpNAAQYjUBDYCAEHM/wdBODYCAEGI1AQhCQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAQewBTQRAQYzQACgCACIGQRAgAEETakFwcSAAQQtJGyIEQQN2IgB2IgFBA3EEQAJAIAFBAXEgAHJBAXMiAkEDdCIAQbTQAGoiASAAQbzQAGooAgAiACgCCCIDRgRAQYzQACAGQX4gAndxNgIADAELIAEgAzYCCCADIAE2AgwLIABBCGohASAAIAJBA3QiAkEDcjYCBCAAIAJqIgAgACgCBEEBcjYCBAwRC0GU0AAoAgAiCCAETw0BIAEEQAJAQQIgAHQiAkEAIAJrciABIAB0cWgiAEEDdCICQbTQAGoiASACQbzQAGooAgAiAigCCCIDRgRAQYzQACAGQX4gAHdxIgY2AgAMAQsgASADNgIIIAMgATYCDAsgAiAEQQNyNgIEIABBA3QiACAEayEFIAAgAmogBTYCACACIARqIgQgBUEBcjYCBCAIBEAgCEF4cUG00ABqIQBBoNAAKAIAIQMCf0EBIAhBA3Z0IgEgBnFFBEBBjNAAIAEgBnI2AgAgAAwBCyAAKAIICyIBIAM2AgwgACADNgIIIAMgADYCDCADIAE2AggLIAJBCGohAUGg0AAgBDYCAEGU0AAgBTYCAAwRC0GQ0AAoAgAiC0UNASALaEECdEG80gBqKAIAIgAoAgRBeHEgBGshBSAAIQIDQAJAIAIoAhAiAUUEQCACQRRqKAIAIgFFDQELIAEoAgRBeHEgBGsiAyAFSSECIAMgBSACGyEFIAEgACACGyEAIAEhAgwBCwsgACgCGCEJIAAoAgwiAyAARwRAQZzQACgCABogAyAAKAIIIgE2AgggASADNgIMDBALIABBFGoiAigCACIBRQRAIAAoAhAiAUUNAyAAQRBqIQILA0AgAiEHIAEiA0EUaiICKAIAIgENACADQRBqIQIgAygCECIBDQALIAdBADYCAAwPC0F/IQQgAEG/f0sNACAAQRNqIgFBcHEhBEGQ0AAoAgAiCEUNAEEAIARrIQUCQAJAAkACf0EAIARBgAJJDQAaQR8gBEH///8HSw0AGiAEQSYgAUEIdmciAGt2QQFxIABBAXRrQT5qCyIGQQJ0QbzSAGooAgAiAkUEQEEAIQFBACEDDAELQQAhASAEQRkgBkEBdmtBACAGQR9HG3QhAEEAIQMDQAJAIAIoAgRBeHEgBGsiByAFTw0AIAIhAyAHIgUNAEEAIQUgAiEBDAMLIAEgAkEUaigCACIHIAcgAiAAQR12QQRxakEQaigCACICRhsgASAHGyEBIABBAXQhACACDQALCyABIANyRQRAQQAhA0ECIAZ0IgBBACAAa3IgCHEiAEUNAyAAaEECdEG80gBqKAIAIQELIAFFDQELA0AgASgCBEF4cSAEayICIAVJIQAgAiAFIAAbIQUgASADIAAbIQMgASgCECIABH8gAAUgAUEUaigCAAsiAQ0ACwsgA0UNACAFQZTQACgCACAEa08NACADKAIYIQcgAyADKAIMIgBHBEBBnNAAKAIAGiAAIAMoAggiATYCCCABIAA2AgwMDgsgA0EUaiICKAIAIgFFBEAgAygCECIBRQ0DIANBEGohAgsDQCACIQYgASIAQRRqIgIoAgAiAQ0AIABBEGohAiAAKAIQIgENAAsgBkEANgIADA0LQZTQACgCACIDIARPBEBBoNAAKAIAIQECQCADIARrIgJBEE8EQCABIARqIgAgAkEBcjYCBCABIANqIAI2AgAgASAEQQNyNgIEDAELIAEgA0EDcjYCBCABIANqIgAgACgCBEEBcjYCBEEAIQBBACECC0GU0AAgAjYCAEGg0AAgADYCACABQQhqIQEMDwtBmNAAKAIAIgMgBEsEQCAEIAlqIgAgAyAEayIBQQFyNgIEQaTQACAANgIAQZjQACABNgIAIAkgBEEDcjYCBCAJQQhqIQEMDwtBACEBIAQCf0Hk0wAoAgAEQEHs0wAoAgAMAQtB8NMAQn83AgBB6NMAQoCAhICAgMAANwIAQeTTACAKQQxqQXBxQdiq1aoFczYCAEH40wBBADYCAEHI0wBBADYCAEGAgAQLIgAgBEHHAGoiBWoiBkEAIABrIgdxIgJPBEBB/NMAQTA2AgAMDwsCQEHE0wAoAgAiAUUNAEG80wAoAgAiCCACaiEAIAAgAU0gACAIS3ENAEEAIQFB/NMAQTA2AgAMDwtByNMALQAAQQRxDQQCQAJAIAkEQEHM0wAhAQNAIAEoAgAiACAJTQRAIAAgASgCBGogCUsNAwsgASgCCCIBDQALC0EAEDMiAEF/Rg0FIAIhBkHo0wAoAgAiAUEBayIDIABxBEAgAiAAayAAIANqQQAgAWtxaiEGCyAEIAZPDQUgBkH+////B0sNBUHE0wAoAgAiAwRAQbzTACgCACIHIAZqIQEgASAHTQ0GIAEgA0sNBgsgBhAzIgEgAEcNAQwHCyAGIANrIAdxIgZB/v///wdLDQQgBhAzIQAgACABKAIAIAEoAgRqRg0DIAAhAQsCQCAGIARByABqTw0AIAFBf0YNAEHs0wAoAgAiACAFIAZrakEAIABrcSIAQf7///8HSwRAIAEhAAwHCyAAEDNBf0cEQCAAIAZqIQYgASEADAcLQQAgBmsQMxoMBAsgASIAQX9HDQUMAwtBACEDDAwLQQAhAAwKCyAAQX9HDQILQcjTAEHI0wAoAgBBBHI2AgALIAJB/v///wdLDQEgAhAzIQBBABAzIQEgAEF/Rg0BIAFBf0YNASAAIAFPDQEgASAAayIGIARBOGpNDQELQbzTAEG80wAoAgAgBmoiATYCAEHA0wAoAgAgAUkEQEHA0wAgATYCAAsCQAJAAkBBpNAAKAIAIgIEQEHM0wAhAQNAIAAgASgCACIDIAEoAgQiBWpGDQIgASgCCCIBDQALDAILQZzQACgCACIBQQBHIAAgAU9xRQRAQZzQACAANgIAC0EAIQFB0NMAIAY2AgBBzNMAIAA2AgBBrNAAQX82AgBBsNAAQeTTACgCADYCAEHY0wBBADYCAANAIAFByNAAaiABQbzQAGoiAjYCACACIAFBtNAAaiIDNgIAIAFBwNAAaiADNgIAIAFB0NAAaiABQcTQAGoiAzYCACADIAI2AgAgAUHY0ABqIAFBzNAAaiICNgIAIAIgAzYCACABQdTQAGogAjYCACABQSBqIgFBgAJHDQALQXggAGtBD3EiASAAaiICIAZBOGsiAyABayIBQQFyNgIEQajQAEH00wAoAgA2AgBBmNAAIAE2AgBBpNAAIAI2AgAgACADakE4NgIEDAILIAAgAk0NACACIANJDQAgASgCDEEIcQ0AQXggAmtBD3EiACACaiIDQZjQACgCACAGaiIHIABrIgBBAXI2AgQgASAFIAZqNgIEQajQAEH00wAoAgA2AgBBmNAAIAA2AgBBpNAAIAM2AgAgAiAHakE4NgIEDAELIABBnNAAKAIASQRAQZzQACAANgIACyAAIAZqIQNBzNMAIQECQAJAAkADQCADIAEoAgBHBEAgASgCCCIBDQEMAgsLIAEtAAxBCHFFDQELQczTACEBA0AgASgCACIDIAJNBEAgAyABKAIEaiIFIAJLDQMLIAEoAgghAQwACwALIAEgADYCACABIAEoAgQgBmo2AgQgAEF4IABrQQ9xaiIJIARBA3I2AgQgA0F4IANrQQ9xaiIGIAQgCWoiBGshASACIAZGBEBBpNAAIAQ2AgBBmNAAQZjQACgCACABaiIANgIAIAQgAEEBcjYCBAwIC0Gg0AAoAgAgBkYEQEGg0AAgBDYCAEGU0ABBlNAAKAIAIAFqIgA2AgAgBCAAQQFyNgIEIAAgBGogADYCAAwICyAGKAIEIgVBA3FBAUcNBiAFQXhxIQggBUH/AU0EQCAFQQN2IQMgBigCCCIAIAYoAgwiAkYEQEGM0ABBjNAAKAIAQX4gA3dxNgIADAcLIAIgADYCCCAAIAI2AgwMBgsgBigCGCEHIAYgBigCDCIARwRAIAAgBigCCCICNgIIIAIgADYCDAwFCyAGQRRqIgIoAgAiBUUEQCAGKAIQIgVFDQQgBkEQaiECCwNAIAIhAyAFIgBBFGoiAigCACIFDQAgAEEQaiECIAAoAhAiBQ0ACyADQQA2AgAMBAtBeCAAa0EPcSIBIABqIgcgBkE4ayIDIAFrIgFBAXI2AgQgACADakE4NgIEIAIgBUE3IAVrQQ9xakE/ayIDIAMgAkEQakkbIgNBIzYCBEGo0ABB9NMAKAIANgIAQZjQACABNgIAQaTQACAHNgIAIANBEGpB1NMAKQIANwIAIANBzNMAKQIANwIIQdTTACADQQhqNgIAQdDTACAGNgIAQczTACAANgIAQdjTAEEANgIAIANBJGohAQNAIAFBBzYCACAFIAFBBGoiAUsNAAsgAiADRg0AIAMgAygCBEF+cTYCBCADIAMgAmsiBTYCACACIAVBAXI2AgQgBUH/AU0EQCAFQXhxQbTQAGohAAJ/QYzQACgCACIBQQEgBUEDdnQiA3FFBEBBjNAAIAEgA3I2AgAgAAwBCyAAKAIICyIBIAI2AgwgACACNgIIIAIgADYCDCACIAE2AggMAQtBHyEBIAVB////B00EQCAFQSYgBUEIdmciAGt2QQFxIABBAXRrQT5qIQELIAIgATYCHCACQgA3AhAgAUECdEG80gBqIQBBkNAAKAIAIgNBASABdCIGcUUEQCAAIAI2AgBBkNAAIAMgBnI2AgAgAiAANgIYIAIgAjYCCCACIAI2AgwMAQsgBUEZIAFBAXZrQQAgAUEfRxt0IQEgACgCACEDAkADQCADIgAoAgRBeHEgBUYNASABQR12IQMgAUEBdCEBIAAgA0EEcWpBEGoiBigCACIDDQALIAYgAjYCACACIAA2AhggAiACNgIMIAIgAjYCCAwBCyAAKAIIIgEgAjYCDCAAIAI2AgggAkEANgIYIAIgADYCDCACIAE2AggLQZjQACgCACIBIARNDQBBpNAAKAIAIgAgBGoiAiABIARrIgFBAXI2AgRBmNAAIAE2AgBBpNAAIAI2AgAgACAEQQNyNgIEIABBCGohAQwIC0EAIQFB/NMAQTA2AgAMBwtBACEACyAHRQ0AAkAgBigCHCICQQJ0QbzSAGoiAygCACAGRgRAIAMgADYCACAADQFBkNAAQZDQACgCAEF+IAJ3cTYCAAwCCyAHQRBBFCAHKAIQIAZGG2ogADYCACAARQ0BCyAAIAc2AhggBigCECICBEAgACACNgIQIAIgADYCGAsgBkEUaigCACICRQ0AIABBFGogAjYCACACIAA2AhgLIAEgCGohASAGIAhqIgYoAgQhBQsgBiAFQX5xNgIEIAEgBGogATYCACAEIAFBAXI2AgQgAUH/AU0EQCABQXhxQbTQAGohAAJ/QYzQACgCACICQQEgAUEDdnQiAXFFBEBBjNAAIAEgAnI2AgAgAAwBCyAAKAIICyIBIAQ2AgwgACAENgIIIAQgADYCDCAEIAE2AggMAQtBHyEFIAFB////B00EQCABQSYgAUEIdmciAGt2QQFxIABBAXRrQT5qIQULIAQgBTYCHCAEQgA3AhAgBUECdEG80gBqIQBBkNAAKAIAIgJBASAFdCIDcUUEQCAAIAQ2AgBBkNAAIAIgA3I2AgAgBCAANgIYIAQgBDYCCCAEIAQ2AgwMAQsgAUEZIAVBAXZrQQAgBUEfRxt0IQUgACgCACEAAkADQCAAIgIoAgRBeHEgAUYNASAFQR12IQAgBUEBdCEFIAIgAEEEcWpBEGoiAygCACIADQALIAMgBDYCACAEIAI2AhggBCAENgIMIAQgBDYCCAwBCyACKAIIIgAgBDYCDCACIAQ2AgggBEEANgIYIAQgAjYCDCAEIAA2AggLIAlBCGohAQwCCwJAIAdFDQACQCADKAIcIgFBAnRBvNIAaiICKAIAIANGBEAgAiAANgIAIAANAUGQ0AAgCEF+IAF3cSIINgIADAILIAdBEEEUIAcoAhAgA0YbaiAANgIAIABFDQELIAAgBzYCGCADKAIQIgEEQCAAIAE2AhAgASAANgIYCyADQRRqKAIAIgFFDQAgAEEUaiABNgIAIAEgADYCGAsCQCAFQQ9NBEAgAyAEIAVqIgBBA3I2AgQgACADaiIAIAAoAgRBAXI2AgQMAQsgAyAEaiICIAVBAXI2AgQgAyAEQQNyNgIEIAIgBWogBTYCACAFQf8BTQRAIAVBeHFBtNAAaiEAAn9BjNAAKAIAIgFBASAFQQN2dCIFcUUEQEGM0AAgASAFcjYCACAADAELIAAoAggLIgEgAjYCDCAAIAI2AgggAiAANgIMIAIgATYCCAwBC0EfIQEgBUH///8HTQRAIAVBJiAFQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAQsgAiABNgIcIAJCADcCECABQQJ0QbzSAGohAEEBIAF0IgQgCHFFBEAgACACNgIAQZDQACAEIAhyNgIAIAIgADYCGCACIAI2AgggAiACNgIMDAELIAVBGSABQQF2a0EAIAFBH0cbdCEBIAAoAgAhBAJAA0AgBCIAKAIEQXhxIAVGDQEgAUEddiEEIAFBAXQhASAAIARBBHFqQRBqIgYoAgAiBA0ACyAGIAI2AgAgAiAANgIYIAIgAjYCDCACIAI2AggMAQsgACgCCCIBIAI2AgwgACACNgIIIAJBADYCGCACIAA2AgwgAiABNgIICyADQQhqIQEMAQsCQCAJRQ0AAkAgACgCHCIBQQJ0QbzSAGoiAigCACAARgRAIAIgAzYCACADDQFBkNAAIAtBfiABd3E2AgAMAgsgCUEQQRQgCSgCECAARhtqIAM2AgAgA0UNAQsgAyAJNgIYIAAoAhAiAQRAIAMgATYCECABIAM2AhgLIABBFGooAgAiAUUNACADQRRqIAE2AgAgASADNgIYCwJAIAVBD00EQCAAIAQgBWoiAUEDcjYCBCAAIAFqIgEgASgCBEEBcjYCBAwBCyAAIARqIgcgBUEBcjYCBCAAIARBA3I2AgQgBSAHaiAFNgIAIAgEQCAIQXhxQbTQAGohAUGg0AAoAgAhAwJ/QQEgCEEDdnQiAiAGcUUEQEGM0AAgAiAGcjYCACABDAELIAEoAggLIgIgAzYCDCABIAM2AgggAyABNgIMIAMgAjYCCAtBoNAAIAc2AgBBlNAAIAU2AgALIABBCGohAQsgCkEQaiQAIAELQwAgAEUEQD8AQRB0DwsCQCAAQf//A3ENACAAQQBIDQAgAEEQdkAAIgBBf0YEQEH80wBBMDYCAEF/DwsgAEEQdA8LAAsL3D8iAEGACAsJAQAAAAIAAAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==","base64")});var on=p((Ex,EE)=>{"use strict";var iE=["GET","HEAD","POST"],zy=new Set(iE),Zy=[101,204,205,304],oE=[301,302,303,307,308],_y=new Set(oE),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"],Ky=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"],Xy=new Set(cE),jy=["follow","manual","error"],gE=["GET","HEAD","OPTIONS","TRACE"],$y=new Set(gE),ep=["navigate","same-origin","no-cors","cors"],Ap=["omit","same-origin","include"],tp=["default","no-store","reload","no-cache","force-cache","only-if-cached"],rp=["content-encoding","content-language","content-location","content-type","content-length"],np=["half"],lE=["CONNECT","TRACE","TRACK"],sp=new Set(lE),QE=["audio","audioworklet","font","image","manifest","paintworklet","script","style","track","video","xslt",""],ip=new Set(QE);EE.exports={subresource:QE,forbiddenMethods:lE,requestBodyHeader:rp,referrerPolicy:cE,requestRedirect:jy,requestMode:ep,requestCredentials:Ap,requestCache:tp,redirectStatus:oE,corsSafeListedMethods:iE,nullBodyStatus:Zy,safeMethods:gE,badPorts:aE,requestDuplex:np,subresourceSet:ip,badPortsSet:Ky,redirectStatusSet:_y,corsSafeListedMethodsSet:zy,safeMethodsSet:$y,forbiddenMethodsSet:sp,referrerPolicySet:Xy}});var ha=p((Bx,BE)=>{"use strict";var Ia=Symbol.for("undici.globalOrigin.1");function op(){return globalThis[Ia]}function ap(e){if(e===void 0){Object.defineProperty(globalThis,Ia,{value:void 0,writable:!0,enumerable:!1,configurable:!1});return}let A=new URL(e);if(A.protocol!=="http:"&&A.protocol!=="https:")throw new TypeError(`Only http & https urls are allowed, received ${A.protocol}`);Object.defineProperty(globalThis,Ia,{value:A,writable:!0,enumerable:!1,configurable:!1})}BE.exports={getGlobalOrigin:op,setGlobalOrigin:ap}});var Je=p((ux,wE)=>{"use strict";var Rs=y("node:assert"),cp=new TextEncoder,an=/^[!#$%&'*+\-.^_|~A-Za-z0-9]+$/,gp=/[\u000A\u000D\u0009\u0020]/,lp=/[\u0009\u000A\u000C\u000D\u0020]/g,Qp=/^[\u0009\u0020-\u007E\u0080-\u00FF]+$/;function Ep(e){Rs(e.protocol==="data:");let A=hE(e,!0);A=A.slice(5);let t={position:0},r=tr(",",A,t),n=r.length;if(r=fp(r,!0,!0),t.position>=A.length)return"failure";t.position++;let s=A.slice(n+1),i=CE(s);if(/;(\u0020){0,}base64$/i.test(r)){let a=dE(i);if(i=up(a),i==="failure")return"failure";r=r.slice(0,-6),r=r.replace(/(\u0020)+$/,""),r=r.slice(0,-1)}r.startsWith(";")&&(r="text/plain"+r);let o=Ca(r);return o==="failure"&&(o=Ca("text/plain;charset=US-ASCII")),{mimeType:o,body:i}}function hE(e,A=!1){if(!A)return e.href;let t=e.href,r=e.hash.length,n=r===0?t:t.substring(0,t.length-r);return!r&&t.endsWith("#")?n.slice(0,-1):n}function Ss(e,A,t){let r="";for(;t.position<A.length&&e(A[t.position]);)r+=A[t.position],t.position++;return r}function tr(e,A,t){let r=A.indexOf(e,t.position),n=t.position;return r===-1?(t.position=A.length,A.slice(n)):(t.position=r,A.slice(n,t.position))}function CE(e){let A=cp.encode(e);return Bp(A)}function uE(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function IE(e){return e>=48&&e<=57?e-48:(e&223)-55}function Bp(e){let A=e.length,t=new Uint8Array(A),r=0;for(let n=0;n<A;++n){let s=e[n];s!==37?t[r++]=s:s===37&&!(uE(e[n+1])&&uE(e[n+2]))?t[r++]=37:(t[r++]=IE(e[n+1])<<4|IE(e[n+2]),n+=2)}return A===r?t:t.subarray(0,r)}function Ca(e){e=Fs(e,!0,!0);let A={position:0},t=tr("/",e,A);if(t.length===0||!an.test(t)||A.position>e.length)return"failure";A.position++;let r=tr(";",e,A);if(r=Fs(r,!1,!0),r.length===0||!an.test(r))return"failure";let n=t.toLowerCase(),s=r.toLowerCase(),i={type:n,subtype:s,parameters:new Map,essence:`${n}/${s}`};for(;A.position<e.length;){A.position++,Ss(g=>gp.test(g),e,A);let o=Ss(g=>g!==";"&&g!=="=",e,A);if(o=o.toLowerCase(),A.position<e.length){if(e[A.position]===";")continue;A.position++}if(A.position>e.length)break;let a=null;if(e[A.position]==='"')a=fE(e,A,!0),tr(";",e,A);else if(a=tr(";",e,A),a=Fs(a,!1,!0),a.length===0)continue;o.length!==0&&an.test(o)&&(a.length===0||Qp.test(a))&&!i.parameters.has(o)&&i.parameters.set(o,a)}return i}function up(e){e=e.replace(lp,"");let A=e.length;if(A%4===0&&e.charCodeAt(A-1)===61&&(--A,e.charCodeAt(A-1)===61&&--A),A%4===1||/[^+/0-9A-Za-z]/.test(e.length===A?e:e.substring(0,A)))return"failure";let t=Buffer.from(e,"base64");return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}function fE(e,A,t){let r=A.position,n="";for(Rs(e[A.position]==='"'),A.position++;n+=Ss(i=>i!=='"'&&i!=="\\",e,A),!(A.position>=e.length);){let s=e[A.position];if(A.position++,s==="\\"){if(A.position>=e.length){n+="\\";break}n+=e[A.position],A.position++}else{Rs(s==='"');break}}return t?n:e.slice(r,A.position)}function Ip(e){Rs(e!=="failure");let{parameters:A,essence:t}=e,r=t;for(let[n,s]of A.entries())r+=";",r+=n,r+="=",an.test(s)||(s=s.replace(/(\\|")/g,"\\$1"),s='"'+s,s+='"'),r+=s;return r}function hp(e){return e===13||e===10||e===9||e===32}function Fs(e,A=!0,t=!0){return fa(e,A,t,hp)}function Cp(e){return e===13||e===10||e===9||e===12||e===32}function fp(e,A=!0,t=!0){return fa(e,A,t,Cp)}function fa(e,A,t,r){let n=0,s=e.length-1;if(A)for(;n<e.length&&r(e.charCodeAt(n));)n++;if(t)for(;s>0&&r(e.charCodeAt(s));)s--;return n===0&&s===e.length-1?e:e.slice(n,s+1)}function dE(e){let A=e.length;if(65535>A)return String.fromCharCode.apply(null,e);let t="",r=0,n=65535;for(;r<A;)r+n>A&&(n=A-r),t+=String.fromCharCode.apply(null,e.subarray(r,r+=n));return t}function dp(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":""}wE.exports={dataURLProcessor:Ep,URLSerializer:hE,collectASequenceOfCodePoints:Ss,collectASequenceOfCodePointsFast:tr,stringPercentDecode:CE,parseMIMEType:Ca,collectAnHTTPQuotedString:fE,serializeAMimeType:Ip,removeChars:fa,removeHTTPWhitespace:Fs,minimizeSupportedMimeType:dp,HTTP_TOKEN_CODEPOINTS:an,isomorphicDecode:dE}});var Se=p((Ix,yE)=>{"use strict";var{types:pA,inspect:wp}=y("node:util"),{markAsUncloneable:yp}=y("node:worker_threads"),{toUSVString:pp}=v(),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 A=e.types.length===1?"":" one of",t=`${e.argument} could not be converted to${A}: ${e.types.join(", ")}.`;return m.errors.exception({header:e.prefix,message:t})};m.errors.invalidArgument=function(e){return m.errors.exception({header:e.prefix,message:`"${e.value}" is an invalid ${e.type}.`})};m.brandCheck=function(e,A,t){if(t?.strict!==!1){if(!(e instanceof A)){let r=new TypeError("Illegal invocation");throw r.code="ERR_INVALID_THIS",r}}else if(e?.[Symbol.toStringTag]!==A.prototype[Symbol.toStringTag]){let r=new TypeError("Illegal invocation");throw r.code="ERR_INVALID_THIS",r}};m.argumentLengthCheck=function({length:e},A,t){if(e<A)throw m.errors.exception({message:`${A} argument${A!==1?"s":""} required, but${e?" only":""} ${e} found.`,header:t})};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=yp||(()=>{});m.util.ConvertToInt=function(e,A,t,r){let n,s;A===64?(n=Math.pow(2,53)-1,t==="unsigned"?s=0:s=Math.pow(-2,53)+1):t==="unsigned"?(s=0,n=Math.pow(2,A)-1):(s=Math.pow(-2,A)-1,n=Math.pow(2,A-1)-1);let i=Number(e);if(i===0&&(i=0),r?.enforceRange===!0){if(Number.isNaN(i)||i===Number.POSITIVE_INFINITY||i===Number.NEGATIVE_INFINITY)throw m.errors.exception({header:"Integer conversion",message:`Could not convert ${m.util.Stringify(e)} to an integer.`});if(i=m.util.IntegerPart(i),i<s||i>n)throw m.errors.exception({header:"Integer conversion",message:`Value must be between ${s}-${n}, got ${i}.`});return i}return!Number.isNaN(i)&&r?.clamp===!0?(i=Math.min(Math.max(i,s),n),Math.floor(i)%2===0?i=Math.floor(i):i=Math.ceil(i),i):Number.isNaN(i)||i===0&&Object.is(0,i)||i===Number.POSITIVE_INFINITY||i===Number.NEGATIVE_INFINITY?0:(i=m.util.IntegerPart(i),i=i%Math.pow(2,A),t==="signed"&&i>=Math.pow(2,A)-1?i-Math.pow(2,A):i)};m.util.IntegerPart=function(e){let A=Math.floor(Math.abs(e));return e<0?-1*A:A};m.util.Stringify=function(e){switch(m.util.Type(e)){case"Symbol":return`Symbol(${e.description})`;case"Object":return wp(e);case"String":return`"${e}"`;default:return`${e}`}};m.sequenceConverter=function(e){return(A,t,r,n)=>{if(m.util.Type(A)!=="Object")throw m.errors.exception({header:t,message:`${r} (${m.util.Stringify(A)}) is not iterable.`});let s=typeof n=="function"?n():A?.[Symbol.iterator]?.(),i=[],o=0;if(s===void 0||typeof s.next!="function")throw m.errors.exception({header:t,message:`${r} is not iterable.`});for(;;){let{done:a,value:g}=s.next();if(a)break;i.push(e(g,t,`${r}[${o++}]`))}return i}};m.recordConverter=function(e,A){return(t,r,n)=>{if(m.util.Type(t)!=="Object")throw m.errors.exception({header:r,message:`${n} ("${m.util.Type(t)}") is not an Object.`});let s={};if(!pA.isProxy(t)){let o=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(let a of o){let g=e(a,r,n),l=A(t[a],r,n);s[g]=l}return s}let i=Reflect.ownKeys(t);for(let o of i)if(Reflect.getOwnPropertyDescriptor(t,o)?.enumerable){let g=e(o,r,n),l=A(t[o],r,n);s[g]=l}return s}};m.interfaceConverter=function(e){return(A,t,r,n)=>{if(n?.strict!==!1&&!(A instanceof e))throw m.errors.exception({header:t,message:`Expected ${r} ("${m.util.Stringify(A)}") to be an instance of ${e.name}.`});return A}};m.dictionaryConverter=function(e){return(A,t,r)=>{let n=m.util.Type(A),s={};if(n==="Null"||n==="Undefined")return s;if(n!=="Object")throw m.errors.exception({header:t,message:`Expected ${A} to be one of: Null, Undefined, Object.`});for(let i of e){let{key:o,defaultValue:a,required:g,converter:l}=i;if(g===!0&&!Object.hasOwn(A,o))throw m.errors.exception({header:t,message:`Missing required key "${o}".`});let c=A[o],Q=Object.hasOwn(i,"defaultValue");if(Q&&c!==null&&(c??=a()),g||Q||c!==void 0){if(c=l(c,t,`${r}.${o}`),i.allowedValues&&!i.allowedValues.includes(c))throw m.errors.exception({header:t,message:`${c} is not an accepted type. Expected one of ${i.allowedValues.join(", ")}.`});s[o]=c}}return s}};m.nullableConverter=function(e){return(A,t,r)=>A===null?A:e(A,t,r)};m.converters.DOMString=function(e,A,t,r){if(e===null&&r?.legacyNullToEmptyString)return"";if(typeof e=="symbol")throw m.errors.exception({header:A,message:`${t} is a symbol, which cannot be converted to a DOMString.`});return String(e)};m.converters.ByteString=function(e,A,t){let r=m.converters.DOMString(e,A,t);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=pp;m.converters.boolean=function(e){return!!e};m.converters.any=function(e){return e};m.converters["long long"]=function(e,A,t){return m.util.ConvertToInt(e,64,"signed",void 0,A,t)};m.converters["unsigned long long"]=function(e,A,t){return m.util.ConvertToInt(e,64,"unsigned",void 0,A,t)};m.converters["unsigned long"]=function(e,A,t){return m.util.ConvertToInt(e,32,"unsigned",void 0,A,t)};m.converters["unsigned short"]=function(e,A,t,r){return m.util.ConvertToInt(e,16,"unsigned",r,A,t)};m.converters.ArrayBuffer=function(e,A,t,r){if(m.util.Type(e)!=="Object"||!pA.isAnyArrayBuffer(e))throw m.errors.conversionFailed({prefix:A,argument:`${t} ("${m.util.Stringify(e)}")`,types:["ArrayBuffer"]});if(r?.allowShared===!1&&pA.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,A,t,r,n){if(m.util.Type(e)!=="Object"||!pA.isTypedArray(e)||e.constructor.name!==A.name)throw m.errors.conversionFailed({prefix:t,argument:`${r} ("${m.util.Stringify(e)}")`,types:[A.name]});if(n?.allowShared===!1&&pA.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,A,t,r){if(m.util.Type(e)!=="Object"||!pA.isDataView(e))throw m.errors.exception({header:A,message:`${t} is not a DataView.`});if(r?.allowShared===!1&&pA.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,A,t,r){if(pA.isAnyArrayBuffer(e))return m.converters.ArrayBuffer(e,A,t,{...r,allowShared:!1});if(pA.isTypedArray(e))return m.converters.TypedArray(e,e.constructor,A,t,{...r,allowShared:!1});if(pA.isDataView(e))return m.converters.DataView(e,A,t,{...r,allowShared:!1});throw m.errors.conversionFailed({prefix:A,argument:`${t} ("${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);yE.exports={webidl:m}});var Pe=p((hx,xE)=>{"use strict";var{Transform:mp}=y("node:stream"),pE=y("node:zlib"),{redirectStatusSet:Dp,referrerPolicySet:kp,badPortsSet:bp}=on(),{getGlobalOrigin:mE}=ha(),{collectASequenceOfCodePoints:dt,collectAnHTTPQuotedString:Fp,removeChars:Rp,parseMIMEType:Sp}=Je(),{performance:Np}=y("node:perf_hooks"),{isBlobLike:Mp,ReadableStreamFrom:Up,isValidHTTPToken:DE,normalizedMethodRecordsBase:Lp}=v(),wt=y("node:assert"),{isUint8Array:Tp}=y("node:util/types"),{webidl:cn}=Se(),kE=[],Ms;try{Ms=y("node:crypto");let e=["sha256","sha384","sha512"];kE=Ms.getHashes().filter(A=>e.includes(A))}catch{}function bE(e){let A=e.urlList,t=A.length;return t===0?null:A[t-1].toString()}function xp(e,A){if(!Dp.has(e.status))return null;let t=e.headersList.get("location",!0);return t!==null&&RE(t)&&(FE(t)||(t=Yp(t)),t=new URL(t,bE(e))),t&&!t.hash&&(t.hash=A),t}function FE(e){for(let A=0;A<e.length;++A){let t=e.charCodeAt(A);if(t>126||t<32)return!1}return!0}function Yp(e){return Buffer.from(e,"binary").toString("utf8")}function ln(e){return e.urlList[e.urlList.length-1]}function Gp(e){let A=ln(e);return LE(A)&&bp.has(A.port)?"blocked":"allowed"}function Jp(e){return e instanceof Error||e?.constructor?.name==="Error"||e?.constructor?.name==="DOMException"}function Hp(e){for(let A=0;A<e.length;++A){let t=e.charCodeAt(A);if(!(t===9||t>=32&&t<=126||t>=128&&t<=255))return!1}return!0}var Vp=DE;function RE(e){return(e[0]===" "||e[0]===" "||e[e.length-1]===" "||e[e.length-1]===" "||e.includes(`
2
- `)||e.includes("\r")||e.includes("\0"))===!1}function vp(e,A){let{headersList:t}=A,r=(t.get("referrer-policy",!0)??"").split(","),n="";if(r.length>0)for(let s=r.length;s!==0;s--){let i=r[s-1].trim();if(kp.has(i)){n=i;break}}n!==""&&(e.referrerPolicy=n)}function qp(){return"allowed"}function Wp(){return"success"}function Pp(){return"success"}function Op(e){let A=null;A=e.mode,e.headersList.set("sec-fetch-mode",A,!0)}function zp(e){let A=e.origin;if(!(A==="client"||A===void 0)){if(e.responseTainting==="cors"||e.mode==="websocket")e.headersList.append("origin",A,!0);else if(e.method!=="GET"&&e.method!=="HEAD"){switch(e.referrerPolicy){case"no-referrer":A=null;break;case"no-referrer-when-downgrade":case"strict-origin":case"strict-origin-when-cross-origin":e.origin&&wa(e.origin)&&!wa(ln(e))&&(A=null);break;case"same-origin":Us(e,ln(e))||(A=null);break;default:}e.headersList.append("origin",A,!0)}}}function rr(e,A){return e}function Zp(e,A,t){return!e?.startTime||e.startTime<A?{domainLookupStartTime:A,domainLookupEndTime:A,connectionStartTime:A,connectionEndTime:A,secureConnectionStartTime:A,ALPNNegotiatedProtocol:e?.ALPNNegotiatedProtocol}:{domainLookupStartTime:rr(e.domainLookupStartTime,t),domainLookupEndTime:rr(e.domainLookupEndTime,t),connectionStartTime:rr(e.connectionStartTime,t),connectionEndTime:rr(e.connectionEndTime,t),secureConnectionStartTime:rr(e.secureConnectionStartTime,t),ALPNNegotiatedProtocol:e.ALPNNegotiatedProtocol}}function _p(e){return rr(Np.now(),e)}function Kp(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 SE(){return{referrerPolicy:"strict-origin-when-cross-origin"}}function Xp(e){return{referrerPolicy:e.referrerPolicy}}function jp(e){let A=e.referrerPolicy;wt(A);let t=null;if(e.referrer==="client"){let o=mE();if(!o||o.origin==="null")return"no-referrer";t=new URL(o)}else e.referrer instanceof URL&&(t=e.referrer);let r=da(t),n=da(t,!0);r.toString().length>4096&&(r=n);let s=Us(e,r),i=gn(r)&&!gn(e.url);switch(A){case"origin":return n??da(t,!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 o=ln(e);return Us(r,o)?r:gn(r)&&!gn(o)?"no-referrer":n}default:return i?"no-referrer":n}}function da(e,A){return wt(e instanceof URL),e=new URL(e),e.protocol==="file:"||e.protocol==="about:"||e.protocol==="blank:"?"no-referrer":(e.username="",e.password="",e.hash="",A&&(e.pathname="",e.search=""),e)}function gn(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 A(e.origin);function A(t){if(t==null||t==="null")return!1;let r=new URL(t);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 $p(e,A){if(Ms===void 0)return!0;let t=NE(A);if(t==="no metadata"||t.length===0)return!0;let r=Am(t),n=tm(t,r);for(let s of n){let i=s.algo,o=s.hash,a=Ms.createHash(i).update(e).digest("base64");if(a[a.length-1]==="="&&(a[a.length-2]==="="?a=a.slice(0,-2):a=a.slice(0,-1)),rm(a,o))return!0}return!1}var em=/(?<algo>sha256|sha384|sha512)-((?<hash>[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i;function NE(e){let A=[],t=!0;for(let r of e.split(" ")){t=!1;let n=em.exec(r);if(n===null||n.groups===void 0||n.groups.algo===void 0)continue;let s=n.groups.algo.toLowerCase();kE.includes(s)&&A.push(n.groups)}return t===!0?"no metadata":A}function Am(e){let A=e[0].algo;if(A[3]==="5")return A;for(let t=1;t<e.length;++t){let r=e[t];if(r.algo[3]==="5"){A="sha512";break}else{if(A[3]==="3")continue;r.algo[3]==="3"&&(A="sha384")}}return A}function tm(e,A){if(e.length===1)return e;let t=0;for(let r=0;r<e.length;++r)e[r].algo===A&&(e[t++]=e[r]);return e.length=t,e}function rm(e,A){if(e.length!==A.length)return!1;for(let t=0;t<e.length;++t)if(e[t]!==A[t]){if(e[t]==="+"&&A[t]==="-"||e[t]==="/"&&A[t]==="_")continue;return!1}return!0}function nm(e){}function Us(e,A){return e.origin===A.origin&&e.origin==="null"||e.protocol===A.protocol&&e.hostname===A.hostname&&e.port===A.port}function sm(){let e,A;return{promise:new Promise((r,n)=>{e=r,A=n}),resolve:e,reject:A}}function im(e){return e.controller.state==="aborted"}function om(e){return e.controller.state==="aborted"||e.controller.state==="terminated"}function am(e){return Lp[e.toLowerCase()]??e}function cm(e){let A=JSON.stringify(e);if(A===void 0)throw new TypeError("Value is not JSON serializable");return wt(typeof A=="string"),A}var gm=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function ME(e,A,t=0,r=1){class n{#e;#A;#t;constructor(i,o){this.#e=i,this.#A=o,this.#t=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 i=this.#t,o=this.#e[A],a=o.length;if(i>=a)return{value:void 0,done:!0};let{[t]:g,[r]:l}=o[i];this.#t=i+1;let c;switch(this.#A){case"key":c=g;break;case"value":c=l;break;case"key+value":c=[g,l];break}return{value:c,done:!1}}}return delete n.prototype.constructor,Object.setPrototypeOf(n.prototype,gm),Object.defineProperties(n.prototype,{[Symbol.toStringTag]:{writable:!1,enumerable:!1,configurable:!0,value:`${e} Iterator`},next:{writable:!0,enumerable:!0,configurable:!0}}),function(s,i){return new n(s,i)}}function lm(e,A,t,r=0,n=1){let s=ME(e,t,r,n),i={keys:{writable:!0,enumerable:!0,configurable:!0,value:function(){return cn.brandCheck(this,A),s(this,"key")}},values:{writable:!0,enumerable:!0,configurable:!0,value:function(){return cn.brandCheck(this,A),s(this,"value")}},entries:{writable:!0,enumerable:!0,configurable:!0,value:function(){return cn.brandCheck(this,A),s(this,"key+value")}},forEach:{writable:!0,enumerable:!0,configurable:!0,value:function(a,g=globalThis){if(cn.brandCheck(this,A),cn.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:l,1:c}of s(this,"key+value"))a.call(g,c,l,this)}}};return Object.defineProperties(A.prototype,{...i,[Symbol.iterator]:{writable:!0,enumerable:!1,configurable:!0,value:i.entries.value}})}async function Qm(e,A,t){let r=A,n=t,s;try{s=e.stream.getReader()}catch(i){n(i);return}try{r(await UE(s))}catch(i){n(i)}}function Em(e){return e instanceof ReadableStream||e[Symbol.toStringTag]==="ReadableStream"&&typeof e.tee=="function"}function Bm(e){try{e.close(),e.byobRequest?.respond(0)}catch(A){if(!A.message.includes("Controller is already closed")&&!A.message.includes("ReadableStream is already closed"))throw A}}var um=/[^\x00-\xFF]/;function Ns(e){return wt(!um.test(e)),e}async function UE(e){let A=[],t=0;for(;;){let{done:r,value:n}=await e.read();if(r)return Buffer.concat(A,t);if(!Tp(n))throw new TypeError("Received non-Uint8Array chunk");A.push(n),t+=n.length}}function Im(e){wt("protocol"in e);let A=e.protocol;return A==="about:"||A==="blob:"||A==="data:"}function wa(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){wt("protocol"in e);let A=e.protocol;return A==="http:"||A==="https:"}function hm(e,A){let t=e;if(!t.startsWith("bytes"))return"failure";let r={position:5};if(A&&dt(a=>a===" "||a===" ",t,r),t.charCodeAt(r.position)!==61)return"failure";r.position++,A&&dt(a=>a===" "||a===" ",t,r);let n=dt(a=>{let g=a.charCodeAt(0);return g>=48&&g<=57},t,r),s=n.length?Number(n):null;if(A&&dt(a=>a===" "||a===" ",t,r),t.charCodeAt(r.position)!==45)return"failure";r.position++,A&&dt(a=>a===" "||a===" ",t,r);let i=dt(a=>{let g=a.charCodeAt(0);return g>=48&&g<=57},t,r),o=i.length?Number(i):null;return r.position<t.length||o===null&&s===null||s>o?"failure":{rangeStartValue:s,rangeEndValue:o}}function Cm(e,A,t){let r="bytes ";return r+=Ns(`${e}`),r+="-",r+=Ns(`${A}`),r+="/",r+=Ns(`${t}`),r}var ya=class extends mp{#e;constructor(A){super(),this.#e=A}_transform(A,t,r){if(!this._inflateStream){if(A.length===0){r();return}this._inflateStream=(A[0]&15)===8?pE.createInflate(this.#e):pE.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(A,t,r)}_final(A){this._inflateStream&&(this._inflateStream.end(),this._inflateStream=null),A()}};function fm(e){return new ya(e)}function dm(e){let A=null,t=null,r=null,n=TE("content-type",e);if(n===null)return"failure";for(let s of n){let i=Sp(s);i==="failure"||i.essence==="*/*"||(r=i,r.essence!==t?(A=null,r.parameters.has("charset")&&(A=r.parameters.get("charset")),t=r.essence):!r.parameters.has("charset")&&A!==null&&r.parameters.set("charset",A))}return r??"failure"}function wm(e){let A=e,t={position:0},r=[],n="";for(;t.position<A.length;){if(n+=dt(s=>s!=='"'&&s!==",",A,t),t.position<A.length)if(A.charCodeAt(t.position)===34){if(n+=Fp(A,t),t.position<A.length)continue}else wt(A.charCodeAt(t.position)===44),t.position++;n=Rp(n,!0,!0,s=>s===9||s===32),r.push(n),n=""}return r}function TE(e,A){let t=A.get(e,!0);return t===null?null:wm(t)}var ym=new TextDecoder;function pm(e){return e.length===0?"":(e[0]===239&&e[1]===187&&e[2]===191&&(e=e.subarray(3)),ym.decode(e))}var pa=class{get baseUrl(){return mE()}get origin(){return this.baseUrl?.origin}policyContainer=SE()},ma=class{settingsObject=new pa},mm=new ma;xE.exports={isAborted:im,isCancelled:om,isValidEncodedURL:FE,createDeferredPromise:sm,ReadableStreamFrom:Up,tryUpgradeRequestToAPotentiallyTrustworthyURL:nm,clampAndCoarsenConnectionTimingInfo:Zp,coarsenedSharedCurrentTime:_p,determineRequestsReferrer:jp,makePolicyContainer:SE,clonePolicyContainer:Xp,appendFetchMetadata:Op,appendRequestOriginHeader:zp,TAOCheck:Pp,corsCheck:Wp,crossOriginResourcePolicyCheck:qp,createOpaqueTimingInfo:Kp,setRequestReferrerPolicyOnRedirect:vp,isValidHTTPToken:DE,requestBadPort:Gp,requestCurrentURL:ln,responseURL:bE,responseLocationURL:xp,isBlobLike:Mp,isURLPotentiallyTrustworthy:gn,isValidReasonPhrase:Hp,sameOrigin:Us,normalizeMethod:am,serializeJavascriptValueToJSONString:cm,iteratorMixin:lm,createIterator:ME,isValidHeaderName:Vp,isValidHeaderValue:RE,isErrorLike:Jp,fullyReadBody:Qm,bytesMatch:$p,isReadableStreamLike:Em,readableStreamClose:Bm,isomorphicEncode:Ns,urlIsLocal:Im,urlHasHttpsScheme:wa,urlIsHttpHttpsScheme:LE,readAllBytes:UE,simpleRangeHeaderValue:hm,buildContentRange:Cm,parseMetadata:NE,createInflate:fm,extractMimeType:dm,getDecodeSplit:TE,utf8DecodeBytes:pm,environmentSettingsObject:mm}});var jA=p((Cx,YE)=>{"use strict";YE.exports={kUrl:Symbol("url"),kHeaders:Symbol("headers"),kSignal:Symbol("signal"),kState:Symbol("state"),kDispatcher:Symbol("dispatcher")}});var ka=p((fx,GE)=>{"use strict";var{Blob:Dm,File:km}=y("node:buffer"),{kState:HA}=jA(),{webidl:mA}=Se(),Da=class e{constructor(A,t,r={}){let n=t,s=r.type,i=r.lastModified??Date.now();this[HA]={blobLike:A,name:n,type:s,lastModified:i}}stream(...A){return mA.brandCheck(this,e),this[HA].blobLike.stream(...A)}arrayBuffer(...A){return mA.brandCheck(this,e),this[HA].blobLike.arrayBuffer(...A)}slice(...A){return mA.brandCheck(this,e),this[HA].blobLike.slice(...A)}text(...A){return mA.brandCheck(this,e),this[HA].blobLike.text(...A)}get size(){return mA.brandCheck(this,e),this[HA].blobLike.size}get type(){return mA.brandCheck(this,e),this[HA].blobLike.type}get name(){return mA.brandCheck(this,e),this[HA].name}get lastModified(){return mA.brandCheck(this,e),this[HA].lastModified}get[Symbol.toStringTag](){return"File"}};mA.converters.Blob=mA.interfaceConverter(Dm);function bm(e){return e instanceof km||e&&(typeof e.stream=="function"||typeof e.arrayBuffer=="function")&&e[Symbol.toStringTag]==="File"}GE.exports={FileLike:Da,isFileLike:bm}});var En=p((dx,qE)=>{"use strict";var{isBlobLike:Ls,iteratorMixin:Fm}=Pe(),{kState:xe}=jA(),{kEnumerableProperty:nr}=v(),{FileLike:JE,isFileLike:Rm}=ka(),{webidl:oe}=Se(),{File:vE}=y("node:buffer"),HE=y("node:util"),VE=globalThis.File??vE,Qn=class e{constructor(A){if(oe.util.markAsUncloneable(this),A!==void 0)throw oe.errors.conversionFailed({prefix:"FormData constructor",argument:"Argument 1",types:["undefined"]});this[xe]=[]}append(A,t,r=void 0){oe.brandCheck(this,e);let n="FormData.append";if(oe.argumentLengthCheck(arguments,2,n),arguments.length===3&&!Ls(t))throw new TypeError("Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'");A=oe.converters.USVString(A,n,"name"),t=Ls(t)?oe.converters.Blob(t,n,"value",{strict:!1}):oe.converters.USVString(t,n,"value"),r=arguments.length===3?oe.converters.USVString(r,n,"filename"):void 0;let s=ba(A,t,r);this[xe].push(s)}delete(A){oe.brandCheck(this,e);let t="FormData.delete";oe.argumentLengthCheck(arguments,1,t),A=oe.converters.USVString(A,t,"name"),this[xe]=this[xe].filter(r=>r.name!==A)}get(A){oe.brandCheck(this,e);let t="FormData.get";oe.argumentLengthCheck(arguments,1,t),A=oe.converters.USVString(A,t,"name");let r=this[xe].findIndex(n=>n.name===A);return r===-1?null:this[xe][r].value}getAll(A){oe.brandCheck(this,e);let t="FormData.getAll";return oe.argumentLengthCheck(arguments,1,t),A=oe.converters.USVString(A,t,"name"),this[xe].filter(r=>r.name===A).map(r=>r.value)}has(A){oe.brandCheck(this,e);let t="FormData.has";return oe.argumentLengthCheck(arguments,1,t),A=oe.converters.USVString(A,t,"name"),this[xe].findIndex(r=>r.name===A)!==-1}set(A,t,r=void 0){oe.brandCheck(this,e);let n="FormData.set";if(oe.argumentLengthCheck(arguments,2,n),arguments.length===3&&!Ls(t))throw new TypeError("Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'");A=oe.converters.USVString(A,n,"name"),t=Ls(t)?oe.converters.Blob(t,n,"name",{strict:!1}):oe.converters.USVString(t,n,"name"),r=arguments.length===3?oe.converters.USVString(r,n,"name"):void 0;let s=ba(A,t,r),i=this[xe].findIndex(o=>o.name===A);i!==-1?this[xe]=[...this[xe].slice(0,i),s,...this[xe].slice(i+1).filter(o=>o.name!==A)]:this[xe].push(s)}[HE.inspect.custom](A,t){let r=this[xe].reduce((s,i)=>(s[i.name]?Array.isArray(s[i.name])?s[i.name].push(i.value):s[i.name]=[s[i.name],i.value]:s[i.name]=i.value,s),{__proto__:null});t.depth??=A,t.colors??=!0;let n=HE.formatWithOptions(t,r);return`FormData ${n.slice(n.indexOf("]")+2)}`}};Fm("FormData",Qn,xe,"name","value");Object.defineProperties(Qn.prototype,{append:nr,delete:nr,get:nr,getAll:nr,has:nr,set:nr,[Symbol.toStringTag]:{value:"FormData",configurable:!0}});function ba(e,A,t){if(typeof A!="string"){if(Rm(A)||(A=A instanceof Blob?new VE([A],"blob",{type:A.type}):new JE(A,"blob",{type:A.type})),t!==void 0){let r={type:A.type,lastModified:A.lastModified};A=A instanceof vE?new VE([A],t,r):new JE(A,t,r)}}return{name:e,value:A}}qE.exports={FormData:Qn,makeEntry:ba}});var _E=p((wx,ZE)=>{"use strict";var{isUSVString:WE,bufferToLowerCasedHeaderName:Sm}=v(),{utf8DecodeBytes:Nm}=Pe(),{HTTP_TOKEN_CODEPOINTS:Mm,isomorphicDecode:PE}=Je(),{isFileLike:Um}=ka(),{makeEntry:Lm}=En(),Ts=y("node:assert"),{File:Tm}=y("node:buffer"),xm=globalThis.File??Tm,Ym=Buffer.from('form-data; name="'),OE=Buffer.from("; filename"),Gm=Buffer.from("--"),Jm=Buffer.from(`--\r
3
- `);function Hm(e){for(let A=0;A<e.length;++A)if((e.charCodeAt(A)&-128)!==0)return!1;return!0}function Vm(e){let A=e.length;if(A<27||A>70)return!1;for(let t=0;t<A;++t){let r=e.charCodeAt(t);if(!(r>=48&&r<=57||r>=65&&r<=90||r>=97&&r<=122||r===39||r===45||r===95))return!1}return!0}function vm(e,A){Ts(A!=="failure"&&A.essence==="multipart/form-data");let t=A.parameters.get("boundary");if(t===void 0)return"failure";let r=Buffer.from(`--${t}`,"utf8"),n=[],s={position:0};for(;e[s.position]===13&&e[s.position+1]===10;)s.position+=2;let i=e.length;for(;e[i-1]===10&&e[i-2]===13;)i-=2;for(i!==e.length&&(e=e.subarray(0,i));;){if(e.subarray(s.position,s.position+r.length).equals(r))s.position+=r.length;else return"failure";if(s.position===e.length-2&&xs(e,Gm,s)||s.position===e.length-4&&xs(e,Jm,s))return n;if(e[s.position]!==13||e[s.position+1]!==10)return"failure";s.position+=2;let o=qm(e,s);if(o==="failure")return"failure";let{name:a,filename:g,contentType:l,encoding:c}=o;s.position+=2;let Q;{let E=e.indexOf(r.subarray(2),s.position);if(E===-1)return"failure";Q=e.subarray(s.position,E-4),s.position+=Q.length,c==="base64"&&(Q=Buffer.from(Q.toString(),"base64"))}if(e[s.position]!==13||e[s.position+1]!==10)return"failure";s.position+=2;let B;g!==null?(l??="text/plain",Hm(l)||(l=""),B=new xm([Q],g,{type:l})):B=Nm(Buffer.from(Q)),Ts(WE(a)),Ts(typeof B=="string"&&WE(B)||Um(B)),n.push(Lm(a,B,g))}}function qm(e,A){let t=null,r=null,n=null,s=null;for(;;){if(e[A.position]===13&&e[A.position+1]===10)return t===null?"failure":{name:t,filename:r,contentType:n,encoding:s};let i=sr(o=>o!==10&&o!==13&&o!==58,e,A);if(i=Fa(i,!0,!0,o=>o===9||o===32),!Mm.test(i.toString())||e[A.position]!==58)return"failure";switch(A.position++,sr(o=>o===32||o===9,e,A),Sm(i)){case"content-disposition":{if(t=r=null,!xs(e,Ym,A)||(A.position+=17,t=zE(e,A),t===null))return"failure";if(xs(e,OE,A)){let o=A.position+OE.length;if(e[o]===42&&(A.position+=1,o+=1),e[o]!==61||e[o+1]!==34||(A.position+=12,r=zE(e,A),r===null))return"failure"}break}case"content-type":{let o=sr(a=>a!==10&&a!==13,e,A);o=Fa(o,!1,!0,a=>a===9||a===32),n=PE(o);break}case"content-transfer-encoding":{let o=sr(a=>a!==10&&a!==13,e,A);o=Fa(o,!1,!0,a=>a===9||a===32),s=PE(o);break}default:sr(o=>o!==10&&o!==13,e,A)}if(e[A.position]!==13&&e[A.position+1]!==10)return"failure";A.position+=2}}function zE(e,A){Ts(e[A.position-1]===34);let t=sr(r=>r!==10&&r!==13&&r!==34,e,A);return e[A.position]!==34?null:(A.position++,t=new TextDecoder().decode(t).replace(/%0A/ig,`
4
- `).replace(/%0D/ig,"\r").replace(/%22/g,'"'),t)}function sr(e,A,t){let r=t.position;for(;r<A.length&&e(A[r]);)++r;return A.subarray(t.position,t.position=r)}function Fa(e,A,t,r){let n=0,s=e.length-1;if(A)for(;n<e.length&&r(e[n]);)n++;if(t)for(;s>0&&r(e[s]);)s--;return n===0&&s===e.length-1?e:e.subarray(n,s+1)}function xs(e,A,t){if(e.length<A.length)return!1;for(let r=0;r<A.length;r++)if(A[r]!==e[t.position+r])return!1;return!0}ZE.exports={multipartFormDataParser:vm,validateBoundary:Vm}});var ar=p((yx,sB)=>{"use strict";var Bn=v(),{ReadableStreamFrom:Wm,isBlobLike:KE,isReadableStreamLike:Pm,readableStreamClose:Om,createDeferredPromise:zm,fullyReadBody:Zm,extractMimeType:_m,utf8DecodeBytes:$E}=Pe(),{FormData:XE}=En(),{kState:or}=jA(),{webidl:Km}=Se(),{Blob:Xm}=y("node:buffer"),Ra=y("node:assert"),{isErrored:eB,isDisturbed:jm}=y("node:stream"),{isArrayBuffer:$m}=y("node:util/types"),{serializeAMimeType:e0}=Je(),{multipartFormDataParser:A0}=_E(),Sa;try{let e=y("node:crypto");Sa=A=>e.randomInt(0,A)}catch{Sa=e=>Math.floor(Math.random(e))}var Ys=new TextEncoder;function t0(){}var AB=globalThis.FinalizationRegistry&&process.version.indexOf("v18")!==0,tB;AB&&(tB=new FinalizationRegistry(e=>{let A=e.deref();A&&!A.locked&&!jm(A)&&!eB(A)&&A.cancel("Response object has been garbage collected").catch(t0)}));function rB(e,A=!1){let t=null;e instanceof ReadableStream?t=e:KE(e)?t=e.stream():t=new ReadableStream({async pull(a){let g=typeof n=="string"?Ys.encode(n):n;g.byteLength&&a.enqueue(g),queueMicrotask(()=>Om(a))},start(){},type:"bytes"}),Ra(Pm(t));let r=null,n=null,s=null,i=null;if(typeof e=="string")n=e,i="text/plain;charset=UTF-8";else if(e instanceof URLSearchParams)n=e.toString(),i="application/x-www-form-urlencoded;charset=UTF-8";else if($m(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(Bn.isFormDataLike(e)){let a=`----formdata-undici-0${`${Sa(1e11)}`.padStart(11,"0")}`,g=`--${a}\r
5
- Content-Disposition: form-data`;let l=h=>h.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22"),c=h=>h.replace(/\r?\n|\r/g,`\r
6
- `),Q=[],B=new Uint8Array([13,10]);s=0;let E=!1;for(let[h,I]of e)if(typeof I=="string"){let C=Ys.encode(g+`; name="${l(c(h))}"\r
7
- \r
8
- ${c(I)}\r
9
- `);Q.push(C),s+=C.byteLength}else{let C=Ys.encode(`${g}; name="${l(c(h))}"`+(I.name?`; filename="${l(I.name)}"`:"")+`\r
10
- Content-Type: ${I.type||"application/octet-stream"}\r
11
- \r
12
- `);Q.push(C,I,B),typeof I.size=="number"?s+=C.byteLength+I.size+B.byteLength:E=!0}let u=Ys.encode(`--${a}--\r
13
- `);Q.push(u),s+=u.byteLength,E&&(s=null),n=e,r=async function*(){for(let h of Q)h.stream?yield*h.stream():yield h},i=`multipart/form-data; boundary=${a}`}else if(KE(e))n=e,s=e.size,e.type&&(i=e.type);else if(typeof e[Symbol.asyncIterator]=="function"){if(A)throw new TypeError("keepalive");if(Bn.isDisturbed(e)||e.locked)throw new TypeError("Response body object should not be disturbed or locked");t=e instanceof ReadableStream?e:Wm(e)}if((typeof n=="string"||Bn.isBuffer(n))&&(s=Buffer.byteLength(n)),r!=null){let a;t=new ReadableStream({async start(){a=r(e)[Symbol.asyncIterator]()},async pull(g){let{value:l,done:c}=await a.next();if(c)queueMicrotask(()=>{g.close(),g.byobRequest?.respond(0)});else if(!eB(t)){let Q=new Uint8Array(l);Q.byteLength&&g.enqueue(Q)}return g.desiredSize>0},async cancel(g){await a.return()},type:"bytes"})}return[{stream:t,source:n,length:s},i]}function r0(e,A=!1){return e instanceof ReadableStream&&(Ra(!Bn.isDisturbed(e),"The body has already been consumed."),Ra(!e.locked,"The stream is locked.")),rB(e,A)}function n0(e,A){let[t,r]=A.stream.tee();return A.stream=t,{stream:r,length:A.length,source:A.source}}function s0(e){if(e.aborted)throw new DOMException("The operation was aborted.","AbortError")}function i0(e){return{blob(){return ir(this,t=>{let r=jE(this);return r===null?r="":r&&(r=e0(r)),new Xm([t],{type:r})},e)},arrayBuffer(){return ir(this,t=>new Uint8Array(t).buffer,e)},text(){return ir(this,$E,e)},json(){return ir(this,a0,e)},formData(){return ir(this,t=>{let r=jE(this);if(r!==null)switch(r.essence){case"multipart/form-data":{let n=A0(t,r);if(n==="failure")throw new TypeError("Failed to parse body as FormData.");let s=new XE;return s[or]=n,s}case"application/x-www-form-urlencoded":{let n=new URLSearchParams(t.toString()),s=new XE;for(let[i,o]of n)s.append(i,o);return s}}throw new TypeError('Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".')},e)},bytes(){return ir(this,t=>new Uint8Array(t),e)}}}function o0(e){Object.assign(e.prototype,i0(e))}async function ir(e,A,t){if(Km.brandCheck(e,t),nB(e))throw new TypeError("Body is unusable: Body has already been read");s0(e[or]);let r=zm(),n=i=>r.reject(i),s=i=>{try{r.resolve(A(i))}catch(o){n(o)}};return e[or].body==null?(s(Buffer.allocUnsafe(0)),r.promise):(await Zm(e[or].body,s,n),r.promise)}function nB(e){let A=e[or].body;return A!=null&&(A.stream.locked||Bn.isDisturbed(A.stream))}function a0(e){return JSON.parse($E(e))}function jE(e){let A=e[or].headersList,t=_m(A);return t==="failure"?null:t}sB.exports={extractBody:rB,safelyExtractBody:r0,cloneBody:n0,mixinBody:o0,streamRegistry:tB,hasFinalizationRegistry:AB,bodyUnusable:nB}});var wB=p((px,dB)=>{"use strict";var U=y("node:assert"),T=v(),{channels:iB}=_t(),Na=Qa(),{RequestContentLengthMismatchError:yt,ResponseContentLengthMismatchError:oB,RequestAbortedError:uB,InvalidArgumentError:c0,HeadersTimeoutError:g0,HeadersOverflowError:l0,SocketError:cr,InformationalError:gr,BodyTimeoutError:Q0,HTTPParserError:E0,ResponseExceededMaxSizeError:B0}=Z(),{kUrl:IB,kReset:He,kClient:Vs,kParser:ae,kBlocking:hn,kRunning:we,kPending:hB,kSize:aB,kWriting:$A,kQueue:aA,kNoRef:un,kKeepAliveDefaultTimeout:u0,kHostHeader:I0,kPendingIdx:h0,kRunningIdx:tA,kError:Ye,kPipelining:vs,kSocket:mt,kKeepAliveTimeoutValue:Ws,kMaxHeadersSize:Ma,kKeepAliveMaxTimeout:C0,kKeepAliveTimeoutThreshold:f0,kHeadersTimeout:d0,kBodyTimeout:w0,kStrictContentLength:Ta,kMaxRequests:cB,kCounter:y0,kMaxResponseSize:p0,kOnError:gB,kResume:VA,kHTTPContext:CB}=Qe(),Oe=tE(),lB=Buffer.alloc(0),Gs=Buffer[Symbol.species],Js=T.addListener,m0=T.removeAllListeners,Dt=Symbol("kIdleSocketValidation"),pt=Symbol("kIdleSocketValidationTimeout"),Ja=Symbol("kSocketUsed"),Ua;async function D0(){let e=process.env.JEST_WORKER_ID?ua():void 0,A;try{A=await WebAssembly.compile(sE())}catch{A=await WebAssembly.compile(e||ua())}return await WebAssembly.instantiate(A,{env:{wasm_on_url:(t,r,n)=>0,wasm_on_status:(t,r,n)=>{U(ue.ptr===t);let s=r-kA+DA.byteOffset;return ue.onStatus(new Gs(DA.buffer,s,n))||0},wasm_on_message_begin:t=>(U(ue.ptr===t),ue.onMessageBegin()||0),wasm_on_header_field:(t,r,n)=>{U(ue.ptr===t);let s=r-kA+DA.byteOffset;return ue.onHeaderField(new Gs(DA.buffer,s,n))||0},wasm_on_header_value:(t,r,n)=>{U(ue.ptr===t);let s=r-kA+DA.byteOffset;return ue.onHeaderValue(new Gs(DA.buffer,s,n))||0},wasm_on_headers_complete:(t,r,n,s)=>(U(ue.ptr===t),ue.onHeadersComplete(r,!!n,!!s)||0),wasm_on_body:(t,r,n)=>{U(ue.ptr===t);let s=r-kA+DA.byteOffset;return ue.onBody(new Gs(DA.buffer,s,n))||0},wasm_on_message_complete:t=>(U(ue.ptr===t),ue.onMessageComplete()||0)}})}var La=null,xa=D0();xa.catch();var ue=null,DA=null,Hs=0,kA=null,k0=0,In=1,lr=2|In,qs=4|In,Ya=8|k0,Ga=class{constructor(A,t,{exports:r}){U(Number.isFinite(A[Ma])&&A[Ma]>0),this.llhttp=r,this.ptr=this.llhttp.llhttp_alloc(Oe.TYPE.RESPONSE),this.client=A,this.socket=t,this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.statusCode=null,this.statusText="",this.upgrade=!1,this.headers=[],this.headersSize=0,this.headersMaxSize=A[Ma],this.shouldKeepAlive=!1,this.paused=!1,this.resume=this.resume.bind(this),this.bytesRead=0,this.keepAlive="",this.contentLength="",this.connection="",this.maxResponseSize=A[p0]}setTimeout(A,t){A!==this.timeoutValue||t&In^this.timeoutType&In?(this.timeout&&(Na.clearTimeout(this.timeout),this.timeout=null),A&&(t&In?this.timeout=Na.setFastTimeout(QB,A,new WeakRef(this)):(this.timeout=setTimeout(QB,A,new WeakRef(this)),this.timeout.unref())),this.timeoutValue=A):this.timeout&&this.timeout.refresh&&this.timeout.refresh(),this.timeoutType=t}resume(){this.socket.destroyed||!this.paused||(U(this.ptr!=null),U(ue==null),this.llhttp.llhttp_resume(this.ptr),U(this.timeoutType===qs),this.timeout&&this.timeout.refresh&&this.timeout.refresh(),this.paused=!1,this.execute(this.socket.read()||lB),this.readMore())}readMore(){for(;!this.paused&&this.ptr;){let A=this.socket.read();if(A===null)break;this.execute(A)}}execute(A){U(this.ptr!=null),U(ue==null),U(!this.paused);let{socket:t,llhttp:r}=this;A.length>Hs&&(kA&&r.free(kA),Hs=Math.ceil(A.length/4096)*4096,kA=r.malloc(Hs)),new Uint8Array(r.memory.buffer,kA,Hs).set(A);try{let n;try{DA=A,ue=this,n=r.llhttp_execute(this.ptr,kA,A.length)}catch(i){throw i}finally{ue=null,DA=null}let s=r.llhttp_get_error_pos(this.ptr)-kA;if(n!==Oe.ERROR.OK){let i=A.subarray(s);if(n===Oe.ERROR.PAUSED_UPGRADE)this.onUpgrade(i);else if(n===Oe.ERROR.PAUSED)this.paused=!0,t.unshift(i);else throw this.createError(n,i)}}catch(n){T.destroy(t,n)}}finish(){U(ue===null),U(this.ptr!=null),U(!this.paused);let{llhttp:A}=this,t;try{ue=this,t=A.llhttp_finish(this.ptr)}finally{ue=null}return t===Oe.ERROR.OK?null:t===Oe.ERROR.PAUSED||t===Oe.ERROR.PAUSED_UPGRADE?(this.paused=!0,null):this.createError(t,lB)}createError(A,t){let{llhttp:r,contentLength:n,bytesRead:s}=this;if(n&&s!==parseInt(n,10))return new oB;let i=r.llhttp_get_error_reason(this.ptr),o="";if(i){let a=new Uint8Array(r.memory.buffer,i).indexOf(0);o="Response does not match the HTTP/1.1 protocol ("+Buffer.from(r.memory.buffer,i,a).toString()+")"}return new E0(o,Oe.ERROR[A],t)}destroy(){U(this.ptr!=null),U(ue==null),this.llhttp.llhttp_free(this.ptr),this.ptr=null,this.timeout&&Na.clearTimeout(this.timeout),this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.paused=!1}onStatus(A){this.statusText=A.toString()}onMessageBegin(){let{socket:A,client:t}=this;if(A.destroyed)return-1;if(t[we]===0)return T.destroy(A,new cr("bad response",T.getSocketInfo(A))),-1;let r=t[aA][t[tA]];if(!r)return-1;r.onResponseStarted()}onHeaderField(A){let t=this.headers.length;(t&1)===0?this.headers.push(A):this.headers[t-1]=Buffer.concat([this.headers[t-1],A]),this.trackHeader(A.length)}onHeaderValue(A){let t=this.headers.length;(t&1)===1?(this.headers.push(A),t+=1):this.headers[t-1]=Buffer.concat([this.headers[t-1],A]);let r=this.headers[t-2];if(r.length===10){let n=T.bufferToLowerCasedHeaderName(r);n==="keep-alive"?this.keepAlive+=A.toString():n==="connection"&&(this.connection+=A.toString())}else r.length===14&&T.bufferToLowerCasedHeaderName(r)==="content-length"&&(this.contentLength+=A.toString());this.trackHeader(A.length)}trackHeader(A){this.headersSize+=A,this.headersSize>=this.headersMaxSize&&T.destroy(this.socket,new l0)}onUpgrade(A){let{upgrade:t,client:r,socket:n,headers:s,statusCode:i}=this;U(t),U(r[mt]===n),U(!n.destroyed),U(!this.paused),U((s.length&1)===0);let o=r[aA][r[tA]];U(o),U(o.upgrade||o.method==="CONNECT"),this.statusCode=null,this.statusText="",this.shouldKeepAlive=null,this.headers=[],this.headersSize=0,n.unshift(A),n[ae].destroy(),n[ae]=null,n[Vs]=null,n[Ye]=null,m0(n),r[mt]=null,r[CB]=null,r[aA][r[tA]++]=null,r.emit("disconnect",r[IB],[r],new gr("upgrade"));try{o.onUpgrade(i,s,n)}catch(a){T.destroy(n,a)}r[VA]()}onHeadersComplete(A,t,r){let{client:n,socket:s,headers:i,statusText:o}=this;if(s.destroyed)return-1;if(n[we]===0)return T.destroy(s,new cr("bad response",T.getSocketInfo(s))),-1;let a=n[aA][n[tA]];if(!a)return-1;if(U(!this.upgrade),U(this.statusCode<200),A===100)return T.destroy(s,new cr("bad response",T.getSocketInfo(s))),-1;if(t&&!a.upgrade)return T.destroy(s,new cr("bad upgrade",T.getSocketInfo(s))),-1;if(U(this.timeoutType===lr),this.statusCode=A,this.shouldKeepAlive=r||a.method==="HEAD"&&!s[He]&&this.connection.toLowerCase()==="keep-alive",this.statusCode>=200){let l=a.bodyTimeout!=null?a.bodyTimeout:n[w0];this.setTimeout(l,qs)}else this.timeout&&this.timeout.refresh&&this.timeout.refresh();if(a.method==="CONNECT")return U(n[we]===1),this.upgrade=!0,2;if(t)return U(n[we]===1),this.upgrade=!0,2;if(U((this.headers.length&1)===0),this.headers=[],this.headersSize=0,this.shouldKeepAlive&&n[vs]){let l=this.keepAlive?T.parseKeepAliveTimeout(this.keepAlive):null;if(l!=null){let c=Math.min(l-n[f0],n[C0]);c<=0?s[He]=!0:n[Ws]=c}else n[Ws]=n[u0]}else s[He]=!0;let g=a.onHeaders(A,i,this.resume,o)===!1;return a.aborted?-1:a.method==="HEAD"||A<200?1:(s[hn]&&(s[hn]=!1,n[VA]()),g?Oe.ERROR.PAUSED:0)}onBody(A){let{client:t,socket:r,statusCode:n,maxResponseSize:s}=this;if(r.destroyed)return-1;let i=t[aA][t[tA]];if(U(i),U(this.timeoutType===qs),this.timeout&&this.timeout.refresh&&this.timeout.refresh(),U(n>=200),s>-1&&this.bytesRead+A.length>s)return T.destroy(r,new B0),-1;if(this.bytesRead+=A.length,i.onData(A)===!1)return Oe.ERROR.PAUSED}onMessageComplete(){let{client:A,socket:t,statusCode:r,upgrade:n,headers:s,contentLength:i,bytesRead:o,shouldKeepAlive:a}=this;if(t.destroyed&&(!r||a))return-1;if(n)return;U(r>=100),U((this.headers.length&1)===0);let g=A[aA][A[tA]];if(U(g),this.statusCode=null,this.statusText="",this.bytesRead=0,this.contentLength="",this.keepAlive="",this.connection="",this.headers=[],this.headersSize=0,!(r<200)){if(g.method!=="HEAD"&&i&&o!==parseInt(i,10))return T.destroy(t,new oB),-1;if(g.onComplete(s),A[aA][A[tA]++]=null,t[Ja]=!0,t[$A])return U(A[we]===0),T.destroy(t,new gr("reset")),Oe.ERROR.PAUSED;if(a){if(t[He]&&A[we]===0)return T.destroy(t,new gr("reset")),Oe.ERROR.PAUSED;A[vs]==null||A[vs]===1?setImmediate(()=>A[VA]()):A[VA]()}else return T.destroy(t,new gr("reset")),Oe.ERROR.PAUSED}}};function QB(e){let{socket:A,timeoutType:t,client:r,paused:n}=e.deref();t===lr?(!A[$A]||A.writableNeedDrain||r[we]>1)&&(U(!n,"cannot be paused while waiting for headers"),T.destroy(A,new g0)):t===qs?n||T.destroy(A,new Q0):t===Ya&&(U(r[we]===0&&r[Ws]),T.destroy(A,new gr("socket idle timeout")))}async function b0(e,A){e[mt]=A,La||(La=await xa,xa=null),A[un]=!1,A[$A]=!1,A[He]=!1,A[hn]=!1,A[Dt]=0,A[pt]=null,A[Ja]=!1,A[ae]=new Ga(e,A,La),Js(A,"error",function(r){U(r.code!=="ERR_TLS_CERT_ALTNAME_INVALID");let n=this[ae];if(r.code==="ECONNRESET"&&n.statusCode&&!n.shouldKeepAlive){let s=n.finish();s&&(this[Ye]=s,this[Vs][gB](s));return}this[Ye]=r,this[Vs][gB](r)}),Js(A,"readable",function(){let r=this[ae];r&&r.readMore()}),Js(A,"end",function(){let r=this[ae];if(r.statusCode&&!r.shouldKeepAlive){let n=r.finish();n&&T.destroy(this,n);return}T.destroy(this,new cr("other side closed",T.getSocketInfo(this)))}),Js(A,"close",function(){let r=this[Vs],n=this[ae];fB(this),n&&(!this[Ye]&&n.statusCode&&!n.shouldKeepAlive&&(this[Ye]=n.finish()||this[Ye]),this[ae].destroy(),this[ae]=null);let s=this[Ye]||new cr("closed",T.getSocketInfo(this));if(r[mt]=null,r[CB]=null,r.destroyed){U(r[hB]===0);let i=r[aA].splice(r[tA]);for(let o=0;o<i.length;o++){let a=i[o];T.errorRequest(r,a,s)}}else if(r[we]>0&&s.code!=="UND_ERR_INFO"){let i=r[aA][r[tA]];r[aA][r[tA]++]=null,T.errorRequest(r,i,s)}r[h0]=r[tA],U(r[we]===0),r.emit("disconnect",r[IB],[r],s),r[VA]()});let t=!1;return A.on("close",()=>{t=!0}),{version:"h1",defaultPipelining:1,write(...r){return N0(e,...r)},resume(){R0(e)},destroy(r,n){t?queueMicrotask(n):A.destroy(r).on("close",n)},get destroyed(){return A.destroyed},busy(r){return!!(A[$A]||A[He]||A[hn]||A[Dt]===1||r&&(e[we]>0&&!r.idempotent||e[we]>0&&(r.upgrade||r.method==="CONNECT")||e[we]>0&&T.bodyLength(r.body)!==0&&(T.isStream(r.body)||T.isAsyncIterable(r.body)||T.isFormDataLike(r.body))))}}}function fB(e){e[pt]&&(clearTimeout(e[pt]),e[pt]=null),e[Dt]=0}function F0(e,A){A[Dt]=1,A[pt]=setTimeout(()=>{A[pt]=null,A[Dt]=2,e[mt]===A&&!A.destroyed&&e[VA]()},0),A[pt].unref?.()}function R0(e){let A=e[mt];if(A&&!A.destroyed){if(e[aB]===0?!A[un]&&A.unref&&(A.unref(),A[un]=!0):A[un]&&A.ref&&(A.ref(),A[un]=!1),e[we]===0&&e[hB]>0&&A[Ja]){if(A[Dt]===0)return F0(e,A),A[ae].readMore(),A.destroyed,void 0;if(A[Dt]===1)return A[ae].readMore(),A.destroyed,void 0}if(e[we]===0&&(A[ae].readMore(),A.destroyed))return;if(e[aB]===0)A[ae].timeoutType!==Ya&&A[ae].setTimeout(e[Ws],Ya);else if(e[we]>0&&A[ae].statusCode<200&&A[ae].timeoutType!==lr){let t=e[aA][e[tA]],r=t.headersTimeout!=null?t.headersTimeout:e[d0];A[ae].setTimeout(r,lr)}}}function S0(e){return e!=="GET"&&e!=="HEAD"&&e!=="OPTIONS"&&e!=="TRACE"&&e!=="CONNECT"}function N0(e,A){let{method:t,path:r,host:n,upgrade:s,blocking:i,reset:o}=A,{body:a,headers:g,contentLength:l}=A,c=t==="PUT"||t==="POST"||t==="PATCH"||t==="QUERY"||t==="PROPFIND"||t==="PROPPATCH";if(T.isFormDataLike(a)){Ua||(Ua=ar().extractBody);let[h,I]=Ua(a);A.contentType==null&&g.push("content-type",I),a=h.stream,l=h.length}else if(T.isBlobLike(a)&&A.contentType==null){let h=a.type;if(h){let I=`${h}`;if(!T.isValidHeaderValue(I))return T.errorRequest(e,A,new c0("invalid content-type header")),!1;g.push("content-type",I)}}a&&typeof a.read=="function"&&a.read(0);let Q=T.bodyLength(a);if(l=Q??l,l===null&&(l=A.contentLength),l===0&&!c&&(l=null),S0(t)&&l>0&&A.contentLength!==null&&A.contentLength!==l){if(e[Ta])return T.errorRequest(e,A,new yt),!1;process.emitWarning(new yt)}let B=e[mt];fB(B);let E=h=>{A.aborted||A.completed||(T.errorRequest(e,A,h||new uB),T.destroy(a),T.destroy(B,new gr("aborted")))};try{A.onConnect(E)}catch(h){T.errorRequest(e,A,h)}if(A.aborted)return!1;t==="HEAD"&&(B[He]=!0),(s||t==="CONNECT")&&(B[He]=!0),o!=null&&(B[He]=o),e[cB]&&B[y0]++>=e[cB]&&(B[He]=!0),i&&(B[hn]=!0);let u=`${t} ${r} HTTP/1.1\r
14
- `;if(typeof n=="string"?u+=`host: ${n}\r
15
- `:u+=e[I0],s?u+=`connection: upgrade\r
16
- upgrade: ${s}\r
17
- `:e[vs]&&!B[He]?u+=`connection: keep-alive\r
18
- `:u+=`connection: close\r
19
- `,Array.isArray(g))for(let h=0;h<g.length;h+=2){let I=g[h+0],C=g[h+1];if(Array.isArray(C))for(let D=0;D<C.length;D++)u+=`${I}: ${C[D]}\r
20
- `;else u+=`${I}: ${C}\r
21
- `}return iB.sendHeaders.hasSubscribers&&iB.sendHeaders.publish({request:A,headers:u,socket:B}),!a||Q===0?EB(E,null,e,A,B,l,u,c):T.isBuffer(a)?EB(E,a,e,A,B,l,u,c):T.isBlobLike(a)?typeof a.stream=="function"?BB(E,a.stream(),e,A,B,l,u,c):U0(E,a,e,A,B,l,u,c):T.isStream(a)?M0(E,a,e,A,B,l,u,c):T.isIterable(a)?BB(E,a,e,A,B,l,u,c):U(!1),!0}function M0(e,A,t,r,n,s,i,o){U(s!==0||t[we]===0,"stream body cannot be pipelined");let a=!1,g=new Ps({abort:e,socket:n,request:r,contentLength:s,client:t,expectsPayload:o,header:i}),l=function(E){if(!a)try{!g.write(E)&&this.pause&&this.pause()}catch(u){T.destroy(this,u)}},c=function(){a||A.resume&&A.resume()},Q=function(){if(queueMicrotask(()=>{A.removeListener("error",B)}),!a){let E=new uB;queueMicrotask(()=>B(E))}},B=function(E){if(!a){if(a=!0,U(n.destroyed||n[$A]&&t[we]<=1),n.off("drain",c).off("error",B),A.removeListener("data",l).removeListener("end",B).removeListener("close",Q),!E)try{g.end()}catch(u){E=u}g.destroy(E),E&&(E.code!=="UND_ERR_INFO"||E.message!=="reset")?T.destroy(A,E):T.destroy(A)}};A.on("data",l).on("end",B).on("error",B).on("close",Q),A.resume&&A.resume(),n.on("drain",c).on("error",B),A.errorEmitted??A.errored?setImmediate(()=>B(A.errored)):(A.endEmitted??A.readableEnded)&&setImmediate(()=>B(null)),(A.closeEmitted??A.closed)&&setImmediate(Q)}function EB(e,A,t,r,n,s,i,o){try{A?T.isBuffer(A)&&(U(s===A.byteLength,"buffer body must have content length"),n.cork(),n.write(`${i}content-length: ${s}\r
22
- \r
23
- `,"latin1"),n.write(A),n.uncork(),r.onBodySent(A),!o&&r.reset!==!1&&(n[He]=!0)):s===0?n.write(`${i}content-length: 0\r
24
- \r
25
- `,"latin1"):(U(s===null,"no body must not have content length"),n.write(`${i}\r
26
- `,"latin1")),r.onRequestSent(),t[VA]()}catch(a){e(a)}}async function U0(e,A,t,r,n,s,i,o){U(s===A.size,"blob body must have content length");try{if(s!=null&&s!==A.size)throw new yt;let a=Buffer.from(await A.arrayBuffer());n.cork(),n.write(`${i}content-length: ${s}\r
27
- \r
28
- `,"latin1"),n.write(a),n.uncork(),r.onBodySent(a),r.onRequestSent(),!o&&r.reset!==!1&&(n[He]=!0),t[VA]()}catch(a){e(a)}}async function BB(e,A,t,r,n,s,i,o){U(s!==0||t[we]===0,"iterator body cannot be pipelined");let a=null;function g(){if(a){let Q=a;a=null,Q()}}let l=()=>new Promise((Q,B)=>{U(a===null),n[Ye]?B(n[Ye]):a=Q});n.on("close",g).on("drain",g);let c=new Ps({abort:e,socket:n,request:r,contentLength:s,client:t,expectsPayload:o,header:i});try{for await(let Q of A){if(n[Ye])throw n[Ye];c.write(Q)||await l()}c.end()}catch(Q){c.destroy(Q)}finally{n.off("close",g).off("drain",g)}}var Ps=class{constructor({abort:A,socket:t,request:r,contentLength:n,client:s,expectsPayload:i,header:o}){this.socket=t,this.request=r,this.contentLength=n,this.client=s,this.bytesWritten=0,this.expectsPayload=i,this.header=o,this.abort=A,t[$A]=!0}write(A){let{socket:t,request:r,contentLength:n,client:s,bytesWritten:i,expectsPayload:o,header:a}=this;if(t[Ye])throw t[Ye];if(t.destroyed)return!1;let g=Buffer.byteLength(A);if(!g)return!0;if(n!==null&&i+g>n){if(s[Ta])throw new yt;process.emitWarning(new yt)}t.cork(),i===0&&(!o&&r.reset!==!1&&(t[He]=!0),n===null?t.write(`${a}transfer-encoding: chunked\r
29
- `,"latin1"):t.write(`${a}content-length: ${n}\r
30
- \r
31
- `,"latin1")),n===null&&t.write(`\r
32
- ${g.toString(16)}\r
33
- `,"latin1"),this.bytesWritten+=g;let l=t.write(A);return t.uncork(),r.onBodySent(A),l||t[ae].timeout&&t[ae].timeoutType===lr&&t[ae].timeout.refresh&&t[ae].timeout.refresh(),l}end(){let{socket:A,contentLength:t,client:r,bytesWritten:n,expectsPayload:s,header:i,request:o}=this;if(o.onRequestSent(),A[$A]=!1,A[Ye])throw A[Ye];if(!A.destroyed){if(n===0?s?A.write(`${i}content-length: 0\r
34
- \r
35
- `,"latin1"):A.write(`${i}\r
36
- `,"latin1"):t===null&&A.write(`\r
37
- 0\r
38
- \r
39
- `,"latin1"),t!==null&&n!==t){if(r[Ta])throw new yt;process.emitWarning(new yt)}A[ae].timeout&&A[ae].timeoutType===lr&&A[ae].timeout.refresh&&A[ae].timeout.refresh(),r[VA]()}}destroy(A){let{socket:t,client:r,abort:n}=this;t[$A]=!1,A&&(U(r[we]<=1,"pipeline should only contain this request"),n(A))}};dB.exports=b0});var RB=p((mx,FB)=>{"use strict";var rA=y("node:assert"),{pipeline:L0}=y("node:stream"),W=v(),{RequestContentLengthMismatchError:Ha,RequestAbortedError:yB,SocketError:Cn,InformationalError:Va}=Z(),{kUrl:Os,kReset:Zs,kClient:Qr,kRunning:_s,kPending:T0,kQueue:et,kPendingIdx:va,kRunningIdx:cA,kError:lA,kSocket:be,kStrictContentLength:x0,kOnError:qa,kMaxConcurrentStreams:bB,kHTTP2Session:gA,kResume:At,kSize:Y0,kHTTPContext:G0}=Qe(),vA=Symbol("open streams"),pB,mB=!1,zs;try{zs=y("node:http2")}catch{zs={constants:{}}}var{constants:{HTTP2_HEADER_AUTHORITY:J0,HTTP2_HEADER_METHOD:H0,HTTP2_HEADER_PATH:V0,HTTP2_HEADER_SCHEME:v0,HTTP2_HEADER_CONTENT_LENGTH:q0,HTTP2_HEADER_EXPECT:W0,HTTP2_HEADER_STATUS:P0}}=zs;function O0(e){let A=[];for(let[t,r]of Object.entries(e))if(Array.isArray(r))for(let n of r)A.push(Buffer.from(t),Buffer.from(n));else A.push(Buffer.from(t),Buffer.from(r));return A}async function z0(e,A){e[be]=A,mB||(mB=!0,process.emitWarning("H2 support is experimental, expect them to change at any time.",{code:"UNDICI-H2"}));let t=zs.connect(e[Os],{createConnection:()=>A,peerMaxConcurrentStreams:e[bB]});t[vA]=0,t[Qr]=e,t[be]=A,W.addListener(t,"error",_0),W.addListener(t,"frameError",K0),W.addListener(t,"end",X0),W.addListener(t,"goaway",j0),W.addListener(t,"close",function(){let{[Qr]:n}=this,{[be]:s}=n,i=this[be][lA]||this[lA]||new Cn("closed",W.getSocketInfo(s));if(n[gA]=null,n.destroyed){rA(n[T0]===0);let o=n[et].splice(n[cA]);for(let a=0;a<o.length;a++){let g=o[a];W.errorRequest(n,g,i)}}}),t.unref(),e[gA]=t,A[gA]=t,W.addListener(A,"error",function(n){rA(n.code!=="ERR_TLS_CERT_ALTNAME_INVALID"),this[lA]=n,this[Qr][qa](n)}),W.addListener(A,"end",function(){W.destroy(this,new Cn("other side closed",W.getSocketInfo(this)))}),W.addListener(A,"close",function(){let n=this[lA]||new Cn("closed",W.getSocketInfo(this));e[be]=null,this[gA]!=null&&this[gA].destroy(n),e[va]=e[cA],rA(e[_s]===0),e.emit("disconnect",e[Os],[e],n),e[At]()});let r=!1;return A.on("close",()=>{r=!0}),{version:"h2",defaultPipelining:1/0,write(...n){return eD(e,...n)},resume(){Z0(e)},destroy(n,s){r?queueMicrotask(s):A.destroy(n).on("close",s)},get destroyed(){return A.destroyed},busy(){return!1}}}function Z0(e){let A=e[be];A?.destroyed===!1&&(e[Y0]===0&&e[bB]===0?(A.unref(),e[gA].unref()):(A.ref(),e[gA].ref()))}function _0(e){rA(e.code!=="ERR_TLS_CERT_ALTNAME_INVALID"),this[be][lA]=e,this[Qr][qa](e)}function K0(e,A,t){if(t===0){let r=new Va(`HTTP/2: "frameError" received - type ${e}, code ${A}`);this[be][lA]=r,this[Qr][qa](r)}}function X0(){let e=new Cn("other side closed",W.getSocketInfo(this[be]));this.destroy(e),W.destroy(this[be],e)}function j0(e){let A=this[lA]||new Cn(`HTTP/2: "GOAWAY" frame received with code ${e}`,W.getSocketInfo(this)),t=this[Qr];if(t[be]=null,t[G0]=null,this[gA]!=null&&(this[gA].destroy(A),this[gA]=null),W.destroy(this[be],A),t[cA]<t[et].length){let r=t[et][t[cA]];t[et][t[cA]++]=null,W.errorRequest(t,r,A),t[va]=t[cA]}rA(t[_s]===0),t.emit("disconnect",t[Os],[t],A),t[At]()}function $0(e){return e!=="GET"&&e!=="HEAD"&&e!=="OPTIONS"&&e!=="TRACE"&&e!=="CONNECT"}function eD(e,A){let t=e[gA],{method:r,path:n,host:s,upgrade:i,expectContinue:o,signal:a,headers:g}=A,{body:l}=A;if(i)return W.errorRequest(e,A,new Error("Upgrade not supported for H2")),!1;let c={};for(let f=0;f<g.length;f+=2){let R=g[f+0],S=g[f+1];if(Array.isArray(S))for(let d=0;d<S.length;d++)c[R]?c[R]+=`,${S[d]}`:c[R]=S[d];else c[R]=S}let Q,{hostname:B,port:E}=e[Os];c[J0]=s||`${B}${E?`:${E}`:""}`,c[H0]=r;let u=f=>{A.aborted||A.completed||(f=f||new yB,W.errorRequest(e,A,f),Q!=null&&W.destroy(Q,f),W.destroy(l,f),e[et][e[cA]++]=null,e[At]())};try{A.onConnect(u)}catch(f){W.errorRequest(e,A,f)}if(A.aborted)return!1;if(r==="CONNECT")return t.ref(),Q=t.request(c,{endStream:!1,signal:a}),Q.id&&!Q.pending?(A.onUpgrade(null,null,Q),++t[vA],e[et][e[cA]++]=null):Q.once("ready",()=>{A.onUpgrade(null,null,Q),++t[vA],e[et][e[cA]++]=null}),Q.once("close",()=>{t[vA]-=1,t[vA]===0&&t.unref()}),!0;c[V0]=n,c[v0]="https";let h=r==="PUT"||r==="POST"||r==="PATCH";l&&typeof l.read=="function"&&l.read(0);let I=W.bodyLength(l);if(W.isFormDataLike(l)){pB??=ar().extractBody;let[f,R]=pB(l);c["content-type"]=R,l=f.stream,I=f.length}if(I==null&&(I=A.contentLength),(I===0||!h)&&(I=null),$0(r)&&I>0&&A.contentLength!=null&&A.contentLength!==I){if(e[x0])return W.errorRequest(e,A,new Ha),!1;process.emitWarning(new Ha)}I!=null&&(rA(l,"no body must not have content length"),c[q0]=`${I}`),t.ref();let C=r==="GET"||r==="HEAD"||l===null;return o?(c[W0]="100-continue",Q=t.request(c,{endStream:C,signal:a}),Q.once("continue",D)):(Q=t.request(c,{endStream:C,signal:a}),D()),++t[vA],Q.once("response",f=>{let{[P0]:R,...S}=f;if(A.onResponseStarted(),A.aborted){let d=new yB;W.errorRequest(e,A,d),W.destroy(Q,d);return}A.onHeaders(Number(R),O0(S),Q.resume.bind(Q),"")===!1&&Q.pause(),Q.on("data",d=>{A.onData(d)===!1&&Q.pause()})}),Q.once("end",()=>{(Q.state?.state==null||Q.state.state<6)&&A.onComplete([]),t[vA]===0&&t.unref(),u(new Va("HTTP/2: stream half-closed (remote)")),e[et][e[cA]++]=null,e[va]=e[cA],e[At]()}),Q.once("close",()=>{t[vA]-=1,t[vA]===0&&t.unref()}),Q.once("error",function(f){u(f)}),Q.once("frameError",(f,R)=>{u(new Va(`HTTP/2: "frameError" received - type ${f}, code ${R}`))}),!0;function D(){!l||I===0?DB(u,Q,null,e,A,e[be],I,h):W.isBuffer(l)?DB(u,Q,l,e,A,e[be],I,h):W.isBlobLike(l)?typeof l.stream=="function"?kB(u,Q,l.stream(),e,A,e[be],I,h):tD(u,Q,l,e,A,e[be],I,h):W.isStream(l)?AD(u,e[be],h,Q,l,e,A,I):W.isIterable(l)?kB(u,Q,l,e,A,e[be],I,h):rA(!1)}}function DB(e,A,t,r,n,s,i,o){try{t!=null&&W.isBuffer(t)&&(rA(i===t.byteLength,"buffer body must have content length"),A.cork(),A.write(t),A.uncork(),A.end(),n.onBodySent(t)),o||(s[Zs]=!0),n.onRequestSent(),r[At]()}catch(a){e(a)}}function AD(e,A,t,r,n,s,i,o){rA(o!==0||s[_s]===0,"stream body cannot be pipelined");let a=L0(n,r,l=>{l?(W.destroy(a,l),e(l)):(W.removeAllListeners(a),i.onRequestSent(),t||(A[Zs]=!0),s[At]())});W.addListener(a,"data",g);function g(l){i.onBodySent(l)}}async function tD(e,A,t,r,n,s,i,o){rA(i===t.size,"blob body must have content length");try{if(i!=null&&i!==t.size)throw new Ha;let a=Buffer.from(await t.arrayBuffer());A.cork(),A.write(a),A.uncork(),A.end(),n.onBodySent(a),n.onRequestSent(),o||(s[Zs]=!0),r[At]()}catch(a){e(a)}}async function kB(e,A,t,r,n,s,i,o){rA(i!==0||r[_s]===0,"iterator body cannot be pipelined");let a=null;function g(){if(a){let c=a;a=null,c()}}let l=()=>new Promise((c,Q)=>{rA(a===null),s[lA]?Q(s[lA]):a=c});A.on("close",g).on("drain",g);try{for await(let c of t){if(s[lA])throw s[lA];let Q=A.write(c);n.onBodySent(c),Q||await l()}A.end(),n.onRequestSent(),o||(s[Zs]=!0),r[At]()}catch(c){e(c)}finally{A.off("close",g).off("drain",g)}}FB.exports=z0});var Xs=p((Dx,MB)=>{"use strict";var bA=v(),{kBodyUsed:fn}=Qe(),Pa=y("node:assert"),{InvalidArgumentError:rD}=Z(),nD=y("node:events"),sD=[300,301,302,303,307,308],SB=Symbol("body"),Ks=class{constructor(A){this[SB]=A,this[fn]=!1}async*[Symbol.asyncIterator](){Pa(!this[fn],"disturbed"),this[fn]=!0,yield*this[SB]}},Wa=class{constructor(A,t,r,n){if(t!=null&&(!Number.isInteger(t)||t<0))throw new rD("maxRedirections must be a positive number");bA.validateHandler(n,r.method,r.upgrade),this.dispatch=A,this.location=null,this.abort=null,this.opts={...r,maxRedirections:0},this.maxRedirections=t,this.handler=n,this.history=[],this.redirectionLimitReached=!1,bA.isStream(this.opts.body)?(bA.bodyLength(this.opts.body)===0&&this.opts.body.on("data",function(){Pa(!1)}),typeof this.opts.body.readableDidRead!="boolean"&&(this.opts.body[fn]=!1,nD.prototype.on.call(this.opts.body,"data",function(){this[fn]=!0}))):this.opts.body&&typeof this.opts.body.pipeTo=="function"?this.opts.body=new Ks(this.opts.body):this.opts.body&&typeof this.opts.body!="string"&&!ArrayBuffer.isView(this.opts.body)&&bA.isIterable(this.opts.body)&&(this.opts.body=new Ks(this.opts.body))}onConnect(A){this.abort=A,this.handler.onConnect(A,{history:this.history})}onUpgrade(A,t,r){this.handler.onUpgrade(A,t,r)}onError(A){this.handler.onError(A)}onHeaders(A,t,r,n){if(this.location=this.history.length>=this.maxRedirections||bA.isDisturbed(this.opts.body)?null:iD(A,t),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(A,t,r,n);let{origin:s,pathname:i,search:o}=bA.parseURL(new URL(this.location,this.opts.origin&&new URL(this.opts.path,this.opts.origin))),a=o?`${i}${o}`:i;this.opts.headers=oD(this.opts.headers,A===303,this.opts.origin!==s),this.opts.path=a,this.opts.origin=s,this.opts.maxRedirections=0,this.opts.query=null,A===303&&this.opts.method!=="HEAD"&&(this.opts.method="GET",this.opts.body=null)}onData(A){if(!this.location)return this.handler.onData(A)}onComplete(A){this.location?(this.location=null,this.abort=null,this.dispatch(this.opts,this)):this.handler.onComplete(A)}onBodySent(A){this.handler.onBodySent&&this.handler.onBodySent(A)}};function iD(e,A){if(sD.indexOf(e)===-1)return null;for(let t=0;t<A.length;t+=2)if(A[t].length===8&&bA.headerNameToString(A[t])==="location")return A[t+1]}function NB(e,A,t){if(e.length===4)return bA.headerNameToString(e)==="host";if(A&&bA.headerNameToString(e).startsWith("content-"))return!0;if(t&&(e.length===13||e.length===6||e.length===19)){let r=bA.headerNameToString(e);return r==="authorization"||r==="cookie"||r==="proxy-authorization"}return!1}function oD(e,A,t){let r=[];if(Array.isArray(e))for(let n=0;n<e.length;n+=2)NB(e[n],A,t)||r.push(e[n],e[n+1]);else if(e&&typeof e=="object")for(let n of Object.keys(e))NB(n,A,t)||r.push(n,e[n]);else Pa(e==null,"headers must be an object or an array");return r}MB.exports=Wa});var js=p((kx,UB)=>{"use strict";var aD=Xs();function cD({maxRedirections:e}){return A=>function(r,n){let{maxRedirections:s=e}=r;if(!s)return A(r,n);let i=new aD(A,s,r,n);return r={...r,maxRedirections:0},A(r,i)}}UB.exports=cD});var ur=p((bx,qB)=>{"use strict";var qA=y("node:assert"),JB=y("node:net"),gD=y("node:http"),kt=v(),{channels:Er}=_t(),lD=qQ(),QD=$t(),{InvalidArgumentError:he,InformationalError:ED,ClientDestroyedError:BD}=Z(),uD=sn(),{kUrl:FA,kServerName:tt,kClient:ID,kBusy:Oa,kConnect:hD,kResuming:bt,kRunning:mn,kPending:Dn,kSize:pn,kQueue:QA,kConnected:CD,kConnecting:Br,kNeedDrain:nt,kKeepAliveDefaultTimeout:LB,kHostHeader:fD,kPendingIdx:EA,kRunningIdx:WA,kError:dD,kPipelining:$s,kKeepAliveTimeoutValue:wD,kMaxHeadersSize:yD,kKeepAliveMaxTimeout:pD,kKeepAliveTimeoutThreshold:mD,kHeadersTimeout:DD,kBodyTimeout:kD,kStrictContentLength:bD,kConnector:dn,kMaxRedirections:FD,kMaxRequests:za,kCounter:RD,kClose:SD,kDestroy:ND,kDispatch:MD,kInterceptors:TB,kLocalAddress:wn,kMaxResponseSize:UD,kOnError:LD,kHTTPContext:Ce,kMaxConcurrentStreams:TD,kResume:yn}=Qe(),xD=wB(),YD=RB(),xB=!1,rt=Symbol("kClosedResolve"),YB=()=>{};function HB(e){return e[$s]??e[Ce]?.defaultPipelining??1}var Za=class extends QD{constructor(A,{interceptors:t,maxHeaderSize:r,headersTimeout:n,socketTimeout:s,requestTimeout:i,connectTimeout:o,bodyTimeout:a,idleTimeout:g,keepAlive:l,keepAliveTimeout:c,maxKeepAliveTimeout:Q,keepAliveMaxTimeout:B,keepAliveTimeoutThreshold:E,socketPath:u,pipelining:h,tls:I,strictContentLength:C,maxCachedSessions:D,maxRedirections:f,connect:R,maxRequestsPerClient:S,localAddress:d,maxResponseSize:se,autoSelectFamily:De,autoSelectFamilyAttemptTimeout:Te,maxConcurrentStreams:me,allowH2:w,webSocket:H}={}){if(super({webSocket:H}),l!==void 0)throw new he("unsupported keepAlive, use pipelining=0 instead");if(s!==void 0)throw new he("unsupported socketTimeout, use headersTimeout & bodyTimeout instead");if(i!==void 0)throw new he("unsupported requestTimeout, use headersTimeout & bodyTimeout instead");if(g!==void 0)throw new he("unsupported idleTimeout, use keepAliveTimeout instead");if(Q!==void 0)throw new he("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead");if(r!=null&&!Number.isFinite(r))throw new he("invalid maxHeaderSize");if(u!=null&&typeof u!="string")throw new he("invalid socketPath");if(o!=null&&(!Number.isFinite(o)||o<0))throw new he("invalid connectTimeout");if(c!=null&&(!Number.isFinite(c)||c<=0))throw new he("invalid keepAliveTimeout");if(B!=null&&(!Number.isFinite(B)||B<=0))throw new he("invalid keepAliveMaxTimeout");if(E!=null&&!Number.isFinite(E))throw new he("invalid keepAliveTimeoutThreshold");if(n!=null&&(!Number.isInteger(n)||n<0))throw new he("headersTimeout must be a positive integer or zero");if(a!=null&&(!Number.isInteger(a)||a<0))throw new he("bodyTimeout must be a positive integer or zero");if(R!=null&&typeof R!="function"&&typeof R!="object")throw new he("connect must be a function or an object");if(f!=null&&(!Number.isInteger(f)||f<0))throw new he("maxRedirections must be a positive number");if(S!=null&&(!Number.isInteger(S)||S<0))throw new he("maxRequestsPerClient must be a positive number");if(d!=null&&(typeof d!="string"||JB.isIP(d)===0))throw new he("localAddress must be valid string IP address");if(se!=null&&(!Number.isInteger(se)||se<-1))throw new he("maxResponseSize must be a positive number");if(Te!=null&&(!Number.isInteger(Te)||Te<-1))throw new he("autoSelectFamilyAttemptTimeout must be a positive number");if(w!=null&&typeof w!="boolean")throw new he("allowH2 must be a valid boolean value");if(me!=null&&(typeof me!="number"||me<1))throw new he("maxConcurrentStreams must be a positive integer, greater than 0");typeof R!="function"&&(R=uD({...I,maxCachedSessions:D,allowH2:w,socketPath:u,timeout:o,...De?{autoSelectFamily:De,autoSelectFamilyAttemptTimeout:Te}:void 0,...R})),t?.Client&&Array.isArray(t.Client)?(this[TB]=t.Client,xB||(xB=!0,process.emitWarning("Client.Options#interceptor is deprecated. Use Dispatcher#compose instead.",{code:"UNDICI-CLIENT-INTERCEPTOR-DEPRECATED"}))):this[TB]=[GD({maxRedirections:f})],this[FA]=kt.parseOrigin(A),this[dn]=R,this[$s]=h??1,this[yD]=r||gD.maxHeaderSize,this[LB]=c??4e3,this[pD]=B??6e5,this[mD]=E??2e3,this[wD]=this[LB],this[tt]=null,this[wn]=d??null,this[bt]=0,this[nt]=0,this[fD]=`host: ${this[FA].hostname}${this[FA].port?`:${this[FA].port}`:""}\r
40
- `,this[kD]=a??3e5,this[DD]=n??3e5,this[bD]=C??!0,this[FD]=f,this[za]=S,this[rt]=null,this[UD]=se>-1?se:-1,this[TD]=me??100,this[Ce]=null,this[QA]=[],this[WA]=0,this[EA]=0,this[yn]=q=>_a(this,q),this[LD]=q=>VB(this,q)}get pipelining(){return this[$s]}set pipelining(A){this[$s]=A,this[yn](!0)}get[Dn](){return this[QA].length-this[EA]}get[mn](){return this[EA]-this[WA]}get[pn](){return this[QA].length-this[WA]}get[CD](){return!!this[Ce]&&!this[Br]&&!this[Ce].destroyed}get[Oa](){return!!(this[Ce]?.busy(null)||this[pn]>=(HB(this)||1)||this[Dn]>0)}[hD](A){vB(this),this.once("connect",A)}[MD](A,t){let r=A.origin||this[FA].origin,n=new lD(r,A,t);return this[QA].push(n),this[bt]||(kt.bodyLength(n.body)==null&&kt.isIterable(n.body)?(this[bt]=1,queueMicrotask(()=>_a(this))):this[yn](!0)),this[bt]&&this[nt]!==2&&this[Oa]&&(this[nt]=2),this[nt]<2}async[SD](){return new Promise(A=>{this[pn]?this[rt]=A:A(null)})}async[ND](A){return new Promise(t=>{let r=this[QA].splice(this[EA]);for(let s=0;s<r.length;s++){let i=r[s];kt.errorRequest(this,i,A)}let n=()=>{this[rt]&&(this[rt](),this[rt]=null),t(null)};this[Ce]?(this[Ce].destroy(A,n),this[Ce]=null):queueMicrotask(n),this[yn]()})}},GD=js();function VB(e,A){if(e[mn]===0&&A.code!=="UND_ERR_INFO"&&A.code!=="UND_ERR_SOCKET"){qA(e[EA]===e[WA]);let t=e[QA].splice(e[WA]);for(let r=0;r<t.length;r++){let n=t[r];kt.errorRequest(e,n,A)}qA(e[pn]===0)}}async function vB(e){qA(!e[Br]),qA(!e[Ce]);let{host:A,hostname:t,protocol:r,port:n}=e[FA];if(t[0]==="["){let s=t.indexOf("]");qA(s!==-1);let i=t.substring(1,s);qA(JB.isIP(i)),t=i}e[Br]=!0,Er.beforeConnect.hasSubscribers&&Er.beforeConnect.publish({connectParams:{host:A,hostname:t,protocol:r,port:n,version:e[Ce]?.version,servername:e[tt],localAddress:e[wn]},connector:e[dn]});try{let s=await new Promise((i,o)=>{e[dn]({host:A,hostname:t,protocol:r,port:n,servername:e[tt],localAddress:e[wn]},(a,g)=>{a?o(a):i(g)})});if(e.destroyed){kt.destroy(s.on("error",YB),new BD);return}qA(s);try{e[Ce]=s.alpnProtocol==="h2"?await YD(e,s):await xD(e,s)}catch(i){throw s.destroy().on("error",YB),i}e[Br]=!1,s[RD]=0,s[za]=e[za],s[ID]=e,s[dD]=null,Er.connected.hasSubscribers&&Er.connected.publish({connectParams:{host:A,hostname:t,protocol:r,port:n,version:e[Ce]?.version,servername:e[tt],localAddress:e[wn]},connector:e[dn],socket:s}),e.emit("connect",e[FA],[e])}catch(s){if(e.destroyed)return;if(e[Br]=!1,Er.connectError.hasSubscribers&&Er.connectError.publish({connectParams:{host:A,hostname:t,protocol:r,port:n,version:e[Ce]?.version,servername:e[tt],localAddress:e[wn]},connector:e[dn],error:s}),s.code==="ERR_TLS_CERT_ALTNAME_INVALID")for(qA(e[mn]===0);e[Dn]>0&&e[QA][e[EA]].servername===e[tt];){let i=e[QA][e[EA]++];kt.errorRequest(e,i,s)}else VB(e,s);e.emit("connectionError",e[FA],[e],s)}e[yn]()}function GB(e){e[nt]=0,e.emit("drain",e[FA],[e])}function _a(e,A){e[bt]!==2&&(e[bt]=2,JD(e,A),e[bt]=0,e[WA]>256&&(e[QA].splice(0,e[WA]),e[EA]-=e[WA],e[WA]=0))}function JD(e,A){for(;;){if(e.destroyed){qA(e[Dn]===0);return}if(e[rt]&&!e[pn]){e[rt](),e[rt]=null;return}if(e[Ce]&&e[Ce].resume(),e[Oa])e[nt]=2;else if(e[nt]===2){A?(e[nt]=1,queueMicrotask(()=>GB(e))):GB(e);continue}if(e[Dn]===0||e[mn]>=(HB(e)||1))return;let t=e[QA][e[EA]];if(e[FA].protocol==="https:"&&e[tt]!==t.servername){if(e[mn]>0)return;e[tt]=t.servername,e[Ce]?.destroy(new ED("servername changed"),()=>{e[Ce]=null,_a(e)})}if(e[Br])return;if(!e[Ce]){vB(e);return}if(e[Ce].destroyed||e[Ce].busy(t))return;!t.aborted&&e[Ce].write(t)?e[EA]++:e[QA].splice(e[EA],1)}}qB.exports=Za});var Ka=p((Rx,WB)=>{"use strict";var ei=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(A){this.list[this.top]=A,this.top=this.top+1&2047}shift(){let A=this.list[this.bottom];return A===void 0?null:(this.list[this.bottom]=void 0,this.bottom=this.bottom+1&2047,A)}};WB.exports=class{constructor(){this.head=this.tail=new ei}isEmpty(){return this.head.isEmpty()}push(A){this.head.isFull()&&(this.head=this.head.next=new ei),this.head.push(A)}shift(){let A=this.tail,t=A.shift();return A.isEmpty()&&A.next!==null&&(this.tail=A.next),t}}});var OB=p((Sx,PB)=>{var{kFree:HD,kConnected:VD,kPending:vD,kQueued:qD,kRunning:WD,kSize:PD}=Qe(),Ft=Symbol("pool"),Xa=class{constructor(A){this[Ft]=A}get connected(){return this[Ft][VD]}get free(){return this[Ft][HD]}get pending(){return this[Ft][vD]}get queued(){return this[Ft][qD]}get running(){return this[Ft][WD]}get size(){return this[Ft][PD]}};PB.exports=Xa});var rc=p((Nx,tu)=>{"use strict";var OD=$t(),zD=Ka(),{kConnected:ja,kSize:zB,kRunning:ZB,kPending:_B,kQueued:kn,kBusy:ZD,kFree:_D,kUrl:KD,kClose:XD,kDestroy:jD,kDispatch:$D}=Qe(),ek=OB(),Ve=Symbol("clients"),Ge=Symbol("needDrain"),bn=Symbol("queue"),$a=Symbol("closed resolve"),ec=Symbol("onDrain"),KB=Symbol("onConnect"),XB=Symbol("onDisconnect"),jB=Symbol("onConnectionError"),Ac=Symbol("get dispatcher"),eu=Symbol("add client"),Au=Symbol("remove client"),$B=Symbol("stats"),tc=class extends OD{constructor(A){super(A),this[bn]=new zD,this[Ve]=[],this[kn]=0;let t=this;this[ec]=function(n,s){let i=t[bn],o=!1;for(;!o;){let a=i.shift();if(!a)break;t[kn]--,o=!this.dispatch(a.opts,a.handler)}this[Ge]=o,!this[Ge]&&t[Ge]&&(t[Ge]=!1,t.emit("drain",n,[t,...s])),t[$a]&&i.isEmpty()&&Promise.all(t[Ve].map(a=>a.close())).then(t[$a])},this[KB]=(r,n)=>{t.emit("connect",r,[t,...n])},this[XB]=(r,n,s)=>{t.emit("disconnect",r,[t,...n],s)},this[jB]=(r,n,s)=>{t.emit("connectionError",r,[t,...n],s)},this[$B]=new ek(this)}get[ZD](){return this[Ge]}get[ja](){return this[Ve].filter(A=>A[ja]).length}get[_D](){return this[Ve].filter(A=>A[ja]&&!A[Ge]).length}get[_B](){let A=this[kn];for(let{[_B]:t}of this[Ve])A+=t;return A}get[ZB](){let A=0;for(let{[ZB]:t}of this[Ve])A+=t;return A}get[zB](){let A=this[kn];for(let{[zB]:t}of this[Ve])A+=t;return A}get stats(){return this[$B]}async[XD](){this[bn].isEmpty()?await Promise.all(this[Ve].map(A=>A.close())):await new Promise(A=>{this[$a]=A})}async[jD](A){for(;;){let t=this[bn].shift();if(!t)break;t.handler.onError(A)}await Promise.all(this[Ve].map(t=>t.destroy(A)))}[$D](A,t){let r=this[Ac]();return r?r.dispatch(A,t)||(r[Ge]=!0,this[Ge]=!this[Ac]()):(this[Ge]=!0,this[bn].push({opts:A,handler:t}),this[kn]++),!this[Ge]}[eu](A){return A.on("drain",this[ec]).on("connect",this[KB]).on("disconnect",this[XB]).on("connectionError",this[jB]),this[Ve].push(A),this[Ge]&&queueMicrotask(()=>{this[Ge]&&this[ec](A[KD],[this,A])}),this}[Au](A){A.close(()=>{let t=this[Ve].indexOf(A);t!==-1&&this[Ve].splice(t,1)}),this[Ge]=this[Ve].some(t=>!t[Ge]&&t.closed!==!0&&t.destroyed!==!0)}};tu.exports={PoolBase:tc,kClients:Ve,kNeedDrain:Ge,kAddClient:eu,kRemoveClient:Au,kGetDispatcher:Ac}});var Ir=p((Mx,iu)=>{"use strict";var{PoolBase:Ak,kClients:Ai,kNeedDrain:tk,kAddClient:rk,kGetDispatcher:nk}=rc(),sk=ur(),{InvalidArgumentError:nc}=Z(),ru=v(),{kUrl:nu,kInterceptors:ik}=Qe(),ok=sn(),sc=Symbol("options"),ic=Symbol("connections"),su=Symbol("factory");function ak(e,A){return new sk(e,A)}var oc=class extends Ak{constructor(A,{connections:t,factory:r=ak,connect:n,connectTimeout:s,tls:i,maxCachedSessions:o,socketPath:a,autoSelectFamily:g,autoSelectFamilyAttemptTimeout:l,allowH2:c,...Q}={}){if(t!=null&&(!Number.isFinite(t)||t<0))throw new nc("invalid connections");if(typeof r!="function")throw new nc("factory must be a function.");if(n!=null&&typeof n!="function"&&typeof n!="object")throw new nc("connect must be a function or an object");typeof n!="function"&&(n=ok({...i,maxCachedSessions:o,allowH2:c,socketPath:a,timeout:s,...g?{autoSelectFamily:g,autoSelectFamilyAttemptTimeout:l}:void 0,...n})),super(Q),this[ik]=Q.interceptors?.Pool&&Array.isArray(Q.interceptors.Pool)?Q.interceptors.Pool:[],this[ic]=t||null,this[nu]=ru.parseOrigin(A),this[sc]={...ru.deepClone(Q),connect:n,allowH2:c},this[sc].interceptors=Q.interceptors?{...Q.interceptors}:void 0,this[su]=r,this.on("connectionError",(B,E,u)=>{for(let h of E){let I=this[Ai].indexOf(h);I!==-1&&this[Ai].splice(I,1)}})}[nk](){for(let A of this[Ai])if(!A[tk])return A;if(!this[ic]||this[Ai].length<this[ic]){let A=this[su](this[nu],this[sc]);return this[rk](A),A}}};iu.exports=oc});var lu=p((Ux,gu)=>{"use strict";var{BalancedPoolMissingUpstreamError:ck,InvalidArgumentError:gk}=Z(),{PoolBase:lk,kClients:Ne,kNeedDrain:Fn,kAddClient:Qk,kRemoveClient:Ek,kGetDispatcher:Bk}=rc(),uk=Ir(),{kUrl:ac,kInterceptors:Ik}=Qe(),{parseOrigin:ou}=v(),au=Symbol("factory"),ti=Symbol("options"),cu=Symbol("kGreatestCommonDivisor"),Rt=Symbol("kCurrentWeight"),St=Symbol("kIndex"),nA=Symbol("kWeight"),ri=Symbol("kMaxWeightPerServer"),ni=Symbol("kErrorPenalty");function hk(e,A){if(e===0)return A;for(;A!==0;){let t=A;A=e%A,e=t}return e}function Ck(e,A){return new uk(e,A)}var cc=class extends lk{constructor(A=[],{factory:t=Ck,...r}={}){if(super(),this[ti]=r,this[St]=-1,this[Rt]=0,this[ri]=this[ti].maxWeightPerServer||100,this[ni]=this[ti].errorPenalty||15,Array.isArray(A)||(A=[A]),typeof t!="function")throw new gk("factory must be a function.");this[Ik]=r.interceptors?.BalancedPool&&Array.isArray(r.interceptors.BalancedPool)?r.interceptors.BalancedPool:[],this[au]=t;for(let n of A)this.addUpstream(n);this._updateBalancedPoolStats()}addUpstream(A){let t=ou(A).origin;if(this[Ne].find(n=>n[ac].origin===t&&n.closed!==!0&&n.destroyed!==!0))return this;let r=this[au](t,Object.assign({},this[ti]));this[Qk](r),r.on("connect",()=>{r[nA]=Math.min(this[ri],r[nA]+this[ni])}),r.on("connectionError",()=>{r[nA]=Math.max(1,r[nA]-this[ni]),this._updateBalancedPoolStats()}),r.on("disconnect",(...n)=>{let s=n[2];s&&s.code==="UND_ERR_SOCKET"&&(r[nA]=Math.max(1,r[nA]-this[ni]),this._updateBalancedPoolStats())});for(let n of this[Ne])n[nA]=this[ri];return this._updateBalancedPoolStats(),this}_updateBalancedPoolStats(){let A=0;for(let t=0;t<this[Ne].length;t++)A=hk(this[Ne][t][nA],A);this[cu]=A}removeUpstream(A){let t=ou(A).origin,r=this[Ne].find(n=>n[ac].origin===t&&n.closed!==!0&&n.destroyed!==!0);return r&&this[Ek](r),this}get upstreams(){return this[Ne].filter(A=>A.closed!==!0&&A.destroyed!==!0).map(A=>A[ac].origin)}[Bk](){if(this[Ne].length===0)throw new ck;if(!this[Ne].find(s=>!s[Fn]&&s.closed!==!0&&s.destroyed!==!0)||this[Ne].map(s=>s[Fn]).reduce((s,i)=>s&&i,!0))return;let r=0,n=this[Ne].findIndex(s=>!s[Fn]);for(;r++<this[Ne].length;){this[St]=(this[St]+1)%this[Ne].length;let s=this[Ne][this[St]];if(s[nA]>this[Ne][n][nA]&&!s[Fn]&&(n=this[St]),this[St]===0&&(this[Rt]=this[Rt]-this[cu],this[Rt]<=0&&(this[Rt]=this[ri])),s[nA]>=this[Rt]&&!s[Fn])return s}return this[Rt]=this[Ne][n][nA],this[St]=n,this[Ne][n]}};gu.exports=cc});var hr=p((Lx,Cu)=>{"use strict";var{InvalidArgumentError:si}=Z(),{kClients:st,kRunning:Qu,kClose:fk,kDestroy:dk,kDispatch:wk,kInterceptors:yk}=Qe(),pk=$t(),mk=Ir(),Dk=ur(),kk=v(),bk=js(),Eu=Symbol("onConnect"),Bu=Symbol("onDisconnect"),uu=Symbol("onConnectionError"),Fk=Symbol("maxRedirections"),Iu=Symbol("onDrain"),hu=Symbol("factory"),gc=Symbol("options");function Rk(e,A){return A&&A.connections===1?new Dk(e,A):new mk(e,A)}var lc=class extends pk{constructor({factory:A=Rk,maxRedirections:t=0,connect:r,...n}={}){if(typeof A!="function")throw new si("factory must be a function.");if(r!=null&&typeof r!="function"&&typeof r!="object")throw new si("connect must be a function or an object");if(!Number.isInteger(t)||t<0)throw new si("maxRedirections must be a positive number");super(n),r&&typeof r!="function"&&(r={...r}),this[yk]=n.interceptors?.Agent&&Array.isArray(n.interceptors.Agent)?n.interceptors.Agent:[bk({maxRedirections:t})],this[gc]={...kk.deepClone(n),connect:r},this[gc].interceptors=n.interceptors?{...n.interceptors}:void 0,this[Fk]=t,this[hu]=A,this[st]=new Map,this[Iu]=(s,i)=>{this.emit("drain",s,[this,...i])},this[Eu]=(s,i)=>{this.emit("connect",s,[this,...i])},this[Bu]=(s,i,o)=>{this.emit("disconnect",s,[this,...i],o)},this[uu]=(s,i,o)=>{this.emit("connectionError",s,[this,...i],o)}}get[Qu](){let A=0;for(let t of this[st].values())A+=t[Qu];return A}[wk](A,t){let r;if(A.origin&&(typeof A.origin=="string"||A.origin instanceof URL))r=String(A.origin);else throw new si("opts.origin must be a non-empty string or URL.");let n=this[st].get(r);return n||(n=this[hu](A.origin,this[gc]).on("drain",this[Iu]).on("connect",this[Eu]).on("disconnect",this[Bu]).on("connectionError",this[uu]),this[st].set(r,n)),n.dispatch(A,t)}async[fk](){let A=[];for(let t of this[st].values())A.push(t.close());this[st].clear(),await Promise.all(A)}async[dk](A){let t=[];for(let r of this[st].values())t.push(r.destroy(A));this[st].clear(),await Promise.all(t)}};Cu.exports=lc});var Ic=p((Tx,Ru)=>{"use strict";var{kProxy:Qc,kClose:mu,kDestroy:Du,kDispatch:fu,kInterceptors:Sk}=Qe(),{URL:Nt}=y("node:url"),Nk=hr(),ku=Ir(),bu=$t(),{InvalidArgumentError:Cr,RequestAbortedError:Mk,SecureProxyConnectionError:Uk}=Z(),du=sn(),Fu=ur(),ii=Symbol("proxy agent"),oi=Symbol("proxy client"),it=Symbol("proxy headers"),Ec=Symbol("request tls settings"),wu=Symbol("proxy tls settings"),yu=Symbol("connect endpoint function"),pu=Symbol("tunnel proxy");function Lk(e){return e==="https:"?443:80}function Tk(e,A){return new ku(e,A)}var xk=()=>{};function Yk(e,A){return A.connections===1?new Fu(e,A):new ku(e,A)}var Bc=class extends bu{#e;constructor(A,{headers:t={},connect:r,factory:n}){if(super(),!A)throw new Cr("Proxy URL is mandatory");this[it]=t,n?this.#e=n(A,{connect:r}):this.#e=new Fu(A,{connect:r})}[fu](A,t){let r=t.onHeaders;t.onHeaders=function(o,a,g){if(o===407){typeof t.onError=="function"&&t.onError(new Cr("Proxy Authentication Required (407)"));return}r&&r.call(this,o,a,g)};let{origin:n,path:s="/",headers:i={}}=A;if(A.path=n+s,!("host"in i)&&!("Host"in i)){let{host:o}=new Nt(n);i.host=o}return A.headers={...this[it],...i},this.#e[fu](A,t)}async[mu](){return this.#e.close()}async[Du](A){return this.#e.destroy(A)}},uc=class extends bu{constructor(A){if(super(),!A||typeof A=="object"&&!(A instanceof Nt)&&!A.uri)throw new Cr("Proxy uri is mandatory");let{clientFactory:t=Tk}=A;if(typeof t!="function")throw new Cr("Proxy opts.clientFactory must be a function.");let{proxyTunnel:r=!0}=A,n=this.#e(A),{href:s,origin:i,port:o,protocol:a,username:g,password:l,hostname:c}=n;if(this[Qc]={uri:s,protocol:a},this[Sk]=A.interceptors?.ProxyAgent&&Array.isArray(A.interceptors.ProxyAgent)?A.interceptors.ProxyAgent:[],this[Ec]=A.requestTls,this[wu]=A.proxyTls,this[it]=A.headers||{},this[pu]=r,A.auth&&A.token)throw new Cr("opts.auth cannot be used in combination with opts.token");A.auth?this[it]["proxy-authorization"]=`Basic ${A.auth}`:A.token?this[it]["proxy-authorization"]=A.token:g&&l&&(this[it]["proxy-authorization"]=`Basic ${Buffer.from(`${decodeURIComponent(g)}:${decodeURIComponent(l)}`).toString("base64")}`);let Q=du({...A.proxyTls});this[yu]=du({...A.requestTls});let B=A.factory||Yk,E=(u,h)=>{let{protocol:I}=new Nt(u);return!this[pu]&&I==="http:"&&this[Qc].protocol==="http:"?new Bc(this[Qc].uri,{headers:this[it],connect:Q,factory:B}):B(u,h)};this[oi]=t(n,{connect:Q}),this[ii]=new Nk({...A,factory:E,connect:async(u,h)=>{let I=u.host;u.port||(I+=`:${Lk(u.protocol)}`);try{let{socket:C,statusCode:D}=await this[oi].connect({origin:i,port:o,path:I,signal:u.signal,headers:{...this[it],host:u.host},servername:this[wu]?.servername||c});if(D!==200&&(C.on("error",xk).destroy(),h(new Mk(`Proxy response (${D}) !== 200 when HTTP Tunneling`))),u.protocol!=="https:"){h(null,C);return}let f;this[Ec]?f=this[Ec].servername:f=u.servername,this[yu]({...u,servername:f,httpSocket:C},h)}catch(C){C.code==="ERR_TLS_CERT_ALTNAME_INVALID"?h(new Uk(C)):h(C)}}})}dispatch(A,t){let r=Gk(A.headers);if(Jk(r),r&&!("host"in r)&&!("Host"in r)){let{host:n}=new Nt(A.origin);r.host=n}return this[ii].dispatch({...A,headers:r},t)}#e(A){return typeof A=="string"?new Nt(A):A instanceof Nt?A:new Nt(A.uri)}async[mu](){await this[ii].close(),await this[oi].close()}async[Du](){await this[ii].destroy(),await this[oi].destroy()}};function Gk(e){if(Array.isArray(e)){let A={};for(let t=0;t<e.length;t+=2)A[e[t]]=e[t+1];return A}return e}function Jk(e){if(e&&Object.keys(e).find(t=>t.toLowerCase()==="proxy-authorization"))throw new Cr("Proxy-Authorization should be sent in ProxyAgent constructor")}Ru.exports=uc});var Tu=p((xx,Lu)=>{"use strict";var Hk=$t(),{kClose:Vk,kDestroy:vk,kClosed:Su,kDestroyed:Nu,kDispatch:qk,kNoProxyAgent:Rn,kHttpProxyAgent:ot,kHttpsProxyAgent:Mt}=Qe(),Mu=Ic(),Wk=hr(),Pk={"http:":80,"https:":443},Uu=!1,hc=class extends Hk{#e=null;#A=null;#t=null;constructor(A={}){super(),this.#t=A,Uu||(Uu=!0,process.emitWarning("EnvHttpProxyAgent is experimental, expect them to change at any time.",{code:"UNDICI-EHPA"}));let{httpProxy:t,httpsProxy:r,noProxy:n,...s}=A;this[Rn]=new Wk(s);let i=t??process.env.http_proxy??process.env.HTTP_PROXY;i?this[ot]=new Mu({...s,uri:i}):this[ot]=this[Rn];let o=r??process.env.https_proxy??process.env.HTTPS_PROXY;o?this[Mt]=new Mu({...s,uri:o}):this[Mt]=this[ot],this.#r()}[qk](A,t){let r=new URL(A.origin);return this.#s(r).dispatch(A,t)}async[Vk](){await this[Rn].close(),this[ot][Su]||await this[ot].close(),this[Mt][Su]||await this[Mt].close()}async[vk](A){await this[Rn].destroy(A),this[ot][Nu]||await this[ot].destroy(A),this[Mt][Nu]||await this[Mt].destroy(A)}#s(A){let{protocol:t,host:r,port:n}=A;return r=r.replace(/:\d*$/,"").toLowerCase(),n=Number.parseInt(n,10)||Pk[t]||0,this.#n(r,n)?t==="https:"?this[Mt]:this[ot]:this[Rn]}#n(A,t){if(this.#i&&this.#r(),this.#A.length===0)return!0;if(this.#e==="*")return!1;for(let r=0;r<this.#A.length;r++){let n=this.#A[r];if(!(n.port&&n.port!==t)){if(/^[.*]/.test(n.hostname)){if(A.endsWith(n.hostname.replace(/^\*/,"")))return!1}else if(A===n.hostname)return!1}}return!0}#r(){let A=this.#t.noProxy??this.#o,t=A.split(/[,\s]/),r=[];for(let n=0;n<t.length;n++){let s=t[n];if(!s)continue;let i=s.match(/^(.+):(\d+)$/);r.push({hostname:(i?i[1]:s).toLowerCase(),port:i?Number.parseInt(i[2],10):0})}this.#e=A,this.#A=r}get#i(){return this.#t.noProxy!==void 0?!1:this.#e!==this.#o}get#o(){return process.env.no_proxy??process.env.NO_PROXY??""}};Lu.exports=hc});var ai=p((Yx,Hu)=>{"use strict";var fr=y("node:assert"),{kRetryHandlerDefaultRetry:xu}=Qe(),{RequestRetryError:dr}=Z(),{isDisturbed:Yu,parseHeaders:Ok,parseRangeHeader:Gu,wrapRequestBody:zk}=v();function Zk(e){let A=Date.now();return new Date(e).getTime()-A}function Ju(e,A,t,r){let n=e["content-length"];if(n==null||!Number.isFinite(A.start)||!Number.isFinite(A.end))return null;let s=Number(n),i=A.end-A.start+1;return!Number.isFinite(s)||s!==i?new dr("Content-Length mismatch",t,{headers:e,data:{count:r}}):null}var Cc=class e{constructor(A,t){let{retryOptions:r,...n}=A,{retry:s,maxRetries:i,maxTimeout:o,minTimeout:a,timeoutFactor:g,methods:l,errorCodes:c,retryAfter:Q,statusCodes:B}=r??{};this.dispatch=t.dispatch,this.handler=t.handler,this.opts={...n,body:zk(A.body)},this.abort=null,this.aborted=!1,this.retryOpts={retry:s??e[xu],retryAfter:Q??!0,maxTimeout:o??30*1e3,minTimeout:a??500,timeoutFactor:g??2,maxRetries:i??5,methods:l??["GET","HEAD","OPTIONS","PUT","DELETE","TRACE"],statusCodes:B??[500,502,503,504,429],errorCodes:c??["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(E=>{this.aborted=!0,this.abort?this.abort(E):this.reason=E})}onRequestSent(){this.handler.onRequestSent&&this.handler.onRequestSent()}onUpgrade(A,t,r){this.handler.onUpgrade&&this.handler.onUpgrade(A,t,r)}onConnect(A){this.aborted?A(this.reason):this.abort=A}onBodySent(A){if(this.handler.onBodySent)return this.handler.onBodySent(A)}static[xu](A,{state:t,opts:r},n){let{statusCode:s,code:i,headers:o}=A,{method:a,retryOptions:g}=r,{maxRetries:l,minTimeout:c,maxTimeout:Q,timeoutFactor:B,statusCodes:E,errorCodes:u,methods:h}=g,{counter:I}=t;if(i&&i!=="UND_ERR_REQ_RETRY"&&!u.includes(i)){n(A);return}if(Array.isArray(h)&&!h.includes(a)){n(A);return}if(s!=null&&Array.isArray(E)&&!E.includes(s)){n(A);return}if(I>l){n(A);return}let C=o?.["retry-after"];C&&(C=Number(C),C=Number.isNaN(C)?Zk(C):C*1e3);let D=C>0?Math.min(C,Q):Math.min(c*B**(I-1),Q);setTimeout(()=>n(null),D)}onHeaders(A,t,r,n){let s=Ok(t);if(this.retryCount+=1,A>=300)return this.retryOpts.statusCodes.includes(A)===!1?this.handler.onHeaders(A,t,r,n):(this.abort(new dr("Request failed",A,{headers:s,data:{count:this.retryCount}})),!1);if(this.resume!=null){if(this.resume=null,A!==206&&(this.start>0||A!==200))return this.abort(new dr("server does not support the range header and the payload was partially consumed",A,{headers:s,data:{count:this.retryCount}})),!1;let o=Gu(s["content-range"]);if(!o)return this.abort(new dr("Content-Range mismatch",A,{headers:s,data:{count:this.retryCount}})),!1;if(this.etag!=null&&this.etag!==s.etag)return this.abort(new dr("ETag mismatch",A,{headers:s,data:{count:this.retryCount}})),!1;let a=Ju(s,o,A,this.retryCount);if(a!=null)return this.abort(a),!1;let{start:g,size:l,end:c=l-1}=o;return fr(this.start===g,"content-range mismatch"),fr(this.end==null||this.end===c,"content-range mismatch"),this.resume=r,!0}if(this.end==null){if(A===206){let o=Gu(s["content-range"]);if(o==null)return this.handler.onHeaders(A,t,r,n);let a=Ju(s,o,A,this.retryCount);if(a!=null)return this.abort(a),!1;let{start:g,size:l,end:c=l-1}=o;fr(g!=null&&Number.isFinite(g),"content-range mismatch"),fr(c!=null&&Number.isFinite(c),"invalid content-length"),this.start=g,this.end=c}if(this.end==null){let o=s["content-length"];this.end=o!=null?Number(o)-1:null}return fr(Number.isFinite(this.start)),fr(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(A,t,r,n)}let i=new dr("Request failed",A,{headers:s,data:{count:this.retryCount}});return this.abort(i),!1}onData(A){return this.start+=A.length,this.handler.onData(A)}onComplete(A){return this.retryCount=0,this.handler.onComplete(A)}onError(A){if(this.aborted||Yu(this.opts.body))return this.handler.onError(A);this.retryCount-this.retryCountCheckpoint>0?this.retryCount=this.retryCountCheckpoint+(this.retryCount-this.retryCountCheckpoint):this.retryCount+=1,this.retryOpts.retry(A,{state:{counter:this.retryCount},opts:{retryOptions:this.retryOpts,...this.opts}},t.bind(this));function t(r){if(r!=null||this.aborted||Yu(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)}}}};Hu.exports=Cc});var vu=p((Gx,Vu)=>{"use strict";var _k=rn(),Kk=ai(),fc=class extends _k{#e=null;#A=null;constructor(A,t={}){super(t),this.#e=A,this.#A=t}dispatch(A,t){let r=new Kk({...A,retryOptions:this.#A},{dispatch:this.#e.dispatch.bind(this.#e),handler:t});return this.#e.dispatch(A,r)}close(){return this.#e.close()}destroy(){return this.#e.destroy()}};Vu.exports=fc});var Dc=p((Jx,Xu)=>{"use strict";var zu=y("node:assert"),{Readable:Xk}=y("node:stream"),{RequestAbortedError:Zu,NotSupportedError:jk,InvalidArgumentError:$k,AbortError:dc}=Z(),_u=v(),{ReadableStreamFrom:eb}=v(),ze=Symbol("kConsume"),Sn=Symbol("kReading"),at=Symbol("kBody"),qu=Symbol("kAbort"),Ku=Symbol("kContentType"),Wu=Symbol("kContentLength"),Ab=()=>{},wc=class extends Xk{constructor({resume:A,abort:t,contentType:r="",contentLength:n,highWaterMark:s=64*1024}){super({autoDestroy:!0,read:A,highWaterMark:s}),this._readableState.dataEmitted=!1,this[qu]=t,this[ze]=null,this[at]=null,this[Ku]=r,this[Wu]=n,this[Sn]=!1}destroy(A){return!A&&!this._readableState.endEmitted&&(A=new Zu),A&&this[qu](),super.destroy(A)}_destroy(A,t){this[Sn]?t(A):setImmediate(()=>{t(A)})}on(A,...t){return(A==="data"||A==="readable")&&(this[Sn]=!0),super.on(A,...t)}addListener(A,...t){return this.on(A,...t)}off(A,...t){let r=super.off(A,...t);return(A==="data"||A==="readable")&&(this[Sn]=this.listenerCount("data")>0||this.listenerCount("readable")>0),r}removeListener(A,...t){return this.off(A,...t)}push(A){return this[ze]&&A!==null?(pc(this[ze],A),this[Sn]?super.push(A):!0):super.push(A)}async text(){return Nn(this,"text")}async json(){return Nn(this,"json")}async blob(){return Nn(this,"blob")}async bytes(){return Nn(this,"bytes")}async arrayBuffer(){return Nn(this,"arrayBuffer")}async formData(){throw new jk}get bodyUsed(){return _u.isDisturbed(this)}get body(){return this[at]||(this[at]=eb(this),this[ze]&&(this[at].getReader(),zu(this[at].locked))),this[at]}async dump(A){let t=Number.isFinite(A?.limit)?A.limit:131072,r=A?.signal;if(r!=null&&(typeof r!="object"||!("aborted"in r)))throw new $k("signal must be an AbortSignal");return r?.throwIfAborted(),this._readableState.closeEmitted?null:await new Promise((n,s)=>{this[Wu]>t&&this.destroy(new dc);let i=()=>{this.destroy(r.reason??new dc)};r?.addEventListener("abort",i),this.on("close",function(){r?.removeEventListener("abort",i),r?.aborted?s(r.reason??new dc):n(null)}).on("error",Ab).on("data",function(o){t-=o.length,t<=0&&this.destroy()}).resume()})}};function tb(e){return e[at]&&e[at].locked===!0||e[ze]}function rb(e){return _u.isDisturbed(e)||tb(e)}async function Nn(e,A){return zu(!e[ze]),new Promise((t,r)=>{if(rb(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[ze]={type:A,stream:e,resolve:t,reject:r,length:0,body:[]},e.on("error",function(n){mc(this[ze],n)}).on("close",function(){this[ze].body!==null&&mc(this[ze],new Zu)}),nb(e[ze])})})}function nb(e){if(e.body===null)return;let{_readableState:A}=e.stream;if(A.bufferIndex){let t=A.bufferIndex,r=A.buffer.length;for(let n=t;n<r;n++)pc(e,A.buffer[n])}else for(let t of A.buffer)pc(e,t);for(A.endEmitted?Ou(this[ze]):e.stream.on("end",function(){Ou(this[ze])}),e.stream.resume();e.stream.read()!=null;);}function yc(e,A){if(e.length===0||A===0)return"";let t=e.length===1?e[0]:Buffer.concat(e,A),r=t.length,n=r>2&&t[0]===239&&t[1]===187&&t[2]===191?3:0;return t.utf8Slice(n,r)}function Pu(e,A){if(e.length===0||A===0)return new Uint8Array(0);if(e.length===1)return new Uint8Array(e[0]);let t=new Uint8Array(Buffer.allocUnsafeSlow(A).buffer),r=0;for(let n=0;n<e.length;++n){let s=e[n];t.set(s,r),r+=s.length}return t}function Ou(e){let{type:A,body:t,resolve:r,stream:n,length:s}=e;try{A==="text"?r(yc(t,s)):A==="json"?r(JSON.parse(yc(t,s))):A==="arrayBuffer"?r(Pu(t,s).buffer):A==="blob"?r(new Blob(t,{type:n[Ku]})):A==="bytes"&&r(Pu(t,s)),mc(e)}catch(i){n.destroy(i)}}function pc(e,A){e.length+=A.length,e.body.push(A)}function mc(e,A){e.body!==null&&(A?e.reject(A):e.resolve(),e.type=null,e.stream=null,e.resolve=null,e.reject=null,e.length=0,e.body=null)}Xu.exports={Readable:wc,chunksDecode:yc}});var kc=p((Hx,tI)=>{var sb=y("node:assert"),{ResponseStatusCodeError:ju}=Z(),{chunksDecode:$u}=Dc(),ib=128*1024;async function ob({callback:e,body:A,contentType:t,statusCode:r,statusMessage:n,headers:s}){sb(A);let i=[],o=0;try{for await(let c of A)if(i.push(c),o+=c.length,o>ib){i=[],o=0;break}}catch{i=[],o=0}let a=`Response status code ${r}${n?`: ${n}`:""}`;if(r===204||!t||!o){queueMicrotask(()=>e(new ju(a,r,s)));return}let g=Error.stackTraceLimit;Error.stackTraceLimit=0;let l;try{eI(t)?l=JSON.parse($u(i,o)):AI(t)&&(l=$u(i,o))}catch{}finally{Error.stackTraceLimit=g}queueMicrotask(()=>e(new ju(a,r,s,l)))}var eI=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",AI=e=>e.length>4&&e[4]==="/"&&e[0]==="t"&&e[1]==="e"&&e[2]==="x"&&e[3]==="t";tI.exports={getResolveErrorBodyCallback:ob,isContentTypeApplicationJson:eI,isContentTypeText:AI}});var sI=p((Vx,bc)=>{"use strict";var ab=y("node:assert"),{Readable:cb}=Dc(),{InvalidArgumentError:wr,RequestAbortedError:rI}=Z(),Ze=v(),{getResolveErrorBodyCallback:gb}=kc(),{AsyncResource:lb}=y("node:async_hooks"),ci=class extends lb{constructor(A,t){if(!A||typeof A!="object")throw new wr("invalid opts");let{signal:r,method:n,opaque:s,body:i,onInfo:o,responseHeaders:a,throwOnError:g,highWaterMark:l}=A;try{if(typeof t!="function")throw new wr("invalid callback");if(l&&(typeof l!="number"||l<0))throw new wr("invalid highWaterMark");if(r&&typeof r.on!="function"&&typeof r.addEventListener!="function")throw new wr("signal must be an EventEmitter or EventTarget");if(n==="CONNECT")throw new wr("invalid method");if(o&&typeof o!="function")throw new wr("invalid onInfo callback");super("UNDICI_REQUEST")}catch(c){throw Ze.isStream(i)&&Ze.destroy(i.on("error",Ze.nop),c),c}this.method=n,this.responseHeaders=a||null,this.opaque=s||null,this.callback=t,this.res=null,this.abort=null,this.body=i,this.trailers={},this.context=null,this.onInfo=o||null,this.throwOnError=g,this.highWaterMark=l,this.signal=r,this.reason=null,this.removeAbortListener=null,Ze.isStream(i)&&i.on("error",c=>{this.onError(c)}),this.signal&&(this.signal.aborted?this.reason=this.signal.reason??new rI:this.removeAbortListener=Ze.addAbortListener(this.signal,()=>{this.reason=this.signal.reason??new rI,this.res?Ze.destroy(this.res.on("error",Ze.nop),this.reason):this.abort&&this.abort(this.reason),this.removeAbortListener&&(this.res?.off("close",this.removeAbortListener),this.removeAbortListener(),this.removeAbortListener=null)}))}onConnect(A,t){if(this.reason){A(this.reason);return}ab(this.callback),this.abort=A,this.context=t}onHeaders(A,t,r,n){let{callback:s,opaque:i,abort:o,context:a,responseHeaders:g,highWaterMark:l}=this,c=g==="raw"?Ze.parseRawHeaders(t):Ze.parseHeaders(t);if(A<200){this.onInfo&&this.onInfo({statusCode:A,headers:c});return}let Q=g==="raw"?Ze.parseHeaders(t):c,B=Q["content-type"],E=Q["content-length"],u=new cb({resume:r,abort:o,contentType:B,contentLength:this.method!=="HEAD"&&E?Number(E):null,highWaterMark:l});this.removeAbortListener&&u.on("close",this.removeAbortListener),this.callback=null,this.res=u,s!==null&&(this.throwOnError&&A>=400?this.runInAsyncScope(gb,null,{callback:s,body:u,contentType:B,statusCode:A,statusMessage:n,headers:c}):this.runInAsyncScope(s,null,null,{statusCode:A,headers:c,trailers:this.trailers,opaque:i,body:u,context:a}))}onData(A){return this.res.push(A)}onComplete(A){Ze.parseHeaders(A,this.trailers),this.res.push(null)}onError(A){let{res:t,callback:r,body:n,opaque:s}=this;r&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(r,null,A,{opaque:s})})),t&&(this.res=null,queueMicrotask(()=>{Ze.destroy(t,A)})),n&&(this.body=null,Ze.destroy(n,A)),this.removeAbortListener&&(t?.off("close",this.removeAbortListener),this.removeAbortListener(),this.removeAbortListener=null)}};function nI(e,A){if(A===void 0)return new Promise((t,r)=>{nI.call(this,e,(n,s)=>n?r(n):t(s))});try{this.dispatch(e,new ci(e,A))}catch(t){if(typeof A!="function")throw t;let r=e?.opaque;queueMicrotask(()=>A(t,{opaque:r}))}}bc.exports=nI;bc.exports.RequestHandler=ci});var Mn=p((vx,aI)=>{var{addAbortListener:Qb}=v(),{RequestAbortedError:Eb}=Z(),yr=Symbol("kListener"),RA=Symbol("kSignal");function iI(e){e.abort?e.abort(e[RA]?.reason):e.reason=e[RA]?.reason??new Eb,oI(e)}function Bb(e,A){if(e.reason=null,e[RA]=null,e[yr]=null,!!A){if(A.aborted){iI(e);return}e[RA]=A,e[yr]=()=>{iI(e)},Qb(e[RA],e[yr])}}function oI(e){e[RA]&&("removeEventListener"in e[RA]?e[RA].removeEventListener("abort",e[yr]):e[RA].removeListener("abort",e[yr]),e[RA]=null,e[yr]=null)}aI.exports={addSignal:Bb,removeSignal:oI}});var QI=p((qx,lI)=>{"use strict";var ub=y("node:assert"),{finished:Ib,PassThrough:hb}=y("node:stream"),{InvalidArgumentError:pr,InvalidReturnValueError:Cb}=Z(),BA=v(),{getResolveErrorBodyCallback:fb}=kc(),{AsyncResource:db}=y("node:async_hooks"),{addSignal:wb,removeSignal:cI}=Mn(),Fc=class extends db{constructor(A,t,r){if(!A||typeof A!="object")throw new pr("invalid opts");let{signal:n,method:s,opaque:i,body:o,onInfo:a,responseHeaders:g,throwOnError:l}=A;try{if(typeof r!="function")throw new pr("invalid callback");if(typeof t!="function")throw new pr("invalid factory");if(n&&typeof n.on!="function"&&typeof n.addEventListener!="function")throw new pr("signal must be an EventEmitter or EventTarget");if(s==="CONNECT")throw new pr("invalid method");if(a&&typeof a!="function")throw new pr("invalid onInfo callback");super("UNDICI_STREAM")}catch(c){throw BA.isStream(o)&&BA.destroy(o.on("error",BA.nop),c),c}this.responseHeaders=g||null,this.opaque=i||null,this.factory=t,this.callback=r,this.res=null,this.abort=null,this.context=null,this.trailers=null,this.body=o,this.onInfo=a||null,this.throwOnError=l||!1,BA.isStream(o)&&o.on("error",c=>{this.onError(c)}),wb(this,n)}onConnect(A,t){if(this.reason){A(this.reason);return}ub(this.callback),this.abort=A,this.context=t}onHeaders(A,t,r,n){let{factory:s,opaque:i,context:o,callback:a,responseHeaders:g}=this,l=g==="raw"?BA.parseRawHeaders(t):BA.parseHeaders(t);if(A<200){this.onInfo&&this.onInfo({statusCode:A,headers:l});return}this.factory=null;let c;if(this.throwOnError&&A>=400){let E=(g==="raw"?BA.parseHeaders(t):l)["content-type"];c=new hb,this.callback=null,this.runInAsyncScope(fb,null,{callback:a,body:c,contentType:E,statusCode:A,statusMessage:n,headers:l})}else{if(s===null)return;if(c=this.runInAsyncScope(s,null,{statusCode:A,headers:l,opaque:i,context:o}),!c||typeof c.write!="function"||typeof c.end!="function"||typeof c.on!="function")throw new Cb("expected Writable");Ib(c,{readable:!1},B=>{let{callback:E,res:u,opaque:h,trailers:I,abort:C}=this;this.res=null,(B||!u.readable)&&BA.destroy(u,B),this.callback=null,this.runInAsyncScope(E,null,B||null,{opaque:h,trailers:I}),B&&C()})}return c.on("drain",r),this.res=c,(c.writableNeedDrain!==void 0?c.writableNeedDrain:c._writableState?.needDrain)!==!0}onData(A){let{res:t}=this;return t?t.write(A):!0}onComplete(A){let{res:t}=this;cI(this),t&&(this.trailers=BA.parseHeaders(A),t.end())}onError(A){let{res:t,callback:r,opaque:n,body:s}=this;cI(this),this.factory=null,t?(this.res=null,BA.destroy(t,A)):r&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(r,null,A,{opaque:n})})),s&&(this.body=null,BA.destroy(s,A))}};function gI(e,A,t){if(t===void 0)return new Promise((r,n)=>{gI.call(this,e,A,(s,i)=>s?n(s):r(i))});try{this.dispatch(e,new Fc(e,A,t))}catch(r){if(typeof t!="function")throw r;let n=e?.opaque;queueMicrotask(()=>t(r,{opaque:n}))}}lI.exports=gI});var II=p((Wx,uI)=>{"use strict";var{Readable:BI,Duplex:yb,PassThrough:pb}=y("node:stream"),{InvalidArgumentError:Un,InvalidReturnValueError:mb,RequestAbortedError:Rc}=Z(),sA=v(),{AsyncResource:Db}=y("node:async_hooks"),{addSignal:kb,removeSignal:bb}=Mn(),EI=y("node:assert"),mr=Symbol("resume"),Sc=class extends BI{constructor(){super({autoDestroy:!0}),this[mr]=null}_read(){let{[mr]:A}=this;A&&(this[mr]=null,A())}_destroy(A,t){this._read(),t(A)}},Nc=class extends BI{constructor(A){super({autoDestroy:!0}),this[mr]=A}_read(){this[mr]()}_destroy(A,t){!A&&!this._readableState.endEmitted&&(A=new Rc),t(A)}},Mc=class extends Db{constructor(A,t){if(!A||typeof A!="object")throw new Un("invalid opts");if(typeof t!="function")throw new Un("invalid handler");let{signal:r,method:n,opaque:s,onInfo:i,responseHeaders:o}=A;if(r&&typeof r.on!="function"&&typeof r.addEventListener!="function")throw new Un("signal must be an EventEmitter or EventTarget");if(n==="CONNECT")throw new Un("invalid method");if(i&&typeof i!="function")throw new Un("invalid onInfo callback");super("UNDICI_PIPELINE"),this.opaque=s||null,this.responseHeaders=o||null,this.handler=t,this.abort=null,this.context=null,this.onInfo=i||null,this.req=new Sc().on("error",sA.nop),this.ret=new yb({readableObjectMode:A.objectMode,autoDestroy:!0,read:()=>{let{body:a}=this;a?.resume&&a.resume()},write:(a,g,l)=>{let{req:c}=this;c.push(a,g)||c._readableState.destroyed?l():c[mr]=l},destroy:(a,g)=>{let{body:l,req:c,res:Q,ret:B,abort:E}=this;!a&&!B._readableState.endEmitted&&(a=new Rc),E&&a&&E(),sA.destroy(l,a),sA.destroy(c,a),sA.destroy(Q,a),bb(this),g(a)}}).on("prefinish",()=>{let{req:a}=this;a.push(null)}),this.res=null,kb(this,r)}onConnect(A,t){let{ret:r,res:n}=this;if(this.reason){A(this.reason);return}EI(!n,"pipeline cannot be retried"),EI(!r.destroyed),this.abort=A,this.context=t}onHeaders(A,t,r){let{opaque:n,handler:s,context:i}=this;if(A<200){if(this.onInfo){let a=this.responseHeaders==="raw"?sA.parseRawHeaders(t):sA.parseHeaders(t);this.onInfo({statusCode:A,headers:a})}return}this.res=new Nc(r);let o;try{this.handler=null;let a=this.responseHeaders==="raw"?sA.parseRawHeaders(t):sA.parseHeaders(t);o=this.runInAsyncScope(s,null,{statusCode:A,headers:a,opaque:n,body:this.res,context:i})}catch(a){throw this.res.on("error",sA.nop),a}if(!o||typeof o.on!="function")throw new mb("expected Readable");o.on("data",a=>{let{ret:g,body:l}=this;!g.push(a)&&l.pause&&l.pause()}).on("error",a=>{let{ret:g}=this;sA.destroy(g,a)}).on("end",()=>{let{ret:a}=this;a.push(null)}).on("close",()=>{let{ret:a}=this;a._readableState.ended||sA.destroy(a,new Rc)}),this.body=o}onData(A){let{res:t}=this;return t.push(A)}onComplete(A){let{res:t}=this;t.push(null)}onError(A){let{ret:t}=this;this.handler=null,sA.destroy(t,A)}};function Fb(e,A){try{let t=new Mc(e,A);return this.dispatch({...e,body:t.req},t),t.ret}catch(t){return new pb().destroy(t)}}uI.exports=Fb});var yI=p((Px,wI)=>{"use strict";var{InvalidArgumentError:Uc,SocketError:Rb}=Z(),{AsyncResource:Sb}=y("node:async_hooks"),hI=v(),{addSignal:Nb,removeSignal:CI}=Mn(),fI=y("node:assert"),Lc=class extends Sb{constructor(A,t){if(!A||typeof A!="object")throw new Uc("invalid opts");if(typeof t!="function")throw new Uc("invalid callback");let{signal:r,opaque:n,responseHeaders:s}=A;if(r&&typeof r.on!="function"&&typeof r.addEventListener!="function")throw new Uc("signal must be an EventEmitter or EventTarget");super("UNDICI_UPGRADE"),this.responseHeaders=s||null,this.opaque=n||null,this.callback=t,this.abort=null,this.context=null,Nb(this,r)}onConnect(A,t){if(this.reason){A(this.reason);return}fI(this.callback),this.abort=A,this.context=null}onHeaders(){throw new Rb("bad upgrade",null)}onUpgrade(A,t,r){fI(A===101);let{callback:n,opaque:s,context:i}=this;CI(this),this.callback=null;let o=this.responseHeaders==="raw"?hI.parseRawHeaders(t):hI.parseHeaders(t);this.runInAsyncScope(n,null,null,{headers:o,socket:r,opaque:s,context:i})}onError(A){let{callback:t,opaque:r}=this;CI(this),t&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(t,null,A,{opaque:r})}))}};function dI(e,A){if(A===void 0)return new Promise((t,r)=>{dI.call(this,e,(n,s)=>n?r(n):t(s))});try{let t=new Lc(e,A);this.dispatch({...e,method:e.method||"GET",upgrade:e.protocol||"Websocket"},t)}catch(t){if(typeof A!="function")throw t;let r=e?.opaque;queueMicrotask(()=>A(t,{opaque:r}))}}wI.exports=dI});var bI=p((Ox,kI)=>{"use strict";var Mb=y("node:assert"),{AsyncResource:Ub}=y("node:async_hooks"),{InvalidArgumentError:Tc,SocketError:Lb}=Z(),pI=v(),{addSignal:Tb,removeSignal:mI}=Mn(),xc=class extends Ub{constructor(A,t){if(!A||typeof A!="object")throw new Tc("invalid opts");if(typeof t!="function")throw new Tc("invalid callback");let{signal:r,opaque:n,responseHeaders:s}=A;if(r&&typeof r.on!="function"&&typeof r.addEventListener!="function")throw new Tc("signal must be an EventEmitter or EventTarget");super("UNDICI_CONNECT"),this.opaque=n||null,this.responseHeaders=s||null,this.callback=t,this.abort=null,Tb(this,r)}onConnect(A,t){if(this.reason){A(this.reason);return}Mb(this.callback),this.abort=A,this.context=t}onHeaders(){throw new Lb("bad connect",null)}onUpgrade(A,t,r){let{callback:n,opaque:s,context:i}=this;mI(this),this.callback=null;let o=t;o!=null&&(o=this.responseHeaders==="raw"?pI.parseRawHeaders(t):pI.parseHeaders(t)),this.runInAsyncScope(n,null,null,{statusCode:A,headers:o,socket:r,opaque:s,context:i})}onError(A){let{callback:t,opaque:r}=this;mI(this),t&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(t,null,A,{opaque:r})}))}};function DI(e,A){if(A===void 0)return new Promise((t,r)=>{DI.call(this,e,(n,s)=>n?r(n):t(s))});try{let t=new xc(e,A);this.dispatch({...e,method:"CONNECT"},t)}catch(t){if(typeof A!="function")throw t;let r=e?.opaque;queueMicrotask(()=>A(t,{opaque:r}))}}kI.exports=DI});var FI=p((zx,Dr)=>{"use strict";Dr.exports.request=sI();Dr.exports.stream=QI();Dr.exports.pipeline=II();Dr.exports.upgrade=yI();Dr.exports.connect=bI()});var Gc=p((Zx,SI)=>{"use strict";var{UndiciError:xb}=Z(),RI=Symbol.for("undici.error.UND_MOCK_ERR_MOCK_NOT_MATCHED"),Yc=class e extends xb{constructor(A){super(A),Error.captureStackTrace(this,e),this.name="MockNotMatchedError",this.message=A||"The request does not match any registered mock dispatches",this.code="UND_MOCK_ERR_MOCK_NOT_MATCHED"}static[Symbol.hasInstance](A){return A&&A[RI]===!0}[RI]=!0};SI.exports={MockNotMatchedError:Yc}});var kr=p((_x,NI)=>{"use strict";NI.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 Ln=p((Kx,vI)=>{"use strict";var{MockNotMatchedError:Ut}=Gc(),{kDispatches:gi,kMockAgent:Yb,kOriginalDispatch:Gb,kOrigin:Jb,kGetNetConnect:Hb}=kr(),{buildURL:Vb}=v(),{STATUS_CODES:vb}=y("node:http"),{types:{isPromise:qb}}=y("node:util");function PA(e,A){return typeof e=="string"?e===A:e instanceof RegExp?e.test(A):typeof e=="function"?e(A)===!0:!1}function UI(e){return Object.fromEntries(Object.entries(e).map(([A,t])=>[A.toLocaleLowerCase(),t]))}function LI(e,A){if(Array.isArray(e)){for(let t=0;t<e.length;t+=2)if(e[t].toLocaleLowerCase()===A.toLocaleLowerCase())return e[t+1];return}else return typeof e.get=="function"?e.get(A):UI(e)[A.toLocaleLowerCase()]}function Vc(e){let A=e.slice(),t=[];for(let r=0;r<A.length;r+=2)t.push([A[r],A[r+1]]);return Object.fromEntries(t)}function TI(e,A){if(typeof e.headers=="function")return Array.isArray(A)&&(A=Vc(A)),e.headers(A?UI(A):{});if(typeof e.headers>"u")return!0;if(typeof A!="object"||typeof e.headers!="object")return!1;for(let[t,r]of Object.entries(e.headers)){let n=LI(A,t);if(!PA(r,n))return!1}return!0}function MI(e){if(typeof e!="string")return e;let A=e.split("?");if(A.length!==2)return e;let t=new URLSearchParams(A.pop());return t.sort(),[...A,t.toString()].join("?")}function Wb(e,{path:A,method:t,body:r,headers:n}){let s=PA(e.path,A),i=PA(e.method,t),o=typeof e.body<"u"?PA(e.body,r):!0,a=TI(e,n);return s&&i&&o&&a}function xI(e){return Buffer.isBuffer(e)||e instanceof Uint8Array||e instanceof ArrayBuffer?e:typeof e=="object"?JSON.stringify(e):e.toString()}function YI(e,A){let t=A.query?Vb(A.path,A.query):A.path,r=typeof t=="string"?MI(t):t,n=e.filter(({consumed:s})=>!s).filter(({path:s})=>PA(MI(s),r));if(n.length===0)throw new Ut(`Mock dispatch not matched for path '${r}'`);if(n=n.filter(({method:s})=>PA(s,A.method)),n.length===0)throw new Ut(`Mock dispatch not matched for method '${A.method}' on path '${r}'`);if(n=n.filter(({body:s})=>typeof s<"u"?PA(s,A.body):!0),n.length===0)throw new Ut(`Mock dispatch not matched for body '${A.body}' on path '${r}'`);if(n=n.filter(s=>TI(s,A.headers)),n.length===0){let s=typeof A.headers=="object"?JSON.stringify(A.headers):A.headers;throw new Ut(`Mock dispatch not matched for headers '${s}' on path '${r}'`)}return n[0]}function Pb(e,A,t){let r={timesInvoked:0,times:1,persist:!1,consumed:!1},n=typeof t=="function"?{callback:t}:{...t},s={...r,...A,pending:!0,data:{error:null,...n}};return e.push(s),s}function Jc(e,A){let t=e.findIndex(r=>r.consumed?Wb(r,A):!1);t!==-1&&e.splice(t,1)}function GI(e){let{path:A,method:t,body:r,headers:n,query:s}=e;return{path:A,method:t,body:r,headers:n,query:s}}function Hc(e){let A=Object.keys(e),t=[];for(let r=0;r<A.length;++r){let n=A[r],s=e[n],i=Buffer.from(`${n}`);if(Array.isArray(s))for(let o=0;o<s.length;++o)t.push(i,Buffer.from(`${s[o]}`));else t.push(i,Buffer.from(`${s}`))}return t}function JI(e){return vb[e]||"unknown"}async function Ob(e){let A=[];for await(let t of e)A.push(t);return Buffer.concat(A).toString("utf8")}function HI(e,A){let t=GI(e),r=YI(this[gi],t);r.timesInvoked++,r.data.callback&&(r.data={...r.data,...r.data.callback(e)});let{data:{statusCode:n,data:s,headers:i,trailers:o,error:a},delay:g,persist:l}=r,{timesInvoked:c,times:Q}=r;if(r.consumed=!l&&c>=Q,r.pending=c<Q,a!==null)return Jc(this[gi],t),A.onError(a),!0;typeof g=="number"&&g>0?setTimeout(()=>{B(this[gi])},g):B(this[gi]);function B(u,h=s){let I=Array.isArray(e.headers)?Vc(e.headers):e.headers,C=typeof h=="function"?h({...e,headers:I}):h;if(qb(C)){C.then(S=>B(u,S));return}let D=xI(C),f=Hc(i),R=Hc(o);A.onConnect?.(S=>A.onError(S),null),A.onHeaders?.(n,f,E,JI(n)),A.onData?.(Buffer.from(D)),A.onComplete?.(R),Jc(u,t)}function E(){}return!0}function zb(){let e=this[Yb],A=this[Jb],t=this[Gb];return function(n,s){if(e.isMockActive)try{HI.call(this,n,s)}catch(i){if(i instanceof Ut){let o=e[Hb]();if(o===!1)throw new Ut(`${i.message}: subsequent request to origin ${A} was not allowed (net.connect disabled)`);if(VI(o,A))t.call(this,n,s);else throw new Ut(`${i.message}: subsequent request to origin ${A} was not allowed (net.connect is not enabled for this origin)`)}else throw i}else t.call(this,n,s)}}function VI(e,A){let t=new URL(A);return e===!0?!0:!!(Array.isArray(e)&&e.some(r=>PA(r,t.host)))}function Zb(e){if(e){let{agent:A,...t}=e;return t}}vI.exports={getResponseData:xI,getMockDispatch:YI,addMockDispatch:Pb,deleteMockDispatch:Jc,buildKey:GI,generateKeyValues:Hc,matchValue:PA,getResponse:Ob,getStatusText:JI,mockDispatch:HI,buildMockDispatch:zb,checkNetConnect:VI,buildMockOptions:Zb,getHeaderByName:LI,buildHeadersFromArray:Vc}});var Zc=p((Xx,zc)=>{"use strict";var{getResponseData:_b,buildKey:Kb,addMockDispatch:vc}=Ln(),{kDispatches:li,kDispatchKey:Qi,kDefaultHeaders:qc,kDefaultTrailers:Wc,kContentLength:Pc,kMockDispatch:Ei}=kr(),{InvalidArgumentError:SA}=Z(),{buildURL:Xb}=v(),br=class{constructor(A){this[Ei]=A}delay(A){if(typeof A!="number"||!Number.isInteger(A)||A<=0)throw new SA("waitInMs must be a valid integer > 0");return this[Ei].delay=A,this}persist(){return this[Ei].persist=!0,this}times(A){if(typeof A!="number"||!Number.isInteger(A)||A<=0)throw new SA("repeatTimes must be a valid integer > 0");return this[Ei].times=A,this}},Oc=class{constructor(A,t){if(typeof A!="object")throw new SA("opts must be an object");if(typeof A.path>"u")throw new SA("opts.path must be defined");if(typeof A.method>"u"&&(A.method="GET"),typeof A.path=="string")if(A.query)A.path=Xb(A.path,A.query);else{let r=new URL(A.path,"data://");A.path=r.pathname+r.search}typeof A.method=="string"&&(A.method=A.method.toUpperCase()),this[Qi]=Kb(A),this[li]=t,this[qc]={},this[Wc]={},this[Pc]=!1}createMockScopeDispatchData({statusCode:A,data:t,responseOptions:r}){let n=_b(t),s=this[Pc]?{"content-length":n.length}:{},i={...this[qc],...s,...r.headers},o={...this[Wc],...r.trailers};return{statusCode:A,data:t,headers:i,trailers:o}}validateReplyParameters(A){if(typeof A.statusCode>"u")throw new SA("statusCode must be defined");if(typeof A.responseOptions!="object"||A.responseOptions===null)throw new SA("responseOptions must be an object")}reply(A){if(typeof A=="function"){let s=o=>{let a=A(o);if(typeof a!="object"||a===null)throw new SA("reply options callback must return an object");let g={data:"",responseOptions:{},...a};return this.validateReplyParameters(g),{...this.createMockScopeDispatchData(g)}},i=vc(this[li],this[Qi],s);return new br(i)}let t={statusCode:A,data:arguments[1]===void 0?"":arguments[1],responseOptions:arguments[2]===void 0?{}:arguments[2]};this.validateReplyParameters(t);let r=this.createMockScopeDispatchData(t),n=vc(this[li],this[Qi],r);return new br(n)}replyWithError(A){if(typeof A>"u")throw new SA("error must be defined");let t=vc(this[li],this[Qi],{error:A});return new br(t)}defaultReplyHeaders(A){if(typeof A>"u")throw new SA("headers must be defined");return this[qc]=A,this}defaultReplyTrailers(A){if(typeof A>"u")throw new SA("trailers must be defined");return this[Wc]=A,this}replyContentLength(){return this[Pc]=!0,this}};zc.exports.MockInterceptor=Oc;zc.exports.MockScope=br});var Xc=p((jx,_I)=>{"use strict";var{promisify:jb}=y("node:util"),$b=ur(),{buildMockDispatch:eF}=Ln(),{kDispatches:qI,kMockAgent:WI,kClose:PI,kOriginalClose:OI,kOrigin:zI,kOriginalDispatch:AF,kConnected:_c}=kr(),{MockInterceptor:tF}=Zc(),ZI=Qe(),{InvalidArgumentError:rF}=Z(),Kc=class extends $b{constructor(A,t){if(super(A,t),!t||!t.agent||typeof t.agent.dispatch!="function")throw new rF("Argument opts.agent must implement Agent");this[WI]=t.agent,this[zI]=A,this[qI]=[],this[_c]=1,this[AF]=this.dispatch,this[OI]=this.close.bind(this),this.dispatch=eF.call(this),this.close=this[PI]}get[ZI.kConnected](){return this[_c]}intercept(A){return new tF(A,this[qI])}async[PI](){await jb(this[OI])(),this[_c]=0,this[WI][ZI.kClients].delete(this[zI])}};_I.exports=Kc});var eg=p(($x,th)=>{"use strict";var{promisify:nF}=y("node:util"),sF=Ir(),{buildMockDispatch:iF}=Ln(),{kDispatches:KI,kMockAgent:XI,kClose:jI,kOriginalClose:$I,kOrigin:eh,kOriginalDispatch:oF,kConnected:jc}=kr(),{MockInterceptor:aF}=Zc(),Ah=Qe(),{InvalidArgumentError:cF}=Z(),$c=class extends sF{constructor(A,t){if(super(A,t),!t||!t.agent||typeof t.agent.dispatch!="function")throw new cF("Argument opts.agent must implement Agent");this[XI]=t.agent,this[eh]=A,this[KI]=[],this[jc]=1,this[oF]=this.dispatch,this[$I]=this.close.bind(this),this.dispatch=iF.call(this),this.close=this[jI]}get[Ah.kConnected](){return this[jc]}intercept(A){return new aF(A,this[KI])}async[jI](){await nF(this[$I])(),this[jc]=0,this[XI][Ah.kClients].delete(this[eh])}};th.exports=$c});var nh=p((AY,rh)=>{"use strict";var gF={pronoun:"it",is:"is",was:"was",this:"this"},lF={pronoun:"they",is:"are",was:"were",this:"these"};rh.exports=class{constructor(A,t){this.singular=A,this.plural=t}pluralize(A){let t=A===1,r=t?gF:lF,n=t?this.singular:this.plural;return{...r,count:A,noun:n}}}});var ih=p((rY,sh)=>{"use strict";var{Transform:QF}=y("node:stream"),{Console:EF}=y("node:console"),BF=process.versions.icu?"\u2705":"Y ",uF=process.versions.icu?"\u274C":"N ";sh.exports=class{constructor({disableColors:A}={}){this.transform=new QF({transform(t,r,n){n(null,t)}}),this.logger=new EF({stdout:this.transform,inspectOptions:{colors:!A&&!process.env.CI}})}format(A){let t=A.map(({method:r,path:n,data:{statusCode:s},persist:i,times:o,timesInvoked:a,origin:g})=>({Method:r,Origin:g,Path:n,"Status code":s,Persistent:i?BF:uF,Invocations:a,Remaining:i?1/0:o-a}));return this.logger.table(t),this.transform.read().toString()}}});var gh=p((nY,ch)=>{"use strict";var{kClients:Lt}=Qe(),IF=hr(),{kAgent:Ag,kMockAgentSet:Bi,kMockAgentGet:oh,kDispatches:tg,kIsMockActive:ui,kNetConnect:Tt,kGetNetConnect:hF,kOptions:Ii,kFactory:hi}=kr(),CF=Xc(),fF=eg(),{matchValue:dF,buildMockOptions:wF}=Ln(),{InvalidArgumentError:ah,UndiciError:yF}=Z(),pF=rn(),mF=nh(),DF=ih(),rg=class extends pF{constructor(A){if(super(A),this[Tt]=!0,this[ui]=!0,A?.agent&&typeof A.agent.dispatch!="function")throw new ah("Argument opts.agent must implement Agent");let t=A?.agent?A.agent:new IF(A);this[Ag]=t,this[Lt]=t[Lt],this[Ii]=wF(A)}get(A){let t=this[oh](A);return t||(t=this[hi](A),this[Bi](A,t)),t}dispatch(A,t){return this.get(A.origin),this[Ag].dispatch(A,t)}async close(){await this[Ag].close(),this[Lt].clear()}deactivate(){this[ui]=!1}activate(){this[ui]=!0}enableNetConnect(A){if(typeof A=="string"||typeof A=="function"||A instanceof RegExp)Array.isArray(this[Tt])?this[Tt].push(A):this[Tt]=[A];else if(typeof A>"u")this[Tt]=!0;else throw new ah("Unsupported matcher. Must be one of String|Function|RegExp.")}disableNetConnect(){this[Tt]=!1}get isMockActive(){return this[ui]}[Bi](A,t){this[Lt].set(A,t)}[hi](A){let t=Object.assign({agent:this},this[Ii]);return this[Ii]&&this[Ii].connections===1?new CF(A,t):new fF(A,t)}[oh](A){let t=this[Lt].get(A);if(t)return t;if(typeof A!="string"){let r=this[hi]("http://localhost:9999");return this[Bi](A,r),r}for(let[r,n]of Array.from(this[Lt]))if(n&&typeof r!="string"&&dF(r,A)){let s=this[hi](A);return this[Bi](A,s),s[tg]=n[tg],s}}[hF](){return this[Tt]}pendingInterceptors(){let A=this[Lt];return Array.from(A.entries()).flatMap(([t,r])=>r[tg].map(n=>({...n,origin:t}))).filter(({pending:t})=>t)}assertNoPendingInterceptors({pendingInterceptorsFormatter:A=new DF}={}){let t=this.pendingInterceptors();if(t.length===0)return;let r=new mF("interceptor","interceptors").pluralize(t.length);throw new yF(`
41
- ${r.count} ${r.noun} ${r.is} pending:
42
-
43
- ${A.format(t)}
44
- `.trim())}};ch.exports=rg});var Ci=p((sY,Bh)=>{"use strict";var lh=Symbol.for("undici.globalDispatcher.1"),{InvalidArgumentError:kF}=Z(),bF=hr();Eh()===void 0&&Qh(new bF);function Qh(e){if(!e||typeof e.dispatch!="function")throw new kF("Argument agent must implement Agent");Object.defineProperty(globalThis,lh,{value:e,writable:!0,enumerable:!1,configurable:!1})}function Eh(){return globalThis[lh]}Bh.exports={setGlobalDispatcher:Qh,getGlobalDispatcher:Eh}});var fi=p((oY,uh)=>{"use strict";uh.exports=class{#e;constructor(A){if(typeof A!="object"||A===null)throw new TypeError("handler must be an object");this.#e=A}onConnect(...A){return this.#e.onConnect?.(...A)}onError(...A){return this.#e.onError?.(...A)}onUpgrade(...A){return this.#e.onUpgrade?.(...A)}onResponseStarted(...A){return this.#e.onResponseStarted?.(...A)}onHeaders(...A){return this.#e.onHeaders?.(...A)}onData(...A){return this.#e.onData?.(...A)}onComplete(...A){return this.#e.onComplete?.(...A)}onBodySent(...A){return this.#e.onBodySent?.(...A)}}});var hh=p((aY,Ih)=>{"use strict";var FF=Xs();Ih.exports=e=>{let A=e?.maxRedirections;return t=>function(n,s){let{maxRedirections:i=A,...o}=n;if(!i)return t(n,s);let a=new FF(t,i,n,s);return t(o,a)}}});var fh=p((cY,Ch)=>{"use strict";var RF=ai();Ch.exports=e=>A=>function(r,n){return A(r,new RF({...r,retryOptions:{...e,...r.retryOptions}},{handler:n,dispatch:A}))}});var wh=p((gY,dh)=>{"use strict";var SF=v(),{InvalidArgumentError:NF,RequestAbortedError:MF}=Z(),UF=fi(),ng=class extends UF{#e=1024*1024;#A=null;#t=!1;#s=!1;#n=0;#r=null;#i=null;constructor({maxSize:A},t){if(super(t),A!=null&&(!Number.isFinite(A)||A<1))throw new NF("maxSize must be a number greater than 0");this.#e=A??this.#e,this.#i=t}onConnect(A){this.#A=A,this.#i.onConnect(this.#o.bind(this))}#o(A){this.#s=!0,this.#r=A}onHeaders(A,t,r,n){let i=SF.parseHeaders(t)["content-length"];if(i!=null&&i>this.#e)throw new MF(`Response size (${i}) larger than maxSize (${this.#e})`);return this.#s?!0:this.#i.onHeaders(A,t,r,n)}onError(A){this.#t||(A=this.#r??A,this.#i.onError(A))}onData(A){return this.#n=this.#n+A.length,this.#n>=this.#e&&(this.#t=!0,this.#s?this.#i.onError(this.#r):this.#i.onComplete([])),!0}onComplete(A){if(!this.#t){if(this.#s){this.#i.onError(this.reason);return}this.#i.onComplete(A)}}};function LF({maxSize:e}={maxSize:1024*1024}){return A=>function(r,n){let{dumpMaxSize:s=e}=r,i=new ng({maxSize:s},n);return A(r,i)}}dh.exports=LF});var mh=p((lY,ph)=>{"use strict";var{isIP:TF}=y("node:net"),{lookup:xF}=y("node:dns"),YF=fi(),{InvalidArgumentError:Fr,InformationalError:GF}=Z(),yh=Math.pow(2,31)-1,sg=class{#e=0;#A=0;#t=new Map;dualStack=!0;affinity=null;lookup=null;pick=null;constructor(A){this.#e=A.maxTTL,this.#A=A.maxItems,this.dualStack=A.dualStack,this.affinity=A.affinity,this.lookup=A.lookup??this.#s,this.pick=A.pick??this.#n}get full(){return this.#t.size===this.#A}runLookup(A,t,r){let n=this.#t.get(A.hostname);if(n==null&&this.full){r(null,A.origin);return}let s={affinity:this.affinity,dualStack:this.dualStack,lookup:this.lookup,pick:this.pick,...t.dns,maxTTL:this.#e,maxItems:this.#A};if(n==null)this.lookup(A,s,(i,o)=>{if(i||o==null||o.length===0){r(i??new GF("No DNS entries found"));return}this.setRecords(A,o);let a=this.#t.get(A.hostname),g=this.pick(A,a,s.affinity),l;typeof g.port=="number"?l=`:${g.port}`:A.port!==""?l=`:${A.port}`:l="",r(null,`${A.protocol}//${g.family===6?`[${g.address}]`:g.address}${l}`)});else{let i=this.pick(A,n,s.affinity);if(i==null){this.#t.delete(A.hostname),this.runLookup(A,t,r);return}let o;typeof i.port=="number"?o=`:${i.port}`:A.port!==""?o=`:${A.port}`:o="",r(null,`${A.protocol}//${i.family===6?`[${i.address}]`:i.address}${o}`)}}#s(A,t,r){xF(A.hostname,{all:!0,family:this.dualStack===!1?this.affinity:0,order:"ipv4first"},(n,s)=>{if(n)return r(n);let i=new Map;for(let o of s)i.set(`${o.address}:${o.family}`,o);r(null,i.values())})}#n(A,t,r){let n=null,{records:s,offset:i}=t,o;if(this.dualStack?(r==null&&(i==null||i===yh?(t.offset=0,r=4):(t.offset++,r=(t.offset&1)===1?6:4)),s[r]!=null&&s[r].ips.length>0?o=s[r]:o=s[r===4?6:4]):o=s[r],o==null||o.ips.length===0)return n;o.offset==null||o.offset===yh?o.offset=0:o.offset++;let a=o.offset%o.ips.length;return n=o.ips[a]??null,n==null?n:Date.now()-n.timestamp>n.ttl?(o.ips.splice(a,1),this.pick(A,t,r)):n}setRecords(A,t){let r=Date.now(),n={records:{4:null,6:null}};for(let s of t){s.timestamp=r,typeof s.ttl=="number"?s.ttl=Math.min(s.ttl,this.#e):s.ttl=this.#e;let i=n.records[s.family]??{ips:[]};i.ips.push(s),n.records[s.family]=i}this.#t.set(A.hostname,n)}getHandler(A,t){return new ig(this,A,t)}},ig=class extends YF{#e=null;#A=null;#t=null;#s=null;#n=null;constructor(A,{origin:t,handler:r,dispatch:n},s){super(r),this.#n=t,this.#s=r,this.#A={...s},this.#e=A,this.#t=n}onError(A){switch(A.code){case"ETIMEDOUT":case"ECONNREFUSED":{if(this.#e.dualStack){this.#e.runLookup(this.#n,this.#A,(t,r)=>{if(t)return this.#s.onError(t);let n={...this.#A,origin:r};this.#t(n,this)});return}this.#s.onError(A);return}case"ENOTFOUND":this.#e.deleteRecord(this.#n);default:this.#s.onError(A);break}}};ph.exports=e=>{if(e?.maxTTL!=null&&(typeof e?.maxTTL!="number"||e?.maxTTL<0))throw new Fr("Invalid maxTTL. Must be a positive number");if(e?.maxItems!=null&&(typeof e?.maxItems!="number"||e?.maxItems<1))throw new Fr("Invalid maxItems. Must be a positive number and greater than zero");if(e?.affinity!=null&&e?.affinity!==4&&e?.affinity!==6)throw new Fr("Invalid affinity. Must be either 4 or 6");if(e?.dualStack!=null&&typeof e?.dualStack!="boolean")throw new Fr("Invalid dualStack. Must be a boolean");if(e?.lookup!=null&&typeof e?.lookup!="function")throw new Fr("Invalid lookup. Must be a function");if(e?.pick!=null&&typeof e?.pick!="function")throw new Fr("Invalid pick. Must be a function");let A=e?.dualStack??!0,t;A?t=e?.affinity??null:t=e?.affinity??4;let r={maxTTL:e?.maxTTL??1e4,lookup:e?.lookup??null,pick:e?.pick??null,dualStack:A,affinity:t,maxItems:e?.maxItems??1/0},n=new sg(r);return s=>function(o,a){let g=o.origin.constructor===URL?o.origin:new URL(o.origin);return TF(g.hostname)!==0?s(o,a):(n.runLookup(g,o,(l,c)=>{if(l)return a.onError(l);let Q=null;Q={...o,servername:g.hostname,origin:c,headers:{host:g.hostname,...o.headers}},s(Q,n.getHandler({origin:g,dispatch:s,handler:a},o))}),!0)}}});var xt=p((QY,Nh)=>{"use strict";var{kConstruct:JF}=Qe(),{kEnumerableProperty:Rr}=v(),{iteratorMixin:HF,isValidHeaderName:Tn,isValidHeaderValue:kh}=Pe(),{webidl:z}=Se(),og=y("node:assert"),di=y("node:util"),ye=Symbol("headers map"),_e=Symbol("headers map sorted");function Dh(e){return e===10||e===13||e===9||e===32}function bh(e){let A=0,t=e.length;for(;t>A&&Dh(e.charCodeAt(t-1));)--t;for(;t>A&&Dh(e.charCodeAt(A));)++A;return A===0&&t===e.length?e:e.substring(A,t)}function Fh(e,A){if(Array.isArray(A))for(let t=0;t<A.length;++t){let r=A[t];if(r.length!==2)throw z.errors.exception({header:"Headers constructor",message:`expected name/value pair to be length 2, found ${r.length}.`});ag(e,r[0],r[1])}else if(typeof A=="object"&&A!==null){let t=Object.keys(A);for(let r=0;r<t.length;++r)ag(e,t[r],A[t[r]])}else throw z.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence<sequence<ByteString>>","record<ByteString, ByteString>"]})}function ag(e,A,t){if(t=bh(t),Tn(A)){if(!kh(t))throw z.errors.invalidArgument({prefix:"Headers.append",value:t,type:"header value"})}else throw z.errors.invalidArgument({prefix:"Headers.append",value:A,type:"header name"});if(Sh(e)==="immutable")throw new TypeError("immutable");return cg(e).append(A,t,!1)}function Rh(e,A){return e[0]<A[0]?-1:1}var wi=class e{cookies=null;constructor(A){A instanceof e?(this[ye]=new Map(A[ye]),this[_e]=A[_e],this.cookies=A.cookies===null?null:[...A.cookies]):(this[ye]=new Map(A),this[_e]=null)}contains(A,t){return this[ye].has(t?A:A.toLowerCase())}clear(){this[ye].clear(),this[_e]=null,this.cookies=null}append(A,t,r){this[_e]=null;let n=r?A:A.toLowerCase(),s=this[ye].get(n);if(s){let i=n==="cookie"?"; ":", ";this[ye].set(n,{name:s.name,value:`${s.value}${i}${t}`})}else this[ye].set(n,{name:A,value:t});n==="set-cookie"&&(this.cookies??=[]).push(t)}set(A,t,r){this[_e]=null;let n=r?A:A.toLowerCase();n==="set-cookie"&&(this.cookies=[t]),this[ye].set(n,{name:A,value:t})}delete(A,t){this[_e]=null,t||(A=A.toLowerCase()),A==="set-cookie"&&(this.cookies=null),this[ye].delete(A)}get(A,t){return this[ye].get(t?A:A.toLowerCase())?.value??null}*[Symbol.iterator](){for(let{0:A,1:{value:t}}of this[ye])yield[A,t]}get entries(){let A={};if(this[ye].size!==0)for(let{name:t,value:r}of this[ye].values())A[t]=r;return A}rawValues(){return this[ye].values()}get entriesList(){let A=[];if(this[ye].size!==0)for(let{0:t,1:{name:r,value:n}}of this[ye])if(t==="set-cookie")for(let s of this.cookies)A.push([r,s]);else A.push([r,n]);return A}toSortedArray(){let A=this[ye].size,t=new Array(A);if(A<=32){if(A===0)return t;let r=this[ye][Symbol.iterator](),n=r.next().value;t[0]=[n[0],n[1].value],og(n[1].value!==null);for(let s=1,i=0,o=0,a=0,g=0,l,c;s<A;++s){for(c=r.next().value,l=t[s]=[c[0],c[1].value],og(l[1]!==null),a=0,o=s;a<o;)g=a+(o-a>>1),t[g][0]<=l[0]?a=g+1:o=g;if(s!==g){for(i=s;i>a;)t[i]=t[--i];t[a]=l}}if(!r.next().done)throw new TypeError("Unreachable");return t}else{let r=0;for(let{0:n,1:{value:s}}of this[ye])t[r++]=[n,s],og(s!==null);return t.sort(Rh)}}},uA=class e{#e;#A;constructor(A=void 0){z.util.markAsUncloneable(this),A!==JF&&(this.#A=new wi,this.#e="none",A!==void 0&&(A=z.converters.HeadersInit(A,"Headers contructor","init"),Fh(this,A)))}append(A,t){z.brandCheck(this,e),z.argumentLengthCheck(arguments,2,"Headers.append");let r="Headers.append";return A=z.converters.ByteString(A,r,"name"),t=z.converters.ByteString(t,r,"value"),ag(this,A,t)}delete(A){if(z.brandCheck(this,e),z.argumentLengthCheck(arguments,1,"Headers.delete"),A=z.converters.ByteString(A,"Headers.delete","name"),!Tn(A))throw z.errors.invalidArgument({prefix:"Headers.delete",value:A,type:"header name"});if(this.#e==="immutable")throw new TypeError("immutable");this.#A.contains(A,!1)&&this.#A.delete(A,!1)}get(A){z.brandCheck(this,e),z.argumentLengthCheck(arguments,1,"Headers.get");let t="Headers.get";if(A=z.converters.ByteString(A,t,"name"),!Tn(A))throw z.errors.invalidArgument({prefix:t,value:A,type:"header name"});return this.#A.get(A,!1)}has(A){z.brandCheck(this,e),z.argumentLengthCheck(arguments,1,"Headers.has");let t="Headers.has";if(A=z.converters.ByteString(A,t,"name"),!Tn(A))throw z.errors.invalidArgument({prefix:t,value:A,type:"header name"});return this.#A.contains(A,!1)}set(A,t){z.brandCheck(this,e),z.argumentLengthCheck(arguments,2,"Headers.set");let r="Headers.set";if(A=z.converters.ByteString(A,r,"name"),t=z.converters.ByteString(t,r,"value"),t=bh(t),Tn(A)){if(!kh(t))throw z.errors.invalidArgument({prefix:r,value:t,type:"header value"})}else throw z.errors.invalidArgument({prefix:r,value:A,type:"header name"});if(this.#e==="immutable")throw new TypeError("immutable");this.#A.set(A,t,!1)}getSetCookie(){z.brandCheck(this,e);let A=this.#A.cookies;return A?[...A]:[]}get[_e](){if(this.#A[_e])return this.#A[_e];let A=[],t=this.#A.toSortedArray(),r=this.#A.cookies;if(r===null||r.length===1)return this.#A[_e]=t;for(let n=0;n<t.length;++n){let{0:s,1:i}=t[n];if(s==="set-cookie")for(let o=0;o<r.length;++o)A.push([s,r[o]]);else A.push([s,i])}return this.#A[_e]=A}[di.inspect.custom](A,t){return t.depth??=A,`Headers ${di.formatWithOptions(t,this.#A.entries)}`}static getHeadersGuard(A){return A.#e}static setHeadersGuard(A,t){A.#e=t}static getHeadersList(A){return A.#A}static setHeadersList(A,t){A.#A=t}},{getHeadersGuard:Sh,setHeadersGuard:VF,getHeadersList:cg,setHeadersList:vF}=uA;Reflect.deleteProperty(uA,"getHeadersGuard");Reflect.deleteProperty(uA,"setHeadersGuard");Reflect.deleteProperty(uA,"getHeadersList");Reflect.deleteProperty(uA,"setHeadersList");HF("Headers",uA,_e,0,1);Object.defineProperties(uA.prototype,{append:Rr,delete:Rr,get:Rr,has:Rr,set:Rr,getSetCookie:Rr,[Symbol.toStringTag]:{value:"Headers",configurable:!0},[di.inspect.custom]:{enumerable:!1}});z.converters.HeadersInit=function(e,A,t){if(z.util.Type(e)==="Object"){let r=Reflect.get(e,Symbol.iterator);if(!di.types.isProxy(e)&&r===uA.prototype.entries)try{return cg(e).entriesList}catch{}return typeof r=="function"?z.converters["sequence<sequence<ByteString>>"](e,A,t,r.bind(e)):z.converters["record<ByteString, ByteString>"](e,A,t)}throw z.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence<sequence<ByteString>>","record<ByteString, ByteString>"]})};Nh.exports={fill:Fh,compareHeaderName:Rh,Headers:uA,HeadersList:wi,getHeadersGuard:Sh,setHeadersGuard:VF,setHeadersList:vF,getHeadersList:cg}});var Yn=p((EY,qh)=>{"use strict";var{Headers:Yh,HeadersList:Mh,fill:qF,getHeadersGuard:WF,setHeadersGuard:Gh,setHeadersList:Jh}=xt(),{extractBody:Uh,cloneBody:PF,mixinBody:OF,hasFinalizationRegistry:Hh,streamRegistry:Vh,bodyUnusable:zF}=ar(),gg=v(),Lh=y("node:util"),{kEnumerableProperty:Ke}=gg,{isValidReasonPhrase:ZF,isCancelled:_F,isAborted:KF,isBlobLike:XF,serializeJavascriptValueToJSONString:jF,isErrorLike:$F,isomorphicEncode:eR,environmentSettingsObject:AR}=Pe(),{redirectStatusSet:tR,nullBodyStatus:rR}=on(),{kState:Be,kHeaders:OA}=jA(),{webidl:V}=Se(),{FormData:nR}=En(),{URLSerializer:Th}=Je(),{kConstruct:pi}=Qe(),lg=y("node:assert"),{types:sR}=y("node:util"),iR=new TextEncoder("utf-8"),Yt=class e{static error(){return xn(mi(),"immutable")}static json(A,t={}){V.argumentLengthCheck(arguments,1,"Response.json"),t!==null&&(t=V.converters.ResponseInit(t));let r=iR.encode(jF(A)),n=Uh(r),s=xn(Sr({}),"response");return xh(s,t,{body:n[0],type:"application/json"}),s}static redirect(A,t=302){V.argumentLengthCheck(arguments,1,"Response.redirect"),A=V.converters.USVString(A),t=V.converters["unsigned short"](t);let r;try{r=new URL(A,AR.settingsObject.baseUrl)}catch(i){throw new TypeError(`Failed to parse URL from ${A}`,{cause:i})}if(!tR.has(t))throw new RangeError(`Invalid status code ${t}`);let n=xn(Sr({}),"immutable");n[Be].status=t;let s=eR(Th(r));return n[Be].headersList.append("location",s,!0),n}constructor(A=null,t={}){if(V.util.markAsUncloneable(this),A===pi)return;A!==null&&(A=V.converters.BodyInit(A)),t=V.converters.ResponseInit(t),this[Be]=Sr({}),this[OA]=new Yh(pi),Gh(this[OA],"response"),Jh(this[OA],this[Be].headersList);let r=null;if(A!=null){let[n,s]=Uh(A);r={body:n,type:s}}xh(this,t,r)}get type(){return V.brandCheck(this,e),this[Be].type}get url(){V.brandCheck(this,e);let A=this[Be].urlList,t=A[A.length-1]??null;return t===null?"":Th(t,!0)}get redirected(){return V.brandCheck(this,e),this[Be].urlList.length>1}get status(){return V.brandCheck(this,e),this[Be].status}get ok(){return V.brandCheck(this,e),this[Be].status>=200&&this[Be].status<=299}get statusText(){return V.brandCheck(this,e),this[Be].statusText}get headers(){return V.brandCheck(this,e),this[OA]}get body(){return V.brandCheck(this,e),this[Be].body?this[Be].body.stream:null}get bodyUsed(){return V.brandCheck(this,e),!!this[Be].body&&gg.isDisturbed(this[Be].body.stream)}clone(){if(V.brandCheck(this,e),zF(this))throw V.errors.exception({header:"Response.clone",message:"Body has already been consumed."});let A=Qg(this[Be]);return Hh&&this[Be].body?.stream&&Vh.register(this,new WeakRef(this[Be].body.stream)),xn(A,WF(this[OA]))}[Lh.inspect.custom](A,t){t.depth===null&&(t.depth=2),t.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 ${Lh.formatWithOptions(t,r)}`}};OF(Yt);Object.defineProperties(Yt.prototype,{type:Ke,url:Ke,status:Ke,ok:Ke,redirected:Ke,statusText:Ke,headers:Ke,clone:Ke,body:Ke,bodyUsed:Ke,[Symbol.toStringTag]:{value:"Response",configurable:!0}});Object.defineProperties(Yt,{json:Ke,redirect:Ke,error:Ke});function Qg(e){if(e.internalResponse)return vh(Qg(e.internalResponse),e.type);let A=Sr({...e,body:null});return e.body!=null&&(A.body=PF(A,e.body)),A}function Sr(e){return{aborted:!1,rangeRequested:!1,timingAllowPassed:!1,requestIncludesCredentials:!1,type:"default",status:200,timingInfo:null,cacheState:"",statusText:"",...e,headersList:e?.headersList?new Mh(e?.headersList):new Mh,urlList:e?.urlList?[...e.urlList]:[]}}function mi(e){let A=$F(e);return Sr({type:"error",status:0,error:A?e:new Error(e&&String(e)),aborted:e&&e.name==="AbortError"})}function oR(e){return e.type==="error"&&e.status===0}function yi(e,A){return A={internalResponse:e,...A},new Proxy(e,{get(t,r){return r in A?A[r]:t[r]},set(t,r,n){return lg(!(r in A)),t[r]=n,!0}})}function vh(e,A){if(A==="basic")return yi(e,{type:"basic",headersList:e.headersList});if(A==="cors")return yi(e,{type:"cors",headersList:e.headersList});if(A==="opaque")return yi(e,{type:"opaque",urlList:Object.freeze([]),status:0,statusText:"",body:null});if(A==="opaqueredirect")return yi(e,{type:"opaqueredirect",status:0,statusText:"",headersList:[],body:null});lg(!1)}function aR(e,A=null){return lg(_F(e)),KF(e)?mi(Object.assign(new DOMException("The operation was aborted.","AbortError"),{cause:A})):mi(Object.assign(new DOMException("Request was cancelled."),{cause:A}))}function xh(e,A,t){if(A.status!==null&&(A.status<200||A.status>599))throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.');if("statusText"in A&&A.statusText!=null&&!ZF(String(A.statusText)))throw new TypeError("Invalid statusText");if("status"in A&&A.status!=null&&(e[Be].status=A.status),"statusText"in A&&A.statusText!=null&&(e[Be].statusText=A.statusText),"headers"in A&&A.headers!=null&&qF(e[OA],A.headers),t){if(rR.includes(e.status))throw V.errors.exception({header:"Response constructor",message:`Invalid response status code ${e.status}`});e[Be].body=t.body,t.type!=null&&!e[Be].headersList.contains("content-type",!0)&&e[Be].headersList.append("content-type",t.type,!0)}}function xn(e,A){let t=new Yt(pi);return t[Be]=e,t[OA]=new Yh(pi),Jh(t[OA],e.headersList),Gh(t[OA],A),Hh&&e.body?.stream&&Vh.register(t,new WeakRef(e.body.stream)),t}V.converters.ReadableStream=V.interfaceConverter(ReadableStream);V.converters.FormData=V.interfaceConverter(nR);V.converters.URLSearchParams=V.interfaceConverter(URLSearchParams);V.converters.XMLHttpRequestBodyInit=function(e,A,t){return typeof e=="string"?V.converters.USVString(e,A,t):XF(e)?V.converters.Blob(e,A,t,{strict:!1}):ArrayBuffer.isView(e)||sR.isArrayBuffer(e)?V.converters.BufferSource(e,A,t):gg.isFormDataLike(e)?V.converters.FormData(e,A,t,{strict:!1}):e instanceof URLSearchParams?V.converters.URLSearchParams(e,A,t):V.converters.DOMString(e,A,t)};V.converters.BodyInit=function(e,A,t){return e instanceof ReadableStream?V.converters.ReadableStream(e,A,t):e?.[Symbol.asyncIterator]?e:V.converters.XMLHttpRequestBodyInit(e,A,t)};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}]);qh.exports={isNetworkError:oR,makeNetworkError:mi,makeResponse:Sr,makeAppropriateNetworkError:aR,filterResponse:vh,Response:Yt,cloneResponse:Qg,fromInnerResponse:xn}});var zh=p((BY,Oh)=>{"use strict";var{kConnected:Wh,kSize:Ph}=Qe(),Eg=class{constructor(A){this.value=A}deref(){return this.value[Wh]===0&&this.value[Ph]===0?void 0:this.value}},Bg=class{constructor(A){this.finalizer=A}register(A,t){A.on&&A.on("disconnect",()=>{A[Wh]===0&&A[Ph]===0&&this.finalizer(t)})}unregister(A){}};Oh.exports=function(){return process.env.NODE_V8_COVERAGE&&process.version.startsWith("v18")?(process._rawDebug("Using compatibility WeakRef and FinalizationRegistry"),{WeakRef:Eg,FinalizationRegistry:Bg}):{WeakRef,FinalizationRegistry}}});var Nr=p((uY,aC)=>{"use strict";var{extractBody:cR,mixinBody:gR,cloneBody:lR,bodyUnusable:Zh}=ar(),{Headers:rC,fill:QR,HeadersList:Fi,setHeadersGuard:Ig,getHeadersGuard:ER,setHeadersList:nC,getHeadersList:_h}=xt(),{FinalizationRegistry:BR}=zh()(),ki=v(),Kh=y("node:util"),{isValidHTTPToken:uR,sameOrigin:Xh,environmentSettingsObject:Di}=Pe(),{forbiddenMethodsSet:IR,corsSafeListedMethodsSet:hR,referrerPolicy:CR,requestRedirect:fR,requestMode:dR,requestCredentials:wR,requestCache:yR,requestDuplex:pR}=on(),{kEnumerableProperty:pe,normalizedMethodRecordsBase:mR,normalizedMethodRecords:DR}=ki,{kHeaders:Xe,kSignal:bi,kState:ce,kDispatcher:ug}=jA(),{webidl:Y}=Se(),{URLSerializer:kR}=Je(),{kConstruct:Ri}=Qe(),bR=y("node:assert"),{getMaxListeners:jh,setMaxListeners:$h,getEventListeners:FR,defaultMaxListeners:eC}=y("node:events"),RR=Symbol("abortController"),sC=new BR(({signal:e,abort:A})=>{e.removeEventListener("abort",A)}),Si=new WeakMap;function AC(e){return A;function A(){let t=e.deref();if(t!==void 0){sC.unregister(A),this.removeEventListener("abort",A),t.abort(this.reason);let r=Si.get(t.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()}Si.delete(t.signal)}}}}var tC=!1,ct=class e{constructor(A,t={}){if(Y.util.markAsUncloneable(this),A===Ri)return;let r="Request constructor";Y.argumentLengthCheck(arguments,1,r),A=Y.converters.RequestInfo(A,r,"input"),t=Y.converters.RequestInit(t,r,"init");let n=null,s=null,i=Di.settingsObject.baseUrl,o=null;if(typeof A=="string"){this[ug]=t.dispatcher;let I;try{I=new URL(A,i)}catch(C){throw new TypeError("Failed to parse URL from "+A,{cause:C})}if(I.username||I.password)throw new TypeError("Request cannot be constructed from a URL that includes credentials: "+A);n=Ni({urlList:[I]}),s="cors"}else this[ug]=t.dispatcher||A[ug],bR(A instanceof e),n=A[ce],o=A[bi];let a=Di.settingsObject.origin,g="client";if(n.window?.constructor?.name==="EnvironmentSettingsObject"&&Xh(n.window,a)&&(g=n.window),t.window!=null)throw new TypeError(`'window' option '${g}' must be null`);"window"in t&&(g="no-window"),n=Ni({method:n.method,headersList:n.headersList,unsafeRequest:n.unsafeRequest,client:Di.settingsObject,window:g,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 l=Object.keys(t).length!==0;if(l&&(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]),t.referrer!==void 0){let I=t.referrer;if(I==="")n.referrer="no-referrer";else{let C;try{C=new URL(I,i)}catch(D){throw new TypeError(`Referrer "${I}" is not a valid URL.`,{cause:D})}C.protocol==="about:"&&C.hostname==="client"||a&&!Xh(C,Di.settingsObject.baseUrl)?n.referrer="client":n.referrer=C}}t.referrerPolicy!==void 0&&(n.referrerPolicy=t.referrerPolicy);let c;if(t.mode!==void 0?c=t.mode:c=s,c==="navigate")throw Y.errors.exception({header:"Request constructor",message:"invalid request mode navigate."});if(c!=null&&(n.mode=c),t.credentials!==void 0&&(n.credentials=t.credentials),t.cache!==void 0&&(n.cache=t.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(t.redirect!==void 0&&(n.redirect=t.redirect),t.integrity!=null&&(n.integrity=String(t.integrity)),t.keepalive!==void 0&&(n.keepalive=!!t.keepalive),t.method!==void 0){let I=t.method,C=DR[I];if(C!==void 0)n.method=C;else{if(!uR(I))throw new TypeError(`'${I}' is not a valid HTTP method.`);let D=I.toUpperCase();if(IR.has(D))throw new TypeError(`'${I}' HTTP method is unsupported.`);I=mR[D]??I,n.method=I}!tC&&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"}),tC=!0)}t.signal!==void 0&&(o=t.signal),this[ce]=n;let Q=new AbortController;if(this[bi]=Q.signal,o!=null){if(!o||typeof o.aborted!="boolean"||typeof o.addEventListener!="function")throw new TypeError("Failed to construct 'Request': member signal is not of type AbortSignal.");if(o.aborted)Q.abort(o.reason);else{this[RR]=Q;let I=new WeakRef(Q),C=AC(I);try{(typeof jh=="function"&&jh(o)===eC||FR(o,"abort").length>=eC)&&$h(1500,o)}catch{}ki.addAbortListener(o,C),sC.register(Q,{signal:o,abort:C},C)}}if(this[Xe]=new rC(Ri),nC(this[Xe],n.headersList),Ig(this[Xe],"request"),c==="no-cors"){if(!hR.has(n.method))throw new TypeError(`'${n.method} is unsupported in no-cors mode.`);Ig(this[Xe],"request-no-cors")}if(l){let I=_h(this[Xe]),C=t.headers!==void 0?t.headers:new Fi(I);if(I.clear(),C instanceof Fi){for(let{name:D,value:f}of C.rawValues())I.append(D,f,!1);I.cookies=C.cookies}else QR(this[Xe],C)}let B=A instanceof e?A[ce].body:null;if((t.body!=null||B!=null)&&(n.method==="GET"||n.method==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body.");let E=null;if(t.body!=null){let[I,C]=cR(t.body,n.keepalive);E=I,C&&!_h(this[Xe]).contains("content-type",!0)&&this[Xe].append("content-type",C)}let u=E??B;if(u!=null&&u.source==null){if(E!=null&&t.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 h=u;if(E==null&&B!=null){if(Zh(A))throw new TypeError("Cannot construct a Request with a Request object that has already been used.");let I=new TransformStream;B.stream.pipeThrough(I),h={source:B.source,length:B.length,stream:I.readable}}this[ce].body=h}get method(){return Y.brandCheck(this,e),this[ce].method}get url(){return Y.brandCheck(this,e),kR(this[ce].url)}get headers(){return Y.brandCheck(this,e),this[Xe]}get destination(){return Y.brandCheck(this,e),this[ce].destination}get referrer(){return Y.brandCheck(this,e),this[ce].referrer==="no-referrer"?"":this[ce].referrer==="client"?"about:client":this[ce].referrer.toString()}get referrerPolicy(){return Y.brandCheck(this,e),this[ce].referrerPolicy}get mode(){return Y.brandCheck(this,e),this[ce].mode}get credentials(){return this[ce].credentials}get cache(){return Y.brandCheck(this,e),this[ce].cache}get redirect(){return Y.brandCheck(this,e),this[ce].redirect}get integrity(){return Y.brandCheck(this,e),this[ce].integrity}get keepalive(){return Y.brandCheck(this,e),this[ce].keepalive}get isReloadNavigation(){return Y.brandCheck(this,e),this[ce].reloadNavigation}get isHistoryNavigation(){return Y.brandCheck(this,e),this[ce].historyNavigation}get signal(){return Y.brandCheck(this,e),this[bi]}get body(){return Y.brandCheck(this,e),this[ce].body?this[ce].body.stream:null}get bodyUsed(){return Y.brandCheck(this,e),!!this[ce].body&&ki.isDisturbed(this[ce].body.stream)}get duplex(){return Y.brandCheck(this,e),"half"}clone(){if(Y.brandCheck(this,e),Zh(this))throw new TypeError("unusable");let A=iC(this[ce]),t=new AbortController;if(this.signal.aborted)t.abort(this.signal.reason);else{let r=Si.get(this.signal);r===void 0&&(r=new Set,Si.set(this.signal,r));let n=new WeakRef(t);r.add(n),ki.addAbortListener(t.signal,AC(n))}return oC(A,t.signal,ER(this[Xe]))}[Kh.inspect.custom](A,t){t.depth===null&&(t.depth=2),t.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 ${Kh.formatWithOptions(t,r)}`}};gR(ct);function Ni(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 Fi(e.headersList):new Fi}}function iC(e){let A=Ni({...e,body:null});return e.body!=null&&(A.body=lR(A,e.body)),A}function oC(e,A,t){let r=new ct(Ri);return r[ce]=e,r[bi]=A,r[Xe]=new rC(Ri),nC(r[Xe],e.headersList),Ig(r[Xe],t),r}Object.defineProperties(ct.prototype,{method:pe,url:pe,headers:pe,redirect:pe,clone:pe,signal:pe,duplex:pe,destination:pe,body:pe,bodyUsed:pe,isHistoryNavigation:pe,isReloadNavigation:pe,keepalive:pe,integrity:pe,cache:pe,credentials:pe,attribute:pe,referrerPolicy:pe,referrer:pe,mode:pe,[Symbol.toStringTag]:{value:"Request",configurable:!0}});Y.converters.Request=Y.interfaceConverter(ct);Y.converters.RequestInfo=function(e,A,t){return typeof e=="string"?Y.converters.USVString(e,A,t):e instanceof ct?Y.converters.Request(e,A,t):Y.converters.USVString(e,A,t)};Y.converters.AbortSignal=Y.interfaceConverter(AbortSignal);Y.converters.RequestInit=Y.dictionaryConverter([{key:"method",converter:Y.converters.ByteString},{key:"headers",converter:Y.converters.HeadersInit},{key:"body",converter:Y.nullableConverter(Y.converters.BodyInit)},{key:"referrer",converter:Y.converters.USVString},{key:"referrerPolicy",converter:Y.converters.DOMString,allowedValues:CR},{key:"mode",converter:Y.converters.DOMString,allowedValues:dR},{key:"credentials",converter:Y.converters.DOMString,allowedValues:wR},{key:"cache",converter:Y.converters.DOMString,allowedValues:yR},{key:"redirect",converter:Y.converters.DOMString,allowedValues:fR},{key:"integrity",converter:Y.converters.DOMString},{key:"keepalive",converter:Y.converters.boolean},{key:"signal",converter:Y.nullableConverter(e=>Y.converters.AbortSignal(e,"RequestInit","signal",{strict:!1}))},{key:"window",converter:Y.converters.any},{key:"duplex",converter:Y.converters.DOMString,allowedValues:pR},{key:"dispatcher",converter:Y.converters.any}]);aC.exports={Request:ct,makeRequest:Ni,fromInnerRequest:oC,cloneRequest:iC}});var Jn=p((IY,pC)=>{"use strict";var{makeNetworkError:Ae,makeAppropriateNetworkError:Mi,filterResponse:hg,makeResponse:Ui,fromInnerResponse:SR}=Yn(),{HeadersList:cC}=xt(),{Request:NR,cloneRequest:MR}=Nr(),gt=y("node:zlib"),{bytesMatch:UR,makePolicyContainer:LR,clonePolicyContainer:TR,requestBadPort:xR,TAOCheck:YR,appendRequestOriginHeader:GR,responseLocationURL:JR,requestCurrentURL:NA,setRequestReferrerPolicyOnRedirect:HR,tryUpgradeRequestToAPotentiallyTrustworthyURL:VR,createOpaqueTimingInfo:yg,appendFetchMetadata:vR,corsCheck:qR,crossOriginResourcePolicyCheck:WR,determineRequestsReferrer:PR,coarsenedSharedCurrentTime:Gn,createDeferredPromise:OR,isBlobLike:zR,sameOrigin:wg,isCancelled:Gt,isAborted:gC,isErrorLike:ZR,fullyReadBody:_R,readableStreamClose:KR,isomorphicEncode:Li,urlIsLocal:XR,urlIsHttpHttpsScheme:pg,urlHasHttpsScheme:jR,clampAndCoarsenConnectionTimingInfo:$R,simpleRangeHeaderValue:eS,buildContentRange:AS,createInflate:tS,extractMimeType:rS}=Pe(),{kState:BC,kDispatcher:nS}=jA(),Jt=y("node:assert"),{safelyExtractBody:mg,extractBody:lC}=ar(),{redirectStatusSet:uC,nullBodyStatus:IC,safeMethodsSet:sS,requestBodyHeader:iS,subresourceSet:oS}=on(),aS=y("node:events"),{Readable:cS,pipeline:gS,finished:lS}=y("node:stream"),{addAbortListener:QS,isErrored:ES,isReadable:Ti,bufferToLowerCasedHeaderName:QC}=v(),{dataURLProcessor:BS,serializeAMimeType:uS,minimizeSupportedMimeType:IS}=Je(),{getGlobalDispatcher:hS}=Ci(),{webidl:CS}=Se(),{STATUS_CODES:fS}=y("node:http"),dS=["GET","HEAD"],wS=typeof __UNDICI_IS_NODE__<"u"||typeof esbuildDetection<"u"?"node":"undici",Cg,xi=class extends aS{constructor(A){super(),this.dispatcher=A,this.connection=null,this.dump=!1,this.state="ongoing"}terminate(A){this.state==="ongoing"&&(this.state="terminated",this.connection?.destroy(A),this.emit("terminated",A))}abort(A){this.state==="ongoing"&&(this.state="aborted",A||(A=new DOMException("The operation was aborted.","AbortError")),this.serializedAbortReason=A,this.connection?.destroy(A),this.emit("terminated",A))}};function yS(e){hC(e,"fetch")}function pS(e,A=void 0){CS.argumentLengthCheck(arguments,1,"globalThis.fetch");let t=OR(),r;try{r=new NR(e,A)}catch(l){return t.reject(l),t.promise}let n=r[BC];if(r.signal.aborted)return fg(t,n,null,r.signal.reason),t.promise;n.client.globalObject?.constructor?.name==="ServiceWorkerGlobalScope"&&(n.serviceWorkers="none");let i=null,o=!1,a=null;return QS(r.signal,()=>{o=!0,Jt(a!=null),a.abort(r.signal.reason);let l=i?.deref();fg(t,n,l,r.signal.reason)}),a=fC({request:n,processResponseEndOfBody:yS,processResponse:l=>{if(!o){if(l.aborted){fg(t,n,i,a.serializedAbortReason);return}if(l.type==="error"){t.reject(new TypeError("fetch failed",{cause:l.error}));return}i=new WeakRef(SR(l,"immutable")),t.resolve(i.deref()),t=null}},dispatcher:r[nS]}),t.promise}function hC(e,A="other"){if(e.type==="error"&&e.aborted||!e.urlList?.length)return;let t=e.urlList[0],r=e.timingInfo,n=e.cacheState;pg(t)&&r!==null&&(e.timingAllowPassed||(r=yg({startTime:r.startTime}),n=""),r.endTime=Gn(),e.timingInfo=r,CC(r,t.href,A,globalThis,n))}var CC=performance.markResourceTiming;function fg(e,A,t,r){if(e&&e.reject(r),A.body!=null&&Ti(A.body?.stream)&&A.body.stream.cancel(r).catch(s=>{if(s.code!=="ERR_INVALID_STATE")throw s}),t==null)return;let n=t[BC];n.body!=null&&Ti(n.body?.stream)&&n.body.stream.cancel(r).catch(s=>{if(s.code!=="ERR_INVALID_STATE")throw s})}function fC({request:e,processRequestBodyChunkLength:A,processRequestEndOfBody:t,processResponse:r,processResponseEndOfBody:n,processResponseConsumeBody:s,useParallelQueue:i=!1,dispatcher:o=hS()}){Jt(o);let a=null,g=!1;e.client!=null&&(a=e.client.globalObject,g=e.client.crossOriginIsolatedCapability);let l=Gn(g),c=yg({startTime:l}),Q={controller:new xi(o),request:e,timingInfo:c,processRequestBodyChunkLength:A,processRequestEndOfBody:t,processResponse:r,processResponseConsumeBody:s,processResponseEndOfBody:n,taskDestination:a,crossOriginIsolatedCapability:g};return Jt(!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=TR(e.client.policyContainer):e.policyContainer=LR()),e.headersList.contains("accept",!0)||e.headersList.append("accept","*/*",!0),e.headersList.contains("accept-language",!0)||e.headersList.append("accept-language","*",!0),e.priority,oS.has(e.destination),dC(Q).catch(B=>{Q.controller.terminate(B)}),Q.controller}async function dC(e,A=!1){let t=e.request,r=null;if(t.localURLsOnly&&!XR(NA(t))&&(r=Ae("local URLs only")),VR(t),xR(t)==="blocked"&&(r=Ae("bad port")),t.referrerPolicy===""&&(t.referrerPolicy=t.policyContainer.referrerPolicy),t.referrer!=="no-referrer"&&(t.referrer=PR(t)),r===null&&(r=await(async()=>{let s=NA(t);return wg(s,t.url)&&t.responseTainting==="basic"||s.protocol==="data:"||t.mode==="navigate"||t.mode==="websocket"?(t.responseTainting="basic",await EC(e)):t.mode==="same-origin"?Ae('request mode cannot be "same-origin"'):t.mode==="no-cors"?t.redirect!=="follow"?Ae('redirect mode cannot be "follow" for "no-cors" request'):(t.responseTainting="opaque",await EC(e)):pg(NA(t))?(t.responseTainting="cors",await wC(e)):Ae("URL scheme must be a HTTP(S) scheme")})()),A)return r;r.status!==0&&!r.internalResponse&&(t.responseTainting,t.responseTainting==="basic"?r=hg(r,"basic"):t.responseTainting==="cors"?r=hg(r,"cors"):t.responseTainting==="opaque"?r=hg(r,"opaque"):Jt(!1));let n=r.status===0?r:r.internalResponse;if(n.urlList.length===0&&n.urlList.push(...t.urlList),t.timingAllowFailed||(r.timingAllowPassed=!0),r.type==="opaque"&&n.status===206&&n.rangeRequested&&!t.headers.contains("range",!0)&&(r=n=Ae()),r.status!==0&&(t.method==="HEAD"||t.method==="CONNECT"||IC.includes(n.status))&&(n.body=null,e.controller.dump=!0),t.integrity){let s=o=>dg(e,Ae(o));if(t.responseTainting==="opaque"||r.body==null){s(r.error);return}let i=o=>{if(!UR(o,t.integrity)){s("integrity mismatch");return}r.body=mg(o)[0],dg(e,r)};await _R(r.body,i,s)}else dg(e,r)}function EC(e){if(Gt(e)&&e.request.redirectCount===0)return Promise.resolve(Mi(e));let{request:A}=e,{protocol:t}=NA(A);switch(t){case"about:":return Promise.resolve(Ae("about scheme is not supported"));case"blob:":{Cg||(Cg=y("node:buffer").resolveObjectURL);let r=NA(A);if(r.search.length!==0)return Promise.resolve(Ae("NetworkError when attempting to fetch resource."));let n=Cg(r.toString());if(A.method!=="GET"||!zR(n))return Promise.resolve(Ae("invalid method"));let s=Ui(),i=n.size,o=Li(`${i}`),a=n.type;if(A.headersList.contains("range",!0)){s.rangeRequested=!0;let g=A.headersList.get("range",!0),l=eS(g,!0);if(l==="failure")return Promise.resolve(Ae("failed to fetch the data URL"));let{rangeStartValue:c,rangeEndValue:Q}=l;if(c===null)c=i-Q,Q=c+Q-1;else{if(c>=i)return Promise.resolve(Ae("Range start is greater than the blob's size."));(Q===null||Q>=i)&&(Q=i-1)}let B=n.slice(c,Q,a),E=lC(B);s.body=E[0];let u=Li(`${B.size}`),h=AS(c,Q,i);s.status=206,s.statusText="Partial Content",s.headersList.set("content-length",u,!0),s.headersList.set("content-type",a,!0),s.headersList.set("content-range",h,!0)}else{let g=lC(n);s.statusText="OK",s.body=g[0],s.headersList.set("content-length",o,!0),s.headersList.set("content-type",a,!0)}return Promise.resolve(s)}case"data:":{let r=NA(A),n=BS(r);if(n==="failure")return Promise.resolve(Ae("failed to fetch the data URL"));let s=uS(n.mimeType);return Promise.resolve(Ui({statusText:"OK",headersList:[["content-type",{name:"Content-Type",value:s}]],body:mg(n.body)[0]}))}case"file:":return Promise.resolve(Ae("not implemented... yet..."));case"http:":case"https:":return wC(e).catch(r=>Ae(r));default:return Promise.resolve(Ae("unknown scheme"))}}function mS(e,A){e.request.done=!0,e.processResponseDone!=null&&queueMicrotask(()=>e.processResponseDone(A))}function dg(e,A){let t=e.timingInfo,r=()=>{let s=Date.now();e.request.destination==="document"&&(e.controller.fullTimingInfo=t),e.controller.reportTimingSteps=()=>{if(e.request.url.protocol!=="https:")return;t.endTime=s;let o=A.cacheState,a=A.bodyInfo;A.timingAllowPassed||(t=yg(t),o="");let g=0;if(e.request.mode!=="navigator"||!A.hasCrossOriginRedirects){g=A.status;let l=rS(A.headersList);l!=="failure"&&(a.contentType=IS(l))}e.request.initiatorType!=null&&CC(t,e.request.url.href,e.request.initiatorType,globalThis,o,a,g)};let i=()=>{e.request.done=!0,e.processResponseEndOfBody!=null&&queueMicrotask(()=>e.processResponseEndOfBody(A)),e.request.initiatorType!=null&&e.controller.reportTimingSteps()};queueMicrotask(()=>i())};e.processResponse!=null&&queueMicrotask(()=>{e.processResponse(A),e.processResponse=null});let n=A.type==="error"?A:A.internalResponse??A;n.body==null?r():lS(n.body.stream,()=>{r()})}async function wC(e){let A=e.request,t=null,r=null,n=e.timingInfo;if(A.serviceWorkers,t===null){if(A.redirect==="follow"&&(A.serviceWorkers="none"),r=t=await yC(e),A.responseTainting==="cors"&&qR(A,t)==="failure")return Ae("cors failure");YR(A,t)==="failure"&&(A.timingAllowFailed=!0)}return(A.responseTainting==="opaque"||t.type==="opaque")&&WR(A.origin,A.client,A.destination,r)==="blocked"?Ae("blocked"):(uC.has(r.status)&&(A.redirect!=="manual"&&e.controller.connection.destroy(void 0,!1),A.redirect==="error"?t=Ae("unexpected redirect"):A.redirect==="manual"?t=r:A.redirect==="follow"?t=await DS(e,t):Jt(!1)),t.timingInfo=n,t)}function DS(e,A){let t=e.request,r=A.internalResponse?A.internalResponse:A,n;try{if(n=JR(r,NA(t).hash),n==null)return A}catch(i){return Promise.resolve(Ae(i))}if(!pg(n))return Promise.resolve(Ae("URL scheme must be a HTTP(S) scheme"));if(t.redirectCount===20)return Promise.resolve(Ae("redirect count exceeded"));if(t.redirectCount+=1,t.mode==="cors"&&(n.username||n.password)&&!wg(t,n))return Promise.resolve(Ae('cross origin not allowed for request mode "cors"'));if(t.responseTainting==="cors"&&(n.username||n.password))return Promise.resolve(Ae('URL cannot contain credentials for request mode "cors"'));if(r.status!==303&&t.body!=null&&t.body.source==null)return Promise.resolve(Ae());if([301,302].includes(r.status)&&t.method==="POST"||r.status===303&&!dS.includes(t.method)){t.method="GET",t.body=null;for(let i of iS)t.headersList.delete(i)}wg(NA(t),n)||(t.headersList.delete("authorization",!0),t.headersList.delete("proxy-authorization",!0),t.headersList.delete("cookie",!0),t.headersList.delete("host",!0)),t.body!=null&&(Jt(t.body.source!=null),t.body=mg(t.body.source)[0]);let s=e.timingInfo;return s.redirectEndTime=s.postRedirectStartTime=Gn(e.crossOriginIsolatedCapability),s.redirectStartTime===0&&(s.redirectStartTime=s.startTime),t.urlList.push(n),HR(t,r),dC(e,!0)}async function yC(e,A=!1,t=!1){let r=e.request,n=null,s=null,i=null,o=null,a=!1;r.window==="no-window"&&r.redirect==="error"?(n=e,s=r):(s=MR(r),n={...e},n.request=s);let g=r.credentials==="include"||r.credentials==="same-origin"&&r.responseTainting==="basic",l=s.body?s.body.length:null,c=null;if(s.body==null&&["POST","PUT"].includes(s.method)&&(c="0"),l!=null&&(c=Li(`${l}`)),c!=null&&s.headersList.append("content-length",c,!0),l!=null&&s.keepalive,s.referrer instanceof URL&&s.headersList.append("referer",Li(s.referrer.href),!0),GR(s),vR(s),s.headersList.contains("user-agent",!0)||s.headersList.append("user-agent",wS),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)||(jR(NA(s))?s.headersList.append("accept-encoding","br, gzip, deflate",!0):s.headersList.append("accept-encoding","gzip, deflate",!0)),s.headersList.delete("host",!0),o==null&&(s.cache="no-store"),s.cache!=="no-store"&&s.cache,i==null){if(s.cache==="only-if-cached")return Ae("only if cached");let Q=await kS(n,g,t);!sS.has(s.method)&&Q.status>=200&&Q.status<=399,a&&Q.status,i==null&&(i=Q)}if(i.urlList=[...s.urlList],s.headersList.contains("range",!0)&&(i.rangeRequested=!0),i.requestIncludesCredentials=g,i.status===407)return r.window==="no-window"?Ae():Gt(e)?Mi(e):Ae("proxy authentication required");if(i.status===421&&!t&&(r.body==null||r.body.source!=null)){if(Gt(e))return Mi(e);e.controller.connection.destroy(),i=await yC(e,A,!0)}return i}async function kS(e,A=!1,t=!1){Jt(!e.controller.connection||e.controller.connection.destroyed),e.controller.connection={abort:null,destroyed:!1,destroy(E,u=!0){this.destroyed||(this.destroyed=!0,u&&this.abort?.(E??new DOMException("The operation was aborted.","AbortError")))}};let r=e.request,n=null,s=e.timingInfo;null==null&&(r.cache="no-store");let o=t?"yes":"no";r.mode;let a=null;if(r.body==null&&e.processRequestEndOfBody)queueMicrotask(()=>e.processRequestEndOfBody());else if(r.body!=null){let E=async function*(I){Gt(e)||(yield I,e.processRequestBodyChunkLength?.(I.byteLength))},u=()=>{Gt(e)||e.processRequestEndOfBody&&e.processRequestEndOfBody()},h=I=>{Gt(e)||(I.name==="AbortError"?e.controller.abort():e.controller.terminate(I))};a=(async function*(){try{for await(let I of r.body.stream)yield*E(I);u()}catch(I){h(I)}})()}try{let{body:E,status:u,statusText:h,headersList:I,socket:C}=await B({body:a});if(C)n=Ui({status:u,statusText:h,headersList:I,socket:C});else{let D=E[Symbol.asyncIterator]();e.controller.next=()=>D.next(),n=Ui({status:u,statusText:h,headersList:I})}}catch(E){return E.name==="AbortError"?(e.controller.connection.destroy(),Mi(e,E)):Ae(E)}let g=async()=>{await e.controller.resume()},l=E=>{Gt(e)||e.controller.abort(E)},c=new ReadableStream({async start(E){e.controller.controller=E},async pull(E){await g(E)},async cancel(E){await l(E)},type:"bytes"});n.body={stream:c,source:null,length:null},e.controller.onAborted=Q,e.controller.on("terminated",Q),e.controller.resume=async()=>{for(;;){let E,u;try{let{done:I,value:C}=await e.controller.next();if(gC(e))break;E=I?void 0:C}catch(I){e.controller.ended&&!s.encodedBodySize?E=void 0:(E=I,u=!0)}if(E===void 0){KR(e.controller.controller),mS(e,n);return}if(s.decodedBodySize+=E?.byteLength??0,u){e.controller.terminate(E);return}let h=new Uint8Array(E);if(h.byteLength&&e.controller.controller.enqueue(h),ES(c)){e.controller.terminate();return}if(e.controller.controller.desiredSize<=0)return}};function Q(E){gC(e)?(n.aborted=!0,Ti(c)&&e.controller.controller.error(e.controller.serializedAbortReason)):Ti(c)&&e.controller.controller.error(new TypeError("terminated",{cause:ZR(E)?E:void 0})),e.controller.connection.destroy()}return n;function B({body:E}){let u=NA(r),h=e.controller.dispatcher;return new Promise((I,C)=>h.dispatch({path:u.pathname+u.search,origin:u.origin,method:r.method,body:h.isMockActive?r.body&&(r.body.source||r.body.stream):E,headers:r.headersList.entries,maxRedirections:0,upgrade:r.mode==="websocket"?"websocket":void 0},{body:null,abort:null,onConnect(D){let{connection:f}=e.controller;s.finalConnectionTimingInfo=$R(void 0,s.postRedirectStartTime,e.crossOriginIsolatedCapability),f.destroyed?D(new DOMException("The operation was aborted.","AbortError")):(e.controller.on("terminated",D),this.abort=f.abort=D),s.finalNetworkRequestStartTime=Gn(e.crossOriginIsolatedCapability)},onResponseStarted(){s.finalNetworkResponseStartTime=Gn(e.crossOriginIsolatedCapability)},onHeaders(D,f,R,S){if(D<200)return;let d="",se=new cC;for(let w=0;w<f.length;w+=2)se.append(QC(f[w]),f[w+1].toString("latin1"),!0);d=se.get("location",!0),this.body=new cS({read:R});let De=[],Te=d&&r.redirect==="follow"&&uC.has(D);if(r.method!=="HEAD"&&r.method!=="CONNECT"&&!IC.includes(D)&&!Te){let w=se.get("content-encoding",!0),H=w?w.toLowerCase().split(","):[],q=5;if(H.length>q)return C(new Error(`too many content-encodings in response: ${H.length}, maximum allowed is ${q}`)),!0;for(let ee=H.length-1;ee>=0;--ee){let j=H[ee].trim();if(j==="x-gzip"||j==="gzip")De.push(gt.createGunzip({flush:gt.constants.Z_SYNC_FLUSH,finishFlush:gt.constants.Z_SYNC_FLUSH}));else if(j==="deflate")De.push(tS({flush:gt.constants.Z_SYNC_FLUSH,finishFlush:gt.constants.Z_SYNC_FLUSH}));else if(j==="br")De.push(gt.createBrotliDecompress({flush:gt.constants.BROTLI_OPERATION_FLUSH,finishFlush:gt.constants.BROTLI_OPERATION_FLUSH}));else{De.length=0;break}}}let me=this.onError.bind(this);return I({status:D,statusText:S,headersList:se,body:De.length?gS(this.body,...De,w=>{w&&this.onError(w)}).on("error",me):this.body.on("error",me)}),!0},onData(D){if(e.controller.dump)return;let f=D;return s.encodedBodySize+=f.byteLength,this.body.push(f)},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(D){this.abort&&e.controller.off("terminated",this.abort),this.body?.destroy(D),e.controller.terminate(D),C(D)},onUpgrade(D,f,R){if(D!==101)return;let S=new cC;for(let d=0;d<f.length;d+=2)S.append(QC(f[d]),f[d+1].toString("latin1"),!0);return I({status:D,statusText:fS[D],headersList:S,socket:R}),!0}}))}}pC.exports={fetch:pS,Fetch:xi,fetching:fC,finalizeAndReportTiming:hC}});var Dg=p((hY,mC)=>{"use strict";mC.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 kC=p((CY,DC)=>{"use strict";var{webidl:je}=Se(),Yi=Symbol("ProgressEvent state"),kg=class e extends Event{constructor(A,t={}){A=je.converters.DOMString(A,"ProgressEvent constructor","type"),t=je.converters.ProgressEventInit(t??{}),super(A,t),this[Yi]={lengthComputable:t.lengthComputable,loaded:t.loaded,total:t.total}}get lengthComputable(){return je.brandCheck(this,e),this[Yi].lengthComputable}get loaded(){return je.brandCheck(this,e),this[Yi].loaded}get total(){return je.brandCheck(this,e),this[Yi].total}};je.converters.ProgressEventInit=je.dictionaryConverter([{key:"lengthComputable",converter:je.converters.boolean,defaultValue:()=>!1},{key:"loaded",converter:je.converters["unsigned long long"],defaultValue:()=>0},{key:"total",converter:je.converters["unsigned long long"],defaultValue:()=>0},{key:"bubbles",converter:je.converters.boolean,defaultValue:()=>!1},{key:"cancelable",converter:je.converters.boolean,defaultValue:()=>!1},{key:"composed",converter:je.converters.boolean,defaultValue:()=>!1}]);DC.exports={ProgressEvent:kg}});var FC=p((fY,bC)=>{"use strict";function bS(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"}}bC.exports={getEncoding:bS}});var xC=p((dY,TC)=>{"use strict";var{kState:Mr,kError:bg,kResult:RC,kAborted:Hn,kLastProgressEventFired:Fg}=Dg(),{ProgressEvent:FS}=kC(),{getEncoding:SC}=FC(),{serializeAMimeType:RS,parseMIMEType:NC}=Je(),{types:SS}=y("node:util"),{StringDecoder:MC}=y("string_decoder"),{btoa:UC}=y("node:buffer"),NS={enumerable:!0,writable:!1,configurable:!1};function MS(e,A,t,r){if(e[Mr]==="loading")throw new DOMException("Invalid state","InvalidStateError");e[Mr]="loading",e[RC]=null,e[bg]=null;let s=A.stream().getReader(),i=[],o=s.read(),a=!0;(async()=>{for(;!e[Hn];)try{let{done:g,value:l}=await o;if(a&&!e[Hn]&&queueMicrotask(()=>{lt("loadstart",e)}),a=!1,!g&&SS.isUint8Array(l))i.push(l),(e[Fg]===void 0||Date.now()-e[Fg]>=50)&&!e[Hn]&&(e[Fg]=Date.now(),queueMicrotask(()=>{lt("progress",e)})),o=s.read();else if(g){queueMicrotask(()=>{e[Mr]="done";try{let c=US(i,t,A.type,r);if(e[Hn])return;e[RC]=c,lt("load",e)}catch(c){e[bg]=c,lt("error",e)}e[Mr]!=="loading"&&lt("loadend",e)});break}}catch(g){if(e[Hn])return;queueMicrotask(()=>{e[Mr]="done",e[bg]=g,lt("error",e),e[Mr]!=="loading"&&lt("loadend",e)});break}})()}function lt(e,A){let t=new FS(e,{bubbles:!1,cancelable:!1});A.dispatchEvent(t)}function US(e,A,t,r){switch(A){case"DataURL":{let n="data:",s=NC(t||"application/octet-stream");s!=="failure"&&(n+=RS(s)),n+=";base64,";let i=new MC("latin1");for(let o of e)n+=UC(i.write(o));return n+=UC(i.end()),n}case"Text":{let n="failure";if(r&&(n=SC(r)),n==="failure"&&t){let s=NC(t);s!=="failure"&&(n=SC(s.parameters.get("charset")))}return n==="failure"&&(n="UTF-8"),LS(e,n)}case"ArrayBuffer":return LC(e).buffer;case"BinaryString":{let n="",s=new MC("latin1");for(let i of e)n+=s.write(i);return n+=s.end(),n}}}function LS(e,A){let t=LC(e),r=TS(t),n=0;r!==null&&(A=r,n=r==="UTF-8"?3:2);let s=t.slice(n);return new TextDecoder(A).decode(s)}function TS(e){let[A,t,r]=e;return A===239&&t===187&&r===191?"UTF-8":A===254&&t===255?"UTF-16BE":A===255&&t===254?"UTF-16LE":null}function LC(e){let A=e.reduce((r,n)=>r+n.byteLength,0),t=0;return e.reduce((r,n)=>(r.set(n,t),t+=n.byteLength,r),new Uint8Array(A))}TC.exports={staticPropertyDescriptors:NS,readOperation:MS,fireAProgressEvent:lt}});var HC=p((wY,JC)=>{"use strict";var{staticPropertyDescriptors:Ur,readOperation:Gi,fireAProgressEvent:YC}=xC(),{kState:Ht,kError:GC,kResult:Ji,kEvents:X,kAborted:xS}=Dg(),{webidl:ne}=Se(),{kEnumerableProperty:ve}=v(),IA=class e extends EventTarget{constructor(){super(),this[Ht]="empty",this[Ji]=null,this[GC]=null,this[X]={loadend:null,error:null,abort:null,load:null,progress:null,loadstart:null}}readAsArrayBuffer(A){ne.brandCheck(this,e),ne.argumentLengthCheck(arguments,1,"FileReader.readAsArrayBuffer"),A=ne.converters.Blob(A,{strict:!1}),Gi(this,A,"ArrayBuffer")}readAsBinaryString(A){ne.brandCheck(this,e),ne.argumentLengthCheck(arguments,1,"FileReader.readAsBinaryString"),A=ne.converters.Blob(A,{strict:!1}),Gi(this,A,"BinaryString")}readAsText(A,t=void 0){ne.brandCheck(this,e),ne.argumentLengthCheck(arguments,1,"FileReader.readAsText"),A=ne.converters.Blob(A,{strict:!1}),t!==void 0&&(t=ne.converters.DOMString(t,"FileReader.readAsText","encoding")),Gi(this,A,"Text",t)}readAsDataURL(A){ne.brandCheck(this,e),ne.argumentLengthCheck(arguments,1,"FileReader.readAsDataURL"),A=ne.converters.Blob(A,{strict:!1}),Gi(this,A,"DataURL")}abort(){if(this[Ht]==="empty"||this[Ht]==="done"){this[Ji]=null;return}this[Ht]==="loading"&&(this[Ht]="done",this[Ji]=null),this[xS]=!0,YC("abort",this),this[Ht]!=="loading"&&YC("loadend",this)}get readyState(){switch(ne.brandCheck(this,e),this[Ht]){case"empty":return this.EMPTY;case"loading":return this.LOADING;case"done":return this.DONE}}get result(){return ne.brandCheck(this,e),this[Ji]}get error(){return ne.brandCheck(this,e),this[GC]}get onloadend(){return ne.brandCheck(this,e),this[X].loadend}set onloadend(A){ne.brandCheck(this,e),this[X].loadend&&this.removeEventListener("loadend",this[X].loadend),typeof A=="function"?(this[X].loadend=A,this.addEventListener("loadend",A)):this[X].loadend=null}get onerror(){return ne.brandCheck(this,e),this[X].error}set onerror(A){ne.brandCheck(this,e),this[X].error&&this.removeEventListener("error",this[X].error),typeof A=="function"?(this[X].error=A,this.addEventListener("error",A)):this[X].error=null}get onloadstart(){return ne.brandCheck(this,e),this[X].loadstart}set onloadstart(A){ne.brandCheck(this,e),this[X].loadstart&&this.removeEventListener("loadstart",this[X].loadstart),typeof A=="function"?(this[X].loadstart=A,this.addEventListener("loadstart",A)):this[X].loadstart=null}get onprogress(){return ne.brandCheck(this,e),this[X].progress}set onprogress(A){ne.brandCheck(this,e),this[X].progress&&this.removeEventListener("progress",this[X].progress),typeof A=="function"?(this[X].progress=A,this.addEventListener("progress",A)):this[X].progress=null}get onload(){return ne.brandCheck(this,e),this[X].load}set onload(A){ne.brandCheck(this,e),this[X].load&&this.removeEventListener("load",this[X].load),typeof A=="function"?(this[X].load=A,this.addEventListener("load",A)):this[X].load=null}get onabort(){return ne.brandCheck(this,e),this[X].abort}set onabort(A){ne.brandCheck(this,e),this[X].abort&&this.removeEventListener("abort",this[X].abort),typeof A=="function"?(this[X].abort=A,this.addEventListener("abort",A)):this[X].abort=null}};IA.EMPTY=IA.prototype.EMPTY=0;IA.LOADING=IA.prototype.LOADING=1;IA.DONE=IA.prototype.DONE=2;Object.defineProperties(IA.prototype,{EMPTY:Ur,LOADING:Ur,DONE:Ur,readAsArrayBuffer:ve,readAsBinaryString:ve,readAsText:ve,readAsDataURL:ve,abort:ve,readyState:ve,result:ve,error:ve,onloadstart:ve,onprogress:ve,onload:ve,onabort:ve,onerror:ve,onloadend:ve,[Symbol.toStringTag]:{value:"FileReader",writable:!1,enumerable:!1,configurable:!0}});Object.defineProperties(IA,{EMPTY:Ur,LOADING:Ur,DONE:Ur});JC.exports={FileReader:IA}});var Hi=p((yY,VC)=>{"use strict";VC.exports={kConstruct:Qe().kConstruct}});var WC=p((pY,qC)=>{"use strict";var YS=y("node:assert"),{URLSerializer:vC}=Je(),{isValidHeaderName:GS}=Pe();function JS(e,A,t=!1){let r=vC(e,t),n=vC(A,t);return r===n}function HS(e){YS(e!==null);let A=[];for(let t of e.split(","))t=t.trim(),GS(t)&&A.push(t);return A}qC.exports={urlEquals:JS,getFieldValues:HS}});var zC=p((mY,OC)=>{"use strict";var{kConstruct:VS}=Hi(),{urlEquals:vS,getFieldValues:Rg}=WC(),{kEnumerableProperty:Vt,isDisturbed:qS}=v(),{webidl:M}=Se(),{Response:WS,cloneResponse:PS,fromInnerResponse:OS}=Yn(),{Request:zA,fromInnerRequest:zS}=Nr(),{kState:hA}=jA(),{fetching:ZS}=Jn(),{urlIsHttpHttpsScheme:Vi,createDeferredPromise:Lr,readAllBytes:_S}=Pe(),Sg=y("node:assert"),vi=class e{#e;constructor(){arguments[0]!==VS&&M.illegalConstructor(),M.util.markAsUncloneable(this),this.#e=arguments[1]}async match(A,t={}){M.brandCheck(this,e);let r="Cache.match";M.argumentLengthCheck(arguments,1,r),A=M.converters.RequestInfo(A,r,"request"),t=M.converters.CacheQueryOptions(t,r,"options");let n=this.#n(A,t,1);if(n.length!==0)return n[0]}async matchAll(A=void 0,t={}){M.brandCheck(this,e);let r="Cache.matchAll";return A!==void 0&&(A=M.converters.RequestInfo(A,r,"request")),t=M.converters.CacheQueryOptions(t,r,"options"),this.#n(A,t)}async add(A){M.brandCheck(this,e);let t="Cache.add";M.argumentLengthCheck(arguments,1,t),A=M.converters.RequestInfo(A,t,"request");let r=[A];return await this.addAll(r)}async addAll(A){M.brandCheck(this,e);let t="Cache.addAll";M.argumentLengthCheck(arguments,1,t);let r=[],n=[];for(let Q of A){if(Q===void 0)throw M.errors.conversionFailed({prefix:t,argument:"Argument 1",types:["undefined is not allowed"]});if(Q=M.converters.RequestInfo(Q),typeof Q=="string")continue;let B=Q[hA];if(!Vi(B.url)||B.method!=="GET")throw M.errors.exception({header:t,message:"Expected http/s scheme when method is not GET."})}let s=[];for(let Q of A){let B=new zA(Q)[hA];if(!Vi(B.url))throw M.errors.exception({header:t,message:"Expected http/s scheme."});B.initiator="fetch",B.destination="subresource",n.push(B);let E=Lr();s.push(ZS({request:B,processResponse(u){if(u.type==="error"||u.status===206||u.status<200||u.status>299)E.reject(M.errors.exception({header:"Cache.addAll",message:"Received an invalid status code or the request failed."}));else if(u.headersList.contains("vary")){let h=Rg(u.headersList.get("vary"));for(let I of h)if(I==="*"){E.reject(M.errors.exception({header:"Cache.addAll",message:"invalid vary field value"}));for(let C of s)C.abort();return}}},processResponseEndOfBody(u){if(u.aborted){E.reject(new DOMException("aborted","AbortError"));return}E.resolve(u)}})),r.push(E.promise)}let o=await Promise.all(r),a=[],g=0;for(let Q of o){let B={type:"put",request:n[g],response:Q};a.push(B),g++}let l=Lr(),c=null;try{this.#A(a)}catch(Q){c=Q}return queueMicrotask(()=>{c===null?l.resolve(void 0):l.reject(c)}),l.promise}async put(A,t){M.brandCheck(this,e);let r="Cache.put";M.argumentLengthCheck(arguments,2,r),A=M.converters.RequestInfo(A,r,"request"),t=M.converters.Response(t,r,"response");let n=null;if(A instanceof zA?n=A[hA]:n=new zA(A)[hA],!Vi(n.url)||n.method!=="GET")throw M.errors.exception({header:r,message:"Expected an http/s scheme when method is not GET"});let s=t[hA];if(s.status===206)throw M.errors.exception({header:r,message:"Got 206 status"});if(s.headersList.contains("vary")){let B=Rg(s.headersList.get("vary"));for(let E of B)if(E==="*")throw M.errors.exception({header:r,message:"Got * vary field value"})}if(s.body&&(qS(s.body.stream)||s.body.stream.locked))throw M.errors.exception({header:r,message:"Response body is locked or disturbed"});let i=PS(s),o=Lr();if(s.body!=null){let E=s.body.stream.getReader();_S(E).then(o.resolve,o.reject)}else o.resolve(void 0);let a=[],g={type:"put",request:n,response:i};a.push(g);let l=await o.promise;i.body!=null&&(i.body.source=l);let c=Lr(),Q=null;try{this.#A(a)}catch(B){Q=B}return queueMicrotask(()=>{Q===null?c.resolve():c.reject(Q)}),c.promise}async delete(A,t={}){M.brandCheck(this,e);let r="Cache.delete";M.argumentLengthCheck(arguments,1,r),A=M.converters.RequestInfo(A,r,"request"),t=M.converters.CacheQueryOptions(t,r,"options");let n=null;if(A instanceof zA){if(n=A[hA],n.method!=="GET"&&!t.ignoreMethod)return!1}else Sg(typeof A=="string"),n=new zA(A)[hA];let s=[],i={type:"delete",request:n,options:t};s.push(i);let o=Lr(),a=null,g;try{g=this.#A(s)}catch(l){a=l}return queueMicrotask(()=>{a===null?o.resolve(!!g?.length):o.reject(a)}),o.promise}async keys(A=void 0,t={}){M.brandCheck(this,e);let r="Cache.keys";A!==void 0&&(A=M.converters.RequestInfo(A,r,"request")),t=M.converters.CacheQueryOptions(t,r,"options");let n=null;if(A!==void 0)if(A instanceof zA){if(n=A[hA],n.method!=="GET"&&!t.ignoreMethod)return[]}else typeof A=="string"&&(n=new zA(A)[hA]);let s=Lr(),i=[];if(A===void 0)for(let o of this.#e)i.push(o[0]);else{let o=this.#t(n,t);for(let a of o)i.push(a[0])}return queueMicrotask(()=>{let o=[];for(let a of i){let g=zS(a,new AbortController().signal,"immutable");o.push(g)}s.resolve(Object.freeze(o))}),s.promise}#A(A){let t=this.#e,r=[...t],n=[],s=[];try{for(let i of A){if(i.type!=="delete"&&i.type!=="put")throw M.errors.exception({header:"Cache.#batchCacheOperations",message:'operation type does not match "delete" or "put"'});if(i.type==="delete"&&i.response!=null)throw M.errors.exception({header:"Cache.#batchCacheOperations",message:"delete operation should not have an associated response"});if(this.#t(i.request,i.options,n).length)throw new DOMException("???","InvalidStateError");let o;if(i.type==="delete"){if(o=this.#t(i.request,i.options),o.length===0)return[];for(let a of o){let g=t.indexOf(a);Sg(g!==-1),t.splice(g,1)}}else if(i.type==="put"){if(i.response==null)throw M.errors.exception({header:"Cache.#batchCacheOperations",message:"put operation should have an associated response"});let a=i.request;if(!Vi(a.url))throw M.errors.exception({header:"Cache.#batchCacheOperations",message:"expected http or https scheme"});if(a.method!=="GET")throw M.errors.exception({header:"Cache.#batchCacheOperations",message:"not get method"});if(i.options!=null)throw M.errors.exception({header:"Cache.#batchCacheOperations",message:"options must not be defined"});o=this.#t(i.request);for(let g of o){let l=t.indexOf(g);Sg(l!==-1),t.splice(l,1)}t.push([i.request,i.response]),n.push([i.request,i.response])}s.push([i.request,i.response])}return s}catch(i){throw this.#e.length=0,this.#e=r,i}}#t(A,t,r){let n=[],s=r??this.#e;for(let i of s){let[o,a]=i;this.#s(A,o,a,t)&&n.push(i)}return n}#s(A,t,r=null,n){let s=new URL(A.url),i=new URL(t.url);if(n?.ignoreSearch&&(i.search="",s.search=""),!vS(s,i,!0))return!1;if(r==null||n?.ignoreVary||!r.headersList.contains("vary"))return!0;let o=Rg(r.headersList.get("vary"));for(let a of o){if(a==="*")return!1;let g=t.headersList.get(a),l=A.headersList.get(a);if(g!==l)return!1}return!0}#n(A,t,r=1/0){let n=null;if(A!==void 0)if(A instanceof zA){if(n=A[hA],n.method!=="GET"&&!t.ignoreMethod)return[]}else typeof A=="string"&&(n=new zA(A)[hA]);let s=[];if(A===void 0)for(let o of this.#e)s.push(o[1]);else{let o=this.#t(n,t);for(let a of o)s.push(a[1])}let i=[];for(let o of s){let a=OS(o,"immutable");if(i.push(a.clone()),i.length>=r)break}return Object.freeze(i)}};Object.defineProperties(vi.prototype,{[Symbol.toStringTag]:{value:"Cache",configurable:!0},match:Vt,matchAll:Vt,add:Vt,addAll:Vt,put:Vt,delete:Vt,keys:Vt});var PC=[{key:"ignoreSearch",converter:M.converters.boolean,defaultValue:()=>!1},{key:"ignoreMethod",converter:M.converters.boolean,defaultValue:()=>!1},{key:"ignoreVary",converter:M.converters.boolean,defaultValue:()=>!1}];M.converters.CacheQueryOptions=M.dictionaryConverter(PC);M.converters.MultiCacheQueryOptions=M.dictionaryConverter([...PC,{key:"cacheName",converter:M.converters.DOMString}]);M.converters.Response=M.interfaceConverter(WS);M.converters["sequence<RequestInfo>"]=M.sequenceConverter(M.converters.RequestInfo);OC.exports={Cache:vi}});var _C=p((DY,ZC)=>{"use strict";var{kConstruct:Vn}=Hi(),{Cache:qi}=zC(),{webidl:Me}=Se(),{kEnumerableProperty:vn}=v(),Wi=class e{#e=new Map;constructor(){arguments[0]!==Vn&&Me.illegalConstructor(),Me.util.markAsUncloneable(this)}async match(A,t={}){if(Me.brandCheck(this,e),Me.argumentLengthCheck(arguments,1,"CacheStorage.match"),A=Me.converters.RequestInfo(A),t=Me.converters.MultiCacheQueryOptions(t),t.cacheName!=null){if(this.#e.has(t.cacheName)){let r=this.#e.get(t.cacheName);return await new qi(Vn,r).match(A,t)}}else for(let r of this.#e.values()){let s=await new qi(Vn,r).match(A,t);if(s!==void 0)return s}}async has(A){Me.brandCheck(this,e);let t="CacheStorage.has";return Me.argumentLengthCheck(arguments,1,t),A=Me.converters.DOMString(A,t,"cacheName"),this.#e.has(A)}async open(A){Me.brandCheck(this,e);let t="CacheStorage.open";if(Me.argumentLengthCheck(arguments,1,t),A=Me.converters.DOMString(A,t,"cacheName"),this.#e.has(A)){let n=this.#e.get(A);return new qi(Vn,n)}let r=[];return this.#e.set(A,r),new qi(Vn,r)}async delete(A){Me.brandCheck(this,e);let t="CacheStorage.delete";return Me.argumentLengthCheck(arguments,1,t),A=Me.converters.DOMString(A,t,"cacheName"),this.#e.delete(A)}async keys(){return Me.brandCheck(this,e),[...this.#e.keys()]}};Object.defineProperties(Wi.prototype,{[Symbol.toStringTag]:{value:"CacheStorage",configurable:!0},match:vn,has:vn,open:vn,delete:vn,keys:vn});ZC.exports={CacheStorage:Wi}});var XC=p((kY,KC)=>{"use strict";KC.exports={maxAttributeValueSize:1024,maxNameValuePairSize:4096}});var Ug=p((bY,Af)=>{"use strict";function KS(e){for(let A=0;A<e.length;++A){let t=e.charCodeAt(A);if(t>=0&&t<=8||t>=10&&t<=31||t===127)return!0}return!1}function Ng(e){for(let A=0;A<e.length;++A){let t=e.charCodeAt(A);if(t<33||t>126||t===34||t===40||t===41||t===60||t===62||t===64||t===44||t===59||t===58||t===92||t===47||t===91||t===93||t===63||t===61||t===123||t===125)throw new Error("Invalid cookie name")}}function Mg(e){let A=e.length,t=0;if(e[0]==='"'){if(A===1||e[A-1]!=='"')throw new Error("Invalid cookie value");--A,++t}for(;t<A;){let r=e.charCodeAt(t++);if(r<33||r>126||r===34||r===44||r===59||r===92)throw new Error("Invalid cookie value")}}function $C(e){for(let A=0;A<e.length;++A){let t=e.charCodeAt(A);if(t<32||t>126||t===59)throw new Error("Invalid cookie path")}}function jC(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122}function XS(e){if(e===" ")return;if(e.length>255)throw new Error("Invalid cookie domain");let A=0;for(let t=0;t<e.length;++t){let r=e.charCodeAt(t);if(r===46){if(A===0)throw new Error("Invalid cookie domain");if(e.charCodeAt(t-1)===45)throw new Error("Invalid cookie domain");A=0;continue}if(A===0&&!jC(r))throw new Error("Invalid cookie domain");if(!jC(r)&&r!==45)throw new Error("Invalid cookie domain");if(++A>63)throw new Error("Invalid cookie domain")}if(A===0||e.charCodeAt(e.length-1)===45)throw new Error("Invalid cookie domain")}var jS=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],$S=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Pi=Array(61).fill(0).map((e,A)=>A.toString().padStart(2,"0"));function ef(e){return typeof e=="number"&&(e=new Date(e)),`${jS[e.getUTCDay()]}, ${Pi[e.getUTCDate()]} ${$S[e.getUTCMonth()]} ${e.getUTCFullYear()} ${Pi[e.getUTCHours()]}:${Pi[e.getUTCMinutes()]}:${Pi[e.getUTCSeconds()]} GMT`}function eN(e){if(e<0)throw new Error("Invalid cookie max-age")}function AN(e){if(e.name.length===0)return null;Ng(e.name),Mg(e.value);let A=[`${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&&A.push("Secure"),e.httpOnly&&A.push("HttpOnly"),typeof e.maxAge=="number"&&(eN(e.maxAge),A.push(`Max-Age=${e.maxAge}`)),e.domain&&(XS(e.domain),A.push(`Domain=${e.domain}`)),e.path&&($C(e.path),A.push(`Path=${e.path}`)),e.expires&&e.expires.toString()!=="Invalid Date"&&A.push(`Expires=${ef(e.expires)}`),e.sameSite&&A.push(`SameSite=${e.sameSite}`);for(let t of e.unparsed){if(!t.includes("="))throw new Error("Invalid unparsed");let[r,...n]=t.split("="),s=r.trim(),i=n.join("=");Ng(s),Mg(i),A.push(`${s}=${i}`)}return A.join("; ")}Af.exports={isCTLExcludingHtab:KS,validateCookieName:Ng,validateCookiePath:$C,validateCookieValue:Mg,toIMFDate:ef,stringify:AN}});var rf=p((FY,tf)=>{"use strict";var{maxNameValuePairSize:tN,maxAttributeValueSize:rN}=XC(),{isCTLExcludingHtab:nN}=Ug(),{collectASequenceOfCodePointsFast:Oi}=Je(),sN=y("node:assert");function iN(e){if(nN(e))return null;let A="",t="",r="",n="";if(e.includes(";")){let s={position:0};A=Oi(";",e,s),t=e.slice(s.position)}else A=e;if(!A.includes("="))n=A;else{let s={position:0};r=Oi("=",A,s),n=A.slice(s.position+1)}return r=r.trim(),n=n.trim(),r.length+n.length>tN?null:{name:r,value:n,...Tr(t)}}function Tr(e,A={}){if(e.length===0)return A;sN(e[0]===";"),e=e.slice(1);let t="";e.includes(";")?(t=Oi(";",e,{position:0}),e=e.slice(t.length)):(t=e,e="");let r="",n="";if(t.includes("=")){let i={position:0};r=Oi("=",t,i),n=t.slice(i.position+1)}else r=t;if(r=r.trim(),n=n.trim(),n.length>rN)return Tr(e,A);let s=r.toLowerCase();if(s==="expires"){let i=new Date(n);A.expires=i}else if(s==="max-age"){let i=n.charCodeAt(0);if((i<48||i>57)&&n[0]!=="-"||!/^\d+$/.test(n))return Tr(e,A);let o=Number(n);A.maxAge=o}else if(s==="domain"){let i=n;i[0]==="."&&(i=i.slice(1)),i=i.toLowerCase(),A.domain=i}else if(s==="path"){let i="";n.length===0||n[0]!=="/"?i="/":i=n,A.path=i}else if(s==="secure")A.secure=!0;else if(s==="httponly")A.httpOnly=!0;else if(s==="samesite"){let i=n.toLowerCase();i==="none"?A.sameSite="None":i==="strict"?A.sameSite="Strict":i==="lax"&&(A.sameSite="Lax")}else A.unparsed??=[],A.unparsed.push(`${r}=${n}`);return Tr(e,A)}tf.exports={parseSetCookie:iN,parseUnparsedAttributes:Tr}});var of=p((RY,sf)=>{"use strict";var{parseSetCookie:oN}=rf(),{stringify:aN}=Ug(),{webidl:P}=Se(),{Headers:zi}=xt();function cN(e){P.argumentLengthCheck(arguments,1,"getCookies"),P.brandCheck(e,zi,{strict:!1});let A=e.get("cookie"),t={};if(!A)return t;for(let r of A.split(";")){let[n,...s]=r.split("=");t[n.trim()]=s.join("=")}return t}function gN(e,A,t){P.brandCheck(e,zi,{strict:!1});let r="deleteCookie";P.argumentLengthCheck(arguments,2,r),A=P.converters.DOMString(A,r,"name"),t=P.converters.DeleteCookieAttributes(t),nf(e,{name:A,value:"",expires:new Date(0),...t})}function lN(e){P.argumentLengthCheck(arguments,1,"getSetCookies"),P.brandCheck(e,zi,{strict:!1});let A=e.getSetCookie();return A?A.map(t=>oN(t)):[]}function nf(e,A){P.argumentLengthCheck(arguments,2,"setCookie"),P.brandCheck(e,zi,{strict:!1}),A=P.converters.Cookie(A);let t=aN(A);t&&e.append("Set-Cookie",t)}P.converters.DeleteCookieAttributes=P.dictionaryConverter([{converter:P.nullableConverter(P.converters.DOMString),key:"path",defaultValue:()=>null},{converter:P.nullableConverter(P.converters.DOMString),key:"domain",defaultValue:()=>null}]);P.converters.Cookie=P.dictionaryConverter([{converter:P.converters.DOMString,key:"name"},{converter:P.converters.DOMString,key:"value"},{converter:P.nullableConverter(e=>typeof e=="number"?P.converters["unsigned long long"](e):new Date(e)),key:"expires",defaultValue:()=>null},{converter:P.nullableConverter(P.converters["long long"]),key:"maxAge",defaultValue:()=>null},{converter:P.nullableConverter(P.converters.DOMString),key:"domain",defaultValue:()=>null},{converter:P.nullableConverter(P.converters.DOMString),key:"path",defaultValue:()=>null},{converter:P.nullableConverter(P.converters.boolean),key:"secure",defaultValue:()=>null},{converter:P.nullableConverter(P.converters.boolean),key:"httpOnly",defaultValue:()=>null},{converter:P.converters.USVString,key:"sameSite",allowedValues:["Strict","Lax","None"]},{converter:P.sequenceConverter(P.converters.DOMString),key:"unparsed",defaultValue:()=>new Array(0)}]);sf.exports={getCookies:cN,deleteCookie:gN,getSetCookies:lN,setCookie:nf}});var Yr=p((SY,cf)=>{"use strict";var{webidl:N}=Se(),{kEnumerableProperty:qe}=v(),{kConstruct:af}=Qe(),{MessagePort:QN}=y("node:worker_threads"),xr=class e extends Event{#e;constructor(A,t={}){if(A===af){super(arguments[1],arguments[2]),N.util.markAsUncloneable(this);return}let r="MessageEvent constructor";N.argumentLengthCheck(arguments,1,r),A=N.converters.DOMString(A,r,"type"),t=N.converters.MessageEventInit(t,r,"eventInitDict"),super(A,t),this.#e=t,N.util.markAsUncloneable(this)}get data(){return N.brandCheck(this,e),this.#e.data}get origin(){return N.brandCheck(this,e),this.#e.origin}get lastEventId(){return N.brandCheck(this,e),this.#e.lastEventId}get source(){return N.brandCheck(this,e),this.#e.source}get ports(){return N.brandCheck(this,e),Object.isFrozen(this.#e.ports)||Object.freeze(this.#e.ports),this.#e.ports}initMessageEvent(A,t=!1,r=!1,n=null,s="",i="",o=null,a=[]){return N.brandCheck(this,e),N.argumentLengthCheck(arguments,1,"MessageEvent.initMessageEvent"),new e(A,{bubbles:t,cancelable:r,data:n,origin:s,lastEventId:i,source:o,ports:a})}static createFastMessageEvent(A,t){let r=new e(af,A,t);return r.#e=t,r.#e.data??=null,r.#e.origin??="",r.#e.lastEventId??="",r.#e.source??=null,r.#e.ports??=[],r}},{createFastMessageEvent:EN}=xr;delete xr.createFastMessageEvent;var Zi=class e extends Event{#e;constructor(A,t={}){let r="CloseEvent constructor";N.argumentLengthCheck(arguments,1,r),A=N.converters.DOMString(A,r,"type"),t=N.converters.CloseEventInit(t),super(A,t),this.#e=t,N.util.markAsUncloneable(this)}get wasClean(){return N.brandCheck(this,e),this.#e.wasClean}get code(){return N.brandCheck(this,e),this.#e.code}get reason(){return N.brandCheck(this,e),this.#e.reason}},_i=class e extends Event{#e;constructor(A,t){let r="ErrorEvent constructor";N.argumentLengthCheck(arguments,1,r),super(A,t),N.util.markAsUncloneable(this),A=N.converters.DOMString(A,r,"type"),t=N.converters.ErrorEventInit(t??{}),this.#e=t}get message(){return N.brandCheck(this,e),this.#e.message}get filename(){return N.brandCheck(this,e),this.#e.filename}get lineno(){return N.brandCheck(this,e),this.#e.lineno}get colno(){return N.brandCheck(this,e),this.#e.colno}get error(){return N.brandCheck(this,e),this.#e.error}};Object.defineProperties(xr.prototype,{[Symbol.toStringTag]:{value:"MessageEvent",configurable:!0},data:qe,origin:qe,lastEventId:qe,source:qe,ports:qe,initMessageEvent:qe});Object.defineProperties(Zi.prototype,{[Symbol.toStringTag]:{value:"CloseEvent",configurable:!0},reason:qe,code:qe,wasClean:qe});Object.defineProperties(_i.prototype,{[Symbol.toStringTag]:{value:"ErrorEvent",configurable:!0},message:qe,filename:qe,lineno:qe,colno:qe,error:qe});N.converters.MessagePort=N.interfaceConverter(QN);N.converters["sequence<MessagePort>"]=N.sequenceConverter(N.converters.MessagePort);var Lg=[{key:"bubbles",converter:N.converters.boolean,defaultValue:()=>!1},{key:"cancelable",converter:N.converters.boolean,defaultValue:()=>!1},{key:"composed",converter:N.converters.boolean,defaultValue:()=>!1}];N.converters.MessageEventInit=N.dictionaryConverter([...Lg,{key:"data",converter:N.converters.any,defaultValue:()=>null},{key:"origin",converter:N.converters.USVString,defaultValue:()=>""},{key:"lastEventId",converter:N.converters.DOMString,defaultValue:()=>""},{key:"source",converter:N.nullableConverter(N.converters.MessagePort),defaultValue:()=>null},{key:"ports",converter:N.converters["sequence<MessagePort>"],defaultValue:()=>new Array(0)}]);N.converters.CloseEventInit=N.dictionaryConverter([...Lg,{key:"wasClean",converter:N.converters.boolean,defaultValue:()=>!1},{key:"code",converter:N.converters["unsigned short"],defaultValue:()=>0},{key:"reason",converter:N.converters.USVString,defaultValue:()=>""}]);N.converters.ErrorEventInit=N.dictionaryConverter([...Lg,{key:"message",converter:N.converters.DOMString,defaultValue:()=>""},{key:"filename",converter:N.converters.USVString,defaultValue:()=>""},{key:"lineno",converter:N.converters["unsigned long"],defaultValue:()=>0},{key:"colno",converter:N.converters["unsigned long"],defaultValue:()=>0},{key:"error",converter:N.converters.any}]);cf.exports={MessageEvent:xr,CloseEvent:Zi,ErrorEvent:_i,createFastMessageEvent:EN}});var vt=p((NY,gf)=>{"use strict";var BN="258EAFA5-E914-47DA-95CA-C5AB0DC85B11",uN={enumerable:!0,writable:!1,configurable:!1},IN={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3},hN={NOT_SENT:0,PROCESSING:1,SENT:2},CN={CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10},fN=2**16-1,dN={INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4},wN=Buffer.allocUnsafe(0),yN={string:1,typedArray:2,arrayBuffer:3,blob:4};gf.exports={uid:BN,sentCloseFrameState:hN,staticPropertyDescriptors:uN,states:IN,opcodes:CN,maxUnsigned16Bit:fN,parserStates:dN,emptyBuffer:wN,sendHints:yN}});var qn=p((MY,lf)=>{"use strict";lf.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 On=p((UY,df)=>{"use strict";var{kReadyState:Wn,kController:pN,kResponse:mN,kBinaryType:DN,kWebSocketURL:kN}=qn(),{states:Pn,opcodes:Qt}=vt(),{ErrorEvent:bN,createFastMessageEvent:FN}=Yr(),{isUtf8:RN}=y("node:buffer"),{collectASequenceOfCodePointsFast:SN,removeHTTPWhitespace:Qf}=Je();function NN(e){return e[Wn]===Pn.CONNECTING}function MN(e){return e[Wn]===Pn.OPEN}function UN(e){return e[Wn]===Pn.CLOSING}function LN(e){return e[Wn]===Pn.CLOSED}function Tg(e,A,t=(n,s)=>new Event(n,s),r={}){let n=t(e,r);A.dispatchEvent(n)}function TN(e,A,t){if(e[Wn]!==Pn.OPEN)return;let r;if(A===Qt.TEXT)try{r=ff(t)}catch{Bf(e,"Received invalid UTF-8 in text frame.");return}else A===Qt.BINARY&&(e[DN]==="blob"?r=new Blob([t]):r=xN(t));Tg("message",e,FN,{origin:e[kN].origin,data:r})}function xN(e){return e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}function YN(e){if(e.length===0)return!1;for(let A=0;A<e.length;++A){let t=e.charCodeAt(A);if(t<33||t>126||t===34||t===40||t===41||t===44||t===47||t===58||t===59||t===60||t===61||t===62||t===63||t===64||t===91||t===92||t===93||t===123||t===125)return!1}return!0}function GN(e){return e>=1e3&&e<1015?e!==1004&&e!==1005&&e!==1006:e>=3e3&&e<=4999}function Bf(e,A){let{[pN]:t,[mN]:r}=e;t.abort(),r?.socket&&!r.socket.destroyed&&r.socket.destroy(),A&&Tg("error",e,(n,s)=>new bN(n,s),{error:new Error(A),message:A})}function uf(e){return e===Qt.CLOSE||e===Qt.PING||e===Qt.PONG}function If(e){return e===Qt.CONTINUATION}function hf(e){return e===Qt.TEXT||e===Qt.BINARY}function JN(e){return hf(e)||If(e)||uf(e)}function HN(e){let A={position:0},t=new Map;for(;A.position<e.length;){let r=SN(";",e,A),[n,s=""]=r.split("=");t.set(Qf(n,!0,!1),Qf(s,!1,!0)),A.position++}return t}function VN(e){if(e.length===0)return!1;for(let t=0;t<e.length;t++){let r=e.charCodeAt(t);if(r<48||r>57)return!1}let A=Number.parseInt(e,10);return A>=8&&A<=15}var Cf=typeof process.versions.icu=="string",Ef=Cf?new TextDecoder("utf-8",{fatal:!0}):void 0,ff=Cf?Ef.decode.bind(Ef):function(e){if(RN(e))return e.toString("utf-8");throw new TypeError("Invalid utf-8 received.")};df.exports={isConnecting:NN,isEstablished:MN,isClosing:UN,isClosed:LN,fireEvent:Tg,isValidSubprotocol:YN,isValidStatusCode:GN,failWebsocketConnection:Bf,websocketMessageReceived:TN,utf8Decode:ff,isControlFrame:uf,isContinuationFrame:If,isTextBinaryFrame:hf,isValidOpcode:JN,parseExtensions:HN,isValidClientWindowBits:VN}});var Xi=p((LY,wf)=>{"use strict";var{maxUnsigned16Bit:vN}=vt(),Ki=16386,xg,zn=null,Gr=Ki;try{xg=y("node:crypto")}catch{xg={randomFillSync:function(A,t,r){for(let n=0;n<A.length;++n)A[n]=Math.random()*255|0;return A}}}function qN(){return Gr===Ki&&(Gr=0,xg.randomFillSync(zn??=Buffer.allocUnsafe(Ki),0,Ki)),[zn[Gr++],zn[Gr++],zn[Gr++],zn[Gr++]]}var Yg=class{constructor(A){this.frameData=A}createFrame(A){let t=this.frameData,r=qN(),n=t?.byteLength??0,s=n,i=6;n>vN?(i+=8,s=127):n>125&&(i+=2,s=126);let o=Buffer.allocUnsafe(n+i);o[0]=o[1]=0,o[0]|=128,o[0]=(o[0]&240)+A;o[i-4]=r[0],o[i-3]=r[1],o[i-2]=r[2],o[i-1]=r[3],o[1]=s,s===126?o.writeUInt16BE(n,2):s===127&&(o[2]=o[3]=0,o.writeUIntBE(n,4,6)),o[1]|=128;for(let a=0;a<n;++a)o[i+a]=t[a]^r[a&3];return o}};wf.exports={WebsocketFrameSend:Yg}});var Jg=p((TY,Ff)=>{"use strict";var{uid:WN,states:Zn,sentCloseFrameState:ji,emptyBuffer:PN,opcodes:ON}=vt(),{kReadyState:_n,kSentClose:$i,kByteParser:pf,kReceivedClose:yf,kResponse:mf}=qn(),{fireEvent:zN,failWebsocketConnection:Et,isClosing:ZN,isClosed:_N,isEstablished:KN,parseExtensions:XN}=On(),{channels:Jr}=_t(),{CloseEvent:jN}=Yr(),{makeRequest:$N}=Nr(),{fetching:eM}=Jn(),{Headers:AM,getHeadersList:tM}=xt(),{getDecodeSplit:rM}=Pe(),{WebsocketFrameSend:nM}=Xi(),Gg;try{Gg=y("node:crypto")}catch{}function sM(e,A,t,r,n,s){let i=e;i.protocol=e.protocol==="ws:"?"http:":"https:";let o=$N({urlList:[i],client:t,serviceWorkers:"none",referrer:"no-referrer",mode:"websocket",credentials:"include",cache:"no-store",redirect:"error"});if(s.headers){let c=tM(new AM(s.headers));o.headersList=c}let a=Gg.randomBytes(16).toString("base64");o.headersList.append("sec-websocket-key",a),o.headersList.append("sec-websocket-version","13");for(let c of A)o.headersList.append("sec-websocket-protocol",c);return o.headersList.append("sec-websocket-extensions","permessage-deflate; client_max_window_bits"),eM({request:o,useParallelQueue:!0,dispatcher:s.dispatcher,processResponse(c){if(c.type==="error"||c.status!==101){Et(r,"Received network error or non-101 status code.");return}if(A.length!==0&&!c.headersList.get("Sec-WebSocket-Protocol")){Et(r,"Server did not respond with sent protocols.");return}if(c.headersList.get("Upgrade")?.toLowerCase()!=="websocket"){Et(r,'Server did not set Upgrade header to "websocket".');return}if(c.headersList.get("Connection")?.toLowerCase()!=="upgrade"){Et(r,'Server did not set Connection header to "upgrade".');return}let Q=c.headersList.get("Sec-WebSocket-Accept"),B=Gg.createHash("sha1").update(a+WN).digest("base64");if(Q!==B){Et(r,"Incorrect hash received in Sec-WebSocket-Accept header.");return}let E=c.headersList.get("Sec-WebSocket-Extensions"),u;if(E!==null&&(u=XN(E),!u.has("permessage-deflate"))){Et(r,"Sec-WebSocket-Extensions header does not match.");return}let h=c.headersList.get("Sec-WebSocket-Protocol");if(h!==null&&!rM("sec-websocket-protocol",o.headersList).includes(h)){Et(r,"Protocol was not set in the opening handshake.");return}c.socket.on("data",Df),c.socket.on("close",kf),c.socket.on("error",bf),Jr.open.hasSubscribers&&Jr.open.publish({address:c.socket.address(),protocol:h,extensions:E}),n(c,u)}})}function iM(e,A,t,r){if(!(ZN(e)||_N(e)))if(!KN(e))Et(e,"Connection was closed before it was established."),e[_n]=Zn.CLOSING;else if(e[$i]===ji.NOT_SENT){e[$i]=ji.PROCESSING;let n=new nM;A!==void 0&&t===void 0?(n.frameData=Buffer.allocUnsafe(2),n.frameData.writeUInt16BE(A,0)):A!==void 0&&t!==void 0?(n.frameData=Buffer.allocUnsafe(2+r),n.frameData.writeUInt16BE(A,0),n.frameData.write(t,2,"utf-8")):n.frameData=PN,e[mf].socket.write(n.createFrame(ON.CLOSE)),e[$i]=ji.SENT,e[_n]=Zn.CLOSING}else e[_n]=Zn.CLOSING}function Df(e){this.ws[pf].write(e)||this.pause()}function kf(){let{ws:e}=this,{[mf]:A}=e;A.socket.off("data",Df),A.socket.off("close",kf),A.socket.off("error",bf);let t=e[$i]===ji.SENT&&e[yf],r=1005,n="",s=e[pf].closingInfo;s&&!s.error?(r=s.code??1005,n=s.reason):e[yf]||(r=1006),e[_n]=Zn.CLOSED,zN("close",e,(i,o)=>new jN(i,o),{wasClean:t,code:r,reason:n}),Jr.close.hasSubscribers&&Jr.close.publish({websocket:e,code:r,reason:n})}function bf(e){let{ws:A}=this;A[_n]=Zn.CLOSING,Jr.socketError.hasSubscribers&&Jr.socketError.publish(e),this.destroy()}Ff.exports={establishWebSocketConnection:sM,closeWebSocketConnection:iM}});var Sf=p((xY,Rf)=>{"use strict";var{createInflateRaw:oM,Z_DEFAULT_WINDOWBITS:aM}=y("node:zlib"),{isValidClientWindowBits:cM}=On(),{MessageSizeExceededError:gM}=Z(),lM=Buffer.from([0,0,255,255]),eo=Symbol("kBuffer"),Kn=Symbol("kLength"),Hg=class{#e;#A={};#t=0;constructor(A,t){this.#A.serverNoContextTakeover=A.has("server_no_context_takeover"),this.#A.serverMaxWindowBits=A.get("server_max_window_bits"),this.#t=t.maxPayloadSize}decompress(A,t,r){if(!this.#e){let n=aM;if(this.#A.serverMaxWindowBits){if(!cM(this.#A.serverMaxWindowBits)){r(new Error("Invalid server_max_window_bits"));return}n=Number.parseInt(this.#A.serverMaxWindowBits)}try{this.#e=oM({windowBits:n})}catch(s){r(s);return}this.#e[eo]=[],this.#e[Kn]=0,this.#e.on("data",s=>{if(this.#e[Kn]+=s.length,this.#t>0&&this.#e[Kn]>this.#t){r(new gM),this.#e.removeAllListeners(),this.#e=null;return}this.#e[eo].push(s)}),this.#e.on("error",s=>{this.#e=null,r(s)})}this.#e.write(A),t&&this.#e.write(lM),this.#e.flush(()=>{if(!this.#e)return;let n=Buffer.concat(this.#e[eo],this.#e[Kn]);this.#e[eo].length=0,this.#e[Kn]=0,r(null,n)})}};Rf.exports={PerMessageDeflate:Hg}});var Hf=p((YY,Jf)=>{"use strict";var{Writable:QM}=y("node:stream"),EM=y("node:assert"),{parserStates:We,opcodes:Hr,states:BM,emptyBuffer:Nf,sentCloseFrameState:Mf}=vt(),{kReadyState:uM,kSentClose:Uf,kResponse:Lf,kReceivedClose:Tf}=qn(),{channels:Ao}=_t(),{isValidStatusCode:IM,isValidOpcode:hM,failWebsocketConnection:$e,websocketMessageReceived:xf,utf8Decode:CM,isControlFrame:Vg,isTextBinaryFrame:vg,isContinuationFrame:fM}=On(),{WebsocketFrameSend:Yf}=Xi(),{closeWebSocketConnection:Gf}=Jg(),{PerMessageDeflate:dM}=Sf(),{MessageSizeExceededError:qg}=Z();function Xn(e,A,t){Gf(e,A,t,Buffer.byteLength(t)),$e(e,t)}var Wg=class extends QM{#e=[];#A=0;#t=0;#s=!1;#n=We.INFO;#r={};#i=[];#o;#c;#a;constructor(A,t,r={}){super(),this.ws=A,this.#o=t??new Map,this.#c=r.maxFragments??0,this.#a=r.maxPayloadSize??0,this.#o.has("permessage-deflate")&&this.#o.set("permessage-deflate",new dM(t,r))}_write(A,t,r){this.#e.push(A),this.#t+=A.length,this.#s=!0,this.run(r)}#g(){return this.#a>0&&!Vg(this.#r.opcode)&&this.#r.payloadLength+this.#A>this.#a?(Xn(this.ws,1009,"Payload size exceeds maximum allowed size"),!1):!0}run(A){for(;this.#s;)if(this.#n===We.INFO){if(this.#t<2)return A();let t=this.consume(2),r=(t[0]&128)!==0,n=t[0]&15,s=(t[1]&128)===128,i=!r&&n!==Hr.CONTINUATION,o=t[1]&127,a=t[0]&64,g=t[0]&32,l=t[0]&16;if(!hM(n))return $e(this.ws,"Invalid opcode received"),A();if(s)return $e(this.ws,"Frame cannot be masked"),A();if(a!==0&&!this.#o.has("permessage-deflate")){$e(this.ws,"Expected RSV1 to be clear.");return}if(g!==0||l!==0){$e(this.ws,"RSV1, RSV2, RSV3 must be clear");return}if(i&&!vg(n)){$e(this.ws,"Invalid frame type was fragmented.");return}if(vg(n)&&this.#i.length>0){$e(this.ws,"Expected continuation frame");return}if(this.#r.fragmented&&i){$e(this.ws,"Fragmented frame exceeded 125 bytes.");return}if((o>125||i)&&Vg(n)){$e(this.ws,"Control frame either too large or fragmented");return}if(fM(n)&&this.#i.length===0&&!this.#r.compressed){$e(this.ws,"Unexpected continuation frame");return}if(o<=125){if(this.#r.payloadLength=o,this.#n=We.READ_DATA,!this.#g())return}else o===126?this.#n=We.PAYLOADLENGTH_16:o===127&&(this.#n=We.PAYLOADLENGTH_64);vg(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=i}else if(this.#n===We.PAYLOADLENGTH_16){if(this.#t<2)return A();let t=this.consume(2);if(this.#r.payloadLength=t.readUInt16BE(0),this.#n=We.READ_DATA,!this.#g())return}else if(this.#n===We.PAYLOADLENGTH_64){if(this.#t<8)return A();let t=this.consume(8),r=t.readUInt32BE(0),n=t.readUInt32BE(4);if(r!==0||n>2**31-1){$e(this.ws,"Received payload length > 2^31 bytes.");return}if(this.#r.payloadLength=n,this.#n=We.READ_DATA,!this.#g())return}else if(this.#n===We.READ_DATA){if(this.#t<this.#r.payloadLength)return A();let t=this.consume(this.#r.payloadLength);if(Vg(this.#r.opcode))this.#s=this.parseControlFrame(t),this.#n=We.INFO;else if(this.#r.compressed){this.#o.get("permessage-deflate").decompress(t,this.#r.fin,(r,n)=>{if(r){let s=r instanceof qg?1009:1007;Xn(this.ws,s,r.message);return}if(this.writeFragments(n)){if(this.#a>0&&this.#A>this.#a){Xn(this.ws,1009,new qg().message);return}if(!this.#r.fin){this.#n=We.INFO,this.#s=!0,this.run(A);return}xf(this.ws,this.#r.binaryType,this.consumeFragments()),this.#s=!0,this.#n=We.INFO,this.run(A)}}),this.#s=!1;break}else{if(!this.writeFragments(t))return;if(this.#a>0&&this.#A>this.#a){Xn(this.ws,1009,new qg().message);return}!this.#r.fragmented&&this.#r.fin&&xf(this.ws,this.#r.binaryType,this.consumeFragments()),this.#n=We.INFO}}}consume(A){if(A>this.#t)throw new Error("Called consume() before buffers satiated.");if(A===0)return Nf;if(this.#e[0].length===A)return this.#t-=this.#e[0].length,this.#e.shift();let t=Buffer.allocUnsafe(A),r=0;for(;r!==A;){let n=this.#e[0],{length:s}=n;if(s+r===A){t.set(this.#e.shift(),r);break}else if(s+r>A){t.set(n.subarray(0,A-r),r),this.#e[0]=n.subarray(A-r);break}else t.set(this.#e.shift(),r),r+=n.length}return this.#t-=A,t}writeFragments(A){return this.#c>0&&this.#i.length===this.#c?(Xn(this.ws,1008,"Too many message fragments"),!1):(this.#A+=A.length,this.#i.push(A),!0)}consumeFragments(){let A=this.#i;if(A.length===1)return this.#A=0,A.shift();let t=Buffer.concat(A,this.#A);return this.#i=[],this.#A=0,t}parseCloseBody(A){EM(A.length!==1);let t;if(A.length>=2&&(t=A.readUInt16BE(0)),t!==void 0&&!IM(t))return{code:1002,reason:"Invalid status code",error:!0};let r=A.subarray(2);r[0]===239&&r[1]===187&&r[2]===191&&(r=r.subarray(3));try{r=CM(r)}catch{return{code:1007,reason:"Invalid UTF-8",error:!0}}return{code:t,reason:r,error:!1}}parseControlFrame(A){let{opcode:t,payloadLength:r}=this.#r;if(t===Hr.CLOSE){if(r===1)return $e(this.ws,"Received close frame with a 1-byte body."),!1;if(this.#r.closeInfo=this.parseCloseBody(A),this.#r.closeInfo.error){let{code:n,reason:s}=this.#r.closeInfo;return Gf(this.ws,n,s,s.length),$e(this.ws,s),!1}if(this.ws[Uf]!==Mf.SENT){let n=Nf;this.#r.closeInfo.code&&(n=Buffer.allocUnsafe(2),n.writeUInt16BE(this.#r.closeInfo.code,0));let s=new Yf(n);this.ws[Lf].socket.write(s.createFrame(Hr.CLOSE),i=>{i||(this.ws[Uf]=Mf.SENT)})}return this.ws[uM]=BM.CLOSING,this.ws[Tf]=!0,!1}else if(t===Hr.PING){if(!this.ws[Tf]){let n=new Yf(A);this.ws[Lf].socket.write(n.createFrame(Hr.PONG)),Ao.ping.hasSubscribers&&Ao.ping.publish({payload:A})}}else t===Hr.PONG&&Ao.pong.hasSubscribers&&Ao.pong.publish({payload:A});return!0}get closingInfo(){return this.#r.closeInfo}};Jf.exports={ByteParser:Wg}});var Pf=p((GY,Wf)=>{"use strict";var{WebsocketFrameSend:wM}=Xi(),{opcodes:Vf,sendHints:Vr}=vt(),yM=Ka(),vf=Buffer[Symbol.species],Pg=class{#e=new yM;#A=!1;#t;constructor(A){this.#t=A}add(A,t,r){if(r!==Vr.blob){let s=qf(A,r);if(!this.#A)this.#t.write(s,t);else{let i={promise:null,callback:t,frame:s};this.#e.push(i)}return}let n={promise:A.arrayBuffer().then(s=>{n.promise=null,n.frame=qf(s,r)}),callback:t,frame:null};this.#e.push(n),this.#A||this.#s()}async#s(){this.#A=!0;let A=this.#e;for(;!A.isEmpty();){let t=A.shift();t.promise!==null&&await t.promise,this.#t.write(t.frame,t.callback),t.callback=t.frame=null}this.#A=!1}};function qf(e,A){return new wM(pM(e,A)).createFrame(A===Vr.string?Vf.TEXT:Vf.BINARY)}function pM(e,A){switch(A){case Vr.string:return Buffer.from(e);case Vr.arrayBuffer:case Vr.blob:return new vf(e);case Vr.typedArray:return new vf(e.buffer,e.byteOffset,e.byteLength)}}Wf.exports={SendQueue:Pg}});var Ad=p((JY,ed)=>{"use strict";var{webidl:J}=Se(),{URLSerializer:mM}=Je(),{environmentSettingsObject:Of}=Pe(),{staticPropertyDescriptors:Bt,states:jn,sentCloseFrameState:DM,sendHints:to}=vt(),{kWebSocketURL:zf,kReadyState:Og,kController:Zf,kBinaryType:ro,kResponse:_f,kSentClose:kM,kByteParser:bM}=qn(),{isConnecting:FM,isEstablished:RM,isClosing:SM,isValidSubprotocol:NM,fireEvent:Kf}=On(),{establishWebSocketConnection:MM,closeWebSocketConnection:Xf}=Jg(),{ByteParser:UM}=Hf(),{kEnumerableProperty:iA,isBlobLike:jf}=v(),{getGlobalDispatcher:LM}=Ci(),{types:$f}=y("node:util"),{ErrorEvent:TM,CloseEvent:xM}=Yr(),{SendQueue:YM}=Pf(),eA=class e extends EventTarget{#e={open:null,error:null,close:null,message:null};#A=0;#t="";#s="";#n;constructor(A,t=[]){super(),J.util.markAsUncloneable(this);let r="WebSocket constructor";J.argumentLengthCheck(arguments,1,r);let n=J.converters["DOMString or sequence<DOMString> or WebSocketInit"](t,r,"options");A=J.converters.USVString(A,r,"url"),t=n.protocols;let s=Of.settingsObject.baseUrl,i;try{i=new URL(A,s)}catch(a){throw new DOMException(a,"SyntaxError")}if(i.protocol==="http:"?i.protocol="ws:":i.protocol==="https:"&&(i.protocol="wss:"),i.protocol!=="ws:"&&i.protocol!=="wss:")throw new DOMException(`Expected a ws: or wss: protocol, got ${i.protocol}`,"SyntaxError");if(i.hash||i.href.endsWith("#"))throw new DOMException("Got fragment","SyntaxError");if(typeof t=="string"&&(t=[t]),t.length!==new Set(t.map(a=>a.toLowerCase())).size)throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");if(t.length>0&&!t.every(a=>NM(a)))throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");this[zf]=new URL(i.href);let o=Of.settingsObject;this[Zf]=MM(i,t,o,this,(a,g)=>this.#r(a,g),n),this[Og]=e.CONNECTING,this[kM]=DM.NOT_SENT,this[ro]="blob"}close(A=void 0,t=void 0){J.brandCheck(this,e);let r="WebSocket.close";if(A!==void 0&&(A=J.converters["unsigned short"](A,r,"code",{clamp:!0})),t!==void 0&&(t=J.converters.USVString(t,r,"reason")),A!==void 0&&A!==1e3&&(A<3e3||A>4999))throw new DOMException("invalid code","InvalidAccessError");let n=0;if(t!==void 0&&(n=Buffer.byteLength(t),n>123))throw new DOMException(`Reason must be less than 123 bytes; received ${n}`,"SyntaxError");Xf(this,A,t,n)}send(A){J.brandCheck(this,e);let t="WebSocket.send";if(J.argumentLengthCheck(arguments,1,t),A=J.converters.WebSocketSendData(A,t,"data"),FM(this))throw new DOMException("Sent before connected.","InvalidStateError");if(!(!RM(this)||SM(this)))if(typeof A=="string"){let r=Buffer.byteLength(A);this.#A+=r,this.#n.add(A,()=>{this.#A-=r},to.string)}else $f.isArrayBuffer(A)?(this.#A+=A.byteLength,this.#n.add(A,()=>{this.#A-=A.byteLength},to.arrayBuffer)):ArrayBuffer.isView(A)?(this.#A+=A.byteLength,this.#n.add(A,()=>{this.#A-=A.byteLength},to.typedArray)):jf(A)&&(this.#A+=A.size,this.#n.add(A,()=>{this.#A-=A.size},to.blob))}get readyState(){return J.brandCheck(this,e),this[Og]}get bufferedAmount(){return J.brandCheck(this,e),this.#A}get url(){return J.brandCheck(this,e),mM(this[zf])}get extensions(){return J.brandCheck(this,e),this.#s}get protocol(){return J.brandCheck(this,e),this.#t}get onopen(){return J.brandCheck(this,e),this.#e.open}set onopen(A){J.brandCheck(this,e),this.#e.open&&this.removeEventListener("open",this.#e.open),typeof A=="function"?(this.#e.open=A,this.addEventListener("open",A)):this.#e.open=null}get onerror(){return J.brandCheck(this,e),this.#e.error}set onerror(A){J.brandCheck(this,e),this.#e.error&&this.removeEventListener("error",this.#e.error),typeof A=="function"?(this.#e.error=A,this.addEventListener("error",A)):this.#e.error=null}get onclose(){return J.brandCheck(this,e),this.#e.close}set onclose(A){J.brandCheck(this,e),this.#e.close&&this.removeEventListener("close",this.#e.close),typeof A=="function"?(this.#e.close=A,this.addEventListener("close",A)):this.#e.close=null}get onmessage(){return J.brandCheck(this,e),this.#e.message}set onmessage(A){J.brandCheck(this,e),this.#e.message&&this.removeEventListener("message",this.#e.message),typeof A=="function"?(this.#e.message=A,this.addEventListener("message",A)):this.#e.message=null}get binaryType(){return J.brandCheck(this,e),this[ro]}set binaryType(A){J.brandCheck(this,e),A!=="blob"&&A!=="arraybuffer"?this[ro]="blob":this[ro]=A}#r(A,t){this[_f]=A;let r=this[Zf]?.dispatcher?.webSocketOptions,n=r?.maxFragments,s=r?.maxPayloadSize,i=new UM(this,t,{maxFragments:n,maxPayloadSize:s});i.on("drain",GM),i.on("error",JM.bind(this)),A.socket.ws=this,this[bM]=i,this.#n=new YM(A.socket),this[Og]=jn.OPEN;let o=A.headersList.get("sec-websocket-extensions");o!==null&&(this.#s=o);let a=A.headersList.get("sec-websocket-protocol");a!==null&&(this.#t=a),Kf("open",this)}};eA.CONNECTING=eA.prototype.CONNECTING=jn.CONNECTING;eA.OPEN=eA.prototype.OPEN=jn.OPEN;eA.CLOSING=eA.prototype.CLOSING=jn.CLOSING;eA.CLOSED=eA.prototype.CLOSED=jn.CLOSED;Object.defineProperties(eA.prototype,{CONNECTING:Bt,OPEN:Bt,CLOSING:Bt,CLOSED:Bt,url:iA,readyState:iA,bufferedAmount:iA,onopen:iA,onerror:iA,onclose:iA,close:iA,onmessage:iA,binaryType:iA,send:iA,extensions:iA,protocol:iA,[Symbol.toStringTag]:{value:"WebSocket",writable:!1,enumerable:!1,configurable:!0}});Object.defineProperties(eA,{CONNECTING:Bt,OPEN:Bt,CLOSING:Bt,CLOSED:Bt});J.converters["sequence<DOMString>"]=J.sequenceConverter(J.converters.DOMString);J.converters["DOMString or sequence<DOMString>"]=function(e,A,t){return J.util.Type(e)==="Object"&&Symbol.iterator in e?J.converters["sequence<DOMString>"](e):J.converters.DOMString(e,A,t)};J.converters.WebSocketInit=J.dictionaryConverter([{key:"protocols",converter:J.converters["DOMString or sequence<DOMString>"],defaultValue:()=>new Array(0)},{key:"dispatcher",converter:J.converters.any,defaultValue:()=>LM()},{key:"headers",converter:J.nullableConverter(J.converters.HeadersInit)}]);J.converters["DOMString or sequence<DOMString> or WebSocketInit"]=function(e){return J.util.Type(e)==="Object"&&!(Symbol.iterator in e)?J.converters.WebSocketInit(e):{protocols:J.converters["DOMString or sequence<DOMString>"](e)}};J.converters.WebSocketSendData=function(e){if(J.util.Type(e)==="Object"){if(jf(e))return J.converters.Blob(e,{strict:!1});if(ArrayBuffer.isView(e)||$f.isArrayBuffer(e))return J.converters.BufferSource(e)}return J.converters.USVString(e)};function GM(){this.ws[_f].socket.resume()}function JM(e){let A,t;e instanceof xM?(A=e.reason,t=e.code):A=e.message,Kf("error",this,()=>new TM("error",{error:e,message:A})),Xf(this,t)}ed.exports={WebSocket:eA}});var zg=p((HY,td)=>{"use strict";function HM(e){return e.indexOf("\0")===-1}function VM(e){if(e.length===0)return!1;for(let A=0;A<e.length;A++)if(e.charCodeAt(A)<48||e.charCodeAt(A)>57)return!1;return!0}function vM(e){return new Promise(A=>{setTimeout(A,e).unref()})}td.exports={isValidLastEventId:HM,isASCIINumber:VM,delay:vM}});var id=p((VY,sd)=>{"use strict";var{Transform:qM}=y("node:stream"),{isASCIINumber:rd,isValidLastEventId:nd}=zg(),ZA=[239,187,191],Zg=10,no=13,WM=58,PM=32,_g=class extends qM{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(A={}){A.readableObjectMode=!0,super(A),this.state=A.eventSourceSettings||{},A.push&&(this.push=A.push)}_transform(A,t,r){if(A.length===0){r();return}if(this.buffer?this.buffer=Buffer.concat([this.buffer,A]):this.buffer=A,this.checkBOM)switch(this.buffer.length){case 1:if(this.buffer[0]===ZA[0]){r();return}this.checkBOM=!1,r();return;case 2:if(this.buffer[0]===ZA[0]&&this.buffer[1]===ZA[1]){r();return}this.checkBOM=!1;break;case 3:if(this.buffer[0]===ZA[0]&&this.buffer[1]===ZA[1]&&this.buffer[2]===ZA[2]){this.buffer=Buffer.alloc(0),this.checkBOM=!1,r();return}this.checkBOM=!1;break;default:this.buffer[0]===ZA[0]&&this.buffer[1]===ZA[1]&&this.buffer[2]===ZA[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]===Zg){this.buffer=this.buffer.subarray(this.pos+1),this.pos=0,this.crlfCheck=!1;continue}this.crlfCheck=!1}if(this.buffer[this.pos]===Zg||this.buffer[this.pos]===no){this.buffer[this.pos]===no&&(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]===Zg||this.buffer[this.pos]===no){this.buffer[this.pos]===no&&(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(A,t){if(A.length===0)return;let r=A.indexOf(WM);if(r===0)return;let n="",s="";if(r!==-1){n=A.subarray(0,r).toString("utf8");let i=r+1;A[i]===PM&&++i,s=A.subarray(i).toString("utf8")}else n=A.toString("utf8"),s="";switch(n){case"data":t[n]===void 0?t[n]=s:t[n]+=`
45
- ${s}`;break;case"retry":rd(s)&&(t[n]=s);break;case"id":nd(s)&&(t[n]=s);break;case"event":s.length>0&&(t[n]=s);break}}processEvent(A){A.retry&&rd(A.retry)&&(this.state.reconnectionTime=parseInt(A.retry,10)),A.id&&nd(A.id)&&(this.state.lastEventId=A.id),A.data!==void 0&&this.push({type:A.event||"message",options:{data:A.data,lastEventId:this.state.lastEventId,origin:this.state.origin}})}clearEvent(){this.event={data:void 0,event:void 0,id:void 0,retry:void 0}}};sd.exports={EventSourceStream:_g}});var Bd=p((vY,Ed)=>{"use strict";var{pipeline:OM}=y("node:stream"),{fetching:zM}=Jn(),{makeRequest:ZM}=Nr(),{webidl:_A}=Se(),{EventSourceStream:_M}=id(),{parseMIMEType:KM}=Je(),{createFastMessageEvent:XM}=Yr(),{isNetworkError:od}=Yn(),{delay:jM}=zg(),{kEnumerableProperty:qt}=v(),{environmentSettingsObject:ad}=Pe(),cd=!1,gd=3e3,$n=0,ld=1,es=2,$M="anonymous",eU="use-credentials",vr=class e extends EventTarget{#e={open:null,error:null,message:null};#A=null;#t=!1;#s=$n;#n=null;#r=null;#i;#o;constructor(A,t={}){super(),_A.util.markAsUncloneable(this);let r="EventSource constructor";_A.argumentLengthCheck(arguments,1,r),cd||(cd=!0,process.emitWarning("EventSource is experimental, expect them to change at any time.",{code:"UNDICI-ES"})),A=_A.converters.USVString(A,r,"url"),t=_A.converters.EventSourceInitDict(t,r,"eventSourceInitDict"),this.#i=t.dispatcher,this.#o={lastEventId:"",reconnectionTime:gd};let n=ad,s;try{s=new URL(A,n.settingsObject.baseUrl),this.#o.origin=s.origin}catch(a){throw new DOMException(a,"SyntaxError")}this.#A=s.href;let i=$M;t.withCredentials&&(i=eU,this.#t=!0);let o={redirect:"follow",keepalive:!0,mode:"cors",credentials:i==="anonymous"?"same-origin":"omit",referrer:"no-referrer"};o.client=ad.settingsObject,o.headersList=[["accept",{name:"accept",value:"text/event-stream"}]],o.cache="no-store",o.initiator="other",o.urlList=[new URL(this.#A)],this.#n=ZM(o),this.#c()}get readyState(){return this.#s}get url(){return this.#A}get withCredentials(){return this.#t}#c(){if(this.#s===es)return;this.#s=$n;let A={request:this.#n,dispatcher:this.#i},t=r=>{od(r)&&(this.dispatchEvent(new Event("error")),this.close()),this.#a()};A.processResponseEndOfBody=t,A.processResponse=r=>{if(od(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?KM(n):"failure",i=s!=="failure"&&s.essence==="text/event-stream";if(r.status!==200||i===!1){this.close(),this.dispatchEvent(new Event("error"));return}this.#s=ld,this.dispatchEvent(new Event("open")),this.#o.origin=r.urlList[r.urlList.length-1].origin;let o=new _M({eventSourceSettings:this.#o,push:a=>{this.dispatchEvent(XM(a.type,a.options))}});OM(r.body.stream,o,a=>{a?.aborted===!1&&(this.close(),this.dispatchEvent(new Event("error")))})},this.#r=zM(A)}async#a(){this.#s!==es&&(this.#s=$n,this.dispatchEvent(new Event("error")),await jM(this.#o.reconnectionTime),this.#s===$n&&(this.#o.lastEventId.length&&this.#n.headersList.set("last-event-id",this.#o.lastEventId,!0),this.#c()))}close(){_A.brandCheck(this,e),this.#s!==es&&(this.#s=es,this.#r.abort(),this.#n=null)}get onopen(){return this.#e.open}set onopen(A){this.#e.open&&this.removeEventListener("open",this.#e.open),typeof A=="function"?(this.#e.open=A,this.addEventListener("open",A)):this.#e.open=null}get onmessage(){return this.#e.message}set onmessage(A){this.#e.message&&this.removeEventListener("message",this.#e.message),typeof A=="function"?(this.#e.message=A,this.addEventListener("message",A)):this.#e.message=null}get onerror(){return this.#e.error}set onerror(A){this.#e.error&&this.removeEventListener("error",this.#e.error),typeof A=="function"?(this.#e.error=A,this.addEventListener("error",A)):this.#e.error=null}},Qd={CONNECTING:{__proto__:null,configurable:!1,enumerable:!0,value:$n,writable:!1},OPEN:{__proto__:null,configurable:!1,enumerable:!0,value:ld,writable:!1},CLOSED:{__proto__:null,configurable:!1,enumerable:!0,value:es,writable:!1}};Object.defineProperties(vr,Qd);Object.defineProperties(vr.prototype,Qd);Object.defineProperties(vr.prototype,{close:qt,onerror:qt,onmessage:qt,onopen:qt,readyState:qt,url:qt,withCredentials:qt});_A.converters.EventSourceInitDict=_A.dictionaryConverter([{key:"withCredentials",converter:_A.converters.boolean,defaultValue:()=>!1},{key:"dispatcher",converter:_A.converters.any}]);Ed.exports={EventSource:vr,defaultReconnectionTime:gd}});var Cd=p((qY,G)=>{"use strict";var AU=ur(),ud=rn(),tU=Ir(),rU=lu(),nU=hr(),sU=Ic(),iU=Tu(),oU=vu(),Id=Z(),io=v(),{InvalidArgumentError:so}=Id,qr=FI(),aU=sn(),cU=Xc(),gU=gh(),lU=eg(),QU=Gc(),EU=ai(),{getGlobalDispatcher:hd,setGlobalDispatcher:BU}=Ci(),uU=fi(),IU=Xs(),hU=js();Object.assign(ud.prototype,qr);G.exports.Dispatcher=ud;G.exports.Client=AU;G.exports.Pool=tU;G.exports.BalancedPool=rU;G.exports.Agent=nU;G.exports.ProxyAgent=sU;G.exports.EnvHttpProxyAgent=iU;G.exports.RetryAgent=oU;G.exports.RetryHandler=EU;G.exports.DecoratorHandler=uU;G.exports.RedirectHandler=IU;G.exports.createRedirectInterceptor=hU;G.exports.interceptors={redirect:hh(),retry:fh(),dump:wh(),dns:mh()};G.exports.buildConnector=aU;G.exports.errors=Id;G.exports.util={parseHeaders:io.parseHeaders,headerNameToString:io.headerNameToString};function As(e){return(A,t,r)=>{if(typeof t=="function"&&(r=t,t=null),!A||typeof A!="string"&&typeof A!="object"&&!(A instanceof URL))throw new so("invalid url");if(t!=null&&typeof t!="object")throw new so("invalid opts");if(t&&t.path!=null){if(typeof t.path!="string")throw new so("invalid opts.path");let i=t.path;t.path.startsWith("/")||(i=`/${i}`),A=new URL(io.parseOrigin(A).origin+i)}else t||(t=typeof A=="object"?A:{}),A=io.parseURL(A);let{agent:n,dispatcher:s=hd()}=t;if(n)throw new so("unsupported opts.agent. Did you mean opts.client?");return e.call(s,{...t,origin:A.origin,path:A.search?`${A.pathname}${A.search}`:A.pathname,method:t.method||(t.body?"PUT":"GET")},r)}}G.exports.setGlobalDispatcher=BU;G.exports.getGlobalDispatcher=hd;var CU=Jn().fetch;G.exports.fetch=async function(A,t=void 0){try{return await CU(A,t)}catch(r){throw r&&typeof r=="object"&&Error.captureStackTrace(r),r}};G.exports.Headers=xt().Headers;G.exports.Response=Yn().Response;G.exports.Request=Nr().Request;G.exports.FormData=En().FormData;G.exports.File=globalThis.File??y("node:buffer").File;G.exports.FileReader=HC().FileReader;var{setGlobalOrigin:fU,getGlobalOrigin:dU}=ha();G.exports.setGlobalOrigin=fU;G.exports.getGlobalOrigin=dU;var{CacheStorage:wU}=_C(),{kConstruct:yU}=Hi();G.exports.caches=new wU(yU);var{deleteCookie:pU,getCookies:mU,getSetCookies:DU,setCookie:kU}=of();G.exports.deleteCookie=pU;G.exports.getCookies=mU;G.exports.getSetCookies=DU;G.exports.setCookie=kU;var{parseMIMEType:bU,serializeAMimeType:FU}=Je();G.exports.parseMIMEType=bU;G.exports.serializeAMimeType=FU;var{CloseEvent:RU,ErrorEvent:SU,MessageEvent:NU}=Yr();G.exports.WebSocket=Ad().WebSocket;G.exports.CloseEvent=RU;G.exports.ErrorEvent=SU;G.exports.MessageEvent=NU;G.exports.request=As(qr.request);G.exports.stream=As(qr.stream);G.exports.pipeline=As(qr.pipeline);G.exports.connect=As(qr.connect);G.exports.upgrade=As(qr.upgrade);G.exports.MockClient=cU;G.exports.MockPool=lU;G.exports.MockAgent=gU;G.exports.mockErrors=QU;var{EventSource:MU}=Bd();G.exports.EventSource=MU});import{createHash as ZL}from"node:crypto";import{createHash as xU}from"node:crypto";import Wr from"node:net";import UU from"node:dns";var LU=new Set(["localhost","metadata.google.internal","metadata.goog"]);function oo(e){let A=String(e).toLowerCase().split("%")[0];if((A.match(/::/g)||[]).length>1)return null;let t=l=>{if(!l)return[];let c=l.split(":"),Q=c.at(-1);if(Q?.includes(".")){let B=Q.split(".").map(Number);if(B.length!==4||B.some(E=>!Number.isInteger(E)||E<0||E>255))return null;c.splice(c.length-1,1,(B[0]<<8|B[1]).toString(16),(B[2]<<8|B[3]).toString(16))}return c.some(B=>!/^[0-9a-f]{1,4}$/.test(B))?null:c.map(B=>Number.parseInt(B,16))},[r,n]=A.split("::"),s=t(r),i=t(n);if(!s||!i)return null;let o=A.includes("::"),a=8-s.length-i.length;if(!o&&a!==0||o&&a<1)return null;let g=[...s,...Array(Math.max(0,a)).fill(0),...i];return g.length!==8?null:Uint8Array.from(g.flatMap(l=>[l>>8,l&255]))}function Kg(e,A,t){let r=Math.floor(t/8),n=t%8;for(let i=0;i<r;i+=1)if(e[i]!==A[i])return!1;if(!n)return!0;let s=255<<8-n;return(e[r]&s)===(A[r]&s)}function Xg(e){if(Wr.isIPv4(e)){let A=e.split(".").map(Number);return!(A[0]===0||A[0]===10||A[0]===127||A[0]>=224||A[0]===100&&A[1]>=64&&A[1]<=127||A[0]===169&&A[1]===254||A[0]===172&&A[1]>=16&&A[1]<=31||A[0]===192&&(A[1]===0||A[1]===2||A[1]===168)||A[0]===192&&A[1]===88&&A[2]===99||A[0]===198&&(A[1]===18||A[1]===19||A[1]===51)||A[0]===203&&A[1]===0&&A[2]===113)}if(Wr.isIPv6(e)){let A=oo(e);if(!A)return!1;let t=oo("::ffff:0:0");return Kg(A,t,96)?Xg([...A.slice(12)].join(".")):Kg(A,oo("2000::"),3)?![["2001::",23],["2001:db8::",32],["2001:10::",28],["2001:2::",48],["2002::",16],["3fff::",20]].some(([n,s])=>Kg(A,oo(n),s)):!1}return!1}function TU(e){let A;try{A=new URL(String(e))}catch{return{ok:!1,error:`not a valid URL: ${String(e).slice(0,120)}`}}if(A.protocol!=="http:"&&A.protocol!=="https:")return{ok:!1,error:`refused protocol ${A.protocol} (only http/https)`};let t=A.hostname.toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,"");if(LU.has(t)||t.endsWith(".localhost")||t.endsWith(".internal"))return{ok:!1,error:`refused internal host ${t}`};let r=Wr.isIP(t);return r!==0&&!Xg(t)?{ok:!1,error:`refused private address ${t}`}:{ok:!0,url:A,host:t,isLiteralIp:r!==0}}async function fd(e,{lookupFn:A=UU.promises.lookup}={}){let t=TU(e);if(!t.ok)return t;if(t.isLiteralIp)return{ok:!0,url:t.url};let r;try{r=await A(t.host,{all:!0,verbatim:!0})}catch{return{ok:!1,error:`refused: ${t.host} did not resolve`}}return!Array.isArray(r)||r.length===0||r.some(n=>!Xg(n.address))?{ok:!1,error:`refused: ${t.host} resolves to a non-public address`}:{ok:!0,url:t.url,addresses:r}}async function dd(){let e,A;try{let o=await Promise.resolve().then(()=>kw(Cd(),1));e=o.Agent,A=o.fetch}catch{return null}if(typeof e!="function"||typeof A!="function")return null;let t=o=>String(o).toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,""),r=new Map,n=o=>(Array.isArray(o)?o:[o]).map(a=>typeof a=="string"?{address:a}:a).filter(a=>a&&a.address).map(a=>({address:a.address,family:a.family||(Wr.isIPv6(a.address)?6:4)})),s=o=>{let a=t(o);if(Wr.isIP(a))return[{address:a,family:Wr.isIPv6(a)?6:4}];let g=r.get(a);if(!g||!g.length)throw new Error(`refused: unpinned host ${o} during pinned fetch`);return g},i=new e({connect:{lookup(o,a,g){let l;try{l=s(o)}catch(c){return g(c)}return a?.all?g(null,l):g(null,l[0].address,l[0].family)}}});return{dispatcher:i,fetch:(o,a={})=>A(o,{...a,dispatcher:i}),pin(o,a,g){r.set(t(o),n(typeof a=="string"?[{address:a,family:g}]:a))},resolve:s,async close(){try{await i.destroy()}catch{}}}}var YU=new Set([408,425,429,500,502,503,504]),wd=new Set(["GET","HEAD","OPTIONS","PUT","DELETE"]),GU=2,yd=4e3,md=["authorization","x-api-key","x-tensor-api-key","0x-api-key","api-key","cookie","proxy-authorization"],JU=new Set([301,302,303,307,308]),pd=3;function HU(e){let A=String(e||"").toLowerCase();return md.includes(A)||/(^|-)(api[-_]?key|key|token|secret|auth|authorization|session|cookie|signature|access)(-|$)/.test(A)}function VU(e){let A={};for(let[t,r]of Object.entries(e||{}))HU(t)||(A[t]=r);return A}function vU(e,A){if(!e)throw new Error(`HTTP redirect from ${A} missing Location`);let t=new URL(String(e),String(A));if(t.protocol!=="http:"&&t.protocol!=="https:")throw new Error(`HTTP redirect from ${A} used unsupported protocol ${t.protocol}`);return t.toString()}function qU(e,A){return new URL(String(e)).origin===new URL(String(A)).origin}var jg=new Map;function WU(e,A,t){let r={};for(let[a,g]of Object.entries(t||{}))r[a.toLowerCase()]=g;let n=Object.keys(r).filter(a=>/(^|-)(api[-_]?key|key|token|secret|auth|authorization|session|cookie|signature|access)(-|$)/.test(a)),i=[...new Set([...md,...n])].sort().map(a=>`${a}=${r[a]??""}`).join(`
46
- `),o=xU("sha256").update(i).digest("hex").slice(0,32);return`${e} ${A} ${o}`}function PU(e,A){let t=Number(A);return Number.isFinite(t)&&t>0?Math.min(t*1e3,yd):Math.min(250*2**e,yd)+Math.floor(Math.random()*100)}var OU=e=>new Promise(A=>setTimeout(A,e));async function zU(e,{fetchImpl:A,method:t,headers:r,body:n,timeoutMs:s,lookupFn:i,realFetch:o}){let a=new AbortController,g=setTimeout(()=>a.abort(),s),l=null,c=A;try{let Q=String(e),B={...r||{}};for(let E=0;E<=pd;E+=1){let u=await c(Q,{method:t,headers:B,body:n,signal:a.signal,redirect:"manual"}),h=await u.text(),I=null;if(h)try{I=JSON.parse(h)}catch{I=null}if(JU.has(u.status)){if(t!=="GET"&&t!=="HEAD"){let f=new Error(`HTTP ${u.status} ${t} ${Q} redirected non-idempotent request`);throw f.status=u.status,f.body=I??h.slice(0,300),f}if(E===pd)throw new Error(`HTTP redirect loop for ${e}`);let C=vU(u.headers?.get?.("location"),Q);if(!qU(C,Q)){let f=await fd(C,i?{lookupFn:i}:{});if(!f.ok){let R=new Error(`HTTP redirect from ${Q} ${f.error}`);throw R.status=u.status,R}B=VU(B),o&&f.addresses?.length&&(l||(l=await dd()),l&&(l.pin(new URL(C).hostname,f.addresses[0].address,f.addresses[0].family),c=l.fetch))}Q=C;continue}if(!u.ok){let C=new Error(`HTTP ${u.status} ${t} ${Q}`);throw C.status=u.status,C.retryAfter=u.headers?.get?.("retry-after")??null,C.body=I??h.slice(0,300),C}return I??h}throw new Error(`HTTP redirect loop for ${e}`)}finally{clearTimeout(g),l&&await l.close()}}async function Dd(e,A={}){let t=A.fetchImpl||globalThis.fetch;if(typeof t!="function")throw new Error("fetch unavailable \u2014 pass opts.fetchImpl");let r=A.timeoutMs??12e3,n=(A.method||"GET").toUpperCase(),s={Accept:"application/json",...A.headers||{}},i=A.body;i!=null&&typeof i!="string"&&(s["Content-Type"]=s["Content-Type"]||"application/json",i=JSON.stringify(i));let o=Number.isInteger(A.retries)?Math.max(A.retries,0):GU,a=A.lookupFn,g=!A.fetchImpl,l=async()=>{let u;for(let h=0;h<=o;h++)try{return await zU(e,{fetchImpl:t,method:n,headers:s,body:i,timeoutMs:r,lookupFn:a,realFetch:g})}catch(I){u=I;let C=I?.status,D=I?.name==="AbortError",f=new Set([408,425,429]),R=C!=null?f.has(C)||YU.has(C)&&wd.has(n):!D&&wd.has(n);if(h===o||!R)throw I;await OU(PU(h,I?.retryAfter))}throw u};if(!(A.dedupe!==!1&&n==="GET"&&i==null))return l();let Q=WU(n,e,s),B=jg.get(Q);if(B)return B;let E=l().finally(()=>jg.delete(Q));return jg.set(Q,E),E}var ZU="https://api.hyperliquid.xyz/info",_U="https://api.hyperliquid-testnet.xyz/info";function KU({testnet:e,baseUrl:A}={}){if(A)return A.replace(/\/$/,"").endsWith("/info")?A:`${A.replace(/\/$/,"")}/info`;if(process.env.HL_INFO_URL)return process.env.HL_INFO_URL;if(process.env.HL_API_URL){let t=process.env.HL_API_URL.replace(/\/$/,"");return t.endsWith("/info")?t:`${t}/info`}return e||process.env.HL_TESTNET==="1"?_U:ZU}async function $g(e,A={}){if(!e||!e.type)throw new Error("hlInfo requires body.type");let t=KU(A);return Dd(t,{method:"POST",body:e,fetchImpl:A.fetchImpl,timeoutMs:A.timeoutMs})}async function kd(e={}){return $g({type:"meta"},e)}async function bd({coin:e,interval:A="1h",startTime:t,endTime:r},n={}){if(!e)throw new Error("hlCandleSnapshot requires coin");let s={type:"candleSnapshot",req:{coin:String(e),interval:A,startTime:t??Date.now()-24*3600*1e3,endTime:r??Date.now()}};return $g(s,n)}async function Fd({coin:e,startTime:A,endTime:t},r={}){if(!e)throw new Error("hlFundingHistory requires coin");return $g({type:"fundingHistory",coin:String(e),startTime:A??Date.now()-24*3600*1e3,endTime:t??Date.now()},r)}function rs(e){if(!Array.isArray(e))throw new TypeError("values must be an array");for(let A=0;A<e.length;A++){let t=e[A];if(typeof t!="number"||!Number.isFinite(t))throw new TypeError(`values[${A}] must be a finite number`)}}function ut(e){if(!Number.isInteger(e)||e<=0)throw new TypeError("period must be a positive integer")}function XU(e){if(!Array.isArray(e))throw new TypeError("bars must be an array");for(let A=0;A<e.length;A++){let t=e[A];if(t==null||typeof t!="object")throw new TypeError(`bars[${A}] must be an object`);for(let r of["o","h","l","c"]){let n=t[r];if(typeof n!="number"||!Number.isFinite(n))throw new TypeError(`bars[${A}].${r} must be a finite number`)}if(t.h<t.l)throw new TypeError(`bars[${A}] high must be >= low`)}}function el(e,A){rs(e),ut(A);let t=new Array(e.length).fill(null);if(e.length<A)return t;let r=0;for(let n=0;n<e.length;n++)r+=e[n],n>=A&&(r-=e[n-A]),n>=A-1&&(t[n]=r/A);return t}function ts(e,A){rs(e),ut(A);let t=new Array(e.length).fill(null);if(e.length<A)return t;let r=0;for(let i=0;i<A;i++)r+=e[i];let n=r/A;t[A-1]=n;let s=2/(A+1);for(let i=A;i<e.length;i++)n=s*e[i]+(1-s)*n,t[i]=n;return t}function Al(e,A){rs(e),ut(A);let t=new Array(e.length).fill(null);if(e.length<=A)return t;let r=0,n=0;for(let o=1;o<=A;o++){let a=e[o]-e[o-1];a>=0?r+=a:n-=a}let s=r/A,i=n/A;t[A]=Rd(s,i);for(let o=A+1;o<e.length;o++){let a=e[o]-e[o-1],g=a>0?a:0,l=a<0?-a:0;s=(s*(A-1)+g)/A,i=(i*(A-1)+l)/A,t[o]=Rd(s,i)}return t}function Rd(e,A){return e===0&&A===0?50:A===0?100:e===0?0:100-100/(1+e/A)}function tl(e,A={}){rs(e);let t=A.fastPeriod,r=A.slowPeriod,n=A.signalPeriod;if(ut(t),ut(r),ut(n),t>=r)throw new TypeError("fastPeriod must be < slowPeriod");let s=ts(e,t),i=ts(e,r),o=new Array(e.length).fill(null);for(let c=0;c<e.length;c++)s[c]!=null&&i[c]!=null&&(o[c]=s[c]-i[c]);let a=new Array(e.length).fill(null),g=new Array(e.length).fill(null),l=[];for(let c=0;c<o.length;c++)o[c]!=null&&l.push(c);if(l.length>=n){let c=0;for(let u=0;u<n;u++)c+=o[l[u]];let Q=c/n,B=l[n-1];a[B]=Q,g[B]=o[B]-Q;let E=2/(n+1);for(let u=n;u<l.length;u++){let h=l[u];Q=E*o[h]+(1-E)*Q,a[h]=Q,g[h]=o[h]-Q}}return{line:o,signal:a,histogram:g}}function rl(e,A={}){rs(e);let t=A.period,r=A.stdDev;if(ut(t),typeof r!="number"||!Number.isFinite(r)||r<=0)throw new TypeError("stdDev must be a finite number > 0");let n=new Array(e.length).fill(null),s=new Array(e.length).fill(null),i=new Array(e.length).fill(null);if(e.length<t)return{upper:s,middle:n,lower:i};let o=0,a=0;for(let g=0;g<e.length;g++){let l=e[g];if(o+=l,a+=l*l,g>=t){let c=e[g-t];o-=c,a-=c*c}if(g>=t-1){let c=o/t,Q=a/t-c*c;Q<0&&Q>-1e-12&&(Q=0);let B=Math.sqrt(Q);n[g]=c,s[g]=c+r*B,i[g]=c-r*B}}return{upper:s,middle:n,lower:i}}function nl(e,A){XU(e),ut(A);let t=new Array(e.length).fill(null);if(e.length<A)return t;let r=new Array(e.length);for(let i=0;i<e.length;i++){let o=e[i];if(i===0)r[i]=o.h-o.l;else{let a=e[i-1].c;r[i]=Math.max(o.h-o.l,Math.abs(o.h-a),Math.abs(o.l-a))}}let n=0;for(let i=0;i<A;i++)n+=r[i];let s=n/A;t[A-1]=s;for(let i=A;i<e.length;i++)s=(s*(A-1)+r[i])/A,t[i]=s;return t}import{createHash as jU}from"node:crypto";var sl=2,$U="93f9c998260e73756c13871dc1a84dd6cdb26ec6113bd1941f023519939db440",eL="68f5b412a9975f04024cf9b9b6209b4bccedd52f176e95f34f786b3f53479c6a",AL="f197a38ff1c0f4ebe13326db8cbb8167ea3dd5d62e6033fe97c2fee8d23d96b5",Sd=jU("sha256").update(JSON.stringify({version:sl,compilerSourceHash:$U,indicatorsSourceHash:eL,schemaSourceHash:AL})).digest("hex");var Or=sl,It=Sd,tL=Object.freeze({open:"o",high:"h",low:"l",close:"c",volume:"v",fundingRate:"fundingRate",openInterest:"openInterest"}),rL=Object.freeze({"1m":6e4,"3m":18e4,"5m":3e5,"15m":9e5,"30m":18e5,"1h":36e5,"2h":72e5,"4h":144e5,"8h":288e5,"12h":432e5,"1d":864e5});function CA(e){return typeof e=="number"&&Number.isFinite(e)}function nL(e){let A=new Map(e.map(o=>[o.id,o])),t=o=>{switch(o.type){case"indicator":return o.input?[o.input]:[];case"compare":case"cross":return[o.left,o.right];case"logic":return[...o.inputs];default:return[]}},r=new Map,n=new Map;for(let o of e)r.set(o.id,0),n.set(o.id,[]);for(let o of e)for(let a of t(o))A.has(a)&&(n.get(a).push(o.id),r.set(o.id,r.get(o.id)+1));let s=[];for(let[o,a]of r)a===0&&s.push(o);let i=[];for(;s.length;){let o=s.shift();i.push(o);for(let a of n.get(o))r.set(a,r.get(a)-1),r.get(a)===0&&s.push(a)}if(i.length!==e.length)throw new Error("strategy graph is cyclic");return i}function Pr(e,A){return e!=null&&typeof e=="object"&&"param"in e?A[e.param].value:e}function sL(e,A,t){if(!Array.isArray(e)||e.length===0)throw new TypeError("bars must be a non-empty array");if(!Number.isInteger(A)||A<0||A>=e.length)throw new RangeError("index out of range");let r=null;for(let n=0;n<=A;n++){let s=e[n];if(s==null||typeof s!="object"||Array.isArray(s))throw new TypeError(`bars[${n}] must be an object`);let{t:i,o,h:a,l:g,c:l,v:c}=s;if(!CA(i)&&(typeof i=="number"&&Number.isFinite(i)),!Number.isFinite(i))throw new TypeError(`bars[${n}].t must be finite`);for(let[Q,B]of[["o",o],["h",a],["l",g],["c",l],["v",c]])if(!CA(B))throw new TypeError(`bars[${n}].${Q} must be a finite number`);for(let[Q,B]of[["o",o],["h",a],["l",g],["c",l]])if(!(B>0))throw new TypeError(`bars[${n}].${Q} price must be positive`);if(c<0)throw new TypeError(`bars[${n}].v volume must be non-negative`);if(a<Math.max(o,l,g))throw new TypeError(`bars[${n}] high must be >= max(open, close, low)`);if(g>Math.min(o,l,a))throw new TypeError(`bars[${n}] low must be <= min(open, close, high)`);if(r!=null){if(!(i>r))throw new TypeError("bars t must be strictly increasing");if(i-r!==rL[t])throw new TypeError(`bars t must match ${t} cadence`)}if(r=i,"fundingRate"in s&&s.fundingRate!=null&&!CA(s.fundingRate))throw new TypeError(`bars[${n}].fundingRate must be finite when present`);if("openInterest"in s&&s.openInterest!=null){if(!CA(s.openInterest))throw new TypeError(`bars[${n}].openInterest must be finite when present`);if(s.openInterest<0)throw new TypeError(`bars[${n}].openInterest must be non-negative`)}}}function Wt(e,A,t,r,n,s){if(s.has(e))return s.get(e);let i=A.get(e),o;switch(i.type){case"input":{let a=tL[i.field];o=new Array(n+1);for(let g=0;g<=n;g++){let l=r[g][a];o[g]=l===void 0?null:l}break}case"constant":{let a=Pr(i.value,t);o=new Array(n+1).fill(a);break}case"indicator":{let a=i.period!=null?Pr(i.period,t):void 0;if(i.indicator==="atr"){let c=[];for(let Q=0;Q<=n;Q++){let B=r[Q];c.push({o:B.o,h:B.h,l:B.l,c:B.c})}o=nl(c,a);break}let l=Wt(i.input,A,t,r,n,s).map((c,Q)=>{if(c==null||!CA(c))throw new TypeError(`indicator input ${i.input} has non-finite value at ${Q}`);return c});if(i.indicator==="sma")o=el(l,a);else if(i.indicator==="ema")o=ts(l,a);else if(i.indicator==="rsi")o=Al(l,a);else if(i.indicator==="macd")o=tl(l,{fastPeriod:Pr(i.fastPeriod,t),slowPeriod:Pr(i.slowPeriod,t),signalPeriod:Pr(i.signalPeriod,t)})[i.output];else if(i.indicator==="bollinger")o=rl(l,{period:a,stdDev:Pr(i.stdDev,t)})[i.output];else throw new Error(`unsupported indicator ${i.indicator}`);break}case"compare":{let a=Wt(i.left,A,t,r,n,s),g=Wt(i.right,A,t,r,n,s);o=new Array(n+1);for(let l=0;l<=n;l++){let c=a[l],Q=g[l];if(c==null||Q==null||!CA(c)||!CA(Q)){o[l]=!1;continue}switch(i.op){case"gt":o[l]=c>Q;break;case"gte":o[l]=c>=Q;break;case"lt":o[l]=c<Q;break;case"lte":o[l]=c<=Q;break;case"eq":o[l]=c===Q;break;default:o[l]=!1}}break}case"logic":{let a=i.inputs.map(g=>Wt(g,A,t,r,n,s));o=new Array(n+1);for(let g=0;g<=n;g++)if(i.op==="not"){let l=a[0][g];o[g]=l===!0?!1:l===!1}else if(i.op==="and"){let l=!0;for(let c of a)if(c[g]!==!0){l=!1;break}o[g]=l}else if(i.op==="or"){let l=!1;for(let c of a)if(c[g]===!0){l=!0;break}o[g]=l}else o[g]=!1;break}case"cross":{let a=Wt(i.left,A,t,r,n,s),g=Wt(i.right,A,t,r,n,s);o=new Array(n+1),o[0]=!1;for(let l=1;l<=n;l++){let c=a[l-1],Q=g[l-1],B=a[l],E=g[l];if(c==null||Q==null||B==null||E==null||!CA(c)||!CA(Q)||!CA(B)||!CA(E)){o[l]=!1;continue}i.direction==="above"?o[l]=c<=Q&&B>E:o[l]=c>=Q&&B<E}break}default:throw new Error(`unknown node type ${i.type}`)}return s.set(e,o),o}function Ue(e,A={}){let t=Le(e);A&&Object.keys(A).length&&(t=zr(t,A));let r=new Map(t.nodes.map(B=>[B.id,B])),n=Object.freeze(nL(t.nodes)),s=t.parameters,i=new Set(t.nodes.filter(B=>B.type==="input").map(B=>B.field));if(t.nodes.some(B=>B.type==="indicator"&&B.indicator==="atr"))for(let B of["open","high","low","close"])i.add(B);let o=Object.freeze([...i].sort()),a=Pt(t);function g(B,E){let u={};for(let I of n){let C=B.get(I);u[I]=C[E]}let h=I=>I!=null&&u[I]===!0;return{values:u,signals:{entryLong:h(t.rules.entryLong),entryShort:h(t.rules.entryShort),exitLong:h(t.rules.exitLong),exitShort:h(t.rules.exitShort)}}}function l(B,E){sL(B,E,t.market.interval);let u=new Map;for(let h of n)Wt(h,r,s,B,E,u);return u}function c(B,E){return g(l(B,E),E)}function Q(B){if(!Array.isArray(B)||B.length===0)throw new TypeError("bars must be a non-empty array");let E=B.length-1,u=l(B,E);return Object.freeze(B.map((h,I)=>Object.freeze(g(u,I))))}return Object.freeze({strategy:t,strategyHash:a,compilerVersion:Or,compilerHash:It,requiredSeries:o,nodeOrder:n,evaluate:c,evaluateAll:Q})}import{createHash as wL}from"node:crypto";import{createHash as iL}from"node:crypto";var oL=Object.freeze({initialEquityUsd:1e4,takerFeeBps:3.5,builderFeeBps:2,slippageBps:2,latencyBars:1,maxVolumeParticipationPct:100});function aL(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function MA(e){return typeof e=="number"&&Number.isFinite(e)}function il(e){if(e==null||typeof e!="object"||Object.isFrozen(e))return e;if(Array.isArray(e)){for(let A of e)il(A);return Object.freeze(e)}for(let A of Object.keys(e))il(e[A]);return Object.freeze(e)}function ao(e){if(Array.isArray(e))return e.map(ao);if(e!=null&&typeof e=="object"){let A={};for(let t of Object.keys(e).sort())A[t]=ao(e[t]);return A}return e}function ol(e,A="result"){if(typeof e=="number"){if(!Number.isFinite(e))throw new Error(`non-finite backtest result at ${A}`);return}if(!(e==null||typeof e!="object")){if(Array.isArray(e)){e.forEach((t,r)=>ol(t,`${A}[${r}]`));return}for(let[t,r]of Object.entries(e))ol(r,`${A}.${t}`)}}function Md(e){if(!Array.isArray(e)||e.length===0)throw new TypeError("bars must be a non-empty array");let A=null;for(let t=0;t<e.length;t++){let r=e[t];if(r==null||typeof r!="object"||Array.isArray(r))throw new TypeError(`bars[${t}] must be an object`);let{t:n,o:s,h:i,l:o,c:a,v:g}=r;if(!MA(n))throw new TypeError(`bars[${t}].t must be finite`);for(let[l,c]of[["o",s],["h",i],["l",o],["c",a],["v",g]])if(!MA(c))throw new TypeError(`bars[${t}].${l} must be a finite number`);for(let[l,c]of[["o",s],["h",i],["l",o],["c",a]])if(!(c>0))throw new TypeError(`bars[${t}].${l} price must be positive`);if(g<0)throw new TypeError(`bars[${t}].v volume must be non-negative`);if(i<Math.max(s,a,o))throw new TypeError(`bars[${t}] high must be >= max(open, close, low)`);if(o>Math.min(s,a,i))throw new TypeError(`bars[${t}] low must be <= min(open, close, high)`);if(A!=null&&!(n>A))throw new TypeError("bars t must be strictly increasing");if(A=n,"fundingRate"in r&&r.fundingRate!=null&&!MA(r.fundingRate))throw new TypeError(`bars[${t}].fundingRate must be finite when present`);if("fundingPaymentRate"in r&&r.fundingPaymentRate!=null&&!MA(r.fundingPaymentRate))throw new TypeError(`bars[${t}].fundingPaymentRate must be finite when present`);if("openInterest"in r&&r.openInterest!=null&&!MA(r.openInterest))throw new TypeError(`bars[${t}].openInterest must be finite when present`)}}function ns(e){if(!Array.isArray(e))throw new TypeError("bars must be an array");return e.length>0&&Md(e),iL("sha256").update(JSON.stringify(ao(e)),"utf8").digest("hex")}function cL(e){if(e==null&&(e={}),!aL(e))throw new TypeError("options must be a plain object");let A={...oL},t=new Set(["initialEquityUsd","takerFeeBps","builderFeeBps","slippageBps","latencyBars","maxVolumeParticipationPct","nowMs"]);for(let r of Object.keys(e))if(!t.has(r))throw new TypeError(`unknown option "${r}"`);if("initialEquityUsd"in e){if(!MA(e.initialEquityUsd)||e.initialEquityUsd<=0)throw new TypeError("initialEquityUsd must be a positive finite number");A.initialEquityUsd=e.initialEquityUsd}for(let r of["takerFeeBps","builderFeeBps","slippageBps"])if(r in e){let n=e[r];if(!MA(n)||n<0)throw new TypeError(`${r} must be a finite number >= 0`);if(r==="slippageBps"?n>=1e4:n>1e4)throw new TypeError(`${r} exceeds its safe basis-point bound`);A[r]=n}if("latencyBars"in e){let r=e.latencyBars;if(!Number.isInteger(r)||r<1)throw new TypeError("latencyBars must be an integer >= 1");A.latencyBars=r}if("maxVolumeParticipationPct"in e){let r=e.maxVolumeParticipationPct;if(!MA(r)||r<=0||r>100)throw new TypeError("maxVolumeParticipationPct must be in (0,100]");A.maxVolumeParticipationPct=r}if("nowMs"in e){if(!Number.isInteger(e.nowMs))throw new TypeError("nowMs must be an integer epoch milliseconds");A.nowMs=e.nowMs}return A}function co(e){return e/1e4}function gL(e,A,t){let r=co(t);return A==="long"?e*(1+r):e*(1-r)}function lL(e,A,t){let r=co(t);return A==="long"?e*(1-r):e*(1+r)}function Nd(e,A,t){let r=Math.abs(e)*co(A),n=Math.abs(e)*co(t);return{taker:r,builder:n,total:r+n}}function QL(e,A){let t=e*(A.positionSizePct/100)*A.maxLeverage;return Math.min(t,A.maxNotionalUsd)}function EL(e,A,t){let r=t/100;return A==="long"?e*(1-r):e*(1+r)}function BL(e,A,t){let r=t/100;return A==="long"?e*(1+r):e*(1-r)}function uL(e,A,t,r){if(!(t>0))return A==="long"?0:Number.POSITIVE_INFINITY;let n=Math.min(.99,1/(2*t)+r/1e4);return A==="long"?e*(1-1/t)/(1-n):e*(1+1/t)/(1+n)}function IL(e,A,t){return A==="long"?e.l<=t:e.h>=t}function hL(e,A,t){return A==="long"?e.h>=t:e.l<=t}function CL(e,A,t){return A==="long"?e.l<=t:e.h>=t}function ss(e,A){for(let t of e.requiredSeries)if(["fundingRate","openInterest"].includes(t)&&!A.every(r=>MA(r?.[t])))throw new Error(`strategy required series is absent: ${t}`)}function fL(e){if(e.length<3)return 0;let A=[];for(let i=1;i<e.length;i++){let o=e[i-1].equity,a=e[i].equity;o>0&&A.push((a-o)/o)}if(A.length<2)return 0;let t=0;for(let i of A)t+=i;let r=t/A.length,n=0;for(let i of A)n+=(i-r)**2;let s=Math.sqrt(n/(A.length-1));return s>0?r/s:0}function dL(e){let A=-1/0,t=0;for(let r of e){let n=r.equity;if(n>A&&(A=n),A>0){let s=(A-n)/A*100;s>t&&(t=s)}}return t}function KA(e,A,t={}){let r=cL(t);Md(A);let n=ns(A);r.nowMs!==void 0&&Le(e,{nowMs:r.nowMs});let s=Ue(e);if(ss(s,A),r.nowMs!==void 0&&s.strategy.risk.expiresAt<=r.nowMs)throw new Error("strategy is expired: risk.expiresAt must be strictly greater than nowMs");let i=s.strategy.risk,o=s.evaluateAll(A),a=r.latencyBars,g=r.slippageBps,l=r.takerFeeBps,c=r.builderFeeBps,Q=r.initialEquityUsd,B=0,E=0,u=0,h=0,I=0,C=[],D=[],f=[],R=[],S=[],d=null,se=0,De=null,Te=Q,me=!1,w=0,H=0,q=[],ee=new Array(A.length).fill(0);function j(F){q.push(F)}function _(F){let O=A[F].v*(r.maxVolumeParticipationPct/100);return Math.max(0,O-ee[F])}function te(F){if(!d)return Q;let O=d.side==="long"?(F-d.entryPrice)*d.qty:(d.entryPrice-F)*d.qty;return Q+O}function Re(F,O,x){let ge=x.o,K=QL(Q,i);if(!(K>0)||!(ge>0))return;let le=gL(ge,O,g),ie=K/le,de=_(F),$r=le*de;if(ie>de){f.push({kind:"entry",barIndex:F,time:x.t,side:O,requestedNotionalUsd:K,maxFillNotionalUsd:$r,reason:"volume_participation"});return}ee[F]+=ie;let wA=Math.abs(le-ge)*ie,TA=Nd(K,l,c);Q-=TA.total,B+=TA.taker,E+=TA.builder,h+=wA,I+=K,d={lifecycleEpoch:++H,side:O,entryBarIndex:F,entryReferencePrice:ge,entryPrice:le,qty:ie,notionalUsd:K,stop:EL(le,O,i.stopLossPct),take:BL(le,O,i.takeProfitPct),liq:uL(le,O,i.maxLeverage,l+c),entryFees:TA.taker,entryBuilderFees:TA.builder,entrySlippageUsd:wA,fundingAccrued:0}}function fe(F,O,x,ge){if(!d)return!1;let K=d.side,le=O,ie=le;x!=="liquidation"&&ge&&(ie=lL(le,K,g));let de=d.qty,$r=de*ie;if(x!=="liquidation"){let ql=_(F),fw=ie*ql;if(de>ql)return f.push({kind:"exit",barIndex:F,time:A[F].t,side:K,requestedNotionalUsd:$r,maxFillNotionalUsd:fw,reason:"volume_participation",triggerReason:x}),!1;ee[F]+=de}let wA=Nd($r,l,c),TA=x==="liquidation"?0:Math.abs(ie-le)*de,en,Do;K==="long"?(en=(le-d.entryReferencePrice)*de,Do=(ie-d.entryPrice)*de):(en=(d.entryReferencePrice-le)*de,Do=(d.entryPrice-ie)*de),Q+=Do,Q-=wA.total,B+=wA.taker,E+=wA.builder,h+=TA,I+=$r;let Cw={side:K,entryBarIndex:d.entryBarIndex,entryTime:A[d.entryBarIndex].t,entryPrice:d.entryPrice,exitBarIndex:F,exitTime:A[F].t,exitPrice:ie,exitReason:x,qty:de,notionalUsd:d.notionalUsd,grossPnlUsd:en,feesUsd:d.entryFees+wA.taker,builderFeesUsd:d.entryBuilderFees+wA.builder,fundingUsd:d.fundingAccrued,slippageUsd:d.entrySlippageUsd+TA,netPnlUsd:en-(d.entryFees+wA.taker+d.entryBuilderFees+wA.builder)-d.fundingAccrued-(d.entrySlippageUsd+TA)};return C.push(Cw),x==="liquidation"&&D.push({barIndex:F,time:A[F].t,side:K,price:ie,tradeIndex:C.length-1}),d=null,H+=1,w=F+1+(i.cooldownBars||0),!0}function dA(F,O,x,ge){let K=F+1;if(K>=A.length)return;q.some(ie=>ie.kind==="exit"&&ie.side===O&&ie.fillBar===K&&ie.epoch===ge)||j({kind:"exit",side:O,signalBar:F,fillBar:K,reason:x,epoch:ge})}function gs(F){let O=q.filter(x=>x.fillBar===F);for(let x=q.length-1;x>=0;x--)q[x].fillBar===F&&q.splice(x,1);O.sort((x,ge)=>{let K=le=>le.kind==="exit"?0:1;return K(x)-K(ge)});for(let x of O)if(x.kind==="exit"){if(!d||d.side!==x.side||d.lifecycleEpoch!==x.epoch)continue;let ge=x.reason||"rule";fe(F,A[F].o,ge,!0)||dA(F,x.side,ge,x.epoch)}else if(x.kind==="entry"){if(d||x.epoch!==H||F<w)continue;Re(F,x.side,A[F])}}function ls(F){if(!d)return;let O=A[F],x=O.fundingPaymentRate;if(x==null||!MA(x)||x===0)return;let ge=Math.abs(d.qty*O.c),K=x*ge;d.side==="long"?(Q-=K,d.fundingAccrued+=K,u+=K):(Q+=K,d.fundingAccrued-=K,u-=K)}function Qs(F){if(!d)return;let O=A[F].o;(d.side==="long"?O<=d.liq:O>=d.liq)&&fe(F,O,"liquidation",!1)}function Gl(F){if(!d)return;let O=A[F],x=d.side,ge=CL(O,x,d.liq),K=IL(O,x,d.stop),le=hL(O,x,d.take),ie=de=>x==="long"?Math.min(de,O.o):Math.max(de,O.o);if(ge){fe(F,ie(d.liq),"liquidation",!1);return}if(K&&le){fe(F,ie(d.stop),"stop_loss",!0)||dA(F,x,"stop_loss",d.lifecycleEpoch);return}if(K){fe(F,ie(d.stop),"stop_loss",!0)||dA(F,x,"stop_loss",d.lifecycleEpoch);return}le&&(fe(F,d.take,"take_profit",!0)||dA(F,x,"take_profit",d.lifecycleEpoch))}for(let F=0;F<A.length;F++){let O=Math.floor(A[F].t/864e5);O!==De&&(De=O,Te=te(A[F].o),me=!1),Qs(F),gs(F),Gl(F),ls(F),!me&&te(A[F].c)<=Te*(1-i.maxDailyLossPct/100)&&(me=!0,R.push({type:"daily_loss_limit",barIndex:F,time:A[F].t,message:"daily loss limit reached; new entries blocked for UTC day"}));let x=o[F].signals,ge=F+a;if(d)(d.side==="long"&&x.exitLong===!0||d.side==="short"&&x.exitShort===!0)&&ge<A.length&&(q.some(de=>de.kind==="exit"&&de.side===d.side&&de.fillBar===ge&&de.epoch===d.lifecycleEpoch)||j({kind:"exit",side:d.side,signalBar:F,fillBar:ge,reason:"rule",epoch:d.lifecycleEpoch}));else{let le=x.entryLong===!0,ie=x.entryShort===!0;le&&ie?R.push({type:"conflicting_entry_signals",barIndex:F,time:A[F].t,message:"conflicting entry signals; no position opened"}):!me&&(le||ie)&&ge<A.length&&F>=w&&j({kind:"entry",side:le?"long":"short",signalBar:F,fillBar:ge,epoch:H})}let K=Q;d&&(se+=1,K=te(A[F].c)),S.push({barIndex:F,time:A[F].t,equity:K,positionSide:d?d.side:null})}let Jl=null;if(d){let F=A.length-1;if(fe(F,A[F].c,"end_of_data",!0))S[F]={barIndex:F,time:A[F].t,equity:Q,positionSide:null};else{let x=te(A[F].c);Jl={side:d.side,entryBarIndex:d.entryBarIndex,entryTime:A[d.entryBarIndex].t,entryPrice:d.entryPrice,qty:d.qty,notionalUsd:d.notionalUsd,markPrice:A[F].c,markedEquityUsd:x},R.push({type:"open_position_at_end",barIndex:F,time:A[F].t,message:"end-of-data exit missed; position remains open and marked"})}}let Hl=(d?te(A[A.length-1].c):Q)-r.initialEquityUsd,Bw=Hl/r.initialEquityUsd*100,Vl=0,wo=0,yo=0;for(let F of C)F.netPnlUsd>0?(Vl+=1,wo+=F.netPnlUsd):F.netPnlUsd<0&&(yo+=-F.netPnlUsd);let po=C.length,uw=po===0?0:Vl/po,mo=0;yo>0?mo=wo/yo:wo>0&&(mo=1e12);let Iw={netPnlUsd:Hl,netPnlPct:Bw,maxDrawdownPct:dL(S),winRate:uw,profitFactor:mo,tradeCount:po,sharpe:fL(S),turnoverUsd:I,exposurePct:se/A.length*100},hw={initialEquityUsd:r.initialEquityUsd,takerFeeBps:r.takerFeeBps,builderFeeBps:r.builderFeeBps,slippageBps:r.slippageBps,latencyBars:r.latencyBars,maxVolumeParticipationPct:r.maxVolumeParticipationPct},vl={barsHash:n,strategyHash:s.strategyHash,compilerHash:It,compilerVersion:Or,config:hw,trades:C,equityCurve:S,metrics:Iw,costs:{feesUsd:B,builderFeesUsd:E,fundingUsd:u,slippageUsd:h},liquidations:D,missedFills:f,openPositionAtEnd:Jl,flags:R};return ol(vl),il(ao(vl))}var Td=Object.freeze(["fail","pass_paper_only","pass_live_eligible"]);function UA(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function Zr(e){return typeof e=="number"&&Number.isFinite(e)}function gl(e){if(e==null||typeof e!="object"||Object.isFrozen(e))return e;if(Array.isArray(e)){for(let A of e)gl(A);return Object.freeze(e)}for(let A of Object.keys(e))gl(e[A]);return Object.freeze(e)}function Ot(e){if(Array.isArray(e))return e.map(Ot);if(e!=null&&typeof e=="object"){let A={};for(let t of Object.keys(e).sort())A[t]=Ot(e[t]);return A}return e}function al(e){return{netPnlUsd:e.metrics.netPnlUsd,netPnlPct:e.metrics.netPnlPct,maxDrawdownPct:e.metrics.maxDrawdownPct,winRate:e.metrics.winRate,profitFactor:e.metrics.profitFactor,tradeCount:e.metrics.tradeCount,sharpe:e.metrics.sharpe,turnoverUsd:e.metrics.turnoverUsd,exposurePct:e.metrics.exposurePct}}function Ud(e){return{feesUsd:e.costs.feesUsd,builderFeesUsd:e.costs.builderFeesUsd,fundingUsd:e.costs.fundingUsd,slippageUsd:e.costs.slippageUsd}}function yL(e){return(e.feesUsd||0)+(e.builderFeesUsd||0)+Math.max(0,e.fundingUsd||0)+(e.slippageUsd||0)}function pL(e){let A=0;for(let t of e.trades)t.grossPnlUsd>0&&(A+=t.grossPnlUsd);return A}function mL(e,A,t){return!(!e||e.tradeCount<Math.max(1,Math.min(t,3))||!(e.netPnlUsd>0)||!(e.profitFactor>1)||!(e.maxDrawdownPct<=A.maxDailyLossPct))}function xd(e){if(!UA(e))throw new TypeError("evidence artifact must be a plain object");if(!Td.includes(e.status))throw new TypeError("evidence artifact status is invalid");for(let A of["strategyHash","compilerHash","barsHash"])if(typeof e[A]!="string"||!/^[0-9a-f]{64}$/.test(e[A]))throw new TypeError(`evidence artifact ${A} must be a sha256 hash`);if(!UA(e.split))throw new TypeError("evidence artifact split required");if(!Array.isArray(e.flags))throw new TypeError("evidence artifact flags must be an array");if(!UA(e.walkForward)||!Array.isArray(e.walkForward.windows))throw new TypeError("evidence artifact walkForward windows required");if(e.status==="pass_live_eligible"&&(!UA(e.train)||!UA(e.holdout)))throw new TypeError("live-eligible evidence artifact requires train and holdout facts");return Ot({barsHash:e.barsHash,compilerHash:e.compilerHash,flags:e.flags.map(A=>Ot(A)),holdout:e.holdout??null,split:e.split,status:e.status,strategyHash:e.strategyHash,train:e.train??null,walkForward:{passRate:e.walkForward.passRate,windowsRun:e.walkForward.windowsRun??e.walkForward.windows.length,windows:e.walkForward.windows.map(A=>({index:A.index,trainStartIndex:A.trainStartIndex,trainEndIndex:A.trainEndIndex,passed:A.passed,reason:A.reason,evalStartIndex:A.evalStartIndex,evalEndIndex:A.evalEndIndex,metrics:A.metrics}))}})}function ll(e){return wL("sha256").update(JSON.stringify(xd(e)),"utf8").digest("hex")}function fA(e,A,t=0){if(!Number.isInteger(e)||e<t)throw new Error(`${A} must be an integer >= ${t}`);return e}function cl(e,A){if(!UA(e)||!UA(e.metrics))throw new Error(`${A} metrics required`);let t=fA(e.tradeCount,`${A}.tradeCount`);if(e.metrics.tradeCount!==t)throw new Error(`${A} tradeCount contradicts metrics.tradeCount`);for(let r of["netPnlUsd","profitFactor","maxDrawdownPct"])if(!Zr(e.metrics[r]))throw new Error(`${A}.metrics.${r} must be finite`);if(e.metrics.maxDrawdownPct<0)throw new Error(`${A}.metrics.maxDrawdownPct must be >= 0`);return e.metrics}function DL(e,{maxDailyLossPct:A}={}){let t=e.split,r=fA(t.trainStartIndex,"split.trainStartIndex"),n=fA(t.trainEndIndex,"split.trainEndIndex"),s=fA(t.trainBarCount,"split.trainBarCount",1),i=fA(t.holdoutStartIndex,"split.holdoutStartIndex"),o=fA(t.holdoutEndIndex,"split.holdoutEndIndex"),a=fA(t.holdoutBarCount,"split.holdoutBarCount",1);if(r!==0||n-r+1!==s||i!==n+1||o-i+1!==a)throw new Error("evidence split must be contiguous, chronological, and count-consistent");if(!Zr(t.trainFraction)||t.trainFraction<=0||t.trainFraction>=1)throw new Error("split.trainFraction must be in (0,1)");cl(e.train,"train");let g=cl(e.holdout,"holdout");if(g.tradeCount<1||g.netPnlUsd<=0||g.profitFactor<=1)throw new Error("live-eligible holdout metrics do not pass");if(Zr(A)&&g.maxDrawdownPct>A)throw new Error("live-eligible holdout drawdown exceeds strategy risk");if(e.flags.length>0)throw new Error("live-eligible evidence cannot contain failure flags");let l=e.walkForward,c=l.windows;if(c.length<1||l.windowsRun!==c.length)throw new Error("live-eligible walk-forward windowsRun must match nonempty windows");let Q=0,B=-1;for(let u=0;u<c.length;u++){let h=c[u];if(!UA(h)||h.index!==u||typeof h.passed!="boolean")throw new Error("walk-forward windows must be ordered and structurally valid");let I=fA(h.trainStartIndex,`walkForward.windows[${u}].trainStartIndex`),C=fA(h.trainEndIndex,`walkForward.windows[${u}].trainEndIndex`),D=fA(h.evalStartIndex,`walkForward.windows[${u}].evalStartIndex`),f=fA(h.evalEndIndex,`walkForward.windows[${u}].evalEndIndex`);if(I!==0||C>=D||D>f||D<=B)throw new Error("walk-forward windows must be chronological and disjoint");if(B=f,h.passed){if(Q+=1,h.reason!=="pass")throw new Error("passed walk-forward window reason must be pass");let R=cl({metrics:h.metrics,tradeCount:h.metrics?.tradeCount},`walkForward.windows[${u}]`);if(R.tradeCount<1||R.netPnlUsd<=0||R.profitFactor<=1)throw new Error("passed walk-forward window metrics do not pass");if(Zr(A)&&R.maxDrawdownPct>A)throw new Error("passed walk-forward drawdown exceeds strategy risk")}else if(h.reason==="pass")throw new Error("failed walk-forward window cannot have pass reason")}let E=Q/c.length;if(!Zr(l.passRate)||Math.abs(l.passRate-E)>Number.EPSILON||E<.6)throw new Error("walk-forward passRate contradicts concrete windows or is below live threshold")}function Ql(e,A={}){if(typeof e?.id!="string"||!/^[0-9a-f]{64}$/.test(e.id))throw new Error("evidence.id must be a sha256 evidence artifact hash");let t=xd(e),r=Ot({id:e.id,...t});if(JSON.stringify(Ot(e))!==JSON.stringify(r))throw new Error("evidence artifact contains fields unbound from its deterministic identity");let n=ll(e);if(e.id!==n)throw new Error("evidence.id does not match its deterministic artifact facts digest");return e.status==="pass_live_eligible"&&DL(e,A),e}function go({strategy:e,bars:A,backtestOptions:t={},trainFraction:r=.7,walkForwardWindows:n=3,minTrades:s=10}={}){let i=[];if(!UA(e))throw new TypeError("strategy must be a plain object");if(!Array.isArray(A))throw new TypeError("bars must be an array");if(!UA(t))throw new TypeError("backtestOptions must be a plain object");if(!Zr(r)||r<=0||r>=1)throw new TypeError("trainFraction must be in (0,1)");if(!Number.isInteger(n)||n<1)throw new TypeError("walkForwardWindows must be a positive integer");if(!Number.isInteger(s)||s<0)throw new TypeError("minTrades must be an integer >= 0");let o=Le(e),a=Pt(o),g=ns(A),l=A.length,c=(_=[],te={})=>Ld({status:"fail",strategy:o,sHash:a,barsHash:g,split:te.split||{trainStartIndex:0,trainEndIndex:-1,trainBarCount:0,holdoutStartIndex:0,holdoutEndIndex:-1,holdoutBarCount:0,trainFraction:r},train:te.train||null,holdout:te.holdout||null,walkForward:te.walkForward||{windows:[],passRate:0},flags:[...i,..._]});if(l<10)return c([{type:"insufficient_bars",message:"need at least 10 bars for evidence"}]);let Q=Math.floor(l*r),B=Q,E=l-B;if(Q<5||E<3)return c([{type:"invalid_windowing",message:"train/holdout split too small",trainCount:Q,holdoutCount:E}]);let u=A.slice(0,Q),h=A.slice(B),I,C;try{I=KA(o,u,t),C=KA(o,h,t)}catch(_){return c([{type:"backtest_error",message:String(_.message||_)}])}let D={metrics:al(I),costs:Ud(I),tradeCount:I.metrics.tradeCount},f={metrics:al(C),costs:Ud(C),tradeCount:C.metrics.tradeCount},R={trainStartIndex:0,trainEndIndex:Q-1,trainBarCount:Q,holdoutStartIndex:B,holdoutEndIndex:l-1,holdoutBarCount:E,trainFraction:r},S=[],d=Math.floor(l/(n+1));if(d<3)i.push({type:"invalid_windowing",message:"walk-forward window size too small",wfSize:d});else for(let _=0;_<n;_++){let te=d*(_+1),Re=te,fe=Math.min(l,Re+d);if(fe-Re<3||te<3){S.push({index:_,trainStartIndex:0,trainEndIndex:te-1,evalStartIndex:Re,evalEndIndex:fe-1,passed:!1,reason:"window_too_small",metrics:null});continue}let dA=A.slice(Re,fe),gs;try{gs=KA(o,dA,t)}catch{S.push({index:_,trainStartIndex:0,trainEndIndex:te-1,evalStartIndex:Re,evalEndIndex:fe-1,passed:!1,reason:"backtest_error",metrics:null});continue}let ls=al(gs),Qs=mL(ls,o.risk,s);S.push({index:_,trainStartIndex:0,trainEndIndex:te-1,evalStartIndex:Re,evalEndIndex:fe-1,passed:Qs,reason:Qs?"pass":"fail_metrics",metrics:ls})}let se=S.filter(_=>_.passed).length,De=S.length===0?0:se/S.length,Te={windows:S,passRate:De,windowsRun:S.length};f.metrics.tradeCount===0&&D.metrics.tradeCount===0&&i.push({type:"no_trades",message:"no trades in train or holdout"}),f.metrics.tradeCount===0&&i.push({type:"absent_oos_trades",message:"holdout produced no trades"}),f.metrics.netPnlUsd<0&&i.push({type:"holdout_loss",message:"holdout netPnlUsd is negative"}),D.metrics.netPnlUsd>0&&f.metrics.netPnlUsd<0&&D.metrics.netPnlUsd>Math.abs(f.metrics.netPnlUsd)*.25?i.push({type:"overfit",message:"profitable train with losing holdout (OOS collapse)"}):D.metrics.netPnlUsd>0&&f.metrics.netPnlUsd>0&&f.metrics.netPnlUsd<D.metrics.netPnlUsd*.1&&D.metrics.tradeCount>=s&&i.push({type:"severe_oos_collapse",message:"holdout pnl collapsed vs train"});let me=yL(f.costs),w=pL(C);w>0&&me>w&&i.push({type:"costs_exceed_gross",message:"holdout costs exceed gross gains"});let H=i.some(_=>["insufficient_bars","invalid_windowing","absent_oos_trades","holdout_loss","no_trades","severe_oos_collapse","backtest_error"].includes(_.type)),q=i.some(_=>_.type==="overfit"),ee="fail";return f.metrics.tradeCount>=s&&f.metrics.netPnlUsd>0&&f.metrics.profitFactor>1&&f.metrics.maxDrawdownPct<=o.risk.maxDailyLossPct&&De>=.6&&!(w>0&&me>w)&&!q&&!i.some(_=>_.type==="severe_oos_collapse"||_.type==="invalid_windowing")?ee="pass_live_eligible":!H&&f.metrics.tradeCount>0&&D.metrics.tradeCount>0&&Number.isFinite(f.metrics.netPnlUsd)?(ee="pass_paper_only",f.metrics.tradeCount<s&&i.push({type:"undersampled",message:"holdout trades below minTrades"})):q&&f.metrics.tradeCount>0&&D.metrics.netPnlUsd>0?ee="fail":f.metrics.tradeCount>0&&D.metrics.tradeCount>0&&!H?ee="pass_paper_only":ee="fail",f.metrics.netPnlUsd<0&&(ee=ee==="pass_live_eligible"?"fail":ee==="pass_paper_only"?"pass_paper_only":"fail",ee="fail"),Ld({status:ee,strategy:o,sHash:a,barsHash:g,split:R,train:D,holdout:f,walkForward:Te,flags:i})}function Ld({status:e,strategy:A,sHash:t,barsHash:r,split:n,train:s,holdout:i,walkForward:o,flags:a}){let g={status:e,strategyHash:t,compilerHash:It,barsHash:r,split:n,train:s,holdout:i,walkForward:o,flags:a};return g.id=ll(g),gl(Ot(JSON.parse(JSON.stringify(g))))}import{createHash as kL,createHmac as bL,timingSafeEqual as uG}from"node:crypto";var FL=2,RL=300*1e3,SL=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})();function El(e){return e===null||typeof e!="object"?JSON.stringify(e):Array.isArray(e)?`[${e.map(El).join(",")}]`:`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${El(e[t])}`).join(",")}}`}function Yd(e){let A=String(e?.ORACLE_STAMP_HMAC_SECRET||"").trim();return A.length>=16?A:""}function Gd(e=process.env){return Yd(process.env)||Yd(e)}function NL(e){let{prepareHash:A,prepareMac:t,note:r,...n}=e||{};return n}function ML(e){let A=NL(e);return kL("sha256").update(El(A)).digest("hex")}function UL(e,A=Gd()){return A?bL("sha256",A).update(String(e)).digest("hex"):""}function Jd(e,{provider:A,kind:t,env:r=process.env,nowMs:n=Date.now(),expiresAtMs:s}={}){if(!e||typeof e!="object")throw new Error("stampPrepared: payload object required");let i=Object.prototype.hasOwnProperty.call(e,"oraclePrepared");if(i&&typeof e.oraclePrepared!="boolean")throw new Error("stampPrepared: oraclePrepared must be boolean");let o={...e,provider:e.provider||A,kind:e.kind||t,requiresUserSignature:e.requiresUserSignature!==!1,signingReady:!1,broadcastReady:!1,executionReady:!1,oraclePrepared:i?e.oraclePrepared:!0};if(!o.provider)throw new Error("stampPrepared: provider required");if(!o.kind)throw new Error("stampPrepared: kind required");let a=Number(n),g=s==null?a+RL:Number(s),l=g-a;if(!Number.isSafeInteger(a)||!Number.isSafeInteger(g)||l<=0||l>SL)throw new Error("stampPrepared: bounded preparedAt/expiresAt required");let Q={...o,preparedAt:a,expiresAt:g,prepareVersion:FL},B=ML(Q),E=Gd(r),u=E?UL(B,E):void 0,h={...Q,prepareHash:B};return u&&(h.prepareMac=u),h}var LL=["privatekey","secretkey","seed","mnemonic","passphrase","password","keystore","keymaterial","apikey","authtoken","accesstoken","refreshtoken","credential","bearer","signature","authorization","xprv","xpriv","wif"];function is(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function TL(e){return String(e).toLowerCase().replace(/[^a-z0-9]/g,"")}function ul(e,A="value"){if(Array.isArray(e)){e.forEach((t,r)=>ul(t,`${A}[${r}]`));return}if(is(e))for(let[t,r]of Object.entries(e)){let n=TL(t);if(LL.some(s=>n.includes(s)))throw new Error(`handoff: forbidden secret-like field at ${A}.${t}`);ul(r,`${A}.${t}`)}}function Bl(e){return typeof e=="number"&&Number.isFinite(e)&&e>0}function Il({strategy:e,evidence:A,shadow:t,caps:r,nowMs:n=Date.now(),env:s=process.env}={}){if(ul({strategy:e,evidence:A,shadow:t,caps:r},"handoff"),!is(e))throw new Error("handoff: strategy required");if(!is(A))throw new Error("handoff: evidence required");if(!is(t))throw new Error("handoff: shadow required");if(!is(r))throw new Error("handoff: caps required");if(typeof t.id!="string"||!t.id.trim())throw new Error("handoff: shadow.id required");if(typeof t.stateHash!="string"||!/^[0-9a-f]{64}$/.test(t.stateHash))throw new Error("handoff: shadow.stateHash must be a sha256 hash");if(t.status!=="running")throw new Error("handoff: shadow.status must be running");if(!Number.isInteger(t.cursor)||t.cursor<=0)throw new Error("handoff: shadow.cursor must be a positive integer");if(!Number.isInteger(t.updatedAt)||t.updatedAt<=0||t.updatedAt>n)throw new Error("handoff: shadow.updatedAt must be a positive integer <= nowMs");let i=Le(e,{nowMs:n}),o=Ue(i);if(Ql(A,{maxDailyLossPct:i.risk.maxDailyLossPct}),A.status!=="pass_live_eligible")throw new Error("handoff: evidence.status must be pass_live_eligible");if(A.strategyHash!==o.strategyHash)throw new Error("handoff: evidence.strategyHash mismatch");if(A.compilerHash!==o.compilerHash)throw new Error("handoff: evidence.compilerHash mismatch");let a=["perStrategyNotionalUsd","maxLeverage","dailyLossCapUsd","chainAllowlist","assetAllowlist","expiresAt","killSwitchRequired"];for(let Q of a)if(!(Q in r)||r[Q]==null)throw new Error(`handoff: caps.${Q} required`);if(!Bl(r.perStrategyNotionalUsd))throw new Error("handoff: caps.perStrategyNotionalUsd must be positive");if(r.perStrategyNotionalUsd>o.strategy.risk.maxNotionalUsd)throw new Error("handoff: caps.perStrategyNotionalUsd exceeds strategy.risk.maxNotionalUsd");if(!Bl(r.maxLeverage))throw new Error("handoff: caps.maxLeverage must be positive");if(r.maxLeverage>o.strategy.risk.maxLeverage)throw new Error("handoff: caps.maxLeverage exceeds strategy.risk.maxLeverage");if(!Bl(r.dailyLossCapUsd))throw new Error("handoff: caps.dailyLossCapUsd must be positive");let g=o.strategy.risk.maxNotionalUsd*(o.strategy.risk.maxDailyLossPct/100);if(r.dailyLossCapUsd>g)throw new Error("handoff: caps.dailyLossCapUsd exceeds strategy daily loss ceiling");if(!Array.isArray(r.chainAllowlist)||r.chainAllowlist.length===0)throw new Error("handoff: caps.chainAllowlist must be a non-empty array");if(!r.chainAllowlist.every(Q=>Q==="hyperliquid"))throw new Error("handoff: caps.chainAllowlist must include only hyperliquid");if(!r.chainAllowlist.includes("hyperliquid"))throw new Error("handoff: caps.chainAllowlist must include hyperliquid");if(!Array.isArray(r.assetAllowlist)||r.assetAllowlist.length===0)throw new Error("handoff: caps.assetAllowlist must be a non-empty array");if(r.assetAllowlist.length!==1||r.assetAllowlist[0]!==o.strategy.market.coin)throw new Error("handoff: caps.assetAllowlist must contain only the strategy market coin");if(!Number.isInteger(r.expiresAt)||!(r.expiresAt>n))throw new Error("handoff: caps.expiresAt must be an integer > nowMs");if(r.expiresAt>o.strategy.risk.expiresAt)throw new Error("handoff: caps.expiresAt exceeds strategy.risk.expiresAt");if(r.killSwitchRequired!==!0)throw new Error("handoff: caps.killSwitchRequired must be exactly true");let l={perStrategyNotionalUsd:r.perStrategyNotionalUsd,maxLeverage:r.maxLeverage,dailyLossCapUsd:r.dailyLossCapUsd,chainAllowlist:[...r.chainAllowlist],assetAllowlist:[...r.assetAllowlist],expiresAt:r.expiresAt,killSwitchRequired:!0},c={strategyHash:o.strategyHash,compilerHash:o.compilerHash,evidence:JSON.parse(JSON.stringify(A)),shadow:{id:t.id,stateHash:t.stateHash,status:t.status,cursor:t.cursor,updatedAt:t.updatedAt},compiled:{strategyHash:o.strategyHash,compilerHash:o.compilerHash,compilerVersion:Or,venue:"hyperliquid",market:{coin:o.strategy.market.coin,kind:"perp",interval:o.strategy.market.interval},risk:{...o.strategy.risk},strategy:JSON.parse(JSON.stringify(o.strategy))},arming:{liveBroadcast:!1,requiresExplicitUserArm:!0,caps:l},requiresUserSignature:!0,signingReady:!1,broadcastReady:!1,executionReady:!1};return Jd(c,{provider:"hl-strategy",kind:"strategy-live-handoff",env:s})}var xL=Object.freeze({"1m":6e4,"3m":18e4,"5m":3e5,"15m":9e5,"30m":18e5,"1h":36e5,"2h":72e5,"4h":144e5,"8h":288e5,"12h":432e5,"1d":864e5});function _r(e,A){let t=Number(e);if(!Number.isFinite(t))throw new TypeError(`${A} must be finite`);return t}function Kr(e,A){if(!Number.isSafeInteger(e)||e<0)throw new TypeError(`${A} must be a non-negative safe integer`);return e}function os(e){if(Array.isArray(e))for(let A of e)os(A);else if(e&&typeof e=="object")for(let A of Object.values(e))os(A);return Object.freeze(e)}function Hd(e){let A=xL[e];if(!A)throw new TypeError(`unsupported strategy interval: ${e}`);return A}function Vd(e,{endTime:A=Number.MAX_SAFE_INTEGER}={}){if(!Array.isArray(e))throw new TypeError("Hyperliquid candles must be an array");Kr(A,"endTime");let t=new Map;for(let r=0;r<e.length;r++){let n=e[r];if(!n||typeof n!="object"||Array.isArray(n))throw new TypeError(`candles[${r}] must be an object`);let s=Kr(Number(n.t),`candles[${r}].t`);if(Kr(Number(n.T),`candles[${r}].T`)>A)continue;let o={t:s,o:_r(n.o,`candles[${r}].o`),h:_r(n.h,`candles[${r}].h`),l:_r(n.l,`candles[${r}].l`),c:_r(n.c,`candles[${r}].c`),v:_r(n.v,`candles[${r}].v`)};if(o.h<Math.max(o.o,o.c,o.l))throw new TypeError(`candles[${r}].h is below another price`);if(o.l>Math.min(o.o,o.c,o.h))throw new TypeError(`candles[${r}].l is above another price`);if(o.v<0)throw new TypeError(`candles[${r}].v must be non-negative`);let a=t.get(s);if(a&&JSON.stringify(a)!==JSON.stringify(o))throw new TypeError(`conflicting duplicate candle at timestamp ${s}`);a||t.set(s,o)}return os([...t.values()].sort((r,n)=>r.t-n.t))}function YL(e,A){if(!Array.isArray(e))throw new TypeError("Hyperliquid funding history must be an array");let t=new Map;for(let r=0;r<e.length;r++){let n=e[r];if(!n||typeof n!="object"||Array.isArray(n))throw new TypeError(`funding[${r}] must be an object`);let s=Kr(Number(n.time),`funding[${r}].time`);s>A||t.set(s,{time:s,fundingRate:_r(n.fundingRate,`funding[${r}].fundingRate`)})}return[...t.values()].sort((r,n)=>r.time-n.time)}async function GL({coin:e,startTime:A,endTime:t},r){let n=[],s=Math.max(0,A-288e5),i=!1;for(let o=0;o<16&&s<=t;o++){let a=await Fd({coin:e,startTime:s,endTime:t},r);if(!Array.isArray(a))throw new TypeError("Hyperliquid funding history must be an array");n.push(...a);let g=s;for(let l of a){let c=Number(l?.time);Number.isSafeInteger(c)&&c>g&&(g=c)}if(a.length<500||g>=t){i=!0;break}if(g<=s)throw new Error("Hyperliquid funding history pagination did not advance");s=g+1}if(!i)throw new Error("strategy history exceeds the bounded funding history limit");return YL(n,t)}function JL(e,A,t){let r=0,n=null;return e.map(s=>{let i=s.t+t,o=0;for(;r<A.length&&A[r].time<i;){let a=A[r];n=a.fundingRate,a.time>=s.t&&(o+=a.fundingRate),r+=1}return n==null?{...s,fundingPaymentRate:o}:{...s,fundingRate:n,fundingPaymentRate:o}})}async function hl(e,A={}){if(!e||typeof e!="object"||Array.isArray(e))throw new TypeError("strategy history input must be an object");let t=String(e.coin||"").trim().toUpperCase();if(!/^[A-Z0-9][A-Z0-9._-]{0,11}$/.test(t))throw new TypeError("coin must be an uppercase Hyperliquid asset id");let r=String(e.interval||"15m"),n=Hd(r);if(e.endTime==null)throw new TypeError("endTime is required for deterministic history");let s=Kr(e.endTime,"endTime"),i=e.count==null?1500:e.count;if(!Number.isInteger(i)||i<20||i>5e3)throw new TypeError("count must be an integer from 20 to 5000");let o=e.startTime==null?Math.max(0,s-i*n):Kr(e.startTime,"startTime");if(o>=s)throw new TypeError("startTime must be before endTime");let[a,g]=await Promise.all([bd({coin:t,interval:r,startTime:o,endTime:s},A),GL({coin:t,startTime:o,endTime:s},A)]),l=Vd(a,{endTime:s}),c=os(JL(l,g,n));return os({coin:t,interval:r,range:{startTime:o,endTime:s},bars:c})}var HL=new Set(["1m","3m","5m","15m","30m","1h","2h","4h","8h","12h","1d"]),VL=new Set(["coin","interval"]);function vL(e){let A=[];if(!e||typeof e!="object"||Array.isArray(e))return{ok:!1,errors:[{path:"market",message:"must be a plain object"}],market:null};for(let t of Object.keys(e))VL.has(t)||A.push({path:`market.${t}`,message:"unknown field is not allowed"});return(typeof e.coin!="string"||e.coin.length===0||e.coin.length>32)&&A.push({path:"market.coin",message:"must be a non-empty string max 32"}),(typeof e.interval!="string"||!HL.has(e.interval))&&A.push({path:"market.interval",message:"must be a supported interval"}),A.length?{ok:!1,errors:A,market:null}:{ok:!0,errors:[],market:{coin:e.coin,interval:e.interval}}}async function qL(e={}){let A=await kd(e);if(!A||!Array.isArray(A.universe))throw new TypeError("Hyperliquid market metadata must contain universe");return Object.freeze(A.universe.map((t,r)=>{if(!t||typeof t.name!="string"||!t.name)throw new TypeError(`Hyperliquid market metadata universe[${r}].name is invalid`);return t.name}))}var vd=Object.freeze({id:"hyperliquid",validateMarket:vL,fetchBars:hl,listMarkets:qL,prepareIntent(e){return Il(e)}});var WL=Object.freeze(["id","validateMarket","prepareIntent"]);function PL(e){if(!e||typeof e!="object"||Array.isArray(e))throw new TypeError("strategy venue adapter must be an object");if(typeof e.id!="string"||!/^[a-z0-9][a-z0-9._-]{0,63}$/.test(e.id))throw new TypeError("strategy venue adapter id is malformed");for(let A of WL.slice(1))if(typeof e[A]!="function")throw new TypeError(`strategy venue adapter ${e.id} requires ${A}()`);for(let A of["fetchBars","listMarkets"])if(e[A]!=null&&typeof e[A]!="function")throw new TypeError(`strategy venue adapter ${e.id} ${A} must be a function`);return e}var qd=[vd].map(PL),OL=new Map(qd.map(e=>[e.id,e])),zL=Object.freeze([...qd]);function lo(e){return typeof e!="string"?null:OL.get(e)??null}function Qo(e){let A=lo(e);if(!A)throw new Error(`unknown strategy venue: ${String(e)}`);return A}var Eo=1,$d=/^[a-z0-9][a-z0-9._-]{0,63}$/,ew=/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/,_L=new Set(["open","high","low","close","volume","fundingRate","openInterest"]),KL=new Set(["sma","ema","rsi","macd","bollinger","atr"]),XL=new Set(["gt","gte","lt","lte","eq"]),jL=new Set(["and","or","not"]),$L=new Set(["above","below"]),eT=new Set(["line","signal","histogram"]),AT=new Set(["upper","middle","lower"]),Cl=new Set(["compare","logic","cross"]),Wd=new Set(["version","id","name","venue","market","parameters","nodes","rules","risk"]),Pd=new Set(["value","min","max","step"]),fl=new Set(["entryLong","entryShort","exitLong","exitShort"]),Od=new Set(["maxLeverage","maxNotionalUsd","positionSizePct","stopLossPct","takeProfitPct","cooldownBars","maxDailyLossPct","expiresAt"]),tT=new Set(["id","type"]),zd={input:new Set(["id","type","field"]),constant:new Set(["id","type","value"]),indicator:new Set(["id","type","indicator","input","period","fastPeriod","slowPeriod","signalPeriod","stdDev","output"]),compare:new Set(["id","type","op","left","right"]),logic:new Set(["id","type","op","inputs"]),cross:new Set(["id","type","direction","left","right"])},Zd=16,_d=128,Kd=100,zt=class extends Error{constructor(A){let t=A.map(r=>`${r.path}: ${r.message}`);super(`invalid strategy (${A.length} error${A.length===1?"":"s"}): ${t.join("; ")}`),this.name="StrategyValidationError",this.errors=A}};function oA(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function Ie(e){return typeof e=="number"&&Number.isFinite(e)}function Xd(e){return Number.isInteger(e)&&e>0}function wl(e){if(e==null||typeof e!="object"||Object.isFrozen(e))return e;if(Array.isArray(e)){for(let A of e)wl(A);return Object.freeze(e)}for(let A of Object.keys(e))wl(e[A]);return Object.freeze(e)}function yl(e){if(Array.isArray(e))return e.map(yl);if(e!=null&&typeof e=="object"){let A={};for(let t of Object.keys(e).sort())A[t]=yl(e[t]);return A}return e}function k(e,A,t){e.push({path:A,message:t})}function ht(e,A,t,r){for(let n of Object.keys(e))A.has(n)||k(r,t?`${t}.${n}`:n,"unknown field is not allowed")}function Aw(e,A,t,r){if(!Ie(e)||!Ie(A)||!Ie(t)||!Ie(r)||r<=0||e<A||e>t)return!1;let n=(e-A)/r;if(!Number.isFinite(n))return!1;let s=Math.round(n);return Math.abs(n-s)<=1e-9}function dl(e,A,t,r){if(oA(e)){if(ht(e,new Set(["param"]),A,r),typeof e.param!="string"||!e.param)return k(r,`${A}.param`,"must be a parameter name string"),null;if(!Object.prototype.hasOwnProperty.call(t,e.param))return k(r,`${A}.param`,`unknown parameter "${e.param}"`),null;let n=t[e.param];return!oA(n)||![n.value,n.min,n.max,n.step].every(Xd)?(k(r,`${A}.param`,"referenced period parameter value min max and step must be positive integers"),null):{param:e.param}}return Xd(e)?e:(k(r,A,"must be a positive integer or {param}"),null)}function jd(e,A,t,r){return oA(e)?(ht(e,new Set(["param"]),A,r),typeof e.param!="string"||!e.param?(k(r,`${A}.param`,"must be a parameter name string"),null):Object.prototype.hasOwnProperty.call(t,e.param)?{param:e.param}:(k(r,`${A}.param`,`unknown parameter "${e.param}"`),null)):Ie(e)?e:(k(r,A,"must be a finite number or {param}"),null)}function Bo(e){switch(e.type){case"input":case"constant":return[];case"indicator":return e.input?[e.input]:[];case"compare":case"cross":return[e.left,e.right].filter(Boolean);case"logic":return Array.isArray(e.inputs)?[...e.inputs]:[];default:return[]}}function rT(e){let A=new Map,t=r=>{let n=A.get(r)||0;if(n===1)return!0;if(n===2)return!1;A.set(r,1);let s=e.get(r);if(s){for(let i of Bo(s))if(e.has(i)&&t(i))return!0}return A.set(r,2),!1};for(let r of e.keys())if(t(r))return!0;return!1}function nT(e,A){if(!oA(e))return k(A,"parameters","must be a plain object"),null;let t=Object.keys(e);if(t.length>Zd)return k(A,"parameters",`too many parameters (max ${Zd})`),null;let r={};for(let n of t){if(!$d.test(n)){k(A,`parameters.${n}`,"parameter name is malformed");continue}let s=e[n],i=`parameters.${n}`;if(!oA(s)){k(A,i,"must be a plain object");continue}ht(s,Pd,i,A);for(let c of Pd)c in s||k(A,`${i}.${c}`,"required field is missing");let{value:o,min:a,max:g,step:l}=s;Ie(a)||k(A,`${i}.min`,"must be a finite number"),Ie(g)||k(A,`${i}.max`,"must be a finite number"),(!Ie(l)||l<=0)&&k(A,`${i}.step`,"must be a positive finite number"),Ie(o)||k(A,`${i}.value`,"must be a finite number"),Ie(a)&&Ie(g)&&a>g&&k(A,`${i}.min`,"min must be <= max"),Ie(o)&&Ie(a)&&Ie(g)&&Ie(l)&&l>0&&(Aw(o,a,g,l)||k(A,`${i}.value`,"value must lie on the declared min/max/step grid")),r[n]={value:o,min:a,max:g,step:l}}return r}function sT(e,A,t,r){let n=`nodes.${A}`;if(!oA(e))return k(r,n,"must be a plain object"),null;if(typeof e.type!="string"||!zd[e.type])return k(r,`${n}.type`,"unknown or missing node type"),ht(e,tT,n,r),null;switch(ht(e,zd[e.type],n,r),(typeof e.id!="string"||!ew.test(e.id))&&k(r,`${n}.id`,"must be a 1-64 char id starting with alphanumeric"),e.type){case"input":return(typeof e.field!="string"||!_L.has(e.field))&&k(r,`${n}.field`,"must be one of open|high|low|close|volume|fundingRate|openInterest"),{id:e.id,type:"input",field:e.field};case"constant":{let s=jd(e.value,`${n}.value`,t,r);return{id:e.id,type:"constant",value:s}}case"indicator":{(typeof e.indicator!="string"||!KL.has(e.indicator))&&k(r,`${n}.indicator`,"must be one of sma|ema|rsi|macd|bollinger|atr");let s=e.indicator,i={id:e.id,type:"indicator",indicator:s};if(s==="atr"){"input"in e&&(typeof e.input!="string"||!e.input?k(r,`${n}.input`,"must be a node id string when provided"):i.input=e.input);let o=dl(e.period,`${n}.period`,t,r);o!=null&&(i.period=o)}else typeof e.input!="string"||!e.input?k(r,`${n}.input`,"must be a node id string"):i.input=e.input;if((s==="sma"||s==="ema"||s==="rsi"||s==="bollinger"||s==="atr")&&("period"in e,s!=="macd"))if(!("period"in e))k(r,`${n}.period`,"required field is missing");else{let o=dl(e.period,`${n}.period`,t,r);o!=null&&(i.period=o)}if(s==="macd"){for(let o of["fastPeriod","slowPeriod","signalPeriod"])if(!(o in e))k(r,`${n}.${o}`,"required field is missing");else{let a=dl(e[o],`${n}.${o}`,t,r);a!=null&&(i[o]=a)}"output"in e?eT.has(e.output)?i.output=e.output:k(r,`${n}.output`,"must be line|signal|histogram"):k(r,`${n}.output`,"required field is missing"),"period"in e&&k(r,`${n}.period`,"forbidden for macd"),"stdDev"in e&&k(r,`${n}.stdDev`,"forbidden for macd")}else if(s==="bollinger"){if(!("stdDev"in e))k(r,`${n}.stdDev`,"required field is missing");else{let o=jd(e.stdDev,`${n}.stdDev`,t,r);o!=null&&(typeof o=="number"&&o<=0?k(r,`${n}.stdDev`,"must be > 0"):i.stdDev=o)}"output"in e?AT.has(e.output)?i.output=e.output:k(r,`${n}.output`,"must be upper|middle|lower"):k(r,`${n}.output`,"required field is missing");for(let o of["fastPeriod","slowPeriod","signalPeriod"])o in e&&k(r,`${n}.${o}`,`forbidden for ${s}`)}else{"output"in e&&k(r,`${n}.output`,`forbidden for ${s}`),"stdDev"in e&&s!=="bollinger"&&k(r,`${n}.stdDev`,`forbidden for ${s}`);for(let o of["fastPeriod","slowPeriod","signalPeriod"])o in e&&k(r,`${n}.${o}`,`forbidden for ${s}`)}return i}case"compare":return(typeof e.op!="string"||!XL.has(e.op))&&k(r,`${n}.op`,"must be gt|gte|lt|lte|eq"),(typeof e.left!="string"||!e.left)&&k(r,`${n}.left`,"must be a node id"),(typeof e.right!="string"||!e.right)&&k(r,`${n}.right`,"must be a node id"),{id:e.id,type:"compare",op:e.op,left:e.left,right:e.right};case"logic":{if((typeof e.op!="string"||!jL.has(e.op))&&k(r,`${n}.op`,"must be and|or|not"),!Array.isArray(e.inputs))return k(r,`${n}.inputs`,"must be an array of node ids"),{id:e.id,type:"logic",op:e.op,inputs:[]};let s=[];for(let i=0;i<e.inputs.length;i++){let o=e.inputs[i];typeof o!="string"||!o?k(r,`${n}.inputs.${i}`,"must be a node id"):s.push(o)}return e.op==="not"?s.length!==1&&k(r,`${n}.inputs`,"not requires exactly one input"):(e.op==="and"||e.op==="or")&&s.length<2&&k(r,`${n}.inputs`,`${e.op} requires at least two inputs`),{id:e.id,type:"logic",op:e.op,inputs:s}}case"cross":return(typeof e.direction!="string"||!$L.has(e.direction))&&k(r,`${n}.direction`,"must be above|below"),(typeof e.left!="string"||!e.left)&&k(r,`${n}.left`,"must be a node id"),(typeof e.right!="string"||!e.right)&&k(r,`${n}.right`,"must be a node id"),{id:e.id,type:"cross",direction:e.direction,left:e.left,right:e.right};default:return null}}function iT(e,A,t){if(!oA(e))return k(A,"risk","must be a plain object"),null;ht(e,Od,"risk",A);for(let Q of Od)(!(Q in e)||e[Q]==null)&&k(A,`risk.${Q}`,"required field is missing");let r={},n=e.maxLeverage;!Ie(n)||n<=0||n>50?k(A,"risk.maxLeverage","must be a number > 0 and <= 50"):r.maxLeverage=n;let s=e.maxNotionalUsd;!Ie(s)||s<=0?k(A,"risk.maxNotionalUsd","must be a number > 0"):r.maxNotionalUsd=s;let i=e.positionSizePct;!Ie(i)||i<=0||i>100?k(A,"risk.positionSizePct","must be a number > 0 and <= 100"):r.positionSizePct=i;let o=e.stopLossPct;!Ie(o)||o<=0||o>100?k(A,"risk.stopLossPct","must be a number > 0 and <= 100"):r.stopLossPct=o;let a=e.takeProfitPct;!Ie(a)||a<=0||a>1e3?k(A,"risk.takeProfitPct","must be a number > 0 and <= 1000"):r.takeProfitPct=a;let g=e.cooldownBars;!Number.isInteger(g)||g<0||g>1e5?k(A,"risk.cooldownBars","must be an integer >= 0 and <= 100000"):r.cooldownBars=g;let l=e.maxDailyLossPct;!Ie(l)||l<=0||l>100?k(A,"risk.maxDailyLossPct","must be a number > 0 and <= 100"):r.maxDailyLossPct=l;let c=e.expiresAt;return!Number.isInteger(c)||c<=0?k(A,"risk.expiresAt","must be an integer epoch milliseconds > 0"):(t.nowMs!==void 0&&(Number.isInteger(t.nowMs)?c<=t.nowMs&&k(A,"risk.expiresAt","must be strictly greater than nowMs"):k(A,"nowMs","must be an integer epoch milliseconds")),r.expiresAt=c),r}function uo(e,A={}){let t=[];if(!oA(e))return k(t,"","strategy must be a plain object"),{ok:!1,errors:t,strategy:null};ht(e,Wd,"",t);for(let c of Wd)(!(c in e)||e[c]==null)&&k(t,c,"required field is missing");e.version!==Eo&&k(t,"version",`must be ${Eo}`),(typeof e.id!="string"||!$d.test(e.id))&&k(t,"id","must match /^[a-z0-9][a-z0-9._-]{0,63}$/"),(typeof e.name!="string"||e.name.length===0||e.name.length>Kd)&&k(t,"name",`must be a non-empty string max ${Kd}`);let r=lo(e.venue);r||k(t,"venue",`unknown strategy venue "${String(e.venue)}"`);let n=null;if(!r)oA(e.market)||k(t,"market","must be a plain object");else{let c=r.validateMarket(e.market);if(!c||typeof c.ok!="boolean"||!Array.isArray(c.errors))k(t,"market",`venue ${r.id} returned an invalid market validation result`);else if(c.ok)n=c.market;else for(let Q of c.errors)k(t,Q.path,Q.message)}let s=nT(e.parameters,t),i=null,o=new Map;if(!Array.isArray(e.nodes))k(t,"nodes","must be an array");else if(e.nodes.length>_d)k(t,"nodes",`too many nodes (max ${_d})`);else{i=[];for(let c=0;c<e.nodes.length;c++){let Q=sT(e.nodes[c],c,s||{},t);Q&&(typeof Q.id=="string"&&ew.test(Q.id)&&(o.has(Q.id)?k(t,`nodes.${c}.id`,`duplicate node id "${Q.id}"`):o.set(Q.id,Q)),i.push(Q))}for(let c=0;c<i.length;c++){let Q=i[c],B=`nodes.${c}`;for(let E of Bo(Q))o.has(E)||k(t,B,`unknown node ref "${E}"`);if(Q.type==="indicator"||Q.type==="compare"||Q.type==="cross")for(let E of Bo(Q)){let u=o.get(E);u&&Cl.has(u.type)&&k(t,B,`node ref "${E}" must be numeric`)}if(Q.type==="logic")for(let E of Bo(Q)){let u=o.get(E);u&&!Cl.has(u.type)&&k(t,B,`node ref "${E}" must be boolean`)}}rT(o)&&k(t,"nodes","graph contains a cycle")}let a=null;if(!oA(e.rules))k(t,"rules","must be a plain object");else{ht(e.rules,fl,"rules",t);for(let c of fl)c in e.rules||k(t,`rules.${c}`,"required field is missing");a={};for(let c of fl){let Q=e.rules[c];if(Q===null){a[c]=null;continue}if(typeof Q!="string"||!Q){k(t,`rules.${c}`,"must be a node id or null"),a[c]=Q;continue}if(!o.has(Q)){k(t,`rules.${c}`,`unknown node ref "${Q}"`),a[c]=Q;continue}let B=o.get(Q);Cl.has(B.type)||k(t,`rules.${c}`,`rule must reference a boolean node, not ${B.type}`),a[c]=Q}}let g=iT(e.risk,t,A);if(t.length)return{ok:!1,errors:t,strategy:null};let l=wl({version:Eo,id:e.id,name:e.name,venue:r.id,market:n,parameters:s,nodes:i,rules:a,risk:g});return{ok:!0,errors:[],strategy:l}}function Le(e,A={}){let t=uo(e,A);if(!t.ok)throw new zt(t.errors);return t.strategy}function tw(e){let A=Le(e);return JSON.stringify(yl(A))}function Pt(e){let A=tw(e);return ZL("sha256").update(A,"utf8").digest("hex")}function zr(e,A){if(!oA(e))throw new zt([{path:"",message:"strategy must be a plain object"}]);if(!oA(A))throw new zt([{path:"overrides",message:"must be a plain object"}]);let t=Le(e),r={};for(let[s,i]of Object.entries(t.parameters))r[s]={value:i.value,min:i.min,max:i.max,step:i.step};let n=[];for(let[s,i]of Object.entries(A)){if(!Object.prototype.hasOwnProperty.call(r,s)){k(n,s,`unknown parameter "${s}"`);continue}let o=r[s];if(!Ie(i)){k(n,s,"override must be a finite number");continue}if(!Aw(i,o.min,o.max,o.step)){k(n,s,"override must lie on the declared min/max/step grid");continue}r[s]={...o,value:i}}if(n.length)throw new zt(n);return Le({version:t.version,id:t.id,name:t.name,venue:t.venue,market:{coin:t.market.coin,interval:t.market.interval},parameters:r,nodes:t.nodes.map(s=>{let i={...s};return Array.isArray(s.inputs)&&(i.inputs=[...s.inputs]),i}),rules:{...t.rules},risk:{...t.risk}})}import{createHash as oT}from"node:crypto";var ml=256,rw=new Set(["netPnlUsd","profitFactor","sharpe","maxDrawdownPct"]);function nw(e){let A=String(e).toLowerCase();return A==="holdout"||A==="test"||A==="oos"||A.includes("holdout")||A.includes("oos")?!0:A==="testbars"||A.endsWith("testbars")||A.startsWith("test")||A.endsWith("test")?!A.includes("backtest"):!1}function sw(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function Dl(e){if(e==null||typeof e!="object"||Object.isFrozen(e))return e;if(Array.isArray(e)){for(let A of e)Dl(A);return Object.freeze(e)}for(let A of Object.keys(e))Dl(e[A]);return Object.freeze(e)}function as(e){if(Array.isArray(e))return e.map(as);if(e!=null&&typeof e=="object"){let A={};for(let t of Object.keys(e).sort())A[t]=as(e[t]);return A}return e}function Io(e){return JSON.stringify(as(e))}function aT(e){let{min:A,max:t,step:r}=e;if(!(r>0)||A>t)return[];let n=[],s=Math.floor((t-A)/r+1e-9);for(let o=0;o<=s;o++){let a=A+o*r;if(a>t+1e-9)break;let g=Math.abs(a-Math.round(a))<1e-9?Math.round(a):Number(a.toPrecision(12));g<A-1e-9||g>t+1e-9||n.push(g)}if(n.length===0)return[];let i=n[n.length-1];if(Math.abs(i-t)>1e-9){let o=(t-A)/r;Math.abs(o-Math.round(o))<=1e-9&&n.push(t)}return n}function cT(e,A){if(e.length===0)return[];let t=[{}];for(let r of e){let n=A[r],s=[];for(let i of t)for(let o of n)s.push({...i,[r]:o});t=s}return t.sort((r,n)=>{let s=Io(r),i=Io(n);return s<i?-1:s>i?1:0}),t}function pl(e,A,t,r,n){let s=0;if(e==="maxDrawdownPct"){if(s=A.maxDrawdownPct-r.maxDrawdownPct,s!==0)return s<0}else if(s=A[e]-r[e],s!==0)return s>0;let i=Io(t),o=Io(n);return i<o}function kl(e,A,t={}){if(!sw(t))throw new TypeError("options must be a plain object");for(let f of Object.keys(t))if(nw(f))throw new TypeError(`options must not include holdout/test/oos key "${f}"`);let r=new Set(["maxTrials","objective","backtestOptions"]);for(let f of Object.keys(t))if(!r.has(f))throw new TypeError(`unknown option "${f}"`);let n=64;if("maxTrials"in t){let f=t.maxTrials;if(!Number.isInteger(f)||f<1||f>ml)throw new TypeError(`maxTrials must be an integer 1..${ml}`);n=f}let s=t.objective??"netPnlUsd";if(!rw.has(s))throw new TypeError(`objective must be one of ${[...rw].join("|")}`);let i=t.backtestOptions??{};if(!sw(i))throw new TypeError("backtestOptions must be a plain object");for(let f of Object.keys(i))if(nw(f))throw new TypeError(`backtestOptions must not include holdout/test/oos key "${f}"`);let o=Le(e),a=Object.keys(o.parameters).sort();if(a.length===0)throw new Error("optimizeStrategy requires at least one declared parameter");let g={},l=1;for(let f of a){let R=aT(o.parameters[f]);if(R.length===0)throw new Error(`parameter "${f}" produces an empty grid`);g[f]=R,l*=R.length}let c=cT(a,g);if(c.length===0)throw new Error("parameter grid is empty");let Q=c.slice(0,n),B=[],E=null,u=null;for(let f of Q){let R=zr(o,f),S=KA(R,A,i);u==null&&(u=S.config);let d={netPnlUsd:S.metrics.netPnlUsd,netPnlPct:S.metrics.netPnlPct,maxDrawdownPct:S.metrics.maxDrawdownPct,winRate:S.metrics.winRate,profitFactor:S.metrics.profitFactor,tradeCount:S.metrics.tradeCount,sharpe:S.metrics.sharpe,turnoverUsd:S.metrics.turnoverUsd},se={parameters:{...f},metrics:d};B.push(se),(!E||pl(s,d,f,E.metrics,E.parameters))&&(E=se)}B.sort((f,R)=>pl(s,f.metrics,f.parameters,R.metrics,R.parameters)?-1:pl(s,R.metrics,R.parameters,f.metrics,f.parameters)?1:0);let h={...E.parameters},I=zr(o,h),C={strategyHash:Pt(o),compilerHash:It,trainBarsHash:ns(A),backtestConfig:u,objective:s,maxTrials:n,trialsRun:B.length,candidates:B,bestParameters:h,bestStrategy:I},D={id:oT("sha256").update(JSON.stringify(as(C)),"utf8").digest("hex"),...C};return Dl(as(JSON.parse(JSON.stringify(D))))}import{createHash as gT}from"node:crypto";var Fe=class extends Error{constructor(A){super(A),this.name="StrategyDraftError"}},lT=new Set(["1m","3m","5m","15m","30m","1h","2h","4h","8h","12h","1d"]),QT=new Set(["BTC","ETH","SOL","HYPE"]),ET=/\b(mnemonic|private\s*key|privkey|seed\s*phrase|seed\b|api[_-]?key|secret\s*key|wallet\s*key|passphrase)\b/i,Xr="Supported grammar: (1) EMA cross: <long|short> <COIN> when EMA <n> crosses <above|below> EMA <m> [on <interval>] [, exit on reverse] [, risk knobs]; (2) RSI: <long|short> <COIN> when RSI <n> <above|below> <threshold> [on <interval>] [, risk knobs]; (3) funding: <long|short> <COIN> when funding rate <above|below> <decimal|percent%> [on <interval>] [, risk knobs]. Risk knobs: stop loss %, take profit %, leverage, position size %, max notional USD. Coins: BTC ETH SOL HYPE or uppercase token <=12 chars. Intervals: 1m 3m 5m 15m 30m 1h 2h 4h 8h 12h 1d.",BT=Object.freeze({maxLeverage:1,maxNotionalUsd:100,positionSizePct:5,stopLossPct:2,takeProfitPct:4,cooldownBars:1,maxDailyLossPct:3}),uT=36e5,IT=30*864e5,hT=864e5;function CT(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function bl(e){if(e==null||typeof e!="object"||Object.isFrozen(e))return e;if(Array.isArray(e)){for(let A of e)bl(A);return Object.freeze(e)}for(let A of Object.keys(e))bl(e[A]);return Object.freeze(e)}function fT(e){return String(e).trim().replace(/\s+/g," ")}function dT(e){let A=e.match(/\b(long|short)\b/i);return A?A[1].toLowerCase():null}function wT(e){for(let t of QT)if(new RegExp(`\\b${t}\\b`,"i").test(e))return t;let A=e.match(/\b([A-Z][A-Z0-9]{1,11})\b/);return A?A[1]:null}function yT(e){let A=e.match(/\bon\s+(1m|3m|5m|15m|30m|1h|2h|4h|8h|12h|1d)\b/i);if(!A)return"15m";let t=A[1].toLowerCase();return lT.has(t)?t:null}function pT(e){let A={...BT},t=e.match(/stop\s*loss\s*(\d+(?:\.\d+)?)\s*%?/i);t&&(A.stopLossPct=Number(t[1]));let r=e.match(/take\s*profit\s*(\d+(?:\.\d+)?)\s*%?/i);r&&(A.takeProfitPct=Number(r[1]));let n=e.match(/leverage\s*(\d+(?:\.\d+)?)/i);n&&(A.maxLeverage=Number(n[1]));let s=e.match(/position\s*size\s*(\d+(?:\.\d+)?)\s*%?/i);s&&(A.positionSizePct=Number(s[1]));let i=e.match(/max\s*notional\s*(?:usd\s*)?\$?\s*(\d+(?:\.\d+)?)/i);return i&&(A.maxNotionalUsd=Number(i[1])),A}function mT(e){return[/\bon\s+(?:1m|3m|5m|15m|30m|1h|2h|4h|8h|12h|1d)\b/gi,/\bstop\s*loss\s*\d+(?:\.\d+)?\s*%?/gi,/\btake\s*profit\s*\d+(?:\.\d+)?\s*%?/gi,/\bleverage\s*\d+(?:\.\d+)?/gi,/\bposition\s*size\s*\d+(?:\.\d+)?\s*%?/gi,/\bmax\s*notional\s*(?:usd\s*)?\$?\s*\d+(?:\.\d+)?/gi].some(t=>(e.match(t)??[]).length>1)}function DT(e){let A=gT("sha256").update(e,"utf8").digest("hex").slice(0,10),t=e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40),n=`${t.length?t:"draft"}-${A}`.replace(/[^a-z0-9._-]/g,"").slice(0,64);return/^[a-z0-9]/.test(n)?n:`d${n}`.slice(0,64)}function kT(e){let A=e.match(/\bema\s*(\d+)\s*cross(?:es)?\s*(above|below)\s*ema\s*(\d+)\b/i);if(!A)return null;let t=Number(A[1]),r=A[2].toLowerCase(),n=Number(A[3]);if(!(t>0)||!(n>0)||t===n)return null;let s=/\b(exit\s+on\s+reverse|reverse\s+exit)\b/i.test(e);return{kind:"ema_cross",fast:t,slow:n,direction:r,reverse:s}}function bT(e){let A=e.match(/\brsi\s*(\d+)\s*(above|below)\s*(-?\d+(?:\.\d+)?)/i);if(!A)return null;let t=Number(A[3]);return!Number.isFinite(t)||t<=0||t>=100?null:{kind:"rsi",period:Number(A[1]),op:A[2].toLowerCase(),threshold:t}}function FT(e){let A=e.match(/\bfunding\s*rate\s*(above|below)\s*(-?\d+(?:\.\d+)?)(%?)(?=\s|,|$)/i);if(!A)return null;let t=Number(A[2]);return A[3]==="%"&&(t=t/100),{kind:"funding",op:A[1].toLowerCase(),threshold:t}}function RT(e,A){let t=e.replace(/^(long|short)\s+[A-Z][A-Z0-9]{1,11}\s+when\s+/i,"");if(t===e)return!1;A.kind==="ema_cross"?t=t.replace(/^ema\s*\d+\s*cross(?:es)?\s*(?:above|below)\s*ema\s*\d+\b/i,""):A.kind==="rsi"?t=t.replace(/^rsi\s*\d+\s*(?:above|below)\s*\d+(?:\.\d+)?\b/i,""):t=t.replace(/^funding\s*rate\s*(?:above|below)\s*-?\d+(?:\.\d+)?%?(?=\s|,|$)/i,"");let r=[/(?:,\s*)?\bon\s+(?:1m|3m|5m|15m|30m|1h|2h|4h|8h|12h|1d)\b/gi,/(?:,\s*)?\bstop\s*loss\s*\d+(?:\.\d+)?\s*%?/gi,/(?:,\s*)?\btake\s*profit\s*\d+(?:\.\d+)?\s*%?/gi,/(?:,\s*)?\bleverage\s*\d+(?:\.\d+)?/gi,/(?:,\s*)?\bposition\s*size\s*\d+(?:\.\d+)?\s*%?/gi,/(?:,\s*)?\bmax\s*notional\s*(?:usd\s*)?\$?\s*\d+(?:\.\d+)?/gi];A.kind==="ema_cross"&&r.push(/(?:,\s*)?\b(?:exit\s+on\s+reverse|reverse\s+exit)\b/gi);for(let n of r)t=t.replace(n,"");return t.replace(/[\s,;]+/g,"")===""}function iw(e){let A=Math.max(2,Math.floor(e/2));return{value:e,min:Math.max(2,e-A),max:Math.min(500,e+A),step:1}}function ST({side:e,coin:A,interval:t,risk:r,expiresAt:n,id:s,name:i,spec:o}){let a=[{id:"c",type:"input",field:"close"},{id:"emaLeft",type:"indicator",indicator:"ema",input:"c",period:{param:"ema_left_period"}},{id:"emaRight",type:"indicator",indicator:"ema",input:"c",period:{param:"ema_right_period"}},{id:"cross",type:"cross",direction:o.direction,left:"emaLeft",right:"emaRight"}],g={entryLong:null,entryShort:null,exitLong:null,exitShort:null};if(e==="long"?g.entryLong="cross":g.entryShort="cross",o.reverse){let l=o.direction==="above"?"below":"above";a.push({id:"crossRev",type:"cross",direction:l,left:"emaLeft",right:"emaRight"}),e==="long"?g.exitLong="crossRev":g.exitShort="crossRev"}return{version:1,id:s,name:i,venue:"hyperliquid",market:{coin:A,interval:t},parameters:{ema_left_period:iw(o.fast),ema_right_period:iw(o.slow)},nodes:a,rules:g,risk:{...r,expiresAt:n}}}function NT({side:e,coin:A,interval:t,risk:r,expiresAt:n,id:s,name:i,spec:o}){let a=[{id:"c",type:"input",field:"close"},{id:"rsi",type:"indicator",indicator:"rsi",input:"c",period:o.period},{id:"thr",type:"constant",value:o.threshold},{id:"sig",type:"compare",op:o.op==="above"?"gt":"lt",left:"rsi",right:"thr"}];return{version:1,id:s,name:i,venue:"hyperliquid",market:{coin:A,interval:t},parameters:{},nodes:a,rules:{entryLong:e==="long"?"sig":null,entryShort:e==="short"?"sig":null,exitLong:null,exitShort:null},risk:{...r,expiresAt:n}}}function MT({side:e,coin:A,interval:t,risk:r,expiresAt:n,id:s,name:i,spec:o}){let a=[{id:"fr",type:"input",field:"fundingRate"},{id:"thr",type:"constant",value:o.threshold},{id:"sig",type:"compare",op:o.op==="above"?"gt":"lt",left:"fr",right:"thr"}];return{version:1,id:s,name:i,venue:"hyperliquid",market:{coin:A,interval:t},parameters:{},nodes:a,rules:{entryLong:e==="long"?"sig":null,entryShort:e==="short"?"sig":null,exitLong:null,exitShort:null},risk:{...r,expiresAt:n}}}function Fl(e,A={}){if(typeof e!="string")throw new Fe("prompt must be a string");if(e.length>1e3)throw new Fe("prompt length must be <= 1000");if(!CT(A))throw new Fe("options must be a plain object");if(!Number.isInteger(A.nowMs))throw new Fe("options.nowMs is required integer epoch ms");let t=A.nowMs,r=hT;if("expiresInMs"in A){if(!Number.isInteger(A.expiresInMs))throw new Fe("expiresInMs must be an integer");if(r=A.expiresInMs,r<uT||r>IT)throw new Fe("expiresInMs must be between 1h and 30d")}if(ET.test(e))throw new Fe(`prompt appears to contain secrets and is rejected. ${Xr}`);let n=fT(e);if(!n)throw new Fe(`empty prompt. ${Xr}`);if(mT(n))throw new Fe(`duplicate interval or risk clause. ${Xr}`);let s=dT(n),i=wT(n),o=yT(n);if(!s||!i||!o)throw new Fe(`could not parse side/coin/interval. ${Xr}`);let a=pT(n);if(!(a.maxLeverage>0)||a.maxLeverage>50)throw new Fe("leverage out of range");if(!(a.positionSizePct>0)||a.positionSizePct>100)throw new Fe("position size out of range");let g=t+r,l=DT(n),c=`Draft ${i} ${s}`.slice(0,100),Q=kT(n),B=bT(n),E=FT(n),u=[Q,B,E].filter(Boolean);if(u.length!==1)throw new Fe(`unsupported or ambiguous prompt. ${Xr}`);if(!RT(n,u[0]))throw new Fe(`unsupported or ambiguous prompt. ${Xr}`);let h,I=u[0],C={side:s,coin:i,interval:o,risk:a,expiresAt:g,id:l,name:c,spec:I};I.kind==="ema_cross"?h=ST(C):I.kind==="rsi"?h=NT(C):h=MT(C);let D=uo(h,{nowMs:t});if(!D.ok)throw new Fe(`draft failed validation: ${D.errors.map(f=>f.message).join("; ")}`);return bl(Le(h,{nowMs:t}))}import XA from"node:fs";import ho from"node:path";var Sl=1,UT=["privatekey","secretkey","seed","mnemonic","passphrase","password","keystore","keymaterial","apikey","authtoken","accesstoken","refreshtoken","credential","bearer","signature","authorization","xprv","xpriv","wif"];function Co(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function LA(e){return e==null?e:JSON.parse(JSON.stringify(e))}function LT(e){return String(e).toLowerCase().replace(/[^a-z0-9]/g,"")}function jr(e,A="record"){if(Array.isArray(e)){e.forEach((t,r)=>jr(t,`${A}[${r}]`));return}if(Co(e))for(let[t,r]of Object.entries(e)){let n=LT(t);if(UT.some(s=>n.includes(s)))throw new Error(`shadow-store: forbidden secret-like field at ${A}.${t}`);jr(r,`${A}.${t}`)}}function TT(e){if(typeof e!="string"||!e||!ho.isAbsolute(e))throw new Error("shadow-store: path must be an absolute path")}function ow(e){let A;try{A=XA.lstatSync(e)}catch(r){if(r&&r.code==="ENOENT")return;throw r}if(A.isSymbolicLink())throw new Error("shadow-store: store path must not be a symlink");if(!A.isFile())throw new Error("shadow-store: store path must be a regular file");if(A.mode&511&18)throw new Error("shadow-store: store file must not be group or world writable")}function xT(){return{version:Sl,runners:[]}}function aw(e,A){let t;try{t=JSON.parse(e)}catch{throw new Error("shadow-store: malformed JSON")}if(!Co(t))throw new Error("shadow-store: malformed JSON root");if(t.version!==Sl)throw new Error(`shadow-store: unsupported version ${t.version}`);if(!Array.isArray(t.runners))throw new Error("shadow-store: runners must be an array");return jr(t,ho.basename(A)),{version:Sl,runners:t.runners.map(r=>LA(r))}}function cw(e,A){jr(A,"store");let t=ho.dirname(e);XA.mkdirSync(t,{recursive:!0,mode:448});let r=ho.join(t,`.shadow-store.${process.pid}.${Date.now()}.tmp`),n=`${JSON.stringify(A)}
47
- `;try{XA.writeFileSync(r,n,{mode:384,flag:"wx"}),XA.renameSync(r,e);try{XA.chmodSync(e,384)}catch{}}catch(s){try{XA.unlinkSync(r)}catch{}throw s}}var Rl=new Map;function Nl(e={}){let A=e.path;if(TT(A),ow(A),XA.existsSync(A)?aw(XA.readFileSync(A,"utf8"),A):cw(A,xT()),Rl.has(A))return Rl.get(A);let t=!1,r=[];function n(){if(t)return;let E=r.shift();if(E){t=!0;try{let u=E.fn();t=!1,E.resolve(u),n()}catch(u){t=!1,E.reject(u),n()}}}function s(E){if(!t&&r.length===0){t=!0;try{return E()}finally{t=!1,queueMicrotask(n)}}return new Promise((u,h)=>{r.push({fn:E,resolve:u,reject:h}),queueMicrotask(n)})}function i(){return ow(A),aw(XA.readFileSync(A,"utf8"),A)}function o(E){cw(A,E)}function a(E){if(!Co(E)||typeof E.id!="string"||!E.id)throw new Error("shadow-store: create requires record with string id");jr(E,"record");let u=i();if(u.runners.some(I=>I.id===E.id))throw new Error(`shadow-store: runner id already exists: ${E.id}`);let h=LA(E);return u.runners.push(h),o(u),LA(h)}function g(E){let u=i().runners.find(h=>h.id===E);return u?LA(u):null}function l(){return i().runners.map(E=>LA(E))}function c(E,u){if(typeof u!="function")throw new Error("shadow-store: updater must be a function");let h=i(),I=h.runners.findIndex(f=>f.id===E);if(I<0)throw new Error(`shadow-store: runner not found: ${E}`);let C=LA(h.runners[I]),D=u(C);if(!Co(D)||D.id!==E)throw new Error("shadow-store: updater must return record with same id");return jr(D,"record"),h.runners[I]=LA(D),o(h),LA(h.runners[I])}function Q(E){let u=i(),h=u.runners.findIndex(C=>C.id===E);if(h<0)throw new Error(`shadow-store: runner not found: ${E}`);let I=LA(u.runners[h]);return I.status!=="stopped"&&(I.status="stopped",u.runners[h]=I,o(u)),LA(u.runners[h])}let B={create(E){return s(()=>a(E))},get(E){return g(E)},list(){return l()},update(E,u){return s(()=>c(E,u))},stop(E){return s(()=>Q(E))}};return Rl.set(A,B),B}import{createHash as Ll}from"node:crypto";function Ml(e){return e==null?e:JSON.parse(JSON.stringify(e))}function Ul(e){return Array.isArray(e)?e.map(Ul):e&&typeof e=="object"?Object.fromEntries(Object.keys(e).sort().map(A=>[A,Ul(e[A])])):e}function lw(e){if(!e||typeof e!="object"||Array.isArray(e))throw new TypeError("shadow-runner: record must be an object");return Ll("sha256").update(JSON.stringify(Ul(e))).digest("hex")}function YT(e,A,t,r,n){return Ll("sha256").update(`${e}|${A}|${t}|${r}|${n}`).digest("hex")}function GT(e,A,t,r){return Ll("sha256").update(`shadow|${e}|${A}|${t}|${r??""}`).digest("hex")}function JT(e){return e==="entryLong"||e==="exitShort"?"buy":e==="entryShort"||e==="exitLong"?"sell":e}function gw(e){return e==="entryLong"||e==="entryShort"}function fo({storePath:e,clock:A=Date.now}={}){if(typeof e!="string"||!e)throw new Error("shadow-runner: storePath required");let t=Nl({path:e});function r({strategy:a,evidenceId:g=null}={}){let l=Ue(a),c=g==null?null:String(g),Q=t.list().filter(I=>I.status==="running"&&I.strategyHash===l.strategyHash&&I.compilerHash===l.compilerHash&&I.evidenceId===c).sort((I,C)=>I.createdAt-C.createdAt||I.id.localeCompare(C.id))[0];if(Q)return Ml(Q);let B=A(),E=GT(B,l.strategyHash,l.compilerHash,c),u=t.get(E);if(u)return Ml(u);let h={id:E,strategy:Ml(l.strategy),strategyHash:l.strategyHash,compilerHash:l.compilerHash,evidenceId:c,status:"running",cursor:null,intendedOrders:[],fills:[],missedFills:[],markouts:[],createdAt:B,updatedAt:B,position:null,cooldownBarsRemaining:0,cooldownStartT:null,lastProcessedBarIndex:-1};return t.create(h)}function n(a){return t.get(a)}function s(){return t.list()}function i(a){return t.stop(a)}function o(a,g,{markoutHorizons:l=[1,4,12]}={}){if(!Array.isArray(g))throw new TypeError("shadow-runner: bars must be an array");return t.update(a,c=>{if(c.status!=="running")throw new Error("shadow-runner: runner is stopped");if(g.length===0)return c;let B=Ue(c.strategy).evaluateAll(g),E=new Map;for(let w=0;w<g.length;w++)E.set(g[w].t,w);let u=c.cursor,h=[];for(let w=0;w<g.length;w++){let H=g[w].t;(u==null||H>u)&&h.push(w)}if(h.length===0)return c;let I=new Map(c.intendedOrders.map(w=>[w.id,w])),C=new Set(c.fills.map(w=>w.orderId)),D=new Map(c.missedFills.map(w=>[w.orderId,w])),f=(w,H)=>`${w}|${H}`,R=new Map(c.markouts.map(w=>[f(w.orderId,w.horizon),w])),S=c.position?{...c.position}:null,d=Number.isInteger(c.cooldownBarsRemaining)?Math.max(0,c.cooldownBarsRemaining):0,se=Number.isFinite(c.cooldownStartT)?c.cooldownStartT:null;function De({action:w,signalBarT:H,signalIndex:q}){let ee=JT(w),j=YT(c.id,c.strategyHash,H,ee,w);if(I.has(j))return I.get(j);let _=q+1,te=_<g.length,Re={id:j,action:w,type:w,side:ee,signalBarT:H,fillBarT:te?g[_].t:null,status:te?"open":"missed"};return I.set(j,Re),c.intendedOrders.push(Re),Re}function Te(w,H,q){if(C.has(w.id))return;let ee={orderId:w.id,action:gw(w.action)?"entry":"exit",side:w.side,price:H.o,barT:H.t,signalBarT:w.signalBarT,barIndex:q};if(c.fills.push(ee),C.add(w.id),w.status="filled",w.fillBarT=H.t,D.has(w.id)&&(D.delete(w.id),c.missedFills=c.missedFills.filter(j=>j.orderId!==w.id)),gw(w.action)){S={side:w.action==="entryLong"?"long":"short",entryOrderId:w.id,entryBarT:H.t,entryPrice:H.o,entryBarIndex:q};for(let j of l){let _=f(w.id,j);if(R.has(_))continue;let te={orderId:w.id,horizon:j,entryBarT:H.t,entryPrice:H.o,side:S.side,status:"pending",close:null,barT:null};R.set(_,te),c.markouts.push(te)}}else S=null,d=Number(c.strategy?.risk?.cooldownBars)||0,se=H.t}function me(w){if(C.has(w.id)||D.has(w.id))return;let H={orderId:w.id,action:w.action,side:w.side,signalBarT:w.signalBarT,status:"missed"};D.set(w.id,H),c.missedFills.push(H),w.status="missed"}for(let w of c.intendedOrders){if(w.status==="filled"||C.has(w.id))continue;let H=E.get(w.signalBarT);if(H==null)continue;let q=H+1;q<g.length&&(u==null||g[q].t>u)&&Te(w,g[q],q)}for(let w of h){let H=g[w],q=B[w].signals,ee=S,j=te=>{if(S||d>0&&(se==null||H.t>=se))return;let fe=De({action:te,signalBarT:H.t,signalIndex:w}),dA=w+1;dA<g.length?Te(fe,g[dA],dA):me(fe)},_=te=>{if(!S||S.side==="long"&&te!=="exitLong"||S.side==="short"&&te!=="exitShort")return;let Re=De({action:te,signalBarT:H.t,signalIndex:w}),fe=w+1;fe<g.length?Te(Re,g[fe],fe):me(Re)};ee?(q.exitLong&&_("exitLong"),q.exitShort&&_("exitShort")):q.entryLong&&q.entryShort||(q.entryLong&&j("entryLong"),q.entryShort&&j("entryShort")),d>0&&se!=null&&H.t>=se&&(d-=1,d===0&&(se=null)),c.cursor=H.t,c.lastProcessedBarIndex=w}for(let w of c.markouts){if(w.status!=="pending")continue;let H=c.fills.find(j=>j.orderId===w.orderId&&j.action==="entry");if(!H)continue;let q=E.get(H.barT);if(q==null)continue;let ee=q+w.horizon;if(ee<g.length){w.close=g[ee].c,w.barT=g[ee].t,w.status="filled";let j=w.entryPrice;w.markout=w.side==="long"?(w.close-j)/j:(j-w.close)/j}}return c.position=S,c.cooldownBarsRemaining=d,c.cooldownStartT=se,c.updatedAt=A(),c})}return{start:r,step:o,list:s,get:n,stop:i}}import HT from"node:os";import VT from"node:path";var vT=["privatekey","secretkey","seed","mnemonic","passphrase","password","keystore","keymaterial","apikey","authtoken","accesstoken","refreshtoken","credential","bearer","signature","authorization","xprv","xpriv","wif"];function cs(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function qT(e){return String(e).toLowerCase().replace(/[^a-z0-9]/g,"")}function xl(e){if(Array.isArray(e)){for(let A of e)xl(A);return}if(cs(e))for(let[A,t]of Object.entries(e)){if(vT.some(r=>qT(A).includes(r)))throw new Error(`strategy service: secret-like field "${A}" is forbidden`);xl(t)}}function WT(e){if(!cs(e))throw new TypeError("strategy input must be a plain object");return xl(e),e}function PT(e,A={}){if(A.nowMs!==void 0){if(!Number.isInteger(A.nowMs))throw new TypeError("nowMs must be an integer epoch milliseconds");return A.nowMs}let t=Date.now();if(e.nowMs===void 0||e.nowMs===null)return t;if(!Number.isInteger(e.nowMs))throw new TypeError("nowMs must be an integer epoch milliseconds");if(Math.abs(e.nowMs-t)>12e4)throw new Error("nowMs outside allowed wall-clock skew (120s); omit nowMs to use server time");return e.nowMs}async function Tl(e,A,t,r){if(Array.isArray(A.bars))return A.bars;let n=Qo(e.venue),s=t.fetchBars??n.fetchBars;if(typeof s!="function")throw new Error(`strategy venue ${n.id} does not support history`);let i=await s({coin:e.market.coin,interval:e.market.interval,count:A.count??1500,endTime:A.endTime??r}),o=Array.isArray(i)?i:i?.bars;if(!Array.isArray(o))throw new Error("strategy history provider returned no bars");return o}function Yl(e,A){let t=e.backtestOptions??{};if(!cs(t))throw new TypeError("backtestOptions must be a plain object");return{...t,nowMs:A}}function Qw(e,A,t,r,n={}){let s=e.evidenceOptions??{};if(!cs(s))throw new TypeError("evidenceOptions must be a plain object");return{...s,...n,strategy:A,bars:t,backtestOptions:Yl(e,r)}}function Ew(){return VT.join(HT.homedir(),".oracle","strategy-shadow.json")}function OT(e,A){return{perStrategyNotionalUsd:e.risk.maxNotionalUsd,maxLeverage:e.risk.maxLeverage,dailyLossCapUsd:e.risk.maxNotionalUsd*(e.risk.maxDailyLossPct/100),chainAllowlist:[e.venue],assetAllowlist:[e.market.coin],expiresAt:Math.min(e.risk.expiresAt,A+864e5),killSwitchRequired:!0}}async function zT(e,A={},t={}){let r=WT(A),n=PT(r,t);if(e==="draft")return{strategy:Fl(r.prompt,{nowMs:n})};if(e==="validate"){let s=Ue(r.strategy);if(s.strategy.risk.expiresAt<=n)throw new Error("strategy is expired");return{valid:!0,strategy:s.strategy,strategyHash:s.strategyHash,compilerHash:s.compilerHash,compilerVersion:s.compilerVersion,requiredSeries:s.requiredSeries}}if(e==="backtest"||e==="evidence"){let s=Ue(r.strategy),i=await Tl(s.strategy,r,t,n);ss(s,i);let o=go(Qw(r,s.strategy,i,n));return e==="evidence"?o:{backtest:KA(s.strategy,i,Yl(r,n)),evidence:o}}if(e==="optimize"){let s=Ue(r.strategy),i=await Tl(s.strategy,r,t,n);ss(s,i);let o=r.trainFraction,a=r.evidenceOptions?.trainFraction;if(o!=null&&a!=null&&o!==a)throw new TypeError("conflicting trainFraction controls are forbidden");let g=o??a??.7;if(typeof g!="number"||g<=0||g>=1)throw new TypeError("trainFraction must be in (0,1)");let l=i.slice(0,Math.floor(i.length*g)),c=r.options??{};if(!cs(c))throw new TypeError("options must be a plain object");let Q=kl(s.strategy,l,{...c,...r.maxTrials==null?{}:{maxTrials:r.maxTrials},backtestOptions:Yl(r,n)}),B=Q.bestStrategy;return{strategy:B,optimization:Q,evidence:go(Qw(r,B,i,n,{trainFraction:g}))}}if(e==="shadow"){let s=fo({storePath:t.storePath??Ew(),clock:()=>n}),i=r.action;if(i==="start")return await s.start({strategy:r.strategy,evidenceId:r.evidenceId??r.evidence?.id??null});if(i==="list")return await s.list();if(i==="get")return await s.get(r.id);if(i==="stop")return await s.stop(r.id);if(i==="step"){let o=await s.get(r.id);if(!o)throw new Error(`shadow runner not found: ${r.id}`);let a=await Tl(o.strategy,r,t,n);return ss(Ue(o.strategy),a),await s.step(r.id,a,r.stepOptions??{})}throw new Error(`unknown shadow action: ${i}`)}if(e==="prepare"){let s=Ue(r.strategy),i=Qo(s.strategy.venue);if(typeof r.shadowId!="string"||!r.shadowId)throw new Error("strategy prepare requires a matching shadow runner id");let a=await fo({storePath:t.storePath??Ew(),clock:()=>n}).get(r.shadowId);if(!a)throw new Error("strategy prepare shadow runner not found");if(a.status!=="running")throw new Error("strategy prepare requires an active shadow runner");if(!Number.isFinite(a.cursor))throw new Error("strategy prepare requires a stepped shadow runner");if(a.strategyHash!==s.strategyHash||a.compilerHash!==s.compilerHash)throw new Error("strategy prepare shadow runner does not match strategy artifacts");if(a.evidenceId!==r.evidence?.id)throw new Error("strategy prepare shadow runner does not match evidence artifact");let g=r.caps??OT(s.strategy,n);return i.prepareIntent({strategy:s.strategy,evidence:r.evidence,shadow:{id:a.id,stateHash:lw(a),status:a.status,cursor:a.cursor,updatedAt:a.updatedAt},caps:g,nowMs:n,env:t.env??process.env})}throw new Error(`unknown strategy operation: ${e}`)}export{Td as EVIDENCE_STATUSES,ml as MAX_OPTIMIZER_TRIALS,It as STRATEGY_COMPILER_HASH,Or as STRATEGY_COMPILER_VERSION,Eo as STRATEGY_VERSION,Fe as StrategyDraftError,zt as StrategyValidationError,zr as applyParameterOverrides,Ql as assertEvidenceArtifact,nl as atr,KA as backtestStrategy,rl as bollinger,tw as canonicalStrategyJson,Ue as compileStrategy,ll as computeEvidenceArtifactId,fo as createShadowRunner,Fl as draftStrategyFromPrompt,ts as ema,go as evaluateEvidence,hl as fetchHyperliquidStrategyBars,Hd as intervalToMs,tl as macd,Vd as normalizeHyperliquidCandles,Le as normalizeStrategy,Nl as openShadowStore,kl as optimizeStrategy,Il as prepareStrategyLiveHandoff,Qo as requireStrategyVenue,lo as resolveStrategyVenue,Al as rsi,zT as runStrategyOperation,el as sma,Pt as strategyHash,zL as strategyVenues,uo as validateStrategy};
1
+ import{createHash as ko}from"node:crypto";import{createHash as cn}from"node:crypto";import ue from"node:net";import nn from"node:dns";var on=new Set(["localhost","metadata.google.internal","metadata.goog"]);function He(e){let t=String(e).toLowerCase().split("%")[0];if((t.match(/::/g)||[]).length>1)return null;let r=d=>{if(!d)return[];let c=d.split(":"),f=c.at(-1);if(f?.includes(".")){let m=f.split(".").map(Number);if(m.length!==4||m.some(p=>!Number.isInteger(p)||p<0||p>255))return null;c.splice(c.length-1,1,(m[0]<<8|m[1]).toString(16),(m[2]<<8|m[3]).toString(16))}return c.some(m=>!/^[0-9a-f]{1,4}$/.test(m))?null:c.map(m=>Number.parseInt(m,16))},[n,o]=t.split("::"),a=r(n),i=r(o);if(!a||!i)return null;let s=t.includes("::"),l=8-a.length-i.length;if(!s&&l!==0||s&&l<1)return null;let u=[...a,...Array(Math.max(0,l)).fill(0),...i];return u.length!==8?null:Uint8Array.from(u.flatMap(d=>[d>>8,d&255]))}function rt(e,t,r){let n=Math.floor(r/8),o=r%8;for(let i=0;i<n;i+=1)if(e[i]!==t[i])return!1;if(!o)return!0;let a=255<<8-o;return(e[n]&a)===(t[n]&a)}function nt(e){if(ue.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(ue.isIPv6(e)){let t=He(e);if(!t)return!1;let r=He("::ffff:0:0");return rt(t,r,96)?nt([...t.slice(12)].join(".")):rt(t,He("2000::"),3)?![["2001::",23],["2001:db8::",32],["2001:10::",28],["2001:2::",48],["2002::",16],["3fff::",20]].some(([o,a])=>rt(t,He(o),a)):!1}return!1}function sn(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(on.has(r)||r.endsWith(".localhost")||r.endsWith(".internal"))return{ok:!1,error:`refused internal host ${r}`};let n=ue.isIP(r);return n!==0&&!nt(r)?{ok:!1,error:`refused private address ${r}`}:{ok:!0,url:t,host:r,isLiteralIp:n!==0}}async function ot(e,{lookupFn:t=nn.promises.lookup}={}){let r=sn(e);if(!r.ok)return r;if(r.isLiteralIp)return{ok:!0,url:r.url,addresses:[{address:r.host,family:ue.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=>!nt(o.address))?{ok:!1,error:`refused: ${r.host} resolves to a non-public address`}:{ok:!0,url:r.url,addresses:n}}async function st({requireUndici:e=!1,importUndici:t=()=>import("undici")}={}){let r,n;try{let c=await t();r=c.Agent,n=c.fetch}catch(c){if(e)throw new Error(`egress-guard: untrustedUrl pinning requires the undici package, which failed to load: ${c?.message||c}`);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=c=>String(c).toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,""),a=new Map,i=c=>(Array.isArray(c)?c:[c]).map(f=>typeof f=="string"?{address:f}:f).filter(f=>f&&f.address).map(f=>({address:f.address,family:f.family||(ue.isIPv6(f.address)?6:4)})),s=(c,f,m)=>{a.set(o(c),i(typeof f=="string"?[{address:f,family:m}]:f))},l=c=>{let f=o(c);if(ue.isIP(f))return[{address:f,family:ue.isIPv6(f)?6:4}];let m=a.get(f);if(!m||!m.length)throw new Error(`refused: unpinned host ${c} during pinned fetch`);return m},u=new r({connect:{lookup(c,f,m){let p;try{p=l(c)}catch(y){return m(y)}return f?.all?m(null,p):m(null,p[0].address,p[0].family)}}}),d=an((c,f={})=>n(c,{...f,dispatcher:u}),s);return{dispatcher:u,fetch:d,pin:s,resolve:l,async close(){try{await u.destroy()}catch{}}}}var it=Symbol.for("oracle.egressGuard.pinCapableFetch");function an(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[it]=Object.freeze({pin:t}),e}function at(e){return typeof e=="function"&&typeof e[it]?.pin=="function"}function tr(e,t,r){if(!at(e))throw new Error("pinFetchToAddresses: fetchImpl is not pin-capable");e[it].pin(t,r)}var ln=new Set([408,425,429,500,502,503,504]),rr=new Set(["GET","HEAD","OPTIONS","PUT","DELETE"]),un=2,nr=4e3,ar=["authorization","x-api-key","x-tensor-api-key","0x-api-key","api-key","cookie","proxy-authorization"],fn=new Set([301,302,303,307,308]),or=3,dn=64*1024;function pn(e){let t=String(e||"").toLowerCase();return ar.includes(t)||/(^|-)(api[-_]?key|key|token|secret|auth|authorization|session|cookie|signature|access)(-|$)/.test(t)}function mn(e){let t={};for(let[r,n]of Object.entries(e||{}))pn(r)||(t[r]=n);return t}function hn(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 yn(e,t){return new URL(String(e)).origin===new URL(String(t)).origin}var ct=new Map;function wn(e,t,r,n={}){let o={};for(let[d,c]of Object.entries(r||{}))o[d.toLowerCase()]=c;let a=Object.keys(o).filter(d=>/(^|-)(api[-_]?key|key|token|secret|auth|authorization|session|cookie|signature|access)(-|$)/.test(d)),s=[...new Set([...ar,...a])].sort().map(d=>`${d}=${o[d]??""}`).join(`
2
+ `),l=cn("sha256").update(s).digest("hex").slice(0,32),u=`${n.untrustedUrl?"untrusted":"trusted"}:${n.maxResponseBytes??"unbounded"}`;return`${e} ${t} ${u} ${l}`}function gn(e,t){let r=Number(t);return Number.isFinite(r)&&r>0?Math.min(r*1e3,nr):Math.min(250*2**e,nr)+Math.floor(Math.random()*100)}var bn=e=>new Promise(t=>setTimeout(t,e));function Pe(e,t={}){let r=new Error(e);return r.retryable=!1,Object.assign(r,t),r}function lt(e,t,r){return Pe(`HTTP response from ${e} exceeded maxResponseBytes ${r} (${t})`,{oversize:!0})}function $e(e){try{let t=e?.body?.cancel?.();t&&typeof t.then=="function"&&t.catch(()=>{})}catch{}}function En(e){return e?e.byteLength??e.length??0:0}async function sr(e,t,{url:r,truncate:n=!1,onOversize:o}={}){if(t==null)return await e.text();let a=Number(e.headers?.get?.("content-length"));if(Number.isFinite(a)&&a>t&&($e(e),!n))throw lt(r,`content-length ${a}`,t);let i=e.body?.getReader?.();if(!i){let c=await e.text(),f=Buffer.byteLength(c,"utf8");if(f>t){if(!n)throw lt(r,`body ${f} bytes`,t);return Buffer.from(c,"utf8").subarray(0,t).toString("utf8")}return c}let s=[],l=0,u=!1;try{for(;;){let{value:c,done:f}=await i.read();if(f)break;if(c&&(s.push(Buffer.from(c)),l+=En(c),l>t)){u=!0;break}}}finally{if(u)try{await i.cancel()}catch{}try{i.releaseLock?.()}catch{}}if(u&&(typeof o=="function"&&o(),!n))throw lt(r,`streamed ${l} bytes`,t);let d=Buffer.concat(s);return(u?d.subarray(0,t):d).toString("utf8")}function ir(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}async function xn(e,{fetchImpl:t,method:r,headers:n,body:o,timeoutMs:a,lookupFn:i,realFetch:s,untrustedUrl:l=!1,maxResponseBytes:u=null,importUndici:d,validateResponse:c}){let f=new AbortController,m=setTimeout(()=>f.abort(),a),p=null,y=t,x=i?{lookupFn:i}:{};if(l&&!s&&!at(y))throw Pe(`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 k=async(S,{status:T=null}={})=>{let E=await ot(S,x);if(!E.ok)throw Pe(T==null?`HTTP refused ${S}: ${E.error}`:`HTTP redirect to ${S} ${E.error}`,T==null?{}:{status:T});let A=new URL(S).hostname;if(s){if(p&&(await p.close(),p=null),!p)try{p=await st({requireUndici:!0,...d?{importUndici:d}:{}})}catch($){throw Pe(T==null?`HTTP refused ${S}: ${$?.message||$}`:`HTTP redirect to ${S} refused: ${$?.message||$}`,T==null?{}:{status:T})}p.pin(A,E.addresses),y=p.fetch}else tr(y,A,E.addresses);return E};try{let S=String(e),T={...n||{}};l&&await k(S);for(let E=0;E<=or;E+=1){let A=await y(S,{method:r,headers:T,body:o,signal:f.signal,redirect:"manual"});if(fn.has(A.status)){if(r!=="GET"&&r!=="HEAD"){let q=await sr(A,u??dn,{url:S,truncate:!0}),h=new Error(`HTTP ${A.status} ${r} ${S} redirected non-idempotent request`);throw h.status=A.status,h.body=ir(q)??q.slice(0,300),h}if(E===or)throw $e(A),new Error(`HTTP redirect loop for ${e}`);let R=A.headers?.get?.("location"),V;try{V=hn(R,S)}catch(q){throw $e(A),q}let G=!yn(V,S);if($e(A),G&&(T=mn(T)),l)await k(V,{status:A.status});else if(G){let q=await ot(V,x);if(!q.ok){let h=new Error(`HTTP redirect from ${S} ${q.error}`);throw h.status=A.status,h.retryable=!1,h}s&&q.addresses?.length&&(p||(p=await st(d?{importUndici:d}:{})),p&&(p.pin(new URL(V).hostname,q.addresses),y=p.fetch))}S=V;continue}if(typeof c=="function")try{await c(A,{url:S})}catch(R){throw $e(A),Pe(R?.message||String(R))}let $=await sr(A,u,{url:S,onOversize:()=>f.abort()}),w=ir($);if(!A.ok){let R=new Error(`HTTP ${A.status} ${r} ${S}`);throw R.status=A.status,R.retryAfter=A.headers?.get?.("retry-after")??null,R.body=w??$.slice(0,300),R}return w??$}throw new Error(`HTTP redirect loop for ${e}`)}finally{clearTimeout(m),p&&await p.close()}}async function cr(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(),a={Accept:"application/json",...t.headers||{}},i=t.body;i!=null&&typeof i!="string"&&(a["Content-Type"]=a["Content-Type"]||"application/json",i=JSON.stringify(i));let s=Number.isInteger(t.retries)?Math.max(t.retries,0):un,l=t.lookupFn,u=!t.fetchImpl,d=t.untrustedUrl===!0,c=t.importUndici,f=t.validateResponse,m=Number(t.maxResponseBytes),p=Number.isFinite(m)&&m>0?Math.floor(m):null,y=async()=>{let E;for(let A=0;A<=s;A++)try{return await xn(e,{fetchImpl:r,method:o,headers:a,body:i,timeoutMs:n,lookupFn:l,realFetch:u,untrustedUrl:d,maxResponseBytes:p,importUndici:c,validateResponse:f})}catch($){E=$;let w=$?.status,R=$?.name==="AbortError",V=new Set([408,425,429]),G=$?.retryable===!1?!1:w!=null?V.has(w)||ln.has(w)&&rr.has(o):!R&&rr.has(o);if(A===s||!G)throw $;await bn(gn(A,$?.retryAfter))}throw E};if(!(t.dedupe!==!1&&o==="GET"&&i==null))return y();let k=wn(o,e,a,{untrustedUrl:d,maxResponseBytes:p}),S=ct.get(k);if(S)return S;let T=y().finally(()=>ct.delete(k));return ct.set(k,T),T}var Sn="https://api.hyperliquid.xyz/info",kn="https://api.hyperliquid-testnet.xyz/info";function An({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"?kn:Sn}async function ut(e,t={}){if(!e||!e.type)throw new Error("hlInfo requires body.type");let r=An(t);return cr(r,{method:"POST",body:e,fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs})}async function lr(e={}){return ut({type:"meta"},e)}async function ur({coin:e,interval:t="1h",startTime:r,endTime:n},o={}){if(!e)throw new Error("hlCandleSnapshot requires coin");let a={type:"candleSnapshot",req:{coin:String(e),interval:t,startTime:r??Date.now()-24*3600*1e3,endTime:n??Date.now()}};return ut(a,o)}async function fr({coin:e,startTime:t,endTime:r},n={}){if(!e)throw new Error("hlFundingHistory requires coin");return ut({type:"fundingHistory",coin:String(e),startTime:t??Date.now()-24*3600*1e3,endTime:r??Date.now()},n)}function _e(e){if(!Array.isArray(e))throw new TypeError("values must be an array");for(let t=0;t<e.length;t++){let r=e[t];if(typeof r!="number"||!Number.isFinite(r))throw new TypeError(`values[${t}] must be a finite number`)}}function ae(e){if(!Number.isInteger(e)||e<=0)throw new TypeError("period must be a positive integer")}function Pn(e){if(!Array.isArray(e))throw new TypeError("bars must be an array");for(let t=0;t<e.length;t++){let r=e[t];if(r==null||typeof r!="object")throw new TypeError(`bars[${t}] must be an object`);for(let n of["o","h","l","c"]){let o=r[n];if(typeof o!="number"||!Number.isFinite(o))throw new TypeError(`bars[${t}].${n} must be a finite number`)}if(r.h<r.l)throw new TypeError(`bars[${t}] high must be >= low`)}}function ft(e,t){_e(e),ae(t);let r=new Array(e.length).fill(null);if(e.length<t)return r;let n=0;for(let o=0;o<e.length;o++)n+=e[o],o>=t&&(n-=e[o-t]),o>=t-1&&(r[o]=n/t);return r}function Te(e,t){_e(e),ae(t);let r=new Array(e.length).fill(null);if(e.length<t)return r;let n=0;for(let i=0;i<t;i++)n+=e[i];let o=n/t;r[t-1]=o;let a=2/(t+1);for(let i=t;i<e.length;i++)o=a*e[i]+(1-a)*o,r[i]=o;return r}function dt(e,t){_e(e),ae(t);let r=new Array(e.length).fill(null);if(e.length<=t)return r;let n=0,o=0;for(let s=1;s<=t;s++){let l=e[s]-e[s-1];l>=0?n+=l:o-=l}let a=n/t,i=o/t;r[t]=dr(a,i);for(let s=t+1;s<e.length;s++){let l=e[s]-e[s-1],u=l>0?l:0,d=l<0?-l:0;a=(a*(t-1)+u)/t,i=(i*(t-1)+d)/t,r[s]=dr(a,i)}return r}function dr(e,t){return e===0&&t===0?50:t===0?100:e===0?0:100-100/(1+e/t)}function pt(e,t={}){_e(e);let r=t.fastPeriod,n=t.slowPeriod,o=t.signalPeriod;if(ae(r),ae(n),ae(o),r>=n)throw new TypeError("fastPeriod must be < slowPeriod");let a=Te(e,r),i=Te(e,n),s=new Array(e.length).fill(null);for(let c=0;c<e.length;c++)a[c]!=null&&i[c]!=null&&(s[c]=a[c]-i[c]);let l=new Array(e.length).fill(null),u=new Array(e.length).fill(null),d=[];for(let c=0;c<s.length;c++)s[c]!=null&&d.push(c);if(d.length>=o){let c=0;for(let y=0;y<o;y++)c+=s[d[y]];let f=c/o,m=d[o-1];l[m]=f,u[m]=s[m]-f;let p=2/(o+1);for(let y=o;y<d.length;y++){let x=d[y];f=p*s[x]+(1-p)*f,l[x]=f,u[x]=s[x]-f}}return{line:s,signal:l,histogram:u}}function mt(e,t={}){_e(e);let r=t.period,n=t.stdDev;if(ae(r),typeof n!="number"||!Number.isFinite(n)||n<=0)throw new TypeError("stdDev must be a finite number > 0");let o=new Array(e.length).fill(null),a=new Array(e.length).fill(null),i=new Array(e.length).fill(null);if(e.length<r)return{upper:a,middle:o,lower:i};let s=0,l=0;for(let u=0;u<e.length;u++){let d=e[u];if(s+=d,l+=d*d,u>=r){let c=e[u-r];s-=c,l-=c*c}if(u>=r-1){let c=s/r,f=l/r-c*c;f<0&&f>-1e-12&&(f=0);let m=Math.sqrt(f);o[u]=c,a[u]=c+n*m,i[u]=c-n*m}}return{upper:a,middle:o,lower:i}}function ht(e,t){Pn(e),ae(t);let r=new Array(e.length).fill(null);if(e.length<t)return r;let n=new Array(e.length);for(let i=0;i<e.length;i++){let s=e[i];if(i===0)n[i]=s.h-s.l;else{let l=e[i-1].c;n[i]=Math.max(s.h-s.l,Math.abs(s.h-l),Math.abs(s.l-l))}}let o=0;for(let i=0;i<t;i++)o+=n[i];let a=o/t;r[t-1]=a;for(let i=t;i<e.length;i++)a=(a*(t-1)+n[i])/t,r[i]=a;return r}import{createHash as $n}from"node:crypto";var yt=2,Tn="93f9c998260e73756c13871dc1a84dd6cdb26ec6113bd1941f023519939db440",_n="68f5b412a9975f04024cf9b9b6209b4bccedd52f176e95f34f786b3f53479c6a",In="f197a38ff1c0f4ebe13326db8cbb8167ea3dd5d62e6033fe97c2fee8d23d96b5",pr=$n("sha256").update(JSON.stringify({version:yt,compilerSourceHash:Tn,indicatorsSourceHash:_n,schemaSourceHash:In})).digest("hex");var ye=yt,ce=pr,On=Object.freeze({open:"o",high:"h",low:"l",close:"c",volume:"v",fundingRate:"fundingRate",openInterest:"openInterest"}),vn=Object.freeze({"1m":6e4,"3m":18e4,"5m":3e5,"15m":9e5,"30m":18e5,"1h":36e5,"2h":72e5,"4h":144e5,"8h":288e5,"12h":432e5,"1d":864e5});function Z(e){return typeof e=="number"&&Number.isFinite(e)}function Nn(e){let t=new Map(e.map(s=>[s.id,s])),r=s=>{switch(s.type){case"indicator":return s.input?[s.input]:[];case"compare":case"cross":return[s.left,s.right];case"logic":return[...s.inputs];default:return[]}},n=new Map,o=new Map;for(let s of e)n.set(s.id,0),o.set(s.id,[]);for(let s of e)for(let l of r(s))t.has(l)&&(o.get(l).push(s.id),n.set(s.id,n.get(s.id)+1));let a=[];for(let[s,l]of n)l===0&&a.push(s);let i=[];for(;a.length;){let s=a.shift();i.push(s);for(let l of o.get(s))n.set(l,n.get(l)-1),n.get(l)===0&&a.push(l)}if(i.length!==e.length)throw new Error("strategy graph is cyclic");return i}function he(e,t){return e!=null&&typeof e=="object"&&"param"in e?t[e.param].value:e}function Mn(e,t,r){if(!Array.isArray(e)||e.length===0)throw new TypeError("bars must be a non-empty array");if(!Number.isInteger(t)||t<0||t>=e.length)throw new RangeError("index out of range");let n=null;for(let o=0;o<=t;o++){let a=e[o];if(a==null||typeof a!="object"||Array.isArray(a))throw new TypeError(`bars[${o}] must be an object`);let{t:i,o:s,h:l,l:u,c:d,v:c}=a;if(!Z(i)&&(typeof i=="number"&&Number.isFinite(i)),!Number.isFinite(i))throw new TypeError(`bars[${o}].t must be finite`);for(let[f,m]of[["o",s],["h",l],["l",u],["c",d],["v",c]])if(!Z(m))throw new TypeError(`bars[${o}].${f} must be a finite number`);for(let[f,m]of[["o",s],["h",l],["l",u],["c",d]])if(!(m>0))throw new TypeError(`bars[${o}].${f} price must be positive`);if(c<0)throw new TypeError(`bars[${o}].v volume must be non-negative`);if(l<Math.max(s,d,u))throw new TypeError(`bars[${o}] high must be >= max(open, close, low)`);if(u>Math.min(s,d,l))throw new TypeError(`bars[${o}] low must be <= min(open, close, high)`);if(n!=null){if(!(i>n))throw new TypeError("bars t must be strictly increasing");if(i-n!==vn[r])throw new TypeError(`bars t must match ${r} cadence`)}if(n=i,"fundingRate"in a&&a.fundingRate!=null&&!Z(a.fundingRate))throw new TypeError(`bars[${o}].fundingRate must be finite when present`);if("openInterest"in a&&a.openInterest!=null){if(!Z(a.openInterest))throw new TypeError(`bars[${o}].openInterest must be finite when present`);if(a.openInterest<0)throw new TypeError(`bars[${o}].openInterest must be non-negative`)}}}function fe(e,t,r,n,o,a){if(a.has(e))return a.get(e);let i=t.get(e),s;switch(i.type){case"input":{let l=On[i.field];s=new Array(o+1);for(let u=0;u<=o;u++){let d=n[u][l];s[u]=d===void 0?null:d}break}case"constant":{let l=he(i.value,r);s=new Array(o+1).fill(l);break}case"indicator":{let l=i.period!=null?he(i.period,r):void 0;if(i.indicator==="atr"){let c=[];for(let f=0;f<=o;f++){let m=n[f];c.push({o:m.o,h:m.h,l:m.l,c:m.c})}s=ht(c,l);break}let d=fe(i.input,t,r,n,o,a).map((c,f)=>{if(c==null||!Z(c))throw new TypeError(`indicator input ${i.input} has non-finite value at ${f}`);return c});if(i.indicator==="sma")s=ft(d,l);else if(i.indicator==="ema")s=Te(d,l);else if(i.indicator==="rsi")s=dt(d,l);else if(i.indicator==="macd")s=pt(d,{fastPeriod:he(i.fastPeriod,r),slowPeriod:he(i.slowPeriod,r),signalPeriod:he(i.signalPeriod,r)})[i.output];else if(i.indicator==="bollinger")s=mt(d,{period:l,stdDev:he(i.stdDev,r)})[i.output];else throw new Error(`unsupported indicator ${i.indicator}`);break}case"compare":{let l=fe(i.left,t,r,n,o,a),u=fe(i.right,t,r,n,o,a);s=new Array(o+1);for(let d=0;d<=o;d++){let c=l[d],f=u[d];if(c==null||f==null||!Z(c)||!Z(f)){s[d]=!1;continue}switch(i.op){case"gt":s[d]=c>f;break;case"gte":s[d]=c>=f;break;case"lt":s[d]=c<f;break;case"lte":s[d]=c<=f;break;case"eq":s[d]=c===f;break;default:s[d]=!1}}break}case"logic":{let l=i.inputs.map(u=>fe(u,t,r,n,o,a));s=new Array(o+1);for(let u=0;u<=o;u++)if(i.op==="not"){let d=l[0][u];s[u]=d===!0?!1:d===!1}else if(i.op==="and"){let d=!0;for(let c of l)if(c[u]!==!0){d=!1;break}s[u]=d}else if(i.op==="or"){let d=!1;for(let c of l)if(c[u]===!0){d=!0;break}s[u]=d}else s[u]=!1;break}case"cross":{let l=fe(i.left,t,r,n,o,a),u=fe(i.right,t,r,n,o,a);s=new Array(o+1),s[0]=!1;for(let d=1;d<=o;d++){let c=l[d-1],f=u[d-1],m=l[d],p=u[d];if(c==null||f==null||m==null||p==null||!Z(c)||!Z(f)||!Z(m)||!Z(p)){s[d]=!1;continue}i.direction==="above"?s[d]=c<=f&&m>p:s[d]=c>=f&&m<p}break}default:throw new Error(`unknown node type ${i.type}`)}return a.set(e,s),s}function K(e,t={}){let r=Y(e);t&&Object.keys(t).length&&(r=we(r,t));let n=new Map(r.nodes.map(m=>[m.id,m])),o=Object.freeze(Nn(r.nodes)),a=r.parameters,i=new Set(r.nodes.filter(m=>m.type==="input").map(m=>m.field));if(r.nodes.some(m=>m.type==="indicator"&&m.indicator==="atr"))for(let m of["open","high","low","close"])i.add(m);let s=Object.freeze([...i].sort()),l=de(r);function u(m,p){let y={};for(let k of o){let S=m.get(k);y[k]=S[p]}let x=k=>k!=null&&y[k]===!0;return{values:y,signals:{entryLong:x(r.rules.entryLong),entryShort:x(r.rules.entryShort),exitLong:x(r.rules.exitLong),exitShort:x(r.rules.exitShort)}}}function d(m,p){Mn(m,p,r.market.interval);let y=new Map;for(let x of o)fe(x,n,a,m,p,y);return y}function c(m,p){return u(d(m,p),p)}function f(m){if(!Array.isArray(m)||m.length===0)throw new TypeError("bars must be a non-empty array");let p=m.length-1,y=d(m,p);return Object.freeze(m.map((x,k)=>Object.freeze(u(y,k))))}return Object.freeze({strategy:r,strategyHash:l,compilerVersion:ye,compilerHash:ce,requiredSeries:s,nodeOrder:o,evaluate:c,evaluateAll:f})}import{createHash as Gn}from"node:crypto";import{createHash as Rn}from"node:crypto";var Fn=Object.freeze({initialEquityUsd:1e4,takerFeeBps:3.5,builderFeeBps:2,slippageBps:2,latencyBars:1,maxVolumeParticipationPct:100});function Ln(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function te(e){return typeof e=="number"&&Number.isFinite(e)}function wt(e){if(e==null||typeof e!="object"||Object.isFrozen(e))return e;if(Array.isArray(e)){for(let t of e)wt(t);return Object.freeze(e)}for(let t of Object.keys(e))wt(e[t]);return Object.freeze(e)}function Ce(e){if(Array.isArray(e))return e.map(Ce);if(e!=null&&typeof e=="object"){let t={};for(let r of Object.keys(e).sort())t[r]=Ce(e[r]);return t}return e}function gt(e,t="result"){if(typeof e=="number"){if(!Number.isFinite(e))throw new Error(`non-finite backtest result at ${t}`);return}if(!(e==null||typeof e!="object")){if(Array.isArray(e)){e.forEach((r,n)=>gt(r,`${t}[${n}]`));return}for(let[r,n]of Object.entries(e))gt(n,`${t}.${r}`)}}function hr(e){if(!Array.isArray(e)||e.length===0)throw new TypeError("bars must be a non-empty array");let t=null;for(let r=0;r<e.length;r++){let n=e[r];if(n==null||typeof n!="object"||Array.isArray(n))throw new TypeError(`bars[${r}] must be an object`);let{t:o,o:a,h:i,l:s,c:l,v:u}=n;if(!te(o))throw new TypeError(`bars[${r}].t must be finite`);for(let[d,c]of[["o",a],["h",i],["l",s],["c",l],["v",u]])if(!te(c))throw new TypeError(`bars[${r}].${d} must be a finite number`);for(let[d,c]of[["o",a],["h",i],["l",s],["c",l]])if(!(c>0))throw new TypeError(`bars[${r}].${d} price must be positive`);if(u<0)throw new TypeError(`bars[${r}].v volume must be non-negative`);if(i<Math.max(a,l,s))throw new TypeError(`bars[${r}] high must be >= max(open, close, low)`);if(s>Math.min(a,l,i))throw new TypeError(`bars[${r}] low must be <= min(open, close, high)`);if(t!=null&&!(o>t))throw new TypeError("bars t must be strictly increasing");if(t=o,"fundingRate"in n&&n.fundingRate!=null&&!te(n.fundingRate))throw new TypeError(`bars[${r}].fundingRate must be finite when present`);if("fundingPaymentRate"in n&&n.fundingPaymentRate!=null&&!te(n.fundingPaymentRate))throw new TypeError(`bars[${r}].fundingPaymentRate must be finite when present`);if("openInterest"in n&&n.openInterest!=null&&!te(n.openInterest))throw new TypeError(`bars[${r}].openInterest must be finite when present`)}}function Ie(e){if(!Array.isArray(e))throw new TypeError("bars must be an array");return e.length>0&&hr(e),Rn("sha256").update(JSON.stringify(Ce(e)),"utf8").digest("hex")}function jn(e){if(e==null&&(e={}),!Ln(e))throw new TypeError("options must be a plain object");let t={...Fn},r=new Set(["initialEquityUsd","takerFeeBps","builderFeeBps","slippageBps","latencyBars","maxVolumeParticipationPct","nowMs"]);for(let n of Object.keys(e))if(!r.has(n))throw new TypeError(`unknown option "${n}"`);if("initialEquityUsd"in e){if(!te(e.initialEquityUsd)||e.initialEquityUsd<=0)throw new TypeError("initialEquityUsd must be a positive finite number");t.initialEquityUsd=e.initialEquityUsd}for(let n of["takerFeeBps","builderFeeBps","slippageBps"])if(n in e){let o=e[n];if(!te(o)||o<0)throw new TypeError(`${n} must be a finite number >= 0`);if(n==="slippageBps"?o>=1e4:o>1e4)throw new TypeError(`${n} exceeds its safe basis-point bound`);t[n]=o}if("latencyBars"in e){let n=e.latencyBars;if(!Number.isInteger(n)||n<1)throw new TypeError("latencyBars must be an integer >= 1");t.latencyBars=n}if("maxVolumeParticipationPct"in e){let n=e.maxVolumeParticipationPct;if(!te(n)||n<=0||n>100)throw new TypeError("maxVolumeParticipationPct must be in (0,100]");t.maxVolumeParticipationPct=n}if("nowMs"in e){if(!Number.isInteger(e.nowMs))throw new TypeError("nowMs must be an integer epoch milliseconds");t.nowMs=e.nowMs}return t}function Ue(e){return e/1e4}function Hn(e,t,r){let n=Ue(r);return t==="long"?e*(1+n):e*(1-n)}function Cn(e,t,r){let n=Ue(r);return t==="long"?e*(1-n):e*(1+n)}function mr(e,t,r){let n=Math.abs(e)*Ue(t),o=Math.abs(e)*Ue(r);return{taker:n,builder:o,total:n+o}}function Un(e,t){let r=e*(t.positionSizePct/100)*t.maxLeverage;return Math.min(r,t.maxNotionalUsd)}function qn(e,t,r){let n=r/100;return t==="long"?e*(1-n):e*(1+n)}function Bn(e,t,r){let n=r/100;return t==="long"?e*(1+n):e*(1-n)}function zn(e,t,r,n){if(!(r>0))return t==="long"?0:Number.POSITIVE_INFINITY;let o=Math.min(.99,1/(2*r)+n/1e4);return t==="long"?e*(1-1/r)/(1-o):e*(1+1/r)/(1+o)}function Dn(e,t,r){return t==="long"?e.l<=r:e.h>=r}function Vn(e,t,r){return t==="long"?e.h>=r:e.l<=r}function Jn(e,t,r){return t==="long"?e.l<=r:e.h>=r}function Oe(e,t){for(let r of e.requiredSeries)if(["fundingRate","openInterest"].includes(r)&&!t.every(n=>te(n?.[r])))throw new Error(`strategy required series is absent: ${r}`)}function Kn(e){if(e.length<3)return 0;let t=[];for(let i=1;i<e.length;i++){let s=e[i-1].equity,l=e[i].equity;s>0&&t.push((l-s)/s)}if(t.length<2)return 0;let r=0;for(let i of t)r+=i;let n=r/t.length,o=0;for(let i of t)o+=(i-n)**2;let a=Math.sqrt(o/(t.length-1));return a>0?n/a:0}function Yn(e){let t=-1/0,r=0;for(let n of e){let o=n.equity;if(o>t&&(t=o),t>0){let a=(t-o)/t*100;a>r&&(r=a)}}return r}function se(e,t,r={}){let n=jn(r);hr(t);let o=Ie(t);n.nowMs!==void 0&&Y(e,{nowMs:n.nowMs});let a=K(e);if(Oe(a,t),n.nowMs!==void 0&&a.strategy.risk.expiresAt<=n.nowMs)throw new Error("strategy is expired: risk.expiresAt must be strictly greater than nowMs");let i=a.strategy.risk,s=a.evaluateAll(t),l=n.latencyBars,u=n.slippageBps,d=n.takerFeeBps,c=n.builderFeeBps,f=n.initialEquityUsd,m=0,p=0,y=0,x=0,k=0,S=[],T=[],E=[],A=[],$=[],w=null,R=0,V=null,G=f,q=!1,h=0,_=0,N=[],L=new Array(t.length).fill(0);function j(b){N.push(b)}function O(b){let I=t[b].v*(n.maxVolumeParticipationPct/100);return Math.max(0,I-L[b])}function M(b){if(!w)return f;let I=w.side==="long"?(b-w.entryPrice)*w.qty:(w.entryPrice-b)*w.qty;return f+I}function J(b,I,P){let H=P.o,v=Un(f,i);if(!(v>0)||!(H>0))return;let C=Hn(H,I,u),F=v/C,z=O(b),ke=C*z;if(F>z){E.push({kind:"entry",barIndex:b,time:P.t,side:I,requestedNotionalUsd:v,maxFillNotionalUsd:ke,reason:"volume_participation"});return}L[b]+=F;let ee=Math.abs(C-H)*F,oe=mr(v,d,c);f-=oe.total,m+=oe.taker,p+=oe.builder,x+=ee,k+=v,w={lifecycleEpoch:++_,side:I,entryBarIndex:b,entryReferencePrice:H,entryPrice:C,qty:F,notionalUsd:v,stop:qn(C,I,i.stopLossPct),take:Bn(C,I,i.takeProfitPct),liq:zn(C,I,i.maxLeverage,d+c),entryFees:oe.taker,entryBuilderFees:oe.builder,entrySlippageUsd:ee,fundingAccrued:0}}function B(b,I,P,H){if(!w)return!1;let v=w.side,C=I,F=C;P!=="liquidation"&&H&&(F=Cn(C,v,u));let z=w.qty,ke=z*F;if(P!=="liquidation"){let er=O(b),rn=F*er;if(z>er)return E.push({kind:"exit",barIndex:b,time:t[b].t,side:v,requestedNotionalUsd:ke,maxFillNotionalUsd:rn,reason:"volume_participation",triggerReason:P}),!1;L[b]+=z}let ee=mr(ke,d,c),oe=P==="liquidation"?0:Math.abs(F-C)*z,Ae,tt;v==="long"?(Ae=(C-w.entryReferencePrice)*z,tt=(F-w.entryPrice)*z):(Ae=(w.entryReferencePrice-C)*z,tt=(w.entryPrice-F)*z),f+=tt,f-=ee.total,m+=ee.taker,p+=ee.builder,x+=oe,k+=ke;let tn={side:v,entryBarIndex:w.entryBarIndex,entryTime:t[w.entryBarIndex].t,entryPrice:w.entryPrice,exitBarIndex:b,exitTime:t[b].t,exitPrice:F,exitReason:P,qty:z,notionalUsd:w.notionalUsd,grossPnlUsd:Ae,feesUsd:w.entryFees+ee.taker,builderFeesUsd:w.entryBuilderFees+ee.builder,fundingUsd:w.fundingAccrued,slippageUsd:w.entrySlippageUsd+oe,netPnlUsd:Ae-(w.entryFees+ee.taker+w.entryBuilderFees+ee.builder)-w.fundingAccrued-(w.entrySlippageUsd+oe)};return S.push(tn),P==="liquidation"&&T.push({barIndex:b,time:t[b].t,side:v,price:F,tradeIndex:S.length-1}),w=null,_+=1,h=b+1+(i.cooldownBars||0),!0}function Q(b,I,P,H){let v=b+1;if(v>=t.length)return;N.some(F=>F.kind==="exit"&&F.side===I&&F.fillBar===v&&F.epoch===H)||j({kind:"exit",side:I,signalBar:b,fillBar:v,reason:P,epoch:H})}function Fe(b){let I=N.filter(P=>P.fillBar===b);for(let P=N.length-1;P>=0;P--)N[P].fillBar===b&&N.splice(P,1);I.sort((P,H)=>{let v=C=>C.kind==="exit"?0:1;return v(P)-v(H)});for(let P of I)if(P.kind==="exit"){if(!w||w.side!==P.side||w.lifecycleEpoch!==P.epoch)continue;let H=P.reason||"rule";B(b,t[b].o,H,!0)||Q(b,P.side,H,P.epoch)}else if(P.kind==="entry"){if(w||P.epoch!==_||b<h)continue;J(b,P.side,t[b])}}function Le(b){if(!w)return;let I=t[b],P=I.fundingPaymentRate;if(P==null||!te(P)||P===0)return;let H=Math.abs(w.qty*I.c),v=P*H;w.side==="long"?(f-=v,w.fundingAccrued+=v,y+=v):(f+=v,w.fundingAccrued-=v,y-=v)}function je(b){if(!w)return;let I=t[b].o;(w.side==="long"?I<=w.liq:I>=w.liq)&&B(b,I,"liquidation",!1)}function Gt(b){if(!w)return;let I=t[b],P=w.side,H=Jn(I,P,w.liq),v=Dn(I,P,w.stop),C=Vn(I,P,w.take),F=z=>P==="long"?Math.min(z,I.o):Math.max(z,I.o);if(H){B(b,F(w.liq),"liquidation",!1);return}if(v&&C){B(b,F(w.stop),"stop_loss",!0)||Q(b,P,"stop_loss",w.lifecycleEpoch);return}if(v){B(b,F(w.stop),"stop_loss",!0)||Q(b,P,"stop_loss",w.lifecycleEpoch);return}C&&(B(b,w.take,"take_profit",!0)||Q(b,P,"take_profit",w.lifecycleEpoch))}for(let b=0;b<t.length;b++){let I=Math.floor(t[b].t/864e5);I!==V&&(V=I,G=M(t[b].o),q=!1),je(b),Fe(b),Gt(b),Le(b),!q&&M(t[b].c)<=G*(1-i.maxDailyLossPct/100)&&(q=!0,A.push({type:"daily_loss_limit",barIndex:b,time:t[b].t,message:"daily loss limit reached; new entries blocked for UTC day"}));let P=s[b].signals,H=b+l;if(w)(w.side==="long"&&P.exitLong===!0||w.side==="short"&&P.exitShort===!0)&&H<t.length&&(N.some(z=>z.kind==="exit"&&z.side===w.side&&z.fillBar===H&&z.epoch===w.lifecycleEpoch)||j({kind:"exit",side:w.side,signalBar:b,fillBar:H,reason:"rule",epoch:w.lifecycleEpoch}));else{let C=P.entryLong===!0,F=P.entryShort===!0;C&&F?A.push({type:"conflicting_entry_signals",barIndex:b,time:t[b].t,message:"conflicting entry signals; no position opened"}):!q&&(C||F)&&H<t.length&&b>=h&&j({kind:"entry",side:C?"long":"short",signalBar:b,fillBar:H,epoch:_})}let v=f;w&&(R+=1,v=M(t[b].c)),$.push({barIndex:b,time:t[b].t,equity:v,positionSide:w?w.side:null})}let Xt=null;if(w){let b=t.length-1;if(B(b,t[b].c,"end_of_data",!0))$[b]={barIndex:b,time:t[b].t,equity:f,positionSide:null};else{let P=M(t[b].c);Xt={side:w.side,entryBarIndex:w.entryBarIndex,entryTime:t[w.entryBarIndex].t,entryPrice:w.entryPrice,qty:w.qty,notionalUsd:w.notionalUsd,markPrice:t[b].c,markedEquityUsd:P},A.push({type:"open_position_at_end",barIndex:b,time:t[b].t,message:"end-of-data exit missed; position remains open and marked"})}}let Zt=(w?M(t[t.length-1].c):f)-n.initialEquityUsd,Zr=Zt/n.initialEquityUsd*100,Wt=0,Ze=0,We=0;for(let b of S)b.netPnlUsd>0?(Wt+=1,Ze+=b.netPnlUsd):b.netPnlUsd<0&&(We+=-b.netPnlUsd);let Qe=S.length,Wr=Qe===0?0:Wt/Qe,et=0;We>0?et=Ze/We:Ze>0&&(et=1e12);let Qr={netPnlUsd:Zt,netPnlPct:Zr,maxDrawdownPct:Yn($),winRate:Wr,profitFactor:et,tradeCount:Qe,sharpe:Kn($),turnoverUsd:k,exposurePct:R/t.length*100},en={initialEquityUsd:n.initialEquityUsd,takerFeeBps:n.takerFeeBps,builderFeeBps:n.builderFeeBps,slippageBps:n.slippageBps,latencyBars:n.latencyBars,maxVolumeParticipationPct:n.maxVolumeParticipationPct},Qt={barsHash:o,strategyHash:a.strategyHash,compilerHash:ce,compilerVersion:ye,config:en,trades:S,equityCurve:$,metrics:Qr,costs:{feesUsd:m,builderFeesUsd:p,fundingUsd:y,slippageUsd:x},liquidations:T,missedFills:E,openPositionAtEnd:Xt,flags:A};return gt(Qt),wt(Ce(Qt))}var gr=Object.freeze(["fail","pass_paper_only","pass_live_eligible"]);function re(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function ge(e){return typeof e=="number"&&Number.isFinite(e)}function xt(e){if(e==null||typeof e!="object"||Object.isFrozen(e))return e;if(Array.isArray(e)){for(let t of e)xt(t);return Object.freeze(e)}for(let t of Object.keys(e))xt(e[t]);return Object.freeze(e)}function pe(e){if(Array.isArray(e))return e.map(pe);if(e!=null&&typeof e=="object"){let t={};for(let r of Object.keys(e).sort())t[r]=pe(e[r]);return t}return e}function bt(e){return{netPnlUsd:e.metrics.netPnlUsd,netPnlPct:e.metrics.netPnlPct,maxDrawdownPct:e.metrics.maxDrawdownPct,winRate:e.metrics.winRate,profitFactor:e.metrics.profitFactor,tradeCount:e.metrics.tradeCount,sharpe:e.metrics.sharpe,turnoverUsd:e.metrics.turnoverUsd,exposurePct:e.metrics.exposurePct}}function yr(e){return{feesUsd:e.costs.feesUsd,builderFeesUsd:e.costs.builderFeesUsd,fundingUsd:e.costs.fundingUsd,slippageUsd:e.costs.slippageUsd}}function Xn(e){return(e.feesUsd||0)+(e.builderFeesUsd||0)+Math.max(0,e.fundingUsd||0)+(e.slippageUsd||0)}function Zn(e){let t=0;for(let r of e.trades)r.grossPnlUsd>0&&(t+=r.grossPnlUsd);return t}function Wn(e,t,r){return!(!e||e.tradeCount<Math.max(1,Math.min(r,3))||!(e.netPnlUsd>0)||!(e.profitFactor>1)||!(e.maxDrawdownPct<=t.maxDailyLossPct))}function br(e){if(!re(e))throw new TypeError("evidence artifact must be a plain object");if(!gr.includes(e.status))throw new TypeError("evidence artifact status is invalid");for(let t of["strategyHash","compilerHash","barsHash"])if(typeof e[t]!="string"||!/^[0-9a-f]{64}$/.test(e[t]))throw new TypeError(`evidence artifact ${t} must be a sha256 hash`);if(!re(e.split))throw new TypeError("evidence artifact split required");if(!Array.isArray(e.flags))throw new TypeError("evidence artifact flags must be an array");if(!re(e.walkForward)||!Array.isArray(e.walkForward.windows))throw new TypeError("evidence artifact walkForward windows required");if(e.status==="pass_live_eligible"&&(!re(e.train)||!re(e.holdout)))throw new TypeError("live-eligible evidence artifact requires train and holdout facts");return pe({barsHash:e.barsHash,compilerHash:e.compilerHash,flags:e.flags.map(t=>pe(t)),holdout:e.holdout??null,split:e.split,status:e.status,strategyHash:e.strategyHash,train:e.train??null,walkForward:{passRate:e.walkForward.passRate,windowsRun:e.walkForward.windowsRun??e.walkForward.windows.length,windows:e.walkForward.windows.map(t=>({index:t.index,trainStartIndex:t.trainStartIndex,trainEndIndex:t.trainEndIndex,passed:t.passed,reason:t.reason,evalStartIndex:t.evalStartIndex,evalEndIndex:t.evalEndIndex,metrics:t.metrics}))}})}function St(e){return Gn("sha256").update(JSON.stringify(br(e)),"utf8").digest("hex")}function W(e,t,r=0){if(!Number.isInteger(e)||e<r)throw new Error(`${t} must be an integer >= ${r}`);return e}function Et(e,t){if(!re(e)||!re(e.metrics))throw new Error(`${t} metrics required`);let r=W(e.tradeCount,`${t}.tradeCount`);if(e.metrics.tradeCount!==r)throw new Error(`${t} tradeCount contradicts metrics.tradeCount`);for(let n of["netPnlUsd","profitFactor","maxDrawdownPct"])if(!ge(e.metrics[n]))throw new Error(`${t}.metrics.${n} must be finite`);if(e.metrics.maxDrawdownPct<0)throw new Error(`${t}.metrics.maxDrawdownPct must be >= 0`);return e.metrics}function Qn(e,{maxDailyLossPct:t}={}){let r=e.split,n=W(r.trainStartIndex,"split.trainStartIndex"),o=W(r.trainEndIndex,"split.trainEndIndex"),a=W(r.trainBarCount,"split.trainBarCount",1),i=W(r.holdoutStartIndex,"split.holdoutStartIndex"),s=W(r.holdoutEndIndex,"split.holdoutEndIndex"),l=W(r.holdoutBarCount,"split.holdoutBarCount",1);if(n!==0||o-n+1!==a||i!==o+1||s-i+1!==l)throw new Error("evidence split must be contiguous, chronological, and count-consistent");if(!ge(r.trainFraction)||r.trainFraction<=0||r.trainFraction>=1)throw new Error("split.trainFraction must be in (0,1)");Et(e.train,"train");let u=Et(e.holdout,"holdout");if(u.tradeCount<1||u.netPnlUsd<=0||u.profitFactor<=1)throw new Error("live-eligible holdout metrics do not pass");if(ge(t)&&u.maxDrawdownPct>t)throw new Error("live-eligible holdout drawdown exceeds strategy risk");if(e.flags.length>0)throw new Error("live-eligible evidence cannot contain failure flags");let d=e.walkForward,c=d.windows;if(c.length<1||d.windowsRun!==c.length)throw new Error("live-eligible walk-forward windowsRun must match nonempty windows");let f=0,m=-1;for(let y=0;y<c.length;y++){let x=c[y];if(!re(x)||x.index!==y||typeof x.passed!="boolean")throw new Error("walk-forward windows must be ordered and structurally valid");let k=W(x.trainStartIndex,`walkForward.windows[${y}].trainStartIndex`),S=W(x.trainEndIndex,`walkForward.windows[${y}].trainEndIndex`),T=W(x.evalStartIndex,`walkForward.windows[${y}].evalStartIndex`),E=W(x.evalEndIndex,`walkForward.windows[${y}].evalEndIndex`);if(k!==0||S>=T||T>E||T<=m)throw new Error("walk-forward windows must be chronological and disjoint");if(m=E,x.passed){if(f+=1,x.reason!=="pass")throw new Error("passed walk-forward window reason must be pass");let A=Et({metrics:x.metrics,tradeCount:x.metrics?.tradeCount},`walkForward.windows[${y}]`);if(A.tradeCount<1||A.netPnlUsd<=0||A.profitFactor<=1)throw new Error("passed walk-forward window metrics do not pass");if(ge(t)&&A.maxDrawdownPct>t)throw new Error("passed walk-forward drawdown exceeds strategy risk")}else if(x.reason==="pass")throw new Error("failed walk-forward window cannot have pass reason")}let p=f/c.length;if(!ge(d.passRate)||Math.abs(d.passRate-p)>Number.EPSILON||p<.6)throw new Error("walk-forward passRate contradicts concrete windows or is below live threshold")}function kt(e,t={}){if(typeof e?.id!="string"||!/^[0-9a-f]{64}$/.test(e.id))throw new Error("evidence.id must be a sha256 evidence artifact hash");let r=br(e),n=pe({id:e.id,...r});if(JSON.stringify(pe(e))!==JSON.stringify(n))throw new Error("evidence artifact contains fields unbound from its deterministic identity");let o=St(e);if(e.id!==o)throw new Error("evidence.id does not match its deterministic artifact facts digest");return e.status==="pass_live_eligible"&&Qn(e,t),e}function qe({strategy:e,bars:t,backtestOptions:r={},trainFraction:n=.7,walkForwardWindows:o=3,minTrades:a=10}={}){let i=[];if(!re(e))throw new TypeError("strategy must be a plain object");if(!Array.isArray(t))throw new TypeError("bars must be an array");if(!re(r))throw new TypeError("backtestOptions must be a plain object");if(!ge(n)||n<=0||n>=1)throw new TypeError("trainFraction must be in (0,1)");if(!Number.isInteger(o)||o<1)throw new TypeError("walkForwardWindows must be a positive integer");if(!Number.isInteger(a)||a<0)throw new TypeError("minTrades must be an integer >= 0");let s=Y(e),l=de(s),u=Ie(t),d=t.length,c=(O=[],M={})=>wr({status:"fail",strategy:s,sHash:l,barsHash:u,split:M.split||{trainStartIndex:0,trainEndIndex:-1,trainBarCount:0,holdoutStartIndex:0,holdoutEndIndex:-1,holdoutBarCount:0,trainFraction:n},train:M.train||null,holdout:M.holdout||null,walkForward:M.walkForward||{windows:[],passRate:0},flags:[...i,...O]});if(d<10)return c([{type:"insufficient_bars",message:"need at least 10 bars for evidence"}]);let f=Math.floor(d*n),m=f,p=d-m;if(f<5||p<3)return c([{type:"invalid_windowing",message:"train/holdout split too small",trainCount:f,holdoutCount:p}]);let y=t.slice(0,f),x=t.slice(m),k,S;try{k=se(s,y,r),S=se(s,x,r)}catch(O){return c([{type:"backtest_error",message:String(O.message||O)}])}let T={metrics:bt(k),costs:yr(k),tradeCount:k.metrics.tradeCount},E={metrics:bt(S),costs:yr(S),tradeCount:S.metrics.tradeCount},A={trainStartIndex:0,trainEndIndex:f-1,trainBarCount:f,holdoutStartIndex:m,holdoutEndIndex:d-1,holdoutBarCount:p,trainFraction:n},$=[],w=Math.floor(d/(o+1));if(w<3)i.push({type:"invalid_windowing",message:"walk-forward window size too small",wfSize:w});else for(let O=0;O<o;O++){let M=w*(O+1),J=M,B=Math.min(d,J+w);if(B-J<3||M<3){$.push({index:O,trainStartIndex:0,trainEndIndex:M-1,evalStartIndex:J,evalEndIndex:B-1,passed:!1,reason:"window_too_small",metrics:null});continue}let Q=t.slice(J,B),Fe;try{Fe=se(s,Q,r)}catch{$.push({index:O,trainStartIndex:0,trainEndIndex:M-1,evalStartIndex:J,evalEndIndex:B-1,passed:!1,reason:"backtest_error",metrics:null});continue}let Le=bt(Fe),je=Wn(Le,s.risk,a);$.push({index:O,trainStartIndex:0,trainEndIndex:M-1,evalStartIndex:J,evalEndIndex:B-1,passed:je,reason:je?"pass":"fail_metrics",metrics:Le})}let R=$.filter(O=>O.passed).length,V=$.length===0?0:R/$.length,G={windows:$,passRate:V,windowsRun:$.length};E.metrics.tradeCount===0&&T.metrics.tradeCount===0&&i.push({type:"no_trades",message:"no trades in train or holdout"}),E.metrics.tradeCount===0&&i.push({type:"absent_oos_trades",message:"holdout produced no trades"}),E.metrics.netPnlUsd<0&&i.push({type:"holdout_loss",message:"holdout netPnlUsd is negative"}),T.metrics.netPnlUsd>0&&E.metrics.netPnlUsd<0&&T.metrics.netPnlUsd>Math.abs(E.metrics.netPnlUsd)*.25?i.push({type:"overfit",message:"profitable train with losing holdout (OOS collapse)"}):T.metrics.netPnlUsd>0&&E.metrics.netPnlUsd>0&&E.metrics.netPnlUsd<T.metrics.netPnlUsd*.1&&T.metrics.tradeCount>=a&&i.push({type:"severe_oos_collapse",message:"holdout pnl collapsed vs train"});let q=Xn(E.costs),h=Zn(S);h>0&&q>h&&i.push({type:"costs_exceed_gross",message:"holdout costs exceed gross gains"});let _=i.some(O=>["insufficient_bars","invalid_windowing","absent_oos_trades","holdout_loss","no_trades","severe_oos_collapse","backtest_error"].includes(O.type)),N=i.some(O=>O.type==="overfit"),L="fail";return E.metrics.tradeCount>=a&&E.metrics.netPnlUsd>0&&E.metrics.profitFactor>1&&E.metrics.maxDrawdownPct<=s.risk.maxDailyLossPct&&V>=.6&&!(h>0&&q>h)&&!N&&!i.some(O=>O.type==="severe_oos_collapse"||O.type==="invalid_windowing")?L="pass_live_eligible":!_&&E.metrics.tradeCount>0&&T.metrics.tradeCount>0&&Number.isFinite(E.metrics.netPnlUsd)?(L="pass_paper_only",E.metrics.tradeCount<a&&i.push({type:"undersampled",message:"holdout trades below minTrades"})):N&&E.metrics.tradeCount>0&&T.metrics.netPnlUsd>0?L="fail":E.metrics.tradeCount>0&&T.metrics.tradeCount>0&&!_?L="pass_paper_only":L="fail",E.metrics.netPnlUsd<0&&(L=L==="pass_live_eligible"?"fail":L==="pass_paper_only"?"pass_paper_only":"fail",L="fail"),wr({status:L,strategy:s,sHash:l,barsHash:u,split:A,train:T,holdout:E,walkForward:G,flags:i})}function wr({status:e,strategy:t,sHash:r,barsHash:n,split:o,train:a,holdout:i,walkForward:s,flags:l}){let u={status:e,strategyHash:r,compilerHash:ce,barsHash:n,split:o,train:a,holdout:i,walkForward:s,flags:l};return u.id=St(u),xt(pe(JSON.parse(JSON.stringify(u))))}import{createHash as eo,createHmac as to,timingSafeEqual as Gs}from"node:crypto";var ro=2,no=300*1e3,oo=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})();function At(e){return e===null||typeof e!="object"?JSON.stringify(e):Array.isArray(e)?`[${e.map(At).join(",")}]`:`{${Object.keys(e).sort().map(r=>`${JSON.stringify(r)}:${At(e[r])}`).join(",")}}`}function Er(e){let t=String(e?.ORACLE_STAMP_HMAC_SECRET||"").trim();return t.length>=16?t:""}function xr(e=process.env){return Er(process.env)||Er(e)}function so(e){let{prepareHash:t,prepareMac:r,note:n,...o}=e||{};return o}function io(e){let t=so(e);return eo("sha256").update(At(t)).digest("hex")}function ao(e,t=xr()){return t?to("sha256",t).update(String(e)).digest("hex"):""}function Sr(e,{provider:t,kind:r,env:n=process.env,nowMs:o=Date.now(),expiresAtMs:a}={}){if(!e||typeof e!="object")throw new Error("stampPrepared: payload object required");let i=Object.prototype.hasOwnProperty.call(e,"oraclePrepared");if(i&&typeof e.oraclePrepared!="boolean")throw new Error("stampPrepared: oraclePrepared must be boolean");let s={...e,provider:e.provider||t,kind:e.kind||r,requiresUserSignature:e.requiresUserSignature!==!1,signingReady:!1,broadcastReady:!1,executionReady:!1,oraclePrepared:i?e.oraclePrepared:!0};if(!s.provider)throw new Error("stampPrepared: provider required");if(!s.kind)throw new Error("stampPrepared: kind required");let l=Number(o),u=a==null?l+no:Number(a),d=u-l;if(!Number.isSafeInteger(l)||!Number.isSafeInteger(u)||d<=0||d>oo)throw new Error("stampPrepared: bounded preparedAt/expiresAt required");let f={...s,preparedAt:l,expiresAt:u,prepareVersion:ro},m=io(f),p=xr(n),y=p?ao(m,p):void 0,x={...f,prepareHash:m};return y&&(x.prepareMac=y),x}var co=["privatekey","secretkey","seed","mnemonic","passphrase","password","keystore","keymaterial","apikey","authtoken","accesstoken","refreshtoken","credential","bearer","signature","authorization","xprv","xpriv","wif"];function ve(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function lo(e){return String(e).toLowerCase().replace(/[^a-z0-9]/g,"")}function $t(e,t="value"){if(Array.isArray(e)){e.forEach((r,n)=>$t(r,`${t}[${n}]`));return}if(ve(e))for(let[r,n]of Object.entries(e)){let o=lo(r);if(co.some(a=>o.includes(a)))throw new Error(`handoff: forbidden secret-like field at ${t}.${r}`);$t(n,`${t}.${r}`)}}function Pt(e){return typeof e=="number"&&Number.isFinite(e)&&e>0}function Tt({strategy:e,evidence:t,shadow:r,caps:n,nowMs:o=Date.now(),env:a=process.env}={}){if($t({strategy:e,evidence:t,shadow:r,caps:n},"handoff"),!ve(e))throw new Error("handoff: strategy required");if(!ve(t))throw new Error("handoff: evidence required");if(!ve(r))throw new Error("handoff: shadow required");if(!ve(n))throw new Error("handoff: caps required");if(typeof r.id!="string"||!r.id.trim())throw new Error("handoff: shadow.id required");if(typeof r.stateHash!="string"||!/^[0-9a-f]{64}$/.test(r.stateHash))throw new Error("handoff: shadow.stateHash must be a sha256 hash");if(r.status!=="running")throw new Error("handoff: shadow.status must be running");if(!Number.isInteger(r.cursor)||r.cursor<=0)throw new Error("handoff: shadow.cursor must be a positive integer");if(!Number.isInteger(r.updatedAt)||r.updatedAt<=0||r.updatedAt>o)throw new Error("handoff: shadow.updatedAt must be a positive integer <= nowMs");let i=Y(e,{nowMs:o}),s=K(i);if(kt(t,{maxDailyLossPct:i.risk.maxDailyLossPct}),t.status!=="pass_live_eligible")throw new Error("handoff: evidence.status must be pass_live_eligible");if(t.strategyHash!==s.strategyHash)throw new Error("handoff: evidence.strategyHash mismatch");if(t.compilerHash!==s.compilerHash)throw new Error("handoff: evidence.compilerHash mismatch");let l=["perStrategyNotionalUsd","maxLeverage","dailyLossCapUsd","chainAllowlist","assetAllowlist","expiresAt","killSwitchRequired"];for(let f of l)if(!(f in n)||n[f]==null)throw new Error(`handoff: caps.${f} required`);if(!Pt(n.perStrategyNotionalUsd))throw new Error("handoff: caps.perStrategyNotionalUsd must be positive");if(n.perStrategyNotionalUsd>s.strategy.risk.maxNotionalUsd)throw new Error("handoff: caps.perStrategyNotionalUsd exceeds strategy.risk.maxNotionalUsd");if(!Pt(n.maxLeverage))throw new Error("handoff: caps.maxLeverage must be positive");if(n.maxLeverage>s.strategy.risk.maxLeverage)throw new Error("handoff: caps.maxLeverage exceeds strategy.risk.maxLeverage");if(!Pt(n.dailyLossCapUsd))throw new Error("handoff: caps.dailyLossCapUsd must be positive");let u=s.strategy.risk.maxNotionalUsd*(s.strategy.risk.maxDailyLossPct/100);if(n.dailyLossCapUsd>u)throw new Error("handoff: caps.dailyLossCapUsd exceeds strategy daily loss ceiling");if(!Array.isArray(n.chainAllowlist)||n.chainAllowlist.length===0)throw new Error("handoff: caps.chainAllowlist must be a non-empty array");if(!n.chainAllowlist.every(f=>f==="hyperliquid"))throw new Error("handoff: caps.chainAllowlist must include only hyperliquid");if(!n.chainAllowlist.includes("hyperliquid"))throw new Error("handoff: caps.chainAllowlist must include hyperliquid");if(!Array.isArray(n.assetAllowlist)||n.assetAllowlist.length===0)throw new Error("handoff: caps.assetAllowlist must be a non-empty array");if(n.assetAllowlist.length!==1||n.assetAllowlist[0]!==s.strategy.market.coin)throw new Error("handoff: caps.assetAllowlist must contain only the strategy market coin");if(!Number.isInteger(n.expiresAt)||!(n.expiresAt>o))throw new Error("handoff: caps.expiresAt must be an integer > nowMs");if(n.expiresAt>s.strategy.risk.expiresAt)throw new Error("handoff: caps.expiresAt exceeds strategy.risk.expiresAt");if(n.killSwitchRequired!==!0)throw new Error("handoff: caps.killSwitchRequired must be exactly true");let d={perStrategyNotionalUsd:n.perStrategyNotionalUsd,maxLeverage:n.maxLeverage,dailyLossCapUsd:n.dailyLossCapUsd,chainAllowlist:[...n.chainAllowlist],assetAllowlist:[...n.assetAllowlist],expiresAt:n.expiresAt,killSwitchRequired:!0},c={strategyHash:s.strategyHash,compilerHash:s.compilerHash,evidence:JSON.parse(JSON.stringify(t)),shadow:{id:r.id,stateHash:r.stateHash,status:r.status,cursor:r.cursor,updatedAt:r.updatedAt},compiled:{strategyHash:s.strategyHash,compilerHash:s.compilerHash,compilerVersion:ye,venue:"hyperliquid",market:{coin:s.strategy.market.coin,kind:"perp",interval:s.strategy.market.interval},risk:{...s.strategy.risk},strategy:JSON.parse(JSON.stringify(s.strategy))},arming:{liveBroadcast:!1,requiresExplicitUserArm:!0,caps:d},requiresUserSignature:!0,signingReady:!1,broadcastReady:!1,executionReady:!1};return Sr(c,{provider:"hl-strategy",kind:"strategy-live-handoff",env:a})}var uo=Object.freeze({"1m":6e4,"3m":18e4,"5m":3e5,"15m":9e5,"30m":18e5,"1h":36e5,"2h":72e5,"4h":144e5,"8h":288e5,"12h":432e5,"1d":864e5});function be(e,t){let r=Number(e);if(!Number.isFinite(r))throw new TypeError(`${t} must be finite`);return r}function Ee(e,t){if(!Number.isSafeInteger(e)||e<0)throw new TypeError(`${t} must be a non-negative safe integer`);return e}function Ne(e){if(Array.isArray(e))for(let t of e)Ne(t);else if(e&&typeof e=="object")for(let t of Object.values(e))Ne(t);return Object.freeze(e)}function kr(e){let t=uo[e];if(!t)throw new TypeError(`unsupported strategy interval: ${e}`);return t}function Ar(e,{endTime:t=Number.MAX_SAFE_INTEGER}={}){if(!Array.isArray(e))throw new TypeError("Hyperliquid candles must be an array");Ee(t,"endTime");let r=new Map;for(let n=0;n<e.length;n++){let o=e[n];if(!o||typeof o!="object"||Array.isArray(o))throw new TypeError(`candles[${n}] must be an object`);let a=Ee(Number(o.t),`candles[${n}].t`);if(Ee(Number(o.T),`candles[${n}].T`)>t)continue;let s={t:a,o:be(o.o,`candles[${n}].o`),h:be(o.h,`candles[${n}].h`),l:be(o.l,`candles[${n}].l`),c:be(o.c,`candles[${n}].c`),v:be(o.v,`candles[${n}].v`)};if(s.h<Math.max(s.o,s.c,s.l))throw new TypeError(`candles[${n}].h is below another price`);if(s.l>Math.min(s.o,s.c,s.h))throw new TypeError(`candles[${n}].l is above another price`);if(s.v<0)throw new TypeError(`candles[${n}].v must be non-negative`);let l=r.get(a);if(l&&JSON.stringify(l)!==JSON.stringify(s))throw new TypeError(`conflicting duplicate candle at timestamp ${a}`);l||r.set(a,s)}return Ne([...r.values()].sort((n,o)=>n.t-o.t))}function fo(e,t){if(!Array.isArray(e))throw new TypeError("Hyperliquid funding history must be an array");let r=new Map;for(let n=0;n<e.length;n++){let o=e[n];if(!o||typeof o!="object"||Array.isArray(o))throw new TypeError(`funding[${n}] must be an object`);let a=Ee(Number(o.time),`funding[${n}].time`);a>t||r.set(a,{time:a,fundingRate:be(o.fundingRate,`funding[${n}].fundingRate`)})}return[...r.values()].sort((n,o)=>n.time-o.time)}async function po({coin:e,startTime:t,endTime:r},n){let o=[],a=Math.max(0,t-288e5),i=!1;for(let s=0;s<16&&a<=r;s++){let l=await fr({coin:e,startTime:a,endTime:r},n);if(!Array.isArray(l))throw new TypeError("Hyperliquid funding history must be an array");o.push(...l);let u=a;for(let d of l){let c=Number(d?.time);Number.isSafeInteger(c)&&c>u&&(u=c)}if(l.length<500||u>=r){i=!0;break}if(u<=a)throw new Error("Hyperliquid funding history pagination did not advance");a=u+1}if(!i)throw new Error("strategy history exceeds the bounded funding history limit");return fo(o,r)}function mo(e,t,r){let n=0,o=null;return e.map(a=>{let i=a.t+r,s=0;for(;n<t.length&&t[n].time<i;){let l=t[n];o=l.fundingRate,l.time>=a.t&&(s+=l.fundingRate),n+=1}return o==null?{...a,fundingPaymentRate:s}:{...a,fundingRate:o,fundingPaymentRate:s}})}async function _t(e,t={}){if(!e||typeof e!="object"||Array.isArray(e))throw new TypeError("strategy history input must be an object");let r=String(e.coin||"").trim().toUpperCase();if(!/^[A-Z0-9][A-Z0-9._-]{0,11}$/.test(r))throw new TypeError("coin must be an uppercase Hyperliquid asset id");let n=String(e.interval||"15m"),o=kr(n);if(e.endTime==null)throw new TypeError("endTime is required for deterministic history");let a=Ee(e.endTime,"endTime"),i=e.count==null?1500:e.count;if(!Number.isInteger(i)||i<20||i>5e3)throw new TypeError("count must be an integer from 20 to 5000");let s=e.startTime==null?Math.max(0,a-i*o):Ee(e.startTime,"startTime");if(s>=a)throw new TypeError("startTime must be before endTime");let[l,u]=await Promise.all([ur({coin:r,interval:n,startTime:s,endTime:a},t),po({coin:r,startTime:s,endTime:a},t)]),d=Ar(l,{endTime:a}),c=Ne(mo(d,u,o));return Ne({coin:r,interval:n,range:{startTime:s,endTime:a},bars:c})}var ho=new Set(["1m","3m","5m","15m","30m","1h","2h","4h","8h","12h","1d"]),yo=new Set(["coin","interval"]);function wo(e){let t=[];if(!e||typeof e!="object"||Array.isArray(e))return{ok:!1,errors:[{path:"market",message:"must be a plain object"}],market:null};for(let r of Object.keys(e))yo.has(r)||t.push({path:`market.${r}`,message:"unknown field is not allowed"});return(typeof e.coin!="string"||e.coin.length===0||e.coin.length>32)&&t.push({path:"market.coin",message:"must be a non-empty string max 32"}),(typeof e.interval!="string"||!ho.has(e.interval))&&t.push({path:"market.interval",message:"must be a supported interval"}),t.length?{ok:!1,errors:t,market:null}:{ok:!0,errors:[],market:{coin:e.coin,interval:e.interval}}}async function go(e={}){let t=await lr(e);if(!t||!Array.isArray(t.universe))throw new TypeError("Hyperliquid market metadata must contain universe");return Object.freeze(t.universe.map((r,n)=>{if(!r||typeof r.name!="string"||!r.name)throw new TypeError(`Hyperliquid market metadata universe[${n}].name is invalid`);return r.name}))}var Pr=Object.freeze({id:"hyperliquid",validateMarket:wo,fetchBars:_t,listMarkets:go,prepareIntent(e){return Tt(e)}});var bo=Object.freeze(["id","validateMarket","prepareIntent"]);function Eo(e){if(!e||typeof e!="object"||Array.isArray(e))throw new TypeError("strategy venue adapter must be an object");if(typeof e.id!="string"||!/^[a-z0-9][a-z0-9._-]{0,63}$/.test(e.id))throw new TypeError("strategy venue adapter id is malformed");for(let t of bo.slice(1))if(typeof e[t]!="function")throw new TypeError(`strategy venue adapter ${e.id} requires ${t}()`);for(let t of["fetchBars","listMarkets"])if(e[t]!=null&&typeof e[t]!="function")throw new TypeError(`strategy venue adapter ${e.id} ${t} must be a function`);return e}var $r=[Pr].map(Eo),xo=new Map($r.map(e=>[e.id,e])),So=Object.freeze([...$r]);function Be(e){return typeof e!="string"?null:xo.get(e)??null}function ze(e){let t=Be(e);if(!t)throw new Error(`unknown strategy venue: ${String(e)}`);return t}var De=1,Lr=/^[a-z0-9][a-z0-9._-]{0,63}$/,jr=/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/,Ao=new Set(["open","high","low","close","volume","fundingRate","openInterest"]),Po=new Set(["sma","ema","rsi","macd","bollinger","atr"]),$o=new Set(["gt","gte","lt","lte","eq"]),To=new Set(["and","or","not"]),_o=new Set(["above","below"]),Io=new Set(["line","signal","histogram"]),Oo=new Set(["upper","middle","lower"]),It=new Set(["compare","logic","cross"]),Tr=new Set(["version","id","name","venue","market","parameters","nodes","rules","risk"]),_r=new Set(["value","min","max","step"]),Ot=new Set(["entryLong","entryShort","exitLong","exitShort"]),Ir=new Set(["maxLeverage","maxNotionalUsd","positionSizePct","stopLossPct","takeProfitPct","cooldownBars","maxDailyLossPct","expiresAt"]),vo=new Set(["id","type"]),Or={input:new Set(["id","type","field"]),constant:new Set(["id","type","value"]),indicator:new Set(["id","type","indicator","input","period","fastPeriod","slowPeriod","signalPeriod","stdDev","output"]),compare:new Set(["id","type","op","left","right"]),logic:new Set(["id","type","op","inputs"]),cross:new Set(["id","type","direction","left","right"])},vr=16,Nr=128,Mr=100,me=class extends Error{constructor(t){let r=t.map(n=>`${n.path}: ${n.message}`);super(`invalid strategy (${t.length} error${t.length===1?"":"s"}): ${r.join("; ")}`),this.name="StrategyValidationError",this.errors=t}};function X(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function U(e){return typeof e=="number"&&Number.isFinite(e)}function Rr(e){return Number.isInteger(e)&&e>0}function Nt(e){if(e==null||typeof e!="object"||Object.isFrozen(e))return e;if(Array.isArray(e)){for(let t of e)Nt(t);return Object.freeze(e)}for(let t of Object.keys(e))Nt(e[t]);return Object.freeze(e)}function Mt(e){if(Array.isArray(e))return e.map(Mt);if(e!=null&&typeof e=="object"){let t={};for(let r of Object.keys(e).sort())t[r]=Mt(e[r]);return t}return e}function g(e,t,r){e.push({path:t,message:r})}function le(e,t,r,n){for(let o of Object.keys(e))t.has(o)||g(n,r?`${r}.${o}`:o,"unknown field is not allowed")}function Hr(e,t,r,n){if(!U(e)||!U(t)||!U(r)||!U(n)||n<=0||e<t||e>r)return!1;let o=(e-t)/n;if(!Number.isFinite(o))return!1;let a=Math.round(o);return Math.abs(o-a)<=1e-9}function vt(e,t,r,n){if(X(e)){if(le(e,new Set(["param"]),t,n),typeof e.param!="string"||!e.param)return g(n,`${t}.param`,"must be a parameter name string"),null;if(!Object.prototype.hasOwnProperty.call(r,e.param))return g(n,`${t}.param`,`unknown parameter "${e.param}"`),null;let o=r[e.param];return!X(o)||![o.value,o.min,o.max,o.step].every(Rr)?(g(n,`${t}.param`,"referenced period parameter value min max and step must be positive integers"),null):{param:e.param}}return Rr(e)?e:(g(n,t,"must be a positive integer or {param}"),null)}function Fr(e,t,r,n){return X(e)?(le(e,new Set(["param"]),t,n),typeof e.param!="string"||!e.param?(g(n,`${t}.param`,"must be a parameter name string"),null):Object.prototype.hasOwnProperty.call(r,e.param)?{param:e.param}:(g(n,`${t}.param`,`unknown parameter "${e.param}"`),null)):U(e)?e:(g(n,t,"must be a finite number or {param}"),null)}function Ve(e){switch(e.type){case"input":case"constant":return[];case"indicator":return e.input?[e.input]:[];case"compare":case"cross":return[e.left,e.right].filter(Boolean);case"logic":return Array.isArray(e.inputs)?[...e.inputs]:[];default:return[]}}function No(e){let t=new Map,r=n=>{let o=t.get(n)||0;if(o===1)return!0;if(o===2)return!1;t.set(n,1);let a=e.get(n);if(a){for(let i of Ve(a))if(e.has(i)&&r(i))return!0}return t.set(n,2),!1};for(let n of e.keys())if(r(n))return!0;return!1}function Mo(e,t){if(!X(e))return g(t,"parameters","must be a plain object"),null;let r=Object.keys(e);if(r.length>vr)return g(t,"parameters",`too many parameters (max ${vr})`),null;let n={};for(let o of r){if(!Lr.test(o)){g(t,`parameters.${o}`,"parameter name is malformed");continue}let a=e[o],i=`parameters.${o}`;if(!X(a)){g(t,i,"must be a plain object");continue}le(a,_r,i,t);for(let c of _r)c in a||g(t,`${i}.${c}`,"required field is missing");let{value:s,min:l,max:u,step:d}=a;U(l)||g(t,`${i}.min`,"must be a finite number"),U(u)||g(t,`${i}.max`,"must be a finite number"),(!U(d)||d<=0)&&g(t,`${i}.step`,"must be a positive finite number"),U(s)||g(t,`${i}.value`,"must be a finite number"),U(l)&&U(u)&&l>u&&g(t,`${i}.min`,"min must be <= max"),U(s)&&U(l)&&U(u)&&U(d)&&d>0&&(Hr(s,l,u,d)||g(t,`${i}.value`,"value must lie on the declared min/max/step grid")),n[o]={value:s,min:l,max:u,step:d}}return n}function Ro(e,t,r,n){let o=`nodes.${t}`;if(!X(e))return g(n,o,"must be a plain object"),null;if(typeof e.type!="string"||!Or[e.type])return g(n,`${o}.type`,"unknown or missing node type"),le(e,vo,o,n),null;switch(le(e,Or[e.type],o,n),(typeof e.id!="string"||!jr.test(e.id))&&g(n,`${o}.id`,"must be a 1-64 char id starting with alphanumeric"),e.type){case"input":return(typeof e.field!="string"||!Ao.has(e.field))&&g(n,`${o}.field`,"must be one of open|high|low|close|volume|fundingRate|openInterest"),{id:e.id,type:"input",field:e.field};case"constant":{let a=Fr(e.value,`${o}.value`,r,n);return{id:e.id,type:"constant",value:a}}case"indicator":{(typeof e.indicator!="string"||!Po.has(e.indicator))&&g(n,`${o}.indicator`,"must be one of sma|ema|rsi|macd|bollinger|atr");let a=e.indicator,i={id:e.id,type:"indicator",indicator:a};if(a==="atr"){"input"in e&&(typeof e.input!="string"||!e.input?g(n,`${o}.input`,"must be a node id string when provided"):i.input=e.input);let s=vt(e.period,`${o}.period`,r,n);s!=null&&(i.period=s)}else typeof e.input!="string"||!e.input?g(n,`${o}.input`,"must be a node id string"):i.input=e.input;if((a==="sma"||a==="ema"||a==="rsi"||a==="bollinger"||a==="atr")&&("period"in e,a!=="macd"))if(!("period"in e))g(n,`${o}.period`,"required field is missing");else{let s=vt(e.period,`${o}.period`,r,n);s!=null&&(i.period=s)}if(a==="macd"){for(let s of["fastPeriod","slowPeriod","signalPeriod"])if(!(s in e))g(n,`${o}.${s}`,"required field is missing");else{let l=vt(e[s],`${o}.${s}`,r,n);l!=null&&(i[s]=l)}"output"in e?Io.has(e.output)?i.output=e.output:g(n,`${o}.output`,"must be line|signal|histogram"):g(n,`${o}.output`,"required field is missing"),"period"in e&&g(n,`${o}.period`,"forbidden for macd"),"stdDev"in e&&g(n,`${o}.stdDev`,"forbidden for macd")}else if(a==="bollinger"){if(!("stdDev"in e))g(n,`${o}.stdDev`,"required field is missing");else{let s=Fr(e.stdDev,`${o}.stdDev`,r,n);s!=null&&(typeof s=="number"&&s<=0?g(n,`${o}.stdDev`,"must be > 0"):i.stdDev=s)}"output"in e?Oo.has(e.output)?i.output=e.output:g(n,`${o}.output`,"must be upper|middle|lower"):g(n,`${o}.output`,"required field is missing");for(let s of["fastPeriod","slowPeriod","signalPeriod"])s in e&&g(n,`${o}.${s}`,`forbidden for ${a}`)}else{"output"in e&&g(n,`${o}.output`,`forbidden for ${a}`),"stdDev"in e&&a!=="bollinger"&&g(n,`${o}.stdDev`,`forbidden for ${a}`);for(let s of["fastPeriod","slowPeriod","signalPeriod"])s in e&&g(n,`${o}.${s}`,`forbidden for ${a}`)}return i}case"compare":return(typeof e.op!="string"||!$o.has(e.op))&&g(n,`${o}.op`,"must be gt|gte|lt|lte|eq"),(typeof e.left!="string"||!e.left)&&g(n,`${o}.left`,"must be a node id"),(typeof e.right!="string"||!e.right)&&g(n,`${o}.right`,"must be a node id"),{id:e.id,type:"compare",op:e.op,left:e.left,right:e.right};case"logic":{if((typeof e.op!="string"||!To.has(e.op))&&g(n,`${o}.op`,"must be and|or|not"),!Array.isArray(e.inputs))return g(n,`${o}.inputs`,"must be an array of node ids"),{id:e.id,type:"logic",op:e.op,inputs:[]};let a=[];for(let i=0;i<e.inputs.length;i++){let s=e.inputs[i];typeof s!="string"||!s?g(n,`${o}.inputs.${i}`,"must be a node id"):a.push(s)}return e.op==="not"?a.length!==1&&g(n,`${o}.inputs`,"not requires exactly one input"):(e.op==="and"||e.op==="or")&&a.length<2&&g(n,`${o}.inputs`,`${e.op} requires at least two inputs`),{id:e.id,type:"logic",op:e.op,inputs:a}}case"cross":return(typeof e.direction!="string"||!_o.has(e.direction))&&g(n,`${o}.direction`,"must be above|below"),(typeof e.left!="string"||!e.left)&&g(n,`${o}.left`,"must be a node id"),(typeof e.right!="string"||!e.right)&&g(n,`${o}.right`,"must be a node id"),{id:e.id,type:"cross",direction:e.direction,left:e.left,right:e.right};default:return null}}function Fo(e,t,r){if(!X(e))return g(t,"risk","must be a plain object"),null;le(e,Ir,"risk",t);for(let f of Ir)(!(f in e)||e[f]==null)&&g(t,`risk.${f}`,"required field is missing");let n={},o=e.maxLeverage;!U(o)||o<=0||o>50?g(t,"risk.maxLeverage","must be a number > 0 and <= 50"):n.maxLeverage=o;let a=e.maxNotionalUsd;!U(a)||a<=0?g(t,"risk.maxNotionalUsd","must be a number > 0"):n.maxNotionalUsd=a;let i=e.positionSizePct;!U(i)||i<=0||i>100?g(t,"risk.positionSizePct","must be a number > 0 and <= 100"):n.positionSizePct=i;let s=e.stopLossPct;!U(s)||s<=0||s>100?g(t,"risk.stopLossPct","must be a number > 0 and <= 100"):n.stopLossPct=s;let l=e.takeProfitPct;!U(l)||l<=0||l>1e3?g(t,"risk.takeProfitPct","must be a number > 0 and <= 1000"):n.takeProfitPct=l;let u=e.cooldownBars;!Number.isInteger(u)||u<0||u>1e5?g(t,"risk.cooldownBars","must be an integer >= 0 and <= 100000"):n.cooldownBars=u;let d=e.maxDailyLossPct;!U(d)||d<=0||d>100?g(t,"risk.maxDailyLossPct","must be a number > 0 and <= 100"):n.maxDailyLossPct=d;let c=e.expiresAt;return!Number.isInteger(c)||c<=0?g(t,"risk.expiresAt","must be an integer epoch milliseconds > 0"):(r.nowMs!==void 0&&(Number.isInteger(r.nowMs)?c<=r.nowMs&&g(t,"risk.expiresAt","must be strictly greater than nowMs"):g(t,"nowMs","must be an integer epoch milliseconds")),n.expiresAt=c),n}function Je(e,t={}){let r=[];if(!X(e))return g(r,"","strategy must be a plain object"),{ok:!1,errors:r,strategy:null};le(e,Tr,"",r);for(let c of Tr)(!(c in e)||e[c]==null)&&g(r,c,"required field is missing");e.version!==De&&g(r,"version",`must be ${De}`),(typeof e.id!="string"||!Lr.test(e.id))&&g(r,"id","must match /^[a-z0-9][a-z0-9._-]{0,63}$/"),(typeof e.name!="string"||e.name.length===0||e.name.length>Mr)&&g(r,"name",`must be a non-empty string max ${Mr}`);let n=Be(e.venue);n||g(r,"venue",`unknown strategy venue "${String(e.venue)}"`);let o=null;if(!n)X(e.market)||g(r,"market","must be a plain object");else{let c=n.validateMarket(e.market);if(!c||typeof c.ok!="boolean"||!Array.isArray(c.errors))g(r,"market",`venue ${n.id} returned an invalid market validation result`);else if(c.ok)o=c.market;else for(let f of c.errors)g(r,f.path,f.message)}let a=Mo(e.parameters,r),i=null,s=new Map;if(!Array.isArray(e.nodes))g(r,"nodes","must be an array");else if(e.nodes.length>Nr)g(r,"nodes",`too many nodes (max ${Nr})`);else{i=[];for(let c=0;c<e.nodes.length;c++){let f=Ro(e.nodes[c],c,a||{},r);f&&(typeof f.id=="string"&&jr.test(f.id)&&(s.has(f.id)?g(r,`nodes.${c}.id`,`duplicate node id "${f.id}"`):s.set(f.id,f)),i.push(f))}for(let c=0;c<i.length;c++){let f=i[c],m=`nodes.${c}`;for(let p of Ve(f))s.has(p)||g(r,m,`unknown node ref "${p}"`);if(f.type==="indicator"||f.type==="compare"||f.type==="cross")for(let p of Ve(f)){let y=s.get(p);y&&It.has(y.type)&&g(r,m,`node ref "${p}" must be numeric`)}if(f.type==="logic")for(let p of Ve(f)){let y=s.get(p);y&&!It.has(y.type)&&g(r,m,`node ref "${p}" must be boolean`)}}No(s)&&g(r,"nodes","graph contains a cycle")}let l=null;if(!X(e.rules))g(r,"rules","must be a plain object");else{le(e.rules,Ot,"rules",r);for(let c of Ot)c in e.rules||g(r,`rules.${c}`,"required field is missing");l={};for(let c of Ot){let f=e.rules[c];if(f===null){l[c]=null;continue}if(typeof f!="string"||!f){g(r,`rules.${c}`,"must be a node id or null"),l[c]=f;continue}if(!s.has(f)){g(r,`rules.${c}`,`unknown node ref "${f}"`),l[c]=f;continue}let m=s.get(f);It.has(m.type)||g(r,`rules.${c}`,`rule must reference a boolean node, not ${m.type}`),l[c]=f}}let u=Fo(e.risk,r,t);if(r.length)return{ok:!1,errors:r,strategy:null};let d=Nt({version:De,id:e.id,name:e.name,venue:n.id,market:o,parameters:a,nodes:i,rules:l,risk:u});return{ok:!0,errors:[],strategy:d}}function Y(e,t={}){let r=Je(e,t);if(!r.ok)throw new me(r.errors);return r.strategy}function Cr(e){let t=Y(e);return JSON.stringify(Mt(t))}function de(e){let t=Cr(e);return ko("sha256").update(t,"utf8").digest("hex")}function we(e,t){if(!X(e))throw new me([{path:"",message:"strategy must be a plain object"}]);if(!X(t))throw new me([{path:"overrides",message:"must be a plain object"}]);let r=Y(e),n={};for(let[a,i]of Object.entries(r.parameters))n[a]={value:i.value,min:i.min,max:i.max,step:i.step};let o=[];for(let[a,i]of Object.entries(t)){if(!Object.prototype.hasOwnProperty.call(n,a)){g(o,a,`unknown parameter "${a}"`);continue}let s=n[a];if(!U(i)){g(o,a,"override must be a finite number");continue}if(!Hr(i,s.min,s.max,s.step)){g(o,a,"override must lie on the declared min/max/step grid");continue}n[a]={...s,value:i}}if(o.length)throw new me(o);return Y({version:r.version,id:r.id,name:r.name,venue:r.venue,market:{coin:r.market.coin,interval:r.market.interval},parameters:n,nodes:r.nodes.map(a=>{let i={...a};return Array.isArray(a.inputs)&&(i.inputs=[...a.inputs]),i}),rules:{...r.rules},risk:{...r.risk}})}import{createHash as Lo}from"node:crypto";var Ft=256,Ur=new Set(["netPnlUsd","profitFactor","sharpe","maxDrawdownPct"]);function qr(e){let t=String(e).toLowerCase();return t==="holdout"||t==="test"||t==="oos"||t.includes("holdout")||t.includes("oos")?!0:t==="testbars"||t.endsWith("testbars")||t.startsWith("test")||t.endsWith("test")?!t.includes("backtest"):!1}function Br(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function Lt(e){if(e==null||typeof e!="object"||Object.isFrozen(e))return e;if(Array.isArray(e)){for(let t of e)Lt(t);return Object.freeze(e)}for(let t of Object.keys(e))Lt(e[t]);return Object.freeze(e)}function Me(e){if(Array.isArray(e))return e.map(Me);if(e!=null&&typeof e=="object"){let t={};for(let r of Object.keys(e).sort())t[r]=Me(e[r]);return t}return e}function Ke(e){return JSON.stringify(Me(e))}function jo(e){let{min:t,max:r,step:n}=e;if(!(n>0)||t>r)return[];let o=[],a=Math.floor((r-t)/n+1e-9);for(let s=0;s<=a;s++){let l=t+s*n;if(l>r+1e-9)break;let u=Math.abs(l-Math.round(l))<1e-9?Math.round(l):Number(l.toPrecision(12));u<t-1e-9||u>r+1e-9||o.push(u)}if(o.length===0)return[];let i=o[o.length-1];if(Math.abs(i-r)>1e-9){let s=(r-t)/n;Math.abs(s-Math.round(s))<=1e-9&&o.push(r)}return o}function Ho(e,t){if(e.length===0)return[];let r=[{}];for(let n of e){let o=t[n],a=[];for(let i of r)for(let s of o)a.push({...i,[n]:s});r=a}return r.sort((n,o)=>{let a=Ke(n),i=Ke(o);return a<i?-1:a>i?1:0}),r}function Rt(e,t,r,n,o){let a=0;if(e==="maxDrawdownPct"){if(a=t.maxDrawdownPct-n.maxDrawdownPct,a!==0)return a<0}else if(a=t[e]-n[e],a!==0)return a>0;let i=Ke(r),s=Ke(o);return i<s}function jt(e,t,r={}){if(!Br(r))throw new TypeError("options must be a plain object");for(let E of Object.keys(r))if(qr(E))throw new TypeError(`options must not include holdout/test/oos key "${E}"`);let n=new Set(["maxTrials","objective","backtestOptions"]);for(let E of Object.keys(r))if(!n.has(E))throw new TypeError(`unknown option "${E}"`);let o=64;if("maxTrials"in r){let E=r.maxTrials;if(!Number.isInteger(E)||E<1||E>Ft)throw new TypeError(`maxTrials must be an integer 1..${Ft}`);o=E}let a=r.objective??"netPnlUsd";if(!Ur.has(a))throw new TypeError(`objective must be one of ${[...Ur].join("|")}`);let i=r.backtestOptions??{};if(!Br(i))throw new TypeError("backtestOptions must be a plain object");for(let E of Object.keys(i))if(qr(E))throw new TypeError(`backtestOptions must not include holdout/test/oos key "${E}"`);let s=Y(e),l=Object.keys(s.parameters).sort();if(l.length===0)throw new Error("optimizeStrategy requires at least one declared parameter");let u={},d=1;for(let E of l){let A=jo(s.parameters[E]);if(A.length===0)throw new Error(`parameter "${E}" produces an empty grid`);u[E]=A,d*=A.length}let c=Ho(l,u);if(c.length===0)throw new Error("parameter grid is empty");let f=c.slice(0,o),m=[],p=null,y=null;for(let E of f){let A=we(s,E),$=se(A,t,i);y==null&&(y=$.config);let w={netPnlUsd:$.metrics.netPnlUsd,netPnlPct:$.metrics.netPnlPct,maxDrawdownPct:$.metrics.maxDrawdownPct,winRate:$.metrics.winRate,profitFactor:$.metrics.profitFactor,tradeCount:$.metrics.tradeCount,sharpe:$.metrics.sharpe,turnoverUsd:$.metrics.turnoverUsd},R={parameters:{...E},metrics:w};m.push(R),(!p||Rt(a,w,E,p.metrics,p.parameters))&&(p=R)}m.sort((E,A)=>Rt(a,E.metrics,E.parameters,A.metrics,A.parameters)?-1:Rt(a,A.metrics,A.parameters,E.metrics,E.parameters)?1:0);let x={...p.parameters},k=we(s,x),S={strategyHash:de(s),compilerHash:ce,trainBarsHash:Ie(t),backtestConfig:y,objective:a,maxTrials:o,trialsRun:m.length,candidates:m,bestParameters:x,bestStrategy:k},T={id:Lo("sha256").update(JSON.stringify(Me(S)),"utf8").digest("hex"),...S};return Lt(Me(JSON.parse(JSON.stringify(T))))}import{createHash as Co}from"node:crypto";var D=class extends Error{constructor(t){super(t),this.name="StrategyDraftError"}},Uo=new Set(["1m","3m","5m","15m","30m","1h","2h","4h","8h","12h","1d"]),qo=new Set(["BTC","ETH","SOL","HYPE"]),Bo=/\b(mnemonic|private\s*key|privkey|seed\s*phrase|seed\b|api[_-]?key|secret\s*key|wallet\s*key|passphrase)\b/i,xe="Supported grammar: (1) EMA cross: <long|short> <COIN> when EMA <n> crosses <above|below> EMA <m> [on <interval>] [, exit on reverse] [, risk knobs]; (2) RSI: <long|short> <COIN> when RSI <n> <above|below> <threshold> [on <interval>] [, risk knobs]; (3) funding: <long|short> <COIN> when funding rate <above|below> <decimal|percent%> [on <interval>] [, risk knobs]. Risk knobs: stop loss %, take profit %, leverage, position size %, max notional USD. Coins: BTC ETH SOL HYPE or uppercase token <=12 chars. Intervals: 1m 3m 5m 15m 30m 1h 2h 4h 8h 12h 1d.",zo=Object.freeze({maxLeverage:1,maxNotionalUsd:100,positionSizePct:5,stopLossPct:2,takeProfitPct:4,cooldownBars:1,maxDailyLossPct:3}),Do=36e5,Vo=30*864e5,Jo=864e5;function Ko(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function Ht(e){if(e==null||typeof e!="object"||Object.isFrozen(e))return e;if(Array.isArray(e)){for(let t of e)Ht(t);return Object.freeze(e)}for(let t of Object.keys(e))Ht(e[t]);return Object.freeze(e)}function Yo(e){return String(e).trim().replace(/\s+/g," ")}function Go(e){let t=e.match(/\b(long|short)\b/i);return t?t[1].toLowerCase():null}function Xo(e){for(let r of qo)if(new RegExp(`\\b${r}\\b`,"i").test(e))return r;let t=e.match(/\b([A-Z][A-Z0-9]{1,11})\b/);return t?t[1]:null}function Zo(e){let t=e.match(/\bon\s+(1m|3m|5m|15m|30m|1h|2h|4h|8h|12h|1d)\b/i);if(!t)return"15m";let r=t[1].toLowerCase();return Uo.has(r)?r:null}function Wo(e){let t={...zo},r=e.match(/stop\s*loss\s*(\d+(?:\.\d+)?)\s*%?/i);r&&(t.stopLossPct=Number(r[1]));let n=e.match(/take\s*profit\s*(\d+(?:\.\d+)?)\s*%?/i);n&&(t.takeProfitPct=Number(n[1]));let o=e.match(/leverage\s*(\d+(?:\.\d+)?)/i);o&&(t.maxLeverage=Number(o[1]));let a=e.match(/position\s*size\s*(\d+(?:\.\d+)?)\s*%?/i);a&&(t.positionSizePct=Number(a[1]));let i=e.match(/max\s*notional\s*(?:usd\s*)?\$?\s*(\d+(?:\.\d+)?)/i);return i&&(t.maxNotionalUsd=Number(i[1])),t}function Qo(e){return[/\bon\s+(?:1m|3m|5m|15m|30m|1h|2h|4h|8h|12h|1d)\b/gi,/\bstop\s*loss\s*\d+(?:\.\d+)?\s*%?/gi,/\btake\s*profit\s*\d+(?:\.\d+)?\s*%?/gi,/\bleverage\s*\d+(?:\.\d+)?/gi,/\bposition\s*size\s*\d+(?:\.\d+)?\s*%?/gi,/\bmax\s*notional\s*(?:usd\s*)?\$?\s*\d+(?:\.\d+)?/gi].some(r=>(e.match(r)??[]).length>1)}function es(e){let t=Co("sha256").update(e,"utf8").digest("hex").slice(0,10),r=e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40),o=`${r.length?r:"draft"}-${t}`.replace(/[^a-z0-9._-]/g,"").slice(0,64);return/^[a-z0-9]/.test(o)?o:`d${o}`.slice(0,64)}function ts(e){let t=e.match(/\bema\s*(\d+)\s*cross(?:es)?\s*(above|below)\s*ema\s*(\d+)\b/i);if(!t)return null;let r=Number(t[1]),n=t[2].toLowerCase(),o=Number(t[3]);if(!(r>0)||!(o>0)||r===o)return null;let a=/\b(exit\s+on\s+reverse|reverse\s+exit)\b/i.test(e);return{kind:"ema_cross",fast:r,slow:o,direction:n,reverse:a}}function rs(e){let t=e.match(/\brsi\s*(\d+)\s*(above|below)\s*(-?\d+(?:\.\d+)?)/i);if(!t)return null;let r=Number(t[3]);return!Number.isFinite(r)||r<=0||r>=100?null:{kind:"rsi",period:Number(t[1]),op:t[2].toLowerCase(),threshold:r}}function ns(e){let t=e.match(/\bfunding\s*rate\s*(above|below)\s*(-?\d+(?:\.\d+)?)(%?)(?=\s|,|$)/i);if(!t)return null;let r=Number(t[2]);return t[3]==="%"&&(r=r/100),{kind:"funding",op:t[1].toLowerCase(),threshold:r}}function os(e,t){let r=e.replace(/^(long|short)\s+[A-Z][A-Z0-9]{1,11}\s+when\s+/i,"");if(r===e)return!1;t.kind==="ema_cross"?r=r.replace(/^ema\s*\d+\s*cross(?:es)?\s*(?:above|below)\s*ema\s*\d+\b/i,""):t.kind==="rsi"?r=r.replace(/^rsi\s*\d+\s*(?:above|below)\s*\d+(?:\.\d+)?\b/i,""):r=r.replace(/^funding\s*rate\s*(?:above|below)\s*-?\d+(?:\.\d+)?%?(?=\s|,|$)/i,"");let n=[/(?:,\s*)?\bon\s+(?:1m|3m|5m|15m|30m|1h|2h|4h|8h|12h|1d)\b/gi,/(?:,\s*)?\bstop\s*loss\s*\d+(?:\.\d+)?\s*%?/gi,/(?:,\s*)?\btake\s*profit\s*\d+(?:\.\d+)?\s*%?/gi,/(?:,\s*)?\bleverage\s*\d+(?:\.\d+)?/gi,/(?:,\s*)?\bposition\s*size\s*\d+(?:\.\d+)?\s*%?/gi,/(?:,\s*)?\bmax\s*notional\s*(?:usd\s*)?\$?\s*\d+(?:\.\d+)?/gi];t.kind==="ema_cross"&&n.push(/(?:,\s*)?\b(?:exit\s+on\s+reverse|reverse\s+exit)\b/gi);for(let o of n)r=r.replace(o,"");return r.replace(/[\s,;]+/g,"")===""}function zr(e){let t=Math.max(2,Math.floor(e/2));return{value:e,min:Math.max(2,e-t),max:Math.min(500,e+t),step:1}}function ss({side:e,coin:t,interval:r,risk:n,expiresAt:o,id:a,name:i,spec:s}){let l=[{id:"c",type:"input",field:"close"},{id:"emaLeft",type:"indicator",indicator:"ema",input:"c",period:{param:"ema_left_period"}},{id:"emaRight",type:"indicator",indicator:"ema",input:"c",period:{param:"ema_right_period"}},{id:"cross",type:"cross",direction:s.direction,left:"emaLeft",right:"emaRight"}],u={entryLong:null,entryShort:null,exitLong:null,exitShort:null};if(e==="long"?u.entryLong="cross":u.entryShort="cross",s.reverse){let d=s.direction==="above"?"below":"above";l.push({id:"crossRev",type:"cross",direction:d,left:"emaLeft",right:"emaRight"}),e==="long"?u.exitLong="crossRev":u.exitShort="crossRev"}return{version:1,id:a,name:i,venue:"hyperliquid",market:{coin:t,interval:r},parameters:{ema_left_period:zr(s.fast),ema_right_period:zr(s.slow)},nodes:l,rules:u,risk:{...n,expiresAt:o}}}function is({side:e,coin:t,interval:r,risk:n,expiresAt:o,id:a,name:i,spec:s}){let l=[{id:"c",type:"input",field:"close"},{id:"rsi",type:"indicator",indicator:"rsi",input:"c",period:s.period},{id:"thr",type:"constant",value:s.threshold},{id:"sig",type:"compare",op:s.op==="above"?"gt":"lt",left:"rsi",right:"thr"}];return{version:1,id:a,name:i,venue:"hyperliquid",market:{coin:t,interval:r},parameters:{},nodes:l,rules:{entryLong:e==="long"?"sig":null,entryShort:e==="short"?"sig":null,exitLong:null,exitShort:null},risk:{...n,expiresAt:o}}}function as({side:e,coin:t,interval:r,risk:n,expiresAt:o,id:a,name:i,spec:s}){let l=[{id:"fr",type:"input",field:"fundingRate"},{id:"thr",type:"constant",value:s.threshold},{id:"sig",type:"compare",op:s.op==="above"?"gt":"lt",left:"fr",right:"thr"}];return{version:1,id:a,name:i,venue:"hyperliquid",market:{coin:t,interval:r},parameters:{},nodes:l,rules:{entryLong:e==="long"?"sig":null,entryShort:e==="short"?"sig":null,exitLong:null,exitShort:null},risk:{...n,expiresAt:o}}}function Ct(e,t={}){if(typeof e!="string")throw new D("prompt must be a string");if(e.length>1e3)throw new D("prompt length must be <= 1000");if(!Ko(t))throw new D("options must be a plain object");if(!Number.isInteger(t.nowMs))throw new D("options.nowMs is required integer epoch ms");let r=t.nowMs,n=Jo;if("expiresInMs"in t){if(!Number.isInteger(t.expiresInMs))throw new D("expiresInMs must be an integer");if(n=t.expiresInMs,n<Do||n>Vo)throw new D("expiresInMs must be between 1h and 30d")}if(Bo.test(e))throw new D(`prompt appears to contain secrets and is rejected. ${xe}`);let o=Yo(e);if(!o)throw new D(`empty prompt. ${xe}`);if(Qo(o))throw new D(`duplicate interval or risk clause. ${xe}`);let a=Go(o),i=Xo(o),s=Zo(o);if(!a||!i||!s)throw new D(`could not parse side/coin/interval. ${xe}`);let l=Wo(o);if(!(l.maxLeverage>0)||l.maxLeverage>50)throw new D("leverage out of range");if(!(l.positionSizePct>0)||l.positionSizePct>100)throw new D("position size out of range");let u=r+n,d=es(o),c=`Draft ${i} ${a}`.slice(0,100),f=ts(o),m=rs(o),p=ns(o),y=[f,m,p].filter(Boolean);if(y.length!==1)throw new D(`unsupported or ambiguous prompt. ${xe}`);if(!os(o,y[0]))throw new D(`unsupported or ambiguous prompt. ${xe}`);let x,k=y[0],S={side:a,coin:i,interval:s,risk:l,expiresAt:u,id:d,name:c,spec:k};k.kind==="ema_cross"?x=ss(S):k.kind==="rsi"?x=is(S):x=as(S);let T=Je(x,{nowMs:r});if(!T.ok)throw new D(`draft failed validation: ${T.errors.map(E=>E.message).join("; ")}`);return Ht(Y(x,{nowMs:r}))}import ie from"node:fs";import Ye from"node:path";var qt=1,cs=["privatekey","secretkey","seed","mnemonic","passphrase","password","keystore","keymaterial","apikey","authtoken","accesstoken","refreshtoken","credential","bearer","signature","authorization","xprv","xpriv","wif"];function Ge(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function ne(e){return e==null?e:JSON.parse(JSON.stringify(e))}function ls(e){return String(e).toLowerCase().replace(/[^a-z0-9]/g,"")}function Se(e,t="record"){if(Array.isArray(e)){e.forEach((r,n)=>Se(r,`${t}[${n}]`));return}if(Ge(e))for(let[r,n]of Object.entries(e)){let o=ls(r);if(cs.some(a=>o.includes(a)))throw new Error(`shadow-store: forbidden secret-like field at ${t}.${r}`);Se(n,`${t}.${r}`)}}function us(e){if(typeof e!="string"||!e||!Ye.isAbsolute(e))throw new Error("shadow-store: path must be an absolute path")}function Dr(e){let t;try{t=ie.lstatSync(e)}catch(n){if(n&&n.code==="ENOENT")return;throw n}if(t.isSymbolicLink())throw new Error("shadow-store: store path must not be a symlink");if(!t.isFile())throw new Error("shadow-store: store path must be a regular file");if(t.mode&511&18)throw new Error("shadow-store: store file must not be group or world writable")}function fs(){return{version:qt,runners:[]}}function Vr(e,t){let r;try{r=JSON.parse(e)}catch{throw new Error("shadow-store: malformed JSON")}if(!Ge(r))throw new Error("shadow-store: malformed JSON root");if(r.version!==qt)throw new Error(`shadow-store: unsupported version ${r.version}`);if(!Array.isArray(r.runners))throw new Error("shadow-store: runners must be an array");return Se(r,Ye.basename(t)),{version:qt,runners:r.runners.map(n=>ne(n))}}function Jr(e,t){Se(t,"store");let r=Ye.dirname(e);ie.mkdirSync(r,{recursive:!0,mode:448});let n=Ye.join(r,`.shadow-store.${process.pid}.${Date.now()}.tmp`),o=`${JSON.stringify(t)}
3
+ `;try{ie.writeFileSync(n,o,{mode:384,flag:"wx"}),ie.renameSync(n,e);try{ie.chmodSync(e,384)}catch{}}catch(a){try{ie.unlinkSync(n)}catch{}throw a}}var Ut=new Map;function Bt(e={}){let t=e.path;if(us(t),Dr(t),ie.existsSync(t)?Vr(ie.readFileSync(t,"utf8"),t):Jr(t,fs()),Ut.has(t))return Ut.get(t);let r=!1,n=[];function o(){if(r)return;let p=n.shift();if(p){r=!0;try{let y=p.fn();r=!1,p.resolve(y),o()}catch(y){r=!1,p.reject(y),o()}}}function a(p){if(!r&&n.length===0){r=!0;try{return p()}finally{r=!1,queueMicrotask(o)}}return new Promise((y,x)=>{n.push({fn:p,resolve:y,reject:x}),queueMicrotask(o)})}function i(){return Dr(t),Vr(ie.readFileSync(t,"utf8"),t)}function s(p){Jr(t,p)}function l(p){if(!Ge(p)||typeof p.id!="string"||!p.id)throw new Error("shadow-store: create requires record with string id");Se(p,"record");let y=i();if(y.runners.some(k=>k.id===p.id))throw new Error(`shadow-store: runner id already exists: ${p.id}`);let x=ne(p);return y.runners.push(x),s(y),ne(x)}function u(p){let y=i().runners.find(x=>x.id===p);return y?ne(y):null}function d(){return i().runners.map(p=>ne(p))}function c(p,y){if(typeof y!="function")throw new Error("shadow-store: updater must be a function");let x=i(),k=x.runners.findIndex(E=>E.id===p);if(k<0)throw new Error(`shadow-store: runner not found: ${p}`);let S=ne(x.runners[k]),T=y(S);if(!Ge(T)||T.id!==p)throw new Error("shadow-store: updater must return record with same id");return Se(T,"record"),x.runners[k]=ne(T),s(x),ne(x.runners[k])}function f(p){let y=i(),x=y.runners.findIndex(S=>S.id===p);if(x<0)throw new Error(`shadow-store: runner not found: ${p}`);let k=ne(y.runners[x]);return k.status!=="stopped"&&(k.status="stopped",y.runners[x]=k,s(y)),ne(y.runners[x])}let m={create(p){return a(()=>l(p))},get(p){return u(p)},list(){return d()},update(p,y){return a(()=>c(p,y))},stop(p){return a(()=>f(p))}};return Ut.set(t,m),m}import{createHash as Vt}from"node:crypto";function zt(e){return e==null?e:JSON.parse(JSON.stringify(e))}function Dt(e){return Array.isArray(e)?e.map(Dt):e&&typeof e=="object"?Object.fromEntries(Object.keys(e).sort().map(t=>[t,Dt(e[t])])):e}function Yr(e){if(!e||typeof e!="object"||Array.isArray(e))throw new TypeError("shadow-runner: record must be an object");return Vt("sha256").update(JSON.stringify(Dt(e))).digest("hex")}function ds(e,t,r,n,o){return Vt("sha256").update(`${e}|${t}|${r}|${n}|${o}`).digest("hex")}function ps(e,t,r,n){return Vt("sha256").update(`shadow|${e}|${t}|${r}|${n??""}`).digest("hex")}function ms(e){return e==="entryLong"||e==="exitShort"?"buy":e==="entryShort"||e==="exitLong"?"sell":e}function Kr(e){return e==="entryLong"||e==="entryShort"}function Xe({storePath:e,clock:t=Date.now}={}){if(typeof e!="string"||!e)throw new Error("shadow-runner: storePath required");let r=Bt({path:e});function n({strategy:l,evidenceId:u=null}={}){let d=K(l),c=u==null?null:String(u),f=r.list().filter(k=>k.status==="running"&&k.strategyHash===d.strategyHash&&k.compilerHash===d.compilerHash&&k.evidenceId===c).sort((k,S)=>k.createdAt-S.createdAt||k.id.localeCompare(S.id))[0];if(f)return zt(f);let m=t(),p=ps(m,d.strategyHash,d.compilerHash,c),y=r.get(p);if(y)return zt(y);let x={id:p,strategy:zt(d.strategy),strategyHash:d.strategyHash,compilerHash:d.compilerHash,evidenceId:c,status:"running",cursor:null,intendedOrders:[],fills:[],missedFills:[],markouts:[],createdAt:m,updatedAt:m,position:null,cooldownBarsRemaining:0,cooldownStartT:null,lastProcessedBarIndex:-1};return r.create(x)}function o(l){return r.get(l)}function a(){return r.list()}function i(l){return r.stop(l)}function s(l,u,{markoutHorizons:d=[1,4,12]}={}){if(!Array.isArray(u))throw new TypeError("shadow-runner: bars must be an array");return r.update(l,c=>{if(c.status!=="running")throw new Error("shadow-runner: runner is stopped");if(u.length===0)return c;let m=K(c.strategy).evaluateAll(u),p=new Map;for(let h=0;h<u.length;h++)p.set(u[h].t,h);let y=c.cursor,x=[];for(let h=0;h<u.length;h++){let _=u[h].t;(y==null||_>y)&&x.push(h)}if(x.length===0)return c;let k=new Map(c.intendedOrders.map(h=>[h.id,h])),S=new Set(c.fills.map(h=>h.orderId)),T=new Map(c.missedFills.map(h=>[h.orderId,h])),E=(h,_)=>`${h}|${_}`,A=new Map(c.markouts.map(h=>[E(h.orderId,h.horizon),h])),$=c.position?{...c.position}:null,w=Number.isInteger(c.cooldownBarsRemaining)?Math.max(0,c.cooldownBarsRemaining):0,R=Number.isFinite(c.cooldownStartT)?c.cooldownStartT:null;function V({action:h,signalBarT:_,signalIndex:N}){let L=ms(h),j=ds(c.id,c.strategyHash,_,L,h);if(k.has(j))return k.get(j);let O=N+1,M=O<u.length,J={id:j,action:h,type:h,side:L,signalBarT:_,fillBarT:M?u[O].t:null,status:M?"open":"missed"};return k.set(j,J),c.intendedOrders.push(J),J}function G(h,_,N){if(S.has(h.id))return;let L={orderId:h.id,action:Kr(h.action)?"entry":"exit",side:h.side,price:_.o,barT:_.t,signalBarT:h.signalBarT,barIndex:N};if(c.fills.push(L),S.add(h.id),h.status="filled",h.fillBarT=_.t,T.has(h.id)&&(T.delete(h.id),c.missedFills=c.missedFills.filter(j=>j.orderId!==h.id)),Kr(h.action)){$={side:h.action==="entryLong"?"long":"short",entryOrderId:h.id,entryBarT:_.t,entryPrice:_.o,entryBarIndex:N};for(let j of d){let O=E(h.id,j);if(A.has(O))continue;let M={orderId:h.id,horizon:j,entryBarT:_.t,entryPrice:_.o,side:$.side,status:"pending",close:null,barT:null};A.set(O,M),c.markouts.push(M)}}else $=null,w=Number(c.strategy?.risk?.cooldownBars)||0,R=_.t}function q(h){if(S.has(h.id)||T.has(h.id))return;let _={orderId:h.id,action:h.action,side:h.side,signalBarT:h.signalBarT,status:"missed"};T.set(h.id,_),c.missedFills.push(_),h.status="missed"}for(let h of c.intendedOrders){if(h.status==="filled"||S.has(h.id))continue;let _=p.get(h.signalBarT);if(_==null)continue;let N=_+1;N<u.length&&(y==null||u[N].t>y)&&G(h,u[N],N)}for(let h of x){let _=u[h],N=m[h].signals,L=$,j=M=>{if($||w>0&&(R==null||_.t>=R))return;let B=V({action:M,signalBarT:_.t,signalIndex:h}),Q=h+1;Q<u.length?G(B,u[Q],Q):q(B)},O=M=>{if(!$||$.side==="long"&&M!=="exitLong"||$.side==="short"&&M!=="exitShort")return;let J=V({action:M,signalBarT:_.t,signalIndex:h}),B=h+1;B<u.length?G(J,u[B],B):q(J)};L?(N.exitLong&&O("exitLong"),N.exitShort&&O("exitShort")):N.entryLong&&N.entryShort||(N.entryLong&&j("entryLong"),N.entryShort&&j("entryShort")),w>0&&R!=null&&_.t>=R&&(w-=1,w===0&&(R=null)),c.cursor=_.t,c.lastProcessedBarIndex=h}for(let h of c.markouts){if(h.status!=="pending")continue;let _=c.fills.find(j=>j.orderId===h.orderId&&j.action==="entry");if(!_)continue;let N=p.get(_.barT);if(N==null)continue;let L=N+h.horizon;if(L<u.length){h.close=u[L].c,h.barT=u[L].t,h.status="filled";let j=h.entryPrice;h.markout=h.side==="long"?(h.close-j)/j:(j-h.close)/j}}return c.position=$,c.cooldownBarsRemaining=w,c.cooldownStartT=R,c.updatedAt=t(),c})}return{start:n,step:s,list:a,get:o,stop:i}}import hs from"node:os";import ys from"node:path";var ws=["privatekey","secretkey","seed","mnemonic","passphrase","password","keystore","keymaterial","apikey","authtoken","accesstoken","refreshtoken","credential","bearer","signature","authorization","xprv","xpriv","wif"];function Re(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function gs(e){return String(e).toLowerCase().replace(/[^a-z0-9]/g,"")}function Kt(e){if(Array.isArray(e)){for(let t of e)Kt(t);return}if(Re(e))for(let[t,r]of Object.entries(e)){if(ws.some(n=>gs(t).includes(n)))throw new Error(`strategy service: secret-like field "${t}" is forbidden`);Kt(r)}}function bs(e){if(!Re(e))throw new TypeError("strategy input must be a plain object");return Kt(e),e}function Es(e,t={}){if(t.nowMs!==void 0){if(!Number.isInteger(t.nowMs))throw new TypeError("nowMs must be an integer epoch milliseconds");return t.nowMs}let r=Date.now();if(e.nowMs===void 0||e.nowMs===null)return r;if(!Number.isInteger(e.nowMs))throw new TypeError("nowMs must be an integer epoch milliseconds");if(Math.abs(e.nowMs-r)>12e4)throw new Error("nowMs outside allowed wall-clock skew (120s); omit nowMs to use server time");return e.nowMs}async function Jt(e,t,r,n){if(Array.isArray(t.bars))return t.bars;let o=ze(e.venue),a=r.fetchBars??o.fetchBars;if(typeof a!="function")throw new Error(`strategy venue ${o.id} does not support history`);let i=await a({coin:e.market.coin,interval:e.market.interval,count:t.count??1500,endTime:t.endTime??n}),s=Array.isArray(i)?i:i?.bars;if(!Array.isArray(s))throw new Error("strategy history provider returned no bars");return s}function Yt(e,t){let r=e.backtestOptions??{};if(!Re(r))throw new TypeError("backtestOptions must be a plain object");return{...r,nowMs:t}}function Gr(e,t,r,n,o={}){let a=e.evidenceOptions??{};if(!Re(a))throw new TypeError("evidenceOptions must be a plain object");return{...a,...o,strategy:t,bars:r,backtestOptions:Yt(e,n)}}function Xr(){return ys.join(hs.homedir(),".oracle","strategy-shadow.json")}function xs(e,t){return{perStrategyNotionalUsd:e.risk.maxNotionalUsd,maxLeverage:e.risk.maxLeverage,dailyLossCapUsd:e.risk.maxNotionalUsd*(e.risk.maxDailyLossPct/100),chainAllowlist:[e.venue],assetAllowlist:[e.market.coin],expiresAt:Math.min(e.risk.expiresAt,t+864e5),killSwitchRequired:!0}}async function Ss(e,t={},r={}){let n=bs(t),o=Es(n,r);if(e==="draft")return{strategy:Ct(n.prompt,{nowMs:o})};if(e==="validate"){let a=K(n.strategy);if(a.strategy.risk.expiresAt<=o)throw new Error("strategy is expired");return{valid:!0,strategy:a.strategy,strategyHash:a.strategyHash,compilerHash:a.compilerHash,compilerVersion:a.compilerVersion,requiredSeries:a.requiredSeries}}if(e==="backtest"||e==="evidence"){let a=K(n.strategy),i=await Jt(a.strategy,n,r,o);Oe(a,i);let s=qe(Gr(n,a.strategy,i,o));return e==="evidence"?s:{backtest:se(a.strategy,i,Yt(n,o)),evidence:s}}if(e==="optimize"){let a=K(n.strategy),i=await Jt(a.strategy,n,r,o);Oe(a,i);let s=n.trainFraction,l=n.evidenceOptions?.trainFraction;if(s!=null&&l!=null&&s!==l)throw new TypeError("conflicting trainFraction controls are forbidden");let u=s??l??.7;if(typeof u!="number"||u<=0||u>=1)throw new TypeError("trainFraction must be in (0,1)");let d=i.slice(0,Math.floor(i.length*u)),c=n.options??{};if(!Re(c))throw new TypeError("options must be a plain object");let f=jt(a.strategy,d,{...c,...n.maxTrials==null?{}:{maxTrials:n.maxTrials},backtestOptions:Yt(n,o)}),m=f.bestStrategy;return{strategy:m,optimization:f,evidence:qe(Gr(n,m,i,o,{trainFraction:u}))}}if(e==="shadow"){let a=Xe({storePath:r.storePath??Xr(),clock:()=>o}),i=n.action;if(i==="start")return await a.start({strategy:n.strategy,evidenceId:n.evidenceId??n.evidence?.id??null});if(i==="list")return await a.list();if(i==="get")return await a.get(n.id);if(i==="stop")return await a.stop(n.id);if(i==="step"){let s=await a.get(n.id);if(!s)throw new Error(`shadow runner not found: ${n.id}`);let l=await Jt(s.strategy,n,r,o);return Oe(K(s.strategy),l),await a.step(n.id,l,n.stepOptions??{})}throw new Error(`unknown shadow action: ${i}`)}if(e==="prepare"){let a=K(n.strategy),i=ze(a.strategy.venue);if(typeof n.shadowId!="string"||!n.shadowId)throw new Error("strategy prepare requires a matching shadow runner id");let l=await Xe({storePath:r.storePath??Xr(),clock:()=>o}).get(n.shadowId);if(!l)throw new Error("strategy prepare shadow runner not found");if(l.status!=="running")throw new Error("strategy prepare requires an active shadow runner");if(!Number.isFinite(l.cursor))throw new Error("strategy prepare requires a stepped shadow runner");if(l.strategyHash!==a.strategyHash||l.compilerHash!==a.compilerHash)throw new Error("strategy prepare shadow runner does not match strategy artifacts");if(l.evidenceId!==n.evidence?.id)throw new Error("strategy prepare shadow runner does not match evidence artifact");let u=n.caps??xs(a.strategy,o);return i.prepareIntent({strategy:a.strategy,evidence:n.evidence,shadow:{id:l.id,stateHash:Yr(l),status:l.status,cursor:l.cursor,updatedAt:l.updatedAt},caps:u,nowMs:o,env:r.env??process.env})}throw new Error(`unknown strategy operation: ${e}`)}export{gr as EVIDENCE_STATUSES,Ft as MAX_OPTIMIZER_TRIALS,ce as STRATEGY_COMPILER_HASH,ye as STRATEGY_COMPILER_VERSION,De as STRATEGY_VERSION,D as StrategyDraftError,me as StrategyValidationError,we as applyParameterOverrides,kt as assertEvidenceArtifact,ht as atr,se as backtestStrategy,mt as bollinger,Cr as canonicalStrategyJson,K as compileStrategy,St as computeEvidenceArtifactId,Xe as createShadowRunner,Ct as draftStrategyFromPrompt,Te as ema,qe as evaluateEvidence,_t as fetchHyperliquidStrategyBars,kr as intervalToMs,pt as macd,Ar as normalizeHyperliquidCandles,Y as normalizeStrategy,Bt as openShadowStore,jt as optimizeStrategy,Tt as prepareStrategyLiveHandoff,ze as requireStrategyVenue,Be as resolveStrategyVenue,dt as rsi,Ss as runStrategyOperation,ft as sma,de as strategyHash,So as strategyVenues,Je as validateStrategy};