@forumone/throughline 1.0.0-next.0 → 1.0.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/README.md +70 -324
  3. package/bin/throughline.mjs +6 -0
  4. package/dist/approvals/tokens.d.ts +2 -2
  5. package/dist/approvals/tokens.d.ts.map +1 -1
  6. package/dist/approvals/tokens.js +2 -2
  7. package/dist/audit/query/options.d.ts +6 -4
  8. package/dist/audit/query/options.d.ts.map +1 -1
  9. package/dist/audit/query/options.js.map +1 -1
  10. package/dist/audit/query/plugin.d.ts.map +1 -1
  11. package/dist/audit/query/plugin.js +5 -1
  12. package/dist/audit/query/plugin.js.map +1 -1
  13. package/dist/audit/query/tools/get-change-history.d.ts +3 -1
  14. package/dist/audit/query/tools/get-change-history.d.ts.map +1 -1
  15. package/dist/audit/query/tools/get-change-history.js +2 -2
  16. package/dist/audit/query/tools/get-change-history.js.map +1 -1
  17. package/dist/audit/query/tools/get-recent-failures.d.ts +3 -1
  18. package/dist/audit/query/tools/get-recent-failures.d.ts.map +1 -1
  19. package/dist/audit/query/tools/get-recent-failures.js +2 -2
  20. package/dist/audit/query/tools/get-recent-failures.js.map +1 -1
  21. package/dist/audit/query/tools/query-audit.d.ts +5 -3
  22. package/dist/audit/query/tools/query-audit.d.ts.map +1 -1
  23. package/dist/audit/query/tools/query-audit.js +2 -2
  24. package/dist/audit/query/tools/query-audit.js.map +1 -1
  25. package/dist/audit/query/tools/what-changed-in-range.d.ts +3 -1
  26. package/dist/audit/query/tools/what-changed-in-range.d.ts.map +1 -1
  27. package/dist/audit/query/tools/what-changed-in-range.js +2 -2
  28. package/dist/audit/query/tools/what-changed-in-range.js.map +1 -1
  29. package/dist/audit/query/tools/who-changed-what.d.ts +3 -1
  30. package/dist/audit/query/tools/who-changed-what.d.ts.map +1 -1
  31. package/dist/audit/query/tools/who-changed-what.js +2 -2
  32. package/dist/audit/query/tools/who-changed-what.js.map +1 -1
  33. package/dist/components/manifest-source.d.ts +1 -1
  34. package/dist/components/manifest-source.d.ts.map +1 -1
  35. package/dist/components/manifest-source.js +1 -1
  36. package/dist/components/manifest-source.js.map +1 -1
  37. package/dist/components/matching/tfidf.d.ts +1 -1
  38. package/dist/components/matching/tfidf.d.ts.map +1 -1
  39. package/dist/components/matching/types.d.ts +1 -1
  40. package/dist/components/matching/types.d.ts.map +1 -1
  41. package/dist/components/options.d.ts +1 -1
  42. package/dist/components/options.d.ts.map +1 -1
  43. package/dist/components/validation/composition.d.ts +1 -1
  44. package/dist/components/validation/composition.d.ts.map +1 -1
  45. package/dist/email/client.d.ts.map +1 -1
  46. package/dist/email/client.js +3 -2
  47. package/dist/email/client.js.map +1 -1
  48. package/dist/email/functions/_shared.d.ts +6 -0
  49. package/dist/email/functions/_shared.d.ts.map +1 -1
  50. package/dist/email/functions/_shared.js +9 -0
  51. package/dist/email/functions/_shared.js.map +1 -1
  52. package/dist/email/functions/notify-approval-decision.d.ts.map +1 -1
  53. package/dist/email/functions/notify-approval-decision.js +2 -1
  54. package/dist/email/functions/notify-approval-decision.js.map +1 -1
  55. package/dist/email/functions/notify-approval-expired.d.ts.map +1 -1
  56. package/dist/email/functions/notify-approval-expired.js +2 -1
  57. package/dist/email/functions/notify-approval-expired.js.map +1 -1
  58. package/dist/email/functions/notify-approval-request.d.ts.map +1 -1
  59. package/dist/email/functions/notify-approval-request.js +2 -1
  60. package/dist/email/functions/notify-approval-request.js.map +1 -1
  61. package/dist/email/index.d.ts +1 -1
  62. package/dist/email/index.d.ts.map +1 -1
  63. package/dist/email/index.js +1 -1
  64. package/dist/email/index.js.map +1 -1
  65. package/dist/email/options.js +1 -1
  66. package/dist/email/options.js.map +1 -1
  67. package/dist/env/index.d.ts +0 -1
  68. package/dist/env/index.d.ts.map +1 -1
  69. package/dist/env/index.js +0 -1
  70. package/dist/env/index.js.map +1 -1
  71. package/dist/index.d.ts +3 -10
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +5 -11
  74. package/dist/index.js.map +1 -1
  75. package/dist/integrations/index.d.ts +1 -1
  76. package/dist/integrations/index.d.ts.map +1 -1
  77. package/dist/integrations/index.js +1 -1
  78. package/dist/integrations/index.js.map +1 -1
  79. package/dist/integrations/integrations/webhook/config-fields.d.ts.map +1 -1
  80. package/dist/integrations/integrations/webhook/config-fields.js +3 -0
  81. package/dist/integrations/integrations/webhook/config-fields.js.map +1 -1
  82. package/dist/integrations/integrations/webhook/functions.d.ts.map +1 -1
  83. package/dist/integrations/integrations/webhook/functions.js +0 -1
  84. package/dist/integrations/integrations/webhook/functions.js.map +1 -1
  85. package/dist/integrations/integrations/webhook/index.d.ts.map +1 -1
  86. package/dist/integrations/integrations/webhook/index.js +0 -1
  87. package/dist/integrations/integrations/webhook/index.js.map +1 -1
  88. package/dist/integrations/jobs/healthcheck.js +1 -1
  89. package/dist/integrations/jobs/healthcheck.js.map +1 -1
  90. package/dist/integrations/plugin.js +1 -1
  91. package/dist/integrations/plugin.js.map +1 -1
  92. package/dist/integrations/registry.d.ts +1 -1
  93. package/dist/integrations/registry.js +1 -1
  94. package/dist/integrations/types.d.ts +11 -9
  95. package/dist/integrations/types.d.ts.map +1 -1
  96. package/dist/jobs/failure-handler.d.ts.map +1 -1
  97. package/dist/jobs/failure-handler.js +5 -2
  98. package/dist/jobs/failure-handler.js.map +1 -1
  99. package/dist/jobs/workflow-types.d.ts +5 -1
  100. package/dist/jobs/workflow-types.d.ts.map +1 -1
  101. package/dist/mcp/audit-server.js +1 -1
  102. package/dist/mcp/audit-server.js.map +1 -1
  103. package/dist/mcp/meta.d.ts +8 -8
  104. package/dist/migrate/cli.d.ts +9 -0
  105. package/dist/migrate/cli.d.ts.map +1 -0
  106. package/dist/migrate/cli.js +105 -0
  107. package/dist/migrate/cli.js.map +1 -0
  108. package/dist/migrate/exports.json +601 -0
  109. package/dist/migrate/rewrite.d.ts +28 -0
  110. package/dist/migrate/rewrite.d.ts.map +1 -0
  111. package/dist/migrate/rewrite.js +188 -0
  112. package/dist/migrate/rewrite.js.map +1 -0
  113. package/dist/observability/collection.d.ts +3 -0
  114. package/dist/observability/collection.d.ts.map +1 -1
  115. package/dist/observability/collection.js +2 -0
  116. package/dist/observability/collection.js.map +1 -1
  117. package/dist/publishing/hooks/block-status-writes.d.ts +32 -0
  118. package/dist/publishing/hooks/block-status-writes.d.ts.map +1 -1
  119. package/dist/publishing/hooks/block-status-writes.js +52 -9
  120. package/dist/publishing/hooks/block-status-writes.js.map +1 -1
  121. package/dist/publishing/index.d.ts +6 -0
  122. package/dist/publishing/index.d.ts.map +1 -1
  123. package/dist/publishing/index.js +6 -0
  124. package/dist/publishing/index.js.map +1 -1
  125. package/dist/publishing/pipeline/steps/accessibility.d.ts +4 -3
  126. package/dist/publishing/pipeline/steps/accessibility.d.ts.map +1 -1
  127. package/dist/publishing/pipeline/steps/accessibility.js +10 -4
  128. package/dist/publishing/pipeline/steps/accessibility.js.map +1 -1
  129. package/dist/publishing/pipeline/steps/approval.js +1 -1
  130. package/dist/publishing/pipeline/steps/approval.js.map +1 -1
  131. package/dist/throughline.d.ts +123 -0
  132. package/dist/throughline.d.ts.map +1 -0
  133. package/dist/throughline.js +190 -0
  134. package/dist/throughline.js.map +1 -0
  135. package/dist/utils/optionalPeer.d.ts +12 -0
  136. package/dist/utils/optionalPeer.d.ts.map +1 -0
  137. package/dist/utils/optionalPeer.js +28 -0
  138. package/dist/utils/optionalPeer.js.map +1 -0
  139. package/package.json +33 -17
