kinetex 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/README.md +104 -16
  2. package/dist/browser/kinetex.esm.js +18 -18
  3. package/dist/browser/kinetex.js +581 -275
  4. package/dist/browser/kinetex.min.js +18 -18
  5. package/dist/cjs/client.js +180 -11
  6. package/dist/cjs/cookie-store.js +10 -0
  7. package/dist/cjs/core.js +53 -27
  8. package/dist/cjs/graphql.js +37 -8
  9. package/dist/cjs/interceptors.js +22 -11
  10. package/dist/cjs/logging.js +10 -2
  11. package/dist/cjs/mod.js +1 -1
  12. package/dist/cjs/pagination.js +6 -1
  13. package/dist/cjs/progress.js +13 -6
  14. package/dist/cjs/response.js +8 -6
  15. package/dist/cjs/sse.js +5 -2
  16. package/dist/cjs/utils.js +250 -57
  17. package/dist/cjs/ws.js +16 -2
  18. package/dist/esm/client.js +180 -11
  19. package/dist/esm/client.js.map +1 -1
  20. package/dist/esm/cookie-store.js +10 -0
  21. package/dist/esm/cookie-store.js.map +1 -1
  22. package/dist/esm/core.js +53 -27
  23. package/dist/esm/core.js.map +1 -1
  24. package/dist/esm/graphql.js +37 -8
  25. package/dist/esm/graphql.js.map +1 -1
  26. package/dist/esm/interceptors.js +22 -11
  27. package/dist/esm/interceptors.js.map +1 -1
  28. package/dist/esm/logging.js +10 -2
  29. package/dist/esm/logging.js.map +1 -1
  30. package/dist/esm/mod.js +1 -1
  31. package/dist/esm/mod.js.map +1 -1
  32. package/dist/esm/pagination.js +6 -1
  33. package/dist/esm/pagination.js.map +1 -1
  34. package/dist/esm/progress.js +13 -6
  35. package/dist/esm/progress.js.map +1 -1
  36. package/dist/esm/response.js +8 -6
  37. package/dist/esm/response.js.map +1 -1
  38. package/dist/esm/sse.js +5 -2
  39. package/dist/esm/sse.js.map +1 -1
  40. package/dist/esm/utils.js +250 -57
  41. package/dist/esm/utils.js.map +1 -1
  42. package/dist/esm/ws.js +16 -2
  43. package/dist/esm/ws.js.map +1 -1
  44. package/dist/types/client.d.ts.map +1 -1
  45. package/dist/types/cookie-store.d.ts.map +1 -1
  46. package/dist/types/core.d.ts +4 -0
  47. package/dist/types/core.d.ts.map +1 -1
  48. package/dist/types/graphql.d.ts.map +1 -1
  49. package/dist/types/interceptors.d.ts.map +1 -1
  50. package/dist/types/logging.d.ts.map +1 -1
  51. package/dist/types/mod.d.ts +1 -1
  52. package/dist/types/mod.d.ts.map +1 -1
  53. package/dist/types/pagination.d.ts.map +1 -1
  54. package/dist/types/progress.d.ts.map +1 -1
  55. package/dist/types/response.d.ts.map +1 -1
  56. package/dist/types/sse.d.ts.map +1 -1
  57. package/dist/types/utils.d.ts +18 -2
  58. package/dist/types/utils.d.ts.map +1 -1
  59. package/dist/types/ws.d.ts +4 -0
  60. package/dist/types/ws.d.ts.map +1 -1
  61. package/package.json +5 -5
package/dist/esm/utils.js CHANGED
@@ -188,6 +188,41 @@ export function tryParseJSON(text) {
188
188
  const result = safeJSONParse(text);
189
189
  return result.success ? result.value : text;
190
190
  }
