@knightcodeai/cli 0.18.0 → 0.18.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.
Files changed (43) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/bundle/chunks/{anthropic-messages-A2IH2IY3.js → anthropic-messages-QIZAJBTA.js} +1 -1
  3. package/dist/bundle/chunks/{azure-openai-responses-XZILQZOG.js → azure-openai-responses-7R44RRTC.js} +1 -1
  4. package/dist/bundle/chunks/bedrock-converse-stream.js +22 -22
  5. package/dist/bundle/chunks/chunk-2QXPCKUQ.js +9 -0
  6. package/dist/bundle/chunks/{chunk-AFR2OW6S.js → chunk-3B66IKOZ.js} +1 -1
  7. package/dist/bundle/chunks/{chunk-NCIBB66G.js → chunk-55AAX2FB.js} +1 -1
  8. package/dist/bundle/chunks/{chunk-FO7CEQB3.js → chunk-76TARFPL.js} +1 -1
  9. package/dist/bundle/chunks/{chunk-M5GCRGV6.js → chunk-7CWBI3GL.js} +9 -9
  10. package/dist/bundle/chunks/{chunk-NNCIIYD6.js → chunk-BPNRVFVQ.js} +1 -1
  11. package/dist/bundle/chunks/{chunk-XIRAUXOE.js → chunk-HNZSETB2.js} +2 -2
  12. package/dist/bundle/chunks/{chunk-OFST7FDG.js → chunk-IGNYWP4P.js} +1 -1
  13. package/dist/bundle/chunks/{chunk-GHVXUCGU.js → chunk-LA7DDYYM.js} +2 -2
  14. package/dist/bundle/chunks/{chunk-ACHHEROF.js → chunk-NGWSYXD5.js} +1 -1
  15. package/dist/bundle/chunks/{chunk-U5XE4RWR.js → chunk-R2XYMDTS.js} +1 -1
  16. package/dist/bundle/chunks/chunk-T7XWBYOA.js +11 -0
  17. package/dist/bundle/chunks/chunk-XZJICKQ6.js +30 -0
  18. package/dist/bundle/chunks/{chunk-A5LJINMT.js → chunk-YQ26QP2R.js} +1 -1
  19. package/dist/bundle/chunks/{chunk-FHM6KUY3.js → chunk-ZB5LGRB5.js} +1 -1
  20. package/dist/bundle/chunks/{cli-6ZTWO6GL.js → cli-66ZLURJW.js} +1 -1
  21. package/dist/bundle/chunks/{cloudflare-workers-ai-system-one-6E2UM7IG.js → cloudflare-workers-ai-system-one-LA7TF5LV.js} +1 -1
  22. package/dist/bundle/chunks/{easter-egg-3d-FDCGDUF3.js → easter-egg-3d-DQYQIGP2.js} +1 -1
  23. package/dist/bundle/chunks/{execute-VSDU5VSN.js → execute-KJDH5JWX.js} +1 -1
  24. package/dist/bundle/chunks/{google-generative-ai-CSWR3ORZ.js → google-generative-ai-GEBPSQBJ.js} +1 -1
  25. package/dist/bundle/chunks/{google-vertex-QIDRFOFB.js → google-vertex-BRMU44TN.js} +1 -1
  26. package/dist/bundle/chunks/{mistral-conversations-46TK5OBA.js → mistral-conversations-FKYKJV7R.js} +1 -1
  27. package/dist/bundle/chunks/{openai-codex-responses-IT7VEKUU.js → openai-codex-responses-DAZKF6IV.js} +1 -1
  28. package/dist/bundle/chunks/{openai-completions-LOKIW33V.js → openai-completions-A6RD26ED.js} +1 -1
  29. package/dist/bundle/chunks/{openai-decisions-4F3LWHMG.js → openai-decisions-OBTJNBTE.js} +1 -1
  30. package/dist/bundle/chunks/{openai-responses-OK36GJXP.js → openai-responses-L3QPK3MQ.js} +1 -1
  31. package/dist/bundle/chunks/{runtime-RMPIV5AR.js → runtime-IU2Z5WWF.js} +1 -1
  32. package/dist/bundle/chunks/{typesafe-system-one-J2CJBWEH.js → typesafe-system-one-FZHRNG67.js} +1 -1
  33. package/dist/bundle/chunks/{virtual-modules-EGJP3AJA.js → virtual-modules-IKIDAUHO.js} +1 -1
  34. package/dist/bundle/cli-runtime.js +1 -1
  35. package/dist/bundle/cli.js +14 -3
  36. package/docs/custom-provider.md +53 -1
  37. package/docs/extensions.md +116 -10
  38. package/docs/tui.md +70 -0
  39. package/docs/windows.md +16 -2
  40. package/package.json +1 -1
  41. package/dist/bundle/chunks/chunk-EPYT326Y.js +0 -30
  42. package/dist/bundle/chunks/chunk-MB4QRS7Y.js +0 -9
  43. package/dist/bundle/chunks/chunk-V5ANFNKF.js +0 -11
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __kcCreateRequire } from "node:module"; const require = __kcCreateRequire(import.meta.url);
2
- import{ArminComponent}from"./chunk-U5XE4RWR.js";import{Compile,CredentialSynchronizationError,DEFAULT_RADIUS_GATEWAY,InMemoryCodingAgentModelsStore,ModelRuntime,ProjectTrustStore,VIRTUAL_MODEL_STATE_ENTRY,addMcpServerConfig,completeSimple,fetchWithRetry,findLatestResponse,findNonJson,getBranchSelection,getKnightcodeUserAgent as getKnightcodeUserAgent2,getProjectTrustOptions,getVirtualModelState,hasTrustRequiringProjectResources,isContextOverflow,isRecoverableLength,isVirtualModel,loadMcpConfig,normalizeRadiusGatewayUrl,openBrowser,resetApiProviders,stream,streamSimple,typesafeSystemOneApi,updateMcpServerConfig,validateToolArguments}from"./chunk-EPYT326Y.js";import{CODEMODE_TOOL_NAME,CollapsedToolOutput,DEFAULT_MAX_BYTES,DEFAULT_MAX_LINES,SETTINGS_DEFAULTS,TOOL_SEARCH_TOOL_NAME,addUsageToTotals,combineUsage,createCodemodeToolDefinition,createOutputFileStream,createToolDefinitionFromAgentTool,createToolSearchToolDefinition,createUsageTotals,formatReadLineRange,formatSize,formatToolCall,formatToolCallWithArgs,formatToolSummary,getTextOutput,getUsageCostBreakdown,invalidArgText,normalizeDisplayText,plural,renderToolPath,replaceTabs,shortenPath,splitIncompleteAnsiSuffix,startToolTimer,str,stripAnsi,toolTimerText,truncateHead,truncateLine,truncateMiddle,truncateTail,truncateToVisualLines,wrapToolDefinition,writeOutputFile}from"./chunk-XIRAUXOE.js";import{Box,CancellableLoader,CombinedAutocompleteProvider,Container,Editor,FS_WATCH_RETRY_DELAY_MS,Gutter,Image,Input,Key,KeybindingsManager,Loader,Markdown,MouseRegion,ProcessTerminal,SYSTEM_THEME_NAME,ScrollView,SelectList,SettingsList,Spacer,THEME_TOKENS,TUI_KEYBINDINGS,Text,Theme,TruncatedText,TuiAltScreen,TuiMainScreen,VStack,Z,backgroundAnsi,closeWatcher,colorToRgb,detectCapabilities,foregroundAnsi,formatKeyText,fuzzyFilter,fuzzyMatch,getAvailableThemes,getAvailableThemesWithPaths,getCapabilities,getEditorTheme,getKeybindings,getLanguageFromPath,getMarkdownTheme,getNativeClipboard,getResolvedThemeColors,getSelectListTheme,getSettingsListTheme,getTerminalColorMode,getTerminalTheme,getThemeByName,getThemeExportColors,highlightCode,hyperlink,initTheme,isViewportTUI,keyDisplayText,keyDisplayTextPrimary,keyHint,keyText,loadAllHighlightLanguages,loadThemeFromPath,markTerminalColorsPending,matchesKey,mixColors,onThemeChange,parseAutoThemeSetting,parseColor,rawKeyHint,resolveThemeSetting,rgbColor,setCapabilityOverrides,setImageTranscoder,setKeybindings,setRegisteredThemes,setTerminalColorScheme,setTerminalColors,setTheme,setThemeInstance,setThemeJsonValidator,sliceByColumn,stopThemeWatcher,theme,truncateToWidth,visibleWidth,watchWithErrorHandler,wrapTextWithAnsi}from"./chunk-GHVXUCGU.js";import{isRetryableAssistantError,retryAssistantCall,retryDelayMs,typebox_exports}from"./chunk-MXIWLMNT.js";import{source_default}from"./chunk-KQKUEQJA.js";import{AuthStorage,LIST_MCP_RESOURCES_TOOL,LIST_MCP_RESOURCE_TEMPLATES_TOOL,McpServerRegistry,READ_MCP_RESOURCE_TOOL,ReadOnlyAuthStorage,createToolNameMatcher,getMcpToolExposure,isMcpToolName,mcpNamespace,raceWithAbortSignal,readStoredCredential,require_proper_lockfile,toLlmContent,validateMcpServerConfig}from"./chunk-ACHHEROF.js";import{getPowerShellConfig,getShellConfig,getShellEnv,killProcessTree,killTrackedDetachedChildren,sanitizeBinaryOutput,trackDetachedChildPid,untrackDetachedChildPid}from"./chunk-MB4QRS7Y.js";import{APP_NAME,APP_TITLE,CONFIG_DIR_NAME,ENV_AGENT_DIR,ENV_SESSION_DIR,PACKAGE_NAME,VERSION,canonicalizePath,detectInstallChange,detectInstallMethod,expandTildePath,formatPathRelativeToCwdOrAbsolute,getAgentDir,getAuthPath,getBinDir,getChangelogPath,getCwdRelativePath,getDebugLogPath,getDocsPath,getExamplesPath,getExportTemplateDir,getPackageDir,getReadmePath,getSelfUpdateCommand,getSelfUpdatePackageDir,getSelfUpdateUnavailableInstruction,getSessionsDir,getSettingsPath,getShareViewerUrl,isBunBinary,isBundledNode,isLocalPath,markPathIgnoredByCloudSync,normalizePath,resolvePath,spawnProcess,spawnProcessSync,splitBom,stripBom,waitForChildProcess}from"./chunk-NNCIIYD6.js";import{cleanupSessionResources,uuidv7}from"./chunk-NDQ5OW6U.js";import{getProviderEnvValue}from"./chunk-BRKUE2MD.js";import{parseStreamingJson}from"./chunk-FA32X2UJ.js";import{getKnightcodeUserAgent}from"./chunk-HHWP56PR.js";import{calculateCost,clampThinkingLevel,contentText,createInitialSystemMessage,getCurrentSystemMessage,getCurrentSystemPrompt,getCurrentTools,getSupportedThinkingLevels,getSystemMessageText,getToolStateChanges,isModelType,modelsAreEqual,normalizeContext,toToolDeclaration}from"./chunk-V5ANFNKF.js";import{EventStream,createAssistantMessageEventStream}from"./chunk-ETOMYYZC.js";import{__commonJS,__export,__require,__toESM}from"./chunk-AHB7JV5B.js";var require_symbols=__commonJS({"node_modules/undici/lib/core/symbols.js"(exports,module){"use strict";module.exports={kClose:Symbol("close"),kDestroy:Symbol("destroy"),kDispatch:Symbol("dispatch"),kUrl:Symbol("url"),kRequestOrigin:Symbol("request origin"),kOriginless:Symbol("originless"),kWriting:Symbol("writing"),kResuming:Symbol("resuming"),kQueue:Symbol("queue"),kConnect:Symbol("connect"),kConnecting:Symbol("connecting"),kKeepAliveDefaultTimeout:Symbol("default keep alive timeout"),kKeepAliveMaxTimeout:Symbol("max keep alive timeout"),kKeepAliveTimeoutThreshold:Symbol("keep alive timeout threshold"),kKeepAliveTimeoutValue:Symbol("keep alive timeout"),kKeepAlive:Symbol("keep alive"),kHeadersTimeout:Symbol("headers timeout"),kBodyTimeout:Symbol("body timeout"),kServerName:Symbol("server name"),kLocalAddress:Symbol("local address"),kHost:Symbol("host"),kNoRef:Symbol("no ref"),kBodyUsed:Symbol("used"),kBody:Symbol("abstracted request body"),kRunning:Symbol("running"),kBlocking:Symbol("blocking"),kPending:Symbol("pending"),kSize:Symbol("size"),kBusy:Symbol("busy"),kQueued:Symbol("queued"),kFree:Symbol("free"),kConnected:Symbol("connected"),kClosed:Symbol("closed"),kNeedDrain:Symbol("need drain"),kReset:Symbol("reset"),kDestroyed:Symbol.for("nodejs.stream.destroyed"),kResume:Symbol("resume"),kOnError:Symbol("on error"),kMaxHeadersSize:Symbol("max headers size"),kRunningIdx:Symbol("running index"),kPendingIdx:Symbol("pending index"),kError:Symbol("error"),kClients:Symbol("clients"),kClient:Symbol("client"),kParser:Symbol("parser"),kOnDestroyed:Symbol("destroy callbacks"),kPipelining:Symbol("pipelining"),kSocket:Symbol("socket"),kHostHeader:Symbol("host header"),kConnector:Symbol("connector"),kStrictContentLength:Symbol("strict content length"),kMaxRedirections:Symbol("maxRedirections"),kMaxRequests:Symbol("maxRequestsPerClient"),kProxy:Symbol("proxy agent options"),kCounter:Symbol("socket request counter"),kMaxResponseSize:Symbol("max response size"),kHTTP2Session:Symbol("http2Session"),kHTTP2Options:Symbol("http2 options"),kHTTP2SessionState:Symbol("http2Session state"),kRetryHandlerDefaultRetry:Symbol("retry agent default retry"),kConstruct:Symbol("constructable"),kListeners:Symbol("listeners"),kHTTPContext:Symbol("http context"),kMaxConcurrentStreams:Symbol("max concurrent streams"),kHostAuthority:Symbol("host authority"),kHTTP2InitialWindowSize:Symbol("http2 initial window size"),kHTTP2ConnectionWindowSize:Symbol("http2 connection window size"),kEnableConnectProtocol:Symbol("http2session connect protocol"),kRemoteSettings:Symbol("http2session remote settings"),kHTTP2Stream:Symbol("http2session client stream"),kPingInterval:Symbol("ping interval"),kNoProxyAgent:Symbol("no proxy agent"),kHttpProxyAgent:Symbol("http proxy agent"),kHttpsProxyAgent:Symbol("https proxy agent"),kSocks5ProxyAgent:Symbol("socks5 proxy agent")}}});var require_timers=__commonJS({"node_modules/undici/lib/util/timers.js"(exports,module){"use strict";var fastNow=0,RESOLUTION_MS=1e3,TICK_MS=(RESOLUTION_MS>>1)-1,fastNowTimeout,kFastTimer=Symbol("kFastTimer"),fastTimers=[],NOT_IN_LIST=-2,TO_BE_CLEARED=-1,PENDING=0,ACTIVE=1;function onTick(){fastNow+=TICK_MS;let idx=0,len=fastTimers.length;for(;idx<len;){let timer=fastTimers[idx];timer._state===PENDING?(timer._idleStart=fastNow-TICK_MS,timer._state=ACTIVE):timer._state===ACTIVE&&fastNow>=timer._idleStart+timer._idleTimeout&&(timer._state=TO_BE_CLEARED,timer._idleStart=-1,timer._onTimeout(timer._timerArg)),timer._state===TO_BE_CLEARED?(timer._state=NOT_IN_LIST,--len!==0&&(fastTimers[idx]=fastTimers[len])):++idx}fastTimers.length=len,fastTimers.length!==0&&refreshTimeout()}function refreshTimeout(){fastNowTimeout?.refresh?fastNowTimeout.refresh():(clearTimeout(fastNowTimeout),fastNowTimeout=setTimeout(onTick,TICK_MS),fastNowTimeout?.unref())}var FastTimer=class{[kFastTimer]=!0;_state=NOT_IN_LIST;_idleTimeout=-1;_idleStart=-1;_onTimeout;_timerArg;constructor(callback,delay,arg){this._onTimeout=callback,this._idleTimeout=delay,this._timerArg=arg,this.refresh()}refresh(){this._state===NOT_IN_LIST&&fastTimers.push(this),(!fastNowTimeout||fastTimers.length===1)&&refreshTimeout(),this._state=PENDING}clear(){this._state=TO_BE_CLEARED,this._idleStart=-1}};module.exports={setTimeout(callback,delay,arg){return delay<=RESOLUTION_MS?setTimeout(callback,delay,arg):new FastTimer(callback,delay,arg)},clearTimeout(timeout){timeout[kFastTimer]?timeout.clear():clearTimeout(timeout)},setFastTimeout(callback,delay,arg){return new FastTimer(callback,delay,arg)},clearFastTimeout(timeout){timeout.clear()},now(){return fastNow},tick(delay=0){fastNow+=delay-RESOLUTION_MS+1,onTick(),onTick()},reset(){fastNow=0,fastTimers.length=0,clearTimeout(fastNowTimeout),fastNowTimeout=null},kFastTimer}}});var require_errors=__commonJS({"node_modules/undici/lib/core/errors.js"(exports,module){"use strict";var kUndiciError=Symbol.for("undici.error.UND_ERR"),UndiciError=class extends Error{constructor(message,options){super(message,options),this.name="UndiciError",this.code="UND_ERR"}static[Symbol.hasInstance](instance){return instance&&instance[kUndiciError]===!0}get[kUndiciError](){return!0}},kConnectTimeoutError=Symbol.for("undici.error.UND_ERR_CONNECT_TIMEOUT"),ConnectTimeoutError=class extends UndiciError{constructor(message){super(message),this.name="ConnectTimeoutError",this.message=message||"Connect Timeout Error",this.code="UND_ERR_CONNECT_TIMEOUT"}static[Symbol.hasInstance](instance){return instance&&instance[kConnectTimeoutError]===!0}get[kConnectTimeoutError](){return!0}},kHeadersTimeoutError=Symbol.for("undici.error.UND_ERR_HEADERS_TIMEOUT"),HeadersTimeoutError=class extends UndiciError{constructor(message){super(message),this.name="HeadersTimeoutError",this.message=message||"Headers Timeout Error",this.code="UND_ERR_HEADERS_TIMEOUT"}static[Symbol.hasInstance](instance){return instance&&instance[kHeadersTimeoutError]===!0}get[kHeadersTimeoutError](){return!0}},kHeadersOverflowError=Symbol.for("undici.error.UND_ERR_HEADERS_OVERFLOW"),HeadersOverflowError=class extends UndiciError{constructor(message){super(message),this.name="HeadersOverflowError",this.message=message||"Headers Overflow Error",this.code="UND_ERR_HEADERS_OVERFLOW"}static[Symbol.hasInstance](instance){return instance&&instance[kHeadersOverflowError]===!0}get[kHeadersOverflowError](){return!0}},kBodyTimeoutError=Symbol.for("undici.error.UND_ERR_BODY_TIMEOUT"),BodyTimeoutError=class extends UndiciError{constructor(message){super(message),this.name="BodyTimeoutError",this.message=message||"Body Timeout Error",this.code="UND_ERR_BODY_TIMEOUT"}static[Symbol.hasInstance](instance){return instance&&instance[kBodyTimeoutError]===!0}get[kBodyTimeoutError](){return!0}},kInvalidArgumentError=Symbol.for("undici.error.UND_ERR_INVALID_ARG"),InvalidArgumentError=class extends UndiciError{constructor(message){super(message),this.name="InvalidArgumentError",this.message=message||"Invalid Argument Error",this.code="UND_ERR_INVALID_ARG"}static[Symbol.hasInstance](instance){return instance&&instance[kInvalidArgumentError]===!0}get[kInvalidArgumentError](){return!0}},kInvalidReturnValueError=Symbol.for("undici.error.UND_ERR_INVALID_RETURN_VALUE"),InvalidReturnValueError=class extends UndiciError{constructor(message){super(message),this.name="InvalidReturnValueError",this.message=message||"Invalid Return Value Error",this.code="UND_ERR_INVALID_RETURN_VALUE"}static[Symbol.hasInstance](instance){return instance&&instance[kInvalidReturnValueError]===!0}get[kInvalidReturnValueError](){return!0}},kAbortError=Symbol.for("undici.error.UND_ERR_ABORT"),AbortError=class extends UndiciError{constructor(message){super(message),this.name="AbortError",this.message=message||"The operation was aborted",this.code="UND_ERR_ABORT"}static[Symbol.hasInstance](instance){return instance&&instance[kAbortError]===!0}get[kAbortError](){return!0}},kRequestAbortedError=Symbol.for("undici.error.UND_ERR_ABORTED"),RequestAbortedError=class extends AbortError{constructor(message){super(message),this.name="AbortError",this.message=message||"Request aborted",this.code="UND_ERR_ABORTED"}static[Symbol.hasInstance](instance){return instance&&instance[kRequestAbortedError]===!0}get[kRequestAbortedError](){return!0}},kInformationalError=Symbol.for("undici.error.UND_ERR_INFO"),InformationalError=class extends UndiciError{constructor(message,options){super(message,options),this.name="InformationalError",this.message=message||"Request information",this.code="UND_ERR_INFO"}static[Symbol.hasInstance](instance){return instance&&instance[kInformationalError]===!0}get[kInformationalError](){return!0}},kRequestContentLengthMismatchError=Symbol.for("undici.error.UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"),RequestContentLengthMismatchError=class extends UndiciError{constructor(message){super(message),this.name="RequestContentLengthMismatchError",this.message=message||"Request body length does not match content-length header",this.code="UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"}static[Symbol.hasInstance](instance){return instance&&instance[kRequestContentLengthMismatchError]===!0}get[kRequestContentLengthMismatchError](){return!0}},kResponseContentLengthMismatchError=Symbol.for("undici.error.UND_ERR_RES_CONTENT_LENGTH_MISMATCH"),ResponseContentLengthMismatchError=class extends UndiciError{constructor(message){super(message),this.name="ResponseContentLengthMismatchError",this.message=message||"Response body length does not match content-length header",this.code="UND_ERR_RES_CONTENT_LENGTH_MISMATCH"}static[Symbol.hasInstance](instance){return instance&&instance[kResponseContentLengthMismatchError]===!0}get[kResponseContentLengthMismatchError](){return!0}},kClientDestroyedError=Symbol.for("undici.error.UND_ERR_DESTROYED"),ClientDestroyedError=class extends UndiciError{constructor(message){super(message),this.name="ClientDestroyedError",this.message=message||"The client is destroyed",this.code="UND_ERR_DESTROYED"}static[Symbol.hasInstance](instance){return instance&&instance[kClientDestroyedError]===!0}get[kClientDestroyedError](){return!0}},kClientClosedError=Symbol.for("undici.error.UND_ERR_CLOSED"),ClientClosedError=class extends UndiciError{constructor(message){super(message),this.name="ClientClosedError",this.message=message||"The client is closed",this.code="UND_ERR_CLOSED"}static[Symbol.hasInstance](instance){return instance&&instance[kClientClosedError]===!0}get[kClientClosedError](){return!0}},kSocketError=Symbol.for("undici.error.UND_ERR_SOCKET"),SocketError=class extends UndiciError{constructor(message,socket){super(message),this.name="SocketError",this.message=message||"Socket error",this.code="UND_ERR_SOCKET",this.socket=socket}static[Symbol.hasInstance](instance){return instance&&instance[kSocketError]===!0}get[kSocketError](){return!0}},kNotSupportedError=Symbol.for("undici.error.UND_ERR_NOT_SUPPORTED"),NotSupportedError=class extends UndiciError{constructor(message){super(message),this.name="NotSupportedError",this.message=message||"Not supported error",this.code="UND_ERR_NOT_SUPPORTED"}static[Symbol.hasInstance](instance){return instance&&instance[kNotSupportedError]===!0}get[kNotSupportedError](){return!0}},kBalancedPoolMissingUpstreamError=Symbol.for("undici.error.UND_ERR_BPL_MISSING_UPSTREAM"),BalancedPoolMissingUpstreamError=class extends UndiciError{constructor(message){super(message),this.name="MissingUpstreamError",this.message=message||"No upstream has been added to the BalancedPool",this.code="UND_ERR_BPL_MISSING_UPSTREAM"}static[Symbol.hasInstance](instance){return instance&&instance[kBalancedPoolMissingUpstreamError]===!0}get[kBalancedPoolMissingUpstreamError](){return!0}},kHTTPParserError=Symbol.for("undici.error.UND_ERR_HTTP_PARSER"),HTTPParserError=class extends Error{constructor(message,code,data){super(message),this.name="HTTPParserError",this.code=code?`HPE_${code}`:void 0,this.data=data?data.toString():void 0}static[Symbol.hasInstance](instance){return instance&&instance[kHTTPParserError]===!0}get[kHTTPParserError](){return!0}},kResponseExceededMaxSizeError=Symbol.for("undici.error.UND_ERR_RES_EXCEEDED_MAX_SIZE"),ResponseExceededMaxSizeError=class extends UndiciError{constructor(message){super(message),this.name="ResponseExceededMaxSizeError",this.message=message||"Response content exceeded max size",this.code="UND_ERR_RES_EXCEEDED_MAX_SIZE"}static[Symbol.hasInstance](instance){return instance&&instance[kResponseExceededMaxSizeError]===!0}get[kResponseExceededMaxSizeError](){return!0}},kRequestRetryError=Symbol.for("undici.error.UND_ERR_REQ_RETRY"),RequestRetryError=class extends UndiciError{constructor(message,code,{headers,data}){super(message),this.name="RequestRetryError",this.message=message||"Request retry error",this.code="UND_ERR_REQ_RETRY",this.statusCode=code,this.data=data,this.headers=headers}static[Symbol.hasInstance](instance){return instance&&instance[kRequestRetryError]===!0}get[kRequestRetryError](){return!0}},kResponseError=Symbol.for("undici.error.UND_ERR_RESPONSE"),ResponseError2=class extends UndiciError{constructor(message,code,{headers,body}){super(message),this.name="ResponseError",this.message=message||"Response error",this.code="UND_ERR_RESPONSE",this.statusCode=code,this.body=body,this.headers=headers}static[Symbol.hasInstance](instance){return instance&&instance[kResponseError]===!0}get[kResponseError](){return!0}},kSecureProxyConnectionError=Symbol.for("undici.error.UND_ERR_PRX_TLS"),SecureProxyConnectionError=class extends UndiciError{constructor(cause,message,options={}){super(message,{cause,...options}),this.name="SecureProxyConnectionError",this.message=message||"Secure Proxy Connection failed",this.code="UND_ERR_PRX_TLS",this.cause=cause}static[Symbol.hasInstance](instance){return instance&&instance[kSecureProxyConnectionError]===!0}get[kSecureProxyConnectionError](){return!0}},kProxyConnectionError=Symbol.for("undici.error.UND_ERR_PRX_CONN"),ProxyConnectionError=class extends UndiciError{constructor(cause,message,options={}){super(message,{cause,...options}),this.name="ProxyConnectionError",this.message=message||"Proxy Connection failed",this.code="UND_ERR_PRX_CONN",this.cause=cause}static[Symbol.hasInstance](instance){return instance&&instance[kProxyConnectionError]===!0}get[kProxyConnectionError](){return!0}},kMaxOriginsReachedError=Symbol.for("undici.error.UND_ERR_MAX_ORIGINS_REACHED"),MaxOriginsReachedError=class extends UndiciError{constructor(message){super(message),this.name="MaxOriginsReachedError",this.message=message||"Maximum allowed origins reached",this.code="UND_ERR_MAX_ORIGINS_REACHED"}static[Symbol.hasInstance](instance){return instance&&instance[kMaxOriginsReachedError]===!0}get[kMaxOriginsReachedError](){return!0}},Socks5ProxyError=class extends UndiciError{constructor(message,code){super(message),this.name="Socks5ProxyError",this.message=message||"SOCKS5 proxy error",this.code=code||"UND_ERR_SOCKS5"}},kMessageSizeExceededError=Symbol.for("undici.error.UND_ERR_WS_MESSAGE_SIZE_EXCEEDED"),MessageSizeExceededError=class extends UndiciError{constructor(message){super(message),this.name="MessageSizeExceededError",this.message=message||"Max decompressed message size exceeded",this.code="UND_ERR_WS_MESSAGE_SIZE_EXCEEDED"}static[Symbol.hasInstance](instance){return instance&&instance[kMessageSizeExceededError]===!0}get[kMessageSizeExceededError](){return!0}};module.exports={AbortError,HTTPParserError,UndiciError,HeadersTimeoutError,HeadersOverflowError,BodyTimeoutError,RequestContentLengthMismatchError,ConnectTimeoutError,InvalidArgumentError,InvalidReturnValueError,RequestAbortedError,ClientDestroyedError,ClientClosedError,InformationalError,SocketError,NotSupportedError,ResponseContentLengthMismatchError,BalancedPoolMissingUpstreamError,ResponseExceededMaxSizeError,RequestRetryError,ResponseError:ResponseError2,SecureProxyConnectionError,ProxyConnectionError,MaxOriginsReachedError,Socks5ProxyError,MessageSizeExceededError}}});var require_constants=__commonJS({"node_modules/undici/lib/core/constants.js"(exports,module){"use strict";var wellknownHeaderNames=["Accept","Accept-Encoding","Accept-Language","Accept-Ranges","Access-Control-Allow-Credentials","Access-Control-Allow-Headers","Access-Control-Allow-Methods","Access-Control-Allow-Origin","Access-Control-Expose-Headers","Access-Control-Max-Age","Access-Control-Request-Headers","Access-Control-Request-Method","Age","Allow","Alt-Svc","Alt-Used","Authorization","Cache-Control","Clear-Site-Data","Connection","Content-Disposition","Content-Encoding","Content-Language","Content-Length","Content-Location","Content-Range","Content-Security-Policy","Content-Security-Policy-Report-Only","Content-Type","Cookie","Cross-Origin-Embedder-Policy","Cross-Origin-Opener-Policy","Cross-Origin-Resource-Policy","Date","Device-Memory","Downlink","ECT","ETag","Expect","Expect-CT","Expires","Forwarded","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Keep-Alive","Last-Modified","Link","Location","Max-Forwards","Origin","Permissions-Policy","Pragma","Proxy-Authenticate","Proxy-Authorization","RTT","Range","Referer","Referrer-Policy","Refresh","Retry-After","Sec-WebSocket-Accept","Sec-WebSocket-Extensions","Sec-WebSocket-Key","Sec-WebSocket-Protocol","Sec-WebSocket-Version","Server","Server-Timing","Service-Worker-Allowed","Service-Worker-Navigation-Preload","Set-Cookie","SourceMap","Strict-Transport-Security","Supports-Loading-Mode","TE","Timing-Allow-Origin","Trailer","Transfer-Encoding","Upgrade","Upgrade-Insecure-Requests","User-Agent","Vary","Via","WWW-Authenticate","X-Content-Type-Options","X-DNS-Prefetch-Control","X-Frame-Options","X-Permitted-Cross-Domain-Policies","X-Powered-By","X-Requested-With","X-XSS-Protection"],headerNameLowerCasedRecord={};Object.setPrototypeOf(headerNameLowerCasedRecord,null);for(let i=0;i<wellknownHeaderNames.length;++i){let key=wellknownHeaderNames[i],lowerCasedKey=key.toLowerCase();headerNameLowerCasedRecord[key]=headerNameLowerCasedRecord[lowerCasedKey]=lowerCasedKey}module.exports={wellknownHeaderNames,headerNameLowerCasedRecord}}});var require_tree=__commonJS({"node_modules/undici/lib/core/tree.js"(exports,module){"use strict";var{wellknownHeaderNames,headerNameLowerCasedRecord}=require_constants(),TstNode=class _TstNode{value=null;left=null;middle=null;right=null;code;constructor(key,value,index){if(index===void 0||index>=key.length)throw new TypeError("Unreachable");if((this.code=key.charCodeAt(index))>127)throw new TypeError("key must be ascii string");key.length!==++index?this.middle=new _TstNode(key,value,index):this.value=value}add(key,value){let length=key.length;if(length===0)throw new TypeError("Unreachable");let index=0,node=this;for(;;){let code=key.charCodeAt(index);if(code>127)throw new TypeError("key must be ascii string");if(node.code===code)if(length===++index){node.value=value;break}else if(node.middle!==null)node=node.middle;else{node.middle=new _TstNode(key,value,index);break}else if(node.code<code)if(node.left!==null)node=node.left;else{node.left=new _TstNode(key,value,index);break}else if(node.right!==null)node=node.right;else{node.right=new _TstNode(key,value,index);break}}}search(key){let keylength=key.length,index=0,node=this;for(;node!==null&&index<keylength;){let code=key[index];for(code<=90&&code>=65&&(code|=32);node!==null;){if(code===node.code){if(keylength===++index)return node;node=node.middle;break}node=node.code<code?node.left:node.right}}return null}},TernarySearchTree=class{node=null;insert(key,value){this.node===null?this.node=new TstNode(key,value,0):this.node.add(key,value)}lookup(key){return this.node?.search(key)?.value??null}},tree=new TernarySearchTree;for(let i=0;i<wellknownHeaderNames.length;++i){let key=headerNameLowerCasedRecord[wellknownHeaderNames[i]];tree.insert(key,key)}module.exports={TernarySearchTree,tree}}});var require_util=__commonJS({"node_modules/undici/lib/core/util.js"(exports,module){"use strict";var assert=__require("node:assert"),{kDestroyed,kBodyUsed,kListeners,kBody}=require_symbols(),{IncomingMessage}=__require("node:http"),stream2=__require("node:stream"),net=__require("node:net"),{stringify}=__require("node:querystring"),{EventEmitter:EE,addAbortListener:addAbortListenerNative}=__require("node:events"),timers=require_timers(),{InvalidArgumentError,ConnectTimeoutError}=require_errors(),{headerNameLowerCasedRecord}=require_constants(),{tree}=require_tree(),BodyAsyncIterable=class{constructor(body){this[kBody]=body,this[kBodyUsed]=!1}async*[Symbol.asyncIterator](){assert(!this[kBodyUsed],"disturbed"),this[kBodyUsed]=!0,yield*this[kBody]}};function noop(){}function wrapRequestBody(body){return isStream(body)?(bodyLength(body)===0&&body.on("data",function(){assert(!1)}),typeof body.readableDidRead!="boolean"&&(body[kBodyUsed]=!1,EE.prototype.on.call(body,"data",function(){this[kBodyUsed]=!0})),body):body&&typeof body.pipeTo=="function"?new BodyAsyncIterable(body):body&&isFormDataLike(body)?body:body&&typeof body!="string"&&!ArrayBuffer.isView(body)&&isIterable(body)?new BodyAsyncIterable(body):body}function isStream(obj){return obj&&typeof obj=="object"&&typeof obj.pipe=="function"&&typeof obj.on=="function"}function isBlobLike(object2){return object2 instanceof Blob}function pathHasQueryOrFragment(url){return url.includes("?")||url.includes("#")}function serializePathWithQuery(url,queryParams){if(pathHasQueryOrFragment(url))throw new Error('Query params cannot be passed when url already contains "?" or "#".');let stringified=stringify(queryParams);return stringified&&(url+="?"+stringified),url}function isValidPort(port){let value=parseInt(port,10);return value===Number(port)&&value>=0&&value<=65535}function isHttpOrHttpsPrefixed(value){return value!=null&&value[0]==="h"&&value[1]==="t"&&value[2]==="t"&&value[3]==="p"&&(value[4]===":"||value[4]==="s"&&value[5]===":")}function parseURL(url){if(typeof url=="string"){if(url=new URL(url),!isHttpOrHttpsPrefixed(url.origin||url.protocol))throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`.");return url}if(!url||typeof url!="object")throw new InvalidArgumentError("Invalid URL: The URL argument must be a non-null object.");if(!(url instanceof URL)){if(url.port!=null&&url.port!==""&&isValidPort(url.port)===!1)throw new InvalidArgumentError("Invalid URL: port must be a valid integer or a string representation of an integer.");if(url.path!=null&&typeof url.path!="string")throw new InvalidArgumentError("Invalid URL path: the path must be a string or null/undefined.");if(url.pathname!=null&&typeof url.pathname!="string")throw new InvalidArgumentError("Invalid URL pathname: the pathname must be a string or null/undefined.");if(url.hostname!=null&&typeof url.hostname!="string")throw new InvalidArgumentError("Invalid URL hostname: the hostname must be a string or null/undefined.");if(url.origin!=null&&typeof url.origin!="string")throw new InvalidArgumentError("Invalid URL origin: the origin must be a string or null/undefined.");if(!isHttpOrHttpsPrefixed(url.origin||url.protocol))throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`.");let port=url.port!=null?url.port:url.protocol==="https:"?443:80,origin=url.origin!=null?url.origin:`${url.protocol||""}//${url.hostname||""}:${port}`,path10=url.path!=null?url.path:`${url.pathname||""}${url.search||""}`;return origin[origin.length-1]==="/"&&(origin=origin.slice(0,origin.length-1)),path10&&path10[0]!=="/"&&(path10=`/${path10}`),new URL(`${origin}${path10}`)}if(!isHttpOrHttpsPrefixed(url.origin||url.protocol))throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`.");return url}function parseOrigin(url){if(url=parseURL(url),url.pathname!=="/"||url.search||url.hash)throw new InvalidArgumentError("invalid url");return url}function getHostname(host){if(host[0]==="["){let idx2=host.indexOf("]");return assert(idx2!==-1),host.substring(1,idx2)}let idx=host.indexOf(":");return idx===-1?host:host.substring(0,idx)}function getServerName(host){if(!host)return null;assert(typeof host=="string");let servername=getHostname(host);return net.isIP(servername)?"":servername}function deepClone(obj){return JSON.parse(JSON.stringify(obj))}function isAsyncIterable(obj){return obj!=null&&typeof obj[Symbol.asyncIterator]=="function"}function isIterable(obj){return obj!=null&&(typeof obj[Symbol.iterator]=="function"||typeof obj[Symbol.asyncIterator]=="function")}function hasSafeIterator(obj){let prototype=Object.getPrototypeOf(obj);return Object.hasOwn(obj,Symbol.iterator)||prototype!=null&&prototype!==Object.prototype&&typeof obj[Symbol.iterator]=="function"}function bodyLength(body){if(body==null)return 0;if(isStream(body)){let state=body._readableState;return state&&state.objectMode===!1&&state.ended===!0&&Number.isFinite(state.length)?state.length:null}else{if(isBlobLike(body))return body.size!=null?body.size:null;if(isBuffer(body))return body.byteLength}return null}function isDestroyed(body){return body&&!!(body.destroyed||body[kDestroyed]||stream2.isDestroyed?.(body))}function destroy(stream3,err){if(!(stream3==null||!isStream(stream3)||isDestroyed(stream3))){if(typeof stream3.destroy=="function"){Object.getPrototypeOf(stream3).constructor===IncomingMessage&&(stream3.socket=null);try{stream3.destroy(err)}catch{}}else err&&queueMicrotask(()=>{stream3.emit("error",err)});stream3.destroyed!==!0&&(stream3[kDestroyed]=!0)}}var KEEPALIVE_TIMEOUT_EXPR=/timeout=(\d+)/;function parseKeepAliveTimeout(val){let m=val.match(KEEPALIVE_TIMEOUT_EXPR);return m?parseInt(m[1],10)*1e3:null}function headerNameToString(value){return typeof value=="string"?headerNameLowerCasedRecord[value]??value.toLowerCase():tree.lookup(value)??value.toString("latin1").toLowerCase()}function bufferToLowerCasedHeaderName(value){return tree.lookup(value)??value.toString("latin1").toLowerCase()}function parseHeaders(headers,obj){obj===void 0&&(obj={});for(let i=0;i<headers.length;i+=2){let key=headerNameToString(headers[i]),val=obj[key];if(val!==void 0)if(Object.hasOwn(obj,key))typeof val=="string"&&(val=[val],obj[key]=val),val.push(headers[i+1].toString("latin1"));else{let headersValue=typeof headers[i+1]=="string"?headers[i+1]:Array.isArray(headers[i+1])?headers[i+1].map(x=>x.toString("latin1")):headers[i+1].toString("latin1");key==="__proto__"?Object.defineProperty(obj,key,{value:headersValue,enumerable:!0,configurable:!0,writable:!0}):obj[key]=headersValue}else{let headersValue=typeof headers[i+1]=="string"?headers[i+1]:Array.isArray(headers[i+1])?headers[i+1].map(x=>x.toString("latin1")):headers[i+1].toString("latin1");obj[key]=headersValue}}return obj}function parseRawHeaders(headers){if(headers==null)return[];if(!Array.isArray(headers)){let rawHeaders=[];for(let[name,value]of Object.entries(headers))if(Array.isArray(value))for(let entry of value)rawHeaders.push(name,`${entry}`);else rawHeaders.push(name,`${value}`);return rawHeaders}let headersLength=headers.length,ret=new Array(headersLength),key,val;for(let n=0;n<headersLength;n+=2)key=headers[n],val=headers[n+1],typeof key!="string"&&(key=key.toString()),typeof val!="string"&&(val=val.toString("latin1")),ret[n]=key,ret[n+1]=val;return ret}function toRawHeaders(headers){let rawHeaders=[];for(let[name,value]of Object.entries(headers))if(Array.isArray(value))for(let entry of value)rawHeaders.push(Buffer.from(name,"latin1"),Buffer.from(`${entry}`,"latin1"));else rawHeaders.push(Buffer.from(name,"latin1"),Buffer.from(`${value}`,"latin1"));return rawHeaders}function encodeRawHeaders(headers){if(!Array.isArray(headers))throw new TypeError("expected headers to be an array");return headers.map(x=>Buffer.from(x))}function isBuffer(buffer){return buffer instanceof Uint8Array||Buffer.isBuffer(buffer)}function assertRequestHandler(handler,method,upgrade){if(!handler||typeof handler!="object")throw new InvalidArgumentError("handler must be an object");if(typeof handler.onRequestStart!="function")throw new InvalidArgumentError("invalid onRequestStart method");if(typeof handler.onResponseError!="function")throw new InvalidArgumentError("invalid onResponseError method");if(typeof handler.onBodySent!="function"&&handler.onBodySent!==void 0)throw new InvalidArgumentError("invalid onBodySent method");if(typeof handler.onRequestSent!="function"&&handler.onRequestSent!==void 0)throw new InvalidArgumentError("invalid onRequestSent method");if(upgrade||method==="CONNECT"){if(typeof handler.onRequestUpgrade!="function")throw new InvalidArgumentError("invalid onRequestUpgrade method")}else{if(typeof handler.onResponseStart!="function")throw new InvalidArgumentError("invalid onResponseStart method");if(typeof handler.onResponseData!="function")throw new InvalidArgumentError("invalid onResponseData method");if(typeof handler.onResponseEnd!="function")throw new InvalidArgumentError("invalid onResponseEnd method")}}function isDisturbed(body){return!!(body&&(stream2.isDisturbed(body)||body[kBodyUsed]))}function getSocketInfo(socket){return{localAddress:socket.localAddress,localPort:socket.localPort,remoteAddress:socket.remoteAddress,remotePort:socket.remotePort,remoteFamily:socket.remoteFamily,timeout:socket.timeout,bytesWritten:socket.bytesWritten,bytesRead:socket.bytesRead}}function ReadableStreamFrom(iterable){let iterator;return new ReadableStream({start(){iterator=iterable[Symbol.asyncIterator]()},pull(controller){return iterator.next().then(({done,value})=>{if(done)return queueMicrotask(()=>{controller.close(),controller.byobRequest?.respond(0)});{let buf=Buffer.isBuffer(value)?value:Buffer.from(value);return buf.byteLength?controller.enqueue(new Uint8Array(buf)):this.pull(controller)}})},cancel(){return iterator.return()},type:"bytes"})}function isFormDataLike(object2){return object2&&typeof object2=="object"&&typeof object2.append=="function"&&typeof object2.delete=="function"&&typeof object2.get=="function"&&typeof object2.getAll=="function"&&typeof object2.has=="function"&&typeof object2.set=="function"&&object2[Symbol.toStringTag]==="FormData"}function addAbortListener(signal,listener){return!signal||"aborted"in signal?addAbortListenerNative(signal,listener)[Symbol.dispose]:typeof signal.addEventListener=="function"?(signal.addEventListener("abort",listener,{once:!0}),()=>signal.removeEventListener("abort",listener)):(signal.once("abort",listener),()=>signal.removeListener("abort",listener))}var validTokenChars=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function isTokenCharCode(c){return validTokenChars[c]===1}var tokenRegExp=/^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/;function isValidHTTPToken(characters){if(characters.length>=12)return tokenRegExp.test(characters);if(characters.length===0)return!1;for(let i=0;i<characters.length;i++)if(validTokenChars[characters.charCodeAt(i)]!==1)return!1;return!0}var headerCharRegex=/[^\t\x20-\x7e\x80-\xff]/;function isValidHeaderValue(characters){return!headerCharRegex.test(characters)}var rangeHeaderRegex=/^bytes (\d+)-(\d+)\/(\d+|\*)?$/;function parseRangeHeader(range2){if(range2==null||range2==="")return{start:0,end:null,size:null};if(!range2)return null;let m=rangeHeaderRegex.exec(range2);return m?{start:parseInt(m[1]),end:m[2]?parseInt(m[2]):null,size:m[3]&&m[3]!=="*"?parseInt(m[3]):null}:null}function addListener(obj,name,listener){return(obj[kListeners]??=[]).push([name,listener]),obj.on(name,listener),obj}function removeAllListeners(obj){if(obj[kListeners]!=null){for(let[name,listener]of obj[kListeners])obj.removeListener(name,listener);obj[kListeners]=null}return obj}function errorRequest(client,request,err){try{request.onResponseError(err),assert(request.aborted)}catch(err2){client.emit("error",err2)}}var setupConnectTimeout=process.platform==="win32"?(socketWeakRef,opts)=>{if(!opts.timeout)return noop;let s1=null,s2=null,fastTimer=timers.setFastTimeout(()=>{s1=setImmediate(()=>{s2=setImmediate(()=>onConnectTimeout(socketWeakRef.deref(),opts))})},opts.timeout);return()=>{timers.clearFastTimeout(fastTimer),clearImmediate(s1),clearImmediate(s2)}}:(socketWeakRef,opts)=>{if(!opts.timeout)return noop;let s1=null,fastTimer=timers.setFastTimeout(()=>{s1=setImmediate(()=>{onConnectTimeout(socketWeakRef.deref(),opts)})},opts.timeout);return()=>{timers.clearFastTimeout(fastTimer),clearImmediate(s1)}};function onConnectTimeout(socket,opts){if(socket==null)return;let message="Connect Timeout Error";Array.isArray(socket.autoSelectFamilyAttemptedAddresses)?message+=` (attempted addresses: ${socket.autoSelectFamilyAttemptedAddresses.join(", ")},`:message+=` (attempted address: ${opts.hostname}:${opts.port},`,message+=` timeout: ${opts.timeout}ms)`,destroy(socket,new ConnectTimeoutError(message))}var lastUrlString=null,lastProtocol=null;function getProtocolFromUrlString(urlString){if(urlString===lastUrlString)return lastProtocol;let protocol=getProtocolFromUrlStringSlow(urlString);return lastUrlString=urlString,lastProtocol=protocol,protocol}function getProtocolFromUrlStringSlow(urlString){if(urlString[0]==="h"&&urlString[1]==="t"&&urlString[2]==="t"&&urlString[3]==="p")switch(urlString[4]){case":":return"http:";case"s":if(urlString[5]===":")return"https:"}return urlString.slice(0,urlString.indexOf(":")+1)}var kEnumerableProperty={__proto__:null,enumerable:!0},normalizedMethodRecordsBase={delete:"DELETE",DELETE:"DELETE",get:"GET",GET:"GET",head:"HEAD",HEAD:"HEAD",options:"OPTIONS",OPTIONS:"OPTIONS",post:"POST",POST:"POST",put:"PUT",PUT:"PUT",query:"QUERY",QUERY:"QUERY"},normalizedMethodRecords={...normalizedMethodRecordsBase,patch:"patch",PATCH:"PATCH"};Object.setPrototypeOf(normalizedMethodRecordsBase,null);Object.setPrototypeOf(normalizedMethodRecords,null);module.exports={kEnumerableProperty,isDisturbed,isBlobLike,parseOrigin,parseURL,getServerName,isStream,isIterable,hasSafeIterator,isAsyncIterable,isDestroyed,headerNameToString,bufferToLowerCasedHeaderName,addListener,removeAllListeners,errorRequest,parseRawHeaders,toRawHeaders,encodeRawHeaders,parseHeaders,parseKeepAliveTimeout,destroy,bodyLength,deepClone,ReadableStreamFrom,isBuffer,assertRequestHandler,getSocketInfo,isFormDataLike,pathHasQueryOrFragment,serializePathWithQuery,addAbortListener,isValidHTTPToken,isValidHeaderValue,isTokenCharCode,parseRangeHeader,normalizedMethodRecordsBase,normalizedMethodRecords,isValidPort,isHttpOrHttpsPrefixed,safeHTTPMethods:Object.freeze(["GET","HEAD","OPTIONS","TRACE"]),wrapRequestBody,setupConnectTimeout,getProtocolFromUrlString}}});var require_stats=__commonJS({"node_modules/undici/lib/util/stats.js"(exports,module){"use strict";var{kConnected,kPending,kRunning,kSize,kFree,kQueued}=require_symbols(),ClientStats=class{constructor(client){this.connected=client[kConnected],this.pending=client[kPending],this.running=client[kRunning],this.size=client[kSize]}},PoolStats=class{constructor(pool){this.connected=pool[kConnected],this.free=pool[kFree],this.pending=pool[kPending],this.queued=pool[kQueued],this.running=pool[kRunning],this.size=pool[kSize]}};module.exports={ClientStats,PoolStats}}});var require_diagnostics=__commonJS({"node_modules/undici/lib/core/diagnostics.js"(exports,module){"use strict";var diagnosticsChannel=__require("node:diagnostics_channel"),util=__require("node:util"),undiciDebugLog=util.debuglog("undici"),fetchDebuglog=util.debuglog("fetch"),websocketDebuglog=util.debuglog("websocket"),channels={beforeConnect:diagnosticsChannel.channel("undici:client:beforeConnect"),connected:diagnosticsChannel.channel("undici:client:connected"),connectError:diagnosticsChannel.channel("undici:client:connectError"),sendHeaders:diagnosticsChannel.channel("undici:client:sendHeaders"),create:diagnosticsChannel.channel("undici:request:create"),bodySent:diagnosticsChannel.channel("undici:request:bodySent"),bodyChunkSent:diagnosticsChannel.channel("undici:request:bodyChunkSent"),bodyChunkReceived:diagnosticsChannel.channel("undici:request:bodyChunkReceived"),headers:diagnosticsChannel.channel("undici:request:headers"),trailers:diagnosticsChannel.channel("undici:request:trailers"),error:diagnosticsChannel.channel("undici:request:error"),open:diagnosticsChannel.channel("undici:websocket:open"),close:diagnosticsChannel.channel("undici:websocket:close"),socketError:diagnosticsChannel.channel("undici:websocket:socket_error"),ping:diagnosticsChannel.channel("undici:websocket:ping"),pong:diagnosticsChannel.channel("undici:websocket:pong"),proxyConnected:diagnosticsChannel.channel("undici:proxy:connected")},isTrackingClientEvents=!1;function trackClientEvents(debugLog=undiciDebugLog){if(!isTrackingClientEvents){if(channels.beforeConnect.hasSubscribers||channels.connected.hasSubscribers||channels.connectError.hasSubscribers||channels.sendHeaders.hasSubscribers){isTrackingClientEvents=!0;return}isTrackingClientEvents=!0,diagnosticsChannel.subscribe("undici:client:beforeConnect",evt=>{let{connectParams:{version:version2,protocol,port,host}}=evt;debugLog("connecting to %s%s using %s%s",host,port?`:${port}`:"",protocol,version2)}),diagnosticsChannel.subscribe("undici:client:connected",evt=>{let{connectParams:{version:version2,protocol,port,host}}=evt;debugLog("connected to %s%s using %s%s",host,port?`:${port}`:"",protocol,version2)}),diagnosticsChannel.subscribe("undici:client:connectError",evt=>{let{connectParams:{version:version2,protocol,port,host},error}=evt;debugLog("connection to %s%s using %s%s errored - %s",host,port?`:${port}`:"",protocol,version2,error.message)}),diagnosticsChannel.subscribe("undici:client:sendHeaders",evt=>{let{request:{method,path:path10,origin}}=evt;debugLog("sending request to %s %s%s",method,origin,path10)})}}var isTrackingRequestEvents=!1;function trackRequestEvents(debugLog=undiciDebugLog){if(!isTrackingRequestEvents){if(channels.headers.hasSubscribers||channels.trailers.hasSubscribers||channels.error.hasSubscribers){isTrackingRequestEvents=!0;return}isTrackingRequestEvents=!0,diagnosticsChannel.subscribe("undici:request:headers",evt=>{let{request:{method,path:path10,origin},response:{statusCode}}=evt;debugLog("received response to %s %s%s - HTTP %d",method,origin,path10,statusCode)}),diagnosticsChannel.subscribe("undici:request:trailers",evt=>{let{request:{method,path:path10,origin}}=evt;debugLog("trailers received from %s %s%s",method,origin,path10)}),diagnosticsChannel.subscribe("undici:request:error",evt=>{let{request:{method,path:path10,origin},error}=evt;debugLog("request to %s %s%s errored - %s",method,origin,path10,error.message)})}}var isTrackingWebSocketEvents=!1;function trackWebSocketEvents(debugLog=websocketDebuglog){if(!isTrackingWebSocketEvents){if(channels.open.hasSubscribers||channels.close.hasSubscribers||channels.socketError.hasSubscribers||channels.ping.hasSubscribers||channels.pong.hasSubscribers){isTrackingWebSocketEvents=!0;return}isTrackingWebSocketEvents=!0,diagnosticsChannel.subscribe("undici:websocket:open",evt=>{if(evt.address!=null){let{address,port}=evt.address;debugLog("connection opened %s%s",address,port?`:${port}`:"")}else debugLog("connection opened")}),diagnosticsChannel.subscribe("undici:websocket:close",evt=>{let{websocket,code,reason}=evt;debugLog("closed connection to %s - %s %s",websocket.url,code,reason)}),diagnosticsChannel.subscribe("undici:websocket:socket_error",err=>{debugLog("connection errored - %s",err.message)}),diagnosticsChannel.subscribe("undici:websocket:ping",evt=>{debugLog("ping received")}),diagnosticsChannel.subscribe("undici:websocket:pong",evt=>{debugLog("pong received")})}}(undiciDebugLog.enabled||fetchDebuglog.enabled)&&(trackClientEvents(fetchDebuglog.enabled?fetchDebuglog:undiciDebugLog),trackRequestEvents(fetchDebuglog.enabled?fetchDebuglog:undiciDebugLog));websocketDebuglog.enabled&&(trackClientEvents(undiciDebugLog.enabled?undiciDebugLog:websocketDebuglog),trackWebSocketEvents(websocketDebuglog));module.exports={channels}}});var require_request=__commonJS({"node_modules/undici/lib/core/request.js"(exports,module){"use strict";var{InvalidArgumentError,NotSupportedError}=require_errors(),assert=__require("node:assert"),{isValidHTTPToken,isValidHeaderValue,isStream,destroy,isBuffer,isFormDataLike,isIterable,hasSafeIterator,isBlobLike,serializePathWithQuery,parseHeaders,assertRequestHandler,getServerName,normalizedMethodRecords,getProtocolFromUrlString}=require_util(),{channels}=require_diagnostics(),{headerNameLowerCasedRecord}=require_constants(),invalidPathRegex=/[^\u0021-\u00ff]/;function isValidContentLengthHeaderValue(val){if(typeof val!="string"||val.length===0)return!1;for(let i=0;i<val.length;i++){let charCode=val.charCodeAt(i);if(charCode<48||charCode>57)return!1}return!0}var kHandler=Symbol("handler"),kController=Symbol("controller"),kResume=Symbol("resume"),RequestController=class{#paused=!1;#reason=null;#aborted=!1;#abort;[kResume]=null;rawHeaders=null;rawTrailers=null;constructor(abort){this.#abort=abort}pause(){this.#paused=!0}resume(){this.#paused&&(this.#paused=!1,this[kResume]?.())}abort(reason){this.#aborted||(this.#aborted=!0,this.#reason=reason,this.#abort(reason))}get aborted(){return this.#aborted}get reason(){return this.#reason}get paused(){return this.#paused}},Request=class{constructor(origin,{path:path10,method,body,headers,query,idempotent,blocking,upgrade,headersTimeout,bodyTimeout,reset,expectContinue,servername,throwOnError,maxRedirections,typeOfService},handler){if(typeof path10!="string")throw new InvalidArgumentError("path must be a string");if(path10[0]!=="/"&&!(path10.startsWith("http://")||path10.startsWith("https://"))&&method!=="CONNECT")throw new InvalidArgumentError("path must be an absolute URL or start with a slash");if(invalidPathRegex.test(path10))throw new InvalidArgumentError("invalid request path");if(typeof method!="string")throw new InvalidArgumentError("method must be a string");if(normalizedMethodRecords[method]===void 0&&!isValidHTTPToken(method))throw new InvalidArgumentError("invalid request method");if(upgrade&&typeof upgrade!="string")throw new InvalidArgumentError("upgrade must be a string");if(upgrade&&!isValidHeaderValue(upgrade))throw new InvalidArgumentError("invalid upgrade header");if(headersTimeout!=null&&(!Number.isFinite(headersTimeout)||headersTimeout<0))throw new InvalidArgumentError("invalid headersTimeout");if(bodyTimeout!=null&&(!Number.isFinite(bodyTimeout)||bodyTimeout<0))throw new InvalidArgumentError("invalid bodyTimeout");if(reset!=null&&typeof reset!="boolean")throw new InvalidArgumentError("invalid reset");if(expectContinue!=null&&typeof expectContinue!="boolean")throw new InvalidArgumentError("invalid expectContinue");if(throwOnError!=null)throw new InvalidArgumentError("invalid throwOnError");if(maxRedirections!=null&&maxRedirections!==0)throw new InvalidArgumentError("maxRedirections is not supported, use the redirect interceptor");if(typeOfService!=null&&(!Number.isInteger(typeOfService)||typeOfService<0||typeOfService>255))throw new InvalidArgumentError("typeOfService must be an integer between 0 and 255");if(this.headersTimeout=headersTimeout,this.bodyTimeout=bodyTimeout,this.method=method,this.typeOfService=typeOfService,this.abort=null,body==null)this.body=null;else if(isStream(body)){this.body=body;let rState=this.body._readableState;(!rState||!rState.autoDestroy)&&(this.endHandler=function(){destroy(this)},this.body.on("end",this.endHandler)),this.errorHandler=err=>{this.abort?this.abort(err):this.error=err},this.body.on("error",this.errorHandler)}else if(isBuffer(body))this.body=body.byteLength?body:null;else if(ArrayBuffer.isView(body))this.body=body.buffer.byteLength?Buffer.from(body.buffer,body.byteOffset,body.byteLength):null;else if(body instanceof ArrayBuffer)this.body=body.byteLength?Buffer.from(body):null;else if(typeof body=="string")this.body=body.length?Buffer.from(body):null;else if(isFormDataLike(body)||isIterable(body)||isBlobLike(body))this.body=body;else throw new InvalidArgumentError("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable");if(this.completed=!1,this.aborted=!1,this.upgrade=upgrade||null,this.path=query?serializePathWithQuery(path10,query):path10,this.origin=origin,this.protocol=getProtocolFromUrlString(origin),this.idempotent=idempotent??(method==="HEAD"||method==="GET"||method==="QUERY"),this.blocking=blocking??this.method!=="HEAD",this.reset=reset??null,this.host=null,this.contentLength=null,this.contentType=null,this.headers=[],this.expectContinue=expectContinue??!1,Array.isArray(headers)){if(headers.length%2!==0)throw new InvalidArgumentError("headers array must be even");for(let i=0;i<headers.length;i+=2)processHeader(this,headers[i],headers[i+1])}else if(headers&&typeof headers=="object")if(hasSafeIterator(headers))for(let header of headers){if(!Array.isArray(header)||header.length!==2)throw new InvalidArgumentError("headers must be in key-value pair format");processHeader(this,header[0],header[1])}else{let keys=Object.keys(headers);for(let i=0;i<keys.length;++i)processHeader(this,keys[i],headers[keys[i]])}else if(headers!=null)throw new InvalidArgumentError("headers must be an object or an array");assertRequestHandler(handler,method,upgrade),this.servername=servername||getServerName(this.host)||null,this[kHandler]=handler,channels.create.hasSubscribers&&channels.create.publish({request:this})}onBodySent(chunk2){if(channels.bodyChunkSent.hasSubscribers&&channels.bodyChunkSent.publish({request:this,chunk:chunk2}),this[kHandler].onBodySent)try{return this[kHandler].onBodySent(chunk2)}catch(err){this.abort(err)}}onRequestSent(){if(channels.bodySent.hasSubscribers&&channels.bodySent.publish({request:this}),this[kHandler].onRequestSent)try{return this[kHandler].onRequestSent()}catch(err){this.abort(err)}}onRequestStart(abort,context){if(assert(!this.aborted),assert(!this.completed),this[kController]=new RequestController(abort),this.error){this[kController].abort(this.error);return}return this.abort=abort,this[kHandler].onRequestStart(this[kController],context)}onResponseStarted(){return this[kHandler].onResponseStarted?.()}onResponseStart(statusCode,headers,resume,statusText){assert(!this.aborted),assert(!this.completed),channels.headers.hasSubscribers&&channels.headers.publish({request:this,response:{statusCode,headers,statusText}});let controller=this[kController];controller&&(controller[kResume]=resume,controller.rawHeaders=headers);let parsedHeaders=Array.isArray(headers)?parseHeaders(headers):headers;try{return this[kHandler].onResponseStart?.(controller,statusCode,parsedHeaders,statusText),!controller?.paused}catch(err){return this.abort(err),!1}}onResponseData(chunk2){assert(!this.aborted),assert(!this.completed),channels.bodyChunkReceived.hasSubscribers&&channels.bodyChunkReceived.publish({request:this,chunk:chunk2});let controller=this[kController];try{return this[kHandler].onResponseData?.(controller,chunk2),!controller?.paused}catch(err){return this.abort(err),!1}}onRequestUpgrade(statusCode,headers,socket){assert(!this.aborted),assert(!this.completed);let controller=this[kController];controller&&(controller.rawHeaders=headers);let parsedHeaders=Array.isArray(headers)?parseHeaders(headers):headers;return this[kHandler].onRequestUpgrade?.(controller,statusCode,parsedHeaders,socket)}onResponseEnd(trailers){this.onFinally(),assert(!this.aborted),assert(!this.completed),this.completed=!0,channels.trailers.hasSubscribers&&channels.trailers.publish({request:this,trailers});let controller=this[kController];controller&&(controller.rawTrailers=trailers);let parsedTrailers=Array.isArray(trailers)?parseHeaders(trailers):trailers;try{return this[kHandler].onResponseEnd?.(controller,parsedTrailers)}catch(err){this.onResponseError(err)}}onResponseError(error){if(this.onFinally(),channels.error.hasSubscribers&&channels.error.publish({request:this,error}),this.aborted)return;this.aborted=!0;let controller=this[kController];return this[kHandler].onResponseError?.(controller,error)}onFinally(){this.errorHandler&&(this.body.off("error",this.errorHandler),this.errorHandler=null),this.endHandler&&(this.body.off("end",this.endHandler),this.endHandler=null)}addHeader(key,value){return processHeader(this,key,value),this}};function processHeader(request,key,val){if(val&&typeof val=="object"&&!Array.isArray(val))throw new InvalidArgumentError(`invalid ${key} header`);if(val===void 0)return;let headerName=headerNameLowerCasedRecord[key];if(headerName===void 0&&(headerName=key.toLowerCase(),headerNameLowerCasedRecord[headerName]===void 0&&!isValidHTTPToken(headerName)))throw new InvalidArgumentError("invalid header key");if(Array.isArray(val)){let arr=[];for(let i=0;i<val.length;i++)if(typeof val[i]=="string"){if(!isValidHeaderValue(val[i]))throw new InvalidArgumentError(`invalid ${key} header`);arr.push(val[i])}else if(val[i]===null)arr.push("");else{if(typeof val[i]=="object")throw new InvalidArgumentError(`invalid ${key} header`);{let str2=`${val[i]}`;if(!isValidHeaderValue(str2))throw new InvalidArgumentError(`invalid ${key} header`);arr.push(str2)}}val=arr}else if(typeof val=="string"){if(!isValidHeaderValue(val))throw new InvalidArgumentError(`invalid ${key} header`)}else if(val===null)val="";else if(val=`${val}`,!isValidHeaderValue(val))throw new InvalidArgumentError(`invalid ${key} header`);if(headerName==="host"){if(request.host!==null)throw new InvalidArgumentError("duplicate host header");if(typeof val!="string")throw new InvalidArgumentError("invalid host header");request.host=val}else if(headerName==="content-length"){if(request.contentLength!==null)throw new InvalidArgumentError("duplicate content-length header");if(!isValidContentLengthHeaderValue(val))throw new InvalidArgumentError("invalid content-length header");request.contentLength=parseInt(val,10)}else if(request.contentType===null&&headerName==="content-type")request.contentType=val,request.headers.push(key,val);else{if(headerName==="transfer-encoding"||headerName==="keep-alive"||headerName==="upgrade")throw new InvalidArgumentError(`invalid ${headerName} header`);if(headerName==="connection"){let value=typeof val=="string"?val:null;if(value===null)throw new InvalidArgumentError("invalid connection header");for(let token of value.toLowerCase().split(",")){let trimmed=token.trim();if(!isValidHTTPToken(trimmed))throw new InvalidArgumentError("invalid connection header");trimmed==="close"&&(request.reset=!0)}}else{if(headerName==="expect")throw new NotSupportedError("expect header not supported");request.headers.push(key,val)}}}module.exports=Request}});var require_dispatcher=__commonJS({"node_modules/undici/lib/dispatcher/dispatcher.js"(exports,module){"use strict";var EventEmitter3=__require("node:events"),{kOriginless,kUrl}=require_symbols(),Dispatcher=class extends EventEmitter3{dispatch(){throw new Error("not implemented")}close(){throw new Error("not implemented")}destroy(){throw new Error("not implemented")}compose(...args){let interceptors=Array.isArray(args[0])?args[0]:args,interceptorOrigin=this[kOriginless]===!0?null:this[kUrl]?.origin,dispatch=this.dispatch.bind(this);for(let interceptor of interceptors)if(interceptor!=null){if(typeof interceptor!="function")throw new TypeError(`invalid interceptor, expected function received ${typeof interceptor}`);if(dispatch=interceptor(dispatch,interceptorOrigin),dispatch==null||typeof dispatch!="function"||dispatch.length!==2)throw new TypeError("invalid interceptor")}let originalDispatch=dispatch,self=this;return dispatch=function(opts,handler){return opts&&typeof opts=="object"&&!opts.origin&&self[kUrl]&&(opts=Object.assign({},opts,{origin:self[kUrl].origin})),originalDispatch(opts,handler)},new Proxy(this,{get:(target,key)=>key==="dispatch"?dispatch:target[key]})}};module.exports=Dispatcher}});var require_dispatcher_base=__commonJS({"node_modules/undici/lib/dispatcher/dispatcher-base.js"(exports,module){"use strict";var buffer=__require("node:buffer"),Dispatcher=require_dispatcher(),{ClientDestroyedError,ClientClosedError,InvalidArgumentError}=require_errors(),{kDestroy,kClose,kClosed,kDestroyed,kDispatch}=require_symbols(),kOnDestroyed=Symbol("onDestroyed"),kOnClosed=Symbol("onClosed"),kWebSocketOptions=Symbol("webSocketOptions"),kEventSourceOptions=Symbol("eventSourceOptions"),DispatcherBase=class extends Dispatcher{[kDestroyed]=!1;[kOnDestroyed]=null;[kClosed]=!1;[kOnClosed]=null;constructor(opts){super(),this[kWebSocketOptions]=opts?.webSocket??{},this[kEventSourceOptions]=opts?.eventSource??{}}get webSocketOptions(){return{maxFragments:this[kWebSocketOptions].maxFragments??131072,maxPayloadSize:this[kWebSocketOptions].maxPayloadSize??128*1024*1024}}get eventSourceOptions(){return{maxEventSize:this[kEventSourceOptions].maxEventSize??buffer.kStringMaxLength}}get destroyed(){return this[kDestroyed]}get closed(){return this[kClosed]}close(callback){if(callback===void 0)return new Promise((resolve17,reject)=>{this.close((err,data)=>err?reject(err):resolve17(data))});if(typeof callback!="function")throw new InvalidArgumentError("invalid callback");if(this[kDestroyed]){let err=new ClientDestroyedError;queueMicrotask(()=>callback(err,null));return}if(this[kClosed]){this[kOnClosed]?this[kOnClosed].push(callback):queueMicrotask(()=>callback(null,null));return}this[kClosed]=!0,this[kOnClosed]??=[],this[kOnClosed].push(callback);let onClosed=()=>{let callbacks=this[kOnClosed];this[kOnClosed]=null;for(let i=0;i<callbacks.length;i++)callbacks[i](null,null)};this[kClose]().then(()=>this.destroy()).then(()=>queueMicrotask(onClosed))}destroy(err,callback){if(typeof err=="function"&&(callback=err,err=null),callback===void 0)return new Promise((resolve17,reject)=>{this.destroy(err,(err2,data)=>err2?reject(err2):resolve17(data))});if(typeof callback!="function")throw new InvalidArgumentError("invalid callback");if(this[kDestroyed]){this[kOnDestroyed]?this[kOnDestroyed].push(callback):queueMicrotask(()=>callback(null,null));return}err||(err=new ClientDestroyedError),this[kDestroyed]=!0,this[kOnDestroyed]??=[],this[kOnDestroyed].push(callback);let onDestroyed=()=>{let callbacks=this[kOnDestroyed];this[kOnDestroyed]=null;for(let i=0;i<callbacks.length;i++)callbacks[i](null,null)};this[kDestroy](err).then(()=>queueMicrotask(onDestroyed))}dispatch(opts,handler){if(!handler||typeof handler!="object")throw new InvalidArgumentError("handler must be an object");try{if(!opts||typeof opts!="object")throw new InvalidArgumentError("opts must be an object.");if(opts.dispatcher)throw new InvalidArgumentError("opts.dispatcher is not supported by instance methods. Pass opts.dispatcher to the top-level undici functions or call the dispatcher instance method directly.");if(this[kDestroyed]||this[kOnDestroyed])throw new ClientDestroyedError;if(this[kClosed])throw new ClientClosedError;return this[kDispatch](opts,handler)}catch(err){if(typeof handler.onResponseError!="function")throw err;return handler.onResponseError(null,err),!1}}};module.exports=DispatcherBase}});var require_connect=__commonJS({"node_modules/undici/lib/core/connect.js"(exports,module){"use strict";var net=__require("node:net"),assert=__require("node:assert"),util=require_util(),{InvalidArgumentError,ConnectTimeoutError}=require_errors(),tls,SessionCache=class{constructor(maxCachedSessions){this._maxCachedSessions=maxCachedSessions,this._sessionCache=new Map,this._sessionRegistry=new FinalizationRegistry(key=>{if(this._sessionCache.size<this._maxCachedSessions)return;let ref=this._sessionCache.get(key);ref!==void 0&&ref.deref()===void 0&&this._sessionCache.delete(key)})}get(sessionKey){let ref=this._sessionCache.get(sessionKey);return ref?ref.deref():null}set(sessionKey,session){if(this._maxCachedSessions!==0){if(this._sessionCache.has(sessionKey))this._sessionCache.delete(sessionKey);else if(this._sessionCache.size>=this._maxCachedSessions){for(let[key,ref]of this._sessionCache)if(ref.deref()===void 0){this._sessionCache.delete(key);return}let oldest=this._sessionCache.keys().next();oldest.done||this._sessionCache.delete(oldest.value)}this._sessionCache.set(sessionKey,new WeakRef(session)),this._sessionRegistry.register(session,sessionKey)}}};function buildConnector({allowH2,preferH2,useH2c,maxCachedSessions,socketPath,timeout,session:customSession,...opts}){if(maxCachedSessions!=null&&(!Number.isInteger(maxCachedSessions)||maxCachedSessions<0))throw new InvalidArgumentError("maxCachedSessions must be a positive integer or zero");let options={path:socketPath,...opts},sessionCache=new SessionCache(maxCachedSessions??100);return timeout=timeout??1e4,allowH2=allowH2??!0,function({hostname:hostname3,host,protocol,port,servername,localAddress,httpSocket},callback){let socket;if(protocol==="https:"){tls||(tls=__require("node:tls")),servername=servername||options.servername||util.getServerName(host)||null;let sessionKey=servername||hostname3;assert(sessionKey);let session=customSession||sessionCache.get(sessionKey)||null;port=port||443,socket=tls.connect({highWaterMark:16384,...options,servername,session,localAddress,ALPNProtocols:allowH2?preferH2?["h2","http/1.1"]:["http/1.1","h2"]:["http/1.1"],socket:httpSocket,port,host:hostname3}),socket.on("session",function(session2){sessionCache.set(sessionKey,session2)})}else{assert(!httpSocket,"httpSocket can only be sent on TLS update"),port=port||80;let connectOptions={highWaterMark:64*1024,...options,localAddress,port,host:hostname3},family=net.isIP(hostname3);family!==0&&servername&&servername!==hostname3&&(connectOptions.host=servername,connectOptions.lookup=(_hostname,lookupOptions,cb)=>{lookupOptions.all?cb(null,[{address:hostname3,family}]):cb(null,hostname3,family)}),socket=net.connect(connectOptions),useH2c===!0&&(socket.alpnProtocol="h2")}if(options.keepAlive==null||options.keepAlive){let keepAliveInitialDelay=options.keepAliveInitialDelay===void 0?6e4:options.keepAliveInitialDelay;socket.setKeepAlive(!0,keepAliveInitialDelay)}let clearConnectTimeout=util.setupConnectTimeout(new WeakRef(socket),{timeout,hostname:hostname3,port});return socket.setNoDelay(!0).once(protocol==="https:"?"secureConnect":"connect",function(){if(queueMicrotask(clearConnectTimeout),callback){let cb=callback;callback=null,cb(null,this)}}).on("error",function(err){if(queueMicrotask(clearConnectTimeout),callback){let cb=callback;callback=null,cb(maybeNormalizeConnectError(err,this,{timeout,hostname:hostname3,port}))}}),socket}}function maybeNormalizeConnectError(err,socket,opts){if(err instanceof AggregateError&&(err.code==="ETIMEDOUT"||err.errors.some(e=>e!=null&&e.code==="ETIMEDOUT"))){let message="Connect Timeout Error";Array.isArray(socket.autoSelectFamilyAttemptedAddresses)?message+=` (attempted addresses: ${socket.autoSelectFamilyAttemptedAddresses.join(", ")},`:message+=` (attempted address: ${opts.hostname}:${opts.port},`,message+=` timeout: ${opts.timeout}ms)`;let wrapped=new ConnectTimeoutError(message);return wrapped.cause=err,wrapped}return err}module.exports=buildConnector}});var require_utils=__commonJS({"node_modules/undici/lib/llhttp/utils.js"(exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.enumToMap=enumToMap;function enumToMap(obj,filter2=[],exceptions=[]){let emptyFilter=(filter2?.length??0)===0,emptyExceptions=(exceptions?.length??0)===0;return Object.fromEntries(Object.entries(obj).filter(([,value])=>typeof value=="number"&&(emptyFilter||filter2.includes(value))&&(emptyExceptions||!exceptions.includes(value))))}}});var require_constants2=__commonJS({"node_modules/undici/lib/llhttp/constants.js"(exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.SPECIAL_HEADERS=exports.MINOR=exports.MAJOR=exports.HTAB_SP_VCHAR_OBS_TEXT=exports.QUOTED_STRING=exports.CONNECTION_TOKEN_CHARS=exports.HEADER_CHARS=exports.TOKEN=exports.HEX=exports.URL_CHAR=exports.USERINFO_CHARS=exports.MARK=exports.ALPHANUM=exports.NUM=exports.HEX_MAP=exports.NUM_MAP=exports.ALPHA=exports.STATUSES_HTTP=exports.H_METHOD_MAP=exports.METHOD_MAP=exports.METHODS_RTSP=exports.METHODS_ICE=exports.METHODS_HTTP=exports.HEADER_STATE=exports.FINISH=exports.STATUSES=exports.METHODS=exports.LENIENT_FLAGS=exports.FLAGS=exports.TYPE=exports.ERROR=void 0;var utils_1=require_utils();exports.ERROR={OK:0,INTERNAL:1,STRICT:2,CR_EXPECTED:25,LF_EXPECTED:3,UNEXPECTED_CONTENT_LENGTH:4,UNEXPECTED_SPACE:30,CLOSED_CONNECTION:5,INVALID_METHOD:6,INVALID_URL:7,INVALID_CONSTANT:8,INVALID_VERSION:9,INVALID_HEADER_TOKEN:10,INVALID_CONTENT_LENGTH:11,INVALID_CHUNK_SIZE:12,INVALID_STATUS:13,INVALID_EOF_STATE:14,INVALID_TRANSFER_ENCODING:15,CB_MESSAGE_BEGIN:16,CB_HEADERS_COMPLETE:17,CB_MESSAGE_COMPLETE:18,CB_CHUNK_HEADER:19,CB_CHUNK_COMPLETE:20,PAUSED:21,PAUSED_UPGRADE:22,PAUSED_H2_UPGRADE:23,USER:24,CB_URL_COMPLETE:26,CB_STATUS_COMPLETE:27,CB_METHOD_COMPLETE:32,CB_VERSION_COMPLETE:33,CB_HEADER_FIELD_COMPLETE:28,CB_HEADER_VALUE_COMPLETE:29,CB_CHUNK_EXTENSION_NAME_COMPLETE:34,CB_CHUNK_EXTENSION_VALUE_COMPLETE:35,CB_RESET:31,CB_PROTOCOL_COMPLETE:38};exports.TYPE={BOTH:0,REQUEST:1,RESPONSE:2};exports.FLAGS={CONNECTION_KEEP_ALIVE:1,CONNECTION_CLOSE:2,CONNECTION_UPGRADE:4,CHUNKED:8,UPGRADE:16,CONTENT_LENGTH:32,SKIPBODY:64,TRAILING:128,TRANSFER_ENCODING:512};exports.LENIENT_FLAGS={HEADERS:1,CHUNKED_LENGTH:2,KEEP_ALIVE:4,TRANSFER_ENCODING:8,VERSION:16,DATA_AFTER_CLOSE:32,OPTIONAL_LF_AFTER_CR:64,OPTIONAL_CRLF_AFTER_CHUNK:128,OPTIONAL_CR_BEFORE_LF:256,SPACES_AFTER_CHUNK_SIZE:512};exports.METHODS={DELETE:0,GET:1,HEAD:2,POST:3,PUT:4,CONNECT:5,OPTIONS:6,TRACE:7,COPY:8,LOCK:9,MKCOL:10,MOVE:11,PROPFIND:12,PROPPATCH:13,SEARCH:14,UNLOCK:15,BIND:16,REBIND:17,UNBIND:18,ACL:19,REPORT:20,MKACTIVITY:21,CHECKOUT:22,MERGE:23,"M-SEARCH":24,NOTIFY:25,SUBSCRIBE:26,UNSUBSCRIBE:27,PATCH:28,PURGE:29,MKCALENDAR:30,LINK:31,UNLINK:32,SOURCE:33,PRI:34,DESCRIBE:35,ANNOUNCE:36,SETUP:37,PLAY:38,PAUSE:39,TEARDOWN:40,GET_PARAMETER:41,SET_PARAMETER:42,REDIRECT:43,RECORD:44,FLUSH:45,QUERY:46};exports.STATUSES={CONTINUE:100,SWITCHING_PROTOCOLS:101,PROCESSING:102,EARLY_HINTS:103,RESPONSE_IS_STALE:110,REVALIDATION_FAILED:111,DISCONNECTED_OPERATION:112,HEURISTIC_EXPIRATION:113,MISCELLANEOUS_WARNING:199,OK:200,CREATED:201,ACCEPTED:202,NON_AUTHORITATIVE_INFORMATION:203,NO_CONTENT:204,RESET_CONTENT:205,PARTIAL_CONTENT:206,MULTI_STATUS:207,ALREADY_REPORTED:208,TRANSFORMATION_APPLIED:214,IM_USED:226,MISCELLANEOUS_PERSISTENT_WARNING:299,MULTIPLE_CHOICES:300,MOVED_PERMANENTLY:301,FOUND:302,SEE_OTHER:303,NOT_MODIFIED:304,USE_PROXY:305,SWITCH_PROXY:306,TEMPORARY_REDIRECT:307,PERMANENT_REDIRECT:308,BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,METHOD_NOT_ALLOWED:405,NOT_ACCEPTABLE:406,PROXY_AUTHENTICATION_REQUIRED:407,REQUEST_TIMEOUT:408,CONFLICT:409,GONE:410,LENGTH_REQUIRED:411,PRECONDITION_FAILED:412,PAYLOAD_TOO_LARGE:413,URI_TOO_LONG:414,UNSUPPORTED_MEDIA_TYPE:415,RANGE_NOT_SATISFIABLE:416,EXPECTATION_FAILED:417,IM_A_TEAPOT:418,PAGE_EXPIRED:419,ENHANCE_YOUR_CALM:420,MISDIRECTED_REQUEST:421,UNPROCESSABLE_ENTITY:422,LOCKED:423,FAILED_DEPENDENCY:424,TOO_EARLY:425,UPGRADE_REQUIRED:426,PRECONDITION_REQUIRED:428,TOO_MANY_REQUESTS:429,REQUEST_HEADER_FIELDS_TOO_LARGE_UNOFFICIAL:430,REQUEST_HEADER_FIELDS_TOO_LARGE:431,LOGIN_TIMEOUT:440,NO_RESPONSE:444,RETRY_WITH:449,BLOCKED_BY_PARENTAL_CONTROL:450,UNAVAILABLE_FOR_LEGAL_REASONS:451,CLIENT_CLOSED_LOAD_BALANCED_REQUEST:460,INVALID_X_FORWARDED_FOR:463,REQUEST_HEADER_TOO_LARGE:494,SSL_CERTIFICATE_ERROR:495,SSL_CERTIFICATE_REQUIRED:496,HTTP_REQUEST_SENT_TO_HTTPS_PORT:497,INVALID_TOKEN:498,CLIENT_CLOSED_REQUEST:499,INTERNAL_SERVER_ERROR:500,NOT_IMPLEMENTED:501,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504,HTTP_VERSION_NOT_SUPPORTED:505,VARIANT_ALSO_NEGOTIATES:506,INSUFFICIENT_STORAGE:507,LOOP_DETECTED:508,BANDWIDTH_LIMIT_EXCEEDED:509,NOT_EXTENDED:510,NETWORK_AUTHENTICATION_REQUIRED:511,WEB_SERVER_UNKNOWN_ERROR:520,WEB_SERVER_IS_DOWN:521,CONNECTION_TIMEOUT:522,ORIGIN_IS_UNREACHABLE:523,TIMEOUT_OCCURED:524,SSL_HANDSHAKE_FAILED:525,INVALID_SSL_CERTIFICATE:526,RAILGUN_ERROR:527,SITE_IS_OVERLOADED:529,SITE_IS_FROZEN:530,IDENTITY_PROVIDER_AUTHENTICATION_ERROR:561,NETWORK_READ_TIMEOUT:598,NETWORK_CONNECT_TIMEOUT:599};exports.FINISH={SAFE:0,SAFE_WITH_CB:1,UNSAFE:2};exports.HEADER_STATE={GENERAL:0,CONNECTION:1,CONTENT_LENGTH:2,TRANSFER_ENCODING:3,UPGRADE:4,CONNECTION_KEEP_ALIVE:5,CONNECTION_CLOSE:6,CONNECTION_UPGRADE:7,TRANSFER_ENCODING_CHUNKED:8};exports.METHODS_HTTP=[exports.METHODS.DELETE,exports.METHODS.GET,exports.METHODS.HEAD,exports.METHODS.POST,exports.METHODS.PUT,exports.METHODS.CONNECT,exports.METHODS.OPTIONS,exports.METHODS.TRACE,exports.METHODS.COPY,exports.METHODS.LOCK,exports.METHODS.MKCOL,exports.METHODS.MOVE,exports.METHODS.PROPFIND,exports.METHODS.PROPPATCH,exports.METHODS.SEARCH,exports.METHODS.UNLOCK,exports.METHODS.BIND,exports.METHODS.REBIND,exports.METHODS.UNBIND,exports.METHODS.ACL,exports.METHODS.REPORT,exports.METHODS.MKACTIVITY,exports.METHODS.CHECKOUT,exports.METHODS.MERGE,exports.METHODS["M-SEARCH"],exports.METHODS.NOTIFY,exports.METHODS.SUBSCRIBE,exports.METHODS.UNSUBSCRIBE,exports.METHODS.PATCH,exports.METHODS.PURGE,exports.METHODS.MKCALENDAR,exports.METHODS.LINK,exports.METHODS.UNLINK,exports.METHODS.PRI,exports.METHODS.SOURCE,exports.METHODS.QUERY];exports.METHODS_ICE=[exports.METHODS.SOURCE];exports.METHODS_RTSP=[exports.METHODS.OPTIONS,exports.METHODS.DESCRIBE,exports.METHODS.ANNOUNCE,exports.METHODS.SETUP,exports.METHODS.PLAY,exports.METHODS.PAUSE,exports.METHODS.TEARDOWN,exports.METHODS.GET_PARAMETER,exports.METHODS.SET_PARAMETER,exports.METHODS.REDIRECT,exports.METHODS.RECORD,exports.METHODS.FLUSH,exports.METHODS.GET,exports.METHODS.POST];exports.METHOD_MAP=(0,utils_1.enumToMap)(exports.METHODS);exports.H_METHOD_MAP=Object.fromEntries(Object.entries(exports.METHODS).filter(([k])=>k.startsWith("H")));exports.STATUSES_HTTP=[exports.STATUSES.CONTINUE,exports.STATUSES.SWITCHING_PROTOCOLS,exports.STATUSES.PROCESSING,exports.STATUSES.EARLY_HINTS,exports.STATUSES.RESPONSE_IS_STALE,exports.STATUSES.REVALIDATION_FAILED,exports.STATUSES.DISCONNECTED_OPERATION,exports.STATUSES.HEURISTIC_EXPIRATION,exports.STATUSES.MISCELLANEOUS_WARNING,exports.STATUSES.OK,exports.STATUSES.CREATED,exports.STATUSES.ACCEPTED,exports.STATUSES.NON_AUTHORITATIVE_INFORMATION,exports.STATUSES.NO_CONTENT,exports.STATUSES.RESET_CONTENT,exports.STATUSES.PARTIAL_CONTENT,exports.STATUSES.MULTI_STATUS,exports.STATUSES.ALREADY_REPORTED,exports.STATUSES.TRANSFORMATION_APPLIED,exports.STATUSES.IM_USED,exports.STATUSES.MISCELLANEOUS_PERSISTENT_WARNING,exports.STATUSES.MULTIPLE_CHOICES,exports.STATUSES.MOVED_PERMANENTLY,exports.STATUSES.FOUND,exports.STATUSES.SEE_OTHER,exports.STATUSES.NOT_MODIFIED,exports.STATUSES.USE_PROXY,exports.STATUSES.SWITCH_PROXY,exports.STATUSES.TEMPORARY_REDIRECT,exports.STATUSES.PERMANENT_REDIRECT,exports.STATUSES.BAD_REQUEST,exports.STATUSES.UNAUTHORIZED,exports.STATUSES.PAYMENT_REQUIRED,exports.STATUSES.FORBIDDEN,exports.STATUSES.NOT_FOUND,exports.STATUSES.METHOD_NOT_ALLOWED,exports.STATUSES.NOT_ACCEPTABLE,exports.STATUSES.PROXY_AUTHENTICATION_REQUIRED,exports.STATUSES.REQUEST_TIMEOUT,exports.STATUSES.CONFLICT,exports.STATUSES.GONE,exports.STATUSES.LENGTH_REQUIRED,exports.STATUSES.PRECONDITION_FAILED,exports.STATUSES.PAYLOAD_TOO_LARGE,exports.STATUSES.URI_TOO_LONG,exports.STATUSES.UNSUPPORTED_MEDIA_TYPE,exports.STATUSES.RANGE_NOT_SATISFIABLE,exports.STATUSES.EXPECTATION_FAILED,exports.STATUSES.IM_A_TEAPOT,exports.STATUSES.PAGE_EXPIRED,exports.STATUSES.ENHANCE_YOUR_CALM,exports.STATUSES.MISDIRECTED_REQUEST,exports.STATUSES.UNPROCESSABLE_ENTITY,exports.STATUSES.LOCKED,exports.STATUSES.FAILED_DEPENDENCY,exports.STATUSES.TOO_EARLY,exports.STATUSES.UPGRADE_REQUIRED,exports.STATUSES.PRECONDITION_REQUIRED,exports.STATUSES.TOO_MANY_REQUESTS,exports.STATUSES.REQUEST_HEADER_FIELDS_TOO_LARGE_UNOFFICIAL,exports.STATUSES.REQUEST_HEADER_FIELDS_TOO_LARGE,exports.STATUSES.LOGIN_TIMEOUT,exports.STATUSES.NO_RESPONSE,exports.STATUSES.RETRY_WITH,exports.STATUSES.BLOCKED_BY_PARENTAL_CONTROL,exports.STATUSES.UNAVAILABLE_FOR_LEGAL_REASONS,exports.STATUSES.CLIENT_CLOSED_LOAD_BALANCED_REQUEST,exports.STATUSES.INVALID_X_FORWARDED_FOR,exports.STATUSES.REQUEST_HEADER_TOO_LARGE,exports.STATUSES.SSL_CERTIFICATE_ERROR,exports.STATUSES.SSL_CERTIFICATE_REQUIRED,exports.STATUSES.HTTP_REQUEST_SENT_TO_HTTPS_PORT,exports.STATUSES.INVALID_TOKEN,exports.STATUSES.CLIENT_CLOSED_REQUEST,exports.STATUSES.INTERNAL_SERVER_ERROR,exports.STATUSES.NOT_IMPLEMENTED,exports.STATUSES.BAD_GATEWAY,exports.STATUSES.SERVICE_UNAVAILABLE,exports.STATUSES.GATEWAY_TIMEOUT,exports.STATUSES.HTTP_VERSION_NOT_SUPPORTED,exports.STATUSES.VARIANT_ALSO_NEGOTIATES,exports.STATUSES.INSUFFICIENT_STORAGE,exports.STATUSES.LOOP_DETECTED,exports.STATUSES.BANDWIDTH_LIMIT_EXCEEDED,exports.STATUSES.NOT_EXTENDED,exports.STATUSES.NETWORK_AUTHENTICATION_REQUIRED,exports.STATUSES.WEB_SERVER_UNKNOWN_ERROR,exports.STATUSES.WEB_SERVER_IS_DOWN,exports.STATUSES.CONNECTION_TIMEOUT,exports.STATUSES.ORIGIN_IS_UNREACHABLE,exports.STATUSES.TIMEOUT_OCCURED,exports.STATUSES.SSL_HANDSHAKE_FAILED,exports.STATUSES.INVALID_SSL_CERTIFICATE,exports.STATUSES.RAILGUN_ERROR,exports.STATUSES.SITE_IS_OVERLOADED,exports.STATUSES.SITE_IS_FROZEN,exports.STATUSES.IDENTITY_PROVIDER_AUTHENTICATION_ERROR,exports.STATUSES.NETWORK_READ_TIMEOUT,exports.STATUSES.NETWORK_CONNECT_TIMEOUT];exports.ALPHA=[];for(let i=65;i<=90;i++)exports.ALPHA.push(String.fromCharCode(i)),exports.ALPHA.push(String.fromCharCode(i+32));exports.NUM_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9};exports.HEX_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15};exports.NUM=["0","1","2","3","4","5","6","7","8","9"];exports.ALPHANUM=exports.ALPHA.concat(exports.NUM);exports.MARK=["-","_",".","!","~","*","'","(",")"];exports.USERINFO_CHARS=exports.ALPHANUM.concat(exports.MARK).concat(["%",";",":","&","=","+","$",","]);exports.URL_CHAR=["!",'"',"$","%","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","@","[","\\","]","^","_","`","{","|","}","~"].concat(exports.ALPHANUM);exports.HEX=exports.NUM.concat(["a","b","c","d","e","f","A","B","C","D","E","F"]);exports.TOKEN=["!","#","$","%","&","'","*","+","-",".","^","_","`","|","~"].concat(exports.ALPHANUM);exports.HEADER_CHARS=[" "];for(let i=32;i<=255;i++)i!==127&&exports.HEADER_CHARS.push(i);exports.CONNECTION_TOKEN_CHARS=exports.HEADER_CHARS.filter(c=>c!==44);exports.QUOTED_STRING=[" "," "];for(let i=33;i<=255;i++)i!==34&&i!==92&&exports.QUOTED_STRING.push(i);exports.HTAB_SP_VCHAR_OBS_TEXT=[" "," "];for(let i=33;i<=126;i++)exports.HTAB_SP_VCHAR_OBS_TEXT.push(i);for(let i=128;i<=255;i++)exports.HTAB_SP_VCHAR_OBS_TEXT.push(i);exports.MAJOR=exports.NUM_MAP;exports.MINOR=exports.MAJOR;exports.SPECIAL_HEADERS={connection:exports.HEADER_STATE.CONNECTION,"content-length":exports.HEADER_STATE.CONTENT_LENGTH,"proxy-connection":exports.HEADER_STATE.CONNECTION,"transfer-encoding":exports.HEADER_STATE.TRANSFER_ENCODING,upgrade:exports.HEADER_STATE.UPGRADE};exports.default={ERROR:exports.ERROR,TYPE:exports.TYPE,FLAGS:exports.FLAGS,LENIENT_FLAGS:exports.LENIENT_FLAGS,METHODS:exports.METHODS,STATUSES:exports.STATUSES,FINISH:exports.FINISH,HEADER_STATE:exports.HEADER_STATE,ALPHA:exports.ALPHA,NUM_MAP:exports.NUM_MAP,HEX_MAP:exports.HEX_MAP,NUM:exports.NUM,ALPHANUM:exports.ALPHANUM,MARK:exports.MARK,USERINFO_CHARS:exports.USERINFO_CHARS,URL_CHAR:exports.URL_CHAR,HEX:exports.HEX,TOKEN:exports.TOKEN,HEADER_CHARS:exports.HEADER_CHARS,CONNECTION_TOKEN_CHARS:exports.CONNECTION_TOKEN_CHARS,QUOTED_STRING:exports.QUOTED_STRING,HTAB_SP_VCHAR_OBS_TEXT:exports.HTAB_SP_VCHAR_OBS_TEXT,MAJOR:exports.MAJOR,MINOR:exports.MINOR,SPECIAL_HEADERS:exports.SPECIAL_HEADERS,METHODS_HTTP:exports.METHODS_HTTP,METHODS_ICE:exports.METHODS_ICE,METHODS_RTSP:exports.METHODS_RTSP,METHOD_MAP:exports.METHOD_MAP,H_METHOD_MAP:exports.H_METHOD_MAP,STATUSES_HTTP:exports.STATUSES_HTTP}}});var require_llhttp_wasm=__commonJS({"node_modules/undici/lib/llhttp/llhttp-wasm.js"(exports,module){"use strict";var{Buffer:Buffer2}=__require("node:buffer"),wasmBase64="AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzU0BQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEBAwAAAwAAAAQFAXABExMFAwEAAgYIAX8BQcDZBAsHxQcoBm1lbW9yeQIAC19pbml0aWFsaXplAAgZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAC2xsaHR0cF9pbml0AAkYbGxodHRwX3Nob3VsZF9rZWVwX2FsaXZlADcMbGxodHRwX2FsbG9jAAsGbWFsbG9jADkLbGxodHRwX2ZyZWUADARmcmVlAAwPbGxodHRwX2dldF90eXBlAA0VbGxodHRwX2dldF9odHRwX21ham9yAA4VbGxodHRwX2dldF9odHRwX21pbm9yAA8RbGxodHRwX2dldF9tZXRob2QAEBZsbGh0dHBfZ2V0X3N0YXR1c19jb2RlABESbGxodHRwX2dldF91cGdyYWRlABIMbGxodHRwX3Jlc2V0ABMObGxodHRwX2V4ZWN1dGUAFBRsbGh0dHBfc2V0dGluZ3NfaW5pdAAVDWxsaHR0cF9maW5pc2gAFgxsbGh0dHBfcGF1c2UAFw1sbGh0dHBfcmVzdW1lABgbbGxodHRwX3Jlc3VtZV9hZnRlcl91cGdyYWRlABkQbGxodHRwX2dldF9lcnJubwAaF2xsaHR0cF9nZXRfZXJyb3JfcmVhc29uABsXbGxodHRwX3NldF9lcnJvcl9yZWFzb24AHBRsbGh0dHBfZ2V0X2Vycm9yX3BvcwAdEWxsaHR0cF9lcnJub19uYW1lAB4SbGxodHRwX21ldGhvZF9uYW1lAB8SbGxodHRwX3N0YXR1c19uYW1lACAabGxodHRw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AXRrQT5qIQILIAEgAjYCHCABQgA3AhAgAkECdEH01wBqIQACQEHI1QAoAgAiA0EBIAJ0IgdxRQRAIAAgATYCAEHI1QAgAyAHcjYCACABIAA2AhggASABNgIIIAEgATYCDAwBCyAEQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQACQANAIAAiAygCBEF4cSAERg0BIAJBHXYhACACQQF0IQIgAyAAQQRxakEQaiIHKAIAIgANAAsgByABNgIAIAEgAzYCGCABIAE2AgwgASABNgIIDAELIAMoAggiACABNgIMIAMgATYCCCABQQA2AhggASADNgIMIAEgADYCCAtB5NUAQeTVACgCAEEBayIAQX8gABs2AgALCwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BNAsHACAALQAwC0ABBH8gACgCGCEBIAAvAS4hAiAALQAoIQMgACgCOCEEIAAQOCAAIAQ2AjggACADOgAoIAAgAjsBLiAAIAE2AhgL5YUCAgd/A34gASACaiEEAkAgACIDKAIMIgANACADKAIEBEAgAyABNgIECyMAQRBrIgkkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAygCHCICQQJrDvwBAfkBAgMEBQYHCAkKCwwNDg8QERL4ARP3ARQV9gEWF/UBGBkaGxwdHh8g/QH7ASH0ASIjJCUmJygpKivzASwtLi8wMTLyAfEBMzTwAe8BNTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5P+gFQUVJT7gHtAVTsAVXrAVZXWFla6gFbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcoBywHMAc0BzgHpAegBzwHnAdAB5gHRAdIB0wHUAeUB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMBAPwBC0EADOMBC0EODOIBC0ENDOEBC0EPDOABC0EQDN8BC0ETDN4BC0EUDN0BC0EVDNwBC0EWDNsBC0EXDNoBC0EYDNkBC0EZDNgBC0EaDNcBC0EbDNYBC0EcDNUBC0EdDNQBC0EeDNMBC0EfDNIBC0EgDNEBC0EhDNABC0EIDM8BC0EiDM4BC0EkDM0BC0EjDMwBC0EHDMsBC0ElDMoBC0EmDMkBC0EnDMgBC0EoDMcBC0ESDMYBC0ERDMUBC0EpDMQBC0EqDMMBC0ErDMIBC0EsDMEBC0HeAQzAAQtBLgy/AQtBLwy+AQtBMAy9AQtBMQy8AQtBMgy7AQtBMwy6AQtBNAy5AQtB3wEMuAELQTUMtwELQTkMtgELQQwMtQELQTYMtAELQTcMswELQTgMsgELQT4MsQELQToMsAELQeABDK8BC0ELDK4BC0E/DK0BC0E7DKwBC0EKDKsBC0E8DKoBC0E9DKkBC0HhAQyoAQtBwQAMpwELQcAADKYBC0HCAAylAQtBCQykAQtBLQyjAQtBwwAMogELQcQADKEBC0HFAAygAQtBxgAMnwELQccADJ4BC0HIAAydAQtByQAMnAELQcoADJsBC0HLAAyaAQtBzAAMmQELQc0ADJgBC0HOAAyXAQtBzwAMlgELQdAADJUBC0HRAAyUAQtB0gAMkwELQdMADJIBC0HVAAyRAQtB1AAMkAELQdYADI8BC0HXAAyOAQtB2AAMjQELQdkADIwBC0HaAAyLAQtB2wAMigELQdwADIkBC0HdAAyIAQtB3gAMhwELQd8ADIYBC0HgAAyFAQtB4QAMhAELQeIADIMBC0HjAAyCAQtB5AAMgQELQeUADIABC0HiAQx/C0HmAAx+C0HnAAx9C0EGDHwLQegADHsLQQUMegtB6QAMeQtBBAx4C0HqAAx3C0HrAAx2C0HsAAx1C0HtAAx0C0EDDHMLQe4ADHILQe8ADHELQfAADHALQfIADG8LQfEADG4LQfMADG0LQfQADGwLQfUADGsLQfYADGoLQQIMaQtB9wAMaAtB+AAMZwtB+QAMZgtB+gAMZQtB+wAMZAtB/AAMYwtB/QAMYgtB/gAMYQtB/wAMYAtBgAEMXwtBgQEMXgtBggEMXQtBgwEMXAtBhAEMWwtBhQEMWgtBhgEMWQtBhwEMWAtBiAEMVwtBiQEMVgtBigEMVQtBiwEMVAtBjAEMUwtBjQEMUgtBjgEMUQtBjwEMUAtBkAEMTwtBkQEMTgtBkgEMTQtBkwEMTAtBlAEMSwtBlQEMSgtBlgEMSQtBlwEMSAtBmAEMRwtBmQEMRgtBmgEMRQtBmwEMRAtBnAEMQwtBnQEMQgtBngEMQQtBnwEMQAtBoAEMPwtBoQEMPgtBogEMPQtBowEMPAtBpAEMOwtBpQEMOgtBpgEMOQtBpwEMOAtBqAEMNwtBqQEMNgtBqgEMNQtBqwEMNAtBrAEMMwtBrQEMMgtBrgEMMQtBrwEMMAtBsAEMLwtBsQEMLgtBsgEMLQtBswEMLAtBtAEMKwtBtQEMKgtBtgEMKQtBtwEMKAtBuAEMJwtBuQEMJgtBugEMJQtBuwEMJAtBvAEMIwtBvQEMIgtBvgEMIQtBvwEMIAtBwAEMHwtBwQEMHgtBwgEMHQtBAQwcC0HDAQwbC0HEAQwaC0HFAQwZC0HGAQwYC0HHAQwXC0HIAQwWC0HJAQwVC0HKAQwUC0HLAQwTC0HMAQwSC0HNAQwRC0HOAQwQC0HPAQwPC0HQAQwOC0HRAQwNC0HSAQwMC0HTAQwLC0HUAQwKC0HVAQwJC0HWAQwIC0HjAQwHC0HXAQwGC0HYAQwFC0HZAQwEC0HaAQwDC0HbAQwCC0HdAQwBC0HcAQshAgNAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJ/AkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAg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ogKiAqICogKiAqICogKiAqICogKiAqICogIAogILIAQgAUEBaiIBRw0AC0HJACECDOwCCyABQQFqIQEgA0Evai0AAEEBcQ2lAiADQQA2AhwgAyABNgIUIANBlxA2AhAgA0EKNgIMQQAhAgzrAgsgASAERwRAA0AgAS0AAEEgRw0VIAQgAUEBaiIBRw0AC0H4ACECDOsCC0H4ACECDOoCCyADQQI6ACgMOAtBACECIANBADYCHCADQb8LNgIQIANBAjYCDCADIAFBAWo2AhQM6AILQQAhAgzOAgtBDSECDM0CC0ETIQIMzAILQRUhAgzLAgtBFiECDMoCC0EYIQIMyQILQRkhAgzIAgtBGiECDMcCC0EbIQIMxgILQRwhAgzFAgtBHSECDMQCC0EeIQIMwwILQR8hAgzCAgtBICECDMECC0EiIQIMwAILQSMhAgy/AgtBJSECDL4CC0HlACECDL0CCyADQT02AhwgAyABNgIUIAMgADYCDEEAIQIM1QILIANBGzYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDNQCCyADQSA2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzTAgsgA0ETNgIcIAMgATYCFCADQZgaNgIQIANBFTYCDEEAIQIM0gILIANBCzYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNECCyADQRA2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzQAgsgA0EgNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIMzwILIANBCzYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDM4CCyADQQw2AhwgAyABNgIUIANBpBw2AhAgA0EVNgIMQQAhAgzNAgtBACECIANBADYCHCADIAE2AhQgA0HdDjYCECADQRI2AgwMzAILAkADQAJAIAEtAABBCmsOBAACAgACCyAEIAFBAWoiAUcNAAtB/QEhAgzMAgsCQAJAIAMtADZBAUcNAEEAIQACQCADKAI4IgJFDQAgAigCYCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUcNASADQfwBNgIcIAMgATYCFCADQdwZNgIQIANBFTYCDEEAIQIMzQILQdwBIQIMswILIANBADYCHCADIAE2AhQgA0H5CzYCECADQR82AgxBACECDMsCCwJAAkAgAy0AKEEBaw4CBAEAC0HbASECDLICC0HUASECDLECCyADQQI6ADFBACEAAkAgAygCOCICRQ0AIAIoAgAiAkUNACADIAIRAAAhAAsgAEUEQEHdASECDLECCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQbQMNgIQIANBEDYCDEEAIQIMygILIANB+wE2AhwgAyABNgIUIANBgRo2AhAgA0EVNgIMQQAhAgzJAgsgASAERgRAQfoBIQIMyQILIAEtAABByABGDQEgA0EBOgAoC0HAASECDK4CC0HaASECDK0CCyABIARHBEAgA0EMNgIIIAMgATYCBEHZASECDK0CC0H5ASECDMUCCyABIARGBEBB+AEhAgzFAgsgAS0AAEHIAEcNBCABQQFqIQFB2AEhAgyrAgsgASAERgRAQfcBIQIMxAILAkACQCABLQAAQcUAaw4QAAUFBQUFBQUFBQUFBQUFAQULIAFBAWohAUHWASECDKsCCyABQQFqIQFB1wEhAgyqAgtB9gEhAiABIARGDcICIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbrVAGotAABHDQMgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMMCCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQLiIARQRAQeMBIQIMqgILIANB9QE2AhwgAyABNgIUIAMgADYCDEEAIQIMwgILQfQBIQIgASAERg3BAiADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEG41QBqLQAARw0CIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzCAgsgA0GBBDsBKCADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQLiIADQMMAgsgA0EANgIAC0EAIQIgA0EANgIcIAMgATYCFCADQeUfNgIQIANBCDYCDAy/AgtB1QEhAgylAgsgA0HzATYCHCADIAE2AhQgAyAANgIMQQAhAgy9AgtBACEAAkAgAygCOCICRQ0AIAIoAkAiAkUNACADIAIRAAAhAAsgAEUNbiAAQRVHBEAgA0EANgIcIAMgATYCFCADQYIPNgIQIANBIDYCDEEAIQIMvQILIANBjwE2AhwgAyABNgIUIANB7Bs2AhAgA0EVNgIMQQAhAgy8AgsgASAERwRAIANBDTYCCCADIAE2AgRB0wEhAgyjAgtB8gEhAgy7AgsgASAERgRAQfEBIQIMuwILAkACQAJAIAEtAABByABrDgsAAQgICAgICAgIAggLIAFBAWohAUHQASECDKMCCyABQQFqIQFB0QEhAgyiAgsgAUEBaiEBQdIBIQIMoQILQfABIQIgASAERg25AiADKAIAIgAgBCABa2ohBiABIABrQQJqIQUDQCABLQAAIABBtdUAai0AAEcNBCAAQQJGDQMgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMuQILQe8BIQIgASAERg24AiADKAIAIgAgBCABa2ohBiABIABrQQFqIQUDQCABLQAAIABBs9UAai0AAEcNAyAAQQFGDQIgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMuAILQe4BIQIgASAERg23AiADKAIAIgAgBCABa2ohBiABIABrQQJqIQUDQCABLQAAIABBsNUAai0AAEcNAiAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMtwILIAMoAgQhACADQgA3AwAgAyAAIAVBAWoiARArIgBFDQIgA0HsATYCHCADIAE2AhQgAyAANgIMQQAhAgy2AgsgA0EANgIACyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNnAIgA0HtATYCHCADIAE2AhQgAyAANgIMQQAhAgy0AgtBzwEhAgyaAgtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDLQCC0HOASECDJoCCyADQesBNgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMsgILIAEgBEYEQEHrASECDLICCyABLQAAQS9GBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GyODYCECADQQg2AgxBACECDLECC0HNASECDJcCCyABIARHBEAgA0EONgIIIAMgATYCBEHMASECDJcCC0HqASECDK8CCyABIARGBEBB6QEhAgyvAgsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFBywEhAgyWAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZcCIANB6AE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILIAEgBEYEQEHnASECDK4CCwJAIAEtAABBLkYEQCABQQFqIQEMAQsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZgCIANB5gE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILQcoBIQIMlAILIAEgBEYEQEHlASECDK0CC0EAIQBBASEFQQEhB0EAIQICQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQCABLQAAQTBrDgoKCQABAgMEBQYICwtBAgwGC0EDDAULQQQMBAtBBQwDC0EGDAILQQcMAQtBCAshAkEAIQVBACEHDAILQQkhAkEBIQBBACEFQQAhBwwBC0EAIQVBASECCyADIAI6ACsgAUEBaiEBAkACQCADLQAuQRBxDQACQAJAAkAgAy0AKg4DAQACBAsgB0UNAwwCCyAADQEMAgsgBUUNAQsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDQIgA0HiATYCHCADIAE2AhQgAyAANgIMQQAhAgyvAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZoCIANB4wE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILIAMoAgQhACADQQA2AgQgAyAAIAEQLyIARQ2YAiADQeQBNgIcIAMgATYCFCADIAA2AgwMrQILQckBIQIMkwILQQAhAAJAIAMoAjgiAkUNACACKAJEIgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANBpA02AhAgA0EhNgIMQQAhAgytAgtByAEhAgyTAgsgA0HhATYCHCADIAE2AhQgA0HQGjYCECADQRU2AgxBACECDKsCCyABIARGBEBB4QEhAgyrAgsCQCABLQAAQSBGBEAgA0EAOwE0IAFBAWohAQwBCyADQQA2AhwgAyABNgIUIANBmRE2AhAgA0EJNgIMQQAhAgyrAgtBxwEhAgyRAgsgASAERgRAQeABIQIMqgILAkAgAS0AAEEwa0H/AXEiAkEKSQRAIAFBAWohAQJAIAMvATQiAEGZM0sNACADIABBCmwiADsBNCAAQf7/A3EgAkH//wNzSw0AIAMgACACajsBNAwCC0EAIQIgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDAyrAgsgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDEEAIQIMqgILQcYBIQIMkAILIAEgBEYEQEHfASECDKkCCwJAIAEtAABBMGtB/wFxIgJBCkkEQCABQQFqIQECQCADLwE0IgBBmTNLDQAgAyAAQQpsIgA7ATQgAEH+/wNxIAJB//8Dc0sNACADIAAgAmo7ATQMAgtBACECIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgwMqgILIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgxBACECDKkCC0HFASECDI8CCyABIARGBEBB3gEhAgyoAgsCQCABLQAAQTBrQf8BcSICQQpJBEAgAUEBaiEBAkAgAy8BNCIAQZkzSw0AIAMgAEEKbCIAOwE0IABB/v8DcSACQf//A3NLDQAgAyAAIAJqOwE0DAILQQAhAiADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMDKkCCyADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMQQAhAgyoAgtBxAEhAgyOAgsgASAERgRAQd0BIQIMpwILAkACQAJAAkAgAS0AAEEKaw4XAgMDAAMDAwMDAwMDAwMDAwMDAwMDAwEDCyABQQFqDAULIAFBAWohAUHDASECDI8CCyABQQFqIQEgA0Evai0AAEEBcQ0IIANBADYCHCADIAE2AhQgA0GNCzYCECADQQ02AgxBACECDKcCCyADQQA2AhwgAyABNgIUIANBjQs2AhAgA0ENNgIMQQAhAgymAgsgASAERwRAIANBDzYCCCADIAE2AgRBASECDI0CC0HcASECDKUCCwJAAkADQAJAIAEtAABBCmsOBAIAAAMACyAEIAFBAWoiAUcNAAtB2wEhAgymAgsgAygCBCEAIANBADYCBCADIAAgARAtIgBFBEAgAUEBaiEBDAQLIANB2gE2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMpQILIAMoAgQhACADQQA2AgQgAyAAIAEQLSIADQEgAUEBagshAUHBASECDIoCCyADQdkBNgIcIAMgADYCDCADIAFBAWo2AhRBACECDKICC0HCASECDIgCCyADQS9qLQAAQQFxDQEgA0EANgIcIAMgATYCFCADQeQcNgIQIANBGTYCDEEAIQIMoAILIAEgBEYEQEHZASEC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IAFBAWohAUGeASECDOQBCyABQQFqIQFBnwEhAgzjAQtBtwEhAiABIARGDfsBIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQezUAGotAABHDSggAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPwBCyADQQA2AgAgBkEBaiEBQQ0MKAtBtgEhAiABIARGDfoBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQaHVAGotAABHDScgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPsBCyADQQA2AgAgBkEBaiEBQQwMJwtBtQEhAiABIARGDfkBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQerUAGotAABHDSYgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPoBCyADQQA2AgAgBkEBaiEBQQMMJgtBtAEhAiABIARGDfgBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQejUAGotAABHDSUgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPkBCyADQQA2AgAgBkEBaiEBQSYMJQsgASAERgRAQbMBIQIM+AELAkACQCABLQAAQdQAaw4CAAEnCyABQQFqIQFBmQEhAgzfAQsgAUEBaiEBQZoBIQIM3gELQbIBIQIgASAERg32ASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHm1ABqLQAARw0jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz3AQsgA0EANgIAIAZBAWohAUEnDCMLQbEBIQIgASAERg31ASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHk1ABqLQAARw0iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz2AQsgA0EANgIAIAZBAWohAUEcDCILQbABIQIgASAERg30ASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHe1ABqLQAARw0hIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz1AQsgA0EANgIAIAZBAWohAUEGDCELQa8BIQIgASAERg3zASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEHZ1ABqLQAARw0gIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz0AQsgA0EANgIAIAZBAWohAUEZDCALIAEgBEYEQEGuASECDPMBCwJAAkACQAJAIAEtAABBLWsOIwAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAEkJCQkJAIkJCQDJAsgAUEBaiEBQY4BIQIM3AELIAFBAWohAUGPASECDNsBCyABQQFqIQFBlAEhAgzaAQsgAUEBaiEBQZUBIQIM2QELQa0BIQIgASAERg3xASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHX1ABqLQAARw0eIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzyAQsgA0EANgIAIAZBAWohAUELDB4LIAEgBEYEQEGsASECDPEBCwJAAkAgAS0AAEHBAGsOAwAgASALIAFBAWohAUGQASECDNgBCyABQQFqIQFBkwEhAgzXAQsgASAERgRAQasBIQIM8AELAkACQCABLQAAQcEAaw4PAB8fHx8fHx8fHx8fHx8BHwsgAUEBaiEBQZEBIQIM1wELIAFBAWohAUGSASECDNYBCyABIARGBEBBqgEhAgzvAQsgAS0AAEHMAEcNHCABQQFqIQFBCgwbC0GpASECIAEgBEYN7QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABB0dQAai0AAEcNGiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7gELIANBADYCACAGQQFqIQFBHgwaC0GoASECIAEgBEYN7AEgAygCACIAIAQgAWtqIQUgASAAa0EGaiEGAkADQCABLQAAIABBytQAai0AAEcNGSAAQQZGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7QELIANBADYCACAGQQFqIQFBFQwZC0GnASECIAEgBEYN6wEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBx9QAai0AAEcNGCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7AELIANBADYCACAGQQFqIQFBFwwYC0GmASECIAEgBEYN6gEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBwdQAai0AAEcNFyAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6wELIANBADYCACAGQQFqIQFBGAwXCyABIARGBEBBpQEhAgzqAQsCQAJAIAEtAABByQBrDgcAGRkZGRkBGQsgAUEBaiEBQYsBIQIM0QELIAFBAWohAUGMASECDNABC0GkASECIAEgBEYN6AEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBptUAai0AAEcNFSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6QELIANBADYCACAGQQFqIQFBCQwVC0GjASECIAEgBEYN5wEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBpNUAai0AAEcNFCAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6AELIANBADYCACAGQQFqIQFBHwwUC0GiASECIAEgBEYN5gEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBvtQAai0AAEcNEyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM5wELIANBADYCACAGQQFqIQFBAgwTC0GhASECIAEgBEYN5QEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGA0AgAS0AACAAQbzUAGotAABHDREgAEEBRg0CIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADOUBCyABIARGBEBBoAEhAgzlAQtBASABLQAAQd8ARw0RGiABQQFqIQFBhwEhAgzLAQsgA0EANgIAIAZBAWohAUGIASECDMoBC0GfASECIAEgBEYN4gEgAygCACIAIAQgAWtqIQUgASAAa0EIaiEGAkADQCABLQAAIABBhNUAai0AAEcNDyAAQQhGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4wELIANBADYCACAGQQFqIQFBKQwPC0GeASECIAEgBEYN4QEgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBuNQAai0AAEcNDiAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4gELIANBADYCACAGQQFqIQFBLQwOCyABIARGBEBBnQEhAgzhAQsgAS0AAEHFAEcNDiABQQFqIQFBhAEhAgzHAQsgASAERgRAQZwBIQIM4AELAkACQCABLQAAQcwAaw4IAA8PDw8PDwEPCyABQQFqIQFBggEhAgzHAQsgAUEBaiEBQYMBIQIMxgELQZsBIQIgASAERg3eASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEGz1ABqLQAARw0LIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzfAQsgA0EANgIAIAZBAWohAUEjDAsLQZoBIQIgASAERg3dASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGw1ABqLQAARw0KIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzeAQsgA0EANgIAIAZBAWohAUEADAoLIAEgBEYEQEGZASECDN0BCwJAAkAgAS0AAEHIAGsOCAAMDAwMDAwBDAsgAUEBaiEBQf0AIQIMxAELIAFBAWohAUGAASECDMMBCyABIARGBEBBmAEhAgzcAQsCQAJAIAEtAABBzgBrDgMACwELCyABQQFqIQFB/gAhAgzDAQsgAUEBaiEBQf8AIQIMwgELIAEgBEYEQEGXASECDNsBCyABLQAAQdkARw0IIAFBAWohAUEIDAcLQZYBIQIgASAERg3ZASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEGs1ABqLQAARw0GIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzaAQsgA0EANgIAIAZBAWohAUEFDAYLQZUBIQIgASAERg3YASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGm1ABqLQAARw0FIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzZAQsgA0EANgIAIAZBAWohAUEWDAULQZQBIQIgASAERg3XASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGh1QBqLQAARw0EIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzYAQsgA0EANgIAIAZBAWohAUEQDAQLIAEgBEYEQEGTASECDNcBCwJAAkAgAS0AAEHDAGsODAAGBgYGBgYGBgYGAQYLIAFBAWohAUH5ACECDL4BCyABQQFqIQFB+gAhAgy9AQtBkgEhAiABIARGDdUBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQaDUAGotAABHDQIgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNYBCyADQQA2AgAgBkEBaiEBQSQMAgsgA0EANgIADAILIAEgBEYEQEGRASECDNQBCyABLQAAQcwARw0BIAFBAWohAUETCzoAKSADKAIEIQAgA0EANgIEIAMgACABEC4iAA0CDAELQQAhAiADQQA2AhwgAyABNgIUIANB/h82AhAgA0EGNgIMDNEBC0H4ACECDLcBCyADQZABNgIcIAMgATYCFCADIAA2AgxBACECDM8BC0EAIQACQCADKAI4IgJFDQAgAigCQCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUYNASADQQA2AhwgAyABNgIUIANBgg82AhAgA0EgNgIMQQAhAgzOAQtB9wAhAgy0AQsgA0GPATYCHCADIAE2AhQgA0HsGzYCECADQRU2AgxBACECDMwBCyABIARGBEBBjwEhAgzMAQsCQCABLQAAQSBGBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GbHzYCECADQQY2AgxBACECDMwBC0ECIQIMsgELA0AgAS0AAEEgRw0CIAQgAUEBaiIBRw0AC0GOASECDMoBCyABIARGBEBBjQEhAgzKAQsCQCABLQAAQQlrDgRKAABKAAtB9QAhAgywAQsgAy0AKUEFRgRAQfYAIQIMsAELQfQAIQIMrwELIAEgBEYEQEGMASECDMgBCyADQRA2AgggAyABNgIEDAoLIAEgBEYEQEGLASECDMcBCwJAIAEtAABBCWsOBEcAAEcAC0HzACECDK0BCyABIARHBEAgA0EQNgIIIAMgATYCBEHxACECDK0BC0GKASECDMUBCwJAIAEgBEcEQANAIAEtAABBoNAAai0AACIAQQNHBEACQCAAQQFrDgJJAAQLQfAAIQIMrwELIAQgAUEBaiIBRw0AC0GIASEC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BCABQQFqIgFHDQALQfsAIQIMpwELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMpgELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMpQELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB+gA2AhwgAyABNgIUIAMgADYCDEEAIQIMpAELIANBADYCHCADIAE2AhQgA0G8CjYCECADQQc2AgxBACECDKMBC0HPACECDIkBC0HRACECDIgBC0HnACECDIcBCyABIARGBEBB+gAhAgygAQsCQCABLQAAQQlrDgQgAAAgAAsgAUEBaiEBQeYAIQIMhgELIAEgBEYEQEH5ACECDJ8BCwJAIAEtAABBCWsOBB8AAB8AC0EAIQACQCADKAI4IgJFDQAgAigCOCICRQ0AIAMgAhEAACEACyAARQRAQeIBIQIMhgELIABBFUcEQCADQQA2AhwgAyABNgIUIANByQ02AhAgA0EaNgIMQQAhAgyfAQsgA0H4ADYCHCADIAE2AhQgA0HqGjYCECADQRU2AgxBACECDJ4BCyABIARHBEAgA0ENNgIIIAMgATYCBEHkACECDIUBC0H3ACECDJ0BCyABIARGBEBB9gAhAgydAQsCQAJAAkAgAS0AAEHIAGsOCwABCwsLCwsLCwsCCwsgAUEBaiEBQd0AIQIMhQELIAFBAWohAUHgACECDIQBCyABQQFqIQFB4wAhAgyDAQtB9QAhAiABIARGDZsBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbXVAGotAABHDQggAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADJwBCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQKyIABEAgA0H0ADYCHCADIAE2AhQgAyAANgIMQQAhAgycAQtB4gAhAgyCAQtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJwBC0HhACECDIIBCyADQfMANgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMmgELIAMtACkiAEEja0ELSQ0JAkAgAEEGSw0AQQEgAHRBygBxRQ0ADAoLQQAhAiADQQA2AhwgAyABNgIUIANB7Qk2AhAgA0EINgIMDJkBC0HyACECIAEgBEYNmAEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBs9UAai0AAEcNBSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMmQELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgAEQCADQfEANgIcIAMgATYCFCADIAA2AgxBACECDJkBC0HfACECDH8LQQAhAAJAIAMoAjgiAkUNACACKAI0IgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANB6g02AhAgA0EmNgIMQQAhAgyZAQtB3gAhAgx/CyADQfAANgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMlwELIAMtAClBIUYNBiADQQA2AhwgAyABNgIUIANBkQo2AhAgA0EINgIMQQAhAgyWAQtB7wAhAiABIARGDZUBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbDVAGotAABHDQIgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADJYBCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQKyIARQ0CIANB7QA2AhwgAyABNgIUIAMgADYCDEEAIQIMlQELIANBADYCAAsgAygCBCEAIANBADYCBCADIAAgARArIgBFDYABIANB7gA2AhwgAyABNgIUIAMgADYCDEEAIQIMkwELQdwAIQIMeQtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJMBC0HbACECDHkLIANB7AA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyRAQsgAy0AKSIAQSNJDQAgAEEuRg0AIANBADYCHCADIAE2AhQgA0HJCTYCECADQQg2AgxBACECDJABC0HaACECDHYLIAEgBEYEQEHrACECDI8BCwJAIAEtAABBL0YEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQbI4NgIQIANBCDYCDEEAIQIMjwELQdkAIQIMdQsgASAERwRAIANBDjYCCCADIAE2AgRB2AAhAgx1C0HqACECDI0BCyABIARGBEBB6QAhAgyNAQsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFB1wAhAgx0CyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNeiADQegANgIcIAMgATYCFCADIAA2AgxBACECDIwBCyABIARGBEBB5wAhAgyMAQsCQCABLQAAQS5GBEAgAUEBaiEBDAELIAMoAgQhACADQQA2AgQgAyAAIAEQLyIARQ17IANB5gA2AhwgAyABNgIUIAMgADYCDEEAIQIMjAELQdYAIQIMcgsgASAERgRAQeUAIQIMiwELQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNAiADQeIANgIcIAMgATYCFCADIAA2AgxBACECDI0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNfSADQeMANgIcIAMgATYCFCADIAA2AgxBACECDIwBCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNeyADQeQANgIcIAMgATYCFCADIAA2AgwMiwELQdQAIQIMcQsgAy0AKUEiRg2GAUHTACECDHALQQAhAAJAIAMoAjgiAkUNACACKAJEIgJFDQAgAyACEQAAIQALIABFBEBB1QAhAgxwCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQaQNNgIQIANBITYCDEEAIQIMiQELIANB4QA2AhwgAyABNgIUIANB0Bo2AhAgA0EVNgIMQQAhAgyIAQsgASAERgRAQeAAIQIMiAELAkACQAJAAkACQCABLQAAQQprDgQBBAQABAsgAUEBaiEBDAELIAFBAWohASADQS9qLQAAQQFxRQ0BC0HSACECDHALIANBADYCHCADIAE2AhQgA0G2ETYCECADQQk2AgxBACECDIgBCyADQQA2AhwgAyABNgIUIANBthE2AhAgA0EJNgIMQQAhAgyHAQsgASAERgRAQd8AIQIMhwELIAEtAABBCkYEQCABQQFqIQEMCQsgAy0ALkHAAHENCCADQQA2AhwgAyABNgIUIANBthE2AhAgA0ECNgIMQQAhAgyGAQsgASAERgRAQd0AIQIMhgELIAEtAAAiAkENRgRAIAFBAWohAUHQACECDG0LIAEhACACQQlrDgQFAQEFAQsgBCABIgBGBEBB3AAhAgyFAQsgAC0AAEEKRw0AIABBAWoMAgtBACECIANBADYCHCADIAA2AhQgA0HKLTYCECADQQc2AgwMgwELIAEgBEYEQEHbACECDIMBCwJAIAEtAABBCWsOBAMAAAMACyABQQFqCyEBQc4AIQIMaAsgASAERgRAQdoAIQIMgQELIAEtAABBCWsOBAABAQABC0EAIQIgA0EANgIcIANBmhI2AhAgA0EHNgIMIAMgAUEBajYCFAx/CyADQYASOwEqQQAhAAJAIAMoAjgiAkUNACACKAI4IgJFDQAgAyACEQAAIQALIABFDQAgAEEVRw0BIANB2QA2AhwgAyABNgIUIANB6ho2AhAgA0EVNgIMQQAhAgx+C0HNACECDGQLIANBADYCHCADIAE2AhQgA0HJDTYCECADQRo2AgxBACECDHwLIAEgBEYEQEHZACECDHwLIAEtAABBIEcNPSABQQFqIQEgAy0ALkEBcQ09IANBADYCHCADIAE2AhQgA0HCHDYCECADQR42AgxBACECDHsLIAEgBEYEQEHYACECDHsLAkACQAJAAkACQCABLQAAIgBBCmsOBAIDAwABCyABQQFqIQFBLCECDGULIABBOkcNASADQQA2AhwgAyABNgIUIANB5xE2AhAgA0EKNgIMQQAhAgx9CyABQQFqIQEgA0Evai0AAEEBcUUNcyADLQAyQYABcUUEQCADQTJqIQIgAxA1QQAhAAJAIAMoAjgiBkUNACAGKAIoIgZFDQAgAyAGEQAAIQALAkACQCAADhZNTEsBAQEBAQEBAQEBAQEBAQEBAQEAAQsgA0EpNgIcIAMgATYCFCADQawZNgIQIANBFTYCDEEAIQIMfgsg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c3BvbnNlIHN0YXR1cwBFeHBlY3RlZCBMRiBhZnRlciBoZWFkZXJzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3Byb3RvY29sX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fcHJvdG9jb2wARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgAVHJhbnNmZXItRW5jb2RpbmcgY2FuJ3QgYmUgcHJlc2VudCB3aXRoIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgc2l6ZQBFeHBlY3RlZCBMRiBhZnRlciBjaHVuayBzaXplAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBVbmV4cGVjdGVkIHdoaXRlc3BhY2UgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBleHRlbnNpb24gdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIHF1b3RlZC1wYWlyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fcHJvdG9jb2xfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciByZXNwb25zZSBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIG5hbWUASW52YWxpZCBzdGF0dXMgY29kZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGRhdGEARXhwZWN0ZWQgTEYgYWZ0ZXIgY2h1bmsgZGF0YQBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AARGF0YSBhZnRlciBgQ29ubmVjdGlvbjogY2xvc2VgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBRVUVSWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAEV4cGVjdGVkIExGIGFmdGVyIENSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX1BST1RPQ09MX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8sIFJUU1AvIG9yIElDRS8A5xUAAK8VAACkEgAAkhoAACYWAACeFAAA2xkAAHkVAAB+EgAA/hQAADYVAAALFgAA2BYAAPMSAABCGAAArBYAABIVAAAUFwAA7xcAAEgUAABxFwAAshoAAGsZAAB+GQAANRQAAIIaAABEFwAA/RYAAB4YAACHFwAAqhkAAJMSAAAHGAAALBcAAMoXAACkFwAA5xUAAOcVAABYFwAAOxgAAKASAAAtHAAAwxEAAEgRAADeEgAAQhMAAKQZAAD9EAAA9xUAAKUVAADvFgAA+BkAAEoWAABWFgAA9RUAAAoaAAAIGgAAARoAAKsVAABCEgAA1xAAAEwRAAAFGQAAVBYAAB4RAADKGQAAyBkAAE4WAAD/GAAAcRQAAPAVAADuFQAAlBkAAPwVAAC/GQAAmxkAAHwUAABDEQAAcBgAAJUUAAAnFAAAGRQAANUSAADUGQAARBYAAPcQAEG5OwsBAQBB0DsL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBuj0LBAEAAAIAQdE9C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEG6PwsEAQAAAgBB0T8LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQbDBAAsNbG9zZWVlcC1hbGl2ZQBBycEACwEBAEHgwQAL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBycMACwEBAEHgwwAL5wEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAQfHFAAteAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBB0McACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQYDIAAsgcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQpTTQ0KDQoAQanIAAsFAQIAAQMAQcDIAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanKAAsFAQIAAQMAQcDKAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanMAAsEAQAAAQBBwcwAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEGpzgALBQECAAEDAEHAzgALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEGp0AALBQEBAAEBAEHA0AALAQEAQdrQAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQanSAAsFAQEAAQEAQcDSAAsBAQBBytIACwYCAAAAAAIAQeHSAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBoNQAC50BTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFVFRQQ0VUU1BBRFRQLw==",wasmBuffer;Object.defineProperty(module,"exports",{get:()=>wasmBuffer||(wasmBuffer=Buffer2.from(wasmBase64,"base64"))})}});var require_llhttp_simd_wasm=__commonJS({"node_modules/undici/lib/llhttp/llhttp_simd-wasm.js"(exports,module){"use strict";var{Buffer:Buffer2}=__require("node:buffer"),wasmBase64="AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzU0BQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEBAwAAAwAAAAQFAXABExMFAwEAAgYIAX8BQcDZBAsHxQcoBm1lbW9yeQIAC19pbml0aWFsaXplAAgZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAC2xsaHR0cF9pbml0AAkYbGxodHRwX3Nob3VsZF9rZWVwX2FsaXZlADcMbGxodHRwX2FsbG9jAAsGbWFsbG9jADkLbGxodHRwX2ZyZWUADARmcmVlAAwPbGxodHRwX2dldF90eXBlAA0VbGxodHRwX2dldF9odHRwX21ham9yAA4VbGxodHRwX2dldF9odHRwX21pbm9yAA8RbGxodHRwX2dldF9tZXRob2QAEBZsbGh0dHBfZ2V0X3N0YXR1c19jb2RlABESbGxodHRwX2dldF91cGdyYWRlABIMbGxodHRwX3Jlc2V0ABMObGxodHRwX2V4ZWN1dGUAFBRsbGh0dHBfc2V0dGluZ3NfaW5pdAAVDWxsaHR0cF9maW5pc2gAFgxsbGh0dHBfcGF1c2UAFw1sbGh0dHBfcmVzdW1lABgbbGxodHRwX3Jlc3VtZV9hZnRlcl91cGdyYWRlABkQbGxodHRwX2dldF9lcnJubwAaF2xsaHR0cF9nZXRfZXJyb3JfcmVhc29uABsXbGxodHRwX3NldF9lcnJvcl9yZWFzb24AHBRsbGh0dHBfZ2V0X2Vycm9yX3BvcwAdEWxsaHR0cF9lcnJub19uYW1lAB4SbGxodHRwX21ldGhvZF9uYW1lAB8SbGxodHRwX3N0YXR1c19uYW1lACAabGxodHRw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AXRrQT5qIQILIAEgAjYCHCABQgA3AhAgAkECdEH01wBqIQACQEHI1QAoAgAiA0EBIAJ0IgdxRQRAIAAgATYCAEHI1QAgAyAHcjYCACABIAA2AhggASABNgIIIAEgATYCDAwBCyAEQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQACQANAIAAiAygCBEF4cSAERg0BIAJBHXYhACACQQF0IQIgAyAAQQRxakEQaiIHKAIAIgANAAsgByABNgIAIAEgAzYCGCABIAE2AgwgASABNgIIDAELIAMoAggiACABNgIMIAMgATYCCCABQQA2AhggASADNgIMIAEgADYCCAtB5NUAQeTVACgCAEEBayIAQX8gABs2AgALCwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BNAsHACAALQAwC0ABBH8gACgCGCEBIAAvAS4hAiAALQAoIQMgACgCOCEEIAAQOCAAIAQ2AjggACADOgAoIAAgAjsBLiAAIAE2AhgLhocCAwd/A34BeyABIAJqIQQCQCAAIgMoAgwiAA0AIAMoAgQEQCADIAE2AgQLIwBBEGsiCSQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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DAgLQeMBDAcLQdcBDAYLQdgBDAULQdkBDAQLQdoBDAMLQdsBDAILQd0BDAELQdwBCyECA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAn8CQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAwJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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A0EXNgIcIAMgADYCDCADIAFBAWo2AhQM+AILIABBFUYNI0EAIQIgA0EANgIcIAMgATYCFCADQdYMNgIQIANBIzYCDAz3AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQwdCyADQRk2AhwgAyAANgIMIAMgAUEBajYCFAz2AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQzvAgsgA0EaNgIcIAMgADYCDCADIAFBAWo2AhQM9QILIABBFUYNH0EAIQIgA0EANgIcIAMgATYCFCADQdAPNgIQIANBIjYCDAz0AgsgAygCBCEAIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDBsLIANBHDYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgzzAgsgAygCBCEAIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDOsCCyADQR02AhwgAyAANgIMIAMgAUEBajYCFEEAIQIM8gILIABBO0cNASABQQFqIQELQSYhAgzXAgtBACECIANBADYCHCADIAE2AhQgA0GfFTYCECADQQw2AgwM7wILIAEgBEcEQANAIAEtAABBIEcNhAIgBCABQQFqIgFHDQALQSwhAgzvAgtBLCECDO4CCyABIARGBEBBNCECDO4CCwJAAkADQAJAIAEtAABBCmsOBAIAAAMACyAEIAFBAWoiAUcNAAtBNCECDO8CCyADKAIEIQAgA0EANgIEIAMgACABEDEiAEUNnwIgA0EyNgIcIAMgATYCFCADIAA2AgxBACECDO4CCyADKAIEIQAgA0EANgIEIAMgACABEDEiAEUEQCABQQFqIQEMnwILIANBMjYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgztAgsgASAERwRAAkADQCABLQAAQTBrIgBB/wFxQQpPBEBBOiECDNcCCyADKQMgIgtCmbPmzJmz5swZVg0BIAMgC0IKfiIKNwMgIAogAK1C/wGDIgtCf4VWDQEgAyAKIAt8NwMgIAQgAUEBaiIBRw0AC0HAACECDO4CCyADKAIEIQAgA0EANgIEIAMgACABQQFqIgEQMSIADRcM4gILQcAAIQIM7AILIAEgBEYEQEHJACECDOwCCwJAA0ACQCABLQAAQQlrDhgAAqICogKpAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAgCiAgsgBCABQQFqIgFHDQALQckAIQIM7AILIAFBAWohASADQS9qLQAAQQFxDaUCIANBADYCHCADIAE2AhQgA0GXEDYCECADQQo2AgxBACECDOsCCyABIARHBEADQCABLQAAQSBHDRUgBCABQQFqIgFHDQALQfgAIQIM6wILQfgAIQIM6gILIANBAjoAKAw4C0EAIQIgA0EANgIcIANBvws2AhAgA0ECNgIMIAMgAUEBajYCFAzoAgtBACECDM4CC0ENIQIMzQILQRMhAgzMAgtBFSECDMsCC0EWIQIMygILQRghAgzJAgtBGSECDMgCC0EaIQIMxwILQRshAgzGAgtBHCECDMUCC0EdIQIMxAILQR4hAgzDAgtBHyECDMICC0EgIQIMwQILQSIhAgzAAgtBIyECDL8CC0ElIQIMvgILQeUAIQIMvQILIANBPTYCHCADIAE2AhQgAyAANgIMQQAhAgzVAgsgA0EbNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIM1AILIANBIDYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNMCCyADQRM2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzSAgsgA0ELNgIcIAMgATYCFCADQZgaNgIQIANBFTYCDEEAIQIM0QILIANBEDYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNACCyADQSA2AhwgAyABNgIUIANBpBw2AhAgA0EVNgIMQQAhAgzPAgsgA0ELNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIMzgILIANBDDYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDM0CC0EAIQIgA0EANgIcIAMgATYCFCADQd0ONgIQIANBEjYCDAzMAgsCQANAAkAgAS0AAEEKaw4EAAICAAILIAQgAUEBaiIBRw0AC0H9ASECDMwCCwJAAkAgAy0ANkEBRw0AQQAhAAJAIAMoAjgiAkUNACACKAJgIgJFDQAgAyACEQAAIQALIABFDQAgAEEVRw0BIANB/AE2AhwgAyABNgIUIANB3Bk2AhAgA0EVNgIMQQAhAgzNAgtB3AEhAgyzAgsgA0EANgIcIAMgATYCFCADQfkLNgIQIANBHzYCDEEAIQIMywILAkACQCADLQAoQQFrDgIEAQALQdsBIQIMsgILQdQBIQIMsQILIANBAjoAMUEAIQACQCADKAI4IgJFDQAgAigCACICRQ0AIAMgAhEAACEACyAARQRAQd0BIQIMsQILIABBFUcEQCADQQA2AhwgAyABNgIUIANBtAw2AhAgA0EQNgIMQQAhAgzKAgsgA0H7ATYCHCADIAE2AhQgA0GBGjYCECADQRU2AgxBACECDMkCCyABIARGBEBB+gEhAgzJAgsgAS0AAEHIAEYNASADQQE6ACgLQcABIQIMrgILQdoBIQIMrQILIAEgBEcEQCADQQw2AgggAyABNgIEQdkBIQIMrQILQfkBIQIMxQILIAEgBEYEQEH4ASECDMUCCyABLQAAQcgARw0EIAFBAWohAUHYASECDKsCCyABIARGBEBB9wEhAgzEAgsCQAJAIAEtAABBxQBrDhAABQUFBQUFBQUFBQUFBQUBBQsgAUEBaiEBQdYBIQIMqwILIAFBAWohAUHXASECDKoCC0H2ASECIAEgBEYNwgIgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABButUAai0AAEcNAyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMwwILIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAuIgBFBEBB4wEhAgyqAgsgA0H1ATYCHCADIAE2AhQgAyAANgIMQQAhAgzCAgtB9AEhAiABIARGDcECIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQbjVAGotAABHDQIgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMICCyADQYEEOwEoIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAuIgANAwwCCyADQQA2AgALQQAhAiADQQA2AhwgAyABNgIUIANB5R82AhAgA0EINgIMDL8CC0HVASECDKUCCyADQfMBNgIcIAMgATYCFCADIAA2AgxBACECDL0CC0EAIQACQCADKAI4IgJFDQAgAigCQCICRQ0AIAMgAhEAACEACyAARQ1uIABBFUcEQCADQQA2AhwgAyABNgIUIANBgg82AhAgA0EgNgIMQQAhAgy9AgsgA0GPATYCHCADIAE2AhQgA0HsGzYCECADQRU2AgxBACECDLwCCyABIARHBEAgA0ENNgIIIAMgATYCBEHTASECDKMCC0HyASECDLsCCyABIARGBEBB8QEhAgy7AgsCQAJAAkAgAS0AAEHIAGsOCwABCAgICAgICAgCCAsgAUEBaiEBQdABIQIMowILIAFBAWohAUHRASECDKICCyABQQFqIQFB0gEhAgyhAgtB8AEhAiABIARGDbkCIAMoAgAiACAEIAFraiEGIAEgAGtBAmohBQNAIAEtAAAgAEG11QBqLQAARw0EIABBAkYNAyAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy5AgtB7wEhAiABIARGDbgCIAMoAgAiACAEIAFraiEGIAEgAGtBAWohBQNAIAEtAAAgAEGz1QBqLQAARw0DIABBAUYNAiAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy4AgtB7gEhAiABIARGDbcCIAMoAgAiACAEIAFraiEGIAEgAGtBAmohBQNAIAEtAAAgAEGw1QBqLQAARw0CIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy3AgsgAygCBCEAIANCADcDACADIAAgBUEBaiIBECsiAEUNAiADQewBNgIcIAMgATYCFCADIAA2AgxBACECDLYCCyADQQA2AgALIAMoAgQhACADQQA2AgQgAyAAIAEQKyIARQ2cAiADQe0BNgIcIAMgATYCFCADIAA2AgxBACECDLQCC0HPASECDJoCC0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMtAILQc4BIQIMmgILIANB6wE2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyyAgsgASAERgRAQesBIQIMsgILIAEtAABBL0YEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQbI4NgIQIANBCDYCDEEAIQIMsQILQc0BIQIMlwILIAEgBEcEQCADQQ42AgggAyABNgIEQcwBIQIMlwILQeoBIQIMrwILIAEgBEYEQEHpASECDK8CCyABLQAAQTBrIgBB/wFxQQpJBEAgAyAAOgAqIAFBAWohAUHLASECDJYCCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNlwIgA0HoATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgsgASAERgRAQecBIQIMrgILAkAgAS0AAEEuRgRAIAFBAWohAQwBCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNmAIgA0HmATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgtBygEhAgyUAgsgASAERgRAQeUBIQIMrQILQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNAiADQeIBNgIcIAMgATYCFCADIAA2AgxBACECDK8CCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNmgIgA0HjATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZgCIANB5AE2AhwgAyABNgIUIAMgADYCDAytAgtByQEhAgyTAgtBACEAAkAgAygCOCICRQ0AIAIoAkQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0GkDTYCECADQSE2AgxBACECDK0CC0HIASECDJMCCyADQeEBNgIcIAMgATYCFCADQdAaNgIQIANBFTYCDEEAIQIMqwILIAEgBEYEQEHhASECDKsCCwJAIAEtAABBIEYEQCADQQA7ATQgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GZETYCECADQQk2AgxBACECDKsCC0HHASECDJECCyABIARGBEBB4AEhAgyqAgsCQCABLQAAQTBrQf8BcSICQQpJBEAgAUEBaiEBAkAgAy8BNCIAQZkzSw0AIAMgAEEKbCIAOwE0IABB/v8DcSACQf//A3NLDQAgAyAAIAJqOwE0DAILQQAhAiADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMDKsCCyADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMQQAhAgyqAgtBxgEhAgyQAgsgASAERgRAQd8BIQIMqQILAkAgAS0AAEEwa0H/AXEiAkEKSQRAIAFBAWohAQJAIAMvATQiAEGZM0sNACADIABBCmwiADsBNCAAQf7/A3EgAkH//wNzSw0AIAMgACACajsBNAwCC0EAIQIgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDAyqAgsgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDEEAIQIMqQILQcUBIQIMjwILIAEgBEYEQEHeASECDKgCCwJAIAEtAABBMGtB/wFxIgJBCkkEQCABQQFqIQECQCADLwE0IgBBmTNLDQAgAyAAQQpsIgA7ATQgAEH+/wNxIAJB//8Dc0sNACADIAAgAmo7ATQMAgtBACECIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgwMqQILIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgxBACECDKgCC0HEASECDI4CCyABIARGBEBB3QEhAgynAgsCQAJAAkACQCABLQAAQQprDhcCAwMAAwMDAwMDAwMDAwMDAwMDAwMDAQMLIAFBAWoMBQsgAUEBaiEBQcMBIQIMjwILIAFBAWohASADQS9qLQAAQQFxDQggA0EANgIcIAMgATYCFCADQY0LNgIQIANBDTYCDEEAIQIMpwILIANBADYCHCADIAE2AhQgA0GNCzYCECADQQ02AgxBACECDKYCCyABIARHBEAgA0EPNgIIIAMgATYCBEEBIQIMjQILQdwBIQIMpQILAkACQANAAkAgAS0AAEEKaw4EAgAAAwALIAQgAUEBaiIBRw0AC0HbASECDKYCCyADKAIEIQAgA0EANgIEIAMgACABEC0iAEUEQCABQQFqIQEMBAsgA0HaATYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgylAgsgAygCBCEAIANBADYCBCADIAAgARAtIgANASABQQFqCyEBQcEBIQIMigILIANB2QE2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMogILQcIBIQIMiAILIANBL2otAABBAXENASADQQA2AhwgAyABNgIUIANB5Bw2AhAgA0EZNgIMQQAhAgygAgsgASAERgRAQdkB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CyADIAU2AgAMkAILIANBADYCACAGQQFqIQFBGgw8C0HKASECIAEgBEYNjgIgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBjdUAai0AAEcNOyAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMjwILIANBADYCACAGQQFqIQFBIQw7CyABIARGBEBByQEhAgyOAgsCQAJAIAEtAABBwQBrDhQAPT09PT09PT09PT09PT09PT09AT0LIAFBAWohAUGtASECDPUBCyABQQFqIQFBsAEhAgz0AQsgASAERgRAQcgBIQIMjQILAkACQCABLQAAQdUAaw4LADw8PDw8PDw8PAE8CyABQQFqIQFBrgEhAgz0AQsgAUEBaiEBQa8BIQIM8wELQccBIQIgASAERg2LAiADKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEGE1QBqLQAARw04IABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyMAgsgA0EANgIAIAZBAWohAUEqDDgLIAEgBEYEQEHGASECDIsCCyABLQAAQdAARw04IAFBAWohAUElDDcLQcUBIQIgASAERg2JAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGB1QBqLQAARw02IABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyKAgsgA0EANgIAIAZBAWohAUEODDYLIAEgBEYEQEHEASECDIkCCyABLQAAQcUARw02IAFBAWohAUGrASECDO8BCyABIARGBEBBwwEhAgyIAgsCQAJAAkACQCABLQAAQcIAaw4PAAECOTk5OTk5OTk5OTkDOQsgAUEBaiEBQacBIQIM8QELIAFBAWohAUGoASECDPABCyABQQFqIQFBqQEhAgzvAQsgAUEBaiEBQaoBIQIM7gELQcIBIQIgASAERg2GAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEH+1ABqLQAARw0zIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyHAgsgA0EANgIAIAZBAWohAUEUDDMLQcEBIQIgASAERg2FAiADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANA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BTYCAAzsAQsgA0EANgIAIAZBAWohAUEXDBgLQaYBIQIgASAERg3qASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHB1ABqLQAARw0XIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzrAQsgA0EANgIAIAZBAWohAUEYDBcLIAEgBEYEQEGlASECDOoBCwJAAkAgAS0AAEHJAGsOBwAZGRkZGQEZCyABQQFqIQFBiwEhAgzRAQsgAUEBaiEBQYwBIQIM0AELQaQBIQIgASAERg3oASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGm1QBqLQAARw0VIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzpAQsgA0EANgIAIAZBAWohAUEJDBULQaMBIQIgASAERg3nASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGk1QBqLQAARw0UIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzoAQsgA0EANgIAIAZBAWohAUEfDBQLQaIBIQIgASAERg3mASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEG+1ABqLQAARw0TIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAznAQsgA0EANgIAIAZBAWohAUECDBMLQaEBIQIgASAERg3lASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYDQCABLQAAIABBvNQAai0AAEcNESAAQQFGDQIgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM5QELIAEgBEYEQEGgASECDOUBC0EBIAEtAABB3wBHDREaIAFBAWohAUGHASECDMsBCyADQQA2AgAgBkEBaiEBQYgBIQIMygELQZ8BIQIgASAERg3iASADKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEGE1QBqLQAARw0PIABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzjAQsgA0EANgIAIAZBAWohAUEpDA8LQZ4BIQIgASAERg3hASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEG41ABqLQAARw0OIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAziAQsgA0EANgIAIAZBAWohAUEtDA4LIAEgBEYEQEGdASECDOEBCyABLQAAQcUARw0OIAFBAWohAUGEASECDMcBCyABIARGBEBBnAEhAgzgAQsCQAJAIAEtAABBzABrDggADw8PDw8PAQ8LIAFBAWohAUGCASECDMcBCyABQQFqIQFBgwEhAgzGAQtBmwEhAiABIARGDd4BIAMoAgAiACAEIAFraiEFIAEgAGtBBGohBgJAA0AgAS0AACAAQbPUAGotAABHDQsgAEEERg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADN8BCyADQQA2AgAgBkEBaiEBQSMMCwtBmgEhAiABIARGDd0BIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbDUAGotAABHDQogAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADN4BCyADQQA2AgAgBkEBaiEBQQAMCgsgASAERgRAQZkBIQIM3QELAkACQCABLQAAQcgAaw4IAAwMDAwMDAEMCyABQQFqIQFB/QAhAgzEAQsgAUEBaiEBQYABIQIMwwELIAEgBEYEQEGYASECDNwBCwJAAkAgAS0AAEHOAGsOAwALAQsLIAFBAWohAUH+ACECDMMBCyABQQFqIQFB/wAhAgzCAQsgASAERgRAQZcBIQIM2wELIAEtAABB2QBHDQggAUEBaiEBQQgMBwtBlgEhAiABIARGDdkBIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQazUAGotAABHDQYgAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNoBCyADQQA2AgAgBkEBaiEBQQUMBgtBlQEhAiABIARGDdgBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQabUAGotAABHDQUgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNkBCyADQQA2AgAgBkEBaiEBQRYMBQtBlAEhAiABIARGDdcBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQaHVAGotAABHDQQgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNgBCyADQQA2AgAgBkEBaiEBQRAMBAsgASAERgRAQZMBIQIM1wELAkACQCABLQAAQcMAaw4MAAYGBgYGBgYGBgYBBgsgAUEBaiEBQfkAIQIMvgELIAFBAWohAUH6ACECDL0BC0GSASECIAEgBEYN1QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBoNQAai0AAEcNAiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM1gELIANBADYCACAGQQFqIQFBJAwCCyADQQA2AgAMAgsgASAERgRAQZEBIQIM1AELIAEtAABBzABHDQEgAUEBaiEBQRMLOgApIAMoAgQhACADQQA2AgQgAyAAIAEQLiIADQIMAQtBACECIANBADYCHCADIAE2AhQgA0H+HzYCECADQQY2AgwM0QELQfgAIQIMtwELIANBkAE2AhwgAyABNgIUIAMgADYCDEEAIQIMzwELQQAhAAJAIAMoAjgiAkUNACACKAJAIgJFDQAgAyACEQAAIQALIABFDQAgAEEVRg0BIANBADYCHCADIAE2AhQgA0GCDzYCECADQSA2AgxBACECDM4BC0H3ACECDLQBCyADQY8BNgIcIAMgATYCFCADQewbNgIQIANBFTYCDEEAIQIMzAELIAEgBEYEQEGPASECDMwBCwJAIAEtAABBIEYEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQZsfNgIQIANBBjYCDEEAIQIMzAELQQIhAgyyAQsDQCABLQAAQSBHDQIgBCABQQFqIgFHDQALQY4BIQIMygELIAEgBEYEQEGNASECDMoBCwJAIAEtAABBCWsOBEoAAEoAC0H1ACECDLABCyADLQApQQVGBEBB9gAhAgywAQtB9AAhAgyvAQsgASAERgRAQYwBIQIMyAELIANBEDYCCCADIAE2AgQMCgsgASAERgRAQYsBIQIMxwELAkAgAS0AAEEJaw4ERwAARwALQfMAIQIMrQELIAEgBEcEQCADQRA2AgggAyABNgIEQfEAIQIMrQELQYoBIQIMxQELAkAgASAERwRAA0AgAS0AAEGg0ABqLQAAIgBBA0cEQAJAIABBAWsOAkkABAtB8AAhAgyvAQsgBCABQQFqIgFHDQALQYgBIQIMxgELQYgBIQIMxQELIANBADYCHCADIAE2AhQgA0HbIDYCECADQQc2AgxBACECDMQBCyABIARGBEBBiQEhAgzEAQsCQAJAAkAgAS0AAEGg0gBqLQAAQQFrDgNGAgABC0HyACECDKwBCyADQQA2AhwgAyABNgIUIANBtBI2AhAgA0EHNgIMQQAhAgzEAQtB6gAhAgyqAQsgASAERwRAIAFBAWohAUHvACECDKoBC0GHASECDMIBCyAEIAEiAEYEQEGGASECDMIBCyAALQAAIgFBL0YEQCAAQQFqIQFB7gAhAgypAQsgAUEJayICQRdLDQEgACEBQQEgAnRBm4CABHENQQwBCyAEIAEiAEYEQEGFASECDMEBCyAALQAAQS9HDQAgAEEBaiEBDAMLQQAhAiADQQA2AhwgAyAANgIUIANB2yA2AhAgA0EHNgIMDL8BCwJAAkACQAJAAkADQCABLQAAQaDOAGotAAAiAEEFRwRAAkACQCAAQQFrDghHBQYHCAAEAQgLQesAIQIMrQELIAFBAWohAUHtACECDKwBCyAEIAFBAWoiAUcNAAtBhAEhAgzDAQsgAUEBagwUCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQdsANgIcIAMgATYCFCADIAA2AgxBACECDMEBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDMABCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQfoANgIcIAMgATYCFCADIAA2AgxBACECDL8BCyADQQA2AhwgAyABNgIUIANB+Q82AhAgA0EHNgIMQQAhAgy+AQsgASAERgRAQYMBIQIMvgELAkAgAS0AAEGgzgBqLQAAQQFrDgg+BAUGAAgCAwcLIAFBAWohAQtBAyECDKMBCyABQQFqDA0LQQAhAiADQQA2AhwgA0HREjYCECADQQc2AgwgAyABQQFqNgIUDLoBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQdsANgIcIAMgATYCFCADIAA2AgxBACECDLkBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDLgBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQfoANgIcIAMgATYCFCADIAA2AgxBACECDLcBCyADQQA2AhwgAyABNgIUIANB+Q82AhAgA0EHNgIMQQAhAgy2AQtB7AAhAgycAQsgASAERgRAQYIBIQIMtQELIAFBAWoMAgsgASAERgRAQYEBIQIMtAELIAFBAWoMAQsgASAERg0BIAFBAWoLIQFBBCECDJgBC0GAASECDLABCwNAIAEtAABBoMwAai0AACIAQQJHBEAgAEEBRwRAQekAIQIMmQELDDELIAQgAUEBaiIBRw0AC0H/ACECDK8BCyABIARGBEBB/gAhAgyvAQsCQCABLQAAQQlrDjcvAwYvBAYGBgYGBgYGBgYGBgYGBgYGBgUGBgIGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYABgsgAUEBagshAUEFIQIMlAELIAFBAWoMBgsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgyrAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgyqAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0H6ADYCHCADIAE2AhQgAyAANgIMQQAhAgypAQsgA0EANgIcIAMgATYCFCADQY0UNgIQIANBBzYCDEEAIQIMqAELAkACQAJAAkADQCABLQAAQaDKAGotAAAiAEEFRwRAAkAgAEEBaw4GLgMEBQYABgtB6AAhAgyUAQsgBCABQQFqIgFHDQALQf0AIQIMqwELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMqgELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMqQELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB+gA2AhwgAyABNgIUIAMgADYCDEEAIQIMqAELIANBADYCHCADIAE2AhQgA0HkCDYCECADQQc2AgxBACECDKcBCyABIARGDQEgAUEBagshAUEGIQIMjAELQfwAIQIMpAELAkACQAJAAkADQCABLQAAQaDIAGotAAAiAEEFRwRAIABBAWsOBCkCAwQFCyAEIAFBAWoiAUcNAAtB+wAhAgynAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgymAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgylAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0H6ADYCHCADIAE2AhQgAyAANgIMQQAhAgykAQsgA0EANgIcIAMgATYCFCADQbwKNgIQIANBBzYCDEEAIQIMowELQc8AIQIMiQELQdEAIQIMiAELQecAIQIMhwELIAEgBEYEQEH6ACECDKABCwJAIAEtAABBCWsOBCAAACAACyABQQFqIQFB5gAhAgyGAQsgASAERgRAQfkAIQIMnwELAkAgAS0AAEEJaw4EHwAAHwALQQAhAAJAIAMoAjgiAkUNACACKAI4IgJFDQAgAyACEQAAIQALIABFBEBB4gEhAgyGAQsgAEEVRwRAIANBADYCHCADIAE2AhQgA0HJDTYCECADQRo2AgxBACECDJ8BCyADQfgANgIcIAMgATYCFCADQeoaNgIQIANBFTYCDEEAIQIMngELIAEgBEcEQCADQQ02AgggAyABNgIEQeQAIQIMhQELQfcAIQIMnQELIAEgBEYEQEH2ACECDJ0BCwJAAkACQCABLQAAQcgAaw4LAAELCwsLCwsLCwILCyABQQFqIQFB3QAhAgyFAQsgAUEBaiEBQeAAIQIMhAELIAFBAWohAUHjACECDIMBC0H1ACECIAEgBEYNmwEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBtdUAai0AAEcNCCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMnAELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgAEQCADQfQANgIcIAMgATYCFCADIAA2AgxBACECDJwBC0HiACECDIIBC0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMnAELQeEAIQIMggELIANB8wA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyaAQsgAy0AKSIAQSNrQQtJDQkCQCAAQQZLDQBBASAAdEHKAHFFDQAMCgtBACECIANBADYCHCADIAE2AhQgA0HtCTYCECADQQg2AgwMmQELQfIAIQIgASAERg2YASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGz1QBqLQAARw0FIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyZAQsgAygCBCEAIANCADcDACADIAAgBkEBaiIBECsiAARAIANB8QA2AhwgAyABNgIUIAMgADYCDEEAIQIMmQELQd8AIQIMfwtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJkBC0HeACECDH8LIANB8AA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyXAQsgAy0AKUEhRg0GIANBADYCHCADIAE2AhQgA0GRCjYCECADQQg2AgxBACECDJYBC0HvACECIAEgBEYNlQEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBsNUAai0AAEcNAiAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMlgELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgBFDQIgA0HtADYCHCADIAE2AhQgAyAANgIMQQAhAgyVAQsgA0EANgIACyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNgAEgA0HuADYCHCADIAE2AhQgAyAANgIMQQAhAgyTAQtB3AAhAgx5C0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMkwELQdsAIQIMeQsgA0HsADYCHCADIAE2AhQgA0GAGzYCECADQRU2AgxBACECDJEBCyADLQApIgBBI0kNACAAQS5GDQAgA0EANgIcIAMgATYCFCADQckJNgIQIANBCDYCDEEAIQIMkAELQdoAIQIMdgsgASAERgRAQesAIQIMjwELAkAgAS0AAEEvRgRAIAFBAWohAQwBCyAD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ciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBFeHBlY3RlZCBMRiBhZnRlciBoZWFkZXJzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3Byb3RvY29sX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fcHJvdG9jb2wARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgAVHJhbnNmZXItRW5jb2RpbmcgY2FuJ3QgYmUgcHJlc2VudCB3aXRoIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgc2l6ZQBFeHBlY3RlZCBMRiBhZnRlciBjaHVuayBzaXplAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBVbmV4cGVjdGVkIHdoaXRlc3BhY2UgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBleHRlbnNpb24gdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIHF1b3RlZC1wYWlyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fcHJvdG9jb2xfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciByZXNwb25zZSBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIG5hbWUASW52YWxpZCBzdGF0dXMgY29kZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGRhdGEARXhwZWN0ZWQgTEYgYWZ0ZXIgY2h1bmsgZGF0YQBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AARGF0YSBhZnRlciBgQ29ubmVjdGlvbjogY2xvc2VgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBRVUVSWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAEV4cGVjdGVkIExGIGFmdGVyIENSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX1BST1RPQ09MX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8sIFJUU1AvIG9yIElDRS8A5xUAAK8VAACkEgAAkhoAACYWAACeFAAA2xkAAHkVAAB+EgAA/hQAADYVAAALFgAA2BYAAPMSAABCGAAArBYAABIVAAAUFwAA7xcAAEgUAABxFwAAshoAAGsZAAB+GQAANRQAAIIaAABEFwAA/RYAAB4YAACHFwAAqhkAAJMSAAAHGAAALBcAAMoXAACkFwAA5xUAAOcVAABYFwAAOxgAAKASAAAtHAAAwxEAAEgRAADeEgAAQhMAAKQZAAD9EAAA9xUAAKUVAADvFgAA+BkAAEoWAABWFgAA9RUAAAoaAAAIGgAAARoAAKsVAABCEgAA1xAAAEwRAAAFGQAAVBYAAB4RAADKGQAAyBkAAE4WAAD/GAAAcRQAAPAVAADuFQAAlBkAAPwVAAC/GQAAmxkAAHwUAABDEQAAcBgAAJUUAAAnFAAAGRQAANUSAADUGQAARBYAAPcQAEG5OwsBAQBB0DsL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBuj0LBAEAAAIAQdE9C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEG6PwsEAQAAAgBB0T8LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQbDBAAsNbG9zZWVlcC1hbGl2ZQBBycEACwEBAEHgwQAL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBycMACwEBAEHgwwAL5wEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAQfHFAAteAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBB0McACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQYDIAAsgcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQpTTQ0KDQoAQanIAAsFAQIAAQMAQcDIAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanKAAsFAQIAAQMAQcDKAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanMAAsEAQAAAQBBwcwAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEGpzgALBQECAAEDAEHAzgALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEGp0AALBQEBAAEBAEHA0AALAQEAQdrQAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQanSAAsFAQEAAQEAQcDSAAsBAQBBytIACwYCAAAAAAIAQeHSAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBoNQAC50BTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFVFRQQ0VUU1BBRFRQLw==",wasmBuffer;Object.defineProperty(module,"exports",{get:()=>wasmBuffer||(wasmBuffer=Buffer2.from(wasmBase64,"base64"))})}});var require_constants3=__commonJS({"node_modules/undici/lib/web/fetch/constants.js"(exports,module){"use strict";var corsSafeListedMethods=["GET","HEAD","POST"],corsSafeListedMethodsSet=new Set(corsSafeListedMethods),nullBodyStatus=[101,204,205,304],redirectStatus=[301,302,303,307,308],redirectStatusSet=new Set(redirectStatus),badPorts=["1","7","9","11","13","15","17","19","20","21","22","23","25","37","42","43","53","69","77","79","87","95","101","102","103","104","109","110","111","113","115","117","119","123","135","137","139","143","161","179","389","427","465","512","513","514","515","526","530","531","532","540","548","554","556","563","587","601","636","989","990","993","995","1719","1720","1723","2049","3659","4045","4190","5060","5061","6000","6566","6665","6666","6667","6668","6669","6679","6697","10080"],badPortsSet=new Set(badPorts),referrerPolicyTokens=["no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"],referrerPolicy=["",...referrerPolicyTokens],referrerPolicyTokensSet=new Set(referrerPolicyTokens),requestRedirect=["follow","manual","error"],safeMethods=["GET","HEAD","OPTIONS","TRACE","QUERY"],safeMethodsSet=new Set(safeMethods),requestMode=["navigate","same-origin","no-cors","cors"],requestCredentials=["omit","same-origin","include"],requestCache=["default","no-store","reload","no-cache","force-cache","only-if-cached"],requestBodyHeader=["content-encoding","content-language","content-location","content-type","content-length"],requestDuplex=["half"],forbiddenMethods=["CONNECT","TRACE","TRACK"],forbiddenMethodsSet=new Set(forbiddenMethods),subresource=["audio","audioworklet","font","image","manifest","paintworklet","script","style","track","video","xslt",""],subresourceSet=new Set(subresource);module.exports={subresource,forbiddenMethods,requestBodyHeader,referrerPolicy,requestRedirect,requestMode,requestCredentials,requestCache,redirectStatus,corsSafeListedMethods,nullBodyStatus,safeMethods,badPorts,requestDuplex,subresourceSet,badPortsSet,redirectStatusSet,corsSafeListedMethodsSet,safeMethodsSet,forbiddenMethodsSet,referrerPolicyTokens:referrerPolicyTokensSet}}});var require_global=__commonJS({"node_modules/undici/lib/web/fetch/global.js"(exports,module){"use strict";var globalOrigin=Symbol.for("undici.globalOrigin.1");function getGlobalOrigin(){return globalThis[globalOrigin]}function setGlobalOrigin(newOrigin){if(newOrigin===void 0){Object.defineProperty(globalThis,globalOrigin,{value:void 0,writable:!0,enumerable:!1,configurable:!1});return}let parsedURL=new URL(newOrigin);if(parsedURL.protocol!=="http:"&&parsedURL.protocol!=="https:")throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`);Object.defineProperty(globalThis,globalOrigin,{value:parsedURL,writable:!0,enumerable:!1,configurable:!1})}module.exports={getGlobalOrigin,setGlobalOrigin}}});var require_encoding=__commonJS({"node_modules/undici/lib/encoding/index.js"(exports,module){"use strict";var textDecoder=new TextDecoder;function utf8DecodeBytes(buffer){return buffer.length===0?"":(buffer[0]===239&&buffer[1]===187&&buffer[2]===191&&(buffer=buffer.subarray(3)),textDecoder.decode(buffer))}module.exports={utf8DecodeBytes}}});var require_infra=__commonJS({"node_modules/undici/lib/web/infra/index.js"(exports,module){"use strict";var assert=__require("node:assert"),{utf8DecodeBytes}=require_encoding();function collectASequenceOfCodePoints(condition,input2,position){let result2="";for(;position.position<input2.length&&condition(input2[position.position]);)result2+=input2[position.position],position.position++;return result2}function collectASequenceOfCodePointsFast(char,input2,position){let idx=input2.indexOf(char,position.position),start=position.position;return idx===-1?(position.position=input2.length,input2.slice(start)):(position.position=idx,input2.slice(start,position.position))}var ASCII_WHITESPACE_REPLACE_REGEX=/[\u0009\u000A\u000C\u000D\u0020]/g;function forgivingBase64(data){data=data.replace(ASCII_WHITESPACE_REPLACE_REGEX,"");let dataLength=data.length;if(dataLength%4===0&&data.charCodeAt(dataLength-1)===61&&(--dataLength,data.charCodeAt(dataLength-1)===61&&--dataLength),dataLength%4===1||/[^+/0-9A-Za-z]/.test(data.length===dataLength?data:data.substring(0,dataLength)))return"failure";let buffer=Buffer.from(data,"base64");return new Uint8Array(buffer.buffer,buffer.byteOffset,buffer.byteLength)}function isASCIIWhitespace(char){return char===9||char===10||char===12||char===13||char===32}function isomorphicDecode(input2){let length=input2.length;if(65535>length)return String.fromCharCode.apply(null,input2);let result2="",i=0,addition=65535;for(;i<length;)i+addition>length&&(addition=length-i),result2+=String.fromCharCode.apply(null,input2.subarray(i,i+=addition));return result2}var invalidIsomorphicEncodeValueRegex=/[^\x00-\xFF]/;function isomorphicEncode(input2){return assert(!invalidIsomorphicEncodeValueRegex.test(input2)),input2}function parseJSONFromBytes(bytes){return JSON.parse(utf8DecodeBytes(bytes))}function removeASCIIWhitespace(str2,leading=!0,trailing=!0){return removeChars(str2,leading,trailing,isASCIIWhitespace)}function removeChars(str2,leading,trailing,predicate){let lead=0,trail=str2.length-1;if(leading)for(;lead<str2.length&&predicate(str2.charCodeAt(lead));)lead++;if(trailing)for(;trail>0&&predicate(str2.charCodeAt(trail));)trail--;return lead===0&&trail===str2.length-1?str2:str2.slice(lead,trail+1)}function serializeJavascriptValueToJSONString(value){let result2=JSON.stringify(value);if(result2===void 0)throw new TypeError("Value is not JSON serializable");return assert(typeof result2=="string"),result2}module.exports={collectASequenceOfCodePoints,collectASequenceOfCodePointsFast,forgivingBase64,isASCIIWhitespace,isomorphicDecode,isomorphicEncode,parseJSONFromBytes,removeASCIIWhitespace,removeChars,serializeJavascriptValueToJSONString}}});var require_data_url=__commonJS({"node_modules/undici/lib/web/fetch/data-url.js"(exports,module){"use strict";var assert=__require("node:assert"),{forgivingBase64,collectASequenceOfCodePoints,collectASequenceOfCodePointsFast,isomorphicDecode,removeASCIIWhitespace,removeChars}=require_infra(),encoder2=new TextEncoder,HTTP_TOKEN_CODEPOINTS=/^[-!#$%&'*+.^_|~A-Za-z0-9]+$/u,HTTP_WHITESPACE_REGEX=/[\u000A\u000D\u0009\u0020]/u,HTTP_QUOTED_STRING_TOKENS=/^[\u0009\u0020-\u007E\u0080-\u00FF]+$/u;function dataURLProcessor(dataURL){assert(dataURL.protocol==="data:");let input2=URLSerializer(dataURL,!0);input2=input2.slice(5);let position={position:0},mimeType=collectASequenceOfCodePointsFast(",",input2,position),mimeTypeLength=mimeType.length;if(mimeType=removeASCIIWhitespace(mimeType,!0,!0),position.position>=input2.length)return"failure";position.position++;let encodedBody=input2.slice(mimeTypeLength+1),body=stringPercentDecode(encodedBody);if(/;(?:\u0020*)base64$/ui.test(mimeType)){let stringBody=isomorphicDecode(body);if(body=forgivingBase64(stringBody),body==="failure")return"failure";mimeType=mimeType.slice(0,-6),mimeType=mimeType.replace(/(\u0020+)$/u,""),mimeType=mimeType.slice(0,-1)}mimeType.startsWith(";")&&(mimeType="text/plain"+mimeType);let mimeTypeRecord=parseMIMEType(mimeType);return mimeTypeRecord==="failure"&&(mimeTypeRecord=parseMIMEType("text/plain;charset=US-ASCII")),{mimeType:mimeTypeRecord,body}}function URLSerializer(url,excludeFragment=!1){if(!excludeFragment)return url.href;let href=url.href,hashLength=url.hash.length,serialized=hashLength===0?href:href.substring(0,href.length-hashLength);return!hashLength&&href.endsWith("#")?serialized.slice(0,-1):serialized}function stringPercentDecode(input2){let bytes=encoder2.encode(input2);return percentDecode(bytes)}function isHexCharByte(byte){return byte>=48&&byte<=57||byte>=65&&byte<=70||byte>=97&&byte<=102}function hexByteToNumber(byte){return byte>=48&&byte<=57?byte-48:(byte&223)-55}function percentDecode(input2){let length=input2.length,output=new Uint8Array(length),j=0,i=0;for(;i<length;){let byte=input2[i];byte!==37?output[j++]=byte:byte===37&&!(isHexCharByte(input2[i+1])&&isHexCharByte(input2[i+2]))?output[j++]=37:(output[j++]=hexByteToNumber(input2[i+1])<<4|hexByteToNumber(input2[i+2]),i+=2),++i}return length===j?output:output.subarray(0,j)}function parseMIMEType(input2){input2=removeHTTPWhitespace(input2,!0,!0);let position={position:0},type=collectASequenceOfCodePointsFast("/",input2,position);if(type.length===0||!HTTP_TOKEN_CODEPOINTS.test(type)||position.position>=input2.length)return"failure";position.position++;let subtype=collectASequenceOfCodePointsFast(";",input2,position);if(subtype=removeHTTPWhitespace(subtype,!1,!0),subtype.length===0||!HTTP_TOKEN_CODEPOINTS.test(subtype))return"failure";let typeLowercase=type.toLowerCase(),subtypeLowercase=subtype.toLowerCase(),mimeType={type:typeLowercase,subtype:subtypeLowercase,parameters:new Map,essence:`${typeLowercase}/${subtypeLowercase}`};for(;position.position<input2.length;){position.position++,collectASequenceOfCodePoints(char=>HTTP_WHITESPACE_REGEX.test(char),input2,position);let parameterName=collectASequenceOfCodePoints(char=>char!==";"&&char!=="=",input2,position);if(parameterName=parameterName.toLowerCase(),position.position<input2.length){if(input2[position.position]===";")continue;position.position++}if(position.position>=input2.length)break;let parameterValue=null;if(input2[position.position]==='"')parameterValue=collectAnHTTPQuotedString(input2,position,!0),collectASequenceOfCodePointsFast(";",input2,position);else if(parameterValue=collectASequenceOfCodePointsFast(";",input2,position),parameterValue=removeHTTPWhitespace(parameterValue,!1,!0),parameterValue.length===0)continue;parameterName.length!==0&&HTTP_TOKEN_CODEPOINTS.test(parameterName)&&(parameterValue.length===0||HTTP_QUOTED_STRING_TOKENS.test(parameterValue))&&!mimeType.parameters.has(parameterName)&&mimeType.parameters.set(parameterName,parameterValue)}return mimeType}function collectAnHTTPQuotedString(input2,position,extractValue=!1){let positionStart=position.position,value="";for(assert(input2[position.position]==='"'),position.position++;value+=collectASequenceOfCodePoints(char=>char!=='"'&&char!=="\\",input2,position),!(position.position>=input2.length);){let quoteOrBackslash=input2[position.position];if(position.position++,quoteOrBackslash==="\\"){if(position.position>=input2.length){value+="\\";break}value+=input2[position.position],position.position++}else{assert(quoteOrBackslash==='"');break}}return extractValue?value:input2.slice(positionStart,position.position)}function serializeAMimeType(mimeType){assert(mimeType!=="failure");let{parameters,essence}=mimeType,serialization=essence;for(let[name,value]of parameters.entries())serialization+=";",serialization+=name,serialization+="=",HTTP_TOKEN_CODEPOINTS.test(value)||(value=value.replace(/[\\"]/ug,"\\$&"),value='"'+value,value+='"'),serialization+=value;return serialization}function isHTTPWhiteSpace(char){return char===13||char===10||char===9||char===32}function removeHTTPWhitespace(str2,leading=!0,trailing=!0){return removeChars(str2,leading,trailing,isHTTPWhiteSpace)}function minimizeSupportedMimeType(mimeType){switch(mimeType.essence){case"application/ecmascript":case"application/javascript":case"application/x-ecmascript":case"application/x-javascript":case"text/ecmascript":case"text/javascript":case"text/javascript1.0":case"text/javascript1.1":case"text/javascript1.2":case"text/javascript1.3":case"text/javascript1.4":case"text/javascript1.5":case"text/jscript":case"text/livescript":case"text/x-ecmascript":case"text/x-javascript":return"text/javascript";case"application/json":case"text/json":return"application/json";case"image/svg+xml":return"image/svg+xml";case"text/xml":case"application/xml":return"application/xml"}return mimeType.subtype.endsWith("+json")?"application/json":mimeType.subtype.endsWith("+xml")?"application/xml":""}module.exports={dataURLProcessor,URLSerializer,stringPercentDecode,parseMIMEType,collectAnHTTPQuotedString,serializeAMimeType,removeHTTPWhitespace,minimizeSupportedMimeType,HTTP_TOKEN_CODEPOINTS}}});var require_webidl=__commonJS({"node_modules/undici/lib/web/webidl/index.js"(exports,module){"use strict";var assert=__require("node:assert"),{types:types2,inspect}=__require("node:util"),{markAsUncloneable}=__require("node:worker_threads"),UNDEFINED=1,BOOLEAN=2,STRING=3,SYMBOL=4,NUMBER=5,BIGINT=6,NULL=7,OBJECT=8,FunctionPrototypeSymbolHasInstance=Function.call.bind(Function.prototype[Symbol.hasInstance]),webidl={converters:{},util:{},errors:{},is:{}};webidl.errors.exception=function(message){return new TypeError(`${message.header}: ${message.message}`)};webidl.errors.conversionFailed=function(opts){let plural2=opts.types.length===1?"":" one of",message=`${opts.argument} could not be converted to${plural2}: ${opts.types.join(", ")}.`;return webidl.errors.exception({header:opts.prefix,message})};webidl.errors.invalidArgument=function(context){return webidl.errors.exception({header:context.prefix,message:`"${context.value}" is an invalid ${context.type}.`})};webidl.brandCheck=function(V,I){if(!FunctionPrototypeSymbolHasInstance(I,V)){let err=new TypeError("Illegal invocation");throw err.code="ERR_INVALID_THIS",err}};webidl.brandCheckMultiple=function(List){let prototypes=List.map(c=>webidl.util.MakeTypeAssertion(c));return V=>{if(prototypes.every(typeCheck=>!typeCheck(V))){let err=new TypeError("Illegal invocation");throw err.code="ERR_INVALID_THIS",err}}};webidl.argumentLengthCheck=function({length},min,ctx){if(length<min)throw webidl.errors.exception({message:`${min} argument${min!==1?"s":""} required, but${length?" only":""} ${length} found.`,header:ctx})};webidl.illegalConstructor=function(){throw webidl.errors.exception({header:"TypeError",message:"Illegal constructor"})};webidl.util.MakeTypeAssertion=function(I){return O=>FunctionPrototypeSymbolHasInstance(I,O)};webidl.util.Type=function(V){switch(typeof V){case"undefined":return UNDEFINED;case"boolean":return BOOLEAN;case"string":return STRING;case"symbol":return SYMBOL;case"number":return NUMBER;case"bigint":return BIGINT;case"function":case"object":return V===null?NULL:OBJECT}};webidl.util.Types={UNDEFINED,BOOLEAN,STRING,SYMBOL,NUMBER,BIGINT,NULL,OBJECT};webidl.util.TypeValueToString=function(o){switch(webidl.util.Type(o)){case UNDEFINED:return"Undefined";case BOOLEAN:return"Boolean";case STRING:return"String";case SYMBOL:return"Symbol";case NUMBER:return"Number";case BIGINT:return"BigInt";case NULL:return"Null";case OBJECT:return"Object"}};webidl.util.markAsUncloneable=markAsUncloneable;webidl.util.ConvertToInt=function(V,bitLength,signedness,flags){let upperBound,lowerBound;bitLength===64?(upperBound=Math.pow(2,53)-1,signedness==="unsigned"?lowerBound=0:lowerBound=Math.pow(-2,53)+1):signedness==="unsigned"?(lowerBound=0,upperBound=Math.pow(2,bitLength)-1):(lowerBound=-Math.pow(2,bitLength-1),upperBound=Math.pow(2,bitLength-1)-1);let x=Number(V);if(x===0&&(x=0),webidl.util.HasFlag(flags,webidl.attributes.EnforceRange)){if(Number.isNaN(x)||x===Number.POSITIVE_INFINITY||x===Number.NEGATIVE_INFINITY)throw webidl.errors.exception({header:"Integer conversion",message:`Could not convert ${webidl.util.Stringify(V)} to an integer.`});if(x=webidl.util.IntegerPart(x),x<lowerBound||x>upperBound)throw webidl.errors.exception({header:"Integer conversion",message:`Value must be between ${lowerBound}-${upperBound}, got ${x}.`});return x}return!Number.isNaN(x)&&webidl.util.HasFlag(flags,webidl.attributes.Clamp)?(x=Math.min(Math.max(x,lowerBound),upperBound),Math.floor(x)%2===0?x=Math.floor(x):x=Math.ceil(x),x):Number.isNaN(x)||x===0&&Object.is(0,x)||x===Number.POSITIVE_INFINITY||x===Number.NEGATIVE_INFINITY?0:(x=webidl.util.IntegerPart(x),x=x%Math.pow(2,bitLength),signedness==="signed"&&x>=Math.pow(2,bitLength-1)?x-Math.pow(2,bitLength):x)};webidl.util.IntegerPart=function(n){let r=Math.floor(Math.abs(n));return n<0?-1*r:r};webidl.util.Stringify=function(V){switch(webidl.util.Type(V)){case SYMBOL:return`Symbol(${V.description})`;case OBJECT:return inspect(V);case STRING:return`"${V}"`;case BIGINT:return`${V}n`;default:return`${V}`}};webidl.util.IsResizableArrayBuffer=function(V){if(types2.isArrayBuffer(V))return V.resizable;if(types2.isSharedArrayBuffer(V))return V.growable;throw webidl.errors.exception({header:"IsResizableArrayBuffer",message:`"${webidl.util.Stringify(V)}" is not an array buffer.`})};webidl.util.HasFlag=function(flags,attributes){return typeof flags=="number"&&(flags&attributes)===attributes};webidl.sequenceConverter=function(converter){return(V,prefix,argument,Iterable)=>{if(webidl.util.Type(V)!==OBJECT)throw webidl.errors.exception({header:prefix,message:`${argument} (${webidl.util.Stringify(V)}) is not iterable.`});let method=typeof Iterable=="function"?Iterable():V?.[Symbol.iterator]?.(),seq=[],index=0;if(method===void 0||typeof method.next!="function")throw webidl.errors.exception({header:prefix,message:`${argument} is not iterable.`});for(;;){let{done,value}=method.next();if(done)break;seq.push(converter(value,prefix,`${argument}[${index++}]`))}return seq}};webidl.recordConverter=function(keyConverter,valueConverter){return(O,prefix,argument)=>{if(webidl.util.Type(O)!==OBJECT)throw webidl.errors.exception({header:prefix,message:`${argument} ("${webidl.util.TypeValueToString(O)}") is not an Object.`});let result2={};if(!types2.isProxy(O)){let keys2=[...Object.getOwnPropertyNames(O),...Object.getOwnPropertySymbols(O)];for(let key of keys2){let keyName=webidl.util.Stringify(key),typedKey=keyConverter(key,prefix,`Key ${keyName} in ${argument}`),typedValue=valueConverter(O[key],prefix,`${argument}[${keyName}]`);result2[typedKey]=typedValue}return result2}let keys=Reflect.ownKeys(O);for(let key of keys)if(Reflect.getOwnPropertyDescriptor(O,key)?.enumerable){let typedKey=keyConverter(key,prefix,argument),typedValue=valueConverter(O[key],prefix,argument);result2[typedKey]=typedValue}return result2}};webidl.interfaceConverter=function(TypeCheck,name){return(V,prefix,argument)=>{if(!TypeCheck(V))throw webidl.errors.exception({header:prefix,message:`Expected ${argument} ("${webidl.util.Stringify(V)}") to be an instance of ${name}.`});return V}};webidl.dictionaryConverter=function(converters){return converters.sort((a,b)=>(a.key>b.key)-(a.key<b.key)),(dictionary,prefix,argument)=>{let dict={};if(dictionary!=null&&webidl.util.Type(dictionary)!==OBJECT)throw webidl.errors.exception({header:prefix,message:`Expected ${dictionary} to be one of: Null, Undefined, Object.`});for(let options of converters){let{key,defaultValue,required,converter}=options;if(required===!0&&(dictionary==null||!Object.hasOwn(dictionary,key)))throw webidl.errors.exception({header:prefix,message:`Missing required key "${key}".`});let value=dictionary?.[key],hasDefault=defaultValue!==void 0;if(hasDefault&&value===void 0&&(value=defaultValue()),required||hasDefault||value!==void 0){if(value=converter(value,prefix,`${argument}.${key}`),options.allowedValues&&!options.allowedValues.includes(value))throw webidl.errors.exception({header:prefix,message:`${value} is not an accepted type. Expected one of ${options.allowedValues.join(", ")}.`});dict[key]=value}}return dict}};webidl.nullableConverter=function(converter){return(V,prefix,argument)=>V===null?V:converter(V,prefix,argument)};webidl.is.USVString=function(value){return typeof value=="string"&&value.isWellFormed()};webidl.is.ReadableStream=webidl.util.MakeTypeAssertion(ReadableStream);webidl.is.Blob=webidl.util.MakeTypeAssertion(Blob);webidl.is.URLSearchParams=webidl.util.MakeTypeAssertion(URLSearchParams);webidl.is.File=webidl.util.MakeTypeAssertion(File);webidl.is.URL=webidl.util.MakeTypeAssertion(URL);webidl.is.AbortSignal=webidl.util.MakeTypeAssertion(AbortSignal);webidl.is.MessagePort=webidl.util.MakeTypeAssertion(MessagePort);webidl.is.BufferSource=function(V){return types2.isArrayBuffer(V)||ArrayBuffer.isView(V)&&types2.isArrayBuffer(V.buffer)};webidl.util.getCopyOfBytesHeldByBufferSource=function(bufferSource){let jsBufferSource=bufferSource,jsArrayBuffer=jsBufferSource,offset=0,length=0;if(types2.isTypedArray(jsBufferSource)||types2.isDataView(jsBufferSource)?(jsArrayBuffer=jsBufferSource.buffer,offset=jsBufferSource.byteOffset,length=jsBufferSource.byteLength):(assert(types2.isAnyArrayBuffer(jsBufferSource)),length=jsBufferSource.byteLength),jsArrayBuffer.detached)return new Uint8Array(0);let bytes=new Uint8Array(length),view=new Uint8Array(jsArrayBuffer,offset,length);return bytes.set(view),bytes};webidl.converters.DOMString=function(V,prefix,argument,flags){if(V===null&&webidl.util.HasFlag(flags,webidl.attributes.LegacyNullToEmptyString))return"";if(typeof V=="symbol")throw webidl.errors.exception({header:prefix,message:`${argument} is a symbol, which cannot be converted to a DOMString.`});return String(V)};webidl.converters.ByteString=function(V,prefix,argument){if(typeof V=="symbol")throw webidl.errors.exception({header:prefix,message:`${argument} is a symbol, which cannot be converted to a ByteString.`});let x=String(V);for(let index=0;index<x.length;index++)if(x.charCodeAt(index)>255)throw new TypeError(`Cannot convert argument to a ByteString because the character at index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.`);return x};webidl.converters.USVString=function(value){return typeof value=="string"?value.toWellFormed():`${value}`.toWellFormed()};webidl.converters.boolean=function(V){return!!V};webidl.converters.any=function(V){return V};webidl.converters["long long"]=function(V,prefix,argument){return webidl.util.ConvertToInt(V,64,"signed",0,prefix,argument)};webidl.converters["unsigned long long"]=function(V,prefix,argument){return webidl.util.ConvertToInt(V,64,"unsigned",0,prefix,argument)};webidl.converters["unsigned long"]=function(V,prefix,argument){return webidl.util.ConvertToInt(V,32,"unsigned",0,prefix,argument)};webidl.converters["unsigned short"]=function(V,prefix,argument,flags){return webidl.util.ConvertToInt(V,16,"unsigned",flags,prefix,argument)};webidl.converters.ArrayBuffer=function(V,prefix,argument,flags){if(webidl.util.Type(V)!==OBJECT||!types2.isArrayBuffer(V))throw webidl.errors.conversionFailed({prefix,argument:`${argument} ("${webidl.util.Stringify(V)}")`,types:["ArrayBuffer"]});if(!webidl.util.HasFlag(flags,webidl.attributes.AllowResizable)&&webidl.util.IsResizableArrayBuffer(V))throw webidl.errors.exception({header:prefix,message:`${argument} cannot be a resizable ArrayBuffer.`});return V};webidl.converters.SharedArrayBuffer=function(V,prefix,argument,flags){if(webidl.util.Type(V)!==OBJECT||!types2.isSharedArrayBuffer(V))throw webidl.errors.conversionFailed({prefix,argument:`${argument} ("${webidl.util.Stringify(V)}")`,types:["SharedArrayBuffer"]});if(!webidl.util.HasFlag(flags,webidl.attributes.AllowResizable)&&webidl.util.IsResizableArrayBuffer(V))throw webidl.errors.exception({header:prefix,message:`${argument} cannot be a resizable SharedArrayBuffer.`});return V};webidl.converters.TypedArray=function(V,T,prefix,argument,flags){if(webidl.util.Type(V)!==OBJECT||!types2.isTypedArray(V)||V.constructor.name!==T.name)throw webidl.errors.conversionFailed({prefix,argument:`${argument} ("${webidl.util.Stringify(V)}")`,types:[T.name]});if(!webidl.util.HasFlag(flags,webidl.attributes.AllowShared)&&types2.isSharedArrayBuffer(V.buffer))throw webidl.errors.exception({header:prefix,message:`${argument} cannot be a view on a shared array buffer.`});if(!webidl.util.HasFlag(flags,webidl.attributes.AllowResizable)&&webidl.util.IsResizableArrayBuffer(V.buffer))throw webidl.errors.exception({header:prefix,message:`${argument} cannot be a view on a resizable array buffer.`});return V};webidl.converters.DataView=function(V,prefix,argument,flags){if(webidl.util.Type(V)!==OBJECT||!types2.isDataView(V))throw webidl.errors.conversionFailed({prefix,argument:`${argument} ("${webidl.util.Stringify(V)}")`,types:["DataView"]});if(!webidl.util.HasFlag(flags,webidl.attributes.AllowShared)&&types2.isSharedArrayBuffer(V.buffer))throw webidl.errors.exception({header:prefix,message:`${argument} cannot be a view on a shared array buffer.`});if(!webidl.util.HasFlag(flags,webidl.attributes.AllowResizable)&&webidl.util.IsResizableArrayBuffer(V.buffer))throw webidl.errors.exception({header:prefix,message:`${argument} cannot be a view on a resizable array buffer.`});return V};webidl.converters.ArrayBufferView=function(V,prefix,argument,flags){if(webidl.util.Type(V)!==OBJECT||!types2.isArrayBufferView(V))throw webidl.errors.conversionFailed({prefix,argument:`${argument} ("${webidl.util.Stringify(V)}")`,types:["ArrayBufferView"]});if(!webidl.util.HasFlag(flags,webidl.attributes.AllowShared)&&types2.isSharedArrayBuffer(V.buffer))throw webidl.errors.exception({header:prefix,message:`${argument} cannot be a view on a shared array buffer.`});if(!webidl.util.HasFlag(flags,webidl.attributes.AllowResizable)&&webidl.util.IsResizableArrayBuffer(V.buffer))throw webidl.errors.exception({header:prefix,message:`${argument} cannot be a view on a resizable array buffer.`});return V};webidl.converters.BufferSource=function(V,prefix,argument,flags){if(types2.isArrayBuffer(V))return webidl.converters.ArrayBuffer(V,prefix,argument,flags);if(types2.isArrayBufferView(V))return flags&=~webidl.attributes.AllowShared,webidl.converters.ArrayBufferView(V,prefix,argument,flags);throw types2.isSharedArrayBuffer(V)?webidl.errors.exception({header:prefix,message:`${argument} cannot be a SharedArrayBuffer.`}):webidl.errors.conversionFailed({prefix,argument:`${argument} ("${webidl.util.Stringify(V)}")`,types:["ArrayBuffer","ArrayBufferView"]})};webidl.converters.AllowSharedBufferSource=function(V,prefix,argument,flags){if(types2.isArrayBuffer(V))return webidl.converters.ArrayBuffer(V,prefix,argument,flags);if(types2.isSharedArrayBuffer(V))return webidl.converters.SharedArrayBuffer(V,prefix,argument,flags);if(types2.isArrayBufferView(V))return flags|=webidl.attributes.AllowShared,webidl.converters.ArrayBufferView(V,prefix,argument,flags);throw webidl.errors.conversionFailed({prefix,argument:`${argument} ("${webidl.util.Stringify(V)}")`,types:["ArrayBuffer","SharedArrayBuffer","ArrayBufferView"]})};webidl.converters["sequence<ByteString>"]=webidl.sequenceConverter(webidl.converters.ByteString);webidl.converters["sequence<sequence<ByteString>>"]=webidl.sequenceConverter(webidl.converters["sequence<ByteString>"]);webidl.converters["record<ByteString, ByteString>"]=webidl.recordConverter(webidl.converters.ByteString,webidl.converters.ByteString);webidl.converters.Blob=webidl.interfaceConverter(webidl.is.Blob,"Blob");webidl.converters.AbortSignal=webidl.interfaceConverter(webidl.is.AbortSignal,"AbortSignal");webidl.converters.EventHandlerNonNull=function(V){return webidl.util.Type(V)!==OBJECT?null:typeof V=="function"?V:()=>{}};webidl.attributes={Clamp:1,EnforceRange:2,AllowShared:4,AllowResizable:8,LegacyNullToEmptyString:16};module.exports={webidl}}});var require_util2=__commonJS({"node_modules/undici/lib/web/fetch/util.js"(exports,module){"use strict";var{Transform}=__require("node:stream"),zlib=__require("node:zlib"),{redirectStatusSet,referrerPolicyTokens,badPortsSet}=require_constants3(),{getGlobalOrigin}=require_global(),{collectAnHTTPQuotedString,parseMIMEType}=require_data_url(),{performance:performance2}=__require("node:perf_hooks"),{ReadableStreamFrom,isValidHTTPToken,normalizedMethodRecordsBase}=require_util(),assert=__require("node:assert"),{isUint8Array}=__require("node:util/types"),{webidl}=require_webidl(),{isomorphicEncode,collectASequenceOfCodePoints,removeChars}=require_infra();function responseURL(response){let urlList=response.urlList,length=urlList.length;return length===0?null:urlList[length-1].toString()}function responseLocationURL(response,requestFragment){if(!redirectStatusSet.has(response.status))return null;let location=response.headersList.get("location",!0);return location!==null&&isValidHeaderValue(location)&&(isValidEncodedURL(location)||(location=normalizeBinaryStringToUtf8(location)),location=new URL(location,responseURL(response))),location&&!location.hash&&(location.hash=requestFragment),location}function isValidEncodedURL(url){for(let i=0;i<url.length;++i){let code=url.charCodeAt(i);if(code>126||code<32)return!1}return!0}function normalizeBinaryStringToUtf8(value){return Buffer.from(value,"binary").toString("utf8")}function requestCurrentURL(request){return request.urlList[request.urlList.length-1]}function requestBadPort(request){let url=requestCurrentURL(request);return urlIsHttpHttpsScheme(url)&&badPortsSet.has(url.port)?"blocked":"allowed"}function isErrorLike(object2){return object2 instanceof Error||object2?.constructor?.name==="Error"||object2?.constructor?.name==="DOMException"}function isValidReasonPhrase(statusText){for(let i=0;i<statusText.length;++i){let c=statusText.charCodeAt(i);if(!(c===9||c>=32&&c<=126||c>=128&&c<=255))return!1}return!0}var isValidHeaderName=isValidHTTPToken;function isValidHeaderValue(potentialValue){return(potentialValue[0]===" "||potentialValue[0]===" "||potentialValue[potentialValue.length-1]===" "||potentialValue[potentialValue.length-1]===" "||potentialValue.includes(`
3
- `)||potentialValue.includes("\r")||potentialValue.includes("\0"))===!1}function parseReferrerPolicy(actualResponse){let policyHeader=(actualResponse.headersList.get("referrer-policy",!0)??"").split(","),policy="";if(policyHeader.length)for(let i=policyHeader.length;i!==0;i--){let token=policyHeader[i-1].trim();if(referrerPolicyTokens.has(token)){policy=token;break}}return policy}function setRequestReferrerPolicyOnRedirect(request,actualResponse){let policy=parseReferrerPolicy(actualResponse);policy!==""&&(request.referrerPolicy=policy)}function crossOriginResourcePolicyCheck(){return"allowed"}function corsCheck(){return"success"}function TAOCheck(){return"success"}function appendFetchMetadata(httpRequest){if(!isURLPotentiallyTrustworthy(requestCurrentURL(httpRequest)))return;let header=null;header=httpRequest.mode,httpRequest.headersList.set("sec-fetch-mode",header,!0)}function appendRequestOriginHeader(request){let serializedOrigin=request.origin;if(!(serializedOrigin==="client"||serializedOrigin===void 0)){if(request.responseTainting==="cors"||request.mode==="websocket")request.headersList.append("origin",serializedOrigin,!0);else if(request.method!=="GET"&&request.method!=="HEAD"){switch(request.referrerPolicy){case"no-referrer":serializedOrigin=null;break;case"no-referrer-when-downgrade":case"strict-origin":case"strict-origin-when-cross-origin":request.origin&&urlHasHttpsScheme(request.origin)&&!urlHasHttpsScheme(requestCurrentURL(request))&&(serializedOrigin=null);break;case"same-origin":sameOrigin(request,requestCurrentURL(request))||(serializedOrigin=null);break;default:}request.headersList.append("origin",serializedOrigin,!0)}}}function coarsenTime(timestamp,crossOriginIsolatedCapability){return timestamp}function clampAndCoarsenConnectionTimingInfo(connectionTimingInfo,defaultStartTime,crossOriginIsolatedCapability){return!connectionTimingInfo?.startTime||connectionTimingInfo.startTime<defaultStartTime?{domainLookupStartTime:defaultStartTime,domainLookupEndTime:defaultStartTime,connectionStartTime:defaultStartTime,connectionEndTime:defaultStartTime,secureConnectionStartTime:defaultStartTime,ALPNNegotiatedProtocol:connectionTimingInfo?.ALPNNegotiatedProtocol}:{domainLookupStartTime:coarsenTime(connectionTimingInfo.domainLookupStartTime,crossOriginIsolatedCapability),domainLookupEndTime:coarsenTime(connectionTimingInfo.domainLookupEndTime,crossOriginIsolatedCapability),connectionStartTime:coarsenTime(connectionTimingInfo.connectionStartTime,crossOriginIsolatedCapability),connectionEndTime:coarsenTime(connectionTimingInfo.connectionEndTime,crossOriginIsolatedCapability),secureConnectionStartTime:coarsenTime(connectionTimingInfo.secureConnectionStartTime,crossOriginIsolatedCapability),ALPNNegotiatedProtocol:connectionTimingInfo.ALPNNegotiatedProtocol}}function coarsenedSharedCurrentTime(crossOriginIsolatedCapability){return coarsenTime(performance2.now(),crossOriginIsolatedCapability)}function createOpaqueTimingInfo(timingInfo){return{startTime:timingInfo.startTime??0,redirectStartTime:0,redirectEndTime:0,postRedirectStartTime:timingInfo.startTime??0,finalServiceWorkerStartTime:0,finalNetworkResponseStartTime:0,finalNetworkRequestStartTime:0,endTime:0,encodedBodySize:0,decodedBodySize:0,finalConnectionTimingInfo:null}}function makePolicyContainer(){return{referrerPolicy:"strict-origin-when-cross-origin"}}function clonePolicyContainer(policyContainer){return{referrerPolicy:policyContainer.referrerPolicy}}function determineRequestsReferrer(request){let policy=request.referrerPolicy;assert(policy);let referrerSource=null;if(request.referrer==="client"){let globalOrigin=getGlobalOrigin();if(!globalOrigin||globalOrigin.origin==="null")return"no-referrer";referrerSource=new URL(globalOrigin)}else webidl.is.URL(request.referrer)&&(referrerSource=request.referrer);let referrerURL=stripURLForReferrer(referrerSource),referrerOrigin=stripURLForReferrer(referrerSource,!0);switch(referrerURL.toString().length>4096&&(referrerURL=referrerOrigin),policy){case"no-referrer":return"no-referrer";case"origin":return referrerOrigin??stripURLForReferrer(referrerSource,!0);case"unsafe-url":return referrerURL;case"strict-origin":{let currentURL=requestCurrentURL(request);return isURLPotentiallyTrustworthy(referrerURL)&&!isURLPotentiallyTrustworthy(currentURL)?"no-referrer":referrerOrigin}case"strict-origin-when-cross-origin":{let currentURL=requestCurrentURL(request);return sameOrigin(referrerURL,currentURL)?referrerURL:isURLPotentiallyTrustworthy(referrerURL)&&!isURLPotentiallyTrustworthy(currentURL)?"no-referrer":referrerOrigin}case"same-origin":return sameOrigin(request,referrerURL)?referrerURL:"no-referrer";case"origin-when-cross-origin":return sameOrigin(request,referrerURL)?referrerURL:referrerOrigin;case"no-referrer-when-downgrade":{let currentURL=requestCurrentURL(request);return isURLPotentiallyTrustworthy(referrerURL)&&!isURLPotentiallyTrustworthy(currentURL)?"no-referrer":referrerURL}}}function stripURLForReferrer(url,originOnly=!1){return assert(webidl.is.URL(url)),url=new URL(url),urlIsLocal(url)?"no-referrer":(url.username="",url.password="",url.hash="",originOnly===!0&&(url.pathname="",url.search=""),url)}var isPotentialleTrustworthyIPv4=RegExp.prototype.test.bind(/^127\.(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)\.){2}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)$/),isPotentiallyTrustworthyIPv6=RegExp.prototype.test.bind(/^(?:(?:0{1,4}:){7}|(?:0{1,4}:){1,6}:|::)0{0,3}1$/);function isOriginIPPotentiallyTrustworthy(origin){return origin.includes(":")?(origin[0]==="["&&origin[origin.length-1]==="]"&&(origin=origin.slice(1,-1)),isPotentiallyTrustworthyIPv6(origin)):isPotentialleTrustworthyIPv4(origin)}function isOriginPotentiallyTrustworthy(origin){return origin==null||origin==="null"?!1:(origin=new URL(origin),!!(origin.protocol==="https:"||origin.protocol==="wss:"||isOriginIPPotentiallyTrustworthy(origin.hostname)||origin.hostname==="localhost"||origin.hostname==="localhost."||origin.hostname.endsWith(".localhost")||origin.hostname.endsWith(".localhost.")||origin.protocol==="file:"))}function isURLPotentiallyTrustworthy(url){return webidl.is.URL(url)?url.href==="about:blank"||url.href==="about:srcdoc"||url.protocol==="data:"||url.protocol==="blob:"?!0:isOriginPotentiallyTrustworthy(url.origin):!1}function tryUpgradeRequestToAPotentiallyTrustworthyURL(request){}function sameOrigin(A,B){return A.origin===B.origin&&A.origin==="null"||A.protocol===B.protocol&&A.hostname===B.hostname&&A.port===B.port}function isAborted(fetchParams){return fetchParams.controller.state==="aborted"}function isCancelled(fetchParams){return fetchParams.controller.state==="aborted"||fetchParams.controller.state==="terminated"}function normalizeMethod(method){return normalizedMethodRecordsBase[method.toLowerCase()]??method}var esIteratorPrototype=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function createIterator(name,kInternalIterator,keyIndex=0,valueIndex=1){class FastIterableIterator{#target;#kind;#index;constructor(target,kind){this.#target=target,this.#kind=kind,this.#index=0}next(){if(typeof this!="object"||this===null||!(#target in this))throw new TypeError(`'next' called on an object that does not implement interface ${name} Iterator.`);let index=this.#index,values=kInternalIterator(this.#target),len=values.length;if(index>=len)return{value:void 0,done:!0};let{[keyIndex]:key,[valueIndex]:value}=values[index];this.#index=index+1;let result2;switch(this.#kind){case"key":result2=key;break;case"value":result2=value;break;case"key+value":result2=[key,value];break}return{value:result2,done:!1}}}return delete FastIterableIterator.prototype.constructor,Object.setPrototypeOf(FastIterableIterator.prototype,esIteratorPrototype),Object.defineProperties(FastIterableIterator.prototype,{[Symbol.toStringTag]:{writable:!1,enumerable:!1,configurable:!0,value:`${name} Iterator`},next:{writable:!0,enumerable:!0,configurable:!0}}),function(target,kind){return new FastIterableIterator(target,kind)}}function iteratorMixin(name,object2,kInternalIterator,keyIndex=0,valueIndex=1){let makeIterator=createIterator(name,kInternalIterator,keyIndex,valueIndex),properties={keys:{writable:!0,enumerable:!0,configurable:!0,value:function(){return webidl.brandCheck(this,object2),makeIterator(this,"key")}},values:{writable:!0,enumerable:!0,configurable:!0,value:function(){return webidl.brandCheck(this,object2),makeIterator(this,"value")}},entries:{writable:!0,enumerable:!0,configurable:!0,value:function(){return webidl.brandCheck(this,object2),makeIterator(this,"key+value")}},forEach:{writable:!0,enumerable:!0,configurable:!0,value:function(callbackfn,thisArg=globalThis){if(webidl.brandCheck(this,object2),webidl.argumentLengthCheck(arguments,1,`${name}.forEach`),typeof callbackfn!="function")throw new TypeError(`Failed to execute 'forEach' on '${name}': parameter 1 is not of type 'Function'.`);for(let{0:key,1:value}of makeIterator(this,"key+value"))callbackfn.call(thisArg,value,key,this)}}};return Object.defineProperties(object2.prototype,{...properties,[Symbol.iterator]:{writable:!0,enumerable:!1,configurable:!0,value:properties.entries.value}})}function fullyReadBody(body,processBody,processBodyError){let successSteps=processBody,errorSteps=processBodyError;try{let reader=body.stream.getReader();readAllBytes(reader,successSteps,errorSteps)}catch(e){errorSteps(e)}}function readableStreamClose(controller){try{controller.close(),controller.byobRequest?.respond(0)}catch(err){if(!err.message.includes("Controller is already closed")&&!err.message.includes("ReadableStream is already closed"))throw err}}async function readAllBytes(reader,successSteps,failureSteps){try{let bytes=[],byteLength2=0;do{let{done,value:chunk2}=await reader.read();if(done){successSteps(Buffer.concat(bytes,byteLength2));return}if(!isUint8Array(chunk2)){failureSteps(new TypeError("Received non-Uint8Array chunk"));return}bytes.push(chunk2),byteLength2+=chunk2.length}while(!0)}catch(e){failureSteps(e)}}function urlIsLocal(url){assert("protocol"in url);let protocol=url.protocol;return protocol==="about:"||protocol==="blob:"||protocol==="data:"}function urlHasHttpsScheme(url){return typeof url=="string"&&url[5]===":"&&url[0]==="h"&&url[1]==="t"&&url[2]==="t"&&url[3]==="p"&&url[4]==="s"||url.protocol==="https:"}function urlIsHttpHttpsScheme(url){assert("protocol"in url);let protocol=url.protocol;return protocol==="http:"||protocol==="https:"}function simpleRangeHeaderValue(value,allowWhitespace){let data=value;if(!data.startsWith("bytes"))return"failure";let position={position:5};if(allowWhitespace&&collectASequenceOfCodePoints(char=>char===" "||char===" ",data,position),data.charCodeAt(position.position)!==61)return"failure";position.position++,allowWhitespace&&collectASequenceOfCodePoints(char=>char===" "||char===" ",data,position);let rangeStart=collectASequenceOfCodePoints(char=>{let code=char.charCodeAt(0);return code>=48&&code<=57},data,position),rangeStartValue=rangeStart.length?Number(rangeStart):null;if(allowWhitespace&&collectASequenceOfCodePoints(char=>char===" "||char===" ",data,position),data.charCodeAt(position.position)!==45)return"failure";position.position++,allowWhitespace&&collectASequenceOfCodePoints(char=>char===" "||char===" ",data,position);let rangeEnd=collectASequenceOfCodePoints(char=>{let code=char.charCodeAt(0);return code>=48&&code<=57},data,position),rangeEndValue=rangeEnd.length?Number(rangeEnd):null;return position.position<data.length||rangeEndValue===null&&rangeStartValue===null||rangeStartValue!==null&&rangeEndValue!==null&&rangeStartValue>rangeEndValue?"failure":{rangeStartValue,rangeEndValue}}function buildContentRange(rangeStart,rangeEnd,fullLength){let contentRange="bytes ";return contentRange+=isomorphicEncode(`${rangeStart}`),contentRange+="-",contentRange+=isomorphicEncode(`${rangeEnd}`),contentRange+="/",contentRange+=isomorphicEncode(`${fullLength}`),contentRange}var InflateStream=class extends Transform{#zlibOptions;constructor(zlibOptions){super(),this.#zlibOptions=zlibOptions}_transform(chunk2,encoding,callback){if(!this._inflateStream){if(chunk2.length===0){callback();return}this._inflateStream=(chunk2[0]&15)===8?zlib.createInflate(this.#zlibOptions):zlib.createInflateRaw(this.#zlibOptions),this._inflateStream.on("data",this.push.bind(this)),this._inflateStream.on("end",()=>this.push(null)),this._inflateStream.on("error",err=>this.destroy(err))}this._inflateStream.write(chunk2,encoding,callback)}_final(callback){this._inflateStream&&(this._inflateStream.end(),this._inflateStream=null),callback()}};function createInflate(zlibOptions){return new InflateStream(zlibOptions)}function extractMimeType(headers){let charset=null,essence=null,mimeType=null,values=getDecodeSplit("content-type",headers);if(values===null)return"failure";for(let value of values){let temporaryMimeType=parseMIMEType(value);temporaryMimeType==="failure"||temporaryMimeType.essence==="*/*"||(mimeType=temporaryMimeType,mimeType.essence!==essence?(charset=null,mimeType.parameters.has("charset")&&(charset=mimeType.parameters.get("charset")),essence=mimeType.essence):!mimeType.parameters.has("charset")&&charset!==null&&mimeType.parameters.set("charset",charset))}return mimeType??"failure"}function gettingDecodingSplitting(value){let input2=value,position={position:0},values=[],temporaryValue="";for(;position.position<input2.length;){if(temporaryValue+=collectASequenceOfCodePoints(char=>char!=='"'&&char!==",",input2,position),position.position<input2.length)if(input2.charCodeAt(position.position)===34){if(temporaryValue+=collectAnHTTPQuotedString(input2,position),position.position<input2.length)continue}else assert(input2.charCodeAt(position.position)===44),position.position++;temporaryValue=removeChars(temporaryValue,!0,!0,char=>char===9||char===32),values.push(temporaryValue),temporaryValue=""}return values}function getDecodeSplit(name,list){let value=list.get(name,!0);return value===null?null:gettingDecodingSplitting(value)}function hasAuthenticationEntry(request){return!1}function includesCredentials(url){return!!(url.username||url.password)}function isTraversableNavigable(navigable){return navigable!=null&&navigable!=="client"&&navigable!=="no-traversable"}var EnvironmentSettingsObjectBase=class{get baseUrl(){return getGlobalOrigin()}get origin(){return this.baseUrl?.origin}policyContainer=makePolicyContainer()},EnvironmentSettingsObject=class{settingsObject=new EnvironmentSettingsObjectBase},environmentSettingsObject=new EnvironmentSettingsObject;module.exports={isAborted,isCancelled,isValidEncodedURL,ReadableStreamFrom,tryUpgradeRequestToAPotentiallyTrustworthyURL,clampAndCoarsenConnectionTimingInfo,coarsenedSharedCurrentTime,determineRequestsReferrer,makePolicyContainer,clonePolicyContainer,appendFetchMetadata,appendRequestOriginHeader,TAOCheck,corsCheck,crossOriginResourcePolicyCheck,createOpaqueTimingInfo,setRequestReferrerPolicyOnRedirect,isValidHTTPToken,requestBadPort,requestCurrentURL,responseURL,responseLocationURL,isURLPotentiallyTrustworthy,isValidReasonPhrase,sameOrigin,normalizeMethod,iteratorMixin,createIterator,isValidHeaderName,isValidHeaderValue,isErrorLike,fullyReadBody,readableStreamClose,urlIsLocal,urlHasHttpsScheme,urlIsHttpHttpsScheme,readAllBytes,simpleRangeHeaderValue,buildContentRange,createInflate,extractMimeType,getDecodeSplit,environmentSettingsObject,isOriginIPPotentiallyTrustworthy,hasAuthenticationEntry,includesCredentials,isTraversableNavigable}}});var require_runtime_features=__commonJS({"node_modules/undici/lib/util/runtime-features.js"(exports,module){"use strict";var lazyLoaders={__proto__:null,"node:crypto":()=>__require("node:crypto"),"node:sqlite":()=>__require("node:sqlite")};function detectRuntimeFeatureByNodeModule(moduleName){try{return lazyLoaders[moduleName](),!0}catch(err){if(err.code!=="ERR_UNKNOWN_BUILTIN_MODULE"&&err.code!=="ERR_NO_CRYPTO")throw err;return!1}}var runtimeFeaturesAsNodeModule=["crypto","sqlite"];function detectRuntimeFeature(feature){if(runtimeFeaturesAsNodeModule.includes(feature))return detectRuntimeFeatureByNodeModule(`node:${feature}`);throw new TypeError(`unknown feature: ${feature}`)}var RuntimeFeatures=class{#map=new Map;clear(){this.#map.clear()}has(feature){return this.#map.get(feature)??this.#detectRuntimeFeature(feature)}set(feature,value){if(runtimeFeaturesAsNodeModule.includes(feature)===!1)throw new TypeError(`unknown feature: ${feature}`);this.#map.set(feature,value)}#detectRuntimeFeature(feature){let result2=detectRuntimeFeature(feature);return this.#map.set(feature,result2),result2}},instance=new RuntimeFeatures;module.exports.runtimeFeatures=instance;module.exports.default=instance}});var require_formdata=__commonJS({"node_modules/undici/lib/web/fetch/formdata.js"(exports,module){"use strict";var{iteratorMixin}=require_util2(),{kEnumerableProperty}=require_util(),{webidl}=require_webidl(),nodeUtil=__require("node:util"),{runtimeFeatures}=require_runtime_features(),random=runtimeFeatures.has("crypto")?__require("node:crypto").randomInt:max=>Math.floor(Math.random()*max),FormData2=class _FormData{#state=[];#boundary=null;constructor(form=void 0){if(webidl.util.markAsUncloneable(this),form!==void 0)throw webidl.errors.conversionFailed({prefix:"FormData constructor",argument:"Argument 1",types:["undefined"]})}append(name,value,filename=void 0){webidl.brandCheck(this,_FormData);let prefix="FormData.append";webidl.argumentLengthCheck(arguments,2,prefix),name=webidl.converters.USVString(name),arguments.length===3||webidl.is.Blob(value)?(value=webidl.converters.Blob(value,prefix,"value"),filename!==void 0&&(filename=webidl.converters.USVString(filename))):value=webidl.converters.USVString(value);let entry=makeEntry(name,value,filename);this.#state.push(entry)}delete(name){webidl.brandCheck(this,_FormData),webidl.argumentLengthCheck(arguments,1,"FormData.delete"),name=webidl.converters.USVString(name),this.#state=this.#state.filter(entry=>entry.name!==name)}get(name){webidl.brandCheck(this,_FormData),webidl.argumentLengthCheck(arguments,1,"FormData.get"),name=webidl.converters.USVString(name);let idx=this.#state.findIndex(entry=>entry.name===name);return idx===-1?null:this.#state[idx].value}getAll(name){return webidl.brandCheck(this,_FormData),webidl.argumentLengthCheck(arguments,1,"FormData.getAll"),name=webidl.converters.USVString(name),this.#state.filter(entry=>entry.name===name).map(entry=>entry.value)}has(name){return webidl.brandCheck(this,_FormData),webidl.argumentLengthCheck(arguments,1,"FormData.has"),name=webidl.converters.USVString(name),this.#state.findIndex(entry=>entry.name===name)!==-1}set(name,value,filename=void 0){webidl.brandCheck(this,_FormData);let prefix="FormData.set";webidl.argumentLengthCheck(arguments,2,prefix),name=webidl.converters.USVString(name),arguments.length===3||webidl.is.Blob(value)?(value=webidl.converters.Blob(value,prefix,"value"),filename!==void 0&&(filename=webidl.converters.USVString(filename))):value=webidl.converters.USVString(value);let entry=makeEntry(name,value,filename),idx=this.#state.findIndex(entry2=>entry2.name===name);idx!==-1?this.#state=[...this.#state.slice(0,idx),entry,...this.#state.slice(idx+1).filter(entry2=>entry2.name!==name)]:this.#state.push(entry)}[nodeUtil.inspect.custom](depth,options){let state=this.#state.reduce((a,b)=>(a[b.name]?Array.isArray(a[b.name])?a[b.name].push(b.value):a[b.name]=[a[b.name],b.value]:a[b.name]=b.value,a),{__proto__:null});options.depth??=depth,options.colors??=!0;let output=nodeUtil.formatWithOptions(options,state);return`FormData ${output.slice(output.indexOf("]")+2)}`}static getFormDataState(formData){return formData.#state}static setFormDataState(formData,newState){formData.#state=newState}static getFormDataBoundary(formData){let boundary=formData.#boundary;return boundary??(formData.#boundary=`----formdata-undici-0${`${random(1e11)}`.padStart(11,"0")}`)}},{getFormDataState,setFormDataState,getFormDataBoundary}=FormData2;Reflect.deleteProperty(FormData2,"getFormDataState");Reflect.deleteProperty(FormData2,"setFormDataState");Reflect.deleteProperty(FormData2,"getFormDataBoundary");iteratorMixin("FormData",FormData2,getFormDataState,"name","value");Object.defineProperties(FormData2.prototype,{append:kEnumerableProperty,delete:kEnumerableProperty,get:kEnumerableProperty,getAll:kEnumerableProperty,has:kEnumerableProperty,set:kEnumerableProperty,[Symbol.toStringTag]:{value:"FormData",configurable:!0}});function makeEntry(name,value,filename){if(typeof value!="string"){if(webidl.is.File(value)||(value=new File([value],"blob",{type:value.type})),filename!==void 0){let options={type:value.type,lastModified:value.lastModified};value=new File([value],filename,options)}}return{name,value}}webidl.is.FormData=webidl.util.MakeTypeAssertion(FormData2);module.exports={FormData:FormData2,makeEntry,setFormDataState,getFormDataBoundary}}});var require_formdata_parser=__commonJS({"node_modules/undici/lib/web/fetch/formdata-parser.js"(exports,module){"use strict";var{bufferToLowerCasedHeaderName}=require_util(),{HTTP_TOKEN_CODEPOINTS}=require_data_url(),{makeEntry}=require_formdata(),{webidl}=require_webidl(),assert=__require("node:assert"),{isomorphicDecode}=require_infra(),dd=Buffer.from("--"),decoder=new TextDecoder,decoderIgnoreBOM=new TextDecoder("utf-8",{ignoreBOM:!0});function isAsciiString(chars){for(let i=0;i<chars.length;++i)if((chars.charCodeAt(i)&-128)!==0)return!1;return!0}function validateBoundary(boundary){let length=boundary.length;if(length<27||length>70)return!1;for(let i=0;i<length;++i){let cp=boundary.charCodeAt(i);if(!(cp>=48&&cp<=57||cp>=65&&cp<=90||cp>=97&&cp<=122||cp===39||cp===45||cp===95))return!1}return!0}function multipartFormDataParser(input2,mimeType){assert(mimeType!=="failure"&&mimeType.essence==="multipart/form-data");let boundaryString=mimeType.parameters.get("boundary");if(boundaryString===void 0)throw parsingError("missing boundary in content-type header");let boundary=Buffer.from(`--${boundaryString}`,"utf8"),entryList=[],position={position:0},firstBoundaryIndex=input2.indexOf(boundary);if(firstBoundaryIndex===-1)throw parsingError("no boundary found in multipart body");for(position.position=firstBoundaryIndex;;){if(input2.subarray(position.position,position.position+boundary.length).equals(boundary))position.position+=boundary.length;else throw parsingError("expected a value starting with -- and the boundary");if(bufferStartsWith(input2,dd,position))return entryList;if(input2[position.position]!==13||input2[position.position+1]!==10)throw parsingError("expected CRLF");position.position+=2;let result2=parseMultipartFormDataHeaders(input2,position),{name,filename,contentType,encoding}=result2;position.position+=2;let body;{let boundaryIndex=input2.indexOf(boundary.subarray(2),position.position);if(boundaryIndex===-1)throw parsingError("expected boundary after body");body=input2.subarray(position.position,boundaryIndex-4),position.position+=body.length,encoding==="base64"&&(body=Buffer.from(body.toString(),"base64"))}if(input2[position.position]!==13||input2[position.position+1]!==10)throw parsingError("expected CRLF");position.position+=2;let value;filename!==null?(contentType??="text/plain",isAsciiString(contentType)||(contentType=""),value=new File([body],filename,{type:contentType})):value=decoderIgnoreBOM.decode(Buffer.from(body)),assert(webidl.is.USVString(name)),assert(typeof value=="string"&&webidl.is.USVString(value)||webidl.is.File(value)),entryList.push(makeEntry(name,value,filename))}}function parseContentDispositionAttribute(input2,position){input2[position.position]===59&&position.position++,collectASequenceOfBytes(char=>char===32||char===9,input2,position);let attributeName=collectASequenceOfBytes(char=>isToken(char)&&char!==61&&char!==42,input2,position);if(attributeName.length===0)return null;let attrNameStr=attributeName.toString("ascii").toLowerCase(),isExtended=input2[position.position]===42;if(isExtended&&position.position++,input2[position.position]!==61)return null;position.position++,collectASequenceOfBytes(char=>char===32||char===9,input2,position);let value;if(isExtended){let headerValue=collectASequenceOfBytes(char=>char!==32&&char!==13&&char!==10&&char!==59,input2,position);if(headerValue[0]!==117&&headerValue[0]!==85||headerValue[1]!==116&&headerValue[1]!==84||headerValue[2]!==102&&headerValue[2]!==70||headerValue[3]!==45||headerValue[4]!==56)throw parsingError("unknown encoding, expected utf-8''");value=decodeURIComponent(decoder.decode(headerValue.subarray(7)))}else if(input2[position.position]===34){position.position++;let quotedValue=collectASequenceOfBytes(char=>char!==10&&char!==13&&char!==34,input2,position);if(input2[position.position]!==34)throw parsingError("Closing quote not found");position.position++,value=decoder.decode(quotedValue).replace(/%0A/ig,`
2
+ import{ArminComponent}from"./chunk-R2XYMDTS.js";import{Compile,CredentialSynchronizationError,DEFAULT_RADIUS_GATEWAY,InMemoryCodingAgentModelsStore,ModelRuntime,ProjectTrustStore,VIRTUAL_MODEL_STATE_ENTRY,addMcpServerConfig,completeSimple,fetchWithRetry,findLatestResponse,findNonJson,getBranchSelection,getKnightcodeUserAgent as getKnightcodeUserAgent2,getProjectTrustOptions,getVirtualModelState,hasTrustRequiringProjectResources,isContextOverflow,isRecoverableLength,isVirtualModel,loadMcpConfig,normalizeRadiusGatewayUrl,openBrowser,resetApiProviders,stream,streamSimple,typesafeSystemOneApi,updateMcpServerConfig,validateToolArguments}from"./chunk-XZJICKQ6.js";import{CODEMODE_TOOL_NAME,CollapsedToolOutput,DEFAULT_MAX_BYTES,DEFAULT_MAX_LINES,SETTINGS_DEFAULTS,TOOL_SEARCH_TOOL_NAME,addUsageToTotals,combineUsage,createCodemodeToolDefinition,createOutputFileStream,createToolDefinitionFromAgentTool,createToolSearchToolDefinition,createUsageTotals,formatReadLineRange,formatSize,formatToolCall,formatToolCallWithArgs,formatToolSummary,getTextOutput,getUsageCostBreakdown,invalidArgText,normalizeDisplayText,plural,renderToolPath,replaceTabs,shortenPath,splitIncompleteAnsiSuffix,startToolTimer,str,stripAnsi,toolTimerText,truncateHead,truncateLine,truncateMiddle,truncateTail,truncateToVisualLines,wrapToolDefinition,writeOutputFile}from"./chunk-HNZSETB2.js";import{Box,CancellableLoader,CombinedAutocompleteProvider,Container,Editor,FS_WATCH_RETRY_DELAY_MS,Gutter,Image,Input,Key,KeybindingsManager,Loader,Markdown,MouseRegion,ProcessTerminal,SYSTEM_THEME_NAME,ScrollView,SelectList,SettingsList,Spacer,THEME_TOKENS,TUI_KEYBINDINGS,Text,Theme,TruncatedText,TuiAltScreen,TuiMainScreen,VStack,Z,backgroundAnsi,closeWatcher,colorToRgb,detectCapabilities,foregroundAnsi,formatKeyText,fuzzyFilter,fuzzyMatch,getAvailableThemes,getAvailableThemesWithPaths,getCapabilities,getEditorTheme,getKeybindings,getLanguageFromPath,getMarkdownTheme,getNativeClipboard,getResolvedThemeColors,getSelectListTheme,getSettingsListTheme,getTerminalColorMode,getTerminalTheme,getThemeByName,getThemeExportColors,highlightCode,hyperlink,initTheme,isViewportTUI,keyDisplayText,keyDisplayTextPrimary,keyHint,keyText,loadAllHighlightLanguages,loadThemeFromPath,markTerminalColorsPending,matchesKey,mixColors,onThemeChange,parseAutoThemeSetting,parseColor,rawKeyHint,resolveThemeSetting,rgbColor,setCapabilityOverrides,setImageTranscoder,setKeybindings,setRegisteredThemes,setTerminalColorScheme,setTerminalColors,setTheme,setThemeInstance,setThemeJsonValidator,sliceByColumn,stopThemeWatcher,theme,truncateToWidth,visibleWidth,watchWithErrorHandler,wrapTextWithAnsi}from"./chunk-LA7DDYYM.js";import{isRetryableAssistantError,retryAssistantCall,retryDelayMs,typebox_exports}from"./chunk-MXIWLMNT.js";import{source_default}from"./chunk-KQKUEQJA.js";import{AuthStorage,LIST_MCP_RESOURCES_TOOL,LIST_MCP_RESOURCE_TEMPLATES_TOOL,McpServerRegistry,READ_MCP_RESOURCE_TOOL,ReadOnlyAuthStorage,createToolNameMatcher,getMcpToolExposure,isMcpToolName,mcpNamespace,raceWithAbortSignal,readStoredCredential,require_proper_lockfile,toLlmContent,validateMcpServerConfig}from"./chunk-NGWSYXD5.js";import{getPowerShellConfig,getShellConfig,getShellEnv,killProcessTree,killTrackedDetachedChildren,sanitizeBinaryOutput,trackDetachedChildPid,untrackDetachedChildPid}from"./chunk-2QXPCKUQ.js";import{APP_NAME,APP_TITLE,CONFIG_DIR_NAME,ENV_AGENT_DIR,ENV_SESSION_DIR,PACKAGE_NAME,VERSION,canonicalizePath,detectInstallChange,detectInstallMethod,expandTildePath,formatPathRelativeToCwdOrAbsolute,getAgentDir,getAuthPath,getBinDir,getChangelogPath,getCwdRelativePath,getDebugLogPath,getDocsPath,getExamplesPath,getExportTemplateDir,getPackageDir,getReadmePath,getSelfUpdateCommand,getSelfUpdatePackageDir,getSelfUpdateUnavailableInstruction,getSessionsDir,getSettingsPath,getShareViewerUrl,isBunBinary,isBundledNode,isLocalPath,markPathIgnoredByCloudSync,normalizePath,resolvePath,spawnProcess,spawnProcessSync,splitBom,stripBom,waitForChildProcess}from"./chunk-BPNRVFVQ.js";import{cleanupSessionResources,uuidv7}from"./chunk-NDQ5OW6U.js";import{getProviderEnvValue}from"./chunk-BRKUE2MD.js";import{parseStreamingJson}from"./chunk-FA32X2UJ.js";import{getKnightcodeUserAgent}from"./chunk-HHWP56PR.js";import{calculateCost,clampThinkingLevel,contentText,createInitialSystemMessage,getCurrentSystemMessage,getCurrentSystemPrompt,getCurrentTools,getSupportedThinkingLevels,getSystemMessageText,getToolStateChanges,isModelType,modelsAreEqual,normalizeContext,toToolDeclaration}from"./chunk-T7XWBYOA.js";import{EventStream,createAssistantMessageEventStream}from"./chunk-ETOMYYZC.js";import{__commonJS,__export,__require,__toESM}from"./chunk-AHB7JV5B.js";var require_symbols=__commonJS({"node_modules/undici/lib/core/symbols.js"(exports,module){"use strict";module.exports={kClose:Symbol("close"),kDestroy:Symbol("destroy"),kDispatch:Symbol("dispatch"),kUrl:Symbol("url"),kRequestOrigin:Symbol("request origin"),kOriginless:Symbol("originless"),kWriting:Symbol("writing"),kResuming:Symbol("resuming"),kQueue:Symbol("queue"),kConnect:Symbol("connect"),kConnecting:Symbol("connecting"),kKeepAliveDefaultTimeout:Symbol("default keep alive timeout"),kKeepAliveMaxTimeout:Symbol("max keep alive timeout"),kKeepAliveTimeoutThreshold:Symbol("keep alive timeout threshold"),kKeepAliveTimeoutValue:Symbol("keep alive timeout"),kKeepAlive:Symbol("keep alive"),kHeadersTimeout:Symbol("headers timeout"),kBodyTimeout:Symbol("body timeout"),kServerName:Symbol("server name"),kLocalAddress:Symbol("local address"),kHost:Symbol("host"),kNoRef:Symbol("no ref"),kBodyUsed:Symbol("used"),kBody:Symbol("abstracted request body"),kRunning:Symbol("running"),kBlocking:Symbol("blocking"),kPending:Symbol("pending"),kSize:Symbol("size"),kBusy:Symbol("busy"),kQueued:Symbol("queued"),kFree:Symbol("free"),kConnected:Symbol("connected"),kClosed:Symbol("closed"),kNeedDrain:Symbol("need drain"),kReset:Symbol("reset"),kDestroyed:Symbol.for("nodejs.stream.destroyed"),kResume:Symbol("resume"),kOnError:Symbol("on error"),kMaxHeadersSize:Symbol("max headers size"),kRunningIdx:Symbol("running index"),kPendingIdx:Symbol("pending index"),kError:Symbol("error"),kClients:Symbol("clients"),kClient:Symbol("client"),kParser:Symbol("parser"),kOnDestroyed:Symbol("destroy callbacks"),kPipelining:Symbol("pipelining"),kSocket:Symbol("socket"),kHostHeader:Symbol("host header"),kConnector:Symbol("connector"),kStrictContentLength:Symbol("strict content length"),kMaxRedirections:Symbol("maxRedirections"),kMaxRequests:Symbol("maxRequestsPerClient"),kProxy:Symbol("proxy agent options"),kCounter:Symbol("socket request counter"),kMaxResponseSize:Symbol("max response size"),kHTTP2Session:Symbol("http2Session"),kHTTP2Options:Symbol("http2 options"),kHTTP2SessionState:Symbol("http2Session state"),kRetryHandlerDefaultRetry:Symbol("retry agent default retry"),kConstruct:Symbol("constructable"),kListeners:Symbol("listeners"),kHTTPContext:Symbol("http context"),kMaxConcurrentStreams:Symbol("max concurrent streams"),kHostAuthority:Symbol("host authority"),kHTTP2InitialWindowSize:Symbol("http2 initial window size"),kHTTP2ConnectionWindowSize:Symbol("http2 connection window size"),kEnableConnectProtocol:Symbol("http2session connect protocol"),kRemoteSettings:Symbol("http2session remote settings"),kHTTP2Stream:Symbol("http2session client stream"),kPingInterval:Symbol("ping interval"),kNoProxyAgent:Symbol("no proxy agent"),kHttpProxyAgent:Symbol("http proxy agent"),kHttpsProxyAgent:Symbol("https proxy agent"),kSocks5ProxyAgent:Symbol("socks5 proxy agent")}}});var require_timers=__commonJS({"node_modules/undici/lib/util/timers.js"(exports,module){"use strict";var fastNow=0,RESOLUTION_MS=1e3,TICK_MS=(RESOLUTION_MS>>1)-1,fastNowTimeout,kFastTimer=Symbol("kFastTimer"),fastTimers=[],NOT_IN_LIST=-2,TO_BE_CLEARED=-1,PENDING=0,ACTIVE=1;function onTick(){fastNow+=TICK_MS;let idx=0,len=fastTimers.length;for(;idx<len;){let timer=fastTimers[idx];timer._state===PENDING?(timer._idleStart=fastNow-TICK_MS,timer._state=ACTIVE):timer._state===ACTIVE&&fastNow>=timer._idleStart+timer._idleTimeout&&(timer._state=TO_BE_CLEARED,timer._idleStart=-1,timer._onTimeout(timer._timerArg)),timer._state===TO_BE_CLEARED?(timer._state=NOT_IN_LIST,--len!==0&&(fastTimers[idx]=fastTimers[len])):++idx}fastTimers.length=len,fastTimers.length!==0&&refreshTimeout()}function refreshTimeout(){fastNowTimeout?.refresh?fastNowTimeout.refresh():(clearTimeout(fastNowTimeout),fastNowTimeout=setTimeout(onTick,TICK_MS),fastNowTimeout?.unref())}var FastTimer=class{[kFastTimer]=!0;_state=NOT_IN_LIST;_idleTimeout=-1;_idleStart=-1;_onTimeout;_timerArg;constructor(callback,delay,arg){this._onTimeout=callback,this._idleTimeout=delay,this._timerArg=arg,this.refresh()}refresh(){this._state===NOT_IN_LIST&&fastTimers.push(this),(!fastNowTimeout||fastTimers.length===1)&&refreshTimeout(),this._state=PENDING}clear(){this._state=TO_BE_CLEARED,this._idleStart=-1}};module.exports={setTimeout(callback,delay,arg){return delay<=RESOLUTION_MS?setTimeout(callback,delay,arg):new FastTimer(callback,delay,arg)},clearTimeout(timeout){timeout[kFastTimer]?timeout.clear():clearTimeout(timeout)},setFastTimeout(callback,delay,arg){return new FastTimer(callback,delay,arg)},clearFastTimeout(timeout){timeout.clear()},now(){return fastNow},tick(delay=0){fastNow+=delay-RESOLUTION_MS+1,onTick(),onTick()},reset(){fastNow=0,fastTimers.length=0,clearTimeout(fastNowTimeout),fastNowTimeout=null},kFastTimer}}});var require_errors=__commonJS({"node_modules/undici/lib/core/errors.js"(exports,module){"use strict";var kUndiciError=Symbol.for("undici.error.UND_ERR"),UndiciError=class extends Error{constructor(message,options){super(message,options),this.name="UndiciError",this.code="UND_ERR"}static[Symbol.hasInstance](instance){return instance&&instance[kUndiciError]===!0}get[kUndiciError](){return!0}},kConnectTimeoutError=Symbol.for("undici.error.UND_ERR_CONNECT_TIMEOUT"),ConnectTimeoutError=class extends UndiciError{constructor(message){super(message),this.name="ConnectTimeoutError",this.message=message||"Connect Timeout Error",this.code="UND_ERR_CONNECT_TIMEOUT"}static[Symbol.hasInstance](instance){return instance&&instance[kConnectTimeoutError]===!0}get[kConnectTimeoutError](){return!0}},kHeadersTimeoutError=Symbol.for("undici.error.UND_ERR_HEADERS_TIMEOUT"),HeadersTimeoutError=class extends UndiciError{constructor(message){super(message),this.name="HeadersTimeoutError",this.message=message||"Headers Timeout Error",this.code="UND_ERR_HEADERS_TIMEOUT"}static[Symbol.hasInstance](instance){return instance&&instance[kHeadersTimeoutError]===!0}get[kHeadersTimeoutError](){return!0}},kHeadersOverflowError=Symbol.for("undici.error.UND_ERR_HEADERS_OVERFLOW"),HeadersOverflowError=class extends UndiciError{constructor(message){super(message),this.name="HeadersOverflowError",this.message=message||"Headers Overflow Error",this.code="UND_ERR_HEADERS_OVERFLOW"}static[Symbol.hasInstance](instance){return instance&&instance[kHeadersOverflowError]===!0}get[kHeadersOverflowError](){return!0}},kBodyTimeoutError=Symbol.for("undici.error.UND_ERR_BODY_TIMEOUT"),BodyTimeoutError=class extends UndiciError{constructor(message){super(message),this.name="BodyTimeoutError",this.message=message||"Body Timeout Error",this.code="UND_ERR_BODY_TIMEOUT"}static[Symbol.hasInstance](instance){return instance&&instance[kBodyTimeoutError]===!0}get[kBodyTimeoutError](){return!0}},kInvalidArgumentError=Symbol.for("undici.error.UND_ERR_INVALID_ARG"),InvalidArgumentError=class extends UndiciError{constructor(message){super(message),this.name="InvalidArgumentError",this.message=message||"Invalid Argument Error",this.code="UND_ERR_INVALID_ARG"}static[Symbol.hasInstance](instance){return instance&&instance[kInvalidArgumentError]===!0}get[kInvalidArgumentError](){return!0}},kInvalidReturnValueError=Symbol.for("undici.error.UND_ERR_INVALID_RETURN_VALUE"),InvalidReturnValueError=class extends UndiciError{constructor(message){super(message),this.name="InvalidReturnValueError",this.message=message||"Invalid Return Value Error",this.code="UND_ERR_INVALID_RETURN_VALUE"}static[Symbol.hasInstance](instance){return instance&&instance[kInvalidReturnValueError]===!0}get[kInvalidReturnValueError](){return!0}},kAbortError=Symbol.for("undici.error.UND_ERR_ABORT"),AbortError=class extends UndiciError{constructor(message){super(message),this.name="AbortError",this.message=message||"The operation was aborted",this.code="UND_ERR_ABORT"}static[Symbol.hasInstance](instance){return instance&&instance[kAbortError]===!0}get[kAbortError](){return!0}},kRequestAbortedError=Symbol.for("undici.error.UND_ERR_ABORTED"),RequestAbortedError=class extends AbortError{constructor(message){super(message),this.name="AbortError",this.message=message||"Request aborted",this.code="UND_ERR_ABORTED"}static[Symbol.hasInstance](instance){return instance&&instance[kRequestAbortedError]===!0}get[kRequestAbortedError](){return!0}},kInformationalError=Symbol.for("undici.error.UND_ERR_INFO"),InformationalError=class extends UndiciError{constructor(message,options){super(message,options),this.name="InformationalError",this.message=message||"Request information",this.code="UND_ERR_INFO"}static[Symbol.hasInstance](instance){return instance&&instance[kInformationalError]===!0}get[kInformationalError](){return!0}},kRequestContentLengthMismatchError=Symbol.for("undici.error.UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"),RequestContentLengthMismatchError=class extends UndiciError{constructor(message){super(message),this.name="RequestContentLengthMismatchError",this.message=message||"Request body length does not match content-length header",this.code="UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"}static[Symbol.hasInstance](instance){return instance&&instance[kRequestContentLengthMismatchError]===!0}get[kRequestContentLengthMismatchError](){return!0}},kResponseContentLengthMismatchError=Symbol.for("undici.error.UND_ERR_RES_CONTENT_LENGTH_MISMATCH"),ResponseContentLengthMismatchError=class extends UndiciError{constructor(message){super(message),this.name="ResponseContentLengthMismatchError",this.message=message||"Response body length does not match content-length header",this.code="UND_ERR_RES_CONTENT_LENGTH_MISMATCH"}static[Symbol.hasInstance](instance){return instance&&instance[kResponseContentLengthMismatchError]===!0}get[kResponseContentLengthMismatchError](){return!0}},kClientDestroyedError=Symbol.for("undici.error.UND_ERR_DESTROYED"),ClientDestroyedError=class extends UndiciError{constructor(message){super(message),this.name="ClientDestroyedError",this.message=message||"The client is destroyed",this.code="UND_ERR_DESTROYED"}static[Symbol.hasInstance](instance){return instance&&instance[kClientDestroyedError]===!0}get[kClientDestroyedError](){return!0}},kClientClosedError=Symbol.for("undici.error.UND_ERR_CLOSED"),ClientClosedError=class extends UndiciError{constructor(message){super(message),this.name="ClientClosedError",this.message=message||"The client is closed",this.code="UND_ERR_CLOSED"}static[Symbol.hasInstance](instance){return instance&&instance[kClientClosedError]===!0}get[kClientClosedError](){return!0}},kSocketError=Symbol.for("undici.error.UND_ERR_SOCKET"),SocketError=class extends UndiciError{constructor(message,socket){super(message),this.name="SocketError",this.message=message||"Socket error",this.code="UND_ERR_SOCKET",this.socket=socket}static[Symbol.hasInstance](instance){return instance&&instance[kSocketError]===!0}get[kSocketError](){return!0}},kNotSupportedError=Symbol.for("undici.error.UND_ERR_NOT_SUPPORTED"),NotSupportedError=class extends UndiciError{constructor(message){super(message),this.name="NotSupportedError",this.message=message||"Not supported error",this.code="UND_ERR_NOT_SUPPORTED"}static[Symbol.hasInstance](instance){return instance&&instance[kNotSupportedError]===!0}get[kNotSupportedError](){return!0}},kBalancedPoolMissingUpstreamError=Symbol.for("undici.error.UND_ERR_BPL_MISSING_UPSTREAM"),BalancedPoolMissingUpstreamError=class extends UndiciError{constructor(message){super(message),this.name="MissingUpstreamError",this.message=message||"No upstream has been added to the BalancedPool",this.code="UND_ERR_BPL_MISSING_UPSTREAM"}static[Symbol.hasInstance](instance){return instance&&instance[kBalancedPoolMissingUpstreamError]===!0}get[kBalancedPoolMissingUpstreamError](){return!0}},kHTTPParserError=Symbol.for("undici.error.UND_ERR_HTTP_PARSER"),HTTPParserError=class extends Error{constructor(message,code,data){super(message),this.name="HTTPParserError",this.code=code?`HPE_${code}`:void 0,this.data=data?data.toString():void 0}static[Symbol.hasInstance](instance){return instance&&instance[kHTTPParserError]===!0}get[kHTTPParserError](){return!0}},kResponseExceededMaxSizeError=Symbol.for("undici.error.UND_ERR_RES_EXCEEDED_MAX_SIZE"),ResponseExceededMaxSizeError=class extends UndiciError{constructor(message){super(message),this.name="ResponseExceededMaxSizeError",this.message=message||"Response content exceeded max size",this.code="UND_ERR_RES_EXCEEDED_MAX_SIZE"}static[Symbol.hasInstance](instance){return instance&&instance[kResponseExceededMaxSizeError]===!0}get[kResponseExceededMaxSizeError](){return!0}},kRequestRetryError=Symbol.for("undici.error.UND_ERR_REQ_RETRY"),RequestRetryError=class extends UndiciError{constructor(message,code,{headers,data}){super(message),this.name="RequestRetryError",this.message=message||"Request retry error",this.code="UND_ERR_REQ_RETRY",this.statusCode=code,this.data=data,this.headers=headers}static[Symbol.hasInstance](instance){return instance&&instance[kRequestRetryError]===!0}get[kRequestRetryError](){return!0}},kResponseError=Symbol.for("undici.error.UND_ERR_RESPONSE"),ResponseError2=class extends UndiciError{constructor(message,code,{headers,body}){super(message),this.name="ResponseError",this.message=message||"Response error",this.code="UND_ERR_RESPONSE",this.statusCode=code,this.body=body,this.headers=headers}static[Symbol.hasInstance](instance){return instance&&instance[kResponseError]===!0}get[kResponseError](){return!0}},kSecureProxyConnectionError=Symbol.for("undici.error.UND_ERR_PRX_TLS"),SecureProxyConnectionError=class extends UndiciError{constructor(cause,message,options={}){super(message,{cause,...options}),this.name="SecureProxyConnectionError",this.message=message||"Secure Proxy Connection failed",this.code="UND_ERR_PRX_TLS",this.cause=cause}static[Symbol.hasInstance](instance){return instance&&instance[kSecureProxyConnectionError]===!0}get[kSecureProxyConnectionError](){return!0}},kProxyConnectionError=Symbol.for("undici.error.UND_ERR_PRX_CONN"),ProxyConnectionError=class extends UndiciError{constructor(cause,message,options={}){super(message,{cause,...options}),this.name="ProxyConnectionError",this.message=message||"Proxy Connection failed",this.code="UND_ERR_PRX_CONN",this.cause=cause}static[Symbol.hasInstance](instance){return instance&&instance[kProxyConnectionError]===!0}get[kProxyConnectionError](){return!0}},kMaxOriginsReachedError=Symbol.for("undici.error.UND_ERR_MAX_ORIGINS_REACHED"),MaxOriginsReachedError=class extends UndiciError{constructor(message){super(message),this.name="MaxOriginsReachedError",this.message=message||"Maximum allowed origins reached",this.code="UND_ERR_MAX_ORIGINS_REACHED"}static[Symbol.hasInstance](instance){return instance&&instance[kMaxOriginsReachedError]===!0}get[kMaxOriginsReachedError](){return!0}},Socks5ProxyError=class extends UndiciError{constructor(message,code){super(message),this.name="Socks5ProxyError",this.message=message||"SOCKS5 proxy error",this.code=code||"UND_ERR_SOCKS5"}},kMessageSizeExceededError=Symbol.for("undici.error.UND_ERR_WS_MESSAGE_SIZE_EXCEEDED"),MessageSizeExceededError=class extends UndiciError{constructor(message){super(message),this.name="MessageSizeExceededError",this.message=message||"Max decompressed message size exceeded",this.code="UND_ERR_WS_MESSAGE_SIZE_EXCEEDED"}static[Symbol.hasInstance](instance){return instance&&instance[kMessageSizeExceededError]===!0}get[kMessageSizeExceededError](){return!0}};module.exports={AbortError,HTTPParserError,UndiciError,HeadersTimeoutError,HeadersOverflowError,BodyTimeoutError,RequestContentLengthMismatchError,ConnectTimeoutError,InvalidArgumentError,InvalidReturnValueError,RequestAbortedError,ClientDestroyedError,ClientClosedError,InformationalError,SocketError,NotSupportedError,ResponseContentLengthMismatchError,BalancedPoolMissingUpstreamError,ResponseExceededMaxSizeError,RequestRetryError,ResponseError:ResponseError2,SecureProxyConnectionError,ProxyConnectionError,MaxOriginsReachedError,Socks5ProxyError,MessageSizeExceededError}}});var require_constants=__commonJS({"node_modules/undici/lib/core/constants.js"(exports,module){"use strict";var wellknownHeaderNames=["Accept","Accept-Encoding","Accept-Language","Accept-Ranges","Access-Control-Allow-Credentials","Access-Control-Allow-Headers","Access-Control-Allow-Methods","Access-Control-Allow-Origin","Access-Control-Expose-Headers","Access-Control-Max-Age","Access-Control-Request-Headers","Access-Control-Request-Method","Age","Allow","Alt-Svc","Alt-Used","Authorization","Cache-Control","Clear-Site-Data","Connection","Content-Disposition","Content-Encoding","Content-Language","Content-Length","Content-Location","Content-Range","Content-Security-Policy","Content-Security-Policy-Report-Only","Content-Type","Cookie","Cross-Origin-Embedder-Policy","Cross-Origin-Opener-Policy","Cross-Origin-Resource-Policy","Date","Device-Memory","Downlink","ECT","ETag","Expect","Expect-CT","Expires","Forwarded","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Keep-Alive","Last-Modified","Link","Location","Max-Forwards","Origin","Permissions-Policy","Pragma","Proxy-Authenticate","Proxy-Authorization","RTT","Range","Referer","Referrer-Policy","Refresh","Retry-After","Sec-WebSocket-Accept","Sec-WebSocket-Extensions","Sec-WebSocket-Key","Sec-WebSocket-Protocol","Sec-WebSocket-Version","Server","Server-Timing","Service-Worker-Allowed","Service-Worker-Navigation-Preload","Set-Cookie","SourceMap","Strict-Transport-Security","Supports-Loading-Mode","TE","Timing-Allow-Origin","Trailer","Transfer-Encoding","Upgrade","Upgrade-Insecure-Requests","User-Agent","Vary","Via","WWW-Authenticate","X-Content-Type-Options","X-DNS-Prefetch-Control","X-Frame-Options","X-Permitted-Cross-Domain-Policies","X-Powered-By","X-Requested-With","X-XSS-Protection"],headerNameLowerCasedRecord={};Object.setPrototypeOf(headerNameLowerCasedRecord,null);for(let i=0;i<wellknownHeaderNames.length;++i){let key=wellknownHeaderNames[i],lowerCasedKey=key.toLowerCase();headerNameLowerCasedRecord[key]=headerNameLowerCasedRecord[lowerCasedKey]=lowerCasedKey}module.exports={wellknownHeaderNames,headerNameLowerCasedRecord}}});var require_tree=__commonJS({"node_modules/undici/lib/core/tree.js"(exports,module){"use strict";var{wellknownHeaderNames,headerNameLowerCasedRecord}=require_constants(),TstNode=class _TstNode{value=null;left=null;middle=null;right=null;code;constructor(key,value,index){if(index===void 0||index>=key.length)throw new TypeError("Unreachable");if((this.code=key.charCodeAt(index))>127)throw new TypeError("key must be ascii string");key.length!==++index?this.middle=new _TstNode(key,value,index):this.value=value}add(key,value){let length=key.length;if(length===0)throw new TypeError("Unreachable");let index=0,node=this;for(;;){let code=key.charCodeAt(index);if(code>127)throw new TypeError("key must be ascii string");if(node.code===code)if(length===++index){node.value=value;break}else if(node.middle!==null)node=node.middle;else{node.middle=new _TstNode(key,value,index);break}else if(node.code<code)if(node.left!==null)node=node.left;else{node.left=new _TstNode(key,value,index);break}else if(node.right!==null)node=node.right;else{node.right=new _TstNode(key,value,index);break}}}search(key){let keylength=key.length,index=0,node=this;for(;node!==null&&index<keylength;){let code=key[index];for(code<=90&&code>=65&&(code|=32);node!==null;){if(code===node.code){if(keylength===++index)return node;node=node.middle;break}node=node.code<code?node.left:node.right}}return null}},TernarySearchTree=class{node=null;insert(key,value){this.node===null?this.node=new TstNode(key,value,0):this.node.add(key,value)}lookup(key){return this.node?.search(key)?.value??null}},tree=new TernarySearchTree;for(let i=0;i<wellknownHeaderNames.length;++i){let key=headerNameLowerCasedRecord[wellknownHeaderNames[i]];tree.insert(key,key)}module.exports={TernarySearchTree,tree}}});var require_util=__commonJS({"node_modules/undici/lib/core/util.js"(exports,module){"use strict";var assert=__require("node:assert"),{kDestroyed,kBodyUsed,kListeners,kBody}=require_symbols(),{IncomingMessage}=__require("node:http"),stream2=__require("node:stream"),net=__require("node:net"),{stringify}=__require("node:querystring"),{EventEmitter:EE,addAbortListener:addAbortListenerNative}=__require("node:events"),timers=require_timers(),{InvalidArgumentError,ConnectTimeoutError}=require_errors(),{headerNameLowerCasedRecord}=require_constants(),{tree}=require_tree(),BodyAsyncIterable=class{constructor(body){this[kBody]=body,this[kBodyUsed]=!1}async*[Symbol.asyncIterator](){assert(!this[kBodyUsed],"disturbed"),this[kBodyUsed]=!0,yield*this[kBody]}};function noop(){}function wrapRequestBody(body){return isStream(body)?(bodyLength(body)===0&&body.on("data",function(){assert(!1)}),typeof body.readableDidRead!="boolean"&&(body[kBodyUsed]=!1,EE.prototype.on.call(body,"data",function(){this[kBodyUsed]=!0})),body):body&&typeof body.pipeTo=="function"?new BodyAsyncIterable(body):body&&isFormDataLike(body)?body:body&&typeof body!="string"&&!ArrayBuffer.isView(body)&&isIterable(body)?new BodyAsyncIterable(body):body}function isStream(obj){return obj&&typeof obj=="object"&&typeof obj.pipe=="function"&&typeof obj.on=="function"}function isBlobLike(object2){return object2 instanceof Blob}function pathHasQueryOrFragment(url){return url.includes("?")||url.includes("#")}function serializePathWithQuery(url,queryParams){if(pathHasQueryOrFragment(url))throw new Error('Query params cannot be passed when url already contains "?" or "#".');let stringified=stringify(queryParams);return stringified&&(url+="?"+stringified),url}function isValidPort(port){let value=parseInt(port,10);return value===Number(port)&&value>=0&&value<=65535}function isHttpOrHttpsPrefixed(value){return value!=null&&value[0]==="h"&&value[1]==="t"&&value[2]==="t"&&value[3]==="p"&&(value[4]===":"||value[4]==="s"&&value[5]===":")}function parseURL(url){if(typeof url=="string"){if(url=new URL(url),!isHttpOrHttpsPrefixed(url.origin||url.protocol))throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`.");return url}if(!url||typeof url!="object")throw new InvalidArgumentError("Invalid URL: The URL argument must be a non-null object.");if(!(url instanceof URL)){if(url.port!=null&&url.port!==""&&isValidPort(url.port)===!1)throw new InvalidArgumentError("Invalid URL: port must be a valid integer or a string representation of an integer.");if(url.path!=null&&typeof url.path!="string")throw new InvalidArgumentError("Invalid URL path: the path must be a string or null/undefined.");if(url.pathname!=null&&typeof url.pathname!="string")throw new InvalidArgumentError("Invalid URL pathname: the pathname must be a string or null/undefined.");if(url.hostname!=null&&typeof url.hostname!="string")throw new InvalidArgumentError("Invalid URL hostname: the hostname must be a string or null/undefined.");if(url.origin!=null&&typeof url.origin!="string")throw new InvalidArgumentError("Invalid URL origin: the origin must be a string or null/undefined.");if(!isHttpOrHttpsPrefixed(url.origin||url.protocol))throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`.");let port=url.port!=null?url.port:url.protocol==="https:"?443:80,origin=url.origin!=null?url.origin:`${url.protocol||""}//${url.hostname||""}:${port}`,path10=url.path!=null?url.path:`${url.pathname||""}${url.search||""}`;return origin[origin.length-1]==="/"&&(origin=origin.slice(0,origin.length-1)),path10&&path10[0]!=="/"&&(path10=`/${path10}`),new URL(`${origin}${path10}`)}if(!isHttpOrHttpsPrefixed(url.origin||url.protocol))throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`.");return url}function parseOrigin(url){if(url=parseURL(url),url.pathname!=="/"||url.search||url.hash)throw new InvalidArgumentError("invalid url");return url}function getHostname(host){if(host[0]==="["){let idx2=host.indexOf("]");return assert(idx2!==-1),host.substring(1,idx2)}let idx=host.indexOf(":");return idx===-1?host:host.substring(0,idx)}function getServerName(host){if(!host)return null;assert(typeof host=="string");let servername=getHostname(host);return net.isIP(servername)?"":servername}function deepClone(obj){return JSON.parse(JSON.stringify(obj))}function isAsyncIterable(obj){return obj!=null&&typeof obj[Symbol.asyncIterator]=="function"}function isIterable(obj){return obj!=null&&(typeof obj[Symbol.iterator]=="function"||typeof obj[Symbol.asyncIterator]=="function")}function hasSafeIterator(obj){let prototype=Object.getPrototypeOf(obj);return Object.hasOwn(obj,Symbol.iterator)||prototype!=null&&prototype!==Object.prototype&&typeof obj[Symbol.iterator]=="function"}function bodyLength(body){if(body==null)return 0;if(isStream(body)){let state=body._readableState;return state&&state.objectMode===!1&&state.ended===!0&&Number.isFinite(state.length)?state.length:null}else{if(isBlobLike(body))return body.size!=null?body.size:null;if(isBuffer(body))return body.byteLength}return null}function isDestroyed(body){return body&&!!(body.destroyed||body[kDestroyed]||stream2.isDestroyed?.(body))}function destroy(stream3,err){if(!(stream3==null||!isStream(stream3)||isDestroyed(stream3))){if(typeof stream3.destroy=="function"){Object.getPrototypeOf(stream3).constructor===IncomingMessage&&(stream3.socket=null);try{stream3.destroy(err)}catch{}}else err&&queueMicrotask(()=>{stream3.emit("error",err)});stream3.destroyed!==!0&&(stream3[kDestroyed]=!0)}}var KEEPALIVE_TIMEOUT_EXPR=/timeout=(\d+)/;function parseKeepAliveTimeout(val){let m=val.match(KEEPALIVE_TIMEOUT_EXPR);return m?parseInt(m[1],10)*1e3:null}function headerNameToString(value){return typeof value=="string"?headerNameLowerCasedRecord[value]??value.toLowerCase():tree.lookup(value)??value.toString("latin1").toLowerCase()}function bufferToLowerCasedHeaderName(value){return tree.lookup(value)??value.toString("latin1").toLowerCase()}function parseHeaders(headers,obj){obj===void 0&&(obj={});for(let i=0;i<headers.length;i+=2){let key=headerNameToString(headers[i]),val=obj[key];if(val!==void 0)if(Object.hasOwn(obj,key))typeof val=="string"&&(val=[val],obj[key]=val),val.push(headers[i+1].toString("latin1"));else{let headersValue=typeof headers[i+1]=="string"?headers[i+1]:Array.isArray(headers[i+1])?headers[i+1].map(x=>x.toString("latin1")):headers[i+1].toString("latin1");key==="__proto__"?Object.defineProperty(obj,key,{value:headersValue,enumerable:!0,configurable:!0,writable:!0}):obj[key]=headersValue}else{let headersValue=typeof headers[i+1]=="string"?headers[i+1]:Array.isArray(headers[i+1])?headers[i+1].map(x=>x.toString("latin1")):headers[i+1].toString("latin1");obj[key]=headersValue}}return obj}function parseRawHeaders(headers){if(headers==null)return[];if(!Array.isArray(headers)){let rawHeaders=[];for(let[name,value]of Object.entries(headers))if(Array.isArray(value))for(let entry of value)rawHeaders.push(name,`${entry}`);else rawHeaders.push(name,`${value}`);return rawHeaders}let headersLength=headers.length,ret=new Array(headersLength),key,val;for(let n=0;n<headersLength;n+=2)key=headers[n],val=headers[n+1],typeof key!="string"&&(key=key.toString()),typeof val!="string"&&(val=val.toString("latin1")),ret[n]=key,ret[n+1]=val;return ret}function toRawHeaders(headers){let rawHeaders=[];for(let[name,value]of Object.entries(headers))if(Array.isArray(value))for(let entry of value)rawHeaders.push(Buffer.from(name,"latin1"),Buffer.from(`${entry}`,"latin1"));else rawHeaders.push(Buffer.from(name,"latin1"),Buffer.from(`${value}`,"latin1"));return rawHeaders}function encodeRawHeaders(headers){if(!Array.isArray(headers))throw new TypeError("expected headers to be an array");return headers.map(x=>Buffer.from(x))}function isBuffer(buffer){return buffer instanceof Uint8Array||Buffer.isBuffer(buffer)}function assertRequestHandler(handler,method,upgrade){if(!handler||typeof handler!="object")throw new InvalidArgumentError("handler must be an object");if(typeof handler.onRequestStart!="function")throw new InvalidArgumentError("invalid onRequestStart method");if(typeof handler.onResponseError!="function")throw new InvalidArgumentError("invalid onResponseError method");if(typeof handler.onBodySent!="function"&&handler.onBodySent!==void 0)throw new InvalidArgumentError("invalid onBodySent method");if(typeof handler.onRequestSent!="function"&&handler.onRequestSent!==void 0)throw new InvalidArgumentError("invalid onRequestSent method");if(upgrade||method==="CONNECT"){if(typeof handler.onRequestUpgrade!="function")throw new InvalidArgumentError("invalid onRequestUpgrade method")}else{if(typeof handler.onResponseStart!="function")throw new InvalidArgumentError("invalid onResponseStart method");if(typeof handler.onResponseData!="function")throw new InvalidArgumentError("invalid onResponseData method");if(typeof handler.onResponseEnd!="function")throw new InvalidArgumentError("invalid onResponseEnd method")}}function isDisturbed(body){return!!(body&&(stream2.isDisturbed(body)||body[kBodyUsed]))}function getSocketInfo(socket){return{localAddress:socket.localAddress,localPort:socket.localPort,remoteAddress:socket.remoteAddress,remotePort:socket.remotePort,remoteFamily:socket.remoteFamily,timeout:socket.timeout,bytesWritten:socket.bytesWritten,bytesRead:socket.bytesRead}}function ReadableStreamFrom(iterable){let iterator;return new ReadableStream({start(){iterator=iterable[Symbol.asyncIterator]()},pull(controller){return iterator.next().then(({done,value})=>{if(done)return queueMicrotask(()=>{controller.close(),controller.byobRequest?.respond(0)});{let buf=Buffer.isBuffer(value)?value:Buffer.from(value);return buf.byteLength?controller.enqueue(new Uint8Array(buf)):this.pull(controller)}})},cancel(){return iterator.return()},type:"bytes"})}function isFormDataLike(object2){return object2&&typeof object2=="object"&&typeof object2.append=="function"&&typeof object2.delete=="function"&&typeof object2.get=="function"&&typeof object2.getAll=="function"&&typeof object2.has=="function"&&typeof object2.set=="function"&&object2[Symbol.toStringTag]==="FormData"}function addAbortListener(signal,listener){return!signal||"aborted"in signal?addAbortListenerNative(signal,listener)[Symbol.dispose]:typeof signal.addEventListener=="function"?(signal.addEventListener("abort",listener,{once:!0}),()=>signal.removeEventListener("abort",listener)):(signal.once("abort",listener),()=>signal.removeListener("abort",listener))}var validTokenChars=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function isTokenCharCode(c){return validTokenChars[c]===1}var tokenRegExp=/^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/;function isValidHTTPToken(characters){if(characters.length>=12)return tokenRegExp.test(characters);if(characters.length===0)return!1;for(let i=0;i<characters.length;i++)if(validTokenChars[characters.charCodeAt(i)]!==1)return!1;return!0}var headerCharRegex=/[^\t\x20-\x7e\x80-\xff]/;function isValidHeaderValue(characters){return!headerCharRegex.test(characters)}var rangeHeaderRegex=/^bytes (\d+)-(\d+)\/(\d+|\*)?$/;function parseRangeHeader(range2){if(range2==null||range2==="")return{start:0,end:null,size:null};if(!range2)return null;let m=rangeHeaderRegex.exec(range2);return m?{start:parseInt(m[1]),end:m[2]?parseInt(m[2]):null,size:m[3]&&m[3]!=="*"?parseInt(m[3]):null}:null}function addListener(obj,name,listener){return(obj[kListeners]??=[]).push([name,listener]),obj.on(name,listener),obj}function removeAllListeners(obj){if(obj[kListeners]!=null){for(let[name,listener]of obj[kListeners])obj.removeListener(name,listener);obj[kListeners]=null}return obj}function errorRequest(client,request,err){try{request.onResponseError(err),assert(request.aborted)}catch(err2){client.emit("error",err2)}}var setupConnectTimeout=process.platform==="win32"?(socketWeakRef,opts)=>{if(!opts.timeout)return noop;let s1=null,s2=null,fastTimer=timers.setFastTimeout(()=>{s1=setImmediate(()=>{s2=setImmediate(()=>onConnectTimeout(socketWeakRef.deref(),opts))})},opts.timeout);return()=>{timers.clearFastTimeout(fastTimer),clearImmediate(s1),clearImmediate(s2)}}:(socketWeakRef,opts)=>{if(!opts.timeout)return noop;let s1=null,fastTimer=timers.setFastTimeout(()=>{s1=setImmediate(()=>{onConnectTimeout(socketWeakRef.deref(),opts)})},opts.timeout);return()=>{timers.clearFastTimeout(fastTimer),clearImmediate(s1)}};function onConnectTimeout(socket,opts){if(socket==null)return;let message="Connect Timeout Error";Array.isArray(socket.autoSelectFamilyAttemptedAddresses)?message+=` (attempted addresses: ${socket.autoSelectFamilyAttemptedAddresses.join(", ")},`:message+=` (attempted address: ${opts.hostname}:${opts.port},`,message+=` timeout: ${opts.timeout}ms)`,destroy(socket,new ConnectTimeoutError(message))}var lastUrlString=null,lastProtocol=null;function getProtocolFromUrlString(urlString){if(urlString===lastUrlString)return lastProtocol;let protocol=getProtocolFromUrlStringSlow(urlString);return lastUrlString=urlString,lastProtocol=protocol,protocol}function getProtocolFromUrlStringSlow(urlString){if(urlString[0]==="h"&&urlString[1]==="t"&&urlString[2]==="t"&&urlString[3]==="p")switch(urlString[4]){case":":return"http:";case"s":if(urlString[5]===":")return"https:"}return urlString.slice(0,urlString.indexOf(":")+1)}var kEnumerableProperty={__proto__:null,enumerable:!0},normalizedMethodRecordsBase={delete:"DELETE",DELETE:"DELETE",get:"GET",GET:"GET",head:"HEAD",HEAD:"HEAD",options:"OPTIONS",OPTIONS:"OPTIONS",post:"POST",POST:"POST",put:"PUT",PUT:"PUT",query:"QUERY",QUERY:"QUERY"},normalizedMethodRecords={...normalizedMethodRecordsBase,patch:"patch",PATCH:"PATCH"};Object.setPrototypeOf(normalizedMethodRecordsBase,null);Object.setPrototypeOf(normalizedMethodRecords,null);module.exports={kEnumerableProperty,isDisturbed,isBlobLike,parseOrigin,parseURL,getServerName,isStream,isIterable,hasSafeIterator,isAsyncIterable,isDestroyed,headerNameToString,bufferToLowerCasedHeaderName,addListener,removeAllListeners,errorRequest,parseRawHeaders,toRawHeaders,encodeRawHeaders,parseHeaders,parseKeepAliveTimeout,destroy,bodyLength,deepClone,ReadableStreamFrom,isBuffer,assertRequestHandler,getSocketInfo,isFormDataLike,pathHasQueryOrFragment,serializePathWithQuery,addAbortListener,isValidHTTPToken,isValidHeaderValue,isTokenCharCode,parseRangeHeader,normalizedMethodRecordsBase,normalizedMethodRecords,isValidPort,isHttpOrHttpsPrefixed,safeHTTPMethods:Object.freeze(["GET","HEAD","OPTIONS","TRACE"]),wrapRequestBody,setupConnectTimeout,getProtocolFromUrlString}}});var require_stats=__commonJS({"node_modules/undici/lib/util/stats.js"(exports,module){"use strict";var{kConnected,kPending,kRunning,kSize,kFree,kQueued}=require_symbols(),ClientStats=class{constructor(client){this.connected=client[kConnected],this.pending=client[kPending],this.running=client[kRunning],this.size=client[kSize]}},PoolStats=class{constructor(pool){this.connected=pool[kConnected],this.free=pool[kFree],this.pending=pool[kPending],this.queued=pool[kQueued],this.running=pool[kRunning],this.size=pool[kSize]}};module.exports={ClientStats,PoolStats}}});var require_diagnostics=__commonJS({"node_modules/undici/lib/core/diagnostics.js"(exports,module){"use strict";var diagnosticsChannel=__require("node:diagnostics_channel"),util=__require("node:util"),undiciDebugLog=util.debuglog("undici"),fetchDebuglog=util.debuglog("fetch"),websocketDebuglog=util.debuglog("websocket"),channels={beforeConnect:diagnosticsChannel.channel("undici:client:beforeConnect"),connected:diagnosticsChannel.channel("undici:client:connected"),connectError:diagnosticsChannel.channel("undici:client:connectError"),sendHeaders:diagnosticsChannel.channel("undici:client:sendHeaders"),create:diagnosticsChannel.channel("undici:request:create"),bodySent:diagnosticsChannel.channel("undici:request:bodySent"),bodyChunkSent:diagnosticsChannel.channel("undici:request:bodyChunkSent"),bodyChunkReceived:diagnosticsChannel.channel("undici:request:bodyChunkReceived"),headers:diagnosticsChannel.channel("undici:request:headers"),trailers:diagnosticsChannel.channel("undici:request:trailers"),error:diagnosticsChannel.channel("undici:request:error"),open:diagnosticsChannel.channel("undici:websocket:open"),close:diagnosticsChannel.channel("undici:websocket:close"),socketError:diagnosticsChannel.channel("undici:websocket:socket_error"),ping:diagnosticsChannel.channel("undici:websocket:ping"),pong:diagnosticsChannel.channel("undici:websocket:pong"),proxyConnected:diagnosticsChannel.channel("undici:proxy:connected")},isTrackingClientEvents=!1;function trackClientEvents(debugLog=undiciDebugLog){if(!isTrackingClientEvents){if(channels.beforeConnect.hasSubscribers||channels.connected.hasSubscribers||channels.connectError.hasSubscribers||channels.sendHeaders.hasSubscribers){isTrackingClientEvents=!0;return}isTrackingClientEvents=!0,diagnosticsChannel.subscribe("undici:client:beforeConnect",evt=>{let{connectParams:{version:version2,protocol,port,host}}=evt;debugLog("connecting to %s%s using %s%s",host,port?`:${port}`:"",protocol,version2)}),diagnosticsChannel.subscribe("undici:client:connected",evt=>{let{connectParams:{version:version2,protocol,port,host}}=evt;debugLog("connected to %s%s using %s%s",host,port?`:${port}`:"",protocol,version2)}),diagnosticsChannel.subscribe("undici:client:connectError",evt=>{let{connectParams:{version:version2,protocol,port,host},error}=evt;debugLog("connection to %s%s using %s%s errored - %s",host,port?`:${port}`:"",protocol,version2,error.message)}),diagnosticsChannel.subscribe("undici:client:sendHeaders",evt=>{let{request:{method,path:path10,origin}}=evt;debugLog("sending request to %s %s%s",method,origin,path10)})}}var isTrackingRequestEvents=!1;function trackRequestEvents(debugLog=undiciDebugLog){if(!isTrackingRequestEvents){if(channels.headers.hasSubscribers||channels.trailers.hasSubscribers||channels.error.hasSubscribers){isTrackingRequestEvents=!0;return}isTrackingRequestEvents=!0,diagnosticsChannel.subscribe("undici:request:headers",evt=>{let{request:{method,path:path10,origin},response:{statusCode}}=evt;debugLog("received response to %s %s%s - HTTP %d",method,origin,path10,statusCode)}),diagnosticsChannel.subscribe("undici:request:trailers",evt=>{let{request:{method,path:path10,origin}}=evt;debugLog("trailers received from %s %s%s",method,origin,path10)}),diagnosticsChannel.subscribe("undici:request:error",evt=>{let{request:{method,path:path10,origin},error}=evt;debugLog("request to %s %s%s errored - %s",method,origin,path10,error.message)})}}var isTrackingWebSocketEvents=!1;function trackWebSocketEvents(debugLog=websocketDebuglog){if(!isTrackingWebSocketEvents){if(channels.open.hasSubscribers||channels.close.hasSubscribers||channels.socketError.hasSubscribers||channels.ping.hasSubscribers||channels.pong.hasSubscribers){isTrackingWebSocketEvents=!0;return}isTrackingWebSocketEvents=!0,diagnosticsChannel.subscribe("undici:websocket:open",evt=>{if(evt.address!=null){let{address,port}=evt.address;debugLog("connection opened %s%s",address,port?`:${port}`:"")}else debugLog("connection opened")}),diagnosticsChannel.subscribe("undici:websocket:close",evt=>{let{websocket,code,reason}=evt;debugLog("closed connection to %s - %s %s",websocket.url,code,reason)}),diagnosticsChannel.subscribe("undici:websocket:socket_error",err=>{debugLog("connection errored - %s",err.message)}),diagnosticsChannel.subscribe("undici:websocket:ping",evt=>{debugLog("ping received")}),diagnosticsChannel.subscribe("undici:websocket:pong",evt=>{debugLog("pong received")})}}(undiciDebugLog.enabled||fetchDebuglog.enabled)&&(trackClientEvents(fetchDebuglog.enabled?fetchDebuglog:undiciDebugLog),trackRequestEvents(fetchDebuglog.enabled?fetchDebuglog:undiciDebugLog));websocketDebuglog.enabled&&(trackClientEvents(undiciDebugLog.enabled?undiciDebugLog:websocketDebuglog),trackWebSocketEvents(websocketDebuglog));module.exports={channels}}});var require_request=__commonJS({"node_modules/undici/lib/core/request.js"(exports,module){"use strict";var{InvalidArgumentError,NotSupportedError}=require_errors(),assert=__require("node:assert"),{isValidHTTPToken,isValidHeaderValue,isStream,destroy,isBuffer,isFormDataLike,isIterable,hasSafeIterator,isBlobLike,serializePathWithQuery,parseHeaders,assertRequestHandler,getServerName,normalizedMethodRecords,getProtocolFromUrlString}=require_util(),{channels}=require_diagnostics(),{headerNameLowerCasedRecord}=require_constants(),invalidPathRegex=/[^\u0021-\u00ff]/;function isValidContentLengthHeaderValue(val){if(typeof val!="string"||val.length===0)return!1;for(let i=0;i<val.length;i++){let charCode=val.charCodeAt(i);if(charCode<48||charCode>57)return!1}return!0}var kHandler=Symbol("handler"),kController=Symbol("controller"),kResume=Symbol("resume"),RequestController=class{#paused=!1;#reason=null;#aborted=!1;#abort;[kResume]=null;rawHeaders=null;rawTrailers=null;constructor(abort){this.#abort=abort}pause(){this.#paused=!0}resume(){this.#paused&&(this.#paused=!1,this[kResume]?.())}abort(reason){this.#aborted||(this.#aborted=!0,this.#reason=reason,this.#abort(reason))}get aborted(){return this.#aborted}get reason(){return this.#reason}get paused(){return this.#paused}},Request=class{constructor(origin,{path:path10,method,body,headers,query,idempotent,blocking,upgrade,headersTimeout,bodyTimeout,reset,expectContinue,servername,throwOnError,maxRedirections,typeOfService},handler){if(typeof path10!="string")throw new InvalidArgumentError("path must be a string");if(path10[0]!=="/"&&!(path10.startsWith("http://")||path10.startsWith("https://"))&&method!=="CONNECT")throw new InvalidArgumentError("path must be an absolute URL or start with a slash");if(invalidPathRegex.test(path10))throw new InvalidArgumentError("invalid request path");if(typeof method!="string")throw new InvalidArgumentError("method must be a string");if(normalizedMethodRecords[method]===void 0&&!isValidHTTPToken(method))throw new InvalidArgumentError("invalid request method");if(upgrade&&typeof upgrade!="string")throw new InvalidArgumentError("upgrade must be a string");if(upgrade&&!isValidHeaderValue(upgrade))throw new InvalidArgumentError("invalid upgrade header");if(headersTimeout!=null&&(!Number.isFinite(headersTimeout)||headersTimeout<0))throw new InvalidArgumentError("invalid headersTimeout");if(bodyTimeout!=null&&(!Number.isFinite(bodyTimeout)||bodyTimeout<0))throw new InvalidArgumentError("invalid bodyTimeout");if(reset!=null&&typeof reset!="boolean")throw new InvalidArgumentError("invalid reset");if(expectContinue!=null&&typeof expectContinue!="boolean")throw new InvalidArgumentError("invalid expectContinue");if(throwOnError!=null)throw new InvalidArgumentError("invalid throwOnError");if(maxRedirections!=null&&maxRedirections!==0)throw new InvalidArgumentError("maxRedirections is not supported, use the redirect interceptor");if(typeOfService!=null&&(!Number.isInteger(typeOfService)||typeOfService<0||typeOfService>255))throw new InvalidArgumentError("typeOfService must be an integer between 0 and 255");if(this.headersTimeout=headersTimeout,this.bodyTimeout=bodyTimeout,this.method=method,this.typeOfService=typeOfService,this.abort=null,body==null)this.body=null;else if(isStream(body)){this.body=body;let rState=this.body._readableState;(!rState||!rState.autoDestroy)&&(this.endHandler=function(){destroy(this)},this.body.on("end",this.endHandler)),this.errorHandler=err=>{this.abort?this.abort(err):this.error=err},this.body.on("error",this.errorHandler)}else if(isBuffer(body))this.body=body.byteLength?body:null;else if(ArrayBuffer.isView(body))this.body=body.buffer.byteLength?Buffer.from(body.buffer,body.byteOffset,body.byteLength):null;else if(body instanceof ArrayBuffer)this.body=body.byteLength?Buffer.from(body):null;else if(typeof body=="string")this.body=body.length?Buffer.from(body):null;else if(isFormDataLike(body)||isIterable(body)||isBlobLike(body))this.body=body;else throw new InvalidArgumentError("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable");if(this.completed=!1,this.aborted=!1,this.upgrade=upgrade||null,this.path=query?serializePathWithQuery(path10,query):path10,this.origin=origin,this.protocol=getProtocolFromUrlString(origin),this.idempotent=idempotent??(method==="HEAD"||method==="GET"||method==="QUERY"),this.blocking=blocking??this.method!=="HEAD",this.reset=reset??null,this.host=null,this.contentLength=null,this.contentType=null,this.headers=[],this.expectContinue=expectContinue??!1,Array.isArray(headers)){if(headers.length%2!==0)throw new InvalidArgumentError("headers array must be even");for(let i=0;i<headers.length;i+=2)processHeader(this,headers[i],headers[i+1])}else if(headers&&typeof headers=="object")if(hasSafeIterator(headers))for(let header of headers){if(!Array.isArray(header)||header.length!==2)throw new InvalidArgumentError("headers must be in key-value pair format");processHeader(this,header[0],header[1])}else{let keys=Object.keys(headers);for(let i=0;i<keys.length;++i)processHeader(this,keys[i],headers[keys[i]])}else if(headers!=null)throw new InvalidArgumentError("headers must be an object or an array");assertRequestHandler(handler,method,upgrade),this.servername=servername||getServerName(this.host)||null,this[kHandler]=handler,channels.create.hasSubscribers&&channels.create.publish({request:this})}onBodySent(chunk2){if(channels.bodyChunkSent.hasSubscribers&&channels.bodyChunkSent.publish({request:this,chunk:chunk2}),this[kHandler].onBodySent)try{return this[kHandler].onBodySent(chunk2)}catch(err){this.abort(err)}}onRequestSent(){if(channels.bodySent.hasSubscribers&&channels.bodySent.publish({request:this}),this[kHandler].onRequestSent)try{return this[kHandler].onRequestSent()}catch(err){this.abort(err)}}onRequestStart(abort,context){if(assert(!this.aborted),assert(!this.completed),this[kController]=new RequestController(abort),this.error){this[kController].abort(this.error);return}return this.abort=abort,this[kHandler].onRequestStart(this[kController],context)}onResponseStarted(){return this[kHandler].onResponseStarted?.()}onResponseStart(statusCode,headers,resume,statusText){assert(!this.aborted),assert(!this.completed),channels.headers.hasSubscribers&&channels.headers.publish({request:this,response:{statusCode,headers,statusText}});let controller=this[kController];controller&&(controller[kResume]=resume,controller.rawHeaders=headers);let parsedHeaders=Array.isArray(headers)?parseHeaders(headers):headers;try{return this[kHandler].onResponseStart?.(controller,statusCode,parsedHeaders,statusText),!controller?.paused}catch(err){return this.abort(err),!1}}onResponseData(chunk2){assert(!this.aborted),assert(!this.completed),channels.bodyChunkReceived.hasSubscribers&&channels.bodyChunkReceived.publish({request:this,chunk:chunk2});let controller=this[kController];try{return this[kHandler].onResponseData?.(controller,chunk2),!controller?.paused}catch(err){return this.abort(err),!1}}onRequestUpgrade(statusCode,headers,socket){assert(!this.aborted),assert(!this.completed);let controller=this[kController];controller&&(controller.rawHeaders=headers);let parsedHeaders=Array.isArray(headers)?parseHeaders(headers):headers;return this[kHandler].onRequestUpgrade?.(controller,statusCode,parsedHeaders,socket)}onResponseEnd(trailers){this.onFinally(),assert(!this.aborted),assert(!this.completed),this.completed=!0,channels.trailers.hasSubscribers&&channels.trailers.publish({request:this,trailers});let controller=this[kController];controller&&(controller.rawTrailers=trailers);let parsedTrailers=Array.isArray(trailers)?parseHeaders(trailers):trailers;try{return this[kHandler].onResponseEnd?.(controller,parsedTrailers)}catch(err){this.onResponseError(err)}}onResponseError(error){if(this.onFinally(),channels.error.hasSubscribers&&channels.error.publish({request:this,error}),this.aborted)return;this.aborted=!0;let controller=this[kController];return this[kHandler].onResponseError?.(controller,error)}onFinally(){this.errorHandler&&(this.body.off("error",this.errorHandler),this.errorHandler=null),this.endHandler&&(this.body.off("end",this.endHandler),this.endHandler=null)}addHeader(key,value){return processHeader(this,key,value),this}};function processHeader(request,key,val){if(val&&typeof val=="object"&&!Array.isArray(val))throw new InvalidArgumentError(`invalid ${key} header`);if(val===void 0)return;let headerName=headerNameLowerCasedRecord[key];if(headerName===void 0&&(headerName=key.toLowerCase(),headerNameLowerCasedRecord[headerName]===void 0&&!isValidHTTPToken(headerName)))throw new InvalidArgumentError("invalid header key");if(Array.isArray(val)){let arr=[];for(let i=0;i<val.length;i++)if(typeof val[i]=="string"){if(!isValidHeaderValue(val[i]))throw new InvalidArgumentError(`invalid ${key} header`);arr.push(val[i])}else if(val[i]===null)arr.push("");else{if(typeof val[i]=="object")throw new InvalidArgumentError(`invalid ${key} header`);{let str2=`${val[i]}`;if(!isValidHeaderValue(str2))throw new InvalidArgumentError(`invalid ${key} header`);arr.push(str2)}}val=arr}else if(typeof val=="string"){if(!isValidHeaderValue(val))throw new InvalidArgumentError(`invalid ${key} header`)}else if(val===null)val="";else if(val=`${val}`,!isValidHeaderValue(val))throw new InvalidArgumentError(`invalid ${key} header`);if(headerName==="host"){if(request.host!==null)throw new InvalidArgumentError("duplicate host header");if(typeof val!="string")throw new InvalidArgumentError("invalid host header");request.host=val}else if(headerName==="content-length"){if(request.contentLength!==null)throw new InvalidArgumentError("duplicate content-length header");if(!isValidContentLengthHeaderValue(val))throw new InvalidArgumentError("invalid content-length header");request.contentLength=parseInt(val,10)}else if(request.contentType===null&&headerName==="content-type")request.contentType=val,request.headers.push(key,val);else{if(headerName==="transfer-encoding"||headerName==="keep-alive"||headerName==="upgrade")throw new InvalidArgumentError(`invalid ${headerName} header`);if(headerName==="connection"){let value=typeof val=="string"?val:null;if(value===null)throw new InvalidArgumentError("invalid connection header");for(let token of value.toLowerCase().split(",")){let trimmed=token.trim();if(!isValidHTTPToken(trimmed))throw new InvalidArgumentError("invalid connection header");trimmed==="close"&&(request.reset=!0)}}else{if(headerName==="expect")throw new NotSupportedError("expect header not supported");request.headers.push(key,val)}}}module.exports=Request}});var require_dispatcher=__commonJS({"node_modules/undici/lib/dispatcher/dispatcher.js"(exports,module){"use strict";var EventEmitter3=__require("node:events"),{kOriginless,kUrl}=require_symbols(),Dispatcher=class extends EventEmitter3{dispatch(){throw new Error("not implemented")}close(){throw new Error("not implemented")}destroy(){throw new Error("not implemented")}compose(...args){let interceptors=Array.isArray(args[0])?args[0]:args,interceptorOrigin=this[kOriginless]===!0?null:this[kUrl]?.origin,dispatch=this.dispatch.bind(this);for(let interceptor of interceptors)if(interceptor!=null){if(typeof interceptor!="function")throw new TypeError(`invalid interceptor, expected function received ${typeof interceptor}`);if(dispatch=interceptor(dispatch,interceptorOrigin),dispatch==null||typeof dispatch!="function"||dispatch.length!==2)throw new TypeError("invalid interceptor")}let originalDispatch=dispatch,self=this;return dispatch=function(opts,handler){return opts&&typeof opts=="object"&&!opts.origin&&self[kUrl]&&(opts=Object.assign({},opts,{origin:self[kUrl].origin})),originalDispatch(opts,handler)},new Proxy(this,{get:(target,key)=>key==="dispatch"?dispatch:target[key]})}};module.exports=Dispatcher}});var require_dispatcher_base=__commonJS({"node_modules/undici/lib/dispatcher/dispatcher-base.js"(exports,module){"use strict";var buffer=__require("node:buffer"),Dispatcher=require_dispatcher(),{ClientDestroyedError,ClientClosedError,InvalidArgumentError}=require_errors(),{kDestroy,kClose,kClosed,kDestroyed,kDispatch}=require_symbols(),kOnDestroyed=Symbol("onDestroyed"),kOnClosed=Symbol("onClosed"),kWebSocketOptions=Symbol("webSocketOptions"),kEventSourceOptions=Symbol("eventSourceOptions"),DispatcherBase=class extends Dispatcher{[kDestroyed]=!1;[kOnDestroyed]=null;[kClosed]=!1;[kOnClosed]=null;constructor(opts){super(),this[kWebSocketOptions]=opts?.webSocket??{},this[kEventSourceOptions]=opts?.eventSource??{}}get webSocketOptions(){return{maxFragments:this[kWebSocketOptions].maxFragments??131072,maxPayloadSize:this[kWebSocketOptions].maxPayloadSize??128*1024*1024}}get eventSourceOptions(){return{maxEventSize:this[kEventSourceOptions].maxEventSize??buffer.kStringMaxLength}}get destroyed(){return this[kDestroyed]}get closed(){return this[kClosed]}close(callback){if(callback===void 0)return new Promise((resolve17,reject)=>{this.close((err,data)=>err?reject(err):resolve17(data))});if(typeof callback!="function")throw new InvalidArgumentError("invalid callback");if(this[kDestroyed]){let err=new ClientDestroyedError;queueMicrotask(()=>callback(err,null));return}if(this[kClosed]){this[kOnClosed]?this[kOnClosed].push(callback):queueMicrotask(()=>callback(null,null));return}this[kClosed]=!0,this[kOnClosed]??=[],this[kOnClosed].push(callback);let onClosed=()=>{let callbacks=this[kOnClosed];this[kOnClosed]=null;for(let i=0;i<callbacks.length;i++)callbacks[i](null,null)};this[kClose]().then(()=>this.destroy()).then(()=>queueMicrotask(onClosed))}destroy(err,callback){if(typeof err=="function"&&(callback=err,err=null),callback===void 0)return new Promise((resolve17,reject)=>{this.destroy(err,(err2,data)=>err2?reject(err2):resolve17(data))});if(typeof callback!="function")throw new InvalidArgumentError("invalid callback");if(this[kDestroyed]){this[kOnDestroyed]?this[kOnDestroyed].push(callback):queueMicrotask(()=>callback(null,null));return}err||(err=new ClientDestroyedError),this[kDestroyed]=!0,this[kOnDestroyed]??=[],this[kOnDestroyed].push(callback);let onDestroyed=()=>{let callbacks=this[kOnDestroyed];this[kOnDestroyed]=null;for(let i=0;i<callbacks.length;i++)callbacks[i](null,null)};this[kDestroy](err).then(()=>queueMicrotask(onDestroyed))}dispatch(opts,handler){if(!handler||typeof handler!="object")throw new InvalidArgumentError("handler must be an object");try{if(!opts||typeof opts!="object")throw new InvalidArgumentError("opts must be an object.");if(opts.dispatcher)throw new InvalidArgumentError("opts.dispatcher is not supported by instance methods. Pass opts.dispatcher to the top-level undici functions or call the dispatcher instance method directly.");if(this[kDestroyed]||this[kOnDestroyed])throw new ClientDestroyedError;if(this[kClosed])throw new ClientClosedError;return this[kDispatch](opts,handler)}catch(err){if(typeof handler.onResponseError!="function")throw err;return handler.onResponseError(null,err),!1}}};module.exports=DispatcherBase}});var require_connect=__commonJS({"node_modules/undici/lib/core/connect.js"(exports,module){"use strict";var net=__require("node:net"),assert=__require("node:assert"),util=require_util(),{InvalidArgumentError,ConnectTimeoutError}=require_errors(),tls,SessionCache=class{constructor(maxCachedSessions){this._maxCachedSessions=maxCachedSessions,this._sessionCache=new Map,this._sessionRegistry=new FinalizationRegistry(key=>{if(this._sessionCache.size<this._maxCachedSessions)return;let ref=this._sessionCache.get(key);ref!==void 0&&ref.deref()===void 0&&this._sessionCache.delete(key)})}get(sessionKey){let ref=this._sessionCache.get(sessionKey);return ref?ref.deref():null}set(sessionKey,session){if(this._maxCachedSessions!==0){if(this._sessionCache.has(sessionKey))this._sessionCache.delete(sessionKey);else if(this._sessionCache.size>=this._maxCachedSessions){for(let[key,ref]of this._sessionCache)if(ref.deref()===void 0){this._sessionCache.delete(key);return}let oldest=this._sessionCache.keys().next();oldest.done||this._sessionCache.delete(oldest.value)}this._sessionCache.set(sessionKey,new WeakRef(session)),this._sessionRegistry.register(session,sessionKey)}}};function buildConnector({allowH2,preferH2,useH2c,maxCachedSessions,socketPath,timeout,session:customSession,...opts}){if(maxCachedSessions!=null&&(!Number.isInteger(maxCachedSessions)||maxCachedSessions<0))throw new InvalidArgumentError("maxCachedSessions must be a positive integer or zero");let options={path:socketPath,...opts},sessionCache=new SessionCache(maxCachedSessions??100);return timeout=timeout??1e4,allowH2=allowH2??!0,function({hostname:hostname3,host,protocol,port,servername,localAddress,httpSocket},callback){let socket;if(protocol==="https:"){tls||(tls=__require("node:tls")),servername=servername||options.servername||util.getServerName(host)||null;let sessionKey=servername||hostname3;assert(sessionKey);let session=customSession||sessionCache.get(sessionKey)||null;port=port||443,socket=tls.connect({highWaterMark:16384,...options,servername,session,localAddress,ALPNProtocols:allowH2?preferH2?["h2","http/1.1"]:["http/1.1","h2"]:["http/1.1"],socket:httpSocket,port,host:hostname3}),socket.on("session",function(session2){sessionCache.set(sessionKey,session2)})}else{assert(!httpSocket,"httpSocket can only be sent on TLS update"),port=port||80;let connectOptions={highWaterMark:64*1024,...options,localAddress,port,host:hostname3},family=net.isIP(hostname3);family!==0&&servername&&servername!==hostname3&&(connectOptions.host=servername,connectOptions.lookup=(_hostname,lookupOptions,cb)=>{lookupOptions.all?cb(null,[{address:hostname3,family}]):cb(null,hostname3,family)}),socket=net.connect(connectOptions),useH2c===!0&&(socket.alpnProtocol="h2")}if(options.keepAlive==null||options.keepAlive){let keepAliveInitialDelay=options.keepAliveInitialDelay===void 0?6e4:options.keepAliveInitialDelay;socket.setKeepAlive(!0,keepAliveInitialDelay)}let clearConnectTimeout=util.setupConnectTimeout(new WeakRef(socket),{timeout,hostname:hostname3,port});return socket.setNoDelay(!0).once(protocol==="https:"?"secureConnect":"connect",function(){if(queueMicrotask(clearConnectTimeout),callback){let cb=callback;callback=null,cb(null,this)}}).on("error",function(err){if(queueMicrotask(clearConnectTimeout),callback){let cb=callback;callback=null,cb(maybeNormalizeConnectError(err,this,{timeout,hostname:hostname3,port}))}}),socket}}function maybeNormalizeConnectError(err,socket,opts){if(err instanceof AggregateError&&(err.code==="ETIMEDOUT"||err.errors.some(e=>e!=null&&e.code==="ETIMEDOUT"))){let message="Connect Timeout Error";Array.isArray(socket.autoSelectFamilyAttemptedAddresses)?message+=` (attempted addresses: ${socket.autoSelectFamilyAttemptedAddresses.join(", ")},`:message+=` (attempted address: ${opts.hostname}:${opts.port},`,message+=` timeout: ${opts.timeout}ms)`;let wrapped=new ConnectTimeoutError(message);return wrapped.cause=err,wrapped}return err}module.exports=buildConnector}});var require_utils=__commonJS({"node_modules/undici/lib/llhttp/utils.js"(exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.enumToMap=enumToMap;function enumToMap(obj,filter2=[],exceptions=[]){let emptyFilter=(filter2?.length??0)===0,emptyExceptions=(exceptions?.length??0)===0;return Object.fromEntries(Object.entries(obj).filter(([,value])=>typeof value=="number"&&(emptyFilter||filter2.includes(value))&&(emptyExceptions||!exceptions.includes(value))))}}});var require_constants2=__commonJS({"node_modules/undici/lib/llhttp/constants.js"(exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.SPECIAL_HEADERS=exports.MINOR=exports.MAJOR=exports.HTAB_SP_VCHAR_OBS_TEXT=exports.QUOTED_STRING=exports.CONNECTION_TOKEN_CHARS=exports.HEADER_CHARS=exports.TOKEN=exports.HEX=exports.URL_CHAR=exports.USERINFO_CHARS=exports.MARK=exports.ALPHANUM=exports.NUM=exports.HEX_MAP=exports.NUM_MAP=exports.ALPHA=exports.STATUSES_HTTP=exports.H_METHOD_MAP=exports.METHOD_MAP=exports.METHODS_RTSP=exports.METHODS_ICE=exports.METHODS_HTTP=exports.HEADER_STATE=exports.FINISH=exports.STATUSES=exports.METHODS=exports.LENIENT_FLAGS=exports.FLAGS=exports.TYPE=exports.ERROR=void 0;var utils_1=require_utils();exports.ERROR={OK:0,INTERNAL:1,STRICT:2,CR_EXPECTED:25,LF_EXPECTED:3,UNEXPECTED_CONTENT_LENGTH:4,UNEXPECTED_SPACE:30,CLOSED_CONNECTION:5,INVALID_METHOD:6,INVALID_URL:7,INVALID_CONSTANT:8,INVALID_VERSION:9,INVALID_HEADER_TOKEN:10,INVALID_CONTENT_LENGTH:11,INVALID_CHUNK_SIZE:12,INVALID_STATUS:13,INVALID_EOF_STATE:14,INVALID_TRANSFER_ENCODING:15,CB_MESSAGE_BEGIN:16,CB_HEADERS_COMPLETE:17,CB_MESSAGE_COMPLETE:18,CB_CHUNK_HEADER:19,CB_CHUNK_COMPLETE:20,PAUSED:21,PAUSED_UPGRADE:22,PAUSED_H2_UPGRADE:23,USER:24,CB_URL_COMPLETE:26,CB_STATUS_COMPLETE:27,CB_METHOD_COMPLETE:32,CB_VERSION_COMPLETE:33,CB_HEADER_FIELD_COMPLETE:28,CB_HEADER_VALUE_COMPLETE:29,CB_CHUNK_EXTENSION_NAME_COMPLETE:34,CB_CHUNK_EXTENSION_VALUE_COMPLETE:35,CB_RESET:31,CB_PROTOCOL_COMPLETE:38};exports.TYPE={BOTH:0,REQUEST:1,RESPONSE:2};exports.FLAGS={CONNECTION_KEEP_ALIVE:1,CONNECTION_CLOSE:2,CONNECTION_UPGRADE:4,CHUNKED:8,UPGRADE:16,CONTENT_LENGTH:32,SKIPBODY:64,TRAILING:128,TRANSFER_ENCODING:512};exports.LENIENT_FLAGS={HEADERS:1,CHUNKED_LENGTH:2,KEEP_ALIVE:4,TRANSFER_ENCODING:8,VERSION:16,DATA_AFTER_CLOSE:32,OPTIONAL_LF_AFTER_CR:64,OPTIONAL_CRLF_AFTER_CHUNK:128,OPTIONAL_CR_BEFORE_LF:256,SPACES_AFTER_CHUNK_SIZE:512};exports.METHODS={DELETE:0,GET:1,HEAD:2,POST:3,PUT:4,CONNECT:5,OPTIONS:6,TRACE:7,COPY:8,LOCK:9,MKCOL:10,MOVE:11,PROPFIND:12,PROPPATCH:13,SEARCH:14,UNLOCK:15,BIND:16,REBIND:17,UNBIND:18,ACL:19,REPORT:20,MKACTIVITY:21,CHECKOUT:22,MERGE:23,"M-SEARCH":24,NOTIFY:25,SUBSCRIBE:26,UNSUBSCRIBE:27,PATCH:28,PURGE:29,MKCALENDAR:30,LINK:31,UNLINK:32,SOURCE:33,PRI:34,DESCRIBE:35,ANNOUNCE:36,SETUP:37,PLAY:38,PAUSE:39,TEARDOWN:40,GET_PARAMETER:41,SET_PARAMETER:42,REDIRECT:43,RECORD:44,FLUSH:45,QUERY:46};exports.STATUSES={CONTINUE:100,SWITCHING_PROTOCOLS:101,PROCESSING:102,EARLY_HINTS:103,RESPONSE_IS_STALE:110,REVALIDATION_FAILED:111,DISCONNECTED_OPERATION:112,HEURISTIC_EXPIRATION:113,MISCELLANEOUS_WARNING:199,OK:200,CREATED:201,ACCEPTED:202,NON_AUTHORITATIVE_INFORMATION:203,NO_CONTENT:204,RESET_CONTENT:205,PARTIAL_CONTENT:206,MULTI_STATUS:207,ALREADY_REPORTED:208,TRANSFORMATION_APPLIED:214,IM_USED:226,MISCELLANEOUS_PERSISTENT_WARNING:299,MULTIPLE_CHOICES:300,MOVED_PERMANENTLY:301,FOUND:302,SEE_OTHER:303,NOT_MODIFIED:304,USE_PROXY:305,SWITCH_PROXY:306,TEMPORARY_REDIRECT:307,PERMANENT_REDIRECT:308,BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,METHOD_NOT_ALLOWED:405,NOT_ACCEPTABLE:406,PROXY_AUTHENTICATION_REQUIRED:407,REQUEST_TIMEOUT:408,CONFLICT:409,GONE:410,LENGTH_REQUIRED:411,PRECONDITION_FAILED:412,PAYLOAD_TOO_LARGE:413,URI_TOO_LONG:414,UNSUPPORTED_MEDIA_TYPE:415,RANGE_NOT_SATISFIABLE:416,EXPECTATION_FAILED:417,IM_A_TEAPOT:418,PAGE_EXPIRED:419,ENHANCE_YOUR_CALM:420,MISDIRECTED_REQUEST:421,UNPROCESSABLE_ENTITY:422,LOCKED:423,FAILED_DEPENDENCY:424,TOO_EARLY:425,UPGRADE_REQUIRED:426,PRECONDITION_REQUIRED:428,TOO_MANY_REQUESTS:429,REQUEST_HEADER_FIELDS_TOO_LARGE_UNOFFICIAL:430,REQUEST_HEADER_FIELDS_TOO_LARGE:431,LOGIN_TIMEOUT:440,NO_RESPONSE:444,RETRY_WITH:449,BLOCKED_BY_PARENTAL_CONTROL:450,UNAVAILABLE_FOR_LEGAL_REASONS:451,CLIENT_CLOSED_LOAD_BALANCED_REQUEST:460,INVALID_X_FORWARDED_FOR:463,REQUEST_HEADER_TOO_LARGE:494,SSL_CERTIFICATE_ERROR:495,SSL_CERTIFICATE_REQUIRED:496,HTTP_REQUEST_SENT_TO_HTTPS_PORT:497,INVALID_TOKEN:498,CLIENT_CLOSED_REQUEST:499,INTERNAL_SERVER_ERROR:500,NOT_IMPLEMENTED:501,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504,HTTP_VERSION_NOT_SUPPORTED:505,VARIANT_ALSO_NEGOTIATES:506,INSUFFICIENT_STORAGE:507,LOOP_DETECTED:508,BANDWIDTH_LIMIT_EXCEEDED:509,NOT_EXTENDED:510,NETWORK_AUTHENTICATION_REQUIRED:511,WEB_SERVER_UNKNOWN_ERROR:520,WEB_SERVER_IS_DOWN:521,CONNECTION_TIMEOUT:522,ORIGIN_IS_UNREACHABLE:523,TIMEOUT_OCCURED:524,SSL_HANDSHAKE_FAILED:525,INVALID_SSL_CERTIFICATE:526,RAILGUN_ERROR:527,SITE_IS_OVERLOADED:529,SITE_IS_FROZEN:530,IDENTITY_PROVIDER_AUTHENTICATION_ERROR:561,NETWORK_READ_TIMEOUT:598,NETWORK_CONNECT_TIMEOUT:599};exports.FINISH={SAFE:0,SAFE_WITH_CB:1,UNSAFE:2};exports.HEADER_STATE={GENERAL:0,CONNECTION:1,CONTENT_LENGTH:2,TRANSFER_ENCODING:3,UPGRADE:4,CONNECTION_KEEP_ALIVE:5,CONNECTION_CLOSE:6,CONNECTION_UPGRADE:7,TRANSFER_ENCODING_CHUNKED:8};exports.METHODS_HTTP=[exports.METHODS.DELETE,exports.METHODS.GET,exports.METHODS.HEAD,exports.METHODS.POST,exports.METHODS.PUT,exports.METHODS.CONNECT,exports.METHODS.OPTIONS,exports.METHODS.TRACE,exports.METHODS.COPY,exports.METHODS.LOCK,exports.METHODS.MKCOL,exports.METHODS.MOVE,exports.METHODS.PROPFIND,exports.METHODS.PROPPATCH,exports.METHODS.SEARCH,exports.METHODS.UNLOCK,exports.METHODS.BIND,exports.METHODS.REBIND,exports.METHODS.UNBIND,exports.METHODS.ACL,exports.METHODS.REPORT,exports.METHODS.MKACTIVITY,exports.METHODS.CHECKOUT,exports.METHODS.MERGE,exports.METHODS["M-SEARCH"],exports.METHODS.NOTIFY,exports.METHODS.SUBSCRIBE,exports.METHODS.UNSUBSCRIBE,exports.METHODS.PATCH,exports.METHODS.PURGE,exports.METHODS.MKCALENDAR,exports.METHODS.LINK,exports.METHODS.UNLINK,exports.METHODS.PRI,exports.METHODS.SOURCE,exports.METHODS.QUERY];exports.METHODS_ICE=[exports.METHODS.SOURCE];exports.METHODS_RTSP=[exports.METHODS.OPTIONS,exports.METHODS.DESCRIBE,exports.METHODS.ANNOUNCE,exports.METHODS.SETUP,exports.METHODS.PLAY,exports.METHODS.PAUSE,exports.METHODS.TEARDOWN,exports.METHODS.GET_PARAMETER,exports.METHODS.SET_PARAMETER,exports.METHODS.REDIRECT,exports.METHODS.RECORD,exports.METHODS.FLUSH,exports.METHODS.GET,exports.METHODS.POST];exports.METHOD_MAP=(0,utils_1.enumToMap)(exports.METHODS);exports.H_METHOD_MAP=Object.fromEntries(Object.entries(exports.METHODS).filter(([k])=>k.startsWith("H")));exports.STATUSES_HTTP=[exports.STATUSES.CONTINUE,exports.STATUSES.SWITCHING_PROTOCOLS,exports.STATUSES.PROCESSING,exports.STATUSES.EARLY_HINTS,exports.STATUSES.RESPONSE_IS_STALE,exports.STATUSES.REVALIDATION_FAILED,exports.STATUSES.DISCONNECTED_OPERATION,exports.STATUSES.HEURISTIC_EXPIRATION,exports.STATUSES.MISCELLANEOUS_WARNING,exports.STATUSES.OK,exports.STATUSES.CREATED,exports.STATUSES.ACCEPTED,exports.STATUSES.NON_AUTHORITATIVE_INFORMATION,exports.STATUSES.NO_CONTENT,exports.STATUSES.RESET_CONTENT,exports.STATUSES.PARTIAL_CONTENT,exports.STATUSES.MULTI_STATUS,exports.STATUSES.ALREADY_REPORTED,exports.STATUSES.TRANSFORMATION_APPLIED,exports.STATUSES.IM_USED,exports.STATUSES.MISCELLANEOUS_PERSISTENT_WARNING,exports.STATUSES.MULTIPLE_CHOICES,exports.STATUSES.MOVED_PERMANENTLY,exports.STATUSES.FOUND,exports.STATUSES.SEE_OTHER,exports.STATUSES.NOT_MODIFIED,exports.STATUSES.USE_PROXY,exports.STATUSES.SWITCH_PROXY,exports.STATUSES.TEMPORARY_REDIRECT,exports.STATUSES.PERMANENT_REDIRECT,exports.STATUSES.BAD_REQUEST,exports.STATUSES.UNAUTHORIZED,exports.STATUSES.PAYMENT_REQUIRED,exports.STATUSES.FORBIDDEN,exports.STATUSES.NOT_FOUND,exports.STATUSES.METHOD_NOT_ALLOWED,exports.STATUSES.NOT_ACCEPTABLE,exports.STATUSES.PROXY_AUTHENTICATION_REQUIRED,exports.STATUSES.REQUEST_TIMEOUT,exports.STATUSES.CONFLICT,exports.STATUSES.GONE,exports.STATUSES.LENGTH_REQUIRED,exports.STATUSES.PRECONDITION_FAILED,exports.STATUSES.PAYLOAD_TOO_LARGE,exports.STATUSES.URI_TOO_LONG,exports.STATUSES.UNSUPPORTED_MEDIA_TYPE,exports.STATUSES.RANGE_NOT_SATISFIABLE,exports.STATUSES.EXPECTATION_FAILED,exports.STATUSES.IM_A_TEAPOT,exports.STATUSES.PAGE_EXPIRED,exports.STATUSES.ENHANCE_YOUR_CALM,exports.STATUSES.MISDIRECTED_REQUEST,exports.STATUSES.UNPROCESSABLE_ENTITY,exports.STATUSES.LOCKED,exports.STATUSES.FAILED_DEPENDENCY,exports.STATUSES.TOO_EARLY,exports.STATUSES.UPGRADE_REQUIRED,exports.STATUSES.PRECONDITION_REQUIRED,exports.STATUSES.TOO_MANY_REQUESTS,exports.STATUSES.REQUEST_HEADER_FIELDS_TOO_LARGE_UNOFFICIAL,exports.STATUSES.REQUEST_HEADER_FIELDS_TOO_LARGE,exports.STATUSES.LOGIN_TIMEOUT,exports.STATUSES.NO_RESPONSE,exports.STATUSES.RETRY_WITH,exports.STATUSES.BLOCKED_BY_PARENTAL_CONTROL,exports.STATUSES.UNAVAILABLE_FOR_LEGAL_REASONS,exports.STATUSES.CLIENT_CLOSED_LOAD_BALANCED_REQUEST,exports.STATUSES.INVALID_X_FORWARDED_FOR,exports.STATUSES.REQUEST_HEADER_TOO_LARGE,exports.STATUSES.SSL_CERTIFICATE_ERROR,exports.STATUSES.SSL_CERTIFICATE_REQUIRED,exports.STATUSES.HTTP_REQUEST_SENT_TO_HTTPS_PORT,exports.STATUSES.INVALID_TOKEN,exports.STATUSES.CLIENT_CLOSED_REQUEST,exports.STATUSES.INTERNAL_SERVER_ERROR,exports.STATUSES.NOT_IMPLEMENTED,exports.STATUSES.BAD_GATEWAY,exports.STATUSES.SERVICE_UNAVAILABLE,exports.STATUSES.GATEWAY_TIMEOUT,exports.STATUSES.HTTP_VERSION_NOT_SUPPORTED,exports.STATUSES.VARIANT_ALSO_NEGOTIATES,exports.STATUSES.INSUFFICIENT_STORAGE,exports.STATUSES.LOOP_DETECTED,exports.STATUSES.BANDWIDTH_LIMIT_EXCEEDED,exports.STATUSES.NOT_EXTENDED,exports.STATUSES.NETWORK_AUTHENTICATION_REQUIRED,exports.STATUSES.WEB_SERVER_UNKNOWN_ERROR,exports.STATUSES.WEB_SERVER_IS_DOWN,exports.STATUSES.CONNECTION_TIMEOUT,exports.STATUSES.ORIGIN_IS_UNREACHABLE,exports.STATUSES.TIMEOUT_OCCURED,exports.STATUSES.SSL_HANDSHAKE_FAILED,exports.STATUSES.INVALID_SSL_CERTIFICATE,exports.STATUSES.RAILGUN_ERROR,exports.STATUSES.SITE_IS_OVERLOADED,exports.STATUSES.SITE_IS_FROZEN,exports.STATUSES.IDENTITY_PROVIDER_AUTHENTICATION_ERROR,exports.STATUSES.NETWORK_READ_TIMEOUT,exports.STATUSES.NETWORK_CONNECT_TIMEOUT];exports.ALPHA=[];for(let i=65;i<=90;i++)exports.ALPHA.push(String.fromCharCode(i)),exports.ALPHA.push(String.fromCharCode(i+32));exports.NUM_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9};exports.HEX_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15};exports.NUM=["0","1","2","3","4","5","6","7","8","9"];exports.ALPHANUM=exports.ALPHA.concat(exports.NUM);exports.MARK=["-","_",".","!","~","*","'","(",")"];exports.USERINFO_CHARS=exports.ALPHANUM.concat(exports.MARK).concat(["%",";",":","&","=","+","$",","]);exports.URL_CHAR=["!",'"',"$","%","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","@","[","\\","]","^","_","`","{","|","}","~"].concat(exports.ALPHANUM);exports.HEX=exports.NUM.concat(["a","b","c","d","e","f","A","B","C","D","E","F"]);exports.TOKEN=["!","#","$","%","&","'","*","+","-",".","^","_","`","|","~"].concat(exports.ALPHANUM);exports.HEADER_CHARS=[" "];for(let i=32;i<=255;i++)i!==127&&exports.HEADER_CHARS.push(i);exports.CONNECTION_TOKEN_CHARS=exports.HEADER_CHARS.filter(c=>c!==44);exports.QUOTED_STRING=[" "," "];for(let i=33;i<=255;i++)i!==34&&i!==92&&exports.QUOTED_STRING.push(i);exports.HTAB_SP_VCHAR_OBS_TEXT=[" "," "];for(let i=33;i<=126;i++)exports.HTAB_SP_VCHAR_OBS_TEXT.push(i);for(let i=128;i<=255;i++)exports.HTAB_SP_VCHAR_OBS_TEXT.push(i);exports.MAJOR=exports.NUM_MAP;exports.MINOR=exports.MAJOR;exports.SPECIAL_HEADERS={connection:exports.HEADER_STATE.CONNECTION,"content-length":exports.HEADER_STATE.CONTENT_LENGTH,"proxy-connection":exports.HEADER_STATE.CONNECTION,"transfer-encoding":exports.HEADER_STATE.TRANSFER_ENCODING,upgrade:exports.HEADER_STATE.UPGRADE};exports.default={ERROR:exports.ERROR,TYPE:exports.TYPE,FLAGS:exports.FLAGS,LENIENT_FLAGS:exports.LENIENT_FLAGS,METHODS:exports.METHODS,STATUSES:exports.STATUSES,FINISH:exports.FINISH,HEADER_STATE:exports.HEADER_STATE,ALPHA:exports.ALPHA,NUM_MAP:exports.NUM_MAP,HEX_MAP:exports.HEX_MAP,NUM:exports.NUM,ALPHANUM:exports.ALPHANUM,MARK:exports.MARK,USERINFO_CHARS:exports.USERINFO_CHARS,URL_CHAR:exports.URL_CHAR,HEX:exports.HEX,TOKEN:exports.TOKEN,HEADER_CHARS:exports.HEADER_CHARS,CONNECTION_TOKEN_CHARS:exports.CONNECTION_TOKEN_CHARS,QUOTED_STRING:exports.QUOTED_STRING,HTAB_SP_VCHAR_OBS_TEXT:exports.HTAB_SP_VCHAR_OBS_TEXT,MAJOR:exports.MAJOR,MINOR:exports.MINOR,SPECIAL_HEADERS:exports.SPECIAL_HEADERS,METHODS_HTTP:exports.METHODS_HTTP,METHODS_ICE:exports.METHODS_ICE,METHODS_RTSP:exports.METHODS_RTSP,METHOD_MAP:exports.METHOD_MAP,H_METHOD_MAP:exports.H_METHOD_MAP,STATUSES_HTTP:exports.STATUSES_HTTP}}});var require_llhttp_wasm=__commonJS({"node_modules/undici/lib/llhttp/llhttp-wasm.js"(exports,module){"use strict";var{Buffer:Buffer2}=__require("node:buffer"),wasmBase64="AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzU0BQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEBAwAAAwAAAAQFAXABExMFAwEAAgYIAX8BQcDZBAsHxQcoBm1lbW9yeQIAC19pbml0aWFsaXplAAgZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAC2xsaHR0cF9pbml0AAkYbGxodHRwX3Nob3VsZF9rZWVwX2FsaXZlADcMbGxodHRwX2FsbG9jAAsGbWFsbG9jADkLbGxodHRwX2ZyZWUADARmcmVlAAwPbGxodHRwX2dldF90eXBlAA0VbGxodHRwX2dldF9odHRwX21ham9yAA4VbGxodHRwX2dldF9odHRwX21pbm9yAA8RbGxodHRwX2dldF9tZXRob2QAEBZsbGh0dHBfZ2V0X3N0YXR1c19jb2RlABESbGxodHRwX2dldF91cGdyYWRlABIMbGxodHRwX3Jlc2V0ABMObGxodHRwX2V4ZWN1dGUAFBRsbGh0dHBfc2V0dGluZ3NfaW5pdAAVDWxsaHR0cF9maW5pc2gAFgxsbGh0dHBfcGF1c2UAFw1sbGh0dHBfcmVzdW1lABgbbGxodHRwX3Jlc3VtZV9hZnRlcl91cGdyYWRlABkQbGxodHRwX2dldF9lcnJubwAaF2xsaHR0cF9nZXRfZXJyb3JfcmVhc29uABsXbGxodHRwX3NldF9lcnJvcl9yZWFzb24AHBRsbGh0dHBfZ2V0X2Vycm9yX3BvcwAdEWxsaHR0cF9lcnJub19uYW1lAB4SbGxodHRwX21ldGhvZF9uYW1lAB8SbGxodHRwX3N0YXR1c19uYW1lACAabGxodHRw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AXRrQT5qIQILIAEgAjYCHCABQgA3AhAgAkECdEH01wBqIQACQEHI1QAoAgAiA0EBIAJ0IgdxRQRAIAAgATYCAEHI1QAgAyAHcjYCACABIAA2AhggASABNgIIIAEgATYCDAwBCyAEQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQACQANAIAAiAygCBEF4cSAERg0BIAJBHXYhACACQQF0IQIgAyAAQQRxakEQaiIHKAIAIgANAAsgByABNgIAIAEgAzYCGCABIAE2AgwgASABNgIIDAELIAMoAggiACABNgIMIAMgATYCCCABQQA2AhggASADNgIMIAEgADYCCAtB5NUAQeTVACgCAEEBayIAQX8gABs2AgALCwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BNAsHACAALQAwC0ABBH8gACgCGCEBIAAvAS4hAiAALQAoIQMgACgCOCEEIAAQOCAAIAQ2AjggACADOgAoIAAgAjsBLiAAIAE2AhgL5YUCAgd/A34gASACaiEEAkAgACIDKAIMIgANACADKAIEBEAgAyABNgIECyMAQRBrIgkkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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C0HjAQwHC0HXAQwGC0HYAQwFC0HZAQwEC0HaAQwDC0HbAQwCC0HdAQwBC0HcAQshAgNAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJ/AkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAg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ogKiAqICogKiAqICogKiAqICogKiAqICogIAogILIAQgAUEBaiIBRw0AC0HJACECDOwCCyABQQFqIQEgA0Evai0AAEEBcQ2lAiADQQA2AhwgAyABNgIUIANBlxA2AhAgA0EKNgIMQQAhAgzrAgsgASAERwRAA0AgAS0AAEEgRw0VIAQgAUEBaiIBRw0AC0H4ACECDOsCC0H4ACECDOoCCyADQQI6ACgMOAtBACECIANBADYCHCADQb8LNgIQIANBAjYCDCADIAFBAWo2AhQM6AILQQAhAgzOAgtBDSECDM0CC0ETIQIMzAILQRUhAgzLAgtBFiECDMoCC0EYIQIMyQILQRkhAgzIAgtBGiECDMcCC0EbIQIMxgILQRwhAgzFAgtBHSECDMQCC0EeIQIMwwILQR8hAgzCAgtBICECDMECC0EiIQIMwAILQSMhAgy/AgtBJSECDL4CC0HlACECDL0CCyADQT02AhwgAyABNgIUIAMgADYCDEEAIQIM1QILIANBGzYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDNQCCyADQSA2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzTAgsgA0ETNgIcIAMgATYCFCADQZgaNgIQIANBFTYCDEEAIQIM0gILIANBCzYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNECCyADQRA2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzQAgsgA0EgNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIMzwILIANBCzYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDM4CCyADQQw2AhwgAyABNgIUIANBpBw2AhAgA0EVNgIMQQAhAgzNAgtBACECIANBADYCHCADIAE2AhQgA0HdDjYCECADQRI2AgwMzAILAkADQAJAIAEtAABBCmsOBAACAgACCyAEIAFBAWoiAUcNAAtB/QEhAgzMAgsCQAJAIAMtADZBAUcNAEEAIQACQCADKAI4IgJFDQAgAigCYCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUcNASADQfwBNgIcIAMgATYCFCADQdwZNgIQIANBFTYCDEEAIQIMzQILQdwBIQIMswILIANBADYCHCADIAE2AhQgA0H5CzYCECADQR82AgxBACECDMsCCwJAAkAgAy0AKEEBaw4CBAEAC0HbASECDLICC0HUASECDLECCyADQQI6ADFBACEAAkAgAygCOCICRQ0AIAIoAgAiAkUNACADIAIRAAAhAAsgAEUEQEHdASECDLECCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQbQMNgIQIANBEDYCDEEAIQIMygILIANB+wE2AhwgAyABNgIUIANBgRo2AhAgA0EVNgIMQQAhAgzJAgsgASAERgRAQfoBIQIMyQILIAEtAABByABGDQEgA0EBOgAoC0HAASECDK4CC0HaASECDK0CCyABIARHBEAgA0EMNgIIIAMgATYCBEHZASECDK0CC0H5ASECDMUCCyABIARGBEBB+AEhAgzFAgsgAS0AAEHIAEcNBCABQQFqIQFB2AEhAgyrAgsgASAERgRAQfcBIQIMxAILAkACQCABLQAAQcUAaw4QAAUFBQUFBQUFBQUFBQUFAQULIAFBAWohAUHWASECDKsCCyABQQFqIQFB1wEhAgyqAgtB9gEhAiABIARGDcICIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbrVAGotAABHDQMgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMMCCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQLiIARQRAQeMBIQIMqgILIANB9QE2AhwgAyABNgIUIAMgADYCDEEAIQIMwgILQfQBIQIgASAERg3BAiADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEG41QBqLQAARw0CIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzCAgsgA0GBBDsBKCADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQLiIADQMMAgsgA0EANgIAC0EAIQIgA0EANgIcIAMgATYCFCADQeUfNgIQIANBCDYCDAy/AgtB1QEhAgylAgsgA0HzATYCHCADIAE2AhQgAyAANgIMQQAhAgy9AgtBACEAAkAgAygCOCICRQ0AIAIoAkAiAkUNACADIAIRAAAhAAsgAEUNbiAAQRVHBEAgA0EANgIcIAMgATYCFCADQYIPNgIQIANBIDYCDEEAIQIMvQILIANBjwE2AhwgAyABNgIUIANB7Bs2AhAgA0EVNgIMQQAhAgy8AgsgASAERwRAIANBDTYCCCADIAE2AgRB0wEhAgyjAgtB8gEhAgy7AgsgASAERgRAQfEBIQIMuwILAkACQAJAIAEtAABByABrDgsAAQgICAgICAgIAggLIAFBAWohAUHQASECDKMCCyABQQFqIQFB0QEhAgyiAgsgAUEBaiEBQdIBIQIMoQILQfABIQIgASAERg25AiADKAIAIgAgBCABa2ohBiABIABrQQJqIQUDQCABLQAAIABBtdUAai0AAEcNBCAAQQJGDQMgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMuQILQe8BIQIgASAERg24AiADKAIAIgAgBCABa2ohBiABIABrQQFqIQUDQCABLQAAIABBs9UAai0AAEcNAyAAQQFGDQIgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMuAILQe4BIQIgASAERg23AiADKAIAIgAgBCABa2ohBiABIABrQQJqIQUDQCABLQAAIABBsNUAai0AAEcNAiAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMtwILIAMoAgQhACADQgA3AwAgAyAAIAVBAWoiARArIgBFDQIgA0HsATYCHCADIAE2AhQgAyAANgIMQQAhAgy2AgsgA0EANgIACyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNnAIgA0HtATYCHCADIAE2AhQgAyAANgIMQQAhAgy0AgtBzwEhAgyaAgtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDLQCC0HOASECDJoCCyADQesBNgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMsgILIAEgBEYEQEHrASECDLICCyABLQAAQS9GBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GyODYCECADQQg2AgxBACECDLECC0HNASECDJcCCyABIARHBEAgA0EONgIIIAMgATYCBEHMASECDJcCC0HqASECDK8CCyABIARGBEBB6QEhAgyvAgsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFBywEhAgyWAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZcCIANB6AE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILIAEgBEYEQEHnASECDK4CCwJAIAEtAABBLkYEQCABQQFqIQEMAQsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZgCIANB5gE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILQcoBIQIMlAILIAEgBEYEQEHlASECDK0CC0EAIQBBASEFQQEhB0EAIQICQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQCABLQAAQTBrDgoKCQABAgMEBQYICwtBAgwGC0EDDAULQQQMBAtBBQwDC0EGDAILQQcMAQtBCAshAkEAIQVBACEHDAILQQkhAkEBIQBBACEFQQAhBwwBC0EAIQVBASECCyADIAI6ACsgAUEBaiEBAkACQCADLQAuQRBxDQACQAJAAkAgAy0AKg4DAQACBAsgB0UNAwwCCyAADQEMAgsgBUUNAQsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDQIgA0HiATYCHCADIAE2AhQgAyAANgIMQQAhAgyvAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZoCIANB4wE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILIAMoAgQhACADQQA2AgQgAyAAIAEQLyIARQ2YAiADQeQBNgIcIAMgATYCFCADIAA2AgwMrQILQckBIQIMkwILQQAhAAJAIAMoAjgiAkUNACACKAJEIgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANBpA02AhAgA0EhNgIMQQAhAgytAgtByAEhAgyTAgsgA0HhATYCHCADIAE2AhQgA0HQGjYCECADQRU2AgxBACECDKsCCyABIARGBEBB4QEhAgyrAgsCQCABLQAAQSBGBEAgA0EAOwE0IAFBAWohAQwBCyADQQA2AhwgAyABNgIUIANBmRE2AhAgA0EJNgIMQQAhAgyrAgtBxwEhAgyRAgsgASAERgRAQeABIQIMqgILAkAgAS0AAEEwa0H/AXEiAkEKSQRAIAFBAWohAQJAIAMvATQiAEGZM0sNACADIABBCmwiADsBNCAAQf7/A3EgAkH//wNzSw0AIAMgACACajsBNAwCC0EAIQIgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDAyrAgsgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDEEAIQIMqgILQcYBIQIMkAILIAEgBEYEQEHfASECDKkCCwJAIAEtAABBMGtB/wFxIgJBCkkEQCABQQFqIQECQCADLwE0IgBBmTNLDQAgAyAAQQpsIgA7ATQgAEH+/wNxIAJB//8Dc0sNACADIAAgAmo7ATQMAgtBACECIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgwMqgILIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgxBACECDKkCC0HFASECDI8CCyABIARGBEBB3gEhAgyoAgsCQCABLQAAQTBrQf8BcSICQQpJBEAgAUEBaiEBAkAgAy8BNCIAQZkzSw0AIAMgAEEKbCIAOwE0IABB/v8DcSACQf//A3NLDQAgAyAAIAJqOwE0DAILQQAhAiADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMDKkCCyADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMQQAhAgyoAgtBxAEhAgyOAgsgASAERgRAQd0BIQIMpwILAkACQAJAAkAgAS0AAEEKaw4XAgMDAAMDAwMDAwMDAwMDAwMDAwMDAwEDCyABQQFqDAULIAFBAWohAUHDASECDI8CCyABQQFqIQEgA0Evai0AAEEBcQ0IIANBADYCHCADIAE2AhQgA0GNCzYCECADQQ02AgxBACECDKcCCyADQQA2AhwgAyABNgIUIANBjQs2AhAgA0ENNgIMQQAhAgymAgsgASAERwRAIANBDzYCCCADIAE2AgRBASECDI0CC0HcASECDKUCCwJAAkADQAJAIAEtAABBCmsOBAIAAAMACyAEIAFBAWoiAUcNAAtB2wEhAgymAgsgAygCBCEAIANBADYCBCADIAAgARAtIgBFBEAgAUEBaiEBDAQLIANB2gE2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMpQILIAMoAgQhACADQQA2AgQgAyAAIAEQLSIADQEgAUEBagshAUHBASECDIoCCyADQdkBNgIcIAMgADYCDCADIAFBAWo2AhRBACECDKICC0HCASECDIgCCyADQS9qLQAAQQFxDQEgA0EANgIcIAMgATYCFCADQeQcNgIQIANBGTYCDEEAIQIMoAILIAEgBEYEQEHZASEC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IAFBAWohAUGeASECDOQBCyABQQFqIQFBnwEhAgzjAQtBtwEhAiABIARGDfsBIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQezUAGotAABHDSggAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPwBCyADQQA2AgAgBkEBaiEBQQ0MKAtBtgEhAiABIARGDfoBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQaHVAGotAABHDScgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPsBCyADQQA2AgAgBkEBaiEBQQwMJwtBtQEhAiABIARGDfkBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQerUAGotAABHDSYgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPoBCyADQQA2AgAgBkEBaiEBQQMMJgtBtAEhAiABIARGDfgBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQejUAGotAABHDSUgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPkBCyADQQA2AgAgBkEBaiEBQSYMJQsgASAERgRAQbMBIQIM+AELAkACQCABLQAAQdQAaw4CAAEnCyABQQFqIQFBmQEhAgzfAQsgAUEBaiEBQZoBIQIM3gELQbIBIQIgASAERg32ASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHm1ABqLQAARw0jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz3AQsgA0EANgIAIAZBAWohAUEnDCMLQbEBIQIgASAERg31ASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHk1ABqLQAARw0iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz2AQsgA0EANgIAIAZBAWohAUEcDCILQbABIQIgASAERg30ASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHe1ABqLQAARw0hIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz1AQsgA0EANgIAIAZBAWohAUEGDCELQa8BIQIgASAERg3zASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEHZ1ABqLQAARw0gIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz0AQsgA0EANgIAIAZBAWohAUEZDCALIAEgBEYEQEGuASECDPMBCwJAAkACQAJAIAEtAABBLWsOIwAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAEkJCQkJAIkJCQDJAsgAUEBaiEBQY4BIQIM3AELIAFBAWohAUGPASECDNsBCyABQQFqIQFBlAEhAgzaAQsgAUEBaiEBQZUBIQIM2QELQa0BIQIgASAERg3xASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHX1ABqLQAARw0eIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzyAQsgA0EANgIAIAZBAWohAUELDB4LIAEgBEYEQEGsASECDPEBCwJAAkAgAS0AAEHBAGsOAwAgASALIAFBAWohAUGQASECDNgBCyABQQFqIQFBkwEhAgzXAQsgASAERgRAQasBIQIM8AELAkACQCABLQAAQcEAaw4PAB8fHx8fHx8fHx8fHx8BHwsgAUEBaiEBQZEBIQIM1wELIAFBAWohAUGSASECDNYBCyABIARGBEBBqgEhAgzvAQsgAS0AAEHMAEcNHCABQQFqIQFBCgwbC0GpASECIAEgBEYN7QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABB0dQAai0AAEcNGiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7gELIANBADYCACAGQQFqIQFBHgwaC0GoASECIAEgBEYN7AEgAygCACIAIAQgAWtqIQUgASAAa0EGaiEGAkADQCABLQAAIABBytQAai0AAEcNGSAAQQZGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7QELIANBADYCACAGQQFqIQFBFQwZC0GnASECIAEgBEYN6wEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBx9QAai0AAEcNGCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7AELIANBADYCACAGQQFqIQFBFwwYC0GmASECIAEgBEYN6gEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBwdQAai0AAEcNFyAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6wELIANBADYCACAGQQFqIQFBGAwXCyABIARGBEBBpQEhAgzqAQsCQAJAIAEtAABByQBrDgcAGRkZGRkBGQsgAUEBaiEBQYsBIQIM0QELIAFBAWohAUGMASECDNABC0GkASECIAEgBEYN6AEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBptUAai0AAEcNFSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6QELIANBADYCACAGQQFqIQFBCQwVC0GjASECIAEgBEYN5wEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBpNUAai0AAEcNFCAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6AELIANBADYCACAGQQFqIQFBHwwUC0GiASECIAEgBEYN5gEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBvtQAai0AAEcNEyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM5wELIANBADYCACAGQQFqIQFBAgwTC0GhASECIAEgBEYN5QEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGA0AgAS0AACAAQbzUAGotAABHDREgAEEBRg0CIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADOUBCyABIARGBEBBoAEhAgzlAQtBASABLQAAQd8ARw0RGiABQQFqIQFBhwEhAgzLAQsgA0EANgIAIAZBAWohAUGIASECDMoBC0GfASECIAEgBEYN4gEgAygCACIAIAQgAWtqIQUgASAAa0EIaiEGAkADQCABLQAAIABBhNUAai0AAEcNDyAAQQhGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4wELIANBADYCACAGQQFqIQFBKQwPC0GeASECIAEgBEYN4QEgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBuNQAai0AAEcNDiAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4gELIANBADYCACAGQQFqIQFBLQwOCyABIARGBEBBnQEhAgzhAQsgAS0AAEHFAEcNDiABQQFqIQFBhAEhAgzHAQsgASAERgRAQZwBIQIM4AELAkACQCABLQAAQcwAaw4IAA8PDw8PDwEPCyABQQFqIQFBggEhAgzHAQsgAUEBaiEBQYMBIQIMxgELQZsBIQIgASAERg3eASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEGz1ABqLQAARw0LIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzfAQsgA0EANgIAIAZBAWohAUEjDAsLQZoBIQIgASAERg3dASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGw1ABqLQAARw0KIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzeAQsgA0EANgIAIAZBAWohAUEADAoLIAEgBEYEQEGZASECDN0BCwJAAkAgAS0AAEHIAGsOCAAMDAwMDAwBDAsgAUEBaiEBQf0AIQIMxAELIAFBAWohAUGAASECDMMBCyABIARGBEBBmAEhAgzcAQsCQAJAIAEtAABBzgBrDgMACwELCyABQQFqIQFB/gAhAgzDAQsgAUEBaiEBQf8AIQIMwgELIAEgBEYEQEGXASECDNsBCyABLQAAQdkARw0IIAFBAWohAUEIDAcLQZYBIQIgASAERg3ZASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEGs1ABqLQAARw0GIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzaAQsgA0EANgIAIAZBAWohAUEFDAYLQZUBIQIgASAERg3YASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGm1ABqLQAARw0FIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzZAQsgA0EANgIAIAZBAWohAUEWDAULQZQBIQIgASAERg3XASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGh1QBqLQAARw0EIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzYAQsgA0EANgIAIAZBAWohAUEQDAQLIAEgBEYEQEGTASECDNcBCwJAAkAgAS0AAEHDAGsODAAGBgYGBgYGBgYGAQYLIAFBAWohAUH5ACECDL4BCyABQQFqIQFB+gAhAgy9AQtBkgEhAiABIARGDdUBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQaDUAGotAABHDQIgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNYBCyADQQA2AgAgBkEBaiEBQSQMAgsgA0EANgIADAILIAEgBEYEQEGRASECDNQBCyABLQAAQcwARw0BIAFBAWohAUETCzoAKSADKAIEIQAgA0EANgIEIAMgACABEC4iAA0CDAELQQAhAiADQQA2AhwgAyABNgIUIANB/h82AhAgA0EGNgIMDNEBC0H4ACECDLcBCyADQZABNgIcIAMgATYCFCADIAA2AgxBACECDM8BC0EAIQACQCADKAI4IgJFDQAgAigCQCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUYNASADQQA2AhwgAyABNgIUIANBgg82AhAgA0EgNgIMQQAhAgzOAQtB9wAhAgy0AQsgA0GPATYCHCADIAE2AhQgA0HsGzYCECADQRU2AgxBACECDMwBCyABIARGBEBBjwEhAgzMAQsCQCABLQAAQSBGBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GbHzYCECADQQY2AgxBACECDMwBC0ECIQIMsgELA0AgAS0AAEEgRw0CIAQgAUEBaiIBRw0AC0GOASECDMoBCyABIARGBEBBjQEhAgzKAQsCQCABLQAAQQlrDgRKAABKAAtB9QAhAgywAQsgAy0AKUEFRgRAQfYAIQIMsAELQfQAIQIMrwELIAEgBEYEQEGMASECDMgBCyADQRA2AgggAyABNgIEDAoLIAEgBEYEQEGLASECDMcBCwJAIAEtAABBCWsOBEcAAEcAC0HzACECDK0BCyABIARHBEAgA0EQNgIIIAMgATYCBEHxACECDK0BC0GKASECDMUBCwJAIAEgBEcEQANAIAEtAABBoNAAai0AACIAQQNHBEACQCAAQQFrDgJJAAQLQfAAIQIMrwELIAQgAUEBaiIBRw0AC0GIASECDMYBC0GIASECDMUBCyADQQA2AhwgAyABNgIUIANB2yA2AhAgA0EHNgIMQQAhAgzEAQsgASAERgRAQYkBIQIMxAELAkACQAJAIAEtAABBoNIAai0AAEEBaw4DRgIAAQtB8gAhAgysAQsgA0EANgIcIAMgATYCFCADQbQSNgIQIANBBzYCDEEAIQIMxAELQeoAIQIMqgELIAEgBEcEQCABQQFqIQFB7wAhAgyqAQtBhwEhAgzCAQsgBCABIgBGBEBBhgEhAgzCAQsgAC0AACIBQS9GBEAgAEEBaiEBQe4AIQIMqQELIAFBCWsiAkEXSw0BIAAhAUEBIAJ0QZuAgARxDUEMAQsgBCABIgBGBEBBhQEhAgzBAQsgAC0AAEEvRw0AIABBAWohAQwDC0EAIQIgA0EANgIcIAMgADYCFCADQdsgNgIQIANBBzYCDAy/AQsCQAJAAkACQAJAA0AgAS0AAEGgzgBqLQAAIgBBBUcEQAJAAkAgAEEBaw4IRwUGBwgABAEIC0HrACECDK0BCyABQQFqIQFB7QAhAgysAQsgBCABQQFqIgFHDQALQYQBIQIMwwELIAFBAWoMFAsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDR4gA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgzBAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDR4gA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgzAAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDR4gA0H6ADYCHCADIAE2AhQgAyAANgIMQQAhAgy/AQsgA0EANgIcIAMgATYCFCADQfkPNgIQIANBBzYCDEEAIQIMvgELIAEgBEYEQEGDASECDL4BCwJAIAEtAABBoM4Aai0AAEEBaw4IPgQFBgAIAgMHCyABQQFqIQELQQMhAgyjAQsgAUEBagwNC0EAIQIgA0EANgIcIANB0RI2AhAgA0EHNgIMIAMgAUEBajYCFAy6AQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDRYgA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgy5AQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDRYgA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgy4AQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDRYgA0H6ADYCHCADIAE2AhQgAyAANgIMQQAhAgy3AQsgA0EANgIcIAMgATYCFCADQfkPNgIQIANBBzYCDEEAIQIMtgELQewAIQIMnAELIAEgBEYEQEGCASECDLUBCyABQQFqDAILIAEgBEYEQEGBASECDLQBCyABQQFqDAELIAEgBEYNASABQQFqCyEBQQQhAgyYAQtBgAEhAgywAQsDQCABLQAAQaDMAGotAAAiAEECRwRAIABBAUcEQEHpACECDJkBCwwxCyAEIAFBAWoiAUcNAAtB/wAhAgyvAQsgASAERgRAQf4AIQIMrwELAkAgAS0AAEEJaw43LwMGLwQGBgYGBgYGBgYGBgYGBgYGBgYFBgYCBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGAAYLIAFBAWoLIQFBBSECDJQBCyABQQFqDAYLIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0IIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMqwELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0IIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMqgELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0IIANB+gA2AhwgAyABNgIUIAMgADYCDEEAIQIMqQELIANBADYCHCADIAE2AhQgA0GNFDYCECADQQc2AgxBACECDKgBCwJAAkACQAJAA0AgAS0AAEGgygBqLQAAIgBBBUcEQAJAIABBAWsOBi4DBAUGAAYLQegAIQIMlAELIAQgAUEBaiIBRw0AC0H9ACECDKsBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNByADQdsANgIcIAMgATYCFCADIAA2AgxBACECDKoBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNByADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDKkBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNByADQfoANgIcIAMgATYCFCADIAA2AgxBACECDKgBCyADQQA2AhwgAyABNgIUIANB5Ag2AhAgA0EHNgIMQQAhAgynAQsgASAERg0BIAFBAWoLIQFBBiECDIwBC0H8ACECDKQBCwJAAkACQAJAA0AgAS0AAEGgyABqLQAAIgBBBUcEQCAAQQFrDgQpAgMEBQsgBCABQQFqIgFHDQALQfsAIQIMpwELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMpgELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMpQELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB+gA2AhwgAyABNgIUIAMgADYCDEEAIQIMpAELIANBADYCHCADIAE2AhQgA0G8CjYCECADQQc2AgxBACECDKMBC0HPACECDIkBC0HRACECDIgBC0HnACECDIcBCyABIARGBEBB+gAhAgygAQsCQCABLQAAQQlrDgQgAAAgAAsgAUEBaiEBQeYAIQIMhgELIAEgBEYEQEH5ACECDJ8BCwJAIAEtAABBCWsOBB8AAB8AC0EAIQACQCADKAI4IgJFDQAgAigCOCICRQ0AIAMgAhEAACEACyAARQRAQeIBIQIMhgELIABBFUcEQCADQQA2AhwgAyABNgIUIANByQ02AhAgA0EaNgIMQQAhAgyfAQsgA0H4ADYCHCADIAE2AhQgA0HqGjYCECADQRU2AgxBACECDJ4BCyABIARHBEAgA0ENNgIIIAMgATYCBEHkACECDIUBC0H3ACECDJ0BCyABIARGBEBB9gAhAgydAQsCQAJAAkAgAS0AAEHIAGsOCwABCwsLCwsLCwsCCwsgAUEBaiEBQd0AIQIMhQELIAFBAWohAUHgACECDIQBCyABQQFqIQFB4wAhAgyDAQtB9QAhAiABIARGDZsBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbXVAGotAABHDQggAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADJwBCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQKyIABEAgA0H0ADYCHCADIAE2AhQgAyAANgIMQQAhAgycAQtB4gAhAgyCAQtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJwBC0HhACECDIIBCyADQfMANgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMmgELIAMtACkiAEEja0ELSQ0JAkAgAEEGSw0AQQEgAHRBygBxRQ0ADAoLQQAhAiADQQA2AhwgAyABNgIUIANB7Qk2AhAgA0EINgIMDJkBC0HyACECIAEgBEYNmAEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBs9UAai0AAEcNBSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMmQELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgAEQCADQfEANgIcIAMgATYCFCADIAA2AgxBACECDJkBC0HfACECDH8LQQAhAAJAIAMoAjgiAkUNACACKAI0IgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANB6g02AhAgA0EmNgIMQQAhAgyZAQtB3gAhAgx/CyADQfAANgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMlwELIAMtAClBIUYNBiADQQA2AhwgAyABNgIUIANBkQo2AhAgA0EINgIMQQAhAgyWAQtB7wAhAiABIARGDZUBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbDVAGotAABHDQIgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADJYBCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQKyIARQ0CIANB7QA2AhwgAyABNgIUIAMgADYCDEEAIQIMlQELIANBADYCAAsgAygCBCEAIANBADYCBCADIAAgARArIgBFDYABIANB7gA2AhwgAyABNgIUIAMgADYCDEEAIQIMkwELQdwAIQIMeQtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJMBC0HbACECDHkLIANB7AA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyRAQsgAy0AKSIAQSNJDQAgAEEuRg0AIANBADYCHCADIAE2AhQgA0HJCTYCECADQQg2AgxBACECDJABC0HaACECDHYLIAEgBEYEQEHrACECDI8BCwJAIAEtAABBL0YEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQbI4NgIQIANBCDYCDEEAIQIMjwELQdkAIQIMdQsgASAERwRAIANBDjYCCCADIAE2AgRB2AAhAgx1C0HqACECDI0BCyABIARGBEBB6QAhAgyNAQsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFB1wAhAgx0CyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNeiADQegANgIcIAMgATYCFCADIAA2AgxBACECDIwBCyABIARGBEBB5wAhAgyMAQsCQCABLQAAQS5GBEAgAUEBaiEBDAELIAMoAgQhACADQQA2AgQgAyAAIAEQLyIARQ17IANB5gA2AhwgAyABNgIUIAMgADYCDEEAIQIMjAELQdYAIQIMcgsgASAERgRAQeUAIQIMiwELQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNAiADQeIANgIcIAMgATYCFCADIAA2AgxBACECDI0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNfSADQeMANgIcIAMgATYCFCADIAA2AgxBACECDIwBCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNeyADQeQANgIcIAMgATYCFCADIAA2AgwMiwELQdQAIQIMcQsgAy0AKUEiRg2GAUHTACECDHALQQAhAAJAIAMoAjgiAkUNACACKAJEIgJFDQAgAyACEQAAIQALIABFBEBB1QAhAgxwCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQaQNNgIQIANBITYCDEEAIQIMiQELIANB4QA2AhwgAyABNgIUIANB0Bo2AhAgA0EVNgIMQQAhAgyIAQsgASAERgRAQeAAIQIMiAELAkACQAJAAkACQCABLQAAQQprDgQBBAQABAsgAUEBaiEBDAELIAFBAWohASADQS9qLQAAQQFxRQ0BC0HSACECDHALIANBADYCHCADIAE2AhQgA0G2ETYCECADQQk2AgxBACECDIgBCyADQQA2AhwgAyABNgIUIANBthE2AhAgA0EJNgIMQQAhAgyHAQsgASAERgRAQd8AIQIMhwELIAEtAABBCkYEQCABQQFqIQEMCQsgAy0ALkHAAHENCCADQQA2AhwgAyABNgIUIANBthE2AhAgA0ECNgIMQQAhAgyGAQsgASAERgRAQd0AIQIMhgELIAEtAAAiAkENRgRAIAFBAWohAUHQACECDG0LIAEhACACQQlrDgQFAQEFAQsgBCABIgBGBEBB3AAhAgyFAQsgAC0AAEEKRw0AIABBAWoMAgtBACECIANBADYCHCADIAA2AhQgA0HKLTYCECADQQc2AgwMgwELIAEgBEYEQEHbACECDIMBCwJAIAEtAABBCWsOBAMAAAMACyABQQFqCyEBQc4AIQIMaAsgASAERgRAQdoAIQIMgQELIAEtAABBCWsOBAABAQABC0EAIQIgA0EANgIcIANBmhI2AhAgA0EHNgIMIAMgAUEBajYCFAx/CyADQYASOwEqQQAhAAJAIAMoAjgiAkUNACACKAI4IgJFDQAgAyACEQAAIQALIABFDQAgAEEVRw0BIANB2QA2AhwgAyABNgIUIANB6ho2AhAgA0EVNgIMQQAhAgx+C0HNACECDGQLIANBADYCHCADIAE2AhQgA0HJDTYCECADQRo2AgxBACECDHwLIAEgBEYEQEHZACECDHwLIAEtAABBIEcNPSABQQFqIQEgAy0ALkEBcQ09IANBADYCHCADIAE2AhQgA0HCHDYCECADQR42AgxBACECDHsLIAEgBEYEQEHYACECDHsLAkACQAJAAkACQCABLQAAIgBBCmsOBAIDAwABCyABQQFqIQFBLCECDGULIABBOkcNASADQQA2AhwgAyABNgIUIANB5xE2AhAgA0EKNgIMQQAhAgx9CyABQQFqIQEgA0Evai0AAEEBcUUNcyADLQAyQYABcUUEQCADQTJqIQIgAxA1QQAhAAJAIAMoAjgiBkUNACAGKAIoIgZFDQAgAyAGEQAAIQALAkACQCAADhZNTEsBAQEBAQEBAQEBAQEBAQEBAQEAAQsgA0EpNgIcIAMgATYCFCADQawZNgIQIANBFTYCDEEAIQIMfgsg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c3BvbnNlIHN0YXR1cwBFeHBlY3RlZCBMRiBhZnRlciBoZWFkZXJzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3Byb3RvY29sX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fcHJvdG9jb2wARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgAVHJhbnNmZXItRW5jb2RpbmcgY2FuJ3QgYmUgcHJlc2VudCB3aXRoIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgc2l6ZQBFeHBlY3RlZCBMRiBhZnRlciBjaHVuayBzaXplAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBVbmV4cGVjdGVkIHdoaXRlc3BhY2UgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBleHRlbnNpb24gdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIHF1b3RlZC1wYWlyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fcHJvdG9jb2xfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciByZXNwb25zZSBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIG5hbWUASW52YWxpZCBzdGF0dXMgY29kZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGRhdGEARXhwZWN0ZWQgTEYgYWZ0ZXIgY2h1bmsgZGF0YQBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AARGF0YSBhZnRlciBgQ29ubmVjdGlvbjogY2xvc2VgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBRVUVSWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAEV4cGVjdGVkIExGIGFmdGVyIENSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX1BST1RPQ09MX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8sIFJUU1AvIG9yIElDRS8A5xUAAK8VAACkEgAAkhoAACYWAACeFAAA2xkAAHkVAAB+EgAA/hQAADYVAAALFgAA2BYAAPMSAABCGAAArBYAABIVAAAUFwAA7xcAAEgUAABxFwAAshoAAGsZAAB+GQAANRQAAIIaAABEFwAA/RYAAB4YAACHFwAAqhkAAJMSAAAHGAAALBcAAMoXAACkFwAA5xUAAOcVAABYFwAAOxgAAKASAAAtHAAAwxEAAEgRAADeEgAAQhMAAKQZAAD9EAAA9xUAAKUVAADvFgAA+BkAAEoWAABWFgAA9RUAAAoaAAAIGgAAARoAAKsVAABCEgAA1xAAAEwRAAAFGQAAVBYAAB4RAADKGQAAyBkAAE4WAAD/GAAAcRQAAPAVAADuFQAAlBkAAPwVAAC/GQAAmxkAAHwUAABDEQAAcBgAAJUUAAAnFAAAGRQAANUSAADUGQAARBYAAPcQAEG5OwsBAQBB0DsL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBuj0LBAEAAAIAQdE9C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEG6PwsEAQAAAgBB0T8LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQbDBAAsNbG9zZWVlcC1hbGl2ZQBBycEACwEBAEHgwQAL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBycMACwEBAEHgwwAL5wEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAQfHFAAteAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBB0McACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQYDIAAsgcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQpTTQ0KDQoAQanIAAsFAQIAAQMAQcDIAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanKAAsFAQIAAQMAQcDKAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanMAAsEAQAAAQBBwcwAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEGpzgALBQECAAEDAEHAzgALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEGp0AALBQEBAAEBAEHA0AALAQEAQdrQAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQanSAAsFAQEAAQEAQcDSAAsBAQBBytIACwYCAAAAAAIAQeHSAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBoNQAC50BTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFVFRQQ0VUU1BBRFRQLw==",wasmBuffer;Object.defineProperty(module,"exports",{get:()=>wasmBuffer||(wasmBuffer=Buffer2.from(wasmBase64,"base64"))})}});var require_llhttp_simd_wasm=__commonJS({"node_modules/undici/lib/llhttp/llhttp_simd-wasm.js"(exports,module){"use strict";var{Buffer:Buffer2}=__require("node:buffer"),wasmBase64="AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzU0BQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEBAwAAAwAAAAQFAXABExMFAwEAAgYIAX8BQcDZBAsHxQcoBm1lbW9yeQIAC19pbml0aWFsaXplAAgZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAC2xsaHR0cF9pbml0AAkYbGxodHRwX3Nob3VsZF9rZWVwX2FsaXZlADcMbGxodHRwX2FsbG9jAAsGbWFsbG9jADkLbGxodHRwX2ZyZWUADARmcmVlAAwPbGxodHRwX2dldF90eXBlAA0VbGxodHRwX2dldF9odHRwX21ham9yAA4VbGxodHRwX2dldF9odHRwX21pbm9yAA8RbGxodHRwX2dldF9tZXRob2QAEBZsbGh0dHBfZ2V0X3N0YXR1c19jb2RlABESbGxodHRwX2dldF91cGdyYWRlABIMbGxodHRwX3Jlc2V0ABMObGxodHRwX2V4ZWN1dGUAFBRsbGh0dHBfc2V0dGluZ3NfaW5pdAAVDWxsaHR0cF9maW5pc2gAFgxsbGh0dHBfcGF1c2UAFw1sbGh0dHBfcmVzdW1lABgbbGxodHRwX3Jlc3VtZV9hZnRlcl91cGdyYWRlABkQbGxodHRwX2dldF9lcnJubwAaF2xsaHR0cF9nZXRfZXJyb3JfcmVhc29uABsXbGxodHRwX3NldF9lcnJvcl9yZWFzb24AHBRsbGh0dHBfZ2V0X2Vycm9yX3BvcwAdEWxsaHR0cF9lcnJub19uYW1lAB4SbGxodHRwX21ldGhvZF9uYW1lAB8SbGxodHRwX3N0YXR1c19uYW1lACAabGxodHRw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AXRrQT5qIQILIAEgAjYCHCABQgA3AhAgAkECdEH01wBqIQACQEHI1QAoAgAiA0EBIAJ0IgdxRQRAIAAgATYCAEHI1QAgAyAHcjYCACABIAA2AhggASABNgIIIAEgATYCDAwBCyAEQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQACQANAIAAiAygCBEF4cSAERg0BIAJBHXYhACACQQF0IQIgAyAAQQRxakEQaiIHKAIAIgANAAsgByABNgIAIAEgAzYCGCABIAE2AgwgASABNgIIDAELIAMoAggiACABNgIMIAMgATYCCCABQQA2AhggASADNgIMIAEgADYCCAtB5NUAQeTVACgCAEEBayIAQX8gABs2AgALCwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BNAsHACAALQAwC0ABBH8gACgCGCEBIAAvAS4hAiAALQAoIQMgACgCOCEEIAAQOCAAIAQ2AjggACADOgAoIAAgAjsBLiAAIAE2AhgLhocCAwd/A34BeyABIAJqIQQCQCAAIgMoAgwiAA0AIAMoAgQEQCADIAE2AgQLIwBBEGsiCSQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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DAgLQeMBDAcLQdcBDAYLQdgBDAULQdkBDAQLQdoBDAMLQdsBDAILQd0BDAELQdwBCyECA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAn8CQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAwJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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A0EXNgIcIAMgADYCDCADIAFBAWo2AhQM+AILIABBFUYNI0EAIQIgA0EANgIcIAMgATYCFCADQdYMNgIQIANBIzYCDAz3AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQwdCyADQRk2AhwgAyAANgIMIAMgAUEBajYCFAz2AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQzvAgsgA0EaNgIcIAMgADYCDCADIAFBAWo2AhQM9QILIABBFUYNH0EAIQIgA0EANgIcIAMgATYCFCADQdAPNgIQIANBIjYCDAz0AgsgAygCBCEAIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDBsLIANBHDYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgzzAgsgAygCBCEAIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDOsCCyADQR02AhwgAyAANgIMIAMgAUEBajYCFEEAIQIM8gILIABBO0cNASABQQFqIQELQSYhAgzXAgtBACECIANBADYCHCADIAE2AhQgA0GfFTYCECADQQw2AgwM7wILIAEgBEcEQANAIAEtAABBIEcNhAIgBCABQQFqIgFHDQALQSwhAgzvAgtBLCECDO4CCyABIARGBEBBNCECDO4CCwJAAkADQAJAIAEtAABBCmsOBAIAAAMACyAEIAFBAWoiAUcNAAtBNCECDO8CCyADKAIEIQAgA0EANgIEIAMgACABEDEiAEUNnwIgA0EyNgIcIAMgATYCFCADIAA2AgxBACECDO4CCyADKAIEIQAgA0EANgIEIAMgACABEDEiAEUEQCABQQFqIQEMnwILIANBMjYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgztAgsgASAERwRAAkADQCABLQAAQTBrIgBB/wFxQQpPBEBBOiECDNcCCyADKQMgIgtCmbPmzJmz5swZVg0BIAMgC0IKfiIKNwMgIAogAK1C/wGDIgtCf4VWDQEgAyAKIAt8NwMgIAQgAUEBaiIBRw0AC0HAACECDO4CCyADKAIEIQAgA0EANgIEIAMgACABQQFqIgEQMSIADRcM4gILQcAAIQIM7AILIAEgBEYEQEHJACECDOwCCwJAA0ACQCABLQAAQQlrDhgAAqICogKpAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAgCiAgsgBCABQQFqIgFHDQALQckAIQIM7AILIAFBAWohASADQS9qLQAAQQFxDaUCIANBADYCHCADIAE2AhQgA0GXEDYCECADQQo2AgxBACECDOsCCyABIARHBEADQCABLQAAQSBHDRUgBCABQQFqIgFHDQALQfgAIQIM6wILQfgAIQIM6gILIANBAjoAKAw4C0EAIQIgA0EANgIcIANBvws2AhAgA0ECNgIMIAMgAUEBajYCFAzoAgtBACECDM4CC0ENIQIMzQILQRMhAgzMAgtBFSECDMsCC0EWIQIMygILQRghAgzJAgtBGSECDMgCC0EaIQIMxwILQRshAgzGAgtBHCECDMUCC0EdIQIMxAILQR4hAgzDAgtBHyECDMICC0EgIQIMwQILQSIhAgzAAgtBIyECDL8CC0ElIQIMvgILQeUAIQIMvQILIANBPTYCHCADIAE2AhQgAyAANgIMQQAhAgzVAgsgA0EbNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIM1AILIANBIDYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNMCCyADQRM2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzSAgsgA0ELNgIcIAMgATYCFCADQZgaNgIQIANBFTYCDEEAIQIM0QILIANBEDYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNACCyADQSA2AhwgAyABNgIUIANBpBw2AhAgA0EVNgIMQQAhAgzPAgsgA0ELNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIMzgILIANBDDYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDM0CC0EAIQIgA0EANgIcIAMgATYCFCADQd0ONgIQIANBEjYCDAzMAgsCQANAAkAgAS0AAEEKaw4EAAICAAILIAQgAUEBaiIBRw0AC0H9ASECDMwCCwJAAkAgAy0ANkEBRw0AQQAhAAJAIAMoAjgiAkUNACACKAJgIgJFDQAgAyACEQAAIQALIABFDQAgAEEVRw0BIANB/AE2AhwgAyABNgIUIANB3Bk2AhAgA0EVNgIMQQAhAgzNAgtB3AEhAgyzAgsgA0EANgIcIAMgATYCFCADQfkLNgIQIANBHzYCDEEAIQIMywILAkACQCADLQAoQQFrDgIEAQALQdsBIQIMsgILQdQBIQIMsQILIANBAjoAMUEAIQACQCADKAI4IgJFDQAgAigCACICRQ0AIAMgAhEAACEACyAARQRAQd0BIQIMsQILIABBFUcEQCADQQA2AhwgAyABNgIUIANBtAw2AhAgA0EQNgIMQQAhAgzKAgsgA0H7ATYCHCADIAE2AhQgA0GBGjYCECADQRU2AgxBACECDMkCCyABIARGBEBB+gEhAgzJAgsgAS0AAEHIAEYNASADQQE6ACgLQcABIQIMrgILQdoBIQIMrQILIAEgBEcEQCADQQw2AgggAyABNgIEQdkBIQIMrQILQfkBIQIMxQILIAEgBEYEQEH4ASECDMUCCyABLQAAQcgARw0EIAFBAWohAUHYASECDKsCCyABIARGBEBB9wEhAgzEAgsCQAJAIAEtAABBxQBrDhAABQUFBQUFBQUFBQUFBQUBBQsgAUEBaiEBQdYBIQIMqwILIAFBAWohAUHXASECDKoCC0H2ASECIAEgBEYNwgIgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABButUAai0AAEcNAyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMwwILIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAuIgBFBEBB4wEhAgyqAgsgA0H1ATYCHCADIAE2AhQgAyAANgIMQQAhAgzCAgtB9AEhAiABIARGDcECIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQbjVAGotAABHDQIgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMICCyADQYEEOwEoIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAuIgANAwwCCyADQQA2AgALQQAhAiADQQA2AhwgAyABNgIUIANB5R82AhAgA0EINgIMDL8CC0HVASECDKUCCyADQfMBNgIcIAMgATYCFCADIAA2AgxBACECDL0CC0EAIQACQCADKAI4IgJFDQAgAigCQCICRQ0AIAMgAhEAACEACyAARQ1uIABBFUcEQCADQQA2AhwgAyABNgIUIANBgg82AhAgA0EgNgIMQQAhAgy9AgsgA0GPATYCHCADIAE2AhQgA0HsGzYCECADQRU2AgxBACECDLwCCyABIARHBEAgA0ENNgIIIAMgATYCBEHTASECDKMCC0HyASECDLsCCyABIARGBEBB8QEhAgy7AgsCQAJAAkAgAS0AAEHIAGsOCwABCAgICAgICAgCCAsgAUEBaiEBQdABIQIMowILIAFBAWohAUHRASECDKICCyABQQFqIQFB0gEhAgyhAgtB8AEhAiABIARGDbkCIAMoAgAiACAEIAFraiEGIAEgAGtBAmohBQNAIAEtAAAgAEG11QBqLQAARw0EIABBAkYNAyAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy5AgtB7wEhAiABIARGDbgCIAMoAgAiACAEIAFraiEGIAEgAGtBAWohBQNAIAEtAAAgAEGz1QBqLQAARw0DIABBAUYNAiAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy4AgtB7gEhAiABIARGDbcCIAMoAgAiACAEIAFraiEGIAEgAGtBAmohBQNAIAEtAAAgAEGw1QBqLQAARw0CIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy3AgsgAygCBCEAIANCADcDACADIAAgBUEBaiIBECsiAEUNAiADQewBNgIcIAMgATYCFCADIAA2AgxBACECDLYCCyADQQA2AgALIAMoAgQhACADQQA2AgQgAyAAIAEQKyIARQ2cAiADQe0BNgIcIAMgATYCFCADIAA2AgxBACECDLQCC0HPASECDJoCC0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMtAILQc4BIQIMmgILIANB6wE2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyyAgsgASAERgRAQesBIQIMsgILIAEtAABBL0YEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQbI4NgIQIANBCDYCDEEAIQIMsQILQc0BIQIMlwILIAEgBEcEQCADQQ42AgggAyABNgIEQcwBIQIMlwILQeoBIQIMrwILIAEgBEYEQEHpASECDK8CCyABLQAAQTBrIgBB/wFxQQpJBEAgAyAAOgAqIAFBAWohAUHLASECDJYCCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNlwIgA0HoATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgsgASAERgRAQecBIQIMrgILAkAgAS0AAEEuRgRAIAFBAWohAQwBCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNmAIgA0HmATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgtBygEhAgyUAgsgASAERgRAQeUBIQIMrQILQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNAiADQeIBNgIcIAMgATYCFCADIAA2AgxBACECDK8CCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNmgIgA0HjATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZgCIANB5AE2AhwgAyABNgIUIAMgADYCDAytAgtByQEhAgyTAgtBACEAAkAgAygCOCICRQ0AIAIoAkQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0GkDTYCECADQSE2AgxBACECDK0CC0HIASECDJMCCyADQeEBNgIcIAMgATYCFCADQdAaNgIQIANBFTYCDEEAIQIMqwILIAEgBEYEQEHhASECDKsCCwJAIAEtAABBIEYEQCADQQA7ATQgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GZETYCECADQQk2AgxBACECDKsCC0HHASECDJECCyABIARGBEBB4AEhAgyqAgsCQCABLQAAQTBrQf8BcSICQQpJBEAgAUEBaiEBAkAgAy8BNCIAQZkzSw0AIAMgAEEKbCIAOwE0IABB/v8DcSACQf//A3NLDQAgAyAAIAJqOwE0DAILQQAhAiADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMDKsCCyADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMQQAhAgyqAgtBxgEhAgyQAgsgASAERgRAQd8BIQIMqQILAkAgAS0AAEEwa0H/AXEiAkEKSQRAIAFBAWohAQJAIAMvATQiAEGZM0sNACADIABBCmwiADsBNCAAQf7/A3EgAkH//wNzSw0AIAMgACACajsBNAwCC0EAIQIgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDAyqAgsgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDEEAIQIMqQILQcUBIQIMjwILIAEgBEYEQEHeASECDKgCCwJAIAEtAABBMGtB/wFxIgJBCkkEQCABQQFqIQECQCADLwE0IgBBmTNLDQAgAyAAQQpsIgA7ATQgAEH+/wNxIAJB//8Dc0sNACADIAAgAmo7ATQMAgtBACECIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgwMqQILIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgxBACECDKgCC0HEASECDI4CCyABIARGBEBB3QEhAgynAgsCQAJAAkACQCABLQAAQQprDhcCAwMAAwMDAwMDAwMDAwMDAwMDAwMDAQMLIAFBAWoMBQsgAUEBaiEBQcMBIQIMjwILIAFBAWohASADQS9qLQAAQQFxDQggA0EANgIcIAMgATYCFCADQY0LNgIQIANBDTYCDEEAIQIMpwILIANBADYCHCADIAE2AhQgA0GNCzYCECADQQ02AgxBACECDKYCCyABIARHBEAgA0EPNgIIIAMgATYCBEEBIQIMjQILQdwBIQIMpQILAkACQANAAkAgAS0AAEEKaw4EAgAAAwALIAQgAUEBaiIBRw0AC0HbASECDKYCCyADKAIEIQAgA0EANgIEIAMgACABEC0iAEUEQCABQQFqIQEMBAsgA0HaATYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgylAgsgAygCBCEAIANBADYCBCADIAAgARAtIgANASABQQFqCyEBQcEBIQIMigILIANB2QE2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMogILQcIBIQIMiAILIANBL2otAABBAXENASADQQA2AhwgAyABNgIUIANB5Bw2AhAgA0EZNgIMQQAhAgygAgsgASAERgRAQdkB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CyADIAU2AgAMkAILIANBADYCACAGQQFqIQFBGgw8C0HKASECIAEgBEYNjgIgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBjdUAai0AAEcNOyAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMjwILIANBADYCACAGQQFqIQFBIQw7CyABIARGBEBByQEhAgyOAgsCQAJAIAEtAABBwQBrDhQAPT09PT09PT09PT09PT09PT09AT0LIAFBAWohAUGtASECDPUBCyABQQFqIQFBsAEhAgz0AQsgASAERgRAQcgBIQIMjQILAkACQCABLQAAQdUAaw4LADw8PDw8PDw8PAE8CyABQQFqIQFBrgEhAgz0AQsgAUEBaiEBQa8BIQIM8wELQccBIQIgASAERg2LAiADKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEGE1QBqLQAARw04IABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyMAgsgA0EANgIAIAZBAWohAUEqDDgLIAEgBEYEQEHGASECDIsCCyABLQAAQdAARw04IAFBAWohAUElDDcLQcUBIQIgASAERg2JAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGB1QBqLQAARw02IABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyKAgsgA0EANgIAIAZBAWohAUEODDYLIAEgBEYEQEHEASECDIkCCyABLQAAQcUARw02IAFBAWohAUGrASECDO8BCyABIARGBEBBwwEhAgyIAgsCQAJAAkACQCABLQAAQcIAaw4PAAECOTk5OTk5OTk5OTkDOQsgAUEBaiEBQacBIQIM8QELIAFBAWohAUGoASECDPABCyABQQFqIQFBqQEhAgzvAQsgAUEBaiEBQaoBIQIM7gELQcIBIQIgASAERg2GAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEH+1ABqLQAARw0zIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyHAgsgA0EANgIAIAZBAWohAUEUDDMLQcEBIQIgASAERg2FAiADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANA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BTYCAAzsAQsgA0EANgIAIAZBAWohAUEXDBgLQaYBIQIgASAERg3qASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHB1ABqLQAARw0XIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzrAQsgA0EANgIAIAZBAWohAUEYDBcLIAEgBEYEQEGlASECDOoBCwJAAkAgAS0AAEHJAGsOBwAZGRkZGQEZCyABQQFqIQFBiwEhAgzRAQsgAUEBaiEBQYwBIQIM0AELQaQBIQIgASAERg3oASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGm1QBqLQAARw0VIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzpAQsgA0EANgIAIAZBAWohAUEJDBULQaMBIQIgASAERg3nASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGk1QBqLQAARw0UIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzoAQsgA0EANgIAIAZBAWohAUEfDBQLQaIBIQIgASAERg3mASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEG+1ABqLQAARw0TIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAznAQsgA0EANgIAIAZBAWohAUECDBMLQaEBIQIgASAERg3lASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYDQCABLQAAIABBvNQAai0AAEcNESAAQQFGDQIgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM5QELIAEgBEYEQEGgASECDOUBC0EBIAEtAABB3wBHDREaIAFBAWohAUGHASECDMsBCyADQQA2AgAgBkEBaiEBQYgBIQIMygELQZ8BIQIgASAERg3iASADKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEGE1QBqLQAARw0PIABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzjAQsgA0EANgIAIAZBAWohAUEpDA8LQZ4BIQIgASAERg3hASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEG41ABqLQAARw0OIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAziAQsgA0EANgIAIAZBAWohAUEtDA4LIAEgBEYEQEGdASECDOEBCyABLQAAQcUARw0OIAFBAWohAUGEASECDMcBCyABIARGBEBBnAEhAgzgAQsCQAJAIAEtAABBzABrDggADw8PDw8PAQ8LIAFBAWohAUGCASECDMcBCyABQQFqIQFBgwEhAgzGAQtBmwEhAiABIARGDd4BIAMoAgAiACAEIAFraiEFIAEgAGtBBGohBgJAA0AgAS0AACAAQbPUAGotAABHDQsgAEEERg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADN8BCyADQQA2AgAgBkEBaiEBQSMMCwtBmgEhAiABIARGDd0BIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbDUAGotAABHDQogAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADN4BCyADQQA2AgAgBkEBaiEBQQAMCgsgASAERgRAQZkBIQIM3QELAkACQCABLQAAQcgAaw4IAAwMDAwMDAEMCyABQQFqIQFB/QAhAgzEAQsgAUEBaiEBQYABIQIMwwELIAEgBEYEQEGYASECDNwBCwJAAkAgAS0AAEHOAGsOAwALAQsLIAFBAWohAUH+ACECDMMBCyABQQFqIQFB/wAhAgzCAQsgASAERgRAQZcBIQIM2wELIAEtAABB2QBHDQggAUEBaiEBQQgMBwtBlgEhAiABIARGDdkBIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQazUAGotAABHDQYgAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNoBCyADQQA2AgAgBkEBaiEBQQUMBgtBlQEhAiABIARGDdgBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQabUAGotAABHDQUgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNkBCyADQQA2AgAgBkEBaiEBQRYMBQtBlAEhAiABIARGDdcBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQaHVAGotAABHDQQgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNgBCyADQQA2AgAgBkEBaiEBQRAMBAsgASAERgRAQZMBIQIM1wELAkACQCABLQAAQcMAaw4MAAYGBgYGBgYGBgYBBgsgAUEBaiEBQfkAIQIMvgELIAFBAWohAUH6ACECDL0BC0GSASECIAEgBEYN1QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBoNQAai0AAEcNAiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM1gELIANBADYCACAGQQFqIQFBJAwCCyADQQA2AgAMAgsgASAERgRAQZEBIQIM1AELIAEtAABBzABHDQEgAUEBaiEBQRMLOgApIAMoAgQhACADQQA2AgQgAyAAIAEQLiIADQIMAQtBACECIANBADYCHCADIAE2AhQgA0H+HzYCECADQQY2AgwM0QELQfgAIQIMtwELIANBkAE2AhwgAyABNgIUIAMgADYCDEEAIQIMzwELQQAhAAJAIAMoAjgiAkUNACACKAJAIgJFDQAgAyACEQAAIQALIABFDQAgAEEVRg0BIANBADYCHCADIAE2AhQgA0GCDzYCECADQSA2AgxBACECDM4BC0H3ACECDLQBCyADQY8BNgIcIAMgATYCFCADQewbNgIQIANBFTYCDEEAIQIMzAELIAEgBEYEQEGPASECDMwBCwJAIAEtAABBIEYEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQZsfNgIQIANBBjYCDEEAIQIMzAELQQIhAgyyAQsDQCABLQAAQSBHDQIgBCABQQFqIgFHDQALQY4BIQIMygELIAEgBEYEQEGNASECDMoBCwJAIAEtAABBCWsOBEoAAEoAC0H1ACECDLABCyADLQApQQVGBEBB9gAhAgywAQtB9AAhAgyvAQsgASAERgRAQYwBIQIMyAELIANBEDYCCCADIAE2AgQMCgsgASAERgRAQYsBIQIMxwELAkAgAS0AAEEJaw4ERwAARwALQfMAIQIMrQELIAEgBEcEQCADQRA2AgggAyABNgIEQfEAIQIMrQELQYoBIQIMxQELAkAgASAERwRAA0AgAS0AAEGg0ABqLQAAIgBBA0cEQAJAIABBAWsOAkkABAtB8AAhAgyvAQsgBCABQQFqIgFHDQALQYgBIQIMxgELQYgBIQIMxQELIANBADYCHCADIAE2AhQgA0HbIDYCECADQQc2AgxBACECDMQBCyABIARGBEBBiQEhAgzEAQsCQAJAAkAgAS0AAEGg0gBqLQAAQQFrDgNGAgABC0HyACECDKwBCyADQQA2AhwgAyABNgIUIANBtBI2AhAgA0EHNgIMQQAhAgzEAQtB6gAhAgyqAQsgASAERwRAIAFBAWohAUHvACECDKoBC0GHASECDMIBCyAEIAEiAEYEQEGGASECDMIBCyAALQAAIgFBL0YEQCAAQQFqIQFB7gAhAgypAQsgAUEJayICQRdLDQEgACEBQQEgAnRBm4CABHENQQwBCyAEIAEiAEYEQEGFASECDMEBCyAALQAAQS9HDQAgAEEBaiEBDAMLQQAhAiADQQA2AhwgAyAANgIUIANB2yA2AhAgA0EHNgIMDL8BCwJAAkACQAJAAkADQCABLQAAQaDOAGotAAAiAEEFRwRAAkACQCAAQQFrDghHBQYHCAAEAQgLQesAIQIMrQELIAFBAWohAUHtACECDKwBCyAEIAFBAWoiAUcNAAtBhAEhAgzDAQsgAUEBagwUCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQdsANgIcIAMgATYCFCADIAA2AgxBACECDMEBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDMABCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQfoANgIcIAMgATYCFCADIAA2AgxBACECDL8BCyADQQA2AhwgAyABNgIUIANB+Q82AhAgA0EHNgIMQQAhAgy+AQsgASAERgRAQYMBIQIMvgELAkAgAS0AAEGgzgBqLQAAQQFrDgg+BAUGAAgCAwcLIAFBAWohAQtBAyECDKMBCyABQQFqDA0LQQAhAiADQQA2AhwgA0HREjYCECADQQc2AgwgAyABQQFqNgIUDLoBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQdsANgIcIAMgATYCFCADIAA2AgxBACECDLkBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDLgBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQfoANgIcIAMgATYCFCADIAA2AgxBACECDLcBCyADQQA2AhwgAyABNgIUIANB+Q82AhAgA0EHNgIMQQAhAgy2AQtB7AAhAgycAQsgASAERgRAQYIBIQIMtQELIAFBAWoMAgsgASAERgRAQYEBIQIMtAELIAFBAWoMAQsgASAERg0BIAFBAWoLIQFBBCECDJgBC0GAASECDLABCwNAIAEtAABBoMwAai0AACIAQQJHBEAgAEEBRwRAQekAIQIMmQELDDELIAQgAUEBaiIBRw0AC0H/ACECDK8BCyABIARGBEBB/gAhAgyvAQsCQCABLQAAQQlrDjcvAwYvBAYGBgYGBgYGBgYGBgYGBgYGBgUGBgIGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYABgsgAUEBagshAUEFIQIMlAELIAFBAWoMBgsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgyrAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgyqAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0H6ADYCHCADIAE2AhQgAyAANgIMQQAhAgypAQsgA0EANgIcIAMgATYCFCADQY0UNgIQIANBBzYCDEEAIQIMqAELAkACQAJAAkADQCABLQAAQaDKAGotAAAiAEEFRwRAAkAgAEEBaw4GLgMEBQYABgtB6AAhAgyUAQsgBCABQQFqIgFHDQALQf0AIQIMqwELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMqgELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMqQELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB+gA2AhwgAyABNgIUIAMgADYCDEEAIQIMqAELIANBADYCHCADIAE2AhQgA0HkCDYCECADQQc2AgxBACECDKcBCyABIARGDQEgAUEBagshAUEGIQIMjAELQfwAIQIMpAELAkACQAJAAkADQCABLQAAQaDIAGotAAAiAEEFRwRAIABBAWsOBCkCAwQFCyAEIAFBAWoiAUcNAAtB+wAhAgynAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgymAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgylAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0H6ADYCHCADIAE2AhQgAyAANgIMQQAhAgykAQsgA0EANgIcIAMgATYCFCADQbwKNgIQIANBBzYCDEEAIQIMowELQc8AIQIMiQELQdEAIQIMiAELQecAIQIMhwELIAEgBEYEQEH6ACECDKABCwJAIAEtAABBCWsOBCAAACAACyABQQFqIQFB5gAhAgyGAQsgASAERgRAQfkAIQIMnwELAkAgAS0AAEEJaw4EHwAAHwALQQAhAAJAIAMoAjgiAkUNACACKAI4IgJFDQAgAyACEQAAIQALIABFBEBB4gEhAgyGAQsgAEEVRwRAIANBADYCHCADIAE2AhQgA0HJDTYCECADQRo2AgxBACECDJ8BCyADQfgANgIcIAMgATYCFCADQeoaNgIQIANBFTYCDEEAIQIMngELIAEgBEcEQCADQQ02AgggAyABNgIEQeQAIQIMhQELQfcAIQIMnQELIAEgBEYEQEH2ACECDJ0BCwJAAkACQCABLQAAQcgAaw4LAAELCwsLCwsLCwILCyABQQFqIQFB3QAhAgyFAQsgAUEBaiEBQeAAIQIMhAELIAFBAWohAUHjACECDIMBC0H1ACECIAEgBEYNmwEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBtdUAai0AAEcNCCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMnAELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgAEQCADQfQANgIcIAMgATYCFCADIAA2AgxBACECDJwBC0HiACECDIIBC0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMnAELQeEAIQIMggELIANB8wA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyaAQsgAy0AKSIAQSNrQQtJDQkCQCAAQQZLDQBBASAAdEHKAHFFDQAMCgtBACECIANBADYCHCADIAE2AhQgA0HtCTYCECADQQg2AgwMmQELQfIAIQIgASAERg2YASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGz1QBqLQAARw0FIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyZAQsgAygCBCEAIANCADcDACADIAAgBkEBaiIBECsiAARAIANB8QA2AhwgAyABNgIUIAMgADYCDEEAIQIMmQELQd8AIQIMfwtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJkBC0HeACECDH8LIANB8AA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyXAQsgAy0AKUEhRg0GIANBADYCHCADIAE2AhQgA0GRCjYCECADQQg2AgxBACECDJYBC0HvACECIAEgBEYNlQEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBsNUAai0AAEcNAiAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMlgELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgBFDQIgA0HtADYCHCADIAE2AhQgAyAANgIMQQAhAgyVAQsgA0EANgIACyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNgAEgA0HuADYCHCADIAE2AhQgAyAANgIMQQAhAgyTAQtB3AAhAgx5C0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMkwELQdsAIQIMeQsgA0HsADYCHCADIAE2AhQgA0GAGzYCECADQRU2AgxBACECDJEBCyADLQApIgBBI0kNACAAQS5GDQAgA0EANgIcIAMgATYCFCADQckJNgIQIANBCDYCDEEAIQIMkAELQdoAIQIMdgsgASAERgRAQesAIQIMjwELAkAgAS0AAEEvRgRAIAFBAWohAQwBCyAD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ciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBFeHBlY3RlZCBMRiBhZnRlciBoZWFkZXJzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3Byb3RvY29sX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fcHJvdG9jb2wARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgAVHJhbnNmZXItRW5jb2RpbmcgY2FuJ3QgYmUgcHJlc2VudCB3aXRoIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgc2l6ZQBFeHBlY3RlZCBMRiBhZnRlciBjaHVuayBzaXplAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBVbmV4cGVjdGVkIHdoaXRlc3BhY2UgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBleHRlbnNpb24gdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIHF1b3RlZC1wYWlyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fcHJvdG9jb2xfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciByZXNwb25zZSBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIG5hbWUASW52YWxpZCBzdGF0dXMgY29kZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGRhdGEARXhwZWN0ZWQgTEYgYWZ0ZXIgY2h1bmsgZGF0YQBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AARGF0YSBhZnRlciBgQ29ubmVjdGlvbjogY2xvc2VgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBRVUVSWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAEV4cGVjdGVkIExGIGFmdGVyIENSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX1BST1RPQ09MX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8sIFJUU1AvIG9yIElDRS8A5xUAAK8VAACkEgAAkhoAACYWAACeFAAA2xkAAHkVAAB+EgAA/hQAADYVAAALFgAA2BYAAPMSAABCGAAArBYAABIVAAAUFwAA7xcAAEgUAABxFwAAshoAAGsZAAB+GQAANRQAAIIaAABEFwAA/RYAAB4YAACHFwAAqhkAAJMSAAAHGAAALBcAAMoXAACkFwAA5xUAAOcVAABYFwAAOxgAAKASAAAtHAAAwxEAAEgRAADeEgAAQhMAAKQZAAD9EAAA9xUAAKUVAADvFgAA+BkAAEoWAABWFgAA9RUAAAoaAAAIGgAAARoAAKsVAABCEgAA1xAAAEwRAAAFGQAAVBYAAB4RAADKGQAAyBkAAE4WAAD/GAAAcRQAAPAVAADuFQAAlBkAAPwVAAC/GQAAmxkAAHwUAABDEQAAcBgAAJUUAAAnFAAAGRQAANUSAADUGQAARBYAAPcQAEG5OwsBAQBB0DsL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBuj0LBAEAAAIAQdE9C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEG6PwsEAQAAAgBB0T8LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQbDBAAsNbG9zZWVlcC1hbGl2ZQBBycEACwEBAEHgwQAL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBycMACwEBAEHgwwAL5wEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAQfHFAAteAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBB0McACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQYDIAAsgcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQpTTQ0KDQoAQanIAAsFAQIAAQMAQcDIAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanKAAsFAQIAAQMAQcDKAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanMAAsEAQAAAQBBwcwAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEGpzgALBQECAAEDAEHAzgALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEGp0AALBQEBAAEBAEHA0AALAQEAQdrQAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQanSAAsFAQEAAQEAQcDSAAsBAQBBytIACwYCAAAAAAIAQeHSAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBoNQAC50BTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFVFRQQ0VUU1BBRFRQLw==",wasmBuffer;Object.defineProperty(module,"exports",{get:()=>wasmBuffer||(wasmBuffer=Buffer2.from(wasmBase64,"base64"))})}});var require_constants3=__commonJS({"node_modules/undici/lib/web/fetch/constants.js"(exports,module){"use strict";var corsSafeListedMethods=["GET","HEAD","POST"],corsSafeListedMethodsSet=new Set(corsSafeListedMethods),nullBodyStatus=[101,204,205,304],redirectStatus=[301,302,303,307,308],redirectStatusSet=new Set(redirectStatus),badPorts=["1","7","9","11","13","15","17","19","20","21","22","23","25","37","42","43","53","69","77","79","87","95","101","102","103","104","109","110","111","113","115","117","119","123","135","137","139","143","161","179","389","427","465","512","513","514","515","526","530","531","532","540","548","554","556","563","587","601","636","989","990","993","995","1719","1720","1723","2049","3659","4045","4190","5060","5061","6000","6566","6665","6666","6667","6668","6669","6679","6697","10080"],badPortsSet=new Set(badPorts),referrerPolicyTokens=["no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"],referrerPolicy=["",...referrerPolicyTokens],referrerPolicyTokensSet=new Set(referrerPolicyTokens),requestRedirect=["follow","manual","error"],safeMethods=["GET","HEAD","OPTIONS","TRACE","QUERY"],safeMethodsSet=new Set(safeMethods),requestMode=["navigate","same-origin","no-cors","cors"],requestCredentials=["omit","same-origin","include"],requestCache=["default","no-store","reload","no-cache","force-cache","only-if-cached"],requestBodyHeader=["content-encoding","content-language","content-location","content-type","content-length"],requestDuplex=["half"],forbiddenMethods=["CONNECT","TRACE","TRACK"],forbiddenMethodsSet=new Set(forbiddenMethods),subresource=["audio","audioworklet","font","image","manifest","paintworklet","script","style","track","video","xslt",""],subresourceSet=new Set(subresource);module.exports={subresource,forbiddenMethods,requestBodyHeader,referrerPolicy,requestRedirect,requestMode,requestCredentials,requestCache,redirectStatus,corsSafeListedMethods,nullBodyStatus,safeMethods,badPorts,requestDuplex,subresourceSet,badPortsSet,redirectStatusSet,corsSafeListedMethodsSet,safeMethodsSet,forbiddenMethodsSet,referrerPolicyTokens:referrerPolicyTokensSet}}});var require_global=__commonJS({"node_modules/undici/lib/web/fetch/global.js"(exports,module){"use strict";var globalOrigin=Symbol.for("undici.globalOrigin.1");function getGlobalOrigin(){return globalThis[globalOrigin]}function setGlobalOrigin(newOrigin){if(newOrigin===void 0){Object.defineProperty(globalThis,globalOrigin,{value:void 0,writable:!0,enumerable:!1,configurable:!1});return}let parsedURL=new URL(newOrigin);if(parsedURL.protocol!=="http:"&&parsedURL.protocol!=="https:")throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`);Object.defineProperty(globalThis,globalOrigin,{value:parsedURL,writable:!0,enumerable:!1,configurable:!1})}module.exports={getGlobalOrigin,setGlobalOrigin}}});var require_encoding=__commonJS({"node_modules/undici/lib/encoding/index.js"(exports,module){"use strict";var textDecoder=new TextDecoder;function utf8DecodeBytes(buffer){return buffer.length===0?"":(buffer[0]===239&&buffer[1]===187&&buffer[2]===191&&(buffer=buffer.subarray(3)),textDecoder.decode(buffer))}module.exports={utf8DecodeBytes}}});var require_infra=__commonJS({"node_modules/undici/lib/web/infra/index.js"(exports,module){"use strict";var assert=__require("node:assert"),{utf8DecodeBytes}=require_encoding();function collectASequenceOfCodePoints(condition,input2,position){let result2="";for(;position.position<input2.length&&condition(input2[position.position]);)result2+=input2[position.position],position.position++;return result2}function collectASequenceOfCodePointsFast(char,input2,position){let idx=input2.indexOf(char,position.position),start=position.position;return idx===-1?(position.position=input2.length,input2.slice(start)):(position.position=idx,input2.slice(start,position.position))}var ASCII_WHITESPACE_REPLACE_REGEX=/[\u0009\u000A\u000C\u000D\u0020]/g;function forgivingBase64(data){data=data.replace(ASCII_WHITESPACE_REPLACE_REGEX,"");let dataLength=data.length;if(dataLength%4===0&&data.charCodeAt(dataLength-1)===61&&(--dataLength,data.charCodeAt(dataLength-1)===61&&--dataLength),dataLength%4===1||/[^+/0-9A-Za-z]/.test(data.length===dataLength?data:data.substring(0,dataLength)))return"failure";let buffer=Buffer.from(data,"base64");return new Uint8Array(buffer.buffer,buffer.byteOffset,buffer.byteLength)}function isASCIIWhitespace(char){return char===9||char===10||char===12||char===13||char===32}function isomorphicDecode(input2){let length=input2.length;if(65535>length)return String.fromCharCode.apply(null,input2);let result2="",i=0,addition=65535;for(;i<length;)i+addition>length&&(addition=length-i),result2+=String.fromCharCode.apply(null,input2.subarray(i,i+=addition));return result2}var invalidIsomorphicEncodeValueRegex=/[^\x00-\xFF]/;function isomorphicEncode(input2){return assert(!invalidIsomorphicEncodeValueRegex.test(input2)),input2}function parseJSONFromBytes(bytes){return JSON.parse(utf8DecodeBytes(bytes))}function removeASCIIWhitespace(str2,leading=!0,trailing=!0){return removeChars(str2,leading,trailing,isASCIIWhitespace)}function removeChars(str2,leading,trailing,predicate){let lead=0,trail=str2.length-1;if(leading)for(;lead<str2.length&&predicate(str2.charCodeAt(lead));)lead++;if(trailing)for(;trail>0&&predicate(str2.charCodeAt(trail));)trail--;return lead===0&&trail===str2.length-1?str2:str2.slice(lead,trail+1)}function serializeJavascriptValueToJSONString(value){let result2=JSON.stringify(value);if(result2===void 0)throw new TypeError("Value is not JSON serializable");return assert(typeof result2=="string"),result2}module.exports={collectASequenceOfCodePoints,collectASequenceOfCodePointsFast,forgivingBase64,isASCIIWhitespace,isomorphicDecode,isomorphicEncode,parseJSONFromBytes,removeASCIIWhitespace,removeChars,serializeJavascriptValueToJSONString}}});var require_data_url=__commonJS({"node_modules/undici/lib/web/fetch/data-url.js"(exports,module){"use strict";var assert=__require("node:assert"),{forgivingBase64,collectASequenceOfCodePoints,collectASequenceOfCodePointsFast,isomorphicDecode,removeASCIIWhitespace,removeChars}=require_infra(),encoder2=new TextEncoder,HTTP_TOKEN_CODEPOINTS=/^[-!#$%&'*+.^_|~A-Za-z0-9]+$/u,HTTP_WHITESPACE_REGEX=/[\u000A\u000D\u0009\u0020]/u,HTTP_QUOTED_STRING_TOKENS=/^[\u0009\u0020-\u007E\u0080-\u00FF]+$/u;function dataURLProcessor(dataURL){assert(dataURL.protocol==="data:");let input2=URLSerializer(dataURL,!0);input2=input2.slice(5);let position={position:0},mimeType=collectASequenceOfCodePointsFast(",",input2,position),mimeTypeLength=mimeType.length;if(mimeType=removeASCIIWhitespace(mimeType,!0,!0),position.position>=input2.length)return"failure";position.position++;let encodedBody=input2.slice(mimeTypeLength+1),body=stringPercentDecode(encodedBody);if(/;(?:\u0020*)base64$/ui.test(mimeType)){let stringBody=isomorphicDecode(body);if(body=forgivingBase64(stringBody),body==="failure")return"failure";mimeType=mimeType.slice(0,-6),mimeType=mimeType.replace(/(\u0020+)$/u,""),mimeType=mimeType.slice(0,-1)}mimeType.startsWith(";")&&(mimeType="text/plain"+mimeType);let mimeTypeRecord=parseMIMEType(mimeType);return mimeTypeRecord==="failure"&&(mimeTypeRecord=parseMIMEType("text/plain;charset=US-ASCII")),{mimeType:mimeTypeRecord,body}}function URLSerializer(url,excludeFragment=!1){if(!excludeFragment)return url.href;let href=url.href,hashLength=url.hash.length,serialized=hashLength===0?href:href.substring(0,href.length-hashLength);return!hashLength&&href.endsWith("#")?serialized.slice(0,-1):serialized}function stringPercentDecode(input2){let bytes=encoder2.encode(input2);return percentDecode(bytes)}function isHexCharByte(byte){return byte>=48&&byte<=57||byte>=65&&byte<=70||byte>=97&&byte<=102}function hexByteToNumber(byte){return byte>=48&&byte<=57?byte-48:(byte&223)-55}function percentDecode(input2){let length=input2.length,output=new Uint8Array(length),j=0,i=0;for(;i<length;){let byte=input2[i];byte!==37?output[j++]=byte:byte===37&&!(isHexCharByte(input2[i+1])&&isHexCharByte(input2[i+2]))?output[j++]=37:(output[j++]=hexByteToNumber(input2[i+1])<<4|hexByteToNumber(input2[i+2]),i+=2),++i}return length===j?output:output.subarray(0,j)}function parseMIMEType(input2){input2=removeHTTPWhitespace(input2,!0,!0);let position={position:0},type=collectASequenceOfCodePointsFast("/",input2,position);if(type.length===0||!HTTP_TOKEN_CODEPOINTS.test(type)||position.position>=input2.length)return"failure";position.position++;let subtype=collectASequenceOfCodePointsFast(";",input2,position);if(subtype=removeHTTPWhitespace(subtype,!1,!0),subtype.length===0||!HTTP_TOKEN_CODEPOINTS.test(subtype))return"failure";let typeLowercase=type.toLowerCase(),subtypeLowercase=subtype.toLowerCase(),mimeType={type:typeLowercase,subtype:subtypeLowercase,parameters:new Map,essence:`${typeLowercase}/${subtypeLowercase}`};for(;position.position<input2.length;){position.position++,collectASequenceOfCodePoints(char=>HTTP_WHITESPACE_REGEX.test(char),input2,position);let parameterName=collectASequenceOfCodePoints(char=>char!==";"&&char!=="=",input2,position);if(parameterName=parameterName.toLowerCase(),position.position<input2.length){if(input2[position.position]===";")continue;position.position++}if(position.position>=input2.length)break;let parameterValue=null;if(input2[position.position]==='"')parameterValue=collectAnHTTPQuotedString(input2,position,!0),collectASequenceOfCodePointsFast(";",input2,position);else if(parameterValue=collectASequenceOfCodePointsFast(";",input2,position),parameterValue=removeHTTPWhitespace(parameterValue,!1,!0),parameterValue.length===0)continue;parameterName.length!==0&&HTTP_TOKEN_CODEPOINTS.test(parameterName)&&(parameterValue.length===0||HTTP_QUOTED_STRING_TOKENS.test(parameterValue))&&!mimeType.parameters.has(parameterName)&&mimeType.parameters.set(parameterName,parameterValue)}return mimeType}function collectAnHTTPQuotedString(input2,position,extractValue=!1){let positionStart=position.position,value="";for(assert(input2[position.position]==='"'),position.position++;value+=collectASequenceOfCodePoints(char=>char!=='"'&&char!=="\\",input2,position),!(position.position>=input2.length);){let quoteOrBackslash=input2[position.position];if(position.position++,quoteOrBackslash==="\\"){if(position.position>=input2.length){value+="\\";break}value+=input2[position.position],position.position++}else{assert(quoteOrBackslash==='"');break}}return extractValue?value:input2.slice(positionStart,position.position)}function serializeAMimeType(mimeType){assert(mimeType!=="failure");let{parameters,essence}=mimeType,serialization=essence;for(let[name,value]of parameters.entries())serialization+=";",serialization+=name,serialization+="=",HTTP_TOKEN_CODEPOINTS.test(value)||(value=value.replace(/[\\"]/ug,"\\$&"),value='"'+value,value+='"'),serialization+=value;return serialization}function isHTTPWhiteSpace(char){return char===13||char===10||char===9||char===32}function removeHTTPWhitespace(str2,leading=!0,trailing=!0){return removeChars(str2,leading,trailing,isHTTPWhiteSpace)}function minimizeSupportedMimeType(mimeType){switch(mimeType.essence){case"application/ecmascript":case"application/javascript":case"application/x-ecmascript":case"application/x-javascript":case"text/ecmascript":case"text/javascript":case"text/javascript1.0":case"text/javascript1.1":case"text/javascript1.2":case"text/javascript1.3":case"text/javascript1.4":case"text/javascript1.5":case"text/jscript":case"text/livescript":case"text/x-ecmascript":case"text/x-javascript":return"text/javascript";case"application/json":case"text/json":return"application/json";case"image/svg+xml":return"image/svg+xml";case"text/xml":case"application/xml":return"application/xml"}return mimeType.subtype.endsWith("+json")?"application/json":mimeType.subtype.endsWith("+xml")?"application/xml":""}module.exports={dataURLProcessor,URLSerializer,stringPercentDecode,parseMIMEType,collectAnHTTPQuotedString,serializeAMimeType,removeHTTPWhitespace,minimizeSupportedMimeType,HTTP_TOKEN_CODEPOINTS}}});var require_webidl=__commonJS({"node_modules/undici/lib/web/webidl/index.js"(exports,module){"use strict";var assert=__require("node:assert"),{types:types2,inspect}=__require("node:util"),{markAsUncloneable}=__require("node:worker_threads"),UNDEFINED=1,BOOLEAN=2,STRING=3,SYMBOL=4,NUMBER=5,BIGINT=6,NULL=7,OBJECT=8,FunctionPrototypeSymbolHasInstance=Function.call.bind(Function.prototype[Symbol.hasInstance]),webidl={converters:{},util:{},errors:{},is:{}};webidl.errors.exception=function(message){return new TypeError(`${message.header}: ${message.message}`)};webidl.errors.conversionFailed=function(opts){let plural2=opts.types.length===1?"":" one of",message=`${opts.argument} could not be converted to${plural2}: ${opts.types.join(", ")}.`;return webidl.errors.exception({header:opts.prefix,message})};webidl.errors.invalidArgument=function(context){return webidl.errors.exception({header:context.prefix,message:`"${context.value}" is an invalid ${context.type}.`})};webidl.brandCheck=function(V,I){if(!FunctionPrototypeSymbolHasInstance(I,V)){let err=new TypeError("Illegal invocation");throw err.code="ERR_INVALID_THIS",err}};webidl.brandCheckMultiple=function(List){let prototypes=List.map(c=>webidl.util.MakeTypeAssertion(c));return V=>{if(prototypes.every(typeCheck=>!typeCheck(V))){let err=new TypeError("Illegal invocation");throw err.code="ERR_INVALID_THIS",err}}};webidl.argumentLengthCheck=function({length},min,ctx){if(length<min)throw webidl.errors.exception({message:`${min} argument${min!==1?"s":""} required, but${length?" only":""} ${length} found.`,header:ctx})};webidl.illegalConstructor=function(){throw webidl.errors.exception({header:"TypeError",message:"Illegal constructor"})};webidl.util.MakeTypeAssertion=function(I){return O=>FunctionPrototypeSymbolHasInstance(I,O)};webidl.util.Type=function(V){switch(typeof V){case"undefined":return UNDEFINED;case"boolean":return BOOLEAN;case"string":return STRING;case"symbol":return SYMBOL;case"number":return NUMBER;case"bigint":return BIGINT;case"function":case"object":return V===null?NULL:OBJECT}};webidl.util.Types={UNDEFINED,BOOLEAN,STRING,SYMBOL,NUMBER,BIGINT,NULL,OBJECT};webidl.util.TypeValueToString=function(o){switch(webidl.util.Type(o)){case UNDEFINED:return"Undefined";case BOOLEAN:return"Boolean";case STRING:return"String";case SYMBOL:return"Symbol";case NUMBER:return"Number";case BIGINT:return"BigInt";case NULL:return"Null";case OBJECT:return"Object"}};webidl.util.markAsUncloneable=markAsUncloneable;webidl.util.ConvertToInt=function(V,bitLength,signedness,flags){let upperBound,lowerBound;bitLength===64?(upperBound=Math.pow(2,53)-1,signedness==="unsigned"?lowerBound=0:lowerBound=Math.pow(-2,53)+1):signedness==="unsigned"?(lowerBound=0,upperBound=Math.pow(2,bitLength)-1):(lowerBound=-Math.pow(2,bitLength-1),upperBound=Math.pow(2,bitLength-1)-1);let x=Number(V);if(x===0&&(x=0),webidl.util.HasFlag(flags,webidl.attributes.EnforceRange)){if(Number.isNaN(x)||x===Number.POSITIVE_INFINITY||x===Number.NEGATIVE_INFINITY)throw webidl.errors.exception({header:"Integer conversion",message:`Could not convert ${webidl.util.Stringify(V)} to an integer.`});if(x=webidl.util.IntegerPart(x),x<lowerBound||x>upperBound)throw webidl.errors.exception({header:"Integer conversion",message:`Value must be between ${lowerBound}-${upperBound}, got ${x}.`});return x}return!Number.isNaN(x)&&webidl.util.HasFlag(flags,webidl.attributes.Clamp)?(x=Math.min(Math.max(x,lowerBound),upperBound),Math.floor(x)%2===0?x=Math.floor(x):x=Math.ceil(x),x):Number.isNaN(x)||x===0&&Object.is(0,x)||x===Number.POSITIVE_INFINITY||x===Number.NEGATIVE_INFINITY?0:(x=webidl.util.IntegerPart(x),x=x%Math.pow(2,bitLength),signedness==="signed"&&x>=Math.pow(2,bitLength-1)?x-Math.pow(2,bitLength):x)};webidl.util.IntegerPart=function(n){let r=Math.floor(Math.abs(n));return n<0?-1*r:r};webidl.util.Stringify=function(V){switch(webidl.util.Type(V)){case SYMBOL:return`Symbol(${V.description})`;case OBJECT:return inspect(V);case STRING:return`"${V}"`;case BIGINT:return`${V}n`;default:return`${V}`}};webidl.util.IsResizableArrayBuffer=function(V){if(types2.isArrayBuffer(V))return V.resizable;if(types2.isSharedArrayBuffer(V))return V.growable;throw webidl.errors.exception({header:"IsResizableArrayBuffer",message:`"${webidl.util.Stringify(V)}" is not an array buffer.`})};webidl.util.HasFlag=function(flags,attributes){return typeof flags=="number"&&(flags&attributes)===attributes};webidl.sequenceConverter=function(converter){return(V,prefix,argument,Iterable)=>{if(webidl.util.Type(V)!==OBJECT)throw webidl.errors.exception({header:prefix,message:`${argument} (${webidl.util.Stringify(V)}) is not iterable.`});let method=typeof Iterable=="function"?Iterable():V?.[Symbol.iterator]?.(),seq=[],index=0;if(method===void 0||typeof method.next!="function")throw webidl.errors.exception({header:prefix,message:`${argument} is not iterable.`});for(;;){let{done,value}=method.next();if(done)break;seq.push(converter(value,prefix,`${argument}[${index++}]`))}return seq}};webidl.recordConverter=function(keyConverter,valueConverter){return(O,prefix,argument)=>{if(webidl.util.Type(O)!==OBJECT)throw webidl.errors.exception({header:prefix,message:`${argument} ("${webidl.util.TypeValueToString(O)}") is not an Object.`});let result2={};if(!types2.isProxy(O)){let keys2=[...Object.getOwnPropertyNames(O),...Object.getOwnPropertySymbols(O)];for(let key of keys2){let keyName=webidl.util.Stringify(key),typedKey=keyConverter(key,prefix,`Key ${keyName} in ${argument}`),typedValue=valueConverter(O[key],prefix,`${argument}[${keyName}]`);result2[typedKey]=typedValue}return result2}let keys=Reflect.ownKeys(O);for(let key of keys)if(Reflect.getOwnPropertyDescriptor(O,key)?.enumerable){let typedKey=keyConverter(key,prefix,argument),typedValue=valueConverter(O[key],prefix,argument);result2[typedKey]=typedValue}return result2}};webidl.interfaceConverter=function(TypeCheck,name){return(V,prefix,argument)=>{if(!TypeCheck(V))throw webidl.errors.exception({header:prefix,message:`Expected ${argument} ("${webidl.util.Stringify(V)}") to be an instance of ${name}.`});return V}};webidl.dictionaryConverter=function(converters){return converters.sort((a,b)=>(a.key>b.key)-(a.key<b.key)),(dictionary,prefix,argument)=>{let dict={};if(dictionary!=null&&webidl.util.Type(dictionary)!==OBJECT)throw webidl.errors.exception({header:prefix,message:`Expected ${dictionary} to be one of: Null, Undefined, Object.`});for(let options of converters){let{key,defaultValue,required,converter}=options;if(required===!0&&(dictionary==null||!Object.hasOwn(dictionary,key)))throw webidl.errors.exception({header:prefix,message:`Missing required key "${key}".`});let value=dictionary?.[key],hasDefault=defaultValue!==void 0;if(hasDefault&&value===void 0&&(value=defaultValue()),required||hasDefault||value!==void 0){if(value=converter(value,prefix,`${argument}.${key}`),options.allowedValues&&!options.allowedValues.includes(value))throw webidl.errors.exception({header:prefix,message:`${value} is not an accepted type. Expected one of ${options.allowedValues.join(", ")}.`});dict[key]=value}}return dict}};webidl.nullableConverter=function(converter){return(V,prefix,argument)=>V===null?V:converter(V,prefix,argument)};webidl.is.USVString=function(value){return typeof value=="string"&&value.isWellFormed()};webidl.is.ReadableStream=webidl.util.MakeTypeAssertion(ReadableStream);webidl.is.Blob=webidl.util.MakeTypeAssertion(Blob);webidl.is.URLSearchParams=webidl.util.MakeTypeAssertion(URLSearchParams);webidl.is.File=webidl.util.MakeTypeAssertion(File);webidl.is.URL=webidl.util.MakeTypeAssertion(URL);webidl.is.AbortSignal=webidl.util.MakeTypeAssertion(AbortSignal);webidl.is.MessagePort=webidl.util.MakeTypeAssertion(MessagePort);webidl.is.BufferSource=function(V){return types2.isArrayBuffer(V)||ArrayBuffer.isView(V)&&types2.isArrayBuffer(V.buffer)};webidl.util.getCopyOfBytesHeldByBufferSource=function(bufferSource){let jsBufferSource=bufferSource,jsArrayBuffer=jsBufferSource,offset=0,length=0;if(types2.isTypedArray(jsBufferSource)||types2.isDataView(jsBufferSource)?(jsArrayBuffer=jsBufferSource.buffer,offset=jsBufferSource.byteOffset,length=jsBufferSource.byteLength):(assert(types2.isAnyArrayBuffer(jsBufferSource)),length=jsBufferSource.byteLength),jsArrayBuffer.detached)return new Uint8Array(0);let bytes=new Uint8Array(length),view=new Uint8Array(jsArrayBuffer,offset,length);return bytes.set(view),bytes};webidl.converters.DOMString=function(V,prefix,argument,flags){if(V===null&&webidl.util.HasFlag(flags,webidl.attributes.LegacyNullToEmptyString))return"";if(typeof V=="symbol")throw webidl.errors.exception({header:prefix,message:`${argument} is a symbol, which cannot be converted to a DOMString.`});return String(V)};webidl.converters.ByteString=function(V,prefix,argument){if(typeof V=="symbol")throw webidl.errors.exception({header:prefix,message:`${argument} is a symbol, which cannot be converted to a ByteString.`});let x=String(V);for(let index=0;index<x.length;index++)if(x.charCodeAt(index)>255)throw new TypeError(`Cannot convert argument to a ByteString because the character at index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.`);return x};webidl.converters.USVString=function(value){return typeof value=="string"?value.toWellFormed():`${value}`.toWellFormed()};webidl.converters.boolean=function(V){return!!V};webidl.converters.any=function(V){return V};webidl.converters["long long"]=function(V,prefix,argument){return webidl.util.ConvertToInt(V,64,"signed",0,prefix,argument)};webidl.converters["unsigned long long"]=function(V,prefix,argument){return webidl.util.ConvertToInt(V,64,"unsigned",0,prefix,argument)};webidl.converters["unsigned long"]=function(V,prefix,argument){return webidl.util.ConvertToInt(V,32,"unsigned",0,prefix,argument)};webidl.converters["unsigned short"]=function(V,prefix,argument,flags){return webidl.util.ConvertToInt(V,16,"unsigned",flags,prefix,argument)};webidl.converters.ArrayBuffer=function(V,prefix,argument,flags){if(webidl.util.Type(V)!==OBJECT||!types2.isArrayBuffer(V))throw webidl.errors.conversionFailed({prefix,argument:`${argument} ("${webidl.util.Stringify(V)}")`,types:["ArrayBuffer"]});if(!webidl.util.HasFlag(flags,webidl.attributes.AllowResizable)&&webidl.util.IsResizableArrayBuffer(V))throw webidl.errors.exception({header:prefix,message:`${argument} cannot be a resizable ArrayBuffer.`});return V};webidl.converters.SharedArrayBuffer=function(V,prefix,argument,flags){if(webidl.util.Type(V)!==OBJECT||!types2.isSharedArrayBuffer(V))throw webidl.errors.conversionFailed({prefix,argument:`${argument} ("${webidl.util.Stringify(V)}")`,types:["SharedArrayBuffer"]});if(!webidl.util.HasFlag(flags,webidl.attributes.AllowResizable)&&webidl.util.IsResizableArrayBuffer(V))throw webidl.errors.exception({header:prefix,message:`${argument} cannot be a resizable SharedArrayBuffer.`});return V};webidl.converters.TypedArray=function(V,T,prefix,argument,flags){if(webidl.util.Type(V)!==OBJECT||!types2.isTypedArray(V)||V.constructor.name!==T.name)throw webidl.errors.conversionFailed({prefix,argument:`${argument} ("${webidl.util.Stringify(V)}")`,types:[T.name]});if(!webidl.util.HasFlag(flags,webidl.attributes.AllowShared)&&types2.isSharedArrayBuffer(V.buffer))throw webidl.errors.exception({header:prefix,message:`${argument} cannot be a view on a shared array buffer.`});if(!webidl.util.HasFlag(flags,webidl.attributes.AllowResizable)&&webidl.util.IsResizableArrayBuffer(V.buffer))throw webidl.errors.exception({header:prefix,message:`${argument} cannot be a view on a resizable array buffer.`});return V};webidl.converters.DataView=function(V,prefix,argument,flags){if(webidl.util.Type(V)!==OBJECT||!types2.isDataView(V))throw webidl.errors.conversionFailed({prefix,argument:`${argument} ("${webidl.util.Stringify(V)}")`,types:["DataView"]});if(!webidl.util.HasFlag(flags,webidl.attributes.AllowShared)&&types2.isSharedArrayBuffer(V.buffer))throw webidl.errors.exception({header:prefix,message:`${argument} cannot be a view on a shared array buffer.`});if(!webidl.util.HasFlag(flags,webidl.attributes.AllowResizable)&&webidl.util.IsResizableArrayBuffer(V.buffer))throw webidl.errors.exception({header:prefix,message:`${argument} cannot be a view on a resizable array buffer.`});return V};webidl.converters.ArrayBufferView=function(V,prefix,argument,flags){if(webidl.util.Type(V)!==OBJECT||!types2.isArrayBufferView(V))throw webidl.errors.conversionFailed({prefix,argument:`${argument} ("${webidl.util.Stringify(V)}")`,types:["ArrayBufferView"]});if(!webidl.util.HasFlag(flags,webidl.attributes.AllowShared)&&types2.isSharedArrayBuffer(V.buffer))throw webidl.errors.exception({header:prefix,message:`${argument} cannot be a view on a shared array buffer.`});if(!webidl.util.HasFlag(flags,webidl.attributes.AllowResizable)&&webidl.util.IsResizableArrayBuffer(V.buffer))throw webidl.errors.exception({header:prefix,message:`${argument} cannot be a view on a resizable array buffer.`});return V};webidl.converters.BufferSource=function(V,prefix,argument,flags){if(types2.isArrayBuffer(V))return webidl.converters.ArrayBuffer(V,prefix,argument,flags);if(types2.isArrayBufferView(V))return flags&=~webidl.attributes.AllowShared,webidl.converters.ArrayBufferView(V,prefix,argument,flags);throw types2.isSharedArrayBuffer(V)?webidl.errors.exception({header:prefix,message:`${argument} cannot be a SharedArrayBuffer.`}):webidl.errors.conversionFailed({prefix,argument:`${argument} ("${webidl.util.Stringify(V)}")`,types:["ArrayBuffer","ArrayBufferView"]})};webidl.converters.AllowSharedBufferSource=function(V,prefix,argument,flags){if(types2.isArrayBuffer(V))return webidl.converters.ArrayBuffer(V,prefix,argument,flags);if(types2.isSharedArrayBuffer(V))return webidl.converters.SharedArrayBuffer(V,prefix,argument,flags);if(types2.isArrayBufferView(V))return flags|=webidl.attributes.AllowShared,webidl.converters.ArrayBufferView(V,prefix,argument,flags);throw webidl.errors.conversionFailed({prefix,argument:`${argument} ("${webidl.util.Stringify(V)}")`,types:["ArrayBuffer","SharedArrayBuffer","ArrayBufferView"]})};webidl.converters["sequence<ByteString>"]=webidl.sequenceConverter(webidl.converters.ByteString);webidl.converters["sequence<sequence<ByteString>>"]=webidl.sequenceConverter(webidl.converters["sequence<ByteString>"]);webidl.converters["record<ByteString, ByteString>"]=webidl.recordConverter(webidl.converters.ByteString,webidl.converters.ByteString);webidl.converters.Blob=webidl.interfaceConverter(webidl.is.Blob,"Blob");webidl.converters.AbortSignal=webidl.interfaceConverter(webidl.is.AbortSignal,"AbortSignal");webidl.converters.EventHandlerNonNull=function(V){return webidl.util.Type(V)!==OBJECT?null:typeof V=="function"?V:()=>{}};webidl.attributes={Clamp:1,EnforceRange:2,AllowShared:4,AllowResizable:8,LegacyNullToEmptyString:16};module.exports={webidl}}});var require_util2=__commonJS({"node_modules/undici/lib/web/fetch/util.js"(exports,module){"use strict";var{Transform}=__require("node:stream"),zlib2=__require("node:zlib"),{redirectStatusSet,referrerPolicyTokens,badPortsSet}=require_constants3(),{getGlobalOrigin}=require_global(),{collectAnHTTPQuotedString,parseMIMEType}=require_data_url(),{performance:performance2}=__require("node:perf_hooks"),{ReadableStreamFrom,isValidHTTPToken,normalizedMethodRecordsBase}=require_util(),assert=__require("node:assert"),{isUint8Array}=__require("node:util/types"),{webidl}=require_webidl(),{isomorphicEncode,collectASequenceOfCodePoints,removeChars}=require_infra();function responseURL(response){let urlList=response.urlList,length=urlList.length;return length===0?null:urlList[length-1].toString()}function responseLocationURL(response,requestFragment){if(!redirectStatusSet.has(response.status))return null;let location=response.headersList.get("location",!0);return location!==null&&isValidHeaderValue(location)&&(isValidEncodedURL(location)||(location=normalizeBinaryStringToUtf8(location)),location=new URL(location,responseURL(response))),location&&!location.hash&&(location.hash=requestFragment),location}function isValidEncodedURL(url){for(let i=0;i<url.length;++i){let code=url.charCodeAt(i);if(code>126||code<32)return!1}return!0}function normalizeBinaryStringToUtf8(value){return Buffer.from(value,"binary").toString("utf8")}function requestCurrentURL(request){return request.urlList[request.urlList.length-1]}function requestBadPort(request){let url=requestCurrentURL(request);return urlIsHttpHttpsScheme(url)&&badPortsSet.has(url.port)?"blocked":"allowed"}function isErrorLike(object2){return object2 instanceof Error||object2?.constructor?.name==="Error"||object2?.constructor?.name==="DOMException"}function isValidReasonPhrase(statusText){for(let i=0;i<statusText.length;++i){let c=statusText.charCodeAt(i);if(!(c===9||c>=32&&c<=126||c>=128&&c<=255))return!1}return!0}var isValidHeaderName=isValidHTTPToken;function isValidHeaderValue(potentialValue){return(potentialValue[0]===" "||potentialValue[0]===" "||potentialValue[potentialValue.length-1]===" "||potentialValue[potentialValue.length-1]===" "||potentialValue.includes(`
3
+ `)||potentialValue.includes("\r")||potentialValue.includes("\0"))===!1}function parseReferrerPolicy(actualResponse){let policyHeader=(actualResponse.headersList.get("referrer-policy",!0)??"").split(","),policy="";if(policyHeader.length)for(let i=policyHeader.length;i!==0;i--){let token=policyHeader[i-1].trim();if(referrerPolicyTokens.has(token)){policy=token;break}}return policy}function setRequestReferrerPolicyOnRedirect(request,actualResponse){let policy=parseReferrerPolicy(actualResponse);policy!==""&&(request.referrerPolicy=policy)}function crossOriginResourcePolicyCheck(){return"allowed"}function corsCheck(){return"success"}function TAOCheck(){return"success"}function appendFetchMetadata(httpRequest){if(!isURLPotentiallyTrustworthy(requestCurrentURL(httpRequest)))return;let header=null;header=httpRequest.mode,httpRequest.headersList.set("sec-fetch-mode",header,!0)}function appendRequestOriginHeader(request){let serializedOrigin=request.origin;if(!(serializedOrigin==="client"||serializedOrigin===void 0)){if(request.responseTainting==="cors"||request.mode==="websocket")request.headersList.append("origin",serializedOrigin,!0);else if(request.method!=="GET"&&request.method!=="HEAD"){switch(request.referrerPolicy){case"no-referrer":serializedOrigin=null;break;case"no-referrer-when-downgrade":case"strict-origin":case"strict-origin-when-cross-origin":request.origin&&urlHasHttpsScheme(request.origin)&&!urlHasHttpsScheme(requestCurrentURL(request))&&(serializedOrigin=null);break;case"same-origin":sameOrigin(request,requestCurrentURL(request))||(serializedOrigin=null);break;default:}request.headersList.append("origin",serializedOrigin,!0)}}}function coarsenTime(timestamp,crossOriginIsolatedCapability){return timestamp}function clampAndCoarsenConnectionTimingInfo(connectionTimingInfo,defaultStartTime,crossOriginIsolatedCapability){return!connectionTimingInfo?.startTime||connectionTimingInfo.startTime<defaultStartTime?{domainLookupStartTime:defaultStartTime,domainLookupEndTime:defaultStartTime,connectionStartTime:defaultStartTime,connectionEndTime:defaultStartTime,secureConnectionStartTime:defaultStartTime,ALPNNegotiatedProtocol:connectionTimingInfo?.ALPNNegotiatedProtocol}:{domainLookupStartTime:coarsenTime(connectionTimingInfo.domainLookupStartTime,crossOriginIsolatedCapability),domainLookupEndTime:coarsenTime(connectionTimingInfo.domainLookupEndTime,crossOriginIsolatedCapability),connectionStartTime:coarsenTime(connectionTimingInfo.connectionStartTime,crossOriginIsolatedCapability),connectionEndTime:coarsenTime(connectionTimingInfo.connectionEndTime,crossOriginIsolatedCapability),secureConnectionStartTime:coarsenTime(connectionTimingInfo.secureConnectionStartTime,crossOriginIsolatedCapability),ALPNNegotiatedProtocol:connectionTimingInfo.ALPNNegotiatedProtocol}}function coarsenedSharedCurrentTime(crossOriginIsolatedCapability){return coarsenTime(performance2.now(),crossOriginIsolatedCapability)}function createOpaqueTimingInfo(timingInfo){return{startTime:timingInfo.startTime??0,redirectStartTime:0,redirectEndTime:0,postRedirectStartTime:timingInfo.startTime??0,finalServiceWorkerStartTime:0,finalNetworkResponseStartTime:0,finalNetworkRequestStartTime:0,endTime:0,encodedBodySize:0,decodedBodySize:0,finalConnectionTimingInfo:null}}function makePolicyContainer(){return{referrerPolicy:"strict-origin-when-cross-origin"}}function clonePolicyContainer(policyContainer){return{referrerPolicy:policyContainer.referrerPolicy}}function determineRequestsReferrer(request){let policy=request.referrerPolicy;assert(policy);let referrerSource=null;if(request.referrer==="client"){let globalOrigin=getGlobalOrigin();if(!globalOrigin||globalOrigin.origin==="null")return"no-referrer";referrerSource=new URL(globalOrigin)}else webidl.is.URL(request.referrer)&&(referrerSource=request.referrer);let referrerURL=stripURLForReferrer(referrerSource),referrerOrigin=stripURLForReferrer(referrerSource,!0);switch(referrerURL.toString().length>4096&&(referrerURL=referrerOrigin),policy){case"no-referrer":return"no-referrer";case"origin":return referrerOrigin??stripURLForReferrer(referrerSource,!0);case"unsafe-url":return referrerURL;case"strict-origin":{let currentURL=requestCurrentURL(request);return isURLPotentiallyTrustworthy(referrerURL)&&!isURLPotentiallyTrustworthy(currentURL)?"no-referrer":referrerOrigin}case"strict-origin-when-cross-origin":{let currentURL=requestCurrentURL(request);return sameOrigin(referrerURL,currentURL)?referrerURL:isURLPotentiallyTrustworthy(referrerURL)&&!isURLPotentiallyTrustworthy(currentURL)?"no-referrer":referrerOrigin}case"same-origin":return sameOrigin(request,referrerURL)?referrerURL:"no-referrer";case"origin-when-cross-origin":return sameOrigin(request,referrerURL)?referrerURL:referrerOrigin;case"no-referrer-when-downgrade":{let currentURL=requestCurrentURL(request);return isURLPotentiallyTrustworthy(referrerURL)&&!isURLPotentiallyTrustworthy(currentURL)?"no-referrer":referrerURL}}}function stripURLForReferrer(url,originOnly=!1){return assert(webidl.is.URL(url)),url=new URL(url),urlIsLocal(url)?"no-referrer":(url.username="",url.password="",url.hash="",originOnly===!0&&(url.pathname="",url.search=""),url)}var isPotentialleTrustworthyIPv4=RegExp.prototype.test.bind(/^127\.(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)\.){2}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)$/),isPotentiallyTrustworthyIPv6=RegExp.prototype.test.bind(/^(?:(?:0{1,4}:){7}|(?:0{1,4}:){1,6}:|::)0{0,3}1$/);function isOriginIPPotentiallyTrustworthy(origin){return origin.includes(":")?(origin[0]==="["&&origin[origin.length-1]==="]"&&(origin=origin.slice(1,-1)),isPotentiallyTrustworthyIPv6(origin)):isPotentialleTrustworthyIPv4(origin)}function isOriginPotentiallyTrustworthy(origin){return origin==null||origin==="null"?!1:(origin=new URL(origin),!!(origin.protocol==="https:"||origin.protocol==="wss:"||isOriginIPPotentiallyTrustworthy(origin.hostname)||origin.hostname==="localhost"||origin.hostname==="localhost."||origin.hostname.endsWith(".localhost")||origin.hostname.endsWith(".localhost.")||origin.protocol==="file:"))}function isURLPotentiallyTrustworthy(url){return webidl.is.URL(url)?url.href==="about:blank"||url.href==="about:srcdoc"||url.protocol==="data:"||url.protocol==="blob:"?!0:isOriginPotentiallyTrustworthy(url.origin):!1}function tryUpgradeRequestToAPotentiallyTrustworthyURL(request){}function sameOrigin(A,B){return A.origin===B.origin&&A.origin==="null"||A.protocol===B.protocol&&A.hostname===B.hostname&&A.port===B.port}function isAborted(fetchParams){return fetchParams.controller.state==="aborted"}function isCancelled(fetchParams){return fetchParams.controller.state==="aborted"||fetchParams.controller.state==="terminated"}function normalizeMethod(method){return normalizedMethodRecordsBase[method.toLowerCase()]??method}var esIteratorPrototype=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function createIterator(name,kInternalIterator,keyIndex=0,valueIndex=1){class FastIterableIterator{#target;#kind;#index;constructor(target,kind){this.#target=target,this.#kind=kind,this.#index=0}next(){if(typeof this!="object"||this===null||!(#target in this))throw new TypeError(`'next' called on an object that does not implement interface ${name} Iterator.`);let index=this.#index,values=kInternalIterator(this.#target),len=values.length;if(index>=len)return{value:void 0,done:!0};let{[keyIndex]:key,[valueIndex]:value}=values[index];this.#index=index+1;let result2;switch(this.#kind){case"key":result2=key;break;case"value":result2=value;break;case"key+value":result2=[key,value];break}return{value:result2,done:!1}}}return delete FastIterableIterator.prototype.constructor,Object.setPrototypeOf(FastIterableIterator.prototype,esIteratorPrototype),Object.defineProperties(FastIterableIterator.prototype,{[Symbol.toStringTag]:{writable:!1,enumerable:!1,configurable:!0,value:`${name} Iterator`},next:{writable:!0,enumerable:!0,configurable:!0}}),function(target,kind){return new FastIterableIterator(target,kind)}}function iteratorMixin(name,object2,kInternalIterator,keyIndex=0,valueIndex=1){let makeIterator=createIterator(name,kInternalIterator,keyIndex,valueIndex),properties={keys:{writable:!0,enumerable:!0,configurable:!0,value:function(){return webidl.brandCheck(this,object2),makeIterator(this,"key")}},values:{writable:!0,enumerable:!0,configurable:!0,value:function(){return webidl.brandCheck(this,object2),makeIterator(this,"value")}},entries:{writable:!0,enumerable:!0,configurable:!0,value:function(){return webidl.brandCheck(this,object2),makeIterator(this,"key+value")}},forEach:{writable:!0,enumerable:!0,configurable:!0,value:function(callbackfn,thisArg=globalThis){if(webidl.brandCheck(this,object2),webidl.argumentLengthCheck(arguments,1,`${name}.forEach`),typeof callbackfn!="function")throw new TypeError(`Failed to execute 'forEach' on '${name}': parameter 1 is not of type 'Function'.`);for(let{0:key,1:value}of makeIterator(this,"key+value"))callbackfn.call(thisArg,value,key,this)}}};return Object.defineProperties(object2.prototype,{...properties,[Symbol.iterator]:{writable:!0,enumerable:!1,configurable:!0,value:properties.entries.value}})}function fullyReadBody(body,processBody,processBodyError){let successSteps=processBody,errorSteps=processBodyError;try{let reader=body.stream.getReader();readAllBytes(reader,successSteps,errorSteps)}catch(e){errorSteps(e)}}function readableStreamClose(controller){try{controller.close(),controller.byobRequest?.respond(0)}catch(err){if(!err.message.includes("Controller is already closed")&&!err.message.includes("ReadableStream is already closed"))throw err}}async function readAllBytes(reader,successSteps,failureSteps){try{let bytes=[],byteLength2=0;do{let{done,value:chunk2}=await reader.read();if(done){successSteps(Buffer.concat(bytes,byteLength2));return}if(!isUint8Array(chunk2)){failureSteps(new TypeError("Received non-Uint8Array chunk"));return}bytes.push(chunk2),byteLength2+=chunk2.length}while(!0)}catch(e){failureSteps(e)}}function urlIsLocal(url){assert("protocol"in url);let protocol=url.protocol;return protocol==="about:"||protocol==="blob:"||protocol==="data:"}function urlHasHttpsScheme(url){return typeof url=="string"&&url[5]===":"&&url[0]==="h"&&url[1]==="t"&&url[2]==="t"&&url[3]==="p"&&url[4]==="s"||url.protocol==="https:"}function urlIsHttpHttpsScheme(url){assert("protocol"in url);let protocol=url.protocol;return protocol==="http:"||protocol==="https:"}function simpleRangeHeaderValue(value,allowWhitespace){let data=value;if(!data.startsWith("bytes"))return"failure";let position={position:5};if(allowWhitespace&&collectASequenceOfCodePoints(char=>char===" "||char===" ",data,position),data.charCodeAt(position.position)!==61)return"failure";position.position++,allowWhitespace&&collectASequenceOfCodePoints(char=>char===" "||char===" ",data,position);let rangeStart=collectASequenceOfCodePoints(char=>{let code=char.charCodeAt(0);return code>=48&&code<=57},data,position),rangeStartValue=rangeStart.length?Number(rangeStart):null;if(allowWhitespace&&collectASequenceOfCodePoints(char=>char===" "||char===" ",data,position),data.charCodeAt(position.position)!==45)return"failure";position.position++,allowWhitespace&&collectASequenceOfCodePoints(char=>char===" "||char===" ",data,position);let rangeEnd=collectASequenceOfCodePoints(char=>{let code=char.charCodeAt(0);return code>=48&&code<=57},data,position),rangeEndValue=rangeEnd.length?Number(rangeEnd):null;return position.position<data.length||rangeEndValue===null&&rangeStartValue===null||rangeStartValue!==null&&rangeEndValue!==null&&rangeStartValue>rangeEndValue?"failure":{rangeStartValue,rangeEndValue}}function buildContentRange(rangeStart,rangeEnd,fullLength){let contentRange="bytes ";return contentRange+=isomorphicEncode(`${rangeStart}`),contentRange+="-",contentRange+=isomorphicEncode(`${rangeEnd}`),contentRange+="/",contentRange+=isomorphicEncode(`${fullLength}`),contentRange}var InflateStream=class extends Transform{#zlibOptions;constructor(zlibOptions){super(),this.#zlibOptions=zlibOptions}_transform(chunk2,encoding,callback){if(!this._inflateStream){if(chunk2.length===0){callback();return}this._inflateStream=(chunk2[0]&15)===8?zlib2.createInflate(this.#zlibOptions):zlib2.createInflateRaw(this.#zlibOptions),this._inflateStream.on("data",this.push.bind(this)),this._inflateStream.on("end",()=>this.push(null)),this._inflateStream.on("error",err=>this.destroy(err))}this._inflateStream.write(chunk2,encoding,callback)}_final(callback){this._inflateStream&&(this._inflateStream.end(),this._inflateStream=null),callback()}};function createInflate(zlibOptions){return new InflateStream(zlibOptions)}function extractMimeType(headers){let charset=null,essence=null,mimeType=null,values=getDecodeSplit("content-type",headers);if(values===null)return"failure";for(let value of values){let temporaryMimeType=parseMIMEType(value);temporaryMimeType==="failure"||temporaryMimeType.essence==="*/*"||(mimeType=temporaryMimeType,mimeType.essence!==essence?(charset=null,mimeType.parameters.has("charset")&&(charset=mimeType.parameters.get("charset")),essence=mimeType.essence):!mimeType.parameters.has("charset")&&charset!==null&&mimeType.parameters.set("charset",charset))}return mimeType??"failure"}function gettingDecodingSplitting(value){let input2=value,position={position:0},values=[],temporaryValue="";for(;position.position<input2.length;){if(temporaryValue+=collectASequenceOfCodePoints(char=>char!=='"'&&char!==",",input2,position),position.position<input2.length)if(input2.charCodeAt(position.position)===34){if(temporaryValue+=collectAnHTTPQuotedString(input2,position),position.position<input2.length)continue}else assert(input2.charCodeAt(position.position)===44),position.position++;temporaryValue=removeChars(temporaryValue,!0,!0,char=>char===9||char===32),values.push(temporaryValue),temporaryValue=""}return values}function getDecodeSplit(name,list){let value=list.get(name,!0);return value===null?null:gettingDecodingSplitting(value)}function hasAuthenticationEntry(request){return!1}function includesCredentials(url){return!!(url.username||url.password)}function isTraversableNavigable(navigable){return navigable!=null&&navigable!=="client"&&navigable!=="no-traversable"}var EnvironmentSettingsObjectBase=class{get baseUrl(){return getGlobalOrigin()}get origin(){return this.baseUrl?.origin}policyContainer=makePolicyContainer()},EnvironmentSettingsObject=class{settingsObject=new EnvironmentSettingsObjectBase},environmentSettingsObject=new EnvironmentSettingsObject;module.exports={isAborted,isCancelled,isValidEncodedURL,ReadableStreamFrom,tryUpgradeRequestToAPotentiallyTrustworthyURL,clampAndCoarsenConnectionTimingInfo,coarsenedSharedCurrentTime,determineRequestsReferrer,makePolicyContainer,clonePolicyContainer,appendFetchMetadata,appendRequestOriginHeader,TAOCheck,corsCheck,crossOriginResourcePolicyCheck,createOpaqueTimingInfo,setRequestReferrerPolicyOnRedirect,isValidHTTPToken,requestBadPort,requestCurrentURL,responseURL,responseLocationURL,isURLPotentiallyTrustworthy,isValidReasonPhrase,sameOrigin,normalizeMethod,iteratorMixin,createIterator,isValidHeaderName,isValidHeaderValue,isErrorLike,fullyReadBody,readableStreamClose,urlIsLocal,urlHasHttpsScheme,urlIsHttpHttpsScheme,readAllBytes,simpleRangeHeaderValue,buildContentRange,createInflate,extractMimeType,getDecodeSplit,environmentSettingsObject,isOriginIPPotentiallyTrustworthy,hasAuthenticationEntry,includesCredentials,isTraversableNavigable}}});var require_runtime_features=__commonJS({"node_modules/undici/lib/util/runtime-features.js"(exports,module){"use strict";var lazyLoaders={__proto__:null,"node:crypto":()=>__require("node:crypto"),"node:sqlite":()=>__require("node:sqlite")};function detectRuntimeFeatureByNodeModule(moduleName){try{return lazyLoaders[moduleName](),!0}catch(err){if(err.code!=="ERR_UNKNOWN_BUILTIN_MODULE"&&err.code!=="ERR_NO_CRYPTO")throw err;return!1}}var runtimeFeaturesAsNodeModule=["crypto","sqlite"];function detectRuntimeFeature(feature){if(runtimeFeaturesAsNodeModule.includes(feature))return detectRuntimeFeatureByNodeModule(`node:${feature}`);throw new TypeError(`unknown feature: ${feature}`)}var RuntimeFeatures=class{#map=new Map;clear(){this.#map.clear()}has(feature){return this.#map.get(feature)??this.#detectRuntimeFeature(feature)}set(feature,value){if(runtimeFeaturesAsNodeModule.includes(feature)===!1)throw new TypeError(`unknown feature: ${feature}`);this.#map.set(feature,value)}#detectRuntimeFeature(feature){let result2=detectRuntimeFeature(feature);return this.#map.set(feature,result2),result2}},instance=new RuntimeFeatures;module.exports.runtimeFeatures=instance;module.exports.default=instance}});var require_formdata=__commonJS({"node_modules/undici/lib/web/fetch/formdata.js"(exports,module){"use strict";var{iteratorMixin}=require_util2(),{kEnumerableProperty}=require_util(),{webidl}=require_webidl(),nodeUtil=__require("node:util"),{runtimeFeatures}=require_runtime_features(),random=runtimeFeatures.has("crypto")?__require("node:crypto").randomInt:max=>Math.floor(Math.random()*max),FormData2=class _FormData{#state=[];#boundary=null;constructor(form=void 0){if(webidl.util.markAsUncloneable(this),form!==void 0)throw webidl.errors.conversionFailed({prefix:"FormData constructor",argument:"Argument 1",types:["undefined"]})}append(name,value,filename=void 0){webidl.brandCheck(this,_FormData);let prefix="FormData.append";webidl.argumentLengthCheck(arguments,2,prefix),name=webidl.converters.USVString(name),arguments.length===3||webidl.is.Blob(value)?(value=webidl.converters.Blob(value,prefix,"value"),filename!==void 0&&(filename=webidl.converters.USVString(filename))):value=webidl.converters.USVString(value);let entry=makeEntry(name,value,filename);this.#state.push(entry)}delete(name){webidl.brandCheck(this,_FormData),webidl.argumentLengthCheck(arguments,1,"FormData.delete"),name=webidl.converters.USVString(name),this.#state=this.#state.filter(entry=>entry.name!==name)}get(name){webidl.brandCheck(this,_FormData),webidl.argumentLengthCheck(arguments,1,"FormData.get"),name=webidl.converters.USVString(name);let idx=this.#state.findIndex(entry=>entry.name===name);return idx===-1?null:this.#state[idx].value}getAll(name){return webidl.brandCheck(this,_FormData),webidl.argumentLengthCheck(arguments,1,"FormData.getAll"),name=webidl.converters.USVString(name),this.#state.filter(entry=>entry.name===name).map(entry=>entry.value)}has(name){return webidl.brandCheck(this,_FormData),webidl.argumentLengthCheck(arguments,1,"FormData.has"),name=webidl.converters.USVString(name),this.#state.findIndex(entry=>entry.name===name)!==-1}set(name,value,filename=void 0){webidl.brandCheck(this,_FormData);let prefix="FormData.set";webidl.argumentLengthCheck(arguments,2,prefix),name=webidl.converters.USVString(name),arguments.length===3||webidl.is.Blob(value)?(value=webidl.converters.Blob(value,prefix,"value"),filename!==void 0&&(filename=webidl.converters.USVString(filename))):value=webidl.converters.USVString(value);let entry=makeEntry(name,value,filename),idx=this.#state.findIndex(entry2=>entry2.name===name);idx!==-1?this.#state=[...this.#state.slice(0,idx),entry,...this.#state.slice(idx+1).filter(entry2=>entry2.name!==name)]:this.#state.push(entry)}[nodeUtil.inspect.custom](depth,options){let state=this.#state.reduce((a,b)=>(a[b.name]?Array.isArray(a[b.name])?a[b.name].push(b.value):a[b.name]=[a[b.name],b.value]:a[b.name]=b.value,a),{__proto__:null});options.depth??=depth,options.colors??=!0;let output=nodeUtil.formatWithOptions(options,state);return`FormData ${output.slice(output.indexOf("]")+2)}`}static getFormDataState(formData){return formData.#state}static setFormDataState(formData,newState){formData.#state=newState}static getFormDataBoundary(formData){let boundary=formData.#boundary;return boundary??(formData.#boundary=`----formdata-undici-0${`${random(1e11)}`.padStart(11,"0")}`)}},{getFormDataState,setFormDataState,getFormDataBoundary}=FormData2;Reflect.deleteProperty(FormData2,"getFormDataState");Reflect.deleteProperty(FormData2,"setFormDataState");Reflect.deleteProperty(FormData2,"getFormDataBoundary");iteratorMixin("FormData",FormData2,getFormDataState,"name","value");Object.defineProperties(FormData2.prototype,{append:kEnumerableProperty,delete:kEnumerableProperty,get:kEnumerableProperty,getAll:kEnumerableProperty,has:kEnumerableProperty,set:kEnumerableProperty,[Symbol.toStringTag]:{value:"FormData",configurable:!0}});function makeEntry(name,value,filename){if(typeof value!="string"){if(webidl.is.File(value)||(value=new File([value],"blob",{type:value.type})),filename!==void 0){let options={type:value.type,lastModified:value.lastModified};value=new File([value],filename,options)}}return{name,value}}webidl.is.FormData=webidl.util.MakeTypeAssertion(FormData2);module.exports={FormData:FormData2,makeEntry,setFormDataState,getFormDataBoundary}}});var require_formdata_parser=__commonJS({"node_modules/undici/lib/web/fetch/formdata-parser.js"(exports,module){"use strict";var{bufferToLowerCasedHeaderName}=require_util(),{HTTP_TOKEN_CODEPOINTS}=require_data_url(),{makeEntry}=require_formdata(),{webidl}=require_webidl(),assert=__require("node:assert"),{isomorphicDecode}=require_infra(),dd=Buffer.from("--"),decoder=new TextDecoder,decoderIgnoreBOM=new TextDecoder("utf-8",{ignoreBOM:!0});function isAsciiString(chars){for(let i=0;i<chars.length;++i)if((chars.charCodeAt(i)&-128)!==0)return!1;return!0}function validateBoundary(boundary){let length=boundary.length;if(length<27||length>70)return!1;for(let i=0;i<length;++i){let cp=boundary.charCodeAt(i);if(!(cp>=48&&cp<=57||cp>=65&&cp<=90||cp>=97&&cp<=122||cp===39||cp===45||cp===95))return!1}return!0}function multipartFormDataParser(input2,mimeType){assert(mimeType!=="failure"&&mimeType.essence==="multipart/form-data");let boundaryString=mimeType.parameters.get("boundary");if(boundaryString===void 0)throw parsingError("missing boundary in content-type header");let boundary=Buffer.from(`--${boundaryString}`,"utf8"),entryList=[],position={position:0},firstBoundaryIndex=input2.indexOf(boundary);if(firstBoundaryIndex===-1)throw parsingError("no boundary found in multipart body");for(position.position=firstBoundaryIndex;;){if(input2.subarray(position.position,position.position+boundary.length).equals(boundary))position.position+=boundary.length;else throw parsingError("expected a value starting with -- and the boundary");if(bufferStartsWith(input2,dd,position))return entryList;if(input2[position.position]!==13||input2[position.position+1]!==10)throw parsingError("expected CRLF");position.position+=2;let result2=parseMultipartFormDataHeaders(input2,position),{name,filename,contentType,encoding}=result2;position.position+=2;let body;{let boundaryIndex=input2.indexOf(boundary.subarray(2),position.position);if(boundaryIndex===-1)throw parsingError("expected boundary after body");body=input2.subarray(position.position,boundaryIndex-4),position.position+=body.length,encoding==="base64"&&(body=Buffer.from(body.toString(),"base64"))}if(input2[position.position]!==13||input2[position.position+1]!==10)throw parsingError("expected CRLF");position.position+=2;let value;filename!==null?(contentType??="text/plain",isAsciiString(contentType)||(contentType=""),value=new File([body],filename,{type:contentType})):value=decoderIgnoreBOM.decode(Buffer.from(body)),assert(webidl.is.USVString(name)),assert(typeof value=="string"&&webidl.is.USVString(value)||webidl.is.File(value)),entryList.push(makeEntry(name,value,filename))}}function parseContentDispositionAttribute(input2,position){input2[position.position]===59&&position.position++,collectASequenceOfBytes(char=>char===32||char===9,input2,position);let attributeName=collectASequenceOfBytes(char=>isToken(char)&&char!==61&&char!==42,input2,position);if(attributeName.length===0)return null;let attrNameStr=attributeName.toString("ascii").toLowerCase(),isExtended=input2[position.position]===42;if(isExtended&&position.position++,input2[position.position]!==61)return null;position.position++,collectASequenceOfBytes(char=>char===32||char===9,input2,position);let value;if(isExtended){let headerValue=collectASequenceOfBytes(char=>char!==32&&char!==13&&char!==10&&char!==59,input2,position);if(headerValue[0]!==117&&headerValue[0]!==85||headerValue[1]!==116&&headerValue[1]!==84||headerValue[2]!==102&&headerValue[2]!==70||headerValue[3]!==45||headerValue[4]!==56)throw parsingError("unknown encoding, expected utf-8''");value=decodeURIComponent(decoder.decode(headerValue.subarray(7)))}else if(input2[position.position]===34){position.position++;let quotedValue=collectASequenceOfBytes(char=>char!==10&&char!==13&&char!==34,input2,position);if(input2[position.position]!==34)throw parsingError("Closing quote not found");position.position++,value=decoder.decode(quotedValue).replace(/%0A/ig,`
4
4
  `).replace(/%0D/ig,"\r").replace(/%22/g,'"')}else{let tokenValue=collectASequenceOfBytes(char=>isToken(char)&&char!==59,input2,position);value=decoder.decode(tokenValue)}return{name:attrNameStr,value,extended:isExtended}}function parseMultipartFormDataHeaders(input2,position){let name=null,filename=null,contentType=null,encoding=null;for(;;){if(input2[position.position]===13&&input2[position.position+1]===10){if(name===null)throw parsingError("header name is null");return{name,filename,contentType,encoding}}let headerName=collectASequenceOfBytes(char=>char!==10&&char!==13&&char!==58,input2,position);if(headerName=removeChars(headerName,!0,!0,char=>char===9||char===32),!HTTP_TOKEN_CODEPOINTS.test(headerName.toString()))throw parsingError("header name does not match the field-name token production");if(input2[position.position]!==58)throw parsingError("expected :");switch(position.position++,collectASequenceOfBytes(char=>char===32||char===9,input2,position),bufferToLowerCasedHeaderName(headerName)){case"content-disposition":{name=filename=null;let filenameIsExtended=!1;if(collectASequenceOfBytes(char=>isToken(char),input2,position).toString("ascii").toLowerCase()!=="form-data")throw parsingError("expected form-data for content-disposition header");for(;position.position<input2.length&&(input2[position.position]!==13||input2[position.position+1]!==10);){let attribute=parseContentDispositionAttribute(input2,position);if(!attribute)break;attribute.name==="name"?name=attribute.value:attribute.name==="filename"&&(attribute.extended?(filename=attribute.value,filenameIsExtended=!0):filenameIsExtended||(filename=attribute.value))}if(name===null)throw parsingError("name attribute is required in content-disposition header");break}case"content-type":{let headerValue=collectASequenceOfBytes(char=>char!==10&&char!==13,input2,position);headerValue=removeChars(headerValue,!1,!0,char=>char===9||char===32),contentType=isomorphicDecode(headerValue);break}case"content-transfer-encoding":{let headerValue=collectASequenceOfBytes(char=>char!==10&&char!==13,input2,position);headerValue=removeChars(headerValue,!1,!0,char=>char===9||char===32),encoding=isomorphicDecode(headerValue);break}default:collectASequenceOfBytes(char=>char!==10&&char!==13,input2,position)}if(input2[position.position]!==13||input2[position.position+1]!==10)throw parsingError("expected CRLF");position.position+=2}}function collectASequenceOfBytes(condition,input2,position){let start=position.position;for(;start<input2.length&&condition(input2[start]);)++start;return input2.subarray(position.position,position.position=start)}function removeChars(buf,leading,trailing,predicate){let lead=0,trail=buf.length-1;if(leading)for(;lead<buf.length&&predicate(buf[lead]);)lead++;if(trailing)for(;trail>0&&predicate(buf[trail]);)trail--;return lead===0&&trail===buf.length-1?buf:buf.subarray(lead,trail+1)}function bufferStartsWith(buffer,start,position){if(buffer.length<start.length)return!1;for(let i=0;i<start.length;i++)if(start[i]!==buffer[position.position+i])return!1;return!0}function parsingError(cause){return new TypeError("Failed to parse body as FormData.",{cause:new TypeError(cause)})}function isCTL(char){return char<=31||char===127}function isTSpecial(char){return char===40||char===41||char===60||char===62||char===64||char===44||char===59||char===58||char===92||char===34||char===47||char===91||char===93||char===63||char===61}function isToken(char){return char<=127&&char!==32&&char!==9&&!isCTL(char)&&!isTSpecial(char)}module.exports={multipartFormDataParser,validateBoundary}}});var require_body=__commonJS({"node_modules/undici/lib/web/fetch/body.js"(exports,module){"use strict";var util=require_util(),{ReadableStreamFrom,readableStreamClose,fullyReadBody,extractMimeType}=require_util2(),{FormData:FormData2,setFormDataState,getFormDataBoundary}=require_formdata(),{webidl}=require_webidl(),assert=__require("node:assert"),{isErrored,isDisturbed}=__require("node:stream"),{isUint8Array}=__require("node:util/types"),{serializeAMimeType}=require_data_url(),{multipartFormDataParser}=require_formdata_parser(),{parseJSONFromBytes}=require_infra(),{utf8DecodeBytes}=require_encoding(),{ReadableStreamTee}=__require("node:stream/web"),textEncoder=new TextEncoder;function noop(){}var streamRegistry=new FinalizationRegistry(weakRef=>{let stream2=weakRef.deref();stream2&&!stream2.locked&&!isDisturbed(stream2)&&!isErrored(stream2)&&stream2.cancel("Response object has been garbage collected").catch(noop)});function extractBody(object2,keepalive=!1){let stream2=null,controller=null;webidl.is.ReadableStream(object2)?stream2=object2:webidl.is.Blob(object2)?stream2=object2.stream():stream2=new ReadableStream({pull(){},start(c){controller=c},cancel(){},type:"bytes"}),assert(webidl.is.ReadableStream(stream2));let action=null,source=null,length=null,type=null;if(typeof object2=="string")source=object2,type="text/plain;charset=UTF-8";else if(webidl.is.URLSearchParams(object2))source=object2.toString(),type="application/x-www-form-urlencoded;charset=UTF-8";else if(webidl.is.BufferSource(object2))source=webidl.util.getCopyOfBytesHeldByBufferSource(object2);else if(webidl.is.FormData(object2)){let boundary=getFormDataBoundary(object2),prefix=`--${boundary}\r
5
5
  Content-Disposition: form-data`;let formdataEscape=str2=>str2.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22"),normalizeLinefeeds=value=>value.replace(/\r?\n|\r/g,`\r
6
6
  `),blobParts=[],rn=new Uint8Array([13,10]);length=0;let hasUnknownSizeValue=!1;for(let[name,value]of object2)if(typeof value=="string"){let chunk3=textEncoder.encode(prefix+`; name="${formdataEscape(normalizeLinefeeds(name))}"\r
@@ -126,7 +126,7 @@ ${pendingInterceptorsFormatter.format(pending)}`.trim())}};module.exports=MockAg
126
126
  ORDER BY cachedAt ASC
127
127
  LIMIT ?
128
128
  )
129
- `)}close(){this.#db.close()}get(key){assertCacheKey(key);let value=this.#findValue(key);return value?{body:value.body?Buffer.from(value.body.buffer,value.body.byteOffset,value.body.byteLength):void 0,statusCode:value.statusCode,statusMessage:value.statusMessage,headers:value.headers?JSON.parse(value.headers):void 0,etag:value.etag?value.etag:void 0,vary:value.vary?JSON.parse(value.vary):void 0,cacheControlDirectives:value.cacheControlDirectives?JSON.parse(value.cacheControlDirectives):void 0,cachedAt:value.cachedAt,staleAt:value.staleAt,deleteAt:value.deleteAt}:void 0}set(key,value){assertCacheKey(key);let url=this.#makeValueUrl(key),body=Array.isArray(value.body)?Buffer.concat(value.body):value.body,size=body?.byteLength;if(size&&size>this.#maxEntrySize)return;let existingValue=this.#findValue(key,!0);existingValue?this.#updateValueQuery.run(body,value.deleteAt,value.statusCode,value.statusMessage,value.headers?JSON.stringify(value.headers):null,value.etag?value.etag:null,value.cacheControlDirectives?JSON.stringify(value.cacheControlDirectives):null,value.vary?JSON.stringify(value.vary):null,value.cachedAt,value.staleAt,existingValue.id):(this.#insertValueQuery.run(url,key.method,body,value.deleteAt,value.statusCode,value.statusMessage,value.headers?JSON.stringify(value.headers):null,value.etag?value.etag:null,value.cacheControlDirectives?JSON.stringify(value.cacheControlDirectives):null,value.vary?JSON.stringify(value.vary):null,value.cachedAt,value.staleAt),this.#prune())}createWriteStream(key,value){assertCacheKey(key),assertCacheValue(value);let size=0,body=[],store=this;return new Writable({decodeStrings:!0,write(chunk2,encoding,callback){size+=chunk2.byteLength,size<=store.#maxEntrySize?body.push(chunk2):this.destroy(),callback()},final(callback){store.set(key,{...value,body}),callback()}})}delete(key){if(typeof key!="object")throw new TypeError(`expected key to be object, got ${typeof key}`);this.#deleteByUrlQuery.run(this.#makeValueUrl(key))}#prune(){if(Number.isFinite(this.#maxCount)&&this.size<=this.#maxCount)return 0;{let removed=this.#deleteExpiredValuesQuery.run(Date.now()).changes;if(removed)return removed}{let removed=this.#deleteOldValuesQuery?.run(Math.max(Math.floor(this.#maxCount*.1),1)).changes;if(removed)return removed}return 0}get size(){let{total}=this.#countEntriesQuery.get();return total}#makeValueUrl(key){return`${key.origin}/${key.path}`}#findValue(key,canBeExpired=!1){let url=this.#makeValueUrl(key),{headers,method}=key,values=this.#getValuesQuery.all(url,method);if(values.length===0)return;let now=Date.now();for(let value of values){if(now>=value.deleteAt&&!canBeExpired)continue;let matches=!0;if(value.vary){let vary=JSON.parse(value.vary);for(let header in vary)if(!headerValueEquals(headers[header],vary[header])){matches=!1;break}}if(matches)return value}}};function headerValueEquals(lhs,rhs){if(lhs==null&&rhs==null)return!0;if(lhs==null&&rhs!=null||lhs!=null&&rhs==null)return!1;if(Array.isArray(lhs)&&Array.isArray(rhs)){if(lhs.length!==rhs.length)return!1;for(let i=0;i<lhs.length;i++)if(lhs[i]!==rhs[i])return!1;return!0}return lhs===rhs}}});var require_headers=__commonJS({"node_modules/undici/lib/web/fetch/headers.js"(exports,module){"use strict";var{kConstruct}=require_symbols(),{kEnumerableProperty}=require_util(),{iteratorMixin,isValidHeaderName,isValidHeaderValue}=require_util2(),{webidl}=require_webidl(),assert=__require("node:assert"),util=__require("node:util");function isHTTPWhiteSpaceCharCode(code){return code===10||code===13||code===9||code===32}function headerValueNormalize(potentialValue){let i=0,j=potentialValue.length;for(;j>i&&isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j-1));)--j;for(;j>i&&isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i));)++i;return i===0&&j===potentialValue.length?potentialValue:potentialValue.substring(i,j)}function fill(headers,object2){if(Array.isArray(object2))for(let i=0;i<object2.length;++i){let header=object2[i];if(header.length!==2)throw webidl.errors.exception({header:"Headers constructor",message:`expected name/value pair to be length 2, found ${header.length}.`});appendHeader(headers,header[0],header[1])}else if(typeof object2=="object"&&object2!==null){let keys=Object.keys(object2);for(let i=0;i<keys.length;++i)appendHeader(headers,keys[i],object2[keys[i]])}else throw webidl.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence<sequence<ByteString>>","record<ByteString, ByteString>"]})}function appendHeader(headers,name,value){if(value=headerValueNormalize(value),isValidHeaderName(name)){if(!isValidHeaderValue(value))throw webidl.errors.invalidArgument({prefix:"Headers.append",value,type:"header value"})}else throw webidl.errors.invalidArgument({prefix:"Headers.append",value:name,type:"header name"});if(getHeadersGuard(headers)==="immutable")throw new TypeError("immutable");return getHeadersList(headers).append(name,value,!1)}function headersListSortAndCombine(target){let headersList=getHeadersList(target);if(!headersList)return[];if(headersList.sortedMap)return headersList.sortedMap;let headers=[],names=headersList.toSortedArray(),cookies=headersList.cookies;if(cookies===null||cookies.length===1)return headersList.sortedMap=names;for(let i=0;i<names.length;++i){let{0:name,1:value}=names[i];if(name==="set-cookie")for(let j=0;j<cookies.length;++j)headers.push([name,cookies[j]]);else headers.push([name,value])}return headersList.sortedMap=headers}function compareHeaderName(a,b){return a[0]<b[0]?-1:1}var HeadersList=class _HeadersList{cookies=null;sortedMap;headersMap;constructor(init){init instanceof _HeadersList?(this.headersMap=new Map(init.headersMap),this.sortedMap=init.sortedMap,this.cookies=init.cookies===null?null:[...init.cookies]):(this.headersMap=new Map(init),this.sortedMap=null)}contains(name,isLowerCase){return this.headersMap.has(isLowerCase?name:name.toLowerCase())}clear(){this.headersMap.clear(),this.sortedMap=null,this.cookies=null}append(name,value,isLowerCase){this.sortedMap=null;let lowercaseName=isLowerCase?name:name.toLowerCase(),exists=this.headersMap.get(lowercaseName);if(exists){let delimiter=lowercaseName==="cookie"?"; ":", ";this.headersMap.set(lowercaseName,{name:exists.name,value:`${exists.value}${delimiter}${value}`})}else this.headersMap.set(lowercaseName,{name,value});lowercaseName==="set-cookie"&&(this.cookies??=[]).push(value)}set(name,value,isLowerCase){this.sortedMap=null;let lowercaseName=isLowerCase?name:name.toLowerCase();lowercaseName==="set-cookie"&&(this.cookies=[value]),this.headersMap.set(lowercaseName,{name,value})}delete(name,isLowerCase){this.sortedMap=null,isLowerCase||(name=name.toLowerCase()),name==="set-cookie"&&(this.cookies=null),this.headersMap.delete(name)}get(name,isLowerCase){return this.headersMap.get(isLowerCase?name:name.toLowerCase())?.value??null}*[Symbol.iterator](){for(let{0:name,1:{value}}of this.headersMap)yield[name,value]}get entries(){let headers={};if(this.headersMap.size!==0)for(let{name,value}of this.headersMap.values())headers[name]=value;return headers}rawValues(){return this.headersMap.values()}get entriesList(){let headers=[];if(this.headersMap.size!==0)for(let{0:lowerName,1:{name,value}}of this.headersMap)if(lowerName==="set-cookie")for(let cookie of this.cookies)headers.push([name,cookie]);else headers.push([name,value]);return headers}toSortedArray(){let size=this.headersMap.size,array=new Array(size);if(size<=32){if(size===0)return array;let iterator=this.headersMap[Symbol.iterator](),firstValue=iterator.next().value;array[0]=[firstValue[0],firstValue[1].value],assert(firstValue[1].value!==null);for(let i=1,j=0,right=0,left=0,pivot=0,x,value;i<size;++i){for(value=iterator.next().value,x=array[i]=[value[0],value[1].value],assert(x[1]!==null),left=0,right=i;left<right;)pivot=left+(right-left>>1),array[pivot][0]<=x[0]?left=pivot+1:right=pivot;if(i!==pivot){for(j=i;j>left;)array[j]=array[--j];array[left]=x}}if(!iterator.next().done)throw new TypeError("Unreachable");return array}else{let i=0;for(let{0:name,1:{value}}of this.headersMap)array[i++]=[name,value],assert(value!==null);return array.sort(compareHeaderName)}}},Headers2=class _Headers{#guard;#headersList;constructor(init=void 0){webidl.util.markAsUncloneable(this),init!==kConstruct&&(this.#headersList=new HeadersList,this.#guard="none",init!==void 0&&(init=webidl.converters.HeadersInit(init,"Headers constructor","init"),fill(this,init)))}append(name,value){webidl.brandCheck(this,_Headers),webidl.argumentLengthCheck(arguments,2,"Headers.append");let prefix="Headers.append";return name=webidl.converters.ByteString(name,prefix,"name"),value=webidl.converters.ByteString(value,prefix,"value"),appendHeader(this,name,value)}delete(name){if(webidl.brandCheck(this,_Headers),webidl.argumentLengthCheck(arguments,1,"Headers.delete"),name=webidl.converters.ByteString(name,"Headers.delete","name"),!isValidHeaderName(name))throw webidl.errors.invalidArgument({prefix:"Headers.delete",value:name,type:"header name"});if(this.#guard==="immutable")throw new TypeError("immutable");this.#headersList.contains(name,!1)&&this.#headersList.delete(name,!1)}get(name){webidl.brandCheck(this,_Headers),webidl.argumentLengthCheck(arguments,1,"Headers.get");let prefix="Headers.get";if(name=webidl.converters.ByteString(name,prefix,"name"),!isValidHeaderName(name))throw webidl.errors.invalidArgument({prefix,value:name,type:"header name"});return this.#headersList.get(name,!1)}has(name){webidl.brandCheck(this,_Headers),webidl.argumentLengthCheck(arguments,1,"Headers.has");let prefix="Headers.has";if(name=webidl.converters.ByteString(name,prefix,"name"),!isValidHeaderName(name))throw webidl.errors.invalidArgument({prefix,value:name,type:"header name"});return this.#headersList.contains(name,!1)}set(name,value){webidl.brandCheck(this,_Headers),webidl.argumentLengthCheck(arguments,2,"Headers.set");let prefix="Headers.set";if(name=webidl.converters.ByteString(name,prefix,"name"),value=webidl.converters.ByteString(value,prefix,"value"),value=headerValueNormalize(value),isValidHeaderName(name)){if(!isValidHeaderValue(value))throw webidl.errors.invalidArgument({prefix,value,type:"header value"})}else throw webidl.errors.invalidArgument({prefix,value:name,type:"header name"});if(this.#guard==="immutable")throw new TypeError("immutable");this.#headersList.set(name,value,!1)}getSetCookie(){webidl.brandCheck(this,_Headers);let list=this.#headersList.cookies;return list?[...list]:[]}[util.inspect.custom](depth,options){return options.depth??=depth,`Headers ${util.formatWithOptions(options,this.#headersList.entries)}`}static getHeadersGuard(o){return o.#guard}static setHeadersGuard(o,guard){o.#guard=guard}static getHeadersList(o){return o.#headersList}static setHeadersList(target,list){target.#headersList=list}},{getHeadersGuard,setHeadersGuard,getHeadersList,setHeadersList}=Headers2;Reflect.deleteProperty(Headers2,"getHeadersGuard");Reflect.deleteProperty(Headers2,"setHeadersGuard");Reflect.deleteProperty(Headers2,"getHeadersList");Reflect.deleteProperty(Headers2,"setHeadersList");iteratorMixin("Headers",Headers2,headersListSortAndCombine,0,1);Object.defineProperties(Headers2.prototype,{append:kEnumerableProperty,delete:kEnumerableProperty,get:kEnumerableProperty,has:kEnumerableProperty,set:kEnumerableProperty,getSetCookie:kEnumerableProperty,[Symbol.toStringTag]:{value:"Headers",configurable:!0},[util.inspect.custom]:{enumerable:!1}});webidl.converters.HeadersInit=function(V,prefix,argument){if(webidl.util.Type(V)===webidl.util.Types.OBJECT){let iterator=Reflect.get(V,Symbol.iterator);if(!util.types.isProxy(V)&&iterator===Headers2.prototype.entries)try{return getHeadersList(V).entriesList}catch{}return typeof iterator=="function"?webidl.converters["sequence<sequence<ByteString>>"](V,prefix,argument,iterator.bind(V)):webidl.converters["record<ByteString, ByteString>"](V,prefix,argument)}throw webidl.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence<sequence<ByteString>>","record<ByteString, ByteString>"]})};module.exports={fill,compareHeaderName,Headers:Headers2,HeadersList,getHeadersGuard,setHeadersGuard,setHeadersList,getHeadersList}}});var require_response=__commonJS({"node_modules/undici/lib/web/fetch/response.js"(exports,module){"use strict";var{Headers:Headers2,HeadersList,fill,getHeadersGuard,setHeadersGuard,setHeadersList}=require_headers(),{extractBody,cloneBody,mixinBody,streamRegistry,bodyUnusable}=require_body(),util=require_util(),nodeUtil=__require("node:util"),{kEnumerableProperty}=util,{isValidReasonPhrase,isCancelled,isAborted,isErrorLike,environmentSettingsObject:relevantRealm}=require_util2(),{redirectStatusSet,nullBodyStatus}=require_constants3(),{webidl}=require_webidl(),{URLSerializer}=require_data_url(),{kConstruct}=require_symbols(),assert=__require("node:assert"),{isomorphicEncode,serializeJavascriptValueToJSONString}=require_infra(),textEncoder=new TextEncoder("utf-8"),Response=class _Response{#headers;#state;static error(){return fromInnerResponse(makeNetworkError(),"immutable")}static json(data,init=void 0){webidl.argumentLengthCheck(arguments,1,"Response.json"),init=webidl.converters.ResponseInit(init);let bytes=textEncoder.encode(serializeJavascriptValueToJSONString(data)),body=extractBody(bytes),responseObject=fromInnerResponse(makeResponse({}),"response");return initializeResponse(responseObject,init,{body:body[0],type:"application/json"}),responseObject}static redirect(url,status=302){webidl.argumentLengthCheck(arguments,1,"Response.redirect"),url=webidl.converters.USVString(url),status=webidl.converters["unsigned short"](status);let parsedURL;try{parsedURL=new URL(url,relevantRealm.settingsObject.baseUrl)}catch(err){throw new TypeError(`Failed to parse URL from ${url}`,{cause:err})}if(!redirectStatusSet.has(status))throw new RangeError(`Invalid status code ${status}`);let responseObject=fromInnerResponse(makeResponse({}),"immutable");responseObject.#state.status=status;let value=isomorphicEncode(URLSerializer(parsedURL));return responseObject.#state.headersList.append("location",value,!0),responseObject}constructor(body=null,init=void 0){if(webidl.util.markAsUncloneable(this),body===kConstruct)return;body!==null&&(body=webidl.converters.BodyInit(body,"Response","body")),init=webidl.converters.ResponseInit(init),this.#state=makeResponse({}),this.#headers=new Headers2(kConstruct),setHeadersGuard(this.#headers,"response"),setHeadersList(this.#headers,this.#state.headersList);let bodyWithType=null;if(body!=null){let[extractedBody,type]=extractBody(body);bodyWithType={body:extractedBody,type}}initializeResponse(this,init,bodyWithType)}get type(){return webidl.brandCheck(this,_Response),this.#state.type}get url(){webidl.brandCheck(this,_Response);let urlList=this.#state.urlList,url=urlList[urlList.length-1]??null;return url===null?"":URLSerializer(url,!0)}get redirected(){return webidl.brandCheck(this,_Response),this.#state.urlList.length>1}get status(){return webidl.brandCheck(this,_Response),this.#state.status}get ok(){return webidl.brandCheck(this,_Response),this.#state.status>=200&&this.#state.status<=299}get statusText(){return webidl.brandCheck(this,_Response),this.#state.statusText}get headers(){return webidl.brandCheck(this,_Response),this.#headers}get body(){return webidl.brandCheck(this,_Response),this.#state.body?this.#state.body.stream:null}get bodyUsed(){return webidl.brandCheck(this,_Response),!!this.#state.body&&util.isDisturbed(this.#state.body.stream)}clone(){if(webidl.brandCheck(this,_Response),bodyUnusable(this.#state))throw webidl.errors.exception({header:"Response.clone",message:"Body has already been consumed."});let clonedResponse=cloneResponse(this.#state);return this.#state.urlList.length!==0&&this.#state.body?.stream&&streamRegistry.register(this,new WeakRef(this.#state.body.stream)),fromInnerResponse(clonedResponse,getHeadersGuard(this.#headers))}[nodeUtil.inspect.custom](depth,options){options.depth===null&&(options.depth=2),options.colors??=!0;let properties={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 ${nodeUtil.formatWithOptions(options,properties)}`}static getResponseHeaders(response){return response.#headers}static setResponseHeaders(response,newHeaders){response.#headers=newHeaders}static getResponseState(response){return response.#state}static setResponseState(response,newState){response.#state=newState}},{getResponseHeaders,setResponseHeaders,getResponseState,setResponseState}=Response;Reflect.deleteProperty(Response,"getResponseHeaders");Reflect.deleteProperty(Response,"setResponseHeaders");Reflect.deleteProperty(Response,"getResponseState");Reflect.deleteProperty(Response,"setResponseState");mixinBody(Response,getResponseState);Object.defineProperties(Response.prototype,{type:kEnumerableProperty,url:kEnumerableProperty,status:kEnumerableProperty,ok:kEnumerableProperty,redirected:kEnumerableProperty,statusText:kEnumerableProperty,headers:kEnumerableProperty,clone:kEnumerableProperty,body:kEnumerableProperty,bodyUsed:kEnumerableProperty,[Symbol.toStringTag]:{value:"Response",configurable:!0}});Object.defineProperties(Response,{json:kEnumerableProperty,redirect:kEnumerableProperty,error:kEnumerableProperty});function cloneResponse(response){if(response.internalResponse)return filterResponse(cloneResponse(response.internalResponse),response.type);let newResponse=makeResponse({...response,body:null});return response.body!=null&&(newResponse.body=cloneBody(response.body)),newResponse}function makeResponse(init){return{aborted:!1,rangeRequested:!1,timingAllowPassed:!1,requestIncludesCredentials:!1,type:"default",status:200,timingInfo:null,cacheState:"",statusText:"",...init,headersList:init?.headersList?new HeadersList(init?.headersList):new HeadersList,urlList:init?.urlList?[...init.urlList]:[]}}function makeNetworkError(reason){let isError=isErrorLike(reason);return makeResponse({type:"error",status:0,error:isError?reason:new Error(reason&&String(reason)),aborted:reason&&reason.name==="AbortError"})}function isNetworkError(response){return response.type==="error"&&response.status===0}function makeFilteredResponse(response,state){return state={internalResponse:response,...state},new Proxy(response,{get(target,p){return p in state?state[p]:target[p]},set(target,p,value){return assert(!(p in state)),target[p]=value,!0}})}function filterResponse(response,type){if(type==="basic")return makeFilteredResponse(response,{type:"basic",headersList:response.headersList});if(type==="cors")return makeFilteredResponse(response,{type:"cors",headersList:response.headersList});if(type==="opaque")return makeFilteredResponse(response,{type:"opaque",urlList:[],status:0,statusText:"",body:null});if(type==="opaqueredirect")return makeFilteredResponse(response,{type:"opaqueredirect",status:0,statusText:"",headersList:[],body:null});assert(!1)}function makeAppropriateNetworkError(fetchParams,err=null){return assert(isCancelled(fetchParams)),isAborted(fetchParams)?makeNetworkError(Object.assign(new DOMException("The operation was aborted.","AbortError"),{cause:err})):makeNetworkError(Object.assign(new DOMException("Request was cancelled."),{cause:err}))}function initializeResponse(response,init,body){if(init.status!==null&&(init.status<200||init.status>599))throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.');if("statusText"in init&&init.statusText!=null&&!isValidReasonPhrase(String(init.statusText)))throw new TypeError("Invalid statusText");if("status"in init&&init.status!=null&&(getResponseState(response).status=init.status),"statusText"in init&&init.statusText!=null&&(getResponseState(response).statusText=init.statusText),"headers"in init&&init.headers!=null&&fill(getResponseHeaders(response),init.headers),body){if(nullBodyStatus.includes(response.status))throw webidl.errors.exception({header:"Response constructor",message:`Invalid response status code ${response.status}`});getResponseState(response).body=body.body,body.type!=null&&!getResponseState(response).headersList.contains("content-type",!0)&&getResponseState(response).headersList.append("content-type",body.type,!0)}}function fromInnerResponse(innerResponse,guard){let response=new Response(kConstruct);setResponseState(response,innerResponse);let headers=new Headers2(kConstruct);return setResponseHeaders(response,headers),setHeadersList(headers,innerResponse.headersList),setHeadersGuard(headers,guard),innerResponse.urlList.length!==0&&innerResponse.body?.stream&&streamRegistry.register(response,new WeakRef(innerResponse.body.stream)),response}webidl.converters.XMLHttpRequestBodyInit=function(V,prefix,name){return typeof V=="string"?webidl.converters.USVString(V,prefix,name):webidl.is.Blob(V)||webidl.is.BufferSource(V)||webidl.is.FormData(V)||webidl.is.URLSearchParams(V)?V:webidl.converters.DOMString(V,prefix,name)};webidl.converters.BodyInit=function(V,prefix,argument){return webidl.is.ReadableStream(V)||V?.[Symbol.asyncIterator]?V:webidl.converters.XMLHttpRequestBodyInit(V,prefix,argument)};webidl.converters.ResponseInit=webidl.dictionaryConverter([{key:"status",converter:webidl.converters["unsigned short"],defaultValue:()=>200},{key:"statusText",converter:webidl.converters.ByteString,defaultValue:()=>""},{key:"headers",converter:webidl.converters.HeadersInit}]);webidl.is.Response=webidl.util.MakeTypeAssertion(Response);module.exports={isNetworkError,makeNetworkError,makeResponse,makeAppropriateNetworkError,filterResponse,Response,cloneResponse,fromInnerResponse,getResponseState}}});var require_request2=__commonJS({"node_modules/undici/lib/web/fetch/request.js"(exports,module){"use strict";var{extractBody,mixinBody,cloneBody,bodyUnusable}=require_body(),{Headers:Headers2,fill:fillHeaders,HeadersList,setHeadersGuard,getHeadersGuard,setHeadersList,getHeadersList}=require_headers(),util=require_util(),nodeUtil=__require("node:util"),{isValidHTTPToken,sameOrigin,environmentSettingsObject}=require_util2(),{forbiddenMethodsSet,corsSafeListedMethodsSet,referrerPolicy,requestRedirect,requestMode,requestCredentials,requestCache,requestDuplex}=require_constants3(),{kEnumerableProperty,normalizedMethodRecordsBase,normalizedMethodRecords}=util,{webidl}=require_webidl(),{URLSerializer}=require_data_url(),{kConstruct}=require_symbols(),assert=__require("node:assert"),{getMaxListeners,setMaxListeners,defaultMaxListeners}=__require("node:events"),kAbortController=Symbol("abortController"),requestFinalizer=new FinalizationRegistry(({signal,abort})=>{signal.removeEventListener("abort",abort)}),dependentControllerMap=new WeakMap,abortSignalHasEventHandlerLeakWarning;try{abortSignalHasEventHandlerLeakWarning=getMaxListeners(new AbortController().signal)>0}catch{abortSignalHasEventHandlerLeakWarning=!1}function buildAbort(acRef){return abort;function abort(){let ac=acRef.deref();if(ac!==void 0){requestFinalizer.unregister(abort),this.removeEventListener("abort",abort),ac.abort(this.reason);let controllerList=dependentControllerMap.get(ac.signal);if(controllerList!==void 0){if(controllerList.size!==0){for(let ref of controllerList){let ctrl=ref.deref();ctrl!==void 0&&ctrl.abort(this.reason)}controllerList.clear()}dependentControllerMap.delete(ac.signal)}}}}var patchMethodWarning=!1,Request=class _Request{#signal;#dispatcher;#headers;#state;#abortCleanup=null;constructor(input2,init=void 0){if(webidl.util.markAsUncloneable(this),input2===kConstruct)return;webidl.argumentLengthCheck(arguments,1,"Request constructor"),input2=webidl.converters.RequestInfo(input2),init=webidl.converters.RequestInit(init);let request=null,fallbackMode=null,baseUrl=environmentSettingsObject.settingsObject.baseUrl,signal=null;if(typeof input2=="string"){this.#dispatcher=init.dispatcher;let parsedURL;try{parsedURL=new URL(input2,baseUrl)}catch(err){throw new TypeError("Failed to parse URL from "+input2,{cause:err})}if(parsedURL.username||parsedURL.password)throw new TypeError("Request cannot be constructed from a URL that includes credentials: "+input2);request=makeRequest({urlList:[parsedURL]}),fallbackMode="cors"}else assert(webidl.is.Request(input2)),request=input2.#state,signal=input2.#signal,this.#dispatcher=init.dispatcher||input2.#dispatcher;let origin=environmentSettingsObject.settingsObject.origin,window2="client";if(request.window?.constructor?.name==="EnvironmentSettingsObject"&&sameOrigin(request.window,origin)&&(window2=request.window),init.window!=null)throw new TypeError(`'window' option '${window2}' must be null`);"window"in init&&(window2="no-window"),request=makeRequest({method:request.method,headersList:request.headersList,unsafeRequest:request.unsafeRequest,client:environmentSettingsObject.settingsObject,window:window2,priority:request.priority,origin:request.origin,referrer:request.referrer,referrerPolicy:request.referrerPolicy,mode:request.mode,credentials:request.credentials,cache:request.cache,redirect:request.redirect,integrity:request.integrity,keepalive:request.keepalive,reloadNavigation:request.reloadNavigation,historyNavigation:request.historyNavigation,urlList:[...request.urlList]});let initHasKey=Object.keys(init).length!==0;if(initHasKey&&(request.mode==="navigate"&&(request.mode="same-origin"),request.reloadNavigation=!1,request.historyNavigation=!1,request.origin="client",request.referrer="client",request.referrerPolicy="",request.url=request.urlList[request.urlList.length-1],request.urlList=[request.url]),init.referrer!==void 0){let referrer=init.referrer;if(referrer==="")request.referrer="no-referrer";else{let parsedReferrer;try{parsedReferrer=new URL(referrer,baseUrl)}catch(err){throw new TypeError(`Referrer "${referrer}" is not a valid URL.`,{cause:err})}parsedReferrer.protocol==="about:"&&parsedReferrer.hostname==="client"||origin&&!sameOrigin(parsedReferrer,environmentSettingsObject.settingsObject.baseUrl)?request.referrer="client":request.referrer=parsedReferrer}}init.referrerPolicy!==void 0&&(request.referrerPolicy=init.referrerPolicy);let mode;if(init.mode!==void 0?mode=init.mode:mode=fallbackMode,mode==="navigate")throw webidl.errors.exception({header:"Request constructor",message:"invalid request mode navigate."});if(mode!=null&&(request.mode=mode),init.credentials!==void 0&&(request.credentials=init.credentials),init.cache!==void 0&&(request.cache=init.cache),request.cache==="only-if-cached"&&request.mode!=="same-origin")throw new TypeError("'only-if-cached' can be set only with 'same-origin' mode");if(init.redirect!==void 0&&(request.redirect=init.redirect),init.integrity!=null&&(request.integrity=String(init.integrity)),init.keepalive!==void 0&&(request.keepalive=!!init.keepalive),init.method!==void 0){let method=init.method,mayBeNormalized=normalizedMethodRecords[method];if(mayBeNormalized!==void 0)request.method=mayBeNormalized;else{if(!isValidHTTPToken(method))throw new TypeError(`'${method}' is not a valid HTTP method.`);let upperCase=method.toUpperCase();if(forbiddenMethodsSet.has(upperCase))throw new TypeError(`'${method}' HTTP method is unsupported.`);method=normalizedMethodRecordsBase[upperCase]??method,request.method=method}!patchMethodWarning&&request.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"}),patchMethodWarning=!0)}init.signal!==void 0&&(signal=init.signal),this.#state=request;let ac=new AbortController;if(this.#signal=ac.signal,signal!=null)if(signal.aborted)ac.abort(signal.reason);else{this[kAbortController]=ac;let acRef=new WeakRef(ac),abort=buildAbort(acRef);abortSignalHasEventHandlerLeakWarning&&getMaxListeners(signal)===defaultMaxListeners&&setMaxListeners(1500,signal);let removeAbortListener=util.addAbortListener(signal,abort);requestFinalizer.register(ac,{signal,abort},abort),this.#abortCleanup=()=>{requestFinalizer.unregister(abort),removeAbortListener(),this.#abortCleanup=null}}if(this.#headers=new Headers2(kConstruct),setHeadersList(this.#headers,request.headersList),setHeadersGuard(this.#headers,"request"),mode==="no-cors"){if(!corsSafeListedMethodsSet.has(request.method))throw new TypeError(`'${request.method} is unsupported in no-cors mode.`);setHeadersGuard(this.#headers,"request-no-cors")}if(initHasKey){let headersList=getHeadersList(this.#headers),headers=init.headers!==void 0?init.headers:new HeadersList(headersList);if(headersList.clear(),headers instanceof HeadersList){for(let{name,value}of headers.rawValues())headersList.append(name,value,!1);headersList.cookies=headers.cookies}else fillHeaders(this.#headers,headers)}let inputBody=webidl.is.Request(input2)?input2.#state.body:null;if((init.body!=null||inputBody!=null)&&(request.method==="GET"||request.method==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body.");let initBody=null;if(init.body!=null){let[extractedBody,contentType]=extractBody(init.body,request.keepalive);initBody=extractedBody,contentType&&!getHeadersList(this.#headers).contains("content-type",!0)&&this.#headers.append("content-type",contentType,!0)}let inputOrInitBody=initBody??inputBody;if(inputOrInitBody!=null&&inputOrInitBody.source==null){if(initBody!=null&&init.duplex==null)throw new TypeError("RequestInit: duplex option is required when sending a body.");if(request.mode!=="same-origin"&&request.mode!=="cors")throw new TypeError('If request is made from ReadableStream, mode should be "same-origin" or "cors"');request.useCORSPreflightFlag=!0}let finalBody=inputOrInitBody;if(initBody==null&&inputBody!=null){if(bodyUnusable(input2.#state))throw new TypeError("Cannot construct a Request with a Request object that has already been used.");let identityTransform=new TransformStream;inputBody.stream.pipeThrough(identityTransform),finalBody={source:inputBody.source,length:inputBody.length,stream:identityTransform.readable}}this.#state.body=finalBody}get method(){return webidl.brandCheck(this,_Request),this.#state.method}get url(){return webidl.brandCheck(this,_Request),URLSerializer(this.#state.url)}get headers(){return webidl.brandCheck(this,_Request),this.#headers}get destination(){return webidl.brandCheck(this,_Request),this.#state.destination}get referrer(){return webidl.brandCheck(this,_Request),this.#state.referrer==="no-referrer"?"":this.#state.referrer==="client"?"about:client":this.#state.referrer.toString()}get referrerPolicy(){return webidl.brandCheck(this,_Request),this.#state.referrerPolicy}get mode(){return webidl.brandCheck(this,_Request),this.#state.mode}get credentials(){return webidl.brandCheck(this,_Request),this.#state.credentials}get cache(){return webidl.brandCheck(this,_Request),this.#state.cache}get redirect(){return webidl.brandCheck(this,_Request),this.#state.redirect}get integrity(){return webidl.brandCheck(this,_Request),this.#state.integrity}get keepalive(){return webidl.brandCheck(this,_Request),this.#state.keepalive}get isReloadNavigation(){return webidl.brandCheck(this,_Request),this.#state.reloadNavigation}get isHistoryNavigation(){return webidl.brandCheck(this,_Request),this.#state.historyNavigation}get signal(){return webidl.brandCheck(this,_Request),this.#signal}get body(){return webidl.brandCheck(this,_Request),this.#state.body?this.#state.body.stream:null}get bodyUsed(){return webidl.brandCheck(this,_Request),!!this.#state.body&&util.isDisturbed(this.#state.body.stream)}get duplex(){return webidl.brandCheck(this,_Request),"half"}clone(){if(webidl.brandCheck(this,_Request),bodyUnusable(this.#state))throw new TypeError("unusable");let clonedRequest=cloneRequest(this.#state),ac=new AbortController;if(this.signal.aborted)ac.abort(this.signal.reason);else{let list=dependentControllerMap.get(this.signal);list===void 0&&(list=new Set,dependentControllerMap.set(this.signal,list));let acRef=new WeakRef(ac);list.add(acRef),util.addAbortListener(ac.signal,buildAbort(acRef))}return fromInnerRequest(clonedRequest,this.#dispatcher,ac.signal,getHeadersGuard(this.#headers))}[nodeUtil.inspect.custom](depth,options){options.depth===null&&(options.depth=2),options.colors??=!0;let properties={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 ${nodeUtil.formatWithOptions(options,properties)}`}static setRequestSignal(request,newSignal){return request.#signal=newSignal,request}static getRequestDispatcher(request){return request.#dispatcher}static setRequestDispatcher(request,newDispatcher){request.#dispatcher=newDispatcher}static setRequestHeaders(request,newHeaders){request.#headers=newHeaders}static getRequestState(request){return request.#state}static setRequestState(request,newState){request.#state=newState}static removeRequestAbortListener(request){request.#abortCleanup?.()}},{setRequestSignal,getRequestDispatcher,setRequestDispatcher,setRequestHeaders,getRequestState,setRequestState,removeRequestAbortListener}=Request;Reflect.deleteProperty(Request,"setRequestSignal");Reflect.deleteProperty(Request,"getRequestDispatcher");Reflect.deleteProperty(Request,"setRequestDispatcher");Reflect.deleteProperty(Request,"setRequestHeaders");Reflect.deleteProperty(Request,"getRequestState");Reflect.deleteProperty(Request,"setRequestState");Reflect.deleteProperty(Request,"removeRequestAbortListener");mixinBody(Request,getRequestState);function makeRequest(init){return{method:init.method??"GET",localURLsOnly:init.localURLsOnly??!1,unsafeRequest:init.unsafeRequest??!1,body:init.body??null,client:init.client??null,reservedClient:init.reservedClient??null,replacesClientId:init.replacesClientId??"",window:init.window??"client",keepalive:init.keepalive??!1,serviceWorkers:init.serviceWorkers??"all",initiator:init.initiator??"",destination:init.destination??"",priority:init.priority??"auto",origin:init.origin??"client",policyContainer:init.policyContainer??"client",referrer:init.referrer??"client",referrerPolicy:init.referrerPolicy??"",mode:init.mode??"no-cors",useCORSPreflightFlag:init.useCORSPreflightFlag??!1,credentials:init.credentials??"same-origin",useCredentials:init.useCredentials??!1,cache:init.cache??"default",redirect:init.redirect??"follow",integrity:init.integrity??"",cryptoGraphicsNonceMetadata:init.cryptoGraphicsNonceMetadata??"",parserMetadata:init.parserMetadata??"",reloadNavigation:init.reloadNavigation??!1,historyNavigation:init.historyNavigation??!1,userActivation:init.userActivation??!1,taintedOrigin:init.taintedOrigin??!1,redirectCount:init.redirectCount??0,responseTainting:init.responseTainting??"basic",preventNoCacheCacheControlHeaderModification:init.preventNoCacheCacheControlHeaderModification??!1,done:init.done??!1,timingAllowFailed:init.timingAllowFailed??!1,useURLCredentials:init.useURLCredentials??void 0,traversableForUserPrompts:init.traversableForUserPrompts??"client",urlList:init.urlList,url:init.urlList[0],headersList:init.headersList?new HeadersList(init.headersList):new HeadersList}}function cloneRequest(request){let newRequest=makeRequest({...request,body:null});return request.body!=null&&(newRequest.body=cloneBody(request.body)),newRequest}function fromInnerRequest(innerRequest,dispatcher,signal,guard){let request=new Request(kConstruct);setRequestState(request,innerRequest),setRequestDispatcher(request,dispatcher),setRequestSignal(request,signal);let headers=new Headers2(kConstruct);return setRequestHeaders(request,headers),setHeadersList(headers,innerRequest.headersList),setHeadersGuard(headers,guard),request}Object.defineProperties(Request.prototype,{method:kEnumerableProperty,url:kEnumerableProperty,headers:kEnumerableProperty,redirect:kEnumerableProperty,clone:kEnumerableProperty,signal:kEnumerableProperty,duplex:kEnumerableProperty,destination:kEnumerableProperty,body:kEnumerableProperty,bodyUsed:kEnumerableProperty,isHistoryNavigation:kEnumerableProperty,isReloadNavigation:kEnumerableProperty,keepalive:kEnumerableProperty,integrity:kEnumerableProperty,cache:kEnumerableProperty,credentials:kEnumerableProperty,attribute:kEnumerableProperty,referrerPolicy:kEnumerableProperty,referrer:kEnumerableProperty,mode:kEnumerableProperty,[Symbol.toStringTag]:{value:"Request",configurable:!0}});webidl.is.Request=webidl.util.MakeTypeAssertion(Request);webidl.converters.RequestInfo=function(V){return typeof V=="string"?webidl.converters.USVString(V):webidl.is.Request(V)?V:webidl.converters.USVString(V)};webidl.converters.RequestInit=webidl.dictionaryConverter([{key:"method",converter:webidl.converters.ByteString},{key:"headers",converter:webidl.converters.HeadersInit},{key:"body",converter:webidl.nullableConverter(webidl.converters.BodyInit)},{key:"referrer",converter:webidl.converters.USVString},{key:"referrerPolicy",converter:webidl.converters.DOMString,allowedValues:referrerPolicy},{key:"mode",converter:webidl.converters.DOMString,allowedValues:requestMode},{key:"credentials",converter:webidl.converters.DOMString,allowedValues:requestCredentials},{key:"cache",converter:webidl.converters.DOMString,allowedValues:requestCache},{key:"redirect",converter:webidl.converters.DOMString,allowedValues:requestRedirect},{key:"integrity",converter:webidl.converters.DOMString},{key:"keepalive",converter:webidl.converters.boolean},{key:"signal",converter:webidl.nullableConverter(signal=>webidl.converters.AbortSignal(signal,"RequestInit","signal"))},{key:"window",converter:webidl.converters.any},{key:"duplex",converter:webidl.converters.DOMString,allowedValues:requestDuplex},{key:"dispatcher",converter:webidl.converters.any},{key:"priority",converter:webidl.converters.DOMString,allowedValues:["high","low","auto"]}]);module.exports={Request,makeRequest,fromInnerRequest,cloneRequest,getRequestDispatcher,getRequestState,removeRequestAbortListener}}});var require_subresource_integrity=__commonJS({"node_modules/undici/lib/web/subresource-integrity/subresource-integrity.js"(exports,module){"use strict";var assert=__require("node:assert"),{runtimeFeatures}=require_runtime_features(),validSRIHashAlgorithmTokenSet=new Map([["sha256",0],["sha384",1],["sha512",2]]),crypto4;if(runtimeFeatures.has("crypto")){crypto4=__require("node:crypto");let cryptoHashes=crypto4.getHashes();cryptoHashes.length===0&&validSRIHashAlgorithmTokenSet.clear();for(let algorithm of validSRIHashAlgorithmTokenSet.keys())cryptoHashes.includes(algorithm)===!1&&validSRIHashAlgorithmTokenSet.delete(algorithm)}else validSRIHashAlgorithmTokenSet.clear();var getSRIHashAlgorithmIndex=Map.prototype.get.bind(validSRIHashAlgorithmTokenSet),isValidSRIHashAlgorithm=Map.prototype.has.bind(validSRIHashAlgorithmTokenSet),bytesMatch=runtimeFeatures.has("crypto")===!1||validSRIHashAlgorithmTokenSet.size===0?()=>!0:(bytes,metadataList)=>{let parsedMetadata=parseMetadata(metadataList);if(parsedMetadata.length===0)return!0;let metadata=getStrongestMetadata(parsedMetadata);for(let item of metadata){let algorithm=item.alg,expectedValue=item.val,actualValue=applyAlgorithmToBytes(algorithm,bytes);if(caseSensitiveMatch(actualValue,expectedValue))return!0}return!1};function getStrongestMetadata(metadataList){let result2=[],strongest=null;for(let item of metadataList){if(assert(isValidSRIHashAlgorithm(item.alg),"Invalid SRI hash algorithm token"),result2.length===0){result2.push(item),strongest=item;continue}let currentAlgorithm=strongest.alg,currentAlgorithmIndex=getSRIHashAlgorithmIndex(currentAlgorithm),newAlgorithm=item.alg,newAlgorithmIndex=getSRIHashAlgorithmIndex(newAlgorithm);newAlgorithmIndex<currentAlgorithmIndex||(newAlgorithmIndex>currentAlgorithmIndex?(strongest=item,result2[0]=item,result2.length=1):result2.push(item))}return result2}function parseMetadata(metadata){let result2=[];for(let item of metadata.split(" ")){let algorithmExpression=item.split("?",1)[0],base64Value="",algorithmAndValue=[algorithmExpression.slice(0,6),algorithmExpression.slice(7)],algorithm=algorithmAndValue[0];if(!isValidSRIHashAlgorithm(algorithm))continue;algorithmAndValue[1]&&(base64Value=algorithmAndValue[1]);let metadata2={alg:algorithm,val:base64Value};result2.push(metadata2)}return result2}var applyAlgorithmToBytes=(algorithm,bytes)=>crypto4.hash(algorithm,bytes,"base64");function caseSensitiveMatch(actualValue,expectedValue){let actualValueLength=actualValue.length;actualValueLength!==0&&actualValue[actualValueLength-1]==="="&&(actualValueLength-=1),actualValueLength!==0&&actualValue[actualValueLength-1]==="="&&(actualValueLength-=1);let expectedValueLength=expectedValue.length;if(expectedValueLength!==0&&expectedValue[expectedValueLength-1]==="="&&(expectedValueLength-=1),expectedValueLength!==0&&expectedValue[expectedValueLength-1]==="="&&(expectedValueLength-=1),actualValueLength!==expectedValueLength)return!1;for(let i=0;i<actualValueLength;++i)if(!(actualValue[i]===expectedValue[i]||actualValue[i]==="+"&&expectedValue[i]==="-"||actualValue[i]==="/"&&expectedValue[i]==="_"))return!1;return!0}module.exports={applyAlgorithmToBytes,bytesMatch,caseSensitiveMatch,isValidSRIHashAlgorithm,getStrongestMetadata,parseMetadata}}});var require_fetch=__commonJS({"node_modules/undici/lib/web/fetch/index.js"(exports,module){"use strict";var{makeNetworkError,makeAppropriateNetworkError,filterResponse,makeResponse,fromInnerResponse,getResponseState}=require_response(),{HeadersList}=require_headers(),{Request,cloneRequest,getRequestDispatcher,getRequestState,removeRequestAbortListener}=require_request2(),zlib=__require("node:zlib"),{makePolicyContainer,clonePolicyContainer,requestBadPort,TAOCheck,appendRequestOriginHeader,responseLocationURL,requestCurrentURL,setRequestReferrerPolicyOnRedirect,tryUpgradeRequestToAPotentiallyTrustworthyURL,createOpaqueTimingInfo,appendFetchMetadata,corsCheck,crossOriginResourcePolicyCheck,determineRequestsReferrer,coarsenedSharedCurrentTime,sameOrigin,isCancelled,isAborted,isErrorLike,fullyReadBody,readableStreamClose,urlIsLocal,urlIsHttpHttpsScheme,urlHasHttpsScheme,clampAndCoarsenConnectionTimingInfo,simpleRangeHeaderValue,buildContentRange,createInflate,extractMimeType,hasAuthenticationEntry,includesCredentials,isTraversableNavigable}=require_util2(),assert=__require("node:assert"),{safelyExtractBody,extractBody}=require_body(),{redirectStatusSet,nullBodyStatus,safeMethodsSet,requestBodyHeader,subresourceSet}=require_constants3(),EE=__require("node:events"),{Readable:Readable2,pipeline:pipeline2,finished,isErrored,isReadable}=__require("node:stream"),{addAbortListener,bufferToLowerCasedHeaderName}=require_util(),{SocketError}=require_errors(),{dataURLProcessor,serializeAMimeType,minimizeSupportedMimeType}=require_data_url(),{getGlobalDispatcher}=require_global2(),{webidl}=require_webidl(),{STATUS_CODES}=__require("node:http"),{bytesMatch}=require_subresource_integrity(),{isomorphicEncode}=require_infra(),GET_OR_HEAD=["GET","HEAD"],defaultUserAgent=typeof __UNDICI_IS_NODE__<"u"||typeof esbuildDetection<"u"?"node":"undici",resolveObjectURL;function appendHeadersListFromResponseHeaders(headersList,headers,rawHeaders){if(Array.isArray(rawHeaders)){for(let i=0;i<rawHeaders.length;i+=2){let nameStr=bufferToLowerCasedHeaderName(rawHeaders[i]),value=rawHeaders[i+1];if(Array.isArray(value)&&!Buffer.isBuffer(value))for(let val of value)headersList.append(nameStr,val.toString("latin1"),!0);else headersList.append(nameStr,value.toString("latin1"),!0)}return}for(let[name,value]of Object.entries(headers??{}))if(Array.isArray(value))for(let entry of value)headersList.append(name,`${entry}`,!0);else headersList.append(name,`${value}`,!0)}var Fetch=class extends EE{constructor(dispatcher){super(),this.dispatcher=dispatcher,this.connection=null,this.dump=!1,this.state="ongoing"}terminate(reason){this.state==="ongoing"&&(this.state="terminated",this.connection?.destroy(reason),this.emit("terminated",reason))}abort(error){this.state==="ongoing"&&(this.state="aborted",error||(error=new DOMException("The operation was aborted.","AbortError")),this.serializedAbortReason=error,this.connection?.destroy(error),this.emit("terminated",error))}};function handleFetchDone(response){finalizeAndReportTiming(response,"fetch")}function fetch2(input2,init=void 0){webidl.argumentLengthCheck(arguments,1,"globalThis.fetch");let p=Promise.withResolvers(),requestObject;try{requestObject=new Request(input2,init)}catch(e){return p.reject(e),p.promise}let request=getRequestState(requestObject);if(requestObject.signal.aborted)return abortFetch(p,request,null,requestObject.signal.reason,null),p.promise;request.client.globalObject?.constructor?.name==="ServiceWorkerGlobalScope"&&(request.serviceWorkers="none");let responseObject=null,locallyAborted=!1,controller=null,removeAbortListener=addAbortListener(requestObject.signal,()=>{locallyAborted=!0,assert(controller!=null),controller.abort(requestObject.signal.reason);let realResponse=responseObject?.deref();abortFetch(p,request,realResponse,requestObject.signal.reason,controller.controller)}),cleanupAbortListeners=()=>{removeAbortListener(),removeRequestAbortListener(requestObject)};return controller=fetching({request,processResponseEndOfBody:response=>{handleFetchDone(response),cleanupAbortListeners()},processResponse:response=>{if(!locallyAborted){if(response.aborted){abortFetch(p,request,responseObject,controller.serializedAbortReason,controller.controller),cleanupAbortListeners();return}if(response.type==="error"){p.reject(new TypeError("fetch failed",{cause:response.error})),cleanupAbortListeners();return}responseObject=new WeakRef(fromInnerResponse(response,"immutable")),p.resolve(responseObject.deref()),p=null}},dispatcher:getRequestDispatcher(requestObject),requestObject}),p.promise}function finalizeAndReportTiming(response,initiatorType="other"){if(response.type==="error"&&response.aborted||!response.urlList?.length)return;let originalURL=response.urlList[0],timingInfo=response.timingInfo,cacheState=response.cacheState;urlIsHttpHttpsScheme(originalURL)&&timingInfo!==null&&(response.timingAllowPassed||(timingInfo=createOpaqueTimingInfo({startTime:timingInfo.startTime}),cacheState=""),timingInfo.endTime=coarsenedSharedCurrentTime(),response.timingInfo=timingInfo,markResourceTiming(timingInfo,originalURL.href,initiatorType,globalThis,cacheState,"",response.status))}var markResourceTiming=performance.markResourceTiming;function abortFetch(p,request,responseObject,error,controller){if(p&&p.reject(error),request.body?.stream!=null&&isReadable(request.body.stream)&&request.body.stream.cancel(error).catch(err=>{if(err.code!=="ERR_INVALID_STATE")throw err}),responseObject==null)return;let response=getResponseState(responseObject);response.body?.stream!=null&&isReadable(response.body.stream)&&controller.error(error)}function fetching({request,processRequestBodyChunkLength,processRequestEndOfBody,processResponse,processResponseEndOfBody,processResponseConsumeBody,useParallelQueue=!1,dispatcher=getGlobalDispatcher(),requestObject=null}){assert(dispatcher);let taskDestination=null,crossOriginIsolatedCapability=!1;request.client!=null&&(taskDestination=request.client.globalObject,crossOriginIsolatedCapability=request.client.crossOriginIsolatedCapability);let currentTime=coarsenedSharedCurrentTime(crossOriginIsolatedCapability),timingInfo=createOpaqueTimingInfo({startTime:currentTime}),fetchParams={controller:new Fetch(dispatcher),request,timingInfo,processRequestBodyChunkLength,processRequestEndOfBody,processResponse,processResponseConsumeBody,processResponseEndOfBody,taskDestination,crossOriginIsolatedCapability,requestObject};return assert(!request.body||request.body.stream),request.window==="client"&&(request.window=request.client?.globalObject?.constructor?.name==="Window"?request.client:"no-window"),request.origin==="client"&&(request.origin=request.client.origin),request.policyContainer==="client"&&(request.client!=null?request.policyContainer=clonePolicyContainer(request.client.policyContainer):request.policyContainer=makePolicyContainer()),request.headersList.contains("accept",!0)||request.headersList.append("accept","*/*",!0),request.headersList.contains("accept-language",!0)||request.headersList.append("accept-language","*",!0),request.priority,subresourceSet.has(request.destination),mainFetch(fetchParams,!1),fetchParams.controller}async function mainFetch(fetchParams,recursive){try{let request=fetchParams.request,response=null;if(request.localURLsOnly&&!urlIsLocal(requestCurrentURL(request))&&(response=makeNetworkError("local URLs only")),tryUpgradeRequestToAPotentiallyTrustworthyURL(request),requestBadPort(request)==="blocked"&&(response=makeNetworkError("bad port")),request.referrerPolicy===""&&(request.referrerPolicy=request.policyContainer.referrerPolicy),request.referrer!=="no-referrer"&&(request.referrer=determineRequestsReferrer(request)),response===null){let currentURL=requestCurrentURL(request);sameOrigin(currentURL,request.url)&&request.responseTainting==="basic"||currentURL.protocol==="data:"||request.mode==="navigate"||request.mode==="websocket"?(request.responseTainting="basic",response=await schemeFetch(fetchParams)):request.mode==="same-origin"?response=makeNetworkError('request mode cannot be "same-origin"'):request.mode==="no-cors"?request.redirect!=="follow"?response=makeNetworkError('redirect mode cannot be "follow" for "no-cors" request'):(request.responseTainting="opaque",response=await schemeFetch(fetchParams)):urlIsHttpHttpsScheme(requestCurrentURL(request))?(request.responseTainting="cors",response=await httpFetch(fetchParams)):response=makeNetworkError("URL scheme must be a HTTP(S) scheme")}if(recursive)return response;response.status!==0&&!response.internalResponse&&(request.responseTainting,request.responseTainting==="basic"?response=filterResponse(response,"basic"):request.responseTainting==="cors"?response=filterResponse(response,"cors"):request.responseTainting==="opaque"?response=filterResponse(response,"opaque"):assert(!1));let internalResponse=response.status===0?response:response.internalResponse;if(internalResponse.urlList.length===0&&internalResponse.urlList.push(...request.urlList),request.timingAllowFailed||(response.timingAllowPassed=!0),response.type==="opaque"&&internalResponse.status===206&&internalResponse.rangeRequested&&!request.headers.contains("range",!0)&&(response=internalResponse=makeNetworkError()),response.status!==0&&(request.method==="HEAD"||request.method==="CONNECT"||nullBodyStatus.includes(internalResponse.status))&&(internalResponse.body=null,fetchParams.controller.dump=!0),request.integrity){let processBodyError=reason=>fetchFinale(fetchParams,makeNetworkError(reason));if(request.responseTainting==="opaque"||response.body==null){processBodyError(response.error);return}let processBody=bytes=>{if(!bytesMatch(bytes,request.integrity)){processBodyError("integrity mismatch");return}response.body=safelyExtractBody(bytes)[0],fetchFinale(fetchParams,response)};fullyReadBody(response.body,processBody,processBodyError)}else fetchFinale(fetchParams,response)}catch(err){fetchParams.controller.terminate(err)}}function schemeFetch(fetchParams){if(isCancelled(fetchParams)&&fetchParams.request.redirectCount===0)return Promise.resolve(makeAppropriateNetworkError(fetchParams));let{request}=fetchParams,{protocol:scheme}=requestCurrentURL(request);switch(scheme){case"about:":return Promise.resolve(makeNetworkError("about scheme is not supported"));case"blob:":{resolveObjectURL||(resolveObjectURL=__require("node:buffer").resolveObjectURL);let blobURLEntry=requestCurrentURL(request);if(blobURLEntry.search.length!==0)return Promise.resolve(makeNetworkError("NetworkError when attempting to fetch resource."));let blob=resolveObjectURL(blobURLEntry.toString());if(request.method!=="GET"||!webidl.is.Blob(blob))return Promise.resolve(makeNetworkError("invalid method"));let response=makeResponse(),fullLength=blob.size,serializedFullLength=isomorphicEncode(`${fullLength}`),type=blob.type;if(request.headersList.contains("range",!0)){response.rangeRequested=!0;let rangeHeader=request.headersList.get("range",!0),rangeValue=simpleRangeHeaderValue(rangeHeader,!0);if(rangeValue==="failure")return Promise.resolve(makeNetworkError("failed to fetch the data URL"));let{rangeStartValue:rangeStart,rangeEndValue:rangeEnd}=rangeValue;if(rangeStart===null)rangeStart=fullLength-rangeEnd,rangeEnd=rangeStart+rangeEnd-1;else{if(rangeStart>=fullLength)return Promise.resolve(makeNetworkError("Range start is greater than the blob's size."));(rangeEnd===null||rangeEnd>=fullLength)&&(rangeEnd=fullLength-1)}let slicedBlob=blob.slice(rangeStart,rangeEnd+1,type),slicedBodyWithType=extractBody(slicedBlob);response.body=slicedBodyWithType[0];let serializedSlicedLength=isomorphicEncode(`${slicedBlob.size}`),contentRange=buildContentRange(rangeStart,rangeEnd,fullLength);response.status=206,response.statusText="Partial Content",response.headersList.set("content-length",serializedSlicedLength,!0),response.headersList.set("content-type",type,!0),response.headersList.set("content-range",contentRange,!0)}else{let bodyWithType=extractBody(blob);response.statusText="OK",response.body=bodyWithType[0],response.headersList.set("content-length",serializedFullLength,!0),response.headersList.set("content-type",type,!0)}return Promise.resolve(response)}case"data:":{let currentURL=requestCurrentURL(request),dataURLStruct=dataURLProcessor(currentURL);if(dataURLStruct==="failure")return Promise.resolve(makeNetworkError("failed to fetch the data URL"));let mimeType=serializeAMimeType(dataURLStruct.mimeType);return Promise.resolve(makeResponse({statusText:"OK",headersList:[["content-type",{name:"Content-Type",value:mimeType}]],body:safelyExtractBody(dataURLStruct.body)[0]}))}case"file:":return Promise.resolve(makeNetworkError("not implemented... yet..."));case"http:":case"https:":return httpFetch(fetchParams).catch(err=>makeNetworkError(err));default:return Promise.resolve(makeNetworkError("unknown scheme"))}}function finalizeResponse(fetchParams,response){fetchParams.request.done=!0,fetchParams.processResponseDone!=null&&queueMicrotask(()=>fetchParams.processResponseDone(response))}function fetchFinale(fetchParams,response){let timingInfo=fetchParams.timingInfo,processResponseEndOfBody=()=>{let unsafeEndTime=Date.now();fetchParams.request.destination==="document"&&(fetchParams.controller.fullTimingInfo=timingInfo),fetchParams.controller.reportTimingSteps=()=>{if(!urlIsHttpHttpsScheme(fetchParams.request.url))return;timingInfo.endTime=unsafeEndTime;let cacheState=response.cacheState,bodyInfo=response.bodyInfo;response.timingAllowPassed||(timingInfo=createOpaqueTimingInfo(timingInfo),cacheState="");let responseStatus=0;if(fetchParams.request.mode!=="navigate"||!response.hasCrossOriginRedirects){responseStatus=response.status;let mimeType=extractMimeType(response.headersList);mimeType!=="failure"&&(bodyInfo.contentType=minimizeSupportedMimeType(mimeType))}fetchParams.request.initiatorType!=null&&markResourceTiming(timingInfo,fetchParams.request.url.href,fetchParams.request.initiatorType,globalThis,cacheState,bodyInfo,responseStatus)};let processResponseEndOfBodyTask=()=>{fetchParams.request.done=!0,fetchParams.processResponseEndOfBody!=null&&queueMicrotask(()=>fetchParams.processResponseEndOfBody(response)),fetchParams.request.initiatorType!=null&&fetchParams.controller.reportTimingSteps()};queueMicrotask(()=>processResponseEndOfBodyTask())};fetchParams.processResponse!=null&&queueMicrotask(()=>{fetchParams.processResponse(response),fetchParams.processResponse=null});let internalResponse=response.type==="error"?response:response.internalResponse??response;internalResponse.body==null?processResponseEndOfBody():finished(internalResponse.body.stream,()=>{processResponseEndOfBody()})}async function httpFetch(fetchParams){let request=fetchParams.request,response=null,actualResponse=null,timingInfo=fetchParams.timingInfo;if(request.serviceWorkers,response===null){if(request.redirect==="follow"&&(request.serviceWorkers="none"),actualResponse=response=await httpNetworkOrCacheFetch(fetchParams),request.responseTainting==="cors"&&corsCheck(request,response)==="failure")return makeNetworkError("cors failure");TAOCheck(request,response)==="failure"&&(request.timingAllowFailed=!0)}return(request.responseTainting==="opaque"||response.type==="opaque")&&crossOriginResourcePolicyCheck(request.origin,request.client,request.destination,actualResponse)==="blocked"?makeNetworkError("blocked"):(redirectStatusSet.has(actualResponse.status)&&(request.redirect!=="manual"&&fetchParams.controller.connection.destroy(void 0,!1),request.redirect==="error"?response=makeNetworkError("unexpected redirect"):request.redirect==="manual"?response=actualResponse:request.redirect==="follow"?response=await httpRedirectFetch(fetchParams,response):assert(!1)),response.timingInfo=timingInfo,response)}function httpRedirectFetch(fetchParams,response){let request=fetchParams.request,actualResponse=response.internalResponse?response.internalResponse:response,locationURL;try{if(locationURL=responseLocationURL(actualResponse,requestCurrentURL(request).hash),locationURL==null)return response}catch(err){return Promise.resolve(makeNetworkError(err))}if(!urlIsHttpHttpsScheme(locationURL))return Promise.resolve(makeNetworkError("URL scheme must be a HTTP(S) scheme"));if(request.redirectCount===20)return Promise.resolve(makeNetworkError("redirect count exceeded"));if(request.redirectCount+=1,request.mode==="cors"&&(locationURL.username||locationURL.password)&&!sameOrigin(request,locationURL))return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"'));if(request.responseTainting==="cors"&&(locationURL.username||locationURL.password))return Promise.resolve(makeNetworkError('URL cannot contain credentials for request mode "cors"'));if(actualResponse.status!==303&&request.body!=null&&request.body.source==null)return Promise.resolve(makeNetworkError());if([301,302].includes(actualResponse.status)&&request.method==="POST"||actualResponse.status===303&&!GET_OR_HEAD.includes(request.method)){request.method="GET",request.body=null;for(let headerName of requestBodyHeader)request.headersList.delete(headerName)}sameOrigin(requestCurrentURL(request),locationURL)||(request.headersList.delete("authorization",!0),request.headersList.delete("proxy-authorization",!0),request.headersList.delete("cookie",!0),request.headersList.delete("host",!0)),request.body!=null&&(assert(request.body.source!=null),request.body=safelyExtractBody(request.body.source)[0]);let timingInfo=fetchParams.timingInfo;return timingInfo.redirectEndTime=timingInfo.postRedirectStartTime=coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability),timingInfo.redirectStartTime===0&&(timingInfo.redirectStartTime=timingInfo.startTime),request.urlList.push(locationURL),setRequestReferrerPolicyOnRedirect(request,actualResponse),mainFetch(fetchParams,!0)}async function httpNetworkOrCacheFetch(fetchParams,isAuthenticationFetch=!1,isNewConnectionFetch=!1){let request=fetchParams.request,httpFetchParams=null,httpRequest=null,response=null,httpCache=null,revalidatingFlag=!1;request.window==="no-window"&&request.redirect==="error"?(httpFetchParams=fetchParams,httpRequest=request):(request.body?.source!=null?httpRequest=cloneRequest(request):(httpRequest=cloneRequest({...request,body:null}),httpRequest.body=request.body),httpFetchParams={...fetchParams},httpFetchParams.request=httpRequest);let includeCredentials=request.credentials==="include"||request.credentials==="same-origin"&&request.responseTainting==="basic",contentLength=httpRequest.body?httpRequest.body.length:null,contentLengthHeaderValue=null;if(httpRequest.body==null&&["POST","PUT"].includes(httpRequest.method)&&(contentLengthHeaderValue="0"),contentLength!=null&&(contentLengthHeaderValue=isomorphicEncode(`${contentLength}`)),contentLengthHeaderValue!=null&&!httpRequest.headersList.contains("content-length",!0)&&httpRequest.headersList.append("content-length",contentLengthHeaderValue,!0),contentLength!=null&&httpRequest.keepalive,webidl.is.URL(httpRequest.referrer)&&httpRequest.headersList.append("referer",isomorphicEncode(httpRequest.referrer.href),!0),appendRequestOriginHeader(httpRequest),appendFetchMetadata(httpRequest),httpRequest.headersList.contains("user-agent",!0)||httpRequest.headersList.append("user-agent",defaultUserAgent,!0),httpRequest.cache==="default"&&(httpRequest.headersList.contains("if-modified-since",!0)||httpRequest.headersList.contains("if-none-match",!0)||httpRequest.headersList.contains("if-unmodified-since",!0)||httpRequest.headersList.contains("if-match",!0)||httpRequest.headersList.contains("if-range",!0))&&(httpRequest.cache="no-store"),httpRequest.cache==="no-cache"&&!httpRequest.preventNoCacheCacheControlHeaderModification&&!httpRequest.headersList.contains("cache-control",!0)&&httpRequest.headersList.append("cache-control","max-age=0",!0),(httpRequest.cache==="no-store"||httpRequest.cache==="reload")&&(httpRequest.headersList.contains("pragma",!0)||httpRequest.headersList.append("pragma","no-cache",!0),httpRequest.headersList.contains("cache-control",!0)||httpRequest.headersList.append("cache-control","no-cache",!0)),httpRequest.headersList.contains("range",!0)&&httpRequest.headersList.append("accept-encoding","identity",!0),httpRequest.headersList.contains("accept-encoding",!0)||(urlHasHttpsScheme(requestCurrentURL(httpRequest))?httpRequest.headersList.append("accept-encoding","br, gzip, deflate, zstd",!0):httpRequest.headersList.append("accept-encoding","gzip, deflate",!0)),httpRequest.headersList.delete("host",!0),includeCredentials&&!httpRequest.headersList.contains("authorization",!0)){let authorizationValue=null;if(!(hasAuthenticationEntry(httpRequest)&&(httpRequest.useURLCredentials===void 0||!includesCredentials(requestCurrentURL(httpRequest))))){if(includesCredentials(requestCurrentURL(httpRequest))&&isAuthenticationFetch){let{username,password}=requestCurrentURL(httpRequest);authorizationValue=`Basic ${Buffer.from(`${username}:${password}`).toString("base64")}`}}authorizationValue!==null&&httpRequest.headersList.append("Authorization",authorizationValue,!1)}if(httpCache==null&&(httpRequest.cache="no-store"),httpRequest.cache!=="no-store"&&httpRequest.cache,response==null){if(httpRequest.cache==="only-if-cached")return makeNetworkError("only if cached");let forwardResponse=await httpNetworkFetch(httpFetchParams,includeCredentials,isNewConnectionFetch);!safeMethodsSet.has(httpRequest.method)&&forwardResponse.status>=200&&forwardResponse.status<=399,revalidatingFlag&&forwardResponse.status,response==null&&(response=forwardResponse)}if(response.urlList=[...httpRequest.urlList],httpRequest.headersList.contains("range",!0)&&(response.rangeRequested=!0),response.requestIncludesCredentials=includeCredentials,response.status===401&&httpRequest.responseTainting!=="cors"&&includeCredentials&&(request.useURLCredentials!==void 0||isTraversableNavigable(request.traversableForUserPrompts))){if(request.body!=null){if(request.body.source==null)return response;request.body=safelyExtractBody(request.body.source)[0]}if(request.useURLCredentials===void 0||isAuthenticationFetch)return isCancelled(fetchParams)?makeAppropriateNetworkError(fetchParams):response;fetchParams.controller.connection.destroy(),response=await httpNetworkOrCacheFetch(fetchParams,!0)}if(response.status===407)return request.window==="no-window"?makeNetworkError():isCancelled(fetchParams)?makeAppropriateNetworkError(fetchParams):makeNetworkError("proxy authentication required");if(response.status===421&&!isNewConnectionFetch&&(request.body==null||request.body.source!=null)){if(isCancelled(fetchParams))return makeAppropriateNetworkError(fetchParams);fetchParams.controller.connection.destroy(),response=await httpNetworkOrCacheFetch(fetchParams,isAuthenticationFetch,!0)}return response}async function httpNetworkFetch(fetchParams,includeCredentials=!1,forceNewConnection=!1){assert(!fetchParams.controller.connection||fetchParams.controller.connection.destroyed),fetchParams.controller.connection={abort:null,destroyed:!1,destroy(err,abort=!0){this.destroyed||(this.destroyed=!0,abort&&this.abort?.(err??new DOMException("The operation was aborted.","AbortError")))}};let request=fetchParams.request,response=null,timingInfo=fetchParams.timingInfo;null==null&&(request.cache="no-store");let newConnection=forceNewConnection?"yes":"no";request.mode;let requestBody=null;if(request.body==null&&fetchParams.processRequestEndOfBody)queueMicrotask(()=>fetchParams.processRequestEndOfBody());else if(request.body!=null){let processBodyChunk=async function*(bytes){isCancelled(fetchParams)||(yield bytes,fetchParams.processRequestBodyChunkLength?.(bytes.byteLength))},processEndOfBody=()=>{isCancelled(fetchParams)||fetchParams.processRequestEndOfBody&&fetchParams.processRequestEndOfBody()},processBodyError=e=>{isCancelled(fetchParams)||(e.name==="AbortError"?fetchParams.controller.abort():fetchParams.controller.terminate(e))};requestBody=(async function*(){try{for await(let bytes of request.body.stream)yield*processBodyChunk(bytes);processEndOfBody()}catch(err){processBodyError(err)}})()}try{let{body,status,statusText,headersList,socket}=await dispatch({body:requestBody});if(socket)response=makeResponse({status,statusText,headersList,socket});else{let iterator=body[Symbol.asyncIterator]();fetchParams.controller.next=()=>iterator.next(),response=makeResponse({status,statusText,headersList})}}catch(err){return err.name==="AbortError"?(fetchParams.controller.connection.destroy(),makeAppropriateNetworkError(fetchParams,err)):makeNetworkError(err)}let pullAlgorithm=()=>fetchParams.controller.resume(),cancelAlgorithm=reason=>{isCancelled(fetchParams)||fetchParams.controller.abort(reason)},stream2=new ReadableStream({start(controller){fetchParams.controller.controller=controller},pull:pullAlgorithm,cancel:cancelAlgorithm,type:"bytes"});response.body={stream:stream2,source:null,length:null},fetchParams.controller.resume||fetchParams.controller.on("terminated",onAborted),fetchParams.controller.resume=async()=>{for(;;){let bytes,isFailure;try{let{done,value}=await fetchParams.controller.next();if(isAborted(fetchParams))break;bytes=done?void 0:value}catch(err){fetchParams.controller.ended&&!timingInfo.encodedBodySize?bytes=void 0:(bytes=err,isFailure=!0)}if(bytes===void 0){readableStreamClose(fetchParams.controller.controller),finalizeResponse(fetchParams,response);return}if(timingInfo.decodedBodySize+=bytes?.byteLength??0,isFailure){fetchParams.controller.terminate(bytes);return}let buffer=new Uint8Array(bytes);if(buffer.byteLength&&fetchParams.controller.controller.enqueue(buffer),isErrored(stream2)){fetchParams.controller.terminate();return}if(fetchParams.controller.controller.desiredSize<=0)return}};function onAborted(reason){isAborted(fetchParams)?(response.aborted=!0,isReadable(stream2)&&fetchParams.controller.controller.error(fetchParams.controller.serializedAbortReason)):isReadable(stream2)&&fetchParams.controller.controller.error(new TypeError("terminated",{cause:isErrorLike(reason)?reason:void 0})),fetchParams.controller.connection.destroy()}return response;function dispatch({body}){let url=requestCurrentURL(request),agent=fetchParams.controller.dispatcher,path10=url.pathname+url.search,hasTrailingQuestionMark=url.search.length===0&&url.href[url.href.length-url.hash.length-1]==="?";return dispatchWithProtocolPreference(body);function dispatchWithProtocolPreference(body2,allowH2){return new Promise((resolve17,reject)=>agent.dispatch({path:hasTrailingQuestionMark?`${path10}?`:path10,origin:url.origin,method:request.method,body:agent.isMockActive?request.body&&(request.body.source||request.body.stream):body2,__mockAgentBodyForDispatch:body2,headers:request.headersList.entries,maxRedirections:0,upgrade:request.mode==="websocket"?"websocket":void 0,...allowH2===!1?{allowH2}:null},{body:null,abort:null,onRequestStart(controller){let{connection}=fetchParams.controller;timingInfo.finalConnectionTimingInfo=clampAndCoarsenConnectionTimingInfo(void 0,timingInfo.postRedirectStartTime,fetchParams.crossOriginIsolatedCapability);let abort=reason=>controller.abort(reason);connection.destroyed?abort(new DOMException("The operation was aborted.","AbortError")):(fetchParams.controller.on("terminated",abort),this.abort=connection.abort=abort),timingInfo.finalNetworkRequestStartTime=coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability)},onResponseStarted(){timingInfo.finalNetworkResponseStartTime=coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability)},onResponseStart(controller,status,headers,statusText){if(status<200)return;let rawHeaders=controller?.rawHeaders??[],headersList=new HeadersList;appendHeadersListFromResponseHeaders(headersList,headers,rawHeaders);let location=headersList.get("location",!0);this.body=new Readable2({read:()=>controller.resume()});let willFollow=location&&request.redirect==="follow"&&redirectStatusSet.has(status),decoders=[];if(request.method!=="HEAD"&&request.method!=="CONNECT"&&!nullBodyStatus.includes(status)&&!willFollow){let contentEncoding=headersList.get("content-encoding",!0),codings=contentEncoding?contentEncoding.toLowerCase().split(","):[],maxContentEncodings=5;if(codings.length>maxContentEncodings){reject(new Error(`too many content-encodings in response: ${codings.length}, maximum allowed is ${maxContentEncodings}`));return}for(let i=codings.length-1;i>=0;--i){let coding=codings[i].trim();if(coding==="x-gzip"||coding==="gzip")decoders.push(zlib.createGunzip({flush:zlib.constants.Z_SYNC_FLUSH,finishFlush:zlib.constants.Z_SYNC_FLUSH}));else if(coding==="deflate")decoders.push(createInflate({flush:zlib.constants.Z_SYNC_FLUSH,finishFlush:zlib.constants.Z_SYNC_FLUSH}));else if(coding==="br")decoders.push(zlib.createBrotliDecompress({flush:zlib.constants.BROTLI_OPERATION_FLUSH,finishFlush:zlib.constants.BROTLI_OPERATION_FLUSH}));else if(coding==="zstd")decoders.push(zlib.createZstdDecompress({flush:zlib.constants.ZSTD_e_continue,finishFlush:zlib.constants.ZSTD_e_end}));else{decoders.length=0;break}}}let onError=err=>this.onResponseError(controller,err);resolve17({status,statusText,headersList,body:decoders.length?pipeline2(this.body,...decoders,err=>{err&&this.onResponseError(controller,err)}).on("error",onError):this.body.on("error",onError)})},onResponseData(controller,chunk2){if(fetchParams.controller.dump)return;let bytes=chunk2;timingInfo.encodedBodySize+=bytes.byteLength,this.body.push(bytes)===!1&&controller.pause()},onResponseEnd(){this.abort&&fetchParams.controller.off("terminated",this.abort),fetchParams.controller.ended=!0,this.body?.push(null)},onResponseError(_controller,error){if(this.abort&&fetchParams.controller.off("terminated",this.abort),request.mode==="websocket"&&allowH2!==!1&&error?.code==="UND_ERR_INFO"&&error?.message==="HTTP/2: Extended CONNECT protocol not supported by server"){resolve17(dispatchWithProtocolPreference(body2,!1));return}this.body?.destroy(error),fetchParams.controller.terminate(error),reject(error)},onRequestUpgrade(controller,status,headers,socket){if(socket.session!=null&&status!==200||socket.session==null&&status!==101)return socket.session!=null&&controller.abort(new SocketError("bad upgrade",null)),!1;let rawHeaders=controller?.rawHeaders??[],headersList=new HeadersList;return appendHeadersListFromResponseHeaders(headersList,headers,rawHeaders),resolve17({status,statusText:STATUS_CODES[status],headersList,socket}),!0}}))}}}module.exports={fetch:fetch2,Fetch,fetching,finalizeAndReportTiming}}});var require_util3=__commonJS({"node_modules/undici/lib/web/cache/util.js"(exports,module){"use strict";var assert=__require("node:assert"),{URLSerializer}=require_data_url(),{isValidHeaderName}=require_util2();function urlEquals(A,B,excludeFragment=!1){let serializedA=URLSerializer(A,excludeFragment),serializedB=URLSerializer(B,excludeFragment);return serializedA===serializedB}function getFieldValues(header){assert(header!==null);let values=[];for(let value of header.split(","))value=value.trim(),isValidHeaderName(value)&&values.push(value);return values}module.exports={urlEquals,getFieldValues}}});var require_cache3=__commonJS({"node_modules/undici/lib/web/cache/cache.js"(exports,module){"use strict";var assert=__require("node:assert"),{kConstruct}=require_symbols(),{urlEquals,getFieldValues}=require_util3(),{kEnumerableProperty,isDisturbed}=require_util(),{webidl}=require_webidl(),{cloneResponse,fromInnerResponse,getResponseState}=require_response(),{Request,fromInnerRequest,getRequestState}=require_request2(),{fetching}=require_fetch(),{urlIsHttpHttpsScheme,readAllBytes}=require_util2(),Cache=class _Cache{#relevantRequestResponseList;constructor(){arguments[0]!==kConstruct&&webidl.illegalConstructor(),webidl.util.markAsUncloneable(this),this.#relevantRequestResponseList=arguments[1]}async match(request,options={}){webidl.brandCheck(this,_Cache);let prefix="Cache.match";webidl.argumentLengthCheck(arguments,1,prefix),request=webidl.converters.RequestInfo(request),options=webidl.converters.CacheQueryOptions(options,prefix,"options");let p=this.#internalMatchAll(request,options,1);if(p.length!==0)return p[0]}async matchAll(request=void 0,options={}){webidl.brandCheck(this,_Cache);let prefix="Cache.matchAll";return request!==void 0&&(request=webidl.converters.RequestInfo(request)),options=webidl.converters.CacheQueryOptions(options,prefix,"options"),this.#internalMatchAll(request,options)}async add(request){webidl.brandCheck(this,_Cache),webidl.argumentLengthCheck(arguments,1,"Cache.add"),request=webidl.converters.RequestInfo(request);let requests=[request];return await this.addAll(requests)}async addAll(requests){webidl.brandCheck(this,_Cache);let prefix="Cache.addAll";webidl.argumentLengthCheck(arguments,1,prefix);let responsePromises=[],requestList=[];for(let request of requests){if(request===void 0)throw webidl.errors.conversionFailed({prefix,argument:"Argument 1",types:["undefined is not allowed"]});if(request=webidl.converters.RequestInfo(request),typeof request=="string")continue;let r=getRequestState(request);if(!urlIsHttpHttpsScheme(r.url)||r.method!=="GET")throw webidl.errors.exception({header:prefix,message:"Expected http/s scheme when method is not GET."})}let fetchControllers=[];for(let request of requests){let r=getRequestState(new Request(request));if(!urlIsHttpHttpsScheme(r.url))throw webidl.errors.exception({header:prefix,message:"Expected http/s scheme."});r.initiator="fetch",r.destination="subresource",requestList.push(r);let responsePromise=Promise.withResolvers();fetchControllers.push(fetching({request:r,processResponse(response){if(response.type==="error"||response.status===206||response.status<200||response.status>299)responsePromise.reject(webidl.errors.exception({header:"Cache.addAll",message:"Received an invalid status code or the request failed."}));else if(response.headersList.contains("vary")){let fieldValues=getFieldValues(response.headersList.get("vary"));for(let fieldValue of fieldValues)if(fieldValue==="*"){responsePromise.reject(webidl.errors.exception({header:"Cache.addAll",message:"invalid vary field value"}));for(let controller of fetchControllers)controller.abort();return}}},processResponseEndOfBody(response){if(response.aborted){responsePromise.reject(new DOMException("aborted","AbortError"));return}responsePromise.resolve(response)}})),responsePromises.push(responsePromise.promise)}let responses=await Promise.all(responsePromises),operations=[],index=0;for(let response of responses){let operation={type:"put",request:requestList[index],response};operations.push(operation),index++}let cacheJobPromise=Promise.withResolvers(),errorData=null;try{this.#batchCacheOperations(operations)}catch(e){errorData=e}return queueMicrotask(()=>{errorData===null?cacheJobPromise.resolve(void 0):cacheJobPromise.reject(errorData)}),cacheJobPromise.promise}async put(request,response){webidl.brandCheck(this,_Cache);let prefix="Cache.put";webidl.argumentLengthCheck(arguments,2,prefix),request=webidl.converters.RequestInfo(request),response=webidl.converters.Response(response,prefix,"response");let innerRequest=null;if(webidl.is.Request(request)?innerRequest=getRequestState(request):innerRequest=getRequestState(new Request(request)),!urlIsHttpHttpsScheme(innerRequest.url)||innerRequest.method!=="GET")throw webidl.errors.exception({header:prefix,message:"Expected an http/s scheme when method is not GET"});let innerResponse=getResponseState(response);if(innerResponse.status===206)throw webidl.errors.exception({header:prefix,message:"Got 206 status"});if(innerResponse.headersList.contains("vary")){let fieldValues=getFieldValues(innerResponse.headersList.get("vary"));for(let fieldValue of fieldValues)if(fieldValue==="*")throw webidl.errors.exception({header:prefix,message:"Got * vary field value"})}if(innerResponse.body&&(isDisturbed(innerResponse.body.stream)||innerResponse.body.stream.locked))throw webidl.errors.exception({header:prefix,message:"Response body is locked or disturbed"});let clonedResponse=cloneResponse(innerResponse),bodyReadPromise=Promise.withResolvers();if(innerResponse.body!=null){let reader=innerResponse.body.stream.getReader();readAllBytes(reader,bodyReadPromise.resolve,bodyReadPromise.reject)}else bodyReadPromise.resolve(void 0);let operations=[],operation={type:"put",request:innerRequest,response:clonedResponse};operations.push(operation);let bytes=await bodyReadPromise.promise;clonedResponse.body!=null&&(clonedResponse.body.source=bytes);let cacheJobPromise=Promise.withResolvers(),errorData=null;try{this.#batchCacheOperations(operations)}catch(e){errorData=e}return queueMicrotask(()=>{errorData===null?cacheJobPromise.resolve():cacheJobPromise.reject(errorData)}),cacheJobPromise.promise}async delete(request,options={}){webidl.brandCheck(this,_Cache);let prefix="Cache.delete";webidl.argumentLengthCheck(arguments,1,prefix),request=webidl.converters.RequestInfo(request),options=webidl.converters.CacheQueryOptions(options,prefix,"options");let r=null;if(webidl.is.Request(request)){if(r=getRequestState(request),r.method!=="GET"&&!options.ignoreMethod)return!1}else assert(typeof request=="string"),r=getRequestState(new Request(request));let operations=[],operation={type:"delete",request:r,options};operations.push(operation);let cacheJobPromise=Promise.withResolvers(),errorData=null,requestResponses;try{requestResponses=this.#batchCacheOperations(operations)}catch(e){errorData=e}return queueMicrotask(()=>{errorData===null?cacheJobPromise.resolve(!!requestResponses?.length):cacheJobPromise.reject(errorData)}),cacheJobPromise.promise}async keys(request=void 0,options={}){webidl.brandCheck(this,_Cache);let prefix="Cache.keys";request!==void 0&&(request=webidl.converters.RequestInfo(request)),options=webidl.converters.CacheQueryOptions(options,prefix,"options");let r=null;if(request!==void 0)if(webidl.is.Request(request)){if(r=getRequestState(request),r.method!=="GET"&&!options.ignoreMethod)return[]}else typeof request=="string"&&(r=getRequestState(new Request(request)));let promise=Promise.withResolvers(),requests=[];if(request===void 0)for(let requestResponse of this.#relevantRequestResponseList)requests.push(requestResponse[0]);else{let requestResponses=this.#queryCache(r,options);for(let requestResponse of requestResponses)requests.push(requestResponse[0])}return queueMicrotask(()=>{let requestList=[];for(let request2 of requests){let requestObject=fromInnerRequest(request2,void 0,new AbortController().signal,"immutable");requestList.push(requestObject)}promise.resolve(Object.freeze(requestList))}),promise.promise}#batchCacheOperations(operations){let cache2=this.#relevantRequestResponseList,backupCache=[...cache2],addedItems=[],resultList=[];try{for(let operation of operations){if(operation.type!=="delete"&&operation.type!=="put")throw webidl.errors.exception({header:"Cache.#batchCacheOperations",message:'operation type does not match "delete" or "put"'});if(operation.type==="delete"&&operation.response!=null)throw webidl.errors.exception({header:"Cache.#batchCacheOperations",message:"delete operation should not have an associated response"});if(this.#queryCache(operation.request,operation.options,addedItems).length)throw new DOMException("???","InvalidStateError");let requestResponses;if(operation.type==="delete"){if(requestResponses=this.#queryCache(operation.request,operation.options),requestResponses.length===0)return[];for(let requestResponse of requestResponses){let idx=cache2.indexOf(requestResponse);assert(idx!==-1),cache2.splice(idx,1)}}else if(operation.type==="put"){if(operation.response==null)throw webidl.errors.exception({header:"Cache.#batchCacheOperations",message:"put operation should have an associated response"});let r=operation.request;if(!urlIsHttpHttpsScheme(r.url))throw webidl.errors.exception({header:"Cache.#batchCacheOperations",message:"expected http or https scheme"});if(r.method!=="GET")throw webidl.errors.exception({header:"Cache.#batchCacheOperations",message:"not get method"});if(operation.options!=null)throw webidl.errors.exception({header:"Cache.#batchCacheOperations",message:"options must not be defined"});requestResponses=this.#queryCache(operation.request);for(let requestResponse of requestResponses){let idx=cache2.indexOf(requestResponse);assert(idx!==-1),cache2.splice(idx,1)}cache2.push([operation.request,operation.response]),addedItems.push([operation.request,operation.response])}resultList.push([operation.request,operation.response])}return resultList}catch(e){throw this.#relevantRequestResponseList.length=0,this.#relevantRequestResponseList=backupCache,e}}#queryCache(requestQuery,options,targetStorage){let resultList=[],storage=targetStorage??this.#relevantRequestResponseList;for(let requestResponse of storage){let[cachedRequest,cachedResponse]=requestResponse;this.#requestMatchesCachedItem(requestQuery,cachedRequest,cachedResponse,options)&&resultList.push(requestResponse)}return resultList}#requestMatchesCachedItem(requestQuery,request,response=null,options){let queryURL=new URL(requestQuery.url),cachedURL=new URL(request.url);if(options?.ignoreSearch&&(cachedURL.search="",queryURL.search=""),!urlEquals(queryURL,cachedURL,!0))return!1;if(response==null||options?.ignoreVary||!response.headersList.contains("vary"))return!0;let fieldValues=getFieldValues(response.headersList.get("vary"));for(let fieldValue of fieldValues){if(fieldValue==="*")return!1;let requestValue=request.headersList.get(fieldValue),queryValue=requestQuery.headersList.get(fieldValue);if(requestValue!==queryValue)return!1}return!0}#internalMatchAll(request,options,maxResponses=1/0){let r=null;if(request!==void 0)if(webidl.is.Request(request)){if(r=getRequestState(request),r.method!=="GET"&&!options.ignoreMethod)return[]}else typeof request=="string"&&(r=getRequestState(new Request(request)));let responses=[];if(request===void 0)for(let requestResponse of this.#relevantRequestResponseList)responses.push(requestResponse[1]);else{let requestResponses=this.#queryCache(r,options);for(let requestResponse of requestResponses)responses.push(requestResponse[1])}let responseList=[];for(let response of responses){let responseObject=fromInnerResponse(cloneResponse(response),"immutable");if(responseList.push(responseObject),responseList.length>=maxResponses)break}return Object.freeze(responseList)}};Object.defineProperties(Cache.prototype,{[Symbol.toStringTag]:{value:"Cache",configurable:!0},match:kEnumerableProperty,matchAll:kEnumerableProperty,add:kEnumerableProperty,addAll:kEnumerableProperty,put:kEnumerableProperty,delete:kEnumerableProperty,keys:kEnumerableProperty});var cacheQueryOptionConverters=[{key:"ignoreSearch",converter:webidl.converters.boolean,defaultValue:()=>!1},{key:"ignoreMethod",converter:webidl.converters.boolean,defaultValue:()=>!1},{key:"ignoreVary",converter:webidl.converters.boolean,defaultValue:()=>!1}];webidl.converters.CacheQueryOptions=webidl.dictionaryConverter(cacheQueryOptionConverters);webidl.converters.MultiCacheQueryOptions=webidl.dictionaryConverter([...cacheQueryOptionConverters,{key:"cacheName",converter:webidl.converters.DOMString}]);webidl.converters.Response=webidl.interfaceConverter(webidl.is.Response,"Response");webidl.converters["sequence<RequestInfo>"]=webidl.sequenceConverter(webidl.converters.RequestInfo);module.exports={Cache}}});var require_cachestorage=__commonJS({"node_modules/undici/lib/web/cache/cachestorage.js"(exports,module){"use strict";var{Cache}=require_cache3(),{webidl}=require_webidl(),{kEnumerableProperty}=require_util(),{kConstruct}=require_symbols(),CacheStorage=class _CacheStorage{#caches=new Map;constructor(){arguments[0]!==kConstruct&&webidl.illegalConstructor(),webidl.util.markAsUncloneable(this)}async match(request,options={}){if(webidl.brandCheck(this,_CacheStorage),webidl.argumentLengthCheck(arguments,1,"CacheStorage.match"),request=webidl.converters.RequestInfo(request),options=webidl.converters.MultiCacheQueryOptions(options),options.cacheName!=null){if(this.#caches.has(options.cacheName)){let cacheList=this.#caches.get(options.cacheName);return await new Cache(kConstruct,cacheList).match(request,options)}}else for(let cacheList of this.#caches.values()){let response=await new Cache(kConstruct,cacheList).match(request,options);if(response!==void 0)return response}}async has(cacheName){webidl.brandCheck(this,_CacheStorage);let prefix="CacheStorage.has";return webidl.argumentLengthCheck(arguments,1,prefix),cacheName=webidl.converters.DOMString(cacheName,prefix,"cacheName"),this.#caches.has(cacheName)}async open(cacheName){webidl.brandCheck(this,_CacheStorage);let prefix="CacheStorage.open";if(webidl.argumentLengthCheck(arguments,1,prefix),cacheName=webidl.converters.DOMString(cacheName,prefix,"cacheName"),this.#caches.has(cacheName)){let cache3=this.#caches.get(cacheName);return new Cache(kConstruct,cache3)}let cache2=[];return this.#caches.set(cacheName,cache2),new Cache(kConstruct,cache2)}async delete(cacheName){webidl.brandCheck(this,_CacheStorage);let prefix="CacheStorage.delete";return webidl.argumentLengthCheck(arguments,1,prefix),cacheName=webidl.converters.DOMString(cacheName,prefix,"cacheName"),this.#caches.delete(cacheName)}async keys(){return webidl.brandCheck(this,_CacheStorage),[...this.#caches.keys()]}};Object.defineProperties(CacheStorage.prototype,{[Symbol.toStringTag]:{value:"CacheStorage",configurable:!0},match:kEnumerableProperty,has:kEnumerableProperty,open:kEnumerableProperty,delete:kEnumerableProperty,keys:kEnumerableProperty});module.exports={CacheStorage}}});var require_constants4=__commonJS({"node_modules/undici/lib/web/cookies/constants.js"(exports,module){"use strict";module.exports={maxAttributeValueSize:1024,maxNameValuePairSize:4096}}});var require_util4=__commonJS({"node_modules/undici/lib/web/cookies/util.js"(exports,module){"use strict";function isCTLExcludingHtab(value){for(let i=0;i<value.length;++i){let code=value.charCodeAt(i);if(code>=0&&code<=8||code>=10&&code<=31||code===127)return!0}return!1}function validateCookieName(name){for(let i=0;i<name.length;++i){let code=name.charCodeAt(i);if(code<33||code>126||code===34||code===40||code===41||code===60||code===62||code===64||code===44||code===59||code===58||code===92||code===47||code===91||code===93||code===63||code===61||code===123||code===125)throw new Error("Invalid cookie name")}}function validateCookieValue(value){let len=value.length,i=0;if(value[0]==='"'){if(len===1||value[len-1]!=='"')throw new Error("Invalid cookie value");--len,++i}for(;i<len;){let code=value.charCodeAt(i++);if(code<33||code>126||code===34||code===44||code===59||code===92)throw new Error("Invalid cookie value")}}function validateCookiePath(path10){for(let i=0;i<path10.length;++i){let code=path10.charCodeAt(i);if(code<32||code>126||code===59)throw new Error("Invalid cookie path")}}function isLetterOrDigit(code){return code>=48&&code<=57||code>=65&&code<=90||code>=97&&code<=122}function validateCookieDomain(domain){if(domain===" ")return;if(domain.length>255)throw new Error("Invalid cookie domain");let labelLength=0;for(let i=0;i<domain.length;++i){let code=domain.charCodeAt(i);if(code===46){if(labelLength===0)throw new Error("Invalid cookie domain");if(domain.charCodeAt(i-1)===45)throw new Error("Invalid cookie domain");labelLength=0;continue}if(labelLength===0&&!isLetterOrDigit(code))throw new Error("Invalid cookie domain");if(!isLetterOrDigit(code)&&code!==45)throw new Error("Invalid cookie domain");if(++labelLength>63)throw new Error("Invalid cookie domain")}if(labelLength===0||domain.charCodeAt(domain.length-1)===45)throw new Error("Invalid cookie domain")}var IMFDays=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],IMFMonths=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],IMFPaddedNumbers=Array(61).fill(0).map((_,i)=>i.toString().padStart(2,"0"));function toIMFDate(date){return typeof date=="number"&&(date=new Date(date)),`${IMFDays[date.getUTCDay()]}, ${IMFPaddedNumbers[date.getUTCDate()]} ${IMFMonths[date.getUTCMonth()]} ${date.getUTCFullYear()} ${IMFPaddedNumbers[date.getUTCHours()]}:${IMFPaddedNumbers[date.getUTCMinutes()]}:${IMFPaddedNumbers[date.getUTCSeconds()]} GMT`}function validateCookieMaxAge(maxAge){if(maxAge<0)throw new Error("Invalid cookie max-age")}function stringify(cookie){if(cookie.name.length===0)return null;validateCookieName(cookie.name),validateCookieValue(cookie.value);let out=[`${cookie.name}=${cookie.value}`];cookie.name.startsWith("__Secure-")&&(cookie.secure=!0),cookie.name.startsWith("__Host-")&&(cookie.secure=!0,cookie.domain=null,cookie.path="/"),cookie.secure&&out.push("Secure"),cookie.httpOnly&&out.push("HttpOnly"),typeof cookie.maxAge=="number"&&(validateCookieMaxAge(cookie.maxAge),out.push(`Max-Age=${cookie.maxAge}`)),cookie.domain&&(validateCookieDomain(cookie.domain),out.push(`Domain=${cookie.domain}`)),cookie.path&&(validateCookiePath(cookie.path),out.push(`Path=${cookie.path}`)),cookie.expires&&cookie.expires.toString()!=="Invalid Date"&&out.push(`Expires=${toIMFDate(cookie.expires)}`),cookie.sameSite&&out.push(`SameSite=${cookie.sameSite}`);for(let part of cookie.unparsed){if(!part.includes("="))throw new Error("Invalid unparsed");let[key,...value]=part.split("="),trimmedKey=key.trim(),joinedValue=value.join("=");validateCookieName(trimmedKey),validateCookieValue(joinedValue),out.push(`${trimmedKey}=${joinedValue}`)}return out.join("; ")}module.exports={isCTLExcludingHtab,validateCookieName,validateCookiePath,validateCookieValue,toIMFDate,stringify}}});var require_parse=__commonJS({"node_modules/undici/lib/web/cookies/parse.js"(exports,module){"use strict";var{collectASequenceOfCodePointsFast}=require_infra(),{maxNameValuePairSize,maxAttributeValueSize}=require_constants4(),{isCTLExcludingHtab}=require_util4(),assert=__require("node:assert");function parseSetCookie(header){if(isCTLExcludingHtab(header))return null;let nameValuePair="",unparsedAttributes="",name="",value="";if(header.includes(";")){let position={position:0};nameValuePair=collectASequenceOfCodePointsFast(";",header,position),unparsedAttributes=header.slice(position.position)}else nameValuePair=header;if(!nameValuePair.includes("="))value=nameValuePair;else{let position={position:0};name=collectASequenceOfCodePointsFast("=",nameValuePair,position),value=nameValuePair.slice(position.position+1)}return name=name.trim(),value=value.trim(),name.length+value.length>maxNameValuePairSize?null:{name,value,...parseUnparsedAttributes(unparsedAttributes)}}function parseUnparsedAttributes(unparsedAttributes,cookieAttributeList={}){for(;;){if(unparsedAttributes.length===0)return cookieAttributeList;assert(unparsedAttributes[0]===";"),unparsedAttributes=unparsedAttributes.slice(1);let cookieAv="";unparsedAttributes.includes(";")?(cookieAv=collectASequenceOfCodePointsFast(";",unparsedAttributes,{position:0}),unparsedAttributes=unparsedAttributes.slice(cookieAv.length)):(cookieAv=unparsedAttributes,unparsedAttributes="");let attributeName="",attributeValue="";if(cookieAv.includes("=")){let position={position:0};attributeName=collectASequenceOfCodePointsFast("=",cookieAv,position),attributeValue=cookieAv.slice(position.position+1)}else attributeName=cookieAv;if(attributeName=attributeName.trim(),attributeValue=attributeValue.trim(),attributeValue.length>maxAttributeValueSize)continue;let attributeNameLowercase=attributeName.toLowerCase();if(attributeNameLowercase==="expires"){let expiryTime=new Date(attributeValue);Number.isNaN(expiryTime.getTime())||(cookieAttributeList.expires=expiryTime)}else if(attributeNameLowercase==="max-age"){let charCode=attributeValue.charCodeAt(0),startsWithDigit=charCode>=48&&charCode<=57,startsWithSignedDigit=attributeValue[0]==="-"&&attributeValue.length>1;if(!startsWithDigit&&!startsWithSignedDigit||/[^\d]/.test(attributeValue.slice(1)))continue;let deltaSeconds=Number(attributeValue);cookieAttributeList.maxAge=deltaSeconds}else if(attributeNameLowercase==="domain"){let cookieDomain=attributeValue;cookieDomain[0]==="."&&(cookieDomain=cookieDomain.slice(1)),cookieDomain=cookieDomain.toLowerCase(),cookieAttributeList.domain=cookieDomain}else if(attributeNameLowercase==="path"){let cookiePath="";attributeValue.length===0||attributeValue[0]!=="/"?cookiePath="/":cookiePath=attributeValue,cookieAttributeList.path=cookiePath}else if(attributeNameLowercase==="secure")cookieAttributeList.secure=!0;else if(attributeNameLowercase==="httponly")cookieAttributeList.httpOnly=!0;else if(attributeNameLowercase==="samesite"){let attributeValueLowercase=attributeValue.toLowerCase();attributeValueLowercase==="none"?cookieAttributeList.sameSite="None":attributeValueLowercase==="strict"?cookieAttributeList.sameSite="Strict":attributeValueLowercase==="lax"&&(cookieAttributeList.sameSite="Lax")}else cookieAttributeList.unparsed??=[],cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`)}}module.exports={parseSetCookie,parseUnparsedAttributes}}});var require_cookies=__commonJS({"node_modules/undici/lib/web/cookies/index.js"(exports,module){"use strict";var{parseSetCookie}=require_parse(),{stringify}=require_util4(),{webidl}=require_webidl(),{Headers:Headers2}=require_headers(),brandChecks=webidl.brandCheckMultiple([Headers2,globalThis.Headers].filter(Boolean));function getCookies(headers){webidl.argumentLengthCheck(arguments,1,"getCookies"),brandChecks(headers);let cookie=headers.get("cookie"),out={};if(!cookie)return out;for(let piece of cookie.split(";")){let[name,...value]=piece.split("=");out[name.trim()]=value.join("=")}return out}function deleteCookie(headers,name,attributes){brandChecks(headers);let prefix="deleteCookie";webidl.argumentLengthCheck(arguments,2,prefix),name=webidl.converters.DOMString(name,prefix,"name"),attributes=webidl.converters.DeleteCookieAttributes(attributes),setCookie(headers,{name,value:"",expires:new Date(0),...attributes})}function getSetCookies(headers){webidl.argumentLengthCheck(arguments,1,"getSetCookies"),brandChecks(headers);let cookies=headers.getSetCookie();return cookies?cookies.map(pair=>parseSetCookie(pair)):[]}function parseCookie(cookie){return cookie=webidl.converters.DOMString(cookie),parseSetCookie(cookie)}function setCookie(headers,cookie){webidl.argumentLengthCheck(arguments,2,"setCookie"),brandChecks(headers),cookie=webidl.converters.Cookie(cookie);let str2=stringify(cookie);str2&&headers.append("set-cookie",str2,!0)}webidl.converters.DeleteCookieAttributes=webidl.dictionaryConverter([{converter:webidl.nullableConverter(webidl.converters.DOMString),key:"path",defaultValue:()=>null},{converter:webidl.nullableConverter(webidl.converters.DOMString),key:"domain",defaultValue:()=>null}]);webidl.converters.Cookie=webidl.dictionaryConverter([{converter:webidl.converters.DOMString,key:"name"},{converter:webidl.converters.DOMString,key:"value"},{converter:webidl.nullableConverter(value=>typeof value=="number"?webidl.converters["unsigned long long"](value):new Date(value)),key:"expires",defaultValue:()=>null},{converter:webidl.nullableConverter(webidl.converters["long long"]),key:"maxAge",defaultValue:()=>null},{converter:webidl.nullableConverter(webidl.converters.DOMString),key:"domain",defaultValue:()=>null},{converter:webidl.nullableConverter(webidl.converters.DOMString),key:"path",defaultValue:()=>null},{converter:webidl.nullableConverter(webidl.converters.boolean),key:"secure",defaultValue:()=>null},{converter:webidl.nullableConverter(webidl.converters.boolean),key:"httpOnly",defaultValue:()=>null},{converter:webidl.converters.USVString,key:"sameSite",allowedValues:["Strict","Lax","None"]},{converter:webidl.sequenceConverter(webidl.converters.DOMString),key:"unparsed",defaultValue:()=>[]}]);module.exports={getCookies,deleteCookie,getSetCookies,setCookie,parseCookie}}});var require_events=__commonJS({"node_modules/undici/lib/web/websocket/events.js"(exports,module){"use strict";var{webidl}=require_webidl(),{kEnumerableProperty}=require_util(),{kConstruct}=require_symbols(),MessageEvent=class _MessageEvent extends Event{#eventInit;constructor(type,eventInitDict={}){if(type===kConstruct){super(arguments[1],arguments[2]),webidl.util.markAsUncloneable(this);return}let prefix="MessageEvent constructor";webidl.argumentLengthCheck(arguments,1,prefix),type=webidl.converters.DOMString(type,prefix,"type"),eventInitDict=webidl.converters.MessageEventInit(eventInitDict,prefix,"eventInitDict"),super(type,eventInitDict),this.#eventInit=eventInitDict,webidl.util.markAsUncloneable(this)}get data(){return webidl.brandCheck(this,_MessageEvent),this.#eventInit.data}get origin(){return webidl.brandCheck(this,_MessageEvent),this.#eventInit.origin}get lastEventId(){return webidl.brandCheck(this,_MessageEvent),this.#eventInit.lastEventId}get source(){return webidl.brandCheck(this,_MessageEvent),this.#eventInit.source}get ports(){return webidl.brandCheck(this,_MessageEvent),Object.isFrozen(this.#eventInit.ports)||Object.freeze(this.#eventInit.ports),this.#eventInit.ports}initMessageEvent(type,bubbles=!1,cancelable=!1,data=null,origin="",lastEventId="",source=null,ports=[]){return webidl.brandCheck(this,_MessageEvent),webidl.argumentLengthCheck(arguments,1,"MessageEvent.initMessageEvent"),new _MessageEvent(type,{bubbles,cancelable,data,origin,lastEventId,source,ports})}static createFastMessageEvent(type,init){let messageEvent=new _MessageEvent(kConstruct,type,init);return messageEvent.#eventInit=init,messageEvent.#eventInit.data??=null,messageEvent.#eventInit.origin??="",messageEvent.#eventInit.lastEventId??="",messageEvent.#eventInit.source??=null,messageEvent.#eventInit.ports??=[],messageEvent}},{createFastMessageEvent}=MessageEvent;delete MessageEvent.createFastMessageEvent;var CloseEvent=class _CloseEvent extends Event{#eventInit;constructor(type,eventInitDict={}){let prefix="CloseEvent constructor";webidl.argumentLengthCheck(arguments,1,prefix),type=webidl.converters.DOMString(type,prefix,"type"),eventInitDict=webidl.converters.CloseEventInit(eventInitDict),super(type,eventInitDict),this.#eventInit=eventInitDict,webidl.util.markAsUncloneable(this)}get wasClean(){return webidl.brandCheck(this,_CloseEvent),this.#eventInit.wasClean}get code(){return webidl.brandCheck(this,_CloseEvent),this.#eventInit.code}get reason(){return webidl.brandCheck(this,_CloseEvent),this.#eventInit.reason}},ErrorEvent=class _ErrorEvent extends Event{#eventInit;constructor(type,eventInitDict){let prefix="ErrorEvent constructor";webidl.argumentLengthCheck(arguments,1,prefix),super(type,eventInitDict),webidl.util.markAsUncloneable(this),type=webidl.converters.DOMString(type,prefix,"type"),eventInitDict=webidl.converters.ErrorEventInit(eventInitDict??{}),this.#eventInit=eventInitDict}get message(){return webidl.brandCheck(this,_ErrorEvent),this.#eventInit.message}get filename(){return webidl.brandCheck(this,_ErrorEvent),this.#eventInit.filename}get lineno(){return webidl.brandCheck(this,_ErrorEvent),this.#eventInit.lineno}get colno(){return webidl.brandCheck(this,_ErrorEvent),this.#eventInit.colno}get error(){return webidl.brandCheck(this,_ErrorEvent),this.#eventInit.error}};Object.defineProperties(MessageEvent.prototype,{[Symbol.toStringTag]:{value:"MessageEvent",configurable:!0},data:kEnumerableProperty,origin:kEnumerableProperty,lastEventId:kEnumerableProperty,source:kEnumerableProperty,ports:kEnumerableProperty,initMessageEvent:kEnumerableProperty});Object.defineProperties(CloseEvent.prototype,{[Symbol.toStringTag]:{value:"CloseEvent",configurable:!0},reason:kEnumerableProperty,code:kEnumerableProperty,wasClean:kEnumerableProperty});Object.defineProperties(ErrorEvent.prototype,{[Symbol.toStringTag]:{value:"ErrorEvent",configurable:!0},message:kEnumerableProperty,filename:kEnumerableProperty,lineno:kEnumerableProperty,colno:kEnumerableProperty,error:kEnumerableProperty});webidl.converters.MessagePort=webidl.interfaceConverter(webidl.is.MessagePort,"MessagePort");webidl.converters["sequence<MessagePort>"]=webidl.sequenceConverter(webidl.converters.MessagePort);var eventInit=[{key:"bubbles",converter:webidl.converters.boolean,defaultValue:()=>!1},{key:"cancelable",converter:webidl.converters.boolean,defaultValue:()=>!1},{key:"composed",converter:webidl.converters.boolean,defaultValue:()=>!1}];webidl.converters.MessageEventInit=webidl.dictionaryConverter([...eventInit,{key:"data",converter:webidl.converters.any,defaultValue:()=>null},{key:"origin",converter:webidl.converters.USVString,defaultValue:()=>""},{key:"lastEventId",converter:webidl.converters.DOMString,defaultValue:()=>""},{key:"source",converter:webidl.nullableConverter(webidl.converters.MessagePort),defaultValue:()=>null},{key:"ports",converter:webidl.converters["sequence<MessagePort>"],defaultValue:()=>[]}]);webidl.converters.CloseEventInit=webidl.dictionaryConverter([...eventInit,{key:"wasClean",converter:webidl.converters.boolean,defaultValue:()=>!1},{key:"code",converter:webidl.converters["unsigned short"],defaultValue:()=>0},{key:"reason",converter:webidl.converters.USVString,defaultValue:()=>""}]);webidl.converters.ErrorEventInit=webidl.dictionaryConverter([...eventInit,{key:"message",converter:webidl.converters.DOMString,defaultValue:()=>""},{key:"filename",converter:webidl.converters.USVString,defaultValue:()=>""},{key:"lineno",converter:webidl.converters["unsigned long"],defaultValue:()=>0},{key:"colno",converter:webidl.converters["unsigned long"],defaultValue:()=>0},{key:"error",converter:webidl.converters.any}]);module.exports={MessageEvent,CloseEvent,ErrorEvent,createFastMessageEvent}}});var require_constants5=__commonJS({"node_modules/undici/lib/web/websocket/constants.js"(exports,module){"use strict";var uid="258EAFA5-E914-47DA-95CA-C5AB0DC85B11",staticPropertyDescriptors={enumerable:!0,writable:!1,configurable:!1},states={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3},sentCloseFrameState={SENT:1,RECEIVED:2},opcodes={CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10},maxUnsigned16Bit=65535,parserStates={INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4},emptyBuffer=Buffer.allocUnsafe(0),sendHints={text:1,typedArray:2,arrayBuffer:3,blob:4};module.exports={uid,sentCloseFrameState,staticPropertyDescriptors,states,opcodes,maxUnsigned16Bit,parserStates,emptyBuffer,sendHints}}});var require_util5=__commonJS({"node_modules/undici/lib/web/websocket/util.js"(exports,module){"use strict";var{states,opcodes}=require_constants5(),{isUtf8}=__require("node:buffer"),{removeHTTPWhitespace}=require_data_url(),{collectASequenceOfCodePointsFast}=require_infra();function isConnecting(readyState){return readyState===states.CONNECTING}function isEstablished(readyState){return readyState===states.OPEN}function isClosing(readyState){return readyState===states.CLOSING}function isClosed(readyState){return readyState===states.CLOSED}function fireEvent(e,target,eventFactory=(type,init)=>new Event(type,init),eventInitDict={}){let event=eventFactory(e,eventInitDict);target.dispatchEvent(event)}function websocketMessageReceived(handler,type,data){handler.onMessage(type,data)}function toArrayBuffer(buffer){return buffer.byteLength===buffer.buffer.byteLength?buffer.buffer:new Uint8Array(buffer).buffer}function isValidSubprotocol(protocol){if(protocol.length===0)return!1;for(let i=0;i<protocol.length;++i){let code=protocol.charCodeAt(i);if(code<33||code>126||code===34||code===40||code===41||code===44||code===47||code===58||code===59||code===60||code===61||code===62||code===63||code===64||code===91||code===92||code===93||code===123||code===125)return!1}return!0}function isValidStatusCode(code){return code>=1e3&&code<1015?code!==1004&&code!==1005&&code!==1006:code>=3e3&&code<=4999}function isControlFrame(opcode){return opcode===opcodes.CLOSE||opcode===opcodes.PING||opcode===opcodes.PONG}function isContinuationFrame(opcode){return opcode===opcodes.CONTINUATION}function isTextBinaryFrame(opcode){return opcode===opcodes.TEXT||opcode===opcodes.BINARY}function isValidOpcode(opcode){return isTextBinaryFrame(opcode)||isContinuationFrame(opcode)||isControlFrame(opcode)}function parseExtensions(extensions){let position={position:0},extensionList=new Map;for(;position.position<extensions.length;){let pair=collectASequenceOfCodePointsFast(";",extensions,position),[name,value=""]=pair.split("=",2);extensionList.set(removeHTTPWhitespace(name,!0,!1),removeHTTPWhitespace(value,!1,!0)),position.position++}return extensionList}function isValidClientWindowBits(value){if(value.length===0)return!1;for(let i=0;i<value.length;i++){let byte=value.charCodeAt(i);if(byte<48||byte>57)return!1}let num=Number.parseInt(value,10);return num>=8&&num<=15}function getURLRecord(url,baseURL){let urlRecord;try{urlRecord=new URL(url,baseURL)}catch(e){throw new DOMException(e,"SyntaxError")}if(urlRecord.protocol==="http:"?urlRecord.protocol="ws:":urlRecord.protocol==="https:"&&(urlRecord.protocol="wss:"),urlRecord.protocol!=="ws:"&&urlRecord.protocol!=="wss:")throw new DOMException("expected a ws: or wss: url","SyntaxError");if(urlRecord.hash.length||urlRecord.href.endsWith("#"))throw new DOMException("hash","SyntaxError");return urlRecord}function validateCloseCodeAndReason(code,reason){if(code!==null&&code!==1e3&&(code<3e3||code>4999))throw new DOMException("invalid code","InvalidAccessError");if(reason!==null){let reasonBytesLength=Buffer.byteLength(reason);if(reasonBytesLength>123)throw new DOMException(`Reason must be less than 123 bytes; received ${reasonBytesLength}`,"SyntaxError")}}var utf8Decode=(()=>{if(typeof process.versions.icu=="string"){let fatalDecoder=new TextDecoder("utf-8",{fatal:!0});return fatalDecoder.decode.bind(fatalDecoder)}return function(buffer){if(isUtf8(buffer))return buffer.toString("utf-8");throw new TypeError("Invalid utf-8 received.")}})();module.exports={isConnecting,isEstablished,isClosing,isClosed,fireEvent,isValidSubprotocol,isValidStatusCode,websocketMessageReceived,utf8Decode,isControlFrame,isContinuationFrame,isTextBinaryFrame,isValidOpcode,parseExtensions,isValidClientWindowBits,toArrayBuffer,getURLRecord,validateCloseCodeAndReason}}});var require_frame=__commonJS({"node_modules/undici/lib/web/websocket/frame.js"(exports,module){"use strict";var{runtimeFeatures}=require_runtime_features(),{maxUnsigned16Bit,opcodes}=require_constants5(),BUFFER_SIZE=8*1024,buffer=null,bufIdx=BUFFER_SIZE,randomFillSync=runtimeFeatures.has("crypto")?__require("node:crypto").randomFillSync:null;function generateMask(){return bufIdx===BUFFER_SIZE&&(bufIdx=0,randomFillSync(buffer??=Buffer.allocUnsafeSlow(BUFFER_SIZE),0,BUFFER_SIZE)),[buffer[bufIdx++],buffer[bufIdx++],buffer[bufIdx++],buffer[bufIdx++]]}var WebsocketFrameSend=class{constructor(data){this.frameData=data}createFrame(opcode){let frameData=this.frameData,maskKey2=generateMask(),bodyLength=frameData?.byteLength??0,payloadLength=bodyLength,offset=6;bodyLength>maxUnsigned16Bit?(offset+=8,payloadLength=127):bodyLength>125&&(offset+=2,payloadLength=126);let buffer2=Buffer.allocUnsafe(bodyLength+offset);buffer2[0]=buffer2[1]=0,buffer2[0]|=128,buffer2[0]=(buffer2[0]&240)+opcode;buffer2[offset-4]=maskKey2[0],buffer2[offset-3]=maskKey2[1],buffer2[offset-2]=maskKey2[2],buffer2[offset-1]=maskKey2[3],buffer2[1]=payloadLength,payloadLength===126?buffer2.writeUInt16BE(bodyLength,2):payloadLength===127&&(buffer2[2]=buffer2[3]=0,buffer2.writeUIntBE(bodyLength,4,6)),buffer2[1]|=128;for(let i=0;i<bodyLength;++i)buffer2[offset+i]=frameData[i]^maskKey2[i&3];return buffer2}static createFastTextFrame(buffer2){let maskKey2=generateMask(),bodyLength=buffer2.length;for(let i=0;i<bodyLength;++i)buffer2[i]^=maskKey2[i&3];let payloadLength=bodyLength,offset=6;bodyLength>maxUnsigned16Bit?(offset+=8,payloadLength=127):bodyLength>125&&(offset+=2,payloadLength=126);let head=Buffer.allocUnsafeSlow(offset);return head[0]=128|opcodes.TEXT,head[1]=payloadLength|128,head[offset-4]=maskKey2[0],head[offset-3]=maskKey2[1],head[offset-2]=maskKey2[2],head[offset-1]=maskKey2[3],payloadLength===126?head.writeUInt16BE(bodyLength,2):payloadLength===127&&(head[2]=head[3]=0,head.writeUIntBE(bodyLength,4,6)),[head,buffer2]}};module.exports={WebsocketFrameSend,generateMask}}});var require_connection=__commonJS({"node_modules/undici/lib/web/websocket/connection.js"(exports,module){"use strict";var{uid,states,sentCloseFrameState,emptyBuffer,opcodes}=require_constants5(),{parseExtensions,isClosed,isClosing,isEstablished,isConnecting,validateCloseCodeAndReason}=require_util5(),{makeRequest}=require_request2(),{fetching}=require_fetch(),{Headers:Headers2,getHeadersList}=require_headers(),{getDecodeSplit}=require_util2(),{WebsocketFrameSend}=require_frame(),assert=__require("node:assert"),{runtimeFeatures}=require_runtime_features(),crypto4=runtimeFeatures.has("crypto")?__require("node:crypto"):null,warningEmitted=!1;function establishWebSocketConnection(url,protocols,client,handler,options){let requestURL=url;requestURL.protocol=url.protocol==="ws:"?"http:":"https:";let request=makeRequest({urlList:[requestURL],client,serviceWorkers:"none",referrer:"no-referrer",mode:"websocket",credentials:"include",cache:"no-store",redirect:"error",useURLCredentials:!0});if(options.headers){let headersList=getHeadersList(new Headers2(options.headers));request.headersList=headersList}let keyValue=crypto4.randomBytes(16).toString("base64");request.headersList.append("sec-websocket-key",keyValue,!0),request.headersList.append("sec-websocket-version","13",!0);for(let protocol of protocols)request.headersList.append("sec-websocket-protocol",protocol,!0);return request.headersList.append("sec-websocket-extensions","permessage-deflate; client_max_window_bits",!0),fetching({request,useParallelQueue:!0,dispatcher:options.dispatcher,processResponse(response){if(response.type==="error"||response.status!==101){if(response.socket?.session==null){failWebsocketConnection(handler,1002,"Received network error or non-101 status code.",response.error);return}if(response.status!==200){failWebsocketConnection(handler,1002,"Received network error or non-200 status code.",response.error);return}}if(warningEmitted===!1&&response.socket?.session!=null&&(process.emitWarning("WebSocket over HTTP2 is experimental, and subject to change.","ExperimentalWarning"),warningEmitted=!0),protocols.length!==0&&!response.headersList.get("Sec-WebSocket-Protocol")){failWebsocketConnection(handler,1002,"Server did not respond with sent protocols.");return}if(response.socket.session==null&&response.headersList.get("Upgrade")?.toLowerCase()!=="websocket"){failWebsocketConnection(handler,1002,'Server did not set Upgrade header to "websocket".');return}if(response.socket.session==null&&response.headersList.get("Connection")?.toLowerCase()!=="upgrade"){failWebsocketConnection(handler,1002,'Server did not set Connection header to "upgrade".');return}let secWSAccept=response.headersList.get("Sec-WebSocket-Accept"),digest=crypto4.hash("sha1",keyValue+uid,"base64");if(secWSAccept!==digest){failWebsocketConnection(handler,1002,"Incorrect hash received in Sec-WebSocket-Accept header.");return}let secExtension=response.headersList.get("Sec-WebSocket-Extensions"),extensions;if(secExtension!==null&&(extensions=parseExtensions(secExtension),!extensions.has("permessage-deflate"))){failWebsocketConnection(handler,1002,"Sec-WebSocket-Extensions header does not match.");return}let secProtocol=response.headersList.get("Sec-WebSocket-Protocol");if(secProtocol!==null){let requestProtocols=getDecodeSplit("sec-websocket-protocol",request.headersList);if(requestProtocols===null||!requestProtocols.includes(secProtocol)){failWebsocketConnection(handler,1002,"Protocol was not set in the opening handshake.");return}}response.socket.on("data",handler.onSocketData),response.socket.on("close",handler.onSocketClose),response.socket.on("error",handler.onSocketError),handler.wasEverConnected=!0,handler.onConnectionEstablished(response,extensions)}})}function closeWebSocketConnection(object2,code,reason,validate=!1){if(code??=null,reason??="",validate&&validateCloseCodeAndReason(code,reason),!(isClosed(object2.readyState)||isClosing(object2.readyState)))if(!isEstablished(object2.readyState))failWebsocketConnection(object2),object2.readyState=states.CLOSING;else if(!object2.closeState.has(sentCloseFrameState.SENT)&&!object2.closeState.has(sentCloseFrameState.RECEIVED)){let frame3=new WebsocketFrameSend;reason.length!==0&&code===null&&(code=1e3),assert(code===null||Number.isInteger(code)),code===null&&reason.length===0?frame3.frameData=emptyBuffer:code!==null&&reason===null?(frame3.frameData=Buffer.allocUnsafe(2),frame3.frameData.writeUInt16BE(code,0)):code!==null&&reason!==null?(frame3.frameData=Buffer.allocUnsafe(2+Buffer.byteLength(reason)),frame3.frameData.writeUInt16BE(code,0),frame3.frameData.write(reason,2,"utf-8")):frame3.frameData=emptyBuffer,object2.socket.write(frame3.createFrame(opcodes.CLOSE)),object2.closeState.add(sentCloseFrameState.SENT),object2.readyState=states.CLOSING}else object2.readyState=states.CLOSING}function failWebsocketConnection(handler,code,reason,cause){isEstablished(handler.readyState)&&closeWebSocketConnection(handler,code,reason,!1),handler.controller.abort(),isConnecting(handler.readyState)?handler.onSocketClose():handler.socket?.destroyed===!1&&handler.socket.destroy()}module.exports={establishWebSocketConnection,failWebsocketConnection,closeWebSocketConnection}}});var require_permessage_deflate=__commonJS({"node_modules/undici/lib/web/websocket/permessage-deflate.js"(exports,module){"use strict";var{createInflateRaw,Z_DEFAULT_WINDOWBITS}=__require("node:zlib"),{isValidClientWindowBits}=require_util5(),{MessageSizeExceededError}=require_errors(),tail=Buffer.from([0,0,255,255]),kBuffer=Symbol("kBuffer"),kLength=Symbol("kLength"),PerMessageDeflate=class{#inflate;#options={};#maxPayloadSize=0;constructor(extensions,options){this.#options.serverNoContextTakeover=extensions.has("server_no_context_takeover"),this.#options.serverMaxWindowBits=extensions.get("server_max_window_bits"),this.#maxPayloadSize=options.maxPayloadSize}decompress(chunk2,fin,callback){if(!this.#inflate){let windowBits=Z_DEFAULT_WINDOWBITS;if(this.#options.serverMaxWindowBits){if(!isValidClientWindowBits(this.#options.serverMaxWindowBits)){callback(new Error("Invalid server_max_window_bits"));return}windowBits=Number.parseInt(this.#options.serverMaxWindowBits)}try{this.#inflate=createInflateRaw({windowBits})}catch(err){callback(err);return}this.#inflate[kBuffer]=[],this.#inflate[kLength]=0,this.#inflate.on("data",data=>{if(this.#inflate[kLength]+=data.length,this.#maxPayloadSize>0&&this.#inflate[kLength]>this.#maxPayloadSize){callback(new MessageSizeExceededError),this.#inflate.removeAllListeners(),this.#inflate.destroy(),this.#inflate=null;return}this.#inflate[kBuffer].push(data)}),this.#inflate.on("error",err=>{this.#inflate=null,callback(err)})}this.#inflate.write(chunk2),fin&&this.#inflate.write(tail),this.#inflate.flush(()=>{if(!this.#inflate)return;let full=Buffer.concat(this.#inflate[kBuffer],this.#inflate[kLength]);this.#inflate[kBuffer].length=0,this.#inflate[kLength]=0,callback(null,full)})}};module.exports={PerMessageDeflate}}});var require_receiver=__commonJS({"node_modules/undici/lib/web/websocket/receiver.js"(exports,module){"use strict";var{Writable}=__require("node:stream"),assert=__require("node:assert"),{parserStates,opcodes,states,emptyBuffer,sentCloseFrameState}=require_constants5(),{isValidStatusCode,isValidOpcode,websocketMessageReceived,utf8Decode,isControlFrame,isTextBinaryFrame,isContinuationFrame}=require_util5(),{failWebsocketConnection}=require_connection(),{WebsocketFrameSend}=require_frame(),{PerMessageDeflate}=require_permessage_deflate(),{MessageSizeExceededError}=require_errors(),ByteParser=class extends Writable{#buffers=[];#fragmentsBytes=0;#byteOffset=0;#loop=!1;#state=parserStates.INFO;#info={};#fragments=[];#extensions;#handler;#maxFragments;#maxPayloadSize;constructor(handler,extensions,options={}){super(),this.#handler=handler,this.#extensions=extensions??new Map,this.#maxFragments=options.maxFragments??0,this.#maxPayloadSize=options.maxPayloadSize??0,this.#extensions.has("permessage-deflate")&&this.#extensions.set("permessage-deflate",new PerMessageDeflate(extensions,options))}_write(chunk2,_,callback){this.#buffers.push(chunk2),this.#byteOffset+=chunk2.length,this.#loop=!0,this.run(callback)}#validatePayloadLength(){return this.#maxPayloadSize>0&&!isControlFrame(this.#info.opcode)&&this.#info.payloadLength+this.#fragmentsBytes>this.#maxPayloadSize?(failWebsocketConnection(this.#handler,1009,"Payload size exceeds maximum allowed size"),!1):!0}run(callback){for(;this.#loop;)if(this.#state===parserStates.INFO){if(this.#byteOffset<2)return callback();let buffer=this.consume(2),fin=(buffer[0]&128)!==0,opcode=buffer[0]&15,masked=(buffer[1]&128)===128,fragmented=!fin&&opcode!==opcodes.CONTINUATION,payloadLength=buffer[1]&127,rsv1=buffer[0]&64,rsv2=buffer[0]&32,rsv3=buffer[0]&16;if(!isValidOpcode(opcode))return failWebsocketConnection(this.#handler,1002,"Invalid opcode received"),callback();if(masked)return failWebsocketConnection(this.#handler,1002,"Frame cannot be masked"),callback();if(rsv1!==0&&!this.#extensions.has("permessage-deflate")){failWebsocketConnection(this.#handler,1002,"Expected RSV1 to be clear.");return}if(rsv2!==0||rsv3!==0){failWebsocketConnection(this.#handler,1002,"RSV1, RSV2, RSV3 must be clear");return}if(fragmented&&!isTextBinaryFrame(opcode)){failWebsocketConnection(this.#handler,1002,"Invalid frame type was fragmented.");return}if(isTextBinaryFrame(opcode)&&this.#fragments.length>0){failWebsocketConnection(this.#handler,1002,"Expected continuation frame");return}if(this.#info.fragmented&&fragmented){failWebsocketConnection(this.#handler,1002,"Fragmented frame exceeded 125 bytes.");return}if((payloadLength>125||fragmented)&&isControlFrame(opcode)){failWebsocketConnection(this.#handler,1002,"Control frame either too large or fragmented");return}if(isContinuationFrame(opcode)&&this.#fragments.length===0&&!this.#info.compressed){failWebsocketConnection(this.#handler,1002,"Unexpected continuation frame");return}if(payloadLength<=125){if(this.#info.payloadLength=payloadLength,this.#state=parserStates.READ_DATA,!this.#validatePayloadLength())return}else payloadLength===126?this.#state=parserStates.PAYLOADLENGTH_16:payloadLength===127&&(this.#state=parserStates.PAYLOADLENGTH_64);isTextBinaryFrame(opcode)&&(this.#info.binaryType=opcode,this.#info.compressed=rsv1!==0),this.#info.opcode=opcode,this.#info.masked=masked,this.#info.fin=fin,this.#info.fragmented=fragmented}else if(this.#state===parserStates.PAYLOADLENGTH_16){if(this.#byteOffset<2)return callback();let buffer=this.consume(2);if(this.#info.payloadLength=buffer.readUInt16BE(0),this.#state=parserStates.READ_DATA,!this.#validatePayloadLength())return}else if(this.#state===parserStates.PAYLOADLENGTH_64){if(this.#byteOffset<8)return callback();let buffer=this.consume(8),upper=buffer.readUInt32BE(0),lower=buffer.readUInt32BE(4);if(upper!==0||lower>2**31-1){failWebsocketConnection(this.#handler,1009,"Received payload length > 2^31 bytes.");return}if(this.#info.payloadLength=lower,this.#state=parserStates.READ_DATA,!this.#validatePayloadLength())return}else if(this.#state===parserStates.READ_DATA){if(this.#byteOffset<this.#info.payloadLength)return callback();let body=this.consume(this.#info.payloadLength);if(isControlFrame(this.#info.opcode))this.#loop=this.parseControlFrame(body),this.#state=parserStates.INFO;else if(this.#info.compressed){this.#extensions.get("permessage-deflate").decompress(body,this.#info.fin,(error,data)=>{if(error){let code=error instanceof MessageSizeExceededError?1009:1007;failWebsocketConnection(this.#handler,code,error.message);return}if(this.writeFragments(data)){if(this.#maxPayloadSize>0&&this.#fragmentsBytes>this.#maxPayloadSize){failWebsocketConnection(this.#handler,1009,new MessageSizeExceededError().message);return}if(!this.#info.fin){this.#state=parserStates.INFO,this.#loop=!0,this.run(callback);return}websocketMessageReceived(this.#handler,this.#info.binaryType,this.consumeFragments()),this.#loop=!0,this.#state=parserStates.INFO,this.run(callback)}},this.#fragmentsBytes),this.#loop=!1;break}else{if(!this.writeFragments(body))return;!this.#info.fragmented&&this.#info.fin&&websocketMessageReceived(this.#handler,this.#info.binaryType,this.consumeFragments()),this.#state=parserStates.INFO}}}consume(n){if(n>this.#byteOffset)throw new Error("Called consume() before buffers satiated.");if(n===0)return emptyBuffer;this.#byteOffset-=n;let first=this.#buffers[0];if(first.length>n)return this.#buffers[0]=first.subarray(n,first.length),first.subarray(0,n);if(first.length===n)return this.#buffers.shift();{let offset=0,buffer=Buffer.allocUnsafeSlow(n);for(;offset!==n;){let next=this.#buffers[0],length=next.length;if(length+offset===n){buffer.set(this.#buffers.shift(),offset);break}else if(length+offset>n){buffer.set(next.subarray(0,n-offset),offset),this.#buffers[0]=next.subarray(n-offset);break}else buffer.set(this.#buffers.shift(),offset),offset+=length}return buffer}}writeFragments(fragment){return this.#maxFragments>0&&this.#fragments.length===this.#maxFragments?(failWebsocketConnection(this.#handler,1008,"Too many message fragments"),!1):(this.#fragmentsBytes+=fragment.length,this.#fragments.push(fragment),!0)}consumeFragments(){let fragments=this.#fragments;if(fragments.length===1)return this.#fragmentsBytes=0,fragments.shift();let offset=0,output=Buffer.allocUnsafeSlow(this.#fragmentsBytes);for(let i=0;i<fragments.length;++i){let buffer=fragments[i];output.set(buffer,offset),offset+=buffer.length}return this.#fragments=[],this.#fragmentsBytes=0,output}parseCloseBody(data){assert(data.length!==1);let code;if(data.length>=2&&(code=data.readUInt16BE(0)),code!==void 0&&!isValidStatusCode(code))return{code:1002,reason:"Invalid status code",error:!0};let reason=data.subarray(2);reason[0]===239&&reason[1]===187&&reason[2]===191&&(reason=reason.subarray(3));try{reason=utf8Decode(reason)}catch{return{code:1007,reason:"Invalid UTF-8",error:!0}}return{code,reason,error:!1}}parseControlFrame(body){let{opcode,payloadLength}=this.#info;if(opcode===opcodes.CLOSE){if(payloadLength===1)return failWebsocketConnection(this.#handler,1002,"Received close frame with a 1-byte body."),!1;if(this.#info.closeInfo=this.parseCloseBody(body),this.#info.closeInfo.error){let{code,reason}=this.#info.closeInfo;return failWebsocketConnection(this.#handler,code,reason),!1}if(!this.#handler.closeState.has(sentCloseFrameState.SENT)&&!this.#handler.closeState.has(sentCloseFrameState.RECEIVED)){let body2=emptyBuffer;this.#info.closeInfo.code&&(body2=Buffer.allocUnsafe(2),body2.writeUInt16BE(this.#info.closeInfo.code,0));let closeFrame=new WebsocketFrameSend(body2);this.#handler.socket.write(closeFrame.createFrame(opcodes.CLOSE)),this.#handler.closeState.add(sentCloseFrameState.SENT)}return this.#handler.readyState=states.CLOSING,this.#handler.closeState.add(sentCloseFrameState.RECEIVED),!1}else if(opcode===opcodes.PING){if(!this.#handler.closeState.has(sentCloseFrameState.RECEIVED)){let frame3=new WebsocketFrameSend(body);this.#handler.socket.write(frame3.createFrame(opcodes.PONG)),this.#handler.onPing(body)}}else opcode===opcodes.PONG&&this.#handler.onPong(body);return!0}get closingInfo(){return this.#info.closeInfo}};module.exports={ByteParser}}});var require_sender=__commonJS({"node_modules/undici/lib/web/websocket/sender.js"(exports,module){"use strict";var{WebsocketFrameSend}=require_frame(),{opcodes,sendHints}=require_constants5(),FixedQueue=require_fixed_queue(),SendQueue=class{#queue=new FixedQueue;#running=!1;#socket;constructor(socket){this.#socket=socket}add(item,cb,hint){if(hint!==sendHints.blob){if(this.#running){let node2={promise:null,callback:cb,frame:createFrame(item,hint)};this.#queue.push(node2)}else if(hint===sendHints.text){let{0:head,1:body}=WebsocketFrameSend.createFastTextFrame(item);this.#socket.cork(),this.#socket.write(head),this.#socket.write(body,cb),this.#socket.uncork()}else this.#socket.write(createFrame(item,hint),cb);return}let node={promise:item.arrayBuffer().then(ab=>{node.promise=null,node.frame=createFrame(ab,hint)}),callback:cb,frame:null};this.#queue.push(node),this.#running||this.#run()}async#run(){this.#running=!0;let queue=this.#queue;for(;!queue.isEmpty();){let node=queue.shift();node.promise!==null&&await node.promise,this.#socket.write(node.frame,node.callback),node.callback=node.frame=null}this.#running=!1}};function createFrame(data,hint){return new WebsocketFrameSend(toBuffer(data,hint)).createFrame(hint===sendHints.text?opcodes.TEXT:opcodes.BINARY)}function toBuffer(data,hint){switch(hint){case sendHints.text:case sendHints.typedArray:return new Uint8Array(data.buffer,data.byteOffset,data.byteLength);case sendHints.arrayBuffer:case sendHints.blob:return new Uint8Array(data)}}module.exports={SendQueue}}});var require_websocket=__commonJS({"node_modules/undici/lib/web/websocket/websocket.js"(exports,module){"use strict";var{isArrayBuffer}=__require("node:util/types"),{webidl}=require_webidl(),{URLSerializer}=require_data_url(),{environmentSettingsObject}=require_util2(),{staticPropertyDescriptors,states,sentCloseFrameState,sendHints,opcodes}=require_constants5(),{isConnecting,isEstablished,isClosing,isClosed,isValidSubprotocol,fireEvent,utf8Decode,toArrayBuffer,getURLRecord}=require_util5(),{establishWebSocketConnection,closeWebSocketConnection,failWebsocketConnection}=require_connection(),{ByteParser}=require_receiver(),{kEnumerableProperty}=require_util(),{getGlobalDispatcher}=require_global2(),{ErrorEvent,CloseEvent,createFastMessageEvent}=require_events(),{SendQueue}=require_sender(),{WebsocketFrameSend}=require_frame(),{channels}=require_diagnostics(),kRef=Symbol.for("nodejs.ref"),kUnref=Symbol.for("nodejs.unref");function getSocketAddress(socket){return typeof socket?.address=="function"?socket.address():typeof socket?.session?.socket?.address=="function"?socket.session.socket.address():null}var WebSocket2=class _WebSocket extends EventTarget{#events={open:null,error:null,close:null,message:null};#bufferedAmount=0;#protocol="";#extensions="";#refed=!0;#sendQueue;#handler={onConnectionEstablished:(response,extensions)=>this.#onConnectionEstablished(response,extensions),onMessage:(opcode,data)=>this.#onMessage(opcode,data),onParserError:err=>failWebsocketConnection(this.#handler,null,err.message),onParserDrain:()=>this.#onParserDrain(),onSocketData:chunk2=>{this.#parser.write(chunk2)||this.#handler.socket.pause()},onSocketError:err=>{this.#handler.readyState=states.CLOSING,channels.socketError.hasSubscribers&&channels.socketError.publish(err),this.#handler.socket.destroy()},onSocketClose:()=>this.#onSocketClose(),onPing:body=>{channels.ping.hasSubscribers&&channels.ping.publish({payload:body,websocket:this})},onPong:body=>{channels.pong.hasSubscribers&&channels.pong.publish({payload:body,websocket:this})},readyState:states.CONNECTING,socket:null,closeState:new Set,controller:null,wasEverConnected:!1};#url;#binaryType;#parser;constructor(url,protocols=[]){super(),webidl.util.markAsUncloneable(this);let prefix="WebSocket constructor";webidl.argumentLengthCheck(arguments,1,prefix);let options=webidl.converters["DOMString or sequence<DOMString> or WebSocketInit"](protocols,prefix,"options");url=webidl.converters.USVString(url),protocols=options.protocols;let baseURL=environmentSettingsObject.settingsObject.baseUrl,urlRecord=getURLRecord(url,baseURL);if(typeof protocols=="string"&&(protocols=[protocols]),protocols.length!==new Set(protocols.map(p=>p.toLowerCase())).size)throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");if(protocols.length>0&&!protocols.every(p=>isValidSubprotocol(p)))throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");this.#url=new URL(urlRecord.href);let client=environmentSettingsObject.settingsObject;this.#handler.controller=establishWebSocketConnection(urlRecord,protocols,client,this.#handler,options),this.#handler.readyState=_WebSocket.CONNECTING,this.#binaryType="blob"}[kRef](){webidl.brandCheck(this,_WebSocket),this.#refed=!0,this.#handler.socket?.ref?.()}[kUnref](){webidl.brandCheck(this,_WebSocket),this.#refed=!1,this.#handler.socket?.unref?.()}close(code=void 0,reason=void 0){webidl.brandCheck(this,_WebSocket),code!==void 0&&(code=webidl.converters["unsigned short"](code,"WebSocket.close","code",webidl.attributes.Clamp)),reason!==void 0&&(reason=webidl.converters.USVString(reason)),code??=null,reason??="",closeWebSocketConnection(this.#handler,code,reason,!0)}send(data){webidl.brandCheck(this,_WebSocket);let prefix="WebSocket.send";if(webidl.argumentLengthCheck(arguments,1,prefix),data=webidl.converters.WebSocketSendData(data,prefix,"data"),isConnecting(this.#handler.readyState))throw new DOMException("Sent before connected.","InvalidStateError");if(!(!isEstablished(this.#handler.readyState)||isClosing(this.#handler.readyState)))if(typeof data=="string"){let buffer=Buffer.from(data);this.#bufferedAmount+=buffer.byteLength,this.#sendQueue.add(buffer,()=>{this.#bufferedAmount-=buffer.byteLength},sendHints.text)}else isArrayBuffer(data)?(this.#bufferedAmount+=data.byteLength,this.#sendQueue.add(data,()=>{this.#bufferedAmount-=data.byteLength},sendHints.arrayBuffer)):ArrayBuffer.isView(data)?(this.#bufferedAmount+=data.byteLength,this.#sendQueue.add(data,()=>{this.#bufferedAmount-=data.byteLength},sendHints.typedArray)):webidl.is.Blob(data)&&(this.#bufferedAmount+=data.size,this.#sendQueue.add(data,()=>{this.#bufferedAmount-=data.size},sendHints.blob))}get readyState(){return webidl.brandCheck(this,_WebSocket),this.#handler.readyState}get bufferedAmount(){return webidl.brandCheck(this,_WebSocket),this.#bufferedAmount}get url(){return webidl.brandCheck(this,_WebSocket),URLSerializer(this.#url)}get extensions(){return webidl.brandCheck(this,_WebSocket),this.#extensions}get protocol(){return webidl.brandCheck(this,_WebSocket),this.#protocol}get onopen(){return webidl.brandCheck(this,_WebSocket),this.#events.open}set onopen(fn){webidl.brandCheck(this,_WebSocket),this.#events.open&&this.removeEventListener("open",this.#events.open);let listener=webidl.converters.EventHandlerNonNull(fn);listener!==null?(this.addEventListener("open",listener),this.#events.open=fn):this.#events.open=null}get onerror(){return webidl.brandCheck(this,_WebSocket),this.#events.error}set onerror(fn){webidl.brandCheck(this,_WebSocket),this.#events.error&&this.removeEventListener("error",this.#events.error);let listener=webidl.converters.EventHandlerNonNull(fn);listener!==null?(this.addEventListener("error",listener),this.#events.error=fn):this.#events.error=null}get onclose(){return webidl.brandCheck(this,_WebSocket),this.#events.close}set onclose(fn){webidl.brandCheck(this,_WebSocket),this.#events.close&&this.removeEventListener("close",this.#events.close);let listener=webidl.converters.EventHandlerNonNull(fn);listener!==null?(this.addEventListener("close",listener),this.#events.close=fn):this.#events.close=null}get onmessage(){return webidl.brandCheck(this,_WebSocket),this.#events.message}set onmessage(fn){webidl.brandCheck(this,_WebSocket),this.#events.message&&this.removeEventListener("message",this.#events.message);let listener=webidl.converters.EventHandlerNonNull(fn);listener!==null?(this.addEventListener("message",listener),this.#events.message=fn):this.#events.message=null}get binaryType(){return webidl.brandCheck(this,_WebSocket),this.#binaryType}set binaryType(type){webidl.brandCheck(this,_WebSocket),type!=="blob"&&type!=="arraybuffer"?this.#binaryType="blob":this.#binaryType=type}#onConnectionEstablished(response,parsedExtensions){this.#handler.socket=response.socket,this.#refed||this.#handler.socket.unref?.();let maxFragments=this.#handler.controller.dispatcher?.webSocketOptions?.maxFragments,maxPayloadSize=this.#handler.controller.dispatcher?.webSocketOptions?.maxPayloadSize,parser=new ByteParser(this.#handler,parsedExtensions,{maxFragments,maxPayloadSize});parser.on("drain",()=>this.#handler.onParserDrain()),parser.on("error",err=>this.#handler.onParserError(err)),this.#parser=parser,this.#sendQueue=new SendQueue(response.socket),this.#handler.readyState=states.OPEN;let extensions=response.headersList.get("sec-websocket-extensions");extensions!==null&&(this.#extensions=extensions);let protocol=response.headersList.get("sec-websocket-protocol");if(protocol!==null&&(this.#protocol=protocol),fireEvent("open",this),channels.open.hasSubscribers){let headers=response.headersList.entries;channels.open.publish({address:getSocketAddress(response.socket),protocol:this.#protocol,extensions:this.#extensions,websocket:this,handshakeResponse:{status:response.status,statusText:response.statusText,headers}})}}#onMessage(type,data){if(this.#handler.readyState!==states.OPEN)return;let dataForEvent;if(type===opcodes.TEXT)try{dataForEvent=utf8Decode(data)}catch{failWebsocketConnection(this.#handler,1007,"Received invalid UTF-8 in text frame.");return}else type===opcodes.BINARY&&(this.#binaryType==="blob"?dataForEvent=new Blob([data]):dataForEvent=toArrayBuffer(data));fireEvent("message",this,createFastMessageEvent,{origin:this.#url.origin,data:dataForEvent})}#onParserDrain(){this.#handler.socket.resume()}#onSocketClose(){let wasClean=this.#handler.closeState.has(sentCloseFrameState.SENT)&&this.#handler.closeState.has(sentCloseFrameState.RECEIVED),code=1005,reason="",result2=this.#parser?.closingInfo;result2&&!result2.error&&(code=result2.code??1005,reason=result2.reason),this.#handler.readyState=states.CLOSED,this.#handler.closeState.has(sentCloseFrameState.RECEIVED)||(code=1006,fireEvent("error",this,(type,init)=>new ErrorEvent(type,init),{error:new TypeError(reason)})),fireEvent("close",this,(type,init)=>new CloseEvent(type,init),{wasClean,code,reason}),channels.close.hasSubscribers&&channels.close.publish({websocket:this,code,reason})}static ping(ws,buffer){if(Buffer.isBuffer(buffer)){if(buffer.length>125)throw new TypeError("A PING frame cannot have a body larger than 125 bytes.")}else if(buffer!==void 0)throw new TypeError("Expected buffer payload");let readyState=ws.#handler.readyState;if(isEstablished(readyState)&&!isClosing(readyState)&&!isClosed(readyState)){let frame3=new WebsocketFrameSend(buffer);ws.#handler.socket.write(frame3.createFrame(opcodes.PING))}}},{ping}=WebSocket2;Reflect.deleteProperty(WebSocket2,"ping");WebSocket2.CONNECTING=WebSocket2.prototype.CONNECTING=states.CONNECTING;WebSocket2.OPEN=WebSocket2.prototype.OPEN=states.OPEN;WebSocket2.CLOSING=WebSocket2.prototype.CLOSING=states.CLOSING;WebSocket2.CLOSED=WebSocket2.prototype.CLOSED=states.CLOSED;Object.defineProperties(WebSocket2.prototype,{CONNECTING:staticPropertyDescriptors,OPEN:staticPropertyDescriptors,CLOSING:staticPropertyDescriptors,CLOSED:staticPropertyDescriptors,url:kEnumerableProperty,readyState:kEnumerableProperty,bufferedAmount:kEnumerableProperty,onopen:kEnumerableProperty,onerror:kEnumerableProperty,onclose:kEnumerableProperty,close:kEnumerableProperty,onmessage:kEnumerableProperty,binaryType:kEnumerableProperty,send:kEnumerableProperty,extensions:kEnumerableProperty,protocol:kEnumerableProperty,[Symbol.toStringTag]:{value:"WebSocket",writable:!1,enumerable:!1,configurable:!0}});Object.defineProperties(WebSocket2,{CONNECTING:staticPropertyDescriptors,OPEN:staticPropertyDescriptors,CLOSING:staticPropertyDescriptors,CLOSED:staticPropertyDescriptors});webidl.converters["sequence<DOMString>"]=webidl.sequenceConverter(webidl.converters.DOMString);webidl.converters["DOMString or sequence<DOMString>"]=function(V,prefix,argument){return webidl.util.Type(V)===webidl.util.Types.OBJECT&&Symbol.iterator in V?webidl.converters["sequence<DOMString>"](V):webidl.converters.DOMString(V,prefix,argument)};webidl.converters.WebSocketInit=webidl.dictionaryConverter([{key:"protocols",converter:webidl.converters["DOMString or sequence<DOMString>"],defaultValue:()=>[]},{key:"dispatcher",converter:webidl.converters.any,defaultValue:()=>getGlobalDispatcher()},{key:"headers",converter:webidl.nullableConverter(webidl.converters.HeadersInit)}]);webidl.converters["DOMString or sequence<DOMString> or WebSocketInit"]=function(V){return webidl.util.Type(V)===webidl.util.Types.OBJECT&&!(Symbol.iterator in V)?webidl.converters.WebSocketInit(V):{protocols:webidl.converters["DOMString or sequence<DOMString>"](V)}};webidl.converters.WebSocketSendData=function(V){return webidl.util.Type(V)===webidl.util.Types.OBJECT&&(webidl.is.Blob(V)||webidl.is.BufferSource(V))?V:webidl.converters.USVString(V)};module.exports={WebSocket:WebSocket2,ping}}});var require_websocketerror=__commonJS({"node_modules/undici/lib/web/websocket/stream/websocketerror.js"(exports,module){"use strict";var{webidl}=require_webidl(),{validateCloseCodeAndReason}=require_util5(),{kConstruct}=require_symbols(),{kEnumerableProperty}=require_util();function createInheritableDOMException(){class Test extends DOMException{get reason(){return""}}return new Test().reason!==void 0?DOMException:new Proxy(DOMException,{construct(target,args,newTarget){let instance=Reflect.construct(target,args,target);return Object.setPrototypeOf(instance,newTarget.prototype),instance}})}var WebSocketError=class _WebSocketError extends createInheritableDOMException(){#closeCode;#reason;constructor(message="",init=void 0){if(message=webidl.converters.DOMString(message,"WebSocketError","message"),super(message,"WebSocketError"),init===kConstruct)return;init!==null&&(init=webidl.converters.WebSocketCloseInfo(init));let code=init.closeCode??null,reason=init.reason??"";validateCloseCodeAndReason(code,reason),reason.length!==0&&code===null&&(code=1e3),this.#closeCode=code,this.#reason=reason}get closeCode(){return this.#closeCode}get reason(){return this.#reason}static createUnvalidatedWebSocketError(message,code,reason){let error=new _WebSocketError(message,kConstruct);return error.#closeCode=code,error.#reason=reason,error}},{createUnvalidatedWebSocketError}=WebSocketError;delete WebSocketError.createUnvalidatedWebSocketError;Object.defineProperties(WebSocketError.prototype,{closeCode:kEnumerableProperty,reason:kEnumerableProperty,[Symbol.toStringTag]:{value:"WebSocketError",writable:!1,enumerable:!1,configurable:!0}});webidl.is.WebSocketError=webidl.util.MakeTypeAssertion(WebSocketError);module.exports={WebSocketError,createUnvalidatedWebSocketError}}});var require_websocketstream=__commonJS({"node_modules/undici/lib/web/websocket/stream/websocketstream.js"(exports,module){"use strict";var{addAbortListener}=__require("node:events"),{environmentSettingsObject,readableStreamClose}=require_util2(),{states,opcodes,sentCloseFrameState}=require_constants5(),{webidl}=require_webidl(),{getURLRecord,isValidSubprotocol,isEstablished,utf8Decode}=require_util5(),{establishWebSocketConnection,failWebsocketConnection,closeWebSocketConnection}=require_connection(),{channels}=require_diagnostics(),{WebsocketFrameSend}=require_frame(),{ByteParser}=require_receiver(),{WebSocketError,createUnvalidatedWebSocketError}=require_websocketerror(),{kEnumerableProperty}=require_util(),{utf8DecodeBytes}=require_encoding(),emittedExperimentalWarning=!1,WebSocketStream=class{#url;#openedPromise;#closedPromise;#readableStream;#readableStreamController;#writableStreamController;#handshakeAborted=!1;#handler={onConnectionEstablished:(response,extensions)=>this.#onConnectionEstablished(response,extensions),onMessage:(opcode,data)=>this.#onMessage(opcode,data),onParserError:err=>failWebsocketConnection(this.#handler,null,err.message),onParserDrain:()=>this.#handler.socket.resume(),onSocketData:chunk2=>{this.#parser.write(chunk2)||this.#handler.socket.pause()},onSocketError:err=>{this.#handler.readyState=states.CLOSING,channels.socketError.hasSubscribers&&channels.socketError.publish(err),this.#handler.socket.destroy()},onSocketClose:()=>this.#onSocketClose(),onPing:()=>{},onPong:()=>{},readyState:states.CONNECTING,socket:null,closeState:new Set,controller:null,wasEverConnected:!1};#parser;constructor(url,options=void 0){emittedExperimentalWarning||(process.emitWarning("WebSocketStream is experimental! Expect it to change at any time.",{code:"UNDICI-WSS"}),emittedExperimentalWarning=!0),webidl.argumentLengthCheck(arguments,1,"WebSocket"),url=webidl.converters.USVString(url),options!==null&&(options=webidl.converters.WebSocketStreamOptions(options));let baseURL=environmentSettingsObject.settingsObject.baseUrl,urlRecord=getURLRecord(url,baseURL),protocols=options.protocols;if(protocols.length!==new Set(protocols.map(p=>p.toLowerCase())).size)throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");if(protocols.length>0&&!protocols.every(p=>isValidSubprotocol(p)))throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");if(this.#url=urlRecord.toString(),this.#openedPromise=Promise.withResolvers(),this.#closedPromise=Promise.withResolvers(),options.signal!=null){let signal=options.signal;if(signal.aborted){this.#openedPromise.reject(signal.reason),this.#closedPromise.reject(signal.reason);return}addAbortListener(signal,()=>{isEstablished(this.#handler.readyState)||(failWebsocketConnection(this.#handler),this.#handler.readyState=states.CLOSING,this.#openedPromise.reject(signal.reason),this.#closedPromise.reject(signal.reason),this.#handshakeAborted=!0)})}let client=environmentSettingsObject.settingsObject;this.#handler.controller=establishWebSocketConnection(urlRecord,protocols,client,this.#handler,options)}get url(){return this.#url.toString()}get opened(){return this.#openedPromise.promise}get closed(){return this.#closedPromise.promise}close(closeInfo=void 0){closeInfo!==null&&(closeInfo=webidl.converters.WebSocketCloseInfo(closeInfo));let code=closeInfo.closeCode??null,reason=closeInfo.reason;closeWebSocketConnection(this.#handler,code,reason,!0)}#write(chunk2){chunk2=webidl.converters.WebSocketStreamWrite(chunk2);let promise=Promise.withResolvers(),data=null,opcode=null;if(webidl.is.BufferSource(chunk2))data=new Uint8Array(ArrayBuffer.isView(chunk2)?new Uint8Array(chunk2.buffer,chunk2.byteOffset,chunk2.byteLength):chunk2.slice()),opcode=opcodes.BINARY;else{let string;try{string=webidl.converters.DOMString(chunk2)}catch(e){return promise.reject(e),promise.promise}data=new TextEncoder().encode(string),opcode=opcodes.TEXT}if(!this.#handler.closeState.has(sentCloseFrameState.SENT)&&!this.#handler.closeState.has(sentCloseFrameState.RECEIVED)){let frame3=new WebsocketFrameSend(data);this.#handler.socket.write(frame3.createFrame(opcode),()=>{promise.resolve(void 0)})}return promise.promise}#onConnectionEstablished(response,parsedExtensions){this.#handler.socket=response.socket;let maxFragments=this.#handler.controller.dispatcher?.webSocketOptions?.maxFragments,maxPayloadSize=this.#handler.controller.dispatcher?.webSocketOptions?.maxPayloadSize,parser=new ByteParser(this.#handler,parsedExtensions,{maxFragments,maxPayloadSize});parser.on("drain",()=>this.#handler.onParserDrain()),parser.on("error",err=>this.#handler.onParserError(err)),this.#parser=parser,this.#handler.readyState=states.OPEN;let extensions=parsedExtensions??"",protocol=response.headersList.get("sec-websocket-protocol")??"",readable=new ReadableStream({start:controller=>{this.#readableStreamController=controller},cancel:reason=>this.#cancel(reason)}),writable=new WritableStream({start:controller=>{this.#writableStreamController=controller},write:chunk2=>this.#write(chunk2),close:()=>closeWebSocketConnection(this.#handler,null,null),abort:reason=>this.#closeUsingReason(reason)});this.#readableStream=readable,this.#openedPromise.resolve({extensions,protocol,readable,writable})}#onMessage(type,data){if(this.#handler.readyState!==states.OPEN)return;let chunk2;if(type===opcodes.TEXT)try{chunk2=utf8Decode(data)}catch{failWebsocketConnection(this.#handler,1007,"Received invalid UTF-8 in text frame.");return}else type===opcodes.BINARY&&(chunk2=new Uint8Array(data.buffer,data.byteOffset,data.byteLength));this.#readableStreamController.enqueue(chunk2)}#onSocketClose(){let wasClean=this.#handler.closeState.has(sentCloseFrameState.SENT)&&this.#handler.closeState.has(sentCloseFrameState.RECEIVED);if(this.#handler.readyState=states.CLOSED,this.#handshakeAborted)return;this.#handler.wasEverConnected||this.#openedPromise.reject(new WebSocketError("Socket never opened"));let result2=this.#parser?.closingInfo,code=result2?.code??1005;!this.#handler.closeState.has(sentCloseFrameState.SENT)&&!this.#handler.closeState.has(sentCloseFrameState.RECEIVED)&&(code=1006);let reason=result2?.reason==null?"":utf8DecodeBytes(Buffer.from(result2.reason));if(wasClean)readableStreamClose(this.#readableStreamController),this.#writableStreamController.error(new DOMException("A closed WebSocketStream cannot be written to","InvalidStateError")),this.#closedPromise.resolve({closeCode:code,reason});else{let error=createUnvalidatedWebSocketError("unclean close",code,reason);this.#readableStreamController?.error(error),this.#writableStreamController?.error(error),this.#closedPromise.reject(error)}}#closeUsingReason(reason){let code=null,reasonString="";webidl.is.WebSocketError(reason)&&(code=reason.closeCode,reasonString=reason.reason),closeWebSocketConnection(this.#handler,code,reasonString)}#cancel(reason){this.#closeUsingReason(reason)}};Object.defineProperties(WebSocketStream.prototype,{url:kEnumerableProperty,opened:kEnumerableProperty,closed:kEnumerableProperty,close:kEnumerableProperty,[Symbol.toStringTag]:{value:"WebSocketStream",writable:!1,enumerable:!1,configurable:!0}});webidl.converters.WebSocketStreamOptions=webidl.dictionaryConverter([{key:"protocols",converter:webidl.sequenceConverter(webidl.converters.USVString),defaultValue:()=>[]},{key:"signal",converter:webidl.nullableConverter(webidl.converters.AbortSignal),defaultValue:()=>null}]);webidl.converters.WebSocketCloseInfo=webidl.dictionaryConverter([{key:"closeCode",converter:V=>webidl.converters["unsigned short"](V,webidl.attributes.EnforceRange)},{key:"reason",converter:webidl.converters.USVString,defaultValue:()=>""}]);webidl.converters.WebSocketStreamWrite=function(V){return typeof V=="string"?webidl.converters.USVString(V):webidl.converters.BufferSource(V)};module.exports={WebSocketStream}}});var require_util6=__commonJS({"node_modules/undici/lib/web/eventsource/util.js"(exports,module){"use strict";var{makeRequest}=require_request2();function isValidLastEventId(value){return value.indexOf("\0")===-1}function isASCIINumber(value){if(value.length===0)return!1;for(let i=0;i<value.length;i++)if(value.charCodeAt(i)<48||value.charCodeAt(i)>57)return!1;return!0}function createPotentialCORSRequest(url,destination,corsAttributeState,sameOriginFallback){let mode=corsAttributeState==="no cors"?"no-cors":"cors";sameOriginFallback&&mode==="no-cors"&&(mode="same-origin");let credentialsMode="include";return corsAttributeState==="anonymous"&&(credentialsMode="same-origin"),makeRequest({urlList:[url],destination,mode,credentials:credentialsMode,useURLCredentials:!0})}module.exports={isValidLastEventId,isASCIINumber,createPotentialCORSRequest}}});var require_eventsource_stream=__commonJS({"node_modules/undici/lib/web/eventsource/eventsource-stream.js"(exports,module){"use strict";var buffer=__require("node:buffer"),{Transform}=__require("node:stream"),{isASCIINumber,isValidLastEventId}=require_util6(),BOM=[239,187,191],LF=10,CR=13,COLON=58,SPACE=32,defaultMaxEventSize=buffer.kStringMaxLength,DATA=Buffer.from("data"),EVENT=Buffer.from("event"),ID2=Buffer.from("id"),RETRY=Buffer.from("retry");function isASCIINumberBytes(buffer2,start){if(start>=buffer2.length)return!1;for(let i=start;i<buffer2.length;i++)if(buffer2[i]<48||buffer2[i]>57)return!1;return!0}function isValidLastEventIdBytes(buffer2,start){for(let i=start;i<buffer2.length;i++)if(buffer2[i]===0)return!1;return!0}function isFieldName(line,length,field){if(length!==field.length)return!1;for(let i=0;i<length;i++)if(line[i]!==field[i])return!1;return!0}function createMaxEventSizeExceededError(){let error=new Error("EventSource message size exceeded");return error.aborted=!1,error}var EventSourceStream=class extends Transform{state;checkBOM=!0;crlfCheck=!1;eventEndCheck=!1;chunks=[];chunkIndex=0;pos=0;lineChunkIndex=0;linePos=0;eventDataSize=0;maxEventSize;event={data:void 0,event:void 0,id:void 0,retry:void 0};constructor(options={}){options.readableObjectMode=!0,super(options),this.state=options.eventSourceSettings||{},this.maxEventSize=options.maxEventSize??defaultMaxEventSize,options.push&&(this.push=options.push)}_transform(chunk2,_encoding,callback){if(chunk2.length===0){callback();return}if(this.chunks.push(chunk2),this.checkBOM&&this.handleBOM()){callback();return}for(;this.hasCurrentByte();){let byte=this.currentByte();if(this.eventEndCheck){if(this.crlfCheck){if(byte===LF){this.crlfCheck=!1,this.consumeCurrentByte();continue}this.crlfCheck=!1}if(byte===LF||byte===CR){byte===CR&&(this.crlfCheck=!0),this.consumeCurrentByte(),this.hasPendingEvent()&&this.processEvent(this.event),this.clearEvent();continue}this.eventEndCheck=!1;continue}if(byte===LF||byte===CR){byte===CR&&(this.crlfCheck=!0);try{this.parseLine(this.readLine(),this.event)}catch(error){callback(error);return}this.consumeCurrentByte(),this.eventEndCheck=!0;continue}this.advanceCursor()}callback()}parseLine(line,event){if(line.length===0)return;let colonPosition=line.indexOf(COLON);if(colonPosition===0)return;let fieldLength=line.length,valueStart=line.length;if(colonPosition!==-1&&(fieldLength=colonPosition,valueStart=colonPosition+1,line[valueStart]===SPACE&&++valueStart),isFieldName(line,fieldLength,DATA)){let valueBytes=line.length-valueStart,eventDataSize=this.eventDataSize+(event.data===void 0?0:1)+valueBytes;if(this.maxEventSize>0&&eventDataSize>this.maxEventSize)throw createMaxEventSizeExceededError();let value=line.toString("utf8",valueStart);event.data===void 0?event.data=value:event.data+=`
129
+ `)}close(){this.#db.close()}get(key){assertCacheKey(key);let value=this.#findValue(key);return value?{body:value.body?Buffer.from(value.body.buffer,value.body.byteOffset,value.body.byteLength):void 0,statusCode:value.statusCode,statusMessage:value.statusMessage,headers:value.headers?JSON.parse(value.headers):void 0,etag:value.etag?value.etag:void 0,vary:value.vary?JSON.parse(value.vary):void 0,cacheControlDirectives:value.cacheControlDirectives?JSON.parse(value.cacheControlDirectives):void 0,cachedAt:value.cachedAt,staleAt:value.staleAt,deleteAt:value.deleteAt}:void 0}set(key,value){assertCacheKey(key);let url=this.#makeValueUrl(key),body=Array.isArray(value.body)?Buffer.concat(value.body):value.body,size=body?.byteLength;if(size&&size>this.#maxEntrySize)return;let existingValue=this.#findValue(key,!0);existingValue?this.#updateValueQuery.run(body,value.deleteAt,value.statusCode,value.statusMessage,value.headers?JSON.stringify(value.headers):null,value.etag?value.etag:null,value.cacheControlDirectives?JSON.stringify(value.cacheControlDirectives):null,value.vary?JSON.stringify(value.vary):null,value.cachedAt,value.staleAt,existingValue.id):(this.#insertValueQuery.run(url,key.method,body,value.deleteAt,value.statusCode,value.statusMessage,value.headers?JSON.stringify(value.headers):null,value.etag?value.etag:null,value.cacheControlDirectives?JSON.stringify(value.cacheControlDirectives):null,value.vary?JSON.stringify(value.vary):null,value.cachedAt,value.staleAt),this.#prune())}createWriteStream(key,value){assertCacheKey(key),assertCacheValue(value);let size=0,body=[],store=this;return new Writable({decodeStrings:!0,write(chunk2,encoding,callback){size+=chunk2.byteLength,size<=store.#maxEntrySize?body.push(chunk2):this.destroy(),callback()},final(callback){store.set(key,{...value,body}),callback()}})}delete(key){if(typeof key!="object")throw new TypeError(`expected key to be object, got ${typeof key}`);this.#deleteByUrlQuery.run(this.#makeValueUrl(key))}#prune(){if(Number.isFinite(this.#maxCount)&&this.size<=this.#maxCount)return 0;{let removed=this.#deleteExpiredValuesQuery.run(Date.now()).changes;if(removed)return removed}{let removed=this.#deleteOldValuesQuery?.run(Math.max(Math.floor(this.#maxCount*.1),1)).changes;if(removed)return removed}return 0}get size(){let{total}=this.#countEntriesQuery.get();return total}#makeValueUrl(key){return`${key.origin}/${key.path}`}#findValue(key,canBeExpired=!1){let url=this.#makeValueUrl(key),{headers,method}=key,values=this.#getValuesQuery.all(url,method);if(values.length===0)return;let now=Date.now();for(let value of values){if(now>=value.deleteAt&&!canBeExpired)continue;let matches=!0;if(value.vary){let vary=JSON.parse(value.vary);for(let header in vary)if(!headerValueEquals(headers[header],vary[header])){matches=!1;break}}if(matches)return value}}};function headerValueEquals(lhs,rhs){if(lhs==null&&rhs==null)return!0;if(lhs==null&&rhs!=null||lhs!=null&&rhs==null)return!1;if(Array.isArray(lhs)&&Array.isArray(rhs)){if(lhs.length!==rhs.length)return!1;for(let i=0;i<lhs.length;i++)if(lhs[i]!==rhs[i])return!1;return!0}return lhs===rhs}}});var require_headers=__commonJS({"node_modules/undici/lib/web/fetch/headers.js"(exports,module){"use strict";var{kConstruct}=require_symbols(),{kEnumerableProperty}=require_util(),{iteratorMixin,isValidHeaderName,isValidHeaderValue}=require_util2(),{webidl}=require_webidl(),assert=__require("node:assert"),util=__require("node:util");function isHTTPWhiteSpaceCharCode(code){return code===10||code===13||code===9||code===32}function headerValueNormalize(potentialValue){let i=0,j=potentialValue.length;for(;j>i&&isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j-1));)--j;for(;j>i&&isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i));)++i;return i===0&&j===potentialValue.length?potentialValue:potentialValue.substring(i,j)}function fill(headers,object2){if(Array.isArray(object2))for(let i=0;i<object2.length;++i){let header=object2[i];if(header.length!==2)throw webidl.errors.exception({header:"Headers constructor",message:`expected name/value pair to be length 2, found ${header.length}.`});appendHeader(headers,header[0],header[1])}else if(typeof object2=="object"&&object2!==null){let keys=Object.keys(object2);for(let i=0;i<keys.length;++i)appendHeader(headers,keys[i],object2[keys[i]])}else throw webidl.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence<sequence<ByteString>>","record<ByteString, ByteString>"]})}function appendHeader(headers,name,value){if(value=headerValueNormalize(value),isValidHeaderName(name)){if(!isValidHeaderValue(value))throw webidl.errors.invalidArgument({prefix:"Headers.append",value,type:"header value"})}else throw webidl.errors.invalidArgument({prefix:"Headers.append",value:name,type:"header name"});if(getHeadersGuard(headers)==="immutable")throw new TypeError("immutable");return getHeadersList(headers).append(name,value,!1)}function headersListSortAndCombine(target){let headersList=getHeadersList(target);if(!headersList)return[];if(headersList.sortedMap)return headersList.sortedMap;let headers=[],names=headersList.toSortedArray(),cookies=headersList.cookies;if(cookies===null||cookies.length===1)return headersList.sortedMap=names;for(let i=0;i<names.length;++i){let{0:name,1:value}=names[i];if(name==="set-cookie")for(let j=0;j<cookies.length;++j)headers.push([name,cookies[j]]);else headers.push([name,value])}return headersList.sortedMap=headers}function compareHeaderName(a,b){return a[0]<b[0]?-1:1}var HeadersList=class _HeadersList{cookies=null;sortedMap;headersMap;constructor(init){init instanceof _HeadersList?(this.headersMap=new Map(init.headersMap),this.sortedMap=init.sortedMap,this.cookies=init.cookies===null?null:[...init.cookies]):(this.headersMap=new Map(init),this.sortedMap=null)}contains(name,isLowerCase){return this.headersMap.has(isLowerCase?name:name.toLowerCase())}clear(){this.headersMap.clear(),this.sortedMap=null,this.cookies=null}append(name,value,isLowerCase){this.sortedMap=null;let lowercaseName=isLowerCase?name:name.toLowerCase(),exists=this.headersMap.get(lowercaseName);if(exists){let delimiter=lowercaseName==="cookie"?"; ":", ";this.headersMap.set(lowercaseName,{name:exists.name,value:`${exists.value}${delimiter}${value}`})}else this.headersMap.set(lowercaseName,{name,value});lowercaseName==="set-cookie"&&(this.cookies??=[]).push(value)}set(name,value,isLowerCase){this.sortedMap=null;let lowercaseName=isLowerCase?name:name.toLowerCase();lowercaseName==="set-cookie"&&(this.cookies=[value]),this.headersMap.set(lowercaseName,{name,value})}delete(name,isLowerCase){this.sortedMap=null,isLowerCase||(name=name.toLowerCase()),name==="set-cookie"&&(this.cookies=null),this.headersMap.delete(name)}get(name,isLowerCase){return this.headersMap.get(isLowerCase?name:name.toLowerCase())?.value??null}*[Symbol.iterator](){for(let{0:name,1:{value}}of this.headersMap)yield[name,value]}get entries(){let headers={};if(this.headersMap.size!==0)for(let{name,value}of this.headersMap.values())headers[name]=value;return headers}rawValues(){return this.headersMap.values()}get entriesList(){let headers=[];if(this.headersMap.size!==0)for(let{0:lowerName,1:{name,value}}of this.headersMap)if(lowerName==="set-cookie")for(let cookie of this.cookies)headers.push([name,cookie]);else headers.push([name,value]);return headers}toSortedArray(){let size=this.headersMap.size,array=new Array(size);if(size<=32){if(size===0)return array;let iterator=this.headersMap[Symbol.iterator](),firstValue=iterator.next().value;array[0]=[firstValue[0],firstValue[1].value],assert(firstValue[1].value!==null);for(let i=1,j=0,right=0,left=0,pivot=0,x,value;i<size;++i){for(value=iterator.next().value,x=array[i]=[value[0],value[1].value],assert(x[1]!==null),left=0,right=i;left<right;)pivot=left+(right-left>>1),array[pivot][0]<=x[0]?left=pivot+1:right=pivot;if(i!==pivot){for(j=i;j>left;)array[j]=array[--j];array[left]=x}}if(!iterator.next().done)throw new TypeError("Unreachable");return array}else{let i=0;for(let{0:name,1:{value}}of this.headersMap)array[i++]=[name,value],assert(value!==null);return array.sort(compareHeaderName)}}},Headers2=class _Headers{#guard;#headersList;constructor(init=void 0){webidl.util.markAsUncloneable(this),init!==kConstruct&&(this.#headersList=new HeadersList,this.#guard="none",init!==void 0&&(init=webidl.converters.HeadersInit(init,"Headers constructor","init"),fill(this,init)))}append(name,value){webidl.brandCheck(this,_Headers),webidl.argumentLengthCheck(arguments,2,"Headers.append");let prefix="Headers.append";return name=webidl.converters.ByteString(name,prefix,"name"),value=webidl.converters.ByteString(value,prefix,"value"),appendHeader(this,name,value)}delete(name){if(webidl.brandCheck(this,_Headers),webidl.argumentLengthCheck(arguments,1,"Headers.delete"),name=webidl.converters.ByteString(name,"Headers.delete","name"),!isValidHeaderName(name))throw webidl.errors.invalidArgument({prefix:"Headers.delete",value:name,type:"header name"});if(this.#guard==="immutable")throw new TypeError("immutable");this.#headersList.contains(name,!1)&&this.#headersList.delete(name,!1)}get(name){webidl.brandCheck(this,_Headers),webidl.argumentLengthCheck(arguments,1,"Headers.get");let prefix="Headers.get";if(name=webidl.converters.ByteString(name,prefix,"name"),!isValidHeaderName(name))throw webidl.errors.invalidArgument({prefix,value:name,type:"header name"});return this.#headersList.get(name,!1)}has(name){webidl.brandCheck(this,_Headers),webidl.argumentLengthCheck(arguments,1,"Headers.has");let prefix="Headers.has";if(name=webidl.converters.ByteString(name,prefix,"name"),!isValidHeaderName(name))throw webidl.errors.invalidArgument({prefix,value:name,type:"header name"});return this.#headersList.contains(name,!1)}set(name,value){webidl.brandCheck(this,_Headers),webidl.argumentLengthCheck(arguments,2,"Headers.set");let prefix="Headers.set";if(name=webidl.converters.ByteString(name,prefix,"name"),value=webidl.converters.ByteString(value,prefix,"value"),value=headerValueNormalize(value),isValidHeaderName(name)){if(!isValidHeaderValue(value))throw webidl.errors.invalidArgument({prefix,value,type:"header value"})}else throw webidl.errors.invalidArgument({prefix,value:name,type:"header name"});if(this.#guard==="immutable")throw new TypeError("immutable");this.#headersList.set(name,value,!1)}getSetCookie(){webidl.brandCheck(this,_Headers);let list=this.#headersList.cookies;return list?[...list]:[]}[util.inspect.custom](depth,options){return options.depth??=depth,`Headers ${util.formatWithOptions(options,this.#headersList.entries)}`}static getHeadersGuard(o){return o.#guard}static setHeadersGuard(o,guard){o.#guard=guard}static getHeadersList(o){return o.#headersList}static setHeadersList(target,list){target.#headersList=list}},{getHeadersGuard,setHeadersGuard,getHeadersList,setHeadersList}=Headers2;Reflect.deleteProperty(Headers2,"getHeadersGuard");Reflect.deleteProperty(Headers2,"setHeadersGuard");Reflect.deleteProperty(Headers2,"getHeadersList");Reflect.deleteProperty(Headers2,"setHeadersList");iteratorMixin("Headers",Headers2,headersListSortAndCombine,0,1);Object.defineProperties(Headers2.prototype,{append:kEnumerableProperty,delete:kEnumerableProperty,get:kEnumerableProperty,has:kEnumerableProperty,set:kEnumerableProperty,getSetCookie:kEnumerableProperty,[Symbol.toStringTag]:{value:"Headers",configurable:!0},[util.inspect.custom]:{enumerable:!1}});webidl.converters.HeadersInit=function(V,prefix,argument){if(webidl.util.Type(V)===webidl.util.Types.OBJECT){let iterator=Reflect.get(V,Symbol.iterator);if(!util.types.isProxy(V)&&iterator===Headers2.prototype.entries)try{return getHeadersList(V).entriesList}catch{}return typeof iterator=="function"?webidl.converters["sequence<sequence<ByteString>>"](V,prefix,argument,iterator.bind(V)):webidl.converters["record<ByteString, ByteString>"](V,prefix,argument)}throw webidl.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence<sequence<ByteString>>","record<ByteString, ByteString>"]})};module.exports={fill,compareHeaderName,Headers:Headers2,HeadersList,getHeadersGuard,setHeadersGuard,setHeadersList,getHeadersList}}});var require_response=__commonJS({"node_modules/undici/lib/web/fetch/response.js"(exports,module){"use strict";var{Headers:Headers2,HeadersList,fill,getHeadersGuard,setHeadersGuard,setHeadersList}=require_headers(),{extractBody,cloneBody,mixinBody,streamRegistry,bodyUnusable}=require_body(),util=require_util(),nodeUtil=__require("node:util"),{kEnumerableProperty}=util,{isValidReasonPhrase,isCancelled,isAborted,isErrorLike,environmentSettingsObject:relevantRealm}=require_util2(),{redirectStatusSet,nullBodyStatus}=require_constants3(),{webidl}=require_webidl(),{URLSerializer}=require_data_url(),{kConstruct}=require_symbols(),assert=__require("node:assert"),{isomorphicEncode,serializeJavascriptValueToJSONString}=require_infra(),textEncoder=new TextEncoder("utf-8"),Response=class _Response{#headers;#state;static error(){return fromInnerResponse(makeNetworkError(),"immutable")}static json(data,init=void 0){webidl.argumentLengthCheck(arguments,1,"Response.json"),init=webidl.converters.ResponseInit(init);let bytes=textEncoder.encode(serializeJavascriptValueToJSONString(data)),body=extractBody(bytes),responseObject=fromInnerResponse(makeResponse({}),"response");return initializeResponse(responseObject,init,{body:body[0],type:"application/json"}),responseObject}static redirect(url,status=302){webidl.argumentLengthCheck(arguments,1,"Response.redirect"),url=webidl.converters.USVString(url),status=webidl.converters["unsigned short"](status);let parsedURL;try{parsedURL=new URL(url,relevantRealm.settingsObject.baseUrl)}catch(err){throw new TypeError(`Failed to parse URL from ${url}`,{cause:err})}if(!redirectStatusSet.has(status))throw new RangeError(`Invalid status code ${status}`);let responseObject=fromInnerResponse(makeResponse({}),"immutable");responseObject.#state.status=status;let value=isomorphicEncode(URLSerializer(parsedURL));return responseObject.#state.headersList.append("location",value,!0),responseObject}constructor(body=null,init=void 0){if(webidl.util.markAsUncloneable(this),body===kConstruct)return;body!==null&&(body=webidl.converters.BodyInit(body,"Response","body")),init=webidl.converters.ResponseInit(init),this.#state=makeResponse({}),this.#headers=new Headers2(kConstruct),setHeadersGuard(this.#headers,"response"),setHeadersList(this.#headers,this.#state.headersList);let bodyWithType=null;if(body!=null){let[extractedBody,type]=extractBody(body);bodyWithType={body:extractedBody,type}}initializeResponse(this,init,bodyWithType)}get type(){return webidl.brandCheck(this,_Response),this.#state.type}get url(){webidl.brandCheck(this,_Response);let urlList=this.#state.urlList,url=urlList[urlList.length-1]??null;return url===null?"":URLSerializer(url,!0)}get redirected(){return webidl.brandCheck(this,_Response),this.#state.urlList.length>1}get status(){return webidl.brandCheck(this,_Response),this.#state.status}get ok(){return webidl.brandCheck(this,_Response),this.#state.status>=200&&this.#state.status<=299}get statusText(){return webidl.brandCheck(this,_Response),this.#state.statusText}get headers(){return webidl.brandCheck(this,_Response),this.#headers}get body(){return webidl.brandCheck(this,_Response),this.#state.body?this.#state.body.stream:null}get bodyUsed(){return webidl.brandCheck(this,_Response),!!this.#state.body&&util.isDisturbed(this.#state.body.stream)}clone(){if(webidl.brandCheck(this,_Response),bodyUnusable(this.#state))throw webidl.errors.exception({header:"Response.clone",message:"Body has already been consumed."});let clonedResponse=cloneResponse(this.#state);return this.#state.urlList.length!==0&&this.#state.body?.stream&&streamRegistry.register(this,new WeakRef(this.#state.body.stream)),fromInnerResponse(clonedResponse,getHeadersGuard(this.#headers))}[nodeUtil.inspect.custom](depth,options){options.depth===null&&(options.depth=2),options.colors??=!0;let properties={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 ${nodeUtil.formatWithOptions(options,properties)}`}static getResponseHeaders(response){return response.#headers}static setResponseHeaders(response,newHeaders){response.#headers=newHeaders}static getResponseState(response){return response.#state}static setResponseState(response,newState){response.#state=newState}},{getResponseHeaders,setResponseHeaders,getResponseState,setResponseState}=Response;Reflect.deleteProperty(Response,"getResponseHeaders");Reflect.deleteProperty(Response,"setResponseHeaders");Reflect.deleteProperty(Response,"getResponseState");Reflect.deleteProperty(Response,"setResponseState");mixinBody(Response,getResponseState);Object.defineProperties(Response.prototype,{type:kEnumerableProperty,url:kEnumerableProperty,status:kEnumerableProperty,ok:kEnumerableProperty,redirected:kEnumerableProperty,statusText:kEnumerableProperty,headers:kEnumerableProperty,clone:kEnumerableProperty,body:kEnumerableProperty,bodyUsed:kEnumerableProperty,[Symbol.toStringTag]:{value:"Response",configurable:!0}});Object.defineProperties(Response,{json:kEnumerableProperty,redirect:kEnumerableProperty,error:kEnumerableProperty});function cloneResponse(response){if(response.internalResponse)return filterResponse(cloneResponse(response.internalResponse),response.type);let newResponse=makeResponse({...response,body:null});return response.body!=null&&(newResponse.body=cloneBody(response.body)),newResponse}function makeResponse(init){return{aborted:!1,rangeRequested:!1,timingAllowPassed:!1,requestIncludesCredentials:!1,type:"default",status:200,timingInfo:null,cacheState:"",statusText:"",...init,headersList:init?.headersList?new HeadersList(init?.headersList):new HeadersList,urlList:init?.urlList?[...init.urlList]:[]}}function makeNetworkError(reason){let isError=isErrorLike(reason);return makeResponse({type:"error",status:0,error:isError?reason:new Error(reason&&String(reason)),aborted:reason&&reason.name==="AbortError"})}function isNetworkError(response){return response.type==="error"&&response.status===0}function makeFilteredResponse(response,state){return state={internalResponse:response,...state},new Proxy(response,{get(target,p){return p in state?state[p]:target[p]},set(target,p,value){return assert(!(p in state)),target[p]=value,!0}})}function filterResponse(response,type){if(type==="basic")return makeFilteredResponse(response,{type:"basic",headersList:response.headersList});if(type==="cors")return makeFilteredResponse(response,{type:"cors",headersList:response.headersList});if(type==="opaque")return makeFilteredResponse(response,{type:"opaque",urlList:[],status:0,statusText:"",body:null});if(type==="opaqueredirect")return makeFilteredResponse(response,{type:"opaqueredirect",status:0,statusText:"",headersList:[],body:null});assert(!1)}function makeAppropriateNetworkError(fetchParams,err=null){return assert(isCancelled(fetchParams)),isAborted(fetchParams)?makeNetworkError(Object.assign(new DOMException("The operation was aborted.","AbortError"),{cause:err})):makeNetworkError(Object.assign(new DOMException("Request was cancelled."),{cause:err}))}function initializeResponse(response,init,body){if(init.status!==null&&(init.status<200||init.status>599))throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.');if("statusText"in init&&init.statusText!=null&&!isValidReasonPhrase(String(init.statusText)))throw new TypeError("Invalid statusText");if("status"in init&&init.status!=null&&(getResponseState(response).status=init.status),"statusText"in init&&init.statusText!=null&&(getResponseState(response).statusText=init.statusText),"headers"in init&&init.headers!=null&&fill(getResponseHeaders(response),init.headers),body){if(nullBodyStatus.includes(response.status))throw webidl.errors.exception({header:"Response constructor",message:`Invalid response status code ${response.status}`});getResponseState(response).body=body.body,body.type!=null&&!getResponseState(response).headersList.contains("content-type",!0)&&getResponseState(response).headersList.append("content-type",body.type,!0)}}function fromInnerResponse(innerResponse,guard){let response=new Response(kConstruct);setResponseState(response,innerResponse);let headers=new Headers2(kConstruct);return setResponseHeaders(response,headers),setHeadersList(headers,innerResponse.headersList),setHeadersGuard(headers,guard),innerResponse.urlList.length!==0&&innerResponse.body?.stream&&streamRegistry.register(response,new WeakRef(innerResponse.body.stream)),response}webidl.converters.XMLHttpRequestBodyInit=function(V,prefix,name){return typeof V=="string"?webidl.converters.USVString(V,prefix,name):webidl.is.Blob(V)||webidl.is.BufferSource(V)||webidl.is.FormData(V)||webidl.is.URLSearchParams(V)?V:webidl.converters.DOMString(V,prefix,name)};webidl.converters.BodyInit=function(V,prefix,argument){return webidl.is.ReadableStream(V)||V?.[Symbol.asyncIterator]?V:webidl.converters.XMLHttpRequestBodyInit(V,prefix,argument)};webidl.converters.ResponseInit=webidl.dictionaryConverter([{key:"status",converter:webidl.converters["unsigned short"],defaultValue:()=>200},{key:"statusText",converter:webidl.converters.ByteString,defaultValue:()=>""},{key:"headers",converter:webidl.converters.HeadersInit}]);webidl.is.Response=webidl.util.MakeTypeAssertion(Response);module.exports={isNetworkError,makeNetworkError,makeResponse,makeAppropriateNetworkError,filterResponse,Response,cloneResponse,fromInnerResponse,getResponseState}}});var require_request2=__commonJS({"node_modules/undici/lib/web/fetch/request.js"(exports,module){"use strict";var{extractBody,mixinBody,cloneBody,bodyUnusable}=require_body(),{Headers:Headers2,fill:fillHeaders,HeadersList,setHeadersGuard,getHeadersGuard,setHeadersList,getHeadersList}=require_headers(),util=require_util(),nodeUtil=__require("node:util"),{isValidHTTPToken,sameOrigin,environmentSettingsObject}=require_util2(),{forbiddenMethodsSet,corsSafeListedMethodsSet,referrerPolicy,requestRedirect,requestMode,requestCredentials,requestCache,requestDuplex}=require_constants3(),{kEnumerableProperty,normalizedMethodRecordsBase,normalizedMethodRecords}=util,{webidl}=require_webidl(),{URLSerializer}=require_data_url(),{kConstruct}=require_symbols(),assert=__require("node:assert"),{getMaxListeners,setMaxListeners,defaultMaxListeners}=__require("node:events"),kAbortController=Symbol("abortController"),requestFinalizer=new FinalizationRegistry(({signal,abort})=>{signal.removeEventListener("abort",abort)}),dependentControllerMap=new WeakMap,abortSignalHasEventHandlerLeakWarning;try{abortSignalHasEventHandlerLeakWarning=getMaxListeners(new AbortController().signal)>0}catch{abortSignalHasEventHandlerLeakWarning=!1}function buildAbort(acRef){return abort;function abort(){let ac=acRef.deref();if(ac!==void 0){requestFinalizer.unregister(abort),this.removeEventListener("abort",abort),ac.abort(this.reason);let controllerList=dependentControllerMap.get(ac.signal);if(controllerList!==void 0){if(controllerList.size!==0){for(let ref of controllerList){let ctrl=ref.deref();ctrl!==void 0&&ctrl.abort(this.reason)}controllerList.clear()}dependentControllerMap.delete(ac.signal)}}}}var patchMethodWarning=!1,Request=class _Request{#signal;#dispatcher;#headers;#state;#abortCleanup=null;constructor(input2,init=void 0){if(webidl.util.markAsUncloneable(this),input2===kConstruct)return;webidl.argumentLengthCheck(arguments,1,"Request constructor"),input2=webidl.converters.RequestInfo(input2),init=webidl.converters.RequestInit(init);let request=null,fallbackMode=null,baseUrl=environmentSettingsObject.settingsObject.baseUrl,signal=null;if(typeof input2=="string"){this.#dispatcher=init.dispatcher;let parsedURL;try{parsedURL=new URL(input2,baseUrl)}catch(err){throw new TypeError("Failed to parse URL from "+input2,{cause:err})}if(parsedURL.username||parsedURL.password)throw new TypeError("Request cannot be constructed from a URL that includes credentials: "+input2);request=makeRequest({urlList:[parsedURL]}),fallbackMode="cors"}else assert(webidl.is.Request(input2)),request=input2.#state,signal=input2.#signal,this.#dispatcher=init.dispatcher||input2.#dispatcher;let origin=environmentSettingsObject.settingsObject.origin,window2="client";if(request.window?.constructor?.name==="EnvironmentSettingsObject"&&sameOrigin(request.window,origin)&&(window2=request.window),init.window!=null)throw new TypeError(`'window' option '${window2}' must be null`);"window"in init&&(window2="no-window"),request=makeRequest({method:request.method,headersList:request.headersList,unsafeRequest:request.unsafeRequest,client:environmentSettingsObject.settingsObject,window:window2,priority:request.priority,origin:request.origin,referrer:request.referrer,referrerPolicy:request.referrerPolicy,mode:request.mode,credentials:request.credentials,cache:request.cache,redirect:request.redirect,integrity:request.integrity,keepalive:request.keepalive,reloadNavigation:request.reloadNavigation,historyNavigation:request.historyNavigation,urlList:[...request.urlList]});let initHasKey=Object.keys(init).length!==0;if(initHasKey&&(request.mode==="navigate"&&(request.mode="same-origin"),request.reloadNavigation=!1,request.historyNavigation=!1,request.origin="client",request.referrer="client",request.referrerPolicy="",request.url=request.urlList[request.urlList.length-1],request.urlList=[request.url]),init.referrer!==void 0){let referrer=init.referrer;if(referrer==="")request.referrer="no-referrer";else{let parsedReferrer;try{parsedReferrer=new URL(referrer,baseUrl)}catch(err){throw new TypeError(`Referrer "${referrer}" is not a valid URL.`,{cause:err})}parsedReferrer.protocol==="about:"&&parsedReferrer.hostname==="client"||origin&&!sameOrigin(parsedReferrer,environmentSettingsObject.settingsObject.baseUrl)?request.referrer="client":request.referrer=parsedReferrer}}init.referrerPolicy!==void 0&&(request.referrerPolicy=init.referrerPolicy);let mode;if(init.mode!==void 0?mode=init.mode:mode=fallbackMode,mode==="navigate")throw webidl.errors.exception({header:"Request constructor",message:"invalid request mode navigate."});if(mode!=null&&(request.mode=mode),init.credentials!==void 0&&(request.credentials=init.credentials),init.cache!==void 0&&(request.cache=init.cache),request.cache==="only-if-cached"&&request.mode!=="same-origin")throw new TypeError("'only-if-cached' can be set only with 'same-origin' mode");if(init.redirect!==void 0&&(request.redirect=init.redirect),init.integrity!=null&&(request.integrity=String(init.integrity)),init.keepalive!==void 0&&(request.keepalive=!!init.keepalive),init.method!==void 0){let method=init.method,mayBeNormalized=normalizedMethodRecords[method];if(mayBeNormalized!==void 0)request.method=mayBeNormalized;else{if(!isValidHTTPToken(method))throw new TypeError(`'${method}' is not a valid HTTP method.`);let upperCase=method.toUpperCase();if(forbiddenMethodsSet.has(upperCase))throw new TypeError(`'${method}' HTTP method is unsupported.`);method=normalizedMethodRecordsBase[upperCase]??method,request.method=method}!patchMethodWarning&&request.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"}),patchMethodWarning=!0)}init.signal!==void 0&&(signal=init.signal),this.#state=request;let ac=new AbortController;if(this.#signal=ac.signal,signal!=null)if(signal.aborted)ac.abort(signal.reason);else{this[kAbortController]=ac;let acRef=new WeakRef(ac),abort=buildAbort(acRef);abortSignalHasEventHandlerLeakWarning&&getMaxListeners(signal)===defaultMaxListeners&&setMaxListeners(1500,signal);let removeAbortListener=util.addAbortListener(signal,abort);requestFinalizer.register(ac,{signal,abort},abort),this.#abortCleanup=()=>{requestFinalizer.unregister(abort),removeAbortListener(),this.#abortCleanup=null}}if(this.#headers=new Headers2(kConstruct),setHeadersList(this.#headers,request.headersList),setHeadersGuard(this.#headers,"request"),mode==="no-cors"){if(!corsSafeListedMethodsSet.has(request.method))throw new TypeError(`'${request.method} is unsupported in no-cors mode.`);setHeadersGuard(this.#headers,"request-no-cors")}if(initHasKey){let headersList=getHeadersList(this.#headers),headers=init.headers!==void 0?init.headers:new HeadersList(headersList);if(headersList.clear(),headers instanceof HeadersList){for(let{name,value}of headers.rawValues())headersList.append(name,value,!1);headersList.cookies=headers.cookies}else fillHeaders(this.#headers,headers)}let inputBody=webidl.is.Request(input2)?input2.#state.body:null;if((init.body!=null||inputBody!=null)&&(request.method==="GET"||request.method==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body.");let initBody=null;if(init.body!=null){let[extractedBody,contentType]=extractBody(init.body,request.keepalive);initBody=extractedBody,contentType&&!getHeadersList(this.#headers).contains("content-type",!0)&&this.#headers.append("content-type",contentType,!0)}let inputOrInitBody=initBody??inputBody;if(inputOrInitBody!=null&&inputOrInitBody.source==null){if(initBody!=null&&init.duplex==null)throw new TypeError("RequestInit: duplex option is required when sending a body.");if(request.mode!=="same-origin"&&request.mode!=="cors")throw new TypeError('If request is made from ReadableStream, mode should be "same-origin" or "cors"');request.useCORSPreflightFlag=!0}let finalBody=inputOrInitBody;if(initBody==null&&inputBody!=null){if(bodyUnusable(input2.#state))throw new TypeError("Cannot construct a Request with a Request object that has already been used.");let identityTransform=new TransformStream;inputBody.stream.pipeThrough(identityTransform),finalBody={source:inputBody.source,length:inputBody.length,stream:identityTransform.readable}}this.#state.body=finalBody}get method(){return webidl.brandCheck(this,_Request),this.#state.method}get url(){return webidl.brandCheck(this,_Request),URLSerializer(this.#state.url)}get headers(){return webidl.brandCheck(this,_Request),this.#headers}get destination(){return webidl.brandCheck(this,_Request),this.#state.destination}get referrer(){return webidl.brandCheck(this,_Request),this.#state.referrer==="no-referrer"?"":this.#state.referrer==="client"?"about:client":this.#state.referrer.toString()}get referrerPolicy(){return webidl.brandCheck(this,_Request),this.#state.referrerPolicy}get mode(){return webidl.brandCheck(this,_Request),this.#state.mode}get credentials(){return webidl.brandCheck(this,_Request),this.#state.credentials}get cache(){return webidl.brandCheck(this,_Request),this.#state.cache}get redirect(){return webidl.brandCheck(this,_Request),this.#state.redirect}get integrity(){return webidl.brandCheck(this,_Request),this.#state.integrity}get keepalive(){return webidl.brandCheck(this,_Request),this.#state.keepalive}get isReloadNavigation(){return webidl.brandCheck(this,_Request),this.#state.reloadNavigation}get isHistoryNavigation(){return webidl.brandCheck(this,_Request),this.#state.historyNavigation}get signal(){return webidl.brandCheck(this,_Request),this.#signal}get body(){return webidl.brandCheck(this,_Request),this.#state.body?this.#state.body.stream:null}get bodyUsed(){return webidl.brandCheck(this,_Request),!!this.#state.body&&util.isDisturbed(this.#state.body.stream)}get duplex(){return webidl.brandCheck(this,_Request),"half"}clone(){if(webidl.brandCheck(this,_Request),bodyUnusable(this.#state))throw new TypeError("unusable");let clonedRequest=cloneRequest(this.#state),ac=new AbortController;if(this.signal.aborted)ac.abort(this.signal.reason);else{let list=dependentControllerMap.get(this.signal);list===void 0&&(list=new Set,dependentControllerMap.set(this.signal,list));let acRef=new WeakRef(ac);list.add(acRef),util.addAbortListener(ac.signal,buildAbort(acRef))}return fromInnerRequest(clonedRequest,this.#dispatcher,ac.signal,getHeadersGuard(this.#headers))}[nodeUtil.inspect.custom](depth,options){options.depth===null&&(options.depth=2),options.colors??=!0;let properties={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 ${nodeUtil.formatWithOptions(options,properties)}`}static setRequestSignal(request,newSignal){return request.#signal=newSignal,request}static getRequestDispatcher(request){return request.#dispatcher}static setRequestDispatcher(request,newDispatcher){request.#dispatcher=newDispatcher}static setRequestHeaders(request,newHeaders){request.#headers=newHeaders}static getRequestState(request){return request.#state}static setRequestState(request,newState){request.#state=newState}static removeRequestAbortListener(request){request.#abortCleanup?.()}},{setRequestSignal,getRequestDispatcher,setRequestDispatcher,setRequestHeaders,getRequestState,setRequestState,removeRequestAbortListener}=Request;Reflect.deleteProperty(Request,"setRequestSignal");Reflect.deleteProperty(Request,"getRequestDispatcher");Reflect.deleteProperty(Request,"setRequestDispatcher");Reflect.deleteProperty(Request,"setRequestHeaders");Reflect.deleteProperty(Request,"getRequestState");Reflect.deleteProperty(Request,"setRequestState");Reflect.deleteProperty(Request,"removeRequestAbortListener");mixinBody(Request,getRequestState);function makeRequest(init){return{method:init.method??"GET",localURLsOnly:init.localURLsOnly??!1,unsafeRequest:init.unsafeRequest??!1,body:init.body??null,client:init.client??null,reservedClient:init.reservedClient??null,replacesClientId:init.replacesClientId??"",window:init.window??"client",keepalive:init.keepalive??!1,serviceWorkers:init.serviceWorkers??"all",initiator:init.initiator??"",destination:init.destination??"",priority:init.priority??"auto",origin:init.origin??"client",policyContainer:init.policyContainer??"client",referrer:init.referrer??"client",referrerPolicy:init.referrerPolicy??"",mode:init.mode??"no-cors",useCORSPreflightFlag:init.useCORSPreflightFlag??!1,credentials:init.credentials??"same-origin",useCredentials:init.useCredentials??!1,cache:init.cache??"default",redirect:init.redirect??"follow",integrity:init.integrity??"",cryptoGraphicsNonceMetadata:init.cryptoGraphicsNonceMetadata??"",parserMetadata:init.parserMetadata??"",reloadNavigation:init.reloadNavigation??!1,historyNavigation:init.historyNavigation??!1,userActivation:init.userActivation??!1,taintedOrigin:init.taintedOrigin??!1,redirectCount:init.redirectCount??0,responseTainting:init.responseTainting??"basic",preventNoCacheCacheControlHeaderModification:init.preventNoCacheCacheControlHeaderModification??!1,done:init.done??!1,timingAllowFailed:init.timingAllowFailed??!1,useURLCredentials:init.useURLCredentials??void 0,traversableForUserPrompts:init.traversableForUserPrompts??"client",urlList:init.urlList,url:init.urlList[0],headersList:init.headersList?new HeadersList(init.headersList):new HeadersList}}function cloneRequest(request){let newRequest=makeRequest({...request,body:null});return request.body!=null&&(newRequest.body=cloneBody(request.body)),newRequest}function fromInnerRequest(innerRequest,dispatcher,signal,guard){let request=new Request(kConstruct);setRequestState(request,innerRequest),setRequestDispatcher(request,dispatcher),setRequestSignal(request,signal);let headers=new Headers2(kConstruct);return setRequestHeaders(request,headers),setHeadersList(headers,innerRequest.headersList),setHeadersGuard(headers,guard),request}Object.defineProperties(Request.prototype,{method:kEnumerableProperty,url:kEnumerableProperty,headers:kEnumerableProperty,redirect:kEnumerableProperty,clone:kEnumerableProperty,signal:kEnumerableProperty,duplex:kEnumerableProperty,destination:kEnumerableProperty,body:kEnumerableProperty,bodyUsed:kEnumerableProperty,isHistoryNavigation:kEnumerableProperty,isReloadNavigation:kEnumerableProperty,keepalive:kEnumerableProperty,integrity:kEnumerableProperty,cache:kEnumerableProperty,credentials:kEnumerableProperty,attribute:kEnumerableProperty,referrerPolicy:kEnumerableProperty,referrer:kEnumerableProperty,mode:kEnumerableProperty,[Symbol.toStringTag]:{value:"Request",configurable:!0}});webidl.is.Request=webidl.util.MakeTypeAssertion(Request);webidl.converters.RequestInfo=function(V){return typeof V=="string"?webidl.converters.USVString(V):webidl.is.Request(V)?V:webidl.converters.USVString(V)};webidl.converters.RequestInit=webidl.dictionaryConverter([{key:"method",converter:webidl.converters.ByteString},{key:"headers",converter:webidl.converters.HeadersInit},{key:"body",converter:webidl.nullableConverter(webidl.converters.BodyInit)},{key:"referrer",converter:webidl.converters.USVString},{key:"referrerPolicy",converter:webidl.converters.DOMString,allowedValues:referrerPolicy},{key:"mode",converter:webidl.converters.DOMString,allowedValues:requestMode},{key:"credentials",converter:webidl.converters.DOMString,allowedValues:requestCredentials},{key:"cache",converter:webidl.converters.DOMString,allowedValues:requestCache},{key:"redirect",converter:webidl.converters.DOMString,allowedValues:requestRedirect},{key:"integrity",converter:webidl.converters.DOMString},{key:"keepalive",converter:webidl.converters.boolean},{key:"signal",converter:webidl.nullableConverter(signal=>webidl.converters.AbortSignal(signal,"RequestInit","signal"))},{key:"window",converter:webidl.converters.any},{key:"duplex",converter:webidl.converters.DOMString,allowedValues:requestDuplex},{key:"dispatcher",converter:webidl.converters.any},{key:"priority",converter:webidl.converters.DOMString,allowedValues:["high","low","auto"]}]);module.exports={Request,makeRequest,fromInnerRequest,cloneRequest,getRequestDispatcher,getRequestState,removeRequestAbortListener}}});var require_subresource_integrity=__commonJS({"node_modules/undici/lib/web/subresource-integrity/subresource-integrity.js"(exports,module){"use strict";var assert=__require("node:assert"),{runtimeFeatures}=require_runtime_features(),validSRIHashAlgorithmTokenSet=new Map([["sha256",0],["sha384",1],["sha512",2]]),crypto4;if(runtimeFeatures.has("crypto")){crypto4=__require("node:crypto");let cryptoHashes=crypto4.getHashes();cryptoHashes.length===0&&validSRIHashAlgorithmTokenSet.clear();for(let algorithm of validSRIHashAlgorithmTokenSet.keys())cryptoHashes.includes(algorithm)===!1&&validSRIHashAlgorithmTokenSet.delete(algorithm)}else validSRIHashAlgorithmTokenSet.clear();var getSRIHashAlgorithmIndex=Map.prototype.get.bind(validSRIHashAlgorithmTokenSet),isValidSRIHashAlgorithm=Map.prototype.has.bind(validSRIHashAlgorithmTokenSet),bytesMatch=runtimeFeatures.has("crypto")===!1||validSRIHashAlgorithmTokenSet.size===0?()=>!0:(bytes,metadataList)=>{let parsedMetadata=parseMetadata(metadataList);if(parsedMetadata.length===0)return!0;let metadata=getStrongestMetadata(parsedMetadata);for(let item of metadata){let algorithm=item.alg,expectedValue=item.val,actualValue=applyAlgorithmToBytes(algorithm,bytes);if(caseSensitiveMatch(actualValue,expectedValue))return!0}return!1};function getStrongestMetadata(metadataList){let result2=[],strongest=null;for(let item of metadataList){if(assert(isValidSRIHashAlgorithm(item.alg),"Invalid SRI hash algorithm token"),result2.length===0){result2.push(item),strongest=item;continue}let currentAlgorithm=strongest.alg,currentAlgorithmIndex=getSRIHashAlgorithmIndex(currentAlgorithm),newAlgorithm=item.alg,newAlgorithmIndex=getSRIHashAlgorithmIndex(newAlgorithm);newAlgorithmIndex<currentAlgorithmIndex||(newAlgorithmIndex>currentAlgorithmIndex?(strongest=item,result2[0]=item,result2.length=1):result2.push(item))}return result2}function parseMetadata(metadata){let result2=[];for(let item of metadata.split(" ")){let algorithmExpression=item.split("?",1)[0],base64Value="",algorithmAndValue=[algorithmExpression.slice(0,6),algorithmExpression.slice(7)],algorithm=algorithmAndValue[0];if(!isValidSRIHashAlgorithm(algorithm))continue;algorithmAndValue[1]&&(base64Value=algorithmAndValue[1]);let metadata2={alg:algorithm,val:base64Value};result2.push(metadata2)}return result2}var applyAlgorithmToBytes=(algorithm,bytes)=>crypto4.hash(algorithm,bytes,"base64");function caseSensitiveMatch(actualValue,expectedValue){let actualValueLength=actualValue.length;actualValueLength!==0&&actualValue[actualValueLength-1]==="="&&(actualValueLength-=1),actualValueLength!==0&&actualValue[actualValueLength-1]==="="&&(actualValueLength-=1);let expectedValueLength=expectedValue.length;if(expectedValueLength!==0&&expectedValue[expectedValueLength-1]==="="&&(expectedValueLength-=1),expectedValueLength!==0&&expectedValue[expectedValueLength-1]==="="&&(expectedValueLength-=1),actualValueLength!==expectedValueLength)return!1;for(let i=0;i<actualValueLength;++i)if(!(actualValue[i]===expectedValue[i]||actualValue[i]==="+"&&expectedValue[i]==="-"||actualValue[i]==="/"&&expectedValue[i]==="_"))return!1;return!0}module.exports={applyAlgorithmToBytes,bytesMatch,caseSensitiveMatch,isValidSRIHashAlgorithm,getStrongestMetadata,parseMetadata}}});var require_fetch=__commonJS({"node_modules/undici/lib/web/fetch/index.js"(exports,module){"use strict";var{makeNetworkError,makeAppropriateNetworkError,filterResponse,makeResponse,fromInnerResponse,getResponseState}=require_response(),{HeadersList}=require_headers(),{Request,cloneRequest,getRequestDispatcher,getRequestState,removeRequestAbortListener}=require_request2(),zlib2=__require("node:zlib"),{makePolicyContainer,clonePolicyContainer,requestBadPort,TAOCheck,appendRequestOriginHeader,responseLocationURL,requestCurrentURL,setRequestReferrerPolicyOnRedirect,tryUpgradeRequestToAPotentiallyTrustworthyURL,createOpaqueTimingInfo,appendFetchMetadata,corsCheck,crossOriginResourcePolicyCheck,determineRequestsReferrer,coarsenedSharedCurrentTime,sameOrigin,isCancelled,isAborted,isErrorLike,fullyReadBody,readableStreamClose,urlIsLocal,urlIsHttpHttpsScheme,urlHasHttpsScheme,clampAndCoarsenConnectionTimingInfo,simpleRangeHeaderValue,buildContentRange,createInflate,extractMimeType,hasAuthenticationEntry,includesCredentials,isTraversableNavigable}=require_util2(),assert=__require("node:assert"),{safelyExtractBody,extractBody}=require_body(),{redirectStatusSet,nullBodyStatus,safeMethodsSet,requestBodyHeader,subresourceSet}=require_constants3(),EE=__require("node:events"),{Readable:Readable2,pipeline:pipeline2,finished,isErrored,isReadable}=__require("node:stream"),{addAbortListener,bufferToLowerCasedHeaderName}=require_util(),{SocketError}=require_errors(),{dataURLProcessor,serializeAMimeType,minimizeSupportedMimeType}=require_data_url(),{getGlobalDispatcher}=require_global2(),{webidl}=require_webidl(),{STATUS_CODES}=__require("node:http"),{bytesMatch}=require_subresource_integrity(),{isomorphicEncode}=require_infra(),GET_OR_HEAD=["GET","HEAD"],defaultUserAgent=typeof __UNDICI_IS_NODE__<"u"||typeof esbuildDetection<"u"?"node":"undici",resolveObjectURL;function appendHeadersListFromResponseHeaders(headersList,headers,rawHeaders){if(Array.isArray(rawHeaders)){for(let i=0;i<rawHeaders.length;i+=2){let nameStr=bufferToLowerCasedHeaderName(rawHeaders[i]),value=rawHeaders[i+1];if(Array.isArray(value)&&!Buffer.isBuffer(value))for(let val of value)headersList.append(nameStr,val.toString("latin1"),!0);else headersList.append(nameStr,value.toString("latin1"),!0)}return}for(let[name,value]of Object.entries(headers??{}))if(Array.isArray(value))for(let entry of value)headersList.append(name,`${entry}`,!0);else headersList.append(name,`${value}`,!0)}var Fetch=class extends EE{constructor(dispatcher){super(),this.dispatcher=dispatcher,this.connection=null,this.dump=!1,this.state="ongoing"}terminate(reason){this.state==="ongoing"&&(this.state="terminated",this.connection?.destroy(reason),this.emit("terminated",reason))}abort(error){this.state==="ongoing"&&(this.state="aborted",error||(error=new DOMException("The operation was aborted.","AbortError")),this.serializedAbortReason=error,this.connection?.destroy(error),this.emit("terminated",error))}};function handleFetchDone(response){finalizeAndReportTiming(response,"fetch")}function fetch2(input2,init=void 0){webidl.argumentLengthCheck(arguments,1,"globalThis.fetch");let p=Promise.withResolvers(),requestObject;try{requestObject=new Request(input2,init)}catch(e){return p.reject(e),p.promise}let request=getRequestState(requestObject);if(requestObject.signal.aborted)return abortFetch(p,request,null,requestObject.signal.reason,null),p.promise;request.client.globalObject?.constructor?.name==="ServiceWorkerGlobalScope"&&(request.serviceWorkers="none");let responseObject=null,locallyAborted=!1,controller=null,removeAbortListener=addAbortListener(requestObject.signal,()=>{locallyAborted=!0,assert(controller!=null),controller.abort(requestObject.signal.reason);let realResponse=responseObject?.deref();abortFetch(p,request,realResponse,requestObject.signal.reason,controller.controller)}),cleanupAbortListeners=()=>{removeAbortListener(),removeRequestAbortListener(requestObject)};return controller=fetching({request,processResponseEndOfBody:response=>{handleFetchDone(response),cleanupAbortListeners()},processResponse:response=>{if(!locallyAborted){if(response.aborted){abortFetch(p,request,responseObject,controller.serializedAbortReason,controller.controller),cleanupAbortListeners();return}if(response.type==="error"){p.reject(new TypeError("fetch failed",{cause:response.error})),cleanupAbortListeners();return}responseObject=new WeakRef(fromInnerResponse(response,"immutable")),p.resolve(responseObject.deref()),p=null}},dispatcher:getRequestDispatcher(requestObject),requestObject}),p.promise}function finalizeAndReportTiming(response,initiatorType="other"){if(response.type==="error"&&response.aborted||!response.urlList?.length)return;let originalURL=response.urlList[0],timingInfo=response.timingInfo,cacheState=response.cacheState;urlIsHttpHttpsScheme(originalURL)&&timingInfo!==null&&(response.timingAllowPassed||(timingInfo=createOpaqueTimingInfo({startTime:timingInfo.startTime}),cacheState=""),timingInfo.endTime=coarsenedSharedCurrentTime(),response.timingInfo=timingInfo,markResourceTiming(timingInfo,originalURL.href,initiatorType,globalThis,cacheState,"",response.status))}var markResourceTiming=performance.markResourceTiming;function abortFetch(p,request,responseObject,error,controller){if(p&&p.reject(error),request.body?.stream!=null&&isReadable(request.body.stream)&&request.body.stream.cancel(error).catch(err=>{if(err.code!=="ERR_INVALID_STATE")throw err}),responseObject==null)return;let response=getResponseState(responseObject);response.body?.stream!=null&&isReadable(response.body.stream)&&controller.error(error)}function fetching({request,processRequestBodyChunkLength,processRequestEndOfBody,processResponse,processResponseEndOfBody,processResponseConsumeBody,useParallelQueue=!1,dispatcher=getGlobalDispatcher(),requestObject=null}){assert(dispatcher);let taskDestination=null,crossOriginIsolatedCapability=!1;request.client!=null&&(taskDestination=request.client.globalObject,crossOriginIsolatedCapability=request.client.crossOriginIsolatedCapability);let currentTime=coarsenedSharedCurrentTime(crossOriginIsolatedCapability),timingInfo=createOpaqueTimingInfo({startTime:currentTime}),fetchParams={controller:new Fetch(dispatcher),request,timingInfo,processRequestBodyChunkLength,processRequestEndOfBody,processResponse,processResponseConsumeBody,processResponseEndOfBody,taskDestination,crossOriginIsolatedCapability,requestObject};return assert(!request.body||request.body.stream),request.window==="client"&&(request.window=request.client?.globalObject?.constructor?.name==="Window"?request.client:"no-window"),request.origin==="client"&&(request.origin=request.client.origin),request.policyContainer==="client"&&(request.client!=null?request.policyContainer=clonePolicyContainer(request.client.policyContainer):request.policyContainer=makePolicyContainer()),request.headersList.contains("accept",!0)||request.headersList.append("accept","*/*",!0),request.headersList.contains("accept-language",!0)||request.headersList.append("accept-language","*",!0),request.priority,subresourceSet.has(request.destination),mainFetch(fetchParams,!1),fetchParams.controller}async function mainFetch(fetchParams,recursive){try{let request=fetchParams.request,response=null;if(request.localURLsOnly&&!urlIsLocal(requestCurrentURL(request))&&(response=makeNetworkError("local URLs only")),tryUpgradeRequestToAPotentiallyTrustworthyURL(request),requestBadPort(request)==="blocked"&&(response=makeNetworkError("bad port")),request.referrerPolicy===""&&(request.referrerPolicy=request.policyContainer.referrerPolicy),request.referrer!=="no-referrer"&&(request.referrer=determineRequestsReferrer(request)),response===null){let currentURL=requestCurrentURL(request);sameOrigin(currentURL,request.url)&&request.responseTainting==="basic"||currentURL.protocol==="data:"||request.mode==="navigate"||request.mode==="websocket"?(request.responseTainting="basic",response=await schemeFetch(fetchParams)):request.mode==="same-origin"?response=makeNetworkError('request mode cannot be "same-origin"'):request.mode==="no-cors"?request.redirect!=="follow"?response=makeNetworkError('redirect mode cannot be "follow" for "no-cors" request'):(request.responseTainting="opaque",response=await schemeFetch(fetchParams)):urlIsHttpHttpsScheme(requestCurrentURL(request))?(request.responseTainting="cors",response=await httpFetch(fetchParams)):response=makeNetworkError("URL scheme must be a HTTP(S) scheme")}if(recursive)return response;response.status!==0&&!response.internalResponse&&(request.responseTainting,request.responseTainting==="basic"?response=filterResponse(response,"basic"):request.responseTainting==="cors"?response=filterResponse(response,"cors"):request.responseTainting==="opaque"?response=filterResponse(response,"opaque"):assert(!1));let internalResponse=response.status===0?response:response.internalResponse;if(internalResponse.urlList.length===0&&internalResponse.urlList.push(...request.urlList),request.timingAllowFailed||(response.timingAllowPassed=!0),response.type==="opaque"&&internalResponse.status===206&&internalResponse.rangeRequested&&!request.headers.contains("range",!0)&&(response=internalResponse=makeNetworkError()),response.status!==0&&(request.method==="HEAD"||request.method==="CONNECT"||nullBodyStatus.includes(internalResponse.status))&&(internalResponse.body=null,fetchParams.controller.dump=!0),request.integrity){let processBodyError=reason=>fetchFinale(fetchParams,makeNetworkError(reason));if(request.responseTainting==="opaque"||response.body==null){processBodyError(response.error);return}let processBody=bytes=>{if(!bytesMatch(bytes,request.integrity)){processBodyError("integrity mismatch");return}response.body=safelyExtractBody(bytes)[0],fetchFinale(fetchParams,response)};fullyReadBody(response.body,processBody,processBodyError)}else fetchFinale(fetchParams,response)}catch(err){fetchParams.controller.terminate(err)}}function schemeFetch(fetchParams){if(isCancelled(fetchParams)&&fetchParams.request.redirectCount===0)return Promise.resolve(makeAppropriateNetworkError(fetchParams));let{request}=fetchParams,{protocol:scheme}=requestCurrentURL(request);switch(scheme){case"about:":return Promise.resolve(makeNetworkError("about scheme is not supported"));case"blob:":{resolveObjectURL||(resolveObjectURL=__require("node:buffer").resolveObjectURL);let blobURLEntry=requestCurrentURL(request);if(blobURLEntry.search.length!==0)return Promise.resolve(makeNetworkError("NetworkError when attempting to fetch resource."));let blob=resolveObjectURL(blobURLEntry.toString());if(request.method!=="GET"||!webidl.is.Blob(blob))return Promise.resolve(makeNetworkError("invalid method"));let response=makeResponse(),fullLength=blob.size,serializedFullLength=isomorphicEncode(`${fullLength}`),type=blob.type;if(request.headersList.contains("range",!0)){response.rangeRequested=!0;let rangeHeader=request.headersList.get("range",!0),rangeValue=simpleRangeHeaderValue(rangeHeader,!0);if(rangeValue==="failure")return Promise.resolve(makeNetworkError("failed to fetch the data URL"));let{rangeStartValue:rangeStart,rangeEndValue:rangeEnd}=rangeValue;if(rangeStart===null)rangeStart=fullLength-rangeEnd,rangeEnd=rangeStart+rangeEnd-1;else{if(rangeStart>=fullLength)return Promise.resolve(makeNetworkError("Range start is greater than the blob's size."));(rangeEnd===null||rangeEnd>=fullLength)&&(rangeEnd=fullLength-1)}let slicedBlob=blob.slice(rangeStart,rangeEnd+1,type),slicedBodyWithType=extractBody(slicedBlob);response.body=slicedBodyWithType[0];let serializedSlicedLength=isomorphicEncode(`${slicedBlob.size}`),contentRange=buildContentRange(rangeStart,rangeEnd,fullLength);response.status=206,response.statusText="Partial Content",response.headersList.set("content-length",serializedSlicedLength,!0),response.headersList.set("content-type",type,!0),response.headersList.set("content-range",contentRange,!0)}else{let bodyWithType=extractBody(blob);response.statusText="OK",response.body=bodyWithType[0],response.headersList.set("content-length",serializedFullLength,!0),response.headersList.set("content-type",type,!0)}return Promise.resolve(response)}case"data:":{let currentURL=requestCurrentURL(request),dataURLStruct=dataURLProcessor(currentURL);if(dataURLStruct==="failure")return Promise.resolve(makeNetworkError("failed to fetch the data URL"));let mimeType=serializeAMimeType(dataURLStruct.mimeType);return Promise.resolve(makeResponse({statusText:"OK",headersList:[["content-type",{name:"Content-Type",value:mimeType}]],body:safelyExtractBody(dataURLStruct.body)[0]}))}case"file:":return Promise.resolve(makeNetworkError("not implemented... yet..."));case"http:":case"https:":return httpFetch(fetchParams).catch(err=>makeNetworkError(err));default:return Promise.resolve(makeNetworkError("unknown scheme"))}}function finalizeResponse(fetchParams,response){fetchParams.request.done=!0,fetchParams.processResponseDone!=null&&queueMicrotask(()=>fetchParams.processResponseDone(response))}function fetchFinale(fetchParams,response){let timingInfo=fetchParams.timingInfo,processResponseEndOfBody=()=>{let unsafeEndTime=Date.now();fetchParams.request.destination==="document"&&(fetchParams.controller.fullTimingInfo=timingInfo),fetchParams.controller.reportTimingSteps=()=>{if(!urlIsHttpHttpsScheme(fetchParams.request.url))return;timingInfo.endTime=unsafeEndTime;let cacheState=response.cacheState,bodyInfo=response.bodyInfo;response.timingAllowPassed||(timingInfo=createOpaqueTimingInfo(timingInfo),cacheState="");let responseStatus=0;if(fetchParams.request.mode!=="navigate"||!response.hasCrossOriginRedirects){responseStatus=response.status;let mimeType=extractMimeType(response.headersList);mimeType!=="failure"&&(bodyInfo.contentType=minimizeSupportedMimeType(mimeType))}fetchParams.request.initiatorType!=null&&markResourceTiming(timingInfo,fetchParams.request.url.href,fetchParams.request.initiatorType,globalThis,cacheState,bodyInfo,responseStatus)};let processResponseEndOfBodyTask=()=>{fetchParams.request.done=!0,fetchParams.processResponseEndOfBody!=null&&queueMicrotask(()=>fetchParams.processResponseEndOfBody(response)),fetchParams.request.initiatorType!=null&&fetchParams.controller.reportTimingSteps()};queueMicrotask(()=>processResponseEndOfBodyTask())};fetchParams.processResponse!=null&&queueMicrotask(()=>{fetchParams.processResponse(response),fetchParams.processResponse=null});let internalResponse=response.type==="error"?response:response.internalResponse??response;internalResponse.body==null?processResponseEndOfBody():finished(internalResponse.body.stream,()=>{processResponseEndOfBody()})}async function httpFetch(fetchParams){let request=fetchParams.request,response=null,actualResponse=null,timingInfo=fetchParams.timingInfo;if(request.serviceWorkers,response===null){if(request.redirect==="follow"&&(request.serviceWorkers="none"),actualResponse=response=await httpNetworkOrCacheFetch(fetchParams),request.responseTainting==="cors"&&corsCheck(request,response)==="failure")return makeNetworkError("cors failure");TAOCheck(request,response)==="failure"&&(request.timingAllowFailed=!0)}return(request.responseTainting==="opaque"||response.type==="opaque")&&crossOriginResourcePolicyCheck(request.origin,request.client,request.destination,actualResponse)==="blocked"?makeNetworkError("blocked"):(redirectStatusSet.has(actualResponse.status)&&(request.redirect!=="manual"&&fetchParams.controller.connection.destroy(void 0,!1),request.redirect==="error"?response=makeNetworkError("unexpected redirect"):request.redirect==="manual"?response=actualResponse:request.redirect==="follow"?response=await httpRedirectFetch(fetchParams,response):assert(!1)),response.timingInfo=timingInfo,response)}function httpRedirectFetch(fetchParams,response){let request=fetchParams.request,actualResponse=response.internalResponse?response.internalResponse:response,locationURL;try{if(locationURL=responseLocationURL(actualResponse,requestCurrentURL(request).hash),locationURL==null)return response}catch(err){return Promise.resolve(makeNetworkError(err))}if(!urlIsHttpHttpsScheme(locationURL))return Promise.resolve(makeNetworkError("URL scheme must be a HTTP(S) scheme"));if(request.redirectCount===20)return Promise.resolve(makeNetworkError("redirect count exceeded"));if(request.redirectCount+=1,request.mode==="cors"&&(locationURL.username||locationURL.password)&&!sameOrigin(request,locationURL))return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"'));if(request.responseTainting==="cors"&&(locationURL.username||locationURL.password))return Promise.resolve(makeNetworkError('URL cannot contain credentials for request mode "cors"'));if(actualResponse.status!==303&&request.body!=null&&request.body.source==null)return Promise.resolve(makeNetworkError());if([301,302].includes(actualResponse.status)&&request.method==="POST"||actualResponse.status===303&&!GET_OR_HEAD.includes(request.method)){request.method="GET",request.body=null;for(let headerName of requestBodyHeader)request.headersList.delete(headerName)}sameOrigin(requestCurrentURL(request),locationURL)||(request.headersList.delete("authorization",!0),request.headersList.delete("proxy-authorization",!0),request.headersList.delete("cookie",!0),request.headersList.delete("host",!0)),request.body!=null&&(assert(request.body.source!=null),request.body=safelyExtractBody(request.body.source)[0]);let timingInfo=fetchParams.timingInfo;return timingInfo.redirectEndTime=timingInfo.postRedirectStartTime=coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability),timingInfo.redirectStartTime===0&&(timingInfo.redirectStartTime=timingInfo.startTime),request.urlList.push(locationURL),setRequestReferrerPolicyOnRedirect(request,actualResponse),mainFetch(fetchParams,!0)}async function httpNetworkOrCacheFetch(fetchParams,isAuthenticationFetch=!1,isNewConnectionFetch=!1){let request=fetchParams.request,httpFetchParams=null,httpRequest=null,response=null,httpCache=null,revalidatingFlag=!1;request.window==="no-window"&&request.redirect==="error"?(httpFetchParams=fetchParams,httpRequest=request):(request.body?.source!=null?httpRequest=cloneRequest(request):(httpRequest=cloneRequest({...request,body:null}),httpRequest.body=request.body),httpFetchParams={...fetchParams},httpFetchParams.request=httpRequest);let includeCredentials=request.credentials==="include"||request.credentials==="same-origin"&&request.responseTainting==="basic",contentLength=httpRequest.body?httpRequest.body.length:null,contentLengthHeaderValue=null;if(httpRequest.body==null&&["POST","PUT"].includes(httpRequest.method)&&(contentLengthHeaderValue="0"),contentLength!=null&&(contentLengthHeaderValue=isomorphicEncode(`${contentLength}`)),contentLengthHeaderValue!=null&&!httpRequest.headersList.contains("content-length",!0)&&httpRequest.headersList.append("content-length",contentLengthHeaderValue,!0),contentLength!=null&&httpRequest.keepalive,webidl.is.URL(httpRequest.referrer)&&httpRequest.headersList.append("referer",isomorphicEncode(httpRequest.referrer.href),!0),appendRequestOriginHeader(httpRequest),appendFetchMetadata(httpRequest),httpRequest.headersList.contains("user-agent",!0)||httpRequest.headersList.append("user-agent",defaultUserAgent,!0),httpRequest.cache==="default"&&(httpRequest.headersList.contains("if-modified-since",!0)||httpRequest.headersList.contains("if-none-match",!0)||httpRequest.headersList.contains("if-unmodified-since",!0)||httpRequest.headersList.contains("if-match",!0)||httpRequest.headersList.contains("if-range",!0))&&(httpRequest.cache="no-store"),httpRequest.cache==="no-cache"&&!httpRequest.preventNoCacheCacheControlHeaderModification&&!httpRequest.headersList.contains("cache-control",!0)&&httpRequest.headersList.append("cache-control","max-age=0",!0),(httpRequest.cache==="no-store"||httpRequest.cache==="reload")&&(httpRequest.headersList.contains("pragma",!0)||httpRequest.headersList.append("pragma","no-cache",!0),httpRequest.headersList.contains("cache-control",!0)||httpRequest.headersList.append("cache-control","no-cache",!0)),httpRequest.headersList.contains("range",!0)&&httpRequest.headersList.append("accept-encoding","identity",!0),httpRequest.headersList.contains("accept-encoding",!0)||(urlHasHttpsScheme(requestCurrentURL(httpRequest))?httpRequest.headersList.append("accept-encoding","br, gzip, deflate, zstd",!0):httpRequest.headersList.append("accept-encoding","gzip, deflate",!0)),httpRequest.headersList.delete("host",!0),includeCredentials&&!httpRequest.headersList.contains("authorization",!0)){let authorizationValue=null;if(!(hasAuthenticationEntry(httpRequest)&&(httpRequest.useURLCredentials===void 0||!includesCredentials(requestCurrentURL(httpRequest))))){if(includesCredentials(requestCurrentURL(httpRequest))&&isAuthenticationFetch){let{username,password}=requestCurrentURL(httpRequest);authorizationValue=`Basic ${Buffer.from(`${username}:${password}`).toString("base64")}`}}authorizationValue!==null&&httpRequest.headersList.append("Authorization",authorizationValue,!1)}if(httpCache==null&&(httpRequest.cache="no-store"),httpRequest.cache!=="no-store"&&httpRequest.cache,response==null){if(httpRequest.cache==="only-if-cached")return makeNetworkError("only if cached");let forwardResponse=await httpNetworkFetch(httpFetchParams,includeCredentials,isNewConnectionFetch);!safeMethodsSet.has(httpRequest.method)&&forwardResponse.status>=200&&forwardResponse.status<=399,revalidatingFlag&&forwardResponse.status,response==null&&(response=forwardResponse)}if(response.urlList=[...httpRequest.urlList],httpRequest.headersList.contains("range",!0)&&(response.rangeRequested=!0),response.requestIncludesCredentials=includeCredentials,response.status===401&&httpRequest.responseTainting!=="cors"&&includeCredentials&&(request.useURLCredentials!==void 0||isTraversableNavigable(request.traversableForUserPrompts))){if(request.body!=null){if(request.body.source==null)return response;request.body=safelyExtractBody(request.body.source)[0]}if(request.useURLCredentials===void 0||isAuthenticationFetch)return isCancelled(fetchParams)?makeAppropriateNetworkError(fetchParams):response;fetchParams.controller.connection.destroy(),response=await httpNetworkOrCacheFetch(fetchParams,!0)}if(response.status===407)return request.window==="no-window"?makeNetworkError():isCancelled(fetchParams)?makeAppropriateNetworkError(fetchParams):makeNetworkError("proxy authentication required");if(response.status===421&&!isNewConnectionFetch&&(request.body==null||request.body.source!=null)){if(isCancelled(fetchParams))return makeAppropriateNetworkError(fetchParams);fetchParams.controller.connection.destroy(),response=await httpNetworkOrCacheFetch(fetchParams,isAuthenticationFetch,!0)}return response}async function httpNetworkFetch(fetchParams,includeCredentials=!1,forceNewConnection=!1){assert(!fetchParams.controller.connection||fetchParams.controller.connection.destroyed),fetchParams.controller.connection={abort:null,destroyed:!1,destroy(err,abort=!0){this.destroyed||(this.destroyed=!0,abort&&this.abort?.(err??new DOMException("The operation was aborted.","AbortError")))}};let request=fetchParams.request,response=null,timingInfo=fetchParams.timingInfo;null==null&&(request.cache="no-store");let newConnection=forceNewConnection?"yes":"no";request.mode;let requestBody=null;if(request.body==null&&fetchParams.processRequestEndOfBody)queueMicrotask(()=>fetchParams.processRequestEndOfBody());else if(request.body!=null){let processBodyChunk=async function*(bytes){isCancelled(fetchParams)||(yield bytes,fetchParams.processRequestBodyChunkLength?.(bytes.byteLength))},processEndOfBody=()=>{isCancelled(fetchParams)||fetchParams.processRequestEndOfBody&&fetchParams.processRequestEndOfBody()},processBodyError=e=>{isCancelled(fetchParams)||(e.name==="AbortError"?fetchParams.controller.abort():fetchParams.controller.terminate(e))};requestBody=(async function*(){try{for await(let bytes of request.body.stream)yield*processBodyChunk(bytes);processEndOfBody()}catch(err){processBodyError(err)}})()}try{let{body,status,statusText,headersList,socket}=await dispatch({body:requestBody});if(socket)response=makeResponse({status,statusText,headersList,socket});else{let iterator=body[Symbol.asyncIterator]();fetchParams.controller.next=()=>iterator.next(),response=makeResponse({status,statusText,headersList})}}catch(err){return err.name==="AbortError"?(fetchParams.controller.connection.destroy(),makeAppropriateNetworkError(fetchParams,err)):makeNetworkError(err)}let pullAlgorithm=()=>fetchParams.controller.resume(),cancelAlgorithm=reason=>{isCancelled(fetchParams)||fetchParams.controller.abort(reason)},stream2=new ReadableStream({start(controller){fetchParams.controller.controller=controller},pull:pullAlgorithm,cancel:cancelAlgorithm,type:"bytes"});response.body={stream:stream2,source:null,length:null},fetchParams.controller.resume||fetchParams.controller.on("terminated",onAborted),fetchParams.controller.resume=async()=>{for(;;){let bytes,isFailure;try{let{done,value}=await fetchParams.controller.next();if(isAborted(fetchParams))break;bytes=done?void 0:value}catch(err){fetchParams.controller.ended&&!timingInfo.encodedBodySize?bytes=void 0:(bytes=err,isFailure=!0)}if(bytes===void 0){readableStreamClose(fetchParams.controller.controller),finalizeResponse(fetchParams,response);return}if(timingInfo.decodedBodySize+=bytes?.byteLength??0,isFailure){fetchParams.controller.terminate(bytes);return}let buffer=new Uint8Array(bytes);if(buffer.byteLength&&fetchParams.controller.controller.enqueue(buffer),isErrored(stream2)){fetchParams.controller.terminate();return}if(fetchParams.controller.controller.desiredSize<=0)return}};function onAborted(reason){isAborted(fetchParams)?(response.aborted=!0,isReadable(stream2)&&fetchParams.controller.controller.error(fetchParams.controller.serializedAbortReason)):isReadable(stream2)&&fetchParams.controller.controller.error(new TypeError("terminated",{cause:isErrorLike(reason)?reason:void 0})),fetchParams.controller.connection.destroy()}return response;function dispatch({body}){let url=requestCurrentURL(request),agent=fetchParams.controller.dispatcher,path10=url.pathname+url.search,hasTrailingQuestionMark=url.search.length===0&&url.href[url.href.length-url.hash.length-1]==="?";return dispatchWithProtocolPreference(body);function dispatchWithProtocolPreference(body2,allowH2){return new Promise((resolve17,reject)=>agent.dispatch({path:hasTrailingQuestionMark?`${path10}?`:path10,origin:url.origin,method:request.method,body:agent.isMockActive?request.body&&(request.body.source||request.body.stream):body2,__mockAgentBodyForDispatch:body2,headers:request.headersList.entries,maxRedirections:0,upgrade:request.mode==="websocket"?"websocket":void 0,...allowH2===!1?{allowH2}:null},{body:null,abort:null,onRequestStart(controller){let{connection}=fetchParams.controller;timingInfo.finalConnectionTimingInfo=clampAndCoarsenConnectionTimingInfo(void 0,timingInfo.postRedirectStartTime,fetchParams.crossOriginIsolatedCapability);let abort=reason=>controller.abort(reason);connection.destroyed?abort(new DOMException("The operation was aborted.","AbortError")):(fetchParams.controller.on("terminated",abort),this.abort=connection.abort=abort),timingInfo.finalNetworkRequestStartTime=coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability)},onResponseStarted(){timingInfo.finalNetworkResponseStartTime=coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability)},onResponseStart(controller,status,headers,statusText){if(status<200)return;let rawHeaders=controller?.rawHeaders??[],headersList=new HeadersList;appendHeadersListFromResponseHeaders(headersList,headers,rawHeaders);let location=headersList.get("location",!0);this.body=new Readable2({read:()=>controller.resume()});let willFollow=location&&request.redirect==="follow"&&redirectStatusSet.has(status),decoders=[];if(request.method!=="HEAD"&&request.method!=="CONNECT"&&!nullBodyStatus.includes(status)&&!willFollow){let contentEncoding=headersList.get("content-encoding",!0),codings=contentEncoding?contentEncoding.toLowerCase().split(","):[],maxContentEncodings=5;if(codings.length>maxContentEncodings){reject(new Error(`too many content-encodings in response: ${codings.length}, maximum allowed is ${maxContentEncodings}`));return}for(let i=codings.length-1;i>=0;--i){let coding=codings[i].trim();if(coding==="x-gzip"||coding==="gzip")decoders.push(zlib2.createGunzip({flush:zlib2.constants.Z_SYNC_FLUSH,finishFlush:zlib2.constants.Z_SYNC_FLUSH}));else if(coding==="deflate")decoders.push(createInflate({flush:zlib2.constants.Z_SYNC_FLUSH,finishFlush:zlib2.constants.Z_SYNC_FLUSH}));else if(coding==="br")decoders.push(zlib2.createBrotliDecompress({flush:zlib2.constants.BROTLI_OPERATION_FLUSH,finishFlush:zlib2.constants.BROTLI_OPERATION_FLUSH}));else if(coding==="zstd")decoders.push(zlib2.createZstdDecompress({flush:zlib2.constants.ZSTD_e_continue,finishFlush:zlib2.constants.ZSTD_e_end}));else{decoders.length=0;break}}}let onError=err=>this.onResponseError(controller,err);resolve17({status,statusText,headersList,body:decoders.length?pipeline2(this.body,...decoders,err=>{err&&this.onResponseError(controller,err)}).on("error",onError):this.body.on("error",onError)})},onResponseData(controller,chunk2){if(fetchParams.controller.dump)return;let bytes=chunk2;timingInfo.encodedBodySize+=bytes.byteLength,this.body.push(bytes)===!1&&controller.pause()},onResponseEnd(){this.abort&&fetchParams.controller.off("terminated",this.abort),fetchParams.controller.ended=!0,this.body?.push(null)},onResponseError(_controller,error){if(this.abort&&fetchParams.controller.off("terminated",this.abort),request.mode==="websocket"&&allowH2!==!1&&error?.code==="UND_ERR_INFO"&&error?.message==="HTTP/2: Extended CONNECT protocol not supported by server"){resolve17(dispatchWithProtocolPreference(body2,!1));return}this.body?.destroy(error),fetchParams.controller.terminate(error),reject(error)},onRequestUpgrade(controller,status,headers,socket){if(socket.session!=null&&status!==200||socket.session==null&&status!==101)return socket.session!=null&&controller.abort(new SocketError("bad upgrade",null)),!1;let rawHeaders=controller?.rawHeaders??[],headersList=new HeadersList;return appendHeadersListFromResponseHeaders(headersList,headers,rawHeaders),resolve17({status,statusText:STATUS_CODES[status],headersList,socket}),!0}}))}}}module.exports={fetch:fetch2,Fetch,fetching,finalizeAndReportTiming}}});var require_util3=__commonJS({"node_modules/undici/lib/web/cache/util.js"(exports,module){"use strict";var assert=__require("node:assert"),{URLSerializer}=require_data_url(),{isValidHeaderName}=require_util2();function urlEquals(A,B,excludeFragment=!1){let serializedA=URLSerializer(A,excludeFragment),serializedB=URLSerializer(B,excludeFragment);return serializedA===serializedB}function getFieldValues(header){assert(header!==null);let values=[];for(let value of header.split(","))value=value.trim(),isValidHeaderName(value)&&values.push(value);return values}module.exports={urlEquals,getFieldValues}}});var require_cache3=__commonJS({"node_modules/undici/lib/web/cache/cache.js"(exports,module){"use strict";var assert=__require("node:assert"),{kConstruct}=require_symbols(),{urlEquals,getFieldValues}=require_util3(),{kEnumerableProperty,isDisturbed}=require_util(),{webidl}=require_webidl(),{cloneResponse,fromInnerResponse,getResponseState}=require_response(),{Request,fromInnerRequest,getRequestState}=require_request2(),{fetching}=require_fetch(),{urlIsHttpHttpsScheme,readAllBytes}=require_util2(),Cache=class _Cache{#relevantRequestResponseList;constructor(){arguments[0]!==kConstruct&&webidl.illegalConstructor(),webidl.util.markAsUncloneable(this),this.#relevantRequestResponseList=arguments[1]}async match(request,options={}){webidl.brandCheck(this,_Cache);let prefix="Cache.match";webidl.argumentLengthCheck(arguments,1,prefix),request=webidl.converters.RequestInfo(request),options=webidl.converters.CacheQueryOptions(options,prefix,"options");let p=this.#internalMatchAll(request,options,1);if(p.length!==0)return p[0]}async matchAll(request=void 0,options={}){webidl.brandCheck(this,_Cache);let prefix="Cache.matchAll";return request!==void 0&&(request=webidl.converters.RequestInfo(request)),options=webidl.converters.CacheQueryOptions(options,prefix,"options"),this.#internalMatchAll(request,options)}async add(request){webidl.brandCheck(this,_Cache),webidl.argumentLengthCheck(arguments,1,"Cache.add"),request=webidl.converters.RequestInfo(request);let requests=[request];return await this.addAll(requests)}async addAll(requests){webidl.brandCheck(this,_Cache);let prefix="Cache.addAll";webidl.argumentLengthCheck(arguments,1,prefix);let responsePromises=[],requestList=[];for(let request of requests){if(request===void 0)throw webidl.errors.conversionFailed({prefix,argument:"Argument 1",types:["undefined is not allowed"]});if(request=webidl.converters.RequestInfo(request),typeof request=="string")continue;let r=getRequestState(request);if(!urlIsHttpHttpsScheme(r.url)||r.method!=="GET")throw webidl.errors.exception({header:prefix,message:"Expected http/s scheme when method is not GET."})}let fetchControllers=[];for(let request of requests){let r=getRequestState(new Request(request));if(!urlIsHttpHttpsScheme(r.url))throw webidl.errors.exception({header:prefix,message:"Expected http/s scheme."});r.initiator="fetch",r.destination="subresource",requestList.push(r);let responsePromise=Promise.withResolvers();fetchControllers.push(fetching({request:r,processResponse(response){if(response.type==="error"||response.status===206||response.status<200||response.status>299)responsePromise.reject(webidl.errors.exception({header:"Cache.addAll",message:"Received an invalid status code or the request failed."}));else if(response.headersList.contains("vary")){let fieldValues=getFieldValues(response.headersList.get("vary"));for(let fieldValue of fieldValues)if(fieldValue==="*"){responsePromise.reject(webidl.errors.exception({header:"Cache.addAll",message:"invalid vary field value"}));for(let controller of fetchControllers)controller.abort();return}}},processResponseEndOfBody(response){if(response.aborted){responsePromise.reject(new DOMException("aborted","AbortError"));return}responsePromise.resolve(response)}})),responsePromises.push(responsePromise.promise)}let responses=await Promise.all(responsePromises),operations=[],index=0;for(let response of responses){let operation={type:"put",request:requestList[index],response};operations.push(operation),index++}let cacheJobPromise=Promise.withResolvers(),errorData=null;try{this.#batchCacheOperations(operations)}catch(e){errorData=e}return queueMicrotask(()=>{errorData===null?cacheJobPromise.resolve(void 0):cacheJobPromise.reject(errorData)}),cacheJobPromise.promise}async put(request,response){webidl.brandCheck(this,_Cache);let prefix="Cache.put";webidl.argumentLengthCheck(arguments,2,prefix),request=webidl.converters.RequestInfo(request),response=webidl.converters.Response(response,prefix,"response");let innerRequest=null;if(webidl.is.Request(request)?innerRequest=getRequestState(request):innerRequest=getRequestState(new Request(request)),!urlIsHttpHttpsScheme(innerRequest.url)||innerRequest.method!=="GET")throw webidl.errors.exception({header:prefix,message:"Expected an http/s scheme when method is not GET"});let innerResponse=getResponseState(response);if(innerResponse.status===206)throw webidl.errors.exception({header:prefix,message:"Got 206 status"});if(innerResponse.headersList.contains("vary")){let fieldValues=getFieldValues(innerResponse.headersList.get("vary"));for(let fieldValue of fieldValues)if(fieldValue==="*")throw webidl.errors.exception({header:prefix,message:"Got * vary field value"})}if(innerResponse.body&&(isDisturbed(innerResponse.body.stream)||innerResponse.body.stream.locked))throw webidl.errors.exception({header:prefix,message:"Response body is locked or disturbed"});let clonedResponse=cloneResponse(innerResponse),bodyReadPromise=Promise.withResolvers();if(innerResponse.body!=null){let reader=innerResponse.body.stream.getReader();readAllBytes(reader,bodyReadPromise.resolve,bodyReadPromise.reject)}else bodyReadPromise.resolve(void 0);let operations=[],operation={type:"put",request:innerRequest,response:clonedResponse};operations.push(operation);let bytes=await bodyReadPromise.promise;clonedResponse.body!=null&&(clonedResponse.body.source=bytes);let cacheJobPromise=Promise.withResolvers(),errorData=null;try{this.#batchCacheOperations(operations)}catch(e){errorData=e}return queueMicrotask(()=>{errorData===null?cacheJobPromise.resolve():cacheJobPromise.reject(errorData)}),cacheJobPromise.promise}async delete(request,options={}){webidl.brandCheck(this,_Cache);let prefix="Cache.delete";webidl.argumentLengthCheck(arguments,1,prefix),request=webidl.converters.RequestInfo(request),options=webidl.converters.CacheQueryOptions(options,prefix,"options");let r=null;if(webidl.is.Request(request)){if(r=getRequestState(request),r.method!=="GET"&&!options.ignoreMethod)return!1}else assert(typeof request=="string"),r=getRequestState(new Request(request));let operations=[],operation={type:"delete",request:r,options};operations.push(operation);let cacheJobPromise=Promise.withResolvers(),errorData=null,requestResponses;try{requestResponses=this.#batchCacheOperations(operations)}catch(e){errorData=e}return queueMicrotask(()=>{errorData===null?cacheJobPromise.resolve(!!requestResponses?.length):cacheJobPromise.reject(errorData)}),cacheJobPromise.promise}async keys(request=void 0,options={}){webidl.brandCheck(this,_Cache);let prefix="Cache.keys";request!==void 0&&(request=webidl.converters.RequestInfo(request)),options=webidl.converters.CacheQueryOptions(options,prefix,"options");let r=null;if(request!==void 0)if(webidl.is.Request(request)){if(r=getRequestState(request),r.method!=="GET"&&!options.ignoreMethod)return[]}else typeof request=="string"&&(r=getRequestState(new Request(request)));let promise=Promise.withResolvers(),requests=[];if(request===void 0)for(let requestResponse of this.#relevantRequestResponseList)requests.push(requestResponse[0]);else{let requestResponses=this.#queryCache(r,options);for(let requestResponse of requestResponses)requests.push(requestResponse[0])}return queueMicrotask(()=>{let requestList=[];for(let request2 of requests){let requestObject=fromInnerRequest(request2,void 0,new AbortController().signal,"immutable");requestList.push(requestObject)}promise.resolve(Object.freeze(requestList))}),promise.promise}#batchCacheOperations(operations){let cache2=this.#relevantRequestResponseList,backupCache=[...cache2],addedItems=[],resultList=[];try{for(let operation of operations){if(operation.type!=="delete"&&operation.type!=="put")throw webidl.errors.exception({header:"Cache.#batchCacheOperations",message:'operation type does not match "delete" or "put"'});if(operation.type==="delete"&&operation.response!=null)throw webidl.errors.exception({header:"Cache.#batchCacheOperations",message:"delete operation should not have an associated response"});if(this.#queryCache(operation.request,operation.options,addedItems).length)throw new DOMException("???","InvalidStateError");let requestResponses;if(operation.type==="delete"){if(requestResponses=this.#queryCache(operation.request,operation.options),requestResponses.length===0)return[];for(let requestResponse of requestResponses){let idx=cache2.indexOf(requestResponse);assert(idx!==-1),cache2.splice(idx,1)}}else if(operation.type==="put"){if(operation.response==null)throw webidl.errors.exception({header:"Cache.#batchCacheOperations",message:"put operation should have an associated response"});let r=operation.request;if(!urlIsHttpHttpsScheme(r.url))throw webidl.errors.exception({header:"Cache.#batchCacheOperations",message:"expected http or https scheme"});if(r.method!=="GET")throw webidl.errors.exception({header:"Cache.#batchCacheOperations",message:"not get method"});if(operation.options!=null)throw webidl.errors.exception({header:"Cache.#batchCacheOperations",message:"options must not be defined"});requestResponses=this.#queryCache(operation.request);for(let requestResponse of requestResponses){let idx=cache2.indexOf(requestResponse);assert(idx!==-1),cache2.splice(idx,1)}cache2.push([operation.request,operation.response]),addedItems.push([operation.request,operation.response])}resultList.push([operation.request,operation.response])}return resultList}catch(e){throw this.#relevantRequestResponseList.length=0,this.#relevantRequestResponseList=backupCache,e}}#queryCache(requestQuery,options,targetStorage){let resultList=[],storage=targetStorage??this.#relevantRequestResponseList;for(let requestResponse of storage){let[cachedRequest,cachedResponse]=requestResponse;this.#requestMatchesCachedItem(requestQuery,cachedRequest,cachedResponse,options)&&resultList.push(requestResponse)}return resultList}#requestMatchesCachedItem(requestQuery,request,response=null,options){let queryURL=new URL(requestQuery.url),cachedURL=new URL(request.url);if(options?.ignoreSearch&&(cachedURL.search="",queryURL.search=""),!urlEquals(queryURL,cachedURL,!0))return!1;if(response==null||options?.ignoreVary||!response.headersList.contains("vary"))return!0;let fieldValues=getFieldValues(response.headersList.get("vary"));for(let fieldValue of fieldValues){if(fieldValue==="*")return!1;let requestValue=request.headersList.get(fieldValue),queryValue=requestQuery.headersList.get(fieldValue);if(requestValue!==queryValue)return!1}return!0}#internalMatchAll(request,options,maxResponses=1/0){let r=null;if(request!==void 0)if(webidl.is.Request(request)){if(r=getRequestState(request),r.method!=="GET"&&!options.ignoreMethod)return[]}else typeof request=="string"&&(r=getRequestState(new Request(request)));let responses=[];if(request===void 0)for(let requestResponse of this.#relevantRequestResponseList)responses.push(requestResponse[1]);else{let requestResponses=this.#queryCache(r,options);for(let requestResponse of requestResponses)responses.push(requestResponse[1])}let responseList=[];for(let response of responses){let responseObject=fromInnerResponse(cloneResponse(response),"immutable");if(responseList.push(responseObject),responseList.length>=maxResponses)break}return Object.freeze(responseList)}};Object.defineProperties(Cache.prototype,{[Symbol.toStringTag]:{value:"Cache",configurable:!0},match:kEnumerableProperty,matchAll:kEnumerableProperty,add:kEnumerableProperty,addAll:kEnumerableProperty,put:kEnumerableProperty,delete:kEnumerableProperty,keys:kEnumerableProperty});var cacheQueryOptionConverters=[{key:"ignoreSearch",converter:webidl.converters.boolean,defaultValue:()=>!1},{key:"ignoreMethod",converter:webidl.converters.boolean,defaultValue:()=>!1},{key:"ignoreVary",converter:webidl.converters.boolean,defaultValue:()=>!1}];webidl.converters.CacheQueryOptions=webidl.dictionaryConverter(cacheQueryOptionConverters);webidl.converters.MultiCacheQueryOptions=webidl.dictionaryConverter([...cacheQueryOptionConverters,{key:"cacheName",converter:webidl.converters.DOMString}]);webidl.converters.Response=webidl.interfaceConverter(webidl.is.Response,"Response");webidl.converters["sequence<RequestInfo>"]=webidl.sequenceConverter(webidl.converters.RequestInfo);module.exports={Cache}}});var require_cachestorage=__commonJS({"node_modules/undici/lib/web/cache/cachestorage.js"(exports,module){"use strict";var{Cache}=require_cache3(),{webidl}=require_webidl(),{kEnumerableProperty}=require_util(),{kConstruct}=require_symbols(),CacheStorage=class _CacheStorage{#caches=new Map;constructor(){arguments[0]!==kConstruct&&webidl.illegalConstructor(),webidl.util.markAsUncloneable(this)}async match(request,options={}){if(webidl.brandCheck(this,_CacheStorage),webidl.argumentLengthCheck(arguments,1,"CacheStorage.match"),request=webidl.converters.RequestInfo(request),options=webidl.converters.MultiCacheQueryOptions(options),options.cacheName!=null){if(this.#caches.has(options.cacheName)){let cacheList=this.#caches.get(options.cacheName);return await new Cache(kConstruct,cacheList).match(request,options)}}else for(let cacheList of this.#caches.values()){let response=await new Cache(kConstruct,cacheList).match(request,options);if(response!==void 0)return response}}async has(cacheName){webidl.brandCheck(this,_CacheStorage);let prefix="CacheStorage.has";return webidl.argumentLengthCheck(arguments,1,prefix),cacheName=webidl.converters.DOMString(cacheName,prefix,"cacheName"),this.#caches.has(cacheName)}async open(cacheName){webidl.brandCheck(this,_CacheStorage);let prefix="CacheStorage.open";if(webidl.argumentLengthCheck(arguments,1,prefix),cacheName=webidl.converters.DOMString(cacheName,prefix,"cacheName"),this.#caches.has(cacheName)){let cache3=this.#caches.get(cacheName);return new Cache(kConstruct,cache3)}let cache2=[];return this.#caches.set(cacheName,cache2),new Cache(kConstruct,cache2)}async delete(cacheName){webidl.brandCheck(this,_CacheStorage);let prefix="CacheStorage.delete";return webidl.argumentLengthCheck(arguments,1,prefix),cacheName=webidl.converters.DOMString(cacheName,prefix,"cacheName"),this.#caches.delete(cacheName)}async keys(){return webidl.brandCheck(this,_CacheStorage),[...this.#caches.keys()]}};Object.defineProperties(CacheStorage.prototype,{[Symbol.toStringTag]:{value:"CacheStorage",configurable:!0},match:kEnumerableProperty,has:kEnumerableProperty,open:kEnumerableProperty,delete:kEnumerableProperty,keys:kEnumerableProperty});module.exports={CacheStorage}}});var require_constants4=__commonJS({"node_modules/undici/lib/web/cookies/constants.js"(exports,module){"use strict";module.exports={maxAttributeValueSize:1024,maxNameValuePairSize:4096}}});var require_util4=__commonJS({"node_modules/undici/lib/web/cookies/util.js"(exports,module){"use strict";function isCTLExcludingHtab(value){for(let i=0;i<value.length;++i){let code=value.charCodeAt(i);if(code>=0&&code<=8||code>=10&&code<=31||code===127)return!0}return!1}function validateCookieName(name){for(let i=0;i<name.length;++i){let code=name.charCodeAt(i);if(code<33||code>126||code===34||code===40||code===41||code===60||code===62||code===64||code===44||code===59||code===58||code===92||code===47||code===91||code===93||code===63||code===61||code===123||code===125)throw new Error("Invalid cookie name")}}function validateCookieValue(value){let len=value.length,i=0;if(value[0]==='"'){if(len===1||value[len-1]!=='"')throw new Error("Invalid cookie value");--len,++i}for(;i<len;){let code=value.charCodeAt(i++);if(code<33||code>126||code===34||code===44||code===59||code===92)throw new Error("Invalid cookie value")}}function validateCookiePath(path10){for(let i=0;i<path10.length;++i){let code=path10.charCodeAt(i);if(code<32||code>126||code===59)throw new Error("Invalid cookie path")}}function isLetterOrDigit(code){return code>=48&&code<=57||code>=65&&code<=90||code>=97&&code<=122}function validateCookieDomain(domain){if(domain===" ")return;if(domain.length>255)throw new Error("Invalid cookie domain");let labelLength=0;for(let i=0;i<domain.length;++i){let code=domain.charCodeAt(i);if(code===46){if(labelLength===0)throw new Error("Invalid cookie domain");if(domain.charCodeAt(i-1)===45)throw new Error("Invalid cookie domain");labelLength=0;continue}if(labelLength===0&&!isLetterOrDigit(code))throw new Error("Invalid cookie domain");if(!isLetterOrDigit(code)&&code!==45)throw new Error("Invalid cookie domain");if(++labelLength>63)throw new Error("Invalid cookie domain")}if(labelLength===0||domain.charCodeAt(domain.length-1)===45)throw new Error("Invalid cookie domain")}var IMFDays=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],IMFMonths=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],IMFPaddedNumbers=Array(61).fill(0).map((_,i)=>i.toString().padStart(2,"0"));function toIMFDate(date){return typeof date=="number"&&(date=new Date(date)),`${IMFDays[date.getUTCDay()]}, ${IMFPaddedNumbers[date.getUTCDate()]} ${IMFMonths[date.getUTCMonth()]} ${date.getUTCFullYear()} ${IMFPaddedNumbers[date.getUTCHours()]}:${IMFPaddedNumbers[date.getUTCMinutes()]}:${IMFPaddedNumbers[date.getUTCSeconds()]} GMT`}function validateCookieMaxAge(maxAge){if(maxAge<0)throw new Error("Invalid cookie max-age")}function stringify(cookie){if(cookie.name.length===0)return null;validateCookieName(cookie.name),validateCookieValue(cookie.value);let out=[`${cookie.name}=${cookie.value}`];cookie.name.startsWith("__Secure-")&&(cookie.secure=!0),cookie.name.startsWith("__Host-")&&(cookie.secure=!0,cookie.domain=null,cookie.path="/"),cookie.secure&&out.push("Secure"),cookie.httpOnly&&out.push("HttpOnly"),typeof cookie.maxAge=="number"&&(validateCookieMaxAge(cookie.maxAge),out.push(`Max-Age=${cookie.maxAge}`)),cookie.domain&&(validateCookieDomain(cookie.domain),out.push(`Domain=${cookie.domain}`)),cookie.path&&(validateCookiePath(cookie.path),out.push(`Path=${cookie.path}`)),cookie.expires&&cookie.expires.toString()!=="Invalid Date"&&out.push(`Expires=${toIMFDate(cookie.expires)}`),cookie.sameSite&&out.push(`SameSite=${cookie.sameSite}`);for(let part of cookie.unparsed){if(!part.includes("="))throw new Error("Invalid unparsed");let[key,...value]=part.split("="),trimmedKey=key.trim(),joinedValue=value.join("=");validateCookieName(trimmedKey),validateCookieValue(joinedValue),out.push(`${trimmedKey}=${joinedValue}`)}return out.join("; ")}module.exports={isCTLExcludingHtab,validateCookieName,validateCookiePath,validateCookieValue,toIMFDate,stringify}}});var require_parse=__commonJS({"node_modules/undici/lib/web/cookies/parse.js"(exports,module){"use strict";var{collectASequenceOfCodePointsFast}=require_infra(),{maxNameValuePairSize,maxAttributeValueSize}=require_constants4(),{isCTLExcludingHtab}=require_util4(),assert=__require("node:assert");function parseSetCookie(header){if(isCTLExcludingHtab(header))return null;let nameValuePair="",unparsedAttributes="",name="",value="";if(header.includes(";")){let position={position:0};nameValuePair=collectASequenceOfCodePointsFast(";",header,position),unparsedAttributes=header.slice(position.position)}else nameValuePair=header;if(!nameValuePair.includes("="))value=nameValuePair;else{let position={position:0};name=collectASequenceOfCodePointsFast("=",nameValuePair,position),value=nameValuePair.slice(position.position+1)}return name=name.trim(),value=value.trim(),name.length+value.length>maxNameValuePairSize?null:{name,value,...parseUnparsedAttributes(unparsedAttributes)}}function parseUnparsedAttributes(unparsedAttributes,cookieAttributeList={}){for(;;){if(unparsedAttributes.length===0)return cookieAttributeList;assert(unparsedAttributes[0]===";"),unparsedAttributes=unparsedAttributes.slice(1);let cookieAv="";unparsedAttributes.includes(";")?(cookieAv=collectASequenceOfCodePointsFast(";",unparsedAttributes,{position:0}),unparsedAttributes=unparsedAttributes.slice(cookieAv.length)):(cookieAv=unparsedAttributes,unparsedAttributes="");let attributeName="",attributeValue="";if(cookieAv.includes("=")){let position={position:0};attributeName=collectASequenceOfCodePointsFast("=",cookieAv,position),attributeValue=cookieAv.slice(position.position+1)}else attributeName=cookieAv;if(attributeName=attributeName.trim(),attributeValue=attributeValue.trim(),attributeValue.length>maxAttributeValueSize)continue;let attributeNameLowercase=attributeName.toLowerCase();if(attributeNameLowercase==="expires"){let expiryTime=new Date(attributeValue);Number.isNaN(expiryTime.getTime())||(cookieAttributeList.expires=expiryTime)}else if(attributeNameLowercase==="max-age"){let charCode=attributeValue.charCodeAt(0),startsWithDigit=charCode>=48&&charCode<=57,startsWithSignedDigit=attributeValue[0]==="-"&&attributeValue.length>1;if(!startsWithDigit&&!startsWithSignedDigit||/[^\d]/.test(attributeValue.slice(1)))continue;let deltaSeconds=Number(attributeValue);cookieAttributeList.maxAge=deltaSeconds}else if(attributeNameLowercase==="domain"){let cookieDomain=attributeValue;cookieDomain[0]==="."&&(cookieDomain=cookieDomain.slice(1)),cookieDomain=cookieDomain.toLowerCase(),cookieAttributeList.domain=cookieDomain}else if(attributeNameLowercase==="path"){let cookiePath="";attributeValue.length===0||attributeValue[0]!=="/"?cookiePath="/":cookiePath=attributeValue,cookieAttributeList.path=cookiePath}else if(attributeNameLowercase==="secure")cookieAttributeList.secure=!0;else if(attributeNameLowercase==="httponly")cookieAttributeList.httpOnly=!0;else if(attributeNameLowercase==="samesite"){let attributeValueLowercase=attributeValue.toLowerCase();attributeValueLowercase==="none"?cookieAttributeList.sameSite="None":attributeValueLowercase==="strict"?cookieAttributeList.sameSite="Strict":attributeValueLowercase==="lax"&&(cookieAttributeList.sameSite="Lax")}else cookieAttributeList.unparsed??=[],cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`)}}module.exports={parseSetCookie,parseUnparsedAttributes}}});var require_cookies=__commonJS({"node_modules/undici/lib/web/cookies/index.js"(exports,module){"use strict";var{parseSetCookie}=require_parse(),{stringify}=require_util4(),{webidl}=require_webidl(),{Headers:Headers2}=require_headers(),brandChecks=webidl.brandCheckMultiple([Headers2,globalThis.Headers].filter(Boolean));function getCookies(headers){webidl.argumentLengthCheck(arguments,1,"getCookies"),brandChecks(headers);let cookie=headers.get("cookie"),out={};if(!cookie)return out;for(let piece of cookie.split(";")){let[name,...value]=piece.split("=");out[name.trim()]=value.join("=")}return out}function deleteCookie(headers,name,attributes){brandChecks(headers);let prefix="deleteCookie";webidl.argumentLengthCheck(arguments,2,prefix),name=webidl.converters.DOMString(name,prefix,"name"),attributes=webidl.converters.DeleteCookieAttributes(attributes),setCookie(headers,{name,value:"",expires:new Date(0),...attributes})}function getSetCookies(headers){webidl.argumentLengthCheck(arguments,1,"getSetCookies"),brandChecks(headers);let cookies=headers.getSetCookie();return cookies?cookies.map(pair=>parseSetCookie(pair)):[]}function parseCookie(cookie){return cookie=webidl.converters.DOMString(cookie),parseSetCookie(cookie)}function setCookie(headers,cookie){webidl.argumentLengthCheck(arguments,2,"setCookie"),brandChecks(headers),cookie=webidl.converters.Cookie(cookie);let str2=stringify(cookie);str2&&headers.append("set-cookie",str2,!0)}webidl.converters.DeleteCookieAttributes=webidl.dictionaryConverter([{converter:webidl.nullableConverter(webidl.converters.DOMString),key:"path",defaultValue:()=>null},{converter:webidl.nullableConverter(webidl.converters.DOMString),key:"domain",defaultValue:()=>null}]);webidl.converters.Cookie=webidl.dictionaryConverter([{converter:webidl.converters.DOMString,key:"name"},{converter:webidl.converters.DOMString,key:"value"},{converter:webidl.nullableConverter(value=>typeof value=="number"?webidl.converters["unsigned long long"](value):new Date(value)),key:"expires",defaultValue:()=>null},{converter:webidl.nullableConverter(webidl.converters["long long"]),key:"maxAge",defaultValue:()=>null},{converter:webidl.nullableConverter(webidl.converters.DOMString),key:"domain",defaultValue:()=>null},{converter:webidl.nullableConverter(webidl.converters.DOMString),key:"path",defaultValue:()=>null},{converter:webidl.nullableConverter(webidl.converters.boolean),key:"secure",defaultValue:()=>null},{converter:webidl.nullableConverter(webidl.converters.boolean),key:"httpOnly",defaultValue:()=>null},{converter:webidl.converters.USVString,key:"sameSite",allowedValues:["Strict","Lax","None"]},{converter:webidl.sequenceConverter(webidl.converters.DOMString),key:"unparsed",defaultValue:()=>[]}]);module.exports={getCookies,deleteCookie,getSetCookies,setCookie,parseCookie}}});var require_events=__commonJS({"node_modules/undici/lib/web/websocket/events.js"(exports,module){"use strict";var{webidl}=require_webidl(),{kEnumerableProperty}=require_util(),{kConstruct}=require_symbols(),MessageEvent=class _MessageEvent extends Event{#eventInit;constructor(type,eventInitDict={}){if(type===kConstruct){super(arguments[1],arguments[2]),webidl.util.markAsUncloneable(this);return}let prefix="MessageEvent constructor";webidl.argumentLengthCheck(arguments,1,prefix),type=webidl.converters.DOMString(type,prefix,"type"),eventInitDict=webidl.converters.MessageEventInit(eventInitDict,prefix,"eventInitDict"),super(type,eventInitDict),this.#eventInit=eventInitDict,webidl.util.markAsUncloneable(this)}get data(){return webidl.brandCheck(this,_MessageEvent),this.#eventInit.data}get origin(){return webidl.brandCheck(this,_MessageEvent),this.#eventInit.origin}get lastEventId(){return webidl.brandCheck(this,_MessageEvent),this.#eventInit.lastEventId}get source(){return webidl.brandCheck(this,_MessageEvent),this.#eventInit.source}get ports(){return webidl.brandCheck(this,_MessageEvent),Object.isFrozen(this.#eventInit.ports)||Object.freeze(this.#eventInit.ports),this.#eventInit.ports}initMessageEvent(type,bubbles=!1,cancelable=!1,data=null,origin="",lastEventId="",source=null,ports=[]){return webidl.brandCheck(this,_MessageEvent),webidl.argumentLengthCheck(arguments,1,"MessageEvent.initMessageEvent"),new _MessageEvent(type,{bubbles,cancelable,data,origin,lastEventId,source,ports})}static createFastMessageEvent(type,init){let messageEvent=new _MessageEvent(kConstruct,type,init);return messageEvent.#eventInit=init,messageEvent.#eventInit.data??=null,messageEvent.#eventInit.origin??="",messageEvent.#eventInit.lastEventId??="",messageEvent.#eventInit.source??=null,messageEvent.#eventInit.ports??=[],messageEvent}},{createFastMessageEvent}=MessageEvent;delete MessageEvent.createFastMessageEvent;var CloseEvent=class _CloseEvent extends Event{#eventInit;constructor(type,eventInitDict={}){let prefix="CloseEvent constructor";webidl.argumentLengthCheck(arguments,1,prefix),type=webidl.converters.DOMString(type,prefix,"type"),eventInitDict=webidl.converters.CloseEventInit(eventInitDict),super(type,eventInitDict),this.#eventInit=eventInitDict,webidl.util.markAsUncloneable(this)}get wasClean(){return webidl.brandCheck(this,_CloseEvent),this.#eventInit.wasClean}get code(){return webidl.brandCheck(this,_CloseEvent),this.#eventInit.code}get reason(){return webidl.brandCheck(this,_CloseEvent),this.#eventInit.reason}},ErrorEvent=class _ErrorEvent extends Event{#eventInit;constructor(type,eventInitDict){let prefix="ErrorEvent constructor";webidl.argumentLengthCheck(arguments,1,prefix),super(type,eventInitDict),webidl.util.markAsUncloneable(this),type=webidl.converters.DOMString(type,prefix,"type"),eventInitDict=webidl.converters.ErrorEventInit(eventInitDict??{}),this.#eventInit=eventInitDict}get message(){return webidl.brandCheck(this,_ErrorEvent),this.#eventInit.message}get filename(){return webidl.brandCheck(this,_ErrorEvent),this.#eventInit.filename}get lineno(){return webidl.brandCheck(this,_ErrorEvent),this.#eventInit.lineno}get colno(){return webidl.brandCheck(this,_ErrorEvent),this.#eventInit.colno}get error(){return webidl.brandCheck(this,_ErrorEvent),this.#eventInit.error}};Object.defineProperties(MessageEvent.prototype,{[Symbol.toStringTag]:{value:"MessageEvent",configurable:!0},data:kEnumerableProperty,origin:kEnumerableProperty,lastEventId:kEnumerableProperty,source:kEnumerableProperty,ports:kEnumerableProperty,initMessageEvent:kEnumerableProperty});Object.defineProperties(CloseEvent.prototype,{[Symbol.toStringTag]:{value:"CloseEvent",configurable:!0},reason:kEnumerableProperty,code:kEnumerableProperty,wasClean:kEnumerableProperty});Object.defineProperties(ErrorEvent.prototype,{[Symbol.toStringTag]:{value:"ErrorEvent",configurable:!0},message:kEnumerableProperty,filename:kEnumerableProperty,lineno:kEnumerableProperty,colno:kEnumerableProperty,error:kEnumerableProperty});webidl.converters.MessagePort=webidl.interfaceConverter(webidl.is.MessagePort,"MessagePort");webidl.converters["sequence<MessagePort>"]=webidl.sequenceConverter(webidl.converters.MessagePort);var eventInit=[{key:"bubbles",converter:webidl.converters.boolean,defaultValue:()=>!1},{key:"cancelable",converter:webidl.converters.boolean,defaultValue:()=>!1},{key:"composed",converter:webidl.converters.boolean,defaultValue:()=>!1}];webidl.converters.MessageEventInit=webidl.dictionaryConverter([...eventInit,{key:"data",converter:webidl.converters.any,defaultValue:()=>null},{key:"origin",converter:webidl.converters.USVString,defaultValue:()=>""},{key:"lastEventId",converter:webidl.converters.DOMString,defaultValue:()=>""},{key:"source",converter:webidl.nullableConverter(webidl.converters.MessagePort),defaultValue:()=>null},{key:"ports",converter:webidl.converters["sequence<MessagePort>"],defaultValue:()=>[]}]);webidl.converters.CloseEventInit=webidl.dictionaryConverter([...eventInit,{key:"wasClean",converter:webidl.converters.boolean,defaultValue:()=>!1},{key:"code",converter:webidl.converters["unsigned short"],defaultValue:()=>0},{key:"reason",converter:webidl.converters.USVString,defaultValue:()=>""}]);webidl.converters.ErrorEventInit=webidl.dictionaryConverter([...eventInit,{key:"message",converter:webidl.converters.DOMString,defaultValue:()=>""},{key:"filename",converter:webidl.converters.USVString,defaultValue:()=>""},{key:"lineno",converter:webidl.converters["unsigned long"],defaultValue:()=>0},{key:"colno",converter:webidl.converters["unsigned long"],defaultValue:()=>0},{key:"error",converter:webidl.converters.any}]);module.exports={MessageEvent,CloseEvent,ErrorEvent,createFastMessageEvent}}});var require_constants5=__commonJS({"node_modules/undici/lib/web/websocket/constants.js"(exports,module){"use strict";var uid="258EAFA5-E914-47DA-95CA-C5AB0DC85B11",staticPropertyDescriptors={enumerable:!0,writable:!1,configurable:!1},states={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3},sentCloseFrameState={SENT:1,RECEIVED:2},opcodes={CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10},maxUnsigned16Bit=65535,parserStates={INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4},emptyBuffer=Buffer.allocUnsafe(0),sendHints={text:1,typedArray:2,arrayBuffer:3,blob:4};module.exports={uid,sentCloseFrameState,staticPropertyDescriptors,states,opcodes,maxUnsigned16Bit,parserStates,emptyBuffer,sendHints}}});var require_util5=__commonJS({"node_modules/undici/lib/web/websocket/util.js"(exports,module){"use strict";var{states,opcodes}=require_constants5(),{isUtf8}=__require("node:buffer"),{removeHTTPWhitespace}=require_data_url(),{collectASequenceOfCodePointsFast}=require_infra();function isConnecting(readyState){return readyState===states.CONNECTING}function isEstablished(readyState){return readyState===states.OPEN}function isClosing(readyState){return readyState===states.CLOSING}function isClosed(readyState){return readyState===states.CLOSED}function fireEvent(e,target,eventFactory=(type,init)=>new Event(type,init),eventInitDict={}){let event=eventFactory(e,eventInitDict);target.dispatchEvent(event)}function websocketMessageReceived(handler,type,data){handler.onMessage(type,data)}function toArrayBuffer(buffer){return buffer.byteLength===buffer.buffer.byteLength?buffer.buffer:new Uint8Array(buffer).buffer}function isValidSubprotocol(protocol){if(protocol.length===0)return!1;for(let i=0;i<protocol.length;++i){let code=protocol.charCodeAt(i);if(code<33||code>126||code===34||code===40||code===41||code===44||code===47||code===58||code===59||code===60||code===61||code===62||code===63||code===64||code===91||code===92||code===93||code===123||code===125)return!1}return!0}function isValidStatusCode(code){return code>=1e3&&code<1015?code!==1004&&code!==1005&&code!==1006:code>=3e3&&code<=4999}function isControlFrame(opcode){return opcode===opcodes.CLOSE||opcode===opcodes.PING||opcode===opcodes.PONG}function isContinuationFrame(opcode){return opcode===opcodes.CONTINUATION}function isTextBinaryFrame(opcode){return opcode===opcodes.TEXT||opcode===opcodes.BINARY}function isValidOpcode(opcode){return isTextBinaryFrame(opcode)||isContinuationFrame(opcode)||isControlFrame(opcode)}function parseExtensions(extensions){let position={position:0},extensionList=new Map;for(;position.position<extensions.length;){let pair=collectASequenceOfCodePointsFast(";",extensions,position),[name,value=""]=pair.split("=",2);extensionList.set(removeHTTPWhitespace(name,!0,!1),removeHTTPWhitespace(value,!1,!0)),position.position++}return extensionList}function isValidClientWindowBits(value){if(value.length===0)return!1;for(let i=0;i<value.length;i++){let byte=value.charCodeAt(i);if(byte<48||byte>57)return!1}let num=Number.parseInt(value,10);return num>=8&&num<=15}function getURLRecord(url,baseURL){let urlRecord;try{urlRecord=new URL(url,baseURL)}catch(e){throw new DOMException(e,"SyntaxError")}if(urlRecord.protocol==="http:"?urlRecord.protocol="ws:":urlRecord.protocol==="https:"&&(urlRecord.protocol="wss:"),urlRecord.protocol!=="ws:"&&urlRecord.protocol!=="wss:")throw new DOMException("expected a ws: or wss: url","SyntaxError");if(urlRecord.hash.length||urlRecord.href.endsWith("#"))throw new DOMException("hash","SyntaxError");return urlRecord}function validateCloseCodeAndReason(code,reason){if(code!==null&&code!==1e3&&(code<3e3||code>4999))throw new DOMException("invalid code","InvalidAccessError");if(reason!==null){let reasonBytesLength=Buffer.byteLength(reason);if(reasonBytesLength>123)throw new DOMException(`Reason must be less than 123 bytes; received ${reasonBytesLength}`,"SyntaxError")}}var utf8Decode=(()=>{if(typeof process.versions.icu=="string"){let fatalDecoder=new TextDecoder("utf-8",{fatal:!0});return fatalDecoder.decode.bind(fatalDecoder)}return function(buffer){if(isUtf8(buffer))return buffer.toString("utf-8");throw new TypeError("Invalid utf-8 received.")}})();module.exports={isConnecting,isEstablished,isClosing,isClosed,fireEvent,isValidSubprotocol,isValidStatusCode,websocketMessageReceived,utf8Decode,isControlFrame,isContinuationFrame,isTextBinaryFrame,isValidOpcode,parseExtensions,isValidClientWindowBits,toArrayBuffer,getURLRecord,validateCloseCodeAndReason}}});var require_frame=__commonJS({"node_modules/undici/lib/web/websocket/frame.js"(exports,module){"use strict";var{runtimeFeatures}=require_runtime_features(),{maxUnsigned16Bit,opcodes}=require_constants5(),BUFFER_SIZE=8*1024,buffer=null,bufIdx=BUFFER_SIZE,randomFillSync=runtimeFeatures.has("crypto")?__require("node:crypto").randomFillSync:null;function generateMask(){return bufIdx===BUFFER_SIZE&&(bufIdx=0,randomFillSync(buffer??=Buffer.allocUnsafeSlow(BUFFER_SIZE),0,BUFFER_SIZE)),[buffer[bufIdx++],buffer[bufIdx++],buffer[bufIdx++],buffer[bufIdx++]]}var WebsocketFrameSend=class{constructor(data){this.frameData=data}createFrame(opcode){let frameData=this.frameData,maskKey2=generateMask(),bodyLength=frameData?.byteLength??0,payloadLength=bodyLength,offset=6;bodyLength>maxUnsigned16Bit?(offset+=8,payloadLength=127):bodyLength>125&&(offset+=2,payloadLength=126);let buffer2=Buffer.allocUnsafe(bodyLength+offset);buffer2[0]=buffer2[1]=0,buffer2[0]|=128,buffer2[0]=(buffer2[0]&240)+opcode;buffer2[offset-4]=maskKey2[0],buffer2[offset-3]=maskKey2[1],buffer2[offset-2]=maskKey2[2],buffer2[offset-1]=maskKey2[3],buffer2[1]=payloadLength,payloadLength===126?buffer2.writeUInt16BE(bodyLength,2):payloadLength===127&&(buffer2[2]=buffer2[3]=0,buffer2.writeUIntBE(bodyLength,4,6)),buffer2[1]|=128;for(let i=0;i<bodyLength;++i)buffer2[offset+i]=frameData[i]^maskKey2[i&3];return buffer2}static createFastTextFrame(buffer2){let maskKey2=generateMask(),bodyLength=buffer2.length;for(let i=0;i<bodyLength;++i)buffer2[i]^=maskKey2[i&3];let payloadLength=bodyLength,offset=6;bodyLength>maxUnsigned16Bit?(offset+=8,payloadLength=127):bodyLength>125&&(offset+=2,payloadLength=126);let head=Buffer.allocUnsafeSlow(offset);return head[0]=128|opcodes.TEXT,head[1]=payloadLength|128,head[offset-4]=maskKey2[0],head[offset-3]=maskKey2[1],head[offset-2]=maskKey2[2],head[offset-1]=maskKey2[3],payloadLength===126?head.writeUInt16BE(bodyLength,2):payloadLength===127&&(head[2]=head[3]=0,head.writeUIntBE(bodyLength,4,6)),[head,buffer2]}};module.exports={WebsocketFrameSend,generateMask}}});var require_connection=__commonJS({"node_modules/undici/lib/web/websocket/connection.js"(exports,module){"use strict";var{uid,states,sentCloseFrameState,emptyBuffer,opcodes}=require_constants5(),{parseExtensions,isClosed,isClosing,isEstablished,isConnecting,validateCloseCodeAndReason}=require_util5(),{makeRequest}=require_request2(),{fetching}=require_fetch(),{Headers:Headers2,getHeadersList}=require_headers(),{getDecodeSplit}=require_util2(),{WebsocketFrameSend}=require_frame(),assert=__require("node:assert"),{runtimeFeatures}=require_runtime_features(),crypto4=runtimeFeatures.has("crypto")?__require("node:crypto"):null,warningEmitted=!1;function establishWebSocketConnection(url,protocols,client,handler,options){let requestURL=url;requestURL.protocol=url.protocol==="ws:"?"http:":"https:";let request=makeRequest({urlList:[requestURL],client,serviceWorkers:"none",referrer:"no-referrer",mode:"websocket",credentials:"include",cache:"no-store",redirect:"error",useURLCredentials:!0});if(options.headers){let headersList=getHeadersList(new Headers2(options.headers));request.headersList=headersList}let keyValue=crypto4.randomBytes(16).toString("base64");request.headersList.append("sec-websocket-key",keyValue,!0),request.headersList.append("sec-websocket-version","13",!0);for(let protocol of protocols)request.headersList.append("sec-websocket-protocol",protocol,!0);return request.headersList.append("sec-websocket-extensions","permessage-deflate; client_max_window_bits",!0),fetching({request,useParallelQueue:!0,dispatcher:options.dispatcher,processResponse(response){if(response.type==="error"||response.status!==101){if(response.socket?.session==null){failWebsocketConnection(handler,1002,"Received network error or non-101 status code.",response.error);return}if(response.status!==200){failWebsocketConnection(handler,1002,"Received network error or non-200 status code.",response.error);return}}if(warningEmitted===!1&&response.socket?.session!=null&&(process.emitWarning("WebSocket over HTTP2 is experimental, and subject to change.","ExperimentalWarning"),warningEmitted=!0),protocols.length!==0&&!response.headersList.get("Sec-WebSocket-Protocol")){failWebsocketConnection(handler,1002,"Server did not respond with sent protocols.");return}if(response.socket.session==null&&response.headersList.get("Upgrade")?.toLowerCase()!=="websocket"){failWebsocketConnection(handler,1002,'Server did not set Upgrade header to "websocket".');return}if(response.socket.session==null&&response.headersList.get("Connection")?.toLowerCase()!=="upgrade"){failWebsocketConnection(handler,1002,'Server did not set Connection header to "upgrade".');return}let secWSAccept=response.headersList.get("Sec-WebSocket-Accept"),digest=crypto4.hash("sha1",keyValue+uid,"base64");if(secWSAccept!==digest){failWebsocketConnection(handler,1002,"Incorrect hash received in Sec-WebSocket-Accept header.");return}let secExtension=response.headersList.get("Sec-WebSocket-Extensions"),extensions;if(secExtension!==null&&(extensions=parseExtensions(secExtension),!extensions.has("permessage-deflate"))){failWebsocketConnection(handler,1002,"Sec-WebSocket-Extensions header does not match.");return}let secProtocol=response.headersList.get("Sec-WebSocket-Protocol");if(secProtocol!==null){let requestProtocols=getDecodeSplit("sec-websocket-protocol",request.headersList);if(requestProtocols===null||!requestProtocols.includes(secProtocol)){failWebsocketConnection(handler,1002,"Protocol was not set in the opening handshake.");return}}response.socket.on("data",handler.onSocketData),response.socket.on("close",handler.onSocketClose),response.socket.on("error",handler.onSocketError),handler.wasEverConnected=!0,handler.onConnectionEstablished(response,extensions)}})}function closeWebSocketConnection(object2,code,reason,validate=!1){if(code??=null,reason??="",validate&&validateCloseCodeAndReason(code,reason),!(isClosed(object2.readyState)||isClosing(object2.readyState)))if(!isEstablished(object2.readyState))failWebsocketConnection(object2),object2.readyState=states.CLOSING;else if(!object2.closeState.has(sentCloseFrameState.SENT)&&!object2.closeState.has(sentCloseFrameState.RECEIVED)){let frame3=new WebsocketFrameSend;reason.length!==0&&code===null&&(code=1e3),assert(code===null||Number.isInteger(code)),code===null&&reason.length===0?frame3.frameData=emptyBuffer:code!==null&&reason===null?(frame3.frameData=Buffer.allocUnsafe(2),frame3.frameData.writeUInt16BE(code,0)):code!==null&&reason!==null?(frame3.frameData=Buffer.allocUnsafe(2+Buffer.byteLength(reason)),frame3.frameData.writeUInt16BE(code,0),frame3.frameData.write(reason,2,"utf-8")):frame3.frameData=emptyBuffer,object2.socket.write(frame3.createFrame(opcodes.CLOSE)),object2.closeState.add(sentCloseFrameState.SENT),object2.readyState=states.CLOSING}else object2.readyState=states.CLOSING}function failWebsocketConnection(handler,code,reason,cause){isEstablished(handler.readyState)&&closeWebSocketConnection(handler,code,reason,!1),handler.controller.abort(),isConnecting(handler.readyState)?handler.onSocketClose():handler.socket?.destroyed===!1&&handler.socket.destroy()}module.exports={establishWebSocketConnection,failWebsocketConnection,closeWebSocketConnection}}});var require_permessage_deflate=__commonJS({"node_modules/undici/lib/web/websocket/permessage-deflate.js"(exports,module){"use strict";var{createInflateRaw,Z_DEFAULT_WINDOWBITS}=__require("node:zlib"),{isValidClientWindowBits}=require_util5(),{MessageSizeExceededError}=require_errors(),tail=Buffer.from([0,0,255,255]),kBuffer=Symbol("kBuffer"),kLength=Symbol("kLength"),PerMessageDeflate=class{#inflate;#options={};#maxPayloadSize=0;constructor(extensions,options){this.#options.serverNoContextTakeover=extensions.has("server_no_context_takeover"),this.#options.serverMaxWindowBits=extensions.get("server_max_window_bits"),this.#maxPayloadSize=options.maxPayloadSize}decompress(chunk2,fin,callback){if(!this.#inflate){let windowBits=Z_DEFAULT_WINDOWBITS;if(this.#options.serverMaxWindowBits){if(!isValidClientWindowBits(this.#options.serverMaxWindowBits)){callback(new Error("Invalid server_max_window_bits"));return}windowBits=Number.parseInt(this.#options.serverMaxWindowBits)}try{this.#inflate=createInflateRaw({windowBits})}catch(err){callback(err);return}this.#inflate[kBuffer]=[],this.#inflate[kLength]=0,this.#inflate.on("data",data=>{if(this.#inflate[kLength]+=data.length,this.#maxPayloadSize>0&&this.#inflate[kLength]>this.#maxPayloadSize){callback(new MessageSizeExceededError),this.#inflate.removeAllListeners(),this.#inflate.destroy(),this.#inflate=null;return}this.#inflate[kBuffer].push(data)}),this.#inflate.on("error",err=>{this.#inflate=null,callback(err)})}this.#inflate.write(chunk2),fin&&this.#inflate.write(tail),this.#inflate.flush(()=>{if(!this.#inflate)return;let full=Buffer.concat(this.#inflate[kBuffer],this.#inflate[kLength]);this.#inflate[kBuffer].length=0,this.#inflate[kLength]=0,callback(null,full)})}};module.exports={PerMessageDeflate}}});var require_receiver=__commonJS({"node_modules/undici/lib/web/websocket/receiver.js"(exports,module){"use strict";var{Writable}=__require("node:stream"),assert=__require("node:assert"),{parserStates,opcodes,states,emptyBuffer,sentCloseFrameState}=require_constants5(),{isValidStatusCode,isValidOpcode,websocketMessageReceived,utf8Decode,isControlFrame,isTextBinaryFrame,isContinuationFrame}=require_util5(),{failWebsocketConnection}=require_connection(),{WebsocketFrameSend}=require_frame(),{PerMessageDeflate}=require_permessage_deflate(),{MessageSizeExceededError}=require_errors(),ByteParser=class extends Writable{#buffers=[];#fragmentsBytes=0;#byteOffset=0;#loop=!1;#state=parserStates.INFO;#info={};#fragments=[];#extensions;#handler;#maxFragments;#maxPayloadSize;constructor(handler,extensions,options={}){super(),this.#handler=handler,this.#extensions=extensions??new Map,this.#maxFragments=options.maxFragments??0,this.#maxPayloadSize=options.maxPayloadSize??0,this.#extensions.has("permessage-deflate")&&this.#extensions.set("permessage-deflate",new PerMessageDeflate(extensions,options))}_write(chunk2,_,callback){this.#buffers.push(chunk2),this.#byteOffset+=chunk2.length,this.#loop=!0,this.run(callback)}#validatePayloadLength(){return this.#maxPayloadSize>0&&!isControlFrame(this.#info.opcode)&&this.#info.payloadLength+this.#fragmentsBytes>this.#maxPayloadSize?(failWebsocketConnection(this.#handler,1009,"Payload size exceeds maximum allowed size"),!1):!0}run(callback){for(;this.#loop;)if(this.#state===parserStates.INFO){if(this.#byteOffset<2)return callback();let buffer=this.consume(2),fin=(buffer[0]&128)!==0,opcode=buffer[0]&15,masked=(buffer[1]&128)===128,fragmented=!fin&&opcode!==opcodes.CONTINUATION,payloadLength=buffer[1]&127,rsv1=buffer[0]&64,rsv2=buffer[0]&32,rsv3=buffer[0]&16;if(!isValidOpcode(opcode))return failWebsocketConnection(this.#handler,1002,"Invalid opcode received"),callback();if(masked)return failWebsocketConnection(this.#handler,1002,"Frame cannot be masked"),callback();if(rsv1!==0&&!this.#extensions.has("permessage-deflate")){failWebsocketConnection(this.#handler,1002,"Expected RSV1 to be clear.");return}if(rsv2!==0||rsv3!==0){failWebsocketConnection(this.#handler,1002,"RSV1, RSV2, RSV3 must be clear");return}if(fragmented&&!isTextBinaryFrame(opcode)){failWebsocketConnection(this.#handler,1002,"Invalid frame type was fragmented.");return}if(isTextBinaryFrame(opcode)&&this.#fragments.length>0){failWebsocketConnection(this.#handler,1002,"Expected continuation frame");return}if(this.#info.fragmented&&fragmented){failWebsocketConnection(this.#handler,1002,"Fragmented frame exceeded 125 bytes.");return}if((payloadLength>125||fragmented)&&isControlFrame(opcode)){failWebsocketConnection(this.#handler,1002,"Control frame either too large or fragmented");return}if(isContinuationFrame(opcode)&&this.#fragments.length===0&&!this.#info.compressed){failWebsocketConnection(this.#handler,1002,"Unexpected continuation frame");return}if(payloadLength<=125){if(this.#info.payloadLength=payloadLength,this.#state=parserStates.READ_DATA,!this.#validatePayloadLength())return}else payloadLength===126?this.#state=parserStates.PAYLOADLENGTH_16:payloadLength===127&&(this.#state=parserStates.PAYLOADLENGTH_64);isTextBinaryFrame(opcode)&&(this.#info.binaryType=opcode,this.#info.compressed=rsv1!==0),this.#info.opcode=opcode,this.#info.masked=masked,this.#info.fin=fin,this.#info.fragmented=fragmented}else if(this.#state===parserStates.PAYLOADLENGTH_16){if(this.#byteOffset<2)return callback();let buffer=this.consume(2);if(this.#info.payloadLength=buffer.readUInt16BE(0),this.#state=parserStates.READ_DATA,!this.#validatePayloadLength())return}else if(this.#state===parserStates.PAYLOADLENGTH_64){if(this.#byteOffset<8)return callback();let buffer=this.consume(8),upper=buffer.readUInt32BE(0),lower=buffer.readUInt32BE(4);if(upper!==0||lower>2**31-1){failWebsocketConnection(this.#handler,1009,"Received payload length > 2^31 bytes.");return}if(this.#info.payloadLength=lower,this.#state=parserStates.READ_DATA,!this.#validatePayloadLength())return}else if(this.#state===parserStates.READ_DATA){if(this.#byteOffset<this.#info.payloadLength)return callback();let body=this.consume(this.#info.payloadLength);if(isControlFrame(this.#info.opcode))this.#loop=this.parseControlFrame(body),this.#state=parserStates.INFO;else if(this.#info.compressed){this.#extensions.get("permessage-deflate").decompress(body,this.#info.fin,(error,data)=>{if(error){let code=error instanceof MessageSizeExceededError?1009:1007;failWebsocketConnection(this.#handler,code,error.message);return}if(this.writeFragments(data)){if(this.#maxPayloadSize>0&&this.#fragmentsBytes>this.#maxPayloadSize){failWebsocketConnection(this.#handler,1009,new MessageSizeExceededError().message);return}if(!this.#info.fin){this.#state=parserStates.INFO,this.#loop=!0,this.run(callback);return}websocketMessageReceived(this.#handler,this.#info.binaryType,this.consumeFragments()),this.#loop=!0,this.#state=parserStates.INFO,this.run(callback)}},this.#fragmentsBytes),this.#loop=!1;break}else{if(!this.writeFragments(body))return;!this.#info.fragmented&&this.#info.fin&&websocketMessageReceived(this.#handler,this.#info.binaryType,this.consumeFragments()),this.#state=parserStates.INFO}}}consume(n){if(n>this.#byteOffset)throw new Error("Called consume() before buffers satiated.");if(n===0)return emptyBuffer;this.#byteOffset-=n;let first=this.#buffers[0];if(first.length>n)return this.#buffers[0]=first.subarray(n,first.length),first.subarray(0,n);if(first.length===n)return this.#buffers.shift();{let offset=0,buffer=Buffer.allocUnsafeSlow(n);for(;offset!==n;){let next=this.#buffers[0],length=next.length;if(length+offset===n){buffer.set(this.#buffers.shift(),offset);break}else if(length+offset>n){buffer.set(next.subarray(0,n-offset),offset),this.#buffers[0]=next.subarray(n-offset);break}else buffer.set(this.#buffers.shift(),offset),offset+=length}return buffer}}writeFragments(fragment){return this.#maxFragments>0&&this.#fragments.length===this.#maxFragments?(failWebsocketConnection(this.#handler,1008,"Too many message fragments"),!1):(this.#fragmentsBytes+=fragment.length,this.#fragments.push(fragment),!0)}consumeFragments(){let fragments=this.#fragments;if(fragments.length===1)return this.#fragmentsBytes=0,fragments.shift();let offset=0,output=Buffer.allocUnsafeSlow(this.#fragmentsBytes);for(let i=0;i<fragments.length;++i){let buffer=fragments[i];output.set(buffer,offset),offset+=buffer.length}return this.#fragments=[],this.#fragmentsBytes=0,output}parseCloseBody(data){assert(data.length!==1);let code;if(data.length>=2&&(code=data.readUInt16BE(0)),code!==void 0&&!isValidStatusCode(code))return{code:1002,reason:"Invalid status code",error:!0};let reason=data.subarray(2);reason[0]===239&&reason[1]===187&&reason[2]===191&&(reason=reason.subarray(3));try{reason=utf8Decode(reason)}catch{return{code:1007,reason:"Invalid UTF-8",error:!0}}return{code,reason,error:!1}}parseControlFrame(body){let{opcode,payloadLength}=this.#info;if(opcode===opcodes.CLOSE){if(payloadLength===1)return failWebsocketConnection(this.#handler,1002,"Received close frame with a 1-byte body."),!1;if(this.#info.closeInfo=this.parseCloseBody(body),this.#info.closeInfo.error){let{code,reason}=this.#info.closeInfo;return failWebsocketConnection(this.#handler,code,reason),!1}if(!this.#handler.closeState.has(sentCloseFrameState.SENT)&&!this.#handler.closeState.has(sentCloseFrameState.RECEIVED)){let body2=emptyBuffer;this.#info.closeInfo.code&&(body2=Buffer.allocUnsafe(2),body2.writeUInt16BE(this.#info.closeInfo.code,0));let closeFrame=new WebsocketFrameSend(body2);this.#handler.socket.write(closeFrame.createFrame(opcodes.CLOSE)),this.#handler.closeState.add(sentCloseFrameState.SENT)}return this.#handler.readyState=states.CLOSING,this.#handler.closeState.add(sentCloseFrameState.RECEIVED),!1}else if(opcode===opcodes.PING){if(!this.#handler.closeState.has(sentCloseFrameState.RECEIVED)){let frame3=new WebsocketFrameSend(body);this.#handler.socket.write(frame3.createFrame(opcodes.PONG)),this.#handler.onPing(body)}}else opcode===opcodes.PONG&&this.#handler.onPong(body);return!0}get closingInfo(){return this.#info.closeInfo}};module.exports={ByteParser}}});var require_sender=__commonJS({"node_modules/undici/lib/web/websocket/sender.js"(exports,module){"use strict";var{WebsocketFrameSend}=require_frame(),{opcodes,sendHints}=require_constants5(),FixedQueue=require_fixed_queue(),SendQueue=class{#queue=new FixedQueue;#running=!1;#socket;constructor(socket){this.#socket=socket}add(item,cb,hint){if(hint!==sendHints.blob){if(this.#running){let node2={promise:null,callback:cb,frame:createFrame(item,hint)};this.#queue.push(node2)}else if(hint===sendHints.text){let{0:head,1:body}=WebsocketFrameSend.createFastTextFrame(item);this.#socket.cork(),this.#socket.write(head),this.#socket.write(body,cb),this.#socket.uncork()}else this.#socket.write(createFrame(item,hint),cb);return}let node={promise:item.arrayBuffer().then(ab=>{node.promise=null,node.frame=createFrame(ab,hint)}),callback:cb,frame:null};this.#queue.push(node),this.#running||this.#run()}async#run(){this.#running=!0;let queue=this.#queue;for(;!queue.isEmpty();){let node=queue.shift();node.promise!==null&&await node.promise,this.#socket.write(node.frame,node.callback),node.callback=node.frame=null}this.#running=!1}};function createFrame(data,hint){return new WebsocketFrameSend(toBuffer(data,hint)).createFrame(hint===sendHints.text?opcodes.TEXT:opcodes.BINARY)}function toBuffer(data,hint){switch(hint){case sendHints.text:case sendHints.typedArray:return new Uint8Array(data.buffer,data.byteOffset,data.byteLength);case sendHints.arrayBuffer:case sendHints.blob:return new Uint8Array(data)}}module.exports={SendQueue}}});var require_websocket=__commonJS({"node_modules/undici/lib/web/websocket/websocket.js"(exports,module){"use strict";var{isArrayBuffer}=__require("node:util/types"),{webidl}=require_webidl(),{URLSerializer}=require_data_url(),{environmentSettingsObject}=require_util2(),{staticPropertyDescriptors,states,sentCloseFrameState,sendHints,opcodes}=require_constants5(),{isConnecting,isEstablished,isClosing,isClosed,isValidSubprotocol,fireEvent,utf8Decode,toArrayBuffer,getURLRecord}=require_util5(),{establishWebSocketConnection,closeWebSocketConnection,failWebsocketConnection}=require_connection(),{ByteParser}=require_receiver(),{kEnumerableProperty}=require_util(),{getGlobalDispatcher}=require_global2(),{ErrorEvent,CloseEvent,createFastMessageEvent}=require_events(),{SendQueue}=require_sender(),{WebsocketFrameSend}=require_frame(),{channels}=require_diagnostics(),kRef=Symbol.for("nodejs.ref"),kUnref=Symbol.for("nodejs.unref");function getSocketAddress(socket){return typeof socket?.address=="function"?socket.address():typeof socket?.session?.socket?.address=="function"?socket.session.socket.address():null}var WebSocket2=class _WebSocket extends EventTarget{#events={open:null,error:null,close:null,message:null};#bufferedAmount=0;#protocol="";#extensions="";#refed=!0;#sendQueue;#handler={onConnectionEstablished:(response,extensions)=>this.#onConnectionEstablished(response,extensions),onMessage:(opcode,data)=>this.#onMessage(opcode,data),onParserError:err=>failWebsocketConnection(this.#handler,null,err.message),onParserDrain:()=>this.#onParserDrain(),onSocketData:chunk2=>{this.#parser.write(chunk2)||this.#handler.socket.pause()},onSocketError:err=>{this.#handler.readyState=states.CLOSING,channels.socketError.hasSubscribers&&channels.socketError.publish(err),this.#handler.socket.destroy()},onSocketClose:()=>this.#onSocketClose(),onPing:body=>{channels.ping.hasSubscribers&&channels.ping.publish({payload:body,websocket:this})},onPong:body=>{channels.pong.hasSubscribers&&channels.pong.publish({payload:body,websocket:this})},readyState:states.CONNECTING,socket:null,closeState:new Set,controller:null,wasEverConnected:!1};#url;#binaryType;#parser;constructor(url,protocols=[]){super(),webidl.util.markAsUncloneable(this);let prefix="WebSocket constructor";webidl.argumentLengthCheck(arguments,1,prefix);let options=webidl.converters["DOMString or sequence<DOMString> or WebSocketInit"](protocols,prefix,"options");url=webidl.converters.USVString(url),protocols=options.protocols;let baseURL=environmentSettingsObject.settingsObject.baseUrl,urlRecord=getURLRecord(url,baseURL);if(typeof protocols=="string"&&(protocols=[protocols]),protocols.length!==new Set(protocols.map(p=>p.toLowerCase())).size)throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");if(protocols.length>0&&!protocols.every(p=>isValidSubprotocol(p)))throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");this.#url=new URL(urlRecord.href);let client=environmentSettingsObject.settingsObject;this.#handler.controller=establishWebSocketConnection(urlRecord,protocols,client,this.#handler,options),this.#handler.readyState=_WebSocket.CONNECTING,this.#binaryType="blob"}[kRef](){webidl.brandCheck(this,_WebSocket),this.#refed=!0,this.#handler.socket?.ref?.()}[kUnref](){webidl.brandCheck(this,_WebSocket),this.#refed=!1,this.#handler.socket?.unref?.()}close(code=void 0,reason=void 0){webidl.brandCheck(this,_WebSocket),code!==void 0&&(code=webidl.converters["unsigned short"](code,"WebSocket.close","code",webidl.attributes.Clamp)),reason!==void 0&&(reason=webidl.converters.USVString(reason)),code??=null,reason??="",closeWebSocketConnection(this.#handler,code,reason,!0)}send(data){webidl.brandCheck(this,_WebSocket);let prefix="WebSocket.send";if(webidl.argumentLengthCheck(arguments,1,prefix),data=webidl.converters.WebSocketSendData(data,prefix,"data"),isConnecting(this.#handler.readyState))throw new DOMException("Sent before connected.","InvalidStateError");if(!(!isEstablished(this.#handler.readyState)||isClosing(this.#handler.readyState)))if(typeof data=="string"){let buffer=Buffer.from(data);this.#bufferedAmount+=buffer.byteLength,this.#sendQueue.add(buffer,()=>{this.#bufferedAmount-=buffer.byteLength},sendHints.text)}else isArrayBuffer(data)?(this.#bufferedAmount+=data.byteLength,this.#sendQueue.add(data,()=>{this.#bufferedAmount-=data.byteLength},sendHints.arrayBuffer)):ArrayBuffer.isView(data)?(this.#bufferedAmount+=data.byteLength,this.#sendQueue.add(data,()=>{this.#bufferedAmount-=data.byteLength},sendHints.typedArray)):webidl.is.Blob(data)&&(this.#bufferedAmount+=data.size,this.#sendQueue.add(data,()=>{this.#bufferedAmount-=data.size},sendHints.blob))}get readyState(){return webidl.brandCheck(this,_WebSocket),this.#handler.readyState}get bufferedAmount(){return webidl.brandCheck(this,_WebSocket),this.#bufferedAmount}get url(){return webidl.brandCheck(this,_WebSocket),URLSerializer(this.#url)}get extensions(){return webidl.brandCheck(this,_WebSocket),this.#extensions}get protocol(){return webidl.brandCheck(this,_WebSocket),this.#protocol}get onopen(){return webidl.brandCheck(this,_WebSocket),this.#events.open}set onopen(fn){webidl.brandCheck(this,_WebSocket),this.#events.open&&this.removeEventListener("open",this.#events.open);let listener=webidl.converters.EventHandlerNonNull(fn);listener!==null?(this.addEventListener("open",listener),this.#events.open=fn):this.#events.open=null}get onerror(){return webidl.brandCheck(this,_WebSocket),this.#events.error}set onerror(fn){webidl.brandCheck(this,_WebSocket),this.#events.error&&this.removeEventListener("error",this.#events.error);let listener=webidl.converters.EventHandlerNonNull(fn);listener!==null?(this.addEventListener("error",listener),this.#events.error=fn):this.#events.error=null}get onclose(){return webidl.brandCheck(this,_WebSocket),this.#events.close}set onclose(fn){webidl.brandCheck(this,_WebSocket),this.#events.close&&this.removeEventListener("close",this.#events.close);let listener=webidl.converters.EventHandlerNonNull(fn);listener!==null?(this.addEventListener("close",listener),this.#events.close=fn):this.#events.close=null}get onmessage(){return webidl.brandCheck(this,_WebSocket),this.#events.message}set onmessage(fn){webidl.brandCheck(this,_WebSocket),this.#events.message&&this.removeEventListener("message",this.#events.message);let listener=webidl.converters.EventHandlerNonNull(fn);listener!==null?(this.addEventListener("message",listener),this.#events.message=fn):this.#events.message=null}get binaryType(){return webidl.brandCheck(this,_WebSocket),this.#binaryType}set binaryType(type){webidl.brandCheck(this,_WebSocket),type!=="blob"&&type!=="arraybuffer"?this.#binaryType="blob":this.#binaryType=type}#onConnectionEstablished(response,parsedExtensions){this.#handler.socket=response.socket,this.#refed||this.#handler.socket.unref?.();let maxFragments=this.#handler.controller.dispatcher?.webSocketOptions?.maxFragments,maxPayloadSize=this.#handler.controller.dispatcher?.webSocketOptions?.maxPayloadSize,parser=new ByteParser(this.#handler,parsedExtensions,{maxFragments,maxPayloadSize});parser.on("drain",()=>this.#handler.onParserDrain()),parser.on("error",err=>this.#handler.onParserError(err)),this.#parser=parser,this.#sendQueue=new SendQueue(response.socket),this.#handler.readyState=states.OPEN;let extensions=response.headersList.get("sec-websocket-extensions");extensions!==null&&(this.#extensions=extensions);let protocol=response.headersList.get("sec-websocket-protocol");if(protocol!==null&&(this.#protocol=protocol),fireEvent("open",this),channels.open.hasSubscribers){let headers=response.headersList.entries;channels.open.publish({address:getSocketAddress(response.socket),protocol:this.#protocol,extensions:this.#extensions,websocket:this,handshakeResponse:{status:response.status,statusText:response.statusText,headers}})}}#onMessage(type,data){if(this.#handler.readyState!==states.OPEN)return;let dataForEvent;if(type===opcodes.TEXT)try{dataForEvent=utf8Decode(data)}catch{failWebsocketConnection(this.#handler,1007,"Received invalid UTF-8 in text frame.");return}else type===opcodes.BINARY&&(this.#binaryType==="blob"?dataForEvent=new Blob([data]):dataForEvent=toArrayBuffer(data));fireEvent("message",this,createFastMessageEvent,{origin:this.#url.origin,data:dataForEvent})}#onParserDrain(){this.#handler.socket.resume()}#onSocketClose(){let wasClean=this.#handler.closeState.has(sentCloseFrameState.SENT)&&this.#handler.closeState.has(sentCloseFrameState.RECEIVED),code=1005,reason="",result2=this.#parser?.closingInfo;result2&&!result2.error&&(code=result2.code??1005,reason=result2.reason),this.#handler.readyState=states.CLOSED,this.#handler.closeState.has(sentCloseFrameState.RECEIVED)||(code=1006,fireEvent("error",this,(type,init)=>new ErrorEvent(type,init),{error:new TypeError(reason)})),fireEvent("close",this,(type,init)=>new CloseEvent(type,init),{wasClean,code,reason}),channels.close.hasSubscribers&&channels.close.publish({websocket:this,code,reason})}static ping(ws,buffer){if(Buffer.isBuffer(buffer)){if(buffer.length>125)throw new TypeError("A PING frame cannot have a body larger than 125 bytes.")}else if(buffer!==void 0)throw new TypeError("Expected buffer payload");let readyState=ws.#handler.readyState;if(isEstablished(readyState)&&!isClosing(readyState)&&!isClosed(readyState)){let frame3=new WebsocketFrameSend(buffer);ws.#handler.socket.write(frame3.createFrame(opcodes.PING))}}},{ping}=WebSocket2;Reflect.deleteProperty(WebSocket2,"ping");WebSocket2.CONNECTING=WebSocket2.prototype.CONNECTING=states.CONNECTING;WebSocket2.OPEN=WebSocket2.prototype.OPEN=states.OPEN;WebSocket2.CLOSING=WebSocket2.prototype.CLOSING=states.CLOSING;WebSocket2.CLOSED=WebSocket2.prototype.CLOSED=states.CLOSED;Object.defineProperties(WebSocket2.prototype,{CONNECTING:staticPropertyDescriptors,OPEN:staticPropertyDescriptors,CLOSING:staticPropertyDescriptors,CLOSED:staticPropertyDescriptors,url:kEnumerableProperty,readyState:kEnumerableProperty,bufferedAmount:kEnumerableProperty,onopen:kEnumerableProperty,onerror:kEnumerableProperty,onclose:kEnumerableProperty,close:kEnumerableProperty,onmessage:kEnumerableProperty,binaryType:kEnumerableProperty,send:kEnumerableProperty,extensions:kEnumerableProperty,protocol:kEnumerableProperty,[Symbol.toStringTag]:{value:"WebSocket",writable:!1,enumerable:!1,configurable:!0}});Object.defineProperties(WebSocket2,{CONNECTING:staticPropertyDescriptors,OPEN:staticPropertyDescriptors,CLOSING:staticPropertyDescriptors,CLOSED:staticPropertyDescriptors});webidl.converters["sequence<DOMString>"]=webidl.sequenceConverter(webidl.converters.DOMString);webidl.converters["DOMString or sequence<DOMString>"]=function(V,prefix,argument){return webidl.util.Type(V)===webidl.util.Types.OBJECT&&Symbol.iterator in V?webidl.converters["sequence<DOMString>"](V):webidl.converters.DOMString(V,prefix,argument)};webidl.converters.WebSocketInit=webidl.dictionaryConverter([{key:"protocols",converter:webidl.converters["DOMString or sequence<DOMString>"],defaultValue:()=>[]},{key:"dispatcher",converter:webidl.converters.any,defaultValue:()=>getGlobalDispatcher()},{key:"headers",converter:webidl.nullableConverter(webidl.converters.HeadersInit)}]);webidl.converters["DOMString or sequence<DOMString> or WebSocketInit"]=function(V){return webidl.util.Type(V)===webidl.util.Types.OBJECT&&!(Symbol.iterator in V)?webidl.converters.WebSocketInit(V):{protocols:webidl.converters["DOMString or sequence<DOMString>"](V)}};webidl.converters.WebSocketSendData=function(V){return webidl.util.Type(V)===webidl.util.Types.OBJECT&&(webidl.is.Blob(V)||webidl.is.BufferSource(V))?V:webidl.converters.USVString(V)};module.exports={WebSocket:WebSocket2,ping}}});var require_websocketerror=__commonJS({"node_modules/undici/lib/web/websocket/stream/websocketerror.js"(exports,module){"use strict";var{webidl}=require_webidl(),{validateCloseCodeAndReason}=require_util5(),{kConstruct}=require_symbols(),{kEnumerableProperty}=require_util();function createInheritableDOMException(){class Test extends DOMException{get reason(){return""}}return new Test().reason!==void 0?DOMException:new Proxy(DOMException,{construct(target,args,newTarget){let instance=Reflect.construct(target,args,target);return Object.setPrototypeOf(instance,newTarget.prototype),instance}})}var WebSocketError=class _WebSocketError extends createInheritableDOMException(){#closeCode;#reason;constructor(message="",init=void 0){if(message=webidl.converters.DOMString(message,"WebSocketError","message"),super(message,"WebSocketError"),init===kConstruct)return;init!==null&&(init=webidl.converters.WebSocketCloseInfo(init));let code=init.closeCode??null,reason=init.reason??"";validateCloseCodeAndReason(code,reason),reason.length!==0&&code===null&&(code=1e3),this.#closeCode=code,this.#reason=reason}get closeCode(){return this.#closeCode}get reason(){return this.#reason}static createUnvalidatedWebSocketError(message,code,reason){let error=new _WebSocketError(message,kConstruct);return error.#closeCode=code,error.#reason=reason,error}},{createUnvalidatedWebSocketError}=WebSocketError;delete WebSocketError.createUnvalidatedWebSocketError;Object.defineProperties(WebSocketError.prototype,{closeCode:kEnumerableProperty,reason:kEnumerableProperty,[Symbol.toStringTag]:{value:"WebSocketError",writable:!1,enumerable:!1,configurable:!0}});webidl.is.WebSocketError=webidl.util.MakeTypeAssertion(WebSocketError);module.exports={WebSocketError,createUnvalidatedWebSocketError}}});var require_websocketstream=__commonJS({"node_modules/undici/lib/web/websocket/stream/websocketstream.js"(exports,module){"use strict";var{addAbortListener}=__require("node:events"),{environmentSettingsObject,readableStreamClose}=require_util2(),{states,opcodes,sentCloseFrameState}=require_constants5(),{webidl}=require_webidl(),{getURLRecord,isValidSubprotocol,isEstablished,utf8Decode}=require_util5(),{establishWebSocketConnection,failWebsocketConnection,closeWebSocketConnection}=require_connection(),{channels}=require_diagnostics(),{WebsocketFrameSend}=require_frame(),{ByteParser}=require_receiver(),{WebSocketError,createUnvalidatedWebSocketError}=require_websocketerror(),{kEnumerableProperty}=require_util(),{utf8DecodeBytes}=require_encoding(),emittedExperimentalWarning=!1,WebSocketStream=class{#url;#openedPromise;#closedPromise;#readableStream;#readableStreamController;#writableStreamController;#handshakeAborted=!1;#handler={onConnectionEstablished:(response,extensions)=>this.#onConnectionEstablished(response,extensions),onMessage:(opcode,data)=>this.#onMessage(opcode,data),onParserError:err=>failWebsocketConnection(this.#handler,null,err.message),onParserDrain:()=>this.#handler.socket.resume(),onSocketData:chunk2=>{this.#parser.write(chunk2)||this.#handler.socket.pause()},onSocketError:err=>{this.#handler.readyState=states.CLOSING,channels.socketError.hasSubscribers&&channels.socketError.publish(err),this.#handler.socket.destroy()},onSocketClose:()=>this.#onSocketClose(),onPing:()=>{},onPong:()=>{},readyState:states.CONNECTING,socket:null,closeState:new Set,controller:null,wasEverConnected:!1};#parser;constructor(url,options=void 0){emittedExperimentalWarning||(process.emitWarning("WebSocketStream is experimental! Expect it to change at any time.",{code:"UNDICI-WSS"}),emittedExperimentalWarning=!0),webidl.argumentLengthCheck(arguments,1,"WebSocket"),url=webidl.converters.USVString(url),options!==null&&(options=webidl.converters.WebSocketStreamOptions(options));let baseURL=environmentSettingsObject.settingsObject.baseUrl,urlRecord=getURLRecord(url,baseURL),protocols=options.protocols;if(protocols.length!==new Set(protocols.map(p=>p.toLowerCase())).size)throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");if(protocols.length>0&&!protocols.every(p=>isValidSubprotocol(p)))throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");if(this.#url=urlRecord.toString(),this.#openedPromise=Promise.withResolvers(),this.#closedPromise=Promise.withResolvers(),options.signal!=null){let signal=options.signal;if(signal.aborted){this.#openedPromise.reject(signal.reason),this.#closedPromise.reject(signal.reason);return}addAbortListener(signal,()=>{isEstablished(this.#handler.readyState)||(failWebsocketConnection(this.#handler),this.#handler.readyState=states.CLOSING,this.#openedPromise.reject(signal.reason),this.#closedPromise.reject(signal.reason),this.#handshakeAborted=!0)})}let client=environmentSettingsObject.settingsObject;this.#handler.controller=establishWebSocketConnection(urlRecord,protocols,client,this.#handler,options)}get url(){return this.#url.toString()}get opened(){return this.#openedPromise.promise}get closed(){return this.#closedPromise.promise}close(closeInfo=void 0){closeInfo!==null&&(closeInfo=webidl.converters.WebSocketCloseInfo(closeInfo));let code=closeInfo.closeCode??null,reason=closeInfo.reason;closeWebSocketConnection(this.#handler,code,reason,!0)}#write(chunk2){chunk2=webidl.converters.WebSocketStreamWrite(chunk2);let promise=Promise.withResolvers(),data=null,opcode=null;if(webidl.is.BufferSource(chunk2))data=new Uint8Array(ArrayBuffer.isView(chunk2)?new Uint8Array(chunk2.buffer,chunk2.byteOffset,chunk2.byteLength):chunk2.slice()),opcode=opcodes.BINARY;else{let string;try{string=webidl.converters.DOMString(chunk2)}catch(e){return promise.reject(e),promise.promise}data=new TextEncoder().encode(string),opcode=opcodes.TEXT}if(!this.#handler.closeState.has(sentCloseFrameState.SENT)&&!this.#handler.closeState.has(sentCloseFrameState.RECEIVED)){let frame3=new WebsocketFrameSend(data);this.#handler.socket.write(frame3.createFrame(opcode),()=>{promise.resolve(void 0)})}return promise.promise}#onConnectionEstablished(response,parsedExtensions){this.#handler.socket=response.socket;let maxFragments=this.#handler.controller.dispatcher?.webSocketOptions?.maxFragments,maxPayloadSize=this.#handler.controller.dispatcher?.webSocketOptions?.maxPayloadSize,parser=new ByteParser(this.#handler,parsedExtensions,{maxFragments,maxPayloadSize});parser.on("drain",()=>this.#handler.onParserDrain()),parser.on("error",err=>this.#handler.onParserError(err)),this.#parser=parser,this.#handler.readyState=states.OPEN;let extensions=parsedExtensions??"",protocol=response.headersList.get("sec-websocket-protocol")??"",readable=new ReadableStream({start:controller=>{this.#readableStreamController=controller},cancel:reason=>this.#cancel(reason)}),writable=new WritableStream({start:controller=>{this.#writableStreamController=controller},write:chunk2=>this.#write(chunk2),close:()=>closeWebSocketConnection(this.#handler,null,null),abort:reason=>this.#closeUsingReason(reason)});this.#readableStream=readable,this.#openedPromise.resolve({extensions,protocol,readable,writable})}#onMessage(type,data){if(this.#handler.readyState!==states.OPEN)return;let chunk2;if(type===opcodes.TEXT)try{chunk2=utf8Decode(data)}catch{failWebsocketConnection(this.#handler,1007,"Received invalid UTF-8 in text frame.");return}else type===opcodes.BINARY&&(chunk2=new Uint8Array(data.buffer,data.byteOffset,data.byteLength));this.#readableStreamController.enqueue(chunk2)}#onSocketClose(){let wasClean=this.#handler.closeState.has(sentCloseFrameState.SENT)&&this.#handler.closeState.has(sentCloseFrameState.RECEIVED);if(this.#handler.readyState=states.CLOSED,this.#handshakeAborted)return;this.#handler.wasEverConnected||this.#openedPromise.reject(new WebSocketError("Socket never opened"));let result2=this.#parser?.closingInfo,code=result2?.code??1005;!this.#handler.closeState.has(sentCloseFrameState.SENT)&&!this.#handler.closeState.has(sentCloseFrameState.RECEIVED)&&(code=1006);let reason=result2?.reason==null?"":utf8DecodeBytes(Buffer.from(result2.reason));if(wasClean)readableStreamClose(this.#readableStreamController),this.#writableStreamController.error(new DOMException("A closed WebSocketStream cannot be written to","InvalidStateError")),this.#closedPromise.resolve({closeCode:code,reason});else{let error=createUnvalidatedWebSocketError("unclean close",code,reason);this.#readableStreamController?.error(error),this.#writableStreamController?.error(error),this.#closedPromise.reject(error)}}#closeUsingReason(reason){let code=null,reasonString="";webidl.is.WebSocketError(reason)&&(code=reason.closeCode,reasonString=reason.reason),closeWebSocketConnection(this.#handler,code,reasonString)}#cancel(reason){this.#closeUsingReason(reason)}};Object.defineProperties(WebSocketStream.prototype,{url:kEnumerableProperty,opened:kEnumerableProperty,closed:kEnumerableProperty,close:kEnumerableProperty,[Symbol.toStringTag]:{value:"WebSocketStream",writable:!1,enumerable:!1,configurable:!0}});webidl.converters.WebSocketStreamOptions=webidl.dictionaryConverter([{key:"protocols",converter:webidl.sequenceConverter(webidl.converters.USVString),defaultValue:()=>[]},{key:"signal",converter:webidl.nullableConverter(webidl.converters.AbortSignal),defaultValue:()=>null}]);webidl.converters.WebSocketCloseInfo=webidl.dictionaryConverter([{key:"closeCode",converter:V=>webidl.converters["unsigned short"](V,webidl.attributes.EnforceRange)},{key:"reason",converter:webidl.converters.USVString,defaultValue:()=>""}]);webidl.converters.WebSocketStreamWrite=function(V){return typeof V=="string"?webidl.converters.USVString(V):webidl.converters.BufferSource(V)};module.exports={WebSocketStream}}});var require_util6=__commonJS({"node_modules/undici/lib/web/eventsource/util.js"(exports,module){"use strict";var{makeRequest}=require_request2();function isValidLastEventId(value){return value.indexOf("\0")===-1}function isASCIINumber(value){if(value.length===0)return!1;for(let i=0;i<value.length;i++)if(value.charCodeAt(i)<48||value.charCodeAt(i)>57)return!1;return!0}function createPotentialCORSRequest(url,destination,corsAttributeState,sameOriginFallback){let mode=corsAttributeState==="no cors"?"no-cors":"cors";sameOriginFallback&&mode==="no-cors"&&(mode="same-origin");let credentialsMode="include";return corsAttributeState==="anonymous"&&(credentialsMode="same-origin"),makeRequest({urlList:[url],destination,mode,credentials:credentialsMode,useURLCredentials:!0})}module.exports={isValidLastEventId,isASCIINumber,createPotentialCORSRequest}}});var require_eventsource_stream=__commonJS({"node_modules/undici/lib/web/eventsource/eventsource-stream.js"(exports,module){"use strict";var buffer=__require("node:buffer"),{Transform}=__require("node:stream"),{isASCIINumber,isValidLastEventId}=require_util6(),BOM=[239,187,191],LF=10,CR=13,COLON=58,SPACE=32,defaultMaxEventSize=buffer.kStringMaxLength,DATA=Buffer.from("data"),EVENT=Buffer.from("event"),ID2=Buffer.from("id"),RETRY=Buffer.from("retry");function isASCIINumberBytes(buffer2,start){if(start>=buffer2.length)return!1;for(let i=start;i<buffer2.length;i++)if(buffer2[i]<48||buffer2[i]>57)return!1;return!0}function isValidLastEventIdBytes(buffer2,start){for(let i=start;i<buffer2.length;i++)if(buffer2[i]===0)return!1;return!0}function isFieldName(line,length,field){if(length!==field.length)return!1;for(let i=0;i<length;i++)if(line[i]!==field[i])return!1;return!0}function createMaxEventSizeExceededError(){let error=new Error("EventSource message size exceeded");return error.aborted=!1,error}var EventSourceStream=class extends Transform{state;checkBOM=!0;crlfCheck=!1;eventEndCheck=!1;chunks=[];chunkIndex=0;pos=0;lineChunkIndex=0;linePos=0;eventDataSize=0;maxEventSize;event={data:void 0,event:void 0,id:void 0,retry:void 0};constructor(options={}){options.readableObjectMode=!0,super(options),this.state=options.eventSourceSettings||{},this.maxEventSize=options.maxEventSize??defaultMaxEventSize,options.push&&(this.push=options.push)}_transform(chunk2,_encoding,callback){if(chunk2.length===0){callback();return}if(this.chunks.push(chunk2),this.checkBOM&&this.handleBOM()){callback();return}for(;this.hasCurrentByte();){let byte=this.currentByte();if(this.eventEndCheck){if(this.crlfCheck){if(byte===LF){this.crlfCheck=!1,this.consumeCurrentByte();continue}this.crlfCheck=!1}if(byte===LF||byte===CR){byte===CR&&(this.crlfCheck=!0),this.consumeCurrentByte(),this.hasPendingEvent()&&this.processEvent(this.event),this.clearEvent();continue}this.eventEndCheck=!1;continue}if(byte===LF||byte===CR){byte===CR&&(this.crlfCheck=!0);try{this.parseLine(this.readLine(),this.event)}catch(error){callback(error);return}this.consumeCurrentByte(),this.eventEndCheck=!0;continue}this.advanceCursor()}callback()}parseLine(line,event){if(line.length===0)return;let colonPosition=line.indexOf(COLON);if(colonPosition===0)return;let fieldLength=line.length,valueStart=line.length;if(colonPosition!==-1&&(fieldLength=colonPosition,valueStart=colonPosition+1,line[valueStart]===SPACE&&++valueStart),isFieldName(line,fieldLength,DATA)){let valueBytes=line.length-valueStart,eventDataSize=this.eventDataSize+(event.data===void 0?0:1)+valueBytes;if(this.maxEventSize>0&&eventDataSize>this.maxEventSize)throw createMaxEventSizeExceededError();let value=line.toString("utf8",valueStart);event.data===void 0?event.data=value:event.data+=`
130
130
  ${value}`,this.eventDataSize=eventDataSize;return}if(isFieldName(line,fieldLength,RETRY)){isASCIINumberBytes(line,valueStart)&&(event.retry=line.toString("utf8",valueStart));return}if(isFieldName(line,fieldLength,ID2)){isValidLastEventIdBytes(line,valueStart)&&(event.id=line.toString("utf8",valueStart));return}if(isFieldName(line,fieldLength,EVENT)){let value=line.toString("utf8",valueStart);value.length>0&&(event.event=value)}}processEvent(event){event.retry&&isASCIINumber(event.retry)&&(this.state.reconnectionTime=parseInt(event.retry,10)),event.id!==void 0&&isValidLastEventId(event.id)&&(this.state.lastEventId=event.id),event.data!==void 0&&this.push({type:event.event||"message",options:{data:event.data,lastEventId:this.state.lastEventId,origin:this.state.origin}})}clearEvent(){this.event.data=void 0,this.event.event=void 0,this.event.id=void 0,this.event.retry=void 0,this.eventDataSize=0}hasPendingEvent(){return this.event.data!==void 0||this.event.event!==void 0||this.event.id!==void 0||this.event.retry!==void 0}hasCurrentByte(){return this.chunkIndex<this.chunks.length&&this.pos<this.chunks[this.chunkIndex].length}currentByte(){return this.chunks[this.chunkIndex][this.pos]}consumeCurrentByte(){this.advanceCursor(),this.syncLineStartToCursor()}advanceCursor(){for(this.pos++;this.chunkIndex<this.chunks.length&&this.pos>=this.chunks[this.chunkIndex].length;)this.chunkIndex++,this.pos=0}syncLineStartToCursor(){this.lineChunkIndex=this.chunkIndex,this.linePos=this.pos,this.dropConsumedChunks()}dropConsumedChunks(){for(;this.lineChunkIndex>0;)this.chunks.shift(),this.lineChunkIndex--,this.chunkIndex--;this.chunkIndex===this.chunks.length&&(this.chunks.length=0,this.chunkIndex=0,this.pos=0,this.lineChunkIndex=0,this.linePos=0)}readLine(){if(this.lineChunkIndex===this.chunkIndex)return this.chunks[this.chunkIndex].subarray(this.linePos,this.pos);let chunks=[],length=0;for(let i=this.lineChunkIndex;i<=this.chunkIndex;i++){let chunk2=this.chunks[i],start=i===this.lineChunkIndex?this.linePos:0,end=i===this.chunkIndex?this.pos:chunk2.length,slice=chunk2.subarray(start,end);length+=slice.length,chunks.push(slice)}return Buffer.concat(chunks,length)}peekBufferedByte(offset){let chunkIndex=this.lineChunkIndex,pos=this.linePos;for(;chunkIndex<this.chunks.length;){let chunk2=this.chunks[chunkIndex],remaining2=chunk2.length-pos;if(offset<remaining2)return chunk2[pos+offset];offset-=remaining2,chunkIndex++,pos=0}}discardLeadingBytes(count){for(;count>0&&this.lineChunkIndex<this.chunks.length;){let remaining2=this.chunks[this.lineChunkIndex].length-this.linePos;count<remaining2?(this.linePos+=count,count=0):(count-=remaining2,this.lineChunkIndex++,this.linePos=0)}this.chunkIndex=this.lineChunkIndex,this.pos=this.linePos,this.dropConsumedChunks()}handleBOM(){let first=this.peekBufferedByte(0),second=this.peekBufferedByte(1),third=this.peekBufferedByte(2);return second===void 0?(first===BOM[0]||(this.checkBOM=!1),!0):third===void 0?first===BOM[0]&&second===BOM[1]?!0:(this.checkBOM=!1,!1):(first===BOM[0]&&second===BOM[1]&&third===BOM[2]&&this.discardLeadingBytes(3),this.checkBOM=!1,!this.hasCurrentByte())}};module.exports={EventSourceStream}}});var require_eventsource=__commonJS({"node_modules/undici/lib/web/eventsource/eventsource.js"(exports,module){"use strict";var{pipeline:pipeline2}=__require("node:stream"),{fetching}=require_fetch(),{webidl}=require_webidl(),{EventSourceStream}=require_eventsource_stream(),{parseMIMEType}=require_data_url(),{createFastMessageEvent}=require_events(),{isNetworkError}=require_response(),{isValidHeaderValue,kEnumerableProperty}=require_util(),{environmentSettingsObject}=require_util2(),{createPotentialCORSRequest}=require_util6(),{getGlobalDispatcher}=require_global2(),{isomorphicDecode}=require_infra(),textEncoder=new TextEncoder,experimentalWarned=!1,defaultReconnectionTime=3e3,CONNECTING=0,OPEN=1,CLOSED=2,ANONYMOUS="anonymous",USE_CREDENTIALS="use-credentials",EventSource=class _EventSource extends EventTarget{#events={open:null,error:null,message:null};#url;#withCredentials=!1;#readyState=CONNECTING;#request=null;#controller=null;#dispatcher;#state;constructor(url,eventSourceInitDict={}){super(),webidl.util.markAsUncloneable(this);let prefix="EventSource constructor";webidl.argumentLengthCheck(arguments,1,prefix),experimentalWarned||(experimentalWarned=!0,process.emitWarning("EventSource is experimental, expect them to change at any time.",{code:"UNDICI-ES"})),url=webidl.converters.USVString(url),eventSourceInitDict=webidl.converters.EventSourceInitDict(eventSourceInitDict,prefix,"eventSourceInitDict"),this.#dispatcher=eventSourceInitDict.node.dispatcher||eventSourceInitDict.dispatcher,this.#state={lastEventId:"",reconnectionTime:eventSourceInitDict.node.reconnectionTime};let settings=environmentSettingsObject,urlRecord;try{urlRecord=new URL(url,settings.settingsObject.baseUrl),this.#state.origin=urlRecord.origin}catch(e){throw new DOMException(e,"SyntaxError")}this.#url=urlRecord.href;let corsAttributeState=ANONYMOUS;eventSourceInitDict.withCredentials===!0&&(corsAttributeState=USE_CREDENTIALS,this.#withCredentials=!0);let request=createPotentialCORSRequest(urlRecord,"",corsAttributeState);request.client=environmentSettingsObject.settingsObject,request.headersList.set("Accept","text/event-stream"),request.cache="no-store",request.initiator="other",this.#request=request,this.#connect()}get readyState(){return this.#readyState}get url(){return this.#url}get withCredentials(){return this.#withCredentials}#connect(){if(this.#readyState===CLOSED)return;this.#readyState=CONNECTING;let fetchParams={request:this.#request,dispatcher:this.#dispatcher},processEventSourceEndOfBody=response=>{if(!isNetworkError(response))return this.#reconnect()};fetchParams.processResponseEndOfBody=processEventSourceEndOfBody,fetchParams.processResponse=response=>{if(isNetworkError(response))if(response.aborted){this.close(),this.dispatchEvent(new Event("error"));return}else{this.#reconnect();return}let contentType=response.headersList.get("content-type",!0),mimeType=contentType!==null?parseMIMEType(contentType):"failure",contentTypeValid=mimeType!=="failure"&&mimeType.essence==="text/event-stream";if(response.status!==200||contentTypeValid===!1){this.close(),this.dispatchEvent(new Event("error"));return}this.#readyState=OPEN,this.dispatchEvent(new Event("open")),this.#state.origin=response.urlList[response.urlList.length-1].origin;let eventSourceStream=new EventSourceStream({eventSourceSettings:this.#state,maxEventSize:this.#dispatcher.eventSourceOptions?.maxEventSize,push:event=>{this.dispatchEvent(createFastMessageEvent(event.type,event.options))}});pipeline2(response.body.stream,eventSourceStream,error=>{error?.aborted===!1&&(this.close(),this.dispatchEvent(new Event("error")))})},this.#controller=fetching(fetchParams)}#reconnect(){this.#readyState!==CLOSED&&(this.#readyState=CONNECTING,this.dispatchEvent(new Event("error")),setTimeout(()=>{if(this.#readyState===CONNECTING){if(this.#request.headersList.delete("last-event-id",!0),this.#state.lastEventId.length){let lastEventId=isomorphicDecode(textEncoder.encode(this.#state.lastEventId));isValidHeaderValue(lastEventId)&&this.#request.headersList.set("last-event-id",lastEventId,!0)}this.#connect()}},this.#state.reconnectionTime)?.unref())}close(){webidl.brandCheck(this,_EventSource),this.#readyState!==CLOSED&&(this.#readyState=CLOSED,this.#controller.abort(),this.#request=null)}get onopen(){return this.#events.open}set onopen(fn){this.#events.open&&this.removeEventListener("open",this.#events.open);let listener=webidl.converters.EventHandlerNonNull(fn);listener!==null?(this.addEventListener("open",listener),this.#events.open=fn):this.#events.open=null}get onmessage(){return this.#events.message}set onmessage(fn){this.#events.message&&this.removeEventListener("message",this.#events.message);let listener=webidl.converters.EventHandlerNonNull(fn);listener!==null?(this.addEventListener("message",listener),this.#events.message=fn):this.#events.message=null}get onerror(){return this.#events.error}set onerror(fn){this.#events.error&&this.removeEventListener("error",this.#events.error);let listener=webidl.converters.EventHandlerNonNull(fn);listener!==null?(this.addEventListener("error",listener),this.#events.error=fn):this.#events.error=null}},constantsPropertyDescriptors={CONNECTING:{__proto__:null,configurable:!1,enumerable:!0,value:CONNECTING,writable:!1},OPEN:{__proto__:null,configurable:!1,enumerable:!0,value:OPEN,writable:!1},CLOSED:{__proto__:null,configurable:!1,enumerable:!0,value:CLOSED,writable:!1}};Object.defineProperties(EventSource,constantsPropertyDescriptors);Object.defineProperties(EventSource.prototype,constantsPropertyDescriptors);Object.defineProperties(EventSource.prototype,{close:kEnumerableProperty,onerror:kEnumerableProperty,onmessage:kEnumerableProperty,onopen:kEnumerableProperty,readyState:kEnumerableProperty,url:kEnumerableProperty,withCredentials:kEnumerableProperty});webidl.converters.EventSourceInitDict=webidl.dictionaryConverter([{key:"withCredentials",converter:webidl.converters.boolean,defaultValue:()=>!1},{key:"dispatcher",converter:webidl.converters.any,defaultValue:()=>getGlobalDispatcher()},{key:"node",converter:webidl.dictionaryConverter([{key:"reconnectionTime",converter:webidl.converters["unsigned long"],defaultValue:()=>defaultReconnectionTime},{key:"dispatcher",converter:webidl.converters.any}]),defaultValue:()=>({})}]);module.exports={EventSource,defaultReconnectionTime}}});var require_undici=__commonJS({"node_modules/undici/index.js"(exports,module){"use strict";var Client2=require_client(),Dispatcher=require_dispatcher(),Pool2=require_pool(),BalancedPool=require_balanced_pool(),RoundRobinPool=require_round_robin_pool(),Agent2=require_agent(),Dispatcher1Wrapper=require_dispatcher1_wrapper(),ProxyAgent=require_proxy_agent(),Socks5ProxyAgent=require_socks5_proxy_agent(),EnvHttpProxyAgent2=require_env_http_proxy_agent(),RetryAgent=require_retry_agent(),H2CClient=require_h2c_client(),errors=require_errors(),util=require_util(),{InvalidArgumentError}=errors,api=require_api(),buildConnector=require_connect(),MockClient=require_mock_client(),{MockCallHistory,MockCallHistoryLog}=require_mock_call_history(),MockAgent=require_mock_agent(),MockPool=require_mock_pool(),SnapshotAgent=require_snapshot_agent(),mockErrors=require_mock_errors(),RetryHandler=require_retry_handler(),{getGlobalDispatcher,setGlobalDispatcher:setGlobalDispatcher2}=require_global2(),DecoratorHandler=require_decorator_handler(),RedirectHandler=require_redirect_handler();Object.assign(Dispatcher.prototype,api);module.exports.Dispatcher=Dispatcher;module.exports.Client=Client2;module.exports.Pool=Pool2;module.exports.BalancedPool=BalancedPool;module.exports.RoundRobinPool=RoundRobinPool;module.exports.Agent=Agent2;module.exports.Dispatcher1Wrapper=Dispatcher1Wrapper;module.exports.ProxyAgent=ProxyAgent;module.exports.Socks5ProxyAgent=Socks5ProxyAgent;module.exports.EnvHttpProxyAgent=EnvHttpProxyAgent2;module.exports.RetryAgent=RetryAgent;module.exports.H2CClient=H2CClient;module.exports.RetryHandler=RetryHandler;module.exports.DecoratorHandler=DecoratorHandler;module.exports.RedirectHandler=RedirectHandler;module.exports.interceptors={redirect:require_redirect(),responseError:require_response_error(),retry:require_retry(),dump:require_dump(),dns:require_dns(),cache:require_cache2(),decompress:require_decompress(),deduplicate:require_deduplicate()};module.exports.cacheStores={MemoryCacheStore:require_memory_cache_store()};var SqliteCacheStore=require_sqlite_cache_store();module.exports.cacheStores.SqliteCacheStore=SqliteCacheStore;module.exports.buildConnector=buildConnector;module.exports.errors=errors;module.exports.util={parseHeaders:util.parseHeaders,headerNameToString:util.headerNameToString};function makeDispatcher(fn){return(url,opts,handler)=>{if(typeof opts=="function"&&(handler=opts,opts=null),!url||typeof url!="string"&&typeof url!="object"&&!(url instanceof URL))throw new InvalidArgumentError("invalid url");if(opts!=null&&typeof opts!="object")throw new InvalidArgumentError("invalid opts");if(opts&&opts.path!=null){if(typeof opts.path!="string")throw new InvalidArgumentError("invalid opts.path");let path10=opts.path;opts.path.startsWith("/")||(path10=`/${path10}`),url=new URL(util.parseOrigin(url).origin+path10)}else opts||(opts=typeof url=="object"?url:{}),url=util.parseURL(url);let{agent,dispatcher=getGlobalDispatcher(),...restOpts}=opts;if(agent)throw new InvalidArgumentError("unsupported opts.agent. Did you mean opts.client?");return fn.call(dispatcher,{...restOpts,origin:url.origin,path:url.search?`${url.pathname}${url.search}`:url.pathname,method:opts.method||(opts.body?"PUT":"GET")},handler)}}module.exports.setGlobalDispatcher=setGlobalDispatcher2;module.exports.getGlobalDispatcher=getGlobalDispatcher;var fetchImpl=require_fetch().fetch,currentFilename=typeof __filename<"u"?__filename:void 0;function appendFetchStackTrace(err,filename){if(!err||typeof err!="object")return;let stack=typeof err.stack=="string"?err.stack:"",normalizedFilename=filename.replace(/\\/g,"/");if(stack&&(stack.includes(filename)||stack.includes(normalizedFilename)))return;let capture2={};if(Error.captureStackTrace(capture2,appendFetchStackTrace),!capture2.stack)return;let captureLines=capture2.stack.split(`
131
131
  `).slice(1).join(`
132
132
  `);err.stack=stack?`${stack}
@@ -336,7 +336,7 @@ ${end.comment}`:end.comment}this.doc.range[2]=end.offset;break}default:this.erro
336
336
 
337
337
  `:content}};this.options=extend({},defaults2,options),this.rules=new Rules(this.options)}TurndownService2.prototype={turndown:function(input2){if(!canConvert(input2))throw new TypeError(input2+" is not a string, or an element/document/fragment node.");if(input2==="")return"";var output=process2.call(this,new RootNode(input2,this.options));return postProcess.call(this,output)},use:function(plugin){if(Array.isArray(plugin))for(var i=0;i<plugin.length;i++)this.use(plugin[i]);else if(typeof plugin=="function")plugin(this);else throw new TypeError("plugin must be a Function or an Array of Functions");return this},addRule:function(key,rule){return this.rules.add(key,rule),this},keep:function(filter2){return this.rules.keep(filter2),this},remove:function(filter2){return this.rules.remove(filter2),this},escape:function(string){return escapes.reduce(function(accumulator,escape2){return accumulator.replace(escape2[0],escape2[1])},string)}};function process2(parentNode){var self=this;return reduce.call(parentNode.childNodes,function(output,node){node=new Node(node,self.options);var replacement="";return node.nodeType===3?replacement=node.isCode?node.nodeValue:self.escape(node.nodeValue):node.nodeType===1&&(replacement=replacementForNode.call(self,node)),join45(output,replacement)},"")}function postProcess(output){var self=this;return this.rules.forEach(function(rule){typeof rule.append=="function"&&(output=join45(output,rule.append(self.options)))}),output.replace(/^[\t\r\n]+/,"").replace(/[\t\r\n\s]+$/,"")}function replacementForNode(node){var rule=this.rules.forNode(node),content=process2.call(this,node),whitespace=node.flankingWhitespace;return(whitespace.leading||whitespace.trailing)&&(content=content.trim()),whitespace.leading+rule.replacement(content,node,this.options)+whitespace.trailing}function join45(output,replacement){var s1=trimTrailingNewlines(output),s2=trimLeadingNewlines(replacement),nls=Math.max(output.length-s1.length,replacement.length-s2.length),separator=`
338
338
 
339
- `.substring(0,nls);return s1+separator+s2}function canConvert(input2){return input2!=null&&(typeof input2=="string"||input2.nodeType&&(input2.nodeType===1||input2.nodeType===9||input2.nodeType===11))}module.exports=TurndownService2}});var undici=__toESM(require_undici(),1);import{EventEmitter}from"node:events";var DEFAULT_HTTP_IDLE_TIMEOUT_MS=3e5,DEFAULT_AUTO_SELECT_FAMILY_ATTEMPT_TIMEOUT_MS=2e3,HTTP_IDLE_TIMEOUT_CHOICES=[{label:"30 sec",timeoutMs:3e4},{label:"1 min",timeoutMs:6e4},{label:"2 min",timeoutMs:12e4},{label:"5 min",timeoutMs:3e5},{label:"disabled",timeoutMs:0}],originalGlobalFetch=globalThis.fetch,installedGlobalFetch;function parseHttpIdleTimeoutMs(value){if(typeof value=="string"){let trimmed=value.trim();return trimmed.toLowerCase()==="disabled"?0:trimmed.length===0?void 0:parseHttpIdleTimeoutMs(Number(trimmed))}if(!(typeof value!="number"||!Number.isFinite(value)||value<0))return Math.floor(value)}function formatHttpIdleTimeoutMs(timeoutMs){let choice=HTTP_IDLE_TIMEOUT_CHOICES.find(item=>item.timeoutMs===timeoutMs);return choice?choice.label:`${timeoutMs/1e3} sec`}function applyHttpProxySettings(httpProxy){let proxy=httpProxy?.trim();proxy&&(process.env.HTTP_PROXY??=proxy,process.env.HTTPS_PROXY??=proxy)}var ignoreUndiciDispatcherError=_error=>{};function withUndiciErrorListener(dispatcher){return dispatcher instanceof EventEmitter&&EventEmitter.prototype.on.call(dispatcher,"error",ignoreUndiciDispatcherError),dispatcher}function createUndiciClient(origin,options){return withUndiciErrorListener(new undici.Client(origin,options))}function createUndiciOriginDispatcher(origin,options){let dispatcherOptions=options;return dispatcherOptions.connections===1?createUndiciClient(origin,dispatcherOptions):withUndiciErrorListener(new undici.Pool(origin,{...dispatcherOptions,factory:createUndiciClient}))}function configureHttpDispatcher(timeoutMs=DEFAULT_HTTP_IDLE_TIMEOUT_MS){let normalizedTimeoutMs=parseHttpIdleTimeoutMs(timeoutMs);if(normalizedTimeoutMs===void 0)throw new Error(`Invalid HTTP idle timeout: ${String(timeoutMs)}`);let dispatcher=withUndiciErrorListener(new undici.EnvHttpProxyAgent({allowH2:!1,proxyTunnel:!0,bodyTimeout:normalizedTimeoutMs,connect:{autoSelectFamilyAttemptTimeout:DEFAULT_AUTO_SELECT_FAMILY_ATTEMPT_TIMEOUT_MS},headersTimeout:normalizedTimeoutMs,clientFactory:createUndiciClient,factory:createUndiciOriginDispatcher}));undici.setGlobalDispatcher(dispatcher),(installedGlobalFetch===void 0?globalThis.fetch===originalGlobalFetch:globalThis.fetch===installedGlobalFetch)&&(undici.install?.(),installedGlobalFetch=globalThis.fetch)}var src_exports={};__export(src_exports,{Agent:()=>Agent,agentLoop:()=>agentLoop,agentLoopContinue:()=>agentLoopContinue,runAgentLoop:()=>runAgentLoop,runAgentLoopContinue:()=>runAgentLoopContinue,runToolCall:()=>runToolCall,setDefaultStreamFn:()=>setDefaultStreamFn,streamProxy:()=>streamProxy});var defaultStreamFn;function setDefaultStreamFn(streamFn){defaultStreamFn=streamFn}function getDefaultStreamFn(){if(!defaultStreamFn)throw new Error("No default stream function configured. Pass streamFn explicitly or call setDefaultStreamFn().");return defaultStreamFn}function agentLoop(prompts,context,config,signal,streamFn){let stream2=createAgentStream();return runAgentLoop(prompts,context,config,async event=>{stream2.push(event)},signal,streamFn).then(messages=>{stream2.end(messages)}),stream2}function agentLoopContinue(context,config,signal,streamFn){if(context.messages.length===0)throw new Error("Cannot continue: no messages in context");if(context.messages[context.messages.length-1].role==="assistant")throw new Error("Cannot continue from message role: assistant");let stream2=createAgentStream();return runAgentLoopContinue(context,config,async event=>{stream2.push(event)},signal,streamFn).then(messages=>{stream2.end(messages)}),stream2}async function runAgentLoop(prompts,context,config,emit,signal,streamFn){let initialMessages=declareToolChanges(context,prompts),newMessages=[...initialMessages],currentContext={...context,messages:[...context.messages,...initialMessages]};await emit({type:"agent_start"}),await emit({type:"turn_start"});for(let message of initialMessages)await emit({type:"message_start",message}),await emit({type:"message_end",message});return await runLoop(currentContext,newMessages,config,signal,emit,streamFn??getDefaultStreamFn()),newMessages}async function runAgentLoopContinue(context,config,emit,signal,streamFn){if(context.messages.length===0)throw new Error("Cannot continue: no messages in context");if(context.messages[context.messages.length-1].role==="assistant")throw new Error("Cannot continue from message role: assistant");let newMessages=[],currentContext={...context};return await emit({type:"agent_start"}),await emit({type:"turn_start"}),await runLoop(currentContext,newMessages,config,signal,emit,streamFn??getDefaultStreamFn()),newMessages}function createAgentStream(){return new EventStream(event=>event.type==="agent_end",event=>event.type==="agent_end"?event.messages:[])}async function runLoop(initialContext,newMessages,initialConfig,signal,emit,streamFunction){let currentContext=initialContext,config=initialConfig,lastCompletedTurn,explicitContinuation=!1,pendingMessages=await config.getSteeringMessages?.()||[];for(;;){let hasMoreToolCalls=!0;for(;hasMoreToolCalls||pendingMessages.length>0;){let preparedMessages=[];if(lastCompletedTurn){let nextTurnSnapshot=await config.prepareNextTurn?.(lastCompletedTurn);nextTurnSnapshot&&(currentContext=nextTurnSnapshot.context??currentContext,preparedMessages=nextTurnSnapshot.messages??[],config={...config,model:nextTurnSnapshot.model??config.model,reasoning:nextTurnSnapshot.thinkingLevel===void 0?config.reasoning:nextTurnSnapshot.thinkingLevel==="off"?void 0:nextTurnSnapshot.thinkingLevel}),pendingMessages.length===0&&(pendingMessages=await config.getSteeringMessages?.()||[]),await emit({type:"turn_start"})}for(let message2 of declareToolChanges(currentContext,[...preparedMessages,...pendingMessages]))await emit({type:"message_start",message:message2}),await emit({type:"message_end",message:message2}),currentContext.messages.push(message2),newMessages.push(message2);pendingMessages=[];let requestUpdate=await config.prepareRequest?.({context:currentContext,model:config.model,thinkingLevel:config.reasoning??"off"},signal);requestUpdate&&(currentContext=requestUpdate.context??currentContext,config={...config,model:requestUpdate.model??config.model,reasoning:requestUpdate.thinkingLevel===void 0?config.reasoning:requestUpdate.thinkingLevel==="off"?void 0:requestUpdate.thinkingLevel});let message=await streamAssistantResponse(currentContext,config,signal,emit,streamFunction);if(newMessages.push(message),message.stopReason==="error"||message.stopReason==="aborted"){lastCompletedTurn={message,toolResults:[],context:currentContext,newMessages},await config.finishTurn?.(lastCompletedTurn,signal),await emit({type:"turn_end",message,toolResults:[]}),await emit({type:"agent_end",messages:newMessages});return}let toolCalls=message.content.filter(c=>c.type==="toolCall"),toolResults=[];if(hasMoreToolCalls=!1,toolCalls.length>0){let executedToolBatch=message.stopReason==="length"?await failToolCallsFromTruncatedMessage(toolCalls,emit):await executeToolCalls(currentContext,message,config,signal,emit);toolResults.push(...executedToolBatch.messages),hasMoreToolCalls=!executedToolBatch.terminate;for(let result2 of toolResults)currentContext.messages.push(result2),newMessages.push(result2)}lastCompletedTurn={message,toolResults,context:currentContext,newMessages};let decision=await config.finishTurn?.(lastCompletedTurn,signal);if(await emit({type:"turn_end",message,toolResults}),decision?.action==="end"){await emit({type:"agent_end",messages:newMessages});return}explicitContinuation=decision?.action==="continue",pendingMessages=await config.getSteeringMessages?.()||[],(hasMoreToolCalls||pendingMessages.length>0)&&(explicitContinuation=!1)}let followUpMessages=await config.getFollowUpMessages?.()||[];if(followUpMessages.length>0){explicitContinuation=!1,pendingMessages=followUpMessages;continue}if(explicitContinuation){explicitContinuation=!1;continue}break}await emit({type:"agent_end",messages:newMessages})}function declareToolChanges(context,pendingMessages){let systemIndex=-1;for(let i=pendingMessages.length-1;i>=0;i--)if(pendingMessages[i].role==="system"){systemIndex=i;break}let pending=pendingMessages[systemIndex],baseline=pending?pendingMessages.map((message,index2)=>index2===systemIndex?withToolChanges(pending,NO_CHANGES):message):pendingMessages,changes=getToolStateChanges(getCurrentTools([...context.messages,...baseline]),(context.tools??[]).map(toToolDeclaration)),unchanged=changes.toolsAdded.length===0&&changes.toolsRemoved.length===0;if(pending)return unchanged&&!pending.toolsAdded?.length&&!pending.toolsRemoved?.length?pendingMessages:baseline.map((message,index2)=>index2===systemIndex?withToolChanges(pending,changes):message);if(unchanged)return pendingMessages;let update=withToolChanges({role:"system",content:"",timestamp:Date.now()},changes),insertIndex=pendingMessages.findIndex(message=>message.role!=="system"),index=insertIndex===-1?pendingMessages.length:insertIndex;return[...pendingMessages.slice(0,index),update,...pendingMessages.slice(index)]}var NO_CHANGES={toolsAdded:[],toolsRemoved:[]};function withToolChanges(message,{toolsAdded,toolsRemoved}){let{toolsAdded:_added,toolsRemoved:_removed,...rest}=message;return{...rest,...toolsAdded.length>0?{toolsAdded}:{},...toolsRemoved.length>0?{toolsRemoved}:{}}}async function streamAssistantResponse(context,config,signal,emit,streamFunction){let messages=context.messages;config.transformContext&&(messages=await config.transformContext(messages,signal));let llmMessages=await config.convertToLlm(messages),llmContext=normalizeContext({messages:llmMessages}),resolvedApiKey=(config.getApiKey?await config.getApiKey(config.model.provider):void 0)||config.apiKey,response=await streamFunction(config.model,llmContext,{...config,apiKey:resolvedApiKey,signal}),result2=async()=>Object.assign(await response.result(),{thinkingLevel:config.reasoning??"off"}),partialMessage=null,addedPartial=!1;for await(let event of response)switch(event.type){case"start":partialMessage=event.partial,context.messages.push(partialMessage),addedPartial=!0,await emit({type:"message_start",message:{...partialMessage}});break;case"text_start":case"text_delta":case"text_end":case"thinking_start":case"thinking_delta":case"thinking_end":case"toolcall_start":case"toolcall_delta":case"toolcall_end":partialMessage&&(partialMessage=event.partial,context.messages[context.messages.length-1]=partialMessage,await emit({type:"message_update",assistantMessageEvent:event,message:{...partialMessage}}));break;case"done":case"error":{let finalMessage2=await result2();return addedPartial?context.messages[context.messages.length-1]=finalMessage2:context.messages.push(finalMessage2),addedPartial||await emit({type:"message_start",message:{...finalMessage2}}),await emit({type:"message_end",message:finalMessage2}),finalMessage2}}let finalMessage=await result2();return addedPartial?context.messages[context.messages.length-1]=finalMessage:(context.messages.push(finalMessage),await emit({type:"message_start",message:{...finalMessage}})),await emit({type:"message_end",message:finalMessage}),finalMessage}async function failToolCallsFromTruncatedMessage(toolCalls,emit){let messages=[];for(let toolCall of toolCalls){await emit({type:"tool_execution_start",toolCallId:toolCall.id,toolName:toolCall.name,args:toolCall.arguments});let finalized={toolCall,result:createErrorToolResult(`Tool call "${toolCall.name}" was not executed: the response hit the output token limit, so its arguments may be truncated. Re-issue the tool call with complete arguments.`),isError:!0};await emitToolExecutionEnd(finalized,emit);let toolResultMessage=createToolResultMessage(finalized);await emitToolResultMessage(toolResultMessage,emit),messages.push(toolResultMessage)}return{messages,terminate:!1}}async function executeToolCalls(currentContext,assistantMessage,config,signal,emit){let toolCalls=assistantMessage.content.filter(c=>c.type==="toolCall"),hasSequentialToolCall=toolCalls.some(tc=>currentContext.tools?.find(t=>t.name===tc.name)?.executionMode==="sequential");return config.toolExecution==="sequential"||hasSequentialToolCall?executeToolCallsSequential(currentContext,assistantMessage,toolCalls,config,signal,emit):executeToolCallsParallel(currentContext,assistantMessage,toolCalls,config,signal,emit)}async function executeToolCallsSequential(currentContext,assistantMessage,toolCalls,config,signal,emit){let finalizedCalls=[],messages=[];for(let toolCall of toolCalls){await emit({type:"tool_execution_start",toolCallId:toolCall.id,toolName:toolCall.name,args:toolCall.arguments});let preparation=await prepareToolCall(currentContext,assistantMessage,toolCall,config,signal),finalized;if(preparation.kind==="immediate")finalized={toolCall,result:preparation.result,isError:preparation.isError};else{let executed=await executePreparedToolCall(preparation,signal,emitToolExecutionUpdate(toolCall,emit));finalized=await finalizeExecutedToolCall(currentContext,assistantMessage,preparation,executed,config,signal)}await emitToolExecutionEnd(finalized,emit);let toolResultMessage=createToolResultMessage(finalized);if(await emitToolResultMessage(toolResultMessage,emit),finalizedCalls.push(finalized),messages.push(toolResultMessage),signal?.aborted)break}return{messages,terminate:shouldTerminateToolBatch(finalizedCalls)}}async function executeToolCallsParallel(currentContext,assistantMessage,toolCalls,config,signal,emit){let finalizedCalls=[];for(let toolCall of toolCalls){await emit({type:"tool_execution_start",toolCallId:toolCall.id,toolName:toolCall.name,args:toolCall.arguments});let preparation=await prepareToolCall(currentContext,assistantMessage,toolCall,config,signal);if(preparation.kind==="immediate"){let finalized={toolCall,result:preparation.result,isError:preparation.isError};if(await emitToolExecutionEnd(finalized,emit),finalizedCalls.push(finalized),signal?.aborted)break;continue}if(finalizedCalls.push(async()=>{if(signal?.aborted){let finalized2={toolCall,result:createErrorToolResult("Operation aborted"),isError:!0};return await emitToolExecutionEnd(finalized2,emit),finalized2}let executed=await executePreparedToolCall(preparation,signal,emitToolExecutionUpdate(toolCall,emit)),finalized=await finalizeExecutedToolCall(currentContext,assistantMessage,preparation,executed,config,signal);return await emitToolExecutionEnd(finalized,emit),finalized}),signal?.aborted)break}let orderedFinalizedCalls=await Promise.all(finalizedCalls.map(entry=>typeof entry=="function"?entry():Promise.resolve(entry))),messages=[];for(let finalized of orderedFinalizedCalls){let toolResultMessage=createToolResultMessage(finalized);await emitToolResultMessage(toolResultMessage,emit),messages.push(toolResultMessage)}return{messages,terminate:shouldTerminateToolBatch(orderedFinalizedCalls)}}function shouldTerminateToolBatch(finalizedCalls){return finalizedCalls.length>0&&finalizedCalls.every(finalized=>finalized.result.terminate===!0)}function prepareToolCallArguments(tool,toolCall){if(!tool.prepareArguments)return toolCall;let preparedArguments=tool.prepareArguments(toolCall.arguments);return preparedArguments===toolCall.arguments?toolCall:{...toolCall,arguments:preparedArguments}}async function prepareToolCall(currentContext,assistantMessage,toolCall,config,signal,tools=currentContext.tools??[]){let tool=tools.find(t=>t.name===toolCall.name);if(!tool)return{kind:"immediate",result:createErrorToolResult(`Tool ${toolCall.name} not found`),isError:!0};try{let preparedToolCall=prepareToolCallArguments(tool,toolCall),validatedArgs=validateToolArguments(tool,preparedToolCall);if(config.beforeToolCall){let beforeResult=await config.beforeToolCall({assistantMessage,toolCall,args:validatedArgs,context:currentContext},signal);if(signal?.aborted)return{kind:"immediate",result:createErrorToolResult("Operation aborted"),isError:!0};if(beforeResult?.block){let result2=createErrorToolResult(beforeResult.reason||"Tool execution was blocked");return beforeResult.terminate===!0&&(result2.terminate=!0),{kind:"immediate",result:result2,isError:!0}}}return signal?.aborted?{kind:"immediate",result:createErrorToolResult("Operation aborted"),isError:!0}:{kind:"prepared",toolCall,tool,args:validatedArgs}}catch(error){return{kind:"immediate",result:createErrorToolResult(error instanceof Error?error.message:String(error)),isError:!0}}}function emitToolExecutionUpdate(toolCall,emit){return partialResult=>emit({type:"tool_execution_update",toolCallId:toolCall.id,toolName:toolCall.name,args:toolCall.arguments,partialResult})}async function runToolCall(toolCall,options){let{assistantMessage,context,signal}=options,preparation=await prepareToolCall(context,assistantMessage,toolCall,options,signal,options.tools);if(preparation.kind==="immediate")return{toolCall,result:preparation.result,isError:preparation.isError};let executed=await executePreparedToolCall(preparation,signal,options.onUpdate??(()=>{}));return finalizeExecutedToolCall(context,assistantMessage,preparation,executed,options,signal)}async function executePreparedToolCall(prepared,signal,onUpdate){let updateEvents=[],acceptingUpdates=!0,startedAt=performance.now(),elapsed=()=>Math.round(performance.now()-startedAt);try{let result2=await prepared.tool.execute(prepared.toolCall.id,prepared.args,signal,partialResult=>{acceptingUpdates&&updateEvents.push(Promise.resolve(onUpdate(partialResult)))});assertJsonDetails(prepared.toolCall.name,result2.details);let durationMs=elapsed();return acceptingUpdates=!1,await Promise.all(updateEvents),{result:result2,isError:result2.isError===!0,durationMs}}catch(error){let durationMs=elapsed();return acceptingUpdates=!1,await Promise.all(updateEvents),{result:createErrorToolResult(error instanceof Error?error.message:String(error)),isError:!0,durationMs}}finally{acceptingUpdates=!1}}async function finalizeExecutedToolCall(currentContext,assistantMessage,prepared,executed,config,signal){let result2=executed.result,isError=executed.isError;if(config.afterToolCall)try{let afterResult=await config.afterToolCall({assistantMessage,toolCall:prepared.toolCall,args:prepared.args,result:result2,isError,context:currentContext},signal);if(afterResult){let structuredContent=afterResult.structuredContent??(afterResult.content?void 0:result2.structuredContent);result2={...result2,content:afterResult.content??result2.content,details:afterResult.details??result2.details,usage:afterResult.usage??result2.usage,terminate:afterResult.terminate??result2.terminate},structuredContent===void 0?delete result2.structuredContent:result2.structuredContent=structuredContent,isError=afterResult.isError??isError}}catch(error){result2=createErrorToolResult(error instanceof Error?error.message:String(error)),isError=!0}return{toolCall:prepared.toolCall,result:result2,isError,durationMs:executed.durationMs}}function createErrorToolResult(message){return{content:[{type:"text",text:message}],details:{}}}async function emitToolExecutionEnd(finalized,emit){await emit({type:"tool_execution_end",toolCallId:finalized.toolCall.id,toolName:finalized.toolCall.name,result:finalized.result,isError:finalized.isError,...finalized.durationMs===void 0?{}:{durationMs:finalized.durationMs}})}function createToolResultMessage(finalized){return{role:"toolResult",toolCallId:finalized.toolCall.id,toolName:finalized.toolCall.name,content:finalized.result.content??[],details:finalized.result.details,usage:finalized.result.usage,isError:finalized.isError,...finalized.durationMs===void 0?{}:{durationMs:finalized.durationMs},timestamp:Date.now()}}async function emitToolResultMessage(toolResultMessage,emit){await emit({type:"message_start",message:toolResultMessage}),await emit({type:"message_end",message:toolResultMessage})}function assertJsonDetails(toolName,details){if(details===void 0)return;let offending=findNonJson(details);if(offending!==void 0)throw new Error(`Tool "${toolName}" returned details that are not JSON: ${offending}`)}function defaultConvertToLlm(messages){return messages.filter(message=>message.role==="system"||message.role==="user"||message.role==="assistant"||message.role==="toolResult")}var EMPTY_USAGE={input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},DEFAULT_MODEL={id:"unknown",name:"unknown",api:"unknown",provider:"unknown",baseUrl:"",reasoning:!1,input:[],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:0,maxTokens:0};function createMutableAgentState(initialState){let tools=initialState?.tools?.slice()??[],messages=initialState?.messages?.slice()??[],initialMessage=createInitialSystemMessage(initialState?.systemPrompt,tools.map(toToolDeclaration));return messages[0]?.role!=="system"&&initialMessage&&messages.unshift(initialMessage),{get systemPrompt(){return getCurrentSystemPrompt(messages)},model:initialState?.model??DEFAULT_MODEL,thinkingLevel:initialState?.thinkingLevel??"off",get tools(){return tools},set tools(nextTools){tools=nextTools.slice()},get messages(){return messages},set messages(nextMessages){messages=nextMessages.slice()},isStreaming:!1,streamingMessage:void 0,pendingToolCalls:new Set,errorMessage:void 0}}var PendingMessageQueue=class{messages=[];mode;constructor(mode){this.mode=mode}enqueue(message){this.messages.push(message)}hasItems(){return this.messages.length>0}peek(){if(this.mode==="all")return this.messages.slice();let first=this.messages[0];return first?[first]:[]}drain(){let drained=this.peek();return this.messages=this.messages.slice(drained.length),drained}clear(){this.messages=[]}},Agent=class{_state;listeners=new Set;steeringQueue;followUpQueue;convertToLlm;transformContext;streamFunction;getApiKey;onPayload;onResponse;onProviderStreamEvent;beforeToolCall;afterToolCall;finishTurn;prepareRequest;prepareNextTurn;prepareNextTurnWithContext;activeRun;sessionId;thinkingBudgets;transport;maxRetryDelayMs;toolExecution;constructor(options){let runtimeOptions=options??{};this._state=createMutableAgentState(runtimeOptions.initialState),this.convertToLlm=runtimeOptions.convertToLlm??defaultConvertToLlm,this.transformContext=runtimeOptions.transformContext,this.streamFunction=runtimeOptions.streamFn??getDefaultStreamFn(),this.getApiKey=runtimeOptions.getApiKey,this.onPayload=runtimeOptions.onPayload,this.onResponse=runtimeOptions.onResponse,this.onProviderStreamEvent=runtimeOptions.onProviderStreamEvent,this.beforeToolCall=runtimeOptions.beforeToolCall,this.afterToolCall=runtimeOptions.afterToolCall,this.finishTurn=runtimeOptions.finishTurn,this.prepareRequest=runtimeOptions.prepareRequest,this.prepareNextTurn=runtimeOptions.prepareNextTurn,this.prepareNextTurnWithContext=runtimeOptions.prepareNextTurnWithContext,this.steeringQueue=new PendingMessageQueue(runtimeOptions.steeringMode??"one-at-a-time"),this.followUpQueue=new PendingMessageQueue(runtimeOptions.followUpMode??"one-at-a-time"),this.sessionId=runtimeOptions.sessionId,this.thinkingBudgets=runtimeOptions.thinkingBudgets,this.transport=runtimeOptions.transport??"auto",this.maxRetryDelayMs=runtimeOptions.maxRetryDelayMs,this.toolExecution=runtimeOptions.toolExecution??"parallel"}subscribe(listener){return this.listeners.add(listener),()=>this.listeners.delete(listener)}get state(){return this._state}set steeringMode(mode){this.steeringQueue.mode=mode}get steeringMode(){return this.steeringQueue.mode}set followUpMode(mode){this.followUpQueue.mode=mode}get followUpMode(){return this.followUpQueue.mode}steer(message){this.steeringQueue.enqueue(message)}followUp(message){this.followUpQueue.enqueue(message)}clearSteeringQueue(){this.steeringQueue.clear()}clearFollowUpQueue(){this.followUpQueue.clear()}clearAllQueues(){this.clearSteeringQueue(),this.clearFollowUpQueue()}hasQueuedMessages(){return this.steeringQueue.hasItems()||this.followUpQueue.hasItems()}peekQueuedMessages(){let steering=this.steeringQueue.peek();return steering.length>0?steering:this.followUpQueue.peek()}get signal(){return this.activeRun?.abortController.signal}abort(){this.activeRun?.abortController.abort()}waitForIdle(){return this.activeRun?.promise??Promise.resolve()}reset(){if(this.activeRun)throw new Error("Agent is already processing. Wait for completion before resetting.");let baseline=getCurrentSystemMessage(this._state.messages);this._state.messages=baseline?[baseline]:[],this._state.isStreaming=!1,this._state.streamingMessage=void 0,this._state.pendingToolCalls=new Set,this._state.errorMessage=void 0,this.clearFollowUpQueue(),this.clearSteeringQueue()}async prompt(input2,images){if(this.activeRun)throw new Error("Agent is already processing a prompt. Use steer() or followUp() to queue messages, or wait for completion.");let messages=this.normalizePromptInput(input2,images);await this.runPromptMessages(messages)}async continue(){if(this.activeRun)throw new Error("Agent is already processing. Wait for completion before continuing.");let lastMessage=this._state.messages[this._state.messages.length-1];if(!lastMessage||this._state.messages.every(message=>message.role==="system"))throw new Error("No messages to continue from");if(lastMessage.role==="assistant"){let queuedSteering=this.steeringQueue.drain();if(queuedSteering.length>0){await this.runPromptMessages(queuedSteering,{skipInitialSteeringPoll:!0});return}let queuedFollowUps=this.followUpQueue.drain();if(queuedFollowUps.length>0){await this.runPromptMessages(queuedFollowUps);return}throw new Error("Cannot continue from message role: assistant")}await this.runContinuation()}normalizePromptInput(input2,images){if(Array.isArray(input2))return input2;if(typeof input2!="string")return[input2];let content=[{type:"text",text:input2}];return images&&images.length>0&&content.push(...images),[{role:"user",content,timestamp:Date.now()}]}async runPromptMessages(messages,options={}){await this.runWithLifecycle(async signal=>{await runAgentLoop(messages,this.createContextSnapshot(),this.createLoopConfig(options),event=>this.processEvents(event),signal,this.streamFunction)})}async runContinuation(){await this.runWithLifecycle(async signal=>{await runAgentLoopContinue(this.createContextSnapshot(),this.createLoopConfig(),event=>this.processEvents(event),signal,this.streamFunction)})}createContextSnapshot(){return{messages:this._state.messages.slice(),tools:this._state.tools.slice()}}createLoopConfig(options={}){let skipInitialSteeringPoll=options.skipInitialSteeringPoll===!0;return{model:this._state.model,reasoning:this._state.thinkingLevel==="off"?void 0:this._state.thinkingLevel,sessionId:this.sessionId,onPayload:this.onPayload,onResponse:this.onResponse,onProviderStreamEvent:this.onProviderStreamEvent,transport:this.transport,thinkingBudgets:this.thinkingBudgets,maxRetryDelayMs:this.maxRetryDelayMs,toolExecution:this.toolExecution,beforeToolCall:this.beforeToolCall,afterToolCall:this.afterToolCall,finishTurn:this.finishTurn,prepareRequest:this.prepareRequest,prepareNextTurn:this.prepareNextTurnWithContext||this.prepareNextTurn?async context=>this.prepareNextTurnWithContext?await this.prepareNextTurnWithContext(context,this.signal):await this.prepareNextTurn?.(this.signal):void 0,convertToLlm:this.convertToLlm,transformContext:this.transformContext,getApiKey:this.getApiKey,getSteeringMessages:async()=>skipInitialSteeringPoll?(skipInitialSteeringPoll=!1,[]):this.steeringQueue.drain(),getFollowUpMessages:async()=>this.followUpQueue.drain()}}async runWithLifecycle(executor){if(this.activeRun)throw new Error("Agent is already processing.");let abortController=new AbortController,resolvePromise=()=>{},promise=new Promise(resolve17=>{resolvePromise=resolve17});this.activeRun={promise,resolve:resolvePromise,abortController},this._state.isStreaming=!0,this._state.streamingMessage=void 0,this._state.errorMessage=void 0;try{await executor(abortController.signal)}catch(error){await this.handleRunFailure(error,abortController.signal.aborted)}finally{this.finishRun()}}async handleRunFailure(error,aborted){let failureMessage={role:"assistant",content:[{type:"text",text:""}],api:this._state.model.api,provider:this._state.model.provider,model:this._state.model.id,usage:EMPTY_USAGE,stopReason:aborted?"aborted":"error",errorMessage:error instanceof Error?error.message:String(error),timestamp:Date.now()};await this.processEvents({type:"message_start",message:failureMessage}),await this.processEvents({type:"message_end",message:failureMessage}),await this.processEvents({type:"turn_end",message:failureMessage,toolResults:[]}),await this.processEvents({type:"agent_end",messages:[failureMessage]})}finishRun(){this._state.isStreaming=!1,this._state.streamingMessage=void 0,this._state.pendingToolCalls=new Set,this.activeRun?.resolve(),this.activeRun=void 0}async processEvents(event){switch(event.type){case"message_start":this._state.streamingMessage=event.message;break;case"message_update":this._state.streamingMessage=event.message;break;case"message_end":this._state.streamingMessage=void 0,this._state.messages.push(event.message);break;case"tool_execution_start":{let pendingToolCalls=new Set(this._state.pendingToolCalls);pendingToolCalls.add(event.toolCallId),this._state.pendingToolCalls=pendingToolCalls;break}case"tool_execution_end":{let pendingToolCalls=new Set(this._state.pendingToolCalls);pendingToolCalls.delete(event.toolCallId),this._state.pendingToolCalls=pendingToolCalls;break}case"turn_end":event.message.role==="assistant"&&event.message.errorMessage&&(this._state.errorMessage=event.message.errorMessage);break;case"agent_end":this._state.streamingMessage=void 0;break}let signal=this.activeRun?.abortController.signal;if(!signal)throw new Error("Agent listener invoked outside active run");for(let listener of this.listeners)await listener(event,signal)}};function buildProxyRequestOptions(options){return{temperature:options.temperature,samplingParams:options.samplingParams,maxTokens:options.maxTokens,reasoning:options.reasoning,cacheRetention:options.cacheRetention,sessionId:options.sessionId,headers:options.headers,metadata:options.metadata,transport:options.transport,thinkingBudgets:options.thinkingBudgets,maxRetryDelayMs:options.maxRetryDelayMs}}function streamProxy(model,context,options){let stream2=createAssistantMessageEventStream();return(async()=>{let partial={role:"assistant",stopReason:"pending",content:[],api:model.api,provider:model.provider,model:model.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},timestamp:Date.now()},reader,abortHandler=()=>{reader&&reader.cancel("Request aborted by user").catch(()=>{})};options.signal&&options.signal.addEventListener("abort",abortHandler);try{let response=await fetch(`${options.proxyUrl}/api/stream`,{method:"POST",headers:{Authorization:`Bearer ${options.authToken}`,"Content-Type":"application/json"},body:JSON.stringify({model,context,options:buildProxyRequestOptions(options)}),signal:options.signal});if(!response.ok){let errorMessage5=`Proxy error: ${response.status} ${response.statusText}`;try{let errorData=await response.json();errorData.error&&(errorMessage5=`Proxy error: ${errorData.error}`)}catch{}throw new Error(errorMessage5)}reader=response.body.getReader();let decoder=new TextDecoder,buffer="",sawTerminalEvent=!1,processLine=line=>{if(!line.startsWith("data: "))return;let data=line.slice(6).trim();if(!data)return;let proxyEvent=JSON.parse(data),event=processProxyEvent(proxyEvent,partial);event&&((event.type==="done"||event.type==="error")&&(sawTerminalEvent=!0),stream2.push(event))};for(;;){let{done,value}=await reader.read();if(done)break;if(options.signal?.aborted)throw new Error("Request aborted by user");buffer+=decoder.decode(value,{stream:!0});let lines=buffer.split(`
339
+ `.substring(0,nls);return s1+separator+s2}function canConvert(input2){return input2!=null&&(typeof input2=="string"||input2.nodeType&&(input2.nodeType===1||input2.nodeType===9||input2.nodeType===11))}module.exports=TurndownService2}});var undici=__toESM(require_undici(),1);import{EventEmitter}from"node:events";import*as zlib from"node:zlib";var DEFAULT_HTTP_IDLE_TIMEOUT_MS=3e5,DEFAULT_AUTO_SELECT_FAMILY_ATTEMPT_TIMEOUT_MS=2e3,HTTP_IDLE_TIMEOUT_CHOICES=[{label:"30 sec",timeoutMs:3e4},{label:"1 min",timeoutMs:6e4},{label:"2 min",timeoutMs:12e4},{label:"5 min",timeoutMs:3e5},{label:"disabled",timeoutMs:0}],originalGlobalFetch=globalThis.fetch,installedGlobalFetch;function parseHttpIdleTimeoutMs(value){if(typeof value=="string"){let trimmed=value.trim();return trimmed.toLowerCase()==="disabled"?0:trimmed.length===0?void 0:parseHttpIdleTimeoutMs(Number(trimmed))}if(!(typeof value!="number"||!Number.isFinite(value)||value<0))return Math.floor(value)}function formatHttpIdleTimeoutMs(timeoutMs){let choice=HTTP_IDLE_TIMEOUT_CHOICES.find(item=>item.timeoutMs===timeoutMs);return choice?choice.label:`${timeoutMs/1e3} sec`}function applyHttpProxySettings(httpProxy){let proxy=httpProxy?.trim();proxy&&(process.env.HTTP_PROXY??=proxy,process.env.HTTPS_PROXY??=proxy)}var ignoreUndiciDispatcherError=_error=>{};function withUndiciErrorListener(dispatcher){return dispatcher instanceof EventEmitter&&EventEmitter.prototype.on.call(dispatcher,"error",ignoreUndiciDispatcherError),dispatcher}var omitZstdAcceptEncoding=dispatch=>(options,handler)=>{let{headers}=options;if(headers&&!Array.isArray(headers)&&!(Symbol.iterator in headers)){let name=Object.keys(headers).find(key=>key.toLowerCase()==="accept-encoding"),value=name===void 0?void 0:headers[name];if(name!==void 0&&typeof value=="string"){let codings=value.split(",").filter(coding=>coding.split(";")[0].trim().toLowerCase()!=="zstd");return dispatch({...options,headers:{...headers,[name]:codings.join(",")||"identity"}},handler)}}return dispatch(options,handler)};function createUndiciClient(origin,options){return withUndiciErrorListener(new undici.Client(origin,options))}function createUndiciOriginDispatcher(origin,options){let dispatcherOptions=options;return dispatcherOptions.connections===1?createUndiciClient(origin,dispatcherOptions):withUndiciErrorListener(new undici.Pool(origin,{...dispatcherOptions,factory:createUndiciClient}))}function configureHttpDispatcher(timeoutMs=DEFAULT_HTTP_IDLE_TIMEOUT_MS){let normalizedTimeoutMs=parseHttpIdleTimeoutMs(timeoutMs);if(normalizedTimeoutMs===void 0)throw new Error(`Invalid HTTP idle timeout: ${String(timeoutMs)}`);let dispatcher=withUndiciErrorListener(new undici.EnvHttpProxyAgent({allowH2:!1,proxyTunnel:!0,bodyTimeout:normalizedTimeoutMs,connect:{autoSelectFamilyAttemptTimeout:DEFAULT_AUTO_SELECT_FAMILY_ATTEMPT_TIMEOUT_MS},headersTimeout:normalizedTimeoutMs,clientFactory:createUndiciClient,factory:createUndiciOriginDispatcher}));undici.setGlobalDispatcher("createZstdDecompress"in zlib?dispatcher:dispatcher.compose(omitZstdAcceptEncoding)),(installedGlobalFetch===void 0?globalThis.fetch===originalGlobalFetch:globalThis.fetch===installedGlobalFetch)&&(undici.install?.(),installedGlobalFetch=globalThis.fetch)}var src_exports={};__export(src_exports,{Agent:()=>Agent,agentLoop:()=>agentLoop,agentLoopContinue:()=>agentLoopContinue,runAgentLoop:()=>runAgentLoop,runAgentLoopContinue:()=>runAgentLoopContinue,runToolCall:()=>runToolCall,setDefaultStreamFn:()=>setDefaultStreamFn,streamProxy:()=>streamProxy});var defaultStreamFn;function setDefaultStreamFn(streamFn){defaultStreamFn=streamFn}function getDefaultStreamFn(){if(!defaultStreamFn)throw new Error("No default stream function configured. Pass streamFn explicitly or call setDefaultStreamFn().");return defaultStreamFn}function agentLoop(prompts,context,config,signal,streamFn){let stream2=createAgentStream();return runAgentLoop(prompts,context,config,async event=>{stream2.push(event)},signal,streamFn).then(messages=>{stream2.end(messages)}),stream2}function agentLoopContinue(context,config,signal,streamFn){if(context.messages.length===0)throw new Error("Cannot continue: no messages in context");if(context.messages[context.messages.length-1].role==="assistant")throw new Error("Cannot continue from message role: assistant");let stream2=createAgentStream();return runAgentLoopContinue(context,config,async event=>{stream2.push(event)},signal,streamFn).then(messages=>{stream2.end(messages)}),stream2}async function runAgentLoop(prompts,context,config,emit,signal,streamFn){let initialMessages=declareToolChanges(context,prompts),newMessages=[...initialMessages],currentContext={...context,messages:[...context.messages,...initialMessages]};await emit({type:"agent_start"}),await emit({type:"turn_start"});for(let message of initialMessages)await emit({type:"message_start",message}),await emit({type:"message_end",message});return await runLoop(currentContext,newMessages,config,signal,emit,streamFn??getDefaultStreamFn()),newMessages}async function runAgentLoopContinue(context,config,emit,signal,streamFn){if(context.messages.length===0)throw new Error("Cannot continue: no messages in context");if(context.messages[context.messages.length-1].role==="assistant")throw new Error("Cannot continue from message role: assistant");let newMessages=[],currentContext={...context};return await emit({type:"agent_start"}),await emit({type:"turn_start"}),await runLoop(currentContext,newMessages,config,signal,emit,streamFn??getDefaultStreamFn()),newMessages}function createAgentStream(){return new EventStream(event=>event.type==="agent_end",event=>event.type==="agent_end"?event.messages:[])}async function runLoop(initialContext,newMessages,initialConfig,signal,emit,streamFunction){let currentContext=initialContext,config=initialConfig,lastCompletedTurn,explicitContinuation=!1,pendingMessages=await config.getSteeringMessages?.()||[];for(;;){let hasMoreToolCalls=!0;for(;hasMoreToolCalls||pendingMessages.length>0;){let preparedMessages=[];if(lastCompletedTurn){let nextTurnSnapshot=await config.prepareNextTurn?.(lastCompletedTurn);nextTurnSnapshot&&(currentContext=nextTurnSnapshot.context??currentContext,preparedMessages=nextTurnSnapshot.messages??[],config={...config,model:nextTurnSnapshot.model??config.model,reasoning:nextTurnSnapshot.thinkingLevel===void 0?config.reasoning:nextTurnSnapshot.thinkingLevel==="off"?void 0:nextTurnSnapshot.thinkingLevel}),pendingMessages.length===0&&(pendingMessages=await config.getSteeringMessages?.()||[]),await emit({type:"turn_start"})}for(let message2 of declareToolChanges(currentContext,[...preparedMessages,...pendingMessages]))await emit({type:"message_start",message:message2}),await emit({type:"message_end",message:message2}),currentContext.messages.push(message2),newMessages.push(message2);pendingMessages=[];let requestUpdate=await config.prepareRequest?.({context:currentContext,model:config.model,thinkingLevel:config.reasoning??"off"},signal);requestUpdate&&(currentContext=requestUpdate.context??currentContext,config={...config,model:requestUpdate.model??config.model,reasoning:requestUpdate.thinkingLevel===void 0?config.reasoning:requestUpdate.thinkingLevel==="off"?void 0:requestUpdate.thinkingLevel});let message=await streamAssistantResponse(currentContext,config,signal,emit,streamFunction);if(newMessages.push(message),message.stopReason==="error"||message.stopReason==="aborted"){lastCompletedTurn={message,toolResults:[],context:currentContext,newMessages},await config.finishTurn?.(lastCompletedTurn,signal),await emit({type:"turn_end",message,toolResults:[]}),await emit({type:"agent_end",messages:newMessages});return}let toolCalls=message.content.filter(c=>c.type==="toolCall"),toolResults=[];if(hasMoreToolCalls=!1,toolCalls.length>0){let executedToolBatch=message.stopReason==="length"?await failToolCallsFromTruncatedMessage(toolCalls,emit):await executeToolCalls(currentContext,message,config,signal,emit);toolResults.push(...executedToolBatch.messages),hasMoreToolCalls=!executedToolBatch.terminate;for(let result2 of toolResults)currentContext.messages.push(result2),newMessages.push(result2)}lastCompletedTurn={message,toolResults,context:currentContext,newMessages};let decision=await config.finishTurn?.(lastCompletedTurn,signal);if(await emit({type:"turn_end",message,toolResults}),decision?.action==="end"){await emit({type:"agent_end",messages:newMessages});return}explicitContinuation=decision?.action==="continue",pendingMessages=await config.getSteeringMessages?.()||[],(hasMoreToolCalls||pendingMessages.length>0)&&(explicitContinuation=!1)}let followUpMessages=await config.getFollowUpMessages?.()||[];if(followUpMessages.length>0){explicitContinuation=!1,pendingMessages=followUpMessages;continue}if(explicitContinuation){explicitContinuation=!1;continue}break}await emit({type:"agent_end",messages:newMessages})}function declareToolChanges(context,pendingMessages){let systemIndex=-1;for(let i=pendingMessages.length-1;i>=0;i--)if(pendingMessages[i].role==="system"){systemIndex=i;break}let pending=pendingMessages[systemIndex],baseline=pending?pendingMessages.map((message,index2)=>index2===systemIndex?withToolChanges(pending,NO_CHANGES):message):pendingMessages,changes=getToolStateChanges(getCurrentTools([...context.messages,...baseline]),(context.tools??[]).map(toToolDeclaration)),unchanged=changes.toolsAdded.length===0&&changes.toolsRemoved.length===0;if(pending)return unchanged&&!pending.toolsAdded?.length&&!pending.toolsRemoved?.length?pendingMessages:baseline.map((message,index2)=>index2===systemIndex?withToolChanges(pending,changes):message);if(unchanged)return pendingMessages;let update=withToolChanges({role:"system",content:"",timestamp:Date.now()},changes),insertIndex=pendingMessages.findIndex(message=>message.role!=="system"),index=insertIndex===-1?pendingMessages.length:insertIndex;return[...pendingMessages.slice(0,index),update,...pendingMessages.slice(index)]}var NO_CHANGES={toolsAdded:[],toolsRemoved:[]};function withToolChanges(message,{toolsAdded,toolsRemoved}){let{toolsAdded:_added,toolsRemoved:_removed,...rest}=message;return{...rest,...toolsAdded.length>0?{toolsAdded}:{},...toolsRemoved.length>0?{toolsRemoved}:{}}}async function streamAssistantResponse(context,config,signal,emit,streamFunction){let messages=context.messages;config.transformContext&&(messages=await config.transformContext(messages,signal));let llmMessages=await config.convertToLlm(messages),llmContext=normalizeContext({messages:llmMessages}),resolvedApiKey=(config.getApiKey?await config.getApiKey(config.model.provider):void 0)||config.apiKey,response=await streamFunction(config.model,llmContext,{...config,apiKey:resolvedApiKey,signal}),result2=async()=>Object.assign(await response.result(),{thinkingLevel:config.reasoning??"off"}),partialMessage=null,addedPartial=!1;for await(let event of response)switch(event.type){case"start":partialMessage=event.partial,context.messages.push(partialMessage),addedPartial=!0,await emit({type:"message_start",message:{...partialMessage}});break;case"text_start":case"text_delta":case"text_end":case"thinking_start":case"thinking_delta":case"thinking_end":case"toolcall_start":case"toolcall_delta":case"toolcall_end":partialMessage&&(partialMessage=event.partial,context.messages[context.messages.length-1]=partialMessage,await emit({type:"message_update",assistantMessageEvent:event,message:{...partialMessage}}));break;case"done":case"error":{let finalMessage2=await result2();return addedPartial?context.messages[context.messages.length-1]=finalMessage2:context.messages.push(finalMessage2),addedPartial||await emit({type:"message_start",message:{...finalMessage2}}),await emit({type:"message_end",message:finalMessage2}),finalMessage2}}let finalMessage=await result2();return addedPartial?context.messages[context.messages.length-1]=finalMessage:(context.messages.push(finalMessage),await emit({type:"message_start",message:{...finalMessage}})),await emit({type:"message_end",message:finalMessage}),finalMessage}async function failToolCallsFromTruncatedMessage(toolCalls,emit){let messages=[];for(let toolCall of toolCalls){await emit({type:"tool_execution_start",toolCallId:toolCall.id,toolName:toolCall.name,args:toolCall.arguments});let finalized={toolCall,result:createErrorToolResult(`Tool call "${toolCall.name}" was not executed: the response hit the output token limit, so its arguments may be truncated. Re-issue the tool call with complete arguments.`),isError:!0};await emitToolExecutionEnd(finalized,emit);let toolResultMessage=createToolResultMessage(finalized);await emitToolResultMessage(toolResultMessage,emit),messages.push(toolResultMessage)}return{messages,terminate:!1}}async function executeToolCalls(currentContext,assistantMessage,config,signal,emit){let toolCalls=assistantMessage.content.filter(c=>c.type==="toolCall"),hasSequentialToolCall=toolCalls.some(tc=>currentContext.tools?.find(t=>t.name===tc.name)?.executionMode==="sequential");return config.toolExecution==="sequential"||hasSequentialToolCall?executeToolCallsSequential(currentContext,assistantMessage,toolCalls,config,signal,emit):executeToolCallsParallel(currentContext,assistantMessage,toolCalls,config,signal,emit)}async function executeToolCallsSequential(currentContext,assistantMessage,toolCalls,config,signal,emit){let finalizedCalls=[],messages=[];for(let toolCall of toolCalls){await emit({type:"tool_execution_start",toolCallId:toolCall.id,toolName:toolCall.name,args:toolCall.arguments});let preparation=await prepareToolCall(currentContext,assistantMessage,toolCall,config,signal),finalized;if(preparation.kind==="immediate")finalized={toolCall,result:preparation.result,isError:preparation.isError};else{let executed=await executePreparedToolCall(preparation,signal,emitToolExecutionUpdate(toolCall,emit));finalized=await finalizeExecutedToolCall(currentContext,assistantMessage,preparation,executed,config,signal)}await emitToolExecutionEnd(finalized,emit);let toolResultMessage=createToolResultMessage(finalized);if(await emitToolResultMessage(toolResultMessage,emit),finalizedCalls.push(finalized),messages.push(toolResultMessage),signal?.aborted)break}return{messages,terminate:shouldTerminateToolBatch(finalizedCalls)}}async function executeToolCallsParallel(currentContext,assistantMessage,toolCalls,config,signal,emit){let finalizedCalls=[];for(let toolCall of toolCalls){await emit({type:"tool_execution_start",toolCallId:toolCall.id,toolName:toolCall.name,args:toolCall.arguments});let preparation=await prepareToolCall(currentContext,assistantMessage,toolCall,config,signal);if(preparation.kind==="immediate"){let finalized={toolCall,result:preparation.result,isError:preparation.isError};if(await emitToolExecutionEnd(finalized,emit),finalizedCalls.push(finalized),signal?.aborted)break;continue}if(finalizedCalls.push(async()=>{if(signal?.aborted){let finalized2={toolCall,result:createErrorToolResult("Operation aborted"),isError:!0};return await emitToolExecutionEnd(finalized2,emit),finalized2}let executed=await executePreparedToolCall(preparation,signal,emitToolExecutionUpdate(toolCall,emit)),finalized=await finalizeExecutedToolCall(currentContext,assistantMessage,preparation,executed,config,signal);return await emitToolExecutionEnd(finalized,emit),finalized}),signal?.aborted)break}let orderedFinalizedCalls=await Promise.all(finalizedCalls.map(entry=>typeof entry=="function"?entry():Promise.resolve(entry))),messages=[];for(let finalized of orderedFinalizedCalls){let toolResultMessage=createToolResultMessage(finalized);await emitToolResultMessage(toolResultMessage,emit),messages.push(toolResultMessage)}return{messages,terminate:shouldTerminateToolBatch(orderedFinalizedCalls)}}function shouldTerminateToolBatch(finalizedCalls){return finalizedCalls.length>0&&finalizedCalls.every(finalized=>finalized.result.terminate===!0)}function prepareToolCallArguments(tool,toolCall){if(!tool.prepareArguments)return toolCall;let preparedArguments=tool.prepareArguments(toolCall.arguments);return preparedArguments===toolCall.arguments?toolCall:{...toolCall,arguments:preparedArguments}}async function prepareToolCall(currentContext,assistantMessage,toolCall,config,signal,tools=currentContext.tools??[]){let tool=tools.find(t=>t.name===toolCall.name);if(!tool)return{kind:"immediate",result:createErrorToolResult(`Tool ${toolCall.name} not found`),isError:!0};try{let preparedToolCall=prepareToolCallArguments(tool,toolCall),validatedArgs=validateToolArguments(tool,preparedToolCall);if(config.beforeToolCall){let beforeResult=await config.beforeToolCall({assistantMessage,toolCall,args:validatedArgs,context:currentContext},signal);if(signal?.aborted)return{kind:"immediate",result:createErrorToolResult("Operation aborted"),isError:!0};if(beforeResult?.block){let result2=createErrorToolResult(beforeResult.reason||"Tool execution was blocked");return beforeResult.terminate===!0&&(result2.terminate=!0),{kind:"immediate",result:result2,isError:!0}}}return signal?.aborted?{kind:"immediate",result:createErrorToolResult("Operation aborted"),isError:!0}:{kind:"prepared",toolCall,tool,args:validatedArgs}}catch(error){return{kind:"immediate",result:createErrorToolResult(error instanceof Error?error.message:String(error)),isError:!0}}}function emitToolExecutionUpdate(toolCall,emit){return partialResult=>emit({type:"tool_execution_update",toolCallId:toolCall.id,toolName:toolCall.name,args:toolCall.arguments,partialResult})}async function runToolCall(toolCall,options){let{assistantMessage,context,signal}=options,preparation=await prepareToolCall(context,assistantMessage,toolCall,options,signal,options.tools);if(preparation.kind==="immediate")return{toolCall,result:preparation.result,isError:preparation.isError};let executed=await executePreparedToolCall(preparation,signal,options.onUpdate??(()=>{}));return finalizeExecutedToolCall(context,assistantMessage,preparation,executed,options,signal)}async function executePreparedToolCall(prepared,signal,onUpdate){let updateEvents=[],acceptingUpdates=!0,startedAt=performance.now(),elapsed=()=>Math.round(performance.now()-startedAt);try{let result2=await prepared.tool.execute(prepared.toolCall.id,prepared.args,signal,partialResult=>{acceptingUpdates&&updateEvents.push(Promise.resolve(onUpdate(partialResult)))});assertJsonDetails(prepared.toolCall.name,result2.details);let durationMs=elapsed();return acceptingUpdates=!1,await Promise.all(updateEvents),{result:result2,isError:result2.isError===!0,durationMs}}catch(error){let durationMs=elapsed();return acceptingUpdates=!1,await Promise.all(updateEvents),{result:createErrorToolResult(error instanceof Error?error.message:String(error)),isError:!0,durationMs}}finally{acceptingUpdates=!1}}async function finalizeExecutedToolCall(currentContext,assistantMessage,prepared,executed,config,signal){let result2=executed.result,isError=executed.isError;if(config.afterToolCall)try{let afterResult=await config.afterToolCall({assistantMessage,toolCall:prepared.toolCall,args:prepared.args,result:result2,isError,context:currentContext},signal);if(afterResult){let structuredContent=afterResult.structuredContent??(afterResult.content?void 0:result2.structuredContent);result2={...result2,content:afterResult.content??result2.content,details:afterResult.details??result2.details,usage:afterResult.usage??result2.usage,terminate:afterResult.terminate??result2.terminate},structuredContent===void 0?delete result2.structuredContent:result2.structuredContent=structuredContent,isError=afterResult.isError??isError}}catch(error){result2=createErrorToolResult(error instanceof Error?error.message:String(error)),isError=!0}return{toolCall:prepared.toolCall,result:result2,isError,durationMs:executed.durationMs}}function createErrorToolResult(message){return{content:[{type:"text",text:message}],details:{}}}async function emitToolExecutionEnd(finalized,emit){await emit({type:"tool_execution_end",toolCallId:finalized.toolCall.id,toolName:finalized.toolCall.name,result:finalized.result,isError:finalized.isError,...finalized.durationMs===void 0?{}:{durationMs:finalized.durationMs}})}function createToolResultMessage(finalized){return{role:"toolResult",toolCallId:finalized.toolCall.id,toolName:finalized.toolCall.name,content:finalized.result.content??[],details:finalized.result.details,usage:finalized.result.usage,isError:finalized.isError,...finalized.durationMs===void 0?{}:{durationMs:finalized.durationMs},timestamp:Date.now()}}async function emitToolResultMessage(toolResultMessage,emit){await emit({type:"message_start",message:toolResultMessage}),await emit({type:"message_end",message:toolResultMessage})}function assertJsonDetails(toolName,details){if(details===void 0)return;let offending=findNonJson(details);if(offending!==void 0)throw new Error(`Tool "${toolName}" returned details that are not JSON: ${offending}`)}function defaultConvertToLlm(messages){return messages.filter(message=>message.role==="system"||message.role==="user"||message.role==="assistant"||message.role==="toolResult")}var EMPTY_USAGE={input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},DEFAULT_MODEL={id:"unknown",name:"unknown",api:"unknown",provider:"unknown",baseUrl:"",reasoning:!1,input:[],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:0,maxTokens:0};function createMutableAgentState(initialState){let tools=initialState?.tools?.slice()??[],messages=initialState?.messages?.slice()??[],initialMessage=createInitialSystemMessage(initialState?.systemPrompt,tools.map(toToolDeclaration));return messages[0]?.role!=="system"&&initialMessage&&messages.unshift(initialMessage),{get systemPrompt(){return getCurrentSystemPrompt(messages)},model:initialState?.model??DEFAULT_MODEL,thinkingLevel:initialState?.thinkingLevel??"off",get tools(){return tools},set tools(nextTools){tools=nextTools.slice()},get messages(){return messages},set messages(nextMessages){messages=nextMessages.slice()},isStreaming:!1,streamingMessage:void 0,pendingToolCalls:new Set,errorMessage:void 0}}var PendingMessageQueue=class{messages=[];mode;constructor(mode){this.mode=mode}enqueue(message){this.messages.push(message)}hasItems(){return this.messages.length>0}peek(){if(this.mode==="all")return this.messages.slice();let first=this.messages[0];return first?[first]:[]}drain(){let drained=this.peek();return this.messages=this.messages.slice(drained.length),drained}clear(){this.messages=[]}},Agent=class{_state;listeners=new Set;steeringQueue;followUpQueue;convertToLlm;transformContext;streamFunction;getApiKey;onPayload;onResponse;onProviderStreamEvent;beforeToolCall;afterToolCall;finishTurn;prepareRequest;prepareNextTurn;prepareNextTurnWithContext;activeRun;sessionId;thinkingBudgets;transport;maxRetryDelayMs;toolExecution;constructor(options){let runtimeOptions=options??{};this._state=createMutableAgentState(runtimeOptions.initialState),this.convertToLlm=runtimeOptions.convertToLlm??defaultConvertToLlm,this.transformContext=runtimeOptions.transformContext,this.streamFunction=runtimeOptions.streamFn??getDefaultStreamFn(),this.getApiKey=runtimeOptions.getApiKey,this.onPayload=runtimeOptions.onPayload,this.onResponse=runtimeOptions.onResponse,this.onProviderStreamEvent=runtimeOptions.onProviderStreamEvent,this.beforeToolCall=runtimeOptions.beforeToolCall,this.afterToolCall=runtimeOptions.afterToolCall,this.finishTurn=runtimeOptions.finishTurn,this.prepareRequest=runtimeOptions.prepareRequest,this.prepareNextTurn=runtimeOptions.prepareNextTurn,this.prepareNextTurnWithContext=runtimeOptions.prepareNextTurnWithContext,this.steeringQueue=new PendingMessageQueue(runtimeOptions.steeringMode??"one-at-a-time"),this.followUpQueue=new PendingMessageQueue(runtimeOptions.followUpMode??"one-at-a-time"),this.sessionId=runtimeOptions.sessionId,this.thinkingBudgets=runtimeOptions.thinkingBudgets,this.transport=runtimeOptions.transport??"auto",this.maxRetryDelayMs=runtimeOptions.maxRetryDelayMs,this.toolExecution=runtimeOptions.toolExecution??"parallel"}subscribe(listener){return this.listeners.add(listener),()=>this.listeners.delete(listener)}get state(){return this._state}set steeringMode(mode){this.steeringQueue.mode=mode}get steeringMode(){return this.steeringQueue.mode}set followUpMode(mode){this.followUpQueue.mode=mode}get followUpMode(){return this.followUpQueue.mode}steer(message){this.steeringQueue.enqueue(message)}followUp(message){this.followUpQueue.enqueue(message)}clearSteeringQueue(){this.steeringQueue.clear()}clearFollowUpQueue(){this.followUpQueue.clear()}clearAllQueues(){this.clearSteeringQueue(),this.clearFollowUpQueue()}hasQueuedMessages(){return this.steeringQueue.hasItems()||this.followUpQueue.hasItems()}peekQueuedMessages(){let steering=this.steeringQueue.peek();return steering.length>0?steering:this.followUpQueue.peek()}get signal(){return this.activeRun?.abortController.signal}abort(){this.activeRun?.abortController.abort()}waitForIdle(){return this.activeRun?.promise??Promise.resolve()}reset(){if(this.activeRun)throw new Error("Agent is already processing. Wait for completion before resetting.");let baseline=getCurrentSystemMessage(this._state.messages);this._state.messages=baseline?[baseline]:[],this._state.isStreaming=!1,this._state.streamingMessage=void 0,this._state.pendingToolCalls=new Set,this._state.errorMessage=void 0,this.clearFollowUpQueue(),this.clearSteeringQueue()}async prompt(input2,images){if(this.activeRun)throw new Error("Agent is already processing a prompt. Use steer() or followUp() to queue messages, or wait for completion.");let messages=this.normalizePromptInput(input2,images);await this.runPromptMessages(messages)}async continue(){if(this.activeRun)throw new Error("Agent is already processing. Wait for completion before continuing.");let lastMessage=this._state.messages[this._state.messages.length-1];if(!lastMessage||this._state.messages.every(message=>message.role==="system"))throw new Error("No messages to continue from");if(lastMessage.role==="assistant"){let queuedSteering=this.steeringQueue.drain();if(queuedSteering.length>0){await this.runPromptMessages(queuedSteering,{skipInitialSteeringPoll:!0});return}let queuedFollowUps=this.followUpQueue.drain();if(queuedFollowUps.length>0){await this.runPromptMessages(queuedFollowUps);return}throw new Error("Cannot continue from message role: assistant")}await this.runContinuation()}normalizePromptInput(input2,images){if(Array.isArray(input2))return input2;if(typeof input2!="string")return[input2];let content=[{type:"text",text:input2}];return images&&images.length>0&&content.push(...images),[{role:"user",content,timestamp:Date.now()}]}async runPromptMessages(messages,options={}){await this.runWithLifecycle(async signal=>{await runAgentLoop(messages,this.createContextSnapshot(),this.createLoopConfig(options),event=>this.processEvents(event),signal,this.streamFunction)})}async runContinuation(){await this.runWithLifecycle(async signal=>{await runAgentLoopContinue(this.createContextSnapshot(),this.createLoopConfig(),event=>this.processEvents(event),signal,this.streamFunction)})}createContextSnapshot(){return{messages:this._state.messages.slice(),tools:this._state.tools.slice()}}createLoopConfig(options={}){let skipInitialSteeringPoll=options.skipInitialSteeringPoll===!0;return{model:this._state.model,reasoning:this._state.thinkingLevel==="off"?void 0:this._state.thinkingLevel,sessionId:this.sessionId,onPayload:this.onPayload,onResponse:this.onResponse,onProviderStreamEvent:this.onProviderStreamEvent,transport:this.transport,thinkingBudgets:this.thinkingBudgets,maxRetryDelayMs:this.maxRetryDelayMs,toolExecution:this.toolExecution,beforeToolCall:this.beforeToolCall,afterToolCall:this.afterToolCall,finishTurn:this.finishTurn,prepareRequest:this.prepareRequest,prepareNextTurn:this.prepareNextTurnWithContext||this.prepareNextTurn?async context=>this.prepareNextTurnWithContext?await this.prepareNextTurnWithContext(context,this.signal):await this.prepareNextTurn?.(this.signal):void 0,convertToLlm:this.convertToLlm,transformContext:this.transformContext,getApiKey:this.getApiKey,getSteeringMessages:async()=>skipInitialSteeringPoll?(skipInitialSteeringPoll=!1,[]):this.steeringQueue.drain(),getFollowUpMessages:async()=>this.followUpQueue.drain()}}async runWithLifecycle(executor){if(this.activeRun)throw new Error("Agent is already processing.");let abortController=new AbortController,resolvePromise=()=>{},promise=new Promise(resolve17=>{resolvePromise=resolve17});this.activeRun={promise,resolve:resolvePromise,abortController},this._state.isStreaming=!0,this._state.streamingMessage=void 0,this._state.errorMessage=void 0;try{await executor(abortController.signal)}catch(error){await this.handleRunFailure(error,abortController.signal.aborted)}finally{this.finishRun()}}async handleRunFailure(error,aborted){let failureMessage={role:"assistant",content:[{type:"text",text:""}],api:this._state.model.api,provider:this._state.model.provider,model:this._state.model.id,usage:EMPTY_USAGE,stopReason:aborted?"aborted":"error",errorMessage:error instanceof Error?error.message:String(error),timestamp:Date.now()};await this.processEvents({type:"message_start",message:failureMessage}),await this.processEvents({type:"message_end",message:failureMessage}),await this.processEvents({type:"turn_end",message:failureMessage,toolResults:[]}),await this.processEvents({type:"agent_end",messages:[failureMessage]})}finishRun(){this._state.isStreaming=!1,this._state.streamingMessage=void 0,this._state.pendingToolCalls=new Set,this.activeRun?.resolve(),this.activeRun=void 0}async processEvents(event){switch(event.type){case"message_start":this._state.streamingMessage=event.message;break;case"message_update":this._state.streamingMessage=event.message;break;case"message_end":this._state.streamingMessage=void 0,this._state.messages.push(event.message);break;case"tool_execution_start":{let pendingToolCalls=new Set(this._state.pendingToolCalls);pendingToolCalls.add(event.toolCallId),this._state.pendingToolCalls=pendingToolCalls;break}case"tool_execution_end":{let pendingToolCalls=new Set(this._state.pendingToolCalls);pendingToolCalls.delete(event.toolCallId),this._state.pendingToolCalls=pendingToolCalls;break}case"turn_end":event.message.role==="assistant"&&event.message.errorMessage&&(this._state.errorMessage=event.message.errorMessage);break;case"agent_end":this._state.streamingMessage=void 0;break}let signal=this.activeRun?.abortController.signal;if(!signal)throw new Error("Agent listener invoked outside active run");for(let listener of this.listeners)await listener(event,signal)}};function buildProxyRequestOptions(options){return{temperature:options.temperature,samplingParams:options.samplingParams,maxTokens:options.maxTokens,reasoning:options.reasoning,cacheRetention:options.cacheRetention,sessionId:options.sessionId,headers:options.headers,metadata:options.metadata,transport:options.transport,thinkingBudgets:options.thinkingBudgets,maxRetryDelayMs:options.maxRetryDelayMs}}function streamProxy(model,context,options){let stream2=createAssistantMessageEventStream();return(async()=>{let partial={role:"assistant",stopReason:"pending",content:[],api:model.api,provider:model.provider,model:model.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},timestamp:Date.now()},reader,abortHandler=()=>{reader&&reader.cancel("Request aborted by user").catch(()=>{})};options.signal&&options.signal.addEventListener("abort",abortHandler);try{let response=await fetch(`${options.proxyUrl}/api/stream`,{method:"POST",headers:{Authorization:`Bearer ${options.authToken}`,"Content-Type":"application/json"},body:JSON.stringify({model,context,options:buildProxyRequestOptions(options)}),signal:options.signal});if(!response.ok){let errorMessage5=`Proxy error: ${response.status} ${response.statusText}`;try{let errorData=await response.json();errorData.error&&(errorMessage5=`Proxy error: ${errorData.error}`)}catch{}throw new Error(errorMessage5)}reader=response.body.getReader();let decoder=new TextDecoder,buffer="",sawTerminalEvent=!1,processLine=line=>{if(!line.startsWith("data: "))return;let data=line.slice(6).trim();if(!data)return;let proxyEvent=JSON.parse(data),event=processProxyEvent(proxyEvent,partial);event&&((event.type==="done"||event.type==="error")&&(sawTerminalEvent=!0),stream2.push(event))};for(;;){let{done,value}=await reader.read();if(done)break;if(options.signal?.aborted)throw new Error("Request aborted by user");buffer+=decoder.decode(value,{stream:!0});let lines=buffer.split(`
340
340
  `);buffer=lines.pop()||"";for(let line of lines)processLine(line)}if(options.signal?.aborted)throw new Error("Request aborted by user");buffer+=decoder.decode(),buffer&&processLine(buffer),sawTerminalEvent||(partial.stopReason="error",partial.errorMessage="Connection closed by proxy server before the response completed",stream2.push({type:"error",reason:"error",error:partial})),stream2.end()}catch(error){let errorMessage5=error instanceof Error?error.message:String(error),reason=options.signal?.aborted?"aborted":"error";partial.stopReason=reason,partial.errorMessage=errorMessage5,stream2.push({type:"error",reason,error:partial}),stream2.end()}finally{options.signal&&options.signal.removeEventListener("abort",abortHandler)}})(),stream2}function processProxyEvent(proxyEvent,partial){switch(proxyEvent.type){case"start":return{type:"start",partial};case"text_start":return partial.content[proxyEvent.contentIndex]={type:"text",text:""},{type:"text_start",contentIndex:proxyEvent.contentIndex,partial};case"text_delta":{let content=partial.content[proxyEvent.contentIndex];if(content?.type==="text")return content.text+=proxyEvent.delta,{type:"text_delta",contentIndex:proxyEvent.contentIndex,delta:proxyEvent.delta,partial};throw new Error("Received text_delta for non-text content")}case"text_end":{let content=partial.content[proxyEvent.contentIndex];if(content?.type==="text")return content.textSignature=proxyEvent.contentSignature,{type:"text_end",contentIndex:proxyEvent.contentIndex,content:content.text,partial};throw new Error("Received text_end for non-text content")}case"thinking_start":return partial.content[proxyEvent.contentIndex]={type:"thinking",thinking:""},{type:"thinking_start",contentIndex:proxyEvent.contentIndex,partial};case"thinking_delta":{let content=partial.content[proxyEvent.contentIndex];if(content?.type==="thinking")return content.thinking+=proxyEvent.delta,{type:"thinking_delta",contentIndex:proxyEvent.contentIndex,delta:proxyEvent.delta,partial};throw new Error("Received thinking_delta for non-thinking content")}case"thinking_end":{let content=partial.content[proxyEvent.contentIndex];if(content?.type==="thinking")return content.thinkingSignature=proxyEvent.contentSignature,{type:"thinking_end",contentIndex:proxyEvent.contentIndex,content:content.thinking,partial};throw new Error("Received thinking_end for non-thinking content")}case"toolcall_start":return partial.content[proxyEvent.contentIndex]={type:"toolCall",id:proxyEvent.id,name:proxyEvent.toolName,arguments:{},partialJson:""},{type:"toolcall_start",contentIndex:proxyEvent.contentIndex,partial};case"toolcall_delta":{let content=partial.content[proxyEvent.contentIndex];if(content?.type==="toolCall")return content.partialJson+=proxyEvent.delta,content.arguments=parseStreamingJson(content.partialJson)||{},partial.content[proxyEvent.contentIndex]={...content},{type:"toolcall_delta",contentIndex:proxyEvent.contentIndex,delta:proxyEvent.delta,partial};throw new Error("Received toolcall_delta for non-toolCall content")}case"toolcall_end":{let content=partial.content[proxyEvent.contentIndex];return content?.type==="toolCall"?(Object.assign(content,proxyEvent.toolCall),delete content.partialJson,{type:"toolcall_end",contentIndex:proxyEvent.contentIndex,toolCall:content,partial}):void 0}case"done":return partial.stopReason=proxyEvent.reason,partial.usage=proxyEvent.usage,proxyEvent.providerThinkingLevel!==void 0&&(partial.providerThinkingLevel=proxyEvent.providerThinkingLevel),{type:"done",reason:proxyEvent.reason,message:partial};case"error":return partial.stopReason=proxyEvent.reason,partial.errorMessage=proxyEvent.errorMessage,partial.usage=proxyEvent.usage,proxyEvent.providerThinkingLevel!==void 0&&(partial.providerThinkingLevel=proxyEvent.providerThinkingLevel),{type:"error",reason:proxyEvent.reason,error:partial};default:{let _exhaustiveCheck=proxyEvent;console.warn(`Unhandled proxy event type: ${proxyEvent.type}`);return}}}var src_exports3={};__export(src_exports3,{AgentSession:()=>AgentSession,AgentSessionRuntime:()=>AgentSessionRuntime,ArminComponent:()=>ArminComponent,AssistantMessageComponent:()=>AssistantMessageComponent,BashExecutionComponent:()=>BashExecutionComponent,BorderedLoader:()=>BorderedLoader,BranchSummaryMessageComponent:()=>BranchSummaryMessageComponent,CONFIG_DIR_NAME:()=>CONFIG_DIR_NAME,CURRENT_SESSION_VERSION:()=>CURRENT_SESSION_VERSION,CompactionSummaryMessageComponent:()=>CompactionSummaryMessageComponent,CredentialSynchronizationError:()=>CredentialSynchronizationError,CustomEditor:()=>CustomEditor,CustomMessageComponent:()=>CustomMessageComponent,DEFAULT_COMPACTION_SETTINGS:()=>DEFAULT_COMPACTION_SETTINGS,DEFAULT_MAX_BYTES:()=>DEFAULT_MAX_BYTES,DEFAULT_MAX_LINES:()=>DEFAULT_MAX_LINES,DefaultPackageManager:()=>DefaultPackageManager,DefaultResourceLoader:()=>DefaultResourceLoader,DynamicBorder:()=>DynamicBorder,ExtensionEditorComponent:()=>ExtensionEditorComponent,ExtensionInputComponent:()=>ExtensionInputComponent,ExtensionRunner:()=>ExtensionRunner,ExtensionSelectorComponent:()=>ExtensionSelectorComponent,ExtensionStartupError:()=>ExtensionStartupError,FooterComponent:()=>FooterComponent,InteractiveMode:()=>InteractiveMode,LinesView:()=>LinesView,LoginDialogComponent:()=>LoginDialogComponent,ModelRegistry:()=>ModelRegistry,ModelRuntime:()=>ModelRuntime,ModelSelectorComponent:()=>ModelSelectorComponent,OAuthSelectorComponent:()=>OAuthSelectorComponent,ProjectTrustStore:()=>ProjectTrustStore,RpcClient:()=>RpcClient,SessionClosedError:()=>SessionClosedError,SessionHardLinkedError:()=>SessionHardLinkedError,SessionLockLostError:()=>SessionLockLostError,SessionLockedError:()=>SessionLockedError,SessionManager:()=>SessionManager,SessionSelectorComponent:()=>SessionSelectorComponent,SettingsManager:()=>SettingsManager,SettingsSelectorComponent:()=>SettingsSelectorComponent,ShowImagesSelectorComponent:()=>ShowImagesSelectorComponent,SkillInvocationMessageComponent:()=>SkillInvocationMessageComponent,Theme:()=>Theme,ThemeSelectorComponent:()=>ThemeSelectorComponent,ThinkingSelectorComponent:()=>ThinkingSelectorComponent,ToolExecutionComponent:()=>ToolExecutionComponent,TreeSelectorComponent:()=>TreeSelectorComponent,UserMessageComponent:()=>UserMessageComponent,UserMessageSelectorComponent:()=>UserMessageSelectorComponent,VERSION:()=>VERSION,VIRTUAL_MODEL_STATE_ENTRY:()=>VIRTUAL_MODEL_STATE_ENTRY,buildContextEntries:()=>buildContextEntries,buildSessionContext:()=>buildSessionContext,buildSessionProjection:()=>buildSessionProjection,calculateContextTokens:()=>calculateContextTokens,collectEntriesForBranchSummary:()=>collectEntriesForBranchSummary,compact:()=>compact,convertToLlm:()=>convertToLlm,convertToPng:()=>convertToPng,copyToClipboard:()=>copyToClipboard,createAgentSession:()=>createAgentSession,createAgentSessionFromServices:()=>createAgentSessionFromServices,createAgentSessionRuntime:()=>createAgentSessionRuntime,createAgentSessionServices:()=>createAgentSessionServices,createBashTool:()=>createBashTool,createBashToolDefinition:()=>createBashToolDefinition,createCodemodeExtension:()=>createCodemodeExtension,createCodingTools:()=>createCodingTools,createEditTool:()=>createEditTool,createEditToolDefinition:()=>createEditToolDefinition,createEventBus:()=>createEventBus,createExtensionRuntime:()=>createExtensionRuntime,createFindTool:()=>createFindTool,createFindToolDefinition:()=>createFindToolDefinition,createGrepTool:()=>createGrepTool,createGrepToolDefinition:()=>createGrepToolDefinition,createLocalBashOperations:()=>createLocalBashOperations,createLocalPowerShellOperations:()=>createLocalPowerShellOperations,createLsTool:()=>createLsTool,createLsToolDefinition:()=>createLsToolDefinition,createMcpExtension:()=>createMcpExtension,createPowerShellTool:()=>createPowerShellTool,createPowerShellToolDefinition:()=>createPowerShellToolDefinition,createReadOnlyTools:()=>createReadOnlyTools,createReadTool:()=>createReadTool,createReadToolDefinition:()=>createReadToolDefinition,createSyntheticSourceInfo:()=>createSyntheticSourceInfo,createToolSearchExtension:()=>createToolSearchExtension,createWriteTool:()=>createWriteTool,createWriteToolDefinition:()=>createWriteToolDefinition,defineTool:()=>defineTool,detectSupportedImageMimeTypeFromFile:()=>detectSupportedImageMimeTypeFromFile,diffView:()=>diffView,discoverAndLoadExtensions:()=>discoverAndLoadExtensions,estimateTokens:()=>estimateTokens,findCutPoint:()=>findCutPoint,findTurnStartIndex:()=>findTurnStartIndex,formatDimensionNote:()=>formatDimensionNote,formatReadLineRange:()=>formatReadLineRange,formatSize:()=>formatSize,formatSkillsForPrompt:()=>formatSkillsForPrompt,generateBranchSummary:()=>generateBranchSummary,generateDiffString:()=>generateDiffString,generateSummary:()=>generateSummary,generateSummaryWithUsage:()=>generateSummaryWithUsage,generateUnifiedPatch:()=>generateUnifiedPatch,getAgentDir:()=>getAgentDir,getDocsPath:()=>getDocsPath,getExamplesPath:()=>getExamplesPath,getLanguageFromPath:()=>getLanguageFromPath,getLastAssistantUsage:()=>getLastAssistantUsage,getLatestCompactionEntry:()=>getLatestCompactionEntry,getMarkdownTheme:()=>getMarkdownTheme,getPackageDir:()=>getPackageDir,getPowerShellConfig:()=>getPowerShellConfig,getReadmePath:()=>getReadmePath,getSelectListTheme:()=>getSelectListTheme,getSettingsListTheme:()=>getSettingsListTheme,getShellConfig:()=>getShellConfig,hasTrustRequiringProjectResources:()=>hasTrustRequiringProjectResources,highlightCode:()=>highlightCode,initTheme:()=>initTheme,isBashToolResult:()=>isBashToolResult,isEditToolResult:()=>isEditToolResult,isFindToolResult:()=>isFindToolResult,isGrepToolResult:()=>isGrepToolResult,isLsToolResult:()=>isLsToolResult,isPowerShellToolResult:()=>isPowerShellToolResult,isReadToolResult:()=>isReadToolResult,isToolCallEventType:()=>isToolCallEventType,isWriteToolResult:()=>isWriteToolResult,keyHint:()=>keyHint,keyText:()=>keyText,loadProjectContextFiles:()=>loadProjectContextFiles,loadSkills:()=>loadSkills,loadSkillsFromDir:()=>loadSkillsFromDir,main:()=>main,migrateSessionEntries:()=>migrateSessionEntries,parseArgs:()=>parseArgs,parseFrontmatter:()=>parseFrontmatter,parseSessionEntries:()=>parseSessionEntries,parseSkillBlock:()=>parseSkillBlock,prepareBranchEntries:()=>prepareBranchEntries,rawKeyHint:()=>rawKeyHint,readStoredCredential:()=>readStoredCredential,renderDiff:()=>renderDiff,renderNumberedLines:()=>renderNumberedLines,resizeImage:()=>resizeImage,resolveCliModel:()=>resolveCliModel,resolveModelScopeWithDiagnostics:()=>resolveModelScopeWithDiagnostics,runPrintMode:()=>runPrintMode,runRpcMode:()=>runRpcMode,serializeConversation:()=>serializeConversation,sessionEntryToContextMessages:()=>sessionEntryToContextMessages,shouldCompact:()=>shouldCompact,stripFrontmatter:()=>stripFrontmatter,truncateHead:()=>truncateHead,truncateLine:()=>truncateLine,truncateTail:()=>truncateTail,truncateToVisualLines:()=>truncateToVisualLines,withFileMutationQueue:()=>withFileMutationQueue,wrapRegisteredTool:()=>wrapRegisteredTool,wrapRegisteredTools:()=>wrapRegisteredTools});var import_proper_lockfile=__toESM(require_proper_lockfile(),1);import{randomUUID}from"crypto";import{existsSync,mkdirSync,readFileSync,writeFileSync}from"fs";import{dirname,join}from"path";var CACHE_WARMING_MODES=["off","streaming","idle"],DEFAULT_COMPACTION_TOKEN_SETTINGS={reserveTokens:SETTINGS_DEFAULTS.compaction.reserveTokens,keepRecentTokens:SETTINGS_DEFAULTS.compaction.keepRecentTokens};function isMergeableObject(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function deepMergeObjects(base,overrides){let result2={...base};for(let key of Object.keys(overrides)){let overrideValue=overrides[key];if(overrideValue===void 0)continue;let baseValue=base[key];result2[key]=isMergeableObject(baseValue)&&isMergeableObject(overrideValue)?deepMergeObjects(baseValue,overrideValue):overrideValue}return result2}var DEFAULT_TOOL_NAMES=["read","bash","edit","write"];function isToolModifier(entry){return typeof entry=="string"&&(entry.startsWith("+")||entry.startsWith("-"))}function getToolListError(entries){let modifiers2=entries.filter(isToolModifier);if(modifiers2.length===0)return;if(modifiers2.length<entries.length)return"tool names cannot be mixed with +name or -name entries";let pattern=modifiers2.find(entry=>entry.includes("*"));if(pattern)return`+name and -name entries take exact tool names, not patterns: ${pattern}`}function applyToolModifiers(base,entries){let tools=[...base];for(let entry of entries){if(!isToolModifier(entry))continue;let name=entry.slice(1),index=tools.indexOf(name);entry.startsWith("+")&&index===-1&&name?tools.push(name):entry.startsWith("-")&&index!==-1&&tools.splice(index,1)}return tools}function mergeDefaultTools(base,overrides){return overrides===void 0?base:!Array.isArray(base)||!Array.isArray(overrides)||!overrides.every(isToolModifier)?overrides:[...base,...overrides]}function resolveDefaultTools(entries){let plain=entries.filter(entry=>!isToolModifier(entry));return applyToolModifiers(plain.length>0||entries.length===0?plain:DEFAULT_TOOL_NAMES,entries)}function deepMergeSettings(base,overrides){let merged=deepMergeObjects(base,overrides),defaultTools=mergeDefaultTools(base.defaultTools,overrides.defaultTools);return defaultTools===void 0?merged:{...merged,defaultTools}}function parseTimeoutSetting(value,settingName){let timeoutMs=parseHttpIdleTimeoutMs(value);if(timeoutMs!==void 0)return timeoutMs;if(value!==void 0)throw new Error(`Invalid ${settingName} setting: ${String(value)}`)}function toSettingsError(scope,error,path10){return{scope,...path10?{path:path10}:{},error:error instanceof Error?error:new Error(String(error))}}var FileSettingsStorage=class{globalSettingsPath;projectSettingsPath;constructor(cwd,agentDir){let resolvedCwd=resolvePath(cwd),resolvedAgentDir=resolvePath(agentDir);this.globalSettingsPath=join(resolvedAgentDir,"settings.json"),this.projectSettingsPath=join(resolvedCwd,CONFIG_DIR_NAME,"settings.json")}acquireLockSyncWithRetry(path10){let lastError;for(let attempt2=1;attempt2<=10;attempt2++)try{return import_proper_lockfile.default.lockSync(path10,{realpath:!1})}catch(error){if((typeof error=="object"&&error!==null&&"code"in error?String(error.code):void 0)!=="ELOCKED"||attempt2===10)throw error;lastError=error;let start=Date.now();for(;Date.now()-start<20;);}throw lastError??new Error("Failed to acquire settings lock")}withLock(scope,fn){let path10=scope==="global"?this.globalSettingsPath:this.projectSettingsPath,dir=dirname(path10),release2;try{let fileExists2=existsSync(path10);fileExists2&&(release2=this.acquireLockSyncWithRetry(path10));let current=fileExists2?readFileSync(path10,"utf-8"):void 0,next=fn(current);next!==void 0&&(existsSync(dir)||mkdirSync(dir,{recursive:!0}),release2||(release2=this.acquireLockSyncWithRetry(path10)),writeFileSync(path10,next,"utf-8"))}finally{release2&&release2()}}},InMemorySettingsStorage=class{global;project;withLock(scope,fn){let current=scope==="global"?this.global:this.project,next=fn(current);next!==void 0&&(scope==="global"?this.global=next:this.project=next)}},SettingsManager=class _SettingsManager{storage;globalSettings;projectSettings;settings;projectTrusted;modifiedFields=new Set;modifiedNestedFields=new Map;modifiedProjectFields=new Set;modifiedProjectNestedFields=new Map;globalSettingsLoadError=null;projectSettingsLoadError=null;writeQueue=Promise.resolve();errors;settingsPaths;constructor(storage,initialGlobal,initialProject,globalLoadError=null,projectLoadError=null,initialErrors=[],projectTrusted=!0,settingsPaths={}){this.storage=storage,this.globalSettings=initialGlobal,this.projectSettings=initialProject,this.projectTrusted=projectTrusted,this.globalSettingsLoadError=globalLoadError,this.projectSettingsLoadError=projectLoadError,this.errors=[...initialErrors],this.settingsPaths=settingsPaths,this.settings=deepMergeSettings(this.globalSettings,this.projectSettings)}static create(cwd,agentDir=getAgentDir(),options={}){let resolvedCwd=resolvePath(cwd),resolvedAgentDir=resolvePath(agentDir),storage=new FileSettingsStorage(resolvedCwd,resolvedAgentDir);return _SettingsManager.fromStorageWithPaths(storage,options,{global:join(resolvedAgentDir,"settings.json"),project:join(resolvedCwd,CONFIG_DIR_NAME,"settings.json")})}static fromStorage(storage,options={}){return _SettingsManager.fromStorageWithPaths(storage,options)}static fromStorageWithPaths(storage,options,settingsPaths={}){let projectTrusted=options.projectTrusted??!0,globalLoad=_SettingsManager.tryLoadFromStorage(storage,"global"),projectLoad=_SettingsManager.tryLoadFromStorage(storage,"project",projectTrusted),initialErrors=[];return globalLoad.error&&initialErrors.push(toSettingsError("global",globalLoad.error,settingsPaths.global)),projectLoad.error&&initialErrors.push(toSettingsError("project",projectLoad.error,settingsPaths.project)),new _SettingsManager(storage,globalLoad.settings,projectLoad.settings,globalLoad.error,projectLoad.error,initialErrors,projectTrusted,settingsPaths)}static inMemory(settings={},options={}){let storage=new InMemorySettingsStorage,initialSettings=_SettingsManager.migrateSettings(structuredClone(settings));return storage.withLock("global",()=>JSON.stringify(initialSettings,null,2)),_SettingsManager.fromStorage(storage,options)}static loadFromStorage(storage,scope,projectTrusted=!0){if(scope==="project"&&!projectTrusted)return{};let content;if(storage.withLock(scope,current=>{content=current}),!content)return{};let settings=JSON.parse(stripBom(content));return _SettingsManager.migrateSettings(settings)}static tryLoadFromStorage(storage,scope,projectTrusted=!0){try{return{settings:_SettingsManager.loadFromStorage(storage,scope,projectTrusted),error:null}}catch(error){return{settings:{},error:error instanceof Error?error:new Error(String(error))}}}static migrateSettings(settings){if("queueMode"in settings&&!("steeringMode"in settings)&&(settings.steeringMode=settings.queueMode,delete settings.queueMode),!("transport"in settings)&&typeof settings.websockets=="boolean"&&(settings.transport=settings.websockets?"websocket":"sse",delete settings.websockets),"skills"in settings&&typeof settings.skills=="object"&&settings.skills!==null&&!Array.isArray(settings.skills)){let skillsSettings=settings.skills;skillsSettings.enableSkillCommands!==void 0&&settings.enableSkillCommands===void 0&&(settings.enableSkillCommands=skillsSettings.enableSkillCommands),Array.isArray(skillsSettings.customDirectories)&&skillsSettings.customDirectories.length>0?settings.skills=skillsSettings.customDirectories:delete settings.skills}if("retry"in settings&&typeof settings.retry=="object"&&settings.retry!==null&&!Array.isArray(settings.retry)){let retrySettings=settings.retry,providerSettings=typeof retrySettings.provider=="object"&&retrySettings.provider!==null?retrySettings.provider:void 0;typeof retrySettings.maxDelayMs=="number"&&(providerSettings?.maxRetryDelayMs===void 0||providerSettings?.maxRetryDelayMs===null)&&(retrySettings.provider={...providerSettings??{},maxRetryDelayMs:retrySettings.maxDelayMs}),delete retrySettings.maxDelayMs}return settings}getSettings(){return structuredClone(this.settings)}getGlobalSettings(){return structuredClone(this.globalSettings)}getProjectSettings(){return structuredClone(this.projectSettings)}isProjectTrusted(){return this.projectTrusted}setProjectTrusted(trusted){if(this.projectTrusted===trusted)return;if(this.projectTrusted=trusted,this.modifiedProjectFields.clear(),this.modifiedProjectNestedFields.clear(),!trusted){this.projectSettings={},this.setLoadError("project",null),this.settings=deepMergeSettings(this.globalSettings,this.projectSettings);return}let projectLoad=_SettingsManager.tryLoadFromStorage(this.storage,"project",trusted);this.projectSettings=projectLoad.settings,this.setLoadError("project",projectLoad.error),this.settings=deepMergeSettings(this.globalSettings,this.projectSettings)}async reload(){await this.writeQueue;let globalLoad=_SettingsManager.tryLoadFromStorage(this.storage,"global");globalLoad.error||(this.globalSettings=globalLoad.settings),this.setLoadError("global",globalLoad.error),this.modifiedFields.clear(),this.modifiedNestedFields.clear(),this.modifiedProjectFields.clear(),this.modifiedProjectNestedFields.clear();let projectLoad=_SettingsManager.tryLoadFromStorage(this.storage,"project",this.projectTrusted);projectLoad.error||(this.projectSettings=projectLoad.settings),this.setLoadError("project",projectLoad.error),this.settings=deepMergeSettings(this.globalSettings,this.projectSettings)}applyOverrides(overrides){this.settings=deepMergeSettings(this.settings,overrides)}markModified(field,nestedKey){this.modifiedFields.add(field),nestedKey&&(this.modifiedNestedFields.has(field)||this.modifiedNestedFields.set(field,new Set),this.modifiedNestedFields.get(field).add(nestedKey))}markProjectModified(field,nestedKey){this.modifiedProjectFields.add(field),nestedKey&&(this.modifiedProjectNestedFields.has(field)||this.modifiedProjectNestedFields.set(field,new Set),this.modifiedProjectNestedFields.get(field).add(nestedKey))}assertProjectTrustedForWrite(){if(!this.projectTrusted)throw new Error("Project is not trusted; refusing to write project settings")}recordError(scope,error){this.errors.push(toSettingsError(scope,error,this.settingsPaths[scope]))}setLoadError(scope,error){let superseded=scope==="global"?this.globalSettingsLoadError:this.projectSettingsLoadError;superseded&&(this.errors=this.errors.filter(entry=>entry.error!==superseded)),scope==="global"?this.globalSettingsLoadError=error:this.projectSettingsLoadError=error,error&&this.recordError(scope,error)}clearModifiedScope(scope){if(scope==="global"){this.modifiedFields.clear(),this.modifiedNestedFields.clear();return}this.modifiedProjectFields.clear(),this.modifiedProjectNestedFields.clear()}enqueueWrite(scope,task){this.writeQueue=this.writeQueue.then(()=>{scope==="project"&&this.assertProjectTrustedForWrite(),task(),this.clearModifiedScope(scope)}).catch(error=>{this.recordError(scope,error)})}cloneModifiedNestedFields(source){let snapshot=new Map;for(let[key,value]of source.entries())snapshot.set(key,new Set(value));return snapshot}persistScopedSettings(scope,snapshotSettings,modifiedFields,modifiedNestedFields){this.storage.withLock(scope,current=>{let currentFileSettings=current?_SettingsManager.migrateSettings(JSON.parse(stripBom(current))):{},mergedSettings={...currentFileSettings};for(let field of modifiedFields){let value=snapshotSettings[field];if(modifiedNestedFields.has(field)&&typeof value=="object"&&value!==null){let nestedModified=modifiedNestedFields.get(field),baseNested=currentFileSettings[field]??{},inMemoryNested=value,mergedNested={...baseNested};for(let nestedKey of nestedModified)mergedNested[nestedKey]=inMemoryNested[nestedKey];mergedSettings[field]=mergedNested}else mergedSettings[field]=value}return JSON.stringify(mergedSettings,null,2)})}save(){if(this.settings=deepMergeSettings(this.globalSettings,this.projectSettings),this.globalSettingsLoadError)return;let snapshotGlobalSettings=structuredClone(this.globalSettings),modifiedFields=new Set(this.modifiedFields),modifiedNestedFields=this.cloneModifiedNestedFields(this.modifiedNestedFields);this.enqueueWrite("global",()=>{this.persistScopedSettings("global",snapshotGlobalSettings,modifiedFields,modifiedNestedFields)})}saveProjectSettings(settings){if(this.assertProjectTrustedForWrite(),this.projectSettings=structuredClone(settings),this.settings=deepMergeSettings(this.globalSettings,this.projectSettings),this.projectSettingsLoadError)return;let snapshotProjectSettings=structuredClone(this.projectSettings),modifiedFields=new Set(this.modifiedProjectFields),modifiedNestedFields=this.cloneModifiedNestedFields(this.modifiedProjectNestedFields);this.enqueueWrite("project",()=>{this.persistScopedSettings("project",snapshotProjectSettings,modifiedFields,modifiedNestedFields)})}updateProjectSettings(field,update){this.assertProjectTrustedForWrite();let projectSettings=structuredClone(this.projectSettings);update(projectSettings),this.markProjectModified(field),this.saveProjectSettings(projectSettings)}async flush(){await this.writeQueue}drainErrors(){let drained=[...this.errors];return this.errors=[],drained}getLastChangelogVersion(){return this.settings.lastChangelogVersion}setLastChangelogVersion(version2){this.globalSettings.lastChangelogVersion=version2,this.markModified("lastChangelogVersion"),this.save()}getSessionDir(){let sessionDir=this.settings.sessionDir;return sessionDir&&normalizePath(sessionDir)}getDefaultProvider(){return this.settings.defaultProvider}getDefaultModel(){return this.settings.defaultModel}setDefaultProvider(provider){this.globalSettings.defaultProvider=provider,this.markModified("defaultProvider"),this.save()}setDefaultModel(modelId){this.globalSettings.defaultModel=modelId,this.markModified("defaultModel"),this.save()}setDefaultModelAndProvider(provider,modelId){this.globalSettings.defaultProvider=provider,this.globalSettings.defaultModel=modelId,this.markModified("defaultProvider"),this.markModified("defaultModel"),this.save()}getSteeringMode(){return this.settings.steeringMode||SETTINGS_DEFAULTS.steeringMode}setSteeringMode(mode){this.globalSettings.steeringMode=mode,this.markModified("steeringMode"),this.save()}getFollowUpMode(){return this.settings.followUpMode||SETTINGS_DEFAULTS.followUpMode}setFollowUpMode(mode){this.globalSettings.followUpMode=mode,this.markModified("followUpMode"),this.save()}getThemeSetting(){let value=this.settings.theme;if(typeof value=="string")return value}getTheme(){let theme2=this.getThemeSetting();return theme2?.includes("/")?void 0:theme2}setTheme(theme2){this.globalSettings.theme=theme2,this.markModified("theme"),this.save()}getDefaultThinkingLevel(){return this.settings.defaultThinkingLevel}setDefaultThinkingLevel(level){this.globalSettings.defaultThinkingLevel=level,this.markModified("defaultThinkingLevel"),this.save()}getModelThinkingLevel(provider,modelId){return this.settings.modelThinkingLevels?.[`${provider}/${modelId}`]}getAllModelThinkingLevels(){return{...this.settings.modelThinkingLevels??{}}}setModelThinkingLevel(provider,modelId,level){this.globalSettings.modelThinkingLevels||(this.globalSettings.modelThinkingLevels={}),this.globalSettings.modelThinkingLevels[`${provider}/${modelId}`]=level,this.markModified("modelThinkingLevels"),this.save()}removeModelThinkingLevel(provider,modelId){this.globalSettings.modelThinkingLevels&&(delete this.globalSettings.modelThinkingLevels[`${provider}/${modelId}`],Object.keys(this.globalSettings.modelThinkingLevels).length===0&&delete this.globalSettings.modelThinkingLevels,this.markModified("modelThinkingLevels"),this.save())}getTransport(){return this.settings.transport??SETTINGS_DEFAULTS.transport}setTransport(transport){this.globalSettings.transport=transport,this.markModified("transport"),this.save()}getSessionShareDestination(){let destination=this.settings.sessionShareDestination;return destination==="gist"||destination==="radius"?destination:SETTINGS_DEFAULTS.sessionShareDestination}setSessionShareDestination(destination){this.globalSettings.sessionShareDestination=destination,this.markModified("sessionShareDestination"),this.save()}getCompactionEnabled(){return this.settings.compaction?.enabled??SETTINGS_DEFAULTS.compaction.enabled}setCompactionEnabled(enabled){this.globalSettings.compaction||(this.globalSettings.compaction={}),this.globalSettings.compaction.enabled=enabled,this.markModified("compaction","enabled"),this.save()}getCompactionTokenSetting(field,model){let compaction=this.settings.compaction,ordinary=compaction?.[field];if(ordinary!==void 0&&(typeof ordinary!="number"||!Number.isSafeInteger(ordinary)||ordinary<0))throw new Error(`Invalid compaction.${field} setting: ${String(ordinary)}. Expected a non-negative safe integer.`);let modelKey=model?`${model.provider}/${model.id}`:void 0,entry=modelKey!==void 0?compaction?.modelOverrides?.[modelKey]:void 0;if(entry!==void 0&&!isMergeableObject(entry))throw new Error(`Invalid compaction.modelOverrides["${modelKey}"] setting: ${String(entry)}. Expected an object.`);let override=entry?.[field];if(override!==void 0&&(typeof override!="number"||!Number.isSafeInteger(override)||override<0))throw new Error(`Invalid compaction.modelOverrides["${modelKey}"].${field} setting: ${String(override)}. Expected a non-negative safe integer.`);return override??ordinary??DEFAULT_COMPACTION_TOKEN_SETTINGS[field]}getCompactionReserveTokens(model){return this.getCompactionTokenSetting("reserveTokens",model)}getCompactionKeepRecentTokens(model){return this.getCompactionTokenSetting("keepRecentTokens",model)}getCompactionSettings(model){return{enabled:this.getCompactionEnabled(),reserveTokens:this.getCompactionReserveTokens(model),keepRecentTokens:this.getCompactionKeepRecentTokens(model)}}getBranchSummarySettings(){return{reserveTokens:this.settings.branchSummary?.reserveTokens??SETTINGS_DEFAULTS.branchSummary.reserveTokens,skipPrompt:this.settings.branchSummary?.skipPrompt??SETTINGS_DEFAULTS.branchSummary.skipPrompt}}getBranchSummarySkipPrompt(){return this.settings.branchSummary?.skipPrompt??SETTINGS_DEFAULTS.branchSummary.skipPrompt}getRetryEnabled(){return this.settings.retry?.enabled??SETTINGS_DEFAULTS.retry.enabled}setRetryEnabled(enabled){this.globalSettings.retry||(this.globalSettings.retry={}),this.globalSettings.retry.enabled=enabled,this.markModified("retry","enabled"),this.save()}getRetrySettings(){return{enabled:this.getRetryEnabled(),maxRetries:this.settings.retry?.maxRetries??SETTINGS_DEFAULTS.retry.maxRetries,baseDelayMs:this.settings.retry?.baseDelayMs??SETTINGS_DEFAULTS.retry.baseDelayMs,maxAgentDelayMs:this.settings.retry?.maxAgentDelayMs??SETTINGS_DEFAULTS.retry.maxAgentDelayMs}}getHttpIdleTimeoutMs(){return parseTimeoutSetting(this.settings.httpIdleTimeoutMs,"httpIdleTimeoutMs")??DEFAULT_HTTP_IDLE_TIMEOUT_MS}setHttpIdleTimeoutMs(timeoutMs){if(!Number.isFinite(timeoutMs)||timeoutMs<0)throw new Error(`Invalid httpIdleTimeoutMs setting: ${String(timeoutMs)}`);this.globalSettings.httpIdleTimeoutMs=Math.floor(timeoutMs),this.markModified("httpIdleTimeoutMs"),this.save()}getCacheWarmingMode(){let mode=this.globalSettings.cacheWarming;return mode!==void 0&&CACHE_WARMING_MODES.includes(mode)?mode:SETTINGS_DEFAULTS.cacheWarming}setCacheWarmingMode(mode){this.globalSettings.cacheWarming=mode,this.markModified("cacheWarming"),this.save()}getProviderRetrySettings(){return{timeoutMs:this.settings.retry?.provider?.timeoutMs,maxRetries:this.settings.retry?.provider?.maxRetries,maxRetryDelayMs:this.settings.retry?.provider?.maxRetryDelayMs??SETTINGS_DEFAULTS.retry.provider.maxRetryDelayMs}}getWebSocketConnectTimeoutMs(){return parseTimeoutSetting(this.settings.websocketConnectTimeoutMs,"websocketConnectTimeoutMs")}getHideThinkingBlock(){return this.settings.hideThinkingBlock??SETTINGS_DEFAULTS.hideThinkingBlock}getShowCacheMissNotices(){return this.settings.showCacheMissNotices??SETTINGS_DEFAULTS.showCacheMissNotices}getExternalEditorCommand(){let configuredEditor=this.settings.externalEditor;if(typeof configuredEditor=="string"&&configuredEditor.trim()!=="")return configuredEditor;let environmentEditor=process.env.VISUAL||process.env.EDITOR;return environmentEditor||(process.platform==="win32"?"notepad":"nano")}setHideThinkingBlock(hide){this.globalSettings.hideThinkingBlock=hide,this.markModified("hideThinkingBlock"),this.save()}setShowCacheMissNotices(show){this.globalSettings.showCacheMissNotices=show,this.markModified("showCacheMissNotices"),this.save()}getShellPath(){let shellPath=this.settings.shellPath;return shellPath&&normalizePath(shellPath)}setShellPath(path10){this.globalSettings.shellPath=path10,this.markModified("shellPath"),this.save()}getQuietStartup(){let value=this.settings.quietStartup;return value===!0||value==="header"?value:SETTINGS_DEFAULTS.quietStartup}setQuietStartup(quiet){this.globalSettings.quietStartup=quiet,this.markModified("quietStartup"),this.save()}getDefaultProjectTrust(){let value=this.globalSettings.defaultProjectTrust;return value==="always"||value==="never"?value:SETTINGS_DEFAULTS.defaultProjectTrust}setDefaultProjectTrust(defaultProjectTrust){this.globalSettings.defaultProjectTrust=defaultProjectTrust,this.markModified("defaultProjectTrust"),this.save()}getShellCommandPrefix(){return this.settings.shellCommandPrefix}setShellCommandPrefix(prefix){this.globalSettings.shellCommandPrefix=prefix,this.markModified("shellCommandPrefix"),this.save()}getNpmCommand(){return this.settings.npmCommand?[...this.settings.npmCommand]:void 0}setNpmCommand(command){this.globalSettings.npmCommand=command?[...command]:void 0,this.markModified("npmCommand"),this.save()}getAutoUpdate(){return this.globalSettings.autoUpdate!==!1}setAutoUpdate(enabled){this.globalSettings.autoUpdate=enabled,this.markModified("autoUpdate"),this.save()}getCollapseChangelog(){return this.settings.collapseChangelog??SETTINGS_DEFAULTS.collapseChangelog}setCollapseChangelog(collapse){this.globalSettings.collapseChangelog=collapse,this.markModified("collapseChangelog"),this.save()}getEnableInstallTelemetry(){return this.settings.enableInstallTelemetry??SETTINGS_DEFAULTS.enableInstallTelemetry}setEnableInstallTelemetry(enabled){this.globalSettings.enableInstallTelemetry=enabled,this.markModified("enableInstallTelemetry"),this.save()}getEnableAnalytics(){return this.settings.enableAnalytics??SETTINGS_DEFAULTS.enableAnalytics}getTrackingId(){return this.settings.trackingId}setEnableAnalytics(enabled){this.globalSettings.enableAnalytics=enabled,this.markModified("enableAnalytics"),enabled&&!this.globalSettings.trackingId&&(this.globalSettings.trackingId=randomUUID(),this.markModified("trackingId")),this.save()}getOrCreateDeviceId(){return this.globalSettings.deviceId||(this.globalSettings.deviceId=randomUUID(),this.markModified("deviceId"),this.save()),this.globalSettings.deviceId}getPackages(){return[...this.settings.packages??[]]}setPackages(packages){this.globalSettings.packages=packages,this.markModified("packages"),this.save()}setProjectPackages(packages){this.updateProjectSettings("packages",settings=>{settings.packages=packages})}getExtensionPaths(){return[...this.settings.extensions??[]]}setExtensionPaths(paths){this.globalSettings.extensions=paths,this.markModified("extensions"),this.save()}setProjectExtensionPaths(paths){this.updateProjectSettings("extensions",settings=>{settings.extensions=paths})}getSkillPaths(){return[...this.settings.skills??[]]}setSkillPaths(paths){this.globalSettings.skills=paths,this.markModified("skills"),this.save()}setProjectSkillPaths(paths){this.updateProjectSettings("skills",settings=>{settings.skills=paths})}getPromptTemplatePaths(){return[...this.settings.prompts??[]]}setPromptTemplatePaths(paths){this.globalSettings.prompts=paths,this.markModified("prompts"),this.save()}setProjectPromptTemplatePaths(paths){this.updateProjectSettings("prompts",settings=>{settings.prompts=paths})}getThemePaths(){return[...this.settings.themes??[]]}setThemePaths(paths){this.globalSettings.themes=paths,this.markModified("themes"),this.save()}setProjectThemePaths(paths){this.updateProjectSettings("themes",settings=>{settings.themes=paths})}getEnableSkillCommands(){return this.settings.enableSkillCommands??SETTINGS_DEFAULTS.enableSkillCommands}setEnableSkillCommands(enabled){this.globalSettings.enableSkillCommands=enabled,this.markModified("enableSkillCommands"),this.save()}getThinkingBudgets(){return this.settings.thinkingBudgets}getTerminalCapabilityOverrides(){let terminal=this.settings.terminal,images=terminal?.images;return{...images==="kitty"||images==="iterm2"?{images}:images===!1?{images:null}:{},...typeof terminal?.trueColor=="boolean"?{trueColor:terminal.trueColor}:{},...typeof terminal?.hyperlinks=="boolean"?{hyperlinks:terminal.hyperlinks}:{}}}getShowImages(){return this.settings.terminal?.showImages??SETTINGS_DEFAULTS.terminal.showImages}setShowImages(show){this.globalSettings.terminal||(this.globalSettings.terminal={}),this.globalSettings.terminal.showImages=show,this.markModified("terminal","showImages"),this.save()}getImageWidthCells(){let width=this.settings.terminal?.imageWidthCells;return typeof width!="number"||!Number.isFinite(width)?SETTINGS_DEFAULTS.terminal.imageWidthCells:Math.max(1,Math.floor(width))}setImageWidthCells(width){this.globalSettings.terminal||(this.globalSettings.terminal={}),this.globalSettings.terminal.imageWidthCells=Math.max(1,Math.floor(width)),this.markModified("terminal","imageWidthCells"),this.save()}getClearOnShrink(){return this.settings.terminal?.clearOnShrink!==void 0?this.settings.terminal.clearOnShrink:process.env.KNIGHTCODE_CLEAR_ON_SHRINK==="1"?!0:SETTINGS_DEFAULTS.terminal.clearOnShrink}setClearOnShrink(enabled){this.globalSettings.terminal||(this.globalSettings.terminal={}),this.globalSettings.terminal.clearOnShrink=enabled,this.markModified("terminal","clearOnShrink"),this.save()}getShowTerminalProgress(){return this.settings.terminal?.showTerminalProgress??SETTINGS_DEFAULTS.terminal.showTerminalProgress}setShowTerminalProgress(enabled){this.globalSettings.terminal||(this.globalSettings.terminal={}),this.globalSettings.terminal.showTerminalProgress=enabled,this.markModified("terminal","showTerminalProgress"),this.save()}getTuiMode(){return this.settings.tuiMode==="regular"?"regular":SETTINGS_DEFAULTS.tuiMode}setTuiMode(mode){this.globalSettings.tuiMode=mode,this.markModified("tuiMode"),this.save()}getFullscreenExitOutput(){return this.settings.fullscreenExitOutput==="resume-hint"?"resume-hint":SETTINGS_DEFAULTS.fullscreenExitOutput}setFullscreenExitOutput(output){this.globalSettings.fullscreenExitOutput=output,this.markModified("fullscreenExitOutput"),this.save()}getFullscreenScrollbar(){let mode=this.settings.fullscreenScrollbar;return mode==="always"||mode==="hidden"?mode:SETTINGS_DEFAULTS.fullscreenScrollbar}setFullscreenScrollbar(mode){this.globalSettings.fullscreenScrollbar=mode,this.markModified("fullscreenScrollbar"),this.save()}getFullscreenCopyOnSelect(){return this.settings.fullscreenCopyOnSelect??SETTINGS_DEFAULTS.fullscreenCopyOnSelect}setFullscreenCopyOnSelect(enabled){this.globalSettings.fullscreenCopyOnSelect=enabled,this.markModified("fullscreenCopyOnSelect"),this.save()}getFullscreenWheelScrollLines(){let lines=this.settings.fullscreenWheelScrollLines;return typeof lines=="number"&&Number.isFinite(lines)?Math.max(1,Math.min(100,Math.floor(lines))):SETTINGS_DEFAULTS.fullscreenWheelScrollLines}setFullscreenWheelScrollLines(lines){this.globalSettings.fullscreenWheelScrollLines=lines==="auto"?lines:Math.max(1,Math.min(100,Math.floor(lines))),this.markModified("fullscreenWheelScrollLines"),this.save()}getImageAutoResize(){return this.settings.images?.autoResize??SETTINGS_DEFAULTS.images.autoResize}setImageAutoResize(enabled){this.globalSettings.images||(this.globalSettings.images={}),this.globalSettings.images.autoResize=enabled,this.markModified("images","autoResize"),this.save()}getBlockImages(){return this.settings.images?.blockImages??SETTINGS_DEFAULTS.images.blockImages}setBlockImages(blocked){this.globalSettings.images||(this.globalSettings.images={}),this.globalSettings.images.blockImages=blocked,this.markModified("images","blockImages"),this.save()}getEnabledModels(){return this.settings.enabledModels}getDefaultTools(){let tools=this.settings.defaultTools;if(tools!==void 0)return resolveDefaultTools(Array.isArray(tools)?tools.filter(tool=>typeof tool=="string"):[])}setEnabledModels(patterns){this.globalSettings.enabledModels=patterns,this.markModified("enabledModels"),this.save()}getDoubleEscapeAction(){return this.settings.doubleEscapeAction??SETTINGS_DEFAULTS.doubleEscapeAction}setDoubleEscapeAction(action){this.globalSettings.doubleEscapeAction=action,this.markModified("doubleEscapeAction"),this.save()}getTreeFilterMode(){let mode=this.settings.treeFilterMode;return mode&&["default","no-tools","user-only","labeled-only","all"].includes(mode)?mode:SETTINGS_DEFAULTS.treeFilterMode}setTreeFilterMode(mode){this.globalSettings.treeFilterMode=mode,this.markModified("treeFilterMode"),this.save()}getShowHardwareCursor(){return this.settings.showHardwareCursor??process.env.KNIGHTCODE_HARDWARE_CURSOR==="1"}setShowHardwareCursor(enabled){this.globalSettings.showHardwareCursor=enabled,this.markModified("showHardwareCursor"),this.save()}getEditorPaddingX(){return this.settings.editorPaddingX??SETTINGS_DEFAULTS.editorPaddingX}setEditorPaddingX(padding){this.globalSettings.editorPaddingX=Math.max(0,Math.min(3,Math.floor(padding))),this.markModified("editorPaddingX"),this.save()}getOutputPad(){return this.settings.outputPad===0?0:SETTINGS_DEFAULTS.outputPad}setOutputPad(padding){this.globalSettings.outputPad=padding,this.markModified("outputPad"),this.save()}getAutocompleteMaxVisible(){return this.settings.autocompleteMaxVisible??SETTINGS_DEFAULTS.autocompleteMaxVisible}setAutocompleteMaxVisible(maxVisible){this.globalSettings.autocompleteMaxVisible=Math.max(3,Math.min(20,Math.floor(maxVisible))),this.markModified("autocompleteMaxVisible"),this.save()}getCodeBlockIndent(){return this.settings.markdown?.codeBlockIndent??SETTINGS_DEFAULTS.markdown.codeBlockIndent}getMermaidRenderingMode(){let mode=this.settings.markdown?.mermaid;return mode==="off"||mode==="final"?mode:SETTINGS_DEFAULTS.markdown.mermaid}setMermaidRenderingMode(mode){this.globalSettings.markdown??={},this.globalSettings.markdown.mermaid=mode,this.markModified("markdown","mermaid"),this.save()}getWarnings(){return{...this.settings.warnings??{}}}setWarnings(warnings){this.globalSettings.warnings={...warnings},this.markModified("warnings"),this.save()}};var VALID_THINKING_LEVELS=["off","minimal","low","medium","high","xhigh","max"];function isValidThinkingLevel(level){return VALID_THINKING_LEVELS.includes(level)}function normalizeSessionName(value){let name=value.trim();return name.length>0?name:void 0}function parseArgs(args){let result2={messages:[],fileArgs:[],unknownFlags:new Map,diagnostics:[]};for(let i=0;i<args.length;i++){let arg=args[i];if(arg==="--"){for(let positionalArg of args.slice(i+1))positionalArg.startsWith("@")?result2.fileArgs.push(positionalArg.slice(1)):result2.messages.push(positionalArg);break}else if(arg==="--help"||arg==="-h")result2.help=!0;else if(arg==="--version"||arg==="-v")result2.version=!0;else if(arg==="--mode"){let mode=args[i+1];if(mode===void 0||mode.startsWith("-")){result2.diagnostics.push({type:"error",message:"--mode requires text, json, or rpc"});continue}if(i++,mode!=="text"&&mode!=="json"&&mode!=="rpc"){result2.diagnostics.push({type:"error",message:`Invalid mode "${mode}". Valid values: text, json, rpc`});continue}result2.mode=mode}else if(arg==="--continue"||arg==="-c")result2.continue=!0;else if(arg==="--resume"||arg==="-r")result2.resume=!0;else if(arg==="--provider"&&i+1<args.length)result2.provider=args[++i];else if(arg==="--model"&&i+1<args.length)result2.model=args[++i];else if(arg==="--api-key"&&i+1<args.length)result2.apiKey=args[++i];else if(arg==="--system-prompt"&&i+1<args.length)result2.systemPrompt=args[++i];else if(arg==="--append-system-prompt"&&i+1<args.length)result2.appendSystemPrompt=result2.appendSystemPrompt??[],result2.appendSystemPrompt.push(args[++i]);else if(arg==="--name"||arg==="-n")i+1<args.length?result2.name=args[++i]:result2.diagnostics.push({type:"error",message:"--name requires a value"});else if(arg==="--no-session")result2.noSession=!0;else if(arg==="--session"&&i+1<args.length)result2.session=args[++i];else if(arg==="--session-id"&&i+1<args.length)result2.sessionId=args[++i];else if(arg==="--fork"&&i+1<args.length)result2.fork=args[++i];else if(arg==="--session-dir"&&i+1<args.length)result2.sessionDir=args[++i];else if(arg==="--models"&&i+1<args.length)result2.models=args[++i].split(",").map(s=>s.trim()).filter(pattern=>pattern.length>0);else if(arg==="--no-tools"||arg==="-nt")result2.noTools=!0;else if(arg==="--no-builtin-tools"||arg==="-nbt")result2.noBuiltinTools=!0;else if((arg==="--tools"||arg==="-t")&&i+1<args.length){let tools=args[++i].split(",").map(s=>s.trim()).filter(name=>name.length>0),error=getToolListError(tools);error?result2.diagnostics.push({type:"error",message:`${arg}: ${error}`}):result2.tools=tools}else if((arg==="--exclude-tools"||arg==="-xt")&&i+1<args.length)result2.excludeTools=args[++i].split(",").map(s=>s.trim()).filter(name=>name.length>0);else if(arg==="--thinking"&&i+1<args.length){let level=args[++i];isValidThinkingLevel(level)?result2.thinking=level:result2.diagnostics.push({type:"warning",message:`Invalid thinking level "${level}". Valid values: ${VALID_THINKING_LEVELS.join(", ")}`})}else if(arg==="--print"||arg==="-p"){result2.print=!0;let next=args[i+1];next!==void 0&&!next.startsWith("@")&&(!next.startsWith("-")||next.startsWith("---"))&&(result2.messages.push(next),i++)}else if(arg==="--export"&&i+1<args.length)result2.export=args[++i];else if((arg==="--extension"||arg==="-e")&&i+1<args.length)result2.extensions=result2.extensions??[],result2.extensions.push(args[++i]);else if(arg==="--no-extensions"||arg==="-ne")result2.noExtensions=!0;else if(arg==="--no-mcp")result2.noMcp=!0;else if(arg==="--skill"&&i+1<args.length)result2.skills=result2.skills??[],result2.skills.push(args[++i]);else if(arg==="--prompt-template"&&i+1<args.length)result2.promptTemplates=result2.promptTemplates??[],result2.promptTemplates.push(args[++i]);else if(arg==="--theme"&&i+1<args.length)result2.themes=result2.themes??[],result2.themes.push(args[++i]);else if(arg==="--use-theme"){let themeName=args[i+1];themeName===void 0||themeName.startsWith("-")?result2.diagnostics.push({type:"error",message:"--use-theme requires a theme name"}):(result2.useTheme=themeName,i++)}else if(arg==="--no-skills"||arg==="-ns")result2.noSkills=!0;else if(arg==="--no-prompt-templates"||arg==="-np")result2.noPromptTemplates=!0;else if(arg==="--no-themes")result2.noThemes=!0;else if(arg==="--no-context-files"||arg==="-nc")result2.noContextFiles=!0;else if(arg==="--list-models")i+1<args.length&&!args[i+1].startsWith("-")&&!args[i+1].startsWith("@")?result2.listModels=args[++i]:result2.listModels=!0;else if(arg==="--tui-mode"){let mode=args[i+1];mode==="regular"||mode==="fullscreen"?(result2.tuiMode=mode,i++):mode===void 0||mode.startsWith("-")?result2.diagnostics.push({type:"error",message:"--tui-mode requires regular or fullscreen"}):(i++,result2.diagnostics.push({type:"error",message:`Invalid TUI mode "${mode}". Valid values: regular, fullscreen`}))}else if(arg==="--verbose")result2.verbose=!0;else if(arg==="--approve"||arg==="-a")result2.projectTrustOverride=!0;else if(arg==="--no-approve"||arg==="-na")result2.projectTrustOverride=!1;else if(arg==="--offline")result2.offline=!0;else if(arg.startsWith("@"))result2.fileArgs.push(arg.slice(1));else if(arg.startsWith("--")){let eqIndex=arg.indexOf("=");if(eqIndex!==-1)result2.unknownFlags.set(arg.slice(2,eqIndex),arg.slice(eqIndex+1));else{let flagName=arg.slice(2),next=args[i+1];next!==void 0&&!next.startsWith("-")&&!next.startsWith("@")?(result2.unknownFlags.set(flagName,next),i++):result2.unknownFlags.set(flagName,!0)}}else arg.startsWith("-")&&!arg.startsWith("--")?result2.diagnostics.push({type:"error",message:`Unknown option: ${arg}`}):arg.startsWith("-")||result2.messages.push(arg)}return result2}function printHelp(extensionFlags){let extensionFlagsText=extensionFlags&&extensionFlags.length>0?`
341
341
  ${source_default.bold("Extension CLI Flags:")}
342
342
  ${extensionFlags.map(flag=>{let value=flag.type==="string"?" <value>":"",description=flag.description??`Registered by ${flag.extensionPath}`;return` --${flag.name}${value}`.padEnd(30)+description}).join(`
@@ -757,7 +757,7 @@ ${conversationText}
757
757
  ${instructions2}`}],timestamp:Date.now()}],context=normalizeContext({systemPrompt:SUMMARIZATION_SYSTEM_PROMPT,messages:summarizationMessages}),response=await completeSummarization(model,context,{apiKey,headers,env,signal},streamFn,retry,callbacks);if(response.stopReason==="aborted")return{aborted:!0};let failure=getSummarizationFailure(response,"Branch summarization");if(failure)return{error:failure};if(response.content.some(block=>block.type==="toolCall"))return{error:"Branch summarization attempted to call a tool"};let summary=contentText(response.content);summary=BRANCH_SUMMARY_PREAMBLE+summary;let{readFiles,modifiedFiles}=computeFileLists(fileOps);return summary+=formatFileOperations(readFiles,modifiedFiles),{summary:summary||"No summary generated",usage:response.usage,readFiles,modifiedFiles}}var DEFAULT_THINKING_LEVEL="medium",THINKING_LEVEL_OPTIONS=["off","minimal","low","medium","high","xhigh","max"];import{existsSync as existsSync4,readFileSync as readFileSync3,writeFileSync as writeFileSync4}from"fs";import{basename as basename3,join as join6}from"path";function parseColor2(color){let hexMatch=color.match(/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/);if(hexMatch)return{r:Number.parseInt(hexMatch[1],16),g:Number.parseInt(hexMatch[2],16),b:Number.parseInt(hexMatch[3],16)};let rgbMatch=color.match(/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/);if(rgbMatch)return{r:Number.parseInt(rgbMatch[1],10),g:Number.parseInt(rgbMatch[2],10),b:Number.parseInt(rgbMatch[3],10)}}function getLuminance(r,g,b){let toLinear=c=>{let s=c/255;return s<=.03928?s/12.92:((s+.055)/1.055)**2.4};return .2126*toLinear(r)+.7152*toLinear(g)+.0722*toLinear(b)}function adjustBrightness(color,factor){let parsed=parseColor2(color);if(!parsed)return color;let adjust=c=>Math.min(255,Math.max(0,Math.round(c*factor)));return`rgb(${adjust(parsed.r)}, ${adjust(parsed.g)}, ${adjust(parsed.b)})`}function deriveExportColors(baseColor){let parsed=parseColor2(baseColor);return parsed?getLuminance(parsed.r,parsed.g,parsed.b)>.5?{pageBg:adjustBrightness(baseColor,.96),cardBg:baseColor,infoBg:`rgb(${Math.min(255,parsed.r+10)}, ${Math.min(255,parsed.g+5)}, ${Math.max(0,parsed.b-20)})`}:{pageBg:adjustBrightness(baseColor,.7),cardBg:adjustBrightness(baseColor,.85),infoBg:`rgb(${Math.min(255,parsed.r+20)}, ${Math.min(255,parsed.g+15)}, ${parsed.b})`}:{pageBg:"rgb(24, 24, 30)",cardBg:"rgb(30, 30, 36)",infoBg:"rgb(60, 55, 40)"}}function generateThemeVars(themeName){let colors=getResolvedThemeColors(themeName),lines=[];for(let[key,value]of Object.entries(colors))lines.push(`--${key}: ${value};`);let themeExport=getThemeExportColors(themeName),userMessageBg=colors.userMessageBg||"#343541",derivedColors=deriveExportColors(userMessageBg);return lines.push(`--exportPageBg: ${themeExport.pageBg??derivedColors.pageBg};`),lines.push(`--exportCardBg: ${themeExport.cardBg??derivedColors.cardBg};`),lines.push(`--exportInfoBg: ${themeExport.infoBg??derivedColors.infoBg};`),lines.join(`
758
758
  `)}function generateHtml(sessionData,themeName){let templateDir=getExportTemplateDir(),template=readFileSync3(join6(templateDir,"template.html"),"utf-8"),templateCss=readFileSync3(join6(templateDir,"template.css"),"utf-8"),templateJs=readFileSync3(join6(templateDir,"template.js"),"utf-8"),markedJs=readFileSync3(join6(templateDir,"vendor","marked.min.js"),"utf-8"),hljsJs=readFileSync3(join6(templateDir,"vendor","highlight.min.js"),"utf-8"),themeVars=generateThemeVars(themeName),colors=getResolvedThemeColors(themeName),themeExport=getThemeExportColors(themeName),derivedExportColors=deriveExportColors(colors.userMessageBg||"#343541"),bodyBg=themeExport.pageBg??derivedExportColors.pageBg,containerBg=themeExport.cardBg??derivedExportColors.cardBg,infoBg=themeExport.infoBg??derivedExportColors.infoBg,sessionDataBase64=Buffer.from(JSON.stringify(sessionData)).toString("base64"),css=templateCss.replace("{{THEME_VARS}}",themeVars).replace("{{BODY_BG}}",bodyBg).replace("{{CONTAINER_BG}}",containerBg).replace("{{INFO_BG}}",infoBg);return template.replace("{{CSS}}",css).replace("{{JS}}",templateJs).replace("{{SESSION_DATA}}",sessionDataBase64).replace("{{MARKED_JS}}",markedJs).replace("{{HIGHLIGHT_JS}}",hljsJs)}var TEMPLATE_RENDERED_TOOLS=new Set(["bash","read","write","edit","ls"]);function preRenderCustomTools(entries,toolRenderer){let renderedTools={},calls=new Map;for(let entry of entries){if(entry.type!=="message")continue;let msg=entry.message;if(msg.role==="assistant"&&Array.isArray(msg.content)){for(let block of msg.content)if(block.type==="toolCall"&&!TEMPLATE_RENDERED_TOOLS.has(block.name)){calls.set(block.id,{name:block.name,args:block.arguments});let callHtml=toolRenderer.renderCall(block.id,block.name,block.arguments);callHtml&&(renderedTools[block.id]={callHtml})}}if(msg.role==="toolResult"&&msg.toolCallId){let toolName=msg.toolName||"",existing=renderedTools[msg.toolCallId];if(existing||!TEMPLATE_RENDERED_TOOLS.has(toolName)){let rendered=toolRenderer.renderResult(msg.toolCallId,toolName,msg.content,msg.details,msg.isError||!1);if(rendered){let call=calls.get(msg.toolCallId),callHtml=call&&toolRenderer.renderCall(msg.toolCallId,call.name,call.args);renderedTools[msg.toolCallId]={...existing,...callHtml?{callHtml}:{},resultHtmlCollapsed:rendered.collapsed,resultHtmlExpanded:rendered.expanded}}}}}return renderedTools}async function exportSessionToHtml(sm,state,options){let opts=typeof options=="string"?{outputPath:options}:options||{},sessionFile=sm.getSessionFile();if(!sessionFile)throw new Error("Cannot export in-memory session to HTML");if(!existsSync4(sessionFile))throw new Error("Nothing to export yet - start a conversation first");let entries=sm.getEntries(),renderedTools;opts.toolRenderer&&(renderedTools=preRenderCustomTools(entries,opts.toolRenderer),Object.keys(renderedTools).length===0&&(renderedTools=void 0));let sessionData={header:sm.getHeader(),entries,leafId:sm.getLeafId(),systemPrompt:state?.systemPrompt,tools:state?.tools?.map(t=>({name:t.name,description:t.description,parameters:t.parameters})),renderedTools},html=generateHtml(sessionData,opts.themeName),outputPath=opts.outputPath?normalizePath(opts.outputPath):void 0;if(!outputPath){let sessionBasename=basename3(sessionFile,".jsonl");outputPath=`${APP_NAME}-session-${sessionBasename}.html`}return writeFileSync4(outputPath,html,"utf8"),outputPath}async function exportFromFile(inputPath,options){let opts=typeof options=="string"?{outputPath:options}:options||{},resolvedInputPath=resolvePath(inputPath);if(!existsSync4(resolvedInputPath))throw new Error(`File not found: ${resolvedInputPath}`);let sm=SessionManager.open(resolvedInputPath),sessionData={header:sm.getHeader(),entries:sm.getEntries(),leafId:sm.getLeafId(),systemPrompt:void 0,tools:void 0},html=generateHtml(sessionData,opts.themeName),outputPath=opts.outputPath?normalizePath(opts.outputPath):void 0;if(!outputPath){let inputBasename=basename3(resolvedInputPath,".jsonl");outputPath=`${APP_NAME}-session-${inputBasename}.html`}return writeFileSync4(outputPath,html,"utf8"),outputPath}var ANSI_COLORS=["#000000","#800000","#008000","#808000","#000080","#800080","#008080","#c0c0c0","#808080","#ff0000","#00ff00","#ffff00","#0000ff","#ff00ff","#00ffff","#ffffff"];function color256ToHex(index){if(index<16)return ANSI_COLORS[index];if(index<232){let cubeIndex=index-16,r=Math.floor(cubeIndex/36),g=Math.floor(cubeIndex%36/6),b=cubeIndex%6,toComponent=n=>n===0?0:55+n*40,toHex=n=>toComponent(n).toString(16).padStart(2,"0");return`#${toHex(r)}${toHex(g)}${toHex(b)}`}let grayHex=(8+(index-232)*10).toString(16).padStart(2,"0");return`#${grayHex}${grayHex}${grayHex}`}function escapeHtml(text){return text.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}function createEmptyStyle(){return{fg:null,bg:null,bold:!1,dim:!1,italic:!1,underline:!1}}function styleToInlineCSS(style){let parts=[];return style.fg&&parts.push(`color:${style.fg}`),style.bg&&parts.push(`background-color:${style.bg}`),style.bold&&parts.push("font-weight:bold"),style.dim&&parts.push("opacity:0.6"),style.italic&&parts.push("font-style:italic"),style.underline&&parts.push("text-decoration:underline"),parts.join(";")}function hasStyle(style){return style.fg!==null||style.bg!==null||style.bold||style.dim||style.italic||style.underline}function applySgrCode(params,style){let i=0;for(;i<params.length;){let code=params[i];if(code===0)style.fg=null,style.bg=null,style.bold=!1,style.dim=!1,style.italic=!1,style.underline=!1;else if(code===1)style.bold=!0;else if(code===2)style.dim=!0;else if(code===3)style.italic=!0;else if(code===4)style.underline=!0;else if(code===22)style.bold=!1,style.dim=!1;else if(code===23)style.italic=!1;else if(code===24)style.underline=!1;else if(code>=30&&code<=37)style.fg=ANSI_COLORS[code-30];else if(code===38){if(params[i+1]===5&&params.length>i+2)style.fg=color256ToHex(params[i+2]),i+=2;else if(params[i+1]===2&&params.length>i+4){let r=params[i+2],g=params[i+3],b=params[i+4];style.fg=`rgb(${r},${g},${b})`,i+=4}}else if(code===39)style.fg=null;else if(code>=40&&code<=47)style.bg=ANSI_COLORS[code-40];else if(code===48){if(params[i+1]===5&&params.length>i+2)style.bg=color256ToHex(params[i+2]),i+=2;else if(params[i+1]===2&&params.length>i+4){let r=params[i+2],g=params[i+3],b=params[i+4];style.bg=`rgb(${r},${g},${b})`,i+=4}}else code===49?style.bg=null:code>=90&&code<=97?style.fg=ANSI_COLORS[code-90+8]:code>=100&&code<=107&&(style.bg=ANSI_COLORS[code-100+8]);i++}}var ANSI_REGEX=/\x1b\[([\d;]*)m/g;function ansiToHtml(text){let style=createEmptyStyle(),result2="",lastIndex=0,inSpan=!1;ANSI_REGEX.lastIndex=0;let match2=ANSI_REGEX.exec(text);for(;match2!==null;){let beforeText=text.slice(lastIndex,match2.index);beforeText&&(result2+=escapeHtml(beforeText));let paramStr=match2[1],params=paramStr?paramStr.split(";").map(p=>parseInt(p,10)||0):[0];inSpan&&(result2+="</span>",inSpan=!1),applySgrCode(params,style),hasStyle(style)&&(result2+=`<span style="${styleToInlineCSS(style)}">`,inSpan=!0),lastIndex=match2.index+match2[0].length,match2=ANSI_REGEX.exec(text)}let remainingText=text.slice(lastIndex);return remainingText&&(result2+=escapeHtml(remainingText)),inSpan&&(result2+="</span>"),result2}function ansiLinesToHtml(lines){return lines.map(line=>`<div class="ansi-line">${ansiToHtml(line)||"&nbsp;"}</div>`).join("")}var ANSI_ESCAPE_REGEX=/\x1b\[[\d;]*m/g;function isBlankRenderedLine(line){return line.replace(ANSI_ESCAPE_REGEX,"").trim().length===0}function trimRenderedResultLines(lines){let start=0,end=lines.length;for(;start<end&&isBlankRenderedLine(lines[start]);)start++;for(;end>start&&isBlankRenderedLine(lines[end-1]);)end--;return lines.slice(start,end)}function createToolHtmlRenderer(deps){let{getToolRenderers,theme:theme2,cwd,width=100}=deps,renderedCallComponents=new Map,renderedResultComponents=new Map,renderedStates=new Map,renderedArgs=new Map,getState=toolCallId=>{let state=renderedStates.get(toolCallId);return state||(state={},renderedStates.set(toolCallId,state)),state},createRenderContext=(toolCallId,lastComponent,expanded,isPartial,isError)=>({args:renderedArgs.get(toolCallId),toolCallId,invalidate:()=>{},lastComponent,state:getState(toolCallId),cwd,executionStarted:!0,argsComplete:!0,isPartial,expanded,showImages:!1,isError,durationMs:void 0,outputPad:1});return{renderCall(toolCallId,toolName,args){try{renderedArgs.set(toolCallId,args);let toolDef=getToolRenderers(toolName);if(!toolDef?.renderCall)return;let component=toolDef.renderCall(args,theme2,createRenderContext(toolCallId,renderedCallComponents.get(toolCallId),!1,!0,!1));renderedCallComponents.set(toolCallId,component);let lines=component.render(width);return ansiLinesToHtml(lines)}catch{return}},renderResult(toolCallId,toolName,result2,details,isError){try{let toolDef=getToolRenderers(toolName);if(!toolDef?.renderResult)return;let agentToolResult={content:result2,details,isError},collapsedComponent=toolDef.renderResult(agentToolResult,{expanded:!1,isPartial:!1},theme2,createRenderContext(toolCallId,renderedResultComponents.get(toolCallId),!1,!1,isError));renderedResultComponents.set(toolCallId,collapsedComponent);let collapsed=ansiLinesToHtml(trimRenderedResultLines(collapsedComponent.render(width))),expandedComponent=toolDef.renderResult(agentToolResult,{expanded:!0,isPartial:!1},theme2,createRenderContext(toolCallId,renderedResultComponents.get(toolCallId),!0,!1,isError));renderedResultComponents.set(toolCallId,expandedComponent);let expanded=ansiLinesToHtml(trimRenderedResultLines(expandedComponent.render(width)));return{...collapsed&&collapsed!==expanded?{collapsed}:{},expanded}}catch{return}}}}import*as fs3 from"node:fs";import{createRequire as createRequire2}from"node:module";import*as path2 from"node:path";import{fileURLToPath as fileURLToPath2}from"node:url";import{EventEmitter as EventEmitter2}from"node:events";function createEventBus(){let emitter=new EventEmitter2;return{emit:(channel,data)=>{emitter.emit(channel,data)},on:(channel,handler)=>{let safeHandler=async data=>{try{await handler(data)}catch(err){console.error(`Event handler error (${channel}):`,err)}};return emitter.on(channel,safeHandler),()=>emitter.off(channel,safeHandler)},clear:()=>{emitter.removeAllListeners()}}}import{spawn}from"node:child_process";async function execCommand(command,args,cwd,options){return new Promise(resolve17=>{let proc=spawn(command,args,{cwd,shell:!1,stdio:["ignore","pipe","pipe"]}),stdout="",stderr="",killed=!1,timeoutId,killProcess=()=>{killed||(killed=!0,proc.kill("SIGTERM"),setTimeout(()=>{proc.killed||proc.kill("SIGKILL")},5e3))};options?.signal&&(options.signal.aborted?killProcess():options.signal.addEventListener("abort",killProcess,{once:!0})),options?.timeout&&options.timeout>0&&(timeoutId=setTimeout(()=>{killProcess()},options.timeout)),proc.stdout?.on("data",data=>{stdout+=data.toString()}),proc.stderr?.on("data",data=>{stderr+=data.toString()}),waitForChildProcess(proc).then(code=>{timeoutId&&clearTimeout(timeoutId),options?.signal&&options.signal.removeEventListener("abort",killProcess),resolve17({stdout,stderr,code:code??0,killed})}).catch(_err=>{timeoutId&&clearTimeout(timeoutId),options?.signal&&options.signal.removeEventListener("abort",killProcess),resolve17({stdout,stderr,code:1,killed})})})}import{readFileSync as readFileSync4}from"node:fs";var RESOURCE_FIELDS=["extensions","skills","prompts","themes"];function isObject(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function readKnightcodeManifest(packageJsonPath){try{let pkg=JSON.parse(stripBom(readFileSync4(packageJsonPath,"utf-8")));if(!isObject(pkg)||!isObject(pkg.knightcode))return null;let manifest={};for(let field of RESOURCE_FIELDS){let entries=pkg.knightcode[field];Array.isArray(entries)&&entries.every(entry=>typeof entry=="string")&&(manifest[field]=entries)}return manifest}catch{return null}}var BUILTIN_PATH_PREFIX="builtin:";function getSyntheticPathSource(path10){if(path10.startsWith(BUILTIN_PATH_PREFIX))return"builtin";if(path10.startsWith("<")&&path10.endsWith(">"))return path10.slice(1,-1).split(":")[0]||"temporary"}function isSyntheticPath(path10){return path10.startsWith(BUILTIN_PATH_PREFIX)||path10.startsWith("<")}function createSourceInfo(path10,metadata){return{path:path10,source:metadata.source,scope:metadata.scope,origin:metadata.origin,baseDir:metadata.baseDir}}function createSyntheticSourceInfo(path10,options){return{path:path10,source:options.source,scope:options.scope??"temporary",origin:options.origin??"top-level",baseDir:options.baseDir}}var ENABLED=process.env.KNIGHTCODE_TIMING==="1",timingNamespaces=new Map;function resetTimings(namespace="main"){ENABLED&&timingNamespaces.set(namespace,{timings:[],lastTime:Date.now()})}function time(label,namespace="main"){if(!ENABLED)return;let now=Date.now();timingNamespaces.has(namespace)||resetTimings(namespace);let timingNamespace=timingNamespaces.get(namespace);timingNamespace.timings.push({label,ms:now-timingNamespace.lastTime}),timingNamespace.lastTime=now}function printTimingGroup(title,timings){let printableTimings=timings.filter(timing=>timing.ms>=0);if(printableTimings.length!==0){console.error(`
759
759
  --- ${title} ---`);for(let t of printableTimings)console.error(` ${t.label}: ${t.ms}ms`);console.error(` TOTAL: ${printableTimings.reduce((a,b)=>a+b.ms,0)}ms`),console.error(`${"-".repeat(title.length+8)}
760
- `)}}function printTimings(){if(ENABLED)for(let[namespace,timingNamespace]of timingNamespaces)printTimingGroup(`Startup Timings: ${namespace}`,timingNamespace.timings)}var require3=createRequire2(import.meta.url),isNodeSeaBinary="sea"in process.features&&process.features.sea===!0||process.getBuiltinModule("node:sea")?.isSea()===!0,isTypeScriptSourceRuntime=!isBunBinary&&path2.extname(fileURLToPath2(import.meta.url))===".ts",usesEmbeddedModules=isBunBinary||isNodeSeaBinary||isBundledNode,createJitiPromise;function getCreateJiti(){return createJitiPromise??=(usesEmbeddedModules?import("./jiti-static-loader-NNBCFAO5.js"):import("./jiti-loader-BXVX3Y2R.js")).then(module=>module.createJiti),createJitiPromise}var virtualModulesPromise;function getVirtualModules(){return virtualModulesPromise??=import("./virtual-modules-EGJP3AJA.js").then(module=>module.VIRTUAL_MODULES),virtualModulesPromise}var _aliases=null;function getAliases(){if(_aliases)return _aliases;let __dirname=path2.dirname(fileURLToPath2(import.meta.url)),packageIndex=path2.resolve(__dirname,"../..","index.js"),typeboxEntry=require3.resolve("typebox"),typeboxCompileEntry=require3.resolve("typebox/compile"),typeboxValueEntry=require3.resolve("typebox/value"),packagesRoot=path2.resolve(__dirname,"../../../../"),resolveWorkspaceOrImport=(workspaceRelativePath,specifier)=>{let workspacePath=path2.join(packagesRoot,workspaceRelativePath);return fs3.existsSync(workspacePath)?workspacePath:fileURLToPath2(import.meta.resolve(specifier))},knightCliEntry=packageIndex,knightAgentEntry=resolveWorkspaceOrImport("agent/dist/index.js","@knightcode/agent"),knightTuiEntry=resolveWorkspaceOrImport("tui/dist/index.js","@knightcode/tui"),knightAiCompatEntry=resolveWorkspaceOrImport("ai/dist/compat.js","@knightcode/ai/compat"),knightAiOauthEntry=resolveWorkspaceOrImport("ai/dist/oauth.js","@knightcode/ai/oauth"),knightAiProvidersEntry=resolveWorkspaceOrImport("ai/dist/providers/all.js","@knightcode/ai/providers/all");return _aliases={"@knightcodeai/cli":knightCliEntry,"@knightcode/agent":knightAgentEntry,"@knightcode/tui":knightTuiEntry,"@knightcode/ai/providers/all":knightAiProvidersEntry,"@knightcode/ai/compat":knightAiCompatEntry,"@knightcode/ai/oauth":knightAiOauthEntry,"@knightcode/ai":knightAiCompatEntry,typebox:typeboxEntry,"typebox/compile":typeboxCompileEntry,"typebox/value":typeboxValueEntry,"@sinclair/typebox":typeboxEntry,"@sinclair/typebox/compile":typeboxCompileEntry,"@sinclair/typebox/value":typeboxValueEntry},_aliases}var extensionCacheGeneration=0,MAX_INACTIVE_EXTENSION_FACTORIES=256,extensionCache=new Map,extensionImports=new Map,extensionCachePins=new Map,extensionCacheLeases=new WeakMap;function cacheKey(token,extensionPath){return JSON.stringify([token.generation,token.cwd,extensionPath])}function pruneExtensionCache(){let inactive=0;for(let key of extensionCache.keys())extensionCachePins.has(key)||inactive++;for(let key of extensionCache.keys())extensionCachePins.has(key)||(JSON.parse(key)[0]!==extensionCacheGeneration||inactive>MAX_INACTIVE_EXTENSION_FACTORIES)&&(extensionCache.delete(key),inactive--)}function releaseCacheKey(runtime,key){if(!extensionCacheLeases.get(runtime)?.delete(key))return;let remaining2=(extensionCachePins.get(key)??1)-1;remaining2>0?extensionCachePins.set(key,remaining2):extensionCachePins.delete(key)}function leaseCacheKeys(runtime,token,paths){let leases=extensionCacheLeases.get(runtime);leases||extensionCacheLeases.set(runtime,leases=new Set);for(let extPath of paths){let key=cacheKey(token,resolvePath(extPath,token.cwd,{normalizeUnicodeSpaces:!0}));leases.has(key)||(leases.add(key),extensionCachePins.set(key,(extensionCachePins.get(key)??0)+1))}}function releaseExtensionCache(runtime){for(let key of extensionCacheLeases.get(runtime)??[])releaseCacheKey(runtime,key);extensionCacheLeases.delete(runtime),pruneExtensionCache()}function getExtensionCacheStats(){let active=0;for(let key of extensionCache.keys())extensionCachePins.has(key)&&active++;return{active,inactive:extensionCache.size-active,importing:extensionImports.size}}function clearExtensionCache(){extensionCacheGeneration++,pruneExtensionCache()}function useExtensionCacheCwd(cwd){return{cwd:resolvePath(cwd),generation:extensionCacheGeneration}}function createExtensionRuntime(){let notInitialized=()=>{throw new Error("Extension runtime not initialized. Action methods cannot be called during extension loading.")},state={},eventBusUnsubscribers=new Set,assertActive=()=>{if(state.staleMessage)throw new Error(state.staleMessage)},runtime={sendMessage:notInitialized,sendUserMessage:notInitialized,appendEntry:notInitialized,setSessionName:notInitialized,getSessionName:notInitialized,setLabel:notInitialized,getActiveTools:notInitialized,getAllTools:notInitialized,getSettings:notInitialized,setActiveTools:notInitialized,refreshTools:()=>{},getCommands:notInitialized,setModel:()=>Promise.reject(new Error("Extension runtime not initialized")),getThinkingLevel:notInitialized,setThinkingLevel:notInitialized,flagValues:new Map,pendingProviderRegistrations:[],pendingNativeProviderRegistrations:[],mcpServers:new McpServerRegistry,pendingVirtualModelRegistrations:[],createContext:notInitialized,assertActive,invalidate:message=>{if(!state.staleMessage){state.staleMessage=message??"This extension ctx is stale after session replacement or reload. Do not use a captured knightcode or command ctx after ctx.newSession(), ctx.fork(), ctx.switchSession(), or ctx.reload(). For newSession, fork, and switchSession, move post-replacement work into withSession and use the ctx passed to withSession. For reload, do not use the old ctx after await ctx.reload().";for(let unsubscribe of eventBusUnsubscribers)unsubscribe();eventBusUnsubscribers.clear(),releaseExtensionCache(runtime)}},trackEventBusSubscription:unsubscribe=>{let active=!0,trackedUnsubscribe=()=>{active&&(active=!1,eventBusUnsubscribers.delete(trackedUnsubscribe),unsubscribe())};return eventBusUnsubscribers.add(trackedUnsubscribe),trackedUnsubscribe},registerProvider:(name,config,extensionPath="<unknown>")=>{runtime.pendingProviderRegistrations.push({name,config,extensionPath})},registerNativeProvider:(provider,extensionPath="<unknown>")=>{runtime.pendingNativeProviderRegistrations.push({provider,extensionPath})},unregisterProvider:name=>{runtime.pendingProviderRegistrations=runtime.pendingProviderRegistrations.filter(r=>r.name!==name),runtime.pendingNativeProviderRegistrations=runtime.pendingNativeProviderRegistrations.filter(r=>r.provider.id!==name)},registerVirtualModel:(definition,extensionPath="<unknown>")=>{runtime.pendingVirtualModelRegistrations.push({definition,extensionPath})},unregisterVirtualModel:(provider,id)=>{runtime.pendingVirtualModelRegistrations=runtime.pendingVirtualModelRegistrations.filter(({definition})=>definition.provider!==provider||definition.id!==id)}};return runtime}function createExtensionAPI(extension,runtime,cwd,eventBus){let pendingFlagValues=new Map,pendingRuntimeChanges=[],pendingMcpServers=new Map,loadingUnsubscribers=[],state="loading",assertActive=()=>{if(state==="failed")throw new Error(`Extension "${extension.path}" failed to load and its API is no longer active.`);runtime.assertActive()},applyRuntimeChange=change=>{state==="loading"?pendingRuntimeChanges.push(change):change()},clearPending=()=>{pendingFlagValues.clear(),pendingRuntimeChanges.length=0,pendingMcpServers.clear(),loadingUnsubscribers.length=0};return{api:{on(event,handler){assertActive();let registeredHandler=(...args)=>handler(...args),list=extension.handlers.get(event)??[];return list.push(registeredHandler),extension.handlers.set(event,list),()=>{let handlers=extension.handlers.get(event);if(!handlers)return;let handlerIndex=handlers.indexOf(registeredHandler);handlerIndex!==-1&&(handlers.splice(handlerIndex,1),handlers.length===0&&extension.handlers.delete(event))}},registerTool(tool){if(assertActive(),typeof tool.parameters!="object"||tool.parameters===null||Array.isArray(tool.parameters))throw new Error(`Tool "${tool.name}" registered by extension "${extension.path}" must define an object parameter schema.`);extension.tools.set(tool.name,{definition:tool,sourceInfo:extension.sourceInfo}),runtime.refreshTools()},registerCommand(name,options){if(assertActive(),typeof name!="string"||name.length===0)throw new Error(`Command registered by extension "${extension.path}" must have a non-empty string name. Use knightcode.registerCommand("name", { description, handler }).`);if(/\s/.test(name))throw new Error(`Command "/${name}" registered by extension "${extension.path}" must not contain whitespace.`);if(typeof options?.handler!="function")throw new Error(`Command "/${name}" registered by extension "${extension.path}" must define handler().`);extension.commands.set(name,{name,sourceInfo:extension.sourceInfo,...options})},registerShortcut(shortcut,options){assertActive(),extension.shortcuts.set(shortcut,{shortcut,extensionPath:extension.path,...options})},registerFlag(name,options){if(assertActive(),options.default!==void 0&&typeof options.default!==options.type)throw new Error(`Invalid default for flag "${name}": expected ${options.type}, got ${typeof options.default}`);extension.flags.set(name,{name,extensionPath:extension.path,...options}),options.default!==void 0&&!runtime.flagValues.has(name)&&(state==="loading"?pendingFlagValues.has(name)||pendingFlagValues.set(name,options.default):runtime.flagValues.set(name,options.default))},registerMessageRenderer(customType,renderer){assertActive(),extension.messageRenderers.set(customType,renderer)},registerMarkdownTransformer(transformer){assertActive(),extension.markdownTransformer=transformer},registerEntryRenderer(customType,renderer){assertActive(),extension.entryRenderers??=new Map,extension.entryRenderers.set(customType,renderer)},registerToolRenderer(resolver){assertActive(),extension.toolRenderers??=[],extension.toolRenderers.push(resolver)},getFlag(name){if(assertActive(),!!extension.flags.has(name))return runtime.flagValues.has(name)?runtime.flagValues.get(name):pendingFlagValues.get(name)},sendMessage(message,options){assertActive(),runtime.sendMessage(message,options)},sendUserMessage(content,options){assertActive(),runtime.sendUserMessage(content,options)},appendEntry(customType,data){assertActive(),runtime.appendEntry(customType,data)},setSessionName(name){assertActive(),runtime.setSessionName(name)},getSessionName(){return assertActive(),runtime.getSessionName()},setLabel(entryId,label){assertActive(),runtime.setLabel(entryId,label)},exec(command,args,options){return assertActive(),execCommand(command,args,options?.cwd??cwd,options)},getActiveTools(){return assertActive(),runtime.getActiveTools()},getAllTools(){return assertActive(),runtime.getAllTools()},getSettings(){return assertActive(),runtime.getSettings()},setActiveTools(toolNames){assertActive(),runtime.setActiveTools(toolNames)},getCommands(){return assertActive(),runtime.getCommands()},setModel(model){return assertActive(),runtime.setModel(model)},getThinkingLevel(){return assertActive(),runtime.getThinkingLevel()},setThinkingLevel(level){assertActive(),runtime.setThinkingLevel(level)},registerProvider(providerOrName,config){if(assertActive(),typeof providerOrName=="string"){if(!config)throw new Error("Provider config is required when registering by name");applyRuntimeChange(()=>runtime.registerProvider(providerOrName,config,extension.path));return}applyRuntimeChange(()=>runtime.registerNativeProvider(providerOrName,extension.path))},unregisterProvider(name){assertActive(),applyRuntimeChange(()=>runtime.unregisterProvider(name,extension.path))},registerMcpServer(name,config){assertActive();let validated=validateMcpServerConfig(name,config);if(typeof validated=="string")throw new Error(`Invalid MCP server registered by extension "${extension.path}": ${validated}`);let owner=runtime.mcpServers.get(name)?.extensionPath;if(owner!==void 0&&owner!==extension.path)throw new Error(`MCP server "${name}" is already registered by extension "${owner}"`);let names=new Set(runtime.mcpServers.list().map(server2=>server2.name));for(let[pending,registered]of pendingMcpServers)registered?names.add(pending):names.delete(pending);let clash=[...names].find(other=>other!==name&&mcpNamespace(other)===mcpNamespace(name));if(clash)throw new Error(`MCP server "${name}" conflicts with registered server "${clash}"`);let server={name,config:structuredClone(validated),extensionPath:extension.path};state==="loading"&&pendingMcpServers.set(name,!0),applyRuntimeChange(()=>runtime.mcpServers.register(server))},unregisterMcpServer(name){assertActive(),state==="loading"&&(runtime.mcpServers.get(name)?.extensionPath===extension.path?pendingMcpServers.set(name,!1):pendingMcpServers.delete(name)),applyRuntimeChange(()=>runtime.mcpServers.unregister(name,extension.path))},getMcpServers(){return assertActive(),runtime.mcpServers.list()},registerVirtualModel(model){assertActive();let definition={...model,route:request=>model.route(request,runtime.createContext())};applyRuntimeChange(()=>runtime.registerVirtualModel(definition,extension.path))},unregisterVirtualModel(provider,id){assertActive(),applyRuntimeChange(()=>runtime.unregisterVirtualModel(provider,id))},events:{emit(channel,data){assertActive(),eventBus.emit(channel,data)},on(channel,handler){assertActive();let unsubscribe=runtime.trackEventBusSubscription(eventBus.on(channel,handler));return state==="loading"&&loadingUnsubscribers.push(unsubscribe),unsubscribe}}},commit:()=>{if(state==="loading"){runtime.assertActive();for(let[name,value]of pendingFlagValues)runtime.flagValues.has(name)||runtime.flagValues.set(name,value);for(let apply of pendingRuntimeChanges)apply();state="active",clearPending()}},discard:()=>{if(state==="loading"){state="failed";for(let unsubscribe of loadingUnsubscribers)unsubscribe();clearPending()}}}}async function loadExtensionModule(extensionPath,cacheToken){if(!cacheToken)return importExtensionModule(extensionPath);let key=cacheKey(cacheToken,extensionPath),cached=extensionCache.get(key);if(cached)return extensionCache.delete(key),extensionCache.set(key,cached),cached;let pending=extensionImports.get(key);return pending||(pending=importExtensionModule(extensionPath).then(factory=>(factory&&cacheToken.generation===extensionCacheGeneration&&extensionCache.set(key,factory),factory)).finally(()=>{extensionImports.delete(key),pruneExtensionCache()}),extensionImports.set(key,pending)),pending}async function importExtensionModule(extensionPath){let createJitiImpl=await getCreateJiti(),resolutionOptions=usesEmbeddedModules?{virtualModules:await getVirtualModules(),tryNative:!1}:isTypeScriptSourceRuntime?{virtualModules:await getVirtualModules(),tsconfigPaths:!0}:{alias:getAliases()},factory=await createJitiImpl(import.meta.url,{moduleCache:!1,...resolutionOptions}).import(extensionPath,{default:!0});if(typeof factory=="function")return factory}function createExtension(extensionPath,resolvedPath){let source=getSyntheticPathSource(extensionPath)??"local",baseDir=isSyntheticPath(extensionPath)?void 0:path2.dirname(resolvedPath);return{path:extensionPath,resolvedPath,sourceInfo:createSyntheticSourceInfo(extensionPath,{source,baseDir}),handlers:new Map,tools:new Map,messageRenderers:new Map,entryRenderers:new Map,commands:new Map,flags:new Map,shortcuts:new Map}}async function initializeExtension(factory,extensionPath,resolvedPath,cwd,eventBus,runtime){let extension=createExtension(extensionPath,resolvedPath),load2=createExtensionAPI(extension,runtime,cwd,eventBus);try{await factory(load2.api),load2.commit()}catch(error){throw load2.discard(),error}return time(`${extensionPath} factory`,"extensions"),extension}async function loadExtension(extensionPath,cwd,eventBus,runtime,cacheToken){let resolvedPath=resolvePath(extensionPath,cwd,{normalizeUnicodeSpaces:!0});try{let factory=await loadExtensionModule(resolvedPath,cacheToken);return time(`${extensionPath} module import`,"extensions"),factory?{extension:await initializeExtension(factory,extensionPath,resolvedPath,cwd,eventBus,runtime),error:null}:{extension:null,error:`Extension does not export a valid factory function: ${extensionPath}`}}catch(err){return{extension:null,error:`Failed to load extension: ${err instanceof Error?err.message:String(err)}`}}}async function loadExtensionFromFactory(factory,cwd,eventBus,runtime,extensionPath="<inline>"){let resolvedCwd=resolvePath(cwd);return initializeExtension(factory,extensionPath,extensionPath,resolvedCwd,eventBus,runtime)}async function loadExtensionsInternal(paths,cwd,eventBus,runtime,useCache=!1){let extensions=[],errors=[],warnings=[],cacheToken=useCache?useExtensionCacheCwd(cwd):void 0,resolvedCwd=cacheToken?.cwd??resolvePath(cwd),resolvedEventBus=eventBus??createEventBus(),resolvedRuntime=runtime??createExtensionRuntime();cacheToken&&leaseCacheKeys(resolvedRuntime,cacheToken,paths);for(let extPath of paths){let{extension,error}=await loadExtension(extPath,resolvedCwd,resolvedEventBus,resolvedRuntime,cacheToken);if(error){cacheToken&&(releaseCacheKey(resolvedRuntime,cacheKey(cacheToken,resolvePath(extPath,resolvedCwd,{normalizeUnicodeSpaces:!0}))),pruneExtensionCache()),errors.push({path:extPath,error});continue}extension&&extensions.push(extension)}return{extensions,errors,warnings,runtime:resolvedRuntime}}async function loadExtensions(paths,cwd,eventBus,runtime){return loadExtensionsInternal(paths,cwd,eventBus,runtime)}async function loadExtensionsCached(paths,cwd,eventBus,runtime){return loadExtensionsInternal(paths,cwd,eventBus,runtime,!0)}function isExtensionFile(name){return name.endsWith(".ts")||name.endsWith(".js")}function resolveExtensionEntries(dir){let packageJsonPath=path2.join(dir,"package.json");if(fs3.existsSync(packageJsonPath)){let manifest=readKnightcodeManifest(packageJsonPath);if(manifest?.extensions?.length){let entries=[];for(let extPath of manifest.extensions){let resolvedExtPath=path2.resolve(dir,extPath);fs3.existsSync(resolvedExtPath)&&entries.push(resolvedExtPath)}if(entries.length>0)return entries}}let indexTs=path2.join(dir,"index.ts"),indexJs=path2.join(dir,"index.js");return fs3.existsSync(indexTs)?[indexTs]:fs3.existsSync(indexJs)?[indexJs]:null}function discoverExtensionsInDir(dir){if(!fs3.existsSync(dir))return[];let discovered=[];try{let entries=fs3.readdirSync(dir,{withFileTypes:!0});for(let entry of entries){let entryPath=path2.join(dir,entry.name);if((entry.isFile()||entry.isSymbolicLink())&&isExtensionFile(entry.name)){discovered.push(entryPath);continue}if(entry.isDirectory()||entry.isSymbolicLink()){let entries2=resolveExtensionEntries(entryPath);entries2&&discovered.push(...entries2)}}}catch{return[]}return discovered}async function discoverAndLoadExtensions(configuredPaths,cwd,agentDir=getAgentDir(),eventBus){let resolvedCwd=resolvePath(cwd),resolvedAgentDir=resolvePath(agentDir),allPaths=[],seen=new Set,addPaths=paths=>{for(let p of paths){let resolved=path2.resolve(p);seen.has(resolved)||(seen.add(resolved),allPaths.push(p))}},localExtDir=path2.join(resolvedCwd,CONFIG_DIR_NAME,"extensions");addPaths(discoverExtensionsInDir(localExtDir));let globalExtDir=path2.join(resolvedAgentDir,"extensions");addPaths(discoverExtensionsInDir(globalExtDir));for(let p of configuredPaths){let resolved=resolvePath(p,resolvedCwd,{normalizeUnicodeSpaces:!0});if(fs3.existsSync(resolved)&&fs3.statSync(resolved).isDirectory()){let entries=resolveExtensionEntries(resolved);if(entries){addPaths(entries);continue}addPaths(discoverExtensionsInDir(resolved));continue}addPaths([resolved])}return loadExtensions(allPaths,resolvedCwd,eventBus)}var ExtensionStartupError=class extends Error{constructor(message){super(message),this.name="ExtensionStartupError"}};var import_ignore=__toESM(require_ignore(),1);import{existsSync as existsSync6,readdirSync as readdirSync3,readFileSync as readFileSync5,statSync as statSync4}from"fs";import{basename as basename4,dirname as dirname5,join as join8,relative,resolve as resolve4,sep}from"path";var MAX_NAME_LENGTH=64,MAX_DESCRIPTION_LENGTH=1024,IGNORE_FILE_NAMES=[".gitignore",".ignore",".fdignore"];function toPosixPath(p){return p.split(sep).join("/")}function prefixIgnorePattern(line,prefix){let trimmed=line.trim();if(!trimmed||trimmed.startsWith("#")&&!trimmed.startsWith("\\#"))return null;let pattern=line,negated=!1;pattern.startsWith("!")?(negated=!0,pattern=pattern.slice(1)):pattern.startsWith("\\!")&&(pattern=pattern.slice(1)),pattern.startsWith("/")&&(pattern=pattern.slice(1));let prefixed=prefix?`${prefix}${pattern}`:pattern;return negated?`!${prefixed}`:prefixed}function addIgnoreRules(ig,dir,rootDir){let relativeDir=relative(rootDir,dir),prefix=relativeDir?`${toPosixPath(relativeDir)}/`:"";for(let filename of IGNORE_FILE_NAMES){let ignorePath=join8(dir,filename);if(existsSync6(ignorePath))try{let patterns=readFileSync5(ignorePath,"utf-8").split(/\r?\n/).map(line=>prefixIgnorePattern(line,prefix)).filter(line=>!!line);patterns.length>0&&ig.add(patterns)}catch{}}}function validateName(name){let errors=[];return name.length>MAX_NAME_LENGTH&&errors.push(`name exceeds ${MAX_NAME_LENGTH} characters (${name.length})`),/^[a-z0-9-]+$/.test(name)||errors.push("name contains invalid characters (must be lowercase a-z, 0-9, hyphens only)"),(name.startsWith("-")||name.endsWith("-"))&&errors.push("name must not start or end with a hyphen"),name.includes("--")&&errors.push("name must not contain consecutive hyphens"),errors}function validateDescription(description){let errors=[];return typeof description!="string"||description.trim()===""?errors.push("description is required"):description.length>MAX_DESCRIPTION_LENGTH&&errors.push(`description exceeds ${MAX_DESCRIPTION_LENGTH} characters (${description.length})`),errors}function createSkillSourceInfo(filePath,baseDir,source){switch(source){case"user":return createSyntheticSourceInfo(filePath,{source:"local",scope:"user",baseDir});case"project":return createSyntheticSourceInfo(filePath,{source:"local",scope:"project",baseDir});case"path":return createSyntheticSourceInfo(filePath,{source:"local",baseDir});default:return createSyntheticSourceInfo(filePath,{source,baseDir})}}function loadSkillsFromDir(options){let{dir,source}=options;return loadSkillsFromDirInternal(dir,source,!0)}function loadSkillsFromDirInternal(dir,source,includeRootFiles,ignoreMatcher,rootDir){let skills=[],diagnostics=[];if(!existsSync6(dir))return{skills,diagnostics};let root=rootDir??dir,ig=ignoreMatcher??(0,import_ignore.default)();addIgnoreRules(ig,dir,root);try{let entries=readdirSync3(dir,{withFileTypes:!0});for(let entry of entries){if(entry.name!=="SKILL.md")continue;let fullPath=join8(dir,entry.name),isFile=entry.isFile();if(entry.isSymbolicLink())try{isFile=statSync4(fullPath).isFile()}catch{continue}let relPath=toPosixPath(relative(root,fullPath));if(!isFile||ig.ignores(relPath))continue;let result2=loadSkillFromFile(fullPath,source);return result2.skill&&skills.push(result2.skill),diagnostics.push(...result2.diagnostics),{skills,diagnostics}}for(let entry of entries){if(entry.name.startsWith(".")||entry.name==="node_modules")continue;let fullPath=join8(dir,entry.name),isDirectory=entry.isDirectory(),isFile=entry.isFile();if(entry.isSymbolicLink())try{let stats=statSync4(fullPath);isDirectory=stats.isDirectory(),isFile=stats.isFile()}catch{continue}let relPath=toPosixPath(relative(root,fullPath)),ignorePath=isDirectory?`${relPath}/`:relPath;if(ig.ignores(ignorePath))continue;if(isDirectory){let subResult=loadSkillsFromDirInternal(fullPath,source,!1,ig,root);skills.push(...subResult.skills),diagnostics.push(...subResult.diagnostics);continue}if(!isFile||!includeRootFiles||!entry.name.endsWith(".md"))continue;let result2=loadSkillFromFile(fullPath,source);result2.skill&&skills.push(result2.skill),diagnostics.push(...result2.diagnostics)}}catch{}return{skills,diagnostics}}function loadSkillFromFile(filePath,source){let diagnostics=[],isDeclaredSkill=basename4(filePath)==="SKILL.md",rawContent;try{rawContent=readFileSync5(filePath,"utf-8")}catch(error){let message=error instanceof Error?error.message:"failed to read skill file";return diagnostics.push({type:"warning",message,path:filePath}),{skill:null,diagnostics}}let frontmatter;try{({frontmatter}=parseFrontmatter(rawContent))}catch(error){if(isDeclaredSkill){let message=error instanceof Error?error.message:"failed to parse skill file";diagnostics.push({type:"warning",message,path:filePath})}return{skill:null,diagnostics}}let description=frontmatter.description,hasDescription=typeof description=="string"&&description.trim()!=="";if(!isDeclaredSkill&&!hasDescription)return{skill:null,diagnostics};let skillDir=dirname5(filePath),parentDirName=basename4(skillDir),descErrors=validateDescription(description);for(let error of descErrors)diagnostics.push({type:"warning",message:error,path:filePath});let name=(typeof frontmatter.name=="string"?frontmatter.name:void 0)||parentDirName,nameErrors=validateName(name);for(let error of nameErrors)diagnostics.push({type:"warning",message:error,path:filePath});return hasDescription?{skill:{name,description,filePath,baseDir:skillDir,sourceInfo:createSkillSourceInfo(filePath,skillDir,source),disableModelInvocation:frontmatter["disable-model-invocation"]===!0},diagnostics}:{skill:null,diagnostics}}var SKILL_FILE_READ_TOOLS=["read","bash","powershell"],SKILL_FILE_READ_INSTRUCTIONS={read:"Use the read tool to load a skill's file when the task matches its description.",bash:"Use bash to load a skill's file when the task matches its description.",powershell:"Use PowerShell to load a skill's file when the task matches its description.",indirect:"Load a skill's file when the task matches its description."};function formatSkillsForPrompt(skills,fileReadTool="read"){let visibleSkills=skills.filter(s=>!s.disableModelInvocation);if(visibleSkills.length===0)return"";let lines=[`
760
+ `)}}function printTimings(){if(ENABLED)for(let[namespace,timingNamespace]of timingNamespaces)printTimingGroup(`Startup Timings: ${namespace}`,timingNamespace.timings)}var require3=createRequire2(import.meta.url),isNodeSeaBinary="sea"in process.features&&process.features.sea===!0||process.getBuiltinModule("node:sea")?.isSea()===!0,isTypeScriptSourceRuntime=!isBunBinary&&path2.extname(fileURLToPath2(import.meta.url))===".ts",usesEmbeddedModules=isBunBinary||isNodeSeaBinary||isBundledNode,createJitiPromise;function getCreateJiti(){return createJitiPromise??=(usesEmbeddedModules?import("./jiti-static-loader-NNBCFAO5.js"):import("./jiti-loader-BXVX3Y2R.js")).then(module=>module.createJiti),createJitiPromise}var virtualModulesPromise;function getVirtualModules(){return virtualModulesPromise??=import("./virtual-modules-IKIDAUHO.js").then(module=>module.VIRTUAL_MODULES),virtualModulesPromise}var _aliases=null;function getAliases(){if(_aliases)return _aliases;let __dirname=path2.dirname(fileURLToPath2(import.meta.url)),packageIndex=path2.resolve(__dirname,"../..","index.js"),typeboxEntry=require3.resolve("typebox"),typeboxCompileEntry=require3.resolve("typebox/compile"),typeboxValueEntry=require3.resolve("typebox/value"),packagesRoot=path2.resolve(__dirname,"../../../../"),resolveWorkspaceOrImport=(workspaceRelativePath,specifier)=>{let workspacePath=path2.join(packagesRoot,workspaceRelativePath);return fs3.existsSync(workspacePath)?workspacePath:fileURLToPath2(import.meta.resolve(specifier))},knightCliEntry=packageIndex,knightAgentEntry=resolveWorkspaceOrImport("agent/dist/index.js","@knightcode/agent"),knightTuiEntry=resolveWorkspaceOrImport("tui/dist/index.js","@knightcode/tui"),knightAiCompatEntry=resolveWorkspaceOrImport("ai/dist/compat.js","@knightcode/ai/compat"),knightAiOauthEntry=resolveWorkspaceOrImport("ai/dist/oauth.js","@knightcode/ai/oauth"),knightAiProvidersEntry=resolveWorkspaceOrImport("ai/dist/providers/all.js","@knightcode/ai/providers/all");return _aliases={"@knightcodeai/cli":knightCliEntry,"@knightcode/agent":knightAgentEntry,"@knightcode/tui":knightTuiEntry,"@knightcode/ai/providers/all":knightAiProvidersEntry,"@knightcode/ai/compat":knightAiCompatEntry,"@knightcode/ai/oauth":knightAiOauthEntry,"@knightcode/ai":knightAiCompatEntry,typebox:typeboxEntry,"typebox/compile":typeboxCompileEntry,"typebox/value":typeboxValueEntry,"@sinclair/typebox":typeboxEntry,"@sinclair/typebox/compile":typeboxCompileEntry,"@sinclair/typebox/value":typeboxValueEntry},_aliases}var extensionCacheGeneration=0,MAX_INACTIVE_EXTENSION_FACTORIES=256,extensionCache=new Map,extensionImports=new Map,extensionCachePins=new Map,extensionCacheLeases=new WeakMap;function cacheKey(token,extensionPath){return JSON.stringify([token.generation,token.cwd,extensionPath])}function pruneExtensionCache(){let inactive=0;for(let key of extensionCache.keys())extensionCachePins.has(key)||inactive++;for(let key of extensionCache.keys())extensionCachePins.has(key)||(JSON.parse(key)[0]!==extensionCacheGeneration||inactive>MAX_INACTIVE_EXTENSION_FACTORIES)&&(extensionCache.delete(key),inactive--)}function releaseCacheKey(runtime,key){if(!extensionCacheLeases.get(runtime)?.delete(key))return;let remaining2=(extensionCachePins.get(key)??1)-1;remaining2>0?extensionCachePins.set(key,remaining2):extensionCachePins.delete(key)}function leaseCacheKeys(runtime,token,paths){let leases=extensionCacheLeases.get(runtime);leases||extensionCacheLeases.set(runtime,leases=new Set);for(let extPath of paths){let key=cacheKey(token,resolvePath(extPath,token.cwd,{normalizeUnicodeSpaces:!0}));leases.has(key)||(leases.add(key),extensionCachePins.set(key,(extensionCachePins.get(key)??0)+1))}}function releaseExtensionCache(runtime){for(let key of extensionCacheLeases.get(runtime)??[])releaseCacheKey(runtime,key);extensionCacheLeases.delete(runtime),pruneExtensionCache()}function getExtensionCacheStats(){let active=0;for(let key of extensionCache.keys())extensionCachePins.has(key)&&active++;return{active,inactive:extensionCache.size-active,importing:extensionImports.size}}function clearExtensionCache(){extensionCacheGeneration++,pruneExtensionCache()}function useExtensionCacheCwd(cwd){return{cwd:resolvePath(cwd),generation:extensionCacheGeneration}}function createExtensionRuntime(){let notInitialized=()=>{throw new Error("Extension runtime not initialized. Action methods cannot be called during extension loading.")},state={},eventBusUnsubscribers=new Set,assertActive=()=>{if(state.staleMessage)throw new Error(state.staleMessage)},runtime={sendMessage:notInitialized,sendUserMessage:notInitialized,appendEntry:notInitialized,setSessionName:notInitialized,getSessionName:notInitialized,setLabel:notInitialized,getActiveTools:notInitialized,getAllTools:notInitialized,getSettings:notInitialized,setActiveTools:notInitialized,refreshTools:()=>{},getCommands:notInitialized,setModel:()=>Promise.reject(new Error("Extension runtime not initialized")),getThinkingLevel:notInitialized,setThinkingLevel:notInitialized,flagValues:new Map,pendingProviderRegistrations:[],pendingNativeProviderRegistrations:[],mcpServers:new McpServerRegistry,pendingVirtualModelRegistrations:[],createContext:notInitialized,assertActive,invalidate:message=>{if(!state.staleMessage){state.staleMessage=message??"This extension ctx is stale after session replacement or reload. Do not use a captured knightcode or command ctx after ctx.newSession(), ctx.fork(), ctx.switchSession(), or ctx.reload(). For newSession, fork, and switchSession, move post-replacement work into withSession and use the ctx passed to withSession. For reload, do not use the old ctx after await ctx.reload().";for(let unsubscribe of eventBusUnsubscribers)unsubscribe();eventBusUnsubscribers.clear(),releaseExtensionCache(runtime)}},trackEventBusSubscription:unsubscribe=>{let active=!0,trackedUnsubscribe=()=>{active&&(active=!1,eventBusUnsubscribers.delete(trackedUnsubscribe),unsubscribe())};return eventBusUnsubscribers.add(trackedUnsubscribe),trackedUnsubscribe},registerProvider:(name,config,extensionPath="<unknown>")=>{runtime.pendingProviderRegistrations.push({name,config,extensionPath})},registerNativeProvider:(provider,extensionPath="<unknown>")=>{runtime.pendingNativeProviderRegistrations.push({provider,extensionPath})},unregisterProvider:name=>{runtime.pendingProviderRegistrations=runtime.pendingProviderRegistrations.filter(r=>r.name!==name),runtime.pendingNativeProviderRegistrations=runtime.pendingNativeProviderRegistrations.filter(r=>r.provider.id!==name)},registerVirtualModel:(definition,extensionPath="<unknown>")=>{runtime.pendingVirtualModelRegistrations.push({definition,extensionPath})},unregisterVirtualModel:(provider,id)=>{runtime.pendingVirtualModelRegistrations=runtime.pendingVirtualModelRegistrations.filter(({definition})=>definition.provider!==provider||definition.id!==id)}};return runtime}function createExtensionAPI(extension,runtime,cwd,eventBus){let pendingFlagValues=new Map,pendingRuntimeChanges=[],pendingMcpServers=new Map,loadingUnsubscribers=[],state="loading",assertActive=()=>{if(state==="failed")throw new Error(`Extension "${extension.path}" failed to load and its API is no longer active.`);runtime.assertActive()},applyRuntimeChange=change=>{state==="loading"?pendingRuntimeChanges.push(change):change()},clearPending=()=>{pendingFlagValues.clear(),pendingRuntimeChanges.length=0,pendingMcpServers.clear(),loadingUnsubscribers.length=0};return{api:{on(event,handler){assertActive();let registeredHandler=(...args)=>handler(...args),list=extension.handlers.get(event)??[];return list.push(registeredHandler),extension.handlers.set(event,list),()=>{let handlers=extension.handlers.get(event);if(!handlers)return;let handlerIndex=handlers.indexOf(registeredHandler);handlerIndex!==-1&&(handlers.splice(handlerIndex,1),handlers.length===0&&extension.handlers.delete(event))}},registerTool(tool){if(assertActive(),typeof tool.parameters!="object"||tool.parameters===null||Array.isArray(tool.parameters))throw new Error(`Tool "${tool.name}" registered by extension "${extension.path}" must define an object parameter schema.`);extension.tools.set(tool.name,{definition:tool,sourceInfo:extension.sourceInfo}),runtime.refreshTools()},registerCommand(name,options){if(assertActive(),typeof name!="string"||name.length===0)throw new Error(`Command registered by extension "${extension.path}" must have a non-empty string name. Use knightcode.registerCommand("name", { description, handler }).`);if(/\s/.test(name))throw new Error(`Command "/${name}" registered by extension "${extension.path}" must not contain whitespace.`);if(typeof options?.handler!="function")throw new Error(`Command "/${name}" registered by extension "${extension.path}" must define handler().`);extension.commands.set(name,{name,sourceInfo:extension.sourceInfo,...options})},registerShortcut(shortcut,options){assertActive(),extension.shortcuts.set(shortcut,{shortcut,extensionPath:extension.path,...options})},registerFlag(name,options){if(assertActive(),options.default!==void 0&&typeof options.default!==options.type)throw new Error(`Invalid default for flag "${name}": expected ${options.type}, got ${typeof options.default}`);extension.flags.set(name,{name,extensionPath:extension.path,...options}),options.default!==void 0&&!runtime.flagValues.has(name)&&(state==="loading"?pendingFlagValues.has(name)||pendingFlagValues.set(name,options.default):runtime.flagValues.set(name,options.default))},registerMessageRenderer(customType,renderer){assertActive(),extension.messageRenderers.set(customType,renderer)},registerMarkdownTransformer(transformer){assertActive(),extension.markdownTransformer=transformer},registerEntryRenderer(customType,renderer){assertActive(),extension.entryRenderers??=new Map,extension.entryRenderers.set(customType,renderer)},registerToolRenderer(resolver){assertActive(),extension.toolRenderers??=[],extension.toolRenderers.push(resolver)},getFlag(name){if(assertActive(),!!extension.flags.has(name))return runtime.flagValues.has(name)?runtime.flagValues.get(name):pendingFlagValues.get(name)},sendMessage(message,options){assertActive(),runtime.sendMessage(message,options)},sendUserMessage(content,options){assertActive(),runtime.sendUserMessage(content,options)},appendEntry(customType,data){assertActive(),runtime.appendEntry(customType,data)},setSessionName(name){assertActive(),runtime.setSessionName(name)},getSessionName(){return assertActive(),runtime.getSessionName()},setLabel(entryId,label){assertActive(),runtime.setLabel(entryId,label)},exec(command,args,options){return assertActive(),execCommand(command,args,options?.cwd??cwd,options)},getActiveTools(){return assertActive(),runtime.getActiveTools()},getAllTools(){return assertActive(),runtime.getAllTools()},getSettings(){return assertActive(),runtime.getSettings()},setActiveTools(toolNames){assertActive(),runtime.setActiveTools(toolNames)},getCommands(){return assertActive(),runtime.getCommands()},setModel(model){return assertActive(),runtime.setModel(model)},getThinkingLevel(){return assertActive(),runtime.getThinkingLevel()},setThinkingLevel(level){assertActive(),runtime.setThinkingLevel(level)},registerProvider(providerOrName,config){if(assertActive(),typeof providerOrName=="string"){if(!config)throw new Error("Provider config is required when registering by name");applyRuntimeChange(()=>runtime.registerProvider(providerOrName,config,extension.path));return}applyRuntimeChange(()=>runtime.registerNativeProvider(providerOrName,extension.path))},unregisterProvider(name){assertActive(),applyRuntimeChange(()=>runtime.unregisterProvider(name,extension.path))},registerMcpServer(name,config){assertActive();let validated=validateMcpServerConfig(name,config);if(typeof validated=="string")throw new Error(`Invalid MCP server registered by extension "${extension.path}": ${validated}`);let owner=runtime.mcpServers.get(name)?.extensionPath;if(owner!==void 0&&owner!==extension.path)throw new Error(`MCP server "${name}" is already registered by extension "${owner}"`);let names=new Set(runtime.mcpServers.list().map(server2=>server2.name));for(let[pending,registered]of pendingMcpServers)registered?names.add(pending):names.delete(pending);let clash=[...names].find(other=>other!==name&&mcpNamespace(other)===mcpNamespace(name));if(clash)throw new Error(`MCP server "${name}" conflicts with registered server "${clash}"`);let server={name,config:structuredClone(validated),extensionPath:extension.path};state==="loading"&&pendingMcpServers.set(name,!0),applyRuntimeChange(()=>runtime.mcpServers.register(server))},unregisterMcpServer(name){assertActive(),state==="loading"&&(runtime.mcpServers.get(name)?.extensionPath===extension.path?pendingMcpServers.set(name,!1):pendingMcpServers.delete(name)),applyRuntimeChange(()=>runtime.mcpServers.unregister(name,extension.path))},getMcpServers(){return assertActive(),runtime.mcpServers.list()},registerVirtualModel(model){assertActive();let definition={...model,route:request=>model.route(request,runtime.createContext())};applyRuntimeChange(()=>runtime.registerVirtualModel(definition,extension.path))},unregisterVirtualModel(provider,id){assertActive(),applyRuntimeChange(()=>runtime.unregisterVirtualModel(provider,id))},events:{emit(channel,data){assertActive(),eventBus.emit(channel,data)},on(channel,handler){assertActive();let unsubscribe=runtime.trackEventBusSubscription(eventBus.on(channel,handler));return state==="loading"&&loadingUnsubscribers.push(unsubscribe),unsubscribe}}},commit:()=>{if(state==="loading"){runtime.assertActive();for(let[name,value]of pendingFlagValues)runtime.flagValues.has(name)||runtime.flagValues.set(name,value);for(let apply of pendingRuntimeChanges)apply();state="active",clearPending()}},discard:()=>{if(state==="loading"){state="failed";for(let unsubscribe of loadingUnsubscribers)unsubscribe();clearPending()}}}}async function loadExtensionModule(extensionPath,cacheToken){if(!cacheToken)return importExtensionModule(extensionPath);let key=cacheKey(cacheToken,extensionPath),cached=extensionCache.get(key);if(cached)return extensionCache.delete(key),extensionCache.set(key,cached),cached;let pending=extensionImports.get(key);return pending||(pending=importExtensionModule(extensionPath).then(factory=>(factory&&cacheToken.generation===extensionCacheGeneration&&extensionCache.set(key,factory),factory)).finally(()=>{extensionImports.delete(key),pruneExtensionCache()}),extensionImports.set(key,pending)),pending}async function importExtensionModule(extensionPath){let createJitiImpl=await getCreateJiti(),resolutionOptions=usesEmbeddedModules?{virtualModules:await getVirtualModules(),tryNative:!1}:isTypeScriptSourceRuntime?{virtualModules:await getVirtualModules(),tsconfigPaths:!0}:{alias:getAliases()},factory=await createJitiImpl(import.meta.url,{moduleCache:!1,...resolutionOptions}).import(extensionPath,{default:!0});if(typeof factory=="function")return factory}function createExtension(extensionPath,resolvedPath){let source=getSyntheticPathSource(extensionPath)??"local",baseDir=isSyntheticPath(extensionPath)?void 0:path2.dirname(resolvedPath);return{path:extensionPath,resolvedPath,sourceInfo:createSyntheticSourceInfo(extensionPath,{source,baseDir}),handlers:new Map,tools:new Map,messageRenderers:new Map,entryRenderers:new Map,commands:new Map,flags:new Map,shortcuts:new Map}}async function initializeExtension(factory,extensionPath,resolvedPath,cwd,eventBus,runtime){let extension=createExtension(extensionPath,resolvedPath),load2=createExtensionAPI(extension,runtime,cwd,eventBus);try{await factory(load2.api),load2.commit()}catch(error){throw load2.discard(),error}return time(`${extensionPath} factory`,"extensions"),extension}async function loadExtension(extensionPath,cwd,eventBus,runtime,cacheToken){let resolvedPath=resolvePath(extensionPath,cwd,{normalizeUnicodeSpaces:!0});try{let factory=await loadExtensionModule(resolvedPath,cacheToken);return time(`${extensionPath} module import`,"extensions"),factory?{extension:await initializeExtension(factory,extensionPath,resolvedPath,cwd,eventBus,runtime),error:null}:{extension:null,error:`Extension does not export a valid factory function: ${extensionPath}`}}catch(err){return{extension:null,error:`Failed to load extension: ${err instanceof Error?err.message:String(err)}`}}}async function loadExtensionFromFactory(factory,cwd,eventBus,runtime,extensionPath="<inline>"){let resolvedCwd=resolvePath(cwd);return initializeExtension(factory,extensionPath,extensionPath,resolvedCwd,eventBus,runtime)}async function loadExtensionsInternal(paths,cwd,eventBus,runtime,useCache=!1){let extensions=[],errors=[],warnings=[],cacheToken=useCache?useExtensionCacheCwd(cwd):void 0,resolvedCwd=cacheToken?.cwd??resolvePath(cwd),resolvedEventBus=eventBus??createEventBus(),resolvedRuntime=runtime??createExtensionRuntime();cacheToken&&leaseCacheKeys(resolvedRuntime,cacheToken,paths);for(let extPath of paths){let{extension,error}=await loadExtension(extPath,resolvedCwd,resolvedEventBus,resolvedRuntime,cacheToken);if(error){cacheToken&&(releaseCacheKey(resolvedRuntime,cacheKey(cacheToken,resolvePath(extPath,resolvedCwd,{normalizeUnicodeSpaces:!0}))),pruneExtensionCache()),errors.push({path:extPath,error});continue}extension&&extensions.push(extension)}return{extensions,errors,warnings,runtime:resolvedRuntime}}async function loadExtensions(paths,cwd,eventBus,runtime){return loadExtensionsInternal(paths,cwd,eventBus,runtime)}async function loadExtensionsCached(paths,cwd,eventBus,runtime){return loadExtensionsInternal(paths,cwd,eventBus,runtime,!0)}function isExtensionFile(name){return name.endsWith(".ts")||name.endsWith(".js")}function resolveExtensionEntries(dir){let packageJsonPath=path2.join(dir,"package.json");if(fs3.existsSync(packageJsonPath)){let manifest=readKnightcodeManifest(packageJsonPath);if(manifest?.extensions?.length){let entries=[];for(let extPath of manifest.extensions){let resolvedExtPath=path2.resolve(dir,extPath);fs3.existsSync(resolvedExtPath)&&entries.push(resolvedExtPath)}if(entries.length>0)return entries}}let indexTs=path2.join(dir,"index.ts"),indexJs=path2.join(dir,"index.js");return fs3.existsSync(indexTs)?[indexTs]:fs3.existsSync(indexJs)?[indexJs]:null}function discoverExtensionsInDir(dir){if(!fs3.existsSync(dir))return[];let discovered=[];try{let entries=fs3.readdirSync(dir,{withFileTypes:!0});for(let entry of entries){let entryPath=path2.join(dir,entry.name);if((entry.isFile()||entry.isSymbolicLink())&&isExtensionFile(entry.name)){discovered.push(entryPath);continue}if(entry.isDirectory()||entry.isSymbolicLink()){let entries2=resolveExtensionEntries(entryPath);entries2&&discovered.push(...entries2)}}}catch{return[]}return discovered}async function discoverAndLoadExtensions(configuredPaths,cwd,agentDir=getAgentDir(),eventBus){let resolvedCwd=resolvePath(cwd),resolvedAgentDir=resolvePath(agentDir),allPaths=[],seen=new Set,addPaths=paths=>{for(let p of paths){let resolved=path2.resolve(p);seen.has(resolved)||(seen.add(resolved),allPaths.push(p))}},localExtDir=path2.join(resolvedCwd,CONFIG_DIR_NAME,"extensions");addPaths(discoverExtensionsInDir(localExtDir));let globalExtDir=path2.join(resolvedAgentDir,"extensions");addPaths(discoverExtensionsInDir(globalExtDir));for(let p of configuredPaths){let resolved=resolvePath(p,resolvedCwd,{normalizeUnicodeSpaces:!0});if(fs3.existsSync(resolved)&&fs3.statSync(resolved).isDirectory()){let entries=resolveExtensionEntries(resolved);if(entries){addPaths(entries);continue}addPaths(discoverExtensionsInDir(resolved));continue}addPaths([resolved])}return loadExtensions(allPaths,resolvedCwd,eventBus)}var ExtensionStartupError=class extends Error{constructor(message){super(message),this.name="ExtensionStartupError"}};var import_ignore=__toESM(require_ignore(),1);import{existsSync as existsSync6,readdirSync as readdirSync3,readFileSync as readFileSync5,statSync as statSync4}from"fs";import{basename as basename4,dirname as dirname5,join as join8,relative,resolve as resolve4,sep}from"path";var MAX_NAME_LENGTH=64,MAX_DESCRIPTION_LENGTH=1024,IGNORE_FILE_NAMES=[".gitignore",".ignore",".fdignore"];function toPosixPath(p){return p.split(sep).join("/")}function prefixIgnorePattern(line,prefix){let trimmed=line.trim();if(!trimmed||trimmed.startsWith("#")&&!trimmed.startsWith("\\#"))return null;let pattern=line,negated=!1;pattern.startsWith("!")?(negated=!0,pattern=pattern.slice(1)):pattern.startsWith("\\!")&&(pattern=pattern.slice(1)),pattern.startsWith("/")&&(pattern=pattern.slice(1));let prefixed=prefix?`${prefix}${pattern}`:pattern;return negated?`!${prefixed}`:prefixed}function addIgnoreRules(ig,dir,rootDir){let relativeDir=relative(rootDir,dir),prefix=relativeDir?`${toPosixPath(relativeDir)}/`:"";for(let filename of IGNORE_FILE_NAMES){let ignorePath=join8(dir,filename);if(existsSync6(ignorePath))try{let patterns=readFileSync5(ignorePath,"utf-8").split(/\r?\n/).map(line=>prefixIgnorePattern(line,prefix)).filter(line=>!!line);patterns.length>0&&ig.add(patterns)}catch{}}}function validateName(name){let errors=[];return name.length>MAX_NAME_LENGTH&&errors.push(`name exceeds ${MAX_NAME_LENGTH} characters (${name.length})`),/^[a-z0-9-]+$/.test(name)||errors.push("name contains invalid characters (must be lowercase a-z, 0-9, hyphens only)"),(name.startsWith("-")||name.endsWith("-"))&&errors.push("name must not start or end with a hyphen"),name.includes("--")&&errors.push("name must not contain consecutive hyphens"),errors}function validateDescription(description){let errors=[];return typeof description!="string"||description.trim()===""?errors.push("description is required"):description.length>MAX_DESCRIPTION_LENGTH&&errors.push(`description exceeds ${MAX_DESCRIPTION_LENGTH} characters (${description.length})`),errors}function createSkillSourceInfo(filePath,baseDir,source){switch(source){case"user":return createSyntheticSourceInfo(filePath,{source:"local",scope:"user",baseDir});case"project":return createSyntheticSourceInfo(filePath,{source:"local",scope:"project",baseDir});case"path":return createSyntheticSourceInfo(filePath,{source:"local",baseDir});default:return createSyntheticSourceInfo(filePath,{source,baseDir})}}function loadSkillsFromDir(options){let{dir,source}=options;return loadSkillsFromDirInternal(dir,source,!0)}function loadSkillsFromDirInternal(dir,source,includeRootFiles,ignoreMatcher,rootDir){let skills=[],diagnostics=[];if(!existsSync6(dir))return{skills,diagnostics};let root=rootDir??dir,ig=ignoreMatcher??(0,import_ignore.default)();addIgnoreRules(ig,dir,root);try{let entries=readdirSync3(dir,{withFileTypes:!0});for(let entry of entries){if(entry.name!=="SKILL.md")continue;let fullPath=join8(dir,entry.name),isFile=entry.isFile();if(entry.isSymbolicLink())try{isFile=statSync4(fullPath).isFile()}catch{continue}let relPath=toPosixPath(relative(root,fullPath));if(!isFile||ig.ignores(relPath))continue;let result2=loadSkillFromFile(fullPath,source);return result2.skill&&skills.push(result2.skill),diagnostics.push(...result2.diagnostics),{skills,diagnostics}}for(let entry of entries){if(entry.name.startsWith(".")||entry.name==="node_modules")continue;let fullPath=join8(dir,entry.name),isDirectory=entry.isDirectory(),isFile=entry.isFile();if(entry.isSymbolicLink())try{let stats=statSync4(fullPath);isDirectory=stats.isDirectory(),isFile=stats.isFile()}catch{continue}let relPath=toPosixPath(relative(root,fullPath)),ignorePath=isDirectory?`${relPath}/`:relPath;if(ig.ignores(ignorePath))continue;if(isDirectory){let subResult=loadSkillsFromDirInternal(fullPath,source,!1,ig,root);skills.push(...subResult.skills),diagnostics.push(...subResult.diagnostics);continue}if(!isFile||!includeRootFiles||!entry.name.endsWith(".md"))continue;let result2=loadSkillFromFile(fullPath,source);result2.skill&&skills.push(result2.skill),diagnostics.push(...result2.diagnostics)}}catch{}return{skills,diagnostics}}function loadSkillFromFile(filePath,source){let diagnostics=[],isDeclaredSkill=basename4(filePath)==="SKILL.md",rawContent;try{rawContent=readFileSync5(filePath,"utf-8")}catch(error){let message=error instanceof Error?error.message:"failed to read skill file";return diagnostics.push({type:"warning",message,path:filePath}),{skill:null,diagnostics}}let frontmatter;try{({frontmatter}=parseFrontmatter(rawContent))}catch(error){if(isDeclaredSkill){let message=error instanceof Error?error.message:"failed to parse skill file";diagnostics.push({type:"warning",message,path:filePath})}return{skill:null,diagnostics}}let description=frontmatter.description,hasDescription=typeof description=="string"&&description.trim()!=="";if(!isDeclaredSkill&&!hasDescription)return{skill:null,diagnostics};let skillDir=dirname5(filePath),parentDirName=basename4(skillDir),descErrors=validateDescription(description);for(let error of descErrors)diagnostics.push({type:"warning",message:error,path:filePath});let name=(typeof frontmatter.name=="string"?frontmatter.name:void 0)||parentDirName,nameErrors=validateName(name);for(let error of nameErrors)diagnostics.push({type:"warning",message:error,path:filePath});return hasDescription?{skill:{name,description,filePath,baseDir:skillDir,sourceInfo:createSkillSourceInfo(filePath,skillDir,source),disableModelInvocation:frontmatter["disable-model-invocation"]===!0},diagnostics}:{skill:null,diagnostics}}var SKILL_FILE_READ_TOOLS=["read","bash","powershell"],SKILL_FILE_READ_INSTRUCTIONS={read:"Use the read tool to load a skill's file when the task matches its description.",bash:"Use bash to load a skill's file when the task matches its description.",powershell:"Use PowerShell to load a skill's file when the task matches its description.",indirect:"Load a skill's file when the task matches its description."};function formatSkillsForPrompt(skills,fileReadTool="read"){let visibleSkills=skills.filter(s=>!s.disableModelInvocation);if(visibleSkills.length===0)return"";let lines=[`
761
761
 
762
762
  The following skills provide specialized instructions for specific tasks.`,SKILL_FILE_READ_INSTRUCTIONS[fileReadTool],"When a skill file references a relative path, resolve it against the skill directory (parent of SKILL.md / dirname of the path) and use that absolute path in tool commands.","","<available_skills>"];for(let skill of visibleSkills)lines.push(" <skill>"),lines.push(` <name>${escapeXml(skill.name)}</name>`),lines.push(` <description>${escapeXml(skill.description)}</description>`),lines.push(` <location>${escapeXml(skill.filePath)}</location>`),lines.push(" </skill>");return lines.push("</available_skills>"),lines.join(`
763
763
  `)}function escapeXml(str2){return str2.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}function loadSkills(options){let{agentDir,skillPaths,includeDefaults}=options,resolvedCwd=resolvePath(options.cwd),resolvedAgentDir=resolvePath(agentDir??getAgentDir()),skillMap=new Map,realPathSet=new Set,allDiagnostics=[],collisionDiagnostics=[];function addSkills(result2){allDiagnostics.push(...result2.diagnostics);for(let skill of result2.skills){let realPath=canonicalizePath(skill.filePath);if(realPathSet.has(realPath))continue;let existing=skillMap.get(skill.name);existing?collisionDiagnostics.push({type:"collision",message:`name "${skill.name}" collision`,path:skill.filePath,collision:{resourceType:"skill",name:skill.name,winnerPath:existing.filePath,loserPath:skill.filePath}}):(skillMap.set(skill.name,skill),realPathSet.add(realPath))}}includeDefaults&&(addSkills(loadSkillsFromDirInternal(join8(resolvedAgentDir,"skills"),"user",!0)),addSkills(loadSkillsFromDirInternal(resolve4(resolvedCwd,CONFIG_DIR_NAME,"skills"),"project",!0)));let userSkillsDir=join8(resolvedAgentDir,"skills"),projectSkillsDir=resolve4(resolvedCwd,CONFIG_DIR_NAME,"skills"),isUnderPath=(target,root)=>{let normalizedRoot=resolve4(root);if(target===normalizedRoot)return!0;let prefix=normalizedRoot.endsWith(sep)?normalizedRoot:`${normalizedRoot}${sep}`;return target.startsWith(prefix)},getSource=resolvedPath=>{if(!includeDefaults){if(isUnderPath(resolvedPath,userSkillsDir))return"user";if(isUnderPath(resolvedPath,projectSkillsDir))return"project"}return"path"};for(let rawPath of skillPaths){let resolvedPath=resolvePath(rawPath,resolvedCwd,{trim:!0});if(!existsSync6(resolvedPath)){allDiagnostics.push({type:"warning",message:"skill path does not exist",path:resolvedPath});continue}try{let stats=statSync4(resolvedPath),source=getSource(resolvedPath);if(stats.isDirectory())addSkills(loadSkillsFromDirInternal(resolvedPath,source,!0));else if(stats.isFile()&&resolvedPath.endsWith(".md")){let result2=loadSkillFromFile(resolvedPath,source);result2.skill?addSkills({skills:[result2.skill],diagnostics:result2.diagnostics}):allDiagnostics.push(...result2.diagnostics)}else allDiagnostics.push({type:"warning",message:"skill path is not a markdown file",path:resolvedPath})}catch(error){let message=error instanceof Error?error.message:"failed to read skill path";allDiagnostics.push({type:"warning",message,path:resolvedPath})}}return{skills:Array.from(skillMap.values()),diagnostics:[...allDiagnostics,...collisionDiagnostics]}}var SYSTEM_PROMPT_SECTION_NAME=/^[a-z][a-z0-9_-]*$/;function normalizeBuildSystemPromptOptions(input2){return{customPrompt:input2.customPrompt,forceSystemPrompt:input2.forceSystemPrompt,selectedTools:[...input2.selectedTools??["read","bash","edit","write"]],hiddenTools:[...input2.hiddenTools??[]],toolSnippets:{...input2.toolSnippets??{}},toolGuidelines:Object.fromEntries(Object.entries(input2.toolGuidelines??{}).map(([name,guidelines])=>[name,[...guidelines]])),promptGuidelines:[...input2.promptGuidelines??[]],appendSystemPrompt:input2.appendSystemPrompt??"",sections:{...input2.sections??{}},cwd:input2.cwd,contextFiles:(input2.contextFiles??[]).map(file=>({...file})),skills:(input2.skills??[]).map(skill=>({...skill}))}}function renderProjectContext(contextFiles){return["Project-specific instructions and guidelines:",...contextFiles.map(({path:path10,content})=>`<project_instructions path="${path10}">
@@ -833,7 +833,7 @@ ${command}`:command,spawnContext=resolveSpawnContext(resolvedCommand,ctx?.cwd||c
833
833
  `),firstChangedLine}}async function computeEditsDiff(path10,edits,cwd){let absolutePath=resolveToCwd(path10,cwd);try{try{await access2(absolutePath,constants3.R_OK)}catch(error){let errorMessage5=error instanceof Error&&"code"in error?`Error code: ${error.code}`:String(error);return{error:`Could not edit file: ${path10}. ${errorMessage5}.`}}let rawContent=await readFile(absolutePath,"utf-8"),{text:content}=splitBom(rawContent),normalizedContent=normalizeToLF(content),{baseContent,newContent}=applyEditsToNormalizedContent(normalizedContent,edits,path10);return generateDiffString(baseContent,newContent)}catch(err){return{error:err instanceof Error?err.message:String(err)}}}import{realpath}from"node:fs/promises";import{resolve as resolve6}from"node:path";var fileMutationQueues=new Map,registrationQueue=Promise.resolve();function isMissingPathError(error){return typeof error=="object"&&error!==null&&"code"in error&&(error.code==="ENOENT"||error.code==="ENOTDIR")}async function getMutationQueueKey(filePath){let resolvedPath=resolve6(filePath);try{return await realpath(resolvedPath)}catch(error){if(isMissingPathError(error))return resolvedPath;throw error}}async function withFileMutationQueue(filePath,fn){let registration=registrationQueue.then(async()=>{let key2=await getMutationQueueKey(filePath),currentQueue2=fileMutationQueues.get(key2)??Promise.resolve(),releaseNext2,nextQueue=new Promise(resolveQueue=>{releaseNext2=resolveQueue}),chainedQueue2=currentQueue2.then(()=>nextQueue);return fileMutationQueues.set(key2,chainedQueue2),{key:key2,currentQueue:currentQueue2,chainedQueue:chainedQueue2,releaseNext:releaseNext2}});registrationQueue=registration.then(()=>{},()=>{});let{key,currentQueue,chainedQueue,releaseNext}=await registration;await currentQueue;try{return await fn()}finally{releaseNext(),fileMutationQueues.get(key)===chainedQueue&&fileMutationQueues.delete(key)}}var TAB=" ",WORD_DIFF_MAX_CHANGE=.4,WORD_TINT=.3,RESET="\x1B[0m",SGR=/\x1b\[[0-9;:]*m/y;function parseRows(diffText){let rows=[];for(let line of diffText.split(`
834
834
  `)){let match2=line.match(/^([+\- ])( *\d*) (.*)$/);if(!match2||match2[1]===" "&&!match2[2].trim()&&match2[3]==="..."){rows.push({kind:"skip"});continue}rows.push({kind:match2[1],lineNum:match2[2].trim(),content:match2[3].replace(/\t/g,TAB),emphasis:[]})}return rows}function wordRanges(oldText,newText){let oldRanges=[],newRanges=[],oldOffset=0,newOffset=0,changed=0;for(let part of diffWordsWithSpace(oldText,newText)){let length=part.value.length;part.removed?(oldRanges.push({start:oldOffset,end:oldOffset+length}),oldOffset+=length,changed+=length):part.added?(newRanges.push({start:newOffset,end:newOffset+length}),newOffset+=length,changed+=length):(oldOffset+=length,newOffset+=length)}let total=oldText.length+newText.length;return total>0&&changed/total>WORD_DIFF_MAX_CHANGE?[[],[]]:[oldRanges,newRanges]}function markWordChanges(rows){let i=0;for(;i<rows.length;){if(rows[i].kind!=="-"){i++;continue}let removedStart=i;for(;i<rows.length&&rows[i].kind==="-";)i++;let addedStart=i;for(;i<rows.length&&rows[i].kind==="+";)i++;let pairs=addedStart-removedStart===i-addedStart?i-addedStart:0;for(let k=0;k<pairs;k++){let removed=rows[removedStart+k],added=rows[addedStart+k];removed.kind==="skip"||added.kind==="skip"||([removed.emphasis,added.emphasis]=wordRanges(removed.content,added.content))}}}function emphasize(styled,ranges,on,off){if(ranges.length===0)return styled;let out="",offset=0,rangeIndex=0,i=0;for(;i<styled.length;){SGR.lastIndex=i;let sgr=SGR.exec(styled);if(sgr){out+=sgr[0],i+=sgr[0].length;continue}let range2=ranges[rangeIndex];range2&&offset===range2.start&&(out+=on),out+=styled[i],offset++,i++,range2&&offset===range2.end&&(out+=off,rangeIndex++)}return out}function highlightLine(content,lang,fallback){return lang?highlightCode(content,lang)[0]??content:theme.fg(fallback==="+"?"toolDiffAdded":"toolDiffContext",content)}function layoutRow(gutter,content,width,bg){let gutterWidth=visibleWidth(gutter),contentWidth=Math.max(1,width-gutterWidth);return wrapTextWithAnsi(bg?bg+content:content,contentWidth).map((piece,index)=>{let line=(index===0?gutter:" ".repeat(gutterWidth))+piece;if(!bg)return line;let pad=" ".repeat(Math.max(0,width-gutterWidth-visibleWidth(piece)));return`${bg}${line}${bg}${pad}${RESET}`})}function renderDiff(diffText,width,options={}){let rows=parseRows(diffText);markWordChanges(rows);let lang=options.filePath?getLanguageFromPath(options.filePath):void 0,digits=Math.max(1,...rows.map(row=>row.kind==="skip"?0:row.lineNum.length)),mode=theme.getColorMode(),colors=theme.colors,tint={"+":theme.getBgAnsi("toolSuccessBg"),"-":theme.getBgAnsi("toolErrorBg")},wordTint={"+":backgroundAnsi(mixColors(colors.toolSuccessBg,colors.toolDiffAdded,WORD_TINT),mode),"-":backgroundAnsi(mixColors(colors.toolErrorBg,colors.toolDiffRemoved,WORD_TINT),mode)},out=[];for(let row of rows){if(row.kind==="skip"){out.push(`${" ".repeat(digits+1)}${theme.fg("dim","\u22EE")}`);continue}let number=row.lineNum.padStart(digits);if(row.kind===" "){out.push(...layoutRow(`${theme.fg("dim",number)} `,highlightLine(row.content,lang," "),width));continue}let sign=row.kind,color=sign==="+"?"toolDiffAdded":"toolDiffRemoved",content=sign==="+"?highlightLine(row.content,lang,"+"):theme.fg("toolDiffRemoved",row.content),gutter=theme.fg(color,`${number} ${sign}`);out.push(...layoutRow(gutter,emphasize(content,row.emphasis,wordTint[sign],tint[sign]),width,tint[sign]))}return out}function renderNumberedLines(lines,width,firstLine3=1){let digits=String(firstLine3+lines.length-1).length;return lines.flatMap((line,index)=>layoutRow(`${theme.fg("dim",String(firstLine3+index).padStart(digits))} `,line,width))}var LinesView=class{renderLines;cache;constructor(renderLines){this.renderLines=renderLines}render(width){return this.cache?.width!==width&&(this.cache={width,lines:this.renderLines(width)}),this.cache.lines}invalidate(){this.cache=void 0}};function diffView(diffText,options={}){return new LinesView(width=>renderDiff(diffText,width,options))}function createEditCallRenderComponent(){return Object.assign(new Box(0,0),{preview:void 0,previewArgsKey:void 0,previewPending:!1,settledError:!1})}function getEditCallRenderComponent(state,lastComponent){if(lastComponent instanceof Box){let component2=lastComponent;return state.callComponent=component2,component2}if(state.callComponent)return state.callComponent;let component=createEditCallRenderComponent();return state.callComponent=component,component}function getRenderablePreviewInput(args){if(!args)return null;let path10=typeof args.path=="string"?args.path:typeof args.file_path=="string"?args.file_path:null;return path10?Array.isArray(args.edits)&&args.edits.length>0&&args.edits.every(edit=>typeof edit?.oldText=="string"&&typeof edit?.newText=="string")?{path:path10,edits:args.edits}:typeof args.oldText=="string"&&typeof args.newText=="string"?{path:path10,edits:[{oldText:args.oldText,newText:args.newText}]}:null:null}function formatEditCall(args,theme2,cwd){let pathDisplay=renderToolPath(str(args?.file_path??args?.path),theme2,cwd);return formatToolCall(theme2,"Update",pathDisplay)}function editPath(args){return str(args?.file_path??args?.path)||void 0}function summarizeDiff(diff){let additions=0,removals=0;for(let line of diff.split(`
835
835
  `))line.startsWith("+")?additions++:line.startsWith("-")&&removals++;return{additions,removals}}function formatDiffSummary(diff,theme2){let{additions,removals}=summarizeDiff(diff),count=(n,word)=>`${word} ${theme2.bold(String(n))} ${n===1?"line":"lines"}`,parts=[];return additions>0&&parts.push(count(additions,"Added")),removals>0&&parts.push(count(removals,parts.length>0?"removed":"Removed")),theme2.fg("toolOutput",parts.length>0?parts.join(", "):"No changes")}function formatEditResult(preview2,result2,theme2,isError){let previewDiff=preview2&&!("error"in preview2)?preview2.diff:void 0,previewError=preview2&&"error"in preview2?preview2.error:void 0;if(isError){let errorText2=result2.content.filter(c=>c.type==="text").map(c=>c.text||"").join(`
836
- `);return!errorText2||errorText2===previewError?void 0:{summary:theme2.fg("error",errorText2)}}let diff=result2.details?.diff??previewDiff;if(diff)return{summary:formatDiffSummary(diff,theme2),diff}}function buildEditCallComponent(component,args,theme2,cwd,showPreview){return component.clear(),component.addChild(new Text(formatEditCall(args,theme2,cwd),0,0)),!showPreview||!component.preview||("error"in component.preview?component.addChild(new Text(theme2.fg("error",component.preview.error),0,0)):component.addChild(diffView(component.preview.diff,{filePath:editPath(args)}))),component}function setEditPreview(component,preview2,argsKey){let current=component.preview,changed=current===void 0||("error"in current&&"error"in preview2?current.error!==preview2.error:"error"in current!="error"in preview2)||!("error"in current)&&!("error"in preview2)&&(current.diff!==preview2.diff||current.firstChangedLine!==preview2.firstChangedLine);return component.preview=preview2,component.previewArgsKey=argsKey,component.previewPending=!1,changed}var editRenderers={renderCall(args,theme2,context){let component=getEditCallRenderComponent(context.state,context.lastComponent),previewInput=getRenderablePreviewInput(args),argsKey=previewInput?JSON.stringify({path:previewInput.path,edits:previewInput.edits}):void 0;if(component.previewArgsKey!==argsKey&&(component.preview=void 0,component.previewArgsKey=argsKey,component.previewPending=!1,component.settledError=!1),context.argsComplete&&previewInput&&!component.preview&&!component.previewPending){component.previewPending=!0;let requestKey=argsKey;computeEditsDiff(previewInput.path,previewInput.edits,context.cwd).then(preview2=>{component.previewArgsKey===requestKey&&(setEditPreview(component,preview2,requestKey),context.invalidate())})}return buildEditCallComponent(component,args,theme2,context.cwd,context.isPartial)},renderResult(result2,_options,theme2,context){let callComponent=context.state.callComponent,previewInput=getRenderablePreviewInput(context.args),argsKey=previewInput?JSON.stringify({path:previewInput.path,edits:previewInput.edits}):void 0,typedResult=result2,resultDiff=context.isError?void 0:typedResult.details?.diff,changed=!1;callComponent&&(typeof resultDiff=="string"&&(changed=setEditPreview(callComponent,{diff:resultDiff,firstChangedLine:typedResult.details?.firstChangedLine},argsKey)||changed),callComponent.settledError!==context.isError&&(callComponent.settledError=context.isError,changed=!0),changed&&buildEditCallComponent(callComponent,context.args,theme2,context.cwd,context.isError));let output=formatEditResult(callComponent?.preview,typedResult,theme2,context.isError),component=context.lastComponent??new Container;return component.clear(),output&&(component.addChild(new Text(output.summary,0,0)),output.diff&&component.addChild(diffView(output.diff,{filePath:editPath(context.args)}))),component}};var replaceEditSchema=typebox_exports.Object({oldText:typebox_exports.String({description:"Exact text for one targeted replacement. It must be unique in the original file and must not overlap with any other edits[].oldText in the same call."}),newText:typebox_exports.String({description:"Replacement text for this targeted edit."})},{}),editSchema=typebox_exports.Object({path:typebox_exports.String({description:"Path to the file to edit (relative or absolute)"}),edits:typebox_exports.Array(replaceEditSchema,{description:"One or more targeted replacements. Each edit is matched against the original file, not incrementally. Do not include overlapping or nested edits. If two changes touch the same block or nearby lines, merge them into one edit instead."})},{}),editToolSystemPromptContribution={snippet:"Make precise file edits with exact text replacement, including multiple disjoint edits in one call",guidelines:["Use edit for precise changes (edits[].oldText must match exactly)","When changing multiple separate locations in one file, use one edit call with multiple entries in edits[] instead of multiple edit calls","Each edits[].oldText is matched against the original file, not after earlier edits are applied. Do not emit overlapping or nested edits. Merge nearby changes into one edit.","Keep edits[].oldText as small as possible while still being unique in the file. Do not pad with large unchanged regions."]};function isSingleEditInput(value){if(!value||typeof value!="object"||Array.isArray(value))return!1;let edit=value;return typeof edit.oldText=="string"&&typeof edit.newText=="string"}var defaultEditOperations={readFile:path10=>fsReadFile(path10),writeFile:(path10,content)=>fsWriteFile(path10,content,"utf-8"),access:path10=>fsAccess2(path10,constants4.R_OK|constants4.W_OK)};function prepareEditArguments(input2){if(!input2||typeof input2!="object")return input2;let args=input2;if(typeof args.edits=="string")try{let parsed=JSON.parse(args.edits);Array.isArray(parsed)?args.edits=parsed:isSingleEditInput(parsed)&&(args.edits=[parsed])}catch{}else isSingleEditInput(args.edits)&&(args.edits=[args.edits]);let legacy=args;if(typeof legacy.oldText!="string"||typeof legacy.newText!="string")return args;let edits=Array.isArray(legacy.edits)?[...legacy.edits]:[];edits.push({oldText:legacy.oldText,newText:legacy.newText});let{oldText:_oldText,newText:_newText,...rest}=legacy;return{...rest,edits}}function validateEditInput(input2){if(!Array.isArray(input2.edits)||input2.edits.length===0)throw new Error("Edit tool input is invalid. edits must contain at least one replacement.");return{path:input2.path,edits:input2.edits}}function createEditToolDefinition(cwd,options){let ops=options?.operations??defaultEditOperations;return{name:"edit",label:"edit",description:"Edit a single file using exact text replacement. Every edits[].oldText must match a unique, non-overlapping region of the original file. If two changes affect the same block or nearby lines, merge them into one edit instead of emitting overlapping edits. Do not include large unchanged regions just to connect distant changes.",promptSnippet:editToolSystemPromptContribution.snippet,promptGuidelines:[...editToolSystemPromptContribution.guidelines],parameters:editSchema,constrainedSampling:{type:"json_schema",strict:"prefer"},prepareArguments:prepareEditArguments,async execute(_toolCallId,input2,signal,_onUpdate,ctx){let{path:path10,edits}=validateEditInput(input2),absolutePath=resolveToCwd(path10,ctx?.cwd||cwd);return withFileMutationQueue(absolutePath,async()=>{let throwIfAborted=()=>{if(signal?.aborted)throw new Error("Operation aborted")};throwIfAborted();try{await ops.access(absolutePath)}catch(error){throwIfAborted();let errorMessage5=error instanceof Error&&"code"in error?`Error code: ${error.code}`:String(error);throw new Error(`Could not edit file: ${path10}. ${errorMessage5}.`)}throwIfAborted();let rawContent=(await ops.readFile(absolutePath)).toString("utf-8");throwIfAborted();let{bom,text:content}=splitBom(rawContent),originalEnding=detectLineEnding(content),normalizedContent=normalizeToLF(content),{baseContent,newContent}=applyEditsToNormalizedContent(normalizedContent,edits,path10);throwIfAborted();let finalContent=bom+restoreLineEndings(newContent,originalEnding);await ops.writeFile(absolutePath,finalContent),throwIfAborted();let diffResult=generateDiffString(baseContent,newContent),patch=generateUnifiedPatch(path10,baseContent,newContent);return{content:[{type:"text",text:`Successfully replaced ${edits.length} block(s) in ${path10}.`}],details:{diff:diffResult.diff,patch,firstChangedLine:diffResult.firstChangedLine}}})},...editRenderers}}function createEditTool(cwd,options){return wrapToolDefinition(createEditToolDefinition(cwd,options))}import{createInterface as createInterface2}from"node:readline";import{spawn as spawn3}from"child_process";import path3 from"path";import{spawnSync}from"child_process";import{chmodSync,createWriteStream,existsSync as existsSync9,mkdirSync as mkdirSync4,readdirSync as readdirSync5,renameSync,rmSync as rmSync3}from"fs";import{arch,platform}from"os";import{join as join10}from"path";import{Readable}from"stream";import{pipeline}from"stream/promises";var import_semver=__toESM(require_semver2(),1);var LATEST_VERSION_URL="https://knightcode.dev/api/latest-version",DEFAULT_VERSION_CHECK_TIMEOUT_MS=1e4,MAX_CAUSE_DEPTH=5;function formatVersionCheckError(error){let rootMessage=error instanceof Error&&error.message?error.message:String(error),codes=new Set,deepest,visit=(value,depth)=>{if(depth>MAX_CAUSE_DEPTH||typeof value!="object"||value===null)return;let candidate=value;if(typeof candidate.code=="string"&&codes.add(candidate.code),typeof candidate.message=="string"&&candidate.message&&(!deepest||depth>deepest.depth)&&(deepest={depth,message:candidate.message}),Array.isArray(candidate.errors))for(let entry of candidate.errors)visit(entry,depth+1);visit(candidate.cause,depth+1)};return visit(error instanceof Error?error.cause:void 0,1),codes.size>0?`${rootMessage} (${[...codes].join(", ")})`:deepest?`${rootMessage} (cause: ${deepest.message})`:rootMessage}function comparePackageVersions(leftVersion,rightVersion){let left=(0,import_semver.valid)(leftVersion.trim()),right=(0,import_semver.valid)(rightVersion.trim());if(!(!left||!right))return(0,import_semver.compare)(left,right)}function isNewerPackageVersion(candidateVersion,currentVersion){let comparison=comparePackageVersions(candidateVersion,currentVersion);return comparison!==void 0?comparison>0:candidateVersion.trim()!==currentVersion.trim()}async function getLatestPiRelease(currentVersion,options={}){if(process.env.KNIGHTCODE_OFFLINE)return;let response=await fetchWithRetry(LATEST_VERSION_URL,{headers:{"User-Agent":getKnightcodeUserAgent2(currentVersion),accept:"application/json"}},{maxRetries:options.retry?2:0,timeoutMs:options.timeoutMs??DEFAULT_VERSION_CHECK_TIMEOUT_MS});if(!response.ok)return;let data=await response.json();if(typeof data.version!="string"||!data.version.trim())return;let packageName=typeof data.packageName=="string"&&data.packageName.trim()?data.packageName.trim():void 0,note=typeof data.note=="string"&&data.note.trim()?data.note.trim():void 0;return{version:data.version.trim(),packageName,...note?{note}:{}}}async function checkForNewPiVersion(currentVersion){if(!process.env.KNIGHTCODE_SKIP_VERSION_CHECK)try{let latestRelease=await getLatestPiRelease(currentVersion);return latestRelease&&isNewerPackageVersion(latestRelease.version,currentVersion)?latestRelease:void 0}catch{return}}var TOOLS_DIR=getBinDir(),NETWORK_TIMEOUT_MS=1e4,DOWNLOAD_TIMEOUT_MS=12e4;function isOfflineModeEnabled(){let value=process.env.KNIGHTCODE_OFFLINE;return value?value==="1"||value.toLowerCase()==="true"||value.toLowerCase()==="yes":!1}var TOOLS={fd:{name:"fd",repo:"sharkdp/fd",binaryName:"fd",systemBinaryNames:["fd","fdfind"],tagPrefix:"v",getAssetName:(version2,plat,architecture)=>plat==="darwin"?`fd-v${version2}-${architecture==="arm64"?"aarch64":"x86_64"}-apple-darwin.tar.gz`:plat==="linux"?`fd-v${version2}-${architecture==="arm64"?"aarch64":"x86_64"}-unknown-linux-musl.tar.gz`:plat==="win32"?`fd-v${version2}-${architecture==="arm64"?"aarch64":"x86_64"}-pc-windows-msvc.zip`:null},rg:{name:"ripgrep",repo:"BurntSushi/ripgrep",binaryName:"rg",tagPrefix:"",getAssetName:(version2,plat,architecture)=>plat==="darwin"?`ripgrep-${version2}-${architecture==="arm64"?"aarch64":"x86_64"}-apple-darwin.tar.gz`:plat==="linux"?`ripgrep-${version2}-${architecture==="arm64"?"aarch64":"x86_64"}-unknown-linux-musl.tar.gz`:plat==="win32"?`ripgrep-${version2}-${architecture==="arm64"?"aarch64":"x86_64"}-pc-windows-msvc.zip`:null}};function commandExists(cmd){try{let result2=spawnSync(cmd,["--version"],{stdio:"pipe"});return result2.error===void 0||result2.error===null}catch{return!1}}function getToolPath(tool){let config=TOOLS[tool];if(!config)return null;let localPath=join10(TOOLS_DIR,config.binaryName+(platform()==="win32"?".exe":""));if(existsSync9(localPath))return localPath;let systemBinaryNames=config.systemBinaryNames??[config.binaryName];for(let systemBinaryName of systemBinaryNames)if(commandExists(systemBinaryName))return systemBinaryName;return null}async function getLatestVersion(repo){let response=await fetchWithRetry(`https://github.com/${repo}/releases/latest`,{headers:{"User-Agent":`${APP_NAME}-cli`},redirect:"manual"},{timeoutMs:NETWORK_TIMEOUT_MS});try{await response.body?.cancel()}catch{}let location=response.status>=300&&response.status<400?response.headers.get("location"):null;if(!location)throw new Error(`Failed to resolve latest ${repo} release: HTTP ${response.status} without redirect`);let unexpectedRedirect=()=>new Error(`Failed to resolve latest ${repo} release: unexpected redirect to ${location}`),redirect;try{redirect=new URL(location,"https://github.com")}catch{throw unexpectedRedirect()}let tagPrefix=`/${repo}/releases/tag/`;if(redirect.origin!=="https://github.com"||redirect.search!==""||redirect.hash!==""||!redirect.pathname.startsWith(tagPrefix))throw unexpectedRedirect();let tag;try{tag=decodeURIComponent(redirect.pathname.slice(tagPrefix.length))}catch{throw unexpectedRedirect()}if(!/^[\w.+-]+$/.test(tag)||tag.includes(".."))throw unexpectedRedirect();return tag.replace(/^v/,"")}async function downloadFile(url,dest){let response=await fetchWithRetry(url,void 0,{timeoutMs:DOWNLOAD_TIMEOUT_MS});if(!response.ok)throw new Error(`Download failed with HTTP ${response.status}: ${url}`);if(!response.body)throw new Error("No response body");let fileStream=createWriteStream(dest);await pipeline(Readable.fromWeb(response.body),fileStream)}function findBinaryRecursively(rootDir,binaryFileName){let stack=[rootDir];for(;stack.length>0;){let currentDir=stack.pop();if(!currentDir)continue;let entries=readdirSync5(currentDir,{withFileTypes:!0});for(let entry of entries){let fullPath=join10(currentDir,entry.name);if(entry.isFile()&&entry.name===binaryFileName)return fullPath;entry.isDirectory()&&stack.push(fullPath)}}return null}function formatSpawnFailure(result2){if(result2.error?.message)return result2.error.message;let stderr=result2.stderr?.toString().trim();if(stderr)return stderr;let stdout=result2.stdout?.toString().trim();return stdout||`exit status ${result2.status??"unknown"}`}function runExtractionCommand(command,args){let result2=spawnSync(command,args,{stdio:"pipe"});return!result2.error&&result2.status===0?null:`${command}: ${formatSpawnFailure(result2)}`}function extractTarGzArchive(archivePath,extractDir,assetName){let failure=runExtractionCommand("tar",["xzf",archivePath,"-C",extractDir]);if(failure)throw new Error(`Failed to extract ${assetName}: ${failure}`)}function getWindowsTarCommand(){let systemRoot=process.env.SystemRoot??process.env.WINDIR;if(systemRoot){let systemTar=join10(systemRoot,"System32","tar.exe");if(existsSync9(systemTar))return systemTar}return"tar.exe"}function extractZipArchive(archivePath,extractDir,assetName){let failures=[];if(platform()==="win32"){let tarFailure=runExtractionCommand(getWindowsTarCommand(),["xf",archivePath,"-C",extractDir]);if(!tarFailure)return;failures.push(tarFailure);let powershellFailure=runExtractionCommand("powershell.exe",["-NoLogo","-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-Command","& { param($archive, $destination) $ErrorActionPreference = 'Stop'; Expand-Archive -LiteralPath $archive -DestinationPath $destination -Force }",archivePath,extractDir]);if(!powershellFailure)return;failures.push(powershellFailure)}else{let unzipFailure=runExtractionCommand("unzip",["-q",archivePath,"-d",extractDir]);if(!unzipFailure)return;failures.push(unzipFailure);let tarFailure=runExtractionCommand("tar",["xf",archivePath,"-C",extractDir]);if(!tarFailure)return;failures.push(tarFailure)}throw new Error(`Failed to extract ${assetName}: ${failures.join("; ")}`)}async function downloadTool(tool){let config=TOOLS[tool];if(!config)throw new Error(`Unknown tool: ${tool}`);let plat=platform(),architecture=arch(),version2=tool==="fd"&&plat==="darwin"&&architecture==="x64"?"10.3.0":await getLatestVersion(config.repo),assetName=config.getAssetName(version2,plat,architecture);if(!assetName)throw new Error(`Unsupported platform: ${plat}/${architecture}`);mkdirSync4(TOOLS_DIR,{recursive:!0});let downloadUrl=`https://github.com/${config.repo}/releases/download/${config.tagPrefix}${version2}/${assetName}`,archivePath=join10(TOOLS_DIR,assetName),binaryExt=plat==="win32"?".exe":"",binaryPath=join10(TOOLS_DIR,config.binaryName+binaryExt);await downloadFile(downloadUrl,archivePath);let extractDir=join10(TOOLS_DIR,`extract_tmp_${config.binaryName}_${process.pid}_${Date.now()}_${Math.random().toString(36).slice(2,10)}`);mkdirSync4(extractDir,{recursive:!0});try{if(assetName.endsWith(".tar.gz"))extractTarGzArchive(archivePath,extractDir,assetName);else if(assetName.endsWith(".zip"))extractZipArchive(archivePath,extractDir,assetName);else throw new Error(`Unsupported archive format: ${assetName}`);let binaryFileName=config.binaryName+binaryExt,extractedDir=join10(extractDir,assetName.replace(/\.(tar\.gz|zip)$/,"")),extractedBinary=[join10(extractedDir,binaryFileName),join10(extractDir,binaryFileName)].find(candidate=>existsSync9(candidate));if(extractedBinary||(extractedBinary=findBinaryRecursively(extractDir,binaryFileName)??void 0),extractedBinary)renameSync(extractedBinary,binaryPath);else throw new Error(`Binary not found in archive: expected ${binaryFileName} under ${extractDir}`);plat!=="win32"&&chmodSync(binaryPath,493)}finally{rmSync3(archivePath,{force:!0}),rmSync3(extractDir,{recursive:!0,force:!0})}return binaryPath}var TERMUX_PACKAGES={fd:"fd",rg:"ripgrep"};async function ensureTool(tool,onStatus){let existingPath=getToolPath(tool);if(existingPath)return existingPath;let config=TOOLS[tool];if(config){if(isOfflineModeEnabled()){onStatus?.({type:"warning",message:`${config.name} not found. Offline mode enabled, skipping download.`});return}if(platform()==="android"){let pkgName=TERMUX_PACKAGES[tool]??tool;onStatus?.({type:"warning",message:`${config.name} not found. Install with: pkg install ${pkgName}`});return}onStatus?.({type:"info",message:`${config.name} not found. Downloading...`});try{let path10=await downloadTool(tool);return onStatus?.({type:"info",message:`${config.name} installed to ${path10}`}),path10}catch(e){onStatus?.({type:"warning",message:`Failed to download ${config.name}: ${formatVersionCheckError(e)}`});return}}}function formatFindCall(args,theme2){let pattern=str(args?.pattern),rawPath=str(args?.path),path10=rawPath!==null?shortenPath(rawPath||"."):null,limit=args?.limit,invalidArg=invalidArgText(theme2),callArgs=(pattern===null?invalidArg:theme2.fg("accent",pattern||""))+theme2.fg("toolOutput",` in ${path10===null?invalidArg:path10}`);return limit!==void 0&&(callArgs+=theme2.fg("toolOutput",`, limit ${limit}`)),formatToolCall(theme2,"Glob",callArgs)}function formatFindResult(result2,options,theme2,showImages){let output=getTextOutput(result2,showImages).trim(),lines=output?output.split(`
836
+ `);return!errorText2||errorText2===previewError?void 0:{summary:theme2.fg("error",errorText2)}}let diff=result2.details?.diff??previewDiff;if(diff)return{summary:formatDiffSummary(diff,theme2),diff}}function buildEditCallComponent(component,args,theme2,cwd,showPreview){return component.clear(),component.addChild(new Text(formatEditCall(args,theme2,cwd),0,0)),!showPreview||!component.preview||("error"in component.preview?component.addChild(new Text(theme2.fg("error",component.preview.error),0,0)):component.addChild(diffView(component.preview.diff,{filePath:editPath(args)}))),component}function setEditPreview(component,preview2,argsKey){let current=component.preview,changed=current===void 0||("error"in current&&"error"in preview2?current.error!==preview2.error:"error"in current!="error"in preview2)||!("error"in current)&&!("error"in preview2)&&(current.diff!==preview2.diff||current.firstChangedLine!==preview2.firstChangedLine);return component.preview=preview2,component.previewArgsKey=argsKey,component.previewPending=!1,changed}var editRenderers={renderCall(args,theme2,context){let component=getEditCallRenderComponent(context.state,context.lastComponent),previewInput=getRenderablePreviewInput(args),argsKey=previewInput?JSON.stringify({path:previewInput.path,edits:previewInput.edits}):void 0;if(component.previewArgsKey!==argsKey&&(component.preview=void 0,component.previewArgsKey=argsKey,component.previewPending=!1,component.settledError=!1),context.argsComplete&&previewInput&&!component.preview&&!component.previewPending){component.previewPending=!0;let requestKey=argsKey;computeEditsDiff(previewInput.path,previewInput.edits,context.cwd).then(preview2=>{component.previewArgsKey===requestKey&&(setEditPreview(component,preview2,requestKey),context.invalidate())})}return buildEditCallComponent(component,args,theme2,context.cwd,context.isPartial)},renderResult(result2,_options,theme2,context){let callComponent=context.state.callComponent,previewInput=getRenderablePreviewInput(context.args),argsKey=previewInput?JSON.stringify({path:previewInput.path,edits:previewInput.edits}):void 0,typedResult=result2,resultDiff=context.isError?void 0:typedResult.details?.diff,changed=!1;callComponent&&(typeof resultDiff=="string"&&(changed=setEditPreview(callComponent,{diff:resultDiff,firstChangedLine:typedResult.details?.firstChangedLine},argsKey)||changed),callComponent.settledError!==context.isError&&(callComponent.settledError=context.isError,changed=!0),changed&&buildEditCallComponent(callComponent,context.args,theme2,context.cwd,context.isError));let output=formatEditResult(callComponent?.preview,typedResult,theme2,context.isError),component=context.lastComponent??new Container;return component.clear(),output&&(component.addChild(new Text(output.summary,0,0)),output.diff&&component.addChild(diffView(output.diff,{filePath:editPath(context.args)}))),component}};var replaceEditSchema=typebox_exports.Object({oldText:typebox_exports.String({description:"Exact text for one targeted replacement. It must be unique in the original file and must not overlap with any other edits[].oldText in the same call."}),newText:typebox_exports.String({description:"Replacement text for this targeted edit."})},{}),editSchema=typebox_exports.Object({path:typebox_exports.String({description:"Path to the file to edit (relative or absolute)"}),edits:typebox_exports.Array(replaceEditSchema,{description:"One or more targeted replacements. Each edit is matched against the original file, not incrementally. Do not include overlapping or nested edits. If two changes touch the same block or nearby lines, merge them into one edit instead."})},{}),editToolSystemPromptContribution={snippet:"Make precise file edits with exact text replacement, including multiple disjoint edits in one call",guidelines:["Use edit for precise changes (edits[].oldText must match exactly)","When changing multiple separate locations in one file, use one edit call with multiple entries in edits[] instead of multiple edit calls","Each edits[].oldText is matched against the original file, not after earlier edits are applied. Do not emit overlapping or nested edits. Merge nearby changes into one edit.","Keep edits[].oldText as small as possible while still being unique in the file. Do not pad with large unchanged regions."]};function isSingleEditInput(value){if(!value||typeof value!="object"||Array.isArray(value))return!1;let edit=value;return typeof edit.oldText=="string"&&typeof edit.newText=="string"}var defaultEditOperations={readFile:path10=>fsReadFile(path10),writeFile:(path10,content)=>fsWriteFile(path10,content,"utf-8"),access:path10=>fsAccess2(path10,constants4.R_OK|constants4.W_OK)};function prepareEditArguments(input2){if(!input2||typeof input2!="object")return input2;let args=input2;if(typeof args.edits=="string")try{let parsed=JSON.parse(args.edits);Array.isArray(parsed)?args.edits=parsed:isSingleEditInput(parsed)&&(args.edits=[parsed])}catch{}else isSingleEditInput(args.edits)&&(args.edits=[args.edits]);let legacy=args;if(typeof legacy.oldText!="string"||typeof legacy.newText!="string")return args;let edits=Array.isArray(legacy.edits)?[...legacy.edits]:[];edits.push({oldText:legacy.oldText,newText:legacy.newText});let{oldText:_oldText,newText:_newText,...rest}=legacy;return{...rest,edits}}function validateEditInput(input2){if(!Array.isArray(input2.edits)||input2.edits.length===0)throw new Error("Edit tool input is invalid. edits must contain at least one replacement.");return{path:input2.path,edits:input2.edits}}function createEditToolDefinition(cwd,options){let ops=options?.operations??defaultEditOperations;return{name:"edit",label:"edit",description:"Edit a single file using exact text replacement. Every edits[].oldText must match a unique, non-overlapping region of the original file. If two changes affect the same block or nearby lines, merge them into one edit instead of emitting overlapping edits. Do not include large unchanged regions just to connect distant changes.",promptSnippet:editToolSystemPromptContribution.snippet,promptGuidelines:[...editToolSystemPromptContribution.guidelines],parameters:editSchema,constrainedSampling:{type:"json_schema",strict:"prefer"},prepareArguments:prepareEditArguments,async execute(_toolCallId,input2,signal,_onUpdate,ctx){let{path:path10,edits}=validateEditInput(input2),absolutePath=resolveToCwd(path10,ctx?.cwd||cwd);return withFileMutationQueue(absolutePath,async()=>{let throwIfAborted=()=>{if(signal?.aborted)throw new Error("Operation aborted")};throwIfAborted();try{await ops.access(absolutePath)}catch(error){throwIfAborted();let errorMessage5=error instanceof Error&&"code"in error?`Error code: ${error.code}`:String(error);throw new Error(`Could not edit file: ${path10}. ${errorMessage5}.`)}throwIfAborted();let rawContent=(await ops.readFile(absolutePath)).toString("utf-8");throwIfAborted();let{bom,text:content}=splitBom(rawContent),originalEnding=detectLineEnding(content),normalizedContent=normalizeToLF(content),{baseContent,newContent}=applyEditsToNormalizedContent(normalizedContent,edits,path10);throwIfAborted();let finalContent=bom+restoreLineEndings(newContent,originalEnding);await ops.writeFile(absolutePath,finalContent),throwIfAborted();let diffResult=generateDiffString(baseContent,newContent),patch=generateUnifiedPatch(path10,baseContent,newContent);return{content:[{type:"text",text:`Successfully replaced ${edits.length} block(s) in ${path10}.`}],details:{diff:diffResult.diff,patch,firstChangedLine:diffResult.firstChangedLine}}})},...editRenderers}}function createEditTool(cwd,options){return wrapToolDefinition(createEditToolDefinition(cwd,options))}import{createInterface as createInterface2}from"node:readline";import{spawn as spawn3}from"child_process";import path3 from"path";import{spawnSync}from"child_process";import{chmodSync,createWriteStream,existsSync as existsSync9,mkdirSync as mkdirSync4,readdirSync as readdirSync5,renameSync,rmSync as rmSync3}from"fs";import{arch,platform}from"os";import{join as join10}from"path";import{Readable}from"stream";import{pipeline}from"stream/promises";var import_semver=__toESM(require_semver2(),1);var LATEST_VERSION_URL="https://knightcode.dev/api/latest-version",DEFAULT_VERSION_CHECK_TIMEOUT_MS=1e4,MAX_CAUSE_DEPTH=5;function formatVersionCheckError(error){let rootMessage=error instanceof Error&&error.message?error.message:String(error),codes=new Set,deepest,visit=(value,depth)=>{if(depth>MAX_CAUSE_DEPTH||typeof value!="object"||value===null)return;let candidate=value;if(typeof candidate.code=="string"&&codes.add(candidate.code),typeof candidate.message=="string"&&candidate.message&&(!deepest||depth>deepest.depth)&&(deepest={depth,message:candidate.message}),Array.isArray(candidate.errors))for(let entry of candidate.errors)visit(entry,depth+1);visit(candidate.cause,depth+1)};return visit(error instanceof Error?error.cause:void 0,1),codes.size>0?`${rootMessage} (${[...codes].join(", ")})`:deepest?`${rootMessage} (cause: ${deepest.message})`:rootMessage}function comparePackageVersions(leftVersion,rightVersion){let left=(0,import_semver.valid)(leftVersion.trim()),right=(0,import_semver.valid)(rightVersion.trim());if(!(!left||!right))return(0,import_semver.compare)(left,right)}function isNewerPackageVersion(candidateVersion,currentVersion){let comparison=comparePackageVersions(candidateVersion,currentVersion);return comparison!==void 0?comparison>0:candidateVersion.trim()!==currentVersion.trim()}async function getLatestPiRelease(currentVersion,options={}){if(process.env.KNIGHTCODE_OFFLINE)return;let response=await fetchWithRetry(LATEST_VERSION_URL,{headers:{"User-Agent":getKnightcodeUserAgent2(currentVersion),accept:"application/json"}},{maxRetries:options.retry?2:0,timeoutMs:options.timeoutMs??DEFAULT_VERSION_CHECK_TIMEOUT_MS});if(!response.ok)return;let data=await response.json();if(typeof data.version!="string"||!data.version.trim())return;let packageName=typeof data.packageName=="string"&&data.packageName.trim()?data.packageName.trim():void 0,note=typeof data.note=="string"&&data.note.trim()?data.note.trim():void 0;return{version:data.version.trim(),packageName,...note?{note}:{}}}async function checkForNewPiVersion(currentVersion){if(!process.env.KNIGHTCODE_SKIP_VERSION_CHECK)try{let latestRelease=await getLatestPiRelease(currentVersion);return latestRelease&&isNewerPackageVersion(latestRelease.version,currentVersion)?latestRelease:void 0}catch{return}}var TOOLS_DIR=getBinDir(),NETWORK_TIMEOUT_MS=1e4,DOWNLOAD_TIMEOUT_MS=12e4;function isOfflineModeEnabled(){let value=process.env.KNIGHTCODE_OFFLINE;return value?value==="1"||value.toLowerCase()==="true"||value.toLowerCase()==="yes":!1}var TOOLS={fd:{name:"fd",repo:"sharkdp/fd",binaryName:"fd",systemBinaryNames:["fd","fdfind"],tagPrefix:"v",getAssetName:(version2,plat,architecture)=>plat==="darwin"?`fd-v${version2}-${architecture==="arm64"?"aarch64":"x86_64"}-apple-darwin.tar.gz`:plat==="linux"?`fd-v${version2}-${architecture==="arm64"?"aarch64":"x86_64"}-unknown-linux-musl.tar.gz`:plat==="win32"?`fd-v${version2}-${architecture==="arm64"?"aarch64":"x86_64"}-pc-windows-msvc.zip`:null},rg:{name:"ripgrep",repo:"BurntSushi/ripgrep",binaryName:"rg",tagPrefix:"",getAssetName:(version2,plat,architecture)=>plat==="darwin"?`ripgrep-${version2}-${architecture==="arm64"?"aarch64":"x86_64"}-apple-darwin.tar.gz`:plat==="linux"?`ripgrep-${version2}-${architecture==="arm64"?"aarch64":"x86_64"}-unknown-linux-musl.tar.gz`:plat==="win32"?`ripgrep-${version2}-${architecture==="arm64"?"aarch64":"x86_64"}-pc-windows-msvc.zip`:null}};function commandExists(cmd){try{let result2=spawnSync(cmd,["--version"],{stdio:"pipe"});return result2.error===void 0||result2.error===null}catch{return!1}}function getToolPath(tool){let config=TOOLS[tool];if(!config)return null;let localPath=join10(TOOLS_DIR,config.binaryName+(platform()==="win32"?".exe":""));if(existsSync9(localPath))return localPath;let systemBinaryNames=config.systemBinaryNames??[config.binaryName];for(let systemBinaryName of systemBinaryNames)if(commandExists(systemBinaryName))return systemBinaryName;return null}async function getLatestVersion(repo){let response=await fetchWithRetry(`https://github.com/${repo}/releases/latest`,{headers:{"User-Agent":`${APP_NAME}-cli`},redirect:"manual"},{timeoutMs:NETWORK_TIMEOUT_MS});try{await response.body?.cancel()}catch{}let location=response.status>=300&&response.status<400?response.headers.get("location"):null;if(!location)throw new Error(`Failed to resolve latest ${repo} release: HTTP ${response.status} without redirect`);let unexpectedRedirect=()=>new Error(`Failed to resolve latest ${repo} release: unexpected redirect to ${location}`),redirect;try{redirect=new URL(location,"https://github.com")}catch{throw unexpectedRedirect()}let tagPrefix=`/${repo}/releases/tag/`;if(redirect.origin!=="https://github.com"||redirect.search!==""||redirect.hash!==""||!redirect.pathname.startsWith(tagPrefix))throw unexpectedRedirect();let tag;try{tag=decodeURIComponent(redirect.pathname.slice(tagPrefix.length))}catch{throw unexpectedRedirect()}if(!/^[\w.+-]+$/.test(tag)||tag.includes(".."))throw unexpectedRedirect();return tag.replace(/^v/,"")}async function downloadFile(url,dest){let response=await fetchWithRetry(url,void 0,{timeoutMs:DOWNLOAD_TIMEOUT_MS});if(!response.ok)throw new Error(`Download failed with HTTP ${response.status}: ${url}`);if(!response.body)throw new Error("No response body");let fileStream=createWriteStream(dest);await pipeline(Readable.fromWeb(response.body),fileStream)}function findBinaryRecursively(rootDir,binaryFileName){let stack=[rootDir];for(;stack.length>0;){let currentDir=stack.pop();if(!currentDir)continue;let entries=readdirSync5(currentDir,{withFileTypes:!0});for(let entry of entries){let fullPath=join10(currentDir,entry.name);if(entry.isFile()&&entry.name===binaryFileName)return fullPath;entry.isDirectory()&&stack.push(fullPath)}}return null}function formatSpawnFailure(result2){if(result2.error?.message)return result2.error.message;let stderr=result2.stderr?.toString().trim();if(stderr)return stderr;let stdout=result2.stdout?.toString().trim();return stdout||`exit status ${result2.status??"unknown"}`}function runExtractionCommand(command,args){let result2=spawnSync(command,args,{stdio:"pipe"});return!result2.error&&result2.status===0?null:`${command}: ${formatSpawnFailure(result2)}`}function extractTarGzArchive(archivePath,extractDir,assetName){let failure=runExtractionCommand("tar",["xzf",archivePath,"-C",extractDir]);if(failure)throw new Error(`Failed to extract ${assetName}: ${failure}`)}function getWindowsTarCommand(){let systemRoot=process.env.SystemRoot;if(systemRoot){let systemTar=join10(systemRoot,"System32","tar.exe");if(existsSync9(systemTar))return systemTar}return"tar.exe"}function extractZipArchive(archivePath,extractDir,assetName){let failures=[];if(platform()==="win32"){let tarFailure=runExtractionCommand(getWindowsTarCommand(),["xf",archivePath,"-C",extractDir]);if(!tarFailure)return;failures.push(tarFailure);let powershellFailure=runExtractionCommand("powershell.exe",["-NoLogo","-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-Command","& { param($archive, $destination) $ErrorActionPreference = 'Stop'; Expand-Archive -LiteralPath $archive -DestinationPath $destination -Force }",archivePath,extractDir]);if(!powershellFailure)return;failures.push(powershellFailure)}else{let unzipFailure=runExtractionCommand("unzip",["-q",archivePath,"-d",extractDir]);if(!unzipFailure)return;failures.push(unzipFailure);let tarFailure=runExtractionCommand("tar",["xf",archivePath,"-C",extractDir]);if(!tarFailure)return;failures.push(tarFailure)}throw new Error(`Failed to extract ${assetName}: ${failures.join("; ")}`)}async function downloadTool(tool){let config=TOOLS[tool];if(!config)throw new Error(`Unknown tool: ${tool}`);let plat=platform(),architecture=arch(),version2=tool==="fd"&&plat==="darwin"&&architecture==="x64"?"10.3.0":await getLatestVersion(config.repo),assetName=config.getAssetName(version2,plat,architecture);if(!assetName)throw new Error(`Unsupported platform: ${plat}/${architecture}`);mkdirSync4(TOOLS_DIR,{recursive:!0});let downloadUrl=`https://github.com/${config.repo}/releases/download/${config.tagPrefix}${version2}/${assetName}`,archivePath=join10(TOOLS_DIR,assetName),binaryExt=plat==="win32"?".exe":"",binaryPath=join10(TOOLS_DIR,config.binaryName+binaryExt);await downloadFile(downloadUrl,archivePath);let extractDir=join10(TOOLS_DIR,`extract_tmp_${config.binaryName}_${process.pid}_${Date.now()}_${Math.random().toString(36).slice(2,10)}`);mkdirSync4(extractDir,{recursive:!0});try{if(assetName.endsWith(".tar.gz"))extractTarGzArchive(archivePath,extractDir,assetName);else if(assetName.endsWith(".zip"))extractZipArchive(archivePath,extractDir,assetName);else throw new Error(`Unsupported archive format: ${assetName}`);let binaryFileName=config.binaryName+binaryExt,extractedDir=join10(extractDir,assetName.replace(/\.(tar\.gz|zip)$/,"")),extractedBinary=[join10(extractedDir,binaryFileName),join10(extractDir,binaryFileName)].find(candidate=>existsSync9(candidate));if(extractedBinary||(extractedBinary=findBinaryRecursively(extractDir,binaryFileName)??void 0),extractedBinary)renameSync(extractedBinary,binaryPath);else throw new Error(`Binary not found in archive: expected ${binaryFileName} under ${extractDir}`);plat!=="win32"&&chmodSync(binaryPath,493)}finally{rmSync3(archivePath,{force:!0}),rmSync3(extractDir,{recursive:!0,force:!0})}return binaryPath}var TERMUX_PACKAGES={fd:"fd",rg:"ripgrep"};async function ensureTool(tool,onStatus){let existingPath=getToolPath(tool);if(existingPath)return existingPath;let config=TOOLS[tool];if(config){if(isOfflineModeEnabled()){onStatus?.({type:"warning",message:`${config.name} not found. Offline mode enabled, skipping download.`});return}if(platform()==="android"){let pkgName=TERMUX_PACKAGES[tool]??tool;onStatus?.({type:"warning",message:`${config.name} not found. Install with: pkg install ${pkgName}`});return}onStatus?.({type:"info",message:`${config.name} not found. Downloading...`});try{let path10=await downloadTool(tool);return onStatus?.({type:"info",message:`${config.name} installed to ${path10}`}),path10}catch(e){onStatus?.({type:"warning",message:`Failed to download ${config.name}: ${formatVersionCheckError(e)}`});return}}}function formatFindCall(args,theme2){let pattern=str(args?.pattern),rawPath=str(args?.path),path10=rawPath!==null?shortenPath(rawPath||"."):null,limit=args?.limit,invalidArg=invalidArgText(theme2),callArgs=(pattern===null?invalidArg:theme2.fg("accent",pattern||""))+theme2.fg("toolOutput",` in ${path10===null?invalidArg:path10}`);return limit!==void 0&&(callArgs+=theme2.fg("toolOutput",`, limit ${limit}`)),formatToolCall(theme2,"Glob",callArgs)}function formatFindResult(result2,options,theme2,showImages){let output=getTextOutput(result2,showImages).trim(),lines=output?output.split(`
837
837
  `):[],text="";options.expanded?lines.length>0&&(text=lines.map(line=>theme2.fg("toolOutput",line)).join(`
838
838
  `)):text=formatToolSummary(theme2,`Found ${plural(lines.length,"file")}`,lines.length>0);let resultLimit=result2.details?.resultLimitReached,truncation=result2.details?.truncation;if(resultLimit||truncation?.truncated){let warnings=[];resultLimit&&warnings.push(`${resultLimit} results limit`),truncation?.truncated&&warnings.push(`${formatSize(truncation.maxBytes??51200)} limit`),text+=`${text?`
839
839
  `:""}${theme2.fg("warning",`[Truncated: ${warnings.join(", ")}]`)}`}return text}var findRenderers={renderCall(args,theme2,context){let text=context.lastComponent??new Text("",0,0);return text.setText(formatFindCall(args,theme2)),text},renderResult(result2,options,theme2,context){let text=context.lastComponent??new Text("",0,0);return text.setText(formatFindResult(result2,options,theme2,context.showImages)),text}};function relativizeFindResultPath(resultPath,searchPath,pathModule=path3){let hadTrailingSeparator=resultPath.endsWith(pathModule.sep)||pathModule.sep==="\\"&&resultPath.endsWith("/"),posixPath=(pathModule.isAbsolute(resultPath)?pathModule.relative(searchPath,resultPath):resultPath).split(pathModule.sep).join("/");return hadTrailingSeparator&&!posixPath.endsWith("/")?`${posixPath}/`:posixPath}var findSchema=typebox_exports.Object({pattern:typebox_exports.String({description:"Glob pattern to match files, e.g. '*.ts', '**/*.json', or 'src/**/*.spec.ts'"}),path:typebox_exports.Optional(typebox_exports.String({description:"Directory to search in (default: current directory)"})),limit:typebox_exports.Optional(typebox_exports.Number({description:"Maximum number of results (default: 1000)"}))}),findToolSystemPromptContribution={snippet:"Find files by glob pattern (respects .gitignore)",guidelines:[]},DEFAULT_LIMIT=1e3,defaultFindOperations={exists:pathExists,glob:()=>[]};function createFindToolDefinition(cwd,options){let customOps=options?.operations;return{name:"find",label:"find",description:`Search for files by glob pattern. Returns matching file paths relative to the search directory. Respects .gitignore. Output is truncated to ${DEFAULT_LIMIT} results or ${51200/1024}KB (whichever is hit first).`,promptSnippet:findToolSystemPromptContribution.snippet,parameters:findSchema,async execute(_toolCallId,{pattern,path:searchDir,limit},signal,_onUpdate,ctx){return new Promise((resolve17,reject)=>{if(signal?.aborted){reject(new Error("Operation aborted"));return}let settled=!1,stopChild,settle=fn=>{settled||(settled=!0,signal?.removeEventListener("abort",onAbort),stopChild=void 0,fn())},onAbort=()=>{stopChild?.(),settle(()=>reject(new Error("Operation aborted")))};signal?.addEventListener("abort",onAbort,{once:!0}),(async()=>{try{let searchPath=resolveToCwd(searchDir||".",ctx?.cwd||cwd),effectiveLimit=limit??DEFAULT_LIMIT,ops=customOps??defaultFindOperations;if(customOps?.glob){if(!await ops.exists(searchPath)){settle(()=>reject(new Error(`Path not found: ${searchPath}`)));return}if(signal?.aborted){settle(()=>reject(new Error("Operation aborted")));return}let results=await ops.glob(pattern,searchPath,{ignore:["**/node_modules/**","**/.git/**"],limit:effectiveLimit});if(signal?.aborted){settle(()=>reject(new Error("Operation aborted")));return}if(results.length===0){settle(()=>resolve17({content:[{type:"text",text:"No files found matching pattern"}],details:void 0}));return}let relativized=results.map(p=>relativizeFindResultPath(p,searchPath)),resultLimitReached=relativized.length>=effectiveLimit,rawOutput=relativized.join(`
@@ -914,7 +914,7 @@ ${truncation.content}
914
914
 
915
915
  ${where}`},...content.filter(block=>block.type==="image")],...fullOutputPath?{fullOutputPath}:{}}}function extensionOf(uri){let path10=URL.canParse(uri)?new URL(uri).pathname:uri;return/\.[A-Za-z0-9]{1,8}$/.exec(path10)?.[0]??".bin"}function isTextMimeType(mimeType){if(!mimeType)return!1;let type=mimeType.split(";",1)[0].trim().toLowerCase();return type.startsWith("text/")||type==="application/json"||type.endsWith("+json")||type.endsWith("+xml")}async function blockToContent(server,block,options){if(block.type==="resource_link"){let details=[block.mimeType,block.size===void 0?void 0:formatSize(block.size)].filter(Boolean),read=options.readableResources?`. Read it with ${READ_MCP_RESOURCE_TOOL} (server "${server}")`:"",description=block.description?`: ${block.description}`:"";return[{type:"text",text:`[Resource ${block.uri} "${block.title??block.name}"${details.length>0?` (${details.join(", ")})`:""}${description}${read}]`}]}if(block.type==="resource"&&"blob"in block.resource&&!block.resource.mimeType?.startsWith("image/")){let{uri,mimeType,blob}=block.resource,data=Buffer.from(blob,"base64");if(isTextMimeType(mimeType))return[{type:"text",text:data.toString("utf8")}];let kind=`${mimeType??"unknown type"}, ${formatSize(data.length)}`;try{let path10=await(options.saveOutput??saveToTempFile)(data,extensionOf(uri));return[{type:"text",text:`[Binary resource ${uri} (${kind}) saved to ${path10}]`}]}catch(error){let reason=error instanceof Error?error.message:String(error);return[{type:"text",text:`[Binary resource ${uri} (${kind}) could not be saved: ${reason}]`}]}}return toLlmContent({content:[block]})}async function toModelContent(server,blocks,options={}){return(await Promise.all(blocks.map(block=>blockToContent(server,block,options)))).flat()}async function convertMcpResult(server,tool,result2,options={}){let converted=result2.content.length>0?await toModelContent(server,result2.content,options):toLlmContent(result2);result2.isError&&textOf2(converted)===""&&converted.push({type:"text",text:`MCP tool ${server}/${tool} returned an error`});let{content,fullOutputPath}=await limitMcpContent(converted,options.saveOutput),{_meta:_ignored,...scriptResult}=result2;return{content,details:{server,tool,...fullOutputPath?{fullOutputPath}:{}},structuredContent:scriptResult,...result2.isError?{isError:!0}:{}}}function toParameters(schema){return{...schema,type:schema.type??"object",...schema.properties===void 0?{properties:{}}:{}}}var ANNOTATION_HINTS=["readOnlyHint","destructiveHint","idempotentHint","openWorldHint"];function toToolAnnotations(tool){let annotations={};for(let hint of ANNOTATION_HINTS){let value=tool.annotations?.[hint];typeof value=="boolean"&&(annotations[hint]=value)}return Object.keys(annotations).length>0?annotations:void 0}function createMcpToolDefinition(options){let{server,tool}=options,title=tool.title??tool.annotations?.title,annotations=toToolAnnotations(tool),label=`${server}/${tool.name}`;return{name:options.name,label,description:tool.description?.trim()||title||`MCP tool ${tool.name} from server ${server}`,parameters:toParameters(tool.inputSchema),outputSchema:createMcpResultSchema(tool.outputSchema),exposure:toToolExposure(options.exposure),namespace:options.namespace,...annotations?{annotations}:{},...createMcpToolRenderers(label),async execute(_toolCallId,params,signal,onUpdate){let result2=await(await options.getClient()).callTool(tool.name,params??{},{signal,timeoutMs:options.timeoutMs,onProgress:progress=>{let total=progress.total===void 0?"":`/${progress.total}`,text=progress.message??`Progress ${progress.progress}${total}`;onUpdate?.({content:[{type:"text",text}],details:{server,tool:tool.name}})}});return convertMcpResult(server,tool.name,result2,{readableResources:options.readableResources?.()})}}}function createMcpToolRenderers(label){return{renderCall(args,theme2,context){let component=context.lastComponent??new Text("",0,0);return component.setText(formatToolCallWithArgs(label,args,theme2,context.expanded)),component},renderResult(result2,options,theme2,context){let component=context.lastComponent??new Container;component.clear();let output=getTextOutput(result2,context.showImages).trim();if(!output)return component;let color=context.isError?"error":"toolOutput",styled=replaceTabs(output).split(`
916
916
  `).map(line=>theme2.fg(color,line)).join(`
917
- `);return component.addChild(new Spacer(1)),options.expanded?component.addChild(new Text(styled,0,0)):component.addChild(new CollapsedToolOutput({theme:theme2,text:styled,maxVisualLines:OUTPUT_PREVIEW_LINES,fullOutputPath:result2.details?.fullOutputPath})),component}}}function isMcpAppResource(item){return(item.uri??item.uriTemplate??"").startsWith("ui://")||/;\s*profile\s*=\s*"?mcp-app"?/i.test(item.mimeType??"")}function listed(server,item){let{_meta,icons:_icons,...rest}=item;return{server,...rest}}var stringProperty=description=>({type:"string",description}),SERVER_FILTER=stringProperty("MCP server name. Omit to list every server with resources."),CURSOR=stringProperty("Opaque cursor from a previous call with the same server; omit for the first page."),LIST_PARAMETERS={type:"object",properties:{server:SERVER_FILTER,cursor:CURSOR},additionalProperties:!1},READ_PARAMETERS={type:"object",properties:{server:stringProperty("MCP server name exactly as configured. Must match the 'server' field returned by list_mcp_resources."),uri:stringProperty("Resource URI to read. Must be one of the URIs returned by list_mcp_resources.")},required:["server","uri"],additionalProperties:!1},optionalString={type:"string"},LISTING_ERRORS={type:"array",description:"Servers that could not be listed",items:{type:"object",properties:{server:{type:"string"},error:{type:"string"}},required:["server","error"]}},LIST_OUTPUT_SCHEMA={type:"object",properties:{server:optionalString,resources:{type:"array",items:{type:"object",properties:{server:{type:"string"},uri:{type:"string"},name:{type:"string"},title:optionalString,description:optionalString,mimeType:optionalString,size:{type:"number"}},required:["server","uri","name"]}},nextCursor:optionalString,errors:LISTING_ERRORS},required:["resources"]},LIST_TEMPLATES_OUTPUT_SCHEMA={type:"object",properties:{server:optionalString,resourceTemplates:{type:"array",items:{type:"object",properties:{server:{type:"string"},uriTemplate:{type:"string",description:"RFC 6570 URI template"},name:{type:"string"},title:optionalString,description:optionalString,mimeType:optionalString},required:["server","uriTemplate","name"]}},nextCursor:optionalString,errors:LISTING_ERRORS},required:["resourceTemplates"]},READ_OUTPUT_SCHEMA={type:"object",properties:{server:{type:"string"},uri:{type:"string"},contents:{type:"array",items:{anyOf:[{type:"object",properties:{uri:{type:"string"},mimeType:optionalString,text:{type:"string"}},required:["uri","text"]},{type:"object",properties:{uri:{type:"string"},mimeType:optionalString,blob:{type:"string",description:"base64"}},required:["uri","blob"]}]}}},required:["server","uri","contents"]};function stringArgument(params,key){let value=params?.[key];if(value!=null){if(typeof value!="string")throw new Error(`${key} must be a string`);return value.trim()||void 0}}function errorMessage(error){return error instanceof Error?error.message:String(error)}async function jsonResult(tool,server,payload){let{content,fullOutputPath}=await limitMcpContent([{type:"text",text:JSON.stringify(payload)}]);return{content,details:{server:server??"",tool,...fullOutputPath?{fullOutputPath}:{}},structuredContent:payload}}function createMcpResourceToolDefinitions(options){let readOnly={readOnlyHint:!0},findServer=name=>{let servers=options.servers(),server=servers.find(candidate=>candidate.name===name);if(server)return server;let available=servers.map(candidate=>candidate.name).join(", ");throw new Error(`MCP server "${name}" has no resources${available?`. Servers with resources: ${available}`:""}`)},list=async(params,signal,key,page,all)=>{let serverName=stringArgument(params,"server"),cursor=stringArgument(params,"cursor"),visible=item=>!isMcpAppResource(item);if(serverName){let server=findServer(serverName),result2=await page(server,cursor,{signal,timeoutMs:server.timeoutMs});return{server:server.name,[key]:result2.items.filter(visible).map(item=>listed(server.name,item)),...result2.nextCursor===void 0?{}:{nextCursor:result2.nextCursor}}}if(cursor)throw new Error("cursor can only be used when a server is specified");let servers=[...options.servers()].sort((a,b)=>a.name.localeCompare(b.name)),results=await Promise.allSettled(servers.map(server=>all(server,{signal,timeoutMs:server.timeoutMs}))),items=[],errors=[];return results.forEach((result2,index)=>{let server=servers[index].name;result2.status==="fulfilled"?items.push(...result2.value.filter(visible).map(item=>listed(server,item))):errors.push({server,error:errorMessage(result2.reason)})}),{[key]:items,...errors.length>0?{errors}:{}}},listResources={name:LIST_MCP_RESOURCES_TOOL,label:LIST_MCP_RESOURCES_TOOL,description:"Lists resources provided by MCP servers. Resources allow servers to share data that provides context to language models, such as files, database schemas, or application-specific information. Prefer resources over web search when possible.",parameters:LIST_PARAMETERS,outputSchema:LIST_OUTPUT_SCHEMA,exposure:toToolExposure(options.exposure),annotations:readOnly,async execute(_toolCallId,params,signal){let payload=await list(params,signal,"resources",async(server,cursor,requestOptions)=>{let result2=await server.resourcesPage(cursor,requestOptions);return{items:result2.resources,nextCursor:result2.nextCursor}},(server,requestOptions)=>server.allResources(requestOptions));return jsonResult(LIST_MCP_RESOURCES_TOOL,stringArgument(params,"server"),payload)}},listTemplates={name:LIST_MCP_RESOURCE_TEMPLATES_TOOL,label:LIST_MCP_RESOURCE_TEMPLATES_TOOL,description:"Lists resource templates provided by MCP servers. Parameterized resource templates allow servers to share data that takes parameters and provides context to language models, such as files, database schemas, or application-specific information. Prefer resource templates over web search when possible.",parameters:LIST_PARAMETERS,outputSchema:LIST_TEMPLATES_OUTPUT_SCHEMA,exposure:toToolExposure(options.exposure),annotations:readOnly,async execute(_toolCallId,params,signal){let payload=await list(params,signal,"resourceTemplates",async(server,cursor,requestOptions)=>{let result2=await server.resourceTemplatesPage(cursor,requestOptions);return{items:result2.resourceTemplates,nextCursor:result2.nextCursor}},(server,requestOptions)=>server.allResourceTemplates(requestOptions));return jsonResult(LIST_MCP_RESOURCE_TEMPLATES_TOOL,stringArgument(params,"server"),payload)}},readResource={name:READ_MCP_RESOURCE_TOOL,label:READ_MCP_RESOURCE_TOOL,description:"Read a specific resource from an MCP server given the server name and resource URI.",parameters:READ_PARAMETERS,outputSchema:READ_OUTPUT_SCHEMA,exposure:toToolExposure(options.exposure),annotations:readOnly,async execute(_toolCallId,params,signal){let serverName=stringArgument(params,"server"),uri=stringArgument(params,"uri");if(!serverName)throw new Error("server must be provided");if(!uri)throw new Error("uri must be provided");let server=findServer(serverName),result2=await server.readResource(uri,{signal,timeoutMs:server.timeoutMs}),blocks=result2.contents.flatMap(contents2=>[...result2.contents.length>1?[{type:"text",text:`${contents2.uri}:`}]:[],{type:"resource",resource:contents2}]),converted=await toModelContent(server.name,blocks),{content,fullOutputPath}=await limitMcpContent(converted.length>0?converted:[{type:"text",text:`Resource ${uri} is empty.`}]),contents=result2.contents.map(({_meta:_ignored,...rest})=>rest);return{content,details:{server:server.name,tool:READ_MCP_RESOURCE_TOOL,...fullOutputPath?{fullOutputPath}:{}},structuredContent:{server:server.name,uri,contents}}}};return[listResources,listTemplates,readResource]}var loadMcpRuntime=()=>import("./runtime-RMPIV5AR.js");import{randomUUID as randomUUID4}from"node:crypto";import{unlinkSync,writeFileSync as writeFileSync7}from"node:fs";import{platform as platform2,tmpdir}from"node:os";import{join as join17}from"node:path";import{spawn as spawn5}from"node:child_process";function runClipboardCommand(command,args,options){return new Promise(resolve17=>{let child=spawn5(command,args,{stdio:["pipe",options?.input===void 0?"pipe":"ignore","ignore"],windowsHide:!0}),chunks=[],length=0,settled=!1,finish=result2=>{settled||(settled=!0,clearTimeout(timer),resolve17(result2))},abort=()=>{child.kill("SIGKILL"),child.stdout?.destroy(),child.stdin?.destroy(),finish(void 0)},timer=setTimeout(abort,options?.timeoutMs??3e3);child.on("error",()=>finish(void 0)),child.on("close",code=>{settled||finish(code===0?Buffer.concat(chunks,length):void 0)}),child.stdout?.on("data",chunk2=>{settled||(length+=chunk2.length,length>(options?.maxBufferBytes??50*1024*1024)?abort():chunks.push(chunk2))}),child.stdin?.on("error",()=>{}),child.stdin?.end(options?.input)})}import{readFileSync as readFileSync11}from"node:fs";function isWSL(env=process.env){if(env.WSL_DISTRO_NAME||env.WSLENV)return!0;try{let release2=readFileSync11("/proc/version","utf-8");return/microsoft|wsl/i.test(release2)}catch{return!1}}var MAX_OSC52_ENCODED_LENGTH=1e5;function isRemoteSession(env){return!!(env.SSH_CONNECTION||env.SSH_CLIENT||env.MOSH_CONNECTION||env.KNIGHTCODE_CLIPBOARD_OSC52==="1")}function emitOsc52(text){let encoded=Buffer.from(text).toString("base64");return encoded.length>MAX_OSC52_ENCODED_LENGTH?!1:(process.stdout.write(`\x1B]52;c;${encoded}\x07`),!0)}async function copyViaWindowsClipboard(text){let tmpFile=join17(tmpdir(),`pi-wsl-clip-${randomUUID4()}.txt`);try{writeFileSync7(tmpFile,text,{encoding:"utf8",mode:384});let winPath=(await runClipboardCommand("wslpath",["-w",tmpFile],{timeoutMs:1e3}))?.toString("utf8").trim();if(!winPath)return!1;let script=`Set-Clipboard -Value ([System.IO.File]::ReadAllText('${winPath.replaceAll("'","''")}', [System.Text.Encoding]::UTF8))`;return await runClipboardCommand("powershell.exe",["-NoProfile","-Command",script],{timeoutMs:5e3})!==void 0}catch{return!1}finally{try{unlinkSync(tmpFile)}catch{}}}async function readClipboardText(){let commands=[];process.env.TERMUX_VERSION&&commands.push(["termux-clipboard-get",[]]),platform2()==="linux"&&(process.env.WAYLAND_DISPLAY&&commands.push(["wl-paste",["--no-newline","--type","text"]]),process.env.DISPLAY&&commands.push(["xclip",["-selection","clipboard","-out"]],["xsel",["--clipboard","--output"]]));for(let[command,args]of commands){let bytes=await runClipboardCommand(command,args,{timeoutMs:5e3});if(bytes!==void 0)return bytes.toString("utf8")||null}try{return await getNativeClipboard()?.getText()||null}catch{return null}}async function readClipboardFilePaths(){let paths=await getNativeClipboard()?.getFilePaths?.();return paths?.length?paths:null}async function copyToClipboard(text){let p=platform2(),env=process.env,copied=!1;if(p!=="linux")try{let clipboard=getNativeClipboard();clipboard?.setText&&(await clipboard.setText(text),copied=!0)}catch{}if(!copied){let commands=[];p==="darwin"?commands.push(["pbcopy",[]]):p==="win32"?commands.push(["clip",[]]):(env.TERMUX_VERSION&&commands.push(["termux-clipboard-set",[]]),env.WAYLAND_DISPLAY&&commands.push(["wl-copy",[]]),env.DISPLAY&&commands.push(["xclip",["-selection","clipboard"]],["xsel",["--clipboard","--input"]]));for(let[command,args]of commands)if(await runClipboardCommand(command,args,{input:text,timeoutMs:5e3})!==void 0){copied=!0;break}}let osc52Emitted=!1;!copied&&p==="linux"&&isWSL(env)&&(env.WT_SESSION&&(osc52Emitted=emitOsc52(text)),copied=osc52Emitted||await copyViaWindowsClipboard(text));let headless=p==="linux"&&!env.DISPLAY&&!env.WAYLAND_DISPLAY&&!env.TERMUX_VERSION,oversized=!1;if(!osc52Emitted&&(isRemoteSession(env)||!copied&&headless)&&(emitOsc52(text)?copied=!0:oversized=!0),!copied){if(oversized)throw new Error("Clipboard unavailable: text exceeds the OSC 52 size limit");if(env.TERMUX_VERSION)throw new Error("Clipboard unavailable: install the Termux:API app and `termux-api` package");if(p==="linux"){if(env.WAYLAND_DISPLAY)throw new Error("Clipboard unavailable: install `wl-clipboard` (`wl-copy`) or check Wayland access");if(env.DISPLAY)throw new Error("Clipboard unavailable: install `xclip` or `xsel`, or check X11 access")}throw new Error("Clipboard unavailable")}}var AuthUrlComponent=class extends Container{url;tui;hint;constructor(tui,url){super(),this.tui=tui,this.url=url,this.addChild(new Text(theme.fg("accent",hyperlink(url,url)),1,0)),this.hint=new Text("",1,0),this.addChild(this.hint),this.setHint(keyHint("app.message.copy","to copy"))}setHint(suffix){let clickHint=process.platform==="darwin"?"Cmd+click to open":"Ctrl+click to open";this.hint.setText(`${theme.fg("dim",hyperlink(clickHint,this.url))} ${theme.fg("dim","\u2022")} ${suffix}`),this.tui.requestRender()}async copy(){try{await copyToClipboard(this.url),this.setHint(theme.fg("success","Copied URL to clipboard"))}catch(error){this.setHint(theme.fg("error",error instanceof Error?error.message:String(error)))}}};var DynamicBorder=class{color;constructor(color=str2=>theme.fg("border",str2)){this.color=color}invalidate(){}render(width){return[this.color("\u2500".repeat(Math.max(1,width)))]}};function frame(theme2,title,body,footer){let container=new Container;container.addChild(new DynamicBorder(text=>theme2.fg("accent",text))),container.addChild(new Text(theme2.fg("accent",theme2.bold(title)),1,0));for(let child of body)container.addChild(child);return footer&&(container.addChild(new Spacer(1)),container.addChild(new Text(theme2.fg("dim",footer),1,0))),container.addChild(new DynamicBorder(text=>theme2.fg("accent",text))),container}var MAX_VISIBLE_ITEMS=12,McpManagerView=class{tui;theme;keybindings;content;inputHandler;inputTarget;_focused=!1;constructor(tui,theme2,keybindings){this.tui=tui,this.theme=theme2,this.keybindings=keybindings,this.content=frame(theme2,"MCP servers",[new Text(theme2.fg("muted","Loading\u2026"),1,1)])}get focused(){return this._focused}set focused(value){this._focused=value,this.inputTarget&&(this.inputTarget.focused=value)}setContent(content,inputHandler,inputTarget){this.inputTarget&&(this.inputTarget.focused=!1),this.content=content,this.inputHandler=inputHandler,this.inputTarget=inputTarget,this.inputTarget&&(this.inputTarget.focused=this._focused),this.tui.requestRender()}menu(build,subscribe){return new Promise(resolve17=>{let unsubscribe,settled=!1,finish=value=>{settled||(settled=!0,unsubscribe?.(),resolve17(value))},selected,render2=()=>{let menu=build(),wanted=selected??menu.selected,body=[];menu.details&&body.push(new Text(this.theme.fg("muted",menu.details),1,0)),menu.error&&body.push(new Text(this.theme.fg("error",menu.error),1,0)),body.push(new Spacer(1));let footer=`${keyHint("tui.select.confirm",menu.confirmLabel)} \u2022 ${keyHint("tui.select.cancel",menu.cancelLabel)}`;if(menu.items.length===0){body.push(new Text(this.theme.fg("muted",menu.empty??"Nothing to show."),1,0)),this.setContent(frame(this.theme,menu.title,body,keyHint("tui.select.cancel",menu.cancelLabel)),data=>{this.keybindings.matches(data,"tui.select.cancel")&&finish(void 0)});return}let list=new SelectList(menu.items,Math.min(menu.items.length,MAX_VISIBLE_ITEMS),getSelectListTheme()),index=menu.items.findIndex(item=>item.value===wanted);index!==-1&&list.setSelectedIndex(index),selected=list.getSelectedItem()?.value,list.onSelectionChange=item=>{selected=item.value},list.onSelect=item=>finish(item.value),list.onCancel=()=>finish(void 0),body.push(list),this.setContent(frame(this.theme,menu.title,body,footer),data=>list.handleInput(data))};render2(),unsubscribe=subscribe?.(()=>{settled||render2()})})}status(title,message,onCancel){let body=[new Spacer(1),new Text(this.theme.fg("muted",message),1,0)];if(!onCancel){this.setContent(frame(this.theme,title,body));return}this.setContent(frame(this.theme,title,body,keyHint("tui.select.cancel","cancel")),data=>{this.keybindings.matches(data,"tui.select.cancel")&&onCancel()})}redirectUrl(title,authorizationUrl,signal){return new Promise(resolve17=>{let settled=!1,finish=value=>{settled||(settled=!0,signal.removeEventListener("abort",onAbort),resolve17(value))},onAbort=()=>finish(void 0);if(signal.aborted){finish(void 0);return}signal.addEventListener("abort",onAbort,{once:!0});let input2=new Input,link2=new AuthUrlComponent(this.tui,authorizationUrl),body=[new Spacer(1),new Text(this.theme.fg("muted","Approve access in your browser. If it did not open, visit:"),1,0),link2,new Spacer(1),new Text(this.theme.fg("muted","If the browser runs on another machine, paste the URL it was redirected to:"),1,0),input2];this.setContent(frame(this.theme,title,body,`${keyHint("tui.select.confirm","submit")} \u2022 ${keyHint("tui.select.cancel","cancel")}`),data=>{if(this.keybindings.matches(data,"tui.select.confirm")){let value=input2.getValue().trim();value&&finish(value);return}if(this.keybindings.matches(data,"tui.select.cancel")){finish(void 0);return}if(this.keybindings.matches(data,"app.message.copy")){link2.copy();return}input2.handleInput(data)},input2)})}handleInput(data){this.inputHandler?.(data),this.tui.requestRender()}render(width){return this.content.render(width).map(line=>visibleWidth(line)>width?truncateToWidth(line,width,""):line)}invalidate(){this.content.invalidate()}};async function showMcpManager(ctx,manage){await ctx.ui.custom((tui,theme2,keybindings,done)=>{let view=new McpManagerView(tui,theme2,keybindings);return manage(view).then(()=>done(),error=>{ctx.ui.notify(error instanceof Error?error.message:String(error),"error"),done()}),view})}var DEFAULT_STARTUP_WAIT_MS=1e4,RESOURCE_TOOL_NAMES=new Set([LIST_MCP_RESOURCES_TOOL,LIST_MCP_RESOURCE_TEMPLATES_TOOL,READ_MCP_RESOURCE_TOOL]),EXPOSURE_DESCRIPTIONS={codemode:"called from codemode scripts, which find them with searchTools()",deferred:"not declared until tool_search loads them, then called directly; no codemode needed",direct:"declared to the model like built-in tools"};function errorMessage2(error){return error instanceof Error?error.message:String(error)}function firstLine(text){return text.split(`
917
+ `);return component.addChild(new Spacer(1)),options.expanded?component.addChild(new Text(styled,0,0)):component.addChild(new CollapsedToolOutput({theme:theme2,text:styled,maxVisualLines:OUTPUT_PREVIEW_LINES,fullOutputPath:result2.details?.fullOutputPath})),component}}}function isMcpAppResource(item){return(item.uri??item.uriTemplate??"").startsWith("ui://")||/;\s*profile\s*=\s*"?mcp-app"?/i.test(item.mimeType??"")}function listed(server,item){let{_meta,icons:_icons,...rest}=item;return{server,...rest}}var stringProperty=description=>({type:"string",description}),SERVER_FILTER=stringProperty("MCP server name. Omit to list every server with resources."),CURSOR=stringProperty("Opaque cursor from a previous call with the same server; omit for the first page."),LIST_PARAMETERS={type:"object",properties:{server:SERVER_FILTER,cursor:CURSOR},additionalProperties:!1},READ_PARAMETERS={type:"object",properties:{server:stringProperty("MCP server name exactly as configured. Must match the 'server' field returned by list_mcp_resources."),uri:stringProperty("Resource URI to read. Must be one of the URIs returned by list_mcp_resources.")},required:["server","uri"],additionalProperties:!1},optionalString={type:"string"},LISTING_ERRORS={type:"array",description:"Servers that could not be listed",items:{type:"object",properties:{server:{type:"string"},error:{type:"string"}},required:["server","error"]}},LIST_OUTPUT_SCHEMA={type:"object",properties:{server:optionalString,resources:{type:"array",items:{type:"object",properties:{server:{type:"string"},uri:{type:"string"},name:{type:"string"},title:optionalString,description:optionalString,mimeType:optionalString,size:{type:"number"}},required:["server","uri","name"]}},nextCursor:optionalString,errors:LISTING_ERRORS},required:["resources"]},LIST_TEMPLATES_OUTPUT_SCHEMA={type:"object",properties:{server:optionalString,resourceTemplates:{type:"array",items:{type:"object",properties:{server:{type:"string"},uriTemplate:{type:"string",description:"RFC 6570 URI template"},name:{type:"string"},title:optionalString,description:optionalString,mimeType:optionalString},required:["server","uriTemplate","name"]}},nextCursor:optionalString,errors:LISTING_ERRORS},required:["resourceTemplates"]},READ_OUTPUT_SCHEMA={type:"object",properties:{server:{type:"string"},uri:{type:"string"},contents:{type:"array",items:{anyOf:[{type:"object",properties:{uri:{type:"string"},mimeType:optionalString,text:{type:"string"}},required:["uri","text"]},{type:"object",properties:{uri:{type:"string"},mimeType:optionalString,blob:{type:"string",description:"base64"}},required:["uri","blob"]}]}}},required:["server","uri","contents"]};function stringArgument(params,key){let value=params?.[key];if(value!=null){if(typeof value!="string")throw new Error(`${key} must be a string`);return value.trim()||void 0}}function errorMessage(error){return error instanceof Error?error.message:String(error)}async function jsonResult(tool,server,payload){let{content,fullOutputPath}=await limitMcpContent([{type:"text",text:JSON.stringify(payload)}]);return{content,details:{server:server??"",tool,...fullOutputPath?{fullOutputPath}:{}},structuredContent:payload}}function createMcpResourceToolDefinitions(options){let readOnly={readOnlyHint:!0},findServer=name=>{let servers=options.servers(),server=servers.find(candidate=>candidate.name===name);if(server)return server;let available=servers.map(candidate=>candidate.name).join(", ");throw new Error(`MCP server "${name}" has no resources${available?`. Servers with resources: ${available}`:""}`)},list=async(params,signal,key,page,all)=>{let serverName=stringArgument(params,"server"),cursor=stringArgument(params,"cursor"),visible=item=>!isMcpAppResource(item);if(serverName){let server=findServer(serverName),result2=await page(server,cursor,{signal,timeoutMs:server.timeoutMs});return{server:server.name,[key]:result2.items.filter(visible).map(item=>listed(server.name,item)),...result2.nextCursor===void 0?{}:{nextCursor:result2.nextCursor}}}if(cursor)throw new Error("cursor can only be used when a server is specified");let servers=[...options.servers()].sort((a,b)=>a.name.localeCompare(b.name)),results=await Promise.allSettled(servers.map(server=>all(server,{signal,timeoutMs:server.timeoutMs}))),items=[],errors=[];return results.forEach((result2,index)=>{let server=servers[index].name;result2.status==="fulfilled"?items.push(...result2.value.filter(visible).map(item=>listed(server,item))):errors.push({server,error:errorMessage(result2.reason)})}),{[key]:items,...errors.length>0?{errors}:{}}},listResources={name:LIST_MCP_RESOURCES_TOOL,label:LIST_MCP_RESOURCES_TOOL,description:"Lists resources provided by MCP servers. Resources allow servers to share data that provides context to language models, such as files, database schemas, or application-specific information. Prefer resources over web search when possible.",parameters:LIST_PARAMETERS,outputSchema:LIST_OUTPUT_SCHEMA,exposure:toToolExposure(options.exposure),annotations:readOnly,async execute(_toolCallId,params,signal){let payload=await list(params,signal,"resources",async(server,cursor,requestOptions)=>{let result2=await server.resourcesPage(cursor,requestOptions);return{items:result2.resources,nextCursor:result2.nextCursor}},(server,requestOptions)=>server.allResources(requestOptions));return jsonResult(LIST_MCP_RESOURCES_TOOL,stringArgument(params,"server"),payload)}},listTemplates={name:LIST_MCP_RESOURCE_TEMPLATES_TOOL,label:LIST_MCP_RESOURCE_TEMPLATES_TOOL,description:"Lists resource templates provided by MCP servers. Parameterized resource templates allow servers to share data that takes parameters and provides context to language models, such as files, database schemas, or application-specific information. Prefer resource templates over web search when possible.",parameters:LIST_PARAMETERS,outputSchema:LIST_TEMPLATES_OUTPUT_SCHEMA,exposure:toToolExposure(options.exposure),annotations:readOnly,async execute(_toolCallId,params,signal){let payload=await list(params,signal,"resourceTemplates",async(server,cursor,requestOptions)=>{let result2=await server.resourceTemplatesPage(cursor,requestOptions);return{items:result2.resourceTemplates,nextCursor:result2.nextCursor}},(server,requestOptions)=>server.allResourceTemplates(requestOptions));return jsonResult(LIST_MCP_RESOURCE_TEMPLATES_TOOL,stringArgument(params,"server"),payload)}},readResource={name:READ_MCP_RESOURCE_TOOL,label:READ_MCP_RESOURCE_TOOL,description:"Read a specific resource from an MCP server given the server name and resource URI.",parameters:READ_PARAMETERS,outputSchema:READ_OUTPUT_SCHEMA,exposure:toToolExposure(options.exposure),annotations:readOnly,async execute(_toolCallId,params,signal){let serverName=stringArgument(params,"server"),uri=stringArgument(params,"uri");if(!serverName)throw new Error("server must be provided");if(!uri)throw new Error("uri must be provided");let server=findServer(serverName),result2=await server.readResource(uri,{signal,timeoutMs:server.timeoutMs}),blocks=result2.contents.flatMap(contents2=>[...result2.contents.length>1?[{type:"text",text:`${contents2.uri}:`}]:[],{type:"resource",resource:contents2}]),converted=await toModelContent(server.name,blocks),{content,fullOutputPath}=await limitMcpContent(converted.length>0?converted:[{type:"text",text:`Resource ${uri} is empty.`}]),contents=result2.contents.map(({_meta:_ignored,...rest})=>rest);return{content,details:{server:server.name,tool:READ_MCP_RESOURCE_TOOL,...fullOutputPath?{fullOutputPath}:{}},structuredContent:{server:server.name,uri,contents}}}};return[listResources,listTemplates,readResource]}var loadMcpRuntime=()=>import("./runtime-IU2Z5WWF.js");import{randomUUID as randomUUID4}from"node:crypto";import{unlinkSync,writeFileSync as writeFileSync7}from"node:fs";import{platform as platform2,tmpdir}from"node:os";import{join as join17}from"node:path";import{spawn as spawn5}from"node:child_process";function runClipboardCommand(command,args,options){return new Promise(resolve17=>{let child=spawn5(command,args,{stdio:["pipe",options?.input===void 0?"pipe":"ignore","ignore"],windowsHide:!0}),chunks=[],length=0,settled=!1,finish=result2=>{settled||(settled=!0,clearTimeout(timer),resolve17(result2))},abort=()=>{child.kill("SIGKILL"),child.stdout?.destroy(),child.stdin?.destroy(),finish(void 0)},timer=setTimeout(abort,options?.timeoutMs??3e3);child.on("error",()=>finish(void 0)),child.on("close",code=>{settled||finish(code===0?Buffer.concat(chunks,length):void 0)}),child.stdout?.on("data",chunk2=>{settled||(length+=chunk2.length,length>(options?.maxBufferBytes??50*1024*1024)?abort():chunks.push(chunk2))}),child.stdin?.on("error",()=>{}),child.stdin?.end(options?.input)})}import{readFileSync as readFileSync11}from"node:fs";function isWSL(env=process.env){if(env.WSL_DISTRO_NAME||env.WSLENV)return!0;try{let release2=readFileSync11("/proc/version","utf-8");return/microsoft|wsl/i.test(release2)}catch{return!1}}var MAX_OSC52_ENCODED_LENGTH=1e5;function isRemoteSession(env){return!!(env.SSH_CONNECTION||env.SSH_CLIENT||env.MOSH_CONNECTION||env.KNIGHTCODE_CLIPBOARD_OSC52==="1")}function emitOsc52(text){let encoded=Buffer.from(text).toString("base64");return encoded.length>MAX_OSC52_ENCODED_LENGTH?!1:(process.stdout.write(`\x1B]52;c;${encoded}\x07`),!0)}async function copyViaWindowsClipboard(text){let tmpFile=join17(tmpdir(),`pi-wsl-clip-${randomUUID4()}.txt`);try{writeFileSync7(tmpFile,text,{encoding:"utf8",mode:384});let winPath=(await runClipboardCommand("wslpath",["-w",tmpFile],{timeoutMs:1e3}))?.toString("utf8").trim();if(!winPath)return!1;let script=`Set-Clipboard -Value ([System.IO.File]::ReadAllText('${winPath.replaceAll("'","''")}', [System.Text.Encoding]::UTF8))`;return await runClipboardCommand("powershell.exe",["-NoProfile","-Command",script],{timeoutMs:5e3})!==void 0}catch{return!1}finally{try{unlinkSync(tmpFile)}catch{}}}async function readClipboardText(){let commands=[];process.env.TERMUX_VERSION&&commands.push(["termux-clipboard-get",[]]),platform2()==="linux"&&(process.env.WAYLAND_DISPLAY&&commands.push(["wl-paste",["--no-newline","--type","text"]]),process.env.DISPLAY&&commands.push(["xclip",["-selection","clipboard","-out"]],["xsel",["--clipboard","--output"]]));for(let[command,args]of commands){let bytes=await runClipboardCommand(command,args,{timeoutMs:5e3});if(bytes!==void 0)return bytes.toString("utf8")||null}try{return await getNativeClipboard()?.getText()||null}catch{return null}}async function readClipboardFilePaths(){let paths=await getNativeClipboard()?.getFilePaths?.();return paths?.length?paths:null}async function copyToClipboard(text){let p=platform2(),env=process.env,copied=!1;if(p!=="linux")try{let clipboard=getNativeClipboard();clipboard?.setText&&(await clipboard.setText(text),copied=!0)}catch{}if(!copied){let commands=[];p==="darwin"?commands.push(["pbcopy",[]]):p==="win32"?commands.push(["clip",[]]):(env.TERMUX_VERSION&&commands.push(["termux-clipboard-set",[]]),env.WAYLAND_DISPLAY&&commands.push(["wl-copy",[]]),env.DISPLAY&&commands.push(["xclip",["-selection","clipboard"]],["xsel",["--clipboard","--input"]]));for(let[command,args]of commands)if(await runClipboardCommand(command,args,{input:text,timeoutMs:5e3})!==void 0){copied=!0;break}}let osc52Emitted=!1;!copied&&p==="linux"&&isWSL(env)&&(env.WT_SESSION&&(osc52Emitted=emitOsc52(text)),copied=osc52Emitted||await copyViaWindowsClipboard(text));let headless=p==="linux"&&!env.DISPLAY&&!env.WAYLAND_DISPLAY&&!env.TERMUX_VERSION,oversized=!1;if(!osc52Emitted&&(isRemoteSession(env)||!copied&&headless)&&(emitOsc52(text)?copied=!0:oversized=!0),!copied){if(oversized)throw new Error("Clipboard unavailable: text exceeds the OSC 52 size limit");if(env.TERMUX_VERSION)throw new Error("Clipboard unavailable: install the Termux:API app and `termux-api` package");if(p==="linux"){if(env.WAYLAND_DISPLAY)throw new Error("Clipboard unavailable: install `wl-clipboard` (`wl-copy`) or check Wayland access");if(env.DISPLAY)throw new Error("Clipboard unavailable: install `xclip` or `xsel`, or check X11 access")}throw new Error("Clipboard unavailable")}}var AuthUrlComponent=class extends Container{url;tui;hint;constructor(tui,url){super(),this.tui=tui,this.url=url,this.addChild(new Text(theme.fg("accent",hyperlink(url,url)),1,0)),this.hint=new Text("",1,0),this.addChild(this.hint),this.setHint(keyHint("app.message.copy","to copy"))}setHint(suffix){let clickHint=process.platform==="darwin"?"Cmd+click to open":"Ctrl+click to open";this.hint.setText(`${theme.fg("dim",hyperlink(clickHint,this.url))} ${theme.fg("dim","\u2022")} ${suffix}`),this.tui.requestRender()}async copy(){try{await copyToClipboard(this.url),this.setHint(theme.fg("success","Copied URL to clipboard"))}catch(error){this.setHint(theme.fg("error",error instanceof Error?error.message:String(error)))}}};var DynamicBorder=class{color;constructor(color=str2=>theme.fg("border",str2)){this.color=color}invalidate(){}render(width){return[this.color("\u2500".repeat(Math.max(1,width)))]}};function frame(theme2,title,body,footer){let container=new Container;container.addChild(new DynamicBorder(text=>theme2.fg("accent",text))),container.addChild(new Text(theme2.fg("accent",theme2.bold(title)),1,0));for(let child of body)container.addChild(child);return footer&&(container.addChild(new Spacer(1)),container.addChild(new Text(theme2.fg("dim",footer),1,0))),container.addChild(new DynamicBorder(text=>theme2.fg("accent",text))),container}var MAX_VISIBLE_ITEMS=12,McpManagerView=class{tui;theme;keybindings;content;inputHandler;inputTarget;_focused=!1;constructor(tui,theme2,keybindings){this.tui=tui,this.theme=theme2,this.keybindings=keybindings,this.content=frame(theme2,"MCP servers",[new Text(theme2.fg("muted","Loading\u2026"),1,1)])}get focused(){return this._focused}set focused(value){this._focused=value,this.inputTarget&&(this.inputTarget.focused=value)}setContent(content,inputHandler,inputTarget){this.inputTarget&&(this.inputTarget.focused=!1),this.content=content,this.inputHandler=inputHandler,this.inputTarget=inputTarget,this.inputTarget&&(this.inputTarget.focused=this._focused),this.tui.requestRender()}menu(build,subscribe){return new Promise(resolve17=>{let unsubscribe,settled=!1,finish=value=>{settled||(settled=!0,unsubscribe?.(),resolve17(value))},selected,render2=()=>{let menu=build(),wanted=selected??menu.selected,body=[];menu.details&&body.push(new Text(this.theme.fg("muted",menu.details),1,0)),menu.error&&body.push(new Text(this.theme.fg("error",menu.error),1,0)),body.push(new Spacer(1));let footer=`${keyHint("tui.select.confirm",menu.confirmLabel)} \u2022 ${keyHint("tui.select.cancel",menu.cancelLabel)}`;if(menu.items.length===0){body.push(new Text(this.theme.fg("muted",menu.empty??"Nothing to show."),1,0)),this.setContent(frame(this.theme,menu.title,body,keyHint("tui.select.cancel",menu.cancelLabel)),data=>{this.keybindings.matches(data,"tui.select.cancel")&&finish(void 0)});return}let list=new SelectList(menu.items,Math.min(menu.items.length,MAX_VISIBLE_ITEMS),getSelectListTheme()),index=menu.items.findIndex(item=>item.value===wanted);index!==-1&&list.setSelectedIndex(index),selected=list.getSelectedItem()?.value,list.onSelectionChange=item=>{selected=item.value},list.onSelect=item=>finish(item.value),list.onCancel=()=>finish(void 0),body.push(list),this.setContent(frame(this.theme,menu.title,body,footer),data=>list.handleInput(data))};render2(),unsubscribe=subscribe?.(()=>{settled||render2()})})}status(title,message,onCancel){let body=[new Spacer(1),new Text(this.theme.fg("muted",message),1,0)];if(!onCancel){this.setContent(frame(this.theme,title,body));return}this.setContent(frame(this.theme,title,body,keyHint("tui.select.cancel","cancel")),data=>{this.keybindings.matches(data,"tui.select.cancel")&&onCancel()})}redirectUrl(title,authorizationUrl,signal){return new Promise(resolve17=>{let settled=!1,finish=value=>{settled||(settled=!0,signal.removeEventListener("abort",onAbort),resolve17(value))},onAbort=()=>finish(void 0);if(signal.aborted){finish(void 0);return}signal.addEventListener("abort",onAbort,{once:!0});let input2=new Input,link2=new AuthUrlComponent(this.tui,authorizationUrl),body=[new Spacer(1),new Text(this.theme.fg("muted","Approve access in your browser. If it did not open, visit:"),1,0),link2,new Spacer(1),new Text(this.theme.fg("muted","If the browser runs on another machine, paste the URL it was redirected to:"),1,0),input2];this.setContent(frame(this.theme,title,body,`${keyHint("tui.select.confirm","submit")} \u2022 ${keyHint("tui.select.cancel","cancel")}`),data=>{if(this.keybindings.matches(data,"tui.select.confirm")){let value=input2.getValue().trim();value&&finish(value);return}if(this.keybindings.matches(data,"tui.select.cancel")){finish(void 0);return}if(this.keybindings.matches(data,"app.message.copy")){link2.copy();return}input2.handleInput(data)},input2)})}handleInput(data){this.inputHandler?.(data),this.tui.requestRender()}render(width){return this.content.render(width).map(line=>visibleWidth(line)>width?truncateToWidth(line,width,""):line)}invalidate(){this.content.invalidate()}};async function showMcpManager(ctx,manage){await ctx.ui.custom((tui,theme2,keybindings,done)=>{let view=new McpManagerView(tui,theme2,keybindings);return manage(view).then(()=>done(),error=>{ctx.ui.notify(error instanceof Error?error.message:String(error),"error"),done()}),view})}var DEFAULT_STARTUP_WAIT_MS=1e4,RESOURCE_TOOL_NAMES=new Set([LIST_MCP_RESOURCES_TOOL,LIST_MCP_RESOURCE_TEMPLATES_TOOL,READ_MCP_RESOURCE_TOOL]),EXPOSURE_DESCRIPTIONS={codemode:"called from codemode scripts, which find them with searchTools()",deferred:"not declared until tool_search loads them, then called directly; no codemode needed",direct:"declared to the model like built-in tools"};function errorMessage2(error){return error instanceof Error?error.message:String(error)}function firstLine(text){return text.split(`
918
918
  `,1)[0]??""}function isEnabled(server){return server.entry.config.enabled!==!1}function exposureOf(entry){return entry.config.exposure??"codemode"}function configuredExposures(entry){return new Set([exposureOf(entry),...Object.values(entry.config.toolExposure??{})])}function hasDirectTools(entry){return configuredExposures(entry).has("direct")}function hasIndirectTools(entry){let exposures=configuredExposures(entry);return exposures.has("codemode")||exposures.has("deferred")}var MCP_SERVERS_SECTION="mcp_servers",MAX_SERVER_DESCRIPTION_CHARS=250,MAX_SERVERS_SECTION_CHARS=4096;function serversSectionIntro(reaches){let intro="MCP servers whose tools are not declared to you.";return reaches.has("codemode")&&(intro+=" Call the tools of `codemode` servers from codemode scripts."),reaches.has("tool_search")&&(intro+=" Load the tools of `tool_search` servers with `tool_search`."),intro}function truncate(text,max){return text.length<=max?text:max<=1?"":`${text.slice(0,max-1).trimEnd()}\u2026`}function serverSummary(server){return((server.entry.config.description?.trim()||server.connection?.instructions||"").split(`
919
919
  `,1)[0]??"").trim()}function renderServersSection(servers){let listed2=servers.filter(server=>isEnabled(server)&&hasIndirectTools(server.entry)).sort((a,b)=>a.entry.name.localeCompare(b.entry.name));if(listed2.length===0)return;let reaches=listed2.map(server=>configuredExposures(server.entry).has("codemode")?"codemode":"tool_search"),intro=serversSectionIntro(new Set(reaches)),heads=listed2.map((server,index)=>`- ${mcpNamespace(server.entry.name)} (${reaches[index]})`),omitted=kept2=>{let count=listed2.length-kept2;if(count===0)return[];let left=new Set(reaches.slice(kept2)),finders=[...left.has("codemode")?["searchTools() in codemode"]:[],...left.has("tool_search")?["tool_search"]:[]].join(" or ");return[`- \u2026 ${count} more server${count===1?"":"s"}; find their tools with ${finders}`]},size=kept2=>[intro,...heads.slice(0,kept2),...omitted(kept2)].join(`
920
920
  `).length,kept=listed2.length;for(;kept>0&&size(kept)>MAX_SERVERS_SECTION_CHARS;)kept--;let perServer=kept===0?0:Math.min(MAX_SERVER_DESCRIPTION_CHARS,Math.floor((MAX_SERVERS_SECTION_CHARS-size(kept))/kept)-2),lines=listed2.slice(0,kept).map((server,index)=>{let summary=perServer>0?truncate(serverSummary(server),perServer):"";return summary?`${heads[index]}: ${summary}`:heads[index]});return[intro,...lines,...omitted(kept)].join(`
@@ -1079,7 +1079,7 @@ ${message}`,[{label:"Yes",value:!0},{label:"No",value:!1}])??!1,input:async(titl
1079
1079
  `)[0]??stderr),parts.length===0?null:`trash: ${parts.join(" \xB7 ").slice(0,200)}`};if(trashResult.status===0||!existsSync21(sessionPath))return{ok:!0,method:"trash"};try{return await unlink3(sessionPath),{ok:!0,method:"unlink"}}catch(err){let unlinkError=err instanceof Error?err.message:String(err),trashErrorHint=getTrashErrorHint();return{ok:!1,method:"unlink",error:trashErrorHint?`${unlinkError} (${trashErrorHint})`:unlinkError}}}var SessionSelectorComponent=class extends Container{handleInput(data){if(this.mode==="rename"){if(getKeybindings().matches(data,"tui.select.cancel")){this.exitRenameMode();return}this.renameInput.handleInput(data);return}this.sessionList.handleInput(data)}canRename=!0;sessionList;header;keybindings;scope="current";sortMode="threaded";nameFilter="all";currentSessions=null;allSessions=null;currentSessionsLoader;allSessionsLoader;requestRender;renameSession;currentLoad=null;allLoad=null;mode="list";renameInput=new Input;renameTargetPath=null;_focused=!1;get focused(){return this._focused}set focused(value){this._focused=value,this.sessionList.focused=value,this.renameInput.focused=value,value&&this.mode==="rename"&&(this.renameInput.focused=!0)}buildBaseLayout(content,options){this.clear(),this.addChild(new Spacer(1)),this.addChild(new DynamicBorder(s=>theme.fg("accent",s))),this.addChild(new Spacer(1)),(options?.showHeader??!0)&&(this.addChild(this.header),this.addChild(new Spacer(1))),this.addChild(content),this.addChild(new Spacer(1)),this.addChild(new DynamicBorder(s=>theme.fg("accent",s)))}constructor(currentSessionsLoader,allSessionsLoader,onSelect,onCancel,onExit,requestRender,options,currentSessionFilePath){super(),this.keybindings=options?.keybindings??KeybindingsManager2.create(),this.currentSessionsLoader=currentSessionsLoader,this.allSessionsLoader=allSessionsLoader,this.requestRender=requestRender,this.header=new SessionSelectorHeader(this.scope,this.sortMode,this.nameFilter,this.requestRender);let renameSession=options?.renameSession;this.renameSession=renameSession,this.canRename=!!renameSession,this.header.setShowRenameHint(options?.showRenameHint??this.canRename),this.sessionList=new SessionList([],!1,this.sortMode,this.nameFilter,this.keybindings,currentSessionFilePath),this.buildBaseLayout(this.sessionList),this.renameInput.onSubmit=value=>{this.confirmRename(value)};let clearStatusMessage=()=>this.header.setStatusMessage(null);this.sessionList.onSelect=sessionPath=>{clearStatusMessage(),this.cancelLoads(),onSelect(sessionPath)},this.sessionList.onCancel=()=>{clearStatusMessage(),this.cancelLoads(),onCancel()},this.sessionList.onExit=()=>{clearStatusMessage(),this.cancelLoads(),onExit()},this.sessionList.onToggleScope=()=>this.toggleScope(),this.sessionList.onToggleSort=()=>this.toggleSortMode(),this.sessionList.onToggleNameFilter=()=>this.toggleNameFilter(),this.sessionList.onRenameSession=sessionPath=>{if(!renameSession||(this.scope==="current"?this.currentLoad:this.allLoad))return;let session=(this.scope==="all"?this.allSessions??[]:this.currentSessions??[]).find(s=>s.path===sessionPath);this.enterRenameMode(sessionPath,session?.name)},this.sessionList.onTogglePath=showPath=>{this.header.setShowPath(showPath),this.requestRender()},this.sessionList.onDeleteConfirmationChange=path10=>{this.header.setConfirmingDeletePath(path10),this.requestRender()},this.sessionList.onError=msg=>{this.header.setStatusMessage({type:"error",message:msg},3e3),this.requestRender()},this.sessionList.onDeleteSession=async sessionPath=>{let result2=await deleteSessionFile(sessionPath);if(result2.ok){this.currentSessions&&(this.currentSessions=this.currentSessions.filter(s=>s.path!==sessionPath)),this.allSessions&&(this.allSessions=this.allSessions.filter(s=>s.path!==sessionPath));let sessions=this.scope==="all"?this.allSessions??[]:this.currentSessions??[],showCwd=this.scope==="all";this.sessionList.setSessions(sessions,showCwd);let msg=result2.method==="trash"?"Session moved to trash":"Session deleted";this.header.setStatusMessage({type:"info",message:msg},2e3),await this.refreshSessionsAfterMutation()}else{let errorMessage5=result2.error??"Unknown error";this.header.setStatusMessage({type:"error",message:`Failed to delete: ${errorMessage5}`},3e3)}this.requestRender()},this.loadScope("current")}cancelLoads(){this.currentLoad&&(this.currentLoad.abort(),this.currentLoad=null,this.currentSessions=null),this.allLoad&&(this.allLoad.abort(),this.allLoad=null,this.allSessions=null)}enterRenameMode(sessionPath,currentName){this.mode="rename",this.renameTargetPath=sessionPath,this.renameInput.setValue(currentName??""),this.renameInput.focused=!0;let panel=new Container;panel.addChild(new Text(theme.bold("Rename Session"),1,0)),panel.addChild(new Spacer(1)),panel.addChild(this.renameInput),panel.addChild(new Spacer(1)),panel.addChild(new Text(theme.fg("muted",`${keyText("tui.select.confirm")} to save \xB7 ${keyText("tui.select.cancel")} to cancel`),1,0)),this.buildBaseLayout(panel,{showHeader:!1}),this.requestRender()}exitRenameMode(){this.mode="list",this.renameTargetPath=null,this.buildBaseLayout(this.sessionList),this.requestRender()}async confirmRename(value){let next=value.trim();if(!next)return;let target=this.renameTargetPath;if(!target){this.exitRenameMode();return}let renameSession=this.renameSession;if(!renameSession){this.exitRenameMode();return}try{await renameSession(target,next),await this.refreshSessionsAfterMutation()}finally{this.exitRenameMode()}}async loadScope(scope){if(scope==="current"?this.currentLoad:this.allLoad)return;let showCwd=scope==="all",controller=new AbortController;scope==="current"?this.currentLoad=controller:this.allLoad=controller,this.header.setScope(scope),this.header.setLoading(!0),this.requestRender();let isActive=()=>(scope==="current"?this.currentLoad:this.allLoad)===controller,onProgress=(loaded,total,partialSessions)=>{if(isActive()){if(partialSessions){let sessions=[...partialSessions];scope==="current"?this.currentSessions=sessions:this.allSessions=sessions,scope===this.scope&&this.sessionList.setSessions(sessions,showCwd)}scope===this.scope&&(this.header.setProgress(loaded,total),this.requestRender())}};try{let sessions=await(scope==="current"?this.currentSessionsLoader(onProgress,controller.signal):this.allSessionsLoader(onProgress,controller.signal));if(!isActive()||(scope==="current"?(this.currentSessions=sessions,this.currentLoad=null):(this.allSessions=sessions,this.allLoad=null),scope!==this.scope))return;this.header.setLoading(!1),this.sessionList.setSessions(sessions,showCwd),this.requestRender()}catch(err){if(!isActive()||(scope==="current"?(this.currentLoad=null,this.currentSessions=null):(this.allLoad=null,this.allSessions=null),scope!==this.scope))return;let message=err instanceof Error?err.message:String(err);this.header.setLoading(!1),this.header.setStatusMessage({type:"error",message:`Failed to load sessions: ${message}`},4e3),this.sessionList.setSessions([],showCwd),this.requestRender()}}toggleSortMode(){this.sortMode=this.sortMode==="threaded"?"recent":this.sortMode==="recent"?"relevance":"threaded",this.header.setSortMode(this.sortMode),this.sessionList.setSortMode(this.sortMode),this.requestRender()}toggleNameFilter(){this.nameFilter=this.nameFilter==="all"?"named":"all",this.header.setNameFilter(this.nameFilter),this.sessionList.setNameFilter(this.nameFilter),this.requestRender()}async refreshSessionsAfterMutation(){this.cancelLoads(),this.currentSessions=null,this.allSessions=null,await this.loadScope(this.scope)}toggleScope(){this.scope=this.scope==="current"?"all":"current";let sessions=this.scope==="current"?this.currentSessions:this.allSessions,loading=(this.scope==="current"?this.currentLoad:this.allLoad)!==null;this.header.setScope(this.scope),this.header.setLoading(loading),this.sessionList.setSessions(sessions??[],this.scope==="all"),this.requestRender(),sessions===null&&!loading&&this.loadScope(this.scope)}getSessionList(){return this.sessionList}};async function selectSession(currentSessionsLoader,allSessionsLoader,settingsManager){let ui=await createStartupTui(settingsManager);return new Promise(resolve17=>{let keybindings=KeybindingsManager2.create();setKeybindings(keybindings);let resolved=!1,selector=new SessionSelectorComponent(currentSessionsLoader,allSessionsLoader,path10=>{resolved||(resolved=!0,ui.stop(),resolve17(path10))},()=>{resolved||(resolved=!0,ui.stop(),resolve17(null))},()=>{ui.stop(),process.exit(0)},()=>ui.requestRender(),{showRenameHint:!1,keybindings});ui.addChild(selector),ui.setFocus(selector.getSessionList()),startStartupTui(ui,settingsManager)})}function formatProjectTrustPrompt(cwd){return`Trust project folder?
1080
1080
  ${cwd}
1081
1081
 
1082
- This allows ${APP_NAME} to load ${CONFIG_DIR_NAME} settings and resources, install missing project packages, and execute project extensions.`}async function selectProjectTrustOption(cwd,ctx){let options=getProjectTrustOptions(cwd,{includeSessionOnly:!0}),selected=await ctx.ui.select(formatProjectTrustPrompt(cwd),options.map(option=>option.label));return options.find(option=>option.label===selected)}function saveProjectTrustPromptResult(trustStore,result2){result2.updates.length>0&&trustStore.setMany(result2.updates)}async function resolveProjectTrusted(options){if(options.trustOverride!==void 0)return options.trustOverride;if(!hasTrustRequiringProjectResources(options.cwd))return!0;if(options.extensionsResult){let{result:result2,errors}=await emitProjectTrustEvent(options.extensionsResult,{type:"project_trust",cwd:options.cwd},options.projectTrustContext);for(let error of errors)options.onExtensionError?.(`Extension "${error.extensionPath}" project_trust error: ${error.error}`);if(result2){let trusted=result2.trusted==="yes";return result2.remember===!0&&options.trustStore.set(options.cwd,trusted),trusted}}let decision=options.trustStore.get(options.cwd);if(decision!==null)return decision;switch(options.defaultProjectTrust??SETTINGS_DEFAULTS.defaultProjectTrust){case"always":return!0;case"never":return!1;case"ask":break}if(!options.projectTrustContext.hasUI)return!1;let selected=await selectProjectTrustOption(options.cwd,options.projectTrustContext);return selected!==void 0?(saveProjectTrustPromptResult(options.trustStore,selected),selected.trusted):!1}function collectSettingsDiagnostics(settingsManager){return settingsManager.drainErrors().map(({scope,path:path10,error})=>({type:"warning",message:path10?`Invalid settings file ${path10}: ${error.message}`:`Invalid ${scope} settings: ${error.message}`}))}function deduplicateDiagnostics(diagnostics){let seen=new Set;return diagnostics.filter(diagnostic=>{let key=`${diagnostic.type}\0${diagnostic.message}`;return seen.has(key)?!1:(seen.add(key),!0)})}var loadMcpCommand=()=>import("./cli-6ZTWO6GL.js");import{existsSync as existsSync22,mkdirSync as mkdirSync11,readdirSync as readdirSync9,readFileSync as readFileSync17,renameSync as renameSync4,rmSync as rmSync6,writeFileSync as writeFileSync10}from"fs";import{dirname as dirname20,join as join32}from"path";var MIGRATION_GUIDE_URL="https://github.com/KnightCodeAI/knightcode/blob/main/packages/coding-agent/CHANGELOG.md#extensions-migration",EXTENSIONS_DOC_URL="https://github.com/KnightCodeAI/knightcode/blob/main/packages/coding-agent/docs/extensions.md";function migrateAuthToAuthJson(){let agentDir=getAgentDir(),authPath=join32(agentDir,"auth.json"),oauthPath=join32(agentDir,"oauth.json"),settingsPath=join32(agentDir,"settings.json");if(existsSync22(authPath))return[];let migrated={},providers=[];if(existsSync22(oauthPath))try{let oauth=JSON.parse(stripBom(readFileSync17(oauthPath,"utf-8")));for(let[provider,cred]of Object.entries(oauth))migrated[provider]={type:"oauth",...cred},providers.push(provider);renameSync4(oauthPath,`${oauthPath}.migrated`)}catch{}if(existsSync22(settingsPath))try{let content=readFileSync17(settingsPath,"utf-8"),settings=JSON.parse(stripBom(content));if(settings.apiKeys&&typeof settings.apiKeys=="object"){for(let[provider,key]of Object.entries(settings.apiKeys))!migrated[provider]&&typeof key=="string"&&(migrated[provider]={type:"api_key",key},providers.push(provider));delete settings.apiKeys,writeFileSync10(settingsPath,JSON.stringify(settings,null,2))}}catch{}return Object.keys(migrated).length>0&&(mkdirSync11(dirname20(authPath),{recursive:!0}),writeFileSync10(authPath,JSON.stringify(migrated,null,2),{mode:384})),providers}function migrateSessionsFromAgentRoot(){let agentDir=getAgentDir(),files;try{files=readdirSync9(agentDir).filter(f=>f.endsWith(".jsonl")).map(f=>join32(agentDir,f))}catch{return}if(files.length!==0)for(let file of files)try{let firstLine3=readFileSync17(file,"utf8").split(`
1082
+ This allows ${APP_NAME} to load ${CONFIG_DIR_NAME} settings and resources, install missing project packages, and execute project extensions.`}async function selectProjectTrustOption(cwd,ctx){let options=getProjectTrustOptions(cwd,{includeSessionOnly:!0}),selected=await ctx.ui.select(formatProjectTrustPrompt(cwd),options.map(option=>option.label));return options.find(option=>option.label===selected)}function saveProjectTrustPromptResult(trustStore,result2){result2.updates.length>0&&trustStore.setMany(result2.updates)}async function resolveProjectTrusted(options){if(options.trustOverride!==void 0)return options.trustOverride;if(!hasTrustRequiringProjectResources(options.cwd))return!0;if(options.extensionsResult){let{result:result2,errors}=await emitProjectTrustEvent(options.extensionsResult,{type:"project_trust",cwd:options.cwd},options.projectTrustContext);for(let error of errors)options.onExtensionError?.(`Extension "${error.extensionPath}" project_trust error: ${error.error}`);if(result2){let trusted=result2.trusted==="yes";return result2.remember===!0&&options.trustStore.set(options.cwd,trusted),trusted}}let decision=options.trustStore.get(options.cwd);if(decision!==null)return decision;switch(options.defaultProjectTrust??SETTINGS_DEFAULTS.defaultProjectTrust){case"always":return!0;case"never":return!1;case"ask":break}if(!options.projectTrustContext.hasUI)return!1;let selected=await selectProjectTrustOption(options.cwd,options.projectTrustContext);return selected!==void 0?(saveProjectTrustPromptResult(options.trustStore,selected),selected.trusted):!1}function collectSettingsDiagnostics(settingsManager){return settingsManager.drainErrors().map(({scope,path:path10,error})=>({type:"warning",message:path10?`Invalid settings file ${path10}: ${error.message}`:`Invalid ${scope} settings: ${error.message}`}))}function deduplicateDiagnostics(diagnostics){let seen=new Set;return diagnostics.filter(diagnostic=>{let key=`${diagnostic.type}\0${diagnostic.message}`;return seen.has(key)?!1:(seen.add(key),!0)})}var loadMcpCommand=()=>import("./cli-66ZLURJW.js");import{existsSync as existsSync22,mkdirSync as mkdirSync11,readdirSync as readdirSync9,readFileSync as readFileSync17,renameSync as renameSync4,rmSync as rmSync6,writeFileSync as writeFileSync10}from"fs";import{dirname as dirname20,join as join32}from"path";var MIGRATION_GUIDE_URL="https://github.com/KnightCodeAI/knightcode/blob/main/packages/coding-agent/CHANGELOG.md#extensions-migration",EXTENSIONS_DOC_URL="https://github.com/KnightCodeAI/knightcode/blob/main/packages/coding-agent/docs/extensions.md";function migrateAuthToAuthJson(){let agentDir=getAgentDir(),authPath=join32(agentDir,"auth.json"),oauthPath=join32(agentDir,"oauth.json"),settingsPath=join32(agentDir,"settings.json");if(existsSync22(authPath))return[];let migrated={},providers=[];if(existsSync22(oauthPath))try{let oauth=JSON.parse(stripBom(readFileSync17(oauthPath,"utf-8")));for(let[provider,cred]of Object.entries(oauth))migrated[provider]={type:"oauth",...cred},providers.push(provider);renameSync4(oauthPath,`${oauthPath}.migrated`)}catch{}if(existsSync22(settingsPath))try{let content=readFileSync17(settingsPath,"utf-8"),settings=JSON.parse(stripBom(content));if(settings.apiKeys&&typeof settings.apiKeys=="object"){for(let[provider,key]of Object.entries(settings.apiKeys))!migrated[provider]&&typeof key=="string"&&(migrated[provider]={type:"api_key",key},providers.push(provider));delete settings.apiKeys,writeFileSync10(settingsPath,JSON.stringify(settings,null,2))}}catch{}return Object.keys(migrated).length>0&&(mkdirSync11(dirname20(authPath),{recursive:!0}),writeFileSync10(authPath,JSON.stringify(migrated,null,2),{mode:384})),providers}function migrateSessionsFromAgentRoot(){let agentDir=getAgentDir(),files;try{files=readdirSync9(agentDir).filter(f=>f.endsWith(".jsonl")).map(f=>join32(agentDir,f))}catch{return}if(files.length!==0)for(let file of files)try{let firstLine3=readFileSync17(file,"utf8").split(`
1083
1083
  `)[0];if(!firstLine3?.trim())continue;let header=JSON.parse(firstLine3);if(header.type!=="session"||!header.cwd)continue;let safePath=`--${header.cwd.replace(/^[/\\]/,"").replace(/[/\\:]/g,"-")}--`,correctDir=join32(agentDir,"sessions",safePath);existsSync22(correctDir)||mkdirSync11(correctDir,{recursive:!0});let fileName=file.split("/").pop()||file.split("\\").pop(),newPath=join32(correctDir,fileName);if(existsSync22(newPath))continue;renameSync4(file,newPath)}catch{}}function migrateCommandsToPrompts(baseDir,label){let commandsDir=join32(baseDir,"commands"),promptsDir=join32(baseDir,"prompts");if(existsSync22(commandsDir)&&!existsSync22(promptsDir))try{return renameSync4(commandsDir,promptsDir),console.log(source_default.green(`Migrated ${label} commands/ \u2192 prompts/`)),!0}catch(err){console.log(source_default.yellow(`Warning: Could not migrate ${label} commands/ to prompts/: ${err instanceof Error?err.message:err}`))}return!1}function migrateKeybindingsConfigFile(){let configPath=join32(getAgentDir(),"keybindings.json");if(existsSync22(configPath))try{let parsed=JSON.parse(stripBom(readFileSync17(configPath,"utf-8")));if(typeof parsed!="object"||parsed===null||Array.isArray(parsed))return;let{config,migrated}=migrateKeybindingsConfig(parsed);if(!migrated)return;writeFileSync10(configPath,`${JSON.stringify(config,null,2)}
1084
1084
  `,"utf-8")}catch{}}function migrateToolsToBin(){let agentDir=getAgentDir(),toolsDir=join32(agentDir,"tools"),binDir=getBinDir();if(!existsSync22(toolsDir))return;let binaries=["fd","rg","fd.exe","rg.exe"],movedAny=!1;for(let bin of binaries){let oldPath=join32(toolsDir,bin),newPath=join32(binDir,bin);if(existsSync22(oldPath))if(existsSync22(binDir)||mkdirSync11(binDir,{recursive:!0}),existsSync22(newPath))try{rmSync6?.(oldPath,{force:!0})}catch{}else try{renameSync4(oldPath,newPath),movedAny=!0}catch{}}movedAny&&console.log(source_default.green("Migrated managed binaries tools/ \u2192 bin/"))}function checkDeprecatedExtensionDirs(baseDir,label){let hooksDir=join32(baseDir,"hooks"),toolsDir=join32(baseDir,"tools"),warnings=[];if(existsSync22(hooksDir)&&warnings.push(`${label} hooks/ directory found. Hooks have been renamed to extensions.`),existsSync22(toolsDir))try{readdirSync9(toolsDir).filter(e=>{let lower=e.toLowerCase();return lower!=="fd"&&lower!=="rg"&&lower!=="fd.exe"&&lower!=="rg.exe"&&!e.startsWith(".")}).length>0&&warnings.push(`${label} tools/ directory contains custom tools. Custom tools have been merged into extensions.`)}catch{}return warnings}function migrateExtensionSystem(cwd){let agentDir=getAgentDir(),projectDir=join32(cwd,CONFIG_DIR_NAME);return migrateCommandsToPrompts(agentDir,"Global"),migrateCommandsToPrompts(projectDir,"Project"),[...checkDeprecatedExtensionDirs(agentDir,"Global"),...checkDeprecatedExtensionDirs(projectDir,"Project")]}async function showDeprecationWarnings(warnings){if(warnings.length!==0){for(let warning of warnings)console.log(source_default.yellow(`Warning: ${warning}`));console.log(source_default.yellow(`
1085
1085
  Move your extensions to the extensions/ directory.`)),console.log(source_default.yellow(`Migration guide: ${MIGRATION_GUIDE_URL}`)),console.log(source_default.yellow(`Documentation: ${EXTENSIONS_DOC_URL}`)),console.log(source_default.dim(`
@@ -1116,7 +1116,7 @@ Report ID: ${bundle.metadata.id}`)}function recordInSession(session,bundle,deliv
1116
1116
  `),cachedWidth,cachedLines;this.contentContainer.addChild({render:width=>((cachedLines===void 0||cachedWidth!==width)&&(cachedLines=truncateToVisualLines(styledOutput,PREVIEW_LINES2,width,0).visualLines,cachedWidth=width),cachedLines??[]),invalidate:()=>{cachedWidth=void 0,cachedLines=void 0}})}if(this.status==="running")this.contentContainer.addChild(this.loaderRow);else{let statusParts=[];hiddenLineCount>0&&(this.expanded?statusParts.push(`${theme.fg("muted","(")}${keyHint("app.tools.expand","to collapse")}${theme.fg("muted",")")}`):statusParts.push(`${theme.fg("muted",`... ${plural(hiddenLineCount,"more line")} (`)}${keyHint("app.tools.expand","to expand")}${theme.fg("muted",")")}`)),this.status==="cancelled"?statusParts.push(theme.fg("warning","(cancelled)")):this.status==="error"&&statusParts.push(theme.fg("error",`(exit ${this.exitCode})`)),(this.truncationResult?.truncated||contextTruncation.truncated)&&this.fullOutputPath&&statusParts.push(theme.fg("warning",`Output truncated. Full output: ${this.fullOutputPath}`)),statusParts.length>0&&this.contentContainer.addChild(new Text(statusParts.join(`
1117
1117
  `),0,0))}}getOutput(){return this.outputLines.join(`
1118
1118
  `)}getCommand(){return this.command}};var BranchSummaryMessageComponent=class extends CollapsibleCallComponent{constructor(message,markdownTheme,outputPad=1){super("Branch","summary",countedSummary("Summarized",message.summary),message.summary,markdownTheme,outputPad)}};var CompactionSummaryMessageComponent=class extends CollapsibleCallComponent{constructor(message,markdownTheme,outputPad=1){super("Compact",`${message.tokensBefore.toLocaleString()} tokens`,countedSummary("Summarized",message.summary),message.summary,markdownTheme,outputPad)}};var CustomEntryComponent=class extends Container{entry;renderer;customComponent;_expanded=!1;outputPad;padContent=!1;constructor(entry,renderer,outputPad=1){super(),this.entry=entry,this.renderer=renderer,this.outputPad=outputPad,this.rebuild()}hasContent(){return this.customComponent!==void 0}setExpanded(expanded){this._expanded!==expanded&&(this._expanded=expanded,this.rebuild())}setOutputPad(outputPad){this.outputPad=outputPad}render(width){if(!this.padContent)return super.render(width);let pad=Math.max(0,this.outputPad);return prefixOutputPad(super.render(Math.max(1,width-pad)),pad,width)}handleMouse(event){if(!this.padContent)return super.handleMouse(event);let next=paddedMouseEvent(event,this.outputPad);if(next)return super.handleMouse(next)}invalidate(){super.invalidate(),this.rebuild()}rebuild(){this.clear(),this.customComponent=void 0;let component;this.padContent=!1;try{component=this.renderer(this.entry,{expanded:this._expanded},theme)}catch(error){let message=error instanceof Error?error.message:String(error);this.padContent=!0,component=callBlock(formatToolCall(theme,this.entry.customType),new Text(theme.fg("error",`Renderer failed: ${message}`),0,0),"error")}component&&(this.customComponent=component,this.addChild(new Spacer(1)),this.addChild(component))}};var CustomMessageComponent=class extends Container{message;customRenderer;defaultComponent;customComponent;markdownTheme;_expanded=!1;outputPad;constructor(message,customRenderer,markdownTheme=getMarkdownTheme(),outputPad=1){super(),this.message=message,this.customRenderer=customRenderer,this.markdownTheme=markdownTheme,this.outputPad=outputPad,this.addChild(new Spacer(1)),this.rebuild()}setExpanded(expanded){this._expanded!==expanded&&(this._expanded=expanded,this.rebuild())}setOutputPad(outputPad){this.outputPad!==outputPad&&(this.outputPad=outputPad,this.customRenderer&&this.rebuild())}render(width){if(this.customComponent)return super.render(width);let pad=Math.max(0,this.outputPad);return prefixOutputPad(super.render(Math.max(1,width-pad)),pad,width)}handleMouse(event){if(this.customComponent)return super.handleMouse(event);let next=paddedMouseEvent(event,this.outputPad);if(next)return super.handleMouse(next)}invalidate(){super.invalidate(),this.rebuild()}rebuild(){if(this.customComponent&&(this.removeChild(this.customComponent),this.customComponent=void 0),this.defaultComponent&&(this.removeChild(this.defaultComponent),this.defaultComponent=void 0),this.customRenderer)try{let component=this.customRenderer(this.message,{expanded:this._expanded,outputPad:this.outputPad},theme);if(component){this.customComponent=component,this.addChild(component);return}}catch{}let text;typeof this.message.content=="string"?text=this.message.content:text=this.message.content.filter(c=>c.type==="text").map(c=>c.text).join(`
1119
- `),this.defaultComponent=callBlock(formatToolCall(theme,this.message.customType),new Markdown(text,0,0,this.markdownTheme,{color:text2=>theme.fg("toolOutput",text2)})),this.addChild(this.defaultComponent)}};function playEasterEgg3d(tui,egg){if(!(tui instanceof TuiAltScreen))return!1;if(tui.hasOverlay())return!0;let screen=tui.getScreenLines();return import("./easter-egg-3d-FDCGDUF3.js").then(module=>module.playEasterEgg3d(tui,screen,egg),()=>{}),!0}function playArmin3d(tui){return playEasterEgg3d(tui,{kind:"armin"})}var LoginDialogComponent=class extends Container{contentContainer;input;tui;authUrl;abortController=new AbortController;inputResolver;inputRejecter;onComplete;_focused=!1;get focused(){return this._focused}set focused(value){this._focused=value,this.input.focused=value}constructor(tui,providerId,onComplete,providerNameOverride,titleOverride){super(),this.tui=tui,this.onComplete=onComplete;let title=titleOverride??`Login to ${providerNameOverride||providerId}`;this.addChild(new DynamicBorder),this.addChild(new Text(theme.fg("accent",theme.bold(title)),1,0)),this.contentContainer=new Container,this.addChild(this.contentContainer),this.input=new Input,this.input.onSubmit=()=>{if(this.inputResolver){let value=this.input.getValue();this.replaceInputWithSubmittedText(value),this.inputResolver(value),this.inputResolver=void 0,this.inputRejecter=void 0}},this.input.onEscape=()=>{this.cancel()},this.addChild(new DynamicBorder)}get signal(){return this.abortController.signal}replaceInputWithSubmittedText(value){this.contentContainer.children=this.contentContainer.children.map(child=>child===this.input?new Text(`> ${value}`,0,0):child)}cancel(){this.abortController.abort(),this.inputRejecter&&(this.inputRejecter(new Error("Login cancelled")),this.inputResolver=void 0,this.inputRejecter=void 0),this.onComplete(!1,"Login cancelled")}showAuth(url,instructions2){this.contentContainer.clear(),this.contentContainer.addChild(new Spacer(1)),this.authUrl=new AuthUrlComponent(this.tui,url),this.contentContainer.addChild(this.authUrl),instructions2&&(this.contentContainer.addChild(new Spacer(1)),this.contentContainer.addChild(new Text(theme.fg("warning",instructions2),1,0))),openBrowser(url),this.tui.requestRender()}showDeviceCode(info){this.authUrl=void 0,this.contentContainer.clear(),this.contentContainer.addChild(new Spacer(1));let linkedUrl=`\x1B]8;;${info.verificationUri}\x07${info.verificationUri}\x1B]8;;\x07`;this.contentContainer.addChild(new Text(theme.fg("accent",linkedUrl),1,0));let clickHint=process.platform==="darwin"?"Cmd+click to open":"Ctrl+click to open",hyperlink3=`\x1B]8;;${info.verificationUri}\x07${clickHint}\x1B]8;;\x07`;this.contentContainer.addChild(new Text(theme.fg("dim",hyperlink3),1,0)),this.contentContainer.addChild(new Spacer(1)),this.contentContainer.addChild(new Text(theme.fg("warning",`Enter code: ${info.userCode}`),1,0)),this.tui.requestRender()}showManualInput(prompt){return this.input.setValue(""),this.contentContainer.addChild(new Spacer(1)),this.contentContainer.addChild(new Text(theme.fg("dim",prompt),1,0)),this.contentContainer.addChild(this.input),this.contentContainer.addChild(new Text(`(${keyHint("tui.select.cancel","to cancel")})`,1,0)),this.tui.requestRender(),new Promise((resolve17,reject)=>{this.inputResolver=resolve17,this.inputRejecter=reject})}showPrompt(message,placeholder){return this.contentContainer.addChild(new Spacer(1)),this.contentContainer.addChild(new Text(theme.fg("text",message),1,0)),placeholder&&this.contentContainer.addChild(new Text(theme.fg("dim",`e.g., ${placeholder}`),1,0)),this.contentContainer.addChild(this.input),this.contentContainer.addChild(new Text(`(${keyHint("tui.select.cancel","to cancel,")} ${keyHint("tui.select.confirm","to submit")})`,1,0)),this.input.setValue(""),this.tui.requestRender(),new Promise((resolve17,reject)=>{this.inputResolver=resolve17,this.inputRejecter=reject})}showDetails(lines){this.authUrl=void 0,this.contentContainer.clear(),this.contentContainer.addChild(new Spacer(1));for(let line of lines)this.contentContainer.addChild(new Text(line,1,0));this.tui.requestRender()}showInfo(message,links=[],showCloseHint=!1){this.contentContainer.addChild(new Spacer(1)),this.contentContainer.addChild(new Text(theme.fg("text",message),1,0));for(let link2 of links){let text=link2.label?`${link2.label}: ${link2.url}`:link2.url,hyperlink3=`\x1B]8;;${link2.url}\x07${text}\x1B]8;;\x07`;this.contentContainer.addChild(new Text(theme.fg("accent",hyperlink3),1,0))}showCloseHint&&(this.contentContainer.addChild(new Spacer(1)),this.contentContainer.addChild(new Text(`(${keyHint("tui.select.cancel","to close")})`,1,0))),this.tui.requestRender()}showWaiting(message){this.contentContainer.addChild(new Spacer(1)),this.contentContainer.addChild(new Text(theme.fg("dim",message),1,0)),this.contentContainer.addChild(new Text(`(${keyHint("tui.select.cancel","to cancel")})`,1,0)),this.tui.requestRender()}showProgress(message){this.contentContainer.addChild(new Text(theme.fg("dim",message),1,0)),this.tui.requestRender()}handleInput(data){let kb=getKeybindings();if(kb.matches(data,"tui.select.cancel")){this.cancel();return}if(this.authUrl&&kb.matches(data,"app.message.copy")){this.authUrl.copy();return}this.input.handleInput(data)}};var WIDTHS=[[0,172,1],[173,173,0],[174,767,1],[768,879,0],[880,1154,1],[1155,1161,0],[1162,1424,1],[1425,1469,0],[1470,1470,1],[1471,1471,0],[1472,1472,1],[1473,1474,0],[1475,1475,1],[1476,1477,0],[1478,1478,1],[1479,1479,0],[1480,1540,1],[1541,1541,0],[1542,1551,1],[1552,1562,0],[1563,1563,1],[1564,1564,0],[1565,1610,1],[1611,1631,0],[1632,1647,1],[1648,1648,0],[1649,1749,1],[1750,1756,0],[1757,1758,1],[1759,1764,0],[1765,1766,1],[1767,1768,0],[1769,1769,1],[1770,1773,0],[1774,1806,1],[1807,1807,0],[1808,1808,1],[1809,1809,0],[1810,1839,1],[1840,1866,0],[1867,1957,1],[1958,1968,0],[1969,2026,1],[2027,2035,0],[2036,2044,1],[2045,2045,0],[2046,2069,1],[2070,2073,0],[2074,2074,1],[2075,2083,0],[2084,2084,1],[2085,2087,0],[2088,2088,1],[2089,2093,0],[2094,2136,1],[2137,2139,0],[2140,2191,1],[2192,2193,0],[2194,2199,1],[2200,2207,0],[2208,2249,1],[2250,2306,0],[2307,2361,1],[2362,2362,0],[2363,2363,1],[2364,2364,0],[2365,2368,1],[2369,2376,0],[2377,2380,1],[2381,2381,0],[2382,2384,1],[2385,2391,0],[2392,2401,1],[2402,2403,0],[2404,2432,1],[2433,2433,0],[2434,2491,1],[2492,2492,0],[2493,2493,1],[2494,2494,0],[2495,2496,1],[2497,2500,0],[2501,2508,1],[2509,2509,0],[2510,2518,1],[2519,2519,0],[2520,2529,1],[2530,2531,0],[2532,2557,1],[2558,2558,0],[2559,2560,1],[2561,2562,0],[2563,2619,1],[2620,2620,0],[2621,2624,1],[2625,2626,0],[2627,2630,1],[2631,2632,0],[2633,2634,1],[2635,2637,0],[2638,2640,1],[2641,2641,0],[2642,2671,1],[2672,2673,0],[2674,2676,1],[2677,2677,0],[2678,2688,1],[2689,2690,0],[2691,2747,1],[2748,2748,0],[2749,2752,1],[2753,2757,0],[2758,2758,1],[2759,2760,0],[2761,2764,1],[2765,2765,0],[2766,2785,1],[2786,2787,0],[2788,2809,1],[2810,2815,0],[2816,2816,1],[2817,2817,0],[2818,2875,1],[2876,2876,0],[2877,2877,1],[2878,2879,0],[2880,2880,1],[2881,2884,0],[2885,2892,1],[2893,2893,0],[2894,2900,1],[2901,2903,0],[2904,2913,1],[2914,2915,0],[2916,2945,1],[2946,2946,0],[2947,3005,1],[3006,3006,0],[3007,3007,1],[3008,3008,0],[3009,3020,1],[3021,3021,0],[3022,3030,1],[3031,3031,0],[3032,3071,1],[3072,3072,0],[3073,3075,1],[3076,3076,0],[3077,3131,1],[3132,3132,0],[3133,3133,1],[3134,3136,0],[3137,3141,1],[3142,3144,0],[3145,3145,1],[3146,3149,0],[3150,3156,1],[3157,3158,0],[3159,3169,1],[3170,3171,0],[3172,3200,1],[3201,3201,0],[3202,3259,1],[3260,3260,0],[3261,3262,1],[3263,3264,0],[3265,3265,1],[3266,3266,0],[3267,3269,1],[3270,3272,0],[3273,3273,1],[3274,3277,0],[3278,3284,1],[3285,3286,0],[3287,3297,1],[3298,3299,0],[3300,3327,1],[3328,3329,0],[3330,3386,1],[3387,3388,0],[3389,3389,1],[3390,3390,0],[3391,3392,1],[3393,3396,0],[3397,3404,1],[3405,3406,0],[3407,3414,1],[3415,3415,0],[3416,3425,1],[3426,3427,0],[3428,3456,1],[3457,3457,0],[3458,3529,1],[3530,3530,0],[3531,3534,1],[3535,3535,0],[3536,3537,1],[3538,3540,0],[3541,3541,1],[3542,3542,0],[3543,3550,1],[3551,3551,0],[3552,3632,1],[3633,3633,0],[3634,3635,1],[3636,3642,0],[3643,3654,1],[3655,3662,0],[3663,3760,1],[3761,3761,0],[3762,3763,1],[3764,3772,0],[3773,3783,1],[3784,3790,0],[3791,3863,1],[3864,3865,0],[3866,3892,1],[3893,3893,0],[3894,3894,1],[3895,3895,0],[3896,3896,1],[3897,3897,0],[3898,3952,1],[3953,3966,0],[3967,3967,1],[3968,3972,0],[3973,3973,1],[3974,3975,0],[3976,3980,1],[3981,3991,0],[3992,3992,1],[3993,4028,0],[4029,4037,1],[4038,4038,0],[4039,4140,1],[4141,4144,0],[4145,4145,1],[4146,4151,0],[4152,4152,1],[4153,4154,0],[4155,4156,1],[4157,4158,0],[4159,4183,1],[4184,4185,0],[4186,4189,1],[4190,4192,0],[4193,4208,1],[4209,4212,0],[4213,4225,1],[4226,4226,0],[4227,4228,1],[4229,4230,0],[4231,4236,1],[4237,4237,0],[4238,4252,1],[4253,4253,0],[4254,4351,1],[4352,4447,2],[4448,4607,0],[4608,4956,1],[4957,4959,0],[4960,5905,1],[5906,5908,0],[5909,5937,1],[5938,5939,0],[5940,5969,1],[5970,5971,0],[5972,6001,1],[6002,6003,0],[6004,6051,1],[6052,6052,2],[6053,6067,1],[6068,6069,0],[6070,6070,1],[6071,6077,0],[6078,6085,1],[6086,6086,0],[6087,6088,1],[6089,6099,0],[6100,6103,1],[6104,6104,3],[6105,6108,1],[6109,6109,0],[6110,6154,1],[6155,6159,0],[6160,6276,1],[6277,6278,0],[6279,6312,1],[6313,6313,0],[6314,6431,1],[6432,6434,0],[6435,6438,1],[6439,6440,0],[6441,6449,1],[6450,6450,0],[6451,6456,1],[6457,6459,0],[6460,6678,1],[6679,6680,0],[6681,6682,1],[6683,6683,0],[6684,6741,1],[6742,6742,0],[6743,6743,1],[6744,6750,0],[6751,6751,1],[6752,6752,0],[6753,6753,1],[6754,6754,0],[6755,6756,1],[6757,6764,0],[6765,6770,1],[6771,6780,0],[6781,6782,1],[6783,6783,0],[6784,6831,1],[6832,6862,0],[6863,6911,1],[6912,6915,0],[6916,6963,1],[6964,6973,0],[6974,6977,1],[6978,6979,0],[6980,7018,1],[7019,7027,0],[7028,7039,1],[7040,7041,0],[7042,7073,1],[7074,7077,0],[7078,7079,1],[7080,7081,0],[7082,7082,1],[7083,7085,0],[7086,7141,1],[7142,7142,0],[7143,7143,1],[7144,7145,0],[7146,7148,1],[7149,7149,0],[7150,7150,1],[7151,7153,0],[7154,7211,1],[7212,7219,0],[7220,7221,1],[7222,7223,0],[7224,7375,1],[7376,7378,0],[7379,7379,1],[7380,7392,0],[7393,7393,1],[7394,7400,0],[7401,7404,1],[7405,7405,0],[7406,7411,1],[7412,7412,0],[7413,7415,1],[7416,7417,0],[7418,7615,1],[7616,7679,0],[7680,8202,1],[8203,8207,0],[8208,8233,1],[8234,8238,0],[8239,8287,1],[8288,8303,0],[8304,8399,1],[8400,8432,0],[8433,8985,1],[8986,8987,2],[8988,9e3,1],[9001,9002,2],[9003,9192,1],[9193,9196,2],[9197,9199,1],[9200,9200,2],[9201,9202,1],[9203,9203,2],[9204,9724,1],[9725,9726,2],[9727,9747,1],[9748,9749,2],[9750,9799,1],[9800,9811,2],[9812,9854,1],[9855,9855,2],[9856,9874,1],[9875,9875,2],[9876,9888,1],[9889,9889,2],[9890,9897,1],[9898,9899,2],[9900,9916,1],[9917,9918,2],[9919,9923,1],[9924,9925,2],[9926,9933,1],[9934,9934,2],[9935,9939,1],[9940,9940,2],[9941,9961,1],[9962,9962,2],[9963,9969,1],[9970,9971,2],[9972,9972,1],[9973,9973,2],[9974,9977,1],[9978,9978,2],[9979,9980,1],[9981,9981,2],[9982,9988,1],[9989,9989,2],[9990,9993,1],[9994,9995,2],[9996,10023,1],[10024,10024,2],[10025,10059,1],[10060,10060,2],[10061,10061,1],[10062,10062,2],[10063,10066,1],[10067,10069,2],[10070,10070,1],[10071,10071,2],[10072,10132,1],[10133,10135,2],[10136,10159,1],[10160,10160,2],[10161,10174,1],[10175,10175,2],[10176,11034,1],[11035,11036,2],[11037,11087,1],[11088,11088,2],[11089,11092,1],[11093,11093,2],[11094,11502,1],[11503,11505,0],[11506,11743,1],[11744,11775,0],[11776,11903,1],[11904,11929,2],[11930,11930,1],[11931,12019,2],[12020,12031,1],[12032,12245,2],[12246,12271,1],[12272,12329,2],[12330,12335,0],[12336,12350,2],[12351,12352,1],[12353,12438,2],[12439,12440,1],[12441,12442,0],[12443,12543,2],[12544,12548,1],[12549,12591,2],[12592,12592,1],[12593,12643,2],[12644,12644,0],[12645,12686,2],[12687,12687,1],[12688,12771,2],[12772,12782,1],[12783,12830,2],[12831,12831,1],[12832,12871,2],[12872,12879,1],[12880,19903,2],[19904,19967,1],[19968,42124,2],[42125,42127,1],[42128,42182,2],[42183,42606,1],[42607,42610,0],[42611,42611,1],[42612,42621,0],[42622,42653,1],[42654,42655,0],[42656,42735,1],[42736,42737,0],[42738,43009,1],[43010,43010,0],[43011,43013,1],[43014,43014,0],[43015,43018,1],[43019,43019,0],[43020,43044,1],[43045,43046,0],[43047,43051,1],[43052,43052,0],[43053,43203,1],[43204,43205,0],[43206,43231,1],[43232,43249,0],[43250,43257,1],[43258,43258,0],[43259,43262,1],[43263,43263,0],[43264,43301,1],[43302,43309,0],[43310,43334,1],[43335,43345,0],[43346,43359,1],[43360,43388,2],[43389,43391,1],[43392,43394,0],[43395,43442,1],[43443,43443,0],[43444,43445,1],[43446,43449,0],[43450,43451,1],[43452,43453,0],[43454,43492,1],[43493,43493,0],[43494,43560,1],[43561,43566,0],[43567,43568,1],[43569,43570,0],[43571,43572,1],[43573,43574,0],[43575,43586,1],[43587,43587,0],[43588,43595,1],[43596,43596,0],[43597,43643,1],[43644,43644,0],[43645,43695,1],[43696,43696,0],[43697,43697,1],[43698,43700,0],[43701,43702,1],[43703,43704,0],[43705,43709,1],[43710,43711,0],[43712,43712,1],[43713,43713,0],[43714,43755,1],[43756,43757,0],[43758,43765,1],[43766,43766,0],[43767,44004,1],[44005,44005,0],[44006,44007,1],[44008,44008,0],[44009,44012,1],[44013,44013,0],[44014,44031,1],[44032,55203,2],[55204,55215,1],[55216,55238,0],[55239,55242,1],[55243,55291,0],[55292,63743,1],[63744,64255,2],[64256,64285,1],[64286,64286,0],[64287,65023,1],[65024,65039,0],[65040,65049,2],[65050,65055,1],[65056,65071,0],[65072,65106,2],[65107,65107,1],[65108,65126,2],[65127,65127,1],[65128,65131,2],[65132,65278,1],[65279,65279,0],[65280,65280,1],[65281,65376,2],[65377,65437,1],[65438,65440,0],[65441,65503,1],[65504,65510,2],[65511,65519,1],[65520,65528,0],[65529,66044,1],[66045,66045,0],[66046,66271,1],[66272,66272,0],[66273,66421,1],[66422,66426,0],[66427,68096,1],[68097,68099,0],[68100,68100,1],[68101,68102,0],[68103,68107,1],[68108,68111,0],[68112,68151,1],[68152,68154,0],[68155,68158,1],[68159,68159,0],[68160,68324,1],[68325,68326,0],[68327,68899,1],[68900,68903,0],[68904,69290,1],[69291,69292,0],[69293,69372,1],[69373,69375,0],[69376,69445,1],[69446,69456,0],[69457,69505,1],[69506,69509,0],[69510,69632,1],[69633,69633,0],[69634,69687,1],[69688,69702,0],[69703,69743,1],[69744,69744,0],[69745,69746,1],[69747,69748,0],[69749,69758,1],[69759,69761,0],[69762,69810,1],[69811,69814,0],[69815,69816,1],[69817,69818,0],[69819,69825,1],[69826,69826,0],[69827,69887,1],[69888,69890,0],[69891,69926,1],[69927,69931,0],[69932,69932,1],[69933,69940,0],[69941,70002,1],[70003,70003,0],[70004,70015,1],[70016,70017,0],[70018,70069,1],[70070,70078,0],[70079,70081,1],[70082,70083,0],[70084,70088,1],[70089,70092,0],[70093,70094,1],[70095,70095,0],[70096,70190,1],[70191,70193,0],[70194,70195,1],[70196,70196,0],[70197,70197,1],[70198,70199,0],[70200,70205,1],[70206,70206,0],[70207,70208,1],[70209,70209,0],[70210,70366,1],[70367,70367,0],[70368,70370,1],[70371,70378,0],[70379,70399,1],[70400,70401,0],[70402,70458,1],[70459,70460,0],[70461,70461,1],[70462,70462,0],[70463,70463,1],[70464,70464,0],[70465,70486,1],[70487,70487,0],[70488,70501,1],[70502,70508,0],[70509,70511,1],[70512,70516,0],[70517,70711,1],[70712,70719,0],[70720,70721,1],[70722,70724,0],[70725,70725,1],[70726,70726,0],[70727,70749,1],[70750,70750,0],[70751,70831,1],[70832,70832,0],[70833,70834,1],[70835,70840,0],[70841,70841,1],[70842,70842,0],[70843,70844,1],[70845,70845,0],[70846,70846,1],[70847,70848,0],[70849,70849,1],[70850,70851,0],[70852,71086,1],[71087,71087,0],[71088,71089,1],[71090,71093,0],[71094,71099,1],[71100,71101,0],[71102,71102,1],[71103,71104,0],[71105,71131,1],[71132,71133,0],[71134,71218,1],[71219,71226,0],[71227,71228,1],[71229,71229,0],[71230,71230,1],[71231,71232,0],[71233,71338,1],[71339,71339,0],[71340,71340,1],[71341,71341,0],[71342,71343,1],[71344,71349,0],[71350,71350,1],[71351,71351,0],[71352,71452,1],[71453,71455,0],[71456,71457,1],[71458,71461,0],[71462,71462,1],[71463,71467,0],[71468,71726,1],[71727,71735,0],[71736,71736,1],[71737,71738,0],[71739,71983,1],[71984,71984,0],[71985,71994,1],[71995,71996,0],[71997,71997,1],[71998,71999,0],[72e3,72e3,1],[72001,72001,0],[72002,72002,1],[72003,72003,0],[72004,72147,1],[72148,72151,0],[72152,72153,1],[72154,72155,0],[72156,72159,1],[72160,72160,0],[72161,72192,1],[72193,72202,0],[72203,72242,1],[72243,72248,0],[72249,72249,1],[72250,72254,0],[72255,72262,1],[72263,72263,0],[72264,72272,1],[72273,72278,0],[72279,72280,1],[72281,72283,0],[72284,72323,1],[72324,72342,0],[72343,72343,1],[72344,72345,0],[72346,72751,1],[72752,72758,0],[72759,72759,1],[72760,72765,0],[72766,72766,1],[72767,72767,0],[72768,72849,1],[72850,72871,0],[72872,72873,1],[72874,72880,0],[72881,72881,1],[72882,72883,0],[72884,72884,1],[72885,72886,0],[72887,73008,1],[73009,73014,0],[73015,73017,1],[73018,73018,0],[73019,73019,1],[73020,73021,0],[73022,73022,1],[73023,73031,0],[73032,73103,1],[73104,73105,0],[73106,73108,1],[73109,73109,0],[73110,73110,1],[73111,73111,0],[73112,73458,1],[73459,73460,0],[73461,73471,1],[73472,73474,0],[73475,73525,1],[73526,73530,0],[73531,73535,1],[73536,73536,0],[73537,73537,1],[73538,73538,0],[73539,78911,1],[78912,78912,0],[78913,78918,1],[78919,78933,0],[78934,92911,1],[92912,92916,0],[92917,92975,1],[92976,92982,0],[92983,94030,1],[94031,94031,0],[94032,94094,1],[94095,94098,0],[94099,94175,1],[94176,94179,2],[94180,94180,0],[94181,94191,1],[94192,94193,2],[94194,94207,1],[94208,100343,2],[100344,100351,1],[100352,101589,2],[101590,101631,1],[101632,101640,2],[101641,110575,1],[110576,110579,2],[110580,110580,1],[110581,110587,2],[110588,110588,1],[110589,110590,2],[110591,110591,1],[110592,110882,2],[110883,110897,1],[110898,110898,2],[110899,110927,1],[110928,110930,2],[110931,110932,1],[110933,110933,2],[110934,110947,1],[110948,110951,2],[110952,110959,1],[110960,111355,2],[111356,113820,1],[113821,113822,0],[113823,113823,1],[113824,113827,0],[113828,118527,1],[118528,118573,0],[118574,118575,1],[118576,118598,0],[118599,119140,1],[119141,119141,0],[119142,119142,1],[119143,119145,0],[119146,119149,1],[119150,119170,0],[119171,119172,1],[119173,119179,0],[119180,119209,1],[119210,119213,0],[119214,119361,1],[119362,119364,0],[119365,121343,1],[121344,121398,0],[121399,121402,1],[121403,121452,0],[121453,121460,1],[121461,121461,0],[121462,121475,1],[121476,121476,0],[121477,121498,1],[121499,121503,0],[121504,121504,1],[121505,121519,0],[121520,122879,1],[122880,122886,0],[122887,122887,1],[122888,122904,0],[122905,122906,1],[122907,122913,0],[122914,122914,1],[122915,122916,0],[122917,122917,1],[122918,122922,0],[122923,123022,1],[123023,123023,0],[123024,123183,1],[123184,123190,0],[123191,123565,1],[123566,123566,0],[123567,123627,1],[123628,123631,0],[123632,124139,1],[124140,124143,0],[124144,125135,1],[125136,125142,0],[125143,125251,1],[125252,125258,0],[125259,126979,1],[126980,126980,2],[126981,127182,1],[127183,127183,2],[127184,127373,1],[127374,127374,2],[127375,127376,1],[127377,127386,2],[127387,127487,1],[127488,127490,2],[127491,127503,1],[127504,127547,2],[127548,127551,1],[127552,127560,2],[127561,127567,1],[127568,127569,2],[127570,127583,1],[127584,127589,2],[127590,127743,1],[127744,127776,2],[127777,127788,1],[127789,127797,2],[127798,127798,1],[127799,127868,2],[127869,127869,1],[127870,127891,2],[127892,127903,1],[127904,127946,2],[127947,127950,1],[127951,127955,2],[127956,127967,1],[127968,127984,2],[127985,127987,1],[127988,127988,2],[127989,127991,1],[127992,128062,2],[128063,128063,1],[128064,128064,2],[128065,128065,1],[128066,128252,2],[128253,128254,1],[128255,128317,2],[128318,128330,1],[128331,128334,2],[128335,128335,1],[128336,128359,2],[128360,128377,1],[128378,128378,2],[128379,128404,1],[128405,128406,2],[128407,128419,1],[128420,128420,2],[128421,128506,1],[128507,128591,2],[128592,128639,1],[128640,128709,2],[128710,128715,1],[128716,128716,2],[128717,128719,1],[128720,128722,2],[128723,128724,1],[128725,128727,2],[128728,128731,1],[128732,128735,2],[128736,128746,1],[128747,128748,2],[128749,128755,1],[128756,128764,2],[128765,128991,1],[128992,129003,2],[129004,129007,1],[129008,129008,2],[129009,129291,1],[129292,129338,2],[129339,129339,1],[129340,129349,2],[129350,129350,1],[129351,129535,2],[129536,129647,1],[129648,129660,2],[129661,129663,1],[129664,129672,2],[129673,129679,1],[129680,129725,2],[129726,129726,1],[129727,129733,2],[129734,129741,1],[129742,129755,2],[129756,129759,1],[129760,129768,2],[129769,129775,1],[129776,129784,2],[129785,131071,1],[131072,196605,2],[196606,196607,1],[196608,262141,2],[262142,917503,1],[917504,921599,0],[921600,1114111,1]];var segmenter=new Intl.Segmenter("en",{granularity:"grapheme"}),VS16=65039,isRegionalIndicator=cp=>cp>=127462&&cp<=127487;function codePointWidth(cp){let lo=0,hi=WIDTHS.length-1;for(;lo<=hi;){let mid=lo+hi>>1,run=WIDTHS[mid];if(cp<run[0])hi=mid-1;else if(cp>run[1])lo=mid+1;else return run[2]}return 1}function clusterWidth(cluster){let w=0,vs16=!1,regional=0;for(let ch of cluster){let cp=ch.codePointAt(0);cp===VS16&&(vs16=!0),isRegionalIndicator(cp)&&regional++;let cw=codePointWidth(cp);cw>w&&(w=cw)}return vs16||regional>=2?2:w}function*measured(s){for(let{segment:segment2}of segmenter.segment(s))yield[segment2,clusterWidth(segment2)]}function stringWidth(s){let w=0;for(let{segment:segment2}of segmenter.segment(s))w+=clusterWidth(segment2);return w}var WRAP_WIDTH=24,MAX_LINES=4,MAX_LABEL=28,LABEL_BREAK_CHARS=["_","-",".","/"],asciiLower=s=>s.replace(/[A-Z]/g,c=>c.toLowerCase()),asciiUpper=s=>s.replace(/[a-z]/g,c=>c.toUpperCase()),CONTROLS=/[\0-\x08\x0b\x0c\x0e-\x1f\x7f-\x9f]/g,stripControls=src=>src.replace(CONTROLS,"");function srcLines(src){let out=src.split(`
1119
+ `),this.defaultComponent=callBlock(formatToolCall(theme,this.message.customType),new Markdown(text,0,0,this.markdownTheme,{color:text2=>theme.fg("toolOutput",text2)})),this.addChild(this.defaultComponent)}};function playEasterEgg3d(tui,egg){if(!(tui instanceof TuiAltScreen))return!1;if(tui.hasOverlay())return!0;let screen=tui.getScreenLines();return import("./easter-egg-3d-DQYQIGP2.js").then(module=>module.playEasterEgg3d(tui,screen,egg),()=>{}),!0}function playArmin3d(tui){return playEasterEgg3d(tui,{kind:"armin"})}var LoginDialogComponent=class extends Container{contentContainer;input;tui;authUrl;abortController=new AbortController;inputResolver;inputRejecter;onComplete;_focused=!1;get focused(){return this._focused}set focused(value){this._focused=value,this.input.focused=value}constructor(tui,providerId,onComplete,providerNameOverride,titleOverride){super(),this.tui=tui,this.onComplete=onComplete;let title=titleOverride??`Login to ${providerNameOverride||providerId}`;this.addChild(new DynamicBorder),this.addChild(new Text(theme.fg("accent",theme.bold(title)),1,0)),this.contentContainer=new Container,this.addChild(this.contentContainer),this.input=new Input,this.input.onSubmit=()=>{if(this.inputResolver){let value=this.input.getValue();this.replaceInputWithSubmittedText(value),this.inputResolver(value),this.inputResolver=void 0,this.inputRejecter=void 0}},this.input.onEscape=()=>{this.cancel()},this.addChild(new DynamicBorder)}get signal(){return this.abortController.signal}replaceInputWithSubmittedText(value){this.contentContainer.children=this.contentContainer.children.map(child=>child===this.input?new Text(`> ${value}`,0,0):child)}cancel(){this.abortController.abort(),this.inputRejecter&&(this.inputRejecter(new Error("Login cancelled")),this.inputResolver=void 0,this.inputRejecter=void 0),this.onComplete(!1,"Login cancelled")}showAuth(url,instructions2){this.contentContainer.clear(),this.contentContainer.addChild(new Spacer(1)),this.authUrl=new AuthUrlComponent(this.tui,url),this.contentContainer.addChild(this.authUrl),instructions2&&(this.contentContainer.addChild(new Spacer(1)),this.contentContainer.addChild(new Text(theme.fg("warning",instructions2),1,0))),openBrowser(url),this.tui.requestRender()}showDeviceCode(info){this.authUrl=void 0,this.contentContainer.clear(),this.contentContainer.addChild(new Spacer(1));let linkedUrl=`\x1B]8;;${info.verificationUri}\x07${info.verificationUri}\x1B]8;;\x07`;this.contentContainer.addChild(new Text(theme.fg("accent",linkedUrl),1,0));let clickHint=process.platform==="darwin"?"Cmd+click to open":"Ctrl+click to open",hyperlink3=`\x1B]8;;${info.verificationUri}\x07${clickHint}\x1B]8;;\x07`;this.contentContainer.addChild(new Text(theme.fg("dim",hyperlink3),1,0)),this.contentContainer.addChild(new Spacer(1)),this.contentContainer.addChild(new Text(theme.fg("warning",`Enter code: ${info.userCode}`),1,0)),this.tui.requestRender()}showManualInput(prompt){return this.input.setValue(""),this.contentContainer.addChild(new Spacer(1)),this.contentContainer.addChild(new Text(theme.fg("dim",prompt),1,0)),this.contentContainer.addChild(this.input),this.contentContainer.addChild(new Text(`(${keyHint("tui.select.cancel","to cancel")})`,1,0)),this.tui.requestRender(),new Promise((resolve17,reject)=>{this.inputResolver=resolve17,this.inputRejecter=reject})}showPrompt(message,placeholder){return this.contentContainer.addChild(new Spacer(1)),this.contentContainer.addChild(new Text(theme.fg("text",message),1,0)),placeholder&&this.contentContainer.addChild(new Text(theme.fg("dim",`e.g., ${placeholder}`),1,0)),this.contentContainer.addChild(this.input),this.contentContainer.addChild(new Text(`(${keyHint("tui.select.cancel","to cancel,")} ${keyHint("tui.select.confirm","to submit")})`,1,0)),this.input.setValue(""),this.tui.requestRender(),new Promise((resolve17,reject)=>{this.inputResolver=resolve17,this.inputRejecter=reject})}showDetails(lines){this.authUrl=void 0,this.contentContainer.clear(),this.contentContainer.addChild(new Spacer(1));for(let line of lines)this.contentContainer.addChild(new Text(line,1,0));this.tui.requestRender()}showInfo(message,links=[],showCloseHint=!1){this.contentContainer.addChild(new Spacer(1)),this.contentContainer.addChild(new Text(theme.fg("text",message),1,0));for(let link2 of links){let text=link2.label?`${link2.label}: ${link2.url}`:link2.url,hyperlink3=`\x1B]8;;${link2.url}\x07${text}\x1B]8;;\x07`;this.contentContainer.addChild(new Text(theme.fg("accent",hyperlink3),1,0))}showCloseHint&&(this.contentContainer.addChild(new Spacer(1)),this.contentContainer.addChild(new Text(`(${keyHint("tui.select.cancel","to close")})`,1,0))),this.tui.requestRender()}showWaiting(message){this.contentContainer.addChild(new Spacer(1)),this.contentContainer.addChild(new Text(theme.fg("dim",message),1,0)),this.contentContainer.addChild(new Text(`(${keyHint("tui.select.cancel","to cancel")})`,1,0)),this.tui.requestRender()}showProgress(message){this.contentContainer.addChild(new Text(theme.fg("dim",message),1,0)),this.tui.requestRender()}handleInput(data){let kb=getKeybindings();if(kb.matches(data,"tui.select.cancel")){this.cancel();return}if(this.authUrl&&kb.matches(data,"app.message.copy")){this.authUrl.copy();return}this.input.handleInput(data)}};var WIDTHS=[[0,172,1],[173,173,0],[174,767,1],[768,879,0],[880,1154,1],[1155,1161,0],[1162,1424,1],[1425,1469,0],[1470,1470,1],[1471,1471,0],[1472,1472,1],[1473,1474,0],[1475,1475,1],[1476,1477,0],[1478,1478,1],[1479,1479,0],[1480,1540,1],[1541,1541,0],[1542,1551,1],[1552,1562,0],[1563,1563,1],[1564,1564,0],[1565,1610,1],[1611,1631,0],[1632,1647,1],[1648,1648,0],[1649,1749,1],[1750,1756,0],[1757,1758,1],[1759,1764,0],[1765,1766,1],[1767,1768,0],[1769,1769,1],[1770,1773,0],[1774,1806,1],[1807,1807,0],[1808,1808,1],[1809,1809,0],[1810,1839,1],[1840,1866,0],[1867,1957,1],[1958,1968,0],[1969,2026,1],[2027,2035,0],[2036,2044,1],[2045,2045,0],[2046,2069,1],[2070,2073,0],[2074,2074,1],[2075,2083,0],[2084,2084,1],[2085,2087,0],[2088,2088,1],[2089,2093,0],[2094,2136,1],[2137,2139,0],[2140,2191,1],[2192,2193,0],[2194,2199,1],[2200,2207,0],[2208,2249,1],[2250,2306,0],[2307,2361,1],[2362,2362,0],[2363,2363,1],[2364,2364,0],[2365,2368,1],[2369,2376,0],[2377,2380,1],[2381,2381,0],[2382,2384,1],[2385,2391,0],[2392,2401,1],[2402,2403,0],[2404,2432,1],[2433,2433,0],[2434,2491,1],[2492,2492,0],[2493,2493,1],[2494,2494,0],[2495,2496,1],[2497,2500,0],[2501,2508,1],[2509,2509,0],[2510,2518,1],[2519,2519,0],[2520,2529,1],[2530,2531,0],[2532,2557,1],[2558,2558,0],[2559,2560,1],[2561,2562,0],[2563,2619,1],[2620,2620,0],[2621,2624,1],[2625,2626,0],[2627,2630,1],[2631,2632,0],[2633,2634,1],[2635,2637,0],[2638,2640,1],[2641,2641,0],[2642,2671,1],[2672,2673,0],[2674,2676,1],[2677,2677,0],[2678,2688,1],[2689,2690,0],[2691,2747,1],[2748,2748,0],[2749,2752,1],[2753,2757,0],[2758,2758,1],[2759,2760,0],[2761,2764,1],[2765,2765,0],[2766,2785,1],[2786,2787,0],[2788,2809,1],[2810,2815,0],[2816,2816,1],[2817,2817,0],[2818,2875,1],[2876,2876,0],[2877,2877,1],[2878,2879,0],[2880,2880,1],[2881,2884,0],[2885,2892,1],[2893,2893,0],[2894,2900,1],[2901,2903,0],[2904,2913,1],[2914,2915,0],[2916,2945,1],[2946,2946,0],[2947,3005,1],[3006,3006,0],[3007,3007,1],[3008,3008,0],[3009,3020,1],[3021,3021,0],[3022,3030,1],[3031,3031,0],[3032,3071,1],[3072,3072,0],[3073,3075,1],[3076,3076,0],[3077,3131,1],[3132,3132,0],[3133,3133,1],[3134,3136,0],[3137,3141,1],[3142,3144,0],[3145,3145,1],[3146,3149,0],[3150,3156,1],[3157,3158,0],[3159,3169,1],[3170,3171,0],[3172,3200,1],[3201,3201,0],[3202,3259,1],[3260,3260,0],[3261,3262,1],[3263,3264,0],[3265,3265,1],[3266,3266,0],[3267,3269,1],[3270,3272,0],[3273,3273,1],[3274,3277,0],[3278,3284,1],[3285,3286,0],[3287,3297,1],[3298,3299,0],[3300,3327,1],[3328,3329,0],[3330,3386,1],[3387,3388,0],[3389,3389,1],[3390,3390,0],[3391,3392,1],[3393,3396,0],[3397,3404,1],[3405,3406,0],[3407,3414,1],[3415,3415,0],[3416,3425,1],[3426,3427,0],[3428,3456,1],[3457,3457,0],[3458,3529,1],[3530,3530,0],[3531,3534,1],[3535,3535,0],[3536,3537,1],[3538,3540,0],[3541,3541,1],[3542,3542,0],[3543,3550,1],[3551,3551,0],[3552,3632,1],[3633,3633,0],[3634,3635,1],[3636,3642,0],[3643,3654,1],[3655,3662,0],[3663,3760,1],[3761,3761,0],[3762,3763,1],[3764,3772,0],[3773,3783,1],[3784,3790,0],[3791,3863,1],[3864,3865,0],[3866,3892,1],[3893,3893,0],[3894,3894,1],[3895,3895,0],[3896,3896,1],[3897,3897,0],[3898,3952,1],[3953,3966,0],[3967,3967,1],[3968,3972,0],[3973,3973,1],[3974,3975,0],[3976,3980,1],[3981,3991,0],[3992,3992,1],[3993,4028,0],[4029,4037,1],[4038,4038,0],[4039,4140,1],[4141,4144,0],[4145,4145,1],[4146,4151,0],[4152,4152,1],[4153,4154,0],[4155,4156,1],[4157,4158,0],[4159,4183,1],[4184,4185,0],[4186,4189,1],[4190,4192,0],[4193,4208,1],[4209,4212,0],[4213,4225,1],[4226,4226,0],[4227,4228,1],[4229,4230,0],[4231,4236,1],[4237,4237,0],[4238,4252,1],[4253,4253,0],[4254,4351,1],[4352,4447,2],[4448,4607,0],[4608,4956,1],[4957,4959,0],[4960,5905,1],[5906,5908,0],[5909,5937,1],[5938,5939,0],[5940,5969,1],[5970,5971,0],[5972,6001,1],[6002,6003,0],[6004,6051,1],[6052,6052,2],[6053,6067,1],[6068,6069,0],[6070,6070,1],[6071,6077,0],[6078,6085,1],[6086,6086,0],[6087,6088,1],[6089,6099,0],[6100,6103,1],[6104,6104,3],[6105,6108,1],[6109,6109,0],[6110,6154,1],[6155,6159,0],[6160,6276,1],[6277,6278,0],[6279,6312,1],[6313,6313,0],[6314,6431,1],[6432,6434,0],[6435,6438,1],[6439,6440,0],[6441,6449,1],[6450,6450,0],[6451,6456,1],[6457,6459,0],[6460,6678,1],[6679,6680,0],[6681,6682,1],[6683,6683,0],[6684,6741,1],[6742,6742,0],[6743,6743,1],[6744,6750,0],[6751,6751,1],[6752,6752,0],[6753,6753,1],[6754,6754,0],[6755,6756,1],[6757,6764,0],[6765,6770,1],[6771,6780,0],[6781,6782,1],[6783,6783,0],[6784,6831,1],[6832,6862,0],[6863,6911,1],[6912,6915,0],[6916,6963,1],[6964,6973,0],[6974,6977,1],[6978,6979,0],[6980,7018,1],[7019,7027,0],[7028,7039,1],[7040,7041,0],[7042,7073,1],[7074,7077,0],[7078,7079,1],[7080,7081,0],[7082,7082,1],[7083,7085,0],[7086,7141,1],[7142,7142,0],[7143,7143,1],[7144,7145,0],[7146,7148,1],[7149,7149,0],[7150,7150,1],[7151,7153,0],[7154,7211,1],[7212,7219,0],[7220,7221,1],[7222,7223,0],[7224,7375,1],[7376,7378,0],[7379,7379,1],[7380,7392,0],[7393,7393,1],[7394,7400,0],[7401,7404,1],[7405,7405,0],[7406,7411,1],[7412,7412,0],[7413,7415,1],[7416,7417,0],[7418,7615,1],[7616,7679,0],[7680,8202,1],[8203,8207,0],[8208,8233,1],[8234,8238,0],[8239,8287,1],[8288,8303,0],[8304,8399,1],[8400,8432,0],[8433,8985,1],[8986,8987,2],[8988,9e3,1],[9001,9002,2],[9003,9192,1],[9193,9196,2],[9197,9199,1],[9200,9200,2],[9201,9202,1],[9203,9203,2],[9204,9724,1],[9725,9726,2],[9727,9747,1],[9748,9749,2],[9750,9799,1],[9800,9811,2],[9812,9854,1],[9855,9855,2],[9856,9874,1],[9875,9875,2],[9876,9888,1],[9889,9889,2],[9890,9897,1],[9898,9899,2],[9900,9916,1],[9917,9918,2],[9919,9923,1],[9924,9925,2],[9926,9933,1],[9934,9934,2],[9935,9939,1],[9940,9940,2],[9941,9961,1],[9962,9962,2],[9963,9969,1],[9970,9971,2],[9972,9972,1],[9973,9973,2],[9974,9977,1],[9978,9978,2],[9979,9980,1],[9981,9981,2],[9982,9988,1],[9989,9989,2],[9990,9993,1],[9994,9995,2],[9996,10023,1],[10024,10024,2],[10025,10059,1],[10060,10060,2],[10061,10061,1],[10062,10062,2],[10063,10066,1],[10067,10069,2],[10070,10070,1],[10071,10071,2],[10072,10132,1],[10133,10135,2],[10136,10159,1],[10160,10160,2],[10161,10174,1],[10175,10175,2],[10176,11034,1],[11035,11036,2],[11037,11087,1],[11088,11088,2],[11089,11092,1],[11093,11093,2],[11094,11502,1],[11503,11505,0],[11506,11743,1],[11744,11775,0],[11776,11903,1],[11904,11929,2],[11930,11930,1],[11931,12019,2],[12020,12031,1],[12032,12245,2],[12246,12271,1],[12272,12329,2],[12330,12335,0],[12336,12350,2],[12351,12352,1],[12353,12438,2],[12439,12440,1],[12441,12442,0],[12443,12543,2],[12544,12548,1],[12549,12591,2],[12592,12592,1],[12593,12643,2],[12644,12644,0],[12645,12686,2],[12687,12687,1],[12688,12771,2],[12772,12782,1],[12783,12830,2],[12831,12831,1],[12832,12871,2],[12872,12879,1],[12880,19903,2],[19904,19967,1],[19968,42124,2],[42125,42127,1],[42128,42182,2],[42183,42606,1],[42607,42610,0],[42611,42611,1],[42612,42621,0],[42622,42653,1],[42654,42655,0],[42656,42735,1],[42736,42737,0],[42738,43009,1],[43010,43010,0],[43011,43013,1],[43014,43014,0],[43015,43018,1],[43019,43019,0],[43020,43044,1],[43045,43046,0],[43047,43051,1],[43052,43052,0],[43053,43203,1],[43204,43205,0],[43206,43231,1],[43232,43249,0],[43250,43257,1],[43258,43258,0],[43259,43262,1],[43263,43263,0],[43264,43301,1],[43302,43309,0],[43310,43334,1],[43335,43345,0],[43346,43359,1],[43360,43388,2],[43389,43391,1],[43392,43394,0],[43395,43442,1],[43443,43443,0],[43444,43445,1],[43446,43449,0],[43450,43451,1],[43452,43453,0],[43454,43492,1],[43493,43493,0],[43494,43560,1],[43561,43566,0],[43567,43568,1],[43569,43570,0],[43571,43572,1],[43573,43574,0],[43575,43586,1],[43587,43587,0],[43588,43595,1],[43596,43596,0],[43597,43643,1],[43644,43644,0],[43645,43695,1],[43696,43696,0],[43697,43697,1],[43698,43700,0],[43701,43702,1],[43703,43704,0],[43705,43709,1],[43710,43711,0],[43712,43712,1],[43713,43713,0],[43714,43755,1],[43756,43757,0],[43758,43765,1],[43766,43766,0],[43767,44004,1],[44005,44005,0],[44006,44007,1],[44008,44008,0],[44009,44012,1],[44013,44013,0],[44014,44031,1],[44032,55203,2],[55204,55215,1],[55216,55238,0],[55239,55242,1],[55243,55291,0],[55292,63743,1],[63744,64255,2],[64256,64285,1],[64286,64286,0],[64287,65023,1],[65024,65039,0],[65040,65049,2],[65050,65055,1],[65056,65071,0],[65072,65106,2],[65107,65107,1],[65108,65126,2],[65127,65127,1],[65128,65131,2],[65132,65278,1],[65279,65279,0],[65280,65280,1],[65281,65376,2],[65377,65437,1],[65438,65440,0],[65441,65503,1],[65504,65510,2],[65511,65519,1],[65520,65528,0],[65529,66044,1],[66045,66045,0],[66046,66271,1],[66272,66272,0],[66273,66421,1],[66422,66426,0],[66427,68096,1],[68097,68099,0],[68100,68100,1],[68101,68102,0],[68103,68107,1],[68108,68111,0],[68112,68151,1],[68152,68154,0],[68155,68158,1],[68159,68159,0],[68160,68324,1],[68325,68326,0],[68327,68899,1],[68900,68903,0],[68904,69290,1],[69291,69292,0],[69293,69372,1],[69373,69375,0],[69376,69445,1],[69446,69456,0],[69457,69505,1],[69506,69509,0],[69510,69632,1],[69633,69633,0],[69634,69687,1],[69688,69702,0],[69703,69743,1],[69744,69744,0],[69745,69746,1],[69747,69748,0],[69749,69758,1],[69759,69761,0],[69762,69810,1],[69811,69814,0],[69815,69816,1],[69817,69818,0],[69819,69825,1],[69826,69826,0],[69827,69887,1],[69888,69890,0],[69891,69926,1],[69927,69931,0],[69932,69932,1],[69933,69940,0],[69941,70002,1],[70003,70003,0],[70004,70015,1],[70016,70017,0],[70018,70069,1],[70070,70078,0],[70079,70081,1],[70082,70083,0],[70084,70088,1],[70089,70092,0],[70093,70094,1],[70095,70095,0],[70096,70190,1],[70191,70193,0],[70194,70195,1],[70196,70196,0],[70197,70197,1],[70198,70199,0],[70200,70205,1],[70206,70206,0],[70207,70208,1],[70209,70209,0],[70210,70366,1],[70367,70367,0],[70368,70370,1],[70371,70378,0],[70379,70399,1],[70400,70401,0],[70402,70458,1],[70459,70460,0],[70461,70461,1],[70462,70462,0],[70463,70463,1],[70464,70464,0],[70465,70486,1],[70487,70487,0],[70488,70501,1],[70502,70508,0],[70509,70511,1],[70512,70516,0],[70517,70711,1],[70712,70719,0],[70720,70721,1],[70722,70724,0],[70725,70725,1],[70726,70726,0],[70727,70749,1],[70750,70750,0],[70751,70831,1],[70832,70832,0],[70833,70834,1],[70835,70840,0],[70841,70841,1],[70842,70842,0],[70843,70844,1],[70845,70845,0],[70846,70846,1],[70847,70848,0],[70849,70849,1],[70850,70851,0],[70852,71086,1],[71087,71087,0],[71088,71089,1],[71090,71093,0],[71094,71099,1],[71100,71101,0],[71102,71102,1],[71103,71104,0],[71105,71131,1],[71132,71133,0],[71134,71218,1],[71219,71226,0],[71227,71228,1],[71229,71229,0],[71230,71230,1],[71231,71232,0],[71233,71338,1],[71339,71339,0],[71340,71340,1],[71341,71341,0],[71342,71343,1],[71344,71349,0],[71350,71350,1],[71351,71351,0],[71352,71452,1],[71453,71455,0],[71456,71457,1],[71458,71461,0],[71462,71462,1],[71463,71467,0],[71468,71726,1],[71727,71735,0],[71736,71736,1],[71737,71738,0],[71739,71983,1],[71984,71984,0],[71985,71994,1],[71995,71996,0],[71997,71997,1],[71998,71999,0],[72e3,72e3,1],[72001,72001,0],[72002,72002,1],[72003,72003,0],[72004,72147,1],[72148,72151,0],[72152,72153,1],[72154,72155,0],[72156,72159,1],[72160,72160,0],[72161,72192,1],[72193,72202,0],[72203,72242,1],[72243,72248,0],[72249,72249,1],[72250,72254,0],[72255,72262,1],[72263,72263,0],[72264,72272,1],[72273,72278,0],[72279,72280,1],[72281,72283,0],[72284,72323,1],[72324,72342,0],[72343,72343,1],[72344,72345,0],[72346,72751,1],[72752,72758,0],[72759,72759,1],[72760,72765,0],[72766,72766,1],[72767,72767,0],[72768,72849,1],[72850,72871,0],[72872,72873,1],[72874,72880,0],[72881,72881,1],[72882,72883,0],[72884,72884,1],[72885,72886,0],[72887,73008,1],[73009,73014,0],[73015,73017,1],[73018,73018,0],[73019,73019,1],[73020,73021,0],[73022,73022,1],[73023,73031,0],[73032,73103,1],[73104,73105,0],[73106,73108,1],[73109,73109,0],[73110,73110,1],[73111,73111,0],[73112,73458,1],[73459,73460,0],[73461,73471,1],[73472,73474,0],[73475,73525,1],[73526,73530,0],[73531,73535,1],[73536,73536,0],[73537,73537,1],[73538,73538,0],[73539,78911,1],[78912,78912,0],[78913,78918,1],[78919,78933,0],[78934,92911,1],[92912,92916,0],[92917,92975,1],[92976,92982,0],[92983,94030,1],[94031,94031,0],[94032,94094,1],[94095,94098,0],[94099,94175,1],[94176,94179,2],[94180,94180,0],[94181,94191,1],[94192,94193,2],[94194,94207,1],[94208,100343,2],[100344,100351,1],[100352,101589,2],[101590,101631,1],[101632,101640,2],[101641,110575,1],[110576,110579,2],[110580,110580,1],[110581,110587,2],[110588,110588,1],[110589,110590,2],[110591,110591,1],[110592,110882,2],[110883,110897,1],[110898,110898,2],[110899,110927,1],[110928,110930,2],[110931,110932,1],[110933,110933,2],[110934,110947,1],[110948,110951,2],[110952,110959,1],[110960,111355,2],[111356,113820,1],[113821,113822,0],[113823,113823,1],[113824,113827,0],[113828,118527,1],[118528,118573,0],[118574,118575,1],[118576,118598,0],[118599,119140,1],[119141,119141,0],[119142,119142,1],[119143,119145,0],[119146,119149,1],[119150,119170,0],[119171,119172,1],[119173,119179,0],[119180,119209,1],[119210,119213,0],[119214,119361,1],[119362,119364,0],[119365,121343,1],[121344,121398,0],[121399,121402,1],[121403,121452,0],[121453,121460,1],[121461,121461,0],[121462,121475,1],[121476,121476,0],[121477,121498,1],[121499,121503,0],[121504,121504,1],[121505,121519,0],[121520,122879,1],[122880,122886,0],[122887,122887,1],[122888,122904,0],[122905,122906,1],[122907,122913,0],[122914,122914,1],[122915,122916,0],[122917,122917,1],[122918,122922,0],[122923,123022,1],[123023,123023,0],[123024,123183,1],[123184,123190,0],[123191,123565,1],[123566,123566,0],[123567,123627,1],[123628,123631,0],[123632,124139,1],[124140,124143,0],[124144,125135,1],[125136,125142,0],[125143,125251,1],[125252,125258,0],[125259,126979,1],[126980,126980,2],[126981,127182,1],[127183,127183,2],[127184,127373,1],[127374,127374,2],[127375,127376,1],[127377,127386,2],[127387,127487,1],[127488,127490,2],[127491,127503,1],[127504,127547,2],[127548,127551,1],[127552,127560,2],[127561,127567,1],[127568,127569,2],[127570,127583,1],[127584,127589,2],[127590,127743,1],[127744,127776,2],[127777,127788,1],[127789,127797,2],[127798,127798,1],[127799,127868,2],[127869,127869,1],[127870,127891,2],[127892,127903,1],[127904,127946,2],[127947,127950,1],[127951,127955,2],[127956,127967,1],[127968,127984,2],[127985,127987,1],[127988,127988,2],[127989,127991,1],[127992,128062,2],[128063,128063,1],[128064,128064,2],[128065,128065,1],[128066,128252,2],[128253,128254,1],[128255,128317,2],[128318,128330,1],[128331,128334,2],[128335,128335,1],[128336,128359,2],[128360,128377,1],[128378,128378,2],[128379,128404,1],[128405,128406,2],[128407,128419,1],[128420,128420,2],[128421,128506,1],[128507,128591,2],[128592,128639,1],[128640,128709,2],[128710,128715,1],[128716,128716,2],[128717,128719,1],[128720,128722,2],[128723,128724,1],[128725,128727,2],[128728,128731,1],[128732,128735,2],[128736,128746,1],[128747,128748,2],[128749,128755,1],[128756,128764,2],[128765,128991,1],[128992,129003,2],[129004,129007,1],[129008,129008,2],[129009,129291,1],[129292,129338,2],[129339,129339,1],[129340,129349,2],[129350,129350,1],[129351,129535,2],[129536,129647,1],[129648,129660,2],[129661,129663,1],[129664,129672,2],[129673,129679,1],[129680,129725,2],[129726,129726,1],[129727,129733,2],[129734,129741,1],[129742,129755,2],[129756,129759,1],[129760,129768,2],[129769,129775,1],[129776,129784,2],[129785,131071,1],[131072,196605,2],[196606,196607,1],[196608,262141,2],[262142,917503,1],[917504,921599,0],[921600,1114111,1]];var segmenter=new Intl.Segmenter("en",{granularity:"grapheme"}),VS16=65039,isRegionalIndicator=cp=>cp>=127462&&cp<=127487;function codePointWidth(cp){let lo=0,hi=WIDTHS.length-1;for(;lo<=hi;){let mid=lo+hi>>1,run=WIDTHS[mid];if(cp<run[0])hi=mid-1;else if(cp>run[1])lo=mid+1;else return run[2]}return 1}function clusterWidth(cluster){let w=0,vs16=!1,regional=0;for(let ch of cluster){let cp=ch.codePointAt(0);cp===VS16&&(vs16=!0),isRegionalIndicator(cp)&&regional++;let cw=codePointWidth(cp);cw>w&&(w=cw)}return vs16||regional>=2?2:w}function*measured(s){for(let{segment:segment2}of segmenter.segment(s))yield[segment2,clusterWidth(segment2)]}function stringWidth(s){let w=0;for(let{segment:segment2}of segmenter.segment(s))w+=clusterWidth(segment2);return w}var WRAP_WIDTH=24,MAX_LINES=4,MAX_LABEL=28,LABEL_BREAK_CHARS=["_","-",".","/"],asciiLower=s=>s.replace(/[A-Z]/g,c=>c.toLowerCase()),asciiUpper=s=>s.replace(/[a-z]/g,c=>c.toUpperCase()),CONTROLS=/[\0-\x08\x0b\x0c\x0e-\x1f\x7f-\x9f]/g,stripControls=src=>src.replace(CONTROLS,"");function srcLines(src){let out=src.split(`
1120
1120
  `).map(l=>l.endsWith("\r")?l.slice(0,-1):l);return out.length>0&&out[out.length-1]===""&&out.pop(),out}var ALNUM=/[\p{Alphabetic}\p{N}]/u,isAlphanumeric=c=>ALNUM.test(c),isIdChar=c=>isAlphanumeric(c)||c==="_",ENTITY_LOOKAHEAD=10,NAMED_ENTITIES={lt:"<",gt:">",amp:"&",quot:'"',apos:"'"};function decodeEntityBody(body){let named=NAMED_ENTITIES[body];if(named!==void 0)return named;if(!body.startsWith("#"))return null;let num=body.slice(1),hex=/^[xX]/.test(num),digits=hex?num.slice(1):num;if(!(hex?/^[0-9a-fA-F]+$/:/^[0-9]+$/).test(digits))return null;let code=Number.parseInt(digits,hex?16:10);return code>1114111||code>=55296&&code<=57343||code<32||code>=127&&code<=159?null:String.fromCodePoint(code)}function decodeHtmlEntities(s){if(!s.includes("&"))return s;let chars=[...s],out="",i=0;for(;i<chars.length;){if(chars[i]!=="&"){out+=chars[i],i++;continue}let hi=Math.min(i+1+ENTITY_LOOKAHEAD,chars.length),semi=-1;for(let j=i+1;j<hi;j++)if(chars[j]===";"){semi=j;break}let decoded=semi===-1?null:decodeEntityBody(chars.slice(i+1,semi).join(""));decoded===null?(out+="&",i++):(out+=decoded,i=semi+1)}return out}function stripMarkdown(s){let chars=[...[...s].filter(c=>c!=="`").join("").replaceAll("**","").replaceAll("__","")],out="";for(let i=0;i<chars.length;i++){let c=chars[i],inWord=i>0&&isAlphanumeric(chars[i-1])&&chars[i+1]!==void 0&&isAlphanumeric(chars[i+1]);(c==="*"||c==="_")&&!inWord||(out+=c)}return out.trim()}var HTML_FORMAT_TAGS=new Set(["b","strong","i","em","u","s","strike","del","ins","mark","small","big","sub","sup","code","kbd","samp","var","tt","span","font","q","abbr","cite","pre"]);function htmlTagAt(chars,start){let i=start+1;chars[i]==="/"&&i++;let nameStart=i;for(;i<chars.length&&/^[0-9A-Za-z]$/.test(chars[i]);)i++;if(i===nameStart)return null;let name=chars.slice(nameStart,i).join("");for(;i<chars.length&&chars[i]!==">";){if(chars[i]==="<")return null;i++}return chars[i]===">"?{name,end:i+1}:null}function stripHtmlTags(s){let chars=[...s],out="",i=0;for(;i<chars.length;){if(chars[i]==="<"){let tag=htmlTagAt(chars,i);if(tag){let lower=tag.name.toLowerCase();if(lower==="br"){out+=" ",i=tag.end;continue}if(HTML_FORMAT_TAGS.has(lower)){i=tag.end;continue}}}out+=chars[i],i++}return out}function unwrap(s,open5,close){return s.length>=open5.length+close.length&&s.startsWith(open5)&&s.endsWith(close)?s.slice(open5.length,s.length-close.length):null}function cleanLabel(raw){let trimmed=stripHtmlTags(raw.trim()).trim(),unquoted=(unwrap(trimmed,'"','"')??unwrap(trimmed,"'","'")??trimmed).trim(),md=unwrap(unquoted,"`","`");return decodeHtmlEntities(md===null?unquoted:stripMarkdown(md.trim()))}function lastBreak(s){let best=-1;for(let c of LABEL_BREAK_CHARS)best=Math.max(best,s.lastIndexOf(c));return best}function wrapLabel(label,width,maxLines){width=Math.max(1,width);let lines=[],cur="",curW=0;for(let word of label.split(/\s+/).filter(w=>w!=="")){let ww=stringWidth(word);if(ww>width){cur!==""&&(lines.push(cur),cur="");let chunk2="",chunkW=0;for(let[ch,cw]of measured(word)){if(chunkW+cw>width&&chunk2!==""){let p=lastBreak(chunk2),carry=p===-1?"":chunk2.slice(p+1);lines.push(p===-1?chunk2:chunk2.slice(0,p+1)),chunk2=carry,chunkW=stringWidth(carry)}chunk2+=ch,chunkW+=cw}cur=chunk2,curW=chunkW}else cur===""?(cur=word,curW=ww):curW+1+ww<=width?(cur+=` ${word}`,curW+=1+ww):(lines.push(cur),cur=word,curW=ww)}if(cur!==""&&lines.push(cur),lines.length===0&&lines.push(""),lines.length>maxLines){lines.length=maxLines;let target=Math.max(1,width-1),s="",sw=0;for(let[ch,cw]of measured(lines[lines.length-1])){if(sw+cw>target)break;s+=ch,sw+=cw}lines[lines.length-1]=`${s}\u2026`}return lines}function fitLabel(label,inner){if(stringWidth(label)<=inner)return label;let out="",used=0;for(let[c,cw]of measured(label)){if(used+cw+1>inner)break;out+=c,used+=cw}return`${out}\u2026`}var CONT="\0",U=1,D=2,L=4,R=8,STY_DOT=1,STY_THICK=2,STY_SOLID=4,Canvas=class{w;h;ch;cls;mask;style;occupied;curStyle=STY_SOLID;constructor(w,h){let n=w*h;this.w=w,this.h=h,this.ch=new Array(n).fill(" "),this.cls=new Array(n).fill("none"),this.mask=new Uint8Array(n),this.style=new Uint8Array(n),this.occupied=new Uint8Array(n)}idx(x,y){return y*this.w+x}set(x,y,c,cls){if(x>=this.w||y>=this.h)return;let i=this.idx(x,y);this.ch[i]=c,this.cls[i]=cls}addBits(x,y,bits,cls="edge"){if(x>=this.w||y>=this.h)return;let i=this.idx(x,y);this.occupied[i]||(this.mask[i]|=bits,this.style[i]|=this.curStyle,this.cls[i]!=="border"&&(this.cls[i]=cls))}blit(sub,ox,oy){for(let sy=0;sy<sub.h;sy++)for(let sx=0;sx<sub.w;sx++){let x=ox+sx,y=oy+sy;if(x>=this.w||y>=this.h)continue;let si=sub.idx(sx,sy),di=this.idx(x,y);this.ch[di]=sub.ch[si],this.cls[di]=sub.cls[si],this.style[di]=sub.style[si],this.occupied[di]=1}}junction(x,y,bits){if(x>=this.w||y>=this.h)return;let i=this.idx(x,y);this.mask[i]|=bits,this.cls[i]!=="border"&&(this.cls[i]="edge")}segV(x,y0,y1){let a=Math.min(y0,y1),b=Math.max(y0,y1);for(let y=a;y<=b;y++){let bits=0;y>a&&(bits|=U),y<b&&(bits|=D),this.addBits(x,y,bits)}}segH(y,x0,x1){let a=Math.min(x0,x1),b=Math.max(x0,x1);for(let x=a;x<=b;x++){let bits=0;x>a&&(bits|=L),x<b&&(bits|=R),this.addBits(x,y,bits)}}finalizeMask(){for(let i=0;i<this.ch.length;i++)if(this.mask[i]!==0&&this.ch[i]===" "){let c=maskChar(this.mask[i]);this.ch[i]=this.style[i]===STY_DOT?dottedChar(c):this.style[i]===STY_THICK?thickChar(c):c}}flipVertical(){for(let y=0;y<Math.floor(this.h/2);y++){let y2=this.h-1-y;for(let x=0;x<this.w;x++){let i=this.idx(x,y),j=this.idx(x,y2);[this.ch[i],this.ch[j]]=[this.ch[j],this.ch[i]],[this.cls[i],this.cls[j]]=[this.cls[j],this.cls[i]]}}for(let i=0;i<this.ch.length;i++)this.ch[i]=flipGlyphV(this.ch[i])}flipHorizontal(){for(let y=0;y<this.h;y++)for(let x=0;x<Math.floor(this.w/2);x++){let x2=this.w-1-x,i=this.idx(x,y),j=this.idx(x2,y);[this.ch[i],this.ch[j]]=[this.ch[j],this.ch[i]],[this.cls[i],this.cls[j]]=[this.cls[j],this.cls[i]]}for(let i=0;i<this.ch.length;i++)this.ch[i]=flipGlyphH(this.ch[i]);for(let y=0;y<this.h;y++){let x=0;for(;x<this.w;){let cls=this.cls[this.idx(x,y)];if(cls==="text"||cls==="edgeLabel"){let start=this.idx(x,y);for(;x<this.w&&this.cls[this.idx(x,y)]===cls;)x++;let end=this.idx(x,y);reverseSlice(this.ch,start,end)}else x++}}}toLines(){let plain=[],styled=[],width=0;for(let y=0;y<this.h;y++){let last=0;for(let x=this.w-1;x>=0;x--)if(this.ch[this.idx(x,y)]!==" "){last=x+1;break}width=Math.max(width,last);let spans=[],plainRow="",run="",runCls="none";for(let x=0;x<last;x++){let i=this.idx(x,y),c=this.ch[i];if(c===CONT)continue;let cls=this.cls[i];plainRow+=c,cls!==runCls&&run!==""&&(spans.push({text:run,cls:runCls}),run=""),runCls=cls,run+=c}run!==""&&spans.push({text:run,cls:runCls}),styled.push(spans),plain.push(plainRow.replace(/ +$/,""))}let first=0;for(;first<plain.length&&plain[first]==="";)first++;let end=plain.length;for(;end>first&&plain[end-1]==="";)end--;return{plain:plain.slice(first,end),styled:styled.slice(first,end),width}}};function reverseSlice(arr,start,end){for(let i=start,j=end-1;i<j;i++,j--)[arr[i],arr[j]]=[arr[j],arr[i]]}function drawText(canvas,text,x,y,cls){let cur=x;for(let[cluster,cw]of measured(text))if(cw!==0){canvas.set(cur,y,cluster,cls);for(let k=1;k<cw;k++)canvas.set(cur+k,y,CONT,cls);cur+=cw}}function drawTextOverEdges(canvas,text,x,y,cls){let cur=x;for(let[cluster,cw]of measured(text))if(cw!==0){for(let k=0;k<cw;k++)cur+k<canvas.w&&y<canvas.h&&(canvas.mask[canvas.idx(cur+k,y)]=0),canvas.set(cur+k,y,k===0?cluster:CONT,cls);cur+=cw}}function maskChar(mask){switch(mask){case 0:return" ";case U:case D:case U|D:return"\u2502";case L:case R:case L|R:return"\u2500";case D|R:return"\u250C";case D|L:return"\u2510";case U|R:return"\u2514";case U|L:return"\u2518";case U|D|R:return"\u251C";case U|D|L:return"\u2524";case D|L|R:return"\u252C";case U|L|R:return"\u2534";default:return"\u253C"}}var DOTTED={"\u2500":"\u254C","\u2502":"\u254E"},THICK={"\u2500":"\u2501","\u2502":"\u2503","\u250C":"\u250F","\u2510":"\u2513","\u2514":"\u2517","\u2518":"\u251B","\u251C":"\u2523","\u2524":"\u252B","\u252C":"\u2533","\u2534":"\u253B","\u253C":"\u254B"},FLIP_V={"\u250C":"\u2514","\u2514":"\u250C","\u2510":"\u2518","\u2518":"\u2510","\u250F":"\u2517","\u2517":"\u250F","\u2513":"\u251B","\u251B":"\u2513","\u256D":"\u2570","\u2570":"\u256D","\u256E":"\u256F","\u256F":"\u256E","\u252C":"\u2534","\u2534":"\u252C","\u2533":"\u253B","\u253B":"\u2533","\u25BC":"\u25B2","\u25B2":"\u25BC","\u25BD":"\u25B3","\u25B3":"\u25BD"},FLIP_H={"\u250C":"\u2510","\u2510":"\u250C","\u2514":"\u2518","\u2518":"\u2514","\u250F":"\u2513","\u2513":"\u250F","\u2517":"\u251B","\u251B":"\u2517","\u256D":"\u256E","\u256E":"\u256D","\u2570":"\u256F","\u256F":"\u2570","\u251C":"\u2524","\u2524":"\u251C","\u2523":"\u252B","\u252B":"\u2523","\u25B6":"\u25C4","\u25C4":"\u25B6","\u25B7":"\u25C1","\u25C1":"\u25B7"},dottedChar=c=>DOTTED[c]??c,thickChar=c=>THICK[c]??c,flipGlyphV=c=>FLIP_V[c]??c,flipGlyphH=c=>FLIP_H[c]??c;var MAX_NODES=128,MAX_EDGES=512,MAX_GROUPS=24,MAX_GROUP_DEPTH=6,MAX_MEMBERS=8,emptyClassInfo=()=>({annotation:null,attrs:[],methods:[]});function parseDir(token){switch(asciiUpper(token)){case"LR":return"right";case"RL":return"left";case"BT":return"up";default:return"down"}}var Graph=class{nodes=[];edges=[];index=new Map;groups=[];nodeGroup=[];curGroup=null;overCap=!1;warnings=[];dir="down";constructor(dir="down"){this.dir=dir}nodeIndex(id,label,shape){let existing=this.index.get(id);return existing!==void 0?(label!==null&&(this.nodes[existing].label=label,this.nodes[existing].shape=shape),existing):this.nodes.length>=MAX_NODES?(this.overCap=!0,null):(this.index.set(id,this.nodes.length),this.nodes.push({label:label??id,shape}),this.nodeGroup.push(this.curGroup),this.nodes.length-1)}nodeLabel(id,label){let existing=this.index.get(id);return existing!==void 0?(this.nodes[existing].label=label,existing):this.nodeIndex(id,label,"round")}pushEdge(edge){return this.edges.length>=MAX_EDGES?(this.overCap=!0,!1):(this.edges.push(edge),!0)}};var PAD=1,GAP_X=3,GAP_Y=2,MAX_CANVAS_CELLS=1<<21,sat=(a,b)=>Math.max(0,a-b),half=n=>Math.floor(n/2);function computeRanks(graph){let n=graph.nodes.length,children=Array.from({length:n},()=>[]),indeg=new Array(n).fill(0);for(let e of graph.edges)e.from!==e.to&&(children[e.from].push(e.to),indeg[e.to]++);let color=new Uint8Array(n),dag=Array.from({length:n},()=>[]),order=[],roots=[...Array(n).keys()].filter(i=>indeg[i]===0);for(let start of[...roots,...Array(n).keys()])color[start]===0&&dfsDag(start,children,color,dag,order);let rank=new Array(n).fill(0);for(let i=order.length-1;i>=0;i--){let u=order[i];for(let v of dag[u])rank[v]=Math.max(rank[v],rank[u]+1)}return rank}function dfsDag(start,children,color,dag,order){let stack=[{u:start,i:0}];for(color[start]=1;stack.length>0;){let frame3=stack[stack.length-1],u=frame3.u;if(frame3.i<children[u].length){let v=children[u][frame3.i];if(frame3.i++,color[v]===1)continue;dag[u].push(v),color[v]===0&&(color[v]=1,stack.push({u:v,i:0}))}else color[u]=2,order.push(u),stack.pop()}}function orderRanks(byRank,edges,ranks){let n=ranks.length;if(byRank.length<2||n<3)return;let parents=Array.from({length:n},()=>[]),children=Array.from({length:n},()=>[]);for(let e of edges)e.from!==e.to&&ranks[e.to]>ranks[e.from]&&(parents[e.to].push(e.from),children[e.from].push(e.to));let pos=new Array(n).fill(0),reindex=row=>{for(let i=0;i<row.length;i++)pos[row[i]]=i};for(let row of byRank)reindex(row);let best=byRank.map(row=>[...row]),bestCrossings=countCrossings(edges,ranks,pos);if(bestCrossings!==0){for(let it=0;it<8;it++){let rows=it%2===0?byRank.slice(1):byRank.slice(0,-1).reverse(),neigh=it%2===0?parents:children;for(let row of rows)sortByBarycenter(row,neigh,pos),reindex(row);let crossings=countCrossings(edges,ranks,pos);if(crossings<bestCrossings&&(bestCrossings=crossings,best=byRank.map(row=>[...row])),bestCrossings===0)break}for(let i=0;i<byRank.length;i++)byRank[i].splice(0,byRank[i].length,...best[i])}}function sortByBarycenter(row,neigh,pos){let keyed=row.map(v=>({key:neigh[v].length===0?pos[v]:neigh[v].reduce((s,u)=>s+pos[u],0)/neigh[v].length,v}));keyed.sort((a,b)=>a.key-b.key);for(let i=0;i<keyed.length;i++)row[i]=keyed[i].v}function countCrossings(edges,ranks,pos){let adjacent=edges.filter(e=>e.from!==e.to&&ranks[e.to]===ranks[e.from]+1).map(e=>[ranks[e.from],pos[e.from],pos[e.to]]),crossings=0;for(let i=0;i<adjacent.length;i++){let a=adjacent[i];for(let j=i+1;j<adjacent.length;j++){let b=adjacent[j];a[0]===b[0]&&(a[1]<b[1]&&a[2]>b[2]||a[1]>b[1]&&a[2]<b[2])&&crossings++}}return crossings}function assignPositions(byRank,size,sep10,edges,ranks){let n=size.length,parents=Array.from({length:n},()=>[]),children=Array.from({length:n},()=>[]);for(let e of edges)e.from!==e.to&&ranks[e.to]>ranks[e.from]&&(parents[e.to].push(e.from),children[e.from].push(e.to));let pos=new Array(n).fill(0);for(let row of byRank){let x=0;for(let v of row){let h=size[v]/2;x+=h,pos[v]=x,x+=h+sep10}}for(let it=0;it<10;it++){let rows=it%2===0?byRank:[...byRank].reverse(),neigh=it%2===0?parents:children;for(let row of rows)relaxRank(row,neigh,pos,size,sep10)}let minLeft=Number.POSITIVE_INFINITY;for(let v=0;v<n;v++)minLeft=Math.min(minLeft,pos[v]-size[v]/2);return Number.isFinite(minLeft)||(minLeft=0),Array.from({length:n},(_,v)=>Math.max(0,Math.round(pos[v]-minLeft)))}function relaxRank(nodes,neigh,pos,size,sep10){let n=nodes.length;if(n===0)return;let desired=nodes.map(v=>neigh[v].length===0?pos[v]:neigh[v].reduce((s,u)=>s+pos[u],0)/neigh[v].length),halfOf=i=>size[nodes[i]]/2,left=new Array(n);for(let i=0;i<n;i++)left[i]=i===0?desired[i]:Math.max(desired[i],left[i-1]+halfOf(i-1)+sep10+halfOf(i));let right=new Array(n);for(let i=n-1;i>=0;i--)right[i]=i===n-1?desired[i]:Math.min(desired[i],right[i+1]-halfOf(i+1)-sep10-halfOf(i));for(let i=0;i<n;i++)pos[nodes[i]]=(left[i]+right[i])/2;for(let i=1;i<n;i++){let minP=pos[nodes[i-1]]+halfOf(i-1)+sep10+halfOf(i);pos[nodes[i]]<minP&&(pos[nodes[i]]=minP)}}function assignTracks(spans){let sorted=[...spans].sort((a,b)=>{for(let i=0;i<5;i++)if(a[i]!==b[i])return a[i]-b[i];return 0}),tracks=[],assigned=[];for(let[s,e,f,t,idx]of sorted){let slot=tracks.findIndex(members=>members.every(([s2,e2,f2,t2])=>e2+2<=s||e+2<=s2||f2===f||t2===t));slot===-1&&(tracks.push([]),slot=tracks.length-1),tracks[slot].push([s,e,f,t]),assigned.push([idx,slot])}return{assigned,count:tracks.length}}function busSpans(graph,ranks,centers,r,exact){let out=[];return graph.edges.forEach((e,i)=>{let jogs=exact?centers[e.from]!==centers[e.to]:Math.abs(centers[e.from]-centers[e.to])>1;e.from!==e.to&&ranks[e.from]===r&&ranks[e.to]===r+1&&jogs&&out.push([Math.min(centers[e.from],centers[e.to]),Math.max(centers[e.from],centers[e.to]),e.from,e.to,i])}),out}function laneSpans(graph,ranks,placed,vertical){let out=[];return graph.edges.forEach((e,i)=>{if(e.from===e.to||ranks[e.to]===ranks[e.from]+1)return;let pf=placed[e.from],pt=placed[e.to],a=vertical?Math.min(pf.cy,pt.cy):Math.min(pf.cx,pt.cx),b=vertical?Math.max(pf.cy,pt.cy):Math.max(pf.cx,pt.cx);out.push([a,b,e.from,e.to,i])}),out}function placeTd(ranks,maxRank,byRank,sizes,graph,placed){let centers=assignPositions(byRank,sizes.layW,GAP_X,graph.edges,ranks),edgeBus=new Array(graph.edges.length).fill(0),busTracks=new Array(maxRank+1).fill(0);for(let r=0;r<maxRank;r++){let spans=busSpans(graph,ranks,centers,r,!1);if(spans.length===0)continue;let{assigned,count}=assignTracks(spans);for(let[idx,slot]of assigned)edgeBus[idx]=slot;busTracks[r]=count}let rankH=byRank.map(row=>row.length===0?3:Math.max(...row.map(i=>sizes.boxH[i]+sizes.extraH[i]))),rankY=new Array(maxRank+1).fill(0);for(let r=1;r<=maxRank;r++)rankY[r]=rankY[r-1]+rankH[r-1]+Math.max(GAP_Y,busTracks[r-1]+1);let canvasH=rankY[maxRank]+rankH[maxRank],bandEnd=Array.from({length:maxRank+1},(_,r)=>rankY[r]+rankH[r]),diagramW=1;byRank.forEach((row,r)=>{for(let idx of row){let w=sizes.boxW[idx],h=sizes.boxH[idx],cx=centers[idx],x=sat(cx,half(w)),y=rankY[r]+half(rankH[r]-h-sizes.extraH[idx]);placed[idx]={x,y,w,h,cx,cy:y+half(h),rank:r},diagramW=Math.max(diagramW,x+w),sizes.extraH[idx]>0&&sizes.selfLabelW[idx]>0&&(diagramW=Math.max(diagramW,x+w+2+sizes.selfLabelW[idx]))}});let contentW=diagramW;for(let e of graph.edges){if(e.from===e.to||e.label===null)continue;let lw=Math.min(stringWidth(e.label),MAX_LABEL);contentW=ranks[e.to]===ranks[e.from]+1?Math.max(contentW,placed[e.to].cx+2+lw):Math.max(contentW,diagramW+lw+1)}let edgeLane=new Array(graph.edges.length).fill(0),lanes=laneSpans(graph,ranks,placed,!0),canvasW=contentW,laneBase=0;if(lanes.length>0){let{assigned,count}=assignTracks(lanes);for(let[idx,slot]of assigned)edgeLane[idx]=slot;canvasW=contentW+1+count,laneBase=contentW+1}return{canvasW,canvasH,bandEnd,edgeBus,laneBase,edgeLane}}function placeLr(ranks,maxRank,byRank,sizes,graph,placed){let colW=byRank.map(row=>row.length===0?0:Math.max(...row.map(i=>sizes.boxW[i]))),labelWidths=graph.edges.filter(e=>e.from===e.to||ranks[e.to]===ranks[e.from]+1).filter(e=>e.label!==null).map(e=>Math.min(stringWidth(e.label),MAX_LABEL)),maxLabel=labelWidths.length===0?0:Math.max(...labelWidths),baseGap=Math.max(GAP_X+1,maxLabel+3),centers=assignPositions(byRank,sizes.layH,1,graph.edges,ranks),edgeBus=new Array(graph.edges.length).fill(0),busTracks=new Array(maxRank+1).fill(0);for(let r=0;r<maxRank;r++){let spans=busSpans(graph,ranks,centers,r,!0);if(spans.length===0)continue;let{assigned,count}=assignTracks(spans);for(let[idx,slot]of assigned)edgeBus[idx]=slot;busTracks[r]=count}let rankX=new Array(maxRank+1).fill(0);for(let r=1;r<=maxRank;r++)rankX[r]=rankX[r-1]+colW[r-1]+Math.max(baseGap,busTracks[r-1]+1);let selfTails=byRank[maxRank].filter(i=>sizes.extraH[i]>0&&sizes.selfLabelW[i]>0).map(i=>2+sizes.selfLabelW[i]),canvasW=rankX[maxRank]+colW[maxRank]+(selfTails.length===0?0:Math.max(...selfTails)),bandEnd=Array.from({length:maxRank+1},(_,r)=>rankX[r]+colW[r]),diagramH=1;byRank.forEach((row,r)=>{let x=rankX[r];for(let idx of row){let w=sizes.boxW[idx],h=sizes.boxH[idx],cy=centers[idx],y=sat(cy,half(h+sizes.extraH[idx]));placed[idx]={x,y,w,h,cx:x+half(w),cy:y+half(h),rank:r},diagramH=Math.max(diagramH,y+h+sizes.extraH[idx])}});let edgeLane=new Array(graph.edges.length).fill(0),lanes=laneSpans(graph,ranks,placed,!1),canvasH=diagramH,laneBase=0;if(lanes.length>0){let{assigned,count}=assignTracks(lanes);for(let[idx,slot]of assigned)edgeLane[idx]=slot;canvasH=diagramH+1+count,laneBase=diagramH+1}return{canvasW,canvasH,bandEnd,edgeBus,laneBase,edgeLane}}function layoutCanvas(graph,extras){let n=graph.nodes.length;if(n===0)return null;let ranks=computeRanks(graph),maxRank=Math.max(...ranks,0),byRank=Array.from({length:maxRank+1},()=>[]);for(let idx=0;idx<ranks.length;idx++)byRank[ranks[idx]].push(idx);orderRanks(byRank,graph.edges,ranks);let wrapped=graph.nodes.map(node=>wrapLabel(node.label,WRAP_WIDTH,MAX_LINES)),widest=lines=>Math.max(1,lines.length===0?1:Math.max(...lines.map(stringWidth))),boxW=extras.map((extra,i)=>extra.kind==="frame"?Math.max(extra.sub.w+2,stringWidth(fitLabel(graph.nodes[i].label,WRAP_WIDTH))+4):extra.kind==="compartments"?widest(extra.sections.flat())+2*PAD+2:widest(wrapped[i])+2*PAD+2),boxH=extras.map((extra,i)=>{if(extra.kind==="frame")return extra.sub.h+2;if(extra.kind==="compartments"){let filled=extra.sections.filter(s=>s.length>0).length;return extra.sections.reduce((s,sec)=>s+sec.length,0)+sat(filled,1)+2}return wrapped[i].length+2}),extraH=new Array(n).fill(0),selfLabelW=new Array(n).fill(0);for(let e of graph.edges)e.from===e.to&&(extraH[e.from]=2,e.label!==null&&(selfLabelW[e.from]=Math.max(selfLabelW[e.from],Math.min(stringWidth(e.label),MAX_LABEL))));for(let i=0;i<n;i++)extraH[i]>0&&(boxW[i]=Math.max(boxW[i],7));let sizes={boxW,boxH,layW:boxW.map((w,i)=>w+(selfLabelW[i]>0?2*(selfLabelW[i]+3):0)),layH:boxH.map((h,i)=>h+extraH[i]),extraH,selfLabelW},placed=Array.from({length:n},()=>({x:0,y:0,w:0,h:0,cx:0,cy:0,rank:0})),vertical=graph.dir==="down"||graph.dir==="up",plan=vertical?placeTd(ranks,maxRank,byRank,sizes,graph,placed):placeLr(ranks,maxRank,byRank,sizes,graph,placed);if(plan.canvasW*plan.canvasH>MAX_CANVAS_CELLS)return null;let canvas=new Canvas(plan.canvasW,plan.canvasH);for(let idx=0;idx<n;idx++){let extra=extras[idx];extra.kind==="frame"?drawFrame(canvas,placed[idx],graph.nodes[idx].label,extra.sub):extra.kind==="compartments"?drawClassBox(canvas,placed[idx],extra.sections):drawBox(canvas,placed[idx],wrapped[idx],graph.nodes[idx].shape)}return graph.edges.forEach((edge,i)=>{if(canvas.curStyle=edge.line==="dotted"?STY_DOT:edge.line==="thick"?STY_THICK:STY_SOLID,edge.from===edge.to){routeSelf(canvas,placed[edge.from],edge);return}let from=placed[edge.from],to=placed[edge.to],adjacent=to.rank===from.rank+1,bus=plan.bandEnd[from.rank]+plan.edgeBus[i],lane=plan.laneBase+plan.edgeLane[i];vertical?adjacent?routeForward(canvas,from,to,edge,bus):routeBack(canvas,from,to,edge,lane):adjacent?routeForwardLr(canvas,from,to,edge,bus):routeBackLr(canvas,from,to,edge,lane)}),canvas.finalizeMask(),canvas}function orient(canvas,graph){return graph.dir==="up"?canvas.flipVertical():graph.dir==="left"&&canvas.flipHorizontal(),canvas}function layoutFlowchart(graph){let extras=graph.nodes.map(()=>({kind:"plain"})),canvas=layoutCanvas(graph,extras);return canvas&&orient(canvas,graph)}function layoutClass(graph,infos){let extras=graph.nodes.map((node,i)=>{let title=[];return infos[i].annotation!==null&&title.push(`\xAB${infos[i].annotation}\xBB`),title.push(displayGenerics(node.label)),{kind:"compartments",sections:[title,infos[i].attrs,infos[i].methods]}}),canvas=layoutCanvas(graph,extras);return canvas&&orient(canvas,graph)}function displayGenerics(s){let out="",open5=!1;for(let c of s)c==="~"?(out+=open5?">":"<",open5=!open5):out+=c;return out}var nodeKey=i=>`n${i}`,groupKey=i=>`g${i}`;function layoutGrouped(graph){let proxy=new Map;graph.groups.forEach((g,gi)=>{let ni=graph.index.get(g.id);ni!==void 0&&proxy.set(ni,gi)});let groupChain=g=>{let chain=[],cur=g;for(;cur!==null;)chain.push(cur),cur=graph.groups[cur].parent;return chain.reverse()},endpoint=n=>{let gi=proxy.get(n);return gi===void 0?{key:nodeKey(n),chain:groupChain(graph.nodeGroup[n])}:{key:groupKey(gi),chain:groupChain(graph.groups[gi].parent)}},scopeEdges=new Map,referenced=new Array(graph.groups.length).fill(!1);graph.edges.forEach((e,ei)=>{let f=endpoint(e.from),t=endpoint(e.to),k=0;for(;k<f.chain.length&&k<t.chain.length&&f.chain[k]===t.chain[k];)k++;let scope=k===0?null:f.chain[k-1],fKey=f.chain.length>k?groupKey(f.chain[k]):f.key,tKey=t.chain.length>k?groupKey(t.chain[k]):t.key;for(let key of[fKey,tKey])key.startsWith("g")&&(referenced[Number(key.slice(1))]=!0);let list=scopeEdges.get(scope);list?list.push([fKey,tKey,ei]):scopeEdges.set(scope,[[fKey,tKey,ei]])});let directNodes=new Map;graph.nodeGroup.forEach((g,ni)=>{if(proxy.has(ni))return;let list=directNodes.get(g);list?list.push(ni):directNodes.set(g,[ni])});let keep=new Array(graph.groups.length).fill(!1);for(let gi=graph.groups.length-1;gi>=0;gi--){let hasNodes=(directNodes.get(gi)??[]).length>0,hasChildren=graph.groups.some((g,c)=>g.parent===gi&&keep[c]);keep[gi]=hasNodes||hasChildren||referenced[gi]}let canvas=buildScope(graph,null,scopeEdges,directNodes,keep);return canvas&&orient(canvas,graph)}function buildScope(graph,scope,scopeEdges,directNodes,keep){let items=(directNodes.get(scope)??[]).map(nodeKey),childGroups=graph.groups.map((_,gi)=>gi).filter(gi=>graph.groups[gi].parent===scope&&keep[gi]);if(items.push(...childGroups.map(groupKey)),items.length===0)return new Canvas(1,1);let indexOf=new Map,nodes=[],extras=[];for(let item of items){indexOf.set(item,nodes.length);let i=Number(item.slice(1));if(item.startsWith("n"))nodes.push({label:graph.nodes[i].label,shape:graph.nodes[i].shape}),extras.push({kind:"plain"});else{let sub=buildScope(graph,i,scopeEdges,directNodes,keep);if(sub===null)return null;nodes.push({label:graph.groups[i].label,shape:"rect"}),extras.push({kind:"frame",sub})}}let edges=[];for(let[f,t,ei]of scopeEdges.get(scope)??[]){let fi=indexOf.get(f),ti=indexOf.get(t);if(fi===void 0||ti===void 0)continue;let e=graph.edges[ei];edges.push({from:fi,to:ti,label:e.label,headTo:e.headTo,headFrom:e.headFrom,line:e.line})}let synth=new Graph(graph.dir);return synth.nodes=nodes,synth.edges=edges,layoutCanvas(synth,extras)}function drawBox(canvas,p,lines,shape){let{x,y,w,h}=p,right=x+w-1,bottom=y+h-1,rounded=shape==="round"||shape==="diamond";canvas.set(x,y,rounded?"\u256D":"\u250C","border"),canvas.set(right,y,rounded?"\u256E":"\u2510","border"),canvas.set(x,bottom,rounded?"\u2570":"\u2514","border"),canvas.set(right,bottom,rounded?"\u256F":"\u2518","border");for(let cx=x+1;cx<right;cx++)canvas.addBits(cx,y,L|R,"border"),canvas.addBits(cx,bottom,L|R,"border");for(let cy=y+1;cy<bottom;cy++)canvas.addBits(x,cy,U|D,"border"),canvas.addBits(right,cy,U|D,"border");for(let cy=y;cy<=bottom;cy++)for(let cx=x;cx<=right;cx++)canvas.occupied[canvas.idx(cx,cy)]=1;let inner=Math.max(1,sat(w,2*PAD+2));lines.forEach((line,li)=>{let text=fitLabel(line,inner),textX=x+1+PAD+half(sat(inner,stringWidth(text)));drawText(canvas,text,textX,y+1+li,"text")})}function drawClassBox(canvas,p,sections){drawBox(canvas,p,[],"rect");let inner=Math.max(1,sat(p.w,2*PAD+2)),row=p.y+1,first=!0;sections.forEach((section,si)=>{if(section.length!==0){if(!first){canvas.set(p.x,row,"\u251C","border");for(let x=p.x+1;x<p.x+p.w-1;x++)canvas.set(x,row,"\u2500","border");canvas.set(p.x+p.w-1,row,"\u2524","border"),row++}first=!1;for(let line of section){let text=fitLabel(line,inner),tx=si===0?p.x+1+PAD+half(sat(inner,stringWidth(text))):p.x+1+PAD;drawTextOverEdges(canvas,text,tx,row,"text"),row++}}})}function drawFrame(canvas,p,title,sub){drawBox(canvas,p,[],"rect");let t=fitLabel(title,sat(p.w,4));drawTextOverEdges(canvas,` ${t} `,p.x+1,p.y,"text"),canvas.blit(sub,p.x+1+half(p.w-2-sub.w),p.y+1+half(p.h-2-sub.h))}function headGlyph(head,arrow){switch(head){case"circle":return"o";case"cross":return"\xD7";case"diamondFill":return"\u25C6";case"diamondOpen":return"\u25C7";case"triangle":return{"\u25BC":"\u25BD","\u25B2":"\u25B3","\u25C4":"\u25C1","\u25B6":"\u25B7"}[arrow]??arrow;default:return arrow}}function routeForward(canvas,from,to,edge,bus){let tx=to.cx,bx=Math.abs(from.cx-tx)<=1?tx:from.cx,by=from.y+from.h-1,headRow=to.y-1;canvas.junction(bx,by,D),canvas.segV(bx,by,bus),bx===tx?canvas.segV(bx,bus,headRow):(canvas.segH(bus,bx,tx),canvas.segV(tx,bus,headRow)),edge.headTo==="none"?canvas.addBits(tx,headRow,U):canvas.set(tx,headRow,headGlyph(edge.headTo,"\u25BC"),"edge"),edge.headFrom!=="none"&&canvas.set(bx,by,headGlyph(edge.headFrom,"\u25B2"),"edge"),edge.label!==null&&placeLabel(canvas,edge.label,headRow,tx+1)}function routeSelf(canvas,p,edge){let bottom=p.y+p.h-1,exitX=p.cx+1,retX=p.x+p.w-2;if(retX<=exitX||bottom+2>=canvas.h)return;let[v,h,bl,br]=edge.line==="dotted"?["\u254E","\u254C","\u2570","\u256F"]:edge.line==="thick"?["\u2503","\u2501","\u2517","\u251B"]:["\u2502","\u2500","\u2570","\u256F"];canvas.junction(exitX,bottom,D),canvas.set(exitX,bottom+1,v,"edge"),canvas.set(exitX,bottom+2,bl,"edge");for(let x=exitX+1;x<retX;x++)canvas.set(x,bottom+2,h,"edge");canvas.set(retX,bottom+2,br,"edge"),canvas.set(retX,bottom+1,headGlyph(edge.headTo,"\u25B2"),"edge"),edge.label!==null&&placeLabel(canvas,edge.label,bottom+1,p.x+p.w+1)}function routeBack(canvas,from,to,edge,laneX){let sx=from.x+from.w-1,sy=from.cy,tx=to.x+to.w-1,tyc=to.cy;canvas.junction(sx,sy,R),canvas.segH(sy,sx,laneX),canvas.segV(laneX,sy,tyc),canvas.segH(tyc,tx+1,laneX),edge.headTo==="none"?canvas.addBits(tx+1,tyc,R):canvas.set(tx+1,tyc,headGlyph(edge.headTo,"\u25C4"),"edge"),edge.headFrom!=="none"&&canvas.set(sx,sy,headGlyph(edge.headFrom,"\u25C4"),"edge"),edge.label!==null&&placeLabel(canvas,edge.label,sat(tyc,1),sat(laneX,stringWidth(edge.label)+1))}function routeForwardLr(canvas,from,to,edge,bus){let rx=from.x+from.w-1,ry=from.cy,ly=to.cy,headCol=to.x-1;canvas.junction(rx,ry,R),canvas.segH(ry,rx,bus),ry===ly?canvas.segH(ry,bus,headCol):(canvas.segV(bus,ry,ly),canvas.segH(ly,bus,headCol)),edge.headTo==="none"?canvas.addBits(headCol,ly,R):canvas.set(headCol,ly,headGlyph(edge.headTo,"\u25B6"),"edge"),edge.headFrom!=="none"&&canvas.set(rx,ry,headGlyph(edge.headFrom,"\u25C4"),"edge"),edge.label!==null&&placeLabel(canvas,edge.label,sat(ly,1),bus+1)}function routeBackLr(canvas,from,to,edge,laneY){let sx=from.cx,sy=from.y+from.h-1,tx=to.cx,ty=to.y+to.h-1;canvas.junction(sx,sy,D),canvas.segV(sx,sy,laneY),canvas.segH(laneY,sx,tx),canvas.segV(tx,laneY,ty+1),edge.headTo==="none"?canvas.addBits(tx,ty+1,D):canvas.set(tx,ty+1,headGlyph(edge.headTo,"\u25B2"),"edge"),edge.headFrom!=="none"&&canvas.set(sx,sy,headGlyph(edge.headFrom,"\u25B2"),"edge"),edge.label!==null&&placeLabel(canvas,edge.label,sat(laneY,1),half(sx+tx))}function placeLabel(canvas,label,row,startX){if(row>=canvas.h)return;let text=fitLabel(label,MAX_LABEL),x=startX;for(let[c,cw]of measured(text)){if(cw===0)continue;if(x+cw>canvas.w)break;let blocked=!1;for(let k=0;k<cw;k++){let i=canvas.idx(x+k,row);(canvas.ch[i]!==" "||canvas.mask[i]!==0||canvas.occupied[i])&&(blocked=!0)}if(blocked)break;canvas.set(x,row,c,"edgeLabel");for(let k=1;k<cw;k++)canvas.set(x+k,row,CONT,"edgeLabel");x+=cw}}var PAD2=1,SEQ_GAP=5,MAX_CANVAS_CELLS2=1<<21,sat2=(a,b)=>Math.max(0,a-b),half2=n=>Math.floor(n/2);function noteGeometry(xs,anchor,textW){if(anchor.kind==="over"){let center=half2(xs[anchor.from]+xs[anchor.to]),w2=Math.max(xs[anchor.to]-xs[anchor.from]+5,textW+2*PAD2+2);return{x:sat2(center,half2(w2)),w:w2}}let w=textW+2*PAD2+2;return anchor.kind==="left"?{x:sat2(xs[anchor.at],2+w-1),w}:{x:xs[anchor.at]+2,w}}var itemTextW=text=>text===null?0:stringWidth(text);function layoutSequence(seq){let n=seq.labels.length,labels=seq.labels.map(l=>fitLabel(l,WRAP_WIDTH)),boxW=labels.map(l=>Math.max(1,stringWidth(l))+2*PAD2+2),boxH=3,gaps=Array.from({length:sat2(n,1)},(_,i)=>Math.max(SEQ_GAP,Math.ceil(boxW[i]/2)+Math.ceil(boxW[i+1]/2)+1)),reqs=[];for(let item of seq.items)if(item.kind==="message"){let tw=itemTextW(item.text);item.from!==item.to?reqs.push([Math.min(item.from,item.to),Math.max(item.from,item.to),Math.max(tw+2,4)]):item.from+1<n&&reqs.push([item.from,item.from+1,5+tw+2])}else if(item.kind==="note"){let tw=stringWidth(item.text),a=item.anchor;if(a.kind==="over"&&a.from<a.to)reqs.push([a.from,a.to,sat2(tw,1)]);else if(a.kind==="over"){let need=Math.ceil((tw+4)/2)+2;a.from>0&&reqs.push([a.from-1,a.from,need]),a.from+1<n&&reqs.push([a.from,a.from+1,need])}else a.kind==="left"&&a.at>0?reqs.push([a.at-1,a.at,tw+7]):a.kind==="right"&&a.at+1<n&&reqs.push([a.at,a.at+1,tw+7])}reqs.sort((a,b)=>a[1]-a[0]-(b[1]-b[0]));for(let[l,r,need]of reqs){let cur=0;for(let i=l;i<r;i++)cur+=gaps[i];cur<need&&(gaps[r-1]+=need-cur)}let xs=new Array(n);xs[0]=half2(boxW[0]);for(let i=1;i<n;i++)xs[i]=xs[i-1]+gaps[i-1];let canvasW=xs[n-1]+Math.ceil(boxW[n-1]/2)+1;for(let item of seq.items)if(item.kind==="message"&&item.from===item.to)canvasW=Math.max(canvasW,xs[item.from]+5+itemTextW(item.text)+1);else if(item.kind==="note"){let g=noteGeometry(xs,item.anchor,stringWidth(item.text));canvasW=Math.max(canvasW,g.x+g.w+1)}else item.kind==="divider"&&(canvasW=Math.max(canvasW,stringWidth(item.text)+4));let rows=[],y=boxH+1;for(let item of seq.items)rows.push(y),y+=rowHeight(item);let bottomTop=y,canvasH=bottomTop+boxH;if(canvasW*canvasH>MAX_CANVAS_CELLS2)return null;let canvas=new Canvas(canvasW,canvasH);for(let i=0;i<n;i++)for(let by of[0,bottomTop])drawBox(canvas,box(sat2(xs[i],half2(boxW[i])),by,boxW[i],boxH),[labels[i]],"rect");seq.items.forEach((item,k)=>{if(item.kind!=="note")return;let g=noteGeometry(xs,item.anchor,stringWidth(item.text));drawBox(canvas,box(g.x,rows[k],g.w,3),[item.text],"rect")});for(let x of xs)canvas.junction(x,boxH-1,D),canvas.segV(x,boxH,bottomTop-1),canvas.junction(x,bottomTop,U);return seq.items.forEach((item,k)=>{let r=rows[k];item.kind==="message"?drawMessage(canvas,item,xs,r):item.kind==="divider"&&drawDivider(canvas,item.text,r,canvasW)}),canvas.finalizeMask(),canvas}function rowHeight(item){return item.kind==="note"?4:item.kind==="divider"?2:item.from===item.to?4:item.text!==null?3:2}var box=(x,y,w,h)=>({x,y,w,h,cx:x+half2(w),cy:y+1,rank:0});function drawMessage(canvas,item,xs,r){let lineCh=item.dashed?"\u254C":"\u2500";if(item.from===item.to){let x=xs[item.from];canvas.junction(x,r,R),canvas.set(x+1,r,lineCh,"edge"),canvas.set(x+2,r,lineCh,"edge"),canvas.set(x+3,r,"\u256E","edge"),canvas.set(x+3,r+1,"\u2502","edge"),canvas.set(x+1,r+2,item.head==="cross"?"\xD7":"\u25C4","edge"),canvas.set(x+2,r+2,lineCh,"edge"),canvas.set(x+3,r+2,"\u256F","edge"),item.text!==null&&drawTextOverEdges(canvas,item.text,x+5,r+1,"text");return}let x0=xs[item.from],x1=xs[item.to],rightward=x1>x0,arrowRow=item.text!==null?r+1:r,lo=Math.min(x0,x1),hi=Math.max(x0,x1);canvas.junction(x0,arrowRow,rightward?R:L);for(let x=lo+1;x<hi;x++)canvas.set(x,arrowRow,lineCh,"edge");let headCh=item.head==="cross"?"\xD7":rightward?"\u25B6":"\u25C4";if(canvas.set(rightward?x1-1:x1+1,arrowRow,headCh,"edge"),item.text!==null){let span=hi-lo-1,t=fitLabel(item.text,Math.max(1,span));drawTextOverEdges(canvas,t,lo+1+half2(sat2(span,stringWidth(t))),r,"text")}}function drawDivider(canvas,text,r,canvasW){for(let x=0;x<canvasW;x++)canvas.set(x,r,"\u2500","edge");drawTextOverEdges(canvas,` ${fitLabel(text,sat2(canvasW,4))} `,2,r,"edgeLabel")}function flushStatement(cur,out){let trimmed=cur.trim();return trimmed!==""&&out.push(trimmed),""}function splitStatements(line,out){let chars=[...line],cur="",inQuotes=!1;for(let i=0;i<chars.length;i++){let c=chars[i];if(inQuotes)c==='"'&&(inQuotes=!1),cur+=c;else if(c==='"')inQuotes=!0,cur+=c;else{if(c==="%"&&chars[i+1]==="%")break;c===";"?cur=flushStatement(cur,out):cur+=c}}flushStatement(cur,out)}function statementsOf(src){let out=[];for(let line of srcLines(src))splitStatements(line,out);return out}var firstWord=s=>s.split(/\s+/).filter(w=>w!=="")[0]??"",words2=s=>s.split(/\s+/).filter(w=>w!=="");function splitOnce(s,sep10){let i=s.indexOf(sep10);return i===-1?null:[s.slice(0,i),s.slice(i+sep10.length)]}var nonEmpty=s=>s===""?null:s;function headerKind(statements){let header=statements[0];if(header===void 0)return null;let kind=firstWord(header);return kind===""?null:asciiLower(kind)}function diagramKind(src){let kind=headerKind(statementsOf(src));return kind===null?null:kind==="graph"||kind==="flowchart"?"flowchart":kind.startsWith("statediagram")?"state":kind.startsWith("classdiagram")?"class":kind==="erdiagram"?"er":kind==="sequencediagram"?"sequence":null}function parseGraph(src){let statements=statementsOf(src),kind=headerKind(statements);if(kind!=="graph"&&kind!=="flowchart")return null;let graph=new Graph(parseDir(words2(statements[0])[1]??"TB")),stack=[];for(let st of statements.slice(1)){switch(asciiLower(firstWord(st))){case"subgraph":{if(graph.groups.length>=MAX_GROUPS||stack.length>=MAX_GROUP_DEPTH)return null;let[id,label]=parseSubgraphDecl(st.slice(8).trim());graph.groups.push({id,label,parent:stack.at(-1)??null}),stack.push(graph.groups.length-1),graph.curGroup=stack.at(-1)??null;continue}case"end":stack.pop(),graph.curGroup=stack.at(-1)??null;continue;case"classdef":case"class":case"style":case"linkstyle":case"click":case"direction":continue;default:break}if(parseStatement(st,graph),graph.overCap)return null}return graph.nodes.length===0?null:graph}function parseSubgraphDecl(rest){if(rest.startsWith('"')){let close=rest.indexOf('"',1);if(close!==-1){let label=rest.slice(1,close);return[label,decodeHtmlEntities(label)]}}let open5=rest.indexOf("[");if(open5!==-1){let id=rest.slice(0,open5).trim(),label=cleanLabel(rest.slice(open5+1).replace(/\]+$/,"").trim());if(id!==""&&label!=="")return[id,label]}return[rest,rest]}function parseStatement(st,graph){let chars=[...st],i=0,head=parseNodeGroup(chars,i,graph);if(!head){graph.warnings.push(`dropped, does not start with a node: "${st}"`);return}let prev=head.group;for(i=head.next;i=skipSpaces(chars,i),!(i>=chars.length);){let link2=parseLink(chars,i);if(!link2){graph.warnings.push(`dropped, expected a link: "${chars.slice(i).join("")}"`);break}i=skipSpaces(chars,link2.next);let target=parseNodeGroup(chars,i,graph);if(!target){graph.warnings.push(`dropped, link has no target: "${st}"`);break}i=target.next;for(let f of prev)for(let t of target.group){let reversed=link2.left==="arrow"&&link2.right!=="arrow";if(!graph.pushEdge({from:reversed?t:f,to:reversed?f:t,label:link2.label,headTo:reversed?"arrow":link2.right,headFrom:reversed?link2.right:link2.left,line:link2.line}))return}prev=target.group}}function parseNodeGroup(chars,start,graph){let first=parseNode(chars,start,graph);if(!first)return null;let group=[first.index],i=first.next;for(;;){let j=skipSpaces(chars,i);if(chars[j]!=="&")break;let next=parseNode(chars,j+1,graph);if(!next)return null;group.push(next.index),i=next.next}return{group,next:i}}function skipSpaces(chars,i){for(;i<chars.length&&(chars[i]===" "||chars[i]===" ");)i++;return i}function parseNode(chars,start,graph){let i=skipSpaces(chars,start),idStart=i;for(;i<chars.length&&isIdChar(chars[i]);)i++;if(i===idStart)return null;let id=chars.slice(idStart,i).join(""),shaped=readShapeAt(chars,i);shaped.unclosed!==void 0&&graph.warnings.push(`node "${id}": label is missing its closing \`${shaped.unclosed}\``);let index=graph.nodeIndex(id,shaped.label,shaped.shape);if(index===null)return null;let next=shaped.after;if(chars[next]===":"&&chars[next+1]===":"&&chars[next+2]===":"){let k=next+3;for(;k<chars.length&&(isIdChar(chars[k])||chars[k]==="-");)k++;for(;k>next+3&&chars[k-1]==="-";)k--;k>next+3&&(next=k)}return{index,next}}function readShapeAt(chars,i){let c=chars[i],n=chars[i+1];return c==="["?n==="["?readShape(chars,i+2,"]]","rect"):n==="("?readShape(chars,i+2,")]","round"):readShape(chars,i+1,"]","rect"):c==="("?n==="("?readShape(chars,i+2,"))","round"):n==="["?readShape(chars,i+2,"])","round"):readShape(chars,i+1,")","round"):c==="{"?n==="{"?readShape(chars,i+2,"}}","diamond"):readShape(chars,i+1,"}","diamond"):c===">"?readShape(chars,i+1,"]","rect"):{shape:"rect",label:null,after:i}}function readShape(chars,start,closer,shape){let j=start;for(;chars[j]===" "||chars[j]===" ";)j++;let quoted=chars[j]==='"',i=start,text="",inQuotes=!1;for(;i<chars.length;){let c=chars[i];if(quoted&&c==='"'){inQuotes=!inQuotes,text+=c,i++;continue}if(!inQuotes&&chars.slice(i,i+closer.length).join("")===closer)return{shape,label:cleanLabel(text),after:i+closer.length};text+=c,i++}return{shape,label:cleanLabel(text),after:chars.length,unclosed:closer}}var isLinkChar=c=>c==="-"||c==="."||c==="="||c==="<"||c===">";function parseLink(chars,start){let i=skipSpaces(chars,start),left="none";(chars[i]==="o"||chars[i]==="x")&&(chars[i+1]==="-"||chars[i+1]==="."||chars[i+1]==="=")&&(left=chars[i]==="o"?"circle":"cross",i++);let opStart=i;for(;i<chars.length&&isLinkChar(chars[i]);)i++;if(i===opStart)return null;let op1=chars.slice(opStart,i).join("");left==="none"&&op1.startsWith("<")&&(left="arrow");let line=lineKind(op1),right=op1.includes(">")?"arrow":"none";if(right==="none"){let trailing=trailingHead(chars,i);trailing&&(right=trailing.head,i=trailing.next)}if(chars[i]==="|"){i++;let lStart=i;for(;i<chars.length&&chars[i]!=="|";)i++;let label=cleanLabel(chars.slice(lStart,i).join(""));return chars[i]==="|"&&i++,{left,right,line,label:nonEmpty(label),next:i}}if(right==="none"){let textStart=skipSpaces(chars,i),j=textStart;for(;j<chars.length&&!isLinkChar(chars[j]);)j++;if(j<chars.length&&j>textStart&&chars[j]!=="<"){let text=chars.slice(textStart,j).join(""),op2Start=j;for(;j<chars.length&&isLinkChar(chars[j]);)j++;let op2=chars.slice(op2Start,j).join("");if(op2.includes(">"))right="arrow";else{let trailing=trailingHead(chars,j);trailing&&(right=trailing.head,j=trailing.next)}return line==="solid"&&(line=lineKind(op2)),{left,right,line,label:nonEmpty(cleanLabel(text)),next:j}}}return{left,right,line,label:null,next:i}}function lineKind(op){return op.includes("=")?"thick":op.includes(".")?"dotted":"solid"}function trailingHead(chars,i){let head=chars[i]==="o"?"circle":chars[i]==="x"?"cross":null;if(head===null)return null;let after=chars[i+1];return after===void 0||after===" "||after===" "||after==="|"||after==="&"||after===";"?{head,next:i+1}:null}function parseState(src){let statements=statementsOf(src),kind=headerKind(statements);if(kind===null||!kind.startsWith("statediagram"))return null;let graph=new Graph,inNote=!1;for(let st of statements.slice(1)){if(inNote){asciiLower(st)==="end note"&&(inNote=!1);continue}st=dropStyleTags(st);let first=asciiLower(firstWord(st));if(first==="direction")graph.dir=parseDir(words2(st)[1]??"");else if(first==="note")st.includes(":")||(inNote=!0);else if(first==="state"){if(parseStateDecl(st,graph)===null)return null}else if(!["classdef","class","hide","scale","}","--"].includes(first)){if(st.includes("-->")){if(parseTransition(st,graph)===null)return null}else if(parseStateDesc(st,graph)===null)return null}if(graph.overCap)return null}return graph.nodes.length===0?null:graph}function parseStateDecl(st,graph){let rest=st.slice(5).trim().replace(/\{$/,"").trim();if(rest==="")return!0;if(rest.startsWith('"')){let close=rest.indexOf('"',1);if(close===-1)return null;let label=rest.slice(1,close),after=rest.slice(close+1).trim(),id2=after.startsWith("as")?after.slice(2).trim():label;return graph.nodeLabel(id2,decodeHtmlEntities(label))===null?null:!0}let shape="round",id=rest,stereotyped=!1,pos=rest.indexOf("<<");return pos!==-1&&(rest.slice(pos+2).replace(/>>$/,"").trim()==="choice"&&(shape="diamond"),id=rest.slice(0,pos).trim(),stereotyped=!0),id===""||/\s/.test(id)||graph.nodeIndex(id,stereotyped?id:null,shape)===null?null:!0}function parseTransition(st,graph){let rest=st,prev=null;for(;;){let split=splitOnce(rest,"-->");if(!split)break;let[lhs,rhs]=split,fromId=lhs.trimEnd().replace(/-+$/,"").trim(),from;if(prev!==null){if(fromId!=="")return null;from=prev}else{if(fromId==="")return null;let f=stateEndpoint(graph,fromId,!0);if(f===null)return null;from=f}let nextArrow=rhs.indexOf("-->"),toPartRaw=nextArrow===-1?rhs:rhs.slice(0,nextArrow),tail=nextArrow===-1?"":rhs.slice(nextArrow),colon=splitOnce(toPartRaw,":"),toPart=colon?colon[0]:toPartRaw,label=colon?nonEmpty(decodeHtmlEntities(colon[1].trim())):null,toId=toPart.trimStart().replace(/^>+/,"").trimEnd().replace(/-+$/,"").trim();if(toId==="")return null;let to=stateEndpoint(graph,toId,!1);if(to===null)return null;if(!graph.pushEdge({from,to,label,headTo:"arrow",headFrom:"none",line:"solid"}))return!0;prev=to,rest=tail}return!0}function dropStyleTags(st){let chars=[...st],out=[];for(let i=0;i<chars.length;){if(chars[i]===":"&&chars[i+1]===":"&&chars[i+2]===":"){let k=i+3;for(;k<chars.length&&(isIdChar(chars[k])||chars[k]==="-");)k++;for(;k>i+3&&chars[k-1]==="-";)k--;if(k>i+3){i=k;continue}}out.push(chars[i]),i++}return out.join("")}function stateEndpoint(graph,id,isSource){return id==="[*]"?graph.nodeIndex(isSource?"[*]start":"[*]end","\u25CF","round"):graph.nodeIndex(id,null,"round")}function parseStateDesc(st,graph){let split=splitOnce(st,":");if(split){let id=split[0].trim(),desc=split[1].trim();return id===""||/\s/.test(id)||desc===""||graph.nodeLabel(id,decodeHtmlEntities(desc))===null?null:!0}return/\s/.test(st)||graph.nodeIndex(st,null,"round")===null?null:!0}var CLASS_OPS=[["<|--","triangle","none","solid"],["--|>","none","triangle","solid"],["<|..","triangle","none","dotted"],["..|>","none","triangle","dotted"],["*--","diamondFill","none","solid"],["--*","none","diamondFill","solid"],["o--","diamondOpen","none","solid"],["--o","none","diamondOpen","solid"],["<--","arrow","none","solid"],["-->","none","arrow","solid"],["<..","arrow","none","dotted"],["..>","none","arrow","dotted"],["--","none","none","solid"],["..","none","none","dotted"]],MAX_CLASS_OP=4;function parseClass2(src){let statements=statementsOf(src),kind=headerKind(statements);if(kind===null||!kind.startsWith("classdiagram"))return null;let graph=new Graph,infos=[],sync=()=>{for(;infos.length<graph.nodes.length;)infos.push(emptyClassInfo())},declare=name=>{let idx=graph.nodeIndex(name,null,"rect");return sync(),idx},curClass=null;for(let st of statements.slice(1)){if(curClass!==null){st==="}"?curClass=null:pushMember(infos[curClass],st);continue}st=dropStyleTags(st);let first=asciiLower(firstWord(st));if(first==="direction"){graph.dir=parseDir(words2(st)[1]??"");continue}if(["note","callback","click","link","style","cssclass","classdef","namespace","}"].includes(first))continue;if(first==="class"){let rest=st.slice(5).trim(),open5=rest.endsWith("{"),name=open5?rest.slice(0,-1).trim():rest;if(name===""||/\s/.test(name))return null;let idx=declare(name);if(idx===null)return null;open5&&(curClass=idx);continue}if(st.startsWith("<<")){let split=splitOnce(st.slice(2),">>");if(!split)return null;let name=split[1].trim();if(name===""||/\s/.test(name))return null;let idx=declare(name);if(idx===null)return null;infos[idx].annotation=split[0].trim();continue}let rel=parseClassRelation(st);if(rel){let f=declare(rel.from);if(f===null)return null;let t=declare(rel.to);if(t===null||graph.edges.length>=MAX_EDGES)return null;graph.edges.push({from:f,to:t,label:rel.label,headTo:rel.headTo,headFrom:rel.headFrom,line:rel.line});continue}let member=splitOnce(st,":");if(member){let id=member[0].trim(),text=member[1].trim();if(id===""||/\s/.test(id)||text==="")return null;let idx=declare(id);if(idx===null)return null;pushMember(infos[idx],text);continue}return null}return graph.nodes.length===0?null:(sync(),{graph,infos})}function pushMember(info,raw){if(raw.startsWith("<<")){let split=splitOnce(raw.slice(2),">>");split&&(info.annotation=split[0].trim());return}let member=decodeHtmlEntities(displayGenerics2(raw.trim())),list=member.includes("(")?info.methods:info.attrs;list.length<MAX_MEMBERS?list.push(member):list.length===MAX_MEMBERS&&list.push("\u2026")}function parseClassRelation(st){let chars=[...st],found=null;outer:for(let pos=0;pos<chars.length;pos++){let tail=chars.slice(pos,pos+MAX_CLASS_OP).join("");for(let[op,headFrom,headTo,line]of CLASS_OPS){if(!tail.startsWith(op)||op.startsWith("o")&&pos>0&&isIdChar(chars[pos-1]))continue;let after=chars[pos+[...op].length];if(!(op.endsWith("o")&&after!==void 0&&isIdChar(after))){found={pos,op,headFrom,headTo,line};break outer}}}if(!found)return null;let lhsRaw=chars.slice(0,found.pos).join("").trim(),rhsRaw=chars.slice(found.pos+[...found.op].length).join("").trim(),[lhs,cardFrom]=stripCardinalitySuffix(lhsRaw),[rhs,cardTo]=stripCardinalityPrefix(rhsRaw),split=splitOnce(rhs,":"),toId=(split?split[0]:rhs).trim(),relLabel=split?nonEmpty(decodeHtmlEntities(split[1].trim())):null;if(lhs===""||toId===""||/\s/.test(lhs)||/\s/.test(toId))return null;let label=nonEmpty([cardFrom,relLabel??"",cardTo].filter(s=>s!=="").join(" "));return{from:lhs,to:toId,headFrom:found.headFrom,headTo:found.headTo,line:found.line,label}}function stripCardinalitySuffix(s){let t=s.trimEnd();if(t.endsWith('"')){let rest=t.slice(0,-1),q=rest.lastIndexOf('"');if(q!==-1)return[rest.slice(0,q).trimEnd(),rest.slice(q+1)]}return[t,""]}function stripCardinalityPrefix(s){let t=s.trimStart();if(t.startsWith('"')){let rest=t.slice(1),q=rest.indexOf('"');if(q!==-1)return[rest.slice(q+1).trimStart(),rest.slice(0,q)]}return[t,""]}function displayGenerics2(s){let out="",open5=!1;for(let c of s)c==="~"?(out+=open5?">":"<",open5=!open5):out+=c;return out}function parseEr(src){let statements=statementsOf(src);if(headerKind(statements)!=="erdiagram")return null;let graph=new Graph,infos=[],curEntity=null;for(let st of statements.slice(1)){if(curEntity!==null){st==="}"?curEntity=null:pushErAttribute(infos[curEntity],st);continue}let rel=splitErRelationship(st);if(rel){let tokens=words2(rel.rel);if(tokens.length!==3)return null;let op=parseErOp(tokens[1]);if(!op)return null;let f=erEntity(graph,infos,tokens[0]);if(f===null)return null;let t=erEntity(graph,infos,tokens[2]);if(t===null||graph.edges.length>=MAX_EDGES)return null;let relLabel=rel.label===null?"":cleanLabel(rel.label);graph.edges.push({from:f,to:t,label:nonEmpty([op.cardL,relLabel,op.cardR].filter(s=>s!=="").join(" ")),headTo:"none",headFrom:"none",line:op.line});continue}let open5=st.endsWith("{"),decl=open5?st.slice(0,-1).trim():st;if(decl===""||words2(decl).length!==1)return null;let idx=erEntity(graph,infos,decl);if(idx===null)return null;open5&&(curEntity=idx)}if(graph.nodes.length===0)return null;for(;infos.length<graph.nodes.length;)infos.push(emptyClassInfo());return{graph,infos}}function erEntity(graph,infos,token){let open5=token.indexOf("["),idx;if(open5!==-1){let id=token.slice(0,open5),label=cleanLabel(token.slice(open5+1).replace(/\]+$/,""));if(id===""||label==="")return null;idx=graph.nodeLabel(id,label)}else idx=graph.nodeIndex(token,null,"rect");if(idx===null)return null;for(;infos.length<graph.nodes.length;)infos.push(emptyClassInfo());return idx}function splitErRelationship(st){let split=splitOnce(st,":"),rel=split?split[0]:st,label=split?split[1].trim():null;return words2(rel).some(t=>parseErOp(t)!==null)?{rel,label}:null}var isAscii=s=>{for(let i=0;i<s.length;i++)if(s.charCodeAt(i)>127)return!1;return!0};function parseErOp(tok){if(tok.length!==6||!isAscii(tok))return null;let mid=tok.slice(2,4),line=mid==="--"?"solid":mid===".."?"dotted":null;if(line===null)return null;let cardL=erCard(tok.slice(0,2)),cardR=erCard(tok.slice(4,6));return cardL===null||cardR===null?null:{cardL,cardR,line}}function erCard(tok){switch(tok){case"|o":case"o|":return"0..1";case"||":return"1";case"}o":case"o{":return"0..*";case"}|":case"|{":return"1..*";default:return null}}function pushErAttribute(info,raw){let parts=[];for(let tok of words2(raw)){if(tok.startsWith('"'))break;parts.push(tok)}if(parts.length===0)return;let line=decodeHtmlEntities(parts.join(" "));info.attrs.length<MAX_MEMBERS?info.attrs.push(line):info.attrs.length===MAX_MEMBERS&&info.attrs.push("\u2026")}var SEQ_OPS=[["-->>",!0,"arrow"],["->>",!1,"arrow"],["--x",!0,"cross"],["-x",!1,"cross"],["--)",!0,"arrow"],["-)",!1,"arrow"],["-->",!0,"arrow"],["->",!1,"arrow"]],MAX_SEQ_OP=4,Sequence=class{labels=[];index=new Map;items=[];participant(id,label){let existing=this.index.get(id);return existing!==void 0?(label!==null&&(this.labels[existing]=label),existing):this.labels.length>=MAX_NODES?null:(this.index.set(id,this.labels.length),this.labels.push(label??id),this.labels.length-1)}};function parseSequence(src){let statements=statementsOf(src);if(headerKind(statements)!=="sequencediagram")return null;let seq=new Sequence,autonumber=!1,msgCount=0,blocks=[];for(let st of statements.slice(1)){let first=firstWord(st),lower=asciiLower(first);if(lower==="participant"||lower==="actor"){let rest=st.slice(first.length).trim();if(rest==="")return null;let as=splitOnce(rest," as ");if(seq.participant(as?as[0].trim():rest,as?cleanLabel(as[1]):null)===null)return null;continue}if(lower==="autonumber"){autonumber=!0;continue}if(["activate","deactivate","create","destroy","title","acctitle","accdescr","links","link","properties"].includes(lower))continue;if(lower==="note"){let note=parseNoteAnchor(st.slice(first.length).trim(),seq);if(!note||seq.items.length>=MAX_EDGES)return null;seq.items.push({kind:"note",anchor:note.anchor,text:note.text});continue}if(["loop","alt","opt","par","critical","break","else","and","option"].includes(lower)){if(["else","and","option"].includes(lower)){if(blocks.at(-1)!==!0)continue}else blocks.push(!0);if(seq.items.length>=MAX_EDGES)return null;seq.items.push({kind:"divider",text:decodeHtmlEntities(st)});continue}if(lower==="rect"||lower==="box"){blocks.push(!1);continue}if(lower==="end"){if(blocks.pop()===!0){if(seq.items.length>=MAX_EDGES)return null;seq.items.push({kind:"divider",text:"end"})}continue}let msg=parseSeqMessage(st,seq);if(!msg)return null;let text=msg.text;if(autonumber&&(msgCount++,text=text===null?`${msgCount}.`:`${msgCount}. ${text}`),seq.items.length>=MAX_EDGES)return null;seq.items.push({kind:"message",from:msg.from,to:msg.to,text,dashed:msg.dashed,head:msg.head})}return seq.labels.length===0?null:seq}function parseNoteAnchor(rest,seq){let lower=asciiLower(rest),kind,idsAndText;if(lower.startsWith("over "))kind="over",idsAndText=rest.slice(5);else if(lower.startsWith("left of "))kind="left",idsAndText=rest.slice(8);else if(lower.startsWith("right of "))kind="right",idsAndText=rest.slice(9);else return null;let split=splitOnce(idsAndText,":");if(!split)return null;let text=decodeHtmlEntities(split[1].trim()),parts=split[0].split(",").map(s=>s.trim()).filter(s=>s!=="");if(parts.length===0)return null;let a=seq.participant(parts[0],null);if(a===null)return null;if(kind!=="over")return{text,anchor:{kind,at:a}};let b=a;if(parts[1]!==void 0){let second=seq.participant(parts[1],null);if(second===null)return null;b=second}return{text,anchor:{kind:"over",from:Math.min(a,b),to:Math.max(a,b)}}}function parseSeqMessage(st,seq){let chars=[...st],found=null;outer:for(let pos=0;pos<chars.length;pos++){let tail=chars.slice(pos,pos+MAX_SEQ_OP).join("");for(let[op,dashed,head]of SEQ_OPS)if(tail.startsWith(op)){found={pos,op,dashed,head};break outer}}if(!found)return null;let fromId=chars.slice(0,found.pos).join("").trim();if(fromId==="")return null;let rest=chars.slice(found.pos+[...found.op].length).join("").trimStart().replace(/^[+-]+/,""),split=splitOnce(rest,":"),toId=(split?split[0]:rest).trim(),text=split?nonEmpty(decodeHtmlEntities(split[1].trim())):null;if(toId==="")return null;let from=seq.participant(fromId,null);if(from===null)return null;let to=seq.participant(toId,null);return to===null?null:{from,to,text,dashed:found.dashed,head:found.head}}function render(src){if(src=stripControls(src),src.trim()==="")return null;let drawn=attempt(src);return drawn===null?null:{...drawn.canvas.toLines(),warnings:drawn.warnings}}function attempt(src){let drawn=draw(src);if(drawn!==null)return drawn;let body=src.replace(/\s+$/,""),cut=body.lastIndexOf(`
1121
1121
  `);if(cut===-1)return null;let salvaged=draw(body.slice(0,cut));if(salvaged===null)return null;let dropped=body.slice(cut+1).trim();return{canvas:salvaged.canvas,warnings:[...salvaged.warnings,`dropped, unreadable final line: "${dropped}"`]}}function draw(src){let plain=canvas=>canvas===null?null:{canvas,warnings:[]};switch(diagramKind(src)){case"flowchart":{let graph=parseGraph(src);if(graph===null)return null;let canvas=graph.groups.length===0?layoutFlowchart(graph):layoutGrouped(graph);return canvas===null?null:{canvas,warnings:graph.warnings}}case"state":{let state=parseState(src);return state===null?null:plain(layoutFlowchart(state))}case"class":{let cls=parseClass2(src);return cls===null?null:plain(layoutClass(cls.graph,cls.infos))}case"er":{let er=parseEr(src);return er===null?null:plain(layoutClass(er.graph,er.infos))}case"sequence":{let seq=parseSequence(src);return seq===null?null:plain(layoutSequence(seq))}default:return null}}var markdownParser=new Z;function isMermaid(token){return token.type==="code"&&token.lang?.trim().split(/\s+/,1)[0]?.toLowerCase()==="mermaid"}function codeSpan(line){let content=line||"\xA0",longestBacktickRun=Math.max(0,...Array.from(content.matchAll(/`+/g),match2=>match2[0].length)),fence="`".repeat(longestBacktickRun+1),padding=content.startsWith("`")||content.endsWith("`")?" ":"";return`${fence}${padding}${content}${padding}${fence}`}function styleSpan(span,theme2){switch(span.cls){case"border":return theme2.fg("borderMuted",span.text);case"text":return theme2.fg("text",span.text);case"edge":return theme2.fg("accent",span.text);case"edgeLabel":return theme2.fg("muted",span.text);case"title":return theme2.fg("accent",theme2.bold(span.text));case"none":return span.text}}function themedLines(art,theme2){return art.styled.map(row=>row.map(span=>styleSpan(span,theme2)).join(""))}function createMermaidMarkdownTransformer(options){return(markdown,context)=>{let mode=options.getMode();return mode==="off"||context.messageType==="assistant-thinking"||context.isStreaming&&mode!=="streaming"?markdown:markdownParser.lexer(markdown).map(token=>{if(!isMermaid(token))return token.raw;let art=render(token.text);if(!art||art.width>context.availableWidth)return token.raw;if(!context.isStreaming&&art.warnings.length>0){let suffix=art.warnings.length>1?` (+${art.warnings.length-1} more)`:"",warning=`Mermaid diagram not rendered: ${art.warnings[0]}${suffix}`,styledWarning=options.theme?options.theme.fg("warning",warning):warning;return`${token.raw}
1122
1122
  ${codeSpan(styledWarning)}