@lesliechan721/aw 0.1.0-beta.7 → 0.1.0-beta.8

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 (237) hide show
  1. package/dist/authoring/scripts/init-plugin.mjs +4 -33
  2. package/dist/authoring/scripts/init-plugin.mjs.map +1 -1
  3. package/dist/authoring/scripts/lib/plugin-version-check.mjs +1 -1
  4. package/dist/authoring/scripts/plugin-status.mjs +8 -11
  5. package/dist/authoring/scripts/plugin-status.mjs.map +1 -1
  6. package/dist/authoring/scripts/remove-plugin.mjs +1 -0
  7. package/dist/authoring/scripts/remove-plugin.mjs.map +1 -1
  8. package/dist/authoring/scripts/validate-plugin.mjs +104 -54
  9. package/dist/authoring/scripts/validate-plugin.mjs.map +1 -1
  10. package/dist/scripts/codex-eval-app-server.d.ts +2 -0
  11. package/dist/scripts/codex-eval-app-server.js +107 -1
  12. package/dist/scripts/codex-eval-app-server.js.map +1 -1
  13. package/dist/scripts/eval-plugin-skills.js +5 -2
  14. package/dist/scripts/eval-plugin-skills.js.map +1 -1
  15. package/dist/scripts/plugin-eval-contract.d.ts +5 -1
  16. package/dist/scripts/plugin-eval-contract.js +54 -4
  17. package/dist/scripts/plugin-eval-contract.js.map +1 -1
  18. package/dist/scripts/plugin-staging.d.ts +6 -7
  19. package/dist/scripts/plugin-staging.js +11 -23
  20. package/dist/scripts/plugin-staging.js.map +1 -1
  21. package/dist/scripts/test-plugin-scripts.js +2 -33
  22. package/dist/scripts/test-plugin-scripts.js.map +1 -1
  23. package/dist/src/adapters/helpers.js +2 -2
  24. package/dist/src/adapters/helpers.js.map +1 -1
  25. package/dist/src/authoring/workspace-commands.d.ts +17 -2
  26. package/dist/src/authoring/workspace-commands.js +21 -4
  27. package/dist/src/authoring/workspace-commands.js.map +1 -1
  28. package/dist/src/commands/aw-capabilities.d.ts +78 -0
  29. package/dist/src/commands/aw-capabilities.js +259 -0
  30. package/dist/src/commands/aw-capabilities.js.map +1 -0
  31. package/dist/src/commands/catalog-context.d.ts +52 -0
  32. package/dist/src/commands/catalog-context.js +156 -0
  33. package/dist/src/commands/catalog-context.js.map +1 -0
  34. package/dist/src/commands/catalog-dev-source.d.ts +112 -0
  35. package/dist/src/commands/catalog-dev-source.js +481 -0
  36. package/dist/src/commands/catalog-dev-source.js.map +1 -0
  37. package/dist/src/commands/catalog-generation.d.ts +26 -0
  38. package/dist/src/commands/catalog-generation.js +14 -0
  39. package/dist/src/commands/catalog-generation.js.map +1 -0
  40. package/dist/src/commands/catalog-publication-inspection.d.ts +1 -1
  41. package/dist/src/commands/catalog-publication-inspection.js +4 -5
  42. package/dist/src/commands/catalog-publication-inspection.js.map +1 -1
  43. package/dist/src/commands/catalog-publication-target.d.ts +17 -0
  44. package/dist/src/commands/catalog-publication-target.js +60 -0
  45. package/dist/src/commands/catalog-publication-target.js.map +1 -0
  46. package/dist/src/commands/catalog-publish.d.ts +8 -1
  47. package/dist/src/commands/catalog-publish.js +25 -2
  48. package/dist/src/commands/catalog-publish.js.map +1 -1
  49. package/dist/src/commands/catalog-source.d.ts +23 -1
  50. package/dist/src/commands/catalog-source.js +126 -40
  51. package/dist/src/commands/catalog-source.js.map +1 -1
  52. package/dist/src/commands/catalog-status.d.ts +18 -2
  53. package/dist/src/commands/catalog-status.js +122 -18
  54. package/dist/src/commands/catalog-status.js.map +1 -1
  55. package/dist/src/commands/init.js +1 -1
  56. package/dist/src/commands/init.js.map +1 -1
  57. package/dist/src/commands/offline-cleanup-evidence.d.ts +23 -0
  58. package/dist/src/commands/offline-cleanup-evidence.js +38 -0
  59. package/dist/src/commands/offline-cleanup-evidence.js.map +1 -0
  60. package/dist/src/commands/options.d.ts +1 -0
  61. package/dist/src/commands/options.js +1 -0
  62. package/dist/src/commands/options.js.map +1 -1
  63. package/dist/src/commands/plugin-capabilities.js +1 -1
  64. package/dist/src/commands/plugin-capabilities.js.map +1 -1
  65. package/dist/src/commands/rebuild-command.d.ts +19 -7
  66. package/dist/src/commands/rebuild-command.js +415 -205
  67. package/dist/src/commands/rebuild-command.js.map +1 -1
  68. package/dist/src/commands/rebuild-integration.d.ts +10 -3
  69. package/dist/src/commands/rebuild-integration.js +71 -76
  70. package/dist/src/commands/rebuild-integration.js.map +1 -1
  71. package/dist/src/commands/rebuild-operations.d.ts +0 -8
  72. package/dist/src/commands/rebuild-operations.js +17 -115
  73. package/dist/src/commands/rebuild-operations.js.map +1 -1
  74. package/dist/src/commands/runtime.js +21 -34
  75. package/dist/src/commands/runtime.js.map +1 -1
  76. package/dist/src/commands/{status-v4.d.ts → status-v5.d.ts} +67 -21
  77. package/dist/src/commands/{status-v4.js → status-v5.js} +260 -30
  78. package/dist/src/commands/status-v5.js.map +1 -0
  79. package/dist/src/commands/wizard.d.ts +2 -2
  80. package/dist/src/commands/wizard.js +2 -2
  81. package/dist/src/commands/wizard.js.map +1 -1
  82. package/dist/src/commands/write-commands.js +73 -17
  83. package/dist/src/commands/write-commands.js.map +1 -1
  84. package/dist/src/constants.d.ts +6 -1
  85. package/dist/src/constants.js +6 -1
  86. package/dist/src/constants.js.map +1 -1
  87. package/dist/src/generators/local-plugin.js +57 -3
  88. package/dist/src/generators/local-plugin.js.map +1 -1
  89. package/dist/src/index.d.ts +4 -1
  90. package/dist/src/index.js +562 -85
  91. package/dist/src/index.js.map +1 -1
  92. package/dist/src/output/model.d.ts +1 -34
  93. package/dist/src/output/model.js +1 -144
  94. package/dist/src/output/model.js.map +1 -1
  95. package/dist/src/output/rebuild-progress.js +0 -3
  96. package/dist/src/output/rebuild-progress.js.map +1 -1
  97. package/dist/src/portable/commands.d.ts +4 -0
  98. package/dist/src/portable/commands.js +61 -4
  99. package/dist/src/portable/commands.js.map +1 -1
  100. package/dist/src/portable/materializer.d.ts +3 -0
  101. package/dist/src/portable/materializer.js +61 -10
  102. package/dist/src/portable/materializer.js.map +1 -1
  103. package/dist/src/tui/catalog-generation.d.ts +56 -0
  104. package/dist/src/tui/catalog-generation.js +244 -0
  105. package/dist/src/tui/catalog-generation.js.map +1 -0
  106. package/dist/src/tui/console-app-v4.d.ts +1 -1
  107. package/dist/src/tui/console-app-v4.js +446 -126
  108. package/dist/src/tui/console-app-v4.js.map +1 -1
  109. package/dist/src/tui/controller-runtime.d.ts +8 -2
  110. package/dist/src/tui/controller-runtime.js +606 -92
  111. package/dist/src/tui/controller-runtime.js.map +1 -1
  112. package/dist/src/tui/controller.d.ts +71 -6
  113. package/dist/src/tui/controller.js +377 -83
  114. package/dist/src/tui/controller.js.map +1 -1
  115. package/dist/src/tui/index.d.ts +1 -0
  116. package/dist/src/tui/index.js +1 -0
  117. package/dist/src/tui/index.js.map +1 -1
  118. package/dist/src/tui/input-display.d.ts +8 -0
  119. package/dist/src/tui/input-display.js +36 -0
  120. package/dist/src/tui/input-display.js.map +1 -0
  121. package/dist/src/tui/model.d.ts +27 -7
  122. package/dist/src/tui/model.js +273 -65
  123. package/dist/src/tui/model.js.map +1 -1
  124. package/dist/src/tui/router.d.ts +26 -0
  125. package/dist/src/tui/router.js.map +1 -1
  126. package/dist/src/tui/source-ref-presets.d.ts +3 -0
  127. package/dist/src/tui/source-ref-presets.js +11 -0
  128. package/dist/src/tui/source-ref-presets.js.map +1 -0
  129. package/dist/src/tui/views.js +31 -3
  130. package/dist/src/tui/views.js.map +1 -1
  131. package/dist/src/types.d.ts +90 -6
  132. package/dist/src/types.js.map +1 -1
  133. package/dist/src/utils/agent-version.d.ts +3 -0
  134. package/dist/src/utils/agent-version.js +13 -5
  135. package/dist/src/utils/agent-version.js.map +1 -1
  136. package/dist/src/utils/aw-home-mutation-lock.d.ts +1 -0
  137. package/dist/src/utils/aw-home-mutation-lock.js +32 -4
  138. package/dist/src/utils/aw-home-mutation-lock.js.map +1 -1
  139. package/dist/src/utils/bundle-integrity.d.ts +0 -1
  140. package/dist/src/utils/bundle-integrity.js +0 -25
  141. package/dist/src/utils/bundle-integrity.js.map +1 -1
  142. package/dist/src/utils/bundle-layout.js +8 -6
  143. package/dist/src/utils/bundle-layout.js.map +1 -1
  144. package/dist/src/utils/catalog-digests.js +13 -2
  145. package/dist/src/utils/catalog-digests.js.map +1 -1
  146. package/dist/src/utils/catalog-generation-error.d.ts +12 -0
  147. package/dist/src/utils/catalog-generation-error.js +16 -0
  148. package/dist/src/utils/catalog-generation-error.js.map +1 -0
  149. package/dist/src/utils/catalog-generation-resolver.d.ts +13 -0
  150. package/dist/src/utils/catalog-generation-resolver.js +129 -0
  151. package/dist/src/utils/catalog-generation-resolver.js.map +1 -0
  152. package/dist/src/utils/catalog-generation-service.d.ts +52 -0
  153. package/dist/src/utils/catalog-generation-service.js +620 -0
  154. package/dist/src/utils/catalog-generation-service.js.map +1 -0
  155. package/dist/src/utils/catalog-generation-state.d.ts +13 -0
  156. package/dist/src/utils/catalog-generation-state.js +201 -0
  157. package/dist/src/utils/catalog-generation-state.js.map +1 -0
  158. package/dist/src/utils/catalog-generation-store.d.ts +44 -0
  159. package/dist/src/utils/catalog-generation-store.js +387 -0
  160. package/dist/src/utils/catalog-generation-store.js.map +1 -0
  161. package/dist/src/utils/catalog-manifest-v5.d.ts +5 -0
  162. package/dist/src/utils/{catalog-manifest-v4.js → catalog-manifest-v5.js} +39 -35
  163. package/dist/src/utils/{catalog-manifest-v4.js.map → catalog-manifest-v5.js.map} +1 -1
  164. package/dist/src/utils/catalog-operation-context.d.ts +28 -0
  165. package/dist/src/utils/catalog-operation-context.js +242 -0
  166. package/dist/src/utils/catalog-operation-context.js.map +1 -0
  167. package/dist/src/utils/catalog-public-error.d.ts +7 -3
  168. package/dist/src/utils/catalog-public-error.js +20 -4
  169. package/dist/src/utils/catalog-public-error.js.map +1 -1
  170. package/dist/src/utils/catalog-snapshot.d.ts +5 -3
  171. package/dist/src/utils/catalog-snapshot.js +11 -3
  172. package/dist/src/utils/catalog-snapshot.js.map +1 -1
  173. package/dist/src/utils/catalog-source-cache.d.ts +1 -1
  174. package/dist/src/utils/catalog-source-cache.js +37 -12
  175. package/dist/src/utils/catalog-source-cache.js.map +1 -1
  176. package/dist/src/utils/catalog-source-identity.d.ts +1 -0
  177. package/dist/src/utils/catalog-source-identity.js +21 -2
  178. package/dist/src/utils/catalog-source-identity.js.map +1 -1
  179. package/dist/src/utils/catalog-sources.d.ts +1 -0
  180. package/dist/src/utils/catalog-sources.js +30 -11
  181. package/dist/src/utils/catalog-sources.js.map +1 -1
  182. package/dist/src/utils/codex-config.js +4 -4
  183. package/dist/src/utils/codex-config.js.map +1 -1
  184. package/dist/src/utils/codex-manager.d.ts +33 -0
  185. package/dist/src/utils/codex-manager.js +656 -0
  186. package/dist/src/utils/codex-manager.js.map +1 -0
  187. package/dist/src/utils/codex-skill-staging.d.ts +2 -0
  188. package/dist/src/utils/codex-skill-staging.js.map +1 -1
  189. package/dist/src/utils/dynamic-skill-tree.d.ts +4 -0
  190. package/dist/src/utils/dynamic-skill-tree.js +35 -5
  191. package/dist/src/utils/dynamic-skill-tree.js.map +1 -1
  192. package/dist/src/utils/git-catalog-provider.js +10 -25
  193. package/dist/src/utils/git-catalog-provider.js.map +1 -1
  194. package/dist/src/utils/lifecycle-active-store.d.ts +0 -28
  195. package/dist/src/utils/lifecycle-active-store.js +35 -247
  196. package/dist/src/utils/lifecycle-active-store.js.map +1 -1
  197. package/dist/src/utils/multi-source-catalog.d.ts +3 -0
  198. package/dist/src/utils/multi-source-catalog.js +120 -10
  199. package/dist/src/utils/multi-source-catalog.js.map +1 -1
  200. package/dist/src/utils/native-cli.d.ts +15 -6
  201. package/dist/src/utils/native-cli.js +31 -39
  202. package/dist/src/utils/native-cli.js.map +1 -1
  203. package/dist/src/utils/orphan-marketplace-cleanup.js +0 -3
  204. package/dist/src/utils/orphan-marketplace-cleanup.js.map +1 -1
  205. package/dist/src/utils/ownership.d.ts +10 -1
  206. package/dist/src/utils/ownership.js +52 -24
  207. package/dist/src/utils/ownership.js.map +1 -1
  208. package/dist/src/utils/path-catalog-provider.js +12 -8
  209. package/dist/src/utils/path-catalog-provider.js.map +1 -1
  210. package/dist/src/utils/plugin-config-write.js +18 -35
  211. package/dist/src/utils/plugin-config-write.js.map +1 -1
  212. package/dist/src/utils/plugin-config.d.ts +1 -12
  213. package/dist/src/utils/plugin-config.js +107 -226
  214. package/dist/src/utils/plugin-config.js.map +1 -1
  215. package/dist/src/utils/plugin-scripts.d.ts +1 -1
  216. package/dist/src/utils/plugin-scripts.js +1 -1
  217. package/dist/src/utils/plugin-scripts.js.map +1 -1
  218. package/dist/src/utils/state-paths.js +7 -2
  219. package/dist/src/utils/state-paths.js.map +1 -1
  220. package/dist/src/utils/target-eligibility.d.ts +7 -2
  221. package/dist/src/utils/target-eligibility.js +6 -3
  222. package/dist/src/utils/target-eligibility.js.map +1 -1
  223. package/package.json +4 -3
  224. package/dist/authoring/scripts/check-plugin-versions.d.mts +0 -2
  225. package/dist/authoring/scripts/check-plugin-versions.mjs +0 -5
  226. package/dist/authoring/scripts/check-plugin-versions.mjs.map +0 -1
  227. package/dist/src/commands/status-v4.js.map +0 -1
  228. package/dist/src/commands/status.d.ts +0 -93
  229. package/dist/src/commands/status.js +0 -442
  230. package/dist/src/commands/status.js.map +0 -1
  231. package/dist/src/utils/active-marketplace-runtime-lock.d.ts +0 -12
  232. package/dist/src/utils/active-marketplace-runtime-lock.js +0 -133
  233. package/dist/src/utils/active-marketplace-runtime-lock.js.map +0 -1
  234. package/dist/src/utils/catalog-manifest-v3.d.ts +0 -2
  235. package/dist/src/utils/catalog-manifest-v3.js +0 -3
  236. package/dist/src/utils/catalog-manifest-v3.js.map +0 -1
  237. package/dist/src/utils/catalog-manifest-v4.d.ts +0 -5