191
+ /**
192
+ * FIX (H6): Strip prototype-pollution keys from a freshly parsed JSON value.
193
+ *
194
+ * Recursively removes own properties named `__proto__`, `constructor`, and
195
+ * `prototype` from plain objects. Use immediately after any raw `JSON.parse`
196
+ * that does not go through {@link safeJSONParse} (streaming parsers, legacy
197
+ * helpers) so that untrusted payloads can never smuggle pollution keys into
198
+ * downstream spread/merge operations.
199
+ *
200
+ * @param value - Parsed JSON value (mutated copy is returned for objects/arrays).
201
+ * @returns Sanitized value — same reference for primitives.
202
+ */
203
+ export function sanitizeParsedJSON(value) {
204
+ if (value === null || typeof value !== "object")
205
+ return value;
206
+ if (Array.isArray(value)) {
207
+ for (let i = 0; i < value.length; i++) {
208
+ value[i] = sanitizeParsedJSON(value[i]);
209
+ }
210
+ return value;
211
+ }
212
+ const obj = value;
213
+ for (const key of Object.keys(obj)) {
214
+ if (key === "__proto__" || key === "constructor" || key === "prototype") {
215
+ delete obj[key];
216
+ continue;
217
+ }
218
+ // Recurse without writing back: sanitizeParsedJSON mutates its argument
219
+ // in place and returns the same reference, so a `obj[key] = ...` write
220
+ // would be a redundant dynamic assignment with a remote-controlled key
221
+ // (CodeQL: remote property injection).
222
+ sanitizeParsedJSON(obj[key]);
223
+ }
224
+ return value;
225
+ }
191
226
  /**
192
227
  * Parse JSON with reduced limits for untrusted input.
193
228
  *
@@ -382,40 +417,194 @@ const FORBIDDEN_SCHEMES = new Set([
382
417
  "webcal",
383
418
  "urn",
384
419
  ]);
420
+ // FIX (H1): The regex-based PRIVATE_IP_RANGES list was bypassable via
421
+ // IPv6 forms like `http://[::0:1]/`, `http://[::ffff:7f00:1]/` (hex), and
422
+ // `http://[::ffff:a9fe:a9fe]/` (IMDS 169.254.169.254), plus numeric IPv4
423
+ // hostnames like `http://2130706433/` (127.0.0.1) and `http://0x7f000001/`.
424
+ // isSafeURL() now expands addresses to bytes and compares ranges numerically.
385
425
  /**
386
- * Private IP ranges that must be blocked to prevent SSRF attacks.
387
- *
388
- * IPv6 coverage:
389
- * - ::1 (loopback)
390
- * - fc00::/7 (ULA - includes fc00: and fd00:)
391
- * - fe80::/10 (link-local)
392
- * - 2001:db8::/32 (documentation)
393
- * - ::/96 (IPv4-compatible - deprecated but still seen)
394
- * - IPv4-mapped IPv6 (::ffff:x.x.x.x)
395
- */
396
- const PRIVATE_IP_RANGES = [
397
- /^127\./, // loopback
398
- /^10\./, // RFC 1918
399
- /^192\.168\./, // RFC 1918
400
- /^172\.(1[6-9]|2\d|3[01])\./, // RFC 1918
401
- /^169\.254\./, // link-local (AWS IMDS, etc.)
402
- /^0\./, // this-network
403
- /^::1$/i, // IPv6 loopback
404
- /^fc00:/i, // IPv6 ULA (fc00::/7 - includes fc00: and fd00:)
405
- /^fd00:/i, // IPv6 ULA (fd00::/8 - unique local)
406
- /^fe80:/i, // IPv6 link-local (fe80::/10)
407
- /^2001:db8:/i, // IPv6 documentation range
408
- /^::0?ffff:/i, // IPv4-mapped IPv6 (::ffff:...)
409
- /^0:0:0:0:0:ffff:/i, // IPv4-mapped compressed form
410
- // FIX 4: IPv4-mapped IPv6 SSRF bypass — e.g. http://[::ffff:127.0.0.1]
411
- /^::ffff:127\./i, // IPv4-mapped loopback
412
- /^::ffff:10\./i, // IPv4-mapped RFC 1918
413
- /^::ffff:192\.168\./i, // IPv4-mapped RFC 1918
414
- /^::ffff:172\.(1[6-9]|2\d|3[01])\./i, // IPv4-mapped RFC 1918
415
- /^::ffff:169\.254\./i, // IPv4-mapped link-local
416
- /^0:0:0:0:0:ffff:7f/i, // compressed form of ::ffff:127.x
417
- /^::$/i, // IPv4-compatible :: (any ::/96)
426
+ * Reserved IPv4 ranges blocked for SSRF prevention, as [lo, hi] 32-bit values.
427
+ */
428
+ const IPV4_BLOCKED_RANGES = [
429
+ [0x00000000, 0x00ffffff], // 0.0.0.0/8 — this-network
430
+ [0x0a000000, 0x0affffff], // 10.0.0.0/8 — RFC 1918 private
431
+ [0x64400000, 0x647fffff], // 100.64.0.0/10 — CGNAT (RFC 6598)
432
+ [0x7f000000, 0x7fffffff], // 127.0.0.0/8 — loopback
433
+ [0xa9fe0000, 0xa9feffff], // 169.254.0.0/16 — link-local (AWS IMDS etc.)
434
+ [0xac100000, 0xac1fffff], // 172.16.0.0/12 — RFC 1918 private
435
+ [0xc0000000, 0xc00000ff], // 192.0.0.0/24 — IETF protocol assignments
436
+ [0xc0000200, 0xc00002ff], // 192.0.2.0/24 — TEST-NET-1
437
+ [0xc0a80000, 0xc0a8ffff], // 192.168.0.0/16 — RFC 1918 private
438
+ [0xc6120000, 0xc613ffff], // 198.18.0.0/15 — benchmarking
439
+ [0xc6336400, 0xc63364ff], // 198.51.100.0/24 — TEST-NET-2
440
+ [0xcb007100, 0xcb0071ff], // 203.0.113.0/24 — TEST-NET-3
441
+ [0xe0000000, 0xefffffff], // 224.0.0.0/4 — multicast
442
+ [0xf0000000, 0xffffffff], // 240.0.0.0/4 — reserved (incl. 255.255.255.255)
418
443
  ];
444
+ /** True when the 32-bit IPv4 value falls inside a reserved/blocked range. */
445
+ function isBlockedIPv4(n) {
446
+ return IPV4_BLOCKED_RANGES.some(([lo, hi]) => n >= lo && n <= hi);
447
+ }
448
+ /** Parse one dotted/numeric component: decimal, hex (0x…), or octal (0…). */
449
+ function parseIPv4Component(p) {
450
+ if (p === "")
451
+ return null;
452
+ if (/^0[xX][0-9a-fA-F]+$/.test(p))
453
+ return parseInt(p, 16);
454
+ if (/^0[0-7]+$/.test(p))
455
+ return parseInt(p, 8);
456
+ if (/^\d+$/.test(p))
457
+ return parseInt(p, 10);
458
+ return null;
459
+ }
460
+ /**
461
+ * Best-effort parse of a dotted or numeric IPv4 literal, accepting decimal,
462
+ * hex (0x…), and octal (0…) component forms — the same shapes URL parsers
463
+ * and resolvers accept (e.g. "2130706433", "0x7f.1", "0177.0.0.1").
464
+ * Returns the 32-bit value, or null when the host cannot be an IPv4 literal.
465
+ */
466
+ function parseIPv4Host(host) {
467
+ if (host.includes(":") || !/^[0-9a-fA-FxX.]+$/.test(host))
468
+ return null;
469
+ // WHATWG host parser: a single trailing dot (FQDN form) is stripped before
470
+ // parsing, so "127.0.0.1." must be treated exactly like "127.0.0.1".
471
+ const bare = host.endsWith(".") ? host.slice(0, -1) : host;
472
+ if (bare === "")
473
+ return null;
474
+ const parts = bare.split(".");
475
+ if (parts.length > 4 || parts.length < 1)
476
+ return null;
477
+ if (parts.length === 1) {
478
+ const v = parseIPv4Component(parts[0]);
479
+ if (v === null || v > 0xffffffff)
480
+ return null;
481
+ return v >>> 0;
482
+ }
483
+ // WHATWG: all but the last part are single octets; the last part may absorb
484
+ // the remainder of the address (value < 256^(5 - numberOfParts)) and is
485
+ // expanded big-endian across the remaining octets. E.g. "127.1" → 127.0.0.1
486
+ // and "169.254.43253" → 169.254.168.245 (still link-local → blocked).
487
+ const octets = [];
488
+ for (let i = 0; i < parts.length - 1; i++) {
489
+ const v = parseIPv4Component(parts[i]);
490
+ if (v === null || v > 0xff)
491
+ return null;
492
+ octets.push(v);
493
+ }
494
+ const last = parseIPv4Component(parts[parts.length - 1]);
495
+ const lastCap = 2 ** (8 * (5 - parts.length)); // 256^(5-n)
496
+ if (last === null || last >= lastCap)
497
+ return null;
498
+ for (let shift = 8 * (4 - parts.length); shift >= 0; shift -= 8) {
499
+ octets.push((last >>> shift) & 0xff);
500
+ }
501
+ return ((octets[0] << 24) | (octets[1] << 16) | (octets[2] << 8) | octets[3]) >>> 0;
502
+ }
503
+ /**
504
+ * Expand an IPv6 address (bracket-stripped) into its 16 bytes.
505
+ * Handles :: compression, IPv4-mapped dotted tails, and zone indexes.
506
+ * Returns null when the address is not a valid IPv6 literal.
507
+ */
508
+ function parseIPv6Host(host) {
509
+ if (!host.includes(":"))
510
+ return null;
511
+ const bare = host.split("%")[0]; // strip zone index (fe80::1%eth0)
512
+ const halves = bare.split("::");
513
+ if (halves.length > 2)
514
+ return null;
515
+ const expandGroups = (part) => {
516
+ if (part === "")
517
+ return [];
518
+ const groups = part.split(":");
519
+ const out = [];
520
+ for (let i = 0; i < groups.length; i++) {
521
+ const g = groups[i];
522
+ if (g === "")
523
+ return null;
524
+ if (g.includes(".")) {
525
+ // IPv4 dotted tail (e.g. ::ffff:127.0.0.1) must be the last group
526
+ if (i !== groups.length - 1)
527
+ return null;
528
+ const n = parseIPv4Host(g);
529
+ if (n === null)
530
+ return null;
531
+ out.push((n >>> 24) & 0xff, (n >>> 16) & 0xff, (n >>> 8) & 0xff, n & 0xff);
532
+ }
533
+ else {
534
+ if (!/^[0-9a-fA-F]{1,4}$/.test(g))
535
+ return null;
536
+ const v = parseInt(g, 16);
537
+ out.push((v >>> 8) & 0xff, v & 0xff);
538
+ }
539
+ }
540
+ return out;
541
+ };
542
+ let bytes;
543
+ if (halves.length === 2) {
544
+ const left = expandGroups(halves[0]);
545
+ const right = expandGroups(halves[1]);
546
+ if (!left || !right)
547
+ return null;
548
+ const fill = 16 - left.length - right.length;
549
+ if (fill < 0)
550
+ return null;
551
+ bytes = [...left, ...new Array(fill).fill(0), ...right];
552
+ }
553
+ else {
554
+ const all = expandGroups(bare);
555
+ if (!all || all.length !== 16)
556
+ return null;
557
+ bytes = all;
558
+ }
559
+ return bytes.length === 16 ? new Uint8Array(bytes) : null;
560
+ }
561
+ /** True when the 16-byte IPv6 address is in a reserved/blocked range. */
562
+ function isBlockedIPv6(b) {
563
+ const read32 = (i) => ((b[i] << 24) | (b[i + 1] << 16) | (b[i + 2] << 8) | b[i + 3]) >>> 0;
564
+ // :: (unspecified) — always blocked
565
+ if (b.every((x) => x === 0))
566
+ return true;
567
+ // ::1/128 — loopback
568
+ if (b.slice(0, 15).every((x) => x === 0) && b[15] === 1)
569
+ return true;
570
+ const first = b[0];
571
+ // fc00::/7 — unique local addresses (fc00::/8 + fd00::/8)
572
+ if ((first & 0xfe) === 0xfc)
573
+ return true;
574
+ // fe80::/10 — link-local
575
+ if (first === 0xfe && (b[1] & 0xc0) === 0x80)
576
+ return true;
577
+ // ff00::/8 — multicast
578
+ if (first === 0xff)
579
+ return true;
580
+ // 2001:db8::/32 — documentation
581
+ if (b[0] === 0x20 && b[1] === 0x01 && b[2] === 0x0d && b[3] === 0xb8)
582
+ return true;
583
+ // ::ffff:0:0/96 — IPv4-mapped → apply the IPv4 checks to the tail
584
+ if (b.slice(0, 10).every((x) => x === 0) &&
585
+ b[10] === 0xff &&
586
+ b[11] === 0xff) {
587
+ return isBlockedIPv4(read32(12));
588
+ }
589
+ // ::/96 — deprecated IPv4-compatible → apply the IPv4 checks to the tail
590
+ // (covers e.g. [::127.0.0.1] and [::169.254.169.254])
591
+ if (b.slice(0, 12).every((x) => x === 0)) {
592
+ return isBlockedIPv4(read32(12));
593
+ }
594
+ // 64:ff9b::/96 — NAT64 (RFC 6052): traffic is translated to the embedded IPv4
595
+ if (b[0] === 0x00 &&
596
+ b[1] === 0x64 &&
597
+ b[2] === 0xff &&
598
+ b[3] === 0x9b &&
599
+ b.slice(4, 12).every((x) => x === 0)) {
600
+ return isBlockedIPv4(read32(12));
601
+ }
602
+ // 2002::/16 — 6to4: the embedded IPv4 sits in bits 16–47
603
+ if (b[0] === 0x20 && b[1] === 0x02) {
604
+ return isBlockedIPv4(read32(2));
605
+ }
606
+ return false;
607
+ }
419
608
  /**
420
609
  * Validate a URL for safety.
421
610
  * @param url - URL to validate
@@ -435,18 +624,25 @@ export function isSafeURL(url, allowedSchemes = ["http", "https"]) {
435
624
  return false;
436
625
  }
437
626
  let host = parsed.hostname.toLowerCase();
438
- // Strip IPv6 brackets for consistent matching
439
- if (host.startsWith("[") && host.endsWith("]"))
627
+ const isV6Literal = host.startsWith("[") && host.endsWith("]");
628
+ if (isV6Literal)
440
629
  host = host.slice(1, -1);
441
- // Normalize expanded IPv6 loopback (::1 → 0:0:0:0:0:0:0:1)
442
- if (host === "0:0:0:0:0:0:0:1")
443
- host = "::1";
444
- // Block loopback and localhost
445
- if (host === "localhost" || host === "0.0.0.0")
446
- return false;
447
- // Block private IP ranges (SSRF prevention)
448
- if (PRIVATE_IP_RANGES.some((r) => r.test(host)))
630
+ // Block loopback hostnames (including *.localhost subdomains)
631
+ if (host === "localhost" || host.endsWith(".localhost") || host === "0.0.0.0")
449
632
  return false;
633
+ // Block private/reserved IPs (SSRF prevention) — numeric comparison over
634
+ // expanded bytes so every IPv6 spelling and numeric IPv4 form is covered.
635
+ if (isV6Literal || host.includes(":")) {
636
+ const v6 = parseIPv6Host(host);
637
+ // Unparseable IPv6 literal → reject defensively
638
+ if (v6 === null || isBlockedIPv6(v6))
639
+ return false;
640
+ }
641
+ else {
642
+ const v4 = parseIPv4Host(host);
643
+ if (v4 !== null && isBlockedIPv4(v4))
644
+ return false;
645
+ }
450
646
  // Check for suspicious patterns (path traversal)
451
647
  if (parsed.hostname.includes("..") || parsed.pathname.includes("..")) {
452
648
  return false;
@@ -518,6 +714,9 @@ export function deepClone(value) {
518
714
  }
519
715
  const cloned = {};
520
716
  for (const key in value) {
717
+ // Prototype-pollution guard: never copy __proto__ / constructor / prototype
718
+ if (key === "__proto__" || key === "constructor" || key === "prototype")
719
+ continue;
521
720
  if (Object.prototype.hasOwnProperty.call(value, key)) {
522
721
  cloned[key] = deepClone(value[key]);
523
722
  }
@@ -777,31 +976,25 @@ export function isAbortError(error) {
777
976
  * Uses `crypto.getRandomValues()` which is available in all target runtimes
778
977
  * (Node 18+, Deno, Bun, Browser, Cloudflare Workers, Vercel Edge).
779
978
  *
780
- * Falls back to `crypto.randomUUID()` as a secondary CSPRNG path for
781
- * hypothetical environments without `getRandomValues`.
979
+ * FIX (M8): removed the `Math.random()` fallback — non-CSPRNG output must
980
+ * never be used for nonces/cnonces (digest auth) or trace IDs. Environments
981
+ * without a CSPRNG now fail fast instead of silently producing predictable
982
+ * values.
782
983
  *
783
984
  * @param byteCount - Number of random bytes (output hex length = byteCount * 2)
784
985
  * @returns Hex-encoded random string
986
+ * @throws {Error} When no CSPRNG is available in the current runtime
785
987
  */
786
988
  export function randomBytes(byteCount) {
989
+ if (!Number.isInteger(byteCount) || byteCount < 0 || byteCount > 65536) {
990
+ throw new Error(`randomBytes: invalid byteCount ${byteCount}`);
991
+ }
787
992
  const arr = new Uint8Array(byteCount);
788
993
  if (typeof crypto !== "undefined" && typeof crypto.getRandomValues === "function") {
789
994
  crypto.getRandomValues(arr);
790
995
  }
791
996
  else {
792
- // Fallback: crypto.randomUUID() returns 36 hex chars (16 random bytes)
793
- // in all WinterCG-compliant runtimes. Repeat to fill requested length.
794
- const uuid = typeof crypto !== "undefined" && typeof crypto.randomUUID === "function"
795
- ? crypto.randomUUID().replace(/-/g, "")
796
- : "";
797
- if (uuid.length >= byteCount * 2) {
798
- return uuid.slice(0, byteCount * 2);
799
- }
800
- // Last-resort fallback for environments with no crypto at all.
801
- // This should never be reached in any runtime kinetex targets.
802
- for (let i = 0; i < arr.length; i++) {
803
- arr[i] = Math.floor(Math.random() * 256);
804
- }
997
+ throw new Error("randomBytes: no CSPRNG available in this runtime — crypto.getRandomValues is required");
805
998
  }
806
999
  return Array.from(arr)
807
1000
  .map((b) => b.toString(16).padStart(2, "0"))
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,8DAA8D;AAC9D,IAAI,QAAiC,CAAC;AACtC,8DAA8D;AAC9D,IAAI,OAA4D,CAAC;AAEjE,oFAAoF;AACpF,SAAS,UAAU;IACjB,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,CAAC,GAAG,UAAuC,CAAC;IAClD,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QACtB,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC;QACrB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,uDAAuD;AACvD,SAAS,SAAS;IAChB,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,MAAM,CAAC,GAAG,UAAkE,CAAC;IAC7E,IAAI,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACxD,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;QACnB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAmCD;;GAEG;AACH,MAAM,cAAc,GAAmC;IACrD,QAAQ,EAAE,EAAE;IACZ,eAAe,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO;IAC1C,cAAc,EAAE,KAAK;IACrB,aAAa,EAAE,IAAI;IACnB,cAAc,EAAE,KAAK;CACtB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,UAAgC,EAAE;IAElC,MAAM,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;IAEjD,4BAA4B;IAC5B,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QACzC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,iBAAiB;YACxB,OAAO,EAAE,uCAAuC,MAAM,CAAC,eAAe,EAAE;SACzE,CAAC;IACJ,CAAC;IAED,sEAAsE;IACtE,2EAA2E;IAC3E,uEAAuE;IACvE,0EAA0E;IAC1E,wDAAwD;IACxD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,GAAG,KAAK,CAAC;YACf,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACf,IAAI,QAAQ;gBAAE,MAAM,GAAG,IAAI,CAAC;YAC5B,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACd,QAAQ,GAAG,CAAC,QAAQ,CAAC;YACrB,SAAS;QACX,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,SAAS;QACX,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAC3B,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAC9B,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,gBAAgB;oBACvB,OAAO,EAAE,+BAA+B,MAAM,CAAC,QAAQ,EAAE;iBAC1D,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAClC,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC;IACD,0CAA0C;IAC1C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;QAEpC,4BAA4B;QAC5B,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;YAC3C,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,mBAAmB;gBAC1B,OAAO,EAAE,kCAAkC;aAC5C,CAAC;QACJ,CAAC;QAED,wCAAwC;QACxC,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,mBAAmB;gBAC1B,OAAO,EAAE,sCAAsC;aAChD,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,aAAa;YACpB,OAAO,EAAE,sBAAsB;SAChC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,iDAAiD;AACjD,SAAS,mBAAmB,CAC1B,KAAc,EACd,MAAsC,EACtC,YAAoB;IAEpB,IAAI,YAAY,GAAG,MAAM,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAEjD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAEvD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,eAAe,CAAC;IAChD,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,qDAAqD;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,cAAc;YAAE,OAAO,KAAK,CAAC;QACvD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;IACpF,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,aAAa;YAAE,OAAO,KAAK,CAAC;QACrD,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,GAAI,KAAiC,CAAC,WAAW,CAAC;YAC5D,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnC,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACjD,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;oBAAE,OAAO,KAAK,CAAC;YACnD,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CACxB,mBAAmB,CAAE,KAAiC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,YAAY,GAAG,CAAC,CAAC,CACvF,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+CAA+C;AAC/C,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAc,IAAY;IACpD,MAAM,MAAM,GAAG,aAAa,CAAI,IAAI,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/C,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAAI,KAAQ;IAC5C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE9D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,KAAmB,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACxE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;YAChB,SAAS;QACX,CAAC;QACD,wEAAwE;QACxE,uEAAuE;QACvE,uEAAuE;QACvE,uCAAuC;QACvC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAc,IAAY;IAC1D,OAAO,aAAa,CAAI,IAAI,EAAE;QAC5B,QAAQ,EAAE,EAAE;QACZ,eAAe,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,MAAM;QACxC,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,GAAG;KACnB,CAAC,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,KAAK,YAAY,UAAU,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,KAAK,YAAY,WAAW,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,CACL,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,WAAW,IAAI,KAAK;QACpB,OAAQ,KAAsC,CAAC,SAAS,KAAK,UAAU,CACxE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,CACL,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,SAAS,IAAI,KAAK;QAClB,OAAQ,KAAoC,CAAC,OAAO,KAAK,UAAU,CACpE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,CACL,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,SAAS,IAAI,KAAK;QAClB,OAAQ,KAA8B,CAAC,OAAO,KAAK,SAAS,CAC7D,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,CACL,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAC5D,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,CACL,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACxB,KAAkB,CAAC,WAAW,EAAE,IAAI,KAAK,UAAU,CACrD,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,CACL,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAK,KAAc,CAAC,WAAW,EAAE,IAAI,KAAK,MAAM,CAC5F,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,CACL,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,IAAI,KAAK;QACd,OAAQ,KAAgC,CAAC,GAAG,KAAK,UAAU,CAC5D,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E,iDAAiD;AACjD,MAAM,mBAAmB,GAAG,gCAAgC,CAAC;AAE7D;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,qDAAqD;IACrD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAChE,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI;QAAE,OAAO,KAAK,CAAC,CAAC,0BAA0B;IAChE,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI;QAAE,OAAO,KAAK,CAAC,CAAC,0BAA0B;IACjE,8EAA8E;IAC9E,sDAAsD;IACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACjC,gDAAgD;QAChD,yDAAyD;QACzD,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE;YAAE,OAAO,KAAK,CAAC;IAC5F,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,MAAM;IACN,KAAK;IACL,QAAQ;IACR,MAAM;IACN,YAAY;IACZ,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,QAAQ;IACR,KAAK;CACN,CAAC,CAAC;AAEH,sEAAsE;AACtE,0EAA0E;AAC1E,yEAAyE;AACzE,4EAA4E;AAC5E,8EAA8E;AAE9E;;GAEG;AACH,MAAM,mBAAmB,GAA4B;IACnD,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,2BAA2B;IACrD,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,gCAAgC;IAC1D,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,mCAAmC;IAC7D,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,yBAAyB;IACnD,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,8CAA8C;IACxE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,mCAAmC;IAC7D,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,2CAA2C;IACrE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,4BAA4B;IACtD,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,oCAAoC;IAC9D,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,+BAA+B;IACzD,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,+BAA+B;IACzD,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,8BAA8B;IACxD,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,0BAA0B;IACpD,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,iDAAiD;CAC5E,CAAC;AAEF,6EAA6E;AAC7E,SAAS,aAAa,CAAC,CAAS;IAC9B,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,6EAA6E;AAC7E,SAAS,kBAAkB,CAAC,CAAS;IACnC,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC1B,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1D,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACvE,2EAA2E;IAC3E,qEAAqE;IACrE,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,UAAU;YAAE,OAAO,IAAI,CAAC;QAC9C,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IACD,4EAA4E;IAC5E,wEAAwE;IACxE,4EAA4E;IAC5E,sEAAsE;IACtE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,IAAI;YAAE,OAAO,IAAI,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IACD,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY;IAC3D,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,OAAO;QAAE,OAAO,IAAI,CAAC;IAClD,KAAK,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAChE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAE,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC;AAC1F,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,kCAAkC;IACpE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAEnC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAmB,EAAE;QACrD,IAAI,IAAI,KAAK,EAAE;YAAE,OAAO,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;YACrB,IAAI,CAAC,KAAK,EAAE;gBAAE,OAAO,IAAI,CAAC;YAC1B,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpB,kEAAkE;gBAClE,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC;oBAAE,OAAO,IAAI,CAAC;gBACzC,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBAC3B,IAAI,CAAC,KAAK,IAAI;oBAAE,OAAO,IAAI,CAAC;gBAC5B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YAC7E,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;oBAAE,OAAO,IAAI,CAAC;gBAC/C,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC1B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,IAAI,KAAe,CAAC;IACpB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACjC,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC7C,IAAI,IAAI,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1B,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;IAClE,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC;QAC3C,KAAK,GAAG,GAAG,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D,CAAC;AAED,yEAAyE;AACzE,SAAS,aAAa,CAAC,CAAa;IAClC,MAAM,MAAM,GAAG,CAAC,CAAS,EAAU,EAAE,CACnC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC;IAE3E,oCAAoC;IACpC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,qBAAqB;IACrB,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAErE,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;IACpB,0DAA0D;IAC1D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACzC,yBAAyB;IACzB,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC3D,uBAAuB;IACvB,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,gCAAgC;IAChC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAElF,kEAAkE;IAClE,IACE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI;QACd,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,EACd,CAAC;QACD,OAAO,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,yEAAyE;IACzE,sDAAsD;IACtD,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACzC,OAAO,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,8EAA8E;IAC9E,IACE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;QACb,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;QACb,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;QACb,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;QACb,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EACpC,CAAC;QACD,OAAO,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,yDAAyD;IACzD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACnC,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CACvB,GAAiB,EACjB,iBAA2B,CAAC,MAAM,EAAE,OAAO,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAE/D,eAAe;QACf,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;YAC5D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,uDAAuD;QACvD,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC/D,IAAI,WAAW;YAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE1C,8DAA8D;QAC9D,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAE5F,yEAAyE;QACzE,0EAA0E;QAC1E,IAAI,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;YAC/B,gDAAgD;YAChD,IAAI,EAAE,KAAK,IAAI,IAAI,aAAa,CAAC,EAAE,CAAC;gBAAE,OAAO,KAAK,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,EAAE,KAAK,IAAI,IAAI,aAAa,CAAC,EAAE,CAAC;gBAAE,OAAO,KAAK,CAAC;QACrD,CAAC;QAED,iDAAiD;QACjD,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACrE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,mCAAmC;QACnC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG;YAAE,OAAO,KAAK,CAAC;QAE/C,+EAA+E;QAC/E,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK;YAAE,OAAO,KAAK,CAAC;QAE7C,2BAA2B;QAC3B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACvC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;gBAC5C,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,OAAO,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAI,KAAQ;IACnC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAM,CAAC;IAC7C,CAAC;IACD,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;QAC1B,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAM,CAAC;IACxC,CAAC;IACD,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAChC,OAAO,IAAI,UAAU,CAAC,KAAK,CAAM,CAAC;IACpC,CAAC;IACD,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,OAAO,MAAW,CAAC;IACrB,CAAC;IACD,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,MAAW,CAAC;IACrB,CAAC;IACD,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,4EAA4E;QAC5E,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,WAAW;YAAE,SAAS;QAClF,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YACrD,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAE,KAAiC,CAAC,GAAG,CAAC,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IACD,OAAO,MAAW,CAAC;AACrB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,CACL,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAQ,KAA4B,CAAC,IAAI,KAAK,UAAU,CACzD,CAAC;AACJ,CAAC;AAwBD;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAe,EACf,OAAqB;IAErB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAyB,CAAC;IACzD,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,MAAM,OAAO,GAA4B,EAAE,CAAC;QAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBAC3D,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACvB,CAAC;QACH,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1F,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,GAAG,UAAU,EAAE,CAAC;IACxD,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI;QAAE,OAAO,IAAI,CAAC,CAAC,mBAAmB;IAEvD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAE5B,oDAAoD;QACpD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,uDAAuD;QACvD,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;QACrB,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO;IACrB,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QACd,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;QAC7B,OAAO,GAAG,GAAG,IAAI,GAAG,EAAE,GAAG,SAAS,CAAC;IACrC,CAAC;IACD,sDAAsD;IACtD,MAAM,CAAC,GAAG,UAA2D,CAAC;IACtE,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;QACjC,8CAA8C;QAC9C,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACpB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,EAAU,EAAE,MAAoB;IACpD,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;QACpB,OAAO,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACxB,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,+BAA+B;YAC9E,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAoB;IACpD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAElD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACnB,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAAiD;IAC5E,IAAI,IAAI,YAAY,UAAU;QAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;IACpD,IAAI,IAAI,YAAY,WAAW;QAAE,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7D,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;IACtB,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,UAAU,CAAC,IAAkC,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAiB;IAClD,gFAAgF;IAChF,qEAAqE;IACrE,MAAM,KAAK,GAAG,MAAM,CAAC;IACrB,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,EAAE,CAAC;QAC9B,8CAA8C;QAC9C,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IACD,oEAAoE;IACpE,+EAA+E;IAC/E,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,UAAU,EAAE,MAAM,IAAI,KAAK,EAAE,CAAC;QAChE,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;QACrD,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QAC3C,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,gFAAgF;IAChF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzF,CAAC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAG,OAA2C;IAE9C,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;IAE5F,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC,CAAC,CAAE,CAAC;IAEvD,yCAAyC;IACzC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,UAAU,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IAEzC,qEAAqE;IACrE,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,KAAK,MAAM,CAAC,IAAI,YAAY;YAAE,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACpE,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC;IAEF,sFAAsF;IACtF,oFAAoF;IACpF,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAChC,OAAO,EACP,GAAG,EAAE;QACH,KAAK,MAAM,CAAC,IAAI,YAAY;YAAE,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACtE,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,YAAY;QAAE,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAEjF,OAAO,UAAU,CAAC,MAAM,CAAC;AAC3B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE5C,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,IAAI,CAAC;IAE7C,mBAAmB;IACnB,MAAM,GAAG,GAAG,KAA8B,CAAC;IAC3C,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc;QAAE,OAAO,IAAI,CAAC;IAE1E,eAAe;IACf,IAAI,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,IAAI,CAAC;IAE9E,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,WAAW,CAAC,SAAiB;IAC3C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,KAAK,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,kCAAkC,SAAS,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;IACtC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;QAClF,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CACb,uFAAuF,CACxF,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;SACnB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,4EAA4E;AAC5E,SAAS,WAAW;IAClB,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE,CAAC;QACxC,OAAO,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IACjC,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC;IACxB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,+EAA+E;AAC/E,kCAAkC;AAClC,+EAA+E;AAE/E,+BAA+B;AAC/B,IAAI,aAAa,GAAkB,IAAI,CAAC;AAExC;;;;;GAKG;AACH,MAAM,UAAU,UAAU;IACxB,IAAI,aAAa;QAAE,OAAO,aAAa,CAAC;IAExC,6DAA6D;IAC7D,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,UAA4D,CAAC;QACvE,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC9B,aAAa,GAAG,MAAM,CAAC;YACvB,OAAO,aAAa,CAAC;QACvB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,2BAA2B;IAC7B,CAAC;IAED,IAAI,OAAQ,UAAsC,CAAC,MAAM,CAAC,KAAK,WAAW,EAAE,CAAC;QAC3E,aAAa,GAAG,MAAM,CAAC;IACzB,CAAC;SAAM,IAAI,OAAQ,UAAsC,CAAC,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;QACjF,aAAa,GAAG,KAAK,CAAC;IACxB,CAAC;SAAM,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QACzC,aAAa,GAAG,SAAS,CAAC;IAC5B,CAAC;SAAM,IAAI,OAAO,UAAU,KAAK,WAAW,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QACvF,aAAa,GAAG,MAAM,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,aAAa,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,UAAU,EAAE,KAAK,MAAM,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,UAAU,EAAE,KAAK,SAAS,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,UAAU,EAAE,KAAK,KAAK,UAAU,CAAC;AACjD,CAAC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC7B,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC;IACpC,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/dist/esm/ws.js CHANGED
@@ -17,6 +17,9 @@
17
17
  * - Headers: real HTTP Upgrade on Deno/Bun/Node; URL params on browsers
18
18
  * - Cross-runtime: Node.js 22, Deno, Bun, Browser, Cloudflare Workers
19
19
  */
20
+ // FIX (H6): remote WS payloads are untrusted — parsed JSON dispatched to
21
+ // listeners is stripped of prototype-pollution keys (see sanitizeParsedJSON).
22
+ import { sanitizeParsedJSON } from "./utils.js";
20
23
  // ============================================================================
21
24
  // §2 ERRORS
22
25
  // ============================================================================
@@ -144,6 +147,10 @@ export class WSClient {
144
147
  _openWaiters = [];
145
148
  _correlations = new Map();
146
149
  _aborted = false;
150
+ /** Optional external abort signal from config (listener detached on close). */
151
+ _externalSignal = null;
152
+ /** Bound abort handler for the optional external `cfg.signal` (removed on close). */
153
+ _onExternalAbort = () => this.close(1000, "AbortSignal aborted");
147
154
  // ── Async iterator ──────────────────────────────────────────────────────
148
155
  _iterQueue = [];
149
156
  _iterWaiter = null;
@@ -212,7 +219,8 @@ export class WSClient {
212
219
  this._rooms.push({ room: r, joinedAt: 0 });
213
220
  }
214
221
  }
215
- cfg.signal?.addEventListener("abort", () => this.close(1000, "AbortSignal aborted"), {
222
+ this._externalSignal = cfg.signal ?? null;
223
+ this._externalSignal?.addEventListener("abort", this._onExternalAbort, {
216
224
  once: true,
217
225
  });
218
226
  }
@@ -295,6 +303,10 @@ export class WSClient {
295
303
  */
296
304
  close(code = 1000, reason = "Client closed") {
297
305
  this._aborted = true;
306
+ // Detach the external abort listener so a long-lived caller signal does
307
+ // not retain every closed client (leak fix).
308
+ this._externalSignal?.removeEventListener("abort", this._onExternalAbort);
309
+ this._externalSignal = null;
298
310
  this._stopAll();
299
311
  for (const w of this._drainWaiters.splice(0))
300
312
  w();
@@ -760,7 +772,9 @@ export class WSClient {
760
772
  data = evt.data;
761
773
  bytes = new TextEncoder().encode(data).byteLength;
762
774
  try {
763
- json = JSON.parse(data);
775
+ // FIX (H6): remote WS payloads are untrusted — strip
776
+ // prototype-pollution keys before dispatching to listeners.
777
+ json = sanitizeParsedJSON(JSON.parse(data));
764
778
  }
765
779
  catch {
766
780
  /* not JSON */