agent-relay 6.0.17 → 6.0.19

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 (63) hide show
  1. package/dist/index.cjs +105 -31
  2. package/dist/packages/cloud/src/api-client.d.ts +33 -0
  3. package/dist/packages/cloud/src/api-client.d.ts.map +1 -0
  4. package/dist/packages/cloud/src/api-client.js +123 -0
  5. package/dist/packages/cloud/src/api-client.js.map +1 -0
  6. package/dist/packages/cloud/src/auth.d.ts +13 -0
  7. package/dist/packages/cloud/src/auth.d.ts.map +1 -0
  8. package/dist/packages/cloud/src/auth.js +299 -0
  9. package/dist/packages/cloud/src/auth.js.map +1 -0
  10. package/dist/packages/cloud/src/connect.d.ts +45 -0
  11. package/dist/packages/cloud/src/connect.d.ts.map +1 -0
  12. package/dist/packages/cloud/src/connect.js +166 -0
  13. package/dist/packages/cloud/src/connect.js.map +1 -0
  14. package/dist/packages/cloud/src/index.d.ts +10 -0
  15. package/dist/packages/cloud/src/index.d.ts.map +1 -0
  16. package/dist/packages/cloud/src/index.js +10 -0
  17. package/dist/packages/cloud/src/index.js.map +1 -0
  18. package/dist/packages/cloud/src/lib/ssh-interactive.d.ts +70 -0
  19. package/dist/packages/cloud/src/lib/ssh-interactive.d.ts.map +1 -0
  20. package/dist/packages/cloud/src/lib/ssh-interactive.js +440 -0
  21. package/dist/packages/cloud/src/lib/ssh-interactive.js.map +1 -0
  22. package/dist/packages/cloud/src/lib/ssh-runtime.d.ts +35 -0
  23. package/dist/packages/cloud/src/lib/ssh-runtime.d.ts.map +1 -0
  24. package/dist/packages/cloud/src/lib/ssh-runtime.js +52 -0
  25. package/dist/packages/cloud/src/lib/ssh-runtime.js.map +1 -0
  26. package/dist/packages/cloud/src/proactive-runtime.d.ts +24 -0
  27. package/dist/packages/cloud/src/proactive-runtime.d.ts.map +1 -0
  28. package/dist/packages/cloud/src/proactive-runtime.js +315 -0
  29. package/dist/packages/cloud/src/proactive-runtime.js.map +1 -0
  30. package/dist/packages/cloud/src/types.d.ts +200 -0
  31. package/dist/packages/cloud/src/types.d.ts.map +1 -0
  32. package/dist/packages/cloud/src/types.js +12 -0
  33. package/dist/packages/cloud/src/types.js.map +1 -0
  34. package/dist/packages/cloud/src/workflows.d.ts +65 -0
  35. package/dist/packages/cloud/src/workflows.d.ts.map +1 -0
  36. package/dist/packages/cloud/src/workflows.js +892 -0
  37. package/dist/packages/cloud/src/workflows.js.map +1 -0
  38. package/dist/packages/cloud/src/workspaces.d.ts +11 -0
  39. package/dist/packages/cloud/src/workspaces.d.ts.map +1 -0
  40. package/dist/packages/cloud/src/workspaces.js +146 -0
  41. package/dist/packages/cloud/src/workspaces.js.map +1 -0
  42. package/dist/src/cli/bootstrap.d.ts +3 -1
  43. package/dist/src/cli/bootstrap.d.ts.map +1 -1
  44. package/dist/src/cli/bootstrap.js +17 -3
  45. package/dist/src/cli/bootstrap.js.map +1 -1
  46. package/dist/src/cli/commands/cloud.js +1 -1
  47. package/dist/src/cli/commands/cloud.js.map +1 -1
  48. package/dist/src/cli/commands/dlq.d.ts +20 -0
  49. package/dist/src/cli/commands/dlq.d.ts.map +1 -0
  50. package/dist/src/cli/commands/dlq.js +456 -0
  51. package/dist/src/cli/commands/dlq.js.map +1 -0
  52. package/dist/src/cli/commands/proactive-bootstrap.d.ts +10 -0
  53. package/dist/src/cli/commands/proactive-bootstrap.d.ts.map +1 -0
  54. package/dist/src/cli/commands/proactive-bootstrap.js +133 -0
  55. package/dist/src/cli/commands/proactive-bootstrap.js.map +1 -0
  56. package/dist/src/cli/commands/relay-runtime.d.ts +58 -0
  57. package/dist/src/cli/commands/relay-runtime.d.ts.map +1 -0
  58. package/dist/src/cli/commands/relay-runtime.js +484 -0
  59. package/dist/src/cli/commands/relay-runtime.js.map +1 -0
  60. package/dist/src/cli/commands/setup.d.ts.map +1 -1
  61. package/dist/src/cli/commands/setup.js +11 -9
  62. package/dist/src/cli/commands/setup.js.map +1 -1
  63. package/package.json +11 -10