@@ -9,13 +9,13 @@ export declare const McpMetaSchema: z.ZodOptional<z.ZodObject<{
9
9
  reasoning: z.ZodOptional<z.ZodString>;
10
10
  changesSummary: z.ZodOptional<z.ZodString>;
11
11
  }, "strip", z.ZodTypeAny, {
12
- userPrompt?: string | undefined;
13
12
  reasoning?: string | undefined;
14
13
  changesSummary?: string | undefined;
15
- }, {
16
14
  userPrompt?: string | undefined;
15
+ }, {
17
16
  reasoning?: string | undefined;
18
17
  changesSummary?: string | undefined;
18
+ userPrompt?: string | undefined;
19
19
  }>>;
20
20
  export type McpMeta = z.infer<typeof McpMetaSchema>;
21
21
  /**
@@ -34,13 +34,13 @@ export declare function withMeta<Shape extends z.ZodRawShape>(shape: Shape): z.Z
34
34
  reasoning: z.ZodOptional<z.ZodString>;
35
35
  changesSummary: z.ZodOptional<z.ZodString>;
36
36
  }, "strip", z.ZodTypeAny, {
37
- userPrompt?: string | undefined;
38
37
  reasoning?: string | undefined;
39
38
  changesSummary?: string | undefined;
40
- }, {
41
39
  userPrompt?: string | undefined;
40
+ }, {
42
41
  reasoning?: string | undefined;
43
42
  changesSummary?: string | undefined;
43
+ userPrompt?: string | undefined;
44
44
  }>>;
45
45
  }, "strip", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<Shape & {
46
46
  _meta: z.ZodOptional<z.ZodObject<{
@@ -48,13 +48,13 @@ export declare function withMeta<Shape extends z.ZodRawShape>(shape: Shape): z.Z
48
48
  reasoning: z.ZodOptional<z.ZodString>;
49
49
  changesSummary: z.ZodOptional<z.ZodString>;
50
50
  }, "strip", z.ZodTypeAny, {
51
- userPrompt?: string | undefined;
52
51
  reasoning?: string | undefined;
53
52
  changesSummary?: string | undefined;
54
- }, {
55
53
  userPrompt?: string | undefined;
54
+ }, {
56
55
  reasoning?: string | undefined;
57
56
  changesSummary?: string | undefined;
57
+ userPrompt?: string | undefined;
58
58
  }>>;
59
59
  }>, any> extends infer T ? { [k in keyof T]: T[k]; } : never, z.baseObjectInputType<Shape & {
60
60
  _meta: z.ZodOptional<z.ZodObject<{
@@ -62,13 +62,13 @@ export declare function withMeta<Shape extends z.ZodRawShape>(shape: Shape): z.Z
62
62
  reasoning: z.ZodOptional<z.ZodString>;
63
63
  changesSummary: z.ZodOptional<z.ZodString>;
64
64
  }, "strip", z.ZodTypeAny, {
65
- userPrompt?: string | undefined;
66
65
  reasoning?: string | undefined;
67
66
  changesSummary?: string | undefined;
68
- }, {
69
67
  userPrompt?: string | undefined;
68
+ }, {
70
69
  reasoning?: string | undefined;
71
70
  changesSummary?: string | undefined;
71
+ userPrompt?: string | undefined;
72
72
  }>>;
73
73
  }> extends infer T_1 ? { [k_1 in keyof T_1]: T_1[k_1]; } : never>;
74
74
  //# sourceMappingURL=meta.d.ts.map
@@ -0,0 +1,9 @@
1
+ interface Write {
2
+ stdout: (line: string) => void;
3
+ stderr: (line: string) => void;
4
+ }
5
+ export declare function migrateImports(args: readonly string[], out?: Write): Promise<number>;
6
+ /** The `throughline` bin: one subcommand so far. */
7
+ export declare function main(argv: readonly string[]): Promise<number>;
8
+ export {};
9
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/migrate/cli.ts"],"names":[],"mappings":"AA0BA,UAAU,KAAK;IACb,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B;AAgBD,wBAAsB,cAAc,CAClC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,GAAE,KAAsD,GAC1D,OAAO,CAAC,MAAM,CAAC,CAyDjB;AAED,oDAAoD;AACpD,wBAAsB,IAAI,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAKnE"}
@@ -0,0 +1,105 @@
1
+ /* eslint-disable no-console -- a command-line tool, whose output is the console */
2
+ import { readdir, readFile, stat, writeFile } from 'node:fs/promises';
3
+ import { join, relative, resolve } from 'node:path';
4
+ import { COUNTERPARTS, rewriteSource } from './rewrite.js';
5
+ /*
6
+ `throughline migrate-imports [paths…] [--dry-run]`
7
+
8
+ Rewrites every 0.x Throughline import under the given paths (default: the
9
+ working directory) to its 1.0 home, and reports what it could not place. Exits 1
10
+ when anything is left unresolved, so a migration can gate on it.
11
+ */
12
+ const SOURCE = /\.(ts|tsx|mts|cts|js|jsx|mjs|cjs)$/;
13
+ const SKIP = new Set(['node_modules', 'dist', '.next', '.turbo', 'build', 'coverage', '.git']);
14
+ const OLD_PACKAGES = [
15
+ ...new Set(Object.keys(COUNTERPARTS).map((s) => s.split('/').slice(0, 2).join('/'))),
16
+ ];
17
+ const USAGE = `Usage: throughline migrate-imports [paths…] [--dry-run]
18
+
19
+ Rewrites imports of the 0.x @forumone/throughline-* packages to
20
+ @forumone/throughline and @forumone/throughline-design-system 1.0.
21
+
22
+ --dry-run report what would change, and write nothing`;
23
+ async function* walk(path) {
24
+ const info = await stat(path);
25
+ if (info.isFile()) {
26
+ yield path;
27
+ return;
28
+ }
29
+ for (const entry of await readdir(path, { withFileTypes: true })) {
30
+ if (SKIP.has(entry.name))
31
+ continue;
32
+ const full = join(path, entry.name);
33
+ if (entry.isDirectory())
34
+ yield* walk(full);
35
+ else
36
+ yield full;
37
+ }
38
+ }
39
+ export async function migrateImports(args, out = { stdout: console.log, stderr: console.error }) {
40
+ if (args.includes('--help') || args.includes('-h')) {
41
+ out.stdout(USAGE);
42
+ return 0;
43
+ }
44
+ const dryRun = args.includes('--dry-run');
45
+ const roots = args.filter((a) => !a.startsWith('--'));
46
+ const cwd = process.cwd();
47
+ let changed = 0;
48
+ const review = [];
49
+ const unresolved = [];
50
+ const manifests = [];
51
+ for (const root of roots.length > 0 ? roots : ['.']) {
52
+ for await (const file of walk(resolve(root))) {
53
+ const name = relative(cwd, file) || file;
54
+ if (file.endsWith('package.json')) {
55
+ const manifest = JSON.parse(await readFile(file, 'utf8'));
56
+ const deps = ['dependencies', 'devDependencies', 'peerDependencies'].flatMap((field) => Object.keys(manifest[field] ?? {}).filter((dep) => OLD_PACKAGES.includes(dep)));
57
+ if (deps.length > 0)
58
+ manifests.push({ file: name, deps });
59
+ continue;
60
+ }
61
+ if (!SOURCE.test(file))
62
+ continue;
63
+ const text = await readFile(file, 'utf8');
64
+ if (!text.includes('@forumone/throughline-'))
65
+ continue;
66
+ const result = rewriteSource(text);
67
+ for (const finding of result.review)
68
+ review.push({ file: name, ...finding });
69
+ for (const finding of result.unresolved)
70
+ unresolved.push({ file: name, ...finding });
71
+ if (result.changed) {
72
+ changed++;
73
+ if (!dryRun)
74
+ await writeFile(file, result.text);
75
+ }
76
+ }
77
+ }
78
+ out.stdout(`${dryRun ? 'Would rewrite' : 'Rewrote'} ${changed} file${changed === 1 ? '' : 's'}.`);
79
+ if (review.length > 0) {
80
+ out.stdout(`\nRewritten, but check (${review.length}):`);
81
+ for (const f of review)
82
+ out.stdout(` ${f.file}:${f.line} ${f.message}`);
83
+ }
84
+ if (manifests.length > 0) {
85
+ out.stdout('\nDependencies to replace with @forumone/throughline (and @forumone/throughline-design-system for design-contract and design-system-payload):');
86
+ for (const m of manifests)
87
+ out.stdout(` ${m.file}: ${m.deps.join(', ')}`);
88
+ }
89
+ if (unresolved.length > 0) {
90
+ out.stderr(`\nLeft as they were (${unresolved.length}):`);
91
+ for (const f of unresolved)
92
+ out.stderr(` ${f.file}:${f.line} ${f.message}`);
93
+ return 1;
94
+ }
95
+ return 0;
96
+ }
97
+ /** The `throughline` bin: one subcommand so far. */
98
+ export async function main(argv) {
99
+ const [command, ...rest] = argv;
100
+ if (command === 'migrate-imports')
101
+ return migrateImports(rest);
102
+ console.error(command ? `Unknown command: ${command}\n\n${USAGE}` : USAGE);
103
+ return command ? 2 : 0;
104
+ }
105
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/migrate/cli.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAgB,MAAM,cAAc,CAAA;AAExE;;;;;;EAME;AAEF,MAAM,MAAM,GAAG,oCAAoC,CAAA;AACnD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;AAC9F,MAAM,YAAY,GAAG;IACnB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;CACrF,CAAA;AAED,MAAM,KAAK,GAAG;;;;;0DAK4C,CAAA;AAO1D,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,IAAY;IAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAA;IAC7B,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,CAAA;QACV,OAAM;IACR,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACjE,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,SAAQ;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QACnC,IAAI,KAAK,CAAC,WAAW,EAAE;YAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;;YACrC,MAAM,IAAI,CAAA;IACjB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAuB,EACvB,MAAa,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE;IAE3D,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACjB,OAAO,CAAC,CAAA;IACV,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IACrD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACzB,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,MAAM,MAAM,GAAsC,EAAE,CAAA;IACpD,MAAM,UAAU,GAAsC,EAAE,CAAA;IACxD,MAAM,SAAS,GAA4C,EAAE,CAAA;IAE7D,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACpD,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,IAAI,CAAA;YACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAGvD,CAAA;gBACD,MAAM,IAAI,GAAG,CAAC,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACrF,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAC/E,CAAA;gBACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;oBAAE,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;gBACzD,SAAQ;YACV,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,SAAQ;YAChC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YACzC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC;gBAAE,SAAQ;YACtD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;YAClC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM;gBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAA;YAC5E,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,UAAU;gBAAE,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAA;YACpF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,EAAE,CAAA;gBACT,IAAI,CAAC,MAAM;oBAAE,MAAM,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;YACjD,CAAC;QACH,CAAC;IACH,CAAC;IAED,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,IAAI,OAAO,QAAQ,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;IACjG,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,GAAG,CAAC,MAAM,CAAC,2BAA2B,MAAM,CAAC,MAAM,IAAI,CAAC,CAAA;QACxD,KAAK,MAAM,CAAC,IAAI,MAAM;YAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;IAC3E,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,GAAG,CAAC,MAAM,CACR,+IAA+I,CAChJ,CAAA;QACD,KAAK,MAAM,CAAC,IAAI,SAAS;YAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC5E,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,GAAG,CAAC,MAAM,CAAC,wBAAwB,UAAU,CAAC,MAAM,IAAI,CAAC,CAAA;QACzD,KAAK,MAAM,CAAC,IAAI,UAAU;YAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;QAC7E,OAAO,CAAC,CAAA;IACV,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,oDAAoD;AACpD,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAuB;IAChD,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;IAC/B,IAAI,OAAO,KAAK,iBAAiB;QAAE,OAAO,cAAc,CAAC,IAAI,CAAC,CAAA;IAC9D,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,OAAO,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAC1E,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACxB,CAAC"}