@oracle-agent/oracle 0.25.0 → 0.25.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/graphics/assets/arbitrum-lockup.png +0 -0
- package/dist/assets/graphics/assets/avalanche-lockup.png +0 -0
- package/dist/assets/graphics/assets/base-lockup.png +0 -0
- package/dist/assets/graphics/assets/bitcoin-lockup.png +0 -0
- package/dist/assets/graphics/assets/bnb-lockup.png +0 -0
- package/dist/assets/graphics/assets/ethereum-lockup.png +0 -0
- package/dist/assets/graphics/assets/hyperliquid-lockup.png +0 -0
- package/dist/assets/graphics/assets/optimism-lockup.png +0 -0
- package/dist/assets/graphics/assets/oracle-globe.png +0 -0
- package/dist/assets/graphics/assets/polygon-lockup.png +0 -0
- package/dist/assets/graphics/assets/polymarket-lockup.png +0 -0
- package/dist/assets/graphics/assets/polymarket.png +0 -0
- package/dist/assets/graphics/assets/robinhood-lockup.png +0 -0
- package/dist/assets/graphics/assets/solana-lockup.png +0 -0
- package/dist/assets/graphics/assets/stable-lockup.png +0 -0
- package/dist/assets/graphics/fonts/CormorantGaramond-Bold.ttf +0 -0
- package/dist/assets/graphics/fonts/RobotoMono-Bold.ttf +0 -0
- package/dist/assets/graphics/fonts/dmmono-Medium.ttf +0 -0
- package/dist/assets/graphics/oracle_card.py +1165 -0
- package/dist/assets/skills/oracle-desk-product/SKILL.md +1 -1
- package/dist/bin/desk-server.mjs +44 -44
- package/dist/bin/oracle-data-mcp.mjs +68 -27
- package/dist/bin/oracle-public-server.mjs +15 -15
- package/dist/bin/oracle-route.mjs +1 -1
- package/dist/cli/commands/chat.mjs +94 -94
- package/dist/cli/commands/doctor.mjs +3 -3
- package/dist/cli/commands/eval.mjs +27 -27
- package/dist/cli/commands/farm.mjs +57 -57
- package/dist/cli/commands/model.mjs +98 -98
- package/dist/cli/commands/receipt.mjs +2 -2
- package/dist/cli/commands/sign.mjs +13 -13
- package/dist/cli/commands/signer.mjs +13 -13
- package/dist/cli/commands/strategy.mjs +1 -1
- package/dist/cli/commands/swap.mjs +1 -1
- package/dist/cli/commands/venues.mjs +2 -2
- package/dist/data/desk-data.mjs +42 -42
- package/dist/index.mjs +51 -51
- package/dist/local-signer/index.mjs +3 -3
- package/dist/nft/index.mjs +1 -1
- package/dist/prepare-envelope.mjs +1 -1
- package/dist/public-api/agent-grants.mjs +3 -3
- package/dist/router/index.mjs +10 -10
- package/dist/router/prepare-bridge.mjs +1 -1
- package/dist/strategy/index.mjs +1 -1
- package/package.json +1 -1
|
@@ -43,4 +43,4 @@ ${r.count} ${r.noun} ${r.is} pending:
|
|
|
43
43
|
${e.format(t)}
|
|
44
44
|
`.trim())}};vB.exports=gc});var Ns=f((HL,WB)=>{"use strict";var VB=Symbol.for("undici.globalDispatcher.1"),{InvalidArgumentError:Hb}=v(),Vb=zt();OB()===void 0&&qB(new Vb);function qB(A){if(!A||typeof A.dispatch!="function")throw new Hb("Argument agent must implement Agent");Object.defineProperty(globalThis,VB,{value:A,writable:!0,enumerable:!1,configurable:!1})}function OB(){return globalThis[VB]}WB.exports={setGlobalDispatcher:qB,getGlobalDispatcher:OB}});var Us=f((qL,PB)=>{"use strict";PB.exports=class{#e;constructor(e){if(typeof e!="object"||e===null)throw new TypeError("handler must be an object");this.#e=e}onConnect(...e){return this.#e.onConnect?.(...e)}onError(...e){return this.#e.onError?.(...e)}onUpgrade(...e){return this.#e.onUpgrade?.(...e)}onResponseStarted(...e){return this.#e.onResponseStarted?.(...e)}onHeaders(...e){return this.#e.onHeaders?.(...e)}onData(...e){return this.#e.onData?.(...e)}onComplete(...e){return this.#e.onComplete?.(...e)}onBodySent(...e){return this.#e.onBodySent?.(...e)}}});var ZB=f((OL,_B)=>{"use strict";var qb=gs();_B.exports=A=>{let e=A?.maxRedirections;return t=>function(n,s){let{maxRedirections:o=e,...i}=n;if(!o)return t(n,s);let a=new qb(t,o,n,s);return t(i,a)}}});var KB=f((WL,zB)=>{"use strict";var Ob=ps();zB.exports=A=>e=>function(r,n){return e(r,new Ob({...r,retryOptions:{...A,...r.retryOptions}},{handler:n,dispatch:e}))}});var $B=f((PL,XB)=>{"use strict";var Wb=T(),{InvalidArgumentError:Pb,RequestAbortedError:_b}=v(),Zb=Us(),uc=class extends Zb{#e=1024*1024;#A=null;#t=!1;#s=!1;#n=0;#r=null;#o=null;constructor({maxSize:e},t){if(super(t),e!=null&&(!Number.isFinite(e)||e<1))throw new Pb("maxSize must be a number greater than 0");this.#e=e??this.#e,this.#o=t}onConnect(e){this.#A=e,this.#o.onConnect(this.#i.bind(this))}#i(e){this.#s=!0,this.#r=e}onHeaders(e,t,r,n){let o=Wb.parseHeaders(t)["content-length"];if(o!=null&&o>this.#e)throw new _b(`Response size (${o}) larger than maxSize (${this.#e})`);return this.#s?!0:this.#o.onHeaders(e,t,r,n)}onError(e){this.#t||(e=this.#r??e,this.#o.onError(e))}onData(e){return this.#n=this.#n+e.length,this.#n>=this.#e&&(this.#t=!0,this.#s?this.#o.onError(this.#r):this.#o.onComplete([])),!0}onComplete(e){if(!this.#t){if(this.#s){this.#o.onError(this.reason);return}this.#o.onComplete(e)}}};function zb({maxSize:A}={maxSize:1024*1024}){return e=>function(r,n){let{dumpMaxSize:s=A}=r,o=new uc({maxSize:s},n);return e(r,o)}}XB.exports=zb});var AI=f((_L,eI)=>{"use strict";var{isIP:Kb}=d("node:net"),{lookup:Xb}=d("node:dns"),$b=Us(),{InvalidArgumentError:or,InformationalError:jb}=v(),jB=Math.pow(2,31)-1,lc=class{#e=0;#A=0;#t=new Map;dualStack=!0;affinity=null;lookup=null;pick=null;constructor(e){this.#e=e.maxTTL,this.#A=e.maxItems,this.dualStack=e.dualStack,this.affinity=e.affinity,this.lookup=e.lookup??this.#s,this.pick=e.pick??this.#n}get full(){return this.#t.size===this.#A}runLookup(e,t,r){let n=this.#t.get(e.hostname);if(n==null&&this.full){r(null,e.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(e,s,(o,i)=>{if(o||i==null||i.length===0){r(o??new jb("No DNS entries found"));return}this.setRecords(e,i);let a=this.#t.get(e.hostname),c=this.pick(e,a,s.affinity),u;typeof c.port=="number"?u=`:${c.port}`:e.port!==""?u=`:${e.port}`:u="",r(null,`${e.protocol}//${c.family===6?`[${c.address}]`:c.address}${u}`)});else{let o=this.pick(e,n,s.affinity);if(o==null){this.#t.delete(e.hostname),this.runLookup(e,t,r);return}let i;typeof o.port=="number"?i=`:${o.port}`:e.port!==""?i=`:${e.port}`:i="",r(null,`${e.protocol}//${o.family===6?`[${o.address}]`:o.address}${i}`)}}#s(e,t,r){Xb(e.hostname,{all:!0,family:this.dualStack===!1?this.affinity:0,order:"ipv4first"},(n,s)=>{if(n)return r(n);let o=new Map;for(let i of s)o.set(`${i.address}:${i.family}`,i);r(null,o.values())})}#n(e,t,r){let n=null,{records:s,offset:o}=t,i;if(this.dualStack?(r==null&&(o==null||o===jB?(t.offset=0,r=4):(t.offset++,r=(t.offset&1)===1?6:4)),s[r]!=null&&s[r].ips.length>0?i=s[r]:i=s[r===4?6:4]):i=s[r],i==null||i.ips.length===0)return n;i.offset==null||i.offset===jB?i.offset=0:i.offset++;let a=i.offset%i.ips.length;return n=i.ips[a]??null,n==null?n:Date.now()-n.timestamp>n.ttl?(i.ips.splice(a,1),this.pick(e,t,r)):n}setRecords(e,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 o=n.records[s.family]??{ips:[]};o.ips.push(s),n.records[s.family]=o}this.#t.set(e.hostname,n)}getHandler(e,t){return new Ec(this,e,t)}},Ec=class extends $b{#e=null;#A=null;#t=null;#s=null;#n=null;constructor(e,{origin:t,handler:r,dispatch:n},s){super(r),this.#n=t,this.#s=r,this.#A={...s},this.#e=e,this.#t=n}onError(e){switch(e.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(e);return}case"ENOTFOUND":this.#e.deleteRecord(this.#n);default:this.#s.onError(e);break}}};eI.exports=A=>{if(A?.maxTTL!=null&&(typeof A?.maxTTL!="number"||A?.maxTTL<0))throw new or("Invalid maxTTL. Must be a positive number");if(A?.maxItems!=null&&(typeof A?.maxItems!="number"||A?.maxItems<1))throw new or("Invalid maxItems. Must be a positive number and greater than zero");if(A?.affinity!=null&&A?.affinity!==4&&A?.affinity!==6)throw new or("Invalid affinity. Must be either 4 or 6");if(A?.dualStack!=null&&typeof A?.dualStack!="boolean")throw new or("Invalid dualStack. Must be a boolean");if(A?.lookup!=null&&typeof A?.lookup!="function")throw new or("Invalid lookup. Must be a function");if(A?.pick!=null&&typeof A?.pick!="function")throw new or("Invalid pick. Must be a function");let e=A?.dualStack??!0,t;e?t=A?.affinity??null:t=A?.affinity??4;let r={maxTTL:A?.maxTTL??1e4,lookup:A?.lookup??null,pick:A?.pick??null,dualStack:e,affinity:t,maxItems:A?.maxItems??1/0},n=new lc(r);return s=>function(i,a){let c=i.origin.constructor===URL?i.origin:new URL(i.origin);return Kb(c.hostname)!==0?s(i,a):(n.runLookup(c,i,(u,g)=>{if(u)return a.onError(u);let l=null;l={...i,servername:c.hostname,origin:g,headers:{host:c.hostname,...i.headers}},s(l,n.getHandler({origin:c,dispatch:s,handler:a},i))}),!0)}}});var It=f((ZL,aI)=>{"use strict";var{kConstruct:ek}=$(),{kEnumerableProperty:ir}=T(),{iteratorMixin:Ak,isValidHeaderName:rn,isValidHeaderValue:rI}=De(),{webidl:J}=ge(),Qc=d("node:assert"),Ms=d("node:util"),oe=Symbol("headers map"),Fe=Symbol("headers map sorted");function tI(A){return A===10||A===13||A===9||A===32}function nI(A){let e=0,t=A.length;for(;t>e&&tI(A.charCodeAt(t-1));)--t;for(;t>e&&tI(A.charCodeAt(e));)++e;return e===0&&t===A.length?A:A.substring(e,t)}function sI(A,e){if(Array.isArray(e))for(let t=0;t<e.length;++t){let r=e[t];if(r.length!==2)throw J.errors.exception({header:"Headers constructor",message:`expected name/value pair to be length 2, found ${r.length}.`});Bc(A,r[0],r[1])}else if(typeof e=="object"&&e!==null){let t=Object.keys(e);for(let r=0;r<t.length;++r)Bc(A,t[r],e[t[r]])}else throw J.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence<sequence<ByteString>>","record<ByteString, ByteString>"]})}function Bc(A,e,t){if(t=nI(t),rn(e)){if(!rI(t))throw J.errors.invalidArgument({prefix:"Headers.append",value:t,type:"header value"})}else throw J.errors.invalidArgument({prefix:"Headers.append",value:e,type:"header name"});if(iI(A)==="immutable")throw new TypeError("immutable");return Ic(A).append(e,t,!1)}function oI(A,e){return A[0]<e[0]?-1:1}var Ls=class A{cookies=null;constructor(e){e instanceof A?(this[oe]=new Map(e[oe]),this[Fe]=e[Fe],this.cookies=e.cookies===null?null:[...e.cookies]):(this[oe]=new Map(e),this[Fe]=null)}contains(e,t){return this[oe].has(t?e:e.toLowerCase())}clear(){this[oe].clear(),this[Fe]=null,this.cookies=null}append(e,t,r){this[Fe]=null;let n=r?e:e.toLowerCase(),s=this[oe].get(n);if(s){let o=n==="cookie"?"; ":", ";this[oe].set(n,{name:s.name,value:`${s.value}${o}${t}`})}else this[oe].set(n,{name:e,value:t});n==="set-cookie"&&(this.cookies??=[]).push(t)}set(e,t,r){this[Fe]=null;let n=r?e:e.toLowerCase();n==="set-cookie"&&(this.cookies=[t]),this[oe].set(n,{name:e,value:t})}delete(e,t){this[Fe]=null,t||(e=e.toLowerCase()),e==="set-cookie"&&(this.cookies=null),this[oe].delete(e)}get(e,t){return this[oe].get(t?e:e.toLowerCase())?.value??null}*[Symbol.iterator](){for(let{0:e,1:{value:t}}of this[oe])yield[e,t]}get entries(){let e={};if(this[oe].size!==0)for(let{name:t,value:r}of this[oe].values())e[t]=r;return e}rawValues(){return this[oe].values()}get entriesList(){let e=[];if(this[oe].size!==0)for(let{0:t,1:{name:r,value:n}}of this[oe])if(t==="set-cookie")for(let s of this.cookies)e.push([r,s]);else e.push([r,n]);return e}toSortedArray(){let e=this[oe].size,t=new Array(e);if(e<=32){if(e===0)return t;let r=this[oe][Symbol.iterator](),n=r.next().value;t[0]=[n[0],n[1].value],Qc(n[1].value!==null);for(let s=1,o=0,i=0,a=0,c=0,u,g;s<e;++s){for(g=r.next().value,u=t[s]=[g[0],g[1].value],Qc(u[1]!==null),a=0,i=s;a<i;)c=a+(i-a>>1),t[c][0]<=u[0]?a=c+1:i=c;if(s!==c){for(o=s;o>a;)t[o]=t[--o];t[a]=u}}if(!r.next().done)throw new TypeError("Unreachable");return t}else{let r=0;for(let{0:n,1:{value:s}}of this[oe])t[r++]=[n,s],Qc(s!==null);return t.sort(oI)}}},Xe=class A{#e;#A;constructor(e=void 0){J.util.markAsUncloneable(this),e!==ek&&(this.#A=new Ls,this.#e="none",e!==void 0&&(e=J.converters.HeadersInit(e,"Headers contructor","init"),sI(this,e)))}append(e,t){J.brandCheck(this,A),J.argumentLengthCheck(arguments,2,"Headers.append");let r="Headers.append";return e=J.converters.ByteString(e,r,"name"),t=J.converters.ByteString(t,r,"value"),Bc(this,e,t)}delete(e){if(J.brandCheck(this,A),J.argumentLengthCheck(arguments,1,"Headers.delete"),e=J.converters.ByteString(e,"Headers.delete","name"),!rn(e))throw J.errors.invalidArgument({prefix:"Headers.delete",value:e,type:"header name"});if(this.#e==="immutable")throw new TypeError("immutable");this.#A.contains(e,!1)&&this.#A.delete(e,!1)}get(e){J.brandCheck(this,A),J.argumentLengthCheck(arguments,1,"Headers.get");let t="Headers.get";if(e=J.converters.ByteString(e,t,"name"),!rn(e))throw J.errors.invalidArgument({prefix:t,value:e,type:"header name"});return this.#A.get(e,!1)}has(e){J.brandCheck(this,A),J.argumentLengthCheck(arguments,1,"Headers.has");let t="Headers.has";if(e=J.converters.ByteString(e,t,"name"),!rn(e))throw J.errors.invalidArgument({prefix:t,value:e,type:"header name"});return this.#A.contains(e,!1)}set(e,t){J.brandCheck(this,A),J.argumentLengthCheck(arguments,2,"Headers.set");let r="Headers.set";if(e=J.converters.ByteString(e,r,"name"),t=J.converters.ByteString(t,r,"value"),t=nI(t),rn(e)){if(!rI(t))throw J.errors.invalidArgument({prefix:r,value:t,type:"header value"})}else throw J.errors.invalidArgument({prefix:r,value:e,type:"header name"});if(this.#e==="immutable")throw new TypeError("immutable");this.#A.set(e,t,!1)}getSetCookie(){J.brandCheck(this,A);let e=this.#A.cookies;return e?[...e]:[]}get[Fe](){if(this.#A[Fe])return this.#A[Fe];let e=[],t=this.#A.toSortedArray(),r=this.#A.cookies;if(r===null||r.length===1)return this.#A[Fe]=t;for(let n=0;n<t.length;++n){let{0:s,1:o}=t[n];if(s==="set-cookie")for(let i=0;i<r.length;++i)e.push([s,r[i]]);else e.push([s,o])}return this.#A[Fe]=e}[Ms.inspect.custom](e,t){return t.depth??=e,`Headers ${Ms.formatWithOptions(t,this.#A.entries)}`}static getHeadersGuard(e){return e.#e}static setHeadersGuard(e,t){e.#e=t}static getHeadersList(e){return e.#A}static setHeadersList(e,t){e.#A=t}},{getHeadersGuard:iI,setHeadersGuard:tk,getHeadersList:Ic,setHeadersList:rk}=Xe;Reflect.deleteProperty(Xe,"getHeadersGuard");Reflect.deleteProperty(Xe,"setHeadersGuard");Reflect.deleteProperty(Xe,"getHeadersList");Reflect.deleteProperty(Xe,"setHeadersList");Ak("Headers",Xe,Fe,0,1);Object.defineProperties(Xe.prototype,{append:ir,delete:ir,get:ir,has:ir,set:ir,getSetCookie:ir,[Symbol.toStringTag]:{value:"Headers",configurable:!0},[Ms.inspect.custom]:{enumerable:!1}});J.converters.HeadersInit=function(A,e,t){if(J.util.Type(A)==="Object"){let r=Reflect.get(A,Symbol.iterator);if(!Ms.types.isProxy(A)&&r===Xe.prototype.entries)try{return Ic(A).entriesList}catch{}return typeof r=="function"?J.converters["sequence<sequence<ByteString>>"](A,e,t,r.bind(A)):J.converters["record<ByteString, ByteString>"](A,e,t)}throw J.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence<sequence<ByteString>>","record<ByteString, ByteString>"]})};aI.exports={fill:sI,compareHeaderName:oI,Headers:Xe,HeadersList:Ls,getHeadersGuard:iI,setHeadersGuard:tk,setHeadersList:rk,getHeadersList:Ic}});var sn=f((zL,fI)=>{"use strict";var{Headers:QI,HeadersList:cI,fill:nk,getHeadersGuard:sk,setHeadersGuard:BI,setHeadersList:II}=It(),{extractBody:gI,cloneBody:ok,mixinBody:ik,hasFinalizationRegistry:CI,streamRegistry:hI,bodyUnusable:ak}=vt(),Cc=T(),uI=d("node:util"),{kEnumerableProperty:Se}=Cc,{isValidReasonPhrase:ck,isCancelled:gk,isAborted:uk,isBlobLike:lk,serializeJavascriptValueToJSONString:Ek,isErrorLike:Qk,isomorphicEncode:Bk,environmentSettingsObject:Ik}=De(),{redirectStatusSet:Ck,nullBodyStatus:hk}=Fr(),{kState:ee,kHeaders:yA}=SA(),{webidl:L}=ge(),{FormData:dk}=Tr(),{URLSerializer:lI}=he(),{kConstruct:xs}=$(),hc=d("node:assert"),{types:fk}=d("node:util"),pk=new TextEncoder("utf-8"),Ct=class A{static error(){return nn(Ys(),"immutable")}static json(e,t={}){L.argumentLengthCheck(arguments,1,"Response.json"),t!==null&&(t=L.converters.ResponseInit(t));let r=pk.encode(Ek(e)),n=gI(r),s=nn(ar({}),"response");return EI(s,t,{body:n[0],type:"application/json"}),s}static redirect(e,t=302){L.argumentLengthCheck(arguments,1,"Response.redirect"),e=L.converters.USVString(e),t=L.converters["unsigned short"](t);let r;try{r=new URL(e,Ik.settingsObject.baseUrl)}catch(o){throw new TypeError(`Failed to parse URL from ${e}`,{cause:o})}if(!Ck.has(t))throw new RangeError(`Invalid status code ${t}`);let n=nn(ar({}),"immutable");n[ee].status=t;let s=Bk(lI(r));return n[ee].headersList.append("location",s,!0),n}constructor(e=null,t={}){if(L.util.markAsUncloneable(this),e===xs)return;e!==null&&(e=L.converters.BodyInit(e)),t=L.converters.ResponseInit(t),this[ee]=ar({}),this[yA]=new QI(xs),BI(this[yA],"response"),II(this[yA],this[ee].headersList);let r=null;if(e!=null){let[n,s]=gI(e);r={body:n,type:s}}EI(this,t,r)}get type(){return L.brandCheck(this,A),this[ee].type}get url(){L.brandCheck(this,A);let e=this[ee].urlList,t=e[e.length-1]??null;return t===null?"":lI(t,!0)}get redirected(){return L.brandCheck(this,A),this[ee].urlList.length>1}get status(){return L.brandCheck(this,A),this[ee].status}get ok(){return L.brandCheck(this,A),this[ee].status>=200&&this[ee].status<=299}get statusText(){return L.brandCheck(this,A),this[ee].statusText}get headers(){return L.brandCheck(this,A),this[yA]}get body(){return L.brandCheck(this,A),this[ee].body?this[ee].body.stream:null}get bodyUsed(){return L.brandCheck(this,A),!!this[ee].body&&Cc.isDisturbed(this[ee].body.stream)}clone(){if(L.brandCheck(this,A),ak(this))throw L.errors.exception({header:"Response.clone",message:"Body has already been consumed."});let e=dc(this[ee]);return CI&&this[ee].body?.stream&&hI.register(this,new WeakRef(this[ee].body.stream)),nn(e,sk(this[yA]))}[uI.inspect.custom](e,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 ${uI.formatWithOptions(t,r)}`}};ik(Ct);Object.defineProperties(Ct.prototype,{type:Se,url:Se,status:Se,ok:Se,redirected:Se,statusText:Se,headers:Se,clone:Se,body:Se,bodyUsed:Se,[Symbol.toStringTag]:{value:"Response",configurable:!0}});Object.defineProperties(Ct,{json:Se,redirect:Se,error:Se});function dc(A){if(A.internalResponse)return dI(dc(A.internalResponse),A.type);let e=ar({...A,body:null});return A.body!=null&&(e.body=ok(e,A.body)),e}function ar(A){return{aborted:!1,rangeRequested:!1,timingAllowPassed:!1,requestIncludesCredentials:!1,type:"default",status:200,timingInfo:null,cacheState:"",statusText:"",...A,headersList:A?.headersList?new cI(A?.headersList):new cI,urlList:A?.urlList?[...A.urlList]:[]}}function Ys(A){let e=Qk(A);return ar({type:"error",status:0,error:e?A:new Error(A&&String(A)),aborted:A&&A.name==="AbortError"})}function wk(A){return A.type==="error"&&A.status===0}function Ts(A,e){return e={internalResponse:A,...e},new Proxy(A,{get(t,r){return r in e?e[r]:t[r]},set(t,r,n){return hc(!(r in e)),t[r]=n,!0}})}function dI(A,e){if(e==="basic")return Ts(A,{type:"basic",headersList:A.headersList});if(e==="cors")return Ts(A,{type:"cors",headersList:A.headersList});if(e==="opaque")return Ts(A,{type:"opaque",urlList:Object.freeze([]),status:0,statusText:"",body:null});if(e==="opaqueredirect")return Ts(A,{type:"opaqueredirect",status:0,statusText:"",headersList:[],body:null});hc(!1)}function mk(A,e=null){return hc(gk(A)),uk(A)?Ys(Object.assign(new DOMException("The operation was aborted.","AbortError"),{cause:e})):Ys(Object.assign(new DOMException("Request was cancelled."),{cause:e}))}function EI(A,e,t){if(e.status!==null&&(e.status<200||e.status>599))throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.');if("statusText"in e&&e.statusText!=null&&!ck(String(e.statusText)))throw new TypeError("Invalid statusText");if("status"in e&&e.status!=null&&(A[ee].status=e.status),"statusText"in e&&e.statusText!=null&&(A[ee].statusText=e.statusText),"headers"in e&&e.headers!=null&&nk(A[yA],e.headers),t){if(hk.includes(A.status))throw L.errors.exception({header:"Response constructor",message:`Invalid response status code ${A.status}`});A[ee].body=t.body,t.type!=null&&!A[ee].headersList.contains("content-type",!0)&&A[ee].headersList.append("content-type",t.type,!0)}}function nn(A,e){let t=new Ct(xs);return t[ee]=A,t[yA]=new QI(xs),II(t[yA],A.headersList),BI(t[yA],e),CI&&A.body?.stream&&hI.register(t,new WeakRef(A.body.stream)),t}L.converters.ReadableStream=L.interfaceConverter(ReadableStream);L.converters.FormData=L.interfaceConverter(dk);L.converters.URLSearchParams=L.interfaceConverter(URLSearchParams);L.converters.XMLHttpRequestBodyInit=function(A,e,t){return typeof A=="string"?L.converters.USVString(A,e,t):lk(A)?L.converters.Blob(A,e,t,{strict:!1}):ArrayBuffer.isView(A)||fk.isArrayBuffer(A)?L.converters.BufferSource(A,e,t):Cc.isFormDataLike(A)?L.converters.FormData(A,e,t,{strict:!1}):A instanceof URLSearchParams?L.converters.URLSearchParams(A,e,t):L.converters.DOMString(A,e,t)};L.converters.BodyInit=function(A,e,t){return A instanceof ReadableStream?L.converters.ReadableStream(A,e,t):A?.[Symbol.asyncIterator]?A:L.converters.XMLHttpRequestBodyInit(A,e,t)};L.converters.ResponseInit=L.dictionaryConverter([{key:"status",converter:L.converters["unsigned short"],defaultValue:()=>200},{key:"statusText",converter:L.converters.ByteString,defaultValue:()=>""},{key:"headers",converter:L.converters.HeadersInit}]);fI.exports={isNetworkError:wk,makeNetworkError:Ys,makeResponse:ar,makeAppropriateNetworkError:mk,filterResponse:dI,Response:Ct,cloneResponse:dc,fromInnerResponse:nn}});var yI=f((KL,mI)=>{"use strict";var{kConnected:pI,kSize:wI}=$(),fc=class{constructor(e){this.value=e}deref(){return this.value[pI]===0&&this.value[wI]===0?void 0:this.value}},pc=class{constructor(e){this.finalizer=e}register(e,t){e.on&&e.on("disconnect",()=>{e[pI]===0&&e[wI]===0&&this.finalizer(t)})}unregister(e){}};mI.exports=function(){return process.env.NODE_V8_COVERAGE&&process.version.startsWith("v18")?(process._rawDebug("Using compatibility WeakRef and FinalizationRegistry"),{WeakRef:fc,FinalizationRegistry:pc}):{WeakRef,FinalizationRegistry}}});var cr=f((XL,JI)=>{"use strict";var{extractBody:yk,mixinBody:Dk,cloneBody:bk,bodyUnusable:DI}=vt(),{Headers:LI,fill:kk,HeadersList:Hs,setHeadersGuard:mc,getHeadersGuard:Rk,setHeadersList:TI,getHeadersList:bI}=It(),{FinalizationRegistry:Fk}=yI()(),Js=T(),kI=d("node:util"),{isValidHTTPToken:Sk,sameOrigin:RI,environmentSettingsObject:Gs}=De(),{forbiddenMethodsSet:Nk,corsSafeListedMethodsSet:Uk,referrerPolicy:Mk,requestRedirect:Lk,requestMode:Tk,requestCredentials:xk,requestCache:Yk,requestDuplex:Gk}=Fr(),{kEnumerableProperty:ie,normalizedMethodRecordsBase:Jk,normalizedMethodRecords:vk}=Js,{kHeaders:Ne,kSignal:vs,kState:X,kDispatcher:wc}=SA(),{webidl:S}=ge(),{URLSerializer:Hk}=he(),{kConstruct:Vs}=$(),Vk=d("node:assert"),{getMaxListeners:FI,setMaxListeners:SI,getEventListeners:qk,defaultMaxListeners:NI}=d("node:events"),Ok=Symbol("abortController"),xI=new Fk(({signal:A,abort:e})=>{A.removeEventListener("abort",e)}),qs=new WeakMap;function UI(A){return e;function e(){let t=A.deref();if(t!==void 0){xI.unregister(e),this.removeEventListener("abort",e),t.abort(this.reason);let r=qs.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()}qs.delete(t.signal)}}}}var MI=!1,HA=class A{constructor(e,t={}){if(S.util.markAsUncloneable(this),e===Vs)return;let r="Request constructor";S.argumentLengthCheck(arguments,1,r),e=S.converters.RequestInfo(e,r,"input"),t=S.converters.RequestInit(t,r,"init");let n=null,s=null,o=Gs.settingsObject.baseUrl,i=null;if(typeof e=="string"){this[wc]=t.dispatcher;let Q;try{Q=new URL(e,o)}catch(h){throw new TypeError("Failed to parse URL from "+e,{cause:h})}if(Q.username||Q.password)throw new TypeError("Request cannot be constructed from a URL that includes credentials: "+e);n=Os({urlList:[Q]}),s="cors"}else this[wc]=t.dispatcher||e[wc],Vk(e instanceof A),n=e[X],i=e[vs];let a=Gs.settingsObject.origin,c="client";if(n.window?.constructor?.name==="EnvironmentSettingsObject"&&RI(n.window,a)&&(c=n.window),t.window!=null)throw new TypeError(`'window' option '${c}' must be null`);"window"in t&&(c="no-window"),n=Os({method:n.method,headersList:n.headersList,unsafeRequest:n.unsafeRequest,client:Gs.settingsObject,window:c,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 u=Object.keys(t).length!==0;if(u&&(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 Q=t.referrer;if(Q==="")n.referrer="no-referrer";else{let h;try{h=new URL(Q,o)}catch(y){throw new TypeError(`Referrer "${Q}" is not a valid URL.`,{cause:y})}h.protocol==="about:"&&h.hostname==="client"||a&&!RI(h,Gs.settingsObject.baseUrl)?n.referrer="client":n.referrer=h}}t.referrerPolicy!==void 0&&(n.referrerPolicy=t.referrerPolicy);let g;if(t.mode!==void 0?g=t.mode:g=s,g==="navigate")throw S.errors.exception({header:"Request constructor",message:"invalid request mode navigate."});if(g!=null&&(n.mode=g),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 Q=t.method,h=vk[Q];if(h!==void 0)n.method=h;else{if(!Sk(Q))throw new TypeError(`'${Q}' is not a valid HTTP method.`);let y=Q.toUpperCase();if(Nk.has(y))throw new TypeError(`'${Q}' HTTP method is unsupported.`);Q=Jk[y]??Q,n.method=Q}!MI&&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"}),MI=!0)}t.signal!==void 0&&(i=t.signal),this[X]=n;let l=new AbortController;if(this[vs]=l.signal,i!=null){if(!i||typeof i.aborted!="boolean"||typeof i.addEventListener!="function")throw new TypeError("Failed to construct 'Request': member signal is not of type AbortSignal.");if(i.aborted)l.abort(i.reason);else{this[Ok]=l;let Q=new WeakRef(l),h=UI(Q);try{(typeof FI=="function"&&FI(i)===NI||qk(i,"abort").length>=NI)&&SI(1500,i)}catch{}Js.addAbortListener(i,h),xI.register(l,{signal:i,abort:h},h)}}if(this[Ne]=new LI(Vs),TI(this[Ne],n.headersList),mc(this[Ne],"request"),g==="no-cors"){if(!Uk.has(n.method))throw new TypeError(`'${n.method} is unsupported in no-cors mode.`);mc(this[Ne],"request-no-cors")}if(u){let Q=bI(this[Ne]),h=t.headers!==void 0?t.headers:new Hs(Q);if(Q.clear(),h instanceof Hs){for(let{name:y,value:m}of h.rawValues())Q.append(y,m,!1);Q.cookies=h.cookies}else kk(this[Ne],h)}let E=e instanceof A?e[X].body:null;if((t.body!=null||E!=null)&&(n.method==="GET"||n.method==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body.");let B=null;if(t.body!=null){let[Q,h]=yk(t.body,n.keepalive);B=Q,h&&!bI(this[Ne]).contains("content-type",!0)&&this[Ne].append("content-type",h)}let C=B??E;if(C!=null&&C.source==null){if(B!=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 I=C;if(B==null&&E!=null){if(DI(e))throw new TypeError("Cannot construct a Request with a Request object that has already been used.");let Q=new TransformStream;E.stream.pipeThrough(Q),I={source:E.source,length:E.length,stream:Q.readable}}this[X].body=I}get method(){return S.brandCheck(this,A),this[X].method}get url(){return S.brandCheck(this,A),Hk(this[X].url)}get headers(){return S.brandCheck(this,A),this[Ne]}get destination(){return S.brandCheck(this,A),this[X].destination}get referrer(){return S.brandCheck(this,A),this[X].referrer==="no-referrer"?"":this[X].referrer==="client"?"about:client":this[X].referrer.toString()}get referrerPolicy(){return S.brandCheck(this,A),this[X].referrerPolicy}get mode(){return S.brandCheck(this,A),this[X].mode}get credentials(){return this[X].credentials}get cache(){return S.brandCheck(this,A),this[X].cache}get redirect(){return S.brandCheck(this,A),this[X].redirect}get integrity(){return S.brandCheck(this,A),this[X].integrity}get keepalive(){return S.brandCheck(this,A),this[X].keepalive}get isReloadNavigation(){return S.brandCheck(this,A),this[X].reloadNavigation}get isHistoryNavigation(){return S.brandCheck(this,A),this[X].historyNavigation}get signal(){return S.brandCheck(this,A),this[vs]}get body(){return S.brandCheck(this,A),this[X].body?this[X].body.stream:null}get bodyUsed(){return S.brandCheck(this,A),!!this[X].body&&Js.isDisturbed(this[X].body.stream)}get duplex(){return S.brandCheck(this,A),"half"}clone(){if(S.brandCheck(this,A),DI(this))throw new TypeError("unusable");let e=YI(this[X]),t=new AbortController;if(this.signal.aborted)t.abort(this.signal.reason);else{let r=qs.get(this.signal);r===void 0&&(r=new Set,qs.set(this.signal,r));let n=new WeakRef(t);r.add(n),Js.addAbortListener(t.signal,UI(n))}return GI(e,t.signal,Rk(this[Ne]))}[kI.inspect.custom](e,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 ${kI.formatWithOptions(t,r)}`}};Dk(HA);function Os(A){return{method:A.method??"GET",localURLsOnly:A.localURLsOnly??!1,unsafeRequest:A.unsafeRequest??!1,body:A.body??null,client:A.client??null,reservedClient:A.reservedClient??null,replacesClientId:A.replacesClientId??"",window:A.window??"client",keepalive:A.keepalive??!1,serviceWorkers:A.serviceWorkers??"all",initiator:A.initiator??"",destination:A.destination??"",priority:A.priority??null,origin:A.origin??"client",policyContainer:A.policyContainer??"client",referrer:A.referrer??"client",referrerPolicy:A.referrerPolicy??"",mode:A.mode??"no-cors",useCORSPreflightFlag:A.useCORSPreflightFlag??!1,credentials:A.credentials??"same-origin",useCredentials:A.useCredentials??!1,cache:A.cache??"default",redirect:A.redirect??"follow",integrity:A.integrity??"",cryptoGraphicsNonceMetadata:A.cryptoGraphicsNonceMetadata??"",parserMetadata:A.parserMetadata??"",reloadNavigation:A.reloadNavigation??!1,historyNavigation:A.historyNavigation??!1,userActivation:A.userActivation??!1,taintedOrigin:A.taintedOrigin??!1,redirectCount:A.redirectCount??0,responseTainting:A.responseTainting??"basic",preventNoCacheCacheControlHeaderModification:A.preventNoCacheCacheControlHeaderModification??!1,done:A.done??!1,timingAllowFailed:A.timingAllowFailed??!1,urlList:A.urlList,url:A.urlList[0],headersList:A.headersList?new Hs(A.headersList):new Hs}}function YI(A){let e=Os({...A,body:null});return A.body!=null&&(e.body=bk(e,A.body)),e}function GI(A,e,t){let r=new HA(Vs);return r[X]=A,r[vs]=e,r[Ne]=new LI(Vs),TI(r[Ne],A.headersList),mc(r[Ne],t),r}Object.defineProperties(HA.prototype,{method:ie,url:ie,headers:ie,redirect:ie,clone:ie,signal:ie,duplex:ie,destination:ie,body:ie,bodyUsed:ie,isHistoryNavigation:ie,isReloadNavigation:ie,keepalive:ie,integrity:ie,cache:ie,credentials:ie,attribute:ie,referrerPolicy:ie,referrer:ie,mode:ie,[Symbol.toStringTag]:{value:"Request",configurable:!0}});S.converters.Request=S.interfaceConverter(HA);S.converters.RequestInfo=function(A,e,t){return typeof A=="string"?S.converters.USVString(A,e,t):A instanceof HA?S.converters.Request(A,e,t):S.converters.USVString(A,e,t)};S.converters.AbortSignal=S.interfaceConverter(AbortSignal);S.converters.RequestInit=S.dictionaryConverter([{key:"method",converter:S.converters.ByteString},{key:"headers",converter:S.converters.HeadersInit},{key:"body",converter:S.nullableConverter(S.converters.BodyInit)},{key:"referrer",converter:S.converters.USVString},{key:"referrerPolicy",converter:S.converters.DOMString,allowedValues:Mk},{key:"mode",converter:S.converters.DOMString,allowedValues:Tk},{key:"credentials",converter:S.converters.DOMString,allowedValues:xk},{key:"cache",converter:S.converters.DOMString,allowedValues:Yk},{key:"redirect",converter:S.converters.DOMString,allowedValues:Lk},{key:"integrity",converter:S.converters.DOMString},{key:"keepalive",converter:S.converters.boolean},{key:"signal",converter:S.nullableConverter(A=>S.converters.AbortSignal(A,"RequestInit","signal",{strict:!1}))},{key:"window",converter:S.converters.any},{key:"duplex",converter:S.converters.DOMString,allowedValues:Gk},{key:"dispatcher",converter:S.converters.any}]);JI.exports={Request:HA,makeRequest:Os,fromInnerRequest:GI,cloneRequest:YI}});var an=f(($L,eC)=>{"use strict";var{makeNetworkError:O,makeAppropriateNetworkError:Ws,filterResponse:yc,makeResponse:Ps,fromInnerResponse:Wk}=sn(),{HeadersList:vI}=It(),{Request:Pk,cloneRequest:_k}=cr(),VA=d("node:zlib"),{bytesMatch:Zk,makePolicyContainer:zk,clonePolicyContainer:Kk,requestBadPort:Xk,TAOCheck:$k,appendRequestOriginHeader:jk,responseLocationURL:eR,requestCurrentURL:gA,setRequestReferrerPolicyOnRedirect:AR,tryUpgradeRequestToAPotentiallyTrustworthyURL:tR,createOpaqueTimingInfo:Fc,appendFetchMetadata:rR,corsCheck:nR,crossOriginResourcePolicyCheck:sR,determineRequestsReferrer:oR,coarsenedSharedCurrentTime:on,createDeferredPromise:iR,isBlobLike:aR,sameOrigin:Rc,isCancelled:ht,isAborted:HI,isErrorLike:cR,fullyReadBody:gR,readableStreamClose:uR,isomorphicEncode:_s,urlIsLocal:lR,urlIsHttpHttpsScheme:Sc,urlHasHttpsScheme:ER,clampAndCoarsenConnectionTimingInfo:QR,simpleRangeHeaderValue:BR,buildContentRange:IR,createInflate:CR,extractMimeType:hR}=De(),{kState:WI,kDispatcher:dR}=SA(),dt=d("node:assert"),{safelyExtractBody:Nc,extractBody:VI}=vt(),{redirectStatusSet:PI,nullBodyStatus:_I,safeMethodsSet:fR,requestBodyHeader:pR,subresourceSet:wR}=Fr(),mR=d("node:events"),{Readable:yR,pipeline:DR,finished:bR}=d("node:stream"),{addAbortListener:kR,isErrored:RR,isReadable:Zs,bufferToLowerCasedHeaderName:qI}=T(),{dataURLProcessor:FR,serializeAMimeType:SR,minimizeSupportedMimeType:NR}=he(),{getGlobalDispatcher:UR}=Ns(),{webidl:MR}=ge(),{STATUS_CODES:LR}=d("node:http"),TR=["GET","HEAD"],xR=typeof __UNDICI_IS_NODE__<"u"||typeof esbuildDetection<"u"?"node":"undici",Dc,zs=class extends mR{constructor(e){super(),this.dispatcher=e,this.connection=null,this.dump=!1,this.state="ongoing"}terminate(e){this.state==="ongoing"&&(this.state="terminated",this.connection?.destroy(e),this.emit("terminated",e))}abort(e){this.state==="ongoing"&&(this.state="aborted",e||(e=new DOMException("The operation was aborted.","AbortError")),this.serializedAbortReason=e,this.connection?.destroy(e),this.emit("terminated",e))}};function YR(A){ZI(A,"fetch")}function GR(A,e=void 0){MR.argumentLengthCheck(arguments,1,"globalThis.fetch");let t=iR(),r;try{r=new Pk(A,e)}catch(u){return t.reject(u),t.promise}let n=r[WI];if(r.signal.aborted)return bc(t,n,null,r.signal.reason),t.promise;n.client.globalObject?.constructor?.name==="ServiceWorkerGlobalScope"&&(n.serviceWorkers="none");let o=null,i=!1,a=null;return kR(r.signal,()=>{i=!0,dt(a!=null),a.abort(r.signal.reason);let u=o?.deref();bc(t,n,u,r.signal.reason)}),a=KI({request:n,processResponseEndOfBody:YR,processResponse:u=>{if(!i){if(u.aborted){bc(t,n,o,a.serializedAbortReason);return}if(u.type==="error"){t.reject(new TypeError("fetch failed",{cause:u.error}));return}o=new WeakRef(Wk(u,"immutable")),t.resolve(o.deref()),t=null}},dispatcher:r[dR]}),t.promise}function ZI(A,e="other"){if(A.type==="error"&&A.aborted||!A.urlList?.length)return;let t=A.urlList[0],r=A.timingInfo,n=A.cacheState;Sc(t)&&r!==null&&(A.timingAllowPassed||(r=Fc({startTime:r.startTime}),n=""),r.endTime=on(),A.timingInfo=r,zI(r,t.href,e,globalThis,n))}var zI=performance.markResourceTiming;function bc(A,e,t,r){if(A&&A.reject(r),e.body!=null&&Zs(e.body?.stream)&&e.body.stream.cancel(r).catch(s=>{if(s.code!=="ERR_INVALID_STATE")throw s}),t==null)return;let n=t[WI];n.body!=null&&Zs(n.body?.stream)&&n.body.stream.cancel(r).catch(s=>{if(s.code!=="ERR_INVALID_STATE")throw s})}function KI({request:A,processRequestBodyChunkLength:e,processRequestEndOfBody:t,processResponse:r,processResponseEndOfBody:n,processResponseConsumeBody:s,useParallelQueue:o=!1,dispatcher:i=UR()}){dt(i);let a=null,c=!1;A.client!=null&&(a=A.client.globalObject,c=A.client.crossOriginIsolatedCapability);let u=on(c),g=Fc({startTime:u}),l={controller:new zs(i),request:A,timingInfo:g,processRequestBodyChunkLength:e,processRequestEndOfBody:t,processResponse:r,processResponseConsumeBody:s,processResponseEndOfBody:n,taskDestination:a,crossOriginIsolatedCapability:c};return dt(!A.body||A.body.stream),A.window==="client"&&(A.window=A.client?.globalObject?.constructor?.name==="Window"?A.client:"no-window"),A.origin==="client"&&(A.origin=A.client.origin),A.policyContainer==="client"&&(A.client!=null?A.policyContainer=Kk(A.client.policyContainer):A.policyContainer=zk()),A.headersList.contains("accept",!0)||A.headersList.append("accept","*/*",!0),A.headersList.contains("accept-language",!0)||A.headersList.append("accept-language","*",!0),A.priority,wR.has(A.destination),XI(l).catch(E=>{l.controller.terminate(E)}),l.controller}async function XI(A,e=!1){let t=A.request,r=null;if(t.localURLsOnly&&!lR(gA(t))&&(r=O("local URLs only")),tR(t),Xk(t)==="blocked"&&(r=O("bad port")),t.referrerPolicy===""&&(t.referrerPolicy=t.policyContainer.referrerPolicy),t.referrer!=="no-referrer"&&(t.referrer=oR(t)),r===null&&(r=await(async()=>{let s=gA(t);return Rc(s,t.url)&&t.responseTainting==="basic"||s.protocol==="data:"||t.mode==="navigate"||t.mode==="websocket"?(t.responseTainting="basic",await OI(A)):t.mode==="same-origin"?O('request mode cannot be "same-origin"'):t.mode==="no-cors"?t.redirect!=="follow"?O('redirect mode cannot be "follow" for "no-cors" request'):(t.responseTainting="opaque",await OI(A)):Sc(gA(t))?(t.responseTainting="cors",await $I(A)):O("URL scheme must be a HTTP(S) scheme")})()),e)return r;r.status!==0&&!r.internalResponse&&(t.responseTainting,t.responseTainting==="basic"?r=yc(r,"basic"):t.responseTainting==="cors"?r=yc(r,"cors"):t.responseTainting==="opaque"?r=yc(r,"opaque"):dt(!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=O()),r.status!==0&&(t.method==="HEAD"||t.method==="CONNECT"||_I.includes(n.status))&&(n.body=null,A.controller.dump=!0),t.integrity){let s=i=>kc(A,O(i));if(t.responseTainting==="opaque"||r.body==null){s(r.error);return}let o=i=>{if(!Zk(i,t.integrity)){s("integrity mismatch");return}r.body=Nc(i)[0],kc(A,r)};await gR(r.body,o,s)}else kc(A,r)}function OI(A){if(ht(A)&&A.request.redirectCount===0)return Promise.resolve(Ws(A));let{request:e}=A,{protocol:t}=gA(e);switch(t){case"about:":return Promise.resolve(O("about scheme is not supported"));case"blob:":{Dc||(Dc=d("node:buffer").resolveObjectURL);let r=gA(e);if(r.search.length!==0)return Promise.resolve(O("NetworkError when attempting to fetch resource."));let n=Dc(r.toString());if(e.method!=="GET"||!aR(n))return Promise.resolve(O("invalid method"));let s=Ps(),o=n.size,i=_s(`${o}`),a=n.type;if(e.headersList.contains("range",!0)){s.rangeRequested=!0;let c=e.headersList.get("range",!0),u=BR(c,!0);if(u==="failure")return Promise.resolve(O("failed to fetch the data URL"));let{rangeStartValue:g,rangeEndValue:l}=u;if(g===null)g=o-l,l=g+l-1;else{if(g>=o)return Promise.resolve(O("Range start is greater than the blob's size."));(l===null||l>=o)&&(l=o-1)}let E=n.slice(g,l,a),B=VI(E);s.body=B[0];let C=_s(`${E.size}`),I=IR(g,l,o);s.status=206,s.statusText="Partial Content",s.headersList.set("content-length",C,!0),s.headersList.set("content-type",a,!0),s.headersList.set("content-range",I,!0)}else{let c=VI(n);s.statusText="OK",s.body=c[0],s.headersList.set("content-length",i,!0),s.headersList.set("content-type",a,!0)}return Promise.resolve(s)}case"data:":{let r=gA(e),n=FR(r);if(n==="failure")return Promise.resolve(O("failed to fetch the data URL"));let s=SR(n.mimeType);return Promise.resolve(Ps({statusText:"OK",headersList:[["content-type",{name:"Content-Type",value:s}]],body:Nc(n.body)[0]}))}case"file:":return Promise.resolve(O("not implemented... yet..."));case"http:":case"https:":return $I(A).catch(r=>O(r));default:return Promise.resolve(O("unknown scheme"))}}function JR(A,e){A.request.done=!0,A.processResponseDone!=null&&queueMicrotask(()=>A.processResponseDone(e))}function kc(A,e){let t=A.timingInfo,r=()=>{let s=Date.now();A.request.destination==="document"&&(A.controller.fullTimingInfo=t),A.controller.reportTimingSteps=()=>{if(A.request.url.protocol!=="https:")return;t.endTime=s;let i=e.cacheState,a=e.bodyInfo;e.timingAllowPassed||(t=Fc(t),i="");let c=0;if(A.request.mode!=="navigator"||!e.hasCrossOriginRedirects){c=e.status;let u=hR(e.headersList);u!=="failure"&&(a.contentType=NR(u))}A.request.initiatorType!=null&&zI(t,A.request.url.href,A.request.initiatorType,globalThis,i,a,c)};let o=()=>{A.request.done=!0,A.processResponseEndOfBody!=null&&queueMicrotask(()=>A.processResponseEndOfBody(e)),A.request.initiatorType!=null&&A.controller.reportTimingSteps()};queueMicrotask(()=>o())};A.processResponse!=null&&queueMicrotask(()=>{A.processResponse(e),A.processResponse=null});let n=e.type==="error"?e:e.internalResponse??e;n.body==null?r():bR(n.body.stream,()=>{r()})}async function $I(A){let e=A.request,t=null,r=null,n=A.timingInfo;if(e.serviceWorkers,t===null){if(e.redirect==="follow"&&(e.serviceWorkers="none"),r=t=await jI(A),e.responseTainting==="cors"&&nR(e,t)==="failure")return O("cors failure");$k(e,t)==="failure"&&(e.timingAllowFailed=!0)}return(e.responseTainting==="opaque"||t.type==="opaque")&&sR(e.origin,e.client,e.destination,r)==="blocked"?O("blocked"):(PI.has(r.status)&&(e.redirect!=="manual"&&A.controller.connection.destroy(void 0,!1),e.redirect==="error"?t=O("unexpected redirect"):e.redirect==="manual"?t=r:e.redirect==="follow"?t=await vR(A,t):dt(!1)),t.timingInfo=n,t)}function vR(A,e){let t=A.request,r=e.internalResponse?e.internalResponse:e,n;try{if(n=eR(r,gA(t).hash),n==null)return e}catch(o){return Promise.resolve(O(o))}if(!Sc(n))return Promise.resolve(O("URL scheme must be a HTTP(S) scheme"));if(t.redirectCount===20)return Promise.resolve(O("redirect count exceeded"));if(t.redirectCount+=1,t.mode==="cors"&&(n.username||n.password)&&!Rc(t,n))return Promise.resolve(O('cross origin not allowed for request mode "cors"'));if(t.responseTainting==="cors"&&(n.username||n.password))return Promise.resolve(O('URL cannot contain credentials for request mode "cors"'));if(r.status!==303&&t.body!=null&&t.body.source==null)return Promise.resolve(O());if([301,302].includes(r.status)&&t.method==="POST"||r.status===303&&!TR.includes(t.method)){t.method="GET",t.body=null;for(let o of pR)t.headersList.delete(o)}Rc(gA(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&&(dt(t.body.source!=null),t.body=Nc(t.body.source)[0]);let s=A.timingInfo;return s.redirectEndTime=s.postRedirectStartTime=on(A.crossOriginIsolatedCapability),s.redirectStartTime===0&&(s.redirectStartTime=s.startTime),t.urlList.push(n),AR(t,r),XI(A,!0)}async function jI(A,e=!1,t=!1){let r=A.request,n=null,s=null,o=null,i=null,a=!1;r.window==="no-window"&&r.redirect==="error"?(n=A,s=r):(s=_k(r),n={...A},n.request=s);let c=r.credentials==="include"||r.credentials==="same-origin"&&r.responseTainting==="basic",u=s.body?s.body.length:null,g=null;if(s.body==null&&["POST","PUT"].includes(s.method)&&(g="0"),u!=null&&(g=_s(`${u}`)),g!=null&&s.headersList.append("content-length",g,!0),u!=null&&s.keepalive,s.referrer instanceof URL&&s.headersList.append("referer",_s(s.referrer.href),!0),jk(s),rR(s),s.headersList.contains("user-agent",!0)||s.headersList.append("user-agent",xR),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)||(ER(gA(s))?s.headersList.append("accept-encoding","br, gzip, deflate",!0):s.headersList.append("accept-encoding","gzip, deflate",!0)),s.headersList.delete("host",!0),i==null&&(s.cache="no-store"),s.cache!=="no-store"&&s.cache,o==null){if(s.cache==="only-if-cached")return O("only if cached");let l=await HR(n,c,t);!fR.has(s.method)&&l.status>=200&&l.status<=399,a&&l.status,o==null&&(o=l)}if(o.urlList=[...s.urlList],s.headersList.contains("range",!0)&&(o.rangeRequested=!0),o.requestIncludesCredentials=c,o.status===407)return r.window==="no-window"?O():ht(A)?Ws(A):O("proxy authentication required");if(o.status===421&&!t&&(r.body==null||r.body.source!=null)){if(ht(A))return Ws(A);A.controller.connection.destroy(),o=await jI(A,e,!0)}return o}async function HR(A,e=!1,t=!1){dt(!A.controller.connection||A.controller.connection.destroyed),A.controller.connection={abort:null,destroyed:!1,destroy(B,C=!0){this.destroyed||(this.destroyed=!0,C&&this.abort?.(B??new DOMException("The operation was aborted.","AbortError")))}};let r=A.request,n=null,s=A.timingInfo;null==null&&(r.cache="no-store");let i=t?"yes":"no";r.mode;let a=null;if(r.body==null&&A.processRequestEndOfBody)queueMicrotask(()=>A.processRequestEndOfBody());else if(r.body!=null){let B=async function*(Q){ht(A)||(yield Q,A.processRequestBodyChunkLength?.(Q.byteLength))},C=()=>{ht(A)||A.processRequestEndOfBody&&A.processRequestEndOfBody()},I=Q=>{ht(A)||(Q.name==="AbortError"?A.controller.abort():A.controller.terminate(Q))};a=(async function*(){try{for await(let Q of r.body.stream)yield*B(Q);C()}catch(Q){I(Q)}})()}try{let{body:B,status:C,statusText:I,headersList:Q,socket:h}=await E({body:a});if(h)n=Ps({status:C,statusText:I,headersList:Q,socket:h});else{let y=B[Symbol.asyncIterator]();A.controller.next=()=>y.next(),n=Ps({status:C,statusText:I,headersList:Q})}}catch(B){return B.name==="AbortError"?(A.controller.connection.destroy(),Ws(A,B)):O(B)}let c=async()=>{await A.controller.resume()},u=B=>{ht(A)||A.controller.abort(B)},g=new ReadableStream({async start(B){A.controller.controller=B},async pull(B){await c(B)},async cancel(B){await u(B)},type:"bytes"});n.body={stream:g,source:null,length:null},A.controller.onAborted=l,A.controller.on("terminated",l),A.controller.resume=async()=>{for(;;){let B,C;try{let{done:Q,value:h}=await A.controller.next();if(HI(A))break;B=Q?void 0:h}catch(Q){A.controller.ended&&!s.encodedBodySize?B=void 0:(B=Q,C=!0)}if(B===void 0){uR(A.controller.controller),JR(A,n);return}if(s.decodedBodySize+=B?.byteLength??0,C){A.controller.terminate(B);return}let I=new Uint8Array(B);if(I.byteLength&&A.controller.controller.enqueue(I),RR(g)){A.controller.terminate();return}if(A.controller.controller.desiredSize<=0)return}};function l(B){HI(A)?(n.aborted=!0,Zs(g)&&A.controller.controller.error(A.controller.serializedAbortReason)):Zs(g)&&A.controller.controller.error(new TypeError("terminated",{cause:cR(B)?B:void 0})),A.controller.connection.destroy()}return n;function E({body:B}){let C=gA(r),I=A.controller.dispatcher;return new Promise((Q,h)=>I.dispatch({path:C.pathname+C.search,origin:C.origin,method:r.method,body:I.isMockActive?r.body&&(r.body.source||r.body.stream):B,headers:r.headersList.entries,maxRedirections:0,upgrade:r.mode==="websocket"?"websocket":void 0},{body:null,abort:null,onConnect(y){let{connection:m}=A.controller;s.finalConnectionTimingInfo=QR(void 0,s.postRedirectStartTime,A.crossOriginIsolatedCapability),m.destroyed?y(new DOMException("The operation was aborted.","AbortError")):(A.controller.on("terminated",y),this.abort=m.abort=y),s.finalNetworkRequestStartTime=on(A.crossOriginIsolatedCapability)},onResponseStarted(){s.finalNetworkResponseStartTime=on(A.crossOriginIsolatedCapability)},onHeaders(y,m,x,_){if(y<200)return;let Z="",M=new vI;for(let ne=0;ne<m.length;ne+=2)M.append(qI(m[ne]),m[ne+1].toString("latin1"),!0);Z=M.get("location",!0),this.body=new yR({read:x});let V=[],ye=Z&&r.redirect==="follow"&&PI.has(y);if(r.method!=="HEAD"&&r.method!=="CONNECT"&&!_I.includes(y)&&!ye){let ne=M.get("content-encoding",!0),Te=ne?ne.toLowerCase().split(","):[],EA=5;if(Te.length>EA)return h(new Error(`too many content-encodings in response: ${Te.length}, maximum allowed is ${EA}`)),!0;for(let yt=Te.length-1;yt>=0;--yt){let Dt=Te[yt].trim();if(Dt==="x-gzip"||Dt==="gzip")V.push(VA.createGunzip({flush:VA.constants.Z_SYNC_FLUSH,finishFlush:VA.constants.Z_SYNC_FLUSH}));else if(Dt==="deflate")V.push(CR({flush:VA.constants.Z_SYNC_FLUSH,finishFlush:VA.constants.Z_SYNC_FLUSH}));else if(Dt==="br")V.push(VA.createBrotliDecompress({flush:VA.constants.BROTLI_OPERATION_FLUSH,finishFlush:VA.constants.BROTLI_OPERATION_FLUSH}));else{V.length=0;break}}}let Qe=this.onError.bind(this);return Q({status:y,statusText:_,headersList:M,body:V.length?DR(this.body,...V,ne=>{ne&&this.onError(ne)}).on("error",Qe):this.body.on("error",Qe)}),!0},onData(y){if(A.controller.dump)return;let m=y;return s.encodedBodySize+=m.byteLength,this.body.push(m)},onComplete(){this.abort&&A.controller.off("terminated",this.abort),A.controller.onAborted&&A.controller.off("terminated",A.controller.onAborted),A.controller.ended=!0,this.body.push(null)},onError(y){this.abort&&A.controller.off("terminated",this.abort),this.body?.destroy(y),A.controller.terminate(y),h(y)},onUpgrade(y,m,x){if(y!==101)return;let _=new vI;for(let Z=0;Z<m.length;Z+=2)_.append(qI(m[Z]),m[Z+1].toString("latin1"),!0);return Q({status:y,statusText:LR[y],headersList:_,socket:x}),!0}}))}}eC.exports={fetch:GR,Fetch:zs,fetching:KI,finalizeAndReportTiming:ZI}});var Uc=f((jL,AC)=>{"use strict";AC.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 rC=f((eT,tC)=>{"use strict";var{webidl:Ue}=ge(),Ks=Symbol("ProgressEvent state"),Mc=class A extends Event{constructor(e,t={}){e=Ue.converters.DOMString(e,"ProgressEvent constructor","type"),t=Ue.converters.ProgressEventInit(t??{}),super(e,t),this[Ks]={lengthComputable:t.lengthComputable,loaded:t.loaded,total:t.total}}get lengthComputable(){return Ue.brandCheck(this,A),this[Ks].lengthComputable}get loaded(){return Ue.brandCheck(this,A),this[Ks].loaded}get total(){return Ue.brandCheck(this,A),this[Ks].total}};Ue.converters.ProgressEventInit=Ue.dictionaryConverter([{key:"lengthComputable",converter:Ue.converters.boolean,defaultValue:()=>!1},{key:"loaded",converter:Ue.converters["unsigned long long"],defaultValue:()=>0},{key:"total",converter:Ue.converters["unsigned long long"],defaultValue:()=>0},{key:"bubbles",converter:Ue.converters.boolean,defaultValue:()=>!1},{key:"cancelable",converter:Ue.converters.boolean,defaultValue:()=>!1},{key:"composed",converter:Ue.converters.boolean,defaultValue:()=>!1}]);tC.exports={ProgressEvent:Mc}});var sC=f((AT,nC)=>{"use strict";function VR(A){if(!A)return"failure";switch(A.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"}}nC.exports={getEncoding:VR}});var EC=f((tT,lC)=>{"use strict";var{kState:gr,kError:Lc,kResult:oC,kAborted:cn,kLastProgressEventFired:Tc}=Uc(),{ProgressEvent:qR}=rC(),{getEncoding:iC}=sC(),{serializeAMimeType:OR,parseMIMEType:aC}=he(),{types:WR}=d("node:util"),{StringDecoder:cC}=d("string_decoder"),{btoa:gC}=d("node:buffer"),PR={enumerable:!0,writable:!1,configurable:!1};function _R(A,e,t,r){if(A[gr]==="loading")throw new DOMException("Invalid state","InvalidStateError");A[gr]="loading",A[oC]=null,A[Lc]=null;let s=e.stream().getReader(),o=[],i=s.read(),a=!0;(async()=>{for(;!A[cn];)try{let{done:c,value:u}=await i;if(a&&!A[cn]&&queueMicrotask(()=>{qA("loadstart",A)}),a=!1,!c&&WR.isUint8Array(u))o.push(u),(A[Tc]===void 0||Date.now()-A[Tc]>=50)&&!A[cn]&&(A[Tc]=Date.now(),queueMicrotask(()=>{qA("progress",A)})),i=s.read();else if(c){queueMicrotask(()=>{A[gr]="done";try{let g=ZR(o,t,e.type,r);if(A[cn])return;A[oC]=g,qA("load",A)}catch(g){A[Lc]=g,qA("error",A)}A[gr]!=="loading"&&qA("loadend",A)});break}}catch(c){if(A[cn])return;queueMicrotask(()=>{A[gr]="done",A[Lc]=c,qA("error",A),A[gr]!=="loading"&&qA("loadend",A)});break}})()}function qA(A,e){let t=new qR(A,{bubbles:!1,cancelable:!1});e.dispatchEvent(t)}function ZR(A,e,t,r){switch(e){case"DataURL":{let n="data:",s=aC(t||"application/octet-stream");s!=="failure"&&(n+=OR(s)),n+=";base64,";let o=new cC("latin1");for(let i of A)n+=gC(o.write(i));return n+=gC(o.end()),n}case"Text":{let n="failure";if(r&&(n=iC(r)),n==="failure"&&t){let s=aC(t);s!=="failure"&&(n=iC(s.parameters.get("charset")))}return n==="failure"&&(n="UTF-8"),zR(A,n)}case"ArrayBuffer":return uC(A).buffer;case"BinaryString":{let n="",s=new cC("latin1");for(let o of A)n+=s.write(o);return n+=s.end(),n}}}function zR(A,e){let t=uC(A),r=KR(t),n=0;r!==null&&(e=r,n=r==="UTF-8"?3:2);let s=t.slice(n);return new TextDecoder(e).decode(s)}function KR(A){let[e,t,r]=A;return e===239&&t===187&&r===191?"UTF-8":e===254&&t===255?"UTF-16BE":e===255&&t===254?"UTF-16LE":null}function uC(A){let e=A.reduce((r,n)=>r+n.byteLength,0),t=0;return A.reduce((r,n)=>(r.set(n,t),t+=n.byteLength,r),new Uint8Array(e))}lC.exports={staticPropertyDescriptors:PR,readOperation:_R,fireAProgressEvent:qA}});var CC=f((rT,IC)=>{"use strict";var{staticPropertyDescriptors:ur,readOperation:Xs,fireAProgressEvent:QC}=EC(),{kState:ft,kError:BC,kResult:$s,kEvents:H,kAborted:XR}=Uc(),{webidl:P}=ge(),{kEnumerableProperty:pe}=T(),$e=class A extends EventTarget{constructor(){super(),this[ft]="empty",this[$s]=null,this[BC]=null,this[H]={loadend:null,error:null,abort:null,load:null,progress:null,loadstart:null}}readAsArrayBuffer(e){P.brandCheck(this,A),P.argumentLengthCheck(arguments,1,"FileReader.readAsArrayBuffer"),e=P.converters.Blob(e,{strict:!1}),Xs(this,e,"ArrayBuffer")}readAsBinaryString(e){P.brandCheck(this,A),P.argumentLengthCheck(arguments,1,"FileReader.readAsBinaryString"),e=P.converters.Blob(e,{strict:!1}),Xs(this,e,"BinaryString")}readAsText(e,t=void 0){P.brandCheck(this,A),P.argumentLengthCheck(arguments,1,"FileReader.readAsText"),e=P.converters.Blob(e,{strict:!1}),t!==void 0&&(t=P.converters.DOMString(t,"FileReader.readAsText","encoding")),Xs(this,e,"Text",t)}readAsDataURL(e){P.brandCheck(this,A),P.argumentLengthCheck(arguments,1,"FileReader.readAsDataURL"),e=P.converters.Blob(e,{strict:!1}),Xs(this,e,"DataURL")}abort(){if(this[ft]==="empty"||this[ft]==="done"){this[$s]=null;return}this[ft]==="loading"&&(this[ft]="done",this[$s]=null),this[XR]=!0,QC("abort",this),this[ft]!=="loading"&&QC("loadend",this)}get readyState(){switch(P.brandCheck(this,A),this[ft]){case"empty":return this.EMPTY;case"loading":return this.LOADING;case"done":return this.DONE}}get result(){return P.brandCheck(this,A),this[$s]}get error(){return P.brandCheck(this,A),this[BC]}get onloadend(){return P.brandCheck(this,A),this[H].loadend}set onloadend(e){P.brandCheck(this,A),this[H].loadend&&this.removeEventListener("loadend",this[H].loadend),typeof e=="function"?(this[H].loadend=e,this.addEventListener("loadend",e)):this[H].loadend=null}get onerror(){return P.brandCheck(this,A),this[H].error}set onerror(e){P.brandCheck(this,A),this[H].error&&this.removeEventListener("error",this[H].error),typeof e=="function"?(this[H].error=e,this.addEventListener("error",e)):this[H].error=null}get onloadstart(){return P.brandCheck(this,A),this[H].loadstart}set onloadstart(e){P.brandCheck(this,A),this[H].loadstart&&this.removeEventListener("loadstart",this[H].loadstart),typeof e=="function"?(this[H].loadstart=e,this.addEventListener("loadstart",e)):this[H].loadstart=null}get onprogress(){return P.brandCheck(this,A),this[H].progress}set onprogress(e){P.brandCheck(this,A),this[H].progress&&this.removeEventListener("progress",this[H].progress),typeof e=="function"?(this[H].progress=e,this.addEventListener("progress",e)):this[H].progress=null}get onload(){return P.brandCheck(this,A),this[H].load}set onload(e){P.brandCheck(this,A),this[H].load&&this.removeEventListener("load",this[H].load),typeof e=="function"?(this[H].load=e,this.addEventListener("load",e)):this[H].load=null}get onabort(){return P.brandCheck(this,A),this[H].abort}set onabort(e){P.brandCheck(this,A),this[H].abort&&this.removeEventListener("abort",this[H].abort),typeof e=="function"?(this[H].abort=e,this.addEventListener("abort",e)):this[H].abort=null}};$e.EMPTY=$e.prototype.EMPTY=0;$e.LOADING=$e.prototype.LOADING=1;$e.DONE=$e.prototype.DONE=2;Object.defineProperties($e.prototype,{EMPTY:ur,LOADING:ur,DONE:ur,readAsArrayBuffer:pe,readAsBinaryString:pe,readAsText:pe,readAsDataURL:pe,abort:pe,readyState:pe,result:pe,error:pe,onloadstart:pe,onprogress:pe,onload:pe,onabort:pe,onerror:pe,onloadend:pe,[Symbol.toStringTag]:{value:"FileReader",writable:!1,enumerable:!1,configurable:!0}});Object.defineProperties($e,{EMPTY:ur,LOADING:ur,DONE:ur});IC.exports={FileReader:$e}});var js=f((nT,hC)=>{"use strict";hC.exports={kConstruct:$().kConstruct}});var pC=f((sT,fC)=>{"use strict";var $R=d("node:assert"),{URLSerializer:dC}=he(),{isValidHeaderName:jR}=De();function eF(A,e,t=!1){let r=dC(A,t),n=dC(e,t);return r===n}function AF(A){$R(A!==null);let e=[];for(let t of A.split(","))t=t.trim(),jR(t)&&e.push(t);return e}fC.exports={urlEquals:eF,getFieldValues:AF}});var yC=f((oT,mC)=>{"use strict";var{kConstruct:tF}=js(),{urlEquals:rF,getFieldValues:xc}=pC(),{kEnumerableProperty:pt,isDisturbed:nF}=T(),{webidl:b}=ge(),{Response:sF,cloneResponse:oF,fromInnerResponse:iF}=sn(),{Request:DA,fromInnerRequest:aF}=cr(),{kState:je}=SA(),{fetching:cF}=an(),{urlIsHttpHttpsScheme:eo,createDeferredPromise:lr,readAllBytes:gF}=De(),Yc=d("node:assert"),Ao=class A{#e;constructor(){arguments[0]!==tF&&b.illegalConstructor(),b.util.markAsUncloneable(this),this.#e=arguments[1]}async match(e,t={}){b.brandCheck(this,A);let r="Cache.match";b.argumentLengthCheck(arguments,1,r),e=b.converters.RequestInfo(e,r,"request"),t=b.converters.CacheQueryOptions(t,r,"options");let n=this.#n(e,t,1);if(n.length!==0)return n[0]}async matchAll(e=void 0,t={}){b.brandCheck(this,A);let r="Cache.matchAll";return e!==void 0&&(e=b.converters.RequestInfo(e,r,"request")),t=b.converters.CacheQueryOptions(t,r,"options"),this.#n(e,t)}async add(e){b.brandCheck(this,A);let t="Cache.add";b.argumentLengthCheck(arguments,1,t),e=b.converters.RequestInfo(e,t,"request");let r=[e];return await this.addAll(r)}async addAll(e){b.brandCheck(this,A);let t="Cache.addAll";b.argumentLengthCheck(arguments,1,t);let r=[],n=[];for(let l of e){if(l===void 0)throw b.errors.conversionFailed({prefix:t,argument:"Argument 1",types:["undefined is not allowed"]});if(l=b.converters.RequestInfo(l),typeof l=="string")continue;let E=l[je];if(!eo(E.url)||E.method!=="GET")throw b.errors.exception({header:t,message:"Expected http/s scheme when method is not GET."})}let s=[];for(let l of e){let E=new DA(l)[je];if(!eo(E.url))throw b.errors.exception({header:t,message:"Expected http/s scheme."});E.initiator="fetch",E.destination="subresource",n.push(E);let B=lr();s.push(cF({request:E,processResponse(C){if(C.type==="error"||C.status===206||C.status<200||C.status>299)B.reject(b.errors.exception({header:"Cache.addAll",message:"Received an invalid status code or the request failed."}));else if(C.headersList.contains("vary")){let I=xc(C.headersList.get("vary"));for(let Q of I)if(Q==="*"){B.reject(b.errors.exception({header:"Cache.addAll",message:"invalid vary field value"}));for(let h of s)h.abort();return}}},processResponseEndOfBody(C){if(C.aborted){B.reject(new DOMException("aborted","AbortError"));return}B.resolve(C)}})),r.push(B.promise)}let i=await Promise.all(r),a=[],c=0;for(let l of i){let E={type:"put",request:n[c],response:l};a.push(E),c++}let u=lr(),g=null;try{this.#A(a)}catch(l){g=l}return queueMicrotask(()=>{g===null?u.resolve(void 0):u.reject(g)}),u.promise}async put(e,t){b.brandCheck(this,A);let r="Cache.put";b.argumentLengthCheck(arguments,2,r),e=b.converters.RequestInfo(e,r,"request"),t=b.converters.Response(t,r,"response");let n=null;if(e instanceof DA?n=e[je]:n=new DA(e)[je],!eo(n.url)||n.method!=="GET")throw b.errors.exception({header:r,message:"Expected an http/s scheme when method is not GET"});let s=t[je];if(s.status===206)throw b.errors.exception({header:r,message:"Got 206 status"});if(s.headersList.contains("vary")){let E=xc(s.headersList.get("vary"));for(let B of E)if(B==="*")throw b.errors.exception({header:r,message:"Got * vary field value"})}if(s.body&&(nF(s.body.stream)||s.body.stream.locked))throw b.errors.exception({header:r,message:"Response body is locked or disturbed"});let o=oF(s),i=lr();if(s.body!=null){let B=s.body.stream.getReader();gF(B).then(i.resolve,i.reject)}else i.resolve(void 0);let a=[],c={type:"put",request:n,response:o};a.push(c);let u=await i.promise;o.body!=null&&(o.body.source=u);let g=lr(),l=null;try{this.#A(a)}catch(E){l=E}return queueMicrotask(()=>{l===null?g.resolve():g.reject(l)}),g.promise}async delete(e,t={}){b.brandCheck(this,A);let r="Cache.delete";b.argumentLengthCheck(arguments,1,r),e=b.converters.RequestInfo(e,r,"request"),t=b.converters.CacheQueryOptions(t,r,"options");let n=null;if(e instanceof DA){if(n=e[je],n.method!=="GET"&&!t.ignoreMethod)return!1}else Yc(typeof e=="string"),n=new DA(e)[je];let s=[],o={type:"delete",request:n,options:t};s.push(o);let i=lr(),a=null,c;try{c=this.#A(s)}catch(u){a=u}return queueMicrotask(()=>{a===null?i.resolve(!!c?.length):i.reject(a)}),i.promise}async keys(e=void 0,t={}){b.brandCheck(this,A);let r="Cache.keys";e!==void 0&&(e=b.converters.RequestInfo(e,r,"request")),t=b.converters.CacheQueryOptions(t,r,"options");let n=null;if(e!==void 0)if(e instanceof DA){if(n=e[je],n.method!=="GET"&&!t.ignoreMethod)return[]}else typeof e=="string"&&(n=new DA(e)[je]);let s=lr(),o=[];if(e===void 0)for(let i of this.#e)o.push(i[0]);else{let i=this.#t(n,t);for(let a of i)o.push(a[0])}return queueMicrotask(()=>{let i=[];for(let a of o){let c=aF(a,new AbortController().signal,"immutable");i.push(c)}s.resolve(Object.freeze(i))}),s.promise}#A(e){let t=this.#e,r=[...t],n=[],s=[];try{for(let o of e){if(o.type!=="delete"&&o.type!=="put")throw b.errors.exception({header:"Cache.#batchCacheOperations",message:'operation type does not match "delete" or "put"'});if(o.type==="delete"&&o.response!=null)throw b.errors.exception({header:"Cache.#batchCacheOperations",message:"delete operation should not have an associated response"});if(this.#t(o.request,o.options,n).length)throw new DOMException("???","InvalidStateError");let i;if(o.type==="delete"){if(i=this.#t(o.request,o.options),i.length===0)return[];for(let a of i){let c=t.indexOf(a);Yc(c!==-1),t.splice(c,1)}}else if(o.type==="put"){if(o.response==null)throw b.errors.exception({header:"Cache.#batchCacheOperations",message:"put operation should have an associated response"});let a=o.request;if(!eo(a.url))throw b.errors.exception({header:"Cache.#batchCacheOperations",message:"expected http or https scheme"});if(a.method!=="GET")throw b.errors.exception({header:"Cache.#batchCacheOperations",message:"not get method"});if(o.options!=null)throw b.errors.exception({header:"Cache.#batchCacheOperations",message:"options must not be defined"});i=this.#t(o.request);for(let c of i){let u=t.indexOf(c);Yc(u!==-1),t.splice(u,1)}t.push([o.request,o.response]),n.push([o.request,o.response])}s.push([o.request,o.response])}return s}catch(o){throw this.#e.length=0,this.#e=r,o}}#t(e,t,r){let n=[],s=r??this.#e;for(let o of s){let[i,a]=o;this.#s(e,i,a,t)&&n.push(o)}return n}#s(e,t,r=null,n){let s=new URL(e.url),o=new URL(t.url);if(n?.ignoreSearch&&(o.search="",s.search=""),!rF(s,o,!0))return!1;if(r==null||n?.ignoreVary||!r.headersList.contains("vary"))return!0;let i=xc(r.headersList.get("vary"));for(let a of i){if(a==="*")return!1;let c=t.headersList.get(a),u=e.headersList.get(a);if(c!==u)return!1}return!0}#n(e,t,r=1/0){let n=null;if(e!==void 0)if(e instanceof DA){if(n=e[je],n.method!=="GET"&&!t.ignoreMethod)return[]}else typeof e=="string"&&(n=new DA(e)[je]);let s=[];if(e===void 0)for(let i of this.#e)s.push(i[1]);else{let i=this.#t(n,t);for(let a of i)s.push(a[1])}let o=[];for(let i of s){let a=iF(i,"immutable");if(o.push(a.clone()),o.length>=r)break}return Object.freeze(o)}};Object.defineProperties(Ao.prototype,{[Symbol.toStringTag]:{value:"Cache",configurable:!0},match:pt,matchAll:pt,add:pt,addAll:pt,put:pt,delete:pt,keys:pt});var wC=[{key:"ignoreSearch",converter:b.converters.boolean,defaultValue:()=>!1},{key:"ignoreMethod",converter:b.converters.boolean,defaultValue:()=>!1},{key:"ignoreVary",converter:b.converters.boolean,defaultValue:()=>!1}];b.converters.CacheQueryOptions=b.dictionaryConverter(wC);b.converters.MultiCacheQueryOptions=b.dictionaryConverter([...wC,{key:"cacheName",converter:b.converters.DOMString}]);b.converters.Response=b.interfaceConverter(sF);b.converters["sequence<RequestInfo>"]=b.sequenceConverter(b.converters.RequestInfo);mC.exports={Cache:Ao}});var bC=f((iT,DC)=>{"use strict";var{kConstruct:gn}=js(),{Cache:to}=yC(),{webidl:Ee}=ge(),{kEnumerableProperty:un}=T(),ro=class A{#e=new Map;constructor(){arguments[0]!==gn&&Ee.illegalConstructor(),Ee.util.markAsUncloneable(this)}async match(e,t={}){if(Ee.brandCheck(this,A),Ee.argumentLengthCheck(arguments,1,"CacheStorage.match"),e=Ee.converters.RequestInfo(e),t=Ee.converters.MultiCacheQueryOptions(t),t.cacheName!=null){if(this.#e.has(t.cacheName)){let r=this.#e.get(t.cacheName);return await new to(gn,r).match(e,t)}}else for(let r of this.#e.values()){let s=await new to(gn,r).match(e,t);if(s!==void 0)return s}}async has(e){Ee.brandCheck(this,A);let t="CacheStorage.has";return Ee.argumentLengthCheck(arguments,1,t),e=Ee.converters.DOMString(e,t,"cacheName"),this.#e.has(e)}async open(e){Ee.brandCheck(this,A);let t="CacheStorage.open";if(Ee.argumentLengthCheck(arguments,1,t),e=Ee.converters.DOMString(e,t,"cacheName"),this.#e.has(e)){let n=this.#e.get(e);return new to(gn,n)}let r=[];return this.#e.set(e,r),new to(gn,r)}async delete(e){Ee.brandCheck(this,A);let t="CacheStorage.delete";return Ee.argumentLengthCheck(arguments,1,t),e=Ee.converters.DOMString(e,t,"cacheName"),this.#e.delete(e)}async keys(){return Ee.brandCheck(this,A),[...this.#e.keys()]}};Object.defineProperties(ro.prototype,{[Symbol.toStringTag]:{value:"CacheStorage",configurable:!0},match:un,has:un,open:un,delete:un,keys:un});DC.exports={CacheStorage:ro}});var RC=f((aT,kC)=>{"use strict";kC.exports={maxAttributeValueSize:1024,maxNameValuePairSize:4096}});var vc=f((cT,UC)=>{"use strict";function uF(A){for(let e=0;e<A.length;++e){let t=A.charCodeAt(e);if(t>=0&&t<=8||t>=10&&t<=31||t===127)return!0}return!1}function Gc(A){for(let e=0;e<A.length;++e){let t=A.charCodeAt(e);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 Jc(A){let e=A.length,t=0;if(A[0]==='"'){if(e===1||A[e-1]!=='"')throw new Error("Invalid cookie value");--e,++t}for(;t<e;){let r=A.charCodeAt(t++);if(r<33||r>126||r===34||r===44||r===59||r===92)throw new Error("Invalid cookie value")}}function SC(A){for(let e=0;e<A.length;++e){let t=A.charCodeAt(e);if(t<32||t>126||t===59)throw new Error("Invalid cookie path")}}function FC(A){return A>=48&&A<=57||A>=65&&A<=90||A>=97&&A<=122}function lF(A){if(A===" ")return;if(A.length>255)throw new Error("Invalid cookie domain");let e=0;for(let t=0;t<A.length;++t){let r=A.charCodeAt(t);if(r===46){if(e===0)throw new Error("Invalid cookie domain");if(A.charCodeAt(t-1)===45)throw new Error("Invalid cookie domain");e=0;continue}if(e===0&&!FC(r))throw new Error("Invalid cookie domain");if(!FC(r)&&r!==45)throw new Error("Invalid cookie domain");if(++e>63)throw new Error("Invalid cookie domain")}if(e===0||A.charCodeAt(A.length-1)===45)throw new Error("Invalid cookie domain")}var EF=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],QF=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],no=Array(61).fill(0).map((A,e)=>e.toString().padStart(2,"0"));function NC(A){return typeof A=="number"&&(A=new Date(A)),`${EF[A.getUTCDay()]}, ${no[A.getUTCDate()]} ${QF[A.getUTCMonth()]} ${A.getUTCFullYear()} ${no[A.getUTCHours()]}:${no[A.getUTCMinutes()]}:${no[A.getUTCSeconds()]} GMT`}function BF(A){if(A<0)throw new Error("Invalid cookie max-age")}function IF(A){if(A.name.length===0)return null;Gc(A.name),Jc(A.value);let e=[`${A.name}=${A.value}`];A.name.startsWith("__Secure-")&&(A.secure=!0),A.name.startsWith("__Host-")&&(A.secure=!0,A.domain=null,A.path="/"),A.secure&&e.push("Secure"),A.httpOnly&&e.push("HttpOnly"),typeof A.maxAge=="number"&&(BF(A.maxAge),e.push(`Max-Age=${A.maxAge}`)),A.domain&&(lF(A.domain),e.push(`Domain=${A.domain}`)),A.path&&(SC(A.path),e.push(`Path=${A.path}`)),A.expires&&A.expires.toString()!=="Invalid Date"&&e.push(`Expires=${NC(A.expires)}`),A.sameSite&&e.push(`SameSite=${A.sameSite}`);for(let t of A.unparsed){if(!t.includes("="))throw new Error("Invalid unparsed");let[r,...n]=t.split("="),s=r.trim(),o=n.join("=");Gc(s),Jc(o),e.push(`${s}=${o}`)}return e.join("; ")}UC.exports={isCTLExcludingHtab:uF,validateCookieName:Gc,validateCookiePath:SC,validateCookieValue:Jc,toIMFDate:NC,stringify:IF}});var LC=f((gT,MC)=>{"use strict";var{maxNameValuePairSize:CF,maxAttributeValueSize:hF}=RC(),{isCTLExcludingHtab:dF}=vc(),{collectASequenceOfCodePointsFast:so}=he(),fF=d("node:assert");function pF(A){if(dF(A))return null;let e="",t="",r="",n="";if(A.includes(";")){let s={position:0};e=so(";",A,s),t=A.slice(s.position)}else e=A;if(!e.includes("="))n=e;else{let s={position:0};r=so("=",e,s),n=e.slice(s.position+1)}return r=r.trim(),n=n.trim(),r.length+n.length>CF?null:{name:r,value:n,...Er(t)}}function Er(A,e={}){if(A.length===0)return e;fF(A[0]===";"),A=A.slice(1);let t="";A.includes(";")?(t=so(";",A,{position:0}),A=A.slice(t.length)):(t=A,A="");let r="",n="";if(t.includes("=")){let o={position:0};r=so("=",t,o),n=t.slice(o.position+1)}else r=t;if(r=r.trim(),n=n.trim(),n.length>hF)return Er(A,e);let s=r.toLowerCase();if(s==="expires"){let o=new Date(n);e.expires=o}else if(s==="max-age"){let o=n.charCodeAt(0);if((o<48||o>57)&&n[0]!=="-"||!/^\d+$/.test(n))return Er(A,e);let i=Number(n);e.maxAge=i}else if(s==="domain"){let o=n;o[0]==="."&&(o=o.slice(1)),o=o.toLowerCase(),e.domain=o}else if(s==="path"){let o="";n.length===0||n[0]!=="/"?o="/":o=n,e.path=o}else if(s==="secure")e.secure=!0;else if(s==="httponly")e.httpOnly=!0;else if(s==="samesite"){let o=n.toLowerCase();o==="none"?e.sameSite="None":o==="strict"?e.sameSite="Strict":o==="lax"&&(e.sameSite="Lax")}else e.unparsed??=[],e.unparsed.push(`${r}=${n}`);return Er(A,e)}MC.exports={parseSetCookie:pF,parseUnparsedAttributes:Er}});var YC=f((uT,xC)=>{"use strict";var{parseSetCookie:wF}=LC(),{stringify:mF}=vc(),{webidl:G}=ge(),{Headers:oo}=It();function yF(A){G.argumentLengthCheck(arguments,1,"getCookies"),G.brandCheck(A,oo,{strict:!1});let e=A.get("cookie"),t={};if(!e)return t;for(let r of e.split(";")){let[n,...s]=r.split("=");t[n.trim()]=s.join("=")}return t}function DF(A,e,t){G.brandCheck(A,oo,{strict:!1});let r="deleteCookie";G.argumentLengthCheck(arguments,2,r),e=G.converters.DOMString(e,r,"name"),t=G.converters.DeleteCookieAttributes(t),TC(A,{name:e,value:"",expires:new Date(0),...t})}function bF(A){G.argumentLengthCheck(arguments,1,"getSetCookies"),G.brandCheck(A,oo,{strict:!1});let e=A.getSetCookie();return e?e.map(t=>wF(t)):[]}function TC(A,e){G.argumentLengthCheck(arguments,2,"setCookie"),G.brandCheck(A,oo,{strict:!1}),e=G.converters.Cookie(e);let t=mF(e);t&&A.append("Set-Cookie",t)}G.converters.DeleteCookieAttributes=G.dictionaryConverter([{converter:G.nullableConverter(G.converters.DOMString),key:"path",defaultValue:()=>null},{converter:G.nullableConverter(G.converters.DOMString),key:"domain",defaultValue:()=>null}]);G.converters.Cookie=G.dictionaryConverter([{converter:G.converters.DOMString,key:"name"},{converter:G.converters.DOMString,key:"value"},{converter:G.nullableConverter(A=>typeof A=="number"?G.converters["unsigned long long"](A):new Date(A)),key:"expires",defaultValue:()=>null},{converter:G.nullableConverter(G.converters["long long"]),key:"maxAge",defaultValue:()=>null},{converter:G.nullableConverter(G.converters.DOMString),key:"domain",defaultValue:()=>null},{converter:G.nullableConverter(G.converters.DOMString),key:"path",defaultValue:()=>null},{converter:G.nullableConverter(G.converters.boolean),key:"secure",defaultValue:()=>null},{converter:G.nullableConverter(G.converters.boolean),key:"httpOnly",defaultValue:()=>null},{converter:G.converters.USVString,key:"sameSite",allowedValues:["Strict","Lax","None"]},{converter:G.sequenceConverter(G.converters.DOMString),key:"unparsed",defaultValue:()=>new Array(0)}]);xC.exports={getCookies:yF,deleteCookie:DF,getSetCookies:bF,setCookie:TC}});var Br=f((lT,JC)=>{"use strict";var{webidl:D}=ge(),{kEnumerableProperty:we}=T(),{kConstruct:GC}=$(),{MessagePort:kF}=d("node:worker_threads"),Qr=class A extends Event{#e;constructor(e,t={}){if(e===GC){super(arguments[1],arguments[2]),D.util.markAsUncloneable(this);return}let r="MessageEvent constructor";D.argumentLengthCheck(arguments,1,r),e=D.converters.DOMString(e,r,"type"),t=D.converters.MessageEventInit(t,r,"eventInitDict"),super(e,t),this.#e=t,D.util.markAsUncloneable(this)}get data(){return D.brandCheck(this,A),this.#e.data}get origin(){return D.brandCheck(this,A),this.#e.origin}get lastEventId(){return D.brandCheck(this,A),this.#e.lastEventId}get source(){return D.brandCheck(this,A),this.#e.source}get ports(){return D.brandCheck(this,A),Object.isFrozen(this.#e.ports)||Object.freeze(this.#e.ports),this.#e.ports}initMessageEvent(e,t=!1,r=!1,n=null,s="",o="",i=null,a=[]){return D.brandCheck(this,A),D.argumentLengthCheck(arguments,1,"MessageEvent.initMessageEvent"),new A(e,{bubbles:t,cancelable:r,data:n,origin:s,lastEventId:o,source:i,ports:a})}static createFastMessageEvent(e,t){let r=new A(GC,e,t);return r.#e=t,r.#e.data??=null,r.#e.origin??="",r.#e.lastEventId??="",r.#e.source??=null,r.#e.ports??=[],r}},{createFastMessageEvent:RF}=Qr;delete Qr.createFastMessageEvent;var io=class A extends Event{#e;constructor(e,t={}){let r="CloseEvent constructor";D.argumentLengthCheck(arguments,1,r),e=D.converters.DOMString(e,r,"type"),t=D.converters.CloseEventInit(t),super(e,t),this.#e=t,D.util.markAsUncloneable(this)}get wasClean(){return D.brandCheck(this,A),this.#e.wasClean}get code(){return D.brandCheck(this,A),this.#e.code}get reason(){return D.brandCheck(this,A),this.#e.reason}},ao=class A extends Event{#e;constructor(e,t){let r="ErrorEvent constructor";D.argumentLengthCheck(arguments,1,r),super(e,t),D.util.markAsUncloneable(this),e=D.converters.DOMString(e,r,"type"),t=D.converters.ErrorEventInit(t??{}),this.#e=t}get message(){return D.brandCheck(this,A),this.#e.message}get filename(){return D.brandCheck(this,A),this.#e.filename}get lineno(){return D.brandCheck(this,A),this.#e.lineno}get colno(){return D.brandCheck(this,A),this.#e.colno}get error(){return D.brandCheck(this,A),this.#e.error}};Object.defineProperties(Qr.prototype,{[Symbol.toStringTag]:{value:"MessageEvent",configurable:!0},data:we,origin:we,lastEventId:we,source:we,ports:we,initMessageEvent:we});Object.defineProperties(io.prototype,{[Symbol.toStringTag]:{value:"CloseEvent",configurable:!0},reason:we,code:we,wasClean:we});Object.defineProperties(ao.prototype,{[Symbol.toStringTag]:{value:"ErrorEvent",configurable:!0},message:we,filename:we,lineno:we,colno:we,error:we});D.converters.MessagePort=D.interfaceConverter(kF);D.converters["sequence<MessagePort>"]=D.sequenceConverter(D.converters.MessagePort);var Hc=[{key:"bubbles",converter:D.converters.boolean,defaultValue:()=>!1},{key:"cancelable",converter:D.converters.boolean,defaultValue:()=>!1},{key:"composed",converter:D.converters.boolean,defaultValue:()=>!1}];D.converters.MessageEventInit=D.dictionaryConverter([...Hc,{key:"data",converter:D.converters.any,defaultValue:()=>null},{key:"origin",converter:D.converters.USVString,defaultValue:()=>""},{key:"lastEventId",converter:D.converters.DOMString,defaultValue:()=>""},{key:"source",converter:D.nullableConverter(D.converters.MessagePort),defaultValue:()=>null},{key:"ports",converter:D.converters["sequence<MessagePort>"],defaultValue:()=>new Array(0)}]);D.converters.CloseEventInit=D.dictionaryConverter([...Hc,{key:"wasClean",converter:D.converters.boolean,defaultValue:()=>!1},{key:"code",converter:D.converters["unsigned short"],defaultValue:()=>0},{key:"reason",converter:D.converters.USVString,defaultValue:()=>""}]);D.converters.ErrorEventInit=D.dictionaryConverter([...Hc,{key:"message",converter:D.converters.DOMString,defaultValue:()=>""},{key:"filename",converter:D.converters.USVString,defaultValue:()=>""},{key:"lineno",converter:D.converters["unsigned long"],defaultValue:()=>0},{key:"colno",converter:D.converters["unsigned long"],defaultValue:()=>0},{key:"error",converter:D.converters.any}]);JC.exports={MessageEvent:Qr,CloseEvent:io,ErrorEvent:ao,createFastMessageEvent:RF}});var wt=f((ET,vC)=>{"use strict";var FF="258EAFA5-E914-47DA-95CA-C5AB0DC85B11",SF={enumerable:!0,writable:!1,configurable:!1},NF={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3},UF={NOT_SENT:0,PROCESSING:1,SENT:2},MF={CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10},LF=2**16-1,TF={INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4},xF=Buffer.allocUnsafe(0),YF={string:1,typedArray:2,arrayBuffer:3,blob:4};vC.exports={uid:FF,sentCloseFrameState:UF,staticPropertyDescriptors:SF,states:NF,opcodes:MF,maxUnsigned16Bit:LF,parserStates:TF,emptyBuffer:xF,sendHints:YF}});var ln=f((QT,HC)=>{"use strict";HC.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 Bn=f((BT,KC)=>{"use strict";var{kReadyState:En,kController:GF,kResponse:JF,kBinaryType:vF,kWebSocketURL:HF}=ln(),{states:Qn,opcodes:OA}=wt(),{ErrorEvent:VF,createFastMessageEvent:qF}=Br(),{isUtf8:OF}=d("node:buffer"),{collectASequenceOfCodePointsFast:WF,removeHTTPWhitespace:VC}=he();function PF(A){return A[En]===Qn.CONNECTING}function _F(A){return A[En]===Qn.OPEN}function ZF(A){return A[En]===Qn.CLOSING}function zF(A){return A[En]===Qn.CLOSED}function Vc(A,e,t=(n,s)=>new Event(n,s),r={}){let n=t(A,r);e.dispatchEvent(n)}function KF(A,e,t){if(A[En]!==Qn.OPEN)return;let r;if(e===OA.TEXT)try{r=zC(t)}catch{OC(A,"Received invalid UTF-8 in text frame.");return}else e===OA.BINARY&&(A[vF]==="blob"?r=new Blob([t]):r=XF(t));Vc("message",A,qF,{origin:A[HF].origin,data:r})}function XF(A){return A.byteLength===A.buffer.byteLength?A.buffer:A.buffer.slice(A.byteOffset,A.byteOffset+A.byteLength)}function $F(A){if(A.length===0)return!1;for(let e=0;e<A.length;++e){let t=A.charCodeAt(e);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 jF(A){return A>=1e3&&A<1015?A!==1004&&A!==1005&&A!==1006:A>=3e3&&A<=4999}function OC(A,e){let{[GF]:t,[JF]:r}=A;t.abort(),r?.socket&&!r.socket.destroyed&&r.socket.destroy(),e&&Vc("error",A,(n,s)=>new VF(n,s),{error:new Error(e),message:e})}function WC(A){return A===OA.CLOSE||A===OA.PING||A===OA.PONG}function PC(A){return A===OA.CONTINUATION}function _C(A){return A===OA.TEXT||A===OA.BINARY}function eS(A){return _C(A)||PC(A)||WC(A)}function AS(A){let e={position:0},t=new Map;for(;e.position<A.length;){let r=WF(";",A,e),[n,s=""]=r.split("=");t.set(VC(n,!0,!1),VC(s,!1,!0)),e.position++}return t}function tS(A){if(A.length===0)return!1;for(let t=0;t<A.length;t++){let r=A.charCodeAt(t);if(r<48||r>57)return!1}let e=Number.parseInt(A,10);return e>=8&&e<=15}var ZC=typeof process.versions.icu=="string",qC=ZC?new TextDecoder("utf-8",{fatal:!0}):void 0,zC=ZC?qC.decode.bind(qC):function(A){if(OF(A))return A.toString("utf-8");throw new TypeError("Invalid utf-8 received.")};KC.exports={isConnecting:PF,isEstablished:_F,isClosing:ZF,isClosed:zF,fireEvent:Vc,isValidSubprotocol:$F,isValidStatusCode:jF,failWebsocketConnection:OC,websocketMessageReceived:KF,utf8Decode:zC,isControlFrame:WC,isContinuationFrame:PC,isTextBinaryFrame:_C,isValidOpcode:eS,parseExtensions:AS,isValidClientWindowBits:tS}});var go=f((IT,XC)=>{"use strict";var{maxUnsigned16Bit:rS}=wt(),co=16386,qc,In=null,Ir=co;try{qc=d("node:crypto")}catch{qc={randomFillSync:function(e,t,r){for(let n=0;n<e.length;++n)e[n]=Math.random()*255|0;return e}}}function nS(){return Ir===co&&(Ir=0,qc.randomFillSync(In??=Buffer.allocUnsafe(co),0,co)),[In[Ir++],In[Ir++],In[Ir++],In[Ir++]]}var Oc=class{constructor(e){this.frameData=e}createFrame(e){let t=this.frameData,r=nS(),n=t?.byteLength??0,s=n,o=6;n>rS?(o+=8,s=127):n>125&&(o+=2,s=126);let i=Buffer.allocUnsafe(n+o);i[0]=i[1]=0,i[0]|=128,i[0]=(i[0]&240)+e;i[o-4]=r[0],i[o-3]=r[1],i[o-2]=r[2],i[o-1]=r[3],i[1]=s,s===126?i.writeUInt16BE(n,2):s===127&&(i[2]=i[3]=0,i.writeUIntBE(n,4,6)),i[1]|=128;for(let a=0;a<n;++a)i[o+a]=t[a]^r[a&3];return i}};XC.exports={WebsocketFrameSend:Oc}});var Pc=f((CT,nh)=>{"use strict";var{uid:sS,states:Cn,sentCloseFrameState:uo,emptyBuffer:oS,opcodes:iS}=wt(),{kReadyState:hn,kSentClose:lo,kByteParser:jC,kReceivedClose:$C,kResponse:eh}=ln(),{fireEvent:aS,failWebsocketConnection:WA,isClosing:cS,isClosed:gS,isEstablished:uS,parseExtensions:lS}=Bn(),{channels:Cr}=kt(),{CloseEvent:ES}=Br(),{makeRequest:QS}=cr(),{fetching:BS}=an(),{Headers:IS,getHeadersList:CS}=It(),{getDecodeSplit:hS}=De(),{WebsocketFrameSend:dS}=go(),Wc;try{Wc=d("node:crypto")}catch{}function fS(A,e,t,r,n,s){let o=A;o.protocol=A.protocol==="ws:"?"http:":"https:";let i=QS({urlList:[o],client:t,serviceWorkers:"none",referrer:"no-referrer",mode:"websocket",credentials:"include",cache:"no-store",redirect:"error"});if(s.headers){let g=CS(new IS(s.headers));i.headersList=g}let a=Wc.randomBytes(16).toString("base64");i.headersList.append("sec-websocket-key",a),i.headersList.append("sec-websocket-version","13");for(let g of e)i.headersList.append("sec-websocket-protocol",g);return i.headersList.append("sec-websocket-extensions","permessage-deflate; client_max_window_bits"),BS({request:i,useParallelQueue:!0,dispatcher:s.dispatcher,processResponse(g){if(g.type==="error"||g.status!==101){WA(r,"Received network error or non-101 status code.");return}if(e.length!==0&&!g.headersList.get("Sec-WebSocket-Protocol")){WA(r,"Server did not respond with sent protocols.");return}if(g.headersList.get("Upgrade")?.toLowerCase()!=="websocket"){WA(r,'Server did not set Upgrade header to "websocket".');return}if(g.headersList.get("Connection")?.toLowerCase()!=="upgrade"){WA(r,'Server did not set Connection header to "upgrade".');return}let l=g.headersList.get("Sec-WebSocket-Accept"),E=Wc.createHash("sha1").update(a+sS).digest("base64");if(l!==E){WA(r,"Incorrect hash received in Sec-WebSocket-Accept header.");return}let B=g.headersList.get("Sec-WebSocket-Extensions"),C;if(B!==null&&(C=lS(B),!C.has("permessage-deflate"))){WA(r,"Sec-WebSocket-Extensions header does not match.");return}let I=g.headersList.get("Sec-WebSocket-Protocol");if(I!==null&&!hS("sec-websocket-protocol",i.headersList).includes(I)){WA(r,"Protocol was not set in the opening handshake.");return}g.socket.on("data",Ah),g.socket.on("close",th),g.socket.on("error",rh),Cr.open.hasSubscribers&&Cr.open.publish({address:g.socket.address(),protocol:I,extensions:B}),n(g,C)}})}function pS(A,e,t,r){if(!(cS(A)||gS(A)))if(!uS(A))WA(A,"Connection was closed before it was established."),A[hn]=Cn.CLOSING;else if(A[lo]===uo.NOT_SENT){A[lo]=uo.PROCESSING;let n=new dS;e!==void 0&&t===void 0?(n.frameData=Buffer.allocUnsafe(2),n.frameData.writeUInt16BE(e,0)):e!==void 0&&t!==void 0?(n.frameData=Buffer.allocUnsafe(2+r),n.frameData.writeUInt16BE(e,0),n.frameData.write(t,2,"utf-8")):n.frameData=oS,A[eh].socket.write(n.createFrame(iS.CLOSE)),A[lo]=uo.SENT,A[hn]=Cn.CLOSING}else A[hn]=Cn.CLOSING}function Ah(A){this.ws[jC].write(A)||this.pause()}function th(){let{ws:A}=this,{[eh]:e}=A;e.socket.off("data",Ah),e.socket.off("close",th),e.socket.off("error",rh);let t=A[lo]===uo.SENT&&A[$C],r=1005,n="",s=A[jC].closingInfo;s&&!s.error?(r=s.code??1005,n=s.reason):A[$C]||(r=1006),A[hn]=Cn.CLOSED,aS("close",A,(o,i)=>new ES(o,i),{wasClean:t,code:r,reason:n}),Cr.close.hasSubscribers&&Cr.close.publish({websocket:A,code:r,reason:n})}function rh(A){let{ws:e}=this;e[hn]=Cn.CLOSING,Cr.socketError.hasSubscribers&&Cr.socketError.publish(A),this.destroy()}nh.exports={establishWebSocketConnection:fS,closeWebSocketConnection:pS}});var oh=f((hT,sh)=>{"use strict";var{createInflateRaw:wS,Z_DEFAULT_WINDOWBITS:mS}=d("node:zlib"),{isValidClientWindowBits:yS}=Bn(),{MessageSizeExceededError:DS}=v(),bS=Buffer.from([0,0,255,255]),Eo=Symbol("kBuffer"),dn=Symbol("kLength"),_c=class{#e;#A={};#t=0;constructor(e,t){this.#A.serverNoContextTakeover=e.has("server_no_context_takeover"),this.#A.serverMaxWindowBits=e.get("server_max_window_bits"),this.#t=t.maxPayloadSize}decompress(e,t,r){if(!this.#e){let n=mS;if(this.#A.serverMaxWindowBits){if(!yS(this.#A.serverMaxWindowBits)){r(new Error("Invalid server_max_window_bits"));return}n=Number.parseInt(this.#A.serverMaxWindowBits)}try{this.#e=wS({windowBits:n})}catch(s){r(s);return}this.#e[Eo]=[],this.#e[dn]=0,this.#e.on("data",s=>{if(this.#e[dn]+=s.length,this.#t>0&&this.#e[dn]>this.#t){r(new DS),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(e),t&&this.#e.write(bS),this.#e.flush(()=>{if(!this.#e)return;let n=Buffer.concat(this.#e[Eo],this.#e[dn]);this.#e[Eo].length=0,this.#e[dn]=0,r(null,n)})}};sh.exports={PerMessageDeflate:_c}});var Ih=f((dT,Bh)=>{"use strict";var{Writable:kS}=d("node:stream"),RS=d("node:assert"),{parserStates:me,opcodes:hr,states:FS,emptyBuffer:ih,sentCloseFrameState:ah}=wt(),{kReadyState:SS,kSentClose:ch,kResponse:gh,kReceivedClose:uh}=ln(),{channels:Qo}=kt(),{isValidStatusCode:NS,isValidOpcode:US,failWebsocketConnection:Me,websocketMessageReceived:lh,utf8Decode:MS,isControlFrame:Zc,isTextBinaryFrame:zc,isContinuationFrame:LS}=Bn(),{WebsocketFrameSend:Eh}=go(),{closeWebSocketConnection:Qh}=Pc(),{PerMessageDeflate:TS}=oh(),{MessageSizeExceededError:Kc}=v();function fn(A,e,t){Qh(A,e,t,Buffer.byteLength(t)),Me(A,t)}var Xc=class extends kS{#e=[];#A=0;#t=0;#s=!1;#n=me.INFO;#r={};#o=[];#i;#c;#a;constructor(e,t,r={}){super(),this.ws=e,this.#i=t??new Map,this.#c=r.maxFragments??0,this.#a=r.maxPayloadSize??0,this.#i.has("permessage-deflate")&&this.#i.set("permessage-deflate",new TS(t,r))}_write(e,t,r){this.#e.push(e),this.#t+=e.length,this.#s=!0,this.run(r)}#g(){return this.#a>0&&!Zc(this.#r.opcode)&&this.#r.payloadLength+this.#A>this.#a?(fn(this.ws,1009,"Payload size exceeds maximum allowed size"),!1):!0}run(e){for(;this.#s;)if(this.#n===me.INFO){if(this.#t<2)return e();let t=this.consume(2),r=(t[0]&128)!==0,n=t[0]&15,s=(t[1]&128)===128,o=!r&&n!==hr.CONTINUATION,i=t[1]&127,a=t[0]&64,c=t[0]&32,u=t[0]&16;if(!US(n))return Me(this.ws,"Invalid opcode received"),e();if(s)return Me(this.ws,"Frame cannot be masked"),e();if(a!==0&&!this.#i.has("permessage-deflate")){Me(this.ws,"Expected RSV1 to be clear.");return}if(c!==0||u!==0){Me(this.ws,"RSV1, RSV2, RSV3 must be clear");return}if(o&&!zc(n)){Me(this.ws,"Invalid frame type was fragmented.");return}if(zc(n)&&this.#o.length>0){Me(this.ws,"Expected continuation frame");return}if(this.#r.fragmented&&o){Me(this.ws,"Fragmented frame exceeded 125 bytes.");return}if((i>125||o)&&Zc(n)){Me(this.ws,"Control frame either too large or fragmented");return}if(LS(n)&&this.#o.length===0&&!this.#r.compressed){Me(this.ws,"Unexpected continuation frame");return}if(i<=125){if(this.#r.payloadLength=i,this.#n=me.READ_DATA,!this.#g())return}else i===126?this.#n=me.PAYLOADLENGTH_16:i===127&&(this.#n=me.PAYLOADLENGTH_64);zc(n)&&(this.#r.binaryType=n,this.#r.compressed=a!==0),this.#r.opcode=n,this.#r.masked=s,this.#r.fin=r,this.#r.fragmented=o}else if(this.#n===me.PAYLOADLENGTH_16){if(this.#t<2)return e();let t=this.consume(2);if(this.#r.payloadLength=t.readUInt16BE(0),this.#n=me.READ_DATA,!this.#g())return}else if(this.#n===me.PAYLOADLENGTH_64){if(this.#t<8)return e();let t=this.consume(8),r=t.readUInt32BE(0),n=t.readUInt32BE(4);if(r!==0||n>2**31-1){Me(this.ws,"Received payload length > 2^31 bytes.");return}if(this.#r.payloadLength=n,this.#n=me.READ_DATA,!this.#g())return}else if(this.#n===me.READ_DATA){if(this.#t<this.#r.payloadLength)return e();let t=this.consume(this.#r.payloadLength);if(Zc(this.#r.opcode))this.#s=this.parseControlFrame(t),this.#n=me.INFO;else if(this.#r.compressed){this.#i.get("permessage-deflate").decompress(t,this.#r.fin,(r,n)=>{if(r){let s=r instanceof Kc?1009:1007;fn(this.ws,s,r.message);return}if(this.writeFragments(n)){if(this.#a>0&&this.#A>this.#a){fn(this.ws,1009,new Kc().message);return}if(!this.#r.fin){this.#n=me.INFO,this.#s=!0,this.run(e);return}lh(this.ws,this.#r.binaryType,this.consumeFragments()),this.#s=!0,this.#n=me.INFO,this.run(e)}}),this.#s=!1;break}else{if(!this.writeFragments(t))return;if(this.#a>0&&this.#A>this.#a){fn(this.ws,1009,new Kc().message);return}!this.#r.fragmented&&this.#r.fin&&lh(this.ws,this.#r.binaryType,this.consumeFragments()),this.#n=me.INFO}}}consume(e){if(e>this.#t)throw new Error("Called consume() before buffers satiated.");if(e===0)return ih;if(this.#e[0].length===e)return this.#t-=this.#e[0].length,this.#e.shift();let t=Buffer.allocUnsafe(e),r=0;for(;r!==e;){let n=this.#e[0],{length:s}=n;if(s+r===e){t.set(this.#e.shift(),r);break}else if(s+r>e){t.set(n.subarray(0,e-r),r),this.#e[0]=n.subarray(e-r);break}else t.set(this.#e.shift(),r),r+=n.length}return this.#t-=e,t}writeFragments(e){return this.#c>0&&this.#o.length===this.#c?(fn(this.ws,1008,"Too many message fragments"),!1):(this.#A+=e.length,this.#o.push(e),!0)}consumeFragments(){let e=this.#o;if(e.length===1)return this.#A=0,e.shift();let t=Buffer.concat(e,this.#A);return this.#o=[],this.#A=0,t}parseCloseBody(e){RS(e.length!==1);let t;if(e.length>=2&&(t=e.readUInt16BE(0)),t!==void 0&&!NS(t))return{code:1002,reason:"Invalid status code",error:!0};let r=e.subarray(2);r[0]===239&&r[1]===187&&r[2]===191&&(r=r.subarray(3));try{r=MS(r)}catch{return{code:1007,reason:"Invalid UTF-8",error:!0}}return{code:t,reason:r,error:!1}}parseControlFrame(e){let{opcode:t,payloadLength:r}=this.#r;if(t===hr.CLOSE){if(r===1)return Me(this.ws,"Received close frame with a 1-byte body."),!1;if(this.#r.closeInfo=this.parseCloseBody(e),this.#r.closeInfo.error){let{code:n,reason:s}=this.#r.closeInfo;return Qh(this.ws,n,s,s.length),Me(this.ws,s),!1}if(this.ws[ch]!==ah.SENT){let n=ih;this.#r.closeInfo.code&&(n=Buffer.allocUnsafe(2),n.writeUInt16BE(this.#r.closeInfo.code,0));let s=new Eh(n);this.ws[gh].socket.write(s.createFrame(hr.CLOSE),o=>{o||(this.ws[ch]=ah.SENT)})}return this.ws[SS]=FS.CLOSING,this.ws[uh]=!0,!1}else if(t===hr.PING){if(!this.ws[uh]){let n=new Eh(e);this.ws[gh].socket.write(n.createFrame(hr.PONG)),Qo.ping.hasSubscribers&&Qo.ping.publish({payload:e})}}else t===hr.PONG&&Qo.pong.hasSubscribers&&Qo.pong.publish({payload:e});return!0}get closingInfo(){return this.#r.closeInfo}};Bh.exports={ByteParser:Xc}});var ph=f((fT,fh)=>{"use strict";var{WebsocketFrameSend:xS}=go(),{opcodes:Ch,sendHints:dr}=wt(),YS=ra(),hh=Buffer[Symbol.species],$c=class{#e=new YS;#A=!1;#t;constructor(e){this.#t=e}add(e,t,r){if(r!==dr.blob){let s=dh(e,r);if(!this.#A)this.#t.write(s,t);else{let o={promise:null,callback:t,frame:s};this.#e.push(o)}return}let n={promise:e.arrayBuffer().then(s=>{n.promise=null,n.frame=dh(s,r)}),callback:t,frame:null};this.#e.push(n),this.#A||this.#s()}async#s(){this.#A=!0;let e=this.#e;for(;!e.isEmpty();){let t=e.shift();t.promise!==null&&await t.promise,this.#t.write(t.frame,t.callback),t.callback=t.frame=null}this.#A=!1}};function dh(A,e){return new xS(GS(A,e)).createFrame(e===dr.string?Ch.TEXT:Ch.BINARY)}function GS(A,e){switch(e){case dr.string:return Buffer.from(A);case dr.arrayBuffer:case dr.blob:return new hh(A);case dr.typedArray:return new hh(A.buffer,A.byteOffset,A.byteLength)}}fh.exports={SendQueue:$c}});var Nh=f((pT,Sh)=>{"use strict";var{webidl:U}=ge(),{URLSerializer:JS}=he(),{environmentSettingsObject:wh}=De(),{staticPropertyDescriptors:PA,states:pn,sentCloseFrameState:vS,sendHints:Bo}=wt(),{kWebSocketURL:mh,kReadyState:jc,kController:yh,kBinaryType:Io,kResponse:Dh,kSentClose:HS,kByteParser:VS}=ln(),{isConnecting:qS,isEstablished:OS,isClosing:WS,isValidSubprotocol:PS,fireEvent:bh}=Bn(),{establishWebSocketConnection:_S,closeWebSocketConnection:kh}=Pc(),{ByteParser:ZS}=Ih(),{kEnumerableProperty:He,isBlobLike:Rh}=T(),{getGlobalDispatcher:zS}=Ns(),{types:Fh}=d("node:util"),{ErrorEvent:KS,CloseEvent:XS}=Br(),{SendQueue:$S}=ph(),Le=class A extends EventTarget{#e={open:null,error:null,close:null,message:null};#A=0;#t="";#s="";#n;constructor(e,t=[]){super(),U.util.markAsUncloneable(this);let r="WebSocket constructor";U.argumentLengthCheck(arguments,1,r);let n=U.converters["DOMString or sequence<DOMString> or WebSocketInit"](t,r,"options");e=U.converters.USVString(e,r,"url"),t=n.protocols;let s=wh.settingsObject.baseUrl,o;try{o=new URL(e,s)}catch(a){throw new DOMException(a,"SyntaxError")}if(o.protocol==="http:"?o.protocol="ws:":o.protocol==="https:"&&(o.protocol="wss:"),o.protocol!=="ws:"&&o.protocol!=="wss:")throw new DOMException(`Expected a ws: or wss: protocol, got ${o.protocol}`,"SyntaxError");if(o.hash||o.href.endsWith("#"))throw new DOMException("Got fragment","SyntaxError");if(typeof 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=>PS(a)))throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");this[mh]=new URL(o.href);let i=wh.settingsObject;this[yh]=_S(o,t,i,this,(a,c)=>this.#r(a,c),n),this[jc]=A.CONNECTING,this[HS]=vS.NOT_SENT,this[Io]="blob"}close(e=void 0,t=void 0){U.brandCheck(this,A);let r="WebSocket.close";if(e!==void 0&&(e=U.converters["unsigned short"](e,r,"code",{clamp:!0})),t!==void 0&&(t=U.converters.USVString(t,r,"reason")),e!==void 0&&e!==1e3&&(e<3e3||e>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");kh(this,e,t,n)}send(e){U.brandCheck(this,A);let t="WebSocket.send";if(U.argumentLengthCheck(arguments,1,t),e=U.converters.WebSocketSendData(e,t,"data"),qS(this))throw new DOMException("Sent before connected.","InvalidStateError");if(!(!OS(this)||WS(this)))if(typeof e=="string"){let r=Buffer.byteLength(e);this.#A+=r,this.#n.add(e,()=>{this.#A-=r},Bo.string)}else Fh.isArrayBuffer(e)?(this.#A+=e.byteLength,this.#n.add(e,()=>{this.#A-=e.byteLength},Bo.arrayBuffer)):ArrayBuffer.isView(e)?(this.#A+=e.byteLength,this.#n.add(e,()=>{this.#A-=e.byteLength},Bo.typedArray)):Rh(e)&&(this.#A+=e.size,this.#n.add(e,()=>{this.#A-=e.size},Bo.blob))}get readyState(){return U.brandCheck(this,A),this[jc]}get bufferedAmount(){return U.brandCheck(this,A),this.#A}get url(){return U.brandCheck(this,A),JS(this[mh])}get extensions(){return U.brandCheck(this,A),this.#s}get protocol(){return U.brandCheck(this,A),this.#t}get onopen(){return U.brandCheck(this,A),this.#e.open}set onopen(e){U.brandCheck(this,A),this.#e.open&&this.removeEventListener("open",this.#e.open),typeof e=="function"?(this.#e.open=e,this.addEventListener("open",e)):this.#e.open=null}get onerror(){return U.brandCheck(this,A),this.#e.error}set onerror(e){U.brandCheck(this,A),this.#e.error&&this.removeEventListener("error",this.#e.error),typeof e=="function"?(this.#e.error=e,this.addEventListener("error",e)):this.#e.error=null}get onclose(){return U.brandCheck(this,A),this.#e.close}set onclose(e){U.brandCheck(this,A),this.#e.close&&this.removeEventListener("close",this.#e.close),typeof e=="function"?(this.#e.close=e,this.addEventListener("close",e)):this.#e.close=null}get onmessage(){return U.brandCheck(this,A),this.#e.message}set onmessage(e){U.brandCheck(this,A),this.#e.message&&this.removeEventListener("message",this.#e.message),typeof e=="function"?(this.#e.message=e,this.addEventListener("message",e)):this.#e.message=null}get binaryType(){return U.brandCheck(this,A),this[Io]}set binaryType(e){U.brandCheck(this,A),e!=="blob"&&e!=="arraybuffer"?this[Io]="blob":this[Io]=e}#r(e,t){this[Dh]=e;let r=this[yh]?.dispatcher?.webSocketOptions,n=r?.maxFragments,s=r?.maxPayloadSize,o=new ZS(this,t,{maxFragments:n,maxPayloadSize:s});o.on("drain",jS),o.on("error",eN.bind(this)),e.socket.ws=this,this[VS]=o,this.#n=new $S(e.socket),this[jc]=pn.OPEN;let i=e.headersList.get("sec-websocket-extensions");i!==null&&(this.#s=i);let a=e.headersList.get("sec-websocket-protocol");a!==null&&(this.#t=a),bh("open",this)}};Le.CONNECTING=Le.prototype.CONNECTING=pn.CONNECTING;Le.OPEN=Le.prototype.OPEN=pn.OPEN;Le.CLOSING=Le.prototype.CLOSING=pn.CLOSING;Le.CLOSED=Le.prototype.CLOSED=pn.CLOSED;Object.defineProperties(Le.prototype,{CONNECTING:PA,OPEN:PA,CLOSING:PA,CLOSED:PA,url:He,readyState:He,bufferedAmount:He,onopen:He,onerror:He,onclose:He,close:He,onmessage:He,binaryType:He,send:He,extensions:He,protocol:He,[Symbol.toStringTag]:{value:"WebSocket",writable:!1,enumerable:!1,configurable:!0}});Object.defineProperties(Le,{CONNECTING:PA,OPEN:PA,CLOSING:PA,CLOSED:PA});U.converters["sequence<DOMString>"]=U.sequenceConverter(U.converters.DOMString);U.converters["DOMString or sequence<DOMString>"]=function(A,e,t){return U.util.Type(A)==="Object"&&Symbol.iterator in A?U.converters["sequence<DOMString>"](A):U.converters.DOMString(A,e,t)};U.converters.WebSocketInit=U.dictionaryConverter([{key:"protocols",converter:U.converters["DOMString or sequence<DOMString>"],defaultValue:()=>new Array(0)},{key:"dispatcher",converter:U.converters.any,defaultValue:()=>zS()},{key:"headers",converter:U.nullableConverter(U.converters.HeadersInit)}]);U.converters["DOMString or sequence<DOMString> or WebSocketInit"]=function(A){return U.util.Type(A)==="Object"&&!(Symbol.iterator in A)?U.converters.WebSocketInit(A):{protocols:U.converters["DOMString or sequence<DOMString>"](A)}};U.converters.WebSocketSendData=function(A){if(U.util.Type(A)==="Object"){if(Rh(A))return U.converters.Blob(A,{strict:!1});if(ArrayBuffer.isView(A)||Fh.isArrayBuffer(A))return U.converters.BufferSource(A)}return U.converters.USVString(A)};function jS(){this.ws[Dh].socket.resume()}function eN(A){let e,t;A instanceof XS?(e=A.reason,t=A.code):e=A.message,bh("error",this,()=>new KS("error",{error:A,message:e})),kh(this,t)}Sh.exports={WebSocket:Le}});var eg=f((wT,Uh)=>{"use strict";function AN(A){return A.indexOf("\0")===-1}function tN(A){if(A.length===0)return!1;for(let e=0;e<A.length;e++)if(A.charCodeAt(e)<48||A.charCodeAt(e)>57)return!1;return!0}function rN(A){return new Promise(e=>{setTimeout(e,A).unref()})}Uh.exports={isValidLastEventId:AN,isASCIINumber:tN,delay:rN}});var xh=f((mT,Th)=>{"use strict";var{Transform:nN}=d("node:stream"),{isASCIINumber:Mh,isValidLastEventId:Lh}=eg(),bA=[239,187,191],Ag=10,Co=13,sN=58,oN=32,tg=class extends nN{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(e={}){e.readableObjectMode=!0,super(e),this.state=e.eventSourceSettings||{},e.push&&(this.push=e.push)}_transform(e,t,r){if(e.length===0){r();return}if(this.buffer?this.buffer=Buffer.concat([this.buffer,e]):this.buffer=e,this.checkBOM)switch(this.buffer.length){case 1:if(this.buffer[0]===bA[0]){r();return}this.checkBOM=!1,r();return;case 2:if(this.buffer[0]===bA[0]&&this.buffer[1]===bA[1]){r();return}this.checkBOM=!1;break;case 3:if(this.buffer[0]===bA[0]&&this.buffer[1]===bA[1]&&this.buffer[2]===bA[2]){this.buffer=Buffer.alloc(0),this.checkBOM=!1,r();return}this.checkBOM=!1;break;default:this.buffer[0]===bA[0]&&this.buffer[1]===bA[1]&&this.buffer[2]===bA[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]===Ag){this.buffer=this.buffer.subarray(this.pos+1),this.pos=0,this.crlfCheck=!1;continue}this.crlfCheck=!1}if(this.buffer[this.pos]===Ag||this.buffer[this.pos]===Co){this.buffer[this.pos]===Co&&(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]===Ag||this.buffer[this.pos]===Co){this.buffer[this.pos]===Co&&(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(e,t){if(e.length===0)return;let r=e.indexOf(sN);if(r===0)return;let n="",s="";if(r!==-1){n=e.subarray(0,r).toString("utf8");let o=r+1;e[o]===oN&&++o,s=e.subarray(o).toString("utf8")}else n=e.toString("utf8"),s="";switch(n){case"data":t[n]===void 0?t[n]=s:t[n]+=`
|
|
45
45
|
${s}`;break;case"retry":Mh(s)&&(t[n]=s);break;case"id":Lh(s)&&(t[n]=s);break;case"event":s.length>0&&(t[n]=s);break}}processEvent(e){e.retry&&Mh(e.retry)&&(this.state.reconnectionTime=parseInt(e.retry,10)),e.id&&Lh(e.id)&&(this.state.lastEventId=e.id),e.data!==void 0&&this.push({type:e.event||"message",options:{data:e.data,lastEventId:this.state.lastEventId,origin:this.state.origin}})}clearEvent(){this.event={data:void 0,event:void 0,id:void 0,retry:void 0}}};Th.exports={EventSourceStream:tg}});var Oh=f((yT,qh)=>{"use strict";var{pipeline:iN}=d("node:stream"),{fetching:aN}=an(),{makeRequest:cN}=cr(),{webidl:kA}=ge(),{EventSourceStream:gN}=xh(),{parseMIMEType:uN}=he(),{createFastMessageEvent:lN}=Br(),{isNetworkError:Yh}=sn(),{delay:EN}=eg(),{kEnumerableProperty:mt}=T(),{environmentSettingsObject:Gh}=De(),Jh=!1,vh=3e3,wn=0,Hh=1,mn=2,QN="anonymous",BN="use-credentials",fr=class A extends EventTarget{#e={open:null,error:null,message:null};#A=null;#t=!1;#s=wn;#n=null;#r=null;#o;#i;constructor(e,t={}){super(),kA.util.markAsUncloneable(this);let r="EventSource constructor";kA.argumentLengthCheck(arguments,1,r),Jh||(Jh=!0,process.emitWarning("EventSource is experimental, expect them to change at any time.",{code:"UNDICI-ES"})),e=kA.converters.USVString(e,r,"url"),t=kA.converters.EventSourceInitDict(t,r,"eventSourceInitDict"),this.#o=t.dispatcher,this.#i={lastEventId:"",reconnectionTime:vh};let n=Gh,s;try{s=new URL(e,n.settingsObject.baseUrl),this.#i.origin=s.origin}catch(a){throw new DOMException(a,"SyntaxError")}this.#A=s.href;let o=QN;t.withCredentials&&(o=BN,this.#t=!0);let i={redirect:"follow",keepalive:!0,mode:"cors",credentials:o==="anonymous"?"same-origin":"omit",referrer:"no-referrer"};i.client=Gh.settingsObject,i.headersList=[["accept",{name:"accept",value:"text/event-stream"}]],i.cache="no-store",i.initiator="other",i.urlList=[new URL(this.#A)],this.#n=cN(i),this.#c()}get readyState(){return this.#s}get url(){return this.#A}get withCredentials(){return this.#t}#c(){if(this.#s===mn)return;this.#s=wn;let e={request:this.#n,dispatcher:this.#o},t=r=>{Yh(r)&&(this.dispatchEvent(new Event("error")),this.close()),this.#a()};e.processResponseEndOfBody=t,e.processResponse=r=>{if(Yh(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?uN(n):"failure",o=s!=="failure"&&s.essence==="text/event-stream";if(r.status!==200||o===!1){this.close(),this.dispatchEvent(new Event("error"));return}this.#s=Hh,this.dispatchEvent(new Event("open")),this.#i.origin=r.urlList[r.urlList.length-1].origin;let i=new gN({eventSourceSettings:this.#i,push:a=>{this.dispatchEvent(lN(a.type,a.options))}});iN(r.body.stream,i,a=>{a?.aborted===!1&&(this.close(),this.dispatchEvent(new Event("error")))})},this.#r=aN(e)}async#a(){this.#s!==mn&&(this.#s=wn,this.dispatchEvent(new Event("error")),await EN(this.#i.reconnectionTime),this.#s===wn&&(this.#i.lastEventId.length&&this.#n.headersList.set("last-event-id",this.#i.lastEventId,!0),this.#c()))}close(){kA.brandCheck(this,A),this.#s!==mn&&(this.#s=mn,this.#r.abort(),this.#n=null)}get onopen(){return this.#e.open}set onopen(e){this.#e.open&&this.removeEventListener("open",this.#e.open),typeof e=="function"?(this.#e.open=e,this.addEventListener("open",e)):this.#e.open=null}get onmessage(){return this.#e.message}set onmessage(e){this.#e.message&&this.removeEventListener("message",this.#e.message),typeof e=="function"?(this.#e.message=e,this.addEventListener("message",e)):this.#e.message=null}get onerror(){return this.#e.error}set onerror(e){this.#e.error&&this.removeEventListener("error",this.#e.error),typeof e=="function"?(this.#e.error=e,this.addEventListener("error",e)):this.#e.error=null}},Vh={CONNECTING:{__proto__:null,configurable:!1,enumerable:!0,value:wn,writable:!1},OPEN:{__proto__:null,configurable:!1,enumerable:!0,value:Hh,writable:!1},CLOSED:{__proto__:null,configurable:!1,enumerable:!0,value:mn,writable:!1}};Object.defineProperties(fr,Vh);Object.defineProperties(fr.prototype,Vh);Object.defineProperties(fr.prototype,{close:mt,onerror:mt,onmessage:mt,onopen:mt,readyState:mt,url:mt,withCredentials:mt});kA.converters.EventSourceInitDict=kA.dictionaryConverter([{key:"withCredentials",converter:kA.converters.boolean,defaultValue:()=>!1},{key:"dispatcher",converter:kA.converters.any}]);qh.exports={EventSource:fr,defaultReconnectionTime:vh}});var Zh=f((DT,N)=>{"use strict";var IN=_t(),Wh=br(),CN=Zt(),hN=VE(),dN=zt(),fN=ma(),pN=lQ(),wN=dQ(),Ph=v(),fo=T(),{InvalidArgumentError:ho}=Ph,pr=sB(),mN=Rr(),yN=nc(),DN=HB(),bN=ic(),kN=Wa(),RN=ps(),{getGlobalDispatcher:_h,setGlobalDispatcher:FN}=Ns(),SN=Us(),NN=gs(),UN=us();Object.assign(Wh.prototype,pr);N.exports.Dispatcher=Wh;N.exports.Client=IN;N.exports.Pool=CN;N.exports.BalancedPool=hN;N.exports.Agent=dN;N.exports.ProxyAgent=fN;N.exports.EnvHttpProxyAgent=pN;N.exports.RetryAgent=wN;N.exports.RetryHandler=RN;N.exports.DecoratorHandler=SN;N.exports.RedirectHandler=NN;N.exports.createRedirectInterceptor=UN;N.exports.interceptors={redirect:ZB(),retry:KB(),dump:$B(),dns:AI()};N.exports.buildConnector=mN;N.exports.errors=Ph;N.exports.util={parseHeaders:fo.parseHeaders,headerNameToString:fo.headerNameToString};function yn(A){return(e,t,r)=>{if(typeof t=="function"&&(r=t,t=null),!e||typeof e!="string"&&typeof e!="object"&&!(e instanceof URL))throw new ho("invalid url");if(t!=null&&typeof t!="object")throw new ho("invalid opts");if(t&&t.path!=null){if(typeof t.path!="string")throw new ho("invalid opts.path");let o=t.path;t.path.startsWith("/")||(o=`/${o}`),e=new URL(fo.parseOrigin(e).origin+o)}else t||(t=typeof e=="object"?e:{}),e=fo.parseURL(e);let{agent:n,dispatcher:s=_h()}=t;if(n)throw new ho("unsupported opts.agent. Did you mean opts.client?");return A.call(s,{...t,origin:e.origin,path:e.search?`${e.pathname}${e.search}`:e.pathname,method:t.method||(t.body?"PUT":"GET")},r)}}N.exports.setGlobalDispatcher=FN;N.exports.getGlobalDispatcher=_h;var MN=an().fetch;N.exports.fetch=async function(e,t=void 0){try{return await MN(e,t)}catch(r){throw r&&typeof r=="object"&&Error.captureStackTrace(r),r}};N.exports.Headers=It().Headers;N.exports.Response=sn().Response;N.exports.Request=cr().Request;N.exports.FormData=Tr().FormData;N.exports.File=globalThis.File??d("node:buffer").File;N.exports.FileReader=CC().FileReader;var{setGlobalOrigin:LN,getGlobalOrigin:TN}=yi();N.exports.setGlobalOrigin=LN;N.exports.getGlobalOrigin=TN;var{CacheStorage:xN}=bC(),{kConstruct:YN}=js();N.exports.caches=new xN(YN);var{deleteCookie:GN,getCookies:JN,getSetCookies:vN,setCookie:HN}=YC();N.exports.deleteCookie=GN;N.exports.getCookies=JN;N.exports.getSetCookies=vN;N.exports.setCookie=HN;var{parseMIMEType:VN,serializeAMimeType:qN}=he();N.exports.parseMIMEType=VN;N.exports.serializeAMimeType=qN;var{CloseEvent:ON,ErrorEvent:WN,MessageEvent:PN}=Br();N.exports.WebSocket=Nh().WebSocket;N.exports.CloseEvent=ON;N.exports.ErrorEvent=WN;N.exports.MessageEvent=PN;N.exports.request=yn(pr.request);N.exports.stream=yn(pr.stream);N.exports.pipeline=yn(pr.pipeline);N.exports.connect=yn(pr.connect);N.exports.upgrade=yn(pr.upgrade);N.exports.MockClient=yN;N.exports.MockPool=bN;N.exports.MockAgent=DN;N.exports.mockErrors=kN;var{EventSource:_N}=Oh();N.exports.EventSource=_N});import wr from"node:net";import ZN from"node:dns";function po(A){let e=String(A).toLowerCase().split("%")[0];if((e.match(/::/g)||[]).length>1)return null;let t=u=>{if(!u)return[];let g=u.split(":"),l=g.at(-1);if(l?.includes(".")){let E=l.split(".").map(Number);if(E.length!==4||E.some(B=>!Number.isInteger(B)||B<0||B>255))return null;g.splice(g.length-1,1,(E[0]<<8|E[1]).toString(16),(E[2]<<8|E[3]).toString(16))}return g.some(E=>!/^[0-9a-f]{1,4}$/.test(E))?null:g.map(E=>Number.parseInt(E,16))},[r,n]=e.split("::"),s=t(r),o=t(n);if(!s||!o)return null;let i=e.includes("::"),a=8-s.length-o.length;if(!i&&a!==0||i&&a<1)return null;let c=[...s,...Array(Math.max(0,a)).fill(0),...o];return c.length!==8?null:Uint8Array.from(c.flatMap(u=>[u>>8,u&255]))}function rg(A,e,t){let r=Math.floor(t/8),n=t%8;for(let o=0;o<r;o+=1)if(A[o]!==e[o])return!1;if(!n)return!0;let s=255<<8-n;return(A[r]&s)===(e[r]&s)}function ng(A){if(wr.isIPv4(A)){let e=A.split(".").map(Number);return!(e[0]===0||e[0]===10||e[0]===127||e[0]>=224||e[0]===100&&e[1]>=64&&e[1]<=127||e[0]===169&&e[1]===254||e[0]===172&&e[1]>=16&&e[1]<=31||e[0]===192&&(e[1]===0||e[1]===2||e[1]===168)||e[0]===192&&e[1]===88&&e[2]===99||e[0]===198&&(e[1]===18||e[1]===19||e[1]===51)||e[0]===203&&e[1]===0&&e[2]===113)}if(wr.isIPv6(A)){let e=po(A);if(!e)return!1;let t=po("::ffff:0:0");return rg(e,t,96)?ng([...e.slice(12)].join(".")):rg(e,po("2000::"),3)?![["2001::",23],["2001:db8::",32],["2001:10::",28],["2001:2::",48],["2002::",16],["3fff::",20]].some(([n,s])=>rg(e,po(n),s)):!1}return!1}function KN(A){let e;try{e=new URL(String(A))}catch{return{ok:!1,error:`not a valid URL: ${String(A).slice(0,120)}`}}if(e.protocol!=="http:"&&e.protocol!=="https:")return{ok:!1,error:`refused protocol ${e.protocol} (only http/https)`};let t=e.hostname.toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,"");if(zN.has(t)||t.endsWith(".localhost")||t.endsWith(".internal"))return{ok:!1,error:`refused internal host ${t}`};let r=wr.isIP(t);return r!==0&&!ng(t)?{ok:!1,error:`refused private address ${t}`}:{ok:!0,url:e,host:t,isLiteralIp:r!==0}}async function zh(A,{lookupFn:e=ZN.promises.lookup}={}){let t=KN(A);if(!t.ok)return t;if(t.isLiteralIp)return{ok:!0,url:t.url};let r;try{r=await e(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=>!ng(n.address))?{ok:!1,error:`refused: ${t.host} resolves to a non-public address`}:{ok:!0,url:t.url,addresses:r}}async function Kh(){let A,e;try{let i=await Promise.resolve().then(()=>vd(Zh(),1));A=i.Agent,e=i.fetch}catch{return null}if(typeof A!="function"||typeof e!="function")return null;let t=i=>String(i).toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,""),r=new Map,n=i=>(Array.isArray(i)?i:[i]).map(a=>typeof a=="string"?{address:a}:a).filter(a=>a&&a.address).map(a=>({address:a.address,family:a.family||(wr.isIPv6(a.address)?6:4)})),s=i=>{let a=t(i);if(wr.isIP(a))return[{address:a,family:wr.isIPv6(a)?6:4}];let c=r.get(a);if(!c||!c.length)throw new Error(`refused: unpinned host ${i} during pinned fetch`);return c},o=new A({connect:{lookup(i,a,c){let u;try{u=s(i)}catch(g){return c(g)}return a?.all?c(null,u):c(null,u[0].address,u[0].family)}}});return{dispatcher:o,fetch:(i,a={})=>e(i,{...a,dispatcher:o}),pin(i,a,c){r.set(t(i),n(typeof a=="string"?[{address:a,family:c}]:a))},resolve:s,async close(){try{await o.destroy()}catch{}}}}var zN,Xh=qe(()=>{zN=new Set(["localhost","metadata.google.internal","metadata.goog"])});import{createHash as XN}from"node:crypto";function AU(A){let e=String(A||"").toLowerCase();return Ad.includes(e)||/(^|-)(api[-_]?key|key|token|secret|auth|authorization|session|cookie|signature|access)(-|$)/.test(e)}function tU(A){let e={};for(let[t,r]of Object.entries(A||{}))AU(t)||(e[t]=r);return e}function rU(A,e){if(!A)throw new Error(`HTTP redirect from ${e} missing Location`);let t=new URL(String(A),String(e));if(t.protocol!=="http:"&&t.protocol!=="https:")throw new Error(`HTTP redirect from ${e} used unsupported protocol ${t.protocol}`);return t.toString()}function nU(A,e){return new URL(String(A)).origin===new URL(String(e)).origin}function sU(A,e,t){let r={};for(let[a,c]of Object.entries(t||{}))r[a.toLowerCase()]=c;let n=Object.keys(r).filter(a=>/(^|-)(api[-_]?key|key|token|secret|auth|authorization|session|cookie|signature|access)(-|$)/.test(a)),o=[...new Set([...Ad,...n])].sort().map(a=>`${a}=${r[a]??""}`).join(`
|
|
46
|
-
`),i=XN("sha256").update(o).digest("hex").slice(0,32);return`${A} ${e} ${i}`}function oU(A,e){let t=Number(e);return Number.isFinite(t)&&t>0?Math.min(t*1e3,jh):Math.min(250*2**A,jh)+Math.floor(Math.random()*100)}async function aU(A,{fetchImpl:e,method:t,headers:r,body:n,timeoutMs:s,lookupFn:o,realFetch:i}){let a=new AbortController,c=setTimeout(()=>a.abort(),s),u=null,g=e;try{let l=String(A),E={...r||{}};for(let B=0;B<=ed;B+=1){let C=await g(l,{method:t,headers:E,body:n,signal:a.signal,redirect:"manual"}),I=await C.text(),Q=null;if(I)try{Q=JSON.parse(I)}catch{Q=null}if(eU.has(C.status)){if(t!=="GET"&&t!=="HEAD"){let m=new Error(`HTTP ${C.status} ${t} ${l} redirected non-idempotent request`);throw m.status=C.status,m.body=Q??I.slice(0,300),m}if(B===ed)throw new Error(`HTTP redirect loop for ${A}`);let h=rU(C.headers?.get?.("location"),l);if(!nU(h,l)){let m=await zh(h,o?{lookupFn:o}:{});if(!m.ok){let x=new Error(`HTTP redirect from ${l} ${m.error}`);throw x.status=C.status,x}E=tU(E),i&&m.addresses?.length&&(u||(u=await Kh()),u&&(u.pin(new URL(h).hostname,m.addresses[0].address,m.addresses[0].family),g=u.fetch))}l=h;continue}if(!C.ok){let h=new Error(`HTTP ${C.status} ${t} ${l}`);throw h.status=C.status,h.retryAfter=C.headers?.get?.("retry-after")??null,h.body=Q??I.slice(0,300),h}return Q??I}throw new Error(`HTTP redirect loop for ${A}`)}finally{clearTimeout(c),u&&await u.close()}}async function ue(A,e={}){let t=e.fetchImpl||globalThis.fetch;if(typeof t!="function")throw new Error("fetch unavailable \u2014 pass opts.fetchImpl");let r=e.timeoutMs??12e3,n=(e.method||"GET").toUpperCase(),s={Accept:"application/json",...e.headers||{}},o=e.body;o!=null&&typeof o!="string"&&(s["Content-Type"]=s["Content-Type"]||"application/json",o=JSON.stringify(o));let i=Number.isInteger(e.retries)?Math.max(e.retries,0):jN,a=e.lookupFn,c=!e.fetchImpl,u=async()=>{let C;for(let I=0;I<=i;I++)try{return await aU(A,{fetchImpl:t,method:n,headers:s,body:o,timeoutMs:r,lookupFn:a,realFetch:c})}catch(Q){C=Q;let h=Q?.status,y=Q?.name==="AbortError",m=new Set([408,425,429]),x=h!=null?m.has(h)||$N.has(h)&&$h.has(n):!y&&$h.has(n);if(I===i||!x)throw Q;await iU(oU(I,Q?.retryAfter))}throw C};if(!(e.dedupe!==!1&&n==="GET"&&o==null))return u();let l=sU(n,A,s),E=sg.get(l);if(E)return E;let B=u().finally(()=>sg.delete(l));return sg.set(l,B),B}var $N,$h,jN,jh,Ad,eU,ed,sg,iU,uA=qe(()=>{Xh();$N=new Set([408,425,429,500,502,503,504]),$h=new Set(["GET","HEAD","OPTIONS","PUT","DELETE"]),jN=2,jh=4e3,Ad=["authorization","x-api-key","x-tensor-api-key","0x-api-key","api-key","cookie","proxy-authorization"],eU=new Set([301,302,303,307,308]),ed=3;sg=new Map;iU=A=>new Promise(e=>setTimeout(e,A))});import{readFileSync as cU}from"node:fs";import{homedir as gU}from"node:os";import{join as wo}from"node:path";function uU(){if(process.env.ORACLE_TEST_ISOLATE_SECRETS==="1"){let t=(process.env.ORACLE_EXEC_ENV_FILE||"").trim();return t?[t]:[]}let A=(process.env.ORACLE_EXEC_ENV_FILE||process.env.MAD_EXEC_ENV_FILE||"").trim(),e=gU();if(process.env.ORACLE_PUBLIC_DESKTOP==="1"){let t=(process.env.ORACLE_CONFIG_DIR||wo(e,".config","oracle")).trim();return[A,wo(t,"exec.env")].filter(Boolean)}return[A,wo(e,".config","oracle","exec.env"),wo(e,".config","mad-desk","exec.env")].filter(Boolean)}function td(A,e,t){let r=A??process.env[e]??process.env[t];if(!String(r||"").trim())for(let n of uU())try{let s=cU(n,"utf8"),o=s.match(new RegExp(`^${e}=(.*)$`,"m"))||s.match(new RegExp(`^${t}=(.*)$`,"m"));if(o&&(r=o[1].trim(),r))break}catch{}if(!String(r||"").trim())throw new Error(`${e} required for attestation. Set it in the environment, or place ${e}=<value> in ~/.config/oracle/exec.env`);return r}var rd=qe(()=>{});var nd=qe(()=>{});import{createHash as lU,createHmac as od,timingSafeEqual as EU}from"node:crypto";function yo(A){return Array.isArray(A)?`[${A.map(yo).join(",")}]`:A&&typeof A=="object"?`{${Object.keys(A).sort().map(e=>`${JSON.stringify(e)}:${yo(A[e])}`).join(",")}}`:JSON.stringify(A??null)}function id(A,{required:e=!1}={}){try{return td(A,"ORACLE_ROUTE_ATTESTATION_SECRET","MAD_ROUTE_ATTESTATION_SECRET")}catch(t){if(e)throw t;return null}}function ig(A){let{signature:e,...t}=A;return t}function ad(A,{secret:e}={}){let t=id(e);return t?{...A,signature:od("sha256",t).update(yo(ig(A))).digest("hex")}:A}function QU(A){let e=String(A||"").toLowerCase();if(!/^0x[0-9a-f]+$/.test(e)||e.length<10||e.length%2!==0)throw new Error("auto-slippage calldata must be even-length hex with a selector");return lU("sha256").update(Buffer.from(e.slice(2),"hex")).digest("hex")}function _A(A,{chainId:e,venue:t,data:r,secret:n}={}){if(!A||A.mode!=="auto")throw new Error("bounded auto-slippage guard required");if(Number(A.chainId)!==Number(e))throw new Error("auto-slippage guard chain mismatch");if(String(A.venue).toLowerCase()!==String(t||"").toLowerCase())throw new Error("auto-slippage guard venue mismatch");let s=id(n);if(s){let E=od("sha256",s).update(yo(ig(A))).digest("hex");if(!BU(A.signature,E))throw new Error("auto-slippage guard signature mismatch \u2014 refusing to bind a guard this Oracle did not issue")}let o=Number(A.selectedBps),i=Number(A.capBps);if(!Number.isInteger(o)||o<0||o>mo||!Number.isInteger(i)||i<0||i>mo||o>i)throw new Error("auto-slippage guard bounds are invalid");let a=BigInt(A.quoteAmountOut??0),c=BigInt(A.minAmountOut??0);if(a<=0n||c<=0n)throw new Error("auto-slippage guard amounts must be positive");let u=a*BigInt(1e4-o),g=u/10000n;if(u%10000n!==0n&&(g+=1n),c<g)throw new Error("auto-slippage guard is under-protected relative to its quote");let l=hU(r);if(l!=null&&l!==c)throw new Error(`auto-slippage: calldata encodes floor ${l}, not the guard floor ${c} \u2014 refusing to bind`);return ad({...ig(A),calldataHash:QU(r)},{secret:n})}function BU(A,e){let t=Buffer.from(String(A??""),"utf8"),r=Buffer.from(String(e??""),"utf8");return t.length!==r.length||t.length===0?!1:EU(t,r)}function og(A,e=0){let t=Number(A);return Number.isFinite(t)?t:e}function IU(A){let e=A==null?mo:Number(A);if(!Number.isInteger(e)||e<0)throw new Error("auto-slippage cap must be a non-negative integer bps value");return Math.min(e,mo)}function ZA({liquidityUsd:A,priceChange5m:e=0,quoteAgeMs:t=0,crossChain:r=!1,requestedCapBps:n}={}){let s=og(A,0),o=s>0?s>=25e4?5:s>=1e5?10:s>=5e4?20:s>=1e4?40:70:r?30:10,i=Math.min(60,Math.abs(og(e,0))*2),a=Math.min(40,Math.floor(Math.max(0,og(t,0))/5e3)*5),c=Math.max(25,Math.ceil(20+o+i+a)),u=IU(n);return{mode:"auto",requiredBps:c,selectedBps:Math.min(c,u),capBps:u,executable:c<=u}}function CU({chainId:A,venue:e,quoteAmountOut:t,liquidityUsd:r,priceChange5m:n=0,quoteAgeMs:s=0,crossChain:o=!1,requestedCapBps:i,quotedAtMs:a=Date.now(),ttlMs:c=sd,secret:u}={}){let g=BigInt(t??0);if(g<=0n)throw new Error("auto-slippage guard requires positive quoteAmountOut");let l=ZA({liquidityUsd:r,priceChange5m:n,quoteAgeMs:s,crossChain:o,requestedCapBps:i});if(!l.executable)throw new Error(`auto-slippage requires ${l.requiredBps} bps above hard/requested cap ${l.capBps}; route blocked`);let E=Number(a);if(!Number.isFinite(E))throw new Error("auto-slippage: quotedAtMs must be a finite number");let B=Math.min(3e4,Math.max(1e3,Number(c)||sd)),C=g*BigInt(1e4-l.selectedBps),I=C/10000n;if(C%10000n!==0n&&(I+=1n),I>g&&(I=g),g>0n&&I<=0n)throw new Error(`auto-slippage: quote ${g} is too small to express a ${l.selectedBps} bps floor without rounding to zero`);let Q=Number((g-I)*10000n/(g===0n?1n:g));if(Q>l.capBps)throw new Error(`auto-slippage: realised floor implies ${Q} bps, above cap ${l.capBps} \u2014 refusing to issue a guard weaker than advertised`);return ad({mode:"auto",chainId:Number(A),venue:String(e||"unknown"),quoteAmountOut:g.toString(),minAmountOut:I.toString(),requiredBps:l.requiredBps,selectedBps:l.selectedBps,capBps:l.capBps,quotedAtMs:E,expiresAtMs:E+B},{secret:u})}function hU(A){let e=String(A||"");if(!/^0x[0-9a-fA-F]+$/.test(e)||e.length<10||e.length%2!==0)return null;let t=e.slice(0,10).toLowerCase(),r=[];for(let s=10;s+64<=e.length;s+=64)r.push(e.slice(s,s+64));let n=s=>r[s]==null?null:BigInt("0x"+r[s]);switch(t){case"0x414bf389":return n(6);case"0x04e45aaf":return n(5);case"0xc04b8d59":{let s=n(0);if(s==null)return null;let o=Number(s)/32;return!Number.isInteger(o)||o<0?null:n(o+4)}case"0xb858183f":{let s=n(0);if(s==null)return null;let o=Number(s)/32;return!Number.isInteger(o)||o<0?null:n(o+3)}case"0xa026383e":return n(6);case"0x38ed1739":case"0x5c11d795":return n(1);case"0x7ff36ab5":case"0xb6f9de95":return n(0);case"0x18cbafe5":case"0x791ac947":return n(1);default:return null}}function eA(A,{chainId:e,venue:t,amountOut:r,liquidityUsd:n,priceChange5m:s,crossChain:o,requestedCapBps:i,quotedAtMs:a=Date.now(),ttlMs:c}={}){let u=CU({chainId:e,venue:t,quoteAmountOut:r,liquidityUsd:n,priceChange5m:s,crossChain:o,requestedCapBps:i,quotedAtMs:a,ttlMs:c});return{...A,autoSlippage:u,amountOutMinimum:u.minAmountOut}}var mo,sd,RA=qe(()=>{rd();nd();mo=100,sd=2e4});var mr,Do=qe(()=>{mr="0x000000000000000000000000000000000000dEaD"});import{createHash as dU,createHmac as fU,timingSafeEqual as OT}from"node:crypto";function ag(A){return A===null||typeof A!="object"?JSON.stringify(A):Array.isArray(A)?`[${A.map(ag).join(",")}]`:`{${Object.keys(A).sort().map(t=>`${JSON.stringify(t)}:${ag(A[t])}`).join(",")}}`}function cd(A){let e=String(A?.ORACLE_STAMP_HMAC_SECRET||"").trim();return e.length>=16?e:""}function gd(A=process.env){return cd(process.env)||cd(A)}function mU(A){let{oraclePrepared:e,prepareHash:t,prepareMac:r,note:n,...s}=A||{};return s}function yU(A){let e=mU(A);return dU("sha256").update(ag(e)).digest("hex")}function DU(A,e=gd()){return e?fU("sha256",e).update(String(A)).digest("hex"):""}function Ve(A,{provider:e,kind:t,env:r=process.env}={}){if(!A||typeof A!="object")throw new Error("stampPrepared: payload object required");let n={...A,provider:A.provider||e,kind:A.kind||t,requiresUserSignature:A.requiresUserSignature!==!1,signingReady:!1,broadcastReady:!1,executionReady:!1};if(!n.provider)throw new Error("stampPrepared: provider required");if(!n.kind)throw new Error("stampPrepared: kind required");let s=Date.now(),o=s+wU,a={...n,preparedAt:s,expiresAt:o,prepareVersion:pU},c=yU(a),u=gd(r),g=u?DU(c,u):void 0,l={...a,oraclePrepared:!0,prepareHash:c};return g&&(l.prepareMac=g),l}var pU,wU,WT,lA=qe(()=>{pU=2,wU=300*1e3,WT=(()=>{let A=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(A)&&A>0?A:1800*1e3})()});import{Contract as bU,JsonRpcProvider as kU}from"ethers";function MU(A){return UU.test(String(A||""))}async function ud(A,{contract:e=RU,rpc:t=SU,chainId:r=FU,balanceOf:n}={}){if(!MU(A))throw new Error("invalid-address");if(n)return BigInt(await n(A));let s=new kU(t,r,{staticNetwork:!0}),o=new bU(e,NU,s);return BigInt(await o.balanceOf(A))}var RU,FU,SU,NU,UU,ld=qe(()=>{RU="0x62FCFAf7573AD8B41a0FBF347AfEb85e06599A75",FU=999,SU="https://rpc.hyperliquid.xyz/evm",NU=["function balanceOf(address owner) view returns (uint256)"],UU=/^0x[a-fA-F0-9]{40}$/});import{existsSync as LU,readFileSync as TU,lstatSync as xU}from"node:fs";import{homedir as Ed}from"node:os";import{join as cg}from"node:path";function JU(A){let e=String(A||"swap").toLowerCase();return Object.prototype.hasOwnProperty.call(Qd,e)?Qd[e]:GU}function OU(A=process.env){if(process.env.ORACLE_TEST_ISOLATE_SECRETS==="1"){if(A[Bd])return String(A[Bd]);let e=A.ORACLE_CONFIG_DIR||cg(Ed(),".config","oracle");return cg(e,"fee-recipient")}return cg(Ed(),".config","oracle","fee-recipient")}function WU(A=process.env){try{let e=OU(A);if(!LU(e)||xU(e).isSymbolicLink())return"";let t=TU(e,"utf8").trim().toLowerCase();return/^0x[a-f0-9]{40}$/.test(t)?t:""}catch{return""}}function PU(A,{fallback:e=0}={}){if(A==null)return e;if(String(A).trim()==="")return 0;let t=Number(A);return!Number.isFinite(t)||t<=0?0:Math.min(Math.floor(t),YU)}function _U({env:A=process.env,action:e="swap",admin:t=!1}={}){let r=String(A[HU]||"").trim(),n=String(A[VU]||qU).trim();if(t===!0)return{bps:0,recipient:"",integrator:n,action:e,applies:!1,reason:"admin-oracle"};let s=JU(e),o=PU(A[vU],{fallback:r?s:0}),i=Math.min(o,s);if(!i)return{bps:0,recipient:"",integrator:n,action:e,applies:!1,reason:"not-configured"};if(!/^0x[a-fA-F0-9]{40}$/.test(r))return{bps:0,recipient:"",integrator:n,action:e,applies:!1,reason:"no-recipient"};let a=WU(A);return!a||a!==r.toLowerCase()?{bps:0,recipient:"",integrator:n,action:e,applies:!1,reason:"recipient-not-pinned"}:{bps:i,recipient:r,integrator:n,action:e,applies:!0,reason:"configured"}}async function gg({wallet:A,env:e=process.env,action:t="swap",holderCheck:r={},admin:n=!1}={}){let s=_U({env:e,action:t,admin:n});if(n===!0)return{...s,holderVerificationStatus:"admin-oracle"};let o=String(A||"").trim().toLowerCase();if(!/^0x[a-f0-9]{40}$/.test(o))return{...s,holderVerificationStatus:"wallet-required"};try{return BigInt(await ud(o,r))>0n?{...s,bps:0,applies:!1,reason:"locals-only-holder",holderVerificationStatus:"holder"}:{...s,holderVerificationStatus:"non-holder"}}catch{return{...s,holderVerificationStatus:"unavailable"}}}function Id(A){return A?.applies?`Oracle routing fee ${A.bps} bps (${(A.bps/100).toFixed(2)}%) to ${A.recipient}.`:A?.reason==="admin-oracle"?"No Oracle fee (admin Oracle).":A?.reason==="locals-only-holder"?"No Oracle fee (Locals Only holder).":"No Oracle fee."}function Cd(A){return A?.applies?{integrator:A.integrator,fee:String(A.bps/1e4)}:{}}var YU,GU,Qd,vU,HU,VU,Bd,qU,bo=qe(()=>{ld();YU=100,GU=5,Qd=Object.freeze({swap:5,bridge:5,perps:0,nft:0});vU="ORACLE_INTEGRATOR_FEE_BPS",HU="ORACLE_INTEGRATOR_FEE_RECIPIENT",VU="ORACLE_INTEGRATOR_ID",Bd="ORACLE_INTEGRATOR_FEE_RECIPIENT_PIN",qU="oracle"});var fd={};Cg(fd,{LIFI_API:()=>dd,lifiChains:()=>$U,lifiHealth:()=>KU,lifiPrepare:()=>XU,lifiQuote:()=>ko});function lg(A={}){return(A.baseUrl||process.env.LIFI_API_URL||dd).replace(/\/$/,"")}function zU(A){let e=String(A||ug).toLowerCase();return e===ug.toLowerCase()||e===ZU}function hd(A,e){let t=String(A||"").trim();if(!/^0x[0-9a-fA-F]{40}$/.test(t))throw new Error(`lifi: ${e} must be a 20-byte address`);return t.toLowerCase()}async function KU(A={}){let e=await ue(`${lg(A)}/chains`,{fetchImpl:A.fetchImpl,timeoutMs:A.timeoutMs??12e3}),t=Array.isArray(e)?e.length:e?.chains?.length||0;return{ok:t>0,chainCount:t}}async function ko(A={},e={}){let{fromChain:t,toChain:r=t,fromToken:n=ug,toToken:s,fromAmount:o,fromAddress:i=mr}=A;if(t==null||!s||!o)throw new Error("lifiQuote requires fromChain, toToken, fromAmount");let a=new URLSearchParams({fromChain:String(t),toChain:String(r),fromToken:n,toToken:s,fromAmount:String(o),fromAddress:i}),c=ZA({liquidityUsd:A.liquidityUsd,priceChange5m:A.priceChange5m,crossChain:Number(r)!==Number(t),requestedCapBps:A.maxSlippageBps??A.slippageBps});if(!c.executable)throw new Error(`lifi: route requires ${c.requiredBps} bps above cap ${c.capBps}`);a.set("slippage",String(c.selectedBps/1e4));let u=await gg({wallet:A.fromAddress,env:e.env,action:A.feeAction||"swap",holderCheck:e.holderCheck});for(let[I,Q]of Object.entries(Cd(u)))a.set(I,Q);let g=await ue(`${lg(e)}/quote?${a}`,{fetchImpl:e.fetchImpl,timeoutMs:e.timeoutMs??2e4}),l=g?.estimate?.toAmount||g?.toAmount;if(!l)return{...g,autoSlippagePolicy:c,oracleFee:u};let E=g?.transactionRequest?.to||g?.estimate?.approvalAddress||"lifi",B=eA(g,{chainId:Number(t),venue:E,amountOut:l,liquidityUsd:A.liquidityUsd,priceChange5m:A.priceChange5m,crossChain:Number(r)!==Number(t),requestedCapBps:A.maxSlippageBps??A.slippageBps}),C=g?.estimate?.toAmountMin||g?.toAmountMin;if(C!=null&&BigInt(C)<BigInt(B.amountOutMinimum))throw new Error("lifi: provider transaction is under-protected versus bounded auto-slippage floor");return{...B,oracleFee:u}}async function XU(A={},e={}){let t=await ko(A,e),r=t?.transactionRequest;if(!r?.to||!r?.data)throw new Error("lifi: quote did not return an executable transactionRequest");let n=Number(A.fromChain);if(r.chainId!=null&&Number(r.chainId)!==n)throw new Error("lifi: transaction chain mismatch");if(A.fromAddress&&r.from&&String(r.from).toLowerCase()!==String(A.fromAddress).toLowerCase())throw new Error("lifi: transaction sender mismatch");let s=null;if(!zU(A.fromToken)){let o=t?.estimate?.approvalAddress||t?.approvalAddress;if(!o)throw new Error("lifi: ERC20 route missing approvalAddress");let i=t?.action?.fromToken?.address||t?.estimate?.fromToken?.address||A.fromToken;s={token:hd(i,"approval token"),spender:hd(o,"approval spender"),amount:String(A.fromAmount)}}return Ve({provider:"lifi",calldataReady:!0,requiresUserSignature:!0,signingReady:!1,broadcastReady:!1,chainId:n,quote:t,autoSlippage:t.autoSlippage,requiresApproval:s,transaction:{chainId:n,from:r.from||A.fromAddress,to:r.to,data:r.data,value:r.value??"0x0",...r.gasLimit!=null?{gasLimit:r.gasLimit}:{},slippageGuard:_A(t.autoSlippage,{chainId:n,venue:r.to,data:r.data})}},{provider:"lifi",kind:"lifi-tx"})}async function $U(A={}){return ue(`${lg(A)}/chains`,{fetchImpl:A.fetchImpl,timeoutMs:A.timeoutMs??12e3})}var dd,ug,ZU,Eg=qe(()=>{uA();RA();Do();lA();bo();dd="https://li.quest/v1";ug="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",ZU="0x0000000000000000000000000000000000000000"});var Ro={};Cg(Ro,{ACROSS_API:()=>Dd,HOP_API:()=>bd,RELAY_API:()=>kd,acrossHealth:()=>gM,acrossSuggestedFees:()=>Rd,hopHealth:()=>uM,hopQuote:()=>Fd,relayHealth:()=>lM,relayPrepare:()=>EM,relayQuote:()=>Bg});async function gM(A={}){try{return{ok:!0,estimatedFillTimeSec:(await Rd({token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",destinationToken:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",originChainId:1,destinationChainId:42161,amount:"1000000000000000"},A)).estimatedFillTimeSec}}catch(e){return{ok:!1,error:String(e.message||e).slice(0,160)}}}async function Rd(A={},e={}){let{token:t,destinationToken:r=t,originChainId:n,destinationChainId:s,amount:o}=A;if(!t||n==null||s==null||!o)throw new Error("acrossSuggestedFees requires token, originChainId, destinationChainId, amount");let i=new URLSearchParams({token:t,destinationToken:r,originChainId:String(n),destinationChainId:String(s),amount:String(o)}),a=(e.baseUrl||process.env.ACROSS_API_URL||Dd).replace(/\/$/,"");return ue(`${a}/suggested-fees?${i}`,{fetchImpl:e.fetchImpl,timeoutMs:e.timeoutMs??15e3})}async function uM(A={}){try{let e=await Fd({amount:"1000000000000000",token:"ETH",fromChain:"ethereum",toChain:"arbitrum",slippage:.5},A);return{ok:!0,estimatedRecieved:e.estimatedRecieved||e.estimatedReceived}}catch(e){return{ok:!1,error:String(e.message||e).slice(0,160)}}}async function Fd(A={},e={}){let{amount:t,token:r="ETH",fromChain:n="ethereum",toChain:s="arbitrum"}=A;if(!t)throw new Error("hopQuote requires amount");let o=A.slippage==null?void 0:Math.round(Number(A.slippage)*100),i=ZA({liquidityUsd:A.liquidityUsd,priceChange5m:A.priceChange5m,crossChain:n!==s,requestedCapBps:A.maxSlippageBps??A.slippageBps??o});if(!i.executable)throw new Error(`hop: route requires ${i.requiredBps} bps above cap ${i.capBps}`);let a=new URLSearchParams({amount:String(t),token:r,fromChain:n,toChain:s,slippage:String(i.selectedBps/100)}),c=(e.baseUrl||process.env.HOP_API_URL||bd).replace(/\/$/,""),u=await ue(`${c}/quote?${a}`,{fetchImpl:e.fetchImpl,timeoutMs:e.timeoutMs??15e3}),g=u?.estimatedRecieved||u?.estimatedReceived;return g?eA(u,{chainId:Number(A.originChainId||A.chainId||cM[n]||0),venue:u?.tx?.to||"hop",amountOut:g,liquidityUsd:A.liquidityUsd,priceChange5m:A.priceChange5m,crossChain:n!==s,requestedCapBps:A.maxSlippageBps??A.slippageBps??o}):{...u,autoSlippagePolicy:i}}async function lM(A={}){try{let e=await Bg({user:mr,originChainId:1,destinationChainId:8453,originCurrency:"0x0000000000000000000000000000000000000000",destinationCurrency:"0x0000000000000000000000000000000000000000",amount:"1000000000000000",tradeType:"EXACT_INPUT"},A);return{ok:!0,hasSteps:Array.isArray(e.steps),stepCount:e.steps?.length||0}}catch(e){return{ok:!1,error:String(e.message||e).slice(0,160)}}}async function Bg(A={},e={}){let{user:t=mr,originChainId:r,destinationChainId:n,originCurrency:s="0x0000000000000000000000000000000000000000",destinationCurrency:o="0x0000000000000000000000000000000000000000",amount:i,tradeType:a="EXACT_INPUT"}=A;if(r==null||n==null||!i)throw new Error("relayQuote requires originChainId, destinationChainId, amount");let c=ZA({liquidityUsd:A.liquidityUsd,priceChange5m:A.priceChange5m,crossChain:Number(r)!==Number(n),requestedCapBps:A.maxSlippageBps??A.slippageBps});if(!c.executable)throw new Error(`relay: route requires ${c.requiredBps} bps above cap ${c.capBps}`);let u=(e.baseUrl||process.env.RELAY_API_URL||kd).replace(/\/$/,""),g=await ue(`${u}/quote`,{method:"POST",body:{user:t,originChainId:Number(r),destinationChainId:Number(n),originCurrency:s,destinationCurrency:o,amount:String(i),tradeType:a,slippageTolerance:String(c.selectedBps)},fetchImpl:e.fetchImpl,timeoutMs:e.timeoutMs??2e4}),l=g?.details?.currencyOut?.amount;return!l||!/^\d+$/.test(String(l))?{...g,autoSlippagePolicy:c}:eA(g,{chainId:Number(r),venue:g?.steps?.[0]?.items?.[0]?.data?.to||"relay",amountOut:l,liquidityUsd:A.liquidityUsd,priceChange5m:A.priceChange5m,crossChain:Number(r)!==Number(n),requestedCapBps:A.maxSlippageBps??A.slippageBps})}async function EM(A={},e={}){let t=await Bg(A,e),r=Number(A.originChainId),n=(t.steps||[]).flatMap(i=>(i.items||[]).filter(a=>a?.data?.to&&a?.data?.data).map(a=>({stepId:i.id,...a.data})));if(!n.length)throw new Error("relay: quote returned no executable transaction items");let s=String(t?.autoSlippage?.venue||"").toLowerCase();if(n.some(i=>String(i.to).toLowerCase()!==s))throw new Error("relay: route includes a separate approval/transaction that is not yet safely bound");let o=n.map(i=>({chainId:r,from:i.from||A.user,to:i.to,data:i.data,value:i.value??"0x0",...i.gasLimit!=null||i.gas!=null?{gasLimit:i.gasLimit??i.gas}:{},slippageGuard:_A(t.autoSlippage,{chainId:r,venue:i.to,data:i.data})}));return Ve({provider:"relay",calldataReady:!0,requiresUserSignature:!0,signingReady:!1,broadcastReady:!1,chainId:r,quote:t,autoSlippage:t.autoSlippage,transactions:o},{provider:"relay",kind:"relay-tx"})}var Dd,bd,kd,cM,Fo=qe(()=>{uA();RA();Do();lA();Dd="https://across.to/api",bd="https://api.hop.exchange/v1",kd="https://api.relay.link",cM={ethereum:1,optimism:10,bsc:56,polygon:137,arbitrum:42161,avalanche:43114,base:8453}});var DM=Object.freeze(["blockNumber","nativeBalance","tokenBalance","resolveToken","resolvePools","scanBlocks","scoreRisk","quote","sellSimulation","prepareUnsignedTx"]),bM=Object.freeze({LIVE:"LIVE",CACHED:"CACHED",STALE:"STALE",UNKNOWN:"UNKNOWN",UNAVAILABLE:"UNAVAILABLE"}),kM=Object.freeze({PASS:"PASS",CAUTION:"CAUTION",FAIL:"FAIL",UNKNOWN:"UNKNOWN"});var FA=Object.freeze({FULL:"FULL",NO_GAS:"NO_GAS",FAILED:"FAILED"});var hg=A=>{try{return A==null||A===""?null:BigInt(String(A).split(".")[0])}catch{return null}};function dg(A){let{source:e,amountOut:t,minOut:r=null,gasUsd:n=null,feeUsd:s=null,oracleFeeBps:o=0,estimatedGas:i=null,liquidityUsd:a=null,error:c=null,executionReady:u=!1,meta:g={}}=A||{};if(c||t==null)return{source:e,quality:FA.FAILED,amountOut:null,error:c||"no amountOut returned"};let l=hg(t);if(l==null||l<=0n)return{source:e,quality:FA.FAILED,amountOut:null,error:"non-positive amountOut"};let E=Number(o);return{source:e,quality:n==null?FA.NO_GAS:FA.FULL,amountOut:l.toString(),minOut:hg(r)?.toString()??null,gasUsd:n,feeUsd:s,oracleFeeBps:Number.isFinite(E)&&E>0?Math.floor(E):0,estimatedGas:i==null?null:String(i),liquidityUsd:a==null?null:Number(a),executionReady:u,meta:g}}function fg(A,{destPriceUsd:e=null,destDecimals:t=null,liquidityFirst:r=!0,liquidityBandBps:n=50,gasPriceWei:s=null,nativePriceUsd:o=null}={}){let i=A.filter(M=>M.quality!==FA.FAILED),a=A.filter(M=>M.quality===FA.FAILED),c=e!=null&&e>0&&t!=null&&t>=0,u=Number(s),g=Number(o),l=Number.isFinite(u)&&u>0&&Number.isFinite(g)&&g>0,E=i.map(M=>{let V=BigInt(M.amountOut),ye=0n,Qe=!1,ne=!1,Te=BigInt(M.oracleFeeBps??0),EA=Te>0n?V*Te/10000n:0n;if(c){let Dn=M.gasUsd,No=Number(M.meta?.gasUnits??M.estimatedGas);if(Dn==null&&l&&Number.isFinite(No)&&No>0){let XA=No*u/1e18*g;Number.isFinite(XA)&&XA>=0&&(Dn=XA,ne=!0)}let Ig=(Dn??0)+(M.feeUsd??0);if(Ig>0){let XA=Ig/e*10**t;Number.isFinite(XA)&&XA>=0&&(ye=BigInt(Math.floor(XA)),Qe=!0)}else Dn===0&&(Qe=!0)}let yt=ye+EA,Dt=V>yt?V-yt:0n;return{...M,grossOut:V.toString(),netOut:Dt.toString(),costInDest:ye.toString(),oracleFeeInDest:EA.toString(),costAccounted:Qe,gasEstimated:ne}}),B=Number(n)>0?Number(n):0,C=E.reduce((M,V)=>BigInt(V.netOut)>M?BigInt(V.netOut):M,0n),I=M=>C>0n?Number((C-BigInt(M))*10000n/C):0,Q=[],h=E.slice().sort((M,V)=>BigInt(V.netOut)>BigInt(M.netOut)?1:-1)[0]??null;E.sort((M,V)=>{let ye=I(M.netOut)<=B?0:1,Qe=I(V.netOut)<=B?0:1;if(r&&B>0&&ye!==Qe)return ye-Qe;if(r&&B>0){let ne=M.liquidityUsd??-1,Te=V.liquidityUsd??-1;if(ne!==Te)return Te-ne}return BigInt(V.netOut)>BigInt(M.netOut)?1:-1}),r&&B>0&&h&&E[0]&&E[0].source!==h.source&&Q.push(`liquidity-first: chose ${E[0].source} (liquidity $${E[0].liquidityUsd??"unknown"}) over best-price ${h.source} within ${B} bps`);let y=E.filter(M=>!M.costAccounted).map(M=>M.source);c?y.length&&Q.push(`gas not reported by: ${y.join(", ")}. These are ranked on gross output and may be overstated relative to gas-measured routes.`):Q.push("destination price/decimals unavailable: ranked on GROSS output. Gas is not included, so a cheap-looking route may cost more to execute.");let m=E[0];if(c&&m&&m.costAccounted===!1){let M=E.find(V=>V.costAccounted&&I(V.netOut)<=B);M&&Q.push(`winner ${m.source} has UNMEASURED gas; gas-measured ${M.source} is within ${B} bps and may net more once ${m.source}'s real gas is paid \u2014 prefer it if unsure.`)}let x=E.filter(M=>M.gasEstimated).map(M=>M.source);x.length&&Q.push(`gas ESTIMATED (from gas units x current gas price, not measured) for: ${x.join(", ")}. Net includes this estimate so the ranking is gas-inclusive, but the on-chain gas may differ.`);let _=null,Z=null;if(E.length>=2&&E[0].costAccounted&&E[1].costAccounted){let M=BigInt(E[0].netOut),V=BigInt(E[1].netOut);V>0n&&(_=Number((M-V)*10000n/V),Z=`${E[0].source} vs ${E[1].source}`)}return{best:E[0]??null,routes:E,failed:a,improvementBps:_,spreadBasis:Z,rankedOn:c?"net-of-cost":"gross",warnings:Q}}async function pg(A,{timeoutMs:e=12e3}={}){let t=(n,s)=>Promise.race([n,new Promise((o,i)=>setTimeout(()=>i(new Error(`${s}: timeout`)),e))]);return(await Promise.allSettled(A.map(n=>t(Promise.resolve().then(n.run),n.source)))).map((n,s)=>{let o=A[s].source;return n.status==="rejected"?dg({source:o,error:String(n.reason?.message||n.reason)}):dg({source:o,...n.value})})}Eg();uA();RA();lA();bo();uA();RA();lA();uA();RA();lA();uA();RA();import{TypedDataEncoder as Rx,getAddress as Fx,isAddress as Sx}from"ethers";var mx=Object.freeze({READ:"read",PREPARE:"prepare",EXECUTE:"execute",AUTONOMOUS:"autonomous"});Do();lA();var Yx=Object.freeze({1:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",100:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",42161:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",8453:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41"}),Gx=Object.freeze({1:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",100:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",42161:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",8453:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"});var Jx=Object.freeze({Order:[{name:"sellToken",type:"address"},{name:"buyToken",type:"address"},{name:"receiver",type:"address"},{name:"sellAmount",type:"uint256"},{name:"buyAmount",type:"uint256"},{name:"validTo",type:"uint32"},{name:"appData",type:"bytes32"},{name:"feeAmount",type:"uint256"},{name:"kind",type:"string"},{name:"partiallyFillable",type:"bool"},{name:"sellTokenBalance",type:"string"},{name:"buyTokenBalance",type:"string"}]}),vx=Object.freeze({OrderCancellations:[{name:"orderUids",type:"bytes[]"}]});import{Interface as wd,getAddress as r2,isAddress as n2}from"ethers";uA();var pd={robinhood:{chainId:4663,name:"Robinhood Chain",rpcEnv:["RH_CHAIN_RPC"],evm:!0},ethereum:{chainId:1,name:"Ethereum",rpcEnv:["ETH_RPC_URL","ETHEREUM_RPC_URL","MAINNET_RPC_URL"],evm:!0},polygon:{chainId:137,name:"Polygon",rpcEnv:["POLYGON_RPC_URL","POLYGON_RPC"],evm:!0},arbitrum:{chainId:42161,name:"Arbitrum One",rpcEnv:["ARBITRUM_RPC_URL","ARB_RPC_URL"],evm:!0},base:{chainId:8453,name:"Base",rpcEnv:["BASE_RPC_URL"],evm:!0},hyperevm:{chainId:999,name:"HyperEVM",rpcEnv:["HYPEREVM_RPC_URL","HYPER_EVM_RPC"],evm:!0},bsc:{chainId:56,name:"BNB Smart Chain",rpcEnv:["BSC_RPC_URL","BNB_RPC_URL"],evm:!0},avalanche:{chainId:43114,name:"Avalanche C-Chain",rpcEnv:["AVALANCHE_RPC_URL","AVAX_RPC_URL"],evm:!0},optimism:{chainId:10,name:"OP Mainnet",rpcEnv:["OPTIMISM_RPC_URL","OP_RPC_URL"],evm:!0},abstract:{chainId:2741,name:"Abstract",rpcEnv:["ABSTRACT_RPC_URL","ABS_RPC_URL"],evm:!0},stable:{chainId:988,name:"Stable Mainnet",rpcEnv:["STABLE_RPC_URL","STABLE_RPC"],evm:!0}},Vx=new Map(Object.values(pd).map(A=>[A.chainId,A]));import{Interface as AM,getAddress as Kx}from"ethers";var Xx=new AM(["function allowance(address owner,address spender) view returns (uint256)","function balanceOf(address account) view returns (uint256)"]);uA();var e2=Object.freeze({1:"ethereum",10:"optimism",56:"bsc",137:"polygon",8453:"base",42161:"arbitrum",43114:"avalanche",999:"hyperevm",4663:"robinhood"});RA();lA();var c2=new wd(["function quoteExactInputSingle((address tokenIn, address tokenOut, uint256 amountIn, uint24 fee, uint160 sqrtPriceLimitX96) params) returns (uint256 amountOut, uint160 sqrtPriceX96After, uint32 initializedTicksCrossed, uint256 gasEstimate)","function quoteExactInput(bytes path, uint256 amountIn) returns (uint256 amountOut, uint160[] sqrtPriceX96AfterList, uint32[] initializedTicksCrossedList, uint256 gasEstimate)"]),g2=new wd(["function exactInputSingle((address tokenIn,address tokenOut,uint24 fee,address recipient,uint256 amountIn,uint256 amountOutMinimum,uint160 sqrtPriceLimitX96) params) payable returns (uint256 amountOut)","function multicall(uint256 deadline,bytes[] data) payable returns (bytes[] results)"]);import{AbiCoder as nM,Interface as md,getAddress as E2,isAddress as Q2,keccak256 as B2}from"ethers";RA();lA();var f2=nM.defaultAbiCoder();var p2=new md(["function quoteExactInputSingle(((address currency0,address currency1,uint24 fee,int24 tickSpacing,address hooks) poolKey,bool zeroForOne,uint128 exactAmount,bytes hookData) params) returns (uint256 amountOut, uint256 gasEstimate)"]),w2=new md(["function execute(bytes commands,bytes[] inputs,uint256 deadline) payable"]);uA();var sM="https://coins.llama.fi",oM="https://api.llama.fi";function iM(A={}){return(A.baseUrl||process.env.DEFILLAMA_COINS_URL||sM).replace(/\/$/,"")}function aM(A={}){return(A.baseUrl||process.env.DEFILLAMA_API_URL||oM).replace(/\/$/,"")}async function Qg(A,e={}){if(!Array.isArray(A)||!A.length)throw new Error("llamaPrices requires coins[]");let t=A.map(encodeURIComponent).join(",");return ue(`${iM(e)}/prices/current/${t}`,{fetchImpl:e.fetchImpl,timeoutMs:e.timeoutMs})}async function yd(A={}){return ue(`${aM(A)}/protocols`,{fetchImpl:A.fetchImpl,timeoutMs:A.timeoutMs??2e4})}var KA=A=>{let e=Number(A);return Number.isFinite(e)?e:null};function Sd(A){if(!Array.isArray(A))return null;let e=0,t=!1;for(let r of A){let n=KA(r?.amountUSD);n!=null&&(e+=n,t=!0)}return t?e:null}var zA=A=>String(A??"").toLowerCase().replace(/[^a-z0-9]/g,""),Nd=Object.freeze({across:["across"],relay:["relaychain","relay"],lifi:["jumper-(li.fi-powered)","lifi"],stargate:["stargate-v2","stargate-v1","stargate"],hop:["hop-protocol","hop"],debridge:["debridge"],synapse:["synapse"],connext:["connext"],cbridge:["celer-bridge","celer-cbridge","cbridge"],celer:["celer-bridge","celer-cbridge","cbridge"],squid:["squid"],symbiosis:["symbiosis"],wormhole:["wormhole"],mayan:["mayan"],allbridge:["allbridge"],thorchain:["thorchain"]});async function QM(A={}){try{let e=await yd({...A,baseUrl:A.defillamaApiBaseUrl,timeoutMs:A.defillamaTimeoutMs??Math.min(Number(A.timeoutMs??5e3),5e3)});return Array.isArray(e)?e:[]}catch{return[]}}function BM(A,e={}){let t=zA(e.tool||e.provider||e.bridge||e.protocol),r=[];return A==="lifi"&&t&&t!=="lifi"&&r.push(...Nd[t]||[t]),r.push(...Nd[zA(A)]||[A]),r}function IM(A,e,t={}){let r=Array.isArray(A)?A:[],n=BM(e,t).map(zA).filter(Boolean);for(let s of n){let o=r.find(a=>zA(a?.slug)===s||zA(a?.name)===s),i=KA(o?.tvl);if(i!=null)return{liquidityUsd:i,protocol:o?.name??o?.slug??s}}for(let s of n){let o=r.find(a=>{let c=zA(a?.category);return!c.includes("bridge")&&!c.includes("crosschain")?!1:zA(a?.slug).includes(s)||zA(a?.name).includes(s)}),i=KA(o?.tvl);if(i!=null)return{liquidityUsd:i,protocol:o?.name??o?.slug??s}}return null}function Ud({fromChainId:A,toChainId:e,tokenIn:t,tokenOut:r,amountIn:n,taker:s,opts:o={}}){let i=[],a=null,c=async(u,g={})=>(a||=QM(o),IM(await a,u,g));return i.push({source:"lifi",run:async()=>{let u=await ko({fromChain:A,toChain:e,fromToken:t,toToken:r,fromAmount:n},o),g=u?.estimate??u?.[0]?.estimate,l={tool:u?.tool??u?.toolDetails?.name,durationSeconds:KA(g?.executionDuration)},E=await c("lifi",l);return{amountOut:g?.toAmount,minOut:g?.toAmountMin,gasUsd:Sd(g?.gasCosts),feeUsd:Sd(g?.feeCosts),oracleFeeBps:u?.oracleFee?.applies?u.oracleFee.bps:0,liquidityUsd:E?.liquidityUsd??null,meta:{...l,liquidityProtocol:E?.protocol,oracleFee:u?.oracleFee??null}}}}),i.push({source:"relay",run:async()=>{let{relayQuote:u}=await Promise.resolve().then(()=>(Fo(),Ro)),l=(await u({user:s,originChainId:A,destinationChainId:e,originCurrency:t,destinationCurrency:r,amount:String(n)},o))?.details,E={durationSeconds:KA(l?.timeEstimate),rate:l?.rate},B=await c("relay",E);return{amountOut:l?.currencyOut?.amount,minOut:l?.currencyOut?.minimumAmount,gasUsd:KA(l?.totalImpact?.usd)!=null?Math.abs(KA(l.totalImpact.usd)):null,liquidityUsd:B?.liquidityUsd??null,meta:{...E,liquidityProtocol:B?.protocol}}}}),i.push({source:"across",run:async()=>{let{acrossSuggestedFees:u}=await Promise.resolve().then(()=>(Fo(),Ro)),g=await u({token:t,destinationToken:r,originChainId:A,destinationChainId:e,amount:String(n)},o),l=g?.totalRelayFee?.total,E=null;if(l!=null)try{let C=BigInt(String(n))-BigInt(String(l));C>0n&&(E=C.toString())}catch{}let B=await c("across");return{amountOut:E,gasUsd:null,liquidityUsd:B?.liquidityUsd??null,meta:{derivedFromFees:!0,durationSeconds:KA(g?.estimatedFillTimeSec),limits:g?.limits?{min:g.limits.minDeposit,max:g.limits.maxDeposit}:void 0,liquidityProtocol:B?.protocol}}}}),i}bo();var CM={1:"ethereum",10:"optimism",56:"bsc",137:"polygon",8453:"base",42161:"arbitrum",43114:"avax"};async function hM(A,e,t){let r=CM[Number(A)];if(!r)return{priceUsd:null,decimals:null};let n=`${r}:${e}`;try{let o=(await Qg([n],t))?.coins?.[n],i=Number(o?.price),a=Number(o?.decimals);return{priceUsd:Number.isFinite(i)?i:null,decimals:Number.isFinite(a)?a:null}}catch{return{priceUsd:null,decimals:null}}}async function Md(A,e={}){let{fromChainId:t,toChainId:r,tokenIn:n,tokenOut:s,amountIn:o}=A;if(t==null||r==null||!n||!s||o==null)throw new Error("bestBridgeRoute requires fromChainId, toChainId, tokenIn, tokenOut, amountIn");if(Number(t)===Number(r))throw new Error("bestBridgeRoute is for cross-chain; use bestSwapRoute for same-chain");let i=hM(r,s,e),a=Ud({...A,opts:e}),[c,u]=await Promise.all([pg(a,{timeoutMs:e.timeoutMs??15e3}),i]),g=fg(c,{destPriceUsd:u.priceUsd,destDecimals:A.decimalsOut??u.decimals,liquidityBandBps:e.liquidityBandBps??50}),l=g.routes.map(E=>({source:E.source,seconds:E.meta?.durationSeconds??null})).filter(E=>E.seconds!=null);return{kind:"bridge",fromChainId:t,toChainId:r,tokenIn:n,tokenOut:s,amountIn:String(o),...g,durations:l,sourcesTried:a.length,sourcesAnswered:c.filter(E=>E.quality!==FA.FAILED).length,note:fM(g,a.length)}}function dM(A){let e=A?.meta?.oracleFee;return e?.applies?` \xB7 ${Id(e)}`:""}function fM(A,e){if(!A.best)return"no source returned a usable route";let t=A.routes.length,r=dM(A.best);if(t===1)return`only 1 of ${e} sources answered, so this is the ONLY route, not a proven best one. Treat it as unbenchmarked.`+r;if(A.improvementBps!=null){let n=A.improvementBps,s=n/100;if(n<.01)return`best of ${t} routes, ranked on ${A.rankedOn}: effectively tied with the runner-up (${A.spreadBasis}), inside quote noise. Re-quote before you size up.`+r;let o=s>=.01?`${s.toFixed(2)}%`:`${n.toFixed(2)}bps`;return`best of ${t} routes, ranked on ${A.rankedOn}: ${o} better than the runner-up (${A.spreadBasis})`+r}return`best of ${t} routes, ranked on ${A.rankedOn}. No spread quoted: the top routes report cost differently, so the margin is not comparable.`+r}lA();var pM=/^0x[0-9a-fA-F]{40}$/,wM=new Set(["0x0000000000000000000000000000000000000000","0x000000000000000000000000000000000000dead","0x0000000000000000000000000000000000000001","0x00000000000000000000000000000000000a1ce5"].map(A=>A.toLowerCase())),mM=100,So={relay:async({fromChainId:A,toChainId:e,tokenIn:t,tokenOut:r,amountIn:n,taker:s},o)=>{let{relayPrepare:i}=await Promise.resolve().then(()=>(Fo(),Ro)),a=await i({user:s,originChainId:A,destinationChainId:e,originCurrency:t,destinationCurrency:r,amount:String(n)},o);return{transactions:a.transactions||[],amountOut:a.quote?.details?.currencyOut?.amount??null,minOut:a.quote?.details?.currencyOut?.minimumAmount??null,durationSeconds:a.quote?.details?.timeEstimate??null}},lifi:async({fromChainId:A,toChainId:e,tokenIn:t,tokenOut:r,amountIn:n,taker:s,isHolder:o},i)=>{let{lifiPrepare:a}=await Promise.resolve().then(()=>(Eg(),fd)),c=await a({fromChain:A,toChain:e,fromToken:t,toToken:r,fromAmount:n,fromAddress:s,isHolder:o,feeAction:"bridge"},i);return{transactions:c.transaction?[c.transaction]:[],requiresApproval:c.requiresApproval??null,amountOut:c.quote?.estimate?.toAmount??null,minOut:c.quote?.estimate?.toAmountMin??null,durationSeconds:c.quote?.estimate?.executionDuration??null}}};function cY(){return Object.keys(So)}async function gY(A,e={}){let{taker:t,fromChainId:r,toChainId:n}=A;if(!t)throw new Error("prepareBestBridgeRoute requires taker: bridge transactions are built FOR an address, and the quote-only placeholder must never end up in one");if(!pM.test(t))throw new Error(`taker must be a valid 20-byte address, got "${t}"`);if(wM.has(t.toLowerCase()))throw new Error(`taker "${t}" is a placeholder/burn address. Bridging to it would send funds to an address nobody controls, on a chain where you cannot undo it.`);let s=await Md(A,e);if(!s.best)return{ok:!1,reason:"no source returned a usable bridge route",comparison:s};let o=A.source||s.best.source,i=s.routes.find(I=>I.source===o);if(!i)return{ok:!1,reason:`source "${o}" returned no usable route`,comparison:s};let a=So[o];if(!a){let I=s.routes.find(Q=>So[Q.source]&&Q.source!==o);return{ok:!1,reason:`${o} won the comparison but has no bridge prepare path in this build. `+(I?`Next preparable route is ${I.source}; pass source:"${I.source}".`:"No route in this comparison can be prepared."),failureKind:"no-prepare-path",...I?{alternative:I.source}:{},winner:o,comparison:s}}let c;try{c=await a(A,e)}catch(I){let Q=typeof I?.body=="string"?I.body:I?.body?JSON.stringify(I.body):"",h=[String(I?.message||I),Q].filter(Boolean).join(" :: "),y=/allowance/i.test(h),m=!y&&/not enough|insufficient|balance/i.test(h),x=s.routes.find(_=>So[_.source]&&_.source!==o);return{ok:!1,reason:y?`${o} will not build calldata until the token approval exists on-chain. Approve first, then prepare again. Underlying: ${h}`:m?`${o} refused to build: ${h}. Quoting works for any address; preparing needs the real funded wallet on chain ${r}.`:`${o} bridge prepare failed: ${h}`,failureKind:y?"approval-required-first":m?"taker-not-funded":"provider-error",...x?{alternative:x.source}:{},comparison:s}}let u=c.transactions||[];if(!u.length)return{ok:!1,reason:`${o} returned no executable transaction for this route`,failureKind:"provider-error",comparison:s};let g=u.filter(I=>I.chainId!=null&&Number(I.chainId)!==Number(r));if(g.length)return{ok:!1,reason:`${o} returned a transaction for chain ${g[0].chainId} but the origin chain is ${r}. Refusing to hand over a mismatched artifact.`,failureKind:"chain-mismatch",comparison:s};let l=A.driftToleranceBps??mM,E=null,B=null;if(c.amountOut!=null&&i.grossOut!=null)try{let I=BigInt(i.grossOut),Q=BigInt(c.amountOut);I>0n&&(E=Number((Q-I)*10000n/I),E<-l&&(B=`route moved ${(E/100).toFixed(2)}% against you since the comparison (tolerance ${(l/100).toFixed(2)}%). Re-compare before signing.`))}catch{}let C=[...B?[B]:[],...s.warnings||[],`Bridging is NOT atomic: the origin transaction succeeding does not mean funds arrived on chain ${n}. Expect ~${c.durationSeconds!=null?`${c.durationSeconds}s`:"minutes"} before the destination credits, and do not re-send if it is pending.`];return u.length>1&&C.push(`This route needs ${u.length} transactions signed IN ORDER. Signing only the first leaves funds approved but not bridged.`),Ve({ok:!0,chosen:{source:o,wasWinner:o===s.best.source,netOut:i.netOut,grossOut:i.grossOut,gasUsd:i.gasUsd},artifactKind:"unsigned-transaction-sequence",fromChainId:Number(r),toChainId:Number(n),transactionCount:u.length,transactions:u,requiresApproval:c.requiresApproval??null,minOut:c.minOut??null,durationSeconds:c.durationSeconds??null,destination:u[0]?.to??null,unsigned:!0,signedBy:"user-wallet",driftBps:E,warnings:C,runnersUp:s.routes.filter(I=>I.source!==o).map(I=>({source:I.source,netOut:I.netOut,gasUsd:I.gasUsd})),comparison:{rankedOn:s.rankedOn,sourcesAnswered:s.sourcesAnswered,sourcesTried:s.sourcesTried,improvementBps:s.improvementBps},note:`UNSIGNED. ${u.length} transaction(s) on chain ${r}, crediting chain ${n}. Verify every destination address before signing.`},{provider:"router",kind:"best-bridge"})}export{gY as prepareBestBridgeRoute,cY as supportedBridgePreparers};
|
|
46
|
+
`),i=XN("sha256").update(o).digest("hex").slice(0,32);return`${A} ${e} ${i}`}function oU(A,e){let t=Number(e);return Number.isFinite(t)&&t>0?Math.min(t*1e3,jh):Math.min(250*2**A,jh)+Math.floor(Math.random()*100)}async function aU(A,{fetchImpl:e,method:t,headers:r,body:n,timeoutMs:s,lookupFn:o,realFetch:i}){let a=new AbortController,c=setTimeout(()=>a.abort(),s),u=null,g=e;try{let l=String(A),E={...r||{}};for(let B=0;B<=ed;B+=1){let C=await g(l,{method:t,headers:E,body:n,signal:a.signal,redirect:"manual"}),I=await C.text(),Q=null;if(I)try{Q=JSON.parse(I)}catch{Q=null}if(eU.has(C.status)){if(t!=="GET"&&t!=="HEAD"){let m=new Error(`HTTP ${C.status} ${t} ${l} redirected non-idempotent request`);throw m.status=C.status,m.body=Q??I.slice(0,300),m}if(B===ed)throw new Error(`HTTP redirect loop for ${A}`);let h=rU(C.headers?.get?.("location"),l);if(!nU(h,l)){let m=await zh(h,o?{lookupFn:o}:{});if(!m.ok){let x=new Error(`HTTP redirect from ${l} ${m.error}`);throw x.status=C.status,x}E=tU(E),i&&m.addresses?.length&&(u||(u=await Kh()),u&&(u.pin(new URL(h).hostname,m.addresses[0].address,m.addresses[0].family),g=u.fetch))}l=h;continue}if(!C.ok){let h=new Error(`HTTP ${C.status} ${t} ${l}`);throw h.status=C.status,h.retryAfter=C.headers?.get?.("retry-after")??null,h.body=Q??I.slice(0,300),h}return Q??I}throw new Error(`HTTP redirect loop for ${A}`)}finally{clearTimeout(c),u&&await u.close()}}async function ue(A,e={}){let t=e.fetchImpl||globalThis.fetch;if(typeof t!="function")throw new Error("fetch unavailable \u2014 pass opts.fetchImpl");let r=e.timeoutMs??12e3,n=(e.method||"GET").toUpperCase(),s={Accept:"application/json",...e.headers||{}},o=e.body;o!=null&&typeof o!="string"&&(s["Content-Type"]=s["Content-Type"]||"application/json",o=JSON.stringify(o));let i=Number.isInteger(e.retries)?Math.max(e.retries,0):jN,a=e.lookupFn,c=!e.fetchImpl,u=async()=>{let C;for(let I=0;I<=i;I++)try{return await aU(A,{fetchImpl:t,method:n,headers:s,body:o,timeoutMs:r,lookupFn:a,realFetch:c})}catch(Q){C=Q;let h=Q?.status,y=Q?.name==="AbortError",m=new Set([408,425,429]),x=h!=null?m.has(h)||$N.has(h)&&$h.has(n):!y&&$h.has(n);if(I===i||!x)throw Q;await iU(oU(I,Q?.retryAfter))}throw C};if(!(e.dedupe!==!1&&n==="GET"&&o==null))return u();let l=sU(n,A,s),E=sg.get(l);if(E)return E;let B=u().finally(()=>sg.delete(l));return sg.set(l,B),B}var $N,$h,jN,jh,Ad,eU,ed,sg,iU,uA=qe(()=>{Xh();$N=new Set([408,425,429,500,502,503,504]),$h=new Set(["GET","HEAD","OPTIONS","PUT","DELETE"]),jN=2,jh=4e3,Ad=["authorization","x-api-key","x-tensor-api-key","0x-api-key","api-key","cookie","proxy-authorization"],eU=new Set([301,302,303,307,308]),ed=3;sg=new Map;iU=A=>new Promise(e=>setTimeout(e,A))});import{readFileSync as cU}from"node:fs";import{homedir as gU}from"node:os";import{join as wo}from"node:path";function uU(){if(process.env.ORACLE_TEST_ISOLATE_SECRETS==="1"){let t=(process.env.ORACLE_EXEC_ENV_FILE||"").trim();return t?[t]:[]}let A=(process.env.ORACLE_EXEC_ENV_FILE||process.env.MAD_EXEC_ENV_FILE||"").trim(),e=gU();if(process.env.ORACLE_PUBLIC_DESKTOP==="1"){let t=(process.env.ORACLE_CONFIG_DIR||wo(e,".config","oracle")).trim();return[A,wo(t,"exec.env")].filter(Boolean)}return[A,wo(e,".config","oracle","exec.env"),wo(e,".config","mad-desk","exec.env")].filter(Boolean)}function td(A,e,t){let r=A??process.env[e]??process.env[t];if(!String(r||"").trim())for(let n of uU())try{let s=cU(n,"utf8"),o=s.match(new RegExp(`^${e}=(.*)$`,"m"))||s.match(new RegExp(`^${t}=(.*)$`,"m"));if(o&&(r=o[1].trim(),r))break}catch{}if(!String(r||"").trim())throw new Error(`${e} required for attestation. Set it in the environment, or place ${e}=<value> in ~/.config/oracle/exec.env`);return r}var rd=qe(()=>{});var nd=qe(()=>{});import{createHash as lU,createHmac as od,timingSafeEqual as EU}from"node:crypto";function yo(A){return Array.isArray(A)?`[${A.map(yo).join(",")}]`:A&&typeof A=="object"?`{${Object.keys(A).sort().map(e=>`${JSON.stringify(e)}:${yo(A[e])}`).join(",")}}`:JSON.stringify(A??null)}function id(A,{required:e=!1}={}){try{return td(A,"ORACLE_ROUTE_ATTESTATION_SECRET","MAD_ROUTE_ATTESTATION_SECRET")}catch(t){if(e)throw t;return null}}function ig(A){let{signature:e,...t}=A;return t}function ad(A,{secret:e}={}){let t=id(e);return t?{...A,signature:od("sha256",t).update(yo(ig(A))).digest("hex")}:A}function QU(A){let e=String(A||"").toLowerCase();if(!/^0x[0-9a-f]+$/.test(e)||e.length<10||e.length%2!==0)throw new Error("auto-slippage calldata must be even-length hex with a selector");return lU("sha256").update(Buffer.from(e.slice(2),"hex")).digest("hex")}function _A(A,{chainId:e,venue:t,data:r,secret:n}={}){if(!A||A.mode!=="auto")throw new Error("bounded auto-slippage guard required");if(Number(A.chainId)!==Number(e))throw new Error("auto-slippage guard chain mismatch");if(String(A.venue).toLowerCase()!==String(t||"").toLowerCase())throw new Error("auto-slippage guard venue mismatch");let s=id(n);if(s){let E=od("sha256",s).update(yo(ig(A))).digest("hex");if(!BU(A.signature,E))throw new Error("auto-slippage guard signature mismatch \u2014 refusing to bind a guard this Oracle did not issue")}let o=Number(A.selectedBps),i=Number(A.capBps);if(!Number.isInteger(o)||o<0||o>mo||!Number.isInteger(i)||i<0||i>mo||o>i)throw new Error("auto-slippage guard bounds are invalid");let a=BigInt(A.quoteAmountOut??0),c=BigInt(A.minAmountOut??0);if(a<=0n||c<=0n)throw new Error("auto-slippage guard amounts must be positive");let u=a*BigInt(1e4-o),g=u/10000n;if(u%10000n!==0n&&(g+=1n),c<g)throw new Error("auto-slippage guard is under-protected relative to its quote");let l=hU(r);if(l!=null&&l!==c)throw new Error(`auto-slippage: calldata encodes floor ${l}, not the guard floor ${c} \u2014 refusing to bind`);return ad({...ig(A),calldataHash:QU(r)},{secret:n})}function BU(A,e){let t=Buffer.from(String(A??""),"utf8"),r=Buffer.from(String(e??""),"utf8");return t.length!==r.length||t.length===0?!1:EU(t,r)}function og(A,e=0){let t=Number(A);return Number.isFinite(t)?t:e}function IU(A){let e=A==null?mo:Number(A);if(!Number.isInteger(e)||e<0)throw new Error("auto-slippage cap must be a non-negative integer bps value");return Math.min(e,mo)}function ZA({liquidityUsd:A,priceChange5m:e=0,quoteAgeMs:t=0,crossChain:r=!1,requestedCapBps:n}={}){let s=og(A,0),o=s>0?s>=25e4?5:s>=1e5?10:s>=5e4?20:s>=1e4?40:70:r?30:10,i=Math.min(60,Math.abs(og(e,0))*2),a=Math.min(40,Math.floor(Math.max(0,og(t,0))/5e3)*5),c=Math.max(25,Math.ceil(20+o+i+a)),u=IU(n);return{mode:"auto",requiredBps:c,selectedBps:Math.min(c,u),capBps:u,executable:c<=u}}function CU({chainId:A,venue:e,quoteAmountOut:t,liquidityUsd:r,priceChange5m:n=0,quoteAgeMs:s=0,crossChain:o=!1,requestedCapBps:i,quotedAtMs:a=Date.now(),ttlMs:c=sd,secret:u}={}){let g=BigInt(t??0);if(g<=0n)throw new Error("auto-slippage guard requires positive quoteAmountOut");let l=ZA({liquidityUsd:r,priceChange5m:n,quoteAgeMs:s,crossChain:o,requestedCapBps:i});if(!l.executable)throw new Error(`auto-slippage requires ${l.requiredBps} bps above hard/requested cap ${l.capBps}; route blocked`);let E=Number(a);if(!Number.isFinite(E))throw new Error("auto-slippage: quotedAtMs must be a finite number");let B=Math.min(3e4,Math.max(1e3,Number(c)||sd)),C=g*BigInt(1e4-l.selectedBps),I=C/10000n;if(C%10000n!==0n&&(I+=1n),I>g&&(I=g),g>0n&&I<=0n)throw new Error(`auto-slippage: quote ${g} is too small to express a ${l.selectedBps} bps floor without rounding to zero`);let Q=Number((g-I)*10000n/(g===0n?1n:g));if(Q>l.capBps)throw new Error(`auto-slippage: realised floor implies ${Q} bps, above cap ${l.capBps} \u2014 refusing to issue a guard weaker than advertised`);return ad({mode:"auto",chainId:Number(A),venue:String(e||"unknown"),quoteAmountOut:g.toString(),minAmountOut:I.toString(),requiredBps:l.requiredBps,selectedBps:l.selectedBps,capBps:l.capBps,quotedAtMs:E,expiresAtMs:E+B},{secret:u})}function hU(A){let e=String(A||"");if(!/^0x[0-9a-fA-F]+$/.test(e)||e.length<10||e.length%2!==0)return null;let t=e.slice(0,10).toLowerCase(),r=[];for(let s=10;s+64<=e.length;s+=64)r.push(e.slice(s,s+64));let n=s=>r[s]==null?null:BigInt("0x"+r[s]);switch(t){case"0x414bf389":return n(6);case"0x04e45aaf":return n(5);case"0xc04b8d59":{let s=n(0);if(s==null)return null;let o=Number(s)/32;return!Number.isInteger(o)||o<0?null:n(o+4)}case"0xb858183f":{let s=n(0);if(s==null)return null;let o=Number(s)/32;return!Number.isInteger(o)||o<0?null:n(o+3)}case"0xa026383e":return n(6);case"0x38ed1739":case"0x5c11d795":return n(1);case"0x7ff36ab5":case"0xb6f9de95":return n(0);case"0x18cbafe5":case"0x791ac947":return n(1);default:return null}}function eA(A,{chainId:e,venue:t,amountOut:r,liquidityUsd:n,priceChange5m:s,crossChain:o,requestedCapBps:i,quotedAtMs:a=Date.now(),ttlMs:c}={}){let u=CU({chainId:e,venue:t,quoteAmountOut:r,liquidityUsd:n,priceChange5m:s,crossChain:o,requestedCapBps:i,quotedAtMs:a,ttlMs:c});return{...A,autoSlippage:u,amountOutMinimum:u.minAmountOut}}var mo,sd,RA=qe(()=>{rd();nd();mo=100,sd=2e4});var mr,Do=qe(()=>{mr="0x000000000000000000000000000000000000dEaD"});import{createHash as dU,createHmac as fU,timingSafeEqual as OT}from"node:crypto";function ag(A){return A===null||typeof A!="object"?JSON.stringify(A):Array.isArray(A)?`[${A.map(ag).join(",")}]`:`{${Object.keys(A).sort().map(t=>`${JSON.stringify(t)}:${ag(A[t])}`).join(",")}}`}function cd(A){let e=String(A?.ORACLE_STAMP_HMAC_SECRET||"").trim();return e.length>=16?e:""}function gd(A=process.env){return cd(process.env)||cd(A)}function mU(A){let{prepareHash:e,prepareMac:t,note:r,...n}=A||{};return n}function yU(A){let e=mU(A);return dU("sha256").update(ag(e)).digest("hex")}function DU(A,e=gd()){return e?fU("sha256",e).update(String(A)).digest("hex"):""}function Ve(A,{provider:e,kind:t,env:r=process.env}={}){if(!A||typeof A!="object")throw new Error("stampPrepared: payload object required");let n=Object.prototype.hasOwnProperty.call(A,"oraclePrepared");if(n&&typeof A.oraclePrepared!="boolean")throw new Error("stampPrepared: oraclePrepared must be boolean");let s={...A,provider:A.provider||e,kind:A.kind||t,requiresUserSignature:A.requiresUserSignature!==!1,signingReady:!1,broadcastReady:!1,executionReady:!1,oraclePrepared:n?A.oraclePrepared:!0};if(!s.provider)throw new Error("stampPrepared: provider required");if(!s.kind)throw new Error("stampPrepared: kind required");let o=Date.now(),i=o+wU,c={...s,preparedAt:o,expiresAt:i,prepareVersion:pU},u=yU(c),g=gd(r),l=g?DU(u,g):void 0,E={...c,prepareHash:u};return l&&(E.prepareMac=l),E}var pU,wU,WT,lA=qe(()=>{pU=2,wU=300*1e3,WT=(()=>{let A=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(A)&&A>0?A:1800*1e3})()});import{Contract as bU,JsonRpcProvider as kU}from"ethers";function MU(A){return UU.test(String(A||""))}async function ud(A,{contract:e=RU,rpc:t=SU,chainId:r=FU,balanceOf:n}={}){if(!MU(A))throw new Error("invalid-address");if(n)return BigInt(await n(A));let s=new kU(t,r,{staticNetwork:!0}),o=new bU(e,NU,s);return BigInt(await o.balanceOf(A))}var RU,FU,SU,NU,UU,ld=qe(()=>{RU="0x62FCFAf7573AD8B41a0FBF347AfEb85e06599A75",FU=999,SU="https://rpc.hyperliquid.xyz/evm",NU=["function balanceOf(address owner) view returns (uint256)"],UU=/^0x[a-fA-F0-9]{40}$/});import{existsSync as LU,readFileSync as TU,lstatSync as xU}from"node:fs";import{homedir as Ed}from"node:os";import{join as cg}from"node:path";function JU(A){let e=String(A||"swap").toLowerCase();return Object.prototype.hasOwnProperty.call(Qd,e)?Qd[e]:GU}function OU(A=process.env){if(process.env.ORACLE_TEST_ISOLATE_SECRETS==="1"){if(A[Bd])return String(A[Bd]);let e=A.ORACLE_CONFIG_DIR||cg(Ed(),".config","oracle");return cg(e,"fee-recipient")}return cg(Ed(),".config","oracle","fee-recipient")}function WU(A=process.env){try{let e=OU(A);if(!LU(e)||xU(e).isSymbolicLink())return"";let t=TU(e,"utf8").trim().toLowerCase();return/^0x[a-f0-9]{40}$/.test(t)?t:""}catch{return""}}function PU(A,{fallback:e=0}={}){if(A==null)return e;if(String(A).trim()==="")return 0;let t=Number(A);return!Number.isFinite(t)||t<=0?0:Math.min(Math.floor(t),YU)}function _U({env:A=process.env,action:e="swap",admin:t=!1}={}){let r=String(A[HU]||"").trim(),n=String(A[VU]||qU).trim();if(t===!0)return{bps:0,recipient:"",integrator:n,action:e,applies:!1,reason:"admin-oracle"};let s=JU(e),o=PU(A[vU],{fallback:r?s:0}),i=Math.min(o,s);if(!i)return{bps:0,recipient:"",integrator:n,action:e,applies:!1,reason:"not-configured"};if(!/^0x[a-fA-F0-9]{40}$/.test(r))return{bps:0,recipient:"",integrator:n,action:e,applies:!1,reason:"no-recipient"};let a=WU(A);return!a||a!==r.toLowerCase()?{bps:0,recipient:"",integrator:n,action:e,applies:!1,reason:"recipient-not-pinned"}:{bps:i,recipient:r,integrator:n,action:e,applies:!0,reason:"configured"}}async function gg({wallet:A,env:e=process.env,action:t="swap",holderCheck:r={},admin:n=!1}={}){let s=_U({env:e,action:t,admin:n});if(n===!0)return{...s,holderVerificationStatus:"admin-oracle"};let o=String(A||"").trim().toLowerCase();if(!/^0x[a-f0-9]{40}$/.test(o))return{...s,holderVerificationStatus:"wallet-required"};try{return BigInt(await ud(o,r))>0n?{...s,bps:0,applies:!1,reason:"locals-only-holder",holderVerificationStatus:"holder"}:{...s,holderVerificationStatus:"non-holder"}}catch{return{...s,holderVerificationStatus:"unavailable"}}}function Id(A){return A?.applies?`Oracle routing fee ${A.bps} bps (${(A.bps/100).toFixed(2)}%) to ${A.recipient}.`:A?.reason==="admin-oracle"?"No Oracle fee (admin Oracle).":A?.reason==="locals-only-holder"?"No Oracle fee (Locals Only holder).":"No Oracle fee."}function Cd(A){return A?.applies?{integrator:A.integrator,fee:String(A.bps/1e4)}:{}}var YU,GU,Qd,vU,HU,VU,Bd,qU,bo=qe(()=>{ld();YU=100,GU=5,Qd=Object.freeze({swap:5,bridge:5,perps:0,nft:0});vU="ORACLE_INTEGRATOR_FEE_BPS",HU="ORACLE_INTEGRATOR_FEE_RECIPIENT",VU="ORACLE_INTEGRATOR_ID",Bd="ORACLE_INTEGRATOR_FEE_RECIPIENT_PIN",qU="oracle"});var fd={};Cg(fd,{LIFI_API:()=>dd,lifiChains:()=>$U,lifiHealth:()=>KU,lifiPrepare:()=>XU,lifiQuote:()=>ko});function lg(A={}){return(A.baseUrl||process.env.LIFI_API_URL||dd).replace(/\/$/,"")}function zU(A){let e=String(A||ug).toLowerCase();return e===ug.toLowerCase()||e===ZU}function hd(A,e){let t=String(A||"").trim();if(!/^0x[0-9a-fA-F]{40}$/.test(t))throw new Error(`lifi: ${e} must be a 20-byte address`);return t.toLowerCase()}async function KU(A={}){let e=await ue(`${lg(A)}/chains`,{fetchImpl:A.fetchImpl,timeoutMs:A.timeoutMs??12e3}),t=Array.isArray(e)?e.length:e?.chains?.length||0;return{ok:t>0,chainCount:t}}async function ko(A={},e={}){let{fromChain:t,toChain:r=t,fromToken:n=ug,toToken:s,fromAmount:o,fromAddress:i=mr}=A;if(t==null||!s||!o)throw new Error("lifiQuote requires fromChain, toToken, fromAmount");let a=new URLSearchParams({fromChain:String(t),toChain:String(r),fromToken:n,toToken:s,fromAmount:String(o),fromAddress:i}),c=ZA({liquidityUsd:A.liquidityUsd,priceChange5m:A.priceChange5m,crossChain:Number(r)!==Number(t),requestedCapBps:A.maxSlippageBps??A.slippageBps});if(!c.executable)throw new Error(`lifi: route requires ${c.requiredBps} bps above cap ${c.capBps}`);a.set("slippage",String(c.selectedBps/1e4));let u=await gg({wallet:A.fromAddress,env:e.env,action:A.feeAction||"swap",holderCheck:e.holderCheck});for(let[I,Q]of Object.entries(Cd(u)))a.set(I,Q);let g=await ue(`${lg(e)}/quote?${a}`,{fetchImpl:e.fetchImpl,timeoutMs:e.timeoutMs??2e4}),l=g?.estimate?.toAmount||g?.toAmount;if(!l)return{...g,autoSlippagePolicy:c,oracleFee:u};let E=g?.transactionRequest?.to||g?.estimate?.approvalAddress||"lifi",B=eA(g,{chainId:Number(t),venue:E,amountOut:l,liquidityUsd:A.liquidityUsd,priceChange5m:A.priceChange5m,crossChain:Number(r)!==Number(t),requestedCapBps:A.maxSlippageBps??A.slippageBps}),C=g?.estimate?.toAmountMin||g?.toAmountMin;if(C!=null&&BigInt(C)<BigInt(B.amountOutMinimum))throw new Error("lifi: provider transaction is under-protected versus bounded auto-slippage floor");return{...B,oracleFee:u}}async function XU(A={},e={}){let t=await ko(A,e),r=t?.transactionRequest;if(!r?.to||!r?.data)throw new Error("lifi: quote did not return an executable transactionRequest");let n=Number(A.fromChain);if(r.chainId!=null&&Number(r.chainId)!==n)throw new Error("lifi: transaction chain mismatch");if(A.fromAddress&&r.from&&String(r.from).toLowerCase()!==String(A.fromAddress).toLowerCase())throw new Error("lifi: transaction sender mismatch");let s=null;if(!zU(A.fromToken)){let o=t?.estimate?.approvalAddress||t?.approvalAddress;if(!o)throw new Error("lifi: ERC20 route missing approvalAddress");let i=t?.action?.fromToken?.address||t?.estimate?.fromToken?.address||A.fromToken;s={token:hd(i,"approval token"),spender:hd(o,"approval spender"),amount:String(A.fromAmount)}}return Ve({provider:"lifi",calldataReady:!0,requiresUserSignature:!0,signingReady:!1,broadcastReady:!1,chainId:n,quote:t,autoSlippage:t.autoSlippage,requiresApproval:s,transaction:{chainId:n,from:r.from||A.fromAddress,to:r.to,data:r.data,value:r.value??"0x0",...r.gasLimit!=null?{gasLimit:r.gasLimit}:{},slippageGuard:_A(t.autoSlippage,{chainId:n,venue:r.to,data:r.data})}},{provider:"lifi",kind:"lifi-tx"})}async function $U(A={}){return ue(`${lg(A)}/chains`,{fetchImpl:A.fetchImpl,timeoutMs:A.timeoutMs??12e3})}var dd,ug,ZU,Eg=qe(()=>{uA();RA();Do();lA();bo();dd="https://li.quest/v1";ug="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",ZU="0x0000000000000000000000000000000000000000"});var Ro={};Cg(Ro,{ACROSS_API:()=>Dd,HOP_API:()=>bd,RELAY_API:()=>kd,acrossHealth:()=>gM,acrossSuggestedFees:()=>Rd,hopHealth:()=>uM,hopQuote:()=>Fd,relayHealth:()=>lM,relayPrepare:()=>EM,relayQuote:()=>Bg});async function gM(A={}){try{return{ok:!0,estimatedFillTimeSec:(await Rd({token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",destinationToken:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",originChainId:1,destinationChainId:42161,amount:"1000000000000000"},A)).estimatedFillTimeSec}}catch(e){return{ok:!1,error:String(e.message||e).slice(0,160)}}}async function Rd(A={},e={}){let{token:t,destinationToken:r=t,originChainId:n,destinationChainId:s,amount:o}=A;if(!t||n==null||s==null||!o)throw new Error("acrossSuggestedFees requires token, originChainId, destinationChainId, amount");let i=new URLSearchParams({token:t,destinationToken:r,originChainId:String(n),destinationChainId:String(s),amount:String(o)}),a=(e.baseUrl||process.env.ACROSS_API_URL||Dd).replace(/\/$/,"");return ue(`${a}/suggested-fees?${i}`,{fetchImpl:e.fetchImpl,timeoutMs:e.timeoutMs??15e3})}async function uM(A={}){try{let e=await Fd({amount:"1000000000000000",token:"ETH",fromChain:"ethereum",toChain:"arbitrum",slippage:.5},A);return{ok:!0,estimatedRecieved:e.estimatedRecieved||e.estimatedReceived}}catch(e){return{ok:!1,error:String(e.message||e).slice(0,160)}}}async function Fd(A={},e={}){let{amount:t,token:r="ETH",fromChain:n="ethereum",toChain:s="arbitrum"}=A;if(!t)throw new Error("hopQuote requires amount");let o=A.slippage==null?void 0:Math.round(Number(A.slippage)*100),i=ZA({liquidityUsd:A.liquidityUsd,priceChange5m:A.priceChange5m,crossChain:n!==s,requestedCapBps:A.maxSlippageBps??A.slippageBps??o});if(!i.executable)throw new Error(`hop: route requires ${i.requiredBps} bps above cap ${i.capBps}`);let a=new URLSearchParams({amount:String(t),token:r,fromChain:n,toChain:s,slippage:String(i.selectedBps/100)}),c=(e.baseUrl||process.env.HOP_API_URL||bd).replace(/\/$/,""),u=await ue(`${c}/quote?${a}`,{fetchImpl:e.fetchImpl,timeoutMs:e.timeoutMs??15e3}),g=u?.estimatedRecieved||u?.estimatedReceived;return g?eA(u,{chainId:Number(A.originChainId||A.chainId||cM[n]||0),venue:u?.tx?.to||"hop",amountOut:g,liquidityUsd:A.liquidityUsd,priceChange5m:A.priceChange5m,crossChain:n!==s,requestedCapBps:A.maxSlippageBps??A.slippageBps??o}):{...u,autoSlippagePolicy:i}}async function lM(A={}){try{let e=await Bg({user:mr,originChainId:1,destinationChainId:8453,originCurrency:"0x0000000000000000000000000000000000000000",destinationCurrency:"0x0000000000000000000000000000000000000000",amount:"1000000000000000",tradeType:"EXACT_INPUT"},A);return{ok:!0,hasSteps:Array.isArray(e.steps),stepCount:e.steps?.length||0}}catch(e){return{ok:!1,error:String(e.message||e).slice(0,160)}}}async function Bg(A={},e={}){let{user:t=mr,originChainId:r,destinationChainId:n,originCurrency:s="0x0000000000000000000000000000000000000000",destinationCurrency:o="0x0000000000000000000000000000000000000000",amount:i,tradeType:a="EXACT_INPUT"}=A;if(r==null||n==null||!i)throw new Error("relayQuote requires originChainId, destinationChainId, amount");let c=ZA({liquidityUsd:A.liquidityUsd,priceChange5m:A.priceChange5m,crossChain:Number(r)!==Number(n),requestedCapBps:A.maxSlippageBps??A.slippageBps});if(!c.executable)throw new Error(`relay: route requires ${c.requiredBps} bps above cap ${c.capBps}`);let u=(e.baseUrl||process.env.RELAY_API_URL||kd).replace(/\/$/,""),g=await ue(`${u}/quote`,{method:"POST",body:{user:t,originChainId:Number(r),destinationChainId:Number(n),originCurrency:s,destinationCurrency:o,amount:String(i),tradeType:a,slippageTolerance:String(c.selectedBps)},fetchImpl:e.fetchImpl,timeoutMs:e.timeoutMs??2e4}),l=g?.details?.currencyOut?.amount;return!l||!/^\d+$/.test(String(l))?{...g,autoSlippagePolicy:c}:eA(g,{chainId:Number(r),venue:g?.steps?.[0]?.items?.[0]?.data?.to||"relay",amountOut:l,liquidityUsd:A.liquidityUsd,priceChange5m:A.priceChange5m,crossChain:Number(r)!==Number(n),requestedCapBps:A.maxSlippageBps??A.slippageBps})}async function EM(A={},e={}){let t=await Bg(A,e),r=Number(A.originChainId),n=(t.steps||[]).flatMap(i=>(i.items||[]).filter(a=>a?.data?.to&&a?.data?.data).map(a=>({stepId:i.id,...a.data})));if(!n.length)throw new Error("relay: quote returned no executable transaction items");let s=String(t?.autoSlippage?.venue||"").toLowerCase();if(n.some(i=>String(i.to).toLowerCase()!==s))throw new Error("relay: route includes a separate approval/transaction that is not yet safely bound");let o=n.map(i=>({chainId:r,from:i.from||A.user,to:i.to,data:i.data,value:i.value??"0x0",...i.gasLimit!=null||i.gas!=null?{gasLimit:i.gasLimit??i.gas}:{},slippageGuard:_A(t.autoSlippage,{chainId:r,venue:i.to,data:i.data})}));return Ve({provider:"relay",calldataReady:!0,requiresUserSignature:!0,signingReady:!1,broadcastReady:!1,chainId:r,quote:t,autoSlippage:t.autoSlippage,transactions:o},{provider:"relay",kind:"relay-tx"})}var Dd,bd,kd,cM,Fo=qe(()=>{uA();RA();Do();lA();Dd="https://across.to/api",bd="https://api.hop.exchange/v1",kd="https://api.relay.link",cM={ethereum:1,optimism:10,bsc:56,polygon:137,arbitrum:42161,avalanche:43114,base:8453}});var DM=Object.freeze(["blockNumber","nativeBalance","tokenBalance","resolveToken","resolvePools","scanBlocks","scoreRisk","quote","sellSimulation","prepareUnsignedTx"]),bM=Object.freeze({LIVE:"LIVE",CACHED:"CACHED",STALE:"STALE",UNKNOWN:"UNKNOWN",UNAVAILABLE:"UNAVAILABLE"}),kM=Object.freeze({PASS:"PASS",CAUTION:"CAUTION",FAIL:"FAIL",UNKNOWN:"UNKNOWN"});var FA=Object.freeze({FULL:"FULL",NO_GAS:"NO_GAS",FAILED:"FAILED"});var hg=A=>{try{return A==null||A===""?null:BigInt(String(A).split(".")[0])}catch{return null}};function dg(A){let{source:e,amountOut:t,minOut:r=null,gasUsd:n=null,feeUsd:s=null,oracleFeeBps:o=0,estimatedGas:i=null,liquidityUsd:a=null,error:c=null,executionReady:u=!1,meta:g={}}=A||{};if(c||t==null)return{source:e,quality:FA.FAILED,amountOut:null,error:c||"no amountOut returned"};let l=hg(t);if(l==null||l<=0n)return{source:e,quality:FA.FAILED,amountOut:null,error:"non-positive amountOut"};let E=Number(o);return{source:e,quality:n==null?FA.NO_GAS:FA.FULL,amountOut:l.toString(),minOut:hg(r)?.toString()??null,gasUsd:n,feeUsd:s,oracleFeeBps:Number.isFinite(E)&&E>0?Math.floor(E):0,estimatedGas:i==null?null:String(i),liquidityUsd:a==null?null:Number(a),executionReady:u,meta:g}}function fg(A,{destPriceUsd:e=null,destDecimals:t=null,liquidityFirst:r=!0,liquidityBandBps:n=50,gasPriceWei:s=null,nativePriceUsd:o=null}={}){let i=A.filter(M=>M.quality!==FA.FAILED),a=A.filter(M=>M.quality===FA.FAILED),c=e!=null&&e>0&&t!=null&&t>=0,u=Number(s),g=Number(o),l=Number.isFinite(u)&&u>0&&Number.isFinite(g)&&g>0,E=i.map(M=>{let V=BigInt(M.amountOut),ye=0n,Qe=!1,ne=!1,Te=BigInt(M.oracleFeeBps??0),EA=Te>0n?V*Te/10000n:0n;if(c){let Dn=M.gasUsd,No=Number(M.meta?.gasUnits??M.estimatedGas);if(Dn==null&&l&&Number.isFinite(No)&&No>0){let XA=No*u/1e18*g;Number.isFinite(XA)&&XA>=0&&(Dn=XA,ne=!0)}let Ig=(Dn??0)+(M.feeUsd??0);if(Ig>0){let XA=Ig/e*10**t;Number.isFinite(XA)&&XA>=0&&(ye=BigInt(Math.floor(XA)),Qe=!0)}else Dn===0&&(Qe=!0)}let yt=ye+EA,Dt=V>yt?V-yt:0n;return{...M,grossOut:V.toString(),netOut:Dt.toString(),costInDest:ye.toString(),oracleFeeInDest:EA.toString(),costAccounted:Qe,gasEstimated:ne}}),B=Number(n)>0?Number(n):0,C=E.reduce((M,V)=>BigInt(V.netOut)>M?BigInt(V.netOut):M,0n),I=M=>C>0n?Number((C-BigInt(M))*10000n/C):0,Q=[],h=E.slice().sort((M,V)=>BigInt(V.netOut)>BigInt(M.netOut)?1:-1)[0]??null;E.sort((M,V)=>{let ye=I(M.netOut)<=B?0:1,Qe=I(V.netOut)<=B?0:1;if(r&&B>0&&ye!==Qe)return ye-Qe;if(r&&B>0){let ne=M.liquidityUsd??-1,Te=V.liquidityUsd??-1;if(ne!==Te)return Te-ne}return BigInt(V.netOut)>BigInt(M.netOut)?1:-1}),r&&B>0&&h&&E[0]&&E[0].source!==h.source&&Q.push(`liquidity-first: chose ${E[0].source} (liquidity $${E[0].liquidityUsd??"unknown"}) over best-price ${h.source} within ${B} bps`);let y=E.filter(M=>!M.costAccounted).map(M=>M.source);c?y.length&&Q.push(`gas not reported by: ${y.join(", ")}. These are ranked on gross output and may be overstated relative to gas-measured routes.`):Q.push("destination price/decimals unavailable: ranked on GROSS output. Gas is not included, so a cheap-looking route may cost more to execute.");let m=E[0];if(c&&m&&m.costAccounted===!1){let M=E.find(V=>V.costAccounted&&I(V.netOut)<=B);M&&Q.push(`winner ${m.source} has UNMEASURED gas; gas-measured ${M.source} is within ${B} bps and may net more once ${m.source}'s real gas is paid \u2014 prefer it if unsure.`)}let x=E.filter(M=>M.gasEstimated).map(M=>M.source);x.length&&Q.push(`gas ESTIMATED (from gas units x current gas price, not measured) for: ${x.join(", ")}. Net includes this estimate so the ranking is gas-inclusive, but the on-chain gas may differ.`);let _=null,Z=null;if(E.length>=2&&E[0].costAccounted&&E[1].costAccounted){let M=BigInt(E[0].netOut),V=BigInt(E[1].netOut);V>0n&&(_=Number((M-V)*10000n/V),Z=`${E[0].source} vs ${E[1].source}`)}return{best:E[0]??null,routes:E,failed:a,improvementBps:_,spreadBasis:Z,rankedOn:c?"net-of-cost":"gross",warnings:Q}}async function pg(A,{timeoutMs:e=12e3}={}){let t=(n,s)=>Promise.race([n,new Promise((o,i)=>setTimeout(()=>i(new Error(`${s}: timeout`)),e))]);return(await Promise.allSettled(A.map(n=>t(Promise.resolve().then(n.run),n.source)))).map((n,s)=>{let o=A[s].source;return n.status==="rejected"?dg({source:o,error:String(n.reason?.message||n.reason)}):dg({source:o,...n.value})})}Eg();uA();RA();lA();bo();uA();RA();lA();uA();RA();lA();uA();RA();import{TypedDataEncoder as Rx,getAddress as Fx,isAddress as Sx}from"ethers";var mx=Object.freeze({READ:"read",PREPARE:"prepare",EXECUTE:"execute",AUTONOMOUS:"autonomous"});Do();lA();var Yx=Object.freeze({1:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",100:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",42161:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",8453:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41"}),Gx=Object.freeze({1:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",100:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",42161:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",8453:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"});var Jx=Object.freeze({Order:[{name:"sellToken",type:"address"},{name:"buyToken",type:"address"},{name:"receiver",type:"address"},{name:"sellAmount",type:"uint256"},{name:"buyAmount",type:"uint256"},{name:"validTo",type:"uint32"},{name:"appData",type:"bytes32"},{name:"feeAmount",type:"uint256"},{name:"kind",type:"string"},{name:"partiallyFillable",type:"bool"},{name:"sellTokenBalance",type:"string"},{name:"buyTokenBalance",type:"string"}]}),vx=Object.freeze({OrderCancellations:[{name:"orderUids",type:"bytes[]"}]});import{Interface as wd,getAddress as r2,isAddress as n2}from"ethers";uA();var pd={robinhood:{chainId:4663,name:"Robinhood Chain",rpcEnv:["RH_CHAIN_RPC"],evm:!0},ethereum:{chainId:1,name:"Ethereum",rpcEnv:["ETH_RPC_URL","ETHEREUM_RPC_URL","MAINNET_RPC_URL"],evm:!0},polygon:{chainId:137,name:"Polygon",rpcEnv:["POLYGON_RPC_URL","POLYGON_RPC"],evm:!0},arbitrum:{chainId:42161,name:"Arbitrum One",rpcEnv:["ARBITRUM_RPC_URL","ARB_RPC_URL"],evm:!0},base:{chainId:8453,name:"Base",rpcEnv:["BASE_RPC_URL"],evm:!0},hyperevm:{chainId:999,name:"HyperEVM",rpcEnv:["HYPEREVM_RPC_URL","HYPER_EVM_RPC"],evm:!0},bsc:{chainId:56,name:"BNB Smart Chain",rpcEnv:["BSC_RPC_URL","BNB_RPC_URL"],evm:!0},avalanche:{chainId:43114,name:"Avalanche C-Chain",rpcEnv:["AVALANCHE_RPC_URL","AVAX_RPC_URL"],evm:!0},optimism:{chainId:10,name:"OP Mainnet",rpcEnv:["OPTIMISM_RPC_URL","OP_RPC_URL"],evm:!0},abstract:{chainId:2741,name:"Abstract",rpcEnv:["ABSTRACT_RPC_URL","ABS_RPC_URL"],evm:!0},stable:{chainId:988,name:"Stable Mainnet",rpcEnv:["STABLE_RPC_URL","STABLE_RPC"],evm:!0}},Vx=new Map(Object.values(pd).map(A=>[A.chainId,A]));import{Interface as AM,getAddress as Kx}from"ethers";var Xx=new AM(["function allowance(address owner,address spender) view returns (uint256)","function balanceOf(address account) view returns (uint256)"]);uA();var e2=Object.freeze({1:"ethereum",10:"optimism",56:"bsc",137:"polygon",8453:"base",42161:"arbitrum",43114:"avalanche",999:"hyperevm",4663:"robinhood"});RA();lA();var c2=new wd(["function quoteExactInputSingle((address tokenIn, address tokenOut, uint256 amountIn, uint24 fee, uint160 sqrtPriceLimitX96) params) returns (uint256 amountOut, uint160 sqrtPriceX96After, uint32 initializedTicksCrossed, uint256 gasEstimate)","function quoteExactInput(bytes path, uint256 amountIn) returns (uint256 amountOut, uint160[] sqrtPriceX96AfterList, uint32[] initializedTicksCrossedList, uint256 gasEstimate)"]),g2=new wd(["function exactInputSingle((address tokenIn,address tokenOut,uint24 fee,address recipient,uint256 amountIn,uint256 amountOutMinimum,uint160 sqrtPriceLimitX96) params) payable returns (uint256 amountOut)","function multicall(uint256 deadline,bytes[] data) payable returns (bytes[] results)"]);import{AbiCoder as nM,Interface as md,getAddress as E2,isAddress as Q2,keccak256 as B2}from"ethers";RA();lA();var f2=nM.defaultAbiCoder();var p2=new md(["function quoteExactInputSingle(((address currency0,address currency1,uint24 fee,int24 tickSpacing,address hooks) poolKey,bool zeroForOne,uint128 exactAmount,bytes hookData) params) returns (uint256 amountOut, uint256 gasEstimate)"]),w2=new md(["function execute(bytes commands,bytes[] inputs,uint256 deadline) payable"]);uA();var sM="https://coins.llama.fi",oM="https://api.llama.fi";function iM(A={}){return(A.baseUrl||process.env.DEFILLAMA_COINS_URL||sM).replace(/\/$/,"")}function aM(A={}){return(A.baseUrl||process.env.DEFILLAMA_API_URL||oM).replace(/\/$/,"")}async function Qg(A,e={}){if(!Array.isArray(A)||!A.length)throw new Error("llamaPrices requires coins[]");let t=A.map(encodeURIComponent).join(",");return ue(`${iM(e)}/prices/current/${t}`,{fetchImpl:e.fetchImpl,timeoutMs:e.timeoutMs})}async function yd(A={}){return ue(`${aM(A)}/protocols`,{fetchImpl:A.fetchImpl,timeoutMs:A.timeoutMs??2e4})}var KA=A=>{let e=Number(A);return Number.isFinite(e)?e:null};function Sd(A){if(!Array.isArray(A))return null;let e=0,t=!1;for(let r of A){let n=KA(r?.amountUSD);n!=null&&(e+=n,t=!0)}return t?e:null}var zA=A=>String(A??"").toLowerCase().replace(/[^a-z0-9]/g,""),Nd=Object.freeze({across:["across"],relay:["relaychain","relay"],lifi:["jumper-(li.fi-powered)","lifi"],stargate:["stargate-v2","stargate-v1","stargate"],hop:["hop-protocol","hop"],debridge:["debridge"],synapse:["synapse"],connext:["connext"],cbridge:["celer-bridge","celer-cbridge","cbridge"],celer:["celer-bridge","celer-cbridge","cbridge"],squid:["squid"],symbiosis:["symbiosis"],wormhole:["wormhole"],mayan:["mayan"],allbridge:["allbridge"],thorchain:["thorchain"]});async function QM(A={}){try{let e=await yd({...A,baseUrl:A.defillamaApiBaseUrl,timeoutMs:A.defillamaTimeoutMs??Math.min(Number(A.timeoutMs??5e3),5e3)});return Array.isArray(e)?e:[]}catch{return[]}}function BM(A,e={}){let t=zA(e.tool||e.provider||e.bridge||e.protocol),r=[];return A==="lifi"&&t&&t!=="lifi"&&r.push(...Nd[t]||[t]),r.push(...Nd[zA(A)]||[A]),r}function IM(A,e,t={}){let r=Array.isArray(A)?A:[],n=BM(e,t).map(zA).filter(Boolean);for(let s of n){let o=r.find(a=>zA(a?.slug)===s||zA(a?.name)===s),i=KA(o?.tvl);if(i!=null)return{liquidityUsd:i,protocol:o?.name??o?.slug??s}}for(let s of n){let o=r.find(a=>{let c=zA(a?.category);return!c.includes("bridge")&&!c.includes("crosschain")?!1:zA(a?.slug).includes(s)||zA(a?.name).includes(s)}),i=KA(o?.tvl);if(i!=null)return{liquidityUsd:i,protocol:o?.name??o?.slug??s}}return null}function Ud({fromChainId:A,toChainId:e,tokenIn:t,tokenOut:r,amountIn:n,taker:s,opts:o={}}){let i=[],a=null,c=async(u,g={})=>(a||=QM(o),IM(await a,u,g));return i.push({source:"lifi",run:async()=>{let u=await ko({fromChain:A,toChain:e,fromToken:t,toToken:r,fromAmount:n},o),g=u?.estimate??u?.[0]?.estimate,l={tool:u?.tool??u?.toolDetails?.name,durationSeconds:KA(g?.executionDuration)},E=await c("lifi",l);return{amountOut:g?.toAmount,minOut:g?.toAmountMin,gasUsd:Sd(g?.gasCosts),feeUsd:Sd(g?.feeCosts),oracleFeeBps:u?.oracleFee?.applies?u.oracleFee.bps:0,liquidityUsd:E?.liquidityUsd??null,meta:{...l,liquidityProtocol:E?.protocol,oracleFee:u?.oracleFee??null}}}}),i.push({source:"relay",run:async()=>{let{relayQuote:u}=await Promise.resolve().then(()=>(Fo(),Ro)),l=(await u({user:s,originChainId:A,destinationChainId:e,originCurrency:t,destinationCurrency:r,amount:String(n)},o))?.details,E={durationSeconds:KA(l?.timeEstimate),rate:l?.rate},B=await c("relay",E);return{amountOut:l?.currencyOut?.amount,minOut:l?.currencyOut?.minimumAmount,gasUsd:KA(l?.totalImpact?.usd)!=null?Math.abs(KA(l.totalImpact.usd)):null,liquidityUsd:B?.liquidityUsd??null,meta:{...E,liquidityProtocol:B?.protocol}}}}),i.push({source:"across",run:async()=>{let{acrossSuggestedFees:u}=await Promise.resolve().then(()=>(Fo(),Ro)),g=await u({token:t,destinationToken:r,originChainId:A,destinationChainId:e,amount:String(n)},o),l=g?.totalRelayFee?.total,E=null;if(l!=null)try{let C=BigInt(String(n))-BigInt(String(l));C>0n&&(E=C.toString())}catch{}let B=await c("across");return{amountOut:E,gasUsd:null,liquidityUsd:B?.liquidityUsd??null,meta:{derivedFromFees:!0,durationSeconds:KA(g?.estimatedFillTimeSec),limits:g?.limits?{min:g.limits.minDeposit,max:g.limits.maxDeposit}:void 0,liquidityProtocol:B?.protocol}}}}),i}bo();var CM={1:"ethereum",10:"optimism",56:"bsc",137:"polygon",8453:"base",42161:"arbitrum",43114:"avax"};async function hM(A,e,t){let r=CM[Number(A)];if(!r)return{priceUsd:null,decimals:null};let n=`${r}:${e}`;try{let o=(await Qg([n],t))?.coins?.[n],i=Number(o?.price),a=Number(o?.decimals);return{priceUsd:Number.isFinite(i)?i:null,decimals:Number.isFinite(a)?a:null}}catch{return{priceUsd:null,decimals:null}}}async function Md(A,e={}){let{fromChainId:t,toChainId:r,tokenIn:n,tokenOut:s,amountIn:o}=A;if(t==null||r==null||!n||!s||o==null)throw new Error("bestBridgeRoute requires fromChainId, toChainId, tokenIn, tokenOut, amountIn");if(Number(t)===Number(r))throw new Error("bestBridgeRoute is for cross-chain; use bestSwapRoute for same-chain");let i=hM(r,s,e),a=Ud({...A,opts:e}),[c,u]=await Promise.all([pg(a,{timeoutMs:e.timeoutMs??15e3}),i]),g=fg(c,{destPriceUsd:u.priceUsd,destDecimals:A.decimalsOut??u.decimals,liquidityBandBps:e.liquidityBandBps??50}),l=g.routes.map(E=>({source:E.source,seconds:E.meta?.durationSeconds??null})).filter(E=>E.seconds!=null);return{kind:"bridge",fromChainId:t,toChainId:r,tokenIn:n,tokenOut:s,amountIn:String(o),...g,durations:l,sourcesTried:a.length,sourcesAnswered:c.filter(E=>E.quality!==FA.FAILED).length,note:fM(g,a.length)}}function dM(A){let e=A?.meta?.oracleFee;return e?.applies?` \xB7 ${Id(e)}`:""}function fM(A,e){if(!A.best)return"no source returned a usable route";let t=A.routes.length,r=dM(A.best);if(t===1)return`only 1 of ${e} sources answered, so this is the ONLY route, not a proven best one. Treat it as unbenchmarked.`+r;if(A.improvementBps!=null){let n=A.improvementBps,s=n/100;if(n<.01)return`best of ${t} routes, ranked on ${A.rankedOn}: effectively tied with the runner-up (${A.spreadBasis}), inside quote noise. Re-quote before you size up.`+r;let o=s>=.01?`${s.toFixed(2)}%`:`${n.toFixed(2)}bps`;return`best of ${t} routes, ranked on ${A.rankedOn}: ${o} better than the runner-up (${A.spreadBasis})`+r}return`best of ${t} routes, ranked on ${A.rankedOn}. No spread quoted: the top routes report cost differently, so the margin is not comparable.`+r}lA();var pM=/^0x[0-9a-fA-F]{40}$/,wM=new Set(["0x0000000000000000000000000000000000000000","0x000000000000000000000000000000000000dead","0x0000000000000000000000000000000000000001","0x00000000000000000000000000000000000a1ce5"].map(A=>A.toLowerCase())),mM=100,So={relay:async({fromChainId:A,toChainId:e,tokenIn:t,tokenOut:r,amountIn:n,taker:s},o)=>{let{relayPrepare:i}=await Promise.resolve().then(()=>(Fo(),Ro)),a=await i({user:s,originChainId:A,destinationChainId:e,originCurrency:t,destinationCurrency:r,amount:String(n)},o);return{transactions:a.transactions||[],amountOut:a.quote?.details?.currencyOut?.amount??null,minOut:a.quote?.details?.currencyOut?.minimumAmount??null,durationSeconds:a.quote?.details?.timeEstimate??null}},lifi:async({fromChainId:A,toChainId:e,tokenIn:t,tokenOut:r,amountIn:n,taker:s,isHolder:o},i)=>{let{lifiPrepare:a}=await Promise.resolve().then(()=>(Eg(),fd)),c=await a({fromChain:A,toChain:e,fromToken:t,toToken:r,fromAmount:n,fromAddress:s,isHolder:o,feeAction:"bridge"},i);return{transactions:c.transaction?[c.transaction]:[],requiresApproval:c.requiresApproval??null,amountOut:c.quote?.estimate?.toAmount??null,minOut:c.quote?.estimate?.toAmountMin??null,durationSeconds:c.quote?.estimate?.executionDuration??null}}};function cY(){return Object.keys(So)}async function gY(A,e={}){let{taker:t,fromChainId:r,toChainId:n}=A;if(!t)throw new Error("prepareBestBridgeRoute requires taker: bridge transactions are built FOR an address, and the quote-only placeholder must never end up in one");if(!pM.test(t))throw new Error(`taker must be a valid 20-byte address, got "${t}"`);if(wM.has(t.toLowerCase()))throw new Error(`taker "${t}" is a placeholder/burn address. Bridging to it would send funds to an address nobody controls, on a chain where you cannot undo it.`);let s=await Md(A,e);if(!s.best)return{ok:!1,reason:"no source returned a usable bridge route",comparison:s};let o=A.source||s.best.source,i=s.routes.find(I=>I.source===o);if(!i)return{ok:!1,reason:`source "${o}" returned no usable route`,comparison:s};let a=So[o];if(!a){let I=s.routes.find(Q=>So[Q.source]&&Q.source!==o);return{ok:!1,reason:`${o} won the comparison but has no bridge prepare path in this build. `+(I?`Next preparable route is ${I.source}; pass source:"${I.source}".`:"No route in this comparison can be prepared."),failureKind:"no-prepare-path",...I?{alternative:I.source}:{},winner:o,comparison:s}}let c;try{c=await a(A,e)}catch(I){let Q=typeof I?.body=="string"?I.body:I?.body?JSON.stringify(I.body):"",h=[String(I?.message||I),Q].filter(Boolean).join(" :: "),y=/allowance/i.test(h),m=!y&&/not enough|insufficient|balance/i.test(h),x=s.routes.find(_=>So[_.source]&&_.source!==o);return{ok:!1,reason:y?`${o} will not build calldata until the token approval exists on-chain. Approve first, then prepare again. Underlying: ${h}`:m?`${o} refused to build: ${h}. Quoting works for any address; preparing needs the real funded wallet on chain ${r}.`:`${o} bridge prepare failed: ${h}`,failureKind:y?"approval-required-first":m?"taker-not-funded":"provider-error",...x?{alternative:x.source}:{},comparison:s}}let u=c.transactions||[];if(!u.length)return{ok:!1,reason:`${o} returned no executable transaction for this route`,failureKind:"provider-error",comparison:s};let g=u.filter(I=>I.chainId!=null&&Number(I.chainId)!==Number(r));if(g.length)return{ok:!1,reason:`${o} returned a transaction for chain ${g[0].chainId} but the origin chain is ${r}. Refusing to hand over a mismatched artifact.`,failureKind:"chain-mismatch",comparison:s};let l=A.driftToleranceBps??mM,E=null,B=null;if(c.amountOut!=null&&i.grossOut!=null)try{let I=BigInt(i.grossOut),Q=BigInt(c.amountOut);I>0n&&(E=Number((Q-I)*10000n/I),E<-l&&(B=`route moved ${(E/100).toFixed(2)}% against you since the comparison (tolerance ${(l/100).toFixed(2)}%). Re-compare before signing.`))}catch{}let C=[...B?[B]:[],...s.warnings||[],`Bridging is NOT atomic: the origin transaction succeeding does not mean funds arrived on chain ${n}. Expect ~${c.durationSeconds!=null?`${c.durationSeconds}s`:"minutes"} before the destination credits, and do not re-send if it is pending.`];return u.length>1&&C.push(`This route needs ${u.length} transactions signed IN ORDER. Signing only the first leaves funds approved but not bridged.`),Ve({ok:!0,chosen:{source:o,wasWinner:o===s.best.source,netOut:i.netOut,grossOut:i.grossOut,gasUsd:i.gasUsd},artifactKind:"unsigned-transaction-sequence",fromChainId:Number(r),toChainId:Number(n),transactionCount:u.length,transactions:u,requiresApproval:c.requiresApproval??null,minOut:c.minOut??null,durationSeconds:c.durationSeconds??null,destination:u[0]?.to??null,unsigned:!0,signedBy:"user-wallet",driftBps:E,warnings:C,runnersUp:s.routes.filter(I=>I.source!==o).map(I=>({source:I.source,netOut:I.netOut,gasUsd:I.gasUsd})),comparison:{rankedOn:s.rankedOn,sourcesAnswered:s.sourcesAnswered,sourcesTried:s.sourcesTried,improvementBps:s.improvementBps},note:`UNSIGNED. ${u.length} transaction(s) on chain ${r}, crediting chain ${n}. Verify every destination address before signing.`},{provider:"router",kind:"best-bridge"})}export{gY as prepareBestBridgeRoute,cY as supportedBridgePreparers};
|