package/dist/index.cjs CHANGED
@@ -42510,17 +42510,72 @@ function estimateTokens(text) {
42510
42510
  return Math.ceil(length / 3.5);
42511
42511
  }
42512
42512
  const sampleSize = Math.min(1e3, length);
42513
- const sample = text.substring(0, sampleSize);
42514
42513
  let codeChars = 0;
42515
42514
  let whitespaceChars = 0;
42516
- let _punctuationChars = 0;
42517
- for (let i = 0; i < sample.length; i++) {
42518
- const char = sample[i];
42519
- if (/\s/.test(char)) {
42515
+ for (let i = 0; i < sampleSize; i++) {
42516
+ const code = text.charCodeAt(i);
42517
+ if (code <= 32 || code === 127) {
42520
42518
  whitespaceChars++;
42521
- } else if (/[{}[\]();:,.<>!=+\-*/&|^~`@#$%]/.test(char)) {
42522
- _punctuationChars++;
42523
- codeChars++;
42519
+ continue;
42520
+ }
42521
+ switch (code) {
42522
+ case 33:
42523
+ // !
42524
+ case 35:
42525
+ // #
42526
+ case 36:
42527
+ // $
42528
+ case 37:
42529
+ // %
42530
+ case 38:
42531
+ // &
42532
+ case 40:
42533
+ // (
42534
+ case 41:
42535
+ // )
42536
+ case 42:
42537
+ // *
42538
+ case 43:
42539
+ // +
42540
+ case 44:
42541
+ // ,
42542
+ case 45:
42543
+ // -
42544
+ case 46:
42545
+ // .
42546
+ case 47:
42547
+ // /
42548
+ case 58:
42549
+ // :
42550
+ case 59:
42551
+ // ;
42552
+ case 60:
42553
+ // <
42554
+ case 61:
42555
+ // =
42556
+ case 62:
42557
+ // >
42558
+ case 64:
42559
+ // @
42560
+ case 91:
42561
+ // [
42562
+ case 93:
42563
+ // ]
42564
+ case 94:
42565
+ // ^
42566
+ case 96:
42567
+ // `
42568
+ case 123:
42569
+ // {
42570
+ case 124:
42571
+ // |
42572
+ case 125:
42573
+ // }
42574
+ case 126:
42575
+ codeChars++;
42576
+ break;
42577
+ default:
42578
+ break;
42524
42579
  }
42525
42580
  }
42526
42581
  const codeRatio = codeChars / sampleSize;
@@ -42659,15 +42714,17 @@ function benchmarkTokenEstimation(iterations = 1e4) {
42659
42714
  "A".repeat(1e4)
42660
42715
  // 10k chars
42661
42716
  ];
42717
+ for (const text of testTexts) {
42718
+ estimateTokens(text);
42719
+ }
42662
42720
  let maxNs = 0;
42663
42721
  let totalTokens = 0;
42664
42722
  const start = process.hrtime.bigint();
42665
42723
  for (let i = 0; i < iterations; i++) {
42666
42724
  for (const text of testTexts) {
42667
- const s3 = process.hrtime.bigint();
42668
- const tokens = estimateTokens(text);
42669
- totalTokens += tokens;
42670
- const elapsed = Number(process.hrtime.bigint() - s3);
42725
+ const sampleStart = process.hrtime.bigint();
42726
+ totalTokens += estimateTokens(text);
42727
+ const elapsed = Number(process.hrtime.bigint() - sampleStart);
42671
42728
  if (elapsed > maxNs)
42672
42729
  maxNs = elapsed;
42673
42730
  }
@@ -42745,12 +42802,15 @@ var init_context_compaction = __esm({
42745
42802
  importanceMap.set(result[i].id, calculateImportance(result[i], i, result.length));
42746
42803
  }
42747
42804
  if (this.config.enableDeduplication) {
42805
+ const protectedRecentIds = new Set(this.config.keepRecentCount > 0 ? result.slice(-this.config.keepRecentCount).map((m2) => m2.id) : []);
42748
42806
  const duplicates = findDuplicates(result, this.config.deduplicationThreshold);
42749
42807
  if (duplicates.size > 0) {
42750
42808
  const toRemove = /* @__PURE__ */ new Set();
42751
42809
  for (const [, dups] of duplicates) {
42752
42810
  for (const id of dups) {
42753
- toRemove.add(id);
42811
+ if (!protectedRecentIds.has(id)) {
42812
+ toRemove.add(id);
42813
+ }
42754
42814
  }
42755
42815
  }
42756
42816
  result = result.filter((m2) => !toRemove.has(m2.id));
@@ -42794,10 +42854,7 @@ var init_context_compaction = __esm({
42794
42854
  if (messagesToSummarize.length >= 3) {
42795
42855
  const summary = createSummary(messagesToSummarize);
42796
42856
  const summaryIds = new Set(messagesToSummarize.map((m2) => m2.id));
42797
- result = [
42798
- summary,
42799
- ...result.filter((m2) => !summaryIds.has(m2.id))
42800
- ];
42857
+ result = [summary, ...result.filter((m2) => !summaryIds.has(m2.id))];
42801
42858
  strategy = "summarize";
42802
42859
  return {
42803
42860
  messages: result,
@@ -91149,6 +91206,14 @@ function replaceOrphanedCsiPrefix(match) {
91149
91206
  return replacement;
91150
91207
  }
91151
91208
  function stripAnsiFast(str) {
91209
+ if (str.length === 0) {
91210
+ return str;
91211
+ }
91212
+ const hasEscape = str.indexOf("\x1B") !== -1;
91213
+ const hasCarriageReturn = str.indexOf("\r") !== -1;
91214
+ if (!hasEscape && !hasCarriageReturn && str.indexOf("[") === -1) {
91215
+ return str;
91216
+ }
91152
91217
  CURSOR_FORWARD_CSI_COMPILED.lastIndex = 0;
91153
91218
  ORPHANED_CURSOR_FORWARD_CSI_COMPILED.lastIndex = 0;
91154
91219
  ANSI_PATTERN_COMPILED.lastIndex = 0;
@@ -91246,14 +91311,17 @@ function benchmarkPatterns(iterations = 1e4) {
91246
91311
  const results = {};
91247
91312
  {
91248
91313
  let maxNs = 0;
91314
+ for (const str of testStrings) {
91315
+ const sampleStart = process.hrtime.bigint();
91316
+ isInstructionalTextFast(str);
91317
+ const elapsed = Number(process.hrtime.bigint() - sampleStart);
91318
+ if (elapsed > maxNs)
91319
+ maxNs = elapsed;
91320
+ }
91249
91321
  const start = process.hrtime.bigint();
91250
91322
  for (let i = 0; i < iterations; i++) {
91251
91323
  for (const str of testStrings) {
91252
- const s3 = process.hrtime.bigint();
91253
91324
  isInstructionalTextFast(str);
91254
- const elapsed = Number(process.hrtime.bigint() - s3);
91255
- if (elapsed > maxNs)
91256
- maxNs = elapsed;
91257
91325
  }
91258
91326
  }
91259
91327
  const totalNs = Number(process.hrtime.bigint() - start);
@@ -91264,14 +91332,17 @@ function benchmarkPatterns(iterations = 1e4) {
91264
91332
  }
91265
91333
  {
91266
91334
  let maxNs = 0;
91335
+ for (const str of testStrings) {
91336
+ const sampleStart = process.hrtime.bigint();
91337
+ stripAnsiFast(str);
91338
+ const elapsed = Number(process.hrtime.bigint() - sampleStart);
91339
+ if (elapsed > maxNs)
91340
+ maxNs = elapsed;
91341
+ }
91267
91342
  const start = process.hrtime.bigint();
91268
91343
  for (let i = 0; i < iterations; i++) {
91269
91344
  for (const str of testStrings) {
91270
- const s3 = process.hrtime.bigint();
91271
91345
  stripAnsiFast(str);
91272
- const elapsed = Number(process.hrtime.bigint() - s3);
91273
- if (elapsed > maxNs)
91274
- maxNs = elapsed;
91275
91346
  }
91276
91347
  }
91277
91348
  const totalNs = Number(process.hrtime.bigint() - start);
@@ -91283,14 +91354,17 @@ function benchmarkPatterns(iterations = 1e4) {
91283
91354
  {
91284
91355
  const targets = ["AgentName", "Lead", "Worker", "target", "Developer"];
91285
91356
  let maxNs = 0;
91357
+ for (const target of targets) {
91358
+ const sampleStart = process.hrtime.bigint();
91359
+ isPlaceholderTargetFast(target);
91360
+ const elapsed = Number(process.hrtime.bigint() - sampleStart);
91361
+ if (elapsed > maxNs)
91362
+ maxNs = elapsed;
91363
+ }
91286
91364
  const start = process.hrtime.bigint();
91287
91365
  for (let i = 0; i < iterations; i++) {
91288
- for (const t of targets) {
91289
- const s3 = process.hrtime.bigint();
91290
- isPlaceholderTargetFast(t);
91291
- const elapsed = Number(process.hrtime.bigint() - s3);
91292
- if (elapsed > maxNs)
91293
- maxNs = elapsed;
91366
+ for (const target of targets) {
91367
+ isPlaceholderTargetFast(target);
91294
91368
  }
91295
91369
  }
91296
91370
  const totalNs = Number(process.hrtime.bigint() - start);
@@ -0,0 +1,33 @@
1
+ export type CloudApiClientOptions = {
2
+ apiUrl: string;
3
+ accessToken: string;
4
+ refreshToken: string;
5
+ accessTokenExpiresAt: string;
6
+ refreshTokenExpiresAt?: string;
7
+ };
8
+ export type CloudApiClientSnapshot = {
9
+ apiUrl: string;
10
+ accessToken: string;
11
+ refreshToken: string;
12
+ accessTokenExpiresAt: string;
13
+ refreshTokenExpiresAt?: string;
14
+ };
15
+ export declare function buildApiUrl(apiUrl: string, p: string): URL;
16
+ export declare class CloudApiClient {
17
+ private readonly options;
18
+ private accessToken;
19
+ private refreshToken;
20
+ private accessTokenExpiresAt;
21
+ private refreshTokenExpiresAt?;
22
+ private refreshPromise;
23
+ constructor(options: CloudApiClientOptions);
24
+ static fromEnv(env: NodeJS.ProcessEnv): CloudApiClient | null;
25
+ snapshot(): CloudApiClientSnapshot;
26
+ fetch(p: string, init?: RequestInit): Promise<Response>;
27
+ revoke(): Promise<void>;
28
+ private refresh;
29
+ private doRefresh;
30
+ private buildHeaders;
31
+ private shouldRefresh;
32
+ }
33
+ //# sourceMappingURL=api-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../../packages/cloud/src/api-client.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAYF,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,GAAG,CAE1D;AAED,qBAAa,cAAc;IAOb,OAAO,CAAC,QAAQ,CAAC,OAAO;IANpC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,qBAAqB,CAAC,CAAS;IACvC,OAAO,CAAC,cAAc,CAA8B;gBAEvB,OAAO,EAAE,qBAAqB;IAO3D,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,cAAc,GAAG,IAAI;IAoB7D,QAAQ,IAAI,sBAAsB;IAU5B,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAoB3D,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;YAcf,OAAO;YAgBP,SAAS;IA8BvB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,aAAa;CAQtB"}
@@ -0,0 +1,123 @@
1
+ import { REFRESH_WINDOW_MS } from './types.js';
2
+ function trimLeadingSlash(p) {
3
+ return p.replace(/^\/+/, '');
4
+ }
5
+ function withTrailingSlash(p) {
6
+ return p.endsWith('/') ? p : `${p}/`;
7
+ }
8
+ export function buildApiUrl(apiUrl, p) {
9
+ return new URL(trimLeadingSlash(p), withTrailingSlash(apiUrl));
10
+ }
11
+ export class CloudApiClient {
12
+ options;
13
+ accessToken;
14
+ refreshToken;
15
+ accessTokenExpiresAt;
16
+ refreshTokenExpiresAt;
17
+ refreshPromise = null;
18
+ constructor(options) {
19
+ this.options = options;
20
+ this.accessToken = options.accessToken;
21
+ this.refreshToken = options.refreshToken;
22
+ this.accessTokenExpiresAt = options.accessTokenExpiresAt;
23
+ this.refreshTokenExpiresAt = options.refreshTokenExpiresAt;
24
+ }
25
+ static fromEnv(env) {
26
+ const apiUrl = env.CLOUD_API_URL?.trim();
27
+ const accessToken = env.CLOUD_API_ACCESS_TOKEN?.trim();
28
+ const refreshToken = env.CLOUD_API_REFRESH_TOKEN?.trim();
29
+ const accessTokenExpiresAt = env.CLOUD_API_ACCESS_TOKEN_EXPIRES_AT?.trim();
30
+ const refreshTokenExpiresAt = env.CLOUD_API_REFRESH_TOKEN_EXPIRES_AT?.trim();
31
+ if (!apiUrl || !accessToken || !refreshToken || !accessTokenExpiresAt) {
32
+ return null;
33
+ }
34
+ return new CloudApiClient({
35
+ apiUrl,
36
+ accessToken,
37
+ refreshToken,
38
+ accessTokenExpiresAt,
39
+ refreshTokenExpiresAt,
40
+ });
41
+ }
42
+ snapshot() {
43
+ return {
44
+ apiUrl: this.options.apiUrl,
45
+ accessToken: this.accessToken,
46
+ refreshToken: this.refreshToken,
47
+ accessTokenExpiresAt: this.accessTokenExpiresAt,
48
+ ...(this.refreshTokenExpiresAt ? { refreshTokenExpiresAt: this.refreshTokenExpiresAt } : {}),
49
+ };
50
+ }
51
+ async fetch(p, init = {}) {
52
+ await this.refresh();
53
+ const response = await fetch(buildApiUrl(this.options.apiUrl, p), {
54
+ ...init,
55
+ headers: this.buildHeaders(init.headers),
56
+ });
57
+ if (response.status !== 401) {
58
+ return response;
59
+ }
60
+ await this.refresh(true);
61
+ return fetch(buildApiUrl(this.options.apiUrl, p), {
62
+ ...init,
63
+ headers: this.buildHeaders(init.headers),
64
+ });
65
+ }
66
+ async revoke() {
67
+ const response = await fetch(buildApiUrl(this.options.apiUrl, '/api/v1/auth/token/revoke'), {
68
+ method: 'POST',
69
+ headers: {
70
+ 'Content-Type': 'application/json',
71
+ },
72
+ body: JSON.stringify({ token: this.refreshToken }),
73
+ });
74
+ if (!response.ok && response.status !== 404) {
75
+ throw new Error(`Failed to revoke API token: ${response.status} ${response.statusText}`);
76
+ }
77
+ }
78
+ async refresh(force = false) {
79
+ if (this.refreshPromise) {
80
+ return this.refreshPromise;
81
+ }
82
+ if (!force && !this.shouldRefresh()) {
83
+ return;
84
+ }
85
+ this.refreshPromise = this.doRefresh().finally(() => {
86
+ this.refreshPromise = null;
87
+ });
88
+ return this.refreshPromise;
89
+ }
90
+ async doRefresh() {
91
+ const response = await fetch(buildApiUrl(this.options.apiUrl, '/api/v1/auth/token/refresh'), {
92
+ method: 'POST',
93
+ headers: {
94
+ 'Content-Type': 'application/json',
95
+ },
96
+ body: JSON.stringify({ refreshToken: this.refreshToken }),
97
+ });
98
+ if (!response.ok) {
99
+ throw new Error(`Failed to refresh API token: ${response.status} ${response.statusText}`);
100
+ }
101
+ const payload = (await response.json());
102
+ if (!payload.accessToken || !payload.accessTokenExpiresAt || !payload.refreshToken) {
103
+ throw new Error('Refresh response missing token fields');
104
+ }
105
+ this.accessToken = payload.accessToken;
106
+ this.accessTokenExpiresAt = payload.accessTokenExpiresAt;
107
+ this.refreshToken = payload.refreshToken;
108
+ this.refreshTokenExpiresAt = payload.refreshTokenExpiresAt;
109
+ }
110
+ buildHeaders(headers) {
111
+ const merged = new Headers(headers);
112
+ merged.set('Authorization', `Bearer ${this.accessToken}`);
113
+ return merged;
114
+ }
115
+ shouldRefresh() {
116
+ const expiresAt = Date.parse(this.accessTokenExpiresAt);
117
+ if (Number.isNaN(expiresAt)) {
118
+ return true;
119
+ }
120
+ return expiresAt - Date.now() <= REFRESH_WINDOW_MS;
121
+ }
122
+ }
123
+ //# sourceMappingURL=api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../../../packages/cloud/src/api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { type StoredAuth } from './types.js';
2
+ export declare function readStoredAuth(env?: NodeJS.ProcessEnv): Promise<StoredAuth | null>;
3
+ export declare function writeStoredAuth(auth: StoredAuth): Promise<void>;
4
+ export declare function clearStoredAuth(): Promise<void>;
5
+ export declare function refreshStoredAuth(auth: StoredAuth): Promise<StoredAuth>;
6
+ export declare function ensureAuthenticated(apiUrl: string, options?: {
7
+ force?: boolean;
8
+ }): Promise<StoredAuth>;
9
+ export declare function authorizedApiFetch(auth: StoredAuth, requestPath: string, init: RequestInit): Promise<{
10
+ response: Response;
11
+ auth: StoredAuth;
12
+ }>;
13
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../packages/cloud/src/auth.ts"],"names":[],"mappings":"AAOA,OAAO,EAAqC,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAgEhF,wBAAsB,cAAc,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAarG;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CASrE;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAErD;AAyKD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAgC7E;AASD,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5B,OAAO,CAAC,UAAU,CAAC,CA0BrB;AAkBD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,CAoBnD"}