@workflow/web 5.0.0-beta.10 → 5.0.0-beta.12

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 (24) hide show
  1. package/build/client/assets/{encryption-B7z5c3Mu.js → encryption-g14N5vQl.js} +2 -2
  2. package/build/client/assets/{entry.client-DtOpLtMQ.js → entry.client-DOJDY_4b.js} +1 -1
  3. package/build/client/assets/{highlighted-body-B3W2YXNL-khW-t_B-.js → highlighted-body-B3W2YXNL-DmlmGvFd.js} +2 -2
  4. package/build/client/assets/{home-DKDz-tU-.js → home-BQRPxkXT.js} +4 -14
  5. package/build/client/assets/{index-CIZByfnL.js → index-B6-SzLmT.js} +1 -1
  6. package/build/client/assets/{index-BsV8i_Jn.js → index-BXZSIDEp.js} +2 -2
  7. package/build/client/assets/{manifest-a33ce94a.js → manifest-b8838010.js} +1 -1
  8. package/build/client/assets/{mermaid-3ZIDBTTL-DPZjJwuX.js → mermaid-3ZIDBTTL-CeSti4VQ.js} +246 -115
  9. package/build/client/assets/{root-DJKbeamD.js → root-8wYQKqnE.js} +2 -2
  10. package/build/client/assets/root-DvB36HGI.css +1 -0
  11. package/build/client/assets/{run-detail-ekQSEj_z.js → run-detail-Dn4QeKHW.js} +112 -50
  12. package/build/client/assets/server-build-B5Dibl7P.css +1 -0
  13. package/build/client/assets/{workflow-graph-viewer-DjlqbXVx.js → workflow-graph-viewer-CxZS9r2o.js} +3 -3
  14. package/build/server/assets/{app-Cgrcb-fS.js → app-D-W9Jr82.js} +1 -1
  15. package/build/server/assets/{highlighted-body-B3W2YXNL-BCA9A7WB.js → highlighted-body-B3W2YXNL-CcRpp5rq.js} +2 -2
  16. package/build/server/assets/{index-VP-TIWDS.js → index-BUU6Hdm_.js} +3 -3
  17. package/build/server/assets/{mermaid-3ZIDBTTL-CbLetKvR.js → mermaid-3ZIDBTTL-Nh9-IDfL.js} +2 -2
  18. package/build/server/assets/{server-build-ClDPbfo3.js → server-build-BshzAvNv.js} +1983 -533
  19. package/build/server/assets/{token-BxPrGSQ5.js → token-BaJALexf.js} +2 -2
  20. package/build/server/assets/{token-util-Bmrakd6M.js → token-util-Bc0jltWL.js} +2 -2
  21. package/build/server/index.js +1 -1
  22. package/package.json +6 -6
  23. package/build/client/assets/root-BYtlAgHl.css +0 -1
  24. package/build/client/assets/server-build-ByHD2s6b.css +0 -1
@@ -14,8 +14,8 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
14
14
  var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
15
15
  var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
16
16
  var _a2, _b, _c, _listeners, _onabort, _reader, _root, _hasMagic, _uflag, _parts, _parent, _parentIndex, _negs, _filledNegs, _options, _toString, _emptyExt, _AST_instances, fillNegs_fn, _AST_static, parseAST_fn, canAdoptWithSpace_fn, canAdopt_fn, canAdoptType_fn, adoptWithSpace_fn, adopt_fn, canUsurpType_fn, canUsurp_fn, usurp_fn, flatten_fn, partsToRegExp_fn, parseGlob_fn, _Minimatch_instances, matchGlobstar_fn, matchGlobStarBodySections_fn, matchOne_fn, _worldPromise, _Run_instances, lazyWorldPromise_get, _encryptionKeyPromise, _resilientStart, getEncryptionKey_fn, pollReturnValue_fn;
17
- import { a as requireReact, S as ServerRouter, c as createReadableStreamFromReadable, r as reactExports, g as getDefaultExportFromCjs, R as React, b as ReactExports, w as withComponentProps, d as withErrorBoundaryProps, M as Meta, L as Links, e as ScrollRestoration, f as Scripts, O as Outlet, u as useNavigate, h as useSearchParams, i as Link$1, j as useRouteError, k as isRouteErrorResponse, l as useLocation, m as useParams } from "./app-Cgrcb-fS.js";
18
- import require$$0$3, { PassThrough } from "node:stream";
17
+ import { a as requireReact, S as ServerRouter, c as createReadableStreamFromReadable, r as reactExports, g as getDefaultExportFromCjs, R as React, b as ReactExports, w as withComponentProps, d as withErrorBoundaryProps, M as Meta, L as Links, e as ScrollRestoration, f as Scripts, O as Outlet, u as useNavigate, h as useSearchParams, i as Link$1, j as useRouteError, k as isRouteErrorResponse, l as useLocation, m as useParams } from "./app-D-W9Jr82.js";
18
+ import require$$0$4, { PassThrough } from "node:stream";
19
19
  import require$$0 from "util";
20
20
  import require$$1 from "crypto";
21
21
  import require$$2 from "async_hooks";
@@ -23,32 +23,32 @@ import require$$5 from "stream";
23
23
  import crypto, { createHash, webcrypto } from "node:crypto";
24
24
  import minproc from "node:process";
25
25
  import path$3, { join as join$1, resolve, dirname, isAbsolute, sep as sep$1 } from "node:path";
26
- import { fileURLToPath, pathToFileURL } from "node:url";
26
+ import require$$1$2, { fileURLToPath, pathToFileURL } from "node:url";
27
27
  import { createRequire } from "module";
28
28
  import fs$1, { readdir, readlink, readFile, mkdir, access, constants as constants$6, writeFile, unlink, rm } from "node:fs/promises";
29
29
  import require$$3, { types as types$3, promisify, inspect } from "node:util";
30
- import require$$1$2, { AsyncLocalStorage } from "node:async_hooks";
30
+ import require$$1$3, { AsyncLocalStorage } from "node:async_hooks";
31
31
  import { createRequire as createRequire$1 } from "node:module";
32
32
  import { promises } from "node:fs";
33
33
  import { execFile } from "node:child_process";
34
34
  import { setTimeout as setTimeout$1 } from "node:timers/promises";
35
35
  import require$$0$1 from "events";
36
- import require$$0$2 from "node:assert";
37
- import require$$0$4 from "node:net";
36
+ import require$$0$3 from "node:assert";
37
+ import require$$0$5 from "node:net";
38
38
  import require$$2$1 from "node:http";
39
39
  import require$$5$1 from "node:querystring";
40
- import require$$6, { EventEmitter } from "node:events";
41
- import require$$0$5 from "node:diagnostics_channel";
40
+ import require$$0$2, { EventEmitter } from "node:events";
41
+ import require$$0$6 from "node:diagnostics_channel";
42
42
  import require$$4 from "node:tls";
43
- import require$$0$6 from "node:buffer";
43
+ import require$$0$7 from "node:buffer";
44
44
  import require$$3$1 from "node:zlib";
45
45
  import require$$5$2 from "node:perf_hooks";
46
46
  import require$$8 from "node:util/types";
47
47
  import require$$1$1 from "node:sqlite";
48
48
  import require$$2$2 from "node:worker_threads";
49
- import require$$1$3 from "node:console";
49
+ import require$$1$4 from "node:console";
50
50
  import require$$2$3 from "node:timers";
51
- import require$$1$4 from "node:dns";
51
+ import require$$1$5 from "node:dns";
52
52
  import * as path$2 from "path";
53
53
  import path__default from "path";
54
54
  import * as fs from "fs";
@@ -26078,7 +26078,7 @@ var Anchor$1 = PopperAnchor$1;
26078
26078
  var Content$4 = PopperContent$1;
26079
26079
  var Arrow$3 = PopperArrow$1;
26080
26080
  var PORTAL_NAME$9 = "Portal";
