micro-contracts 0.16.4 → 0.17.1

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 (181) hide show
  1. package/dist/micro-contracts.bundle.mjs +4683 -0
  2. package/dist/micro-contracts.bundle.mjs.map +7 -0
  3. package/package.json +22 -25
  4. package/dist/agents/context-builder.d.ts +0 -5
  5. package/dist/agents/context-builder.d.ts.map +0 -1
  6. package/dist/agents/context-builder.js +0 -239
  7. package/dist/agents/context-builder.js.map +0 -1
  8. package/dist/agents/formatter.d.ts +0 -9
  9. package/dist/agents/formatter.d.ts.map +0 -1
  10. package/dist/agents/formatter.js +0 -124
  11. package/dist/agents/formatter.js.map +0 -1
  12. package/dist/agents/index.d.ts +0 -5
  13. package/dist/agents/index.d.ts.map +0 -1
  14. package/dist/agents/index.js +0 -3
  15. package/dist/agents/index.js.map +0 -1
  16. package/dist/agents/orchestrator.d.ts +0 -5
  17. package/dist/agents/orchestrator.d.ts.map +0 -1
  18. package/dist/agents/orchestrator.js +0 -105
  19. package/dist/agents/orchestrator.js.map +0 -1
  20. package/dist/agents/types.d.ts +0 -21
  21. package/dist/agents/types.d.ts.map +0 -1
  22. package/dist/agents/types.js +0 -2
  23. package/dist/agents/types.js.map +0 -1
  24. package/dist/cli/templates.d.ts +0 -22
  25. package/dist/cli/templates.d.ts.map +0 -1
  26. package/dist/cli/templates.js +0 -445
  27. package/dist/cli/templates.js.map +0 -1
  28. package/dist/cli.d.ts +0 -3
  29. package/dist/cli.d.ts.map +0 -1
  30. package/dist/cli.js +0 -1142
  31. package/dist/cli.js.map +0 -1
  32. package/dist/commands/audit-guardrails.d.ts +0 -13
  33. package/dist/commands/audit-guardrails.d.ts.map +0 -1
  34. package/dist/commands/audit-guardrails.js +0 -32
  35. package/dist/commands/audit-guardrails.js.map +0 -1
  36. package/dist/commands/audit-openapi.d.ts +0 -13
  37. package/dist/commands/audit-openapi.d.ts.map +0 -1
  38. package/dist/commands/audit-openapi.js +0 -32
  39. package/dist/commands/audit-openapi.js.map +0 -1
  40. package/dist/commands/propose-overlays.d.ts +0 -13
  41. package/dist/commands/propose-overlays.d.ts.map +0 -1
  42. package/dist/commands/propose-overlays.js +0 -32
  43. package/dist/commands/propose-overlays.js.map +0 -1
  44. package/dist/commands/review-published.d.ts +0 -13
  45. package/dist/commands/review-published.d.ts.map +0 -1
  46. package/dist/commands/review-published.js +0 -32
  47. package/dist/commands/review-published.js.map +0 -1
  48. package/dist/generated/commands.d.ts +0 -2
  49. package/dist/generated/commands.d.ts.map +0 -1
  50. package/dist/generated/commands.js +0 -2
  51. package/dist/generated/commands.js.map +0 -1
  52. package/dist/generated/dsl/agents.d.ts +0 -34
  53. package/dist/generated/dsl/agents.d.ts.map +0 -1
  54. package/dist/generated/dsl/agents.js +0 -98
  55. package/dist/generated/dsl/agents.js.map +0 -1
  56. package/dist/generated/dsl/handoffs.d.ts +0 -457
  57. package/dist/generated/dsl/handoffs.d.ts.map +0 -1
  58. package/dist/generated/dsl/handoffs.js +0 -205
  59. package/dist/generated/dsl/handoffs.js.map +0 -1
  60. package/dist/generated/dsl/index.d.ts +0 -13
  61. package/dist/generated/dsl/index.d.ts.map +0 -1
  62. package/dist/generated/dsl/index.js +0 -10
  63. package/dist/generated/dsl/index.js.map +0 -1
  64. package/dist/generated/dsl/tasks.d.ts +0 -26
  65. package/dist/generated/dsl/tasks.d.ts.map +0 -1
  66. package/dist/generated/dsl/tasks.js +0 -133
  67. package/dist/generated/dsl/tasks.js.map +0 -1
  68. package/dist/generated/dsl/workflows.d.ts +0 -34
  69. package/dist/generated/dsl/workflows.d.ts.map +0 -1
  70. package/dist/generated/dsl/workflows.js +0 -84
  71. package/dist/generated/dsl/workflows.js.map +0 -1
  72. package/dist/generated/index.d.ts +0 -7
  73. package/dist/generated/index.d.ts.map +0 -1
  74. package/dist/generated/index.js +0 -7
  75. package/dist/generated/index.js.map +0 -1
  76. package/dist/generated/policy-runtime.d.ts +0 -114
  77. package/dist/generated/policy-runtime.d.ts.map +0 -1
  78. package/dist/generated/policy-runtime.js +0 -195
  79. package/dist/generated/policy-runtime.js.map +0 -1
  80. package/dist/generated/policy.d.ts +0 -619
  81. package/dist/generated/policy.d.ts.map +0 -1
  82. package/dist/generated/policy.js +0 -802
  83. package/dist/generated/policy.js.map +0 -1
  84. package/dist/generated/program.d.ts +0 -112
  85. package/dist/generated/program.d.ts.map +0 -1
  86. package/dist/generated/program.js +0 -266
  87. package/dist/generated/program.js.map +0 -1
  88. package/dist/generated/schemas.d.ts +0 -778
  89. package/dist/generated/schemas.d.ts.map +0 -1
  90. package/dist/generated/schemas.js +0 -1005
  91. package/dist/generated/schemas.js.map +0 -1
  92. package/dist/generated/types.d.ts +0 -395
  93. package/dist/generated/types.d.ts.map +0 -1
  94. package/dist/generated/types.js +0 -3
  95. package/dist/generated/types.js.map +0 -1
  96. package/dist/generator/dependencyGenerator.d.ts +0 -43
  97. package/dist/generator/dependencyGenerator.d.ts.map +0 -1
  98. package/dist/generator/dependencyGenerator.js +0 -159
  99. package/dist/generator/dependencyGenerator.js.map +0 -1
  100. package/dist/generator/index.d.ts +0 -39
  101. package/dist/generator/index.d.ts.map +0 -1
  102. package/dist/generator/index.js +0 -720
  103. package/dist/generator/index.js.map +0 -1
  104. package/dist/generator/inputHash.d.ts +0 -23
  105. package/dist/generator/inputHash.d.ts.map +0 -1
  106. package/dist/generator/inputHash.js +0 -145
  107. package/dist/generator/inputHash.js.map +0 -1
  108. package/dist/generator/linter.d.ts +0 -26
  109. package/dist/generator/linter.d.ts.map +0 -1
  110. package/dist/generator/linter.js +0 -352
  111. package/dist/generator/linter.js.map +0 -1
  112. package/dist/generator/overlayProcessor.d.ts +0 -90
  113. package/dist/generator/overlayProcessor.d.ts.map +0 -1
  114. package/dist/generator/overlayProcessor.js +0 -541
  115. package/dist/generator/overlayProcessor.js.map +0 -1
  116. package/dist/generator/schemaGenerator.d.ts +0 -10
  117. package/dist/generator/schemaGenerator.d.ts.map +0 -1
  118. package/dist/generator/schemaGenerator.js +0 -299
  119. package/dist/generator/schemaGenerator.js.map +0 -1
  120. package/dist/generator/serviceGenerator.d.ts +0 -41
  121. package/dist/generator/serviceGenerator.d.ts.map +0 -1
  122. package/dist/generator/serviceGenerator.js +0 -296
  123. package/dist/generator/serviceGenerator.js.map +0 -1
  124. package/dist/generator/templateProcessor.d.ts +0 -245
  125. package/dist/generator/templateProcessor.d.ts.map +0 -1
  126. package/dist/generator/templateProcessor.js +0 -821
  127. package/dist/generator/templateProcessor.js.map +0 -1
  128. package/dist/generator/typeGenerator.d.ts +0 -9
  129. package/dist/generator/typeGenerator.d.ts.map +0 -1
  130. package/dist/generator/typeGenerator.js +0 -424
  131. package/dist/generator/typeGenerator.js.map +0 -1
  132. package/dist/generator/typeGenerator.test.d.ts +0 -2
  133. package/dist/generator/typeGenerator.test.d.ts.map +0 -1
  134. package/dist/generator/typeGenerator.test.js +0 -122
  135. package/dist/generator/typeGenerator.test.js.map +0 -1
  136. package/dist/guardrails/allowlist.d.ts +0 -45
  137. package/dist/guardrails/allowlist.d.ts.map +0 -1
  138. package/dist/guardrails/allowlist.js +0 -261
  139. package/dist/guardrails/allowlist.js.map +0 -1
  140. package/dist/guardrails/config.d.ts +0 -40
  141. package/dist/guardrails/config.d.ts.map +0 -1
  142. package/dist/guardrails/config.js +0 -174
  143. package/dist/guardrails/config.js.map +0 -1
  144. package/dist/guardrails/docs.d.ts +0 -24
  145. package/dist/guardrails/docs.d.ts.map +0 -1
  146. package/dist/guardrails/docs.js +0 -138
  147. package/dist/guardrails/docs.js.map +0 -1
  148. package/dist/guardrails/drift.d.ts +0 -23
  149. package/dist/guardrails/drift.d.ts.map +0 -1
  150. package/dist/guardrails/drift.js +0 -127
  151. package/dist/guardrails/drift.js.map +0 -1
  152. package/dist/guardrails/index.d.ts +0 -19
  153. package/dist/guardrails/index.d.ts.map +0 -1
  154. package/dist/guardrails/index.js +0 -23
  155. package/dist/guardrails/index.js.map +0 -1
  156. package/dist/guardrails/lint.d.ts +0 -20
  157. package/dist/guardrails/lint.d.ts.map +0 -1
  158. package/dist/guardrails/lint.js +0 -274
  159. package/dist/guardrails/lint.js.map +0 -1
  160. package/dist/guardrails/manifest.d.ts +0 -63
  161. package/dist/guardrails/manifest.d.ts.map +0 -1
  162. package/dist/guardrails/manifest.js +0 -299
  163. package/dist/guardrails/manifest.js.map +0 -1
  164. package/dist/guardrails/runner.d.ts +0 -43
  165. package/dist/guardrails/runner.d.ts.map +0 -1
  166. package/dist/guardrails/runner.js +0 -365
  167. package/dist/guardrails/runner.js.map +0 -1
  168. package/dist/guardrails/typecheck.d.ts +0 -15
  169. package/dist/guardrails/typecheck.d.ts.map +0 -1
  170. package/dist/guardrails/typecheck.js +0 -104
  171. package/dist/guardrails/typecheck.js.map +0 -1
  172. package/dist/guardrails/types.d.ts +0 -202
  173. package/dist/guardrails/types.d.ts.map +0 -1
  174. package/dist/guardrails/types.js +0 -8
  175. package/dist/guardrails/types.js.map +0 -1
  176. package/dist/index.d.ts.map +0 -1
  177. package/dist/index.js.map +0 -1
  178. package/dist/types.d.ts +0 -583
  179. package/dist/types.d.ts.map +0 -1
  180. package/dist/types.js +0 -305
  181. package/dist/types.js.map +0 -1