@@ -0,0 +1,620 @@
1
+ import { IMPLEMENTED_AW_CAPABILITIES } from '../commands/aw-capabilities.js';
2
+ import { withAwHomeMutationLock, } from './aw-home-mutation-lock.js';
3
+ import { CatalogGenerationError } from './catalog-generation-error.js';
4
+ import { CatalogProviderCompatibilityError } from './catalog-public-error.js';
5
+ import { readCatalogGenerationState, withCatalogGenerationStateTransaction, } from './catalog-generation-state.js';
6
+ import { discardPreparedCatalogGeneration, listCatalogGenerationsForIdentity, prepareCatalogGeneration, publishPreparedCatalogGeneration, readCatalogGeneration, } from './catalog-generation-store.js';
7
+ import { calculateCatalogSourceConfigFingerprint } from './catalog-source-identity.js';
8
+ import { readCatalogSourcesConfigSnapshot } from './catalog-sources.js';
9
+ import { catalogGitProviderInternal } from './git-catalog-provider.js';
10
+ import { checkAwCapabilitySupport, compareStrictSemVer } from './manifest.js';
11
+ import { catalogPathProviderInternal } from './path-catalog-provider.js';
12
+ function defaultProviders() {
13
+ return {
14
+ git: catalogGitProviderInternal.resolve,
15
+ path: catalogPathProviderInternal.resolve,
16
+ };
17
+ }
18
+ async function resolveSourceForRefresh(options) {
19
+ const providers = options.providers ?? defaultProviders();
20
+ try {
21
+ return options.source.type === 'git'
22
+ ? await providers.git(options.source, {
23
+ cliVersion: options.cliVersion,
24
+ freshnessPolicy: 'forceRemote',
25
+ env: options.env,
26
+ signal: options.signal,
27
+ })
28
+ : await providers.path(options.source, {
29
+ cliVersion: options.cliVersion,
30
+ freshnessPolicy: 'forceRemote',
31
+ env: options.env,
32
+ signal: options.signal,
33
+ });
34
+ }
35
+ catch (error) {
36
+ if (error instanceof CatalogGenerationError)
37
+ throw error;
38
+ throw new CatalogGenerationError({
39
+ code: 'catalogGenerationRefreshFailed',
40
+ sourceId: options.source.id,
41
+ message: `Cannot refresh Catalog source "${options.source.id}". The previous Active generation is unchanged.`,
42
+ cause: error,
43
+ });
44
+ }
45
+ }
46
+ function pointerFromGeneration(options) {
47
+ return {
48
+ sourceConfigFingerprint: options.sourceConfigFingerprint,
49
+ catalogVersion: options.generation.metadata.catalogVersion,
50
+ channel: options.generation.metadata.channel,
51
+ requestedRef: options.resolution.requestedRef,
52
+ resolvedCommit: options.resolution.resolvedCommit,
53
+ manifestDigest: options.generation.metadata.manifestDigest,
54
+ snapshotDigest: options.generation.metadata.snapshotDigest,
55
+ generationKey: options.generation.metadata.generationKey,
56
+ ...(options.activatedAt ? { activatedAt: options.activatedAt } : {}),
57
+ };
58
+ }
59
+ function candidateFromGeneration(options) {
60
+ return {
61
+ ...pointerFromGeneration(options),
62
+ candidateKind: options.candidateKind,
63
+ downloadedAt: options.downloadedAt,
64
+ };
65
+ }
66
+ function checked(options) {
67
+ return {
68
+ checkedAt: options.checkedAt,
69
+ state: options.state,
70
+ remoteCommit: options.resolution.resolvedCommit,
71
+ ...(options.errorCode ? { errorCode: options.errorCode } : {}),
72
+ };
73
+ }
74
+ async function recordRefreshFailure(options) {
75
+ await withAwHomeMutationLock({
76
+ env: options.env,
77
+ token: options.awHomeMutationToken,
78
+ action: async () => {
79
+ const config = await readCatalogSourcesConfigSnapshot(options.env);
80
+ const configured = config.config.sources.find((source) => source.id === options.sourceId);
81
+ if (!configured
82
+ || calculateCatalogSourceConfigFingerprint(configured) !== options.sourceConfigFingerprint)
83
+ return;
84
+ await withCatalogGenerationStateTransaction({
85
+ env: options.env,
86
+ action: async (current) => {
87
+ const source = current.sources[options.sourceId];
88
+ if (!source)
89
+ return { state: current, result: undefined };
90
+ return {
91
+ state: {
92
+ ...current,
93
+ sources: {
94
+ ...current.sources,
95
+ [options.sourceId]: {
96
+ ...source,
97
+ lastCheck: {
98
+ checkedAt: options.checkedAt,
99
+ state: 'failed',
100
+ errorCode: options.errorCode,
101
+ },
102
+ },
103
+ },
104
+ },
105
+ result: undefined,
106
+ };
107
+ },
108
+ });
109
+ },
110
+ });
111
+ }
112
+ function sameGeneration(pointer, generation, sourceConfigFingerprint) {
113
+ return pointer?.sourceConfigFingerprint === sourceConfigFingerprint
114
+ && pointer.catalogVersion === generation.metadata.catalogVersion
115
+ && pointer.snapshotDigest === generation.metadata.snapshotDigest;
116
+ }
117
+ export async function refreshCatalogSourceGeneration(options) {
118
+ const env = options.env ?? process.env;
119
+ const config = await readCatalogSourcesConfigSnapshot(env);
120
+ const source = config.config.sources.find((entry) => entry.id === options.sourceId);
121
+ if (!source) {
122
+ throw new CatalogGenerationError({
123
+ code: 'catalogGenerationSourceMissing',
124
+ sourceId: options.sourceId,
125
+ message: `Catalog source "${options.sourceId}" is not configured.`,
126
+ });
127
+ }
128
+ const sourceConfigFingerprint = calculateCatalogSourceConfigFingerprint(source);
129
+ const checkedAt = (options.runtime?.now?.() ?? new Date()).toISOString();
130
+ let resolution;
131
+ try {
132
+ await options.runtime?.onProgress?.({ sourceId: source.id, state: 'checking' });
133
+ options.signal?.throwIfAborted();
134
+ resolution = await resolveSourceForRefresh({
135
+ source,
136
+ cliVersion: options.cliVersion,
137
+ env,
138
+ signal: options.signal,
139
+ providers: options.runtime?.providers,
140
+ });
141
+ }
142
+ catch (error) {
143
+ options.signal?.throwIfAborted();
144
+ await recordRefreshFailure({
145
+ sourceId: source.id,
146
+ sourceConfigFingerprint,
147
+ env,
148
+ checkedAt,
149
+ errorCode: error instanceof CatalogGenerationError
150
+ ? error.code
151
+ : 'catalogGenerationRefreshFailed',
152
+ ...(options.awHomeMutationToken
153
+ ? { awHomeMutationToken: options.awHomeMutationToken }
154
+ : {}),
155
+ });
156
+ throw error;
157
+ }
158
+ let prepared;
159
+ try {
160
+ await options.runtime?.onProgress?.({ sourceId: source.id, state: 'validating' });
161
+ options.signal?.throwIfAborted();
162
+ prepared = await prepareCatalogGeneration({
163
+ resolution,
164
+ cliVersion: options.cliVersion,
165
+ env,
166
+ now: options.runtime?.now,
167
+ signal: options.signal,
168
+ });
169
+ }
170
+ catch (error) {
171
+ options.signal?.throwIfAborted();
172
+ await recordRefreshFailure({
173
+ sourceId: source.id,
174
+ sourceConfigFingerprint,
175
+ env,
176
+ checkedAt,
177
+ errorCode: error instanceof CatalogGenerationError
178
+ ? error.code
179
+ : 'catalogGenerationPublishFailed',
180
+ ...(options.awHomeMutationToken
181
+ ? { awHomeMutationToken: options.awHomeMutationToken }
182
+ : {}),
183
+ });
184
+ throw error;
185
+ }
186
+ try {
187
+ options.signal?.throwIfAborted();
188
+ const transaction = await withAwHomeMutationLock({
189
+ env,
190
+ signal: options.signal,
191
+ token: options.awHomeMutationToken,
192
+ action: async () => {
193
+ options.signal?.throwIfAborted();
194
+ const currentConfig = await readCatalogSourcesConfigSnapshot(env);
195
+ const currentConfiguredSource = currentConfig.config.sources
196
+ .find((entry) => entry.id === source.id);
197
+ if (!currentConfiguredSource) {
198
+ throw new CatalogGenerationError({
199
+ code: 'catalogGenerationSourceMissing',
200
+ sourceId: source.id,
201
+ message: `Catalog source "${source.id}" was removed while refresh was in progress. The prepared generation was discarded.`,
202
+ });
203
+ }
204
+ if (calculateCatalogSourceConfigFingerprint(currentConfiguredSource)
205
+ !== sourceConfigFingerprint) {
206
+ throw new CatalogGenerationError({
207
+ code: 'catalogGenerationIdentityMismatch',
208
+ sourceId: source.id,
209
+ message: `Catalog source "${source.id}" changed while refresh was in progress. The prepared generation was discarded.`,
210
+ });
211
+ }
212
+ return withCatalogGenerationStateTransaction({
213
+ env,
214
+ beforeReplace: () => options.signal?.throwIfAborted(),
215
+ action: async (current) => {
216
+ options.signal?.throwIfAborted();
217
+ const previous = current.sources[source.id];
218
+ if (source.type === 'git'
219
+ && previous?.active
220
+ && previous.logicalIdentity !== prepared.metadata.logicalIdentity) {
221
+ return {
222
+ state: current,
223
+ result: {
224
+ error: new CatalogGenerationError({
225
+ code: 'catalogGenerationIdentityMismatch',
226
+ sourceId: source.id,
227
+ message: `Catalog source "${source.id}" returned a different workspace identity. Active and Candidate are unchanged; update the source configuration explicitly before adopting another Catalog identity.`,
228
+ }),
229
+ },
230
+ };
231
+ }
232
+ const currentSource = previous?.logicalIdentity === prepared.metadata.logicalIdentity
233
+ ? previous
234
+ : undefined;
235
+ const refreshPolicy = currentSource?.refreshPolicy
236
+ ?? (source.type === 'path' ? 'manual' : 'startup');
237
+ if (source.type === 'git') {
238
+ const generations = await listCatalogGenerationsForIdentity({
239
+ logicalIdentity: prepared.metadata.logicalIdentity,
240
+ env,
241
+ });
242
+ const violation = generations.find((generation) => generation.metadata.catalogVersion === prepared.metadata.catalogVersion
243
+ && generation.metadata.snapshotDigest !== prepared.metadata.snapshotDigest);
244
+ if (violation) {
245
+ const lastCheck = checked({
246
+ checkedAt,
247
+ state: 'immutableViolation',
248
+ resolution,
249
+ errorCode: 'catalogImmutableVersionViolation',
250
+ });
251
+ const nextSource = currentSource
252
+ ? { ...currentSource, lastCheck }
253
+ : {
254
+ logicalIdentity: prepared.metadata.logicalIdentity,
255
+ refreshPolicy,
256
+ lastCheck,
257
+ };
258
+ return {
259
+ state: {
260
+ ...current,
261
+ sources: { ...current.sources, [source.id]: nextSource },
262
+ },
263
+ result: {
264
+ error: new CatalogGenerationError({
265
+ code: 'catalogImmutableVersionViolation',
266
+ sourceId: source.id,
267
+ message: `Catalog source "${source.id}" reused version ${prepared.metadata.catalogVersion} with different content. Active and Candidate are unchanged; publish a higher Catalog version and refresh again.`,
268
+ }),
269
+ },
270
+ };
271
+ }
272
+ }
273
+ options.signal?.throwIfAborted();
274
+ const published = await publishPreparedCatalogGeneration(prepared);
275
+ options.signal?.throwIfAborted();
276
+ if (source.type === 'path' || !currentSource?.active) {
277
+ const active = pointerFromGeneration({
278
+ generation: published,
279
+ resolution,
280
+ sourceConfigFingerprint,
281
+ activatedAt: checkedAt,
282
+ });
283
+ const lastCheck = checked({ checkedAt, state: 'activeReady', resolution });
284
+ const nextSource = {
285
+ logicalIdentity: published.metadata.logicalIdentity,
286
+ refreshPolicy,
287
+ active,
288
+ lastCheck,
289
+ };
290
+ return {
291
+ state: {
292
+ ...current,
293
+ sources: { ...current.sources, [source.id]: nextSource },
294
+ },
295
+ result: {
296
+ value: {
297
+ catalogGenerationSchemaVersion: 1,
298
+ sourceId: source.id,
299
+ sourceIdentity: resolution.sourceIdentity,
300
+ logicalIdentity: published.metadata.logicalIdentity,
301
+ outcome: 'activeReady',
302
+ active,
303
+ lastCheck,
304
+ },
305
+ },
306
+ };
307
+ }
308
+ if (sameGeneration(currentSource.active, published, sourceConfigFingerprint)) {
309
+ const lastCheck = checked({ checkedAt, state: 'upToDate', resolution });
310
+ return {
311
+ state: {
312
+ ...current,
313
+ sources: {
314
+ ...current.sources,
315
+ [source.id]: { ...currentSource, lastCheck },
316
+ },
317
+ },
318
+ result: {
319
+ value: {
320
+ catalogGenerationSchemaVersion: 1,
321
+ sourceId: source.id,
322
+ sourceIdentity: resolution.sourceIdentity,
323
+ logicalIdentity: published.metadata.logicalIdentity,
324
+ outcome: 'upToDate',
325
+ active: currentSource.active,
326
+ ...(currentSource.candidate ? { candidate: currentSource.candidate } : {}),
327
+ lastCheck,
328
+ },
329
+ },
330
+ };
331
+ }
332
+ const comparison = compareStrictSemVer(published.metadata.catalogVersion, currentSource.active.catalogVersion);
333
+ const explicitRefChange = source.refPolicy.type === 'explicit'
334
+ && currentSource.active.requestedRef !== resolution.requestedRef;
335
+ if (comparison < 0 && !explicitRefChange) {
336
+ const lastCheck = checked({ checkedAt, state: 'channelRollback', resolution });
337
+ return {
338
+ state: {
339
+ ...current,
340
+ sources: {
341
+ ...current.sources,
342
+ [source.id]: { ...currentSource, lastCheck },
343
+ },
344
+ },
345
+ result: {
346
+ value: {
347
+ catalogGenerationSchemaVersion: 1,
348
+ sourceId: source.id,
349
+ sourceIdentity: resolution.sourceIdentity,
350
+ logicalIdentity: published.metadata.logicalIdentity,
351
+ outcome: 'channelRollback',
352
+ active: currentSource.active,
353
+ ...(currentSource.candidate ? { candidate: currentSource.candidate } : {}),
354
+ lastCheck,
355
+ },
356
+ },
357
+ };
358
+ }
359
+ const candidateKind = explicitRefChange
360
+ ? 'refChange'
361
+ : 'upgrade';
362
+ const candidate = sameGeneration(currentSource.candidate, published, sourceConfigFingerprint)
363
+ ? currentSource.candidate
364
+ : candidateFromGeneration({
365
+ generation: published,
366
+ resolution,
367
+ sourceConfigFingerprint,
368
+ candidateKind,
369
+ downloadedAt: checkedAt,
370
+ });
371
+ const lastCheck = checked({ checkedAt, state: 'candidateReady', resolution });
372
+ return {
373
+ state: {
374
+ ...current,
375
+ sources: {
376
+ ...current.sources,
377
+ [source.id]: { ...currentSource, candidate, lastCheck },
378
+ },
379
+ },
380
+ result: {
381
+ value: {
382
+ catalogGenerationSchemaVersion: 1,
383
+ sourceId: source.id,
384
+ sourceIdentity: resolution.sourceIdentity,
385
+ logicalIdentity: published.metadata.logicalIdentity,
386
+ outcome: 'candidateReady',
387
+ active: currentSource.active,
388
+ candidate,
389
+ lastCheck,
390
+ },
391
+ },
392
+ };
393
+ },
394
+ });
395
+ },
396
+ });
397
+ if ('error' in transaction)
398
+ throw transaction.error;
399
+ return transaction.value;
400
+ }
401
+ finally {
402
+ await discardPreparedCatalogGeneration(prepared);
403
+ }
404
+ }
405
+ async function assertPointerMatchesGeneration(options) {
406
+ if (options.sourceConfigFingerprint !== undefined
407
+ && options.pointer.sourceConfigFingerprint !== options.sourceConfigFingerprint) {
408
+ throw new CatalogGenerationError({
409
+ code: 'catalogGenerationIdentityMismatch',
410
+ message: 'Catalog generation pointer does not match the current source configuration. Refresh the configured source.',
411
+ });
412
+ }
413
+ const generation = await readCatalogGeneration({
414
+ logicalIdentity: options.logicalIdentity,
415
+ snapshotDigest: options.pointer.snapshotDigest,
416
+ env: options.env,
417
+ });
418
+ if (generation.metadata.catalogVersion !== options.pointer.catalogVersion
419
+ || generation.metadata.channel !== options.pointer.channel
420
+ || generation.metadata.manifestDigest !== options.pointer.manifestDigest
421
+ || generation.metadata.generationKey !== options.pointer.generationKey) {
422
+ throw new CatalogGenerationError({
423
+ code: 'catalogGenerationIdentityMismatch',
424
+ message: 'Catalog generation pointer does not match immutable generation metadata. Refresh the source after repairing catalog-generations.json.',
425
+ });
426
+ }
427
+ return generation;
428
+ }
429
+ export async function activateCatalogSourceCandidate(options) {
430
+ const env = options.env ?? process.env;
431
+ return withAwHomeMutationLock({
432
+ env,
433
+ token: options.awHomeMutationToken,
434
+ action: async () => {
435
+ const config = await readCatalogSourcesConfigSnapshot(env);
436
+ const configuredSource = config.config.sources
437
+ .find((source) => source.id === options.sourceId);
438
+ if (!configuredSource) {
439
+ throw new CatalogGenerationError({
440
+ code: 'catalogGenerationSourceMissing',
441
+ sourceId: options.sourceId,
442
+ message: `Catalog source "${options.sourceId}" is not configured.`,
443
+ });
444
+ }
445
+ return withCatalogGenerationStateTransaction({
446
+ env,
447
+ action: async (current) => {
448
+ const source = current.sources[options.sourceId];
449
+ if (!source?.candidate) {
450
+ throw new CatalogGenerationError({
451
+ code: 'catalogGenerationCandidateUnavailable',
452
+ sourceId: options.sourceId,
453
+ message: `Catalog source "${options.sourceId}" has no Candidate generation to activate.`,
454
+ });
455
+ }
456
+ if (options.expectedCandidateGenerationKey
457
+ && source.candidate.generationKey !== options.expectedCandidateGenerationKey) {
458
+ throw new CatalogGenerationError({
459
+ code: 'catalogGenerationCandidateChanged',
460
+ sourceId: options.sourceId,
461
+ message: `Catalog source "${options.sourceId}" Candidate changed after Review. Review the new Candidate before activation.`,
462
+ });
463
+ }
464
+ const candidateGeneration = await assertPointerMatchesGeneration({
465
+ logicalIdentity: source.logicalIdentity,
466
+ pointer: source.candidate,
467
+ sourceConfigFingerprint: calculateCatalogSourceConfigFingerprint(configuredSource),
468
+ env,
469
+ });
470
+ const requiredCapabilities = candidateGeneration.metadata.requiredAwCapabilities;
471
+ const support = checkAwCapabilitySupport(requiredCapabilities, IMPLEMENTED_AW_CAPABILITIES);
472
+ if (!support.supported) {
473
+ throw new CatalogProviderCompatibilityError({
474
+ sourceId: options.sourceId,
475
+ requiredCapabilities,
476
+ missingCapabilities: support.missing,
477
+ availableCapabilities: IMPLEMENTED_AW_CAPABILITIES,
478
+ });
479
+ }
480
+ const active = {
481
+ sourceConfigFingerprint: source.candidate.sourceConfigFingerprint,
482
+ catalogVersion: source.candidate.catalogVersion,
483
+ channel: source.candidate.channel,
484
+ requestedRef: source.candidate.requestedRef,
485
+ resolvedCommit: source.candidate.resolvedCommit,
486
+ manifestDigest: source.candidate.manifestDigest,
487
+ snapshotDigest: source.candidate.snapshotDigest,
488
+ generationKey: source.candidate.generationKey,
489
+ activatedAt: (options.runtime?.now?.() ?? new Date()).toISOString(),
490
+ };
491
+ const nextSource = {
492
+ ...source,
493
+ active,
494
+ };
495
+ delete nextSource.candidate;
496
+ return {
497
+ state: {
498
+ ...current,
499
+ sources: { ...current.sources, [options.sourceId]: nextSource },
500
+ },
501
+ result: {
502
+ catalogGenerationSchemaVersion: 1,
503
+ sourceId: options.sourceId,
504
+ logicalIdentity: source.logicalIdentity,
505
+ outcome: 'activated',
506
+ active,
507
+ },
508
+ };
509
+ },
510
+ });
511
+ },
512
+ });
513
+ }
514
+ export async function setCatalogSourceRefreshPolicy(options) {
515
+ const env = options.env ?? process.env;
516
+ return withAwHomeMutationLock({
517
+ env,
518
+ action: async () => {
519
+ const config = await readCatalogSourcesConfigSnapshot(env);
520
+ const configuredSource = config.config.sources.find((source) => source.id === options.sourceId);
521
+ if (!configuredSource) {
522
+ throw new CatalogGenerationError({
523
+ code: 'catalogGenerationSourceMissing',
524
+ sourceId: options.sourceId,
525
+ message: `Catalog source "${options.sourceId}" is not configured.`,
526
+ });
527
+ }
528
+ if (configuredSource.type === 'path' && options.refreshPolicy !== 'manual') {
529
+ throw new CatalogGenerationError({
530
+ code: 'catalogGenerationRefreshPolicyInvalid',
531
+ sourceId: options.sourceId,
532
+ message: `Path Catalog source "${options.sourceId}" only supports manual refresh.`,
533
+ });
534
+ }
535
+ await withCatalogGenerationStateTransaction({
536
+ env,
537
+ action: async (current) => {
538
+ const source = current.sources[options.sourceId];
539
+ if (!source) {
540
+ throw new CatalogGenerationError({
541
+ code: 'catalogGenerationUnavailable',
542
+ sourceId: options.sourceId,
543
+ message: `Catalog source "${options.sourceId}" has no generation state. Refresh it before changing refresh policy.`,
544
+ });
545
+ }
546
+ return {
547
+ state: {
548
+ ...current,
549
+ sources: {
550
+ ...current.sources,
551
+ [options.sourceId]: { ...source, refreshPolicy: options.refreshPolicy },
552
+ },
553
+ },
554
+ result: undefined,
555
+ };
556
+ },
557
+ });
558
+ return (await readCatalogGenerationStatus({ sourceId: options.sourceId, env })).sources[0];
559
+ },
560
+ });
561
+ }
562
+ export async function removeCatalogSourceGenerationState(options) {
563
+ return withCatalogGenerationStateTransaction({
564
+ env: options.env,
565
+ action: async (current) => {
566
+ if (!current.sources[options.sourceId])
567
+ return { state: current, result: false };
568
+ const sources = { ...current.sources };
569
+ delete sources[options.sourceId];
570
+ return { state: { ...current, sources }, result: true };
571
+ },
572
+ });
573
+ }
574
+ export async function readCatalogGenerationStatus(options = {}) {
575
+ const env = options.env ?? process.env;
576
+ const [config, state] = await Promise.all([
577
+ readCatalogSourcesConfigSnapshot(env),
578
+ readCatalogGenerationState(env),
579
+ ]);
580
+ const sources = config.config.sources
581
+ .filter((source) => options.sourceId === undefined || source.id === options.sourceId)
582
+ .sort((left, right) => left.id < right.id ? -1 : left.id > right.id ? 1 : 0);
583
+ if (options.sourceId && sources.length === 0) {
584
+ throw new CatalogGenerationError({
585
+ code: 'catalogGenerationSourceMissing',
586
+ sourceId: options.sourceId,
587
+ message: `Catalog source "${options.sourceId}" is not configured.`,
588
+ });
589
+ }
590
+ const entries = [];
591
+ for (const source of sources) {
592
+ const selected = state.sources[source.id];
593
+ const sourceConfigFingerprint = calculateCatalogSourceConfigFingerprint(source);
594
+ if (selected?.active)
595
+ await assertPointerMatchesGeneration({
596
+ logicalIdentity: selected.logicalIdentity,
597
+ pointer: selected.active,
598
+ ...(selected.candidate ? {} : { sourceConfigFingerprint }),
599
+ env,
600
+ });
601
+ if (selected?.candidate)
602
+ await assertPointerMatchesGeneration({
603
+ logicalIdentity: selected.logicalIdentity,
604
+ pointer: selected.candidate,
605
+ sourceConfigFingerprint,
606
+ env,
607
+ });
608
+ entries.push({
609
+ sourceId: source.id,
610
+ sourceType: source.type,
611
+ refreshPolicy: selected?.refreshPolicy ?? (source.type === 'path' ? 'manual' : 'startup'),
612
+ ...(selected ? { logicalIdentity: selected.logicalIdentity } : {}),
613
+ ...(selected?.active ? { active: selected.active } : {}),
614
+ ...(selected?.candidate ? { candidate: selected.candidate } : {}),
615
+ ...(selected?.lastCheck ? { lastCheck: selected.lastCheck } : {}),
616
+ });
617
+ }
618
+ return { catalogGenerationStatusSchemaVersion: 1, sources: entries };
619
+ }
620
+ //# sourceMappingURL=catalog-generation-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-generation-service.js","sourceRoot":"","sources":["../../../src/utils/catalog-generation-service.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EACL,sBAAsB,GAEvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,iCAAiC,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EACL,0BAA0B,EAC1B,qCAAqC,GACtC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,gCAAgC,EAChC,iCAAiC,EACjC,wBAAwB,EACxB,gCAAgC,EAChC,qBAAqB,GAEtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,uCAAuC,EAAE,MAAM,8BAA8B,CAAC;AACvF,OAAO,EAAE,gCAAgC,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAE9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AA8BzE,SAAS,gBAAgB;IACvB,OAAO;QACL,GAAG,EAAE,0BAA0B,CAAC,OAAO;QACvC,IAAI,EAAE,2BAA2B,CAAC,OAAO;KAC1C,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,OAMtC;IACC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,gBAAgB,EAAE,CAAC;IAC1D,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK;YAClC,CAAC,CAAC,MAAM,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE;gBAClC,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,eAAe,EAAE,aAAa;gBAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC;YACJ,CAAC,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACnC,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,eAAe,EAAE,aAAa;gBAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAC;IACT,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,sBAAsB;YAAE,MAAM,KAAK,CAAC;QACzD,MAAM,IAAI,sBAAsB,CAAC;YAC/B,IAAI,EAAE,gCAAgC;YACtC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;YAC3B,OAAO,EAAE,kCAAkC,OAAO,CAAC,MAAM,CAAC,EAAE,iDAAiD;YAC7G,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,OAK9B;IACC,OAAO;QACL,uBAAuB,EAAE,OAAO,CAAC,uBAAuB;QACxD,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc;QAC1D,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO;QAC5C,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,YAAY;QAC7C,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,cAAc;QACjD,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc;QAC1D,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc;QAC1D,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa;QACxD,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrE,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,OAMhC;IACC,OAAO;QACL,GAAG,qBAAqB,CAAC,OAAO,CAAC;QACjC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,OAKhB;IACC,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,cAAc;QAC/C,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,OAOnC;IACC,MAAM,sBAAsB,CAAC;QAC3B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,OAAO,CAAC,mBAAmB;QAClC,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,MAAM,MAAM,GAAG,MAAM,gCAAgC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACnE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC1F,IACE,CAAC,UAAU;mBACR,uCAAuC,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,uBAAuB;gBAC1F,OAAO;YACT,MAAM,qCAAqC,CAAC;gBAC1C,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBACxB,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBACjD,IAAI,CAAC,MAAM;wBAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;oBAC1D,OAAO;wBACL,KAAK,EAAE;4BACL,GAAG,OAAO;4BACV,OAAO,EAAE;gCACP,GAAG,OAAO,CAAC,OAAO;gCAClB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oCAClB,GAAG,MAAM;oCACT,SAAS,EAAE;wCACT,SAAS,EAAE,OAAO,CAAC,SAAS;wCAC5B,KAAK,EAAE,QAAQ;wCACf,SAAS,EAAE,OAAO,CAAC,SAAS;qCAC7B;iCACF;6BACF;yBACF;wBACD,MAAM,EAAE,SAAS;qBAClB,CAAC;gBACJ,CAAC;aACF,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CACrB,OAA+C,EAC/C,UAAsC,EACtC,uBAA+B;IAE/B,OAAO,OAAO,EAAE,uBAAuB,KAAK,uBAAuB;WAC9D,OAAO,CAAC,cAAc,KAAK,UAAU,CAAC,QAAQ,CAAC,cAAc;WAC7D,OAAO,CAAC,cAAc,KAAK,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,OAOpD;IACC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,MAAM,GAAG,MAAM,gCAAgC,CAAC,GAAG,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,sBAAsB,CAAC;YAC/B,IAAI,EAAE,gCAAgC;YACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,OAAO,EAAE,mBAAmB,OAAO,CAAC,QAAQ,sBAAsB;SACnE,CAAC,CAAC;IACL,CAAC;IACD,MAAM,uBAAuB,GAAG,uCAAuC,CAAC,MAAM,CAAC,CAAC;IAChF,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACzE,IAAI,UAAmC,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAChF,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;QACjC,UAAU,GAAG,MAAM,uBAAuB,CAAC;YACzC,MAAM;YACN,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,GAAG;YACH,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS;SACtC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;QACjC,MAAM,oBAAoB,CAAC;YACzB,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,uBAAuB;YACvB,GAAG;YACH,SAAS;YACT,SAAS,EAAE,KAAK,YAAY,sBAAsB;gBAChD,CAAC,CAAC,KAAK,CAAC,IAAI;gBACZ,CAAC,CAAC,gCAAgC;YACpC,GAAG,CAAC,OAAO,CAAC,mBAAmB;gBAC7B,CAAC,CAAC,EAAE,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAAE;gBACtD,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;QACH,MAAM,KAAK,CAAC;IACd,CAAC;IAED,IAAI,QAA8D,CAAC;IACnE,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAClF,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;QACjC,QAAQ,GAAG,MAAM,wBAAwB,CAAC;YACxC,UAAU;YACV,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,GAAG;YACH,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG;YACzB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;QACjC,MAAM,oBAAoB,CAAC;YACzB,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,uBAAuB;YACvB,GAAG;YACH,SAAS;YACT,SAAS,EAAE,KAAK,YAAY,sBAAsB;gBAChD,CAAC,CAAC,KAAK,CAAC,IAAI;gBACZ,CAAC,CAAC,gCAAgC;YACpC,GAAG,CAAC,OAAO,CAAC,mBAAmB;gBAC7B,CAAC,CAAC,EAAE,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAAE;gBACtD,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;QACH,MAAM,KAAK,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;QACjC,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC;YAC/C,GAAG;YACH,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,mBAAmB;YAClC,MAAM,EAAE,KAAK,IAAI,EAAE;gBACjB,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;gBACjC,MAAM,aAAa,GAAG,MAAM,gCAAgC,CAAC,GAAG,CAAC,CAAC;gBAClE,MAAM,uBAAuB,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO;qBACzD,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC3C,IAAI,CAAC,uBAAuB,EAAE,CAAC;oBAC7B,MAAM,IAAI,sBAAsB,CAAC;wBAC/B,IAAI,EAAE,gCAAgC;wBACtC,QAAQ,EAAE,MAAM,CAAC,EAAE;wBACnB,OAAO,EAAE,mBAAmB,MAAM,CAAC,EAAE,qFAAqF;qBAC3H,CAAC,CAAC;gBACL,CAAC;gBACD,IACE,uCAAuC,CAAC,uBAAuB,CAAC;wBAC5D,uBAAuB,EAC3B,CAAC;oBACD,MAAM,IAAI,sBAAsB,CAAC;wBAC/B,IAAI,EAAE,mCAAmC;wBACzC,QAAQ,EAAE,MAAM,CAAC,EAAE;wBACnB,OAAO,EAAE,mBAAmB,MAAM,CAAC,EAAE,iFAAiF;qBACvH,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,qCAAqC,CAA2B;oBACrE,GAAG;oBACH,aAAa,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE;oBACrD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;wBACxB,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;wBACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;wBAC5C,IACE,MAAM,CAAC,IAAI,KAAK,KAAK;+BAClB,QAAQ,EAAE,MAAM;+BAChB,QAAQ,CAAC,eAAe,KAAK,QAAQ,CAAC,QAAQ,CAAC,eAAe,EACjE,CAAC;4BACD,OAAO;gCACL,KAAK,EAAE,OAAO;gCACd,MAAM,EAAE;oCACN,KAAK,EAAE,IAAI,sBAAsB,CAAC;wCAChC,IAAI,EAAE,mCAAmC;wCACzC,QAAQ,EAAE,MAAM,CAAC,EAAE;wCACnB,OAAO,EAAE,mBAAmB,MAAM,CAAC,EAAE,qKAAqK;qCAC3M,CAAC;iCACH;6BACF,CAAC;wBACJ,CAAC;wBACD,MAAM,aAAa,GAAG,QAAQ,EAAE,eAAe,KAAK,QAAQ,CAAC,QAAQ,CAAC,eAAe;4BACnF,CAAC,CAAC,QAAQ;4BACV,CAAC,CAAC,SAAS,CAAC;wBACd,MAAM,aAAa,GAAG,aAAa,EAAE,aAAa;+BAC7C,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;wBAErD,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;4BAC1B,MAAM,WAAW,GAAG,MAAM,iCAAiC,CAAC;gCAC1D,eAAe,EAAE,QAAQ,CAAC,QAAQ,CAAC,eAAe;gCAClD,GAAG;6BACJ,CAAC,CAAC;4BACH,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAChD,UAAU,CAAC,QAAQ,CAAC,cAAc,KAAK,QAAQ,CAAC,QAAQ,CAAC,cAAc;mCACpE,UAAU,CAAC,QAAQ,CAAC,cAAc,KAAK,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;4BAC9E,IAAI,SAAS,EAAE,CAAC;gCACd,MAAM,SAAS,GAAG,OAAO,CAAC;oCACxB,SAAS;oCACT,KAAK,EAAE,oBAAoB;oCAC3B,UAAU;oCACV,SAAS,EAAE,kCAAkC;iCAC9C,CAAC,CAAC;gCACH,MAAM,UAAU,GAAmC,aAAa;oCAC9D,CAAC,CAAC,EAAE,GAAG,aAAa,EAAE,SAAS,EAAE;oCACjC,CAAC,CAAC;wCACE,eAAe,EAAE,QAAQ,CAAC,QAAQ,CAAC,eAAe;wCAClD,aAAa;wCACb,SAAS;qCACV,CAAC;gCACN,OAAO;oCACL,KAAK,EAAE;wCACL,GAAG,OAAO;wCACV,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE;qCACzD;oCACD,MAAM,EAAE;wCACN,KAAK,EAAE,IAAI,sBAAsB,CAAC;4CAChC,IAAI,EAAE,kCAAkC;4CACxC,QAAQ,EAAE,MAAM,CAAC,EAAE;4CACnB,OAAO,EAAE,mBAAmB,MAAM,CAAC,EAAE,oBAAoB,QAAQ,CAAC,QAAQ,CAAC,cAAc,kHAAkH;yCAC5M,CAAC;qCACH;iCACF,CAAC;4BACJ,CAAC;wBACH,CAAC;wBAED,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;wBACjC,MAAM,SAAS,GAAG,MAAM,gCAAgC,CAAC,QAAQ,CAAC,CAAC;wBACnE,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;wBACjC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;4BACrD,MAAM,MAAM,GAAG,qBAAqB,CAAC;gCACnC,UAAU,EAAE,SAAS;gCACrB,UAAU;gCACV,uBAAuB;gCACvB,WAAW,EAAE,SAAS;6BACvB,CAAC,CAAC;4BACH,MAAM,SAAS,GAAG,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,CAAC;4BAC3E,MAAM,UAAU,GAAmC;gCACjD,eAAe,EAAE,SAAS,CAAC,QAAQ,CAAC,eAAe;gCACnD,aAAa;gCACb,MAAM;gCACN,SAAS;6BACV,CAAC;4BACF,OAAO;gCACL,KAAK,EAAE;oCACL,GAAG,OAAO;oCACV,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE;iCACzD;gCACD,MAAM,EAAE;oCACN,KAAK,EAAE;wCACL,8BAA8B,EAAE,CAAU;wCAC1C,QAAQ,EAAE,MAAM,CAAC,EAAE;wCACnB,cAAc,EAAE,UAAU,CAAC,cAAc;wCACzC,eAAe,EAAE,SAAS,CAAC,QAAQ,CAAC,eAAe;wCACnD,OAAO,EAAE,aAAsB;wCAC/B,MAAM;wCACN,SAAS;qCACV;iCACF;6BACF,CAAC;wBACJ,CAAC;wBAED,IAAI,cAAc,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,uBAAuB,CAAC,EAAE,CAAC;4BAC7E,MAAM,SAAS,GAAG,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;4BACxE,OAAO;gCACL,KAAK,EAAE;oCACL,GAAG,OAAO;oCACV,OAAO,EAAE;wCACP,GAAG,OAAO,CAAC,OAAO;wCAClB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,aAAa,EAAE,SAAS,EAAE;qCAC7C;iCACF;gCACD,MAAM,EAAE;oCACN,KAAK,EAAE;wCACL,8BAA8B,EAAE,CAAU;wCAC1C,QAAQ,EAAE,MAAM,CAAC,EAAE;wCACnB,cAAc,EAAE,UAAU,CAAC,cAAc;wCACzC,eAAe,EAAE,SAAS,CAAC,QAAQ,CAAC,eAAe;wCACnD,OAAO,EAAE,UAAmB;wCAC5B,MAAM,EAAE,aAAa,CAAC,MAAM;wCAC5B,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wCAC1E,SAAS;qCACV;iCACF;6BACF,CAAC;wBACJ,CAAC;wBAED,MAAM,UAAU,GAAG,mBAAmB,CACpC,SAAS,CAAC,QAAQ,CAAC,cAAc,EACjC,aAAa,CAAC,MAAM,CAAC,cAAc,CACpC,CAAC;wBACF,MAAM,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,KAAK,UAAU;+BACzD,aAAa,CAAC,MAAM,CAAC,YAAY,KAAK,UAAU,CAAC,YAAY,CAAC;wBACnE,IAAI,UAAU,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;4BACzC,MAAM,SAAS,GAAG,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,CAAC;4BAC/E,OAAO;gCACL,KAAK,EAAE;oCACL,GAAG,OAAO;oCACV,OAAO,EAAE;wCACP,GAAG,OAAO,CAAC,OAAO;wCAClB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,aAAa,EAAE,SAAS,EAAE;qCAC7C;iCACF;gCACD,MAAM,EAAE;oCACN,KAAK,EAAE;wCACL,8BAA8B,EAAE,CAAU;wCAC1C,QAAQ,EAAE,MAAM,CAAC,EAAE;wCACnB,cAAc,EAAE,UAAU,CAAC,cAAc;wCACzC,eAAe,EAAE,SAAS,CAAC,QAAQ,CAAC,eAAe;wCACnD,OAAO,EAAE,iBAA0B;wCACnC,MAAM,EAAE,aAAa,CAAC,MAAM;wCAC5B,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wCAC1E,SAAS;qCACV;iCACF;6BACF,CAAC;wBACJ,CAAC;wBAED,MAAM,aAAa,GAAmC,iBAAiB;4BACrE,CAAC,CAAC,WAAW;4BACb,CAAC,CAAC,SAAS,CAAC;wBACd,MAAM,SAAS,GAAG,cAAc,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,uBAAuB,CAAC;4BAC3F,CAAC,CAAC,aAAa,CAAC,SAAU;4BAC1B,CAAC,CAAC,uBAAuB,CAAC;gCACtB,UAAU,EAAE,SAAS;gCACrB,UAAU;gCACV,uBAAuB;gCACvB,aAAa;gCACb,YAAY,EAAE,SAAS;6BACxB,CAAC,CAAC;wBACP,MAAM,SAAS,GAAG,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC,CAAC;wBAC9E,OAAO;4BACL,KAAK,EAAE;gCACL,GAAG,OAAO;gCACV,OAAO,EAAE;oCACP,GAAG,OAAO,CAAC,OAAO;oCAClB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE;iCACxD;6BACF;4BACD,MAAM,EAAE;gCACN,KAAK,EAAE;oCACL,8BAA8B,EAAE,CAAU;oCAC1C,QAAQ,EAAE,MAAM,CAAC,EAAE;oCACnB,cAAc,EAAE,UAAU,CAAC,cAAc;oCACzC,eAAe,EAAE,SAAS,CAAC,QAAQ,CAAC,eAAe;oCACnD,OAAO,EAAE,gBAAyB;oCAClC,MAAM,EAAE,aAAa,CAAC,MAAM;oCAC5B,SAAS;oCACT,SAAS;iCACV;6BACF;yBACF,CAAC;oBACJ,CAAC;iBACF,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;QACH,IAAI,OAAO,IAAI,WAAW;YAAE,MAAM,WAAW,CAAC,KAAK,CAAC;QACpD,OAAO,WAAW,CAAC,KAAK,CAAC;IAC3B,CAAC;YAAS,CAAC;QACT,MAAM,gCAAgC,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,8BAA8B,CAAC,OAK7C;IACC,IACE,OAAO,CAAC,uBAAuB,KAAK,SAAS;WAC1C,OAAO,CAAC,OAAO,CAAC,uBAAuB,KAAK,OAAO,CAAC,uBAAuB,EAC9E,CAAC;QACD,MAAM,IAAI,sBAAsB,CAAC;YAC/B,IAAI,EAAE,mCAAmC;YACzC,OAAO,EAAE,4GAA4G;SACtH,CAAC,CAAC;IACL,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC;QAC7C,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc;QAC9C,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;IACH,IACE,UAAU,CAAC,QAAQ,CAAC,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,cAAc;WAClE,UAAU,CAAC,QAAQ,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,OAAO;WACvD,UAAU,CAAC,QAAQ,CAAC,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,cAAc;WACrE,UAAU,CAAC,QAAQ,CAAC,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,aAAa,EACtE,CAAC;QACD,MAAM,IAAI,sBAAsB,CAAC;YAC/B,IAAI,EAAE,mCAAmC;YACzC,OAAO,EAAE,uIAAuI;SACjJ,CAAC,CAAC;IACL,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,OAMpD;IACC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,OAAO,sBAAsB,CAAC;QAC5B,GAAG;QACH,KAAK,EAAE,OAAO,CAAC,mBAAmB;QAClC,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,MAAM,MAAM,GAAG,MAAM,gCAAgC,CAAC,GAAG,CAAC,CAAC;YAC3D,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO;iBAC3C,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;YACpD,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,MAAM,IAAI,sBAAsB,CAAC;oBAC/B,IAAI,EAAE,gCAAgC;oBACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,OAAO,EAAE,mBAAmB,OAAO,CAAC,QAAQ,sBAAsB;iBACnE,CAAC,CAAC;YACL,CAAC;YACD,OAAO,qCAAqC,CAAC;gBAC3C,GAAG;gBACH,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBACxB,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBACjD,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;wBACvB,MAAM,IAAI,sBAAsB,CAAC;4BAC/B,IAAI,EAAE,uCAAuC;4BAC7C,QAAQ,EAAE,OAAO,CAAC,QAAQ;4BAC1B,OAAO,EAAE,mBAAmB,OAAO,CAAC,QAAQ,4CAA4C;yBACzF,CAAC,CAAC;oBACL,CAAC;oBACD,IAAI,OAAO,CAAC,8BAA8B;2BACrC,MAAM,CAAC,SAAS,CAAC,aAAa,KAAK,OAAO,CAAC,8BAA8B,EAAE,CAAC;wBAC/E,MAAM,IAAI,sBAAsB,CAAC;4BAC/B,IAAI,EAAE,mCAAmC;4BACzC,QAAQ,EAAE,OAAO,CAAC,QAAQ;4BAC1B,OAAO,EAAE,mBAAmB,OAAO,CAAC,QAAQ,+EAA+E;yBAC5H,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM,mBAAmB,GAAG,MAAM,8BAA8B,CAAC;wBAC/D,eAAe,EAAE,MAAM,CAAC,eAAe;wBACvC,OAAO,EAAE,MAAM,CAAC,SAAS;wBACzB,uBAAuB,EAAE,uCAAuC,CAAC,gBAAgB,CAAC;wBAClF,GAAG;qBACJ,CAAC,CAAC;oBACH,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC;oBACjF,MAAM,OAAO,GAAG,wBAAwB,CACtC,oBAAoB,EACpB,2BAA2B,CAC5B,CAAC;oBACF,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;wBACvB,MAAM,IAAI,iCAAiC,CAAC;4BAC1C,QAAQ,EAAE,OAAO,CAAC,QAAQ;4BAC1B,oBAAoB;4BACpB,mBAAmB,EAAE,OAAO,CAAC,OAAO;4BACpC,qBAAqB,EAAE,2BAA2B;yBACnD,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM,MAAM,GAA+B;wBACzC,uBAAuB,EAAE,MAAM,CAAC,SAAS,CAAC,uBAAuB;wBACjE,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,cAAc;wBAC/C,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO;wBACjC,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY;wBAC3C,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,cAAc;wBAC/C,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,cAAc;wBAC/C,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,cAAc;wBAC/C,aAAa,EAAE,MAAM,CAAC,SAAS,CAAC,aAAa;wBAC7C,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE;qBACpE,CAAC;oBACF,MAAM,UAAU,GAAmC;wBACjD,GAAG,MAAM;wBACT,MAAM;qBACP,CAAC;oBACF,OAAO,UAAU,CAAC,SAAS,CAAC;oBAC5B,OAAO;wBACL,KAAK,EAAE;4BACL,GAAG,OAAO;4BACV,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE;yBAChE;wBACD,MAAM,EAAE;4BACN,8BAA8B,EAAE,CAAU;4BAC1C,QAAQ,EAAE,OAAO,CAAC,QAAQ;4BAC1B,eAAe,EAAE,MAAM,CAAC,eAAe;4BACvC,OAAO,EAAE,WAAoB;4BAC7B,MAAM;yBACP;qBACF,CAAC;gBACJ,CAAC;aACF,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,OAInD;IACC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,OAAO,sBAAsB,CAAC;QAC5B,GAAG;QACH,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,MAAM,MAAM,GAAG,MAAM,gCAAgC,CAAC,GAAG,CAAC,CAAC;YAC3D,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;YAChG,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,MAAM,IAAI,sBAAsB,CAAC;oBAC/B,IAAI,EAAE,gCAAgC;oBACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,OAAO,EAAE,mBAAmB,OAAO,CAAC,QAAQ,sBAAsB;iBACnE,CAAC,CAAC;YACL,CAAC;YACD,IAAI,gBAAgB,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;gBAC3E,MAAM,IAAI,sBAAsB,CAAC;oBAC/B,IAAI,EAAE,uCAAuC;oBAC7C,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,OAAO,EAAE,wBAAwB,OAAO,CAAC,QAAQ,iCAAiC;iBACnF,CAAC,CAAC;YACL,CAAC;YACD,MAAM,qCAAqC,CAAC;gBAC1C,GAAG;gBACH,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBACxB,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBACjD,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,MAAM,IAAI,sBAAsB,CAAC;4BAC/B,IAAI,EAAE,8BAA8B;4BACpC,QAAQ,EAAE,OAAO,CAAC,QAAQ;4BAC1B,OAAO,EAAE,mBAAmB,OAAO,CAAC,QAAQ,uEAAuE;yBACpH,CAAC,CAAC;oBACL,CAAC;oBACD,OAAO;wBACL,KAAK,EAAE;4BACL,GAAG,OAAO;4BACV,OAAO,EAAE;gCACP,GAAG,OAAO,CAAC,OAAO;gCAClB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE;6BACxE;yBACF;wBACD,MAAM,EAAE,SAAS;qBAClB,CAAC;gBACJ,CAAC;aACF,CAAC,CAAC;YACH,OAAO,CAAC,MAAM,2BAA2B,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC;QAC9F,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kCAAkC,CAAC,OAGxD;IACC,OAAO,qCAAqC,CAAC;QAC3C,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACxB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YACjF,MAAM,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YACvC,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjC,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC1D,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,UAG9C,EAAE;IACJ,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACxC,gCAAgC,CAAC,GAAG,CAAC;QACrC,0BAA0B,CAAC,GAAG,CAAC;KAChC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO;SAClC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,EAAE,KAAK,OAAO,CAAC,QAAQ,CAAC;SACpF,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,sBAAsB,CAAC;YAC/B,IAAI,EAAE,gCAAgC;YACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,OAAO,EAAE,mBAAmB,OAAO,CAAC,QAAQ,sBAAsB;SACnE,CAAC,CAAC;IACL,CAAC;IACD,MAAM,OAAO,GAAmC,EAAE,CAAC;IACnD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,uBAAuB,GAAG,uCAAuC,CAAC,MAAM,CAAC,CAAC;QAChF,IAAI,QAAQ,EAAE,MAAM;YAAE,MAAM,8BAA8B,CAAC;gBACzD,eAAe,EAAE,QAAQ,CAAC,eAAe;gBACzC,OAAO,EAAE,QAAQ,CAAC,MAAM;gBACxB,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,uBAAuB,EAAE,CAAC;gBAC1D,GAAG;aACJ,CAAC,CAAC;QACH,IAAI,QAAQ,EAAE,SAAS;YAAE,MAAM,8BAA8B,CAAC;gBAC5D,eAAe,EAAE,QAAQ,CAAC,eAAe;gBACzC,OAAO,EAAE,QAAQ,CAAC,SAAS;gBAC3B,uBAAuB;gBACvB,GAAG;aACJ,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC;YACX,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,UAAU,EAAE,MAAM,CAAC,IAAI;YACvB,aAAa,EAAE,QAAQ,EAAE,aAAa,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YACzF,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClE,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,oCAAoC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACvE,CAAC"}