26081
- var Portal$6 = reactExports.forwardRef((props, forwardedRef) => {
26081
+ var Portal$7 = reactExports.forwardRef((props, forwardedRef) => {
26082
26082
  var _a3;
26083
26083
  const { container: containerProp, ...portalProps } = props;
26084
26084
  const [mounted, setMounted] = reactExports.useState(false);
@@ -26086,7 +26086,7 @@ var Portal$6 = reactExports.forwardRef((props, forwardedRef) => {
26086
26086
  const container = containerProp || mounted && ((_a3 = globalThis == null ? void 0 : globalThis.document) == null ? void 0 : _a3.body);
26087
26087
  return container ? ReactDOM.createPortal(/* @__PURE__ */ jsxRuntimeExports.jsx(Primitive$2.div, { ...portalProps, ref: forwardedRef }), container) : null;
26088
26088
  });
26089
- Portal$6.displayName = PORTAL_NAME$9;
26089
+ Portal$7.displayName = PORTAL_NAME$9;
26090
26090
  function useStateMachine$1(initialState2, machine) {
26091
26091
  return reactExports.useReducer((state, event) => {
26092
26092
  const nextState = machine[state][event];
@@ -26312,7 +26312,7 @@ var PROVIDER_NAME = "TooltipProvider";
26312
26312
  var DEFAULT_DELAY_DURATION = 700;
26313
26313
  var TOOLTIP_OPEN = "tooltip.open";
26314
26314
  var [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);
26315
- var TooltipProvider = (props) => {
26315
+ var TooltipProvider$1 = (props) => {
26316
26316
  const {
26317
26317
  __scopeTooltip,
26318
26318
  delayDuration = DEFAULT_DELAY_DURATION,
@@ -26353,10 +26353,10 @@ var TooltipProvider = (props) => {
26353
26353
  }
26354
26354
  );
26355
26355
  };
26356
- TooltipProvider.displayName = PROVIDER_NAME;
26356
+ TooltipProvider$1.displayName = PROVIDER_NAME;
26357
26357
  var TOOLTIP_NAME = "Tooltip";
26358
26358
  var [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);
26359
- var Tooltip$1 = (props) => {
26359
+ var Tooltip$2 = (props) => {
26360
26360
  const {
26361
26361
  __scopeTooltip,
26362
26362
  children: children2,
@@ -26446,9 +26446,9 @@ var Tooltip$1 = (props) => {
26446
26446
  }
26447
26447
  ) });
26448
26448
  };
26449
- Tooltip$1.displayName = TOOLTIP_NAME;
26449
+ Tooltip$2.displayName = TOOLTIP_NAME;
26450
26450
  var TRIGGER_NAME$6 = "TooltipTrigger";
26451
- var TooltipTrigger$1 = reactExports.forwardRef(
26451
+ var TooltipTrigger$2 = reactExports.forwardRef(
26452
26452
  (props, forwardedRef) => {
26453
26453
  const { __scopeTooltip, ...triggerProps } = props;
26454
26454
  const context = useTooltipContext(TRIGGER_NAME$6, __scopeTooltip);
@@ -26496,13 +26496,19 @@ var TooltipTrigger$1 = reactExports.forwardRef(
26496
26496
  ) });
26497
26497
  }
26498
26498
  );
26499
- TooltipTrigger$1.displayName = TRIGGER_NAME$6;
26499
+ TooltipTrigger$2.displayName = TRIGGER_NAME$6;
26500
26500
  var PORTAL_NAME$8 = "TooltipPortal";
26501
26501
  var [PortalProvider$3, usePortalContext$3] = createTooltipContext(PORTAL_NAME$8, {
26502
26502
  forceMount: void 0
26503
26503
  });
26504
+ var TooltipPortal$1 = (props) => {
26505
+ const { __scopeTooltip, forceMount, children: children2, container } = props;
26506
+ const context = useTooltipContext(PORTAL_NAME$8, __scopeTooltip);
26507
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(PortalProvider$3, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Presence$1, { present: forceMount || context.open, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Portal$7, { asChild: true, container, children: children2 }) }) });
26508
+ };
26509
+ TooltipPortal$1.displayName = PORTAL_NAME$8;
26504
26510
  var CONTENT_NAME$8 = "TooltipContent";
26505
- var TooltipContent$1 = reactExports.forwardRef(
26511
+ var TooltipContent$2 = reactExports.forwardRef(
26506
26512
  (props, forwardedRef) => {
26507
26513
  const portalContext = usePortalContext$3(CONTENT_NAME$8, props.__scopeTooltip);
26508
26514
  const { forceMount = portalContext.forceMount, side = "top", ...contentProps } = props;
@@ -26637,7 +26643,7 @@ var TooltipContentImpl = reactExports.forwardRef(
26637
26643
  );
26638
26644
  }
26639
26645
  );
26640
- TooltipContent$1.displayName = CONTENT_NAME$8;
26646
+ TooltipContent$2.displayName = CONTENT_NAME$8;
26641
26647
  var ARROW_NAME$4 = "TooltipArrow";
26642
26648
  var TooltipArrow = reactExports.forwardRef(
26643
26649
  (props, forwardedRef) => {
@@ -26766,9 +26772,12 @@ function getHullPresorted(points) {
26766
26772
  return upperHull.concat(lowerHull);
26767
26773
  }
26768
26774
  }
26769
- var Root3$1 = Tooltip$1;
26770
- var Trigger$4 = TooltipTrigger$1;
26771
- var Content2$4 = TooltipContent$1;
26775
+ var Provider$2 = TooltipProvider$1;
26776
+ var Root3$1 = Tooltip$2;
26777
+ var Trigger$4 = TooltipTrigger$2;
26778
+ var Portal$6 = TooltipPortal$1;
26779
+ var Content2$4 = TooltipContent$2;
26780
+ var Arrow2$1 = TooltipArrow;
26772
26781
  var M$2 = (e, i, s2, u4, m2, a2, l, h2) => {
26773
26782
  let d2 = document.documentElement, w2 = ["light", "dark"];
26774
26783
  function p2(n) {
@@ -48932,6 +48941,11 @@ const WorkflowInvokePayloadSchema = object$1({
48932
48941
  runId: string$3(),
48933
48942
  traceCarrier: TraceCarrierSchema.optional(),
48934
48943
  requestedAt: date$2().optional(),
48944
+ /** Consecutive replay divergences in this recovery chain and latest position. */
48945
+ replayDivergence: object$1({
48946
+ eventId: string$3(),
48947
+ count: number$3().int().positive()
48948
+ }).optional(),
48935
48949
  /** Number of times this message has been re-enqueued due to server errors (5xx) */
48936
48950
  serverErrorRetryCount: number$3().int().optional(),
48937
48951
  /** Step ID for inline step execution in combined handler. If provided, the flow execution
@@ -49412,7 +49426,8 @@ function getWebRevivers() {
49412
49426
  // Error family. The reducer side (see
49413
49427
  // `packages/core/src/serialization/reducers/common.ts`) emits a tagged
49414
49428
  // entry for each built-in Error subclass plus the workflow-specific
49415
- // `FatalError` / `RetryableError` and `AggregateError`. Without
49429
+ // `FatalError` / `RetryableError` / `HookConflictError` /
49430
+ // `RuntimeDecryptionError` and `AggregateError`. Without
49416
49431
  // matching revivers here, `devalue.unflatten` throws "Unknown type X"
49417
49432
  // — which surfaces in the web o11y UI as "Failed to load resource
49418
49433
  // details: Unknown type FatalError".
@@ -49458,6 +49473,18 @@ function getWebRevivers() {
49458
49473
  error2.stack = value.stack;
49459
49474
  return error2;
49460
49475
  },
49476
+ HookConflictError: (value) => {
49477
+ const opts = "cause" in value ? { cause: value.cause } : void 0;
49478
+ const error2 = new Error(value.message, opts);
49479
+ error2.name = "HookConflictError";
49480
+ error2.token = value.token;
49481
+ if (value.conflictingRunId !== void 0) {
49482
+ error2.conflictingRunId = value.conflictingRunId;
49483
+ }
49484
+ if (value.stack !== void 0)
49485
+ error2.stack = value.stack;
49486
+ return error2;
49487
+ },
49461
49488
  RetryableError: (value) => {
49462
49489
  const opts = "cause" in value ? { cause: value.cause } : void 0;
49463
49490
  const error2 = new Error(value.message, opts);
@@ -49469,6 +49496,17 @@ function getWebRevivers() {
49469
49496
  }
49470
49497
  return error2;
49471
49498
  },
49499
+ RuntimeDecryptionError: (value) => {
49500
+ const opts = "cause" in value ? { cause: value.cause } : void 0;
49501
+ const error2 = new Error(value.message, opts);
49502
+ error2.name = "RuntimeDecryptionError";
49503
+ if (value.context !== void 0) {
49504
+ error2.context = value.context;
49505
+ }
49506
+ if (value.stack !== void 0)
49507
+ error2.stack = value.stack;
49508
+ return error2;
49509
+ },
49472
49510
  DOMException: (value) => {
49473
49511
  const G2 = globalThis;
49474
49512
  if (typeof G2.DOMException === "function") {
@@ -80618,7 +80656,7 @@ var tn = f("block", "before:content-[counter(line)]", "before:inline-block", "be
80618
80656
  var et = ({ className: e, language: t, style: o, isIncomplete: n, ...s2 }) => jsxRuntimeExports.jsx("div", { className: f("my-4 flex w-full flex-col gap-2 rounded-xl border border-border bg-sidebar p-2", e), "data-incomplete": n || void 0, "data-language": t, "data-streamdown": "code-block", style: { contentVisibility: "auto", containIntrinsicSize: "auto 200px", ...o }, ...s2 });
80619
80657
  var Se = reactExports.createContext({ code: "" }), de = () => reactExports.useContext(Se);
80620
80658
  var ot = ({ language: e }) => jsxRuntimeExports.jsx("div", { className: "flex h-8 items-center text-muted-foreground text-xs", "data-language": e, "data-streamdown": "code-block-header", children: jsxRuntimeExports.jsx("span", { className: "ml-1 font-mono lowercase", children: e }) });
80621
- var cn$1 = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-BCA9A7WB.js").then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
80659
+ var cn$1 = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-CcRpp5rq.js").then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
80622
80660
  let i = reactExports.useMemo(() => e.replace(cn$1, ""), [e]), c = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i.split(`
80623
80661
  `).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i]);
80624
80662
  return jsxRuntimeExports.jsx(Se.Provider, { value: { code: e }, children: jsxRuntimeExports.jsxs(et, { isIncomplete: s2, language: t, children: [jsxRuntimeExports.jsx(ot, { language: t }), n ? jsxRuntimeExports.jsx("div", { className: "pointer-events-none sticky top-2 z-10 -mt-10 flex h-8 items-center justify-end", children: jsxRuntimeExports.jsx("div", { className: "pointer-events-auto flex shrink-0 items-center gap-2 rounded-md border border-sidebar bg-sidebar/80 px-1.5 py-1 supports-[backdrop-filter]:bg-sidebar/70 supports-[backdrop-filter]:backdrop-blur", "data-streamdown": "code-block-actions", children: n }) }) : null, jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: jsxRuntimeExports.jsx(Qe, { className: o, language: t, result: c, ...r2 }), children: jsxRuntimeExports.jsx(dn, { className: o, code: i, language: t, raw: c, ...r2 }) })] }) });
@@ -80940,7 +80978,7 @@ var Dt = ({ children: e, className: t, onDownload: o, onError: n }) => {
80940
80978
  }, []), jsxRuntimeExports.jsxs("div", { className: "relative", ref: i, children: [jsxRuntimeExports.jsx("button", { className: f("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50", t), disabled: c, onClick: () => r2(!s2), title: "Download table", type: "button", children: e != null ? e : jsxRuntimeExports.jsx(Z, { size: 14 }) }), s2 ? jsxRuntimeExports.jsxs("div", { className: "absolute top-full right-0 z-10 mt-1 min-w-[120px] overflow-hidden rounded-md border border-border bg-background shadow-lg", children: [jsxRuntimeExports.jsx("button", { className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40", onClick: () => a2("csv"), title: "Download table as CSV", type: "button", children: "CSV" }), jsxRuntimeExports.jsx("button", { className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40", onClick: () => a2("markdown"), title: "Download table as Markdown", type: "button", children: "Markdown" })] }) : null] });
80941
80979
  };
80942
80980
  var Vt = ({ children: e, className: t, showControls: o, ...n }) => jsxRuntimeExports.jsxs("div", { className: "my-4 flex flex-col gap-2 rounded-lg border border-border bg-sidebar p-2", "data-streamdown": "table-wrapper", children: [o ? jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-end gap-1", children: [jsxRuntimeExports.jsx(Ht, {}), jsxRuntimeExports.jsx(Dt, {})] }) : null, jsxRuntimeExports.jsx("div", { className: "border-collapse overflow-x-auto overscroll-y-auto rounded-md border border-border bg-background", children: jsxRuntimeExports.jsx("table", { className: f("w-full divide-y divide-border", t), "data-streamdown": "table", ...n, children: e }) })] });
80943
- var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-CbLetKvR.js").then((e) => ({ default: e.Mermaid }))), Kn = /language-([^\s]+)/;
80981
+ var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-Nh9-IDfL.js").then((e) => ({ default: e.Mermaid }))), Kn = /language-([^\s]+)/;
80944
80982
  function ke(e, t) {
80945
80983
  if (!(e != null && e.position || t != null && t.position)) return true;
80946
80984
  if (!(e != null && e.position && (t != null && t.position))) return false;
@@ -83585,8 +83623,58 @@ const iconButtonVariants = cva([
83585
83623
  size: "tiny"
83586
83624
  }
83587
83625
  });
83588
- function IconButton({ className, variant, size: size2, type = "button", ...props }) {
83589
- return jsxRuntimeExports.jsx("button", { type, className: cn$4(iconButtonVariants({ variant, size: size2, className })), ...props });
83626
+ const IconButton = reactExports.forwardRef(({ className, variant, size: size2, type = "button", ...props }, ref) => jsxRuntimeExports.jsx("button", { ref, type, className: cn$4(iconButtonVariants({ variant, size: size2, className })), ...props }));
83627
+ IconButton.displayName = "IconButton";
83628
+ const COL_TEMPLATE = "340px 1px minmax(50px, 1fr)";
83629
+ const ROWS = [
83630
+ { id: "r0", name: 62, off: 0, bar: 72 },
83631
+ { id: "r1", name: 78, off: 6, bar: 48 },
83632
+ { id: "r2", name: 50, off: 10, bar: 55 },
83633
+ { id: "r3", name: 84, off: 18, bar: 30 },
83634
+ { id: "r4", name: 45, off: 18, bar: 42 },
83635
+ { id: "r5", name: 66, off: 34, bar: 38 },
83636
+ { id: "r6", name: 55, off: 41, bar: 25 },
83637
+ { id: "r7", name: 40, off: 50, bar: 30 }
83638
+ ];
83639
+ const HEADER_MARKERS = ["m0", "m1", "m2", "m3"];
83640
+ const HeaderDivider = () => jsxRuntimeExports.jsx("div", { className: "flex justify-center", children: jsxRuntimeExports.jsx("span", { "aria-hidden": true, className: "h-full w-px bg-gray-alpha-400" }) });
83641
+ function TraceViewerSkeleton() {
83642
+ return jsxRuntimeExports.jsxs("output", { "aria-busy": "true", "aria-label": "Loading trace", className: "flex flex-col w-full h-full min-h-0 bg-background-100", children: [jsxRuntimeExports.jsx("span", { className: "sr-only", children: "Loading trace…" }), jsxRuntimeExports.jsxs("div", { className: "shrink-0 grid", style: { gridTemplateColumns: COL_TEMPLATE }, children: [jsxRuntimeExports.jsxs("div", { className: "h-10 min-h-10 flex items-center border-b border-gray-alpha-400 pl-4 pr-2 gap-1.5", children: [jsxRuntimeExports.jsx(Skeleton$2, { className: "w-3.5 h-3.5 shrink-0 rounded-sm" }), jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3.5 w-40" })] }), jsxRuntimeExports.jsx(HeaderDivider, {}), jsxRuntimeExports.jsx("div", { className: "h-10 min-h-10 flex items-end border-b border-gray-alpha-400 px-4 pb-1 gap-2", children: jsxRuntimeExports.jsx("div", { className: "relative flex-1 flex items-end justify-between", children: HEADER_MARKERS.map((id2) => jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3.5 w-9" }, id2)) }) })] }), jsxRuntimeExports.jsxs("div", { className: "grid flex-1 min-h-0 overflow-hidden", style: { gridTemplateColumns: COL_TEMPLATE }, children: [jsxRuntimeExports.jsx("div", { className: "block overflow-visible", children: jsxRuntimeExports.jsx("ul", { className: "block divide-y divide-gray-alpha-400 border-b border-gray-alpha-400", children: ROWS.map((row) => jsxRuntimeExports.jsxs("li", { className: "h-10 flex items-center pl-4 pr-2", children: [jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [jsxRuntimeExports.jsx(Skeleton$2, { className: "w-4 h-4 shrink-0 rounded-sm" }), jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3.5", style: { width: `${row.name}%` } })] }), jsxRuntimeExports.jsx(Skeleton$2, { className: "ml-2 h-3.5 w-10 shrink-0" })] }, row.id)) }) }), jsxRuntimeExports.jsx("span", { "aria-hidden": true, className: "h-full w-px bg-gray-alpha-400" }), jsxRuntimeExports.jsx("div", { className: "relative min-h-0", children: ROWS.map((row) => jsxRuntimeExports.jsx("div", { className: "relative h-10", children: jsxRuntimeExports.jsx("div", { className: "absolute inset-x-4 inset-y-0", children: jsxRuntimeExports.jsx(Skeleton$2, { className: "absolute top-1/2 -translate-y-1/2 h-6 rounded-[0.25rem]", style: { left: `${row.off}%`, width: `${row.bar}%` } }) }) }, row.id)) })] })] });
83643
+ }
83644
+ function useIntersectionObserver(elementRef, { threshold = 0, rootRef, rootMargin = "0%", freezeOnceVisible = false } = {}) {
83645
+ const [entry2, setEntry] = reactExports.useState();
83646
+ const frozen = (entry2 == null ? void 0 : entry2.isIntersecting) && freezeOnceVisible;
83647
+ reactExports.useEffect(() => {
83648
+ const node2 = elementRef == null ? void 0 : elementRef.current;
83649
+ const hasIOSupport = !!window.IntersectionObserver;
83650
+ if (!hasIOSupport || frozen || !node2)
83651
+ return;
83652
+ const updateEntry = ([entry3]) => {
83653
+ setEntry(entry3);
83654
+ };
83655
+ const observer = new IntersectionObserver(updateEntry, {
83656
+ threshold,
83657
+ root: (rootRef == null ? void 0 : rootRef.current) ?? null,
83658
+ rootMargin
83659
+ });
83660
+ observer.observe(node2);
83661
+ return () => observer.disconnect();
83662
+ }, [elementRef, threshold, rootRef, rootMargin, frozen]);
83663
+ return entry2;
83664
+ }
83665
+ function useLoadMoreOnScroll(loadMore, { hasMore, isLoadingMore, rootRef, rootMargin = "400px" }) {
83666
+ const sentinelRef = reactExports.useRef(null);
83667
+ const entry2 = useIntersectionObserver(sentinelRef, { rootRef, rootMargin });
83668
+ const loadMoreRef = reactExports.useRef(loadMore);
83669
+ reactExports.useEffect(() => {
83670
+ loadMoreRef.current = loadMore;
83671
+ }, [loadMore]);
83672
+ reactExports.useEffect(() => {
83673
+ if ((entry2 == null ? void 0 : entry2.isIntersecting) && hasMore && !isLoadingMore) {
83674
+ loadMoreRef.current();
83675
+ }
83676
+ }, [entry2 == null ? void 0 : entry2.isIntersecting, hasMore, isLoadingMore]);
83677
+ return sentinelRef;
83590
83678
  }
83591
83679
  const QUERY = "(prefers-reduced-motion: reduce)";
83592
83680
  const useReducedMotion = () => {
@@ -83606,6 +83694,9 @@ const useReducedMotion = () => {
83606
83694
  }, []);
83607
83695
  return reduced;
83608
83696
  };
83697
+ function Kbd({ children: children2, className }) {
83698
+ return jsxRuntimeExports.jsx("kbd", { className: cn$4("inline-flex h-5 min-w-5 items-center justify-center rounded bg-background-100/20 px-1 text-center font-sans text-xs leading-none", className), children: children2 });
83699
+ }
83609
83700
  const WorkflowIcon = () => {
83610
83701
  return jsxRuntimeExports.jsx("svg", { "data-testid": "geist-icon", height: "16", "stroke-linejoin": "round", style: { color: "currentColor" }, viewBox: "0 0 16 16", width: "16", children: jsxRuntimeExports.jsx("path", { d: "M5.75 7L6.4209 7.33594L4.85254 10.4717C5.38789 10.771 5.75 11.3431 5.75 12V14C5.75 14.9665 4.96648 15.75 4 15.75H2C1.03352 15.75 0.25 14.9665 0.25 14V12C0.25 11.0335 1.03352 10.25 2 10.25H3.28711L5.0791 6.66504L5.75 7ZM14 10.25C14.9665 10.25 15.75 11.0335 15.75 12V14C15.75 14.9665 14.9665 15.75 14 15.75H12C11.1185 15.75 10.3909 15.098 10.2695 14.25H7V12.75H10.25V12C10.25 11.0335 11.0335 10.25 12 10.25H14ZM2 11.75C1.86192 11.75 1.75 11.8619 1.75 12V14C1.75 14.1381 1.86192 14.25 2 14.25H4C4.13808 14.25 4.25 14.1381 4.25 14V12C4.25 11.8619 4.13808 11.75 4 11.75H2ZM12 11.75C11.8619 11.75 11.75 11.8619 11.75 12V14C11.75 14.1381 11.8619 14.25 12 14.25H14C14.1381 14.25 14.25 14.1381 14.25 14V12C14.25 11.8619 14.1381 11.75 14 11.75H12ZM9 0.25C9.96649 0.25 10.75 1.03351 10.75 2V4C10.75 4.44642 10.5808 4.85197 10.3057 5.16113L12.2041 8.6416L10.8877 9.36035L8.91895 5.75H7C6.03351 5.75 5.25 4.96649 5.25 4V2C5.25 1.03351 6.03351 0.25 7 0.25H9ZM7 1.75C6.86193 1.75 6.75 1.86193 6.75 2V4C6.75 4.13807 6.86193 4.25 7 4.25H9C9.13807 4.25 9.25 4.13807 9.25 4V2C9.25 1.86193 9.13807 1.75 9 1.75H7Z", fill: "currentColor" }) });
83611
83702
  };
@@ -84063,6 +84154,54 @@ function computeSpanSegments(span) {
84063
84154
  return [];
84064
84155
  }
84065
84156
  }
84157
+ const INITIAL_VISIBLE_ROWS = 60;
84158
+ function getScrollParent(el) {
84159
+ let node2 = (el == null ? void 0 : el.parentElement) ?? null;
84160
+ while (node2) {
84161
+ const overflowY = getComputedStyle(node2).overflowY;
84162
+ if (overflowY === "auto" || overflowY === "scroll")
84163
+ return node2;
84164
+ node2 = node2.parentElement;
84165
+ }
84166
+ return null;
84167
+ }
84168
+ function useRowWindow(ref, rowCount, rowHeight, overscan = 12) {
84169
+ const [range2, setRange] = reactExports.useState(() => ({
84170
+ start: 0,
84171
+ end: Math.min(rowCount, INITIAL_VISIBLE_ROWS)
84172
+ }));
84173
+ reactExports.useEffect(() => {
84174
+ const self2 = ref.current;
84175
+ const el = getScrollParent(self2);
84176
+ if (!self2 || !el)
84177
+ return;
84178
+ let raf = 0;
84179
+ const measure = () => {
84180
+ raf = 0;
84181
+ const offset2 = self2.getBoundingClientRect().top - el.getBoundingClientRect().top + el.scrollTop;
84182
+ const top = el.scrollTop - offset2;
84183
+ const start2 = Math.max(0, Math.floor(top / rowHeight) - overscan);
84184
+ const end = Math.min(rowCount, Math.ceil((top + el.clientHeight) / rowHeight) + overscan);
84185
+ setRange((prev) => prev.start === start2 && prev.end === end ? prev : { start: start2, end });
84186
+ };
84187
+ const onScroll = () => {
84188
+ if (!raf)
84189
+ raf = requestAnimationFrame(measure);
84190
+ };
84191
+ measure();
84192
+ el.addEventListener("scroll", onScroll, { passive: true });
84193
+ const ro2 = new ResizeObserver(measure);
84194
+ ro2.observe(el);
84195
+ return () => {
84196
+ el.removeEventListener("scroll", onScroll);
84197
+ ro2.disconnect();
84198
+ if (raf)
84199
+ cancelAnimationFrame(raf);
84200
+ };
84201
+ }, [ref, rowCount, rowHeight, overscan]);
84202
+ return range2;
84203
+ }
84204
+ const ROW_HEIGHT_PX = 40;
84066
84205
  const eventStyles = {
84067
84206
  run: { icon: WorkflowIcon, className: "text-blue-900" },
84068
84207
  step: { icon: StepForwardIcon, className: "text-green-900" },
@@ -84088,14 +84227,17 @@ const EventRow = ({ span, isSelected, isDimmed, onSelectSpan }) => {
84088
84227
  return jsxRuntimeExports.jsx("li", { className: cn$4("relative overflow-clip group transition-opacity", ROW_HEIGHT_CLASS, isDimmed && "opacity-35"), role: "treeitem", "aria-selected": isSelected, "aria-expanded": isSelected, "aria-level": 1, onClick: () => onSelectSpan(span.spanId), children: jsxRuntimeExports.jsx("div", { className: "h-full hover:bg-gray-100 group-aria-selected:bg-gray-100 group-aria-selected:hover:bg-gray-200", children: jsxRuntimeExports.jsxs("div", { className: "flex h-full min-w-0 items-center pl-4 pr-2", children: [jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [jsxRuntimeExports.jsx("span", { className: cn$4("shrink-0", tagClassName), children: jsxRuntimeExports.jsx(Icon2, { className: "w-4 h-4" }) }), jsxRuntimeExports.jsx("span", { className: "min-w-0 text-label-14", children: jsxRuntimeExports.jsx(MiddleTruncate, { value: span.name }) })] }), jsxRuntimeExports.jsx("div", { className: "ml-2 shrink-0", children: jsxRuntimeExports.jsx("span", { className: "text-label-14 text-gray-900 tabular-nums", children: formatDuration(durationMs) }) })] }) }) });
84089
84228
  };
84090
84229
  const EventList = ({ spans, activeSpanId, searchResult, onSelectSpan }) => {
84091
- return jsxRuntimeExports.jsx("ul", { id: "event-list", role: "tree", className: "block min-h-0 overflow-visible divide-y divide-gray-alpha-400 border-b border-gray-alpha-400", children: spans.map((span) => {
84092
- return jsxRuntimeExports.jsx(EventRow, { span, isSelected: span.spanId === activeSpanId, isDimmed: isSpanDimmedBySearch(span.spanId, searchResult), onSelectSpan }, span.spanId);
84093
- }) });
84230
+ const listRef = reactExports.useRef(null);
84231
+ const { start: start2, end } = useRowWindow(listRef, spans.length, ROW_HEIGHT_PX);
84232
+ return jsxRuntimeExports.jsx("ul", { ref: listRef, id: "event-list", role: "tree", className: "block min-h-0 overflow-visible divide-y divide-gray-alpha-400 border-b border-gray-alpha-400", style: {
84233
+ paddingTop: start2 * ROW_HEIGHT_PX,
84234
+ paddingBottom: (spans.length - end) * ROW_HEIGHT_PX
84235
+ }, children: spans.slice(start2, end).map((span) => jsxRuntimeExports.jsx(EventRow, { span, isSelected: span.spanId === activeSpanId, isDimmed: isSpanDimmedBySearch(span.spanId, searchResult), onSelectSpan }, span.spanId)) });
84094
84236
  };
84095
84237
  const GUTTER_PX = 1;
84096
84238
  const MIN_PX = 50;
84097
84239
  const DEFAULT_START_PX = 340;
84098
- function SplitPane({ children: children2, className, defaultStartWidth = DEFAULT_START_PX, startHeader, endHeader }) {
84240
+ function SplitPane({ children: children2, className, defaultStartWidth = DEFAULT_START_PX, startHeader, endHeader, scrollContainerRef }) {
84099
84241
  const parts = reactExports.Children.toArray(children2);
84100
84242
  if (parts.length !== 2) {
84101
84243
  throw new Error("SplitPane expects exactly two children");
@@ -84114,6 +84256,12 @@ function SplitPane({ children: children2, className, defaultStartWidth = DEFAULT
84114
84256
  cancelAnimationFrame(rafRef.current);
84115
84257
  };
84116
84258
  }, []);
84259
+ const setContainerRef = reactExports.useCallback((node2) => {
84260
+ containerRef.current = node2;
84261
+ if (scrollContainerRef) {
84262
+ scrollContainerRef.current = node2;
84263
+ }
84264
+ }, [scrollContainerRef]);
84117
84265
  const clampPx = reactExports.useCallback((px) => {
84118
84266
  const el = containerRef.current;
84119
84267
  if (!el)
@@ -84179,9 +84327,9 @@ function SplitPane({ children: children2, className, defaultStartWidth = DEFAULT
84179
84327
  const hasHeaders = startHeader != null || endHeader != null;
84180
84328
  const gutter = jsxRuntimeExports.jsx("div", { ref: gutterRef, className: "relative z-20 isolate flex shrink-0 cursor-col-resize justify-center", onPointerDown: handlePointerDown, onLostPointerCapture: handleLostPointerCapture, children: jsxRuntimeExports.jsx("span", { className: "pointer-events-none relative z-10 h-full w-px shrink-0 bg-gray-alpha-400", "aria-hidden": true }) });
84181
84329
  if (hasHeaders) {
84182
- return jsxRuntimeExports.jsxs("div", { className: cn$4("flex flex-col h-full min-h-0", className), children: [jsxRuntimeExports.jsxs("div", { className: "shrink-0 grid", style: { gridTemplateColumns: colTemplate }, children: [jsxRuntimeExports.jsx("div", { children: startHeader }), jsxRuntimeExports.jsx("div", { className: "flex justify-center", children: jsxRuntimeExports.jsx("span", { className: "h-full w-px bg-gray-alpha-400", "aria-hidden": true }) }), jsxRuntimeExports.jsx("div", { children: endHeader })] }), jsxRuntimeExports.jsxs("div", { ref: containerRef, className: cn$4("grid flex-1 min-h-0 overflow-x-hidden overflow-y-auto", isDragging && "select-none"), style: { gridTemplateColumns: colTemplate }, children: [start2, gutter, end] })] });
84330
+ return jsxRuntimeExports.jsxs("div", { className: cn$4("flex flex-col h-full min-h-0", className), children: [jsxRuntimeExports.jsxs("div", { className: "shrink-0 grid", style: { gridTemplateColumns: colTemplate }, children: [jsxRuntimeExports.jsx("div", { children: startHeader }), jsxRuntimeExports.jsx("div", { className: "flex justify-center", children: jsxRuntimeExports.jsx("span", { className: "h-full w-px bg-gray-alpha-400", "aria-hidden": true }) }), jsxRuntimeExports.jsx("div", { children: endHeader })] }), jsxRuntimeExports.jsxs("div", { ref: setContainerRef, className: cn$4("grid flex-1 min-h-0 overflow-x-hidden overflow-y-auto", isDragging && "select-none"), style: { gridTemplateColumns: colTemplate }, children: [start2, gutter, end] })] });
84183
84331
  }
84184
- return jsxRuntimeExports.jsxs("div", { ref: containerRef, className: cn$4("grid h-full min-h-0 content-start overflow-x-hidden overflow-y-auto", isDragging && "select-none", className), style: { gridTemplateColumns: colTemplate, height: "100%" }, children: [start2, gutter, end] });
84332
+ return jsxRuntimeExports.jsxs("div", { ref: setContainerRef, className: cn$4("grid h-full min-h-0 content-start overflow-x-hidden overflow-y-auto", isDragging && "select-none", className), style: { gridTemplateColumns: colTemplate, height: "100%" }, children: [start2, gutter, end] });
84185
84333
  }
84186
84334
  const TINY_BAR_BOX_SIZE_PX = 24;
84187
84335
  const TINY_BAR_WIDTH_PX = 4;
@@ -84309,11 +84457,10 @@ const TimelineBar = reactExports.memo(function TimelineBar2({ span, viewStart, v
84309
84457
  }, [onSelect, span.spanId]);
84310
84458
  return jsxRuntimeExports.jsx("div", { role: "treeitem", "aria-selected": isSelected, "aria-expanded": isSelected, "aria-level": 1, className: cn$4("group/timeline-row h-10 relative flex items-center hover:bg-gray-100 aria-selected:bg-gray-100 aria-selected:hover:bg-gray-200 transition-opacity", isDimmed && "opacity-35"), onClick: handleClick, children: jsxRuntimeExports.jsx("div", { className: "absolute inset-y-0", style: TIMELINE_INSET_STYLE, children: jsxRuntimeExports.jsx("div", { className: "absolute top-1/2 h-6 -translate-y-1/2 rounded-[0.25rem]", style: getBarPositionStyle(geometry), children: geometry.mode.kind === "arrow" ? jsxRuntimeExports.jsx(BoundaryArrow, { direction: geometry.mode.direction }) : geometry.mode.kind === "tiny" ? jsxRuntimeExports.jsx("div", { className: "h-6 rounded-[0.25rem] border", style: { background: fallbackBg, borderColor: fallbackBorder } }) : segments.length > 0 ? jsxRuntimeExports.jsx(SegmentBar, { segments }) : jsxRuntimeExports.jsx(PlainBar, { bg: fallbackBg, border: fallbackBorder, label: showTotalLabel ? totalLabel : null }) }) }) });
84311
84459
  });
84312
- const DELTA_ROW_HEIGHT_PX = 40;
84313
84460
  const DELTA_CAP_HEIGHT_PX = 8;
84314
84461
  const DELTA_ROW_OFFSET_PX = 8;
84315
84462
  const DeltaIndicator = reactExports.memo(function DeltaIndicator2({ leftFrac, rightFrac, label, rowIndex }) {
84316
- const centerY = DELTA_ROW_OFFSET_PX + (rowIndex + 1) * DELTA_ROW_HEIGHT_PX;
84463
+ const centerY = DELTA_ROW_OFFSET_PX + (rowIndex + 1) * ROW_HEIGHT_PX;
84317
84464
  return jsxRuntimeExports.jsxs("div", { className: "absolute pointer-events-none", style: {
84318
84465
  left: `${leftFrac * 100}%`,
84319
84466
  width: `${(rightFrac - leftFrac) * 100}%`,
@@ -84329,6 +84476,7 @@ function Timeline({ spans, viewStart, viewEnd, markers: markers2, selectedId, se
84329
84476
  const [containerWidth, setContainerWidth] = reactExports.useState(0);
84330
84477
  const viewDuration = viewEnd - viewStart;
84331
84478
  const timelineWidth = Math.max(0, containerWidth - TIMELINE_PADDING_PX * 2);
84479
+ const { start: start2, end } = useRowWindow(containerRef, spans.length, ROW_HEIGHT_PX);
84332
84480
  reactExports.useEffect(() => {
84333
84481
  const el = containerRef.current;
84334
84482
  if (!el)
@@ -84340,16 +84488,20 @@ function Timeline({ spans, viewStart, viewEnd, markers: markers2, selectedId, se
84340
84488
  return () => ro2.disconnect();
84341
84489
  }, []);
84342
84490
  const gaps = reactExports.useMemo(() => computeSpanGaps(spans, viewStart, viewEnd), [spans, viewStart, viewEnd]);
84343
- return jsxRuntimeExports.jsxs("div", { ref: containerRef, className: "relative h-full overflow-hidden", children: [jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "absolute inset-y-0 pointer-events-none", style: TIMELINE_INSET_STYLE, children: markers2.map((marker2) => (
84491
+ return jsxRuntimeExports.jsxs("div", { ref: containerRef, className: "relative h-full overflow-hidden", style: { minHeight: spans.length * ROW_HEIGHT_PX }, children: [jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "absolute inset-y-0 pointer-events-none", style: TIMELINE_INSET_STYLE, children: markers2.map((marker2) => (
84344
84492
  // Skip the "0s" origin marker since the left edge already implies it.
84345
84493
  Math.abs(marker2.value) > 1e-6 ? jsxRuntimeExports.jsx("div", { className: "absolute top-0 bottom-0 w-px bg-gray-alpha-300", style: { left: `${marker2.position * 100}%` } }, `${marker2.position}-${marker2.label}`) : null
84346
- )) }), hoverFraction != null && jsxRuntimeExports.jsx("div", { className: "absolute inset-y-0 pointer-events-none z-10", style: TIMELINE_INSET_STYLE, children: jsxRuntimeExports.jsx("div", { className: "absolute top-0 bottom-0 w-px bg-gray-alpha-500", style: { left: `${hoverFraction * 100}%` } }) }), spans.map((span) => jsxRuntimeExports.jsx(TimelineBar, { span, viewStart, viewDuration, containerWidth: timelineWidth, isSelected: selectedId === span.spanId, isDimmed: isSpanDimmedBySearch(span.spanId, searchResult), onSelect }, span.spanId)), altHeld && jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "absolute inset-y-0 pointer-events-none", style: TIMELINE_INSET_STYLE, children: gaps.map((gap) => jsxRuntimeExports.jsx(DeltaIndicator, { leftFrac: gap.leftFrac, rightFrac: gap.rightFrac, label: formatDuration(gap.gapMs, true), rowIndex: gap.rowIndex }, gap.rowIndex)) })] });
84494
+ )) }), hoverFraction != null && jsxRuntimeExports.jsx("div", { className: "absolute inset-y-0 pointer-events-none z-10", style: TIMELINE_INSET_STYLE, children: jsxRuntimeExports.jsx("div", { className: "absolute top-0 bottom-0 w-px bg-gray-alpha-500", style: { left: `${hoverFraction * 100}%` } }) }), jsxRuntimeExports.jsx("div", { style: { transform: `translateY(${start2 * ROW_HEIGHT_PX}px)` }, children: spans.slice(start2, end).map((span) => jsxRuntimeExports.jsx(TimelineBar, { span, viewStart, viewDuration, containerWidth: timelineWidth, isSelected: selectedId === span.spanId, isDimmed: isSpanDimmedBySearch(span.spanId, searchResult), onSelect }, span.spanId)) }), altHeld && jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "absolute inset-y-0 pointer-events-none", style: TIMELINE_INSET_STYLE, children: gaps.map((gap) => jsxRuntimeExports.jsx(DeltaIndicator, { leftFrac: gap.leftFrac, rightFrac: gap.rightFrac, label: formatDuration(gap.gapMs, true), rowIndex: gap.rowIndex }, gap.rowIndex)) })] });
84347
84495
  }
84496
+ const TooltipProvider = Provider$2;
84497
+ const Tooltip$1 = Root3$1;
84498
+ const TooltipTrigger$1 = Trigger$4;
84499
+ const TooltipContent$1 = reactExports.forwardRef(({ className, sideOffset = 8, showArrow = true, children: children2, ...props }, ref) => jsxRuntimeExports.jsx(Portal$6, { children: jsxRuntimeExports.jsxs(Content2$4, { ref, sideOffset, className: cn$4("z-[99999] flex items-center gap-1 rounded-[10px] bg-gray-1000 px-2 py-1.5 !text-label-13 text-background-100 shadow-md select-none", className), ...props, children: [children2, showArrow ? jsxRuntimeExports.jsx(Arrow2$1, { width: 11, height: 5, className: "fill-gray-1000" }) : null] }) }));
84500
+ TooltipContent$1.displayName = Content2$4.displayName;
84348
84501
  const ActiveSpanContext = reactExports.createContext(null);
84349
84502
  ActiveSpanContext.displayName = "ActiveSpanContext";
84350
84503
  function ActiveSpanProvider({ spans, children: children2 }) {
84351
- var _a3;
84352
- const [activeSpanId, setActiveSpanId] = reactExports.useState(((_a3 = spans[0]) == null ? void 0 : _a3.spanId) ?? null);
84504
+ const [activeSpanId, setActiveSpanId] = reactExports.useState(null);
84353
84505
  reactExports.useEffect(() => {
84354
84506
  setActiveSpanId((currentSpanId) => {
84355
84507
  if (!currentSpanId) {
@@ -84465,10 +84617,10 @@ function useSelectedSpanInfo() {
84465
84617
  };
84466
84618
  }, [activeSpan, sidebar]);
84467
84619
  }
84468
- function NewTraceViewer$1({ trace: trace2 }) {
84469
- return jsxRuntimeExports.jsx(ActiveSpanProvider, { spans: trace2.spans, children: jsxRuntimeExports.jsx(NewTraceViewerContent, { trace: trace2 }) });
84620
+ function NewTraceViewer$1({ trace: trace2, onLoadMore, hasMore, isLoadingMore }) {
84621
+ return jsxRuntimeExports.jsx(TooltipProvider, { delayDuration: 300, children: jsxRuntimeExports.jsx(ActiveSpanProvider, { spans: trace2.spans, children: jsxRuntimeExports.jsx(NewTraceViewerContent, { trace: trace2, onLoadMore, hasMore, isLoadingMore }) }) });
84470
84622
  }
84471
- function NewTraceViewerContent({ trace: trace2 }) {
84623
+ function NewTraceViewerContent({ trace: trace2, onLoadMore, hasMore, isLoadingMore }) {
84472
84624
  const { activeSpan, activeSpanId, setActiveSpan, clearActiveSpan } = useActiveSpan();
84473
84625
  const sidebar = useSidebarDataOptional();
84474
84626
  const selectedSpan = useSelectedSpanInfo();
@@ -84476,6 +84628,15 @@ function NewTraceViewerContent({ trace: trace2 }) {
84476
84628
  const deferredSearchQuery = reactExports.useDeferredValue(searchQuery);
84477
84629
  const searchResult = reactExports.useMemo(() => searchSpans(trace2.spans, deferredSearchQuery), [trace2.spans, deferredSearchQuery]);
84478
84630
  const root2 = reactExports.useMemo(() => computeRootBounds(trace2.spans), [trace2.spans]);
84631
+ const scrollContainerRef = reactExports.useRef(null);
84632
+ const loadMore = reactExports.useCallback(() => {
84633
+ void (onLoadMore == null ? void 0 : onLoadMore());
84634
+ }, [onLoadMore]);
84635
+ const loadMoreSentinelRef = useLoadMoreOnScroll(loadMore, {
84636
+ hasMore: Boolean(onLoadMore && hasMore),
84637
+ isLoadingMore: Boolean(isLoadingMore),
84638
+ rootRef: scrollContainerRef
84639
+ });
84479
84640
  const { viewport, setViewport, animateTo } = useAnimatedViewport({
84480
84641
  start: root2.startTime,
84481
84642
  end: root2.startTime + root2.duration
@@ -84737,15 +84898,15 @@ function NewTraceViewerContent({ trace: trace2 }) {
84737
84898
  prevSpanIdRef.current = prevSpanId;
84738
84899
  nextSpanIdRef.current = nextSpanId;
84739
84900
  handleSelectSpanRef.current = handleSelectSpan;
84740
- return jsxRuntimeExports.jsxs("div", { "data-pane": "pane-root", "data-has-detail": activeSpan ? "" : void 0, className: "grid w-full h-full max-h-full grid-cols-[minmax(100px,1fr)] data-[has-detail]:grid-cols-[minmax(100px,1fr)_clamp(280px,420px,100%)]", children: [jsxRuntimeExports.jsxs("div", { id: "trace-parent", className: "grid grid-rows-[1fr] h-full min-h-0 overflow-hidden relative bg-background-100", children: [jsxRuntimeExports.jsxs(SplitPane, { startHeader: jsxRuntimeExports.jsxs("div", { className: "bg-background-100 border-b border-gray-alpha-400 h-10 min-h-10 flex items-center pl-4 pr-2 gap-1.5", children: [jsxRuntimeExports.jsx(Search, { className: "w-3.5 h-3.5 shrink-0 text-gray-800" }), jsxRuntimeExports.jsx("input", { id: "trace-viewer-search", name: "trace-viewer-search", type: "text", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), onKeyDown: (e) => {
84901
+ return jsxRuntimeExports.jsxs("div", { "data-pane": "pane-root", "data-has-detail": activeSpan ? "" : void 0, className: "grid w-full h-full max-h-full grid-cols-[minmax(100px,1fr)] data-[has-detail]:grid-cols-[minmax(100px,1fr)_clamp(280px,360px,100%)]", children: [jsxRuntimeExports.jsxs("div", { id: "trace-parent", className: "grid grid-rows-[1fr] h-full min-h-0 overflow-hidden relative bg-background-100", children: [jsxRuntimeExports.jsxs(SplitPane, { scrollContainerRef, startHeader: jsxRuntimeExports.jsxs("div", { className: "bg-background-100 border-b border-gray-alpha-400 h-10 min-h-10 flex items-center pl-4 pr-2 gap-1.5", children: [jsxRuntimeExports.jsx(Search, { className: "w-3.5 h-3.5 shrink-0 text-gray-800" }), jsxRuntimeExports.jsx("input", { id: "trace-viewer-search", name: "trace-viewer-search", type: "text", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), onKeyDown: (e) => {
84741
84902
  if (e.key === "Escape" && searchQuery) {
84742
84903
  e.preventDefault();
84743
84904
  e.stopPropagation();
84744
84905
  setSearchQuery("");
84745
84906
  }
84746
- }, placeholder: "Search spans...", "aria-label": "Search spans", className: "flex-1 min-w-0 bg-transparent text-sm text-gray-1000 placeholder:text-gray-800 outline-none" }), searchQuery && jsxRuntimeExports.jsx("button", { type: "button", "aria-label": "Clear search", onClick: () => setSearchQuery(""), className: "-mr-2 hidden h-full max-w-full shrink-0 cursor-pointer items-center rounded-r-md border-0 bg-transparent px-2.5 font-inherit text-base text-gray-900 no-underline transition-colors duration-150 ease-in hover:text-gray-1000 focus-visible:-outline-offset-1 focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--ds-focus-color)] min-[961px]:flex", children: jsxRuntimeExports.jsx("kbd", { className: "inline-flex h-5 min-h-5 min-w-5 items-center justify-center rounded border border-gray-alpha-400 bg-background-100 px-1 font-sans text-[13px] font-medium leading-[1.7em] text-gray-900", children: "Esc" }) })] }), endHeader: jsxRuntimeExports.jsx(TimelineHeader, { markers: timeMarkers, hoverInfo: hoverInfo2 }), children: [jsxRuntimeExports.jsx("div", { className: "block overflow-visible", children: jsxRuntimeExports.jsx(EventList, { spans: trace2.spans, activeSpanId, searchResult, onSelectSpan: handleSelectSpan }) }), jsxRuntimeExports.jsx("div", { ref: timelineRef, className: "block min-h-0 overflow-visible relative", onDoubleClick: resetZoom, onMouseMove: handleTimelineMouseMove, onMouseLeave: handleTimelineMouseLeave, children: jsxRuntimeExports.jsx(Timeline, { spans: trace2.spans, viewStart: viewport.start, viewEnd: viewport.end, markers: timeMarkers, selectedId: activeSpanId, searchResult, onSelect: handleSelectSpan, hoverFraction, altHeld }) })] }), jsxRuntimeExports.jsxs("div", { className: "absolute right-3 bottom-3 z-[5] flex items-center border border-gray-alpha-400 rounded-md bg-background-100 shadow-sm overflow-hidden divide-x divide-gray-alpha-400", children: [jsxRuntimeExports.jsx(IconButton, { variant: "muted", size: "small", onClick: zoomOut, "aria-label": "Zoom out", children: jsxRuntimeExports.jsx(ZoomOut, { className: "w-4 h-4" }) }), jsxRuntimeExports.jsx(IconButton, { variant: "muted", size: "small", onClick: resetZoom, "aria-label": "Reset zoom", children: jsxRuntimeExports.jsx(RotateCcw, { className: "w-3.5 h-3.5" }) }), jsxRuntimeExports.jsx(IconButton, { variant: "muted", size: "small", onClick: zoomIn, "aria-label": "Zoom in", children: jsxRuntimeExports.jsx(ZoomIn, { className: "w-4 h-4" }) })] })] }), activeSpan && sidebar ? jsxRuntimeExports.jsxs("aside", { className: "flex flex-col h-full max-h-full bg-background-100 border-l border-gray-alpha-400 overflow-auto", children: [jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between gap-2 shrink-0 px-4 pt-3 pb-3", children: [jsxRuntimeExports.jsx("span", { className: "text-label-14 font-medium text-gray-1000 truncate block", children: selectedSpanName }), jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-0.5 shrink-0", children: [jsxRuntimeExports.jsx(IconButton, { "aria-label": "Navigate to previous span", "aria-keyshortcuts": "K", onClick: handleSelectPrevSpan, disabled: !prevSpanId, children: jsxRuntimeExports.jsx(ChevronUp, { className: "w-4 h-4" }) }), jsxRuntimeExports.jsx(IconButton, { "aria-label": "Navigate to next span", "aria-keyshortcuts": "J", onClick: handleSelectNextSpan, disabled: !nextSpanId, children: jsxRuntimeExports.jsx(ChevronDown, { className: "w-4 h-4" }) }), jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "w-px h-4 bg-gray-alpha-400 mx-1" }), jsxRuntimeExports.jsx(IconButton, { "aria-label": "Close span details", "aria-keyshortcuts": "Escape", onClick: clearActiveSpan, children: jsxRuntimeExports.jsx(X$3, { className: "w-4 h-4" }) })] })] }), jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-y-auto", children: jsxRuntimeExports.jsx(ErrorBoundary$1, { children: jsxRuntimeExports.jsx(EntityDetailPanel, { run: sidebar.run, onStreamClick: sidebar.onStreamClick, onRunClick: sidebar.onRunClick, spanDetailData: sidebar.spanDetailData, spanDetailError: sidebar.spanDetailError, spanDetailLoading: sidebar.spanDetailLoading, onSpanSelect: sidebar.onSpanSelect, onWakeUpSleep: sidebar.onWakeUpSleep, onLoadEventData: sidebar.onLoadEventData, onResolveHook: sidebar.onResolveHook, encryptionKey: sidebar.encryptionKey, onDecrypt: sidebar.onDecrypt, isDecrypting: sidebar.isDecrypting, selectedSpan }) }) })] }) : activeSpan ? jsxRuntimeExports.jsx(DetailPanel, { span: activeSpan, rootStart: root2.startTime, onClose: clearActiveSpan }) : null] });
84907
+ }, placeholder: "Search spans...", "aria-label": "Search spans", className: "flex-1 min-w-0 bg-transparent text-sm text-gray-1000 placeholder:text-gray-800 outline-none" }), searchQuery && jsxRuntimeExports.jsx("button", { type: "button", "aria-label": "Clear search", onClick: () => setSearchQuery(""), className: "-mr-2 hidden h-full max-w-full shrink-0 cursor-pointer items-center rounded-r-md border-0 bg-transparent px-2.5 font-inherit text-base text-gray-900 no-underline transition-colors duration-150 ease-in hover:text-gray-1000 focus-visible:-outline-offset-1 focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--ds-focus-color)] min-[961px]:flex", children: jsxRuntimeExports.jsx("kbd", { className: "inline-flex h-5 min-h-5 min-w-5 items-center justify-center rounded border border-gray-alpha-400 bg-background-100 px-1 font-sans text-[13px] font-medium leading-[1.7em] text-gray-900", children: "Esc" }) })] }), endHeader: jsxRuntimeExports.jsx(TimelineHeader, { markers: timeMarkers, hoverInfo: hoverInfo2 }), children: [jsxRuntimeExports.jsxs("div", { className: "block overflow-visible", children: [jsxRuntimeExports.jsx(EventList, { spans: trace2.spans, activeSpanId, searchResult, onSelectSpan: handleSelectSpan }), jsxRuntimeExports.jsx("div", { ref: loadMoreSentinelRef, className: "flex justify-center", children: isLoadingMore ? jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-center gap-2 py-3 text-sm text-gray-800", children: [jsxRuntimeExports.jsx(Spinner, { size: 14 }), jsxRuntimeExports.jsx("span", { children: "Loading spans…" })] }) : null })] }), jsxRuntimeExports.jsx("div", { ref: timelineRef, className: "block min-h-0 overflow-visible relative", onDoubleClick: resetZoom, onMouseMove: handleTimelineMouseMove, onMouseLeave: handleTimelineMouseLeave, children: jsxRuntimeExports.jsx(Timeline, { spans: trace2.spans, viewStart: viewport.start, viewEnd: viewport.end, markers: timeMarkers, selectedId: activeSpanId, searchResult, onSelect: handleSelectSpan, hoverFraction, altHeld }) })] }), jsxRuntimeExports.jsxs("div", { className: "absolute right-3 bottom-3 z-[5] flex items-center border border-gray-alpha-400 rounded-md bg-background-100 shadow-sm overflow-hidden divide-x divide-gray-alpha-400", children: [jsxRuntimeExports.jsx(IconButton, { variant: "muted", size: "small", onClick: zoomOut, "aria-label": "Zoom out", children: jsxRuntimeExports.jsx(ZoomOut, { className: "w-4 h-4" }) }), jsxRuntimeExports.jsx(IconButton, { variant: "muted", size: "small", onClick: resetZoom, "aria-label": "Reset zoom", children: jsxRuntimeExports.jsx(RotateCcw, { className: "w-3.5 h-3.5" }) }), jsxRuntimeExports.jsx(IconButton, { variant: "muted", size: "small", onClick: zoomIn, "aria-label": "Zoom in", children: jsxRuntimeExports.jsx(ZoomIn, { className: "w-4 h-4" }) })] })] }), activeSpan && sidebar ? jsxRuntimeExports.jsxs("aside", { className: "flex flex-col h-full max-h-full bg-background-100 border-l border-gray-alpha-400 overflow-auto", children: [jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between gap-2 shrink-0 px-4 pt-3 pb-3", children: [jsxRuntimeExports.jsx("span", { className: "text-label-14 font-medium text-gray-1000 truncate block", children: selectedSpanName }), jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-0.5 shrink-0", children: [jsxRuntimeExports.jsxs(Tooltip$1, { children: [jsxRuntimeExports.jsx(TooltipTrigger$1, { asChild: true, children: jsxRuntimeExports.jsx(IconButton, { "aria-label": "Navigate up", "aria-keyshortcuts": "K", onClick: handleSelectPrevSpan, disabled: !prevSpanId, children: jsxRuntimeExports.jsx(ChevronUp, { className: "w-4 h-4" }) }) }), prevSpanId ? jsxRuntimeExports.jsxs(TooltipContent$1, { children: ["Navigate up", jsxRuntimeExports.jsx(Kbd, { children: "K" })] }) : null] }), jsxRuntimeExports.jsxs(Tooltip$1, { children: [jsxRuntimeExports.jsx(TooltipTrigger$1, { asChild: true, children: jsxRuntimeExports.jsx(IconButton, { "aria-label": "Navigate down", "aria-keyshortcuts": "J", onClick: handleSelectNextSpan, disabled: !nextSpanId, children: jsxRuntimeExports.jsx(ChevronDown, { className: "w-4 h-4" }) }) }), nextSpanId ? jsxRuntimeExports.jsxs(TooltipContent$1, { children: ["Navigate down", jsxRuntimeExports.jsx(Kbd, { children: "J" })] }) : null] }), jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "w-px h-4 bg-gray-alpha-400 mx-1" }), jsxRuntimeExports.jsx(IconButton, { "aria-label": "Close span details", "aria-keyshortcuts": "Escape", onClick: clearActiveSpan, children: jsxRuntimeExports.jsx(X$3, { className: "w-4 h-4" }) })] })] }), jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-y-auto", children: jsxRuntimeExports.jsx(ErrorBoundary$1, { children: jsxRuntimeExports.jsx(EntityDetailPanel, { run: sidebar.run, onStreamClick: sidebar.onStreamClick, onRunClick: sidebar.onRunClick, spanDetailData: sidebar.spanDetailData, spanDetailError: sidebar.spanDetailError, spanDetailLoading: sidebar.spanDetailLoading, onSpanSelect: sidebar.onSpanSelect, onWakeUpSleep: sidebar.onWakeUpSleep, onLoadEventData: sidebar.onLoadEventData, onResolveHook: sidebar.onResolveHook, encryptionKey: sidebar.encryptionKey, onDecrypt: sidebar.onDecrypt, isDecrypting: sidebar.isDecrypting, selectedSpan }) }) })] }) : activeSpan ? jsxRuntimeExports.jsx(DetailPanel, { span: activeSpan, rootStart: root2.startTime, onClose: clearActiveSpan }) : null] });
84747
84908
  }
84748
- const NewTraceViewer = ({ run, events: events2, sidebarData }) => {
84909
+ const NewTraceViewer = ({ run, events: events2, sidebarData, onLoadMore, hasMore, isLoadingMore, loading = false }) => {
84749
84910
  const traceWithMeta = reactExports.useMemo(() => {
84750
84911
  if (!(run == null ? void 0 : run.runId)) {
84751
84912
  return void 0;
@@ -84753,10 +84914,10 @@ const NewTraceViewer = ({ run, events: events2, sidebarData }) => {
84753
84914
  return buildTrace(run, events2, /* @__PURE__ */ new Date());
84754
84915
  }, [run, events2]);
84755
84916
  const trace2 = traceWithMeta;
84756
- if (!trace2) {
84757
- return jsxRuntimeExports.jsx("div", { className: "relative w-full h-full flex items-center justify-center", children: jsxRuntimeExports.jsx("div", { className: "text-gray-500 text-sm", children: "Loading trace…" }) });
84917
+ if (!trace2 || loading && events2.length === 0) {
84918
+ return jsxRuntimeExports.jsx(TraceViewerSkeleton, {});
84758
84919
  }
84759
- return jsxRuntimeExports.jsx(SidebarDataProvider, { value: sidebarData, children: jsxRuntimeExports.jsx("div", { className: "relative w-full h-full flex", children: jsxRuntimeExports.jsx(NewTraceViewer$1, { trace: trace2 }) }) });
84920
+ return jsxRuntimeExports.jsx(SidebarDataProvider, { value: sidebarData, children: jsxRuntimeExports.jsx("div", { className: "relative w-full h-full flex", children: jsxRuntimeExports.jsx(NewTraceViewer$1, { trace: trace2, onLoadMore, hasMore, isLoadingMore }) }) });
84760
84921
  };
84761
84922
  function analyzeEvents(events2) {
84762
84923
  if (!events2 || events2.length === 0) {
@@ -88729,7 +88890,7 @@ const encryption = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePr
88729
88890
  encrypt: encrypt$1,
88730
88891
  importKey
88731
88892
  }, Symbol.toStringTag, { value: "Module" }));
88732
- const version$1 = "5.0.0-beta.10";
88893
+ const version$1 = "5.0.0-beta.12";
88733
88894
  const WorldCacheKey = Symbol.for("@workflow/world//cache");
88734
88895
  const WorldCachePromiseKey = Symbol.for("@workflow/world//cachePromise");
88735
88896
  const GetWorldFnKey$1 = Symbol.for("@workflow/world//getWorldFn");
@@ -89064,6 +89225,7 @@ const STABLE_ULID = Symbol.for("WORKFLOW_STABLE_ULID");
89064
89225
  const STREAM_NAME_SYMBOL = Symbol.for("WORKFLOW_STREAM_NAME");
89065
89226
  const STREAM_TYPE_SYMBOL = Symbol.for("WORKFLOW_STREAM_TYPE");
89066
89227
  const STREAM_SERVER_RUN_ID_SYMBOL = Symbol.for("WORKFLOW_STREAM_SERVER_RUN_ID");
89228
+ const STREAM_SERVER_DEPLOYMENT_ID_SYMBOL = Symbol.for("WORKFLOW_STREAM_SERVER_DEPLOYMENT_ID");
89067
89229
  const BODY_INIT_SYMBOL = Symbol.for("BODY_INIT");
89068
89230
  const WEBHOOK_RESPONSE_WRITABLE = Symbol.for("WEBHOOK_RESPONSE_WRITABLE");
89069
89231
  const WORKFLOW_CLASS_REGISTRY = Symbol.for("workflow-class-registry");
@@ -91322,7 +91484,15 @@ function getExternalReducers(global2 = globalThis, ops, runId, cryptoKey) {
91322
91484
  const existingName = value[STREAM_NAME_SYMBOL];
91323
91485
  const existingRunId = value[STREAM_SERVER_RUN_ID_SYMBOL];
91324
91486
  if (typeof existingName === "string" && typeof existingRunId === "string") {
91325
- return { name: existingName, runId: existingRunId };
91487
+ const descriptor = {
91488
+ name: existingName,
91489
+ runId: existingRunId
91490
+ };
91491
+ const existingDeploymentId = value[STREAM_SERVER_DEPLOYMENT_ID_SYMBOL];
91492
+ if (typeof existingDeploymentId === "string") {
91493
+ descriptor.deploymentId = existingDeploymentId;
91494
+ }
91495
+ return descriptor;
91326
91496
  }
91327
91497
  const streamId = (global2[STABLE_ULID] || defaultUlid)();
91328
91498
  const name2 = `strm_${streamId}`;
@@ -91375,6 +91545,10 @@ function getWorkflowReducers(global2 = globalThis) {
91375
91545
  const foreignRunId = value[STREAM_SERVER_RUN_ID_SYMBOL];
91376
91546
  if (typeof foreignRunId === "string")
91377
91547
  s2.runId = foreignRunId;
91548
+ const foreignDeploymentId = value[STREAM_SERVER_DEPLOYMENT_ID_SYMBOL];
91549
+ if (typeof foreignDeploymentId === "string") {
91550
+ s2.deploymentId = foreignDeploymentId;
91551
+ }
91378
91552
  return s2;
91379
91553
  },
91380
91554
  // AbortController/AbortSignal in workflow context — just read symbols (handles).
@@ -91444,6 +91618,10 @@ function getStepReducers(global2 = globalThis, ops, runId, cryptoKey) {
91444
91618
  const s2 = { name: name2 };
91445
91619
  if (typeof foreignRunId === "string")
91446
91620
  s2.runId = foreignRunId;
91621
+ const foreignDeploymentId = value[STREAM_SERVER_DEPLOYMENT_ID_SYMBOL];
91622
+ if (typeof foreignDeploymentId === "string") {
91623
+ s2.deploymentId = foreignDeploymentId;
91624
+ }
91447
91625
  return s2;
91448
91626
  },
91449
91627
  AbortController: (value) => {
@@ -91577,6 +91755,13 @@ function getCommonRevivers(global2 = globalThis) {
91577
91755
  ...getCommonRevivers$1(global2)
91578
91756
  };
91579
91757
  }
91758
+ async function getForwardedWritableEncryptionKey(runId, deploymentId) {
91759
+ const world = await getWorldLazy();
91760
+ if (!world.getEncryptionKeyForRun)
91761
+ return void 0;
91762
+ const rawKey = deploymentId ? await world.getEncryptionKeyForRun(runId, { deploymentId }) : await world.getEncryptionKeyForRun(await world.runs.get(runId));
91763
+ return rawKey ? await importKey(rawKey, ["encrypt"]) : void 0;
91764
+ }
91580
91765
  function getExternalRevivers(global2 = globalThis, ops, runId, cryptoKey) {
91581
91766
  return {
91582
91767
  ...getCommonRevivers(global2),
@@ -91639,12 +91824,7 @@ function getExternalRevivers(global2 = globalThis, ops, runId, cryptoKey) {
91639
91824
  },
91640
91825
  WritableStream: (value) => {
91641
91826
  const targetRunId = typeof value.runId === "string" ? value.runId : runId;
91642
- const targetKey = targetRunId === runId ? cryptoKey : (async () => {
91643
- var _a3;
91644
- const world = await getWorldLazy();
91645
- const rawKey = await ((_a3 = world.getEncryptionKeyForRun) == null ? void 0 : _a3.call(world, targetRunId));
91646
- return rawKey ? await importKey(rawKey, ["encrypt"]) : void 0;
91647
- })();
91827
+ const targetKey = targetRunId === runId ? cryptoKey : getForwardedWritableEncryptionKey(targetRunId, value.deploymentId);
91648
91828
  const serialize2 = getSerializeStream(getExternalReducers(global2, ops, targetRunId, targetKey), targetKey);
91649
91829
  const serverWritable = new WorkflowServerWritableStream(targetRunId, value.name);
91650
91830
  const state = createFlushableState();
@@ -91660,6 +91840,12 @@ function getExternalRevivers(global2 = globalThis, ops, runId, cryptoKey) {
91660
91840
  value: targetRunId,
91661
91841
  writable: false
91662
91842
  });
91843
+ if (typeof value.deploymentId === "string") {
91844
+ Object.defineProperty(serialize2.writable, STREAM_SERVER_DEPLOYMENT_ID_SYMBOL, {
91845
+ value: value.deploymentId,
91846
+ writable: false
91847
+ });
91848
+ }
91663
91849
  return serialize2.writable;
91664
91850
  },
91665
91851
  AbortController: (value) => reviveAbortController(value, ops, runId),
@@ -91730,6 +91916,12 @@ function getWorkflowRevivers(global2 = globalThis) {
91730
91916
  writable: false
91731
91917
  };
91732
91918
  }
91919
+ if (typeof value.deploymentId === "string") {
91920
+ descriptor[STREAM_SERVER_DEPLOYMENT_ID_SYMBOL] = {
91921
+ value: value.deploymentId,
91922
+ writable: false
91923
+ };
91924
+ }
91733
91925
  return Object.create(global2.WritableStream.prototype, descriptor);
91734
91926
  },
91735
91927
  // AbortController/AbortSignal revived inside the workflow VM. Use the
@@ -91759,7 +91951,7 @@ function getWorkflowRevivers(global2 = globalThis) {
91759
91951
  }
91760
91952
  };
91761
91953
  }
91762
- function getStepRevivers(global2 = globalThis, ops, runId, cryptoKey) {
91954
+ function getStepRevivers(global2 = globalThis, ops, runId, cryptoKey, deploymentId) {
91763
91955
  return {
91764
91956
  ...getCommonRevivers(global2),
91765
91957
  // StepFunction reviver for step context - returns raw step function
@@ -91875,7 +92067,7 @@ function getStepRevivers(global2 = globalThis, ops, runId, cryptoKey) {
91875
92067
  pollReadableLock(userReadable, state);
91876
92068
  return userReadable;
91877
92069
  } else {
91878
- const transform2 = getDeserializeStream(getStepRevivers(global2, ops, runId, cryptoKey), cryptoKey);
92070
+ const transform2 = getDeserializeStream(getStepRevivers(global2, ops, runId, cryptoKey, deploymentId), cryptoKey);
91879
92071
  const state = createFlushableState();
91880
92072
  ops.push(state.promise);
91881
92073
  flushablePipe(readable2, transform2.writable, state).catch(() => {
@@ -91886,12 +92078,8 @@ function getStepRevivers(global2 = globalThis, ops, runId, cryptoKey) {
91886
92078
  },
91887
92079
  WritableStream: (value) => {
91888
92080
  const targetRunId = typeof value.runId === "string" ? value.runId : runId;
91889
- const targetKey = targetRunId === runId ? cryptoKey : (async () => {
91890
- var _a3;
91891
- const world = await getWorldLazy();
91892
- const rawKey = await ((_a3 = world.getEncryptionKeyForRun) == null ? void 0 : _a3.call(world, targetRunId));
91893
- return rawKey ? await importKey(rawKey, ["encrypt"]) : void 0;
91894
- })();
92081
+ const targetDeploymentId = typeof value.deploymentId === "string" ? value.deploymentId : targetRunId === runId ? deploymentId : void 0;
92082
+ const targetKey = targetRunId === runId ? cryptoKey : getForwardedWritableEncryptionKey(targetRunId, targetDeploymentId);
91895
92083
  const serialize2 = getSerializeStream(getStepReducers(global2, ops, targetRunId, targetKey), targetKey);
91896
92084
  const serverWritable = new WorkflowServerWritableStream(targetRunId, value.name);
91897
92085
  const state = createFlushableState();
@@ -91907,6 +92095,12 @@ function getStepRevivers(global2 = globalThis, ops, runId, cryptoKey) {
91907
92095
  value: targetRunId,
91908
92096
  writable: false
91909
92097
  });
92098
+ if (targetDeploymentId) {
92099
+ Object.defineProperty(serialize2.writable, STREAM_SERVER_DEPLOYMENT_ID_SYMBOL, {
92100
+ value: targetDeploymentId,
92101
+ writable: false
92102
+ });
92103
+ }
91910
92104
  return serialize2.writable;
91911
92105
  },
91912
92106
  AbortController: (value) => reviveAbortController(value, ops, runId),
@@ -91966,11 +92160,11 @@ async function dehydrateStepArguments(value, _runId, key, global2 = globalThis,
91966
92160
  throw new SerializationError(message2, { hint: hint2, cause });
91967
92161
  }
91968
92162
  }
91969
- async function hydrateStepArguments(value, runId, key, ops = [], global2 = globalThis, extraRevivers = {}) {
92163
+ async function hydrateStepArguments(value, runId, key, ops = [], global2 = globalThis, extraRevivers = {}, deploymentId) {
91970
92164
  return deserialize$1(value, key, {
91971
92165
  global: global2,
91972
92166
  extraRevivers: {
91973
- ...getStreamAndRequestRevivers(getStepRevivers(global2, ops, runId, key)),
92167
+ ...getStreamAndRequestRevivers(getStepRevivers(global2, ops, runId, key, deploymentId)),
91974
92168
  ...extraRevivers
91975
92169
  }
91976
92170
  });
@@ -93086,7 +93280,8 @@ function requireSymbols() {
93086
93280
  kPingInterval: Symbol("ping interval"),
93087
93281
  kNoProxyAgent: Symbol("no proxy agent"),
93088
93282
  kHttpProxyAgent: Symbol("http proxy agent"),
93089
- kHttpsProxyAgent: Symbol("https proxy agent")
93283
+ kHttpsProxyAgent: Symbol("https proxy agent"),
93284
+ kSocks5ProxyAgent: Symbol("socks5 proxy agent")
93090
93285
  };
93091
93286
  return symbols;
93092
93287
  }
@@ -93678,6 +93873,29 @@ function requireErrors() {
93678
93873
  return true;
93679
93874
  }
93680
93875
  }
93876
+ class Socks5ProxyError extends UndiciError {
93877
+ constructor(message2, code2) {
93878
+ super(message2);
93879
+ this.name = "Socks5ProxyError";
93880
+ this.message = message2 || "SOCKS5 proxy error";
93881
+ this.code = code2 || "UND_ERR_SOCKS5";
93882
+ }
93883
+ }
93884
+ const kMessageSizeExceededError = Symbol.for("undici.error.UND_ERR_WS_MESSAGE_SIZE_EXCEEDED");
93885
+ class MessageSizeExceededError extends UndiciError {
93886
+ constructor(message2) {
93887
+ super(message2);
93888
+ this.name = "MessageSizeExceededError";
93889
+ this.message = message2 || "Max decompressed message size exceeded";
93890
+ this.code = "UND_ERR_WS_MESSAGE_SIZE_EXCEEDED";
93891
+ }
93892
+ static [Symbol.hasInstance](instance) {
93893
+ return instance && instance[kMessageSizeExceededError] === true;
93894
+ }
93895
+ get [kMessageSizeExceededError]() {
93896
+ return true;
93897
+ }
93898
+ }
93681
93899
  errors = {
93682
93900
  AbortError,
93683
93901
  HTTPParserError,
@@ -93701,7 +93919,9 @@ function requireErrors() {
93701
93919
  RequestRetryError,
93702
93920
  ResponseError,
93703
93921
  SecureProxyConnectionError,
93704
- MaxOriginsReachedError
93922
+ MaxOriginsReachedError,
93923
+ Socks5ProxyError,
93924
+ MessageSizeExceededError
93705
93925
  };
93706
93926
  return errors;
93707
93927
  }
@@ -93983,13 +94203,13 @@ var hasRequiredUtil$5;
93983
94203
  function requireUtil$5() {
93984
94204
  if (hasRequiredUtil$5) return util$5;
93985
94205
  hasRequiredUtil$5 = 1;
93986
- const assert2 = require$$0$2;
94206
+ const assert2 = require$$0$3;
93987
94207
  const { kDestroyed, kBodyUsed, kListeners, kBody } = requireSymbols();
93988
94208
  const { IncomingMessage } = require$$2$1;
93989
- const stream = require$$0$3;
93990
- const net2 = require$$0$4;
94209
+ const stream = require$$0$4;
94210
+ const net2 = require$$0$5;
93991
94211
  const { stringify: stringify2 } = require$$5$1;
93992
- const { EventEmitter: EE } = require$$6;
94212
+ const { EventEmitter: EE } = require$$0$2;
93993
94213
  const timers2 = requireTimers();
93994
94214
  const { InvalidArgumentError, ConnectTimeoutError } = requireErrors();
93995
94215
  const { headerNameLowerCasedRecord } = requireConstants$5();
@@ -94150,6 +94370,11 @@ function requireUtil$5() {
94150
94370
  function isIterable(obj) {
94151
94371
  return !!(obj != null && (typeof obj[Symbol.iterator] === "function" || typeof obj[Symbol.asyncIterator] === "function"));
94152
94372
  }
94373
+ function hasSafeIterator(obj) {
94374
+ const prototype = Object.getPrototypeOf(obj);
94375
+ const ownIterator = Object.prototype.hasOwnProperty.call(obj, Symbol.iterator);
94376
+ return ownIterator || prototype != null && prototype !== Object.prototype && typeof obj[Symbol.iterator] === "function";
94377
+ }
94153
94378
  function bodyLength(body2) {
94154
94379
  if (body2 == null) {
94155
94380
  return 0;
@@ -94201,19 +94426,29 @@ function requireUtil$5() {
94201
94426
  for (let i = 0; i < headers2.length; i += 2) {
94202
94427
  const key = headerNameToString(headers2[i]);
94203
94428
  let val = obj[key];
94204
- if (val) {
94205
- if (typeof val === "string") {
94206
- val = [val];
94207
- obj[key] = val;
94208
- }
94209
- val.push(headers2[i + 1].toString("latin1"));
94210
- } else {
94211
- const headersValue = headers2[i + 1];
94212
- if (typeof headersValue === "string") {
94213
- obj[key] = headersValue;
94429
+ if (val !== void 0) {
94430
+ if (!Object.hasOwn(obj, key)) {
94431
+ const headersValue = typeof headers2[i + 1] === "string" ? headers2[i + 1] : Array.isArray(headers2[i + 1]) ? headers2[i + 1].map((x2) => x2.toString("latin1")) : headers2[i + 1].toString("latin1");
94432
+ if (key === "__proto__") {
94433
+ Object.defineProperty(obj, key, {
94434
+ value: headersValue,
94435
+ enumerable: true,
94436
+ configurable: true,
94437
+ writable: true
94438
+ });
94439
+ } else {
94440
+ obj[key] = headersValue;
94441
+ }
94214
94442
  } else {
94215
- obj[key] = Array.isArray(headersValue) ? headersValue.map((x2) => x2.toString("latin1")) : headersValue.toString("latin1");
94443
+ if (typeof val === "string") {
94444
+ val = [val];
94445
+ obj[key] = val;
94446
+ }
94447
+ val.push(headers2[i + 1].toString("latin1"));
94216
94448
  }
94449
+ } else {
94450
+ const headersValue = typeof headers2[i + 1] === "string" ? headers2[i + 1] : Array.isArray(headers2[i + 1]) ? headers2[i + 1].map((x2) => x2.toString("latin1")) : headers2[i + 1].toString("latin1");
94451
+ obj[key] = headersValue;
94217
94452
  }
94218
94453
  }
94219
94454
  return obj;
@@ -94746,6 +94981,7 @@ function requireUtil$5() {
94746
94981
  getServerName,
94747
94982
  isStream,
94748
94983
  isIterable,
94984
+ hasSafeIterator,
94749
94985
  isAsyncIterable,
94750
94986
  isDestroyed,
94751
94987
  headerNameToString,
@@ -94824,7 +95060,7 @@ var hasRequiredDiagnostics;
94824
95060
  function requireDiagnostics() {
94825
95061
  if (hasRequiredDiagnostics) return diagnostics;
94826
95062
  hasRequiredDiagnostics = 1;
94827
- const diagnosticsChannel = require$$0$5;
95063
+ const diagnosticsChannel = require$$0$6;
94828
95064
  const util2 = require$$3;
94829
95065
  const undiciDebugLog = util2.debuglog("undici");
94830
95066
  const fetchDebuglog = util2.debuglog("fetch");
@@ -94984,10 +95220,12 @@ function requireDiagnostics() {
94984
95220
  diagnosticsChannel.subscribe(
94985
95221
  "undici:websocket:open",
94986
95222
  (evt) => {
94987
- const {
94988
- address: { address, port }
94989
- } = evt;
94990
- debugLog("connection opened %s%s", address, port ? `:${port}` : "");
95223
+ if (evt.address != null) {
95224
+ const { address, port } = evt.address;
95225
+ debugLog("connection opened %s%s", address, port ? `:${port}` : "");
95226
+ } else {
95227
+ debugLog("connection opened");
95228
+ }
94991
95229
  }
94992
95230
  );
94993
95231
  diagnosticsChannel.subscribe(
@@ -95043,7 +95281,7 @@ function requireRequest$1() {
95043
95281
  InvalidArgumentError,
95044
95282
  NotSupportedError
95045
95283
  } = requireErrors();
95046
- const assert2 = require$$0$2;
95284
+ const assert2 = require$$0$3;
95047
95285
  const {
95048
95286
  isValidHTTPToken,
95049
95287
  isValidHeaderValue,
@@ -95052,6 +95290,7 @@ function requireRequest$1() {
95052
95290
  isBuffer,
95053
95291
  isFormDataLike,
95054
95292
  isIterable,
95293
+ hasSafeIterator,
95055
95294
  isBlobLike,
95056
95295
  serializePathWithQuery,
95057
95296
  assertRequestHandler,
@@ -95062,6 +95301,18 @@ function requireRequest$1() {
95062
95301
  const { channels } = requireDiagnostics();
95063
95302
  const { headerNameLowerCasedRecord } = requireConstants$5();
95064
95303
  const invalidPathRegex = /[^\u0021-\u00ff]/;
95304
+ function isValidContentLengthHeaderValue(val) {
95305
+ if (typeof val !== "string" || val.length === 0) {
95306
+ return false;
95307
+ }
95308
+ for (let i = 0; i < val.length; i++) {
95309
+ const charCode = val.charCodeAt(i);
95310
+ if (charCode < 48 || charCode > 57) {
95311
+ return false;
95312
+ }
95313
+ }
95314
+ return true;
95315
+ }
95065
95316
  const kHandler = Symbol("handler");
95066
95317
  class Request2 {
95067
95318
  constructor(origin, {
@@ -95079,7 +95330,8 @@ function requireRequest$1() {
95079
95330
  expectContinue,
95080
95331
  servername,
95081
95332
  throwOnError,
95082
- maxRedirections
95333
+ maxRedirections,
95334
+ typeOfService
95083
95335
  }, handler) {
95084
95336
  if (typeof path2 !== "string") {
95085
95337
  throw new InvalidArgumentError("path must be a string");
@@ -95096,6 +95348,9 @@ function requireRequest$1() {
95096
95348
  if (upgrade && typeof upgrade !== "string") {
95097
95349
  throw new InvalidArgumentError("upgrade must be a string");
95098
95350
  }
95351
+ if (upgrade && !isValidHeaderValue(upgrade)) {
95352
+ throw new InvalidArgumentError("invalid upgrade header");
95353
+ }
95099
95354
  if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) {
95100
95355
  throw new InvalidArgumentError("invalid headersTimeout");
95101
95356
  }
@@ -95114,9 +95369,13 @@ function requireRequest$1() {
95114
95369
  if (maxRedirections != null && maxRedirections !== 0) {
95115
95370
  throw new InvalidArgumentError("maxRedirections is not supported, use the redirect interceptor");
95116
95371
  }
95372
+ if (typeOfService != null && (!Number.isInteger(typeOfService) || typeOfService < 0 || typeOfService > 255)) {
95373
+ throw new InvalidArgumentError("typeOfService must be an integer between 0 and 255");
95374
+ }
95117
95375
  this.headersTimeout = headersTimeout;
95118
95376
  this.bodyTimeout = bodyTimeout;
95119
95377
  this.method = method;
95378
+ this.typeOfService = typeOfService ?? 0;
95120
95379
  this.abort = null;
95121
95380
  if (body2 == null) {
95122
95381
  this.body = null;
@@ -95172,7 +95431,7 @@ function requireRequest$1() {
95172
95431
  processHeader(this, headers2[i], headers2[i + 1]);
95173
95432
  }
95174
95433
  } else if (headers2 && typeof headers2 === "object") {
95175
- if (headers2[Symbol.iterator]) {
95434
+ if (hasSafeIterator(headers2)) {
95176
95435
  for (const header of headers2) {
95177
95436
  if (!Array.isArray(header) || header.length !== 2) {
95178
95437
  throw new InvalidArgumentError("headers must be in key-value pair format");
@@ -95342,28 +95601,40 @@ function requireRequest$1() {
95342
95601
  } else {
95343
95602
  val = `${val}`;
95344
95603
  }
95345
- if (request2.host === null && headerName === "host") {
95604
+ if (headerName === "host") {
95605
+ if (request2.host !== null) {
95606
+ throw new InvalidArgumentError("duplicate host header");
95607
+ }
95346
95608
  if (typeof val !== "string") {
95347
95609
  throw new InvalidArgumentError("invalid host header");
95348
95610
  }
95349
95611
  request2.host = val;
95350
- } else if (request2.contentLength === null && headerName === "content-length") {
95351
- request2.contentLength = parseInt(val, 10);
95352
- if (!Number.isFinite(request2.contentLength)) {
95612
+ } else if (headerName === "content-length") {
95613
+ if (request2.contentLength !== null) {
95614
+ throw new InvalidArgumentError("duplicate content-length header");
95615
+ }
95616
+ if (!isValidContentLengthHeaderValue(val)) {
95353
95617
  throw new InvalidArgumentError("invalid content-length header");
95354
95618
  }
95619
+ request2.contentLength = parseInt(val, 10);
95355
95620
  } else if (request2.contentType === null && headerName === "content-type") {
95356
95621
  request2.contentType = val;
95357
95622
  request2.headers.push(key, val);
95358
95623
  } else if (headerName === "transfer-encoding" || headerName === "keep-alive" || headerName === "upgrade") {
95359
95624
  throw new InvalidArgumentError(`invalid ${headerName} header`);
95360
95625
  } else if (headerName === "connection") {
95361
- const value = typeof val === "string" ? val.toLowerCase() : null;
95362
- if (value !== "close" && value !== "keep-alive") {
95626
+ const value = typeof val === "string" ? val : null;
95627
+ if (value === null) {
95363
95628
  throw new InvalidArgumentError("invalid connection header");
95364
95629
  }
95365
- if (value === "close") {
95366
- request2.reset = true;
95630
+ for (const token of value.toLowerCase().split(",")) {
95631
+ const trimmed = token.trim();
95632
+ if (!isValidHTTPToken(trimmed)) {
95633
+ throw new InvalidArgumentError("invalid connection header");
95634
+ }
95635
+ if (trimmed === "close") {
95636
+ request2.reset = true;
95637
+ }
95367
95638
  }
95368
95639
  } else if (headerName === "expect") {
95369
95640
  throw new NotSupportedError("expect header not supported");
@@ -95394,6 +95665,10 @@ function requireWrapHandler() {
95394
95665
  var _a4, _b2;
95395
95666
  return (_b2 = (_a4 = __privateGet(this, _handler)).onConnect) == null ? void 0 : _b2.call(_a4, abort, context);
95396
95667
  }
95668
+ onResponseStarted() {
95669
+ var _a4, _b2;
95670
+ return (_b2 = (_a4 = __privateGet(this, _handler)).onResponseStarted) == null ? void 0 : _b2.call(_a4);
95671
+ }
95397
95672
  onHeaders(statusCode, rawHeaders, resume, statusMessage) {
95398
95673
  var _a4, _b2;
95399
95674
  return (_b2 = (_a4 = __privateGet(this, _handler)).onHeaders) == null ? void 0 : _b2.call(_a4, statusCode, rawHeaders, resume, statusMessage);
@@ -95426,7 +95701,7 @@ function requireWrapHandler() {
95426
95701
  var _a4, _b2;
95427
95702
  const rawHeaders = [];
95428
95703
  for (const [key, val] of Object.entries(headers2)) {
95429
- rawHeaders.push(Buffer.from(key), Array.isArray(val) ? val.map((v2) => Buffer.from(v2)) : Buffer.from(val));
95704
+ rawHeaders.push(Buffer.from(key, "latin1"), toRawHeaderValue(val));
95430
95705
  }
95431
95706
  (_b2 = (_a4 = __privateGet(this, _handler)).onUpgrade) == null ? void 0 : _b2.call(_a4, statusCode, rawHeaders, socket);
95432
95707
  }
@@ -95434,7 +95709,7 @@ function requireWrapHandler() {
95434
95709
  var _a4, _b2;
95435
95710
  const rawHeaders = [];
95436
95711
  for (const [key, val] of Object.entries(headers2)) {
95437
- rawHeaders.push(Buffer.from(key), Array.isArray(val) ? val.map((v2) => Buffer.from(v2)) : Buffer.from(val));
95712
+ rawHeaders.push(Buffer.from(key, "latin1"), toRawHeaderValue(val));
95438
95713
  }
95439
95714
  if (((_b2 = (_a4 = __privateGet(this, _handler)).onHeaders) == null ? void 0 : _b2.call(_a4, statusCode, rawHeaders, () => controller.resume(), statusMessage)) === false) {
95440
95715
  controller.pause();
@@ -95450,7 +95725,7 @@ function requireWrapHandler() {
95450
95725
  var _a4, _b2;
95451
95726
  const rawTrailers = [];
95452
95727
  for (const [key, val] of Object.entries(trailers)) {
95453
- rawTrailers.push(Buffer.from(key), Array.isArray(val) ? val.map((v2) => Buffer.from(v2)) : Buffer.from(val));
95728
+ rawTrailers.push(Buffer.from(key, "latin1"), toRawHeaderValue(val));
95454
95729
  }
95455
95730
  (_b2 = (_a4 = __privateGet(this, _handler)).onComplete) == null ? void 0 : _b2.call(_a4, rawTrailers);
95456
95731
  }
@@ -95462,6 +95737,9 @@ function requireWrapHandler() {
95462
95737
  (_b2 = (_a4 = __privateGet(this, _handler)).onError) == null ? void 0 : _b2.call(_a4, err);
95463
95738
  }
95464
95739
  }, _handler = new WeakMap(), _a3);
95740
+ function toRawHeaderValue(value) {
95741
+ return Array.isArray(value) ? value.map((item) => Buffer.from(item, "latin1")) : Buffer.from(value, "latin1");
95742
+ }
95465
95743
  return wrapHandler$1;
95466
95744
  }
95467
95745
  var dispatcher;
@@ -95469,7 +95747,7 @@ var hasRequiredDispatcher;
95469
95747
  function requireDispatcher() {
95470
95748
  if (hasRequiredDispatcher) return dispatcher;
95471
95749
  hasRequiredDispatcher = 1;
95472
- const EventEmitter2 = require$$6;
95750
+ const EventEmitter2 = require$$0$2;
95473
95751
  const WrapHandler = requireWrapHandler();
95474
95752
  const wrapInterceptor = (dispatch2) => (opts, handler) => dispatch2(opts, WrapHandler.wrap(handler));
95475
95753
  class Dispatcher extends EventEmitter2 {
@@ -95570,6 +95848,10 @@ function requireUnwrapHandler() {
95570
95848
  __privateSet(this, _controller, new UnwrapController(abort));
95571
95849
  (_b3 = (_a4 = __privateGet(this, _handler)).onRequestStart) == null ? void 0 : _b3.call(_a4, __privateGet(this, _controller), context);
95572
95850
  }
95851
+ onResponseStarted() {
95852
+ var _a4, _b3;
95853
+ return (_b3 = (_a4 = __privateGet(this, _handler)).onResponseStarted) == null ? void 0 : _b3.call(_a4);
95854
+ }
95573
95855
  onUpgrade(statusCode, rawHeaders, socket) {
95574
95856
  var _a4, _b3;
95575
95857
  (_b3 = (_a4 = __privateGet(this, _handler)).onRequestUpgrade) == null ? void 0 : _b3.call(_a4, __privateGet(this, _controller), statusCode, parseHeaders2(rawHeaders), socket);
@@ -95742,8 +96024,8 @@ var hasRequiredConnect;
95742
96024
  function requireConnect() {
95743
96025
  if (hasRequiredConnect) return connect;
95744
96026
  hasRequiredConnect = 1;
95745
- const net2 = require$$0$4;
95746
- const assert2 = require$$0$2;
96027
+ const net2 = require$$0$5;
96028
+ const assert2 = require$$0$3;
95747
96029
  const util2 = requireUtil$5();
95748
96030
  const { InvalidArgumentError } = requireErrors();
95749
96031
  let tls;
@@ -95769,6 +96051,20 @@ function requireConnect() {
95769
96051
  if (this._maxCachedSessions === 0) {
95770
96052
  return;
95771
96053
  }
96054
+ if (this._sessionCache.has(sessionKey)) {
96055
+ this._sessionCache.delete(sessionKey);
96056
+ } else if (this._sessionCache.size >= this._maxCachedSessions) {
96057
+ for (const [key, ref] of this._sessionCache) {
96058
+ if (ref.deref() === void 0) {
96059
+ this._sessionCache.delete(key);
96060
+ return;
96061
+ }
96062
+ }
96063
+ const oldest = this._sessionCache.keys().next();
96064
+ if (!oldest.done) {
96065
+ this._sessionCache.delete(oldest.value);
96066
+ }
96067
+ }
95772
96068
  this._sessionCache.set(sessionKey, new WeakRef(session));
95773
96069
  this._sessionRegistry.register(session, sessionKey);
95774
96070
  }
@@ -96497,7 +96793,7 @@ function requireLlhttpWasm() {
96497
96793
  if (hasRequiredLlhttpWasm) return llhttpWasm.exports;
96498
96794
  hasRequiredLlhttpWasm = 1;
96499
96795
  (function(module) {
96500
- const { Buffer: Buffer2 } = require$$0$6;
96796
+ const { Buffer: Buffer2 } = require$$0$7;
96501
96797
  const wasmBase64 = "AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzU0BQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEBAwAAAwAAAAQFAXABExMFAwEAAgYIAX8BQcDZBAsHxQcoBm1lbW9yeQIAC19pbml0aWFsaXplAAgZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAC2xsaHR0cF9pbml0AAkYbGxodHRwX3Nob3VsZF9rZWVwX2FsaXZlADcMbGxodHRwX2FsbG9jAAsGbWFsbG9jADkLbGxodHRwX2ZyZWUADARmcmVlAAwPbGxodHRwX2dldF90eXBlAA0VbGxodHRwX2dldF9odHRwX21ham9yAA4VbGxodHRwX2dldF9odHRwX21pbm9yAA8RbGxodHRwX2dldF9tZXRob2QAEBZsbGh0dHBfZ2V0X3N0YXR1c19jb2RlABESbGxodHRwX2dldF91cGdyYWRlABIMbGxodHRwX3Jlc2V0ABMObGxodHRwX2V4ZWN1dGUAFBRsbGh0dHBfc2V0dGluZ3NfaW5pdAAVDWxsaHR0cF9maW5pc2gAFgxsbGh0dHBfcGF1c2UAFw1sbGh0dHBfcmVzdW1lABgbbGxodHRwX3Jlc3VtZV9hZnRlcl91cGdyYWRlABkQbGxodHRwX2dldF9lcnJubwAaF2xsaHR0cF9nZXRfZXJyb3JfcmVhc29uABsXbGxodHRwX3NldF9lcnJvcl9yZWFzb24AHBRsbGh0dHBfZ2V0X2Vycm9yX3BvcwAdEWxsaHR0cF9lcnJub19uYW1lAB4SbGxodHRwX21ldGhvZF9uYW1lAB8SbGxodHRwX3N0YXR1c19uYW1lACAabGxodHRwX3NldF9sZW5pZW50X2hlYWRlcnMAISFsbGh0dHBfc2V0X2xlbmllbnRfY2h1bmtlZF9sZW5ndGgAIh1sbGh0dHBfc2V0X2xlbmllbnRfa2VlcF9hbGl2ZQAjJGxsaHR0cF9zZXRfbGVuaWVudF90cmFuc2Zlcl9lbmNvZGluZwAkGmxsaHR0cF9zZXRfbGVuaWVudF92ZXJzaW9uACUjbGxodHRwX3NldF9sZW5pZW50X2RhdGFfYWZ0ZXJfY2xvc2UAJidsbGh0dHBfc2V0X2xlbmllbnRfb3B0aW9uYWxfbGZfYWZ0ZXJfY3IAJyxsbGh0dHBfc2V0X2xlbmllbnRfb3B0aW9uYWxfY3JsZl9hZnRlcl9jaHVuawAoKGxsaHR0cF9zZXRfbGVuaWVudF9vcHRpb25hbF9jcl9iZWZvcmVfbGYAKSpsbGh0dHBfc2V0X2xlbmllbnRfc3BhY2VzX2FmdGVyX2NodW5rX3NpemUAKhhsbGh0dHBfbWVzc2FnZV9uZWVkc19lb2YANgkYAQBBAQsSAQIDBAUKBgcyNDMuKy8tLDAxCq/ZAjQWAEHA1QAoAgAEQAALQcDVAEEBNgIACxQAIAAQOCAAIAI2AjggACABOgAoCxQAIAAgAC8BNCAALQAwIAAQNxAACx4BAX9BwAAQOiIBEDggAUGACDYCOCABIAA6ACggAQuPDAEHfwJAIABFDQAgAEEIayIBIABBBGsoAgAiAEF4cSIEaiEFAkAgAEEBcQ0AIABBA3FFDQEgASABKAIAIgBrIgFB1NUAKAIASQ0BIAAgBGohBAJAAkBB2NUAKAIAIAFHBEAgAEH/AU0EQCAAQQN2IQMgASgCCCIAIAEoAgwiAkYEQEHE1QBBxNUAKAIAQX4gA3dxNgIADAULIAIgADYCCCAAIAI2AgwMBAsgASgCGCEGIAEgASgCDCIARwRAIAAgASgCCCICNgIIIAIgADYCDAwDCyABQRRqIgMoAgAiAkUEQCABKAIQIgJFDQIgAUEQaiEDCwNAIAMhByACIgBBFGoiAygCACICDQAgAEEQaiEDIAAoAhAiAg0ACyAHQQA2AgAMAgsgBSgCBCIAQQNxQQNHDQIgBSAAQX5xNgIEQczVACAENgIAIAUgBDYCACABIARBAXI2AgQMAwtBACEACyAGRQ0AAkAgASgCHCICQQJ0QfTXAGoiAygCACABRgRAIAMgADYCACAADQFByNUAQcjVACgCAEF+IAJ3cTYCAAwCCyAGQRBBFCAGKAIQIAFGG2ogADYCACAARQ0BCyAAIAY2AhggASgCECICBEAgACACNgIQIAIgADYCGAsgAUEUaigCACICRQ0AIABBFGogAjYCACACIAA2AhgLIAEgBU8NACAFKAIEIgBBAXFFDQACQAJAAkACQCAAQQJxRQRAQdzVACgCACAFRgRAQdzVACABNgIAQdDVAEHQ1QAoAgAgBGoiADYCACABIABBAXI2AgQgAUHY1QAoAgBHDQZBzNUAQQA2AgBB2NUAQQA2AgAMBgtB2NUAKAIAIAVGBEBB2NUAIAE2AgBBzNUAQczVACgCACAEaiIANgIAIAEgAEEBcjYCBCAAIAFqIAA2AgAMBgsgAEF4cSAEaiEEIABB/wFNBEAgAEEDdiEDIAUoAggiACAFKAIMIgJGBEBBxNUAQcTVACgCAEF+IAN3cTYCAAwFCyACIAA2AgggACACNgIMDAQLIAUoAhghBiAFIAUoAgwiAEcEQEHU1QAoAgAaIAAgBSgCCCICNgIIIAIgADYCDAwDCyAFQRRqIgMoAgAiAkUEQCAFKAIQIgJFDQIgBUEQaiEDCwNAIAMhByACIgBBFGoiAygCACICDQAgAEEQaiEDIAAoAhAiAg0ACyAHQQA2AgAMAgsgBSAAQX5xNgIEIAEgBGogBDYCACABIARBAXI2AgQMAwtBACEACyAGRQ0AAkAgBSgCHCICQQJ0QfTXAGoiAygCACAFRgRAIAMgADYCACAADQFByNUAQcjVACgCAEF+IAJ3cTYCAAwCCyAGQRBBFCAGKAIQIAVGG2ogADYCACAARQ0BCyAAIAY2AhggBSgCECICBEAgACACNgIQIAIgADYCGAsgBUEUaigCACICRQ0AIABBFGogAjYCACACIAA2AhgLIAEgBGogBDYCACABIARBAXI2AgQgAUHY1QAoAgBHDQBBzNUAIAQ2AgAMAQsgBEH/AU0EQCAEQXhxQezVAGohAAJ/QcTVACgCACICQQEgBEEDdnQiA3FFBEBBxNUAIAIgA3I2AgAgAAwBCyAAKAIICyICIAE2AgwgACABNgIIIAEgADYCDCABIAI2AggMAQtBHyECIARB////B00EQCAEQSYgBEEIdmciAGt2QQFxIABBAXRrQT5qIQILIAEgAjYCHCABQgA3AhAgAkECdEH01wBqIQACQEHI1QAoAgAiA0EBIAJ0IgdxRQRAIAAgATYCAEHI1QAgAyAHcjYCACABIAA2AhggASABNgIIIAEgATYCDAwBCyAEQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQACQANAIAAiAygCBEF4cSAERg0BIAJBHXYhACACQQF0IQIgAyAAQQRxakEQaiIHKAIAIgANAAsgByABNgIAIAEgAzYCGCABIAE2AgwgASABNgIIDAELIAMoAggiACABNgIMIAMgATYCCCABQQA2AhggASADNgIMIAEgADYCCAtB5NUAQeTVACgCAEEBayIAQX8gABs2AgALCwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BNAsHACAALQAwC0ABBH8gACgCGCEBIAAvAS4hAiAALQAoIQMgACgCOCEEIAAQOCAAIAQ2AjggACADOgAoIAAgAjsBLiAAIAE2AhgL5YUCAgd/A34gASACaiEEAkAgACIDKAIMIgANACADKAIEBEAgAyABNgIECyMAQRBrIgkkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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C0HjAQwHC0HXAQwGC0HYAQwFC0HZAQwEC0HaAQwDC0HbAQwCC0HdAQwBC0HcAQshAgNAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJ/AkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAg7jAQABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEjJCUnKCmeA5sDmgORA4oDgwOAA/0C+wL4AvIC8QLvAu0C6ALnAuYC5QLkAtwC2wLaAtkC2ALXAtYC1QLPAs4CzALLAsoCyQLIAscCxgLEAsMCvgK8AroCuQK4ArcCtgK1ArQCswKyArECsAKuAq0CqQKoAqcCpgKlAqQCowKiAqECoAKfApgCkAKMAosCigKBAv4B/QH8AfsB+gH5AfgB9wH1AfMB8AHrAekB6AHnAeYB5QHkAeMB4gHhAeAB3wHeAd0B3AHaAdkB2AHXAdYB1QHUAdMB0gHRAdABzwHOAc0BzAHLAcoByQHIAccBxgHFAcQBwwHCAcEBwAG/Ab4BvQG8AbsBugG5AbgBtwG2AbUBtAGzAbIBsQGwAa8BrgGtAawBqwGqAakBqAGnAaYBpQGkAaMBogGfAZ4BmQGYAZcBlgGVAZQBkwGSAZEBkAGPAY0BjAGHAYYBhQGEAYMBggF9fHt6eXZ1dFBRUlNUVQsgASAERw1yQf0BIQIMvgMLIAEgBEcNmAFB2wEhAgy9AwsgASAERw3xAUGOASECDLwDCyABIARHDfwBQYQBIQIMuwMLIAEgBEcNigJB/wAhAgy6AwsgASAERw2RAkH9ACECDLkDCyABIARHDZQCQfsAIQIMuAMLIAEgBEcNHkEeIQIMtwMLIAEgBEcNGUEYIQIMtgMLIAEgBEcNygJBzQAhAgy1AwsgASAERw3VAkHGACECDLQDCyABIARHDdYCQcMAIQIMswMLIAEgBEcN3AJBOCECDLIDCyADLQAwQQFGDa0DDIkDC0EAIQACQAJAAkAgAy0AKkUNACADLQArRQ0AIAMvATIiAkECcUUNAQwCCyADLwEyIgJBAXFFDQELQQEhACADLQAoQQFGDQAgAy8BNCIGQeQAa0HkAEkNACAGQcwBRg0AIAZBsAJGDQAgAkHAAHENAEEAIQAgAkGIBHFBgARGDQAgAkEocUEARyEACyADQQA7ATIgA0EAOgAxAkAgAEUEQCADQQA6ADEgAy0ALkEEcQ0BDLEDCyADQgA3AyALIANBADoAMSADQQE6ADYMSAtBACEAAkAgAygCOCICRQ0AIAIoAjAiAkUNACADIAIRAAAhAAsgAEUNSCAAQRVHDWIgA0EENgIcIAMgATYCFCADQdIbNgIQIANBFTYCDEEAIQIMrwMLIAEgBEYEQEEGIQIMrwMLIAEtAABBCkcNGSABQQFqIQEMGgsgA0IANwMgQRIhAgyUAwsgASAERw2KA0EjIQIMrAMLIAEgBEYEQEEHIQIMrAMLAkACQCABLQAAQQprDgQBGBgAGAsgAUEBaiEBQRAhAgyTAwsgAUEBaiEBIANBL2otAABBAXENF0EAIQIgA0EANgIcIAMgATYCFCADQZkgNgIQIANBGTYCDAyrAwsgAyADKQMgIgwgBCABa60iCn0iC0IAIAsgDFgbNwMgIAogDFoNGEEIIQIMqgMLIAEgBEcEQCADQQk2AgggAyABNgIEQRQhAgyRAwtBCSECDKkDCyADKQMgUA2uAgxDCyABIARGBEBBCyECDKgDCyABLQAAQQpHDRYgAUEBaiEBDBcLIANBL2otAABBAXFFDRkMJgtBACEAAkAgAygCOCICRQ0AIAIoAlAiAkUNACADIAIRAAAhAAsgAA0ZDEILQQAhAAJAIAMoAjgiAkUNACACKAJQIgJFDQAgAyACEQAAIQALIAANGgwkC0EAIQACQCADKAI4IgJFDQAgAigCUCICRQ0AIAMgAhEAACEACyAADRsMMgsgA0Evai0AAEEBcUUNHAwiC0EAIQACQCADKAI4IgJFDQAgAigCVCICRQ0AIAMgAhEAACEACyAADRwMQgtBACEAAkAgAygCOCICRQ0AIAIoAlQiAkUNACADIAIRAAAhAAsgAA0dDCALIAEgBEYEQEETIQIMoAMLAkAgAS0AACIAQQprDgQfIyMAIgsgAUEBaiEBDB8LQQAhAAJAIAMoAjgiAkUNACACKAJUIgJFDQAgAyACEQAAIQALIAANIgxCCyABIARGBEBBFiECDJ4DCyABLQAAQcDBAGotAABBAUcNIwyDAwsCQANAIAEtAABBsDtqLQAAIgBBAUcEQAJAIABBAmsOAgMAJwsgAUEBaiEBQSEhAgyGAwsgBCABQQFqIgFHDQALQRghAgydAwsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAFBAWoiARA0IgANIQxBC0EAIQACQCADKAI4IgJFDQAgAigCVCICRQ0AIAMgAhEAACEACyAADSMMKgsgASAERgRAQRwhAgybAwsgA0EKNgIIIAMgATYCBEEAIQACQCADKAI4IgJFDQAgAigCUCICRQ0AIAMgAhEAACEACyAADSVBJCECDIEDCyABIARHBEADQCABLQAAQbA9ai0AACIAQQNHBEAgAEEBaw4FGBomggMlJgsgBCABQQFqIgFHDQALQRshAgyaAwtBGyECDJkDCwNAIAEtAABBsD9qLQAAIgBBA0cEQCAAQQFrDgUPEScTJicLIAQgAUEBaiIBRw0AC0EeIQIMmAMLIAEgBEcEQCADQQs2AgggAyABNgIEQQchAgz/AgtBHyECDJcDCyABIARGBEBBICECDJcDCwJAIAEtAABBDWsOFC4/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8APwtBACECIANBADYCHCADQb8LNgIQIANBAjYCDCADIAFBAWo2AhQMlgMLIANBL2ohAgNAIAEgBEYEQEEhIQIMlwMLAkACQAJAIAEtAAAiAEEJaw4YAgApKQEpKSkpKSkpKSkpKSkpKSkpKSkCJwsgAUEBaiEBIANBL2otAABBAXFFDQoMGAsgAUEBaiEBDBcLIAFBAWohASACLQAAQQJxDQALQQAhAiADQQA2AhwgAyABNgIUIANBnxU2AhAgA0EMNgIMDJUDCyADLQAuQYABcUUNAQtBACEAAkAgAygCOCICRQ0AIAIoAlwiAkUNACADIAIRAAAhAAsgAEUN5gIgAEEVRgRAIANBJDYCHCADIAE2AhQgA0GbGzYCECADQRU2AgxBACECDJQDC0EAIQIgA0EANgIcIAMgATYCFCADQZAONgIQIANBFDYCDAyTAwtBACECIANBADYCHCADIAE2AhQgA0G+IDYCECADQQI2AgwMkgMLIAMoAgQhAEEAIQIgA0EANgIEIAMgACABIAynaiIBEDIiAEUNKyADQQc2AhwgAyABNgIUIAMgADYCDAyRAwsgAy0ALkHAAHFFDQELQQAhAAJAIAMoAjgiAkUNACACKAJYIgJFDQAgAyACEQAAIQALIABFDSsgAEEVRgRAIANBCjYCHCADIAE2AhQgA0HrGTYCECADQRU2AgxBACECDJADC0EAIQIgA0EANgIcIAMgATYCFCADQZMMNgIQIANBEzYCDAyPAwtBACECIANBADYCHCADIAE2AhQgA0GCFTYCECADQQI2AgwMjgMLQQAhAiADQQA2AhwgAyABNgIUIANB3RQ2AhAgA0EZNgIMDI0DC0EAIQIgA0EANgIcIAMgATYCFCADQeYdNgIQIANBGTYCDAyMAwsgAEEVRg09QQAhAiADQQA2AhwgAyABNgIUIANB0A82AhAgA0EiNgIMDIsDCyADKAIEIQBBACECIANBADYCBCADIAAgARAzIgBFDSggA0ENNgIcIAMgATYCFCADIAA2AgwMigMLIABBFUYNOkEAIQIgA0EANgIcIAMgATYCFCADQdAPNgIQIANBIjYCDAyJAwsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQMyIARQRAIAFBAWohAQwoCyADQQ42AhwgAyAANgIMIAMgAUEBajYCFAyIAwsgAEEVRg03QQAhAiADQQA2AhwgAyABNgIUIANB0A82AhAgA0EiNgIMDIcDCyADKAIEIQBBACECIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDCcLIANBDzYCHCADIAA2AgwgAyABQQFqNgIUDIYDC0EAIQIgA0EANgIcIAMgATYCFCADQeIXNgIQIANBGTYCDAyFAwsgAEEVRg0zQQAhAiADQQA2AhwgAyABNgIUIANB1gw2AhAgA0EjNgIMDIQDCyADKAIEIQBBACECIANBADYCBCADIAAgARA0IgBFDSUgA0ERNgIcIAMgATYCFCADIAA2AgwMgwMLIABBFUYNMEEAIQIgA0EANgIcIAMgATYCFCADQdYMNgIQIANBIzYCDAyCAwsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQwlCyADQRI2AhwgAyAANgIMIAMgAUEBajYCFAyBAwsgA0Evai0AAEEBcUUNAQtBFyECDOYCC0EAIQIgA0EANgIcIAMgATYCFCADQeIXNgIQIANBGTYCDAz+AgsgAEE7Rw0AIAFBAWohAQwMC0EAIQIgA0EANgIcIAMgATYCFCADQZIYNgIQIANBAjYCDAz8AgsgAEEVRg0oQQAhAiADQQA2AhwgAyABNgIUIANB1gw2AhAgA0EjNgIMDPsCCyADQRQ2AhwgAyABNgIUIAMgADYCDAz6AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQz1AgsgA0EVNgIcIAMgADYCDCADIAFBAWo2AhQM+QILIAMoAgQhAEEAIQIgA0EANgIEIAMgACABEDQiAEUEQCABQQFqIQEM8wILIANBFzYCHCADIAA2AgwgAyABQQFqNgIUDPgCCyAAQRVGDSNBACECIANBADYCHCADIAE2AhQgA0HWDDYCECADQSM2AgwM9wILIAMoAgQhAEEAIQIgA0EANgIEIAMgACABEDQiAEUEQCABQQFqIQEMHQsgA0EZNgIcIAMgADYCDCADIAFBAWo2AhQM9gILIAMoAgQhAEEAIQIgA0EANgIEIAMgACABEDQiAEUEQCABQQFqIQEM7wILIANBGjYCHCADIAA2AgwgAyABQQFqNgIUDPUCCyAAQRVGDR9BACECIANBADYCHCADIAE2AhQgA0HQDzYCECADQSI2AgwM9AILIAMoAgQhACADQQA2AgQgAyAAIAEQMyIARQRAIAFBAWohAQwbCyADQRw2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIM8wILIAMoAgQhACADQQA2AgQgAyAAIAEQMyIARQRAIAFBAWohAQzrAgsgA0EdNgIcIAMgADYCDCADIAFBAWo2AhRBACECDPICCyAAQTtHDQEgAUEBaiEBC0EmIQIM1wILQQAhAiADQQA2AhwgAyABNgIUIANBnxU2AhAgA0EMNgIMDO8CCyABIARHBEADQCABLQAAQSBHDYQCIAQgAUEBaiIBRw0AC0EsIQIM7wILQSwhAgzuAgsgASAERgRAQTQhAgzuAgsCQAJAA0ACQCABLQAAQQprDgQCAAADAAsgBCABQQFqIgFHDQALQTQhAgzvAgsgAygCBCEAIANBADYCBCADIAAgARAxIgBFDZ8CIANBMjYCHCADIAE2AhQgAyAANgIMQQAhAgzuAgsgAygCBCEAIANBADYCBCADIAAgARAxIgBFBEAgAUEBaiEBDJ8CCyADQTI2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIM7QILIAEgBEcEQAJAA0AgAS0AAEEwayIAQf8BcUEKTwRAQTohAgzXAgsgAykDICILQpmz5syZs+bMGVYNASADIAtCCn4iCjcDICAKIACtQv8BgyILQn+FVg0BIAMgCiALfDcDICAEIAFBAWoiAUcNAAtBwAAhAgzuAgsgAygCBCEAIANBADYCBCADIAAgAUEBaiIBEDEiAA0XDOICC0HAACECDOwCCyABIARGBEBByQAhAgzsAgsCQANAAkAgAS0AAEEJaw4YAAKiAqICqQKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogIAogILIAQgAUEBaiIBRw0AC0HJACECDOwCCyABQQFqIQEgA0Evai0AAEEBcQ2lAiADQQA2AhwgAyABNgIUIANBlxA2AhAgA0EKNgIMQQAhAgzrAgsgASAERwRAA0AgAS0AAEEgRw0VIAQgAUEBaiIBRw0AC0H4ACECDOsCC0H4ACECDOoCCyADQQI6ACgMOAtBACECIANBADYCHCADQb8LNgIQIANBAjYCDCADIAFBAWo2AhQM6AILQQAhAgzOAgtBDSECDM0CC0ETIQIMzAILQRUhAgzLAgtBFiECDMoCC0EYIQIMyQILQRkhAgzIAgtBGiECDMcCC0EbIQIMxgILQRwhAgzFAgtBHSECDMQCC0EeIQIMwwILQR8hAgzCAgtBICECDMECC0EiIQIMwAILQSMhAgy/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/GQAAmxkAAHwUAABDEQAAcBgAAJUUAAAnFAAAGRQAANUSAADUGQAARBYAAPcQAEG5OwsBAQBB0DsL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBuj0LBAEAAAIAQdE9C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEG6PwsEAQAAAgBB0T8LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQbDBAAsNbG9zZWVlcC1hbGl2ZQBBycEACwEBAEHgwQAL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBycMACwEBAEHgwwAL5wEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAQfHFAAteAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBB0McACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQYDIAAsgcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQpTTQ0KDQoAQanIAAsFAQIAAQMAQcDIAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanKAAsFAQIAAQMAQcDKAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanMAAsEAQAAAQBBwcwAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEGpzgALBQECAAEDAEHAzgALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEGp0AALBQEBAAEBAEHA0AALAQEAQdrQAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQanSAAsFAQEAAQEAQcDSAAsBAQBBytIACwYCAAAAAAIAQeHSAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBoNQAC50BTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFVFRQQ0VUU1BBRFRQLw==";
96502
96798
  let wasmBuffer;
96503
96799
  Object.defineProperty(module, "exports", {
@@ -96515,7 +96811,7 @@ function requireLlhttp_simdWasm() {
96515
96811
  if (hasRequiredLlhttp_simdWasm) return llhttp_simdWasm.exports;
96516
96812
  hasRequiredLlhttp_simdWasm = 1;
96517
96813
  (function(module) {
96518
- const { Buffer: Buffer2 } = require$$0$6;
96814
+ const { Buffer: Buffer2 } = require$$0$7;
96519
96815
  const 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/GQAAmxkAAHwUAABDEQAAcBgAAJUUAAAnFAAAGRQAANUSAADUGQAARBYAAPcQAEG5OwsBAQBB0DsL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBuj0LBAEAAAIAQdE9C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEG6PwsEAQAAAgBB0T8LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQbDBAAsNbG9zZWVlcC1hbGl2ZQBBycEACwEBAEHgwQAL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBycMACwEBAEHgwwAL5wEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAQfHFAAteAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBB0McACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQYDIAAsgcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQpTTQ0KDQoAQanIAAsFAQIAAQMAQcDIAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanKAAsFAQIAAQMAQcDKAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanMAAsEAQAAAQBBwcwAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEGpzgALBQECAAEDAEHAzgALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEGp0AALBQEBAAEBAEHA0AALAQEAQdrQAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQanSAAsFAQEAAQEAQcDSAAsBAQBBytIACwYCAAAAAAIAQeHSAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBoNQAC50BTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFVFRQQ0VUU1BBRFRQLw==";
96520
96816
  let wasmBuffer;
96521
96817
  Object.defineProperty(module, "exports", {
@@ -96812,7 +97108,7 @@ var hasRequiredInfra;
96812
97108
  function requireInfra() {
96813
97109
  if (hasRequiredInfra) return infra;
96814
97110
  hasRequiredInfra = 1;
96815
- const assert2 = require$$0$2;
97111
+ const assert2 = require$$0$3;
96816
97112
  const { utf8DecodeBytes } = requireEncoding();
96817
97113
  function collectASequenceOfCodePoints(condition, input, position2) {
96818
97114
  let result = "";
@@ -96925,7 +97221,7 @@ var hasRequiredDataUrl;
96925
97221
  function requireDataUrl() {
96926
97222
  if (hasRequiredDataUrl) return dataUrl;
96927
97223
  hasRequiredDataUrl = 1;
96928
- const assert2 = require$$0$2;
97224
+ const assert2 = require$$0$3;
96929
97225
  const { forgivingBase64, collectASequenceOfCodePoints, collectASequenceOfCodePointsFast, isomorphicDecode, removeASCIIWhitespace, removeChars } = requireInfra();
96930
97226
  const encoder2 = new TextEncoder();
96931
97227
  const HTTP_TOKEN_CODEPOINTS = /^[-!#$%&'*+.^_|~A-Za-z0-9]+$/u;
@@ -97312,7 +97608,7 @@ var hasRequiredWebidl;
97312
97608
  function requireWebidl() {
97313
97609
  if (hasRequiredWebidl) return webidl_1;
97314
97610
  hasRequiredWebidl = 1;
97315
- const assert2 = require$$0$2;
97611
+ const assert2 = require$$0$3;
97316
97612
  const { types: types2, inspect: inspect2 } = require$$3;
97317
97613
  const { runtimeFeatures: runtimeFeatures2 } = requireRuntimeFeatures();
97318
97614
  const UNDEFINED2 = 1;
@@ -97450,7 +97746,7 @@ function requireWebidl() {
97450
97746
  lowerBound = 0;
97451
97747
  upperBound = Math.pow(2, bitLength) - 1;
97452
97748
  } else {
97453
- lowerBound = Math.pow(-2, bitLength) - 1;
97749
+ lowerBound = -Math.pow(2, bitLength - 1);
97454
97750
  upperBound = Math.pow(2, bitLength - 1) - 1;
97455
97751
  }
97456
97752
  let x2 = Number(V2);
@@ -97487,7 +97783,7 @@ function requireWebidl() {
97487
97783
  }
97488
97784
  x2 = webidl.util.IntegerPart(x2);
97489
97785
  x2 = x2 % Math.pow(2, bitLength);
97490
- if (signedness === "signed" && x2 >= Math.pow(2, bitLength) - 1) {
97786
+ if (signedness === "signed" && x2 >= Math.pow(2, bitLength - 1)) {
97491
97787
  return x2 - Math.pow(2, bitLength);
97492
97788
  }
97493
97789
  return x2;
@@ -97600,6 +97896,7 @@ function requireWebidl() {
97600
97896
  };
97601
97897
  };
97602
97898
  webidl.dictionaryConverter = function(converters) {
97899
+ converters.sort((a2, b2) => (a2.key > b2.key) - (a2.key < b2.key));
97603
97900
  return (dictionary, prefix, argument) => {
97604
97901
  const dict = {};
97605
97902
  if (dictionary != null && webidl.util.Type(dictionary) !== OBJECT2) {
@@ -97915,14 +98212,14 @@ function requireUtil$4() {
97915
98212
  var _zlibOptions;
97916
98213
  if (hasRequiredUtil$4) return util$4;
97917
98214
  hasRequiredUtil$4 = 1;
97918
- const { Transform: Transform2 } = require$$0$3;
98215
+ const { Transform: Transform2 } = require$$0$4;
97919
98216
  const zlib = require$$3$1;
97920
98217
  const { redirectStatusSet, referrerPolicyTokens, badPortsSet } = requireConstants$3();
97921
98218
  const { getGlobalOrigin } = requireGlobal$1();
97922
98219
  const { collectAnHTTPQuotedString, parseMIMEType } = requireDataUrl();
97923
98220
  const { performance: performance2 } = require$$5$2;
97924
98221
  const { ReadableStreamFrom, isValidHTTPToken, normalizedMethodRecordsBase } = requireUtil$5();
97925
- const assert2 = require$$0$2;
98222
+ const assert2 = require$$0$3;
97926
98223
  const { isUint8Array: isUint8Array2 } = require$$8;
97927
98224
  const { webidl } = requireWebidl();
97928
98225
  const { isomorphicEncode, collectASequenceOfCodePoints, removeChars } = requireInfra();
@@ -98617,7 +98914,7 @@ function requireUtil$4() {
98617
98914
  return !!(url2.username || url2.password);
98618
98915
  }
98619
98916
  function isTraversableNavigable(navigable) {
98620
- return true;
98917
+ return navigable != null && navigable !== "client" && navigable !== "no-traversable";
98621
98918
  }
98622
98919
  class EnvironmentSettingsObjectBase {
98623
98920
  constructor() {
@@ -98862,11 +99159,11 @@ function requireFormdataParser() {
98862
99159
  const { HTTP_TOKEN_CODEPOINTS } = requireDataUrl();
98863
99160
  const { makeEntry } = requireFormdata();
98864
99161
  const { webidl } = requireWebidl();
98865
- const assert2 = require$$0$2;
99162
+ const assert2 = require$$0$3;
98866
99163
  const { isomorphicDecode } = requireInfra();
98867
- const { utf8DecodeBytes } = requireEncoding();
98868
99164
  const dd = Buffer.from("--");
98869
99165
  const decoder2 = new TextDecoder();
99166
+ const decoderIgnoreBOM = new TextDecoder("utf-8", { ignoreBOM: true });
98870
99167
  function isAsciiString(chars2) {
98871
99168
  for (let i = 0; i < chars2.length; ++i) {
98872
99169
  if ((chars2.charCodeAt(i) & -128) !== 0) {
@@ -98943,7 +99240,7 @@ function requireFormdataParser() {
98943
99240
  }
98944
99241
  value = new File([body2], filename, { type: contentType });
98945
99242
  } else {
98946
- value = utf8DecodeBytes(Buffer.from(body2));
99243
+ value = decoderIgnoreBOM.decode(Buffer.from(body2));
98947
99244
  }
98948
99245
  assert2(webidl.is.USVString(name2));
98949
99246
  assert2(typeof value === "string" && webidl.is.USVString(value) || webidl.is.File(value));
@@ -99020,7 +99317,7 @@ function requireFormdataParser() {
99020
99317
  );
99021
99318
  value = decoder2.decode(tokenValue);
99022
99319
  }
99023
- return { name: attrNameStr, value };
99320
+ return { name: attrNameStr, value, extended: isExtended };
99024
99321
  }
99025
99322
  function parseMultipartFormDataHeaders(input, position2) {
99026
99323
  let name2 = null;
@@ -99055,6 +99352,7 @@ function requireFormdataParser() {
99055
99352
  switch (bufferToLowerCasedHeaderName(headerName)) {
99056
99353
  case "content-disposition": {
99057
99354
  name2 = filename = null;
99355
+ let filenameIsExtended = false;
99058
99356
  const dispositionType = collectASequenceOfBytes(
99059
99357
  (char) => isToken(char),
99060
99358
  input,
@@ -99063,7 +99361,7 @@ function requireFormdataParser() {
99063
99361
  if (dispositionType.toString("ascii").toLowerCase() !== "form-data") {
99064
99362
  throw parsingError("expected form-data for content-disposition header");
99065
99363
  }
99066
- while (position2.position < input.length && input[position2.position] !== 13 && input[position2.position + 1] !== 10) {
99364
+ while (position2.position < input.length && (input[position2.position] !== 13 || input[position2.position + 1] !== 10)) {
99067
99365
  const attribute = parseContentDispositionAttribute(input, position2);
99068
99366
  if (!attribute) {
99069
99367
  break;
@@ -99071,7 +99369,12 @@ function requireFormdataParser() {
99071
99369
  if (attribute.name === "name") {
99072
99370
  name2 = attribute.value;
99073
99371
  } else if (attribute.name === "filename") {
99074
- filename = attribute.value;
99372
+ if (attribute.extended) {
99373
+ filename = attribute.value;
99374
+ filenameIsExtended = true;
99375
+ } else if (!filenameIsExtended) {
99376
+ filename = attribute.value;
99377
+ }
99075
99378
  }
99076
99379
  }
99077
99380
  if (name2 === null) {
@@ -99107,7 +99410,7 @@ function requireFormdataParser() {
99107
99410
  );
99108
99411
  }
99109
99412
  }
99110
- if (input[position2.position] !== 13 && input[position2.position + 1] !== 10) {
99413
+ if (input[position2.position] !== 13 || input[position2.position + 1] !== 10) {
99111
99414
  throw parsingError("expected CRLF");
99112
99415
  } else {
99113
99416
  position2.position += 2;
@@ -99210,8 +99513,8 @@ function requireBody() {
99210
99513
  } = requireUtil$4();
99211
99514
  const { FormData, setFormDataState } = requireFormdata();
99212
99515
  const { webidl } = requireWebidl();
99213
- const assert2 = require$$0$2;
99214
- const { isErrored, isDisturbed } = require$$0$3;
99516
+ const assert2 = require$$0$3;
99517
+ const { isErrored, isDisturbed } = require$$0$4;
99215
99518
  const { isUint8Array: isUint8Array2 } = require$$8;
99216
99519
  const { serializeAMimeType } = requireDataUrl();
99217
99520
  const { multipartFormDataParser } = requireFormdataParser();
@@ -99485,7 +99788,7 @@ var hasRequiredClientH1;
99485
99788
  function requireClientH1() {
99486
99789
  if (hasRequiredClientH1) return clientH1;
99487
99790
  hasRequiredClientH1 = 1;
99488
- const assert2 = require$$0$2;
99791
+ const assert2 = require$$0$3;
99489
99792
  const util2 = requireUtil$5();
99490
99793
  const { channels } = requireDiagnostics();
99491
99794
  const timers2 = requireTimers();
@@ -99545,9 +99848,9 @@ function requireClientH1() {
99545
99848
  let mod;
99546
99849
  let useWasmSIMD = process.arch !== "ppc64";
99547
99850
  if (process.env.UNDICI_NO_WASM_SIMD === "1") {
99548
- useWasmSIMD = true;
99549
- } else if (process.env.UNDICI_NO_WASM_SIMD === "0") {
99550
99851
  useWasmSIMD = false;
99852
+ } else if (process.env.UNDICI_NO_WASM_SIMD === "0") {
99853
+ useWasmSIMD = true;
99551
99854
  }
99552
99855
  if (useWasmSIMD) {
99553
99856
  try {
@@ -99665,6 +99968,7 @@ function requireClientH1() {
99665
99968
  this.client = client2;
99666
99969
  this.socket = socket;
99667
99970
  this.timeout = null;
99971
+ this.timeoutWeakRef = new WeakRef(this);
99668
99972
  this.timeoutValue = null;
99669
99973
  this.timeoutType = null;
99670
99974
  this.statusCode = 0;
@@ -99691,9 +99995,9 @@ function requireClientH1() {
99691
99995
  }
99692
99996
  if (delay) {
99693
99997
  if (type & USE_FAST_TIMER) {
99694
- this.timeout = timers2.setFastTimeout(onParserTimeout, delay, new WeakRef(this));
99998
+ this.timeout = timers2.setFastTimeout(onParserTimeout, delay, this.timeoutWeakRef);
99695
99999
  } else {
99696
- this.timeout = setTimeout(onParserTimeout, delay, new WeakRef(this));
100000
+ this.timeout = setTimeout(onParserTimeout, delay, this.timeoutWeakRef);
99697
100001
  (_a3 = this.timeout) == null ? void 0 : _a3.unref();
99698
100002
  }
99699
100003
  }
@@ -99765,19 +100069,47 @@ function requireClientH1() {
99765
100069
  this.paused = true;
99766
100070
  socket.unshift(data);
99767
100071
  } else {
99768
- const ptr = llhttp.llhttp_get_error_reason(this.ptr);
99769
- let message2 = "";
99770
- if (ptr) {
99771
- const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0);
99772
- message2 = "Response does not match the HTTP/1.1 protocol (" + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + ")";
99773
- }
99774
- throw new HTTPParserError(message2, constants2.ERROR[ret], data);
100072
+ throw this.createError(ret, data);
99775
100073
  }
99776
100074
  }
99777
100075
  } catch (err) {
99778
100076
  util2.destroy(socket, err);
99779
100077
  }
99780
100078
  }
100079
+ finish() {
100080
+ assert2(currentParser === null);
100081
+ assert2(this.ptr != null);
100082
+ assert2(!this.paused);
100083
+ const { llhttp } = this;
100084
+ let ret;
100085
+ try {
100086
+ currentParser = this;
100087
+ ret = llhttp.llhttp_finish(this.ptr);
100088
+ } finally {
100089
+ currentParser = null;
100090
+ }
100091
+ if (ret === constants2.ERROR.OK) {
100092
+ return null;
100093
+ }
100094
+ if (ret === constants2.ERROR.PAUSED || ret === constants2.ERROR.PAUSED_UPGRADE) {
100095
+ this.paused = true;
100096
+ return null;
100097
+ }
100098
+ return this.createError(ret, EMPTY_BUF);
100099
+ }
100100
+ createError(ret, data) {
100101
+ const { llhttp, contentLength, bytesRead } = this;
100102
+ if (contentLength && bytesRead !== parseInt(contentLength, 10)) {
100103
+ return new ResponseContentLengthMismatchError();
100104
+ }
100105
+ const ptr = llhttp.llhttp_get_error_reason(this.ptr);
100106
+ let message2 = "";
100107
+ if (ptr) {
100108
+ const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0);
100109
+ message2 = "Response does not match the HTTP/1.1 protocol (" + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + ")";
100110
+ }
100111
+ return new HTTPParserError(message2, constants2.ERROR[ret], data);
100112
+ }
99781
100113
  destroy() {
99782
100114
  assert2(currentParser === null);
99783
100115
  assert2(this.ptr != null);
@@ -100154,7 +100486,11 @@ function requireClientH1() {
100154
100486
  assert2(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID");
100155
100487
  const parser = this[kParser];
100156
100488
  if (err.code === "ECONNRESET" && parser.statusCode && !parser.shouldKeepAlive) {
100157
- parser.onMessageComplete();
100489
+ const parserErr = parser.finish();
100490
+ if (parserErr) {
100491
+ this[kError] = parserErr;
100492
+ this[kClient][kOnError](parserErr);
100493
+ }
100158
100494
  return;
100159
100495
  }
100160
100496
  this[kError] = err;
@@ -100167,7 +100503,10 @@ function requireClientH1() {
100167
100503
  function onHttpSocketEnd() {
100168
100504
  const parser = this[kParser];
100169
100505
  if (parser.statusCode && !parser.shouldKeepAlive) {
100170
- parser.onMessageComplete();
100506
+ const parserErr = parser.finish();
100507
+ if (parserErr) {
100508
+ util2.destroy(this, parserErr);
100509
+ }
100171
100510
  return;
100172
100511
  }
100173
100512
  util2.destroy(this, new SocketError("other side closed", util2.getSocketInfo(this)));
@@ -100176,7 +100515,7 @@ function requireClientH1() {
100176
100515
  const parser = this[kParser];
100177
100516
  if (parser) {
100178
100517
  if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) {
100179
- parser.onMessageComplete();
100518
+ this[kError] = parser.finish() || this[kError];
100180
100519
  }
100181
100520
  this[kParser].destroy();
100182
100521
  this[kParser] = null;
@@ -100300,6 +100639,9 @@ function requireClientH1() {
100300
100639
  if (blocking) {
100301
100640
  socket[kBlocking] = true;
100302
100641
  }
100642
+ if (socket.setTypeOfService) {
100643
+ socket.setTypeOfService(request2.typeOfService);
100644
+ }
100303
100645
  let header = `${method} ${path2} HTTP/1.1\r
100304
100646
  `;
100305
100647
  if (typeof host === "string") {
@@ -100650,8 +100992,8 @@ var hasRequiredClientH2;
100650
100992
  function requireClientH2() {
100651
100993
  if (hasRequiredClientH2) return clientH2;
100652
100994
  hasRequiredClientH2 = 1;
100653
- const assert2 = require$$0$2;
100654
- const { pipeline } = require$$0$3;
100995
+ const assert2 = require$$0$3;
100996
+ const { pipeline } = require$$0$4;
100655
100997
  const util2 = requireUtil$5();
100656
100998
  const {
100657
100999
  RequestContentLengthMismatchError,
@@ -101130,11 +101472,14 @@ function requireClientH2() {
101130
101472
  if (request2.onHeaders(Number(statusCode), parseH2Headers(realHeaders), stream.resume.bind(stream), "") === false) {
101131
101473
  stream.pause();
101132
101474
  }
101133
- });
101134
- stream.on("data", (chunk) => {
101135
- if (request2.onData(chunk) === false) {
101136
- stream.pause();
101137
- }
101475
+ stream.on("data", (chunk) => {
101476
+ if (request2.aborted || request2.completed) {
101477
+ return;
101478
+ }
101479
+ if (request2.onData(chunk) === false) {
101480
+ stream.pause();
101481
+ }
101482
+ });
101138
101483
  });
101139
101484
  stream.once("end", () => {
101140
101485
  stream.removeAllListeners("data");
@@ -101182,6 +101527,7 @@ function requireClientH2() {
101182
101527
  if (request2.aborted || request2.completed) {
101183
101528
  return;
101184
101529
  }
101530
+ stream.removeAllListeners("data");
101185
101531
  request2.onComplete(trailers);
101186
101532
  });
101187
101533
  return true;
@@ -101373,8 +101719,8 @@ var hasRequiredClient;
101373
101719
  function requireClient() {
101374
101720
  if (hasRequiredClient) return client;
101375
101721
  hasRequiredClient = 1;
101376
- const assert2 = require$$0$2;
101377
- const net2 = require$$0$4;
101722
+ const assert2 = require$$0$3;
101723
+ const net2 = require$$0$5;
101378
101724
  const http = require$$2$1;
101379
101725
  const util2 = requireUtil$5();
101380
101726
  const { ClientStats } = requireStats();
@@ -101568,6 +101914,13 @@ function requireClient() {
101568
101914
  ...typeof autoSelectFamily === "boolean" ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0,
101569
101915
  ...connect3
101570
101916
  });
101917
+ } else {
101918
+ const customConnect = connect3;
101919
+ connect3 = (opts, callback) => customConnect({
101920
+ ...opts,
101921
+ ...socketPath != null ? { socketPath } : null,
101922
+ ...allowH2 != null ? { allowH2 } : null
101923
+ }, callback);
101571
101924
  }
101572
101925
  this[kUrl] = util2.parseOrigin(url2);
101573
101926
  this[kConnector] = connect3;
@@ -101718,57 +102071,62 @@ function requireClient() {
101718
102071
  connector: client2[kConnector]
101719
102072
  });
101720
102073
  }
101721
- client2[kConnector]({
101722
- host,
101723
- hostname: hostname2,
101724
- protocol,
101725
- port,
101726
- servername: client2[kServerName],
101727
- localAddress: client2[kLocalAddress]
101728
- }, (err, socket) => {
101729
- var _a4;
101730
- if (err) {
101731
- handleConnectError(client2, err, { host, hostname: hostname2, protocol, port });
101732
- client2[kResume]();
101733
- return;
101734
- }
101735
- if (client2.destroyed) {
101736
- util2.destroy(socket.on("error", noop3), new ClientDestroyedError());
101737
- client2[kResume]();
101738
- return;
101739
- }
101740
- assert2(socket);
101741
- try {
101742
- client2[kHTTPContext] = socket.alpnProtocol === "h2" ? connectH2(client2, socket) : connectH1(client2, socket);
101743
- } catch (err2) {
101744
- socket.destroy().on("error", noop3);
101745
- handleConnectError(client2, err2, { host, hostname: hostname2, protocol, port });
102074
+ try {
102075
+ client2[kConnector]({
102076
+ host,
102077
+ hostname: hostname2,
102078
+ protocol,
102079
+ port,
102080
+ servername: client2[kServerName],
102081
+ localAddress: client2[kLocalAddress]
102082
+ }, (err, socket) => {
102083
+ var _a4;
102084
+ if (err) {
102085
+ handleConnectError(client2, err, { host, hostname: hostname2, protocol, port });
102086
+ client2[kResume]();
102087
+ return;
102088
+ }
102089
+ if (client2.destroyed) {
102090
+ util2.destroy(socket.on("error", noop3), new ClientDestroyedError());
102091
+ client2[kResume]();
102092
+ return;
102093
+ }
102094
+ assert2(socket);
102095
+ try {
102096
+ client2[kHTTPContext] = socket.alpnProtocol === "h2" ? connectH2(client2, socket) : connectH1(client2, socket);
102097
+ } catch (err2) {
102098
+ socket.destroy().on("error", noop3);
102099
+ handleConnectError(client2, err2, { host, hostname: hostname2, protocol, port });
102100
+ client2[kResume]();
102101
+ return;
102102
+ }
102103
+ client2[kConnecting] = false;
102104
+ socket[kCounter] = 0;
102105
+ socket[kMaxRequests] = client2[kMaxRequests];
102106
+ socket[kClient] = client2;
102107
+ socket[kError] = null;
102108
+ if (channels.connected.hasSubscribers) {
102109
+ channels.connected.publish({
102110
+ connectParams: {
102111
+ host,
102112
+ hostname: hostname2,
102113
+ protocol,
102114
+ port,
102115
+ version: (_a4 = client2[kHTTPContext]) == null ? void 0 : _a4.version,
102116
+ servername: client2[kServerName],
102117
+ localAddress: client2[kLocalAddress]
102118
+ },
102119
+ connector: client2[kConnector],
102120
+ socket
102121
+ });
102122
+ }
102123
+ client2.emit("connect", client2[kUrl], [client2]);
101746
102124
  client2[kResume]();
101747
- return;
101748
- }
101749
- client2[kConnecting] = false;
101750
- socket[kCounter] = 0;
101751
- socket[kMaxRequests] = client2[kMaxRequests];
101752
- socket[kClient] = client2;
101753
- socket[kError] = null;
101754
- if (channels.connected.hasSubscribers) {
101755
- channels.connected.publish({
101756
- connectParams: {
101757
- host,
101758
- hostname: hostname2,
101759
- protocol,
101760
- port,
101761
- version: (_a4 = client2[kHTTPContext]) == null ? void 0 : _a4.version,
101762
- servername: client2[kServerName],
101763
- localAddress: client2[kLocalAddress]
101764
- },
101765
- connector: client2[kConnector],
101766
- socket
101767
- });
101768
- }
101769
- client2.emit("connect", client2[kUrl], [client2]);
102125
+ });
102126
+ } catch (err) {
102127
+ handleConnectError(client2, err, { host, hostname: hostname2, protocol, port });
101770
102128
  client2[kResume]();
101771
- });
102129
+ }
101772
102130
  }
101773
102131
  function handleConnectError(client2, err, { host, hostname: hostname2, protocol, port }) {
101774
102132
  var _a3;
@@ -101852,6 +102210,9 @@ function requireClient() {
101852
102210
  return;
101853
102211
  }
101854
102212
  const request2 = client2[kQueue][client2[kPendingIdx]];
102213
+ if (request2 === null) {
102214
+ return;
102215
+ }
101855
102216
  if (client2[kUrl].protocol === "https:" && client2[kServerName] !== request2.servername) {
101856
102217
  if (client2[kRunning] > 0) {
101857
102218
  return;
@@ -102202,7 +102563,7 @@ function requirePool() {
102202
102563
  super();
102203
102564
  this[kConnections] = connections || null;
102204
102565
  this[kUrl] = util2.parseOrigin(origin);
102205
- this[kOptions] = { ...util2.deepClone(options), connect: connect2, allowH2, clientTtl };
102566
+ this[kOptions] = { ...util2.deepClone(options), connect: connect2, allowH2, clientTtl, socketPath };
102206
102567
  this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0;
102207
102568
  this[kFactory] = factory;
102208
102569
  this.on("connect", (origin2, targets) => {
@@ -102259,7 +102620,7 @@ function requireBalancedPool() {
102259
102620
  } = requirePoolBase();
102260
102621
  const Pool = requirePool();
102261
102622
  const { kUrl } = requireSymbols();
102262
- const { parseOrigin } = requireUtil$5();
102623
+ const util2 = requireUtil$5();
102263
102624
  const kFactory = Symbol("factory");
102264
102625
  const kOptions = Symbol("options");
102265
102626
  const kGreatestCommonDivisor = Symbol("kGreatestCommonDivisor");
@@ -102286,7 +102647,8 @@ function requireBalancedPool() {
102286
102647
  throw new InvalidArgumentError("factory must be a function.");
102287
102648
  }
102288
102649
  super();
102289
- this[kOptions] = opts;
102650
+ this[kOptions] = { ...util2.deepClone(opts) };
102651
+ this[kOptions].interceptors = opts.interceptors ? { ...opts.interceptors } : void 0;
102290
102652
  this[kIndex] = -1;
102291
102653
  this[kCurrentWeight] = 0;
102292
102654
  this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100;
@@ -102301,11 +102663,11 @@ function requireBalancedPool() {
102301
102663
  this._updateBalancedPoolStats();
102302
102664
  }
102303
102665
  addUpstream(upstream) {
102304
- const upstreamOrigin = parseOrigin(upstream).origin;
102666
+ const upstreamOrigin = util2.parseOrigin(upstream).origin;
102305
102667
  if (this[kClients].find((pool3) => pool3[kUrl].origin === upstreamOrigin && pool3.closed !== true && pool3.destroyed !== true)) {
102306
102668
  return this;
102307
102669
  }
102308
- const pool2 = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions]));
102670
+ const pool2 = this[kFactory](upstreamOrigin, this[kOptions]);
102309
102671
  this[kAddClient](pool2);
102310
102672
  pool2.on("connect", () => {
102311
102673
  pool2[kWeight] = Math.min(this[kMaxWeightPerServer], pool2[kWeight] + this[kErrorPenalty]);
@@ -102335,7 +102697,7 @@ function requireBalancedPool() {
102335
102697
  this[kGreatestCommonDivisor] = result;
102336
102698
  }
102337
102699
  removeUpstream(upstream) {
102338
- const upstreamOrigin = parseOrigin(upstream).origin;
102700
+ const upstreamOrigin = util2.parseOrigin(upstream).origin;
102339
102701
  const pool2 = this[kClients].find((pool3) => pool3[kUrl].origin === upstreamOrigin && pool3.closed !== true && pool3.destroyed !== true);
102340
102702
  if (pool2) {
102341
102703
  this[kRemoveClient](pool2);
@@ -102343,7 +102705,7 @@ function requireBalancedPool() {
102343
102705
  return this;
102344
102706
  }
102345
102707
  getUpstream(upstream) {
102346
- const upstreamOrigin = parseOrigin(upstream).origin;
102708
+ const upstreamOrigin = util2.parseOrigin(upstream).origin;
102347
102709
  return this[kClients].find((pool2) => pool2[kUrl].origin === upstreamOrigin && pool2.closed !== true && pool2.destroyed !== true);
102348
102710
  }
102349
102711
  get upstreams() {
@@ -102452,7 +102814,7 @@ function requireRoundRobinPool() {
102452
102814
  super();
102453
102815
  this[kConnections] = connections || null;
102454
102816
  this[kUrl] = util2.parseOrigin(origin);
102455
- this[kOptions] = { ...util2.deepClone(options), connect: connect2, allowH2, clientTtl };
102817
+ this[kOptions] = { ...util2.deepClone(options), connect: connect2, allowH2, clientTtl, socketPath };
102456
102818
  this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0;
102457
102819
  this[kFactory] = factory;
102458
102820
  this[kIndex] = -1;
@@ -102637,6 +102999,671 @@ function requireAgent() {
102637
102999
  agent = Agent;
102638
103000
  return agent;
102639
103001
  }
103002
+ var socks5Utils;
103003
+ var hasRequiredSocks5Utils;
103004
+ function requireSocks5Utils() {
103005
+ if (hasRequiredSocks5Utils) return socks5Utils;
103006
+ hasRequiredSocks5Utils = 1;
103007
+ const { Buffer: Buffer2 } = require$$0$7;
103008
+ const net2 = require$$0$5;
103009
+ const { InvalidArgumentError } = requireErrors();
103010
+ function parseAddress(address) {
103011
+ if (net2.isIPv4(address)) {
103012
+ const parts = address.split(".").map(Number);
103013
+ return {
103014
+ type: 1,
103015
+ // IPv4
103016
+ buffer: Buffer2.from(parts)
103017
+ };
103018
+ }
103019
+ if (net2.isIPv6(address)) {
103020
+ return {
103021
+ type: 4,
103022
+ // IPv6
103023
+ buffer: parseIPv6(address)
103024
+ };
103025
+ }
103026
+ const domainBuffer = Buffer2.from(address, "utf8");
103027
+ if (domainBuffer.length > 255) {
103028
+ throw new InvalidArgumentError("Domain name too long (max 255 bytes)");
103029
+ }
103030
+ return {
103031
+ type: 3,
103032
+ // Domain
103033
+ buffer: Buffer2.concat([Buffer2.from([domainBuffer.length]), domainBuffer])
103034
+ };
103035
+ }
103036
+ function parseIPv6(address) {
103037
+ const buffer = Buffer2.alloc(16);
103038
+ const doubleColonIndex = address.indexOf("::");
103039
+ if (doubleColonIndex !== -1) {
103040
+ const before = address.slice(0, doubleColonIndex);
103041
+ const after = address.slice(doubleColonIndex + 2);
103042
+ const beforeParts = before === "" ? [] : before.split(":");
103043
+ const afterParts = after === "" ? [] : after.split(":");
103044
+ let bufferIndex = 0;
103045
+ for (const part of beforeParts) {
103046
+ buffer.writeUInt16BE(parseInt(part, 16), bufferIndex);
103047
+ bufferIndex += 2;
103048
+ }
103049
+ bufferIndex = 16 - afterParts.length * 2;
103050
+ for (const part of afterParts) {
103051
+ buffer.writeUInt16BE(parseInt(part, 16), bufferIndex);
103052
+ bufferIndex += 2;
103053
+ }
103054
+ } else {
103055
+ const parts = address.split(":");
103056
+ for (let i = 0; i < parts.length; i++) {
103057
+ buffer.writeUInt16BE(parseInt(parts[i], 16), i * 2);
103058
+ }
103059
+ }
103060
+ return buffer;
103061
+ }
103062
+ function buildAddressBuffer(type, addressBuffer, port) {
103063
+ const portBuffer = Buffer2.allocUnsafe(2);
103064
+ portBuffer.writeUInt16BE(port, 0);
103065
+ return Buffer2.concat([
103066
+ Buffer2.from([type]),
103067
+ addressBuffer,
103068
+ portBuffer
103069
+ ]);
103070
+ }
103071
+ function parseResponseAddress(buffer, offset2 = 0) {
103072
+ if (buffer.length < offset2 + 1) {
103073
+ throw new InvalidArgumentError("Buffer too small to contain address type");
103074
+ }
103075
+ const addressType = buffer[offset2];
103076
+ let address;
103077
+ let currentOffset = offset2 + 1;
103078
+ switch (addressType) {
103079
+ case 1: {
103080
+ if (buffer.length < currentOffset + 6) {
103081
+ throw new InvalidArgumentError("Buffer too small for IPv4 address");
103082
+ }
103083
+ address = Array.from(buffer.subarray(currentOffset, currentOffset + 4)).join(".");
103084
+ currentOffset += 4;
103085
+ break;
103086
+ }
103087
+ case 3: {
103088
+ if (buffer.length < currentOffset + 1) {
103089
+ throw new InvalidArgumentError("Buffer too small for domain length");
103090
+ }
103091
+ const domainLength = buffer[currentOffset];
103092
+ currentOffset += 1;
103093
+ if (buffer.length < currentOffset + domainLength + 2) {
103094
+ throw new InvalidArgumentError("Buffer too small for domain address");
103095
+ }
103096
+ address = buffer.subarray(currentOffset, currentOffset + domainLength).toString("utf8");
103097
+ currentOffset += domainLength;
103098
+ break;
103099
+ }
103100
+ case 4: {
103101
+ if (buffer.length < currentOffset + 18) {
103102
+ throw new InvalidArgumentError("Buffer too small for IPv6 address");
103103
+ }
103104
+ const parts = [];
103105
+ for (let i = 0; i < 8; i++) {
103106
+ const value = buffer.readUInt16BE(currentOffset + i * 2);
103107
+ parts.push(value.toString(16));
103108
+ }
103109
+ address = parts.join(":");
103110
+ currentOffset += 16;
103111
+ break;
103112
+ }
103113
+ default:
103114
+ throw new InvalidArgumentError(`Invalid address type: ${addressType}`);
103115
+ }
103116
+ if (buffer.length < currentOffset + 2) {
103117
+ throw new InvalidArgumentError("Buffer too small for port");
103118
+ }
103119
+ const port = buffer.readUInt16BE(currentOffset);
103120
+ currentOffset += 2;
103121
+ return {
103122
+ address,
103123
+ port,
103124
+ bytesRead: currentOffset - offset2
103125
+ };
103126
+ }
103127
+ function createReplyError(replyCode) {
103128
+ const messages = {
103129
+ 1: "General SOCKS server failure",
103130
+ 2: "Connection not allowed by ruleset",
103131
+ 3: "Network unreachable",
103132
+ 4: "Host unreachable",
103133
+ 5: "Connection refused",
103134
+ 6: "TTL expired",
103135
+ 7: "Command not supported",
103136
+ 8: "Address type not supported"
103137
+ };
103138
+ const message2 = messages[replyCode] || `Unknown SOCKS5 error code: ${replyCode}`;
103139
+ const error2 = new Error(message2);
103140
+ error2.code = `SOCKS5_${replyCode}`;
103141
+ return error2;
103142
+ }
103143
+ socks5Utils = {
103144
+ parseAddress,
103145
+ parseIPv6,
103146
+ buildAddressBuffer,
103147
+ parseResponseAddress,
103148
+ createReplyError
103149
+ };
103150
+ return socks5Utils;
103151
+ }
103152
+ var socks5Client;
103153
+ var hasRequiredSocks5Client;
103154
+ function requireSocks5Client() {
103155
+ if (hasRequiredSocks5Client) return socks5Client;
103156
+ hasRequiredSocks5Client = 1;
103157
+ const { EventEmitter: EventEmitter2 } = require$$0$2;
103158
+ const { Buffer: Buffer2 } = require$$0$7;
103159
+ const { InvalidArgumentError, Socks5ProxyError } = requireErrors();
103160
+ const { debuglog } = require$$3;
103161
+ const { parseAddress } = requireSocks5Utils();
103162
+ const debug = debuglog("undici:socks5");
103163
+ const EMPTY_BUFFER = Buffer2.alloc(0);
103164
+ const SOCKS_VERSION = 5;
103165
+ const AUTH_METHODS = {
103166
+ NO_AUTH: 0,
103167
+ GSSAPI: 1,
103168
+ USERNAME_PASSWORD: 2,
103169
+ NO_ACCEPTABLE: 255
103170
+ };
103171
+ const COMMANDS = {
103172
+ CONNECT: 1,
103173
+ BIND: 2,
103174
+ UDP_ASSOCIATE: 3
103175
+ };
103176
+ const ADDRESS_TYPES = {
103177
+ IPV4: 1,
103178
+ DOMAIN: 3,
103179
+ IPV6: 4
103180
+ };
103181
+ const REPLY_CODES = {
103182
+ SUCCEEDED: 0,
103183
+ GENERAL_FAILURE: 1,
103184
+ CONNECTION_NOT_ALLOWED: 2,
103185
+ NETWORK_UNREACHABLE: 3,
103186
+ HOST_UNREACHABLE: 4,
103187
+ CONNECTION_REFUSED: 5,
103188
+ TTL_EXPIRED: 6,
103189
+ COMMAND_NOT_SUPPORTED: 7,
103190
+ ADDRESS_TYPE_NOT_SUPPORTED: 8
103191
+ };
103192
+ const STATES = {
103193
+ INITIAL: "initial",
103194
+ HANDSHAKING: "handshaking",
103195
+ AUTHENTICATING: "authenticating",
103196
+ CONNECTING: "connecting",
103197
+ CONNECTED: "connected",
103198
+ ERROR: "error",
103199
+ CLOSED: "closed"
103200
+ };
103201
+ class Socks5Client extends EventEmitter2 {
103202
+ constructor(socket, options = {}) {
103203
+ super();
103204
+ if (!socket) {
103205
+ throw new InvalidArgumentError("socket is required");
103206
+ }
103207
+ this.socket = socket;
103208
+ this.options = options;
103209
+ this.state = STATES.INITIAL;
103210
+ this.buffer = EMPTY_BUFFER;
103211
+ this.onSocketData = this.onData.bind(this);
103212
+ this.onSocketError = this.onError.bind(this);
103213
+ this.onSocketClose = this.onClose.bind(this);
103214
+ this.authMethods = [];
103215
+ if (options.username && options.password) {
103216
+ this.authMethods.push(AUTH_METHODS.USERNAME_PASSWORD);
103217
+ }
103218
+ this.authMethods.push(AUTH_METHODS.NO_AUTH);
103219
+ this.socket.on("data", this.onSocketData);
103220
+ this.socket.on("error", this.onSocketError);
103221
+ this.socket.on("close", this.onSocketClose);
103222
+ }
103223
+ /**
103224
+ * Handle incoming data from the socket
103225
+ */
103226
+ onData(data) {
103227
+ debug("received data", data.length, "bytes in state", this.state);
103228
+ this.buffer = Buffer2.concat([this.buffer, data]);
103229
+ try {
103230
+ switch (this.state) {
103231
+ case STATES.HANDSHAKING:
103232
+ this.handleHandshakeResponse();
103233
+ break;
103234
+ case STATES.AUTHENTICATING:
103235
+ this.handleAuthResponse();
103236
+ break;
103237
+ case STATES.CONNECTING:
103238
+ this.handleConnectResponse();
103239
+ break;
103240
+ }
103241
+ } catch (err) {
103242
+ this.onError(err);
103243
+ }
103244
+ }
103245
+ /**
103246
+ * Handle socket errors
103247
+ */
103248
+ onError(err) {
103249
+ debug("socket error", err);
103250
+ this.state = STATES.ERROR;
103251
+ this.emit("error", err);
103252
+ this.destroy();
103253
+ }
103254
+ /**
103255
+ * Handle socket close
103256
+ */
103257
+ onClose() {
103258
+ debug("socket closed");
103259
+ this.state = STATES.CLOSED;
103260
+ this.emit("close");
103261
+ }
103262
+ /**
103263
+ * Destroy the client and underlying socket
103264
+ */
103265
+ destroy() {
103266
+ if (this.socket && !this.socket.destroyed) {
103267
+ this.socket.destroy();
103268
+ }
103269
+ }
103270
+ /**
103271
+ * Start the SOCKS5 handshake
103272
+ */
103273
+ handshake() {
103274
+ if (this.state !== STATES.INITIAL) {
103275
+ throw new InvalidArgumentError("Handshake already started");
103276
+ }
103277
+ debug("starting handshake with", this.authMethods.length, "auth methods");
103278
+ this.state = STATES.HANDSHAKING;
103279
+ const request2 = Buffer2.alloc(2 + this.authMethods.length);
103280
+ request2[0] = SOCKS_VERSION;
103281
+ request2[1] = this.authMethods.length;
103282
+ this.authMethods.forEach((method, i) => {
103283
+ request2[2 + i] = method;
103284
+ });
103285
+ this.socket.write(request2);
103286
+ }
103287
+ /**
103288
+ * Handle handshake response from server
103289
+ */
103290
+ handleHandshakeResponse() {
103291
+ if (this.buffer.length < 2) {
103292
+ return;
103293
+ }
103294
+ const version2 = this.buffer[0];
103295
+ const method = this.buffer[1];
103296
+ if (version2 !== SOCKS_VERSION) {
103297
+ throw new Socks5ProxyError(`Invalid SOCKS version: ${version2}`, "UND_ERR_SOCKS5_VERSION");
103298
+ }
103299
+ if (method === AUTH_METHODS.NO_ACCEPTABLE) {
103300
+ throw new Socks5ProxyError("No acceptable authentication method", "UND_ERR_SOCKS5_AUTH_REJECTED");
103301
+ }
103302
+ this.buffer = this.buffer.subarray(2);
103303
+ debug("server selected auth method", method);
103304
+ if (method === AUTH_METHODS.NO_AUTH) {
103305
+ this.emit("authenticated");
103306
+ } else if (method === AUTH_METHODS.USERNAME_PASSWORD) {
103307
+ this.state = STATES.AUTHENTICATING;
103308
+ this.sendAuthRequest();
103309
+ } else {
103310
+ throw new Socks5ProxyError(`Unsupported authentication method: ${method}`, "UND_ERR_SOCKS5_AUTH_METHOD");
103311
+ }
103312
+ }
103313
+ /**
103314
+ * Send username/password authentication request
103315
+ */
103316
+ sendAuthRequest() {
103317
+ const { username, password } = this.options;
103318
+ if (!username || !password) {
103319
+ throw new InvalidArgumentError("Username and password required for authentication");
103320
+ }
103321
+ debug("sending username/password auth");
103322
+ const usernameBuffer = Buffer2.from(username);
103323
+ const passwordBuffer = Buffer2.from(password);
103324
+ if (usernameBuffer.length > 255 || passwordBuffer.length > 255) {
103325
+ throw new InvalidArgumentError("Username or password too long");
103326
+ }
103327
+ const request2 = Buffer2.alloc(3 + usernameBuffer.length + passwordBuffer.length);
103328
+ request2[0] = 1;
103329
+ request2[1] = usernameBuffer.length;
103330
+ usernameBuffer.copy(request2, 2);
103331
+ request2[2 + usernameBuffer.length] = passwordBuffer.length;
103332
+ passwordBuffer.copy(request2, 3 + usernameBuffer.length);
103333
+ this.socket.write(request2);
103334
+ }
103335
+ /**
103336
+ * Handle authentication response
103337
+ */
103338
+ handleAuthResponse() {
103339
+ if (this.buffer.length < 2) {
103340
+ return;
103341
+ }
103342
+ const version2 = this.buffer[0];
103343
+ const status = this.buffer[1];
103344
+ if (version2 !== 1) {
103345
+ throw new Socks5ProxyError(`Invalid auth sub-negotiation version: ${version2}`, "UND_ERR_SOCKS5_AUTH_VERSION");
103346
+ }
103347
+ if (status !== 0) {
103348
+ throw new Socks5ProxyError("Authentication failed", "UND_ERR_SOCKS5_AUTH_FAILED");
103349
+ }
103350
+ this.buffer = this.buffer.subarray(2);
103351
+ debug("authentication successful");
103352
+ this.emit("authenticated");
103353
+ }
103354
+ /**
103355
+ * Send CONNECT command
103356
+ * @param {string} address - Target address (IP or domain)
103357
+ * @param {number} port - Target port
103358
+ */
103359
+ connect(address, port) {
103360
+ if (this.state === STATES.CONNECTED) {
103361
+ throw new InvalidArgumentError("Already connected");
103362
+ }
103363
+ debug("connecting to", address, port);
103364
+ this.state = STATES.CONNECTING;
103365
+ const request2 = this.buildConnectRequest(COMMANDS.CONNECT, address, port);
103366
+ this.socket.write(request2);
103367
+ }
103368
+ /**
103369
+ * Build a SOCKS5 request
103370
+ */
103371
+ buildConnectRequest(command, address, port) {
103372
+ const { type: addressType, buffer: addressBuffer } = parseAddress(address);
103373
+ const request2 = Buffer2.alloc(4 + addressBuffer.length + 2);
103374
+ request2[0] = SOCKS_VERSION;
103375
+ request2[1] = command;
103376
+ request2[2] = 0;
103377
+ request2[3] = addressType;
103378
+ addressBuffer.copy(request2, 4);
103379
+ request2.writeUInt16BE(port, 4 + addressBuffer.length);
103380
+ return request2;
103381
+ }
103382
+ /**
103383
+ * Handle CONNECT response
103384
+ */
103385
+ handleConnectResponse() {
103386
+ if (this.buffer.length < 4) {
103387
+ return;
103388
+ }
103389
+ const version2 = this.buffer[0];
103390
+ const reply = this.buffer[1];
103391
+ const addressType = this.buffer[3];
103392
+ if (version2 !== SOCKS_VERSION) {
103393
+ throw new Socks5ProxyError(`Invalid SOCKS version in reply: ${version2}`, "UND_ERR_SOCKS5_REPLY_VERSION");
103394
+ }
103395
+ let responseLength = 4;
103396
+ if (addressType === ADDRESS_TYPES.IPV4) {
103397
+ responseLength += 4 + 2;
103398
+ } else if (addressType === ADDRESS_TYPES.DOMAIN) {
103399
+ if (this.buffer.length < 5) {
103400
+ return;
103401
+ }
103402
+ responseLength += 1 + this.buffer[4] + 2;
103403
+ } else if (addressType === ADDRESS_TYPES.IPV6) {
103404
+ responseLength += 16 + 2;
103405
+ } else {
103406
+ throw new Socks5ProxyError(`Invalid address type in reply: ${addressType}`, "UND_ERR_SOCKS5_ADDR_TYPE");
103407
+ }
103408
+ if (this.buffer.length < responseLength) {
103409
+ return;
103410
+ }
103411
+ if (reply !== REPLY_CODES.SUCCEEDED) {
103412
+ const errorMessage = this.getReplyErrorMessage(reply);
103413
+ throw new Socks5ProxyError(`SOCKS5 connection failed: ${errorMessage}`, `UND_ERR_SOCKS5_REPLY_${reply}`);
103414
+ }
103415
+ let boundAddress;
103416
+ let offset2 = 4;
103417
+ if (addressType === ADDRESS_TYPES.IPV4) {
103418
+ boundAddress = Array.from(this.buffer.subarray(offset2, offset2 + 4)).join(".");
103419
+ offset2 += 4;
103420
+ } else if (addressType === ADDRESS_TYPES.DOMAIN) {
103421
+ const domainLength = this.buffer[offset2];
103422
+ offset2 += 1;
103423
+ boundAddress = this.buffer.subarray(offset2, offset2 + domainLength).toString();
103424
+ offset2 += domainLength;
103425
+ } else if (addressType === ADDRESS_TYPES.IPV6) {
103426
+ const parts = [];
103427
+ for (let i = 0; i < 8; i++) {
103428
+ const value = this.buffer.readUInt16BE(offset2 + i * 2);
103429
+ parts.push(value.toString(16));
103430
+ }
103431
+ boundAddress = parts.join(":");
103432
+ offset2 += 16;
103433
+ }
103434
+ const boundPort = this.buffer.readUInt16BE(offset2);
103435
+ this.buffer = EMPTY_BUFFER;
103436
+ this.state = STATES.CONNECTED;
103437
+ this.socket.removeListener("data", this.onSocketData);
103438
+ debug("connected, bound address:", boundAddress, "port:", boundPort);
103439
+ this.emit("connected", { address: boundAddress, port: boundPort });
103440
+ }
103441
+ /**
103442
+ * Get human-readable error message for reply code
103443
+ */
103444
+ getReplyErrorMessage(reply) {
103445
+ switch (reply) {
103446
+ case REPLY_CODES.GENERAL_FAILURE:
103447
+ return "General SOCKS server failure";
103448
+ case REPLY_CODES.CONNECTION_NOT_ALLOWED:
103449
+ return "Connection not allowed by ruleset";
103450
+ case REPLY_CODES.NETWORK_UNREACHABLE:
103451
+ return "Network unreachable";
103452
+ case REPLY_CODES.HOST_UNREACHABLE:
103453
+ return "Host unreachable";
103454
+ case REPLY_CODES.CONNECTION_REFUSED:
103455
+ return "Connection refused";
103456
+ case REPLY_CODES.TTL_EXPIRED:
103457
+ return "TTL expired";
103458
+ case REPLY_CODES.COMMAND_NOT_SUPPORTED:
103459
+ return "Command not supported";
103460
+ case REPLY_CODES.ADDRESS_TYPE_NOT_SUPPORTED:
103461
+ return "Address type not supported";
103462
+ default:
103463
+ return `Unknown error code: ${reply}`;
103464
+ }
103465
+ }
103466
+ }
103467
+ socks5Client = {
103468
+ Socks5Client,
103469
+ AUTH_METHODS,
103470
+ COMMANDS,
103471
+ ADDRESS_TYPES,
103472
+ REPLY_CODES,
103473
+ STATES
103474
+ };
103475
+ return socks5Client;
103476
+ }
103477
+ var socks5ProxyAgent;
103478
+ var hasRequiredSocks5ProxyAgent;
103479
+ function requireSocks5ProxyAgent() {
103480
+ if (hasRequiredSocks5ProxyAgent) return socks5ProxyAgent;
103481
+ hasRequiredSocks5ProxyAgent = 1;
103482
+ const net2 = require$$0$5;
103483
+ const { URL: URL2 } = require$$1$2;
103484
+ let tls;
103485
+ const DispatcherBase = requireDispatcherBase();
103486
+ const { InvalidArgumentError } = requireErrors();
103487
+ const { Socks5Client } = requireSocks5Client();
103488
+ const { kDispatch, kClose, kDestroy } = requireSymbols();
103489
+ const Pool = requirePool();
103490
+ const buildConnector = requireConnect();
103491
+ const { debuglog } = require$$3;
103492
+ const debug = debuglog("undici:socks5-proxy");
103493
+ const kProxyUrl = Symbol("proxy url");
103494
+ const kProxyHeaders = Symbol("proxy headers");
103495
+ const kProxyAuth = Symbol("proxy auth");
103496
+ const kPool = Symbol("pool");
103497
+ const kConnector = Symbol("connector");
103498
+ let experimentalWarningEmitted = false;
103499
+ class Socks5ProxyAgent extends DispatcherBase {
103500
+ constructor(proxyUrl, options = {}) {
103501
+ var _a3;
103502
+ super();
103503
+ if (!experimentalWarningEmitted) {
103504
+ process.emitWarning(
103505
+ "SOCKS5 proxy support is experimental and subject to change",
103506
+ "ExperimentalWarning"
103507
+ );
103508
+ experimentalWarningEmitted = true;
103509
+ }
103510
+ if (!proxyUrl) {
103511
+ throw new InvalidArgumentError("Proxy URL is mandatory");
103512
+ }
103513
+ const url2 = typeof proxyUrl === "string" ? new URL2(proxyUrl) : proxyUrl;
103514
+ if (url2.protocol !== "socks5:" && url2.protocol !== "socks:") {
103515
+ throw new InvalidArgumentError("Proxy URL must use socks5:// or socks:// protocol");
103516
+ }
103517
+ this[kProxyUrl] = url2;
103518
+ this[kProxyHeaders] = options.headers || {};
103519
+ this[kProxyAuth] = {
103520
+ username: options.username || (url2.username ? decodeURIComponent(url2.username) : null),
103521
+ password: options.password || (url2.password ? decodeURIComponent(url2.password) : null)
103522
+ };
103523
+ this[kConnector] = options.connect || buildConnector({
103524
+ ...options.proxyTls,
103525
+ servername: ((_a3 = options.proxyTls) == null ? void 0 : _a3.servername) || url2.hostname
103526
+ });
103527
+ this[kPool] = null;
103528
+ }
103529
+ /**
103530
+ * Create a SOCKS5 connection to the proxy
103531
+ */
103532
+ async createSocks5Connection(targetHost, targetPort) {
103533
+ const proxyHost = this[kProxyUrl].hostname;
103534
+ const proxyPort = parseInt(this[kProxyUrl].port) || 1080;
103535
+ debug("creating SOCKS5 connection to", proxyHost, proxyPort);
103536
+ const socket = await new Promise((resolve2, reject) => {
103537
+ const onConnect = () => {
103538
+ socket2.removeListener("error", onError);
103539
+ resolve2(socket2);
103540
+ };
103541
+ const onError = (err) => {
103542
+ socket2.removeListener("connect", onConnect);
103543
+ reject(err);
103544
+ };
103545
+ const socket2 = net2.connect({
103546
+ host: proxyHost,
103547
+ port: proxyPort
103548
+ });
103549
+ socket2.once("connect", onConnect);
103550
+ socket2.once("error", onError);
103551
+ });
103552
+ const socks5Client2 = new Socks5Client(socket, this[kProxyAuth]);
103553
+ socks5Client2.on("error", (err) => {
103554
+ debug("SOCKS5 error:", err);
103555
+ socket.destroy();
103556
+ });
103557
+ await socks5Client2.handshake();
103558
+ await new Promise((resolve2, reject) => {
103559
+ const timeout2 = setTimeout(() => {
103560
+ reject(new Error("SOCKS5 authentication timeout"));
103561
+ }, 5e3);
103562
+ const onAuthenticated = () => {
103563
+ clearTimeout(timeout2);
103564
+ socks5Client2.removeListener("error", onError);
103565
+ resolve2();
103566
+ };
103567
+ const onError = (err) => {
103568
+ clearTimeout(timeout2);
103569
+ socks5Client2.removeListener("authenticated", onAuthenticated);
103570
+ reject(err);
103571
+ };
103572
+ if (socks5Client2.state === "authenticated") {
103573
+ clearTimeout(timeout2);
103574
+ resolve2();
103575
+ } else {
103576
+ socks5Client2.once("authenticated", onAuthenticated);
103577
+ socks5Client2.once("error", onError);
103578
+ }
103579
+ });
103580
+ await socks5Client2.connect(targetHost, targetPort);
103581
+ await new Promise((resolve2, reject) => {
103582
+ const timeout2 = setTimeout(() => {
103583
+ reject(new Error("SOCKS5 connection timeout"));
103584
+ }, 5e3);
103585
+ const onConnected = (info) => {
103586
+ debug("SOCKS5 tunnel established to", targetHost, targetPort, "via", info);
103587
+ clearTimeout(timeout2);
103588
+ socks5Client2.removeListener("error", onError);
103589
+ resolve2();
103590
+ };
103591
+ const onError = (err) => {
103592
+ clearTimeout(timeout2);
103593
+ socks5Client2.removeListener("connected", onConnected);
103594
+ reject(err);
103595
+ };
103596
+ socks5Client2.once("connected", onConnected);
103597
+ socks5Client2.once("error", onError);
103598
+ });
103599
+ return socket;
103600
+ }
103601
+ /**
103602
+ * Dispatch a request through the SOCKS5 proxy
103603
+ */
103604
+ async [kDispatch](opts, handler) {
103605
+ const { origin } = opts;
103606
+ debug("dispatching request to", origin, "via SOCKS5");
103607
+ try {
103608
+ if (!this[kPool] || this[kPool].destroyed || this[kPool].closed) {
103609
+ this[kPool] = new Pool(origin, {
103610
+ pipelining: opts.pipelining,
103611
+ connections: opts.connections,
103612
+ connect: async (connectOpts, callback) => {
103613
+ try {
103614
+ const url2 = new URL2(origin);
103615
+ const targetHost = url2.hostname;
103616
+ const targetPort = parseInt(url2.port) || (url2.protocol === "https:" ? 443 : 80);
103617
+ debug("establishing SOCKS5 connection to", targetHost, targetPort);
103618
+ const socket = await this.createSocks5Connection(targetHost, targetPort);
103619
+ let finalSocket = socket;
103620
+ if (url2.protocol === "https:") {
103621
+ if (!tls) {
103622
+ tls = require("node:tls");
103623
+ }
103624
+ debug("upgrading to TLS");
103625
+ finalSocket = tls.connect({
103626
+ socket,
103627
+ servername: targetHost,
103628
+ ...connectOpts.tls || {}
103629
+ });
103630
+ await new Promise((resolve2, reject) => {
103631
+ finalSocket.once("secureConnect", resolve2);
103632
+ finalSocket.once("error", reject);
103633
+ });
103634
+ }
103635
+ callback(null, finalSocket);
103636
+ } catch (err) {
103637
+ debug("SOCKS5 connection error:", err);
103638
+ callback(err);
103639
+ }
103640
+ }
103641
+ });
103642
+ }
103643
+ return this[kPool][kDispatch](opts, handler);
103644
+ } catch (err) {
103645
+ debug("dispatch error:", err);
103646
+ if (typeof handler.onError === "function") {
103647
+ handler.onError(err);
103648
+ } else {
103649
+ throw err;
103650
+ }
103651
+ }
103652
+ }
103653
+ async [kClose]() {
103654
+ if (this[kPool]) {
103655
+ await this[kPool].close();
103656
+ }
103657
+ }
103658
+ async [kDestroy](err) {
103659
+ if (this[kPool]) {
103660
+ await this[kPool].destroy(err);
103661
+ }
103662
+ }
103663
+ }
103664
+ socks5ProxyAgent = Socks5ProxyAgent;
103665
+ return socks5ProxyAgent;
103666
+ }
102640
103667
  var proxyAgent;
102641
103668
  var hasRequiredProxyAgent;
102642
103669
  function requireProxyAgent() {
@@ -102651,6 +103678,7 @@ function requireProxyAgent() {
102651
103678
  const buildConnector = requireConnect();
102652
103679
  const Client = requireClient();
102653
103680
  const { channels } = requireDiagnostics();
103681
+ const Socks5ProxyAgent = requireSocks5ProxyAgent();
102654
103682
  const kAgent = Symbol("proxy agent");
102655
103683
  const kClient = Symbol("proxy client");
102656
103684
  const kProxyHeaders = Symbol("proxy headers");
@@ -102751,6 +103779,16 @@ function requireProxyAgent() {
102751
103779
  const agentFactory = opts.factory || defaultAgentFactory;
102752
103780
  const factory = (origin2, options) => {
102753
103781
  const { protocol: protocol2 } = new URL(origin2);
103782
+ if (this[kProxy].protocol === "socks5:" || this[kProxy].protocol === "socks:") {
103783
+ return new Socks5ProxyAgent(this[kProxy].uri, {
103784
+ headers: this[kProxyHeaders],
103785
+ connect: connect2,
103786
+ factory: agentFactory,
103787
+ username: opts.username || username,
103788
+ password: opts.password || password,
103789
+ proxyTls: opts.proxyTls
103790
+ });
103791
+ }
102754
103792
  if (!this[kTunnelProxy] && protocol2 === "http:" && this[kProxy].protocol === "http:") {
102755
103793
  return new Http1ProxyWrapper(this[kProxy].uri, {
102756
103794
  headers: this[kProxyHeaders],
@@ -102760,12 +103798,20 @@ function requireProxyAgent() {
102760
103798
  }
102761
103799
  return agentFactory(origin2, options);
102762
103800
  };
102763
- this[kClient] = clientFactory(url2, { connect: connect2 });
103801
+ if (protocol === "socks5:" || protocol === "socks:") {
103802
+ this[kClient] = null;
103803
+ } else {
103804
+ this[kClient] = clientFactory(url2, { connect: connect2 });
103805
+ }
102764
103806
  this[kAgent] = new Agent({
102765
103807
  ...opts,
102766
103808
  factory,
102767
103809
  connect: async (opts2, callback) => {
102768
103810
  var _a3;
103811
+ if (!this[kClient]) {
103812
+ callback(new InvalidArgumentError("Cannot establish tunnel connection without a proxy client"));
103813
+ return;
103814
+ }
102769
103815
  let requestedPath = opts2.host;
102770
103816
  if (!opts2.port) {
102771
103817
  requestedPath += `:${defaultProtocolPort(opts2.protocol)}`;
@@ -102832,16 +103878,18 @@ function requireProxyAgent() {
102832
103878
  );
102833
103879
  }
102834
103880
  [kClose]() {
102835
- return Promise.all([
102836
- this[kAgent].close(),
102837
- this[kClient].close()
102838
- ]);
103881
+ const promises2 = [this[kAgent].close()];
103882
+ if (this[kClient]) {
103883
+ promises2.push(this[kClient].close());
103884
+ }
103885
+ return Promise.all(promises2);
102839
103886
  }
102840
103887
  [kDestroy]() {
102841
- return Promise.all([
102842
- this[kAgent].destroy(),
102843
- this[kClient].destroy()
102844
- ]);
103888
+ const promises2 = [this[kAgent].destroy()];
103889
+ if (this[kClient]) {
103890
+ promises2.push(this[kClient].destroy());
103891
+ }
103892
+ return Promise.all(promises2);
102845
103893
  }
102846
103894
  }
102847
103895
  _ProxyAgent_instances = new WeakSet();
@@ -103011,7 +104059,7 @@ var hasRequiredRetryHandler;
103011
104059
  function requireRetryHandler() {
103012
104060
  if (hasRequiredRetryHandler) return retryHandler;
103013
104061
  hasRequiredRetryHandler = 1;
103014
- const assert2 = require$$0$2;
104062
+ const assert2 = require$$0$3;
103015
104063
  const { kRetryHandlerDefaultRetry } = requireSymbols();
103016
104064
  const { RequestRetryError } = requireErrors();
103017
104065
  const WrapHandler = requireWrapHandler();
@@ -103382,7 +104430,7 @@ function requireH2cClient() {
103382
104430
  "h2c-client: Only h2c protocol is supported"
103383
104431
  );
103384
104432
  }
103385
- const { connect: connect2, maxConcurrentStreams, pipelining, ...opts } = clientOpts ?? {};
104433
+ const { maxConcurrentStreams, pipelining, ...opts } = clientOpts ?? {};
103386
104434
  let defaultMaxConcurrentStreams = 100;
103387
104435
  let defaultPipelining = 100;
103388
104436
  if (maxConcurrentStreams != null && Number.isInteger(maxConcurrentStreams) && maxConcurrentStreams > 0) {
@@ -103415,8 +104463,8 @@ var hasRequiredReadable;
103415
104463
  function requireReadable() {
103416
104464
  if (hasRequiredReadable) return readable;
103417
104465
  hasRequiredReadable = 1;
103418
- const assert2 = require$$0$2;
103419
- const { Readable } = require$$0$3;
104466
+ const assert2 = require$$0$3;
104467
+ const { Readable } = require$$0$4;
103420
104468
  const { RequestAbortedError, NotSupportedError, InvalidArgumentError, AbortError } = requireErrors();
103421
104469
  const util2 = requireUtil$5();
103422
104470
  const { ReadableStreamFrom } = requireUtil$5();
@@ -103817,8 +104865,8 @@ var hasRequiredApiRequest;
103817
104865
  function requireApiRequest() {
103818
104866
  if (hasRequiredApiRequest) return apiRequest.exports;
103819
104867
  hasRequiredApiRequest = 1;
103820
- const assert2 = require$$0$2;
103821
- const { AsyncResource } = require$$1$2;
104868
+ const assert2 = require$$0$3;
104869
+ const { AsyncResource } = require$$1$3;
103822
104870
  const { Readable } = requireReadable();
103823
104871
  const { InvalidArgumentError, RequestAbortedError } = requireErrors();
103824
104872
  const util2 = requireUtil$5();
@@ -103834,7 +104882,7 @@ function requireApiRequest() {
103834
104882
  if (typeof callback !== "function") {
103835
104883
  throw new InvalidArgumentError("invalid callback");
103836
104884
  }
103837
- if (highWaterMark && (typeof highWaterMark !== "number" || highWaterMark < 0)) {
104885
+ if (highWaterMark != null && (!Number.isFinite(highWaterMark) || highWaterMark < 0)) {
103838
104886
  throw new InvalidArgumentError("invalid highWaterMark");
103839
104887
  }
103840
104888
  if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") {
@@ -104048,9 +105096,9 @@ var hasRequiredApiStream;
104048
105096
  function requireApiStream() {
104049
105097
  if (hasRequiredApiStream) return apiStream;
104050
105098
  hasRequiredApiStream = 1;
104051
- const assert2 = require$$0$2;
104052
- const { finished } = require$$0$3;
104053
- const { AsyncResource } = require$$1$2;
105099
+ const assert2 = require$$0$3;
105100
+ const { finished } = require$$0$4;
105101
+ const { AsyncResource } = require$$1$3;
104054
105102
  const { InvalidArgumentError, InvalidReturnValueError } = requireErrors();
104055
105103
  const util2 = requireUtil$5();
104056
105104
  const { addSignal, removeSignal } = requireAbortSignal();
@@ -104214,9 +105262,9 @@ function requireApiPipeline() {
104214
105262
  Readable,
104215
105263
  Duplex,
104216
105264
  PassThrough: PassThrough2
104217
- } = require$$0$3;
104218
- const assert2 = require$$0$2;
104219
- const { AsyncResource } = require$$1$2;
105265
+ } = require$$0$4;
105266
+ const assert2 = require$$0$3;
105267
+ const { AsyncResource } = require$$1$3;
104220
105268
  const {
104221
105269
  InvalidArgumentError,
104222
105270
  InvalidReturnValueError,
@@ -104412,8 +105460,8 @@ function requireApiUpgrade() {
104412
105460
  if (hasRequiredApiUpgrade) return apiUpgrade;
104413
105461
  hasRequiredApiUpgrade = 1;
104414
105462
  const { InvalidArgumentError, SocketError } = requireErrors();
104415
- const { AsyncResource } = require$$1$2;
104416
- const assert2 = require$$0$2;
105463
+ const { AsyncResource } = require$$1$3;
105464
+ const assert2 = require$$0$3;
104417
105465
  const util2 = requireUtil$5();
104418
105466
  const { kHTTP2Stream } = requireSymbols();
104419
105467
  const { addSignal, removeSignal } = requireAbortSignal();
@@ -104505,8 +105553,8 @@ var hasRequiredApiConnect;
104505
105553
  function requireApiConnect() {
104506
105554
  if (hasRequiredApiConnect) return apiConnect;
104507
105555
  hasRequiredApiConnect = 1;
104508
- const assert2 = require$$0$2;
104509
- const { AsyncResource } = require$$1$2;
105556
+ const assert2 = require$$0$3;
105557
+ const { AsyncResource } = require$$1$3;
104510
105558
  const { InvalidArgumentError, SocketError } = requireErrors();
104511
105559
  const util2 = requireUtil$5();
104512
105560
  const { addSignal, removeSignal } = requireAbortSignal();
@@ -104660,7 +105708,8 @@ function requireMockSymbols() {
104660
105708
  kMockAgentAddCallHistoryLog: Symbol("mock agent add call history log"),
104661
105709
  kMockAgentIsCallHistoryEnabled: Symbol("mock agent is call history enabled"),
104662
105710
  kMockAgentAcceptsNonStandardSearchParameters: Symbol("mock agent accepts non standard search parameters"),
104663
- kMockCallHistoryAddLog: Symbol("mock call history add log")
105711
+ kMockCallHistoryAddLog: Symbol("mock call history add log"),
105712
+ kTotalDispatchCount: Symbol("total dispatch count")
104664
105713
  };
104665
105714
  return mockSymbols;
104666
105715
  }
@@ -104675,7 +105724,8 @@ function requireMockUtils() {
104675
105724
  kMockAgent,
104676
105725
  kOriginalDispatch,
104677
105726
  kOrigin,
104678
- kGetNetConnect
105727
+ kGetNetConnect,
105728
+ kTotalDispatchCount
104679
105729
  } = requireMockSymbols();
104680
105730
  const { serializePathWithQuery } = requireUtil$5();
104681
105731
  const { STATUS_CODES } = require$$2$1;
@@ -104835,6 +105885,7 @@ function requireMockUtils() {
104835
105885
  const replyData = typeof data === "function" ? { callback: data } : { ...data };
104836
105886
  const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } };
104837
105887
  mockDispatches.push(newMockDispatch);
105888
+ mockDispatches[kTotalDispatchCount] = (mockDispatches[kTotalDispatchCount] || 0) + 1;
104838
105889
  return newMockDispatch;
104839
105890
  }
104840
105891
  function deleteMockDispatch(mockDispatches, key) {
@@ -104969,13 +106020,16 @@ function requireMockUtils() {
104969
106020
  } catch (error2) {
104970
106021
  if (error2.code === "UND_MOCK_ERR_MOCK_NOT_MATCHED") {
104971
106022
  const netConnect = agent2[kGetNetConnect]();
106023
+ const totalInterceptsCount = this[kDispatches][kTotalDispatchCount] || this[kDispatches].length;
106024
+ const pendingInterceptsCount = this[kDispatches].filter(({ consumed }) => !consumed).length;
106025
+ const interceptsMessage = `, ${pendingInterceptsCount} interceptor(s) remaining out of ${totalInterceptsCount} defined`;
104972
106026
  if (netConnect === false) {
104973
- throw new MockNotMatchedError(`${error2.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`);
106027
+ throw new MockNotMatchedError(`${error2.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)${interceptsMessage}`);
104974
106028
  }
104975
106029
  if (checkNetConnect(netConnect, origin)) {
104976
106030
  originalDispatch.call(this, opts, handler);
104977
106031
  } else {
104978
- throw new MockNotMatchedError(`${error2.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`);
106032
+ throw new MockNotMatchedError(`${error2.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)${interceptsMessage}`);
104979
106033
  }
104980
106034
  } else {
104981
106035
  throw error2;
@@ -105270,13 +106324,13 @@ function requireMockCallHistory() {
105270
106324
  hasRequiredMockCallHistory = 1;
105271
106325
  const { kMockCallHistoryAddLog } = requireMockSymbols();
105272
106326
  const { InvalidArgumentError } = requireErrors();
105273
- function handleFilterCallsWithOptions(criteria, options, handler, store) {
106327
+ function handleFilterCallsWithOptions(criteria, options, handler, store, allLogs) {
105274
106328
  switch (options.operator) {
105275
106329
  case "OR":
105276
- store.push(...handler(criteria));
106330
+ store.push(...handler(criteria, allLogs));
105277
106331
  return store;
105278
106332
  case "AND":
105279
- return handler.call({ logs: store }, criteria);
106333
+ return handler(criteria, store);
105280
106334
  default:
105281
106335
  throw new InvalidArgumentError("options.operator must to be a case insensitive string equal to 'OR' or 'AND'");
105282
106336
  }
@@ -105295,14 +106349,14 @@ function requireMockCallHistory() {
105295
106349
  return finalOptions;
105296
106350
  }
105297
106351
  function makeFilterCalls(parameterName) {
105298
- return (parameterValue) => {
106352
+ return (parameterValue, logs) => {
105299
106353
  if (typeof parameterValue === "string" || parameterValue == null) {
105300
- return this.logs.filter((log) => {
106354
+ return logs.filter((log) => {
105301
106355
  return log[parameterName] === parameterValue;
105302
106356
  });
105303
106357
  }
105304
106358
  if (parameterValue instanceof RegExp) {
105305
- return this.logs.filter((log) => {
106359
+ return logs.filter((log) => {
105306
106360
  return parameterValue.test(log[parameterName]);
105307
106361
  });
105308
106362
  }
@@ -105417,30 +106471,30 @@ function requireMockCallHistory() {
105417
106471
  return this.logs;
105418
106472
  }
105419
106473
  const finalOptions = { operator: "OR", ...buildAndValidateFilterCallsOptions(options) };
105420
- let maybeDuplicatedLogsFiltered = [];
106474
+ let maybeDuplicatedLogsFiltered = finalOptions.operator === "AND" ? this.logs : [];
105421
106475
  if ("protocol" in criteria) {
105422
- maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.protocol, finalOptions, this.filterCallsByProtocol, maybeDuplicatedLogsFiltered);
106476
+ maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.protocol, finalOptions, this.filterCallsByProtocol, maybeDuplicatedLogsFiltered, this.logs);
105423
106477
  }
105424
106478
  if ("host" in criteria) {
105425
- maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.host, finalOptions, this.filterCallsByHost, maybeDuplicatedLogsFiltered);
106479
+ maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.host, finalOptions, this.filterCallsByHost, maybeDuplicatedLogsFiltered, this.logs);
105426
106480
  }
105427
106481
  if ("port" in criteria) {
105428
- maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.port, finalOptions, this.filterCallsByPort, maybeDuplicatedLogsFiltered);
106482
+ maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.port, finalOptions, this.filterCallsByPort, maybeDuplicatedLogsFiltered, this.logs);
105429
106483
  }
105430
106484
  if ("origin" in criteria) {
105431
- maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.origin, finalOptions, this.filterCallsByOrigin, maybeDuplicatedLogsFiltered);
106485
+ maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.origin, finalOptions, this.filterCallsByOrigin, maybeDuplicatedLogsFiltered, this.logs);
105432
106486
  }
105433
106487
  if ("path" in criteria) {
105434
- maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.path, finalOptions, this.filterCallsByPath, maybeDuplicatedLogsFiltered);
106488
+ maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.path, finalOptions, this.filterCallsByPath, maybeDuplicatedLogsFiltered, this.logs);
105435
106489
  }
105436
106490
  if ("hash" in criteria) {
105437
- maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.hash, finalOptions, this.filterCallsByHash, maybeDuplicatedLogsFiltered);
106491
+ maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.hash, finalOptions, this.filterCallsByHash, maybeDuplicatedLogsFiltered, this.logs);
105438
106492
  }
105439
106493
  if ("fullUrl" in criteria) {
105440
- maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.fullUrl, finalOptions, this.filterCallsByFullUrl, maybeDuplicatedLogsFiltered);
106494
+ maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.fullUrl, finalOptions, this.filterCallsByFullUrl, maybeDuplicatedLogsFiltered, this.logs);
105441
106495
  }
105442
106496
  if ("method" in criteria) {
105443
- maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.method, finalOptions, this.filterCallsByMethod, maybeDuplicatedLogsFiltered);
106497
+ maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.method, finalOptions, this.filterCallsByMethod, maybeDuplicatedLogsFiltered, this.logs);
105444
106498
  }
105445
106499
  const uniqLogsFiltered = [...new Set(maybeDuplicatedLogsFiltered)];
105446
106500
  return uniqLogsFiltered;
@@ -105531,8 +106585,8 @@ var hasRequiredPendingInterceptorsFormatter;
105531
106585
  function requirePendingInterceptorsFormatter() {
105532
106586
  if (hasRequiredPendingInterceptorsFormatter) return pendingInterceptorsFormatter;
105533
106587
  hasRequiredPendingInterceptorsFormatter = 1;
105534
- const { Transform: Transform2 } = require$$0$3;
105535
- const { Console } = require$$1$3;
106588
+ const { Transform: Transform2 } = require$$0$4;
106589
+ const { Console } = require$$1$4;
105536
106590
  const PERSISTENT = process.versions.icu ? "✅" : "Y ";
105537
106591
  const NOT_PERSISTENT = process.versions.icu ? "❌" : "N ";
105538
106592
  pendingInterceptorsFormatter = class PendingInterceptorsFormatter {
@@ -106566,7 +107620,7 @@ function requireDecoratorHandler() {
106566
107620
  var _handler, _onCompleteCalled, _onErrorCalled, _onResponseStartCalled, _a3;
106567
107621
  if (hasRequiredDecoratorHandler) return decoratorHandler;
106568
107622
  hasRequiredDecoratorHandler = 1;
106569
- const assert2 = require$$0$2;
107623
+ const assert2 = require$$0$3;
106570
107624
  const WrapHandler = requireWrapHandler();
106571
107625
  decoratorHandler = (_a3 = class {
106572
107626
  constructor(handler) {
@@ -106630,9 +107684,9 @@ function requireRedirectHandler() {
106630
107684
  hasRequiredRedirectHandler = 1;
106631
107685
  const util2 = requireUtil$5();
106632
107686
  const { kBodyUsed } = requireSymbols();
106633
- const assert2 = require$$0$2;
107687
+ const assert2 = require$$0$3;
106634
107688
  const { InvalidArgumentError } = requireErrors();
106635
- const EE = require$$6;
107689
+ const EE = require$$0$2;
106636
107690
  const redirectableStatusCodes = [300, 301, 302, 303, 307, 308];
106637
107691
  const kBody = Symbol("body");
106638
107692
  const noop3 = () => {
@@ -106774,7 +107828,7 @@ function requireRedirectHandler() {
106774
107828
  }
106775
107829
  }
106776
107830
  } else if (headers2 && typeof headers2 === "object") {
106777
- const entries = typeof headers2[Symbol.iterator] === "function" ? headers2 : Object.entries(headers2);
107831
+ const entries = util2.hasSafeIterator(headers2) ? headers2 : Object.entries(headers2);
106778
107832
  for (const [key, value] of entries) {
106779
107833
  if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) {
106780
107834
  ret.push(key, value);
@@ -107026,11 +108080,90 @@ function requireDns() {
107026
108080
  var _maxItems, _records, _maxTTL, _maxItems2, _DNSInstance_instances, defaultLookup_fn, defaultPick_fn, _state, _opts, _dispatch, _origin, _controller, _newOrigin, _firstTry;
107027
108081
  if (hasRequiredDns) return dns;
107028
108082
  hasRequiredDns = 1;
107029
- const { isIP } = require$$0$4;
107030
- const { lookup } = require$$1$4;
108083
+ const { isIP } = require$$0$5;
108084
+ const { lookup } = require$$1$5;
107031
108085
  const DecoratorHandler = requireDecoratorHandler();
107032
108086
  const { InvalidArgumentError, InformationalError } = requireErrors();
107033
108087
  const maxInt = Math.pow(2, 31) - 1;
108088
+ function hasSafeIterator(headers2) {
108089
+ const prototype = Object.getPrototypeOf(headers2);
108090
+ const ownIterator = Object.prototype.hasOwnProperty.call(headers2, Symbol.iterator);
108091
+ return ownIterator || prototype != null && prototype !== Object.prototype && typeof headers2[Symbol.iterator] === "function";
108092
+ }
108093
+ function isHostHeader(key) {
108094
+ return typeof key === "string" && key.toLowerCase() === "host";
108095
+ }
108096
+ function normalizeHeaders(headers2) {
108097
+ if (headers2 == null) {
108098
+ return null;
108099
+ }
108100
+ if (Array.isArray(headers2)) {
108101
+ if (headers2.length === 0 || !Array.isArray(headers2[0])) {
108102
+ return headers2;
108103
+ }
108104
+ const normalized = [];
108105
+ for (const header of headers2) {
108106
+ if (Array.isArray(header) && header.length === 2) {
108107
+ normalized.push(header[0], header[1]);
108108
+ } else {
108109
+ normalized.push(header);
108110
+ }
108111
+ }
108112
+ return normalized;
108113
+ }
108114
+ if (typeof headers2 === "object" && hasSafeIterator(headers2)) {
108115
+ const normalized = [];
108116
+ for (const header of headers2) {
108117
+ if (Array.isArray(header) && header.length === 2) {
108118
+ normalized.push(header[0], header[1]);
108119
+ } else {
108120
+ normalized.push(header);
108121
+ }
108122
+ }
108123
+ return normalized;
108124
+ }
108125
+ return headers2;
108126
+ }
108127
+ function hasHostHeader(headers2) {
108128
+ if (headers2 == null) {
108129
+ return false;
108130
+ }
108131
+ if (Array.isArray(headers2)) {
108132
+ if (headers2.length === 0) {
108133
+ return false;
108134
+ }
108135
+ for (let i = 0; i < headers2.length; i += 2) {
108136
+ if (isHostHeader(headers2[i])) {
108137
+ return true;
108138
+ }
108139
+ }
108140
+ return false;
108141
+ }
108142
+ if (typeof headers2 === "object") {
108143
+ for (const key in headers2) {
108144
+ if (isHostHeader(key)) {
108145
+ return true;
108146
+ }
108147
+ }
108148
+ }
108149
+ return false;
108150
+ }
108151
+ function withHostHeader(host, headers2) {
108152
+ const normalizedHeaders = normalizeHeaders(headers2);
108153
+ if (hasHostHeader(normalizedHeaders)) {
108154
+ return normalizedHeaders;
108155
+ }
108156
+ if (Array.isArray(normalizedHeaders)) {
108157
+ return ["host", host, ...normalizedHeaders];
108158
+ }
108159
+ if (normalizedHeaders && typeof normalizedHeaders === "object") {
108160
+ return {
108161
+ host,
108162
+ ...normalizedHeaders
108163
+ };
108164
+ }
108165
+ return { host };
108166
+ }
107034
108167
  class DNSStorage {
107035
108168
  constructor(opts) {
107036
108169
  __privateAdd(this, _maxItems, 0);
@@ -107296,7 +108429,8 @@ function requireDns() {
107296
108429
  }
107297
108430
  const dispatchOpts = {
107298
108431
  ...__privateGet(this, _opts),
107299
- origin: `${__privateGet(this, _origin).protocol}//${ip.family === 6 ? `[${ip.address}]` : ip.address}${port}`
108432
+ origin: `${__privateGet(this, _origin).protocol}//${ip.family === 6 ? `[${ip.address}]` : ip.address}${port}`,
108433
+ headers: withHostHeader(__privateGet(this, _origin).host, __privateGet(this, _opts).headers)
107300
108434
  };
107301
108435
  __privateGet(this, _dispatch).call(this, dispatchOpts, this);
107302
108436
  return;
@@ -107379,10 +108513,7 @@ function requireDns() {
107379
108513
  servername: origin.hostname,
107380
108514
  // For SNI on TLS
107381
108515
  origin: newOrigin.origin,
107382
- headers: {
107383
- host: origin.host,
107384
- ...origDispatchOpts.headers
107385
- }
108516
+ headers: withHostHeader(origin.host, origDispatchOpts.headers)
107386
108517
  };
107387
108518
  dispatch2(
107388
108519
  dispatchOpts,
@@ -107405,7 +108536,8 @@ function requireCache$2() {
107405
108536
  hasRequiredCache$2 = 1;
107406
108537
  const {
107407
108538
  safeHTTPMethods,
107408
- pathHasQueryOrFragment
108539
+ pathHasQueryOrFragment,
108540
+ hasSafeIterator
107409
108541
  } = requireUtil$5();
107410
108542
  const { serializePathWithQuery } = requireUtil$5();
107411
108543
  function makeCacheKey(opts) {
@@ -107413,7 +108545,7 @@ function requireCache$2() {
107413
108545
  throw new Error("opts.origin is undefined");
107414
108546
  }
107415
108547
  let fullPath = opts.path || "/";
107416
- if (opts.query && !pathHasQueryOrFragment(opts.path)) {
108548
+ if (opts.query && !pathHasQueryOrFragment(fullPath)) {
107417
108549
  fullPath = serializePathWithQuery(fullPath, opts.query);
107418
108550
  }
107419
108551
  return {
@@ -107427,22 +108559,23 @@ function requireCache$2() {
107427
108559
  let headers2;
107428
108560
  if (opts.headers == null) {
107429
108561
  headers2 = {};
107430
- } else if (typeof opts.headers[Symbol.iterator] === "function") {
108562
+ } else if (typeof opts.headers === "object") {
107431
108563
  headers2 = {};
107432
- for (const x2 of opts.headers) {
107433
- if (!Array.isArray(x2)) {
107434
- throw new Error("opts.headers is not a valid header map");
108564
+ if (hasSafeIterator(opts.headers)) {
108565
+ for (const x2 of opts.headers) {
108566
+ if (!Array.isArray(x2)) {
108567
+ throw new Error("opts.headers is not a valid header map");
108568
+ }
108569
+ const [key, val] = x2;
108570
+ if (typeof key !== "string" || typeof val !== "string") {
108571
+ throw new Error("opts.headers is not a valid header map");
108572
+ }
108573
+ headers2[key.toLowerCase()] = val;
107435
108574
  }
107436
- const [key, val] = x2;
107437
- if (typeof key !== "string" || typeof val !== "string") {
107438
- throw new Error("opts.headers is not a valid header map");
108575
+ } else {
108576
+ for (const key of Object.keys(opts.headers)) {
108577
+ headers2[key.toLowerCase()] = opts.headers[key];
107439
108578
  }
107440
- headers2[key.toLowerCase()] = val;
107441
- }
107442
- } else if (typeof opts.headers === "object") {
107443
- headers2 = {};
107444
- for (const key of Object.keys(opts.headers)) {
107445
- headers2[key.toLowerCase()] = opts.headers[key];
107446
108579
  }
107447
108580
  } else {
107448
108581
  throw new Error("opts.headers is not an object");
@@ -107639,18 +108772,17 @@ function requireCache$2() {
107639
108772
  }
107640
108773
  }
107641
108774
  function makeDeduplicationKey(cacheKey, excludeHeaders) {
107642
- let key = `${cacheKey.origin}:${cacheKey.method}:${cacheKey.path}`;
108775
+ const headers2 = {};
107643
108776
  if (cacheKey.headers) {
107644
108777
  const sortedHeaders = Object.keys(cacheKey.headers).sort();
107645
108778
  for (const header of sortedHeaders) {
107646
108779
  if (excludeHeaders == null ? void 0 : excludeHeaders.has(header.toLowerCase())) {
107647
108780
  continue;
107648
108781
  }
107649
- const value = cacheKey.headers[header];
107650
- key += `:${header}=${Array.isArray(value) ? value.join(",") : value}`;
108782
+ headers2[header] = cacheKey.headers[header];
107651
108783
  }
107652
108784
  }
107653
- return key;
108785
+ return JSON.stringify([cacheKey.origin, cacheKey.method, cacheKey.path, headers2]);
107654
108786
  }
107655
108787
  cache$2 = {
107656
108788
  makeCacheKey,
@@ -108274,7 +109406,7 @@ function requireCacheHandler() {
108274
109406
  return downstreamOnHeaders();
108275
109407
  }
108276
109408
  const cacheControlDirectives = cacheControlHeader ? parseCacheControlHeader(cacheControlHeader) : {};
108277
- if (!canCacheResponse(__privateGet(this, _cacheType), statusCode, resHeaders, cacheControlDirectives)) {
109409
+ if (!canCacheResponse(__privateGet(this, _cacheType), statusCode, resHeaders, cacheControlDirectives, __privateGet(this, _cacheKey).headers)) {
108278
109410
  return downstreamOnHeaders();
108279
109411
  }
108280
109412
  const now2 = Date.now();
@@ -108420,7 +109552,7 @@ function requireCacheHandler() {
108420
109552
  _store = new WeakMap();
108421
109553
  _handler = new WeakMap();
108422
109554
  _writeStream = new WeakMap();
108423
- function canCacheResponse(cacheType, statusCode, resHeaders, cacheControlDirectives) {
109555
+ function canCacheResponse(cacheType, statusCode, resHeaders, cacheControlDirectives, reqHeaders) {
108424
109556
  var _a3;
108425
109557
  if (statusCode < 200 || NOT_UNDERSTOOD_STATUS_CODES.includes(statusCode)) {
108426
109558
  return false;
@@ -108438,8 +109570,11 @@ function requireCacheHandler() {
108438
109570
  if ((_a3 = resHeaders.vary) == null ? void 0 : _a3.includes("*")) {
108439
109571
  return false;
108440
109572
  }
108441
- if (resHeaders.authorization) {
108442
- if (!cacheControlDirectives.public || typeof resHeaders.authorization !== "string") {
109573
+ if (reqHeaders == null ? void 0 : reqHeaders.authorization) {
109574
+ if (!cacheControlDirectives.public && !cacheControlDirectives["s-maxage"] && !cacheControlDirectives["must-revalidate"]) {
109575
+ return false;
109576
+ }
109577
+ if (typeof reqHeaders.authorization !== "string") {
108443
109578
  return false;
108444
109579
  }
108445
109580
  if (Array.isArray(cacheControlDirectives["no-cache"]) && cacheControlDirectives["no-cache"].includes("authorization")) {
@@ -108508,9 +109643,13 @@ function requireCacheHandler() {
108508
109643
  if (cacheControlDirectives["stale-if-error"]) {
108509
109644
  staleIfError = staleAt + cacheControlDirectives["stale-if-error"] * 1e3;
108510
109645
  }
108511
- if (staleWhileRevalidate === -Infinity && staleIfError === -Infinity) {
109646
+ if (cacheControlDirectives.immutable && staleWhileRevalidate === -Infinity && staleIfError === -Infinity) {
108512
109647
  immutable = now2 + 31536e6;
108513
109648
  }
109649
+ if (staleWhileRevalidate === -Infinity && staleIfError === -Infinity && immutable === -Infinity) {
109650
+ const freshnessLifetime = staleAt - now2;
109651
+ return staleAt + freshnessLifetime;
109652
+ }
108514
109653
  return Math.max(staleAt, staleWhileRevalidate, staleIfError, immutable);
108515
109654
  }
108516
109655
  function stripNecessaryHeaders(resHeaders, cacheControlDirectives) {
@@ -108560,8 +109699,8 @@ function requireMemoryCacheStore() {
108560
109699
  var _maxCount, _maxSize2, _maxEntrySize, _size2, _count, _entries, _hasEmittedMaxSizeEvent;
108561
109700
  if (hasRequiredMemoryCacheStore) return memoryCacheStore;
108562
109701
  hasRequiredMemoryCacheStore = 1;
108563
- const { Writable } = require$$0$3;
108564
- const { EventEmitter: EventEmitter2 } = require$$6;
109702
+ const { Writable } = require$$0$4;
109703
+ const { EventEmitter: EventEmitter2 } = require$$0$2;
108565
109704
  const { assertCacheKey, assertCacheValue } = requireCache$2();
108566
109705
  class MemoryCacheStore extends EventEmitter2 {
108567
109706
  /**
@@ -108745,7 +109884,7 @@ function requireCacheRevalidationHandler() {
108745
109884
  var _successful, _callback, _handler, _context, _allowErrorStatusCodes;
108746
109885
  if (hasRequiredCacheRevalidationHandler) return cacheRevalidationHandler;
108747
109886
  hasRequiredCacheRevalidationHandler = 1;
108748
- const assert2 = require$$0$2;
109887
+ const assert2 = require$$0$3;
108749
109888
  class CacheRevalidationHandler {
108750
109889
  /**
108751
109890
  * @param {(boolean) => void} callback Function to call if the cached value is valid
@@ -108842,8 +109981,8 @@ var hasRequiredCache$1;
108842
109981
  function requireCache$1() {
108843
109982
  if (hasRequiredCache$1) return cache$1;
108844
109983
  hasRequiredCache$1 = 1;
108845
- const assert2 = require$$0$2;
108846
- const { Readable } = require$$0$3;
109984
+ const assert2 = require$$0$3;
109985
+ const { Readable } = require$$0$4;
108847
109986
  const util2 = requireUtil$5();
108848
109987
  const CacheHandler = requireCacheHandler();
108849
109988
  const MemoryCacheStore = requireMemoryCacheStore();
@@ -109186,7 +110325,7 @@ function requireDecompress() {
109186
110325
  if (hasRequiredDecompress) return decompress;
109187
110326
  hasRequiredDecompress = 1;
109188
110327
  const { createInflate, createGunzip, createBrotliDecompress, createZstdDecompress } = require$$3$1;
109189
- const { pipeline } = require$$0$3;
110328
+ const { pipeline } = require$$0$4;
109190
110329
  const DecoratorHandler = requireDecoratorHandler();
109191
110330
  const { runtimeFeatures: runtimeFeatures2 } = requireRuntimeFeatures();
109192
110331
  const supportedEncodings = {
@@ -109403,28 +110542,31 @@ function requireDecompress() {
109403
110542
  var deduplicationHandler;
109404
110543
  var hasRequiredDeduplicationHandler;
109405
110544
  function requireDeduplicationHandler() {
109406
- var _primaryHandler, _waitingHandlers, _chunks, _statusCode, _headers, _statusMessage, _aborted, _controller, _onComplete, _DeduplicationHandler_instances, notifyWaitingHandlers_fn, notifyWaitingHandlersError_fn;
110545
+ var _primaryHandler, _waitingHandlers, _maxBufferSize, _statusCode, _headers, _statusMessage, _aborted, _responseStarted, _responseDataStarted, _completed, _controller, _onComplete, _DeduplicationHandler_instances, createWaitingHandler_fn, bufferWaitingChunk_fn, flushWaitingHandler_fn, errorWaitingHandler_fn, pruneDoneWaitingHandlers_fn;
109407
110546
  if (hasRequiredDeduplicationHandler) return deduplicationHandler;
109408
110547
  hasRequiredDeduplicationHandler = 1;
110548
+ const { RequestAbortedError } = requireErrors();
110549
+ const DEFAULT_MAX_BUFFER_SIZE = 5 * 1024 * 1024;
109409
110550
  class DeduplicationHandler {
109410
110551
  /**
109411
110552
  * @param {DispatchHandler} primaryHandler The primary handler
109412
110553
  * @param {() => void} onComplete Callback when request completes
110554
+ * @param {number} [maxBufferSize] Maximum paused buffer size per waiting handler
109413
110555
  */
109414
- constructor(primaryHandler, onComplete) {
110556
+ constructor(primaryHandler, onComplete, maxBufferSize = DEFAULT_MAX_BUFFER_SIZE) {
109415
110557
  __privateAdd(this, _DeduplicationHandler_instances);
109416
110558
  /**
109417
110559
  * @type {DispatchHandler}
109418
110560
  */
109419
110561
  __privateAdd(this, _primaryHandler);
109420
110562
  /**
109421
- * @type {DispatchHandler[]}
110563
+ * @type {WaitingHandler[]}
109422
110564
  */
109423
110565
  __privateAdd(this, _waitingHandlers, []);
109424
110566
  /**
109425
- * @type {Buffer[]}
110567
+ * @type {number}
109426
110568
  */
109427
- __privateAdd(this, _chunks, []);
110569
+ __privateAdd(this, _maxBufferSize, DEFAULT_MAX_BUFFER_SIZE);
109428
110570
  /**
109429
110571
  * @type {number}
109430
110572
  */
@@ -109441,6 +110583,18 @@ function requireDeduplicationHandler() {
109441
110583
  * @type {boolean}
109442
110584
  */
109443
110585
  __privateAdd(this, _aborted, false);
110586
+ /**
110587
+ * @type {boolean}
110588
+ */
110589
+ __privateAdd(this, _responseStarted, false);
110590
+ /**
110591
+ * @type {boolean}
110592
+ */
110593
+ __privateAdd(this, _responseDataStarted, false);
110594
+ /**
110595
+ * @type {boolean}
110596
+ */
110597
+ __privateAdd(this, _completed, false);
109444
110598
  /**
109445
110599
  * @type {import('../../types/dispatcher.d.ts').default.DispatchController | null}
109446
110600
  */
@@ -109451,16 +110605,48 @@ function requireDeduplicationHandler() {
109451
110605
  __privateAdd(this, _onComplete, null);
109452
110606
  __privateSet(this, _primaryHandler, primaryHandler);
109453
110607
  __privateSet(this, _onComplete, onComplete);
110608
+ __privateSet(this, _maxBufferSize, maxBufferSize);
109454
110609
  }
109455
110610
  /**
109456
- * Add a waiting handler that will receive the buffered response
110611
+ * Add a waiting handler that will receive response events.
110612
+ * Returns false if deduplication can no longer safely attach this handler.
110613
+ *
109457
110614
  * @param {DispatchHandler} handler
110615
+ * @returns {boolean}
109458
110616
  */
109459
110617
  addWaitingHandler(handler) {
109460
- __privateGet(this, _waitingHandlers).push(handler);
110618
+ var _a3, _b2;
110619
+ if (__privateGet(this, _completed) || __privateGet(this, _responseDataStarted)) {
110620
+ return false;
110621
+ }
110622
+ const waitingHandler = __privateMethod(this, _DeduplicationHandler_instances, createWaitingHandler_fn).call(this, handler);
110623
+ const waitingController = waitingHandler.controller;
110624
+ try {
110625
+ (_a3 = handler.onRequestStart) == null ? void 0 : _a3.call(handler, waitingController, null);
110626
+ if (waitingController.aborted) {
110627
+ waitingHandler.done = true;
110628
+ return true;
110629
+ }
110630
+ if (__privateGet(this, _responseStarted)) {
110631
+ (_b2 = handler.onResponseStart) == null ? void 0 : _b2.call(
110632
+ handler,
110633
+ waitingController,
110634
+ __privateGet(this, _statusCode),
110635
+ __privateGet(this, _headers),
110636
+ __privateGet(this, _statusMessage)
110637
+ );
110638
+ }
110639
+ } catch {
110640
+ waitingHandler.done = true;
110641
+ return true;
110642
+ }
110643
+ if (!waitingController.aborted) {
110644
+ __privateGet(this, _waitingHandlers).push(waitingHandler);
110645
+ }
110646
+ return true;
109461
110647
  }
109462
110648
  /**
109463
- * @param {() => void} abort
110649
+ * @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller
109464
110650
  * @param {any} context
109465
110651
  */
109466
110652
  onRequestStart(controller, context) {
@@ -109485,30 +110671,100 @@ function requireDeduplicationHandler() {
109485
110671
  * @param {string} statusMessage
109486
110672
  */
109487
110673
  onResponseStart(controller, statusCode, headers2, statusMessage) {
109488
- var _a3, _b2;
110674
+ var _a3, _b2, _c2;
110675
+ __privateSet(this, _responseStarted, true);
109489
110676
  __privateSet(this, _statusCode, statusCode);
109490
110677
  __privateSet(this, _headers, headers2);
109491
110678
  __privateSet(this, _statusMessage, statusMessage);
109492
110679
  (_b2 = (_a3 = __privateGet(this, _primaryHandler)).onResponseStart) == null ? void 0 : _b2.call(_a3, controller, statusCode, headers2, statusMessage);
110680
+ for (const waitingHandler of __privateGet(this, _waitingHandlers)) {
110681
+ const { handler, controller: waitingController } = waitingHandler;
110682
+ if (waitingHandler.done || waitingController.aborted) {
110683
+ waitingHandler.done = true;
110684
+ continue;
110685
+ }
110686
+ try {
110687
+ (_c2 = handler.onResponseStart) == null ? void 0 : _c2.call(
110688
+ handler,
110689
+ waitingController,
110690
+ statusCode,
110691
+ headers2,
110692
+ statusMessage
110693
+ );
110694
+ } catch {
110695
+ }
110696
+ if (waitingController.aborted) {
110697
+ waitingHandler.done = true;
110698
+ }
110699
+ }
110700
+ __privateMethod(this, _DeduplicationHandler_instances, pruneDoneWaitingHandlers_fn).call(this);
109493
110701
  }
109494
110702
  /**
109495
110703
  * @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller
109496
110704
  * @param {Buffer} chunk
109497
110705
  */
109498
110706
  onResponseData(controller, chunk) {
109499
- var _a3, _b2;
109500
- __privateGet(this, _chunks).push(Buffer.from(chunk));
110707
+ var _a3, _b2, _c2;
110708
+ if (__privateGet(this, _aborted) || __privateGet(this, _completed)) {
110709
+ return;
110710
+ }
110711
+ __privateSet(this, _responseDataStarted, true);
109501
110712
  (_b2 = (_a3 = __privateGet(this, _primaryHandler)).onResponseData) == null ? void 0 : _b2.call(_a3, controller, chunk);
110713
+ for (const waitingHandler of __privateGet(this, _waitingHandlers)) {
110714
+ const { handler, controller: waitingController } = waitingHandler;
110715
+ if (waitingHandler.done || waitingController.aborted) {
110716
+ waitingHandler.done = true;
110717
+ continue;
110718
+ }
110719
+ if (waitingController.paused) {
110720
+ __privateMethod(this, _DeduplicationHandler_instances, bufferWaitingChunk_fn).call(this, waitingHandler, chunk);
110721
+ continue;
110722
+ }
110723
+ try {
110724
+ (_c2 = handler.onResponseData) == null ? void 0 : _c2.call(handler, waitingController, chunk);
110725
+ } catch {
110726
+ }
110727
+ if (waitingController.aborted) {
110728
+ waitingHandler.done = true;
110729
+ waitingHandler.bufferedChunks = [];
110730
+ waitingHandler.bufferedBytes = 0;
110731
+ }
110732
+ }
110733
+ __privateMethod(this, _DeduplicationHandler_instances, pruneDoneWaitingHandlers_fn).call(this);
109502
110734
  }
109503
110735
  /**
109504
110736
  * @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller
109505
110737
  * @param {object} trailers
109506
110738
  */
109507
110739
  onResponseEnd(controller, trailers) {
109508
- var _a3, _b2, _c2;
110740
+ var _a3, _b2, _c2, _d, _e2;
110741
+ if (__privateGet(this, _aborted) || __privateGet(this, _completed)) {
110742
+ return;
110743
+ }
110744
+ __privateSet(this, _completed, true);
109509
110745
  (_b2 = (_a3 = __privateGet(this, _primaryHandler)).onResponseEnd) == null ? void 0 : _b2.call(_a3, controller, trailers);
109510
- __privateMethod(this, _DeduplicationHandler_instances, notifyWaitingHandlers_fn).call(this);
109511
- (_c2 = __privateGet(this, _onComplete)) == null ? void 0 : _c2.call(this);
110746
+ for (const waitingHandler of __privateGet(this, _waitingHandlers)) {
110747
+ if (waitingHandler.done || waitingHandler.controller.aborted) {
110748
+ waitingHandler.done = true;
110749
+ continue;
110750
+ }
110751
+ __privateMethod(this, _DeduplicationHandler_instances, flushWaitingHandler_fn).call(this, waitingHandler);
110752
+ if (waitingHandler.done || waitingHandler.controller.aborted) {
110753
+ waitingHandler.done = true;
110754
+ continue;
110755
+ }
110756
+ if (waitingHandler.controller.paused && waitingHandler.bufferedChunks.length > 0) {
110757
+ waitingHandler.pendingTrailers = trailers;
110758
+ continue;
110759
+ }
110760
+ try {
110761
+ (_d = (_c2 = waitingHandler.handler).onResponseEnd) == null ? void 0 : _d.call(_c2, waitingHandler.controller, trailers);
110762
+ } catch {
110763
+ }
110764
+ waitingHandler.done = true;
110765
+ }
110766
+ __privateMethod(this, _DeduplicationHandler_instances, pruneDoneWaitingHandlers_fn).call(this);
110767
+ (_e2 = __privateGet(this, _onComplete)) == null ? void 0 : _e2.call(this);
109512
110768
  }
109513
110769
  /**
109514
110770
  * @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller
@@ -109516,103 +110772,155 @@ function requireDeduplicationHandler() {
109516
110772
  */
109517
110773
  onResponseError(controller, err) {
109518
110774
  var _a3, _b2, _c2;
110775
+ if (__privateGet(this, _completed)) {
110776
+ return;
110777
+ }
109519
110778
  __privateSet(this, _aborted, true);
110779
+ __privateSet(this, _completed, true);
109520
110780
  (_b2 = (_a3 = __privateGet(this, _primaryHandler)).onResponseError) == null ? void 0 : _b2.call(_a3, controller, err);
109521
- __privateMethod(this, _DeduplicationHandler_instances, notifyWaitingHandlersError_fn).call(this, err);
110781
+ for (const waitingHandler of __privateGet(this, _waitingHandlers)) {
110782
+ __privateMethod(this, _DeduplicationHandler_instances, errorWaitingHandler_fn).call(this, waitingHandler, err);
110783
+ }
110784
+ __privateSet(this, _waitingHandlers, []);
109522
110785
  (_c2 = __privateGet(this, _onComplete)) == null ? void 0 : _c2.call(this);
109523
110786
  }
109524
110787
  }
109525
110788
  _primaryHandler = new WeakMap();
109526
110789
  _waitingHandlers = new WeakMap();
109527
- _chunks = new WeakMap();
110790
+ _maxBufferSize = new WeakMap();
109528
110791
  _statusCode = new WeakMap();
109529
110792
  _headers = new WeakMap();
109530
110793
  _statusMessage = new WeakMap();
109531
110794
  _aborted = new WeakMap();
110795
+ _responseStarted = new WeakMap();
110796
+ _responseDataStarted = new WeakMap();
110797
+ _completed = new WeakMap();
109532
110798
  _controller = new WeakMap();
109533
110799
  _onComplete = new WeakMap();
109534
110800
  _DeduplicationHandler_instances = new WeakSet();
109535
110801
  /**
109536
- * Notify all waiting handlers with the buffered response
110802
+ * @param {DispatchHandler} handler
110803
+ * @returns {WaitingHandler}
109537
110804
  */
109538
- notifyWaitingHandlers_fn = function() {
109539
- var _a3, _b2, _c2, _d;
109540
- const body2 = Buffer.concat(__privateGet(this, _chunks));
109541
- for (const handler of __privateGet(this, _waitingHandlers)) {
109542
- const waitingController = {
109543
- resume() {
109544
- },
109545
- pause() {
109546
- },
109547
- get paused() {
109548
- return false;
109549
- },
109550
- get aborted() {
109551
- return false;
109552
- },
109553
- get reason() {
109554
- return null;
109555
- },
109556
- abort() {
109557
- }
109558
- };
109559
- try {
109560
- (_a3 = handler.onRequestStart) == null ? void 0 : _a3.call(handler, waitingController, null);
109561
- if (waitingController.aborted) {
109562
- continue;
110805
+ createWaitingHandler_fn = function(handler) {
110806
+ const waitingHandler = {
110807
+ handler,
110808
+ controller: null,
110809
+ bufferedChunks: [],
110810
+ bufferedBytes: 0,
110811
+ pendingTrailers: null,
110812
+ done: false
110813
+ };
110814
+ const state = {
110815
+ aborted: false,
110816
+ paused: false,
110817
+ reason: null
110818
+ };
110819
+ waitingHandler.controller = {
110820
+ resume: () => {
110821
+ var _a3, _b2;
110822
+ if (state.aborted) {
110823
+ return;
109563
110824
  }
109564
- (_b2 = handler.onResponseStart) == null ? void 0 : _b2.call(
109565
- handler,
109566
- waitingController,
109567
- __privateGet(this, _statusCode),
109568
- __privateGet(this, _headers),
109569
- __privateGet(this, _statusMessage)
109570
- );
109571
- if (waitingController.aborted) {
109572
- continue;
110825
+ state.paused = false;
110826
+ __privateMethod(this, _DeduplicationHandler_instances, flushWaitingHandler_fn).call(this, waitingHandler);
110827
+ if (__privateGet(this, _completed) && waitingHandler.pendingTrailers && waitingHandler.bufferedChunks.length === 0 && !state.paused && !state.aborted) {
110828
+ try {
110829
+ (_b2 = (_a3 = waitingHandler.handler).onResponseEnd) == null ? void 0 : _b2.call(_a3, waitingHandler.controller, waitingHandler.pendingTrailers);
110830
+ } catch {
110831
+ }
110832
+ waitingHandler.pendingTrailers = null;
110833
+ waitingHandler.done = true;
109573
110834
  }
109574
- if (body2.length > 0) {
109575
- (_c2 = handler.onResponseData) == null ? void 0 : _c2.call(handler, waitingController, body2);
110835
+ __privateMethod(this, _DeduplicationHandler_instances, pruneDoneWaitingHandlers_fn).call(this);
110836
+ },
110837
+ pause: () => {
110838
+ if (!state.aborted) {
110839
+ state.paused = true;
109576
110840
  }
109577
- (_d = handler.onResponseEnd) == null ? void 0 : _d.call(handler, waitingController, {});
109578
- } catch {
110841
+ },
110842
+ get paused() {
110843
+ return state.paused;
110844
+ },
110845
+ get aborted() {
110846
+ return state.aborted;
110847
+ },
110848
+ get reason() {
110849
+ return state.reason;
110850
+ },
110851
+ abort: (reason) => {
110852
+ state.aborted = true;
110853
+ state.reason = reason ?? null;
110854
+ waitingHandler.done = true;
110855
+ waitingHandler.pendingTrailers = null;
110856
+ waitingHandler.bufferedChunks = [];
110857
+ waitingHandler.bufferedBytes = 0;
109579
110858
  }
110859
+ };
110860
+ return waitingHandler;
110861
+ };
110862
+ /**
110863
+ * @param {WaitingHandler} waitingHandler
110864
+ * @param {Buffer} chunk
110865
+ */
110866
+ bufferWaitingChunk_fn = function(waitingHandler, chunk) {
110867
+ if (waitingHandler.done || waitingHandler.controller.aborted) {
110868
+ waitingHandler.done = true;
110869
+ waitingHandler.bufferedChunks = [];
110870
+ waitingHandler.bufferedBytes = 0;
110871
+ return;
110872
+ }
110873
+ const bufferedChunk = Buffer.from(chunk);
110874
+ waitingHandler.bufferedChunks.push(bufferedChunk);
110875
+ waitingHandler.bufferedBytes += bufferedChunk.length;
110876
+ if (waitingHandler.bufferedBytes > __privateGet(this, _maxBufferSize)) {
110877
+ const err = new RequestAbortedError(`Deduplicated waiting handler exceeded maxBufferSize (${__privateGet(this, _maxBufferSize)} bytes) while paused`);
110878
+ __privateMethod(this, _DeduplicationHandler_instances, errorWaitingHandler_fn).call(this, waitingHandler, err);
109580
110879
  }
109581
- __privateSet(this, _waitingHandlers, []);
109582
- __privateSet(this, _chunks, []);
109583
110880
  };
109584
110881
  /**
109585
- * Notify all waiting handlers of an error
109586
- * @param {Error} err
110882
+ * @param {WaitingHandler} waitingHandler
109587
110883
  */
109588
- notifyWaitingHandlersError_fn = function(err) {
109589
- var _a3, _b2;
109590
- for (const handler of __privateGet(this, _waitingHandlers)) {
109591
- const waitingController = {
109592
- resume() {
109593
- },
109594
- pause() {
109595
- },
109596
- get paused() {
109597
- return false;
109598
- },
109599
- get aborted() {
109600
- return true;
109601
- },
109602
- get reason() {
109603
- return err;
109604
- },
109605
- abort() {
109606
- }
109607
- };
110884
+ flushWaitingHandler_fn = function(waitingHandler) {
110885
+ var _a3;
110886
+ const { handler, controller } = waitingHandler;
110887
+ while (!waitingHandler.done && !controller.aborted && !controller.paused && waitingHandler.bufferedChunks.length > 0) {
110888
+ const bufferedChunk = waitingHandler.bufferedChunks.shift();
110889
+ waitingHandler.bufferedBytes -= bufferedChunk.length;
109608
110890
  try {
109609
- (_a3 = handler.onRequestStart) == null ? void 0 : _a3.call(handler, waitingController, null);
109610
- (_b2 = handler.onResponseError) == null ? void 0 : _b2.call(handler, waitingController, err);
110891
+ (_a3 = handler.onResponseData) == null ? void 0 : _a3.call(handler, controller, bufferedChunk);
109611
110892
  } catch {
109612
110893
  }
110894
+ if (controller.aborted) {
110895
+ waitingHandler.done = true;
110896
+ waitingHandler.pendingTrailers = null;
110897
+ waitingHandler.bufferedChunks = [];
110898
+ waitingHandler.bufferedBytes = 0;
110899
+ break;
110900
+ }
109613
110901
  }
109614
- __privateSet(this, _waitingHandlers, []);
109615
- __privateSet(this, _chunks, []);
110902
+ };
110903
+ /**
110904
+ * @param {WaitingHandler} waitingHandler
110905
+ * @param {Error} err
110906
+ */
110907
+ errorWaitingHandler_fn = function(waitingHandler, err) {
110908
+ var _a3, _b2;
110909
+ if (waitingHandler.done) {
110910
+ return;
110911
+ }
110912
+ waitingHandler.done = true;
110913
+ waitingHandler.pendingTrailers = null;
110914
+ waitingHandler.bufferedChunks = [];
110915
+ waitingHandler.bufferedBytes = 0;
110916
+ try {
110917
+ waitingHandler.controller.abort(err);
110918
+ (_b2 = (_a3 = waitingHandler.handler).onResponseError) == null ? void 0 : _b2.call(_a3, waitingHandler.controller, err);
110919
+ } catch {
110920
+ }
110921
+ };
110922
+ pruneDoneWaitingHandlers_fn = function() {
110923
+ __privateSet(this, _waitingHandlers, __privateGet(this, _waitingHandlers).filter((waitingHandler) => waitingHandler.done === false));
109616
110924
  };
109617
110925
  deduplicationHandler = DeduplicationHandler;
109618
110926
  return deduplicationHandler;
@@ -109622,7 +110930,7 @@ var hasRequiredDeduplicate;
109622
110930
  function requireDeduplicate() {
109623
110931
  if (hasRequiredDeduplicate) return deduplicate;
109624
110932
  hasRequiredDeduplicate = 1;
109625
- const diagnosticsChannel = require$$0$5;
110933
+ const diagnosticsChannel = require$$0$6;
109626
110934
  const util2 = requireUtil$5();
109627
110935
  const DeduplicationHandler = requireDeduplicationHandler();
109628
110936
  const { normalizeHeaders, makeCacheKey, makeDeduplicationKey } = requireCache$2();
@@ -109631,7 +110939,8 @@ function requireDeduplicate() {
109631
110939
  const {
109632
110940
  methods = ["GET"],
109633
110941
  skipHeaderNames = [],
109634
- excludeHeaderNames = []
110942
+ excludeHeaderNames = [],
110943
+ maxBufferSize = 5 * 1024 * 1024
109635
110944
  } = opts;
109636
110945
  if (typeof opts !== "object" || opts === null) {
109637
110946
  throw new TypeError(`expected type of opts to be an Object, got ${opts === null ? "null" : typeof opts}`);
@@ -109650,6 +110959,9 @@ function requireDeduplicate() {
109650
110959
  if (!Array.isArray(excludeHeaderNames)) {
109651
110960
  throw new TypeError(`expected opts.excludeHeaderNames to be an array, got ${typeof excludeHeaderNames}`);
109652
110961
  }
110962
+ if (!Number.isFinite(maxBufferSize) || maxBufferSize <= 0) {
110963
+ throw new TypeError(`expected opts.maxBufferSize to be a positive finite number, got ${maxBufferSize}`);
110964
+ }
109653
110965
  const skipHeaderNamesSet = new Set(skipHeaderNames.map((name2) => name2.toLowerCase()));
109654
110966
  const excludeHeaderNamesSet = new Set(excludeHeaderNames.map((name2) => name2.toLowerCase()));
109655
110967
  const pendingRequests = /* @__PURE__ */ new Map();
@@ -109673,8 +110985,10 @@ function requireDeduplicate() {
109673
110985
  const dedupeKey = makeDeduplicationKey(cacheKey, excludeHeaderNamesSet);
109674
110986
  const pendingHandler = pendingRequests.get(dedupeKey);
109675
110987
  if (pendingHandler) {
109676
- pendingHandler.addWaitingHandler(handler);
109677
- return true;
110988
+ if (pendingHandler.addWaitingHandler(handler)) {
110989
+ return true;
110990
+ }
110991
+ return dispatch2(opts2, handler);
109678
110992
  }
109679
110993
  const deduplicationHandler2 = new DeduplicationHandler(
109680
110994
  handler,
@@ -109683,7 +110997,8 @@ function requireDeduplicate() {
109683
110997
  if (pendingRequestsChannel.hasSubscribers) {
109684
110998
  pendingRequestsChannel.publish({ size: pendingRequests.size, key: dedupeKey, type: "removed" });
109685
110999
  }
109686
- }
111000
+ },
111001
+ maxBufferSize
109687
111002
  );
109688
111003
  pendingRequests.set(dedupeKey, deduplicationHandler2);
109689
111004
  if (pendingRequestsChannel.hasSubscribers) {
@@ -109701,7 +111016,7 @@ function requireSqliteCacheStore() {
109701
111016
  var _maxEntrySize, _maxCount, _db, _getValuesQuery, _updateValueQuery, _insertValueQuery, _deleteExpiredValuesQuery, _deleteByUrlQuery, _countEntriesQuery, _deleteOldValuesQuery, _SqliteCacheStore_instances, prune_fn, makeValueUrl_fn, findValue_fn, _a3;
109702
111017
  if (hasRequiredSqliteCacheStore) return sqliteCacheStore;
109703
111018
  hasRequiredSqliteCacheStore = 1;
109704
- const { Writable } = require$$0$3;
111019
+ const { Writable } = require$$0$4;
109705
111020
  const { assertCacheKey, assertCacheValue } = requireCache$2();
109706
111021
  let DatabaseSync;
109707
111022
  const VERSION = 3;
@@ -109863,7 +111178,7 @@ function requireSqliteCacheStore() {
109863
111178
  SELECT
109864
111179
  id
109865
111180
  FROM cacheInterceptorV${VERSION}
109866
- ORDER BY cachedAt DESC
111181
+ ORDER BY cachedAt ASC
109867
111182
  LIMIT ?
109868
111183
  )
109869
111184
  `));
@@ -109918,7 +111233,6 @@ function requireSqliteCacheStore() {
109918
111233
  existingValue.id
109919
111234
  );
109920
111235
  } else {
109921
- __privateMethod(this, _SqliteCacheStore_instances, prune_fn).call(this);
109922
111236
  __privateGet(this, _insertValueQuery).run(
109923
111237
  url2,
109924
111238
  key.method,
@@ -109933,6 +111247,7 @@ function requireSqliteCacheStore() {
109933
111247
  value.cachedAt,
109934
111248
  value.staleAt
109935
111249
  );
111250
+ __privateMethod(this, _SqliteCacheStore_instances, prune_fn).call(this);
109936
111251
  }
109937
111252
  }
109938
111253
  /**
@@ -110019,7 +111334,7 @@ function requireSqliteCacheStore() {
110019
111334
  const now2 = Date.now();
110020
111335
  for (const value of values) {
110021
111336
  if (now2 >= value.deleteAt && !canBeExpired) {
110022
- return void 0;
111337
+ continue;
110023
111338
  }
110024
111339
  let matches = true;
110025
111340
  if (value.vary) {
@@ -110068,7 +111383,7 @@ function requireHeaders() {
110068
111383
  isValidHeaderValue
110069
111384
  } = requireUtil$4();
110070
111385
  const { webidl } = requireWebidl();
110071
- const assert2 = require$$0$2;
111386
+ const assert2 = require$$0$3;
110072
111387
  const util2 = require$$3;
110073
111388
  function isHTTPWhiteSpaceCharCode(code2) {
110074
111389
  return code2 === 10 || code2 === 13 || code2 === 9 || code2 === 32;
@@ -110545,7 +111860,7 @@ function requireResponse() {
110545
111860
  const { webidl } = requireWebidl();
110546
111861
  const { URLSerializer } = requireDataUrl();
110547
111862
  const { kConstruct } = requireSymbols();
110548
- const assert2 = require$$0$2;
111863
+ const assert2 = require$$0$3;
110549
111864
  const { isomorphicEncode, serializeJavascriptValueToJSONString } = requireInfra();
110550
111865
  const textEncoder2 = new TextEncoder("utf-8");
110551
111866
  const _Response = class _Response {
@@ -110977,8 +112292,8 @@ function requireRequest() {
110977
112292
  const { webidl } = requireWebidl();
110978
112293
  const { URLSerializer } = requireDataUrl();
110979
112294
  const { kConstruct } = requireSymbols();
110980
- const assert2 = require$$0$2;
110981
- const { getMaxListeners, setMaxListeners, defaultMaxListeners } = require$$6;
112295
+ const assert2 = require$$0$3;
112296
+ const { getMaxListeners, setMaxListeners, defaultMaxListeners } = require$$0$2;
110982
112297
  const kAbortController = Symbol("abortController");
110983
112298
  const requestFinalizer = new FinalizationRegistry(({ signal, abort }) => {
110984
112299
  signal.removeEventListener("abort", abort);
@@ -111716,7 +113031,7 @@ var hasRequiredSubresourceIntegrity;
111716
113031
  function requireSubresourceIntegrity() {
111717
113032
  if (hasRequiredSubresourceIntegrity) return subresourceIntegrity;
111718
113033
  hasRequiredSubresourceIntegrity = 1;
111719
- const assert2 = require$$0$2;
113034
+ const assert2 = require$$0$3;
111720
113035
  const { runtimeFeatures: runtimeFeatures2 } = requireRuntimeFeatures();
111721
113036
  const validSRIHashAlgorithmTokenSet = /* @__PURE__ */ new Map([["sha256", 0], ["sha384", 1], ["sha512", 2]]);
111722
113037
  let crypto$1;
@@ -111900,7 +113215,7 @@ function requireFetch() {
111900
113215
  includesCredentials,
111901
113216
  isTraversableNavigable
111902
113217
  } = requireUtil$4();
111903
- const assert2 = require$$0$2;
113218
+ const assert2 = require$$0$3;
111904
113219
  const { safelyExtractBody, extractBody } = requireBody();
111905
113220
  const {
111906
113221
  redirectStatusSet,
@@ -111909,8 +113224,8 @@ function requireFetch() {
111909
113224
  requestBodyHeader,
111910
113225
  subresourceSet
111911
113226
  } = requireConstants$3();
111912
- const EE = require$$6;
111913
- const { Readable, pipeline, finished, isErrored, isReadable } = require$$0$3;
113227
+ const EE = require$$0$2;
113228
+ const { Readable, pipeline, finished, isErrored, isReadable } = require$$0$4;
111914
113229
  const { addAbortListener, bufferToLowerCasedHeaderName } = requireUtil$5();
111915
113230
  const { dataURLProcessor, serializeAMimeType, minimizeSupportedMimeType } = requireDataUrl();
111916
113231
  const { getGlobalDispatcher } = requireGlobal();
@@ -112012,8 +113327,11 @@ function requireFetch() {
112012
113327
  request: request2,
112013
113328
  processResponseEndOfBody: handleFetchDone,
112014
113329
  processResponse,
112015
- dispatcher: getRequestDispatcher(requestObject)
113330
+ dispatcher: getRequestDispatcher(requestObject),
112016
113331
  // undici
113332
+ // Keep requestObject alive to prevent its AbortController from being GC'd
113333
+ // See https://github.com/nodejs/undici/issues/4627
113334
+ requestObject
112017
113335
  });
112018
113336
  return p2.promise;
112019
113337
  }
@@ -112083,8 +113401,10 @@ function requireFetch() {
112083
113401
  processResponseEndOfBody,
112084
113402
  processResponseConsumeBody,
112085
113403
  useParallelQueue = false,
112086
- dispatcher: dispatcher2 = getGlobalDispatcher()
113404
+ dispatcher: dispatcher2 = getGlobalDispatcher(),
112087
113405
  // undici
113406
+ requestObject = null
113407
+ // Keep alive to prevent AbortController GC, see #4627
112088
113408
  }) {
112089
113409
  var _a3, _b2, _c2;
112090
113410
  assert2(dispatcher2);
@@ -112108,7 +113428,9 @@ function requireFetch() {
112108
113428
  processResponseConsumeBody,
112109
113429
  processResponseEndOfBody,
112110
113430
  taskDestination,
112111
- crossOriginIsolatedCapability
113431
+ crossOriginIsolatedCapability,
113432
+ // Keep requestObject alive to prevent its AbortController from being GC'd
113433
+ requestObject
112112
113434
  };
112113
113435
  assert2(!request2.body || request2.body.stream);
112114
113436
  if (request2.window === "client") {
@@ -112248,7 +113570,7 @@ function requireFetch() {
112248
113570
  }
112249
113571
  case "blob:": {
112250
113572
  if (!resolveObjectURL) {
112251
- resolveObjectURL = require$$0$6.resolveObjectURL;
113573
+ resolveObjectURL = require$$0$7.resolveObjectURL;
112252
113574
  }
112253
113575
  const blobURLEntry = requestCurrentURL(request2);
112254
113576
  if (blobURLEntry.search.length !== 0) {
@@ -112352,7 +113674,7 @@ function requireFetch() {
112352
113674
  cacheState = "";
112353
113675
  }
112354
113676
  let responseStatus = 0;
112355
- if (fetchParams.request.mode !== "navigator" || !response2.hasCrossOriginRedirects) {
113677
+ if (fetchParams.request.mode !== "navigate" || !response2.hasCrossOriginRedirects) {
112356
113678
  responseStatus = response2.status;
112357
113679
  const mimeType = extractMimeType(response2.headersList);
112358
113680
  if (mimeType !== "failure") {
@@ -112513,7 +113835,7 @@ function requireFetch() {
112513
113835
  if (contentLength != null) {
112514
113836
  contentLengthHeaderValue = isomorphicEncode(`${contentLength}`);
112515
113837
  }
112516
- if (contentLengthHeaderValue != null) {
113838
+ if (contentLengthHeaderValue != null && !httpRequest.headersList.contains("content-length", true)) {
112517
113839
  httpRequest.headersList.append("content-length", contentLengthHeaderValue, true);
112518
113840
  }
112519
113841
  if (contentLength != null && httpRequest.keepalive) ;
@@ -112586,10 +113908,10 @@ function requireFetch() {
112586
113908
  response2.rangeRequested = true;
112587
113909
  }
112588
113910
  response2.requestIncludesCredentials = includeCredentials;
112589
- if (response2.status === 401 && httpRequest.responseTainting !== "cors" && includeCredentials && isTraversableNavigable(request2.traversableForUserPrompts)) {
113911
+ if (response2.status === 401 && httpRequest.responseTainting !== "cors" && includeCredentials && (request2.useURLCredentials !== void 0 || isTraversableNavigable(request2.traversableForUserPrompts))) {
112590
113912
  if (request2.body != null) {
112591
113913
  if (request2.body.source == null) {
112592
- return makeNetworkError("expected non-null body source");
113914
+ return response2;
112593
113915
  }
112594
113916
  request2.body = safelyExtractBody(request2.body.source)[0];
112595
113917
  }
@@ -112792,9 +114114,11 @@ function requireFetch() {
112792
114114
  function dispatch2({ body: body2 }) {
112793
114115
  const url2 = requestCurrentURL(request2);
112794
114116
  const agent2 = fetchParams.controller.dispatcher;
114117
+ const path2 = url2.pathname + url2.search;
114118
+ const hasTrailingQuestionMark = url2.search.length === 0 && url2.href[url2.href.length - url2.hash.length - 1] === "?";
112795
114119
  return new Promise((resolve2, reject) => agent2.dispatch(
112796
114120
  {
112797
- path: url2.pathname + url2.search,
114121
+ path: hasTrailingQuestionMark ? `${path2}?` : path2,
112798
114122
  origin: url2.origin,
112799
114123
  method: request2.method,
112800
114124
  body: agent2.isMockActive ? request2.body && (request2.body.source || request2.body.stream) : body2,
@@ -112825,7 +114149,15 @@ function requireFetch() {
112825
114149
  }
112826
114150
  const headersList = new HeadersList();
112827
114151
  for (let i = 0; i < rawHeaders.length; i += 2) {
112828
- headersList.append(bufferToLowerCasedHeaderName(rawHeaders[i]), rawHeaders[i + 1].toString("latin1"), true);
114152
+ const nameStr = bufferToLowerCasedHeaderName(rawHeaders[i]);
114153
+ const value = rawHeaders[i + 1];
114154
+ if (Array.isArray(value) && !Buffer.isBuffer(rawHeaders[i + 1])) {
114155
+ for (const val of value) {
114156
+ headersList.append(nameStr, val.toString("latin1"), true);
114157
+ }
114158
+ } else {
114159
+ headersList.append(nameStr, value.toString("latin1"), true);
114160
+ }
112829
114161
  }
112830
114162
  const location2 = headersList.get("location", true);
112831
114163
  this.body = new Readable({ read: resume });
@@ -112940,7 +114272,15 @@ function requireFetch() {
112940
114272
  }
112941
114273
  const headersList = new HeadersList();
112942
114274
  for (let i = 0; i < rawHeaders.length; i += 2) {
112943
- headersList.append(bufferToLowerCasedHeaderName(rawHeaders[i]), rawHeaders[i + 1].toString("latin1"), true);
114275
+ const nameStr = bufferToLowerCasedHeaderName(rawHeaders[i]);
114276
+ const value = rawHeaders[i + 1];
114277
+ if (Array.isArray(value) && !Buffer.isBuffer(rawHeaders[i + 1])) {
114278
+ for (const val of value) {
114279
+ headersList.append(nameStr, val.toString("latin1"), true);
114280
+ }
114281
+ } else {
114282
+ headersList.append(nameStr, value.toString("latin1"), true);
114283
+ }
112944
114284
  }
112945
114285
  resolve2({
112946
114286
  status,
@@ -112967,7 +114307,7 @@ var hasRequiredUtil$3;
112967
114307
  function requireUtil$3() {
112968
114308
  if (hasRequiredUtil$3) return util$3;
112969
114309
  hasRequiredUtil$3 = 1;
112970
- const assert2 = require$$0$2;
114310
+ const assert2 = require$$0$3;
112971
114311
  const { URLSerializer } = requireDataUrl();
112972
114312
  const { isValidHeaderName } = requireUtil$4();
112973
114313
  function urlEquals(A2, B2, excludeFragment = false) {
@@ -112998,7 +114338,7 @@ function requireCache() {
112998
114338
  var _relevantRequestResponseList, _Cache_instances, batchCacheOperations_fn, queryCache_fn, requestMatchesCachedItem_fn, internalMatchAll_fn;
112999
114339
  if (hasRequiredCache) return cache;
113000
114340
  hasRequiredCache = 1;
113001
- const assert2 = require$$0$2;
114341
+ const assert2 = require$$0$3;
113002
114342
  const { kConstruct } = requireSymbols();
113003
114343
  const { urlEquals, getFieldValues } = requireUtil$3();
113004
114344
  const { kEnumerableProperty, isDisturbed } = requireUtil$5();
@@ -113850,7 +115190,7 @@ function requireParse$1() {
113850
115190
  const { collectASequenceOfCodePointsFast } = requireInfra();
113851
115191
  const { maxNameValuePairSize, maxAttributeValueSize } = requireConstants$2();
113852
115192
  const { isCTLExcludingHtab } = requireUtil$2();
113853
- const assert2 = require$$0$2;
115193
+ const assert2 = require$$0$3;
113854
115194
  const { unescape: qsUnescape } = require$$5$1;
113855
115195
  function parseSetCookie(header) {
113856
115196
  if (isCTLExcludingHtab(header)) {
@@ -114460,7 +115800,7 @@ function requireUtil$1() {
114460
115800
  if (hasRequiredUtil$1) return util$1;
114461
115801
  hasRequiredUtil$1 = 1;
114462
115802
  const { states, opcodes } = requireConstants$1();
114463
- const { isUtf8 } = require$$0$6;
115803
+ const { isUtf8 } = require$$0$7;
114464
115804
  const { removeHTTPWhitespace } = requireDataUrl();
114465
115805
  const { collectASequenceOfCodePointsFast } = requireInfra();
114466
115806
  function isConnecting(readyState) {
@@ -114552,13 +115892,17 @@ function requireUtil$1() {
114552
115892
  return extensionList;
114553
115893
  }
114554
115894
  function isValidClientWindowBits(value) {
115895
+ if (value.length === 0) {
115896
+ return false;
115897
+ }
114555
115898
  for (let i = 0; i < value.length; i++) {
114556
115899
  const byte = value.charCodeAt(i);
114557
115900
  if (byte < 48 || byte > 57) {
114558
115901
  return false;
114559
115902
  }
114560
115903
  }
114561
- return true;
115904
+ const num = Number.parseInt(value, 10);
115905
+ return num >= 8 && num <= 15;
114562
115906
  }
114563
115907
  function getURLRecord(url2, baseURL) {
114564
115908
  let urlRecord;
@@ -114745,7 +116089,7 @@ function requireConnection() {
114745
116089
  const { Headers: Headers2, getHeadersList } = requireHeaders();
114746
116090
  const { getDecodeSplit } = requireUtil$4();
114747
116091
  const { WebsocketFrameSend } = requireFrame();
114748
- const assert2 = require$$0$2;
116092
+ const assert2 = require$$0$3;
114749
116093
  const { runtimeFeatures: runtimeFeatures2 } = requireRuntimeFeatures();
114750
116094
  const crypto$1 = runtimeFeatures2.has("crypto") ? crypto : null;
114751
116095
  let warningEmitted = false;
@@ -114894,23 +116238,36 @@ function requireConnection() {
114894
116238
  var permessageDeflate;
114895
116239
  var hasRequiredPermessageDeflate;
114896
116240
  function requirePermessageDeflate() {
114897
- var _inflate, _options2;
116241
+ var _inflate, _options2, _aborted, _currentCallback;
114898
116242
  if (hasRequiredPermessageDeflate) return permessageDeflate;
114899
116243
  hasRequiredPermessageDeflate = 1;
114900
116244
  const { createInflateRaw, Z_DEFAULT_WINDOWBITS } = require$$3$1;
114901
116245
  const { isValidClientWindowBits } = requireUtil$1();
116246
+ const { MessageSizeExceededError } = requireErrors();
114902
116247
  const tail = Buffer.from([0, 0, 255, 255]);
114903
116248
  const kBuffer = Symbol("kBuffer");
114904
116249
  const kLength = Symbol("kLength");
116250
+ const kDefaultMaxDecompressedSize = 4 * 1024 * 1024;
114905
116251
  class PerMessageDeflate {
116252
+ /**
116253
+ * @param {Map<string, string>} extensions
116254
+ */
114906
116255
  constructor(extensions2) {
114907
116256
  /** @type {import('node:zlib').InflateRaw} */
114908
116257
  __privateAdd(this, _inflate);
114909
116258
  __privateAdd(this, _options2, {});
116259
+ /** @type {boolean} */
116260
+ __privateAdd(this, _aborted, false);
116261
+ /** @type {Function|null} */
116262
+ __privateAdd(this, _currentCallback, null);
114910
116263
  __privateGet(this, _options2).serverNoContextTakeover = extensions2.has("server_no_context_takeover");
114911
116264
  __privateGet(this, _options2).serverMaxWindowBits = extensions2.get("server_max_window_bits");
114912
116265
  }
114913
116266
  decompress(chunk, fin, callback) {
116267
+ if (__privateGet(this, _aborted)) {
116268
+ callback(new MessageSizeExceededError());
116269
+ return;
116270
+ }
114914
116271
  if (!__privateGet(this, _inflate)) {
114915
116272
  let windowBits = Z_DEFAULT_WINDOWBITS;
114916
116273
  if (__privateGet(this, _options2).serverMaxWindowBits) {
@@ -114920,32 +116277,59 @@ function requirePermessageDeflate() {
114920
116277
  }
114921
116278
  windowBits = Number.parseInt(__privateGet(this, _options2).serverMaxWindowBits);
114922
116279
  }
114923
- __privateSet(this, _inflate, createInflateRaw({ windowBits }));
116280
+ try {
116281
+ __privateSet(this, _inflate, createInflateRaw({ windowBits }));
116282
+ } catch (err) {
116283
+ callback(err);
116284
+ return;
116285
+ }
114924
116286
  __privateGet(this, _inflate)[kBuffer] = [];
114925
116287
  __privateGet(this, _inflate)[kLength] = 0;
114926
116288
  __privateGet(this, _inflate).on("data", (data) => {
114927
- __privateGet(this, _inflate)[kBuffer].push(data);
116289
+ if (__privateGet(this, _aborted)) {
116290
+ return;
116291
+ }
114928
116292
  __privateGet(this, _inflate)[kLength] += data.length;
116293
+ if (__privateGet(this, _inflate)[kLength] > kDefaultMaxDecompressedSize) {
116294
+ __privateSet(this, _aborted, true);
116295
+ __privateGet(this, _inflate).removeAllListeners();
116296
+ __privateGet(this, _inflate).destroy();
116297
+ __privateSet(this, _inflate, null);
116298
+ if (__privateGet(this, _currentCallback)) {
116299
+ const cb = __privateGet(this, _currentCallback);
116300
+ __privateSet(this, _currentCallback, null);
116301
+ cb(new MessageSizeExceededError());
116302
+ }
116303
+ return;
116304
+ }
116305
+ __privateGet(this, _inflate)[kBuffer].push(data);
114929
116306
  });
114930
116307
  __privateGet(this, _inflate).on("error", (err) => {
114931
116308
  __privateSet(this, _inflate, null);
114932
116309
  callback(err);
114933
116310
  });
114934
116311
  }
116312
+ __privateSet(this, _currentCallback, callback);
114935
116313
  __privateGet(this, _inflate).write(chunk);
114936
116314
  if (fin) {
114937
116315
  __privateGet(this, _inflate).write(tail);
114938
116316
  }
114939
116317
  __privateGet(this, _inflate).flush(() => {
116318
+ if (__privateGet(this, _aborted) || !__privateGet(this, _inflate)) {
116319
+ return;
116320
+ }
114940
116321
  const full = Buffer.concat(__privateGet(this, _inflate)[kBuffer], __privateGet(this, _inflate)[kLength]);
114941
116322
  __privateGet(this, _inflate)[kBuffer].length = 0;
114942
116323
  __privateGet(this, _inflate)[kLength] = 0;
116324
+ __privateSet(this, _currentCallback, null);
114943
116325
  callback(null, full);
114944
116326
  });
114945
116327
  }
114946
116328
  }
114947
116329
  _inflate = new WeakMap();
114948
116330
  _options2 = new WeakMap();
116331
+ _aborted = new WeakMap();
116332
+ _currentCallback = new WeakMap();
114949
116333
  permessageDeflate = { PerMessageDeflate };
114950
116334
  return permessageDeflate;
114951
116335
  }
@@ -114955,8 +116339,8 @@ function requireReceiver() {
114955
116339
  var _buffers, _fragmentsBytes, _byteOffset, _loop, _state, _info, _fragments, _extensions, _handler;
114956
116340
  if (hasRequiredReceiver) return receiver;
114957
116341
  hasRequiredReceiver = 1;
114958
- const { Writable } = require$$0$3;
114959
- const assert2 = require$$0$2;
116342
+ const { Writable } = require$$0$4;
116343
+ const assert2 = require$$0$3;
114960
116344
  const { parserStates, opcodes, states, emptyBuffer, sentCloseFrameState } = requireConstants$1();
114961
116345
  const {
114962
116346
  isValidStatusCode,
@@ -114970,7 +116354,12 @@ function requireReceiver() {
114970
116354
  const { failWebsocketConnection } = requireConnection();
114971
116355
  const { WebsocketFrameSend } = requireFrame();
114972
116356
  const { PerMessageDeflate } = requirePermessageDeflate();
116357
+ const { MessageSizeExceededError } = requireErrors();
114973
116358
  class ByteParser extends Writable {
116359
+ /**
116360
+ * @param {import('./websocket').Handler} handler
116361
+ * @param {Map<string, string>|null} extensions
116362
+ */
114974
116363
  constructor(handler, extensions2) {
114975
116364
  super();
114976
116365
  __privateAdd(this, _buffers, []);
@@ -115085,12 +116474,12 @@ function requireReceiver() {
115085
116474
  }
115086
116475
  const buffer = this.consume(8);
115087
116476
  const upper = buffer.readUInt32BE(0);
115088
- if (upper > 2 ** 31 - 1) {
116477
+ const lower2 = buffer.readUInt32BE(4);
116478
+ if (upper !== 0 || lower2 > 2 ** 31 - 1) {
115089
116479
  failWebsocketConnection(__privateGet(this, _handler), 1009, "Received payload length > 2^31 bytes.");
115090
116480
  return;
115091
116481
  }
115092
- const lower2 = buffer.readUInt32BE(4);
115093
- __privateGet(this, _info).payloadLength = (upper << 8) + lower2;
116482
+ __privateGet(this, _info).payloadLength = lower2;
115094
116483
  __privateSet(this, _state, parserStates.READ_DATA);
115095
116484
  } else if (__privateGet(this, _state) === parserStates.READ_DATA) {
115096
116485
  if (__privateGet(this, _byteOffset) < __privateGet(this, _info).payloadLength) {
@@ -115110,7 +116499,8 @@ function requireReceiver() {
115110
116499
  } else {
115111
116500
  __privateGet(this, _extensions).get("permessage-deflate").decompress(body2, __privateGet(this, _info).fin, (error2, data) => {
115112
116501
  if (error2) {
115113
- failWebsocketConnection(__privateGet(this, _handler), 1007, error2.message);
116502
+ const code2 = error2 instanceof MessageSizeExceededError ? 1009 : 1007;
116503
+ failWebsocketConnection(__privateGet(this, _handler), code2, error2.message);
115114
116504
  return;
115115
116505
  }
115116
116506
  this.writeFragments(data);
@@ -115394,6 +116784,16 @@ function requireWebsocket() {
115394
116784
  const { SendQueue } = requireSender();
115395
116785
  const { WebsocketFrameSend } = requireFrame();
115396
116786
  const { channels } = requireDiagnostics();
116787
+ function getSocketAddress(socket) {
116788
+ var _a3, _b2;
116789
+ if (typeof (socket == null ? void 0 : socket.address) === "function") {
116790
+ return socket.address();
116791
+ }
116792
+ if (typeof ((_b2 = (_a3 = socket == null ? void 0 : socket.session) == null ? void 0 : _a3.socket) == null ? void 0 : _b2.address) === "function") {
116793
+ return socket.session.socket.address();
116794
+ }
116795
+ return null;
116796
+ }
115397
116797
  const _WebSocket = class _WebSocket extends EventTarget {
115398
116798
  /**
115399
116799
  * @param {string} url
@@ -115695,7 +117095,7 @@ function requireWebsocket() {
115695
117095
  if (channels.open.hasSubscribers) {
115696
117096
  const headers2 = response2.headersList.entries;
115697
117097
  channels.open.publish({
115698
- address: response2.socket.address(),
117098
+ address: getSocketAddress(response2.socket),
115699
117099
  protocol: __privateGet(this, _protocol),
115700
117100
  extensions: __privateGet(this, _extensions),
115701
117101
  websocket: this,
@@ -116132,12 +117532,6 @@ function requireWebsocketstream() {
116132
117532
  start: (controller) => {
116133
117533
  __privateSet(this, _readableStreamController, controller);
116134
117534
  },
116135
- pull(controller) {
116136
- let chunk;
116137
- while (controller.desiredSize > 0 && (chunk = response2.socket.read()) !== null) {
116138
- controller.enqueue(chunk);
116139
- }
116140
- },
116141
117535
  cancel: (reason) => __privateMethod(this, _WebSocketStream_instances, cancel_fn).call(this, reason)
116142
117536
  });
116143
117537
  const writable = new WritableStream({
@@ -116164,7 +117558,7 @@ function requireWebsocketstream() {
116164
117558
  try {
116165
117559
  chunk = utf8Decode(data);
116166
117560
  } catch {
116167
- failWebsocketConnection(__privateGet(this, _handler), "Received invalid UTF-8 in text frame.");
117561
+ failWebsocketConnection(__privateGet(this, _handler), 1007, "Received invalid UTF-8 in text frame.");
116168
117562
  return;
116169
117563
  }
116170
117564
  } else if (type === opcodes.BINARY) {
@@ -116288,7 +117682,7 @@ var hasRequiredEventsourceStream;
116288
117682
  function requireEventsourceStream() {
116289
117683
  if (hasRequiredEventsourceStream) return eventsourceStream;
116290
117684
  hasRequiredEventsourceStream = 1;
116291
- const { Transform: Transform2 } = require$$0$3;
117685
+ const { Transform: Transform2 } = require$$0$4;
116292
117686
  const { isASCIINumber, isValidLastEventId } = requireUtil();
116293
117687
  const BOM = [239, 187, 191];
116294
117688
  const LF = 10;
@@ -116520,7 +117914,7 @@ function requireEventsource() {
116520
117914
  var _events, _url2, _withCredentials, _readyState, _request, _controller, _dispatcher2, _state, _EventSource_instances, connect_fn, reconnect_fn;
116521
117915
  if (hasRequiredEventsource) return eventsource;
116522
117916
  hasRequiredEventsource = 1;
116523
- const { pipeline } = require$$0$3;
117917
+ const { pipeline } = require$$0$4;
116524
117918
  const { fetching } = requireFetch();
116525
117919
  const { makeRequest: makeRequest2 } = requireRequest();
116526
117920
  const { webidl } = requireWebidl();
@@ -116857,6 +118251,7 @@ function requireUndici() {
116857
118251
  const RoundRobinPool = requireRoundRobinPool();
116858
118252
  const Agent = requireAgent();
116859
118253
  const ProxyAgent = requireProxyAgent();
118254
+ const Socks5ProxyAgent = requireSocks5ProxyAgent();
116860
118255
  const EnvHttpProxyAgent = requireEnvHttpProxyAgent();
116861
118256
  const RetryAgent = requireRetryAgent();
116862
118257
  const H2CClient = requireH2cClient();
@@ -116883,6 +118278,7 @@ function requireUndici() {
116883
118278
  module.exports.RoundRobinPool = RoundRobinPool;
116884
118279
  module.exports.Agent = Agent;
116885
118280
  module.exports.ProxyAgent = ProxyAgent;
118281
+ module.exports.Socks5ProxyAgent = Socks5ProxyAgent;
116886
118282
  module.exports.EnvHttpProxyAgent = EnvHttpProxyAgent;
116887
118283
  module.exports.RetryAgent = RetryAgent;
116888
118284
  module.exports.H2CClient = H2CClient;
@@ -118649,7 +120045,7 @@ function createLocalWorld(args) {
118649
120045
  const basedir = mergedConfig.dataDir;
118650
120046
  const hooksDir = path$3.join(basedir, "hooks");
118651
120047
  const taggedHookFiles = await listTaggedFiles(hooksDir, tag);
118652
- const { HookSchema: HookSchema2 } = await import("./index-VP-TIWDS.js");
120048
+ const { HookSchema: HookSchema2 } = await import("./index-BUU6Hdm_.js");
118653
120049
  await Promise.all(taggedHookFiles.map(async (hookFile) => {
118654
120050
  const hook = await readJSON(path$3.join(hooksDir, hookFile), HookSchema2);
118655
120051
  if (hook == null ? void 0 : hook.token) {
@@ -118801,8 +120197,8 @@ function requireGetVercelOidcToken() {
118801
120197
  }
118802
120198
  try {
118803
120199
  const [{ getTokenPayload, isExpired }, { refreshToken }] = await Promise.all([
118804
- await import("./token-util-Bmrakd6M.js").then((n) => n.t),
118805
- await import("./token-BxPrGSQ5.js").then((n) => n.t)
120200
+ await import("./token-util-Bc0jltWL.js").then((n) => n.t),
120201
+ await import("./token-BaJALexf.js").then((n) => n.t)
118806
120202
  ]);
118807
120203
  if (!token || isExpired(getTokenPayload(token), options == null ? void 0 : options.expirationBufferMs)) {
118808
120204
  await refreshToken(options);
@@ -119366,7 +120762,10 @@ function requireDist() {
119366
120762
  }
119367
120763
  var distExports = requireDist();
119368
120764
  let _dispatcher;
119369
- function getDispatcher() {
120765
+ function getDispatcher(config2) {
120766
+ return (config2 == null ? void 0 : config2.dispatcher) ?? getDefaultDispatcher();
120767
+ }
120768
+ function getDefaultDispatcher() {
119370
120769
  if (!_dispatcher) {
119371
120770
  _dispatcher = new undiciExports.RetryAgent(new undiciExports.Agent({
119372
120771
  connections: 8,
@@ -119427,7 +120826,7 @@ async function fetchRunKey(deploymentId, projectId, runId, options) {
119427
120826
  Authorization: `Bearer ${token}`
119428
120827
  },
119429
120828
  // @ts-expect-error -- undici dispatcher is accepted by Node.js fetch but not in @types/node's RequestInit
119430
- dispatcher: getDispatcher()
120829
+ dispatcher: getDispatcher({ dispatcher: options == null ? void 0 : options.dispatcher })
119431
120830
  });
119432
120831
  if (!response2.ok) {
119433
120832
  let body2;
@@ -119448,7 +120847,7 @@ async function fetchRunKey(deploymentId, projectId, runId, options) {
119448
120847
  }
119449
120848
  return Buffer.from(result.data.key, "base64");
119450
120849
  }
119451
- function createGetEncryptionKeyForRun(projectId, teamId, token) {
120850
+ function createGetEncryptionKeyForRun(projectId, teamId, token, dispatcher2) {
119452
120851
  if (!projectId)
119453
120852
  return void 0;
119454
120853
  const isServerlessRuntime = process.env.VERCEL === "1";
@@ -119475,7 +120874,11 @@ function createGetEncryptionKeyForRun(projectId, teamId, token) {
119475
120874
  }
119476
120875
  if (!deploymentId)
119477
120876
  return void 0;
119478
- return fetchRunKey(deploymentId, projectId, runId, { token, teamId });
120877
+ return fetchRunKey(deploymentId, projectId, runId, {
120878
+ token,
120879
+ teamId,
120880
+ dispatcher: dispatcher2
120881
+ });
119479
120882
  };
119480
120883
  }
119481
120884
  let otelApiPromise = null;
@@ -122451,7 +123854,13 @@ function parseBinaryHeaders(headers2) {
122451
123854
  `Missing required CloudEvent headers: ${missingFields.join(", ")}`
122452
123855
  );
122453
123856
  }
122454
- const region = getHeader(headers2, "ce-vqsregion") ?? void 0;
123857
+ const rawRegion = getHeader(headers2, "ce-vqsregion") ?? void 0;
123858
+ if (rawRegion !== void 0 && !/^[a-z]{2,5}[0-9]{1,2}$/.test(rawRegion)) {
123859
+ throw new Error(
123860
+ `Invalid ce-vqsregion header: ${JSON.stringify(rawRegion)}. Region must match /^[a-z]{2,5}[0-9]{1,2}$/ (e.g. "iad1", "lhr1").`
123861
+ );
123862
+ }
123863
+ const region = rawRegion;
122455
123864
  const base = {
122456
123865
  queueName,
122457
123866
  consumerGroup,
@@ -123300,6 +124709,14 @@ function parseQueueHeaders(headers2) {
123300
124709
  receiptHandle
123301
124710
  };
123302
124711
  }
124712
+ var REGION_PATTERN = /^[a-z]{2,5}[0-9]{1,2}$/;
124713
+ function validateRegion(region) {
124714
+ if (!REGION_PATTERN.test(region)) {
124715
+ throw new Error(
124716
+ `Invalid region code: ${JSON.stringify(region)}. Region must match the pattern /^[a-z]{2,5}[0-9]{1,2}$/ (e.g. "iad1", "lhr1").`
124717
+ );
124718
+ }
124719
+ }
123303
124720
  var DEFAULT_BASE_URL_RESOLVER = (region) => new URL(`https://${region}.vercel-queue.com`);
123304
124721
  function resolveBaseUrl(region, resolver2) {
123305
124722
  return (resolver2 ?? DEFAULT_BASE_URL_RESOLVER)(region);
@@ -123317,6 +124734,7 @@ var ApiClient = class _ApiClient {
123317
124734
  __publicField(this, "region");
123318
124735
  __publicField(this, "baseUrlResolver");
123319
124736
  __publicField(this, "dispatcher");
124737
+ validateRegion(options.region);
123320
124738
  this.region = options.region;
123321
124739
  this.baseUrlResolver = options.resolveBaseUrl;
123322
124740
  this.baseUrl = resolveBaseUrl(this.region, this.baseUrlResolver);
@@ -123431,7 +124849,7 @@ Cause: ${cause}`
123431
124849
  }
123432
124850
  console.debug("[VQS Debug] Request:", JSON.stringify(logData, null, 2));
123433
124851
  }
123434
- init2.headers.set("User-Agent", `@vercel/queue/${"0.1.7"}`);
124852
+ init2.headers.set("User-Agent", `@vercel/queue/${"0.2.1"}`);
123435
124853
  init2.headers.set("Vqs-Client-Ts", (/* @__PURE__ */ new Date()).toISOString());
123436
124854
  const fetchInit = this.dispatcher ? { ...init2, dispatcher: this.dispatcher } : init2;
123437
124855
  const response2 = await fetch(url2, fetchInit);
@@ -123973,7 +125391,7 @@ var QueueClient = class {
123973
125391
  setApi(this, new ApiClient({ ...options, region }));
123974
125392
  }
123975
125393
  };
123976
- const version = "5.0.0-beta.9";
125394
+ const version = "5.0.0-beta.11";
123977
125395
  const HTTP_DEBUG_ENABLED = typeof process !== "undefined" && typeof process.env.DEBUG === "string" && (process.env.DEBUG.includes("workflow:") || process.env.DEBUG === "*");
123978
125396
  function httpLog(method, endpoint, status, ms2) {
123979
125397
  if (HTTP_DEBUG_ENABLED) {
@@ -123981,6 +125399,9 @@ function httpLog(method, endpoint, status, ms2) {
123981
125399
  }
123982
125400
  }
123983
125401
  const REQUEST_TIMEOUT_MS = 6e4;
125402
+ const IDEMPOTENT_METHODS = /* @__PURE__ */ new Set(["GET", "HEAD"]);
125403
+ const MAX_BODY_PARSE_RETRIES = 2;
125404
+ const BODY_PARSE_RETRY_BASE_MS = 100;
123984
125405
  const getWorkflowServerUrlOverride = () => process.env.VERCEL_WORKFLOW_SERVER_URL || "";
123985
125406
  const DEFAULT_RESOLVE_DATA_OPTION = "all";
123986
125407
  function deserializeError(obj) {
@@ -124070,101 +125491,116 @@ async function makeRequest({ endpoint, options = {}, config: config2 = {}, schem
124070
125491
  ...RpcService("workflow-server")
124071
125492
  });
124072
125493
  headers2.set("Accept", "application/cbor");
124073
- headers2.set("X-Request-Time", Date.now().toString());
124074
125494
  let body2;
124075
125495
  if (data !== void 0) {
124076
125496
  headers2.set("Content-Type", "application/cbor");
124077
125497
  body2 = encode(data);
124078
125498
  }
124079
- const timeoutSignal = AbortSignal.timeout(REQUEST_TIMEOUT_MS);
124080
- const signal = options.signal ? AbortSignal.any([options.signal, timeoutSignal]) : timeoutSignal;
124081
- const request2 = new Request(url2, {
124082
- ...options,
124083
- body: body2,
124084
- headers: headers2,
124085
- signal
124086
- });
124087
- const fetchStart = Date.now();
124088
- let response2;
124089
- try {
124090
- response2 = await fetch(request2, {
124091
- dispatcher: getDispatcher()
125499
+ const canRetryBody = IDEMPOTENT_METHODS.has(method.toUpperCase());
125500
+ let parseResult;
125501
+ for (let attempt = 0; ; attempt++) {
125502
+ headers2.set("X-Request-Time", Date.now().toString());
125503
+ const timeoutSignal = AbortSignal.timeout(REQUEST_TIMEOUT_MS);
125504
+ const signal = options.signal ? AbortSignal.any([options.signal, timeoutSignal]) : timeoutSignal;
125505
+ const request2 = new Request(url2, {
125506
+ ...options,
125507
+ body: body2,
125508
+ headers: headers2,
125509
+ signal
124092
125510
  });
124093
- } catch (error2) {
124094
- const elapsed = Date.now() - fetchStart;
124095
- if (error2 instanceof Error && (error2.name === "TimeoutError" || error2.name === "AbortError")) {
124096
- const timeoutError = new WorkflowWorldError(`${method} ${endpoint} timed out after ${elapsed}ms`, { url: url2, cause: error2 });
124097
- span == null ? void 0 : span.setAttributes({ ...ErrorType("TIMEOUT") });
124098
- (_a3 = span == null ? void 0 : span.recordException) == null ? void 0 : _a3.call(span, timeoutError);
124099
- throw timeoutError;
124100
- }
124101
- throw error2;
124102
- }
124103
- const fetchMs = Date.now() - fetchStart;
124104
- httpLog(method, endpoint, response2.status, fetchMs);
124105
- span == null ? void 0 : span.setAttributes({
124106
- ...HttpResponseStatusCode(response2.status)
124107
- });
124108
- if (!response2.ok) {
124109
- const errorData = await parseResponseBody(response2).then((r2) => r2.data).catch(() => ({}));
124110
- if (process.env.DEBUG) {
124111
- const stringifiedHeaders = Array.from(headers2.entries()).filter(([key]) => key.toLowerCase() !== "authorization").map(([key, value]) => `-H "${key}: ${value}"`).join(" ");
124112
- console.error(`Failed to fetch, reproduce with:
124113
- curl -X ${request2.method} ${stringifiedHeaders} "${url2}"`);
124114
- }
124115
- let retryAfter;
124116
- const retryAfterHeader = response2.headers.get("Retry-After");
124117
- if (retryAfterHeader) {
124118
- const parsed = parseInt(retryAfterHeader, 10);
124119
- if (!Number.isNaN(parsed)) {
124120
- retryAfter = parsed;
124121
- }
124122
- }
124123
- const defaultMessage = errorData.message || `${request2.method} ${endpoint} -> HTTP ${response2.status}: ${response2.statusText}`;
124124
- const throwWithTrace = (error2) => {
124125
- var _a4;
124126
- span == null ? void 0 : span.setAttributes({
124127
- ...ErrorType(errorData.code || `HTTP ${response2.status}`)
125511
+ const fetchStart = Date.now();
125512
+ let response2;
125513
+ try {
125514
+ response2 = await fetch(request2, {
125515
+ dispatcher: getDispatcher(config2)
124128
125516
  });
124129
- (_a4 = span == null ? void 0 : span.recordException) == null ? void 0 : _a4.call(span, error2);
125517
+ } catch (error2) {
125518
+ const elapsed = Date.now() - fetchStart;
125519
+ if (error2 instanceof Error && (error2.name === "TimeoutError" || error2.name === "AbortError")) {
125520
+ const timeoutError = new WorkflowWorldError(`${method} ${endpoint} timed out after ${elapsed}ms`, { url: url2, cause: error2 });
125521
+ span == null ? void 0 : span.setAttributes({ ...ErrorType("TIMEOUT") });
125522
+ (_a3 = span == null ? void 0 : span.recordException) == null ? void 0 : _a3.call(span, timeoutError);
125523
+ throw timeoutError;
125524
+ }
124130
125525
  throw error2;
124131
- };
124132
- if (response2.status === 409) {
124133
- throwWithTrace(new EntityConflictError(defaultMessage));
124134
- }
124135
- if (response2.status === 410) {
124136
- throwWithTrace(new RunExpiredError(defaultMessage));
124137
- }
124138
- if (response2.status === 425) {
124139
- throwWithTrace(new TooEarlyError(defaultMessage, { retryAfter }));
124140
125526
  }
124141
- if (response2.status === 429) {
124142
- throwWithTrace(new ThrottleError(defaultMessage, { retryAfter }));
125527
+ const fetchMs = Date.now() - fetchStart;
125528
+ httpLog(method, endpoint, response2.status, fetchMs);
125529
+ span == null ? void 0 : span.setAttributes({
125530
+ ...HttpResponseStatusCode(response2.status)
125531
+ });
125532
+ if (!response2.ok) {
125533
+ const errorData = await parseResponseBody(response2).then((r2) => r2.data).catch(() => ({}));
125534
+ if (process.env.DEBUG) {
125535
+ const stringifiedHeaders = Array.from(headers2.entries()).filter(([key]) => key.toLowerCase() !== "authorization").map(([key, value]) => `-H "${key}: ${value}"`).join(" ");
125536
+ console.error(`Failed to fetch, reproduce with:
125537
+ curl -X ${request2.method} ${stringifiedHeaders} "${url2}"`);
125538
+ }
125539
+ let retryAfter;
125540
+ const retryAfterHeader = response2.headers.get("Retry-After");
125541
+ if (retryAfterHeader) {
125542
+ const parsed = parseInt(retryAfterHeader, 10);
125543
+ if (!Number.isNaN(parsed)) {
125544
+ retryAfter = parsed;
125545
+ }
125546
+ }
125547
+ const defaultMessage = errorData.message || `${request2.method} ${endpoint} -> HTTP ${response2.status}: ${response2.statusText}`;
125548
+ const throwWithTrace = (error2) => {
125549
+ var _a4;
125550
+ span == null ? void 0 : span.setAttributes({
125551
+ ...ErrorType(errorData.code || `HTTP ${response2.status}`)
125552
+ });
125553
+ (_a4 = span == null ? void 0 : span.recordException) == null ? void 0 : _a4.call(span, error2);
125554
+ throw error2;
125555
+ };
125556
+ if (response2.status === 409) {
125557
+ throwWithTrace(new EntityConflictError(defaultMessage));
125558
+ }
125559
+ if (response2.status === 410) {
125560
+ throwWithTrace(new RunExpiredError(defaultMessage));
125561
+ }
125562
+ if (response2.status === 425) {
125563
+ throwWithTrace(new TooEarlyError(defaultMessage, { retryAfter }));
125564
+ }
125565
+ if (response2.status === 429) {
125566
+ throwWithTrace(new ThrottleError(defaultMessage, { retryAfter }));
125567
+ }
125568
+ throwWithTrace(new WorkflowWorldError(defaultMessage, {
125569
+ url: url2,
125570
+ status: response2.status,
125571
+ code: errorData.code,
125572
+ retryAfter
125573
+ }));
124143
125574
  }
124144
- throwWithTrace(new WorkflowWorldError(defaultMessage, {
124145
- url: url2,
124146
- status: response2.status,
124147
- code: errorData.code,
124148
- retryAfter
124149
- }));
124150
- }
124151
- onResponse == null ? void 0 : onResponse(response2);
124152
- let parseResult;
124153
- try {
124154
- parseResult = await trace("world.parse", async (parseSpan) => {
124155
- const result2 = await parseResponseBody(response2);
124156
- const contentType = response2.headers.get("Content-Type") || "";
124157
- const isCbor = contentType.includes("application/cbor");
124158
- parseSpan == null ? void 0 : parseSpan.setAttributes({
124159
- ...WorldParseFormat(isCbor ? "cbor" : "json")
125575
+ onResponse == null ? void 0 : onResponse(response2);
125576
+ try {
125577
+ parseResult = await trace("world.parse", async (parseSpan) => {
125578
+ const result2 = await parseResponseBody(response2);
125579
+ const contentType = response2.headers.get("Content-Type") || "";
125580
+ const isCbor = contentType.includes("application/cbor");
125581
+ parseSpan == null ? void 0 : parseSpan.setAttributes({
125582
+ ...WorldParseFormat(isCbor ? "cbor" : "json")
125583
+ });
125584
+ return result2;
124160
125585
  });
124161
- return result2;
124162
- });
124163
- } catch (error2) {
124164
- const contentType = response2.headers.get("Content-Type") || "unknown";
124165
- throw new WorkflowWorldError(`Failed to parse response body for ${request2.method} ${endpoint} (Content-Type: ${contentType}):
125586
+ break;
125587
+ } catch (error2) {
125588
+ if (canRetryBody && attempt < MAX_BODY_PARSE_RETRIES) {
125589
+ const backoffMs = BODY_PARSE_RETRY_BASE_MS * 2 ** attempt;
125590
+ span == null ? void 0 : span.setAttributes({
125591
+ ...ErrorType("PARSE_ERROR_RETRYING")
125592
+ });
125593
+ if (HTTP_DEBUG_ENABLED) {
125594
+ console.debug(`[workflow:world-vercel:http] ${method} ${endpoint} body parse failed (attempt ${attempt + 1}/${MAX_BODY_PARSE_RETRIES + 1}); retrying in ${backoffMs}ms: ${error2}`);
125595
+ }
125596
+ await new Promise((resolve2) => setTimeout(resolve2, backoffMs));
125597
+ continue;
125598
+ }
125599
+ const contentType = response2.headers.get("Content-Type") || "unknown";
125600
+ throw new WorkflowWorldError(`Failed to parse response body for ${method} ${endpoint} (Content-Type: ${contentType}):
124166
125601
 
124167
125602
  ${error2}`, { url: url2, code: "PARSE_ERROR", cause: error2 });
125603
+ }
124168
125604
  }
124169
125605
  const result = await trace("world.validate", async () => {
124170
125606
  const validationResult = schema.safeParse(parseResult.data);
@@ -124312,7 +125748,7 @@ function createQueue$1(config2) {
124312
125748
  const dualTransport = new DualTransport();
124313
125749
  const clientOptions = {
124314
125750
  region,
124315
- dispatcher: getDispatcher(),
125751
+ dispatcher: getDispatcher(config2),
124316
125752
  transport: dualTransport,
124317
125753
  ...usingProxy && {
124318
125754
  // final path will be /queues-proxy/api/v3/topic/...
@@ -124428,7 +125864,7 @@ function createResolveLatestDeploymentId(config2) {
124428
125864
  Authorization: `Bearer ${token}`
124429
125865
  },
124430
125866
  // @ts-expect-error -- undici dispatcher is accepted by Node.js fetch but not in @types/node's RequestInit
124431
- dispatcher: getDispatcher()
125867
+ dispatcher: getDispatcher(config2)
124432
125868
  });
124433
125869
  if (!response2.ok) {
124434
125870
  let body2;
@@ -124479,7 +125915,7 @@ async function resolveRefDescriptor(descriptor, runId, config2) {
124479
125915
  const response2 = await fetch(url2, {
124480
125916
  method: "GET",
124481
125917
  headers: headers2,
124482
- dispatcher: getDispatcher()
125918
+ dispatcher: getDispatcher(config2)
124483
125919
  });
124484
125920
  span == null ? void 0 : span.setAttributes({
124485
125921
  ...HttpResponseStatusCode(response2.status)
@@ -125295,7 +126731,7 @@ function createVercelWorld(config2) {
125295
126731
  ...createQueue$1(config2),
125296
126732
  ...createStorage(config2),
125297
126733
  ...instrumentObject("world.streams", createStreamer(config2)),
125298
- getEncryptionKeyForRun: createGetEncryptionKeyForRun(projectId, (_b2 = config2 == null ? void 0 : config2.projectConfig) == null ? void 0 : _b2.teamId, config2 == null ? void 0 : config2.token),
126734
+ getEncryptionKeyForRun: createGetEncryptionKeyForRun(projectId, (_b2 = config2 == null ? void 0 : config2.projectConfig) == null ? void 0 : _b2.teamId, config2 == null ? void 0 : config2.token, config2 == null ? void 0 : config2.dispatcher),
125299
126735
  resolveLatestDeploymentId: createResolveLatestDeploymentId(config2)
125300
126736
  };
125301
126737
  }
@@ -129538,7 +130974,7 @@ function LayoutContent({
129538
130974
  }, [resource, id2, runId, stepId, hookId, navigate]);
129539
130975
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", {
129540
130976
  className: "min-h-screen flex flex-col",
129541
- children: [/* @__PURE__ */ jsxRuntimeExports.jsxs(TooltipProvider, {
130977
+ children: [/* @__PURE__ */ jsxRuntimeExports.jsxs(TooltipProvider$1, {
129542
130978
  delayDuration: 0,
129543
130979
  children: [/* @__PURE__ */ jsxRuntimeExports.jsx("div", {
129544
130980
  className: "sticky top-0 z-50 bg-background border-b px-6 py-4",
@@ -135351,6 +136787,7 @@ const LIVE_POLL_LIMIT = 100;
135351
136787
  const INITIAL_PAGE_SIZE$1 = 500;
135352
136788
  const LOAD_MORE_PAGE_SIZE$1 = 100;
135353
136789
  const LIVE_UPDATE_INTERVAL_MS = 5e3;
136790
+ const AUTO_LOAD_MAX_EVENTS = 500;
135354
136791
  function useWorkflowTraceViewerData(env2, runId, options = {}) {
135355
136792
  const { live = false } = options;
135356
136793
  const [run, setRun] = reactExports.useState(null);
@@ -135459,6 +136896,12 @@ function useWorkflowTraceViewerData(env2, runId, options = {}) {
135459
136896
  eventsHasMore,
135460
136897
  eventsCursor
135461
136898
  ]);
136899
+ reactExports.useEffect(() => {
136900
+ if (events2.length >= AUTO_LOAD_MAX_EVENTS) {
136901
+ return;
136902
+ }
136903
+ loadMoreTraceData();
136904
+ }, [events2.length, loadMoreTraceData]);
135462
136905
  const pollRun = reactExports.useCallback(async () => {
135463
136906
  if (run == null ? void 0 : run.completedAt) {
135464
136907
  return false;
@@ -136416,7 +137859,7 @@ var SelectIcon = reactExports.forwardRef(
136416
137859
  SelectIcon.displayName = ICON_NAME;
136417
137860
  var PORTAL_NAME$4 = "SelectPortal";
136418
137861
  var SelectPortal = (props) => {
136419
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Portal$6, { asChild: true, ...props });
137862
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Portal$7, { asChild: true, ...props });
136420
137863
  };
136421
137864
  SelectPortal.displayName = PORTAL_NAME$4;
136422
137865
  var CONTENT_NAME$4 = "SelectContent";
@@ -148959,7 +150402,7 @@ var [PortalProvider$1, usePortalContext$1] = createDialogContext$1(PORTAL_NAME$3
148959
150402
  var DialogPortal$1 = (props) => {
148960
150403
  const { __scopeDialog, forceMount, children: children2, container } = props;
148961
150404
  const context = useDialogContext$1(PORTAL_NAME$3, __scopeDialog);
148962
- return /* @__PURE__ */ jsxRuntimeExports.jsx(PortalProvider$1, { scope: __scopeDialog, forceMount, children: reactExports.Children.map(children2, (child) => /* @__PURE__ */ jsxRuntimeExports.jsx(Presence$1, { present: forceMount || context.open, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Portal$6, { asChild: true, container, children: child }) })) });
150405
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(PortalProvider$1, { scope: __scopeDialog, forceMount, children: reactExports.Children.map(children2, (child) => /* @__PURE__ */ jsxRuntimeExports.jsx(Presence$1, { present: forceMount || context.open, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Portal$7, { asChild: true, container, children: child }) })) });
148963
150406
  };
148964
150407
  DialogPortal$1.displayName = PORTAL_NAME$3;
148965
150408
  var OVERLAY_NAME$2 = "DialogOverlay";
@@ -151326,7 +152769,10 @@ function RunDetailView({
151326
152769
  loading,
151327
152770
  error: error2,
151328
152771
  update,
151329
- hasEncryptedData
152772
+ hasEncryptedData,
152773
+ loadMoreTraceData,
152774
+ hasMoreTraceData,
152775
+ isLoadingMoreTraceData
151330
152776
  } = useWorkflowTraceViewerData(env2, runId, { live: true });
151331
152777
  const run = runData ?? {};
151332
152778
  const [encryptionKey, setEncryptionKey] = reactExports.useState(null);
@@ -151621,7 +153067,11 @@ function RunDetailView({
151621
153067
  {
151622
153068
  run,
151623
153069
  events: allEvents ?? [],
151624
- sidebarData
153070
+ loading,
153071
+ sidebarData,
153072
+ onLoadMore: loadMoreTraceData,
153073
+ hasMore: hasMoreTraceData,
153074
+ isLoadingMore: isLoadingMoreTraceData
151625
153075
  }
151626
153076
  ) }) }) }),
151627
153077
  /* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: "events", className: "mt-0 flex-1 min-h-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ErrorBoundary$1, { title: "Failed to load events list", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "h-full", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -151935,7 +153385,7 @@ const route4 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
151935
153385
  __proto__: null,
151936
153386
  loader
151937
153387
  }, Symbol.toStringTag, { value: "Module" }));
151938
- const serverManifest = { "entry": { "module": "/assets/entry.client-DtOpLtMQ.js", "imports": ["/assets/index-BsV8i_Jn.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": true, "module": "/assets/root-DJKbeamD.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/mermaid-3ZIDBTTL-DPZjJwuX.js"], "css": ["/assets/root-BYtlAgHl.css", "/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/home": { "id": "routes/home", "parentId": "root", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/home-DKDz-tU-.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/workflow-graph-viewer-DjlqbXVx.js", "/assets/mermaid-3ZIDBTTL-DPZjJwuX.js", "/assets/index-CIZByfnL.js"], "css": ["/assets/workflow-graph-viewer-DnlNuQQH.css", "/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/run-detail": { "id": "routes/run-detail", "parentId": "root", "path": "run/:runId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/run-detail-ekQSEj_z.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/workflow-graph-viewer-DjlqbXVx.js", "/assets/mermaid-3ZIDBTTL-DPZjJwuX.js", "/assets/encryption-B7z5c3Mu.js", "/assets/index-CIZByfnL.js"], "css": ["/assets/workflow-graph-viewer-DnlNuQQH.css", "/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/api.rpc": { "id": "routes/api.rpc", "parentId": "root", "path": "api/rpc", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": false, "hasErrorBoundary": false, "module": "/assets/api.rpc-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/api.stream.$streamId": { "id": "routes/api.stream.$streamId", "parentId": "root", "path": "api/stream/:streamId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": false, "hasErrorBoundary": false, "module": "/assets/api.stream._streamId-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 } }, "url": "/assets/manifest-a33ce94a.js", "version": "a33ce94a", "sri": void 0 };
153388
+ const serverManifest = { "entry": { "module": "/assets/entry.client-DOJDY_4b.js", "imports": ["/assets/index-BXZSIDEp.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": true, "module": "/assets/root-8wYQKqnE.js", "imports": ["/assets/index-BXZSIDEp.js", "/assets/mermaid-3ZIDBTTL-CeSti4VQ.js"], "css": ["/assets/root-DvB36HGI.css", "/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/home": { "id": "routes/home", "parentId": "root", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/home-BQRPxkXT.js", "imports": ["/assets/index-BXZSIDEp.js", "/assets/workflow-graph-viewer-CxZS9r2o.js", "/assets/mermaid-3ZIDBTTL-CeSti4VQ.js", "/assets/index-B6-SzLmT.js"], "css": ["/assets/workflow-graph-viewer-DnlNuQQH.css", "/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/run-detail": { "id": "routes/run-detail", "parentId": "root", "path": "run/:runId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/run-detail-Dn4QeKHW.js", "imports": ["/assets/index-BXZSIDEp.js", "/assets/workflow-graph-viewer-CxZS9r2o.js", "/assets/mermaid-3ZIDBTTL-CeSti4VQ.js", "/assets/encryption-g14N5vQl.js", "/assets/index-B6-SzLmT.js"], "css": ["/assets/workflow-graph-viewer-DnlNuQQH.css", "/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/api.rpc": { "id": "routes/api.rpc", "parentId": "root", "path": "api/rpc", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": false, "hasErrorBoundary": false, "module": "/assets/api.rpc-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/api.stream.$streamId": { "id": "routes/api.stream.$streamId", "parentId": "root", "path": "api/stream/:streamId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": false, "hasErrorBoundary": false, "module": "/assets/api.stream._streamId-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 } }, "url": "/assets/manifest-b8838010.js", "version": "b8838010", "sri": void 0 };
151939
153389
  const assetsBuildDirectory = "build/client";
151940
153390
  const basename = "/";
151941
153391
  const future = { "unstable_optimizeDeps": false, "unstable_subResourceIntegrity": false, "unstable_trailingSlashAwareDataRequests": false, "unstable_previewServerPrerendering": false, "v8_middleware": false, "v8_splitRouteModules": false, "v8_viteEnvironmentApi": false };