package/dist/types.js DELETED
@@ -1,305 +0,0 @@
1
- /**
2
- * OpenAPI specification types for code generation
3
- */
4
- /**
5
- * Parse dependency reference string
6
- */
7
- export function parseDependencyRef(ref) {
8
- const parts = ref.split('.');
9
- if (parts.length !== 3)
10
- return null;
11
- return {
12
- module: parts[0],
13
- service: parts[1],
14
- method: parts[2],
15
- raw: ref,
16
- };
17
- }
18
- // =============================================================================
19
- // Config Utilities
20
- // =============================================================================
21
- /**
22
- * Check if config is multi-module format
23
- */
24
- export function isMultiModuleConfig(config) {
25
- return typeof config === 'object' && config !== null && 'modules' in config;
26
- }
27
- /**
28
- * Expand placeholders in a string
29
- */
30
- export function expandPlaceholders(template, moduleName) {
31
- const pascalCase = moduleName.charAt(0).toUpperCase() + moduleName.slice(1);
32
- const upperSnake = moduleName.toUpperCase().replace(/-/g, '_');
33
- return template
34
- .replace(/\{module\}/g, moduleName)
35
- .replace(/\{Module\}/g, pascalCase)
36
- .replace(/\{MODULE\}/g, upperSnake);
37
- }
38
- /**
39
- * Resolve outputs configuration
40
- */
41
- function resolveOutputs(moduleName, moduleConfig, defaults) {
42
- const expand = (s) => expandPlaceholders(s, moduleName);
43
- const resolvedOutputs = [];
44
- // Merge default outputs with module overrides
45
- const defaultOutputs = defaults.outputs || {};
46
- const moduleOutputs = moduleConfig.outputs || {};
47
- const allOutputIds = new Set([
48
- ...Object.keys(defaultOutputs),
49
- ...Object.keys(moduleOutputs),
50
- ]);
51
- for (const id of allOutputIds) {
52
- const defaultConfig = defaultOutputs[id];
53
- const moduleOverride = moduleOutputs[id];
54
- // Skip if explicitly disabled
55
- if (moduleOverride?.enabled === false)
56
- continue;
57
- // Need at least default config
58
- if (!defaultConfig && !moduleOverride?.output)
59
- continue;
60
- const output = expand(moduleOverride?.output ?? defaultConfig?.output ?? '');
61
- const template = moduleOverride?.template ?? defaultConfig?.template ?? '';
62
- if (!output || !template)
63
- continue;
64
- resolvedOutputs.push({
65
- id,
66
- output,
67
- template,
68
- overwrite: moduleOverride?.overwrite ?? defaultConfig?.overwrite ?? true,
69
- condition: moduleOverride?.condition ?? defaultConfig?.condition ?? 'always',
70
- enabled: moduleOverride?.enabled ?? defaultConfig?.enabled ?? true,
71
- config: {
72
- ...(defaultConfig?.config || {}),
73
- ...(moduleOverride?.config || {}),
74
- },
75
- });
76
- }
77
- return resolvedOutputs;
78
- }
79
- /**
80
- * Resolve module config by applying defaults and expanding placeholders
81
- */
82
- export function resolveModuleConfig(moduleName, moduleConfig, defaults = {}) {
83
- const expand = (s) => expandPlaceholders(s, moduleName);
84
- // Contract output
85
- const contractOutput = expand(moduleConfig.contract?.output ??
86
- defaults.contract?.output ??
87
- `packages/contract/${moduleName}`);
88
- // Public contract output
89
- const contractPublicOutput = expand(moduleConfig.contractPublic?.output ??
90
- defaults.contractPublic?.output ??
91
- `packages/contract-published/${moduleName}`);
92
- // Service template (module overrides defaults)
93
- const serviceTemplate = moduleConfig.contract?.serviceTemplate ?? defaults.contract?.serviceTemplate;
94
- // Server config (legacy)
95
- const serverEnabled = moduleConfig.server?.enabled !== false;
96
- const server = serverEnabled ? {
97
- output: expand(moduleConfig.server?.output ??
98
- defaults.server?.output ??
99
- `server/src/${moduleName}`),
100
- routes: moduleConfig.server?.routes ?? defaults.server?.routes ?? 'routes.generated.ts',
101
- servicesPath: expand(moduleConfig.server?.servicesPath ??
102
- defaults.server?.servicesPath ??
103
- `fastify.services.${moduleName}`),
104
- } : null;
105
- // Frontend config (legacy)
106
- const frontendEnabled = moduleConfig.frontend?.enabled !== false;
107
- const frontendDefaults = defaults.frontend;
108
- const frontendOverride = moduleConfig.frontend;
109
- let frontendShared = null;
110
- if (frontendEnabled) {
111
- const sharedConfig = frontendOverride?.shared ?? frontendDefaults?.shared;
112
- if (sharedConfig) {
113
- frontendShared = {
114
- output: expand(sharedConfig.output ?? 'frontend/src/shared'),
115
- client: expand(sharedConfig.client ?? `${moduleName}.api.generated.ts`),
116
- };
117
- }
118
- }
119
- const frontend = frontendEnabled ? {
120
- output: expand(frontendOverride?.output ??
121
- frontendDefaults?.output ??
122
- `frontend/src/${moduleName}`),
123
- client: frontendOverride?.client ?? frontendDefaults?.client ?? 'api.generated.ts',
124
- service: frontendOverride?.service ?? frontendDefaults?.service ?? 'service.generated.ts',
125
- shared: frontendShared,
126
- } : null;
127
- // Docs config
128
- const docs = {
129
- enabled: moduleConfig.docs?.enabled ?? defaults.docs?.enabled ?? true,
130
- template: moduleConfig.docs?.template ?? defaults.docs?.template ?? 'default',
131
- };
132
- // Overlays (shared + module-specific)
133
- const overlays = [
134
- ...(defaults.overlays?.shared || []),
135
- ...(moduleConfig.overlays || []),
136
- ];
137
- const overlayCollision = defaults.overlays?.collision || 'error';
138
- // Templates (module overrides defaults) - legacy
139
- const serverWithTemplate = server ? {
140
- ...server,
141
- template: moduleConfig.templates?.server ?? defaults.templates?.server,
142
- } : null;
143
- // Also check for services template
144
- if (serverWithTemplate && !serverWithTemplate.template) {
145
- serverWithTemplate.template = moduleConfig.templates?.services ?? defaults.templates?.services;
146
- }
147
- const frontendWithTemplate = frontend ? {
148
- ...frontend,
149
- template: moduleConfig.templates?.frontend ?? defaults.templates?.frontend,
150
- } : null;
151
- // New outputs system
152
- const outputs = resolveOutputs(moduleName, moduleConfig, defaults);
153
- return {
154
- name: moduleName,
155
- openapi: moduleConfig.openapi,
156
- screen: moduleConfig.screen === true,
157
- contractOutput,
158
- contractPublicOutput,
159
- serviceTemplate,
160
- server: serverWithTemplate,
161
- frontend: frontendWithTemplate,
162
- docs,
163
- overlays,
164
- overlayCollision,
165
- outputs,
166
- spectral: moduleConfig.spectral,
167
- dependsOn: moduleConfig.dependsOn,
168
- };
169
- }
170
- // Helper to check if object is a reference
171
- export function isReference(obj) {
172
- return typeof obj === 'object' && obj !== null && '$ref' in obj;
173
- }
174
- // Extract schema name from $ref
175
- export function getRefName(ref) {
176
- // "#/components/schemas/EntryListResponse" -> "EntryListResponse"
177
- const parts = ref.split('/');
178
- return parts[parts.length - 1];
179
- }
180
- /**
181
- * Extract dependencies from OpenAPI spec
182
- */
183
- export function extractDependencies(spec) {
184
- const moduleLevelDeps = [];
185
- const operationLevelDeps = new Map();
186
- const allDepsSet = new Set();
187
- // Module-level dependencies
188
- const moduleDepRefs = spec.info['x-micro-contracts-depend-on'] || [];
189
- for (const ref of moduleDepRefs) {
190
- const parsed = parseDependencyRef(ref);
191
- if (parsed) {
192
- moduleLevelDeps.push(parsed);
193
- allDepsSet.add(ref);
194
- }
195
- }
196
- // Operation-level dependencies
197
- for (const [, pathItem] of Object.entries(spec.paths)) {
198
- for (const method of ['get', 'post', 'put', 'patch', 'delete']) {
199
- const operation = pathItem[method];
200
- if (!operation)
201
- continue;
202
- const opId = operation.operationId || '';
203
- const opDepRefs = operation['x-micro-contracts-depend-on'] || [];
204
- if (opDepRefs.length > 0) {
205
- const parsedDeps = [];
206
- for (const ref of opDepRefs) {
207
- const parsed = parseDependencyRef(ref);
208
- if (parsed) {
209
- parsedDeps.push(parsed);
210
- allDepsSet.add(ref);
211
- }
212
- }
213
- if (parsedDeps.length > 0) {
214
- operationLevelDeps.set(opId, parsedDeps);
215
- }
216
- }
217
- }
218
- }
219
- // All unique deps
220
- const allDeps = [];
221
- for (const ref of allDepsSet) {
222
- const parsed = parseDependencyRef(ref);
223
- if (parsed)
224
- allDeps.push(parsed);
225
- }
226
- return { moduleLevelDeps, operationLevelDeps, allDeps };
227
- }
228
- /**
229
- * Get canonical extension value (supports both short and long forms)
230
- */
231
- export function getExtensionValue(obj, shortName, longName) {
232
- return (obj[longName] ?? obj[shortName]);
233
- }
234
- // Check if a schema contains x-private properties
235
- export function hasPrivateProperties(schema, spec, visited = new Set()) {
236
- if (isReference(schema)) {
237
- const refName = getRefName(schema.$ref);
238
- if (visited.has(refName))
239
- return false;
240
- visited.add(refName);
241
- const resolved = spec.components?.schemas?.[refName];
242
- if (!resolved)
243
- return false;
244
- return hasPrivateProperties(resolved, spec, visited);
245
- }
246
- // Check if schema itself is private
247
- if (schema['x-private'])
248
- return true;
249
- // Check properties
250
- if (schema.properties) {
251
- for (const propSchema of Object.values(schema.properties)) {
252
- if (hasPrivateProperties(propSchema, spec, visited))
253
- return true;
254
- }
255
- }
256
- // Check array items
257
- if (schema.items) {
258
- if (hasPrivateProperties(schema.items, spec, visited))
259
- return true;
260
- }
261
- // Check allOf/oneOf/anyOf
262
- for (const composite of [schema.allOf, schema.oneOf, schema.anyOf]) {
263
- if (composite) {
264
- for (const s of composite) {
265
- if (hasPrivateProperties(s, spec, visited))
266
- return true;
267
- }
268
- }
269
- }
270
- return false;
271
- }
272
- // Collect all schemas referenced by a schema
273
- export function collectReferencedSchemas(schema, spec, result = new Set()) {
274
- if (isReference(schema)) {
275
- const refName = getRefName(schema.$ref);
276
- if (result.has(refName))
277
- return result;
278
- result.add(refName);
279
- const resolved = spec.components?.schemas?.[refName];
280
- if (resolved) {
281
- collectReferencedSchemas(resolved, spec, result);
282
- }
283
- return result;
284
- }
285
- if (schema.properties) {
286
- for (const propSchema of Object.values(schema.properties)) {
287
- collectReferencedSchemas(propSchema, spec, result);
288
- }
289
- }
290
- if (schema.items) {
291
- collectReferencedSchemas(schema.items, spec, result);
292
- }
293
- for (const composite of [schema.allOf, schema.oneOf, schema.anyOf]) {
294
- if (composite) {
295
- for (const s of composite) {
296
- collectReferencedSchemas(s, spec, result);
297
- }
298
- }
299
- }
300
- if (schema.additionalProperties && typeof schema.additionalProperties !== 'boolean') {
301
- collectReferencedSchemas(schema.additionalProperties, spec, result);
302
- }
303
- return result;
304
- }
305
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AA4TH;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAChB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QACjB,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAChB,GAAG,EAAE,GAAG;KACT,CAAC;AACJ,CAAC;AAoPD,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAe;IACjD,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,SAAS,IAAI,MAAM,CAAC;AAC9E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,UAAkB;IACrE,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAE/D,OAAO,QAAQ;SACZ,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC;SAClC,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC;SAClC,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CACrB,UAAkB,EAClB,YAA0B,EAC1B,QAAwB;IAExB,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAChE,MAAM,eAAe,GAA2B,EAAE,CAAC;IAEnD,8CAA8C;IAC9C,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;IAC9C,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC;IAEjD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;QAC3B,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC9B,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;KAC9B,CAAC,CAAC;IAEH,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;QAC9B,MAAM,aAAa,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;QACzC,MAAM,cAAc,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;QAEzC,8BAA8B;QAC9B,IAAI,cAAc,EAAE,OAAO,KAAK,KAAK;YAAE,SAAS;QAEhD,+BAA+B;QAC/B,IAAI,CAAC,aAAa,IAAI,CAAC,cAAc,EAAE,MAAM;YAAE,SAAS;QAExD,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;QAC7E,MAAM,QAAQ,GAAG,cAAc,EAAE,QAAQ,IAAI,aAAa,EAAE,QAAQ,IAAI,EAAE,CAAC;QAE3E,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ;YAAE,SAAS;QAEnC,eAAe,CAAC,IAAI,CAAC;YACnB,EAAE;YACF,MAAM;YACN,QAAQ;YACR,SAAS,EAAE,cAAc,EAAE,SAAS,IAAI,aAAa,EAAE,SAAS,IAAI,IAAI;YACxE,SAAS,EAAE,cAAc,EAAE,SAAS,IAAI,aAAa,EAAE,SAAS,IAAI,QAAQ;YAC5E,OAAO,EAAE,cAAc,EAAE,OAAO,IAAI,aAAa,EAAE,OAAO,IAAI,IAAI;YAClE,MAAM,EAAE;gBACN,GAAG,CAAC,aAAa,EAAE,MAAM,IAAI,EAAE,CAAC;gBAChC,GAAG,CAAC,cAAc,EAAE,MAAM,IAAI,EAAE,CAAC;aAClC;SACF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,UAAkB,EAClB,YAA0B,EAC1B,WAA2B,EAAE;IAE7B,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAEhE,kBAAkB;IAClB,MAAM,cAAc,GAAG,MAAM,CAC3B,YAAY,CAAC,QAAQ,EAAE,MAAM;QAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM;QACzB,qBAAqB,UAAU,EAAE,CAClC,CAAC;IAEF,yBAAyB;IACzB,MAAM,oBAAoB,GAAG,MAAM,CACjC,YAAY,CAAC,cAAc,EAAE,MAAM;QACnC,QAAQ,CAAC,cAAc,EAAE,MAAM;QAC/B,+BAA+B,UAAU,EAAE,CAC5C,CAAC;IAEF,+CAA+C;IAC/C,MAAM,eAAe,GAAG,YAAY,CAAC,QAAQ,EAAE,eAAe,IAAI,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IAErG,yBAAyB;IACzB,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,KAAK,KAAK,CAAC;IAC7D,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC;QAC7B,MAAM,EAAE,MAAM,CACZ,YAAY,CAAC,MAAM,EAAE,MAAM;YAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM;YACvB,cAAc,UAAU,EAAE,CAC3B;QACD,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,qBAAqB;QACvF,YAAY,EAAE,MAAM,CAClB,YAAY,CAAC,MAAM,EAAE,YAAY;YACjC,QAAQ,CAAC,MAAM,EAAE,YAAY;YAC7B,oBAAoB,UAAU,EAAE,CACjC;KACF,CAAC,CAAC,CAAC,IAAI,CAAC;IAET,2BAA2B;IAC3B,MAAM,eAAe,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,KAAK,KAAK,CAAC;IACjE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAC3C,MAAM,gBAAgB,GAAG,YAAY,CAAC,QAAQ,CAAC;IAE/C,IAAI,cAAc,GAA8C,IAAI,CAAC;IACrE,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,YAAY,GAAG,gBAAgB,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,CAAC;QAC1E,IAAI,YAAY,EAAE,CAAC;YACjB,cAAc,GAAG;gBACf,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,IAAI,qBAAqB,CAAC;gBAC5D,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,IAAI,GAAG,UAAU,mBAAmB,CAAC;aACxE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC;QACjC,MAAM,EAAE,MAAM,CACZ,gBAAgB,EAAE,MAAM;YACxB,gBAAgB,EAAE,MAAM;YACxB,gBAAgB,UAAU,EAAE,CAC7B;QACD,MAAM,EAAE,gBAAgB,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,IAAI,kBAAkB;QAClF,OAAO,EAAE,gBAAgB,EAAE,OAAO,IAAI,gBAAgB,EAAE,OAAO,IAAI,sBAAsB;QACzF,MAAM,EAAE,cAAc;KACvB,CAAC,CAAC,CAAC,IAAI,CAAC;IAET,cAAc;IACd,MAAM,IAAI,GAAG;QACX,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,IAAI;QACrE,QAAQ,EAAE,YAAY,CAAC,IAAI,EAAE,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,QAAQ,IAAI,SAAS;KAC9E,CAAC;IAEF,sCAAsC;IACtC,MAAM,QAAQ,GAAa;QACzB,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC;QACpC,GAAG,CAAC,YAAY,CAAC,QAAQ,IAAI,EAAE,CAAC;KACjC,CAAC;IAEF,MAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,EAAE,SAAS,IAAI,OAAO,CAAC;IAEjE,iDAAiD;IACjD,MAAM,kBAAkB,GAAG,MAAM,CAAC,CAAC,CAAC;QAClC,GAAG,MAAM;QACT,QAAQ,EAAE,YAAY,CAAC,SAAS,EAAE,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE,MAAM;KACvE,CAAC,CAAC,CAAC,IAAI,CAAC;IAET,mCAAmC;IACnC,IAAI,kBAAkB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;QACvD,kBAAkB,CAAC,QAAQ,GAAG,YAAY,CAAC,SAAS,EAAE,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;IACjG,CAAC;IAED,MAAM,oBAAoB,GAAG,QAAQ,CAAC,CAAC,CAAC;QACtC,GAAG,QAAQ;QACX,QAAQ,EAAE,YAAY,CAAC,SAAS,EAAE,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,QAAQ;KAC3E,CAAC,CAAC,CAAC,IAAI,CAAC;IAET,qBAAqB;IACrB,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IAEnE,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,YAAY,CAAC,OAAO;QAC7B,MAAM,EAAE,YAAY,CAAC,MAAM,KAAK,IAAI;QACpC,cAAc;QACd,oBAAoB;QACpB,eAAe;QACf,MAAM,EAAE,kBAAkB;QAC1B,QAAQ,EAAE,oBAAoB;QAC9B,IAAI;QACJ,QAAQ;QACR,gBAAgB;QAChB,OAAO;QACP,QAAQ,EAAE,YAAY,CAAC,QAAQ;QAC/B,SAAS,EAAE,YAAY,CAAC,SAAS;KAClC,CAAC;AACJ,CAAC;AAmED,2CAA2C;AAC3C,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,MAAM,IAAI,GAAG,CAAC;AAClE,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,kEAAkE;IAClE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAiB;IACnD,MAAM,eAAe,GAAoB,EAAE,CAAC;IAC5C,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAA2B,CAAC;IAC9D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IAErC,4BAA4B;IAC5B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,IAAI,EAAE,CAAC;IACrE,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,MAAM,EAAE,CAAC;YACX,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7B,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,KAAK,MAAM,CAAC,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,KAAK,MAAM,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAU,EAAE,CAAC;YACxE,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,CAAC,SAAS;gBAAE,SAAS;YAEzB,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,IAAI,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,SAAS,CAAC,6BAA6B,CAAC,IAAI,EAAE,CAAC;YAEjE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,UAAU,GAAoB,EAAE,CAAC;gBACvC,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;oBAC5B,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;oBACvC,IAAI,MAAM,EAAE,CAAC;wBACX,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACxB,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACtB,CAAC;gBACH,CAAC;gBACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1B,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAA4B,EAC5B,SAAiB,EACjB,QAAgB;IAEhB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAkB,CAAC;AAC5D,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,oBAAoB,CAClC,MAAsC,EACtC,IAAiB,EACjB,UAAU,IAAI,GAAG,EAAU;IAE3B,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAErB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5B,OAAO,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,oCAAoC;IACpC,IAAI,MAAM,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAErC,mBAAmB;IACnB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1D,IAAI,oBAAoB,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC;gBAAE,OAAO,IAAI,CAAC;QACnE,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,IAAI,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;IACrE,CAAC;IAED,0BAA0B;IAC1B,KAAK,MAAM,SAAS,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACnE,IAAI,SAAS,EAAE,CAAC;YACd,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,IAAI,oBAAoB,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC;oBAAE,OAAO,IAAI,CAAC;YAC1D,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,wBAAwB,CACtC,MAAsC,EACtC,IAAiB,EACjB,SAAS,IAAI,GAAG,EAAU;IAE1B,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO,MAAM,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEpB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,QAAQ,EAAE,CAAC;YACb,wBAAwB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1D,wBAAwB,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACnE,IAAI,SAAS,EAAE,CAAC;YACd,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,wBAAwB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,oBAAoB,IAAI,OAAO,MAAM,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;QACpF,wBAAwB,CAAC,MAAM,CAAC,oBAAoB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}