@wundergraph/composition 0.36.1 → 0.37.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 (128) hide show
  1. package/README.md +41 -48
  2. package/dist/ast/utils.d.ts +0 -2
  3. package/dist/ast/utils.js +2 -33
  4. package/dist/ast/utils.js.map +1 -1
  5. package/dist/errors/errors.d.ts +10 -13
  6. package/dist/errors/errors.js +81 -74
  7. package/dist/errors/errors.js.map +1 -1
  8. package/dist/federation/federation.d.ts +6 -0
  9. package/dist/federation/federation.js +30 -0
  10. package/dist/federation/federation.js.map +1 -0
  11. package/dist/federation/types.d.ts +44 -0
  12. package/dist/federation/types.js +3 -0
  13. package/dist/federation/types.js.map +1 -0
  14. package/dist/index.d.ts +24 -14
  15. package/dist/index.js +25 -14
  16. package/dist/index.js.map +1 -1
  17. package/dist/normalization/normalization.d.ts +8 -0
  18. package/dist/normalization/normalization.js +29 -0
  19. package/dist/normalization/normalization.js.map +1 -0
  20. package/dist/normalization/types.d.ts +48 -0
  21. package/dist/normalization/types.js +3 -0
  22. package/dist/normalization/types.js.map +1 -0
  23. package/dist/resolvability-graph/graph-nodes.d.ts +1 -1
  24. package/dist/resolvability-graph/graph-nodes.js.map +1 -1
  25. package/dist/resolvability-graph/graph.d.ts +1 -2
  26. package/dist/resolvability-graph/graph.js +21 -21
  27. package/dist/resolvability-graph/graph.js.map +1 -1
  28. package/dist/resolvability-graph/utils.d.ts +1 -1
  29. package/dist/resolvability-graph/utils.js +2 -2
  30. package/dist/resolvability-graph/utils.js.map +1 -1
  31. package/dist/router-compatibility-version/router-compatibility-version.d.ts +4 -0
  32. package/dist/router-compatibility-version/router-compatibility-version.js +7 -0
  33. package/dist/router-compatibility-version/router-compatibility-version.js.map +1 -0
  34. package/dist/router-configuration/{router-configuration.d.ts → types.d.ts} +3 -4
  35. package/dist/router-configuration/types.js +3 -0
  36. package/dist/router-configuration/types.js.map +1 -0
  37. package/dist/router-configuration/utils.d.ts +3 -0
  38. package/dist/router-configuration/{router-configuration.js → utils.js} +9 -1
  39. package/dist/router-configuration/utils.js.map +1 -0
  40. package/dist/schema-building/ast.js.map +1 -1
  41. package/dist/schema-building/{type-definition-data.d.ts → types.d.ts} +52 -5
  42. package/dist/schema-building/{type-definition-data.js → types.js} +1 -1
  43. package/dist/schema-building/types.js.map +1 -0
  44. package/dist/schema-building/utils.d.ts +3 -11
  45. package/dist/schema-building/utils.js +16 -14
  46. package/dist/schema-building/utils.js.map +1 -1
  47. package/dist/subgraph/{subgraph.d.ts → types.d.ts} +6 -9
  48. package/dist/subgraph/types.js +3 -0
  49. package/dist/subgraph/types.js.map +1 -0
  50. package/dist/tsconfig.tsbuildinfo +1 -1
  51. package/dist/utils/composition-version.js +1 -1
  52. package/dist/utils/integer-constants.d.ts +0 -1
  53. package/dist/utils/integer-constants.js +1 -2
  54. package/dist/utils/integer-constants.js.map +1 -1
  55. package/dist/utils/string-constants.d.ts +5 -9
  56. package/dist/utils/string-constants.js +7 -33
  57. package/dist/utils/string-constants.js.map +1 -1
  58. package/dist/utils/types.d.ts +39 -0
  59. package/dist/utils/types.js +3 -0
  60. package/dist/utils/types.js.map +1 -0
  61. package/dist/utils/utils.d.ts +2 -114
  62. package/dist/utils/utils.js +33 -396
  63. package/dist/utils/utils.js.map +1 -1
  64. package/dist/{federation → v1/federation}/federation-factory.d.ts +18 -17
  65. package/dist/{federation → v1/federation}/federation-factory.js +244 -230
  66. package/dist/v1/federation/federation-factory.js.map +1 -0
  67. package/dist/v1/federation/utils.d.ts +59 -0
  68. package/dist/{federation → v1/federation}/utils.js +25 -23
  69. package/dist/v1/federation/utils.js.map +1 -0
  70. package/dist/{federation → v1/federation}/walkers.d.ts +1 -1
  71. package/dist/{federation → v1/federation}/walkers.js +10 -10
  72. package/dist/v1/federation/walkers.js.map +1 -0
  73. package/dist/{normalization → v1/normalization}/directive-definition-data.d.ts +1 -1
  74. package/dist/{normalization → v1/normalization}/directive-definition-data.js +2 -2
  75. package/dist/v1/normalization/directive-definition-data.js.map +1 -0
  76. package/dist/{normalization → v1/normalization}/normalization-factory.d.ts +45 -73
  77. package/dist/{normalization → v1/normalization}/normalization-factory.js +763 -266
  78. package/dist/v1/normalization/normalization-factory.js.map +1 -0
  79. package/dist/v1/normalization/types.d.ts +49 -0
  80. package/dist/v1/normalization/types.js +3 -0
  81. package/dist/v1/normalization/types.js.map +1 -0
  82. package/dist/v1/normalization/utils.d.ts +14 -0
  83. package/dist/v1/normalization/utils.js +288 -0
  84. package/dist/v1/normalization/utils.js.map +1 -0
  85. package/dist/{normalization → v1/normalization}/walkers.js +69 -54
  86. package/dist/v1/normalization/walkers.js.map +1 -0
  87. package/dist/{schema-building → v1/schema-building}/type-merging.d.ts +1 -1
  88. package/dist/{schema-building → v1/schema-building}/type-merging.js +4 -4
  89. package/dist/v1/schema-building/type-merging.js.map +1 -0
  90. package/dist/v1/subgraph/subgraph.d.ts +1 -0
  91. package/dist/v1/subgraph/subgraph.js.map +1 -0
  92. package/dist/{utils → v1/utils}/constants.d.ts +1 -2
  93. package/dist/{utils → v1/utils}/constants.js +7 -8
  94. package/dist/v1/utils/constants.js.map +1 -0
  95. package/dist/v1/utils/integer-constants.d.ts +1 -0
  96. package/dist/v1/utils/integer-constants.js +5 -0
  97. package/dist/v1/utils/integer-constants.js.map +1 -0
  98. package/dist/v1/utils/string-constants.d.ts +5 -0
  99. package/dist/v1/utils/string-constants.js +32 -0
  100. package/dist/v1/utils/string-constants.js.map +1 -0
  101. package/dist/v1/utils/utils.d.ts +38 -0
  102. package/dist/v1/utils/utils.js +336 -0
  103. package/dist/v1/utils/utils.js.map +1 -0
  104. package/dist/{warnings → v1/warnings}/warnings.d.ts +4 -13
  105. package/dist/{warnings → v1/warnings}/warnings.js +48 -27
  106. package/dist/v1/warnings/warnings.js.map +1 -0
  107. package/dist/warnings/types.d.ts +11 -0
  108. package/dist/warnings/types.js +13 -0
  109. package/dist/warnings/types.js.map +1 -0
  110. package/package.json +2 -2
  111. package/dist/federation/federation-factory.js.map +0 -1
  112. package/dist/federation/utils.d.ts +0 -84
  113. package/dist/federation/utils.js.map +0 -1
  114. package/dist/federation/walkers.js.map +0 -1
  115. package/dist/normalization/directive-definition-data.js.map +0 -1
  116. package/dist/normalization/normalization-factory.js.map +0 -1
  117. package/dist/normalization/utils.d.ts +0 -49
  118. package/dist/normalization/utils.js +0 -612
  119. package/dist/normalization/utils.js.map +0 -1
  120. package/dist/normalization/walkers.js.map +0 -1
  121. package/dist/router-configuration/router-configuration.js.map +0 -1
  122. package/dist/schema-building/type-definition-data.js.map +0 -1
  123. package/dist/schema-building/type-merging.js.map +0 -1
  124. package/dist/subgraph/subgraph.js.map +0 -1
  125. package/dist/utils/constants.js.map +0 -1
  126. package/dist/warnings/warnings.js.map +0 -1
  127. /package/dist/{normalization → v1/normalization}/walkers.d.ts +0 -0
  128. /package/dist/{subgraph → v1/subgraph}/subgraph.js +0 -0
@@ -1,612 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.newKeyFieldSetData = newKeyFieldSetData;
4
- exports.newFieldSetData = newFieldSetData;
5
- exports.addFieldNamesToConfigurationData = addFieldNamesToConfigurationData;
6
- exports.extractFieldSetValue = extractFieldSetValue;
7
- exports.getNormalizedFieldSet = getNormalizedFieldSet;
8
- exports.validateKeyFieldSets = validateKeyFieldSets;
9
- exports.validateAndAddConditionalFieldSetsToConfiguration = validateAndAddConditionalFieldSetsToConfiguration;
10
- exports.isNodeQuery = isNodeQuery;
11
- exports.validateArgumentTemplateReferences = validateArgumentTemplateReferences;
12
- exports.initializeDirectiveDefinitionDatas = initializeDirectiveDefinitionDatas;
13
- const graphql_1 = require("graphql");
14
- const utils_1 = require("../utils/utils");
15
- const utils_2 = require("../ast/utils");
16
- const string_constants_1 = require("../utils/string-constants");
17
- const errors_1 = require("../errors/errors");
18
- const constants_1 = require("../utils/constants");
19
- const router_configuration_1 = require("../router-configuration/router-configuration");
20
- const ast_1 = require("../schema-building/ast");
21
- const utils_3 = require("../schema-building/utils");
22
- const warnings_1 = require("../warnings/warnings");
23
- const directive_definition_data_1 = require("./directive-definition-data");
24
- function newKeyFieldSetData() {
25
- return {
26
- isUnresolvableByKeyFieldSet: new Map(),
27
- };
28
- }
29
- function newFieldSetData() {
30
- return {
31
- provides: new Map(),
32
- requires: new Map(),
33
- };
34
- }
35
- function addFieldNamesToConfigurationData(fieldDataByFieldName, configurationData) {
36
- const externalFieldNames = new Set();
37
- for (const [fieldName, fieldContainer] of fieldDataByFieldName) {
38
- if (fieldContainer.directivesByDirectiveName.has(string_constants_1.EXTERNAL)) {
39
- if (configurationData.externalFieldNames) {
40
- configurationData.externalFieldNames.add(fieldName);
41
- }
42
- else {
43
- externalFieldNames.add(fieldName);
44
- }
45
- }
46
- else {
47
- configurationData.fieldNames.add(fieldName);
48
- }
49
- }
50
- if (externalFieldNames.size > 0) {
51
- configurationData.externalFieldNames = externalFieldNames;
52
- }
53
- }
54
- function extractFieldSetValue(name, map, directives) {
55
- // ALl directive validation errors are accounted for later
56
- // Requires and provides should not be repeatable, so the length should be no more than 1
57
- if (!directives || directives.length > 1) {
58
- return;
59
- }
60
- // There should be exactly one argument
61
- const args = directives[0].arguments;
62
- if (!args || args.length !== 1) {
63
- return;
64
- }
65
- // The argument should be a string type named "fields"
66
- const fieldsArgument = args[0];
67
- if (fieldsArgument.name.value !== string_constants_1.FIELDS || fieldsArgument.value.kind !== graphql_1.Kind.STRING) {
68
- return;
69
- }
70
- map.set(name, fieldsArgument.value.value);
71
- }
72
- function getNormalizedFieldSet(documentNode) {
73
- /*
74
- 1. Lexicographically sort the DocumentNode
75
- 2. Convert to a string
76
- 3. Replace consecutive whitespace with a single space
77
- 4. Remove the leading and trailing "{ " and " }", respectively
78
- */
79
- return (0, graphql_1.print)((0, utils_2.lexicographicallySortDocumentNode)(documentNode)).replaceAll(/\s+/g, ' ').slice(2, -2);
80
- }
81
- function getInitialFieldCoordinatesPath(fieldSetDirective, directiveParentTypeName, directiveFieldName) {
82
- switch (fieldSetDirective) {
83
- case utils_3.FieldSetDirective.PROVIDES:
84
- return [`${directiveParentTypeName}.${directiveFieldName}`];
85
- default:
86
- return [];
87
- }
88
- }
89
- function validateNonRepeatableFieldSet(nf, selectionSetParentData, fieldSet, directiveFieldName, fieldSetDirective, directiveParentTypeName) {
90
- // Create a new selection set so that the value can be parsed as a new DocumentNode
91
- const { error, documentNode } = (0, utils_2.safeParse)('{' + fieldSet + '}');
92
- if (error || !documentNode) {
93
- return { errorMessage: (0, errors_1.unparsableFieldSetErrorMessage)(fieldSet, error) };
94
- }
95
- const parentDatas = [selectionSetParentData];
96
- const definedFields = [];
97
- const fieldCoordinatesPath = getInitialFieldCoordinatesPath(fieldSetDirective, directiveParentTypeName, directiveFieldName);
98
- const fieldPath = [directiveFieldName];
99
- const externalAncestors = new Set();
100
- let errorMessage;
101
- let currentDepth = -1;
102
- let shouldDefineSelectionSet = true;
103
- let lastFieldName = directiveFieldName;
104
- (0, graphql_1.visit)(documentNode, {
105
- Argument: {
106
- enter() {
107
- return false;
108
- },
109
- },
110
- Field: {
111
- enter(node) {
112
- const parentData = parentDatas[currentDepth];
113
- const parentTypeName = parentData.name;
114
- if (parentData.kind === graphql_1.Kind.UNION_TYPE_DEFINITION) {
115
- errorMessage = (0, errors_1.invalidSelectionOnUnionErrorMessage)(fieldSet, fieldCoordinatesPath, parentTypeName);
116
- return graphql_1.BREAK;
117
- }
118
- const fieldName = node.name.value;
119
- const currentFieldCoords = `${parentTypeName}.${fieldName}`;
120
- nf.unvalidatedExternalFieldCoords.delete(currentFieldCoords);
121
- // If an object-like was just visited, a selection set should have been entered
122
- if (shouldDefineSelectionSet) {
123
- errorMessage = (0, errors_1.invalidSelectionSetErrorMessage)(fieldSet, fieldCoordinatesPath, parentTypeName, (0, utils_1.kindToTypeString)(parentData.kind));
124
- return graphql_1.BREAK;
125
- }
126
- fieldCoordinatesPath.push(currentFieldCoords);
127
- fieldPath.push(fieldName);
128
- lastFieldName = fieldName;
129
- const fieldData = parentData.fieldDataByFieldName.get(fieldName);
130
- // undefined if the field does not exist on the parent
131
- if (!fieldData) {
132
- errorMessage = (0, errors_1.undefinedFieldInFieldSetErrorMessage)(fieldSet, parentTypeName, fieldName);
133
- return graphql_1.BREAK;
134
- }
135
- if (definedFields[currentDepth].has(fieldName)) {
136
- errorMessage = (0, errors_1.duplicateFieldInFieldSetErrorMessage)(fieldSet, currentFieldCoords);
137
- return graphql_1.BREAK;
138
- }
139
- definedFields[currentDepth].add(fieldName);
140
- const isExternal = fieldData.isExternalBySubgraphName.get(nf.subgraphName);
141
- const namedTypeName = (0, ast_1.getTypeNodeNamedTypeName)(fieldData.node.type);
142
- // The child could itself be a parent
143
- const namedTypeData = nf.parentDefinitionDataByTypeName.get(namedTypeName);
144
- // The base scalars are not in the parents map
145
- if (constants_1.BASE_SCALARS.has(namedTypeName) ||
146
- namedTypeData?.kind === graphql_1.Kind.SCALAR_TYPE_DEFINITION ||
147
- namedTypeData?.kind === graphql_1.Kind.ENUM_TYPE_DEFINITION) {
148
- if (externalAncestors.size < 1 && !isExternal) {
149
- if (nf.isSubgraphVersionTwo) {
150
- nf.errors.push((0, errors_1.nonExternalConditionalFieldError)(`${directiveParentTypeName}.${directiveFieldName}`, nf.subgraphName, currentFieldCoords, fieldSet, fieldSetDirective));
151
- }
152
- else {
153
- /* In V1, @requires and @provides do not need to declare any part of the field set @external.
154
- * It would appear that any such non-external fields are treated as if they are non-conditionally provided.
155
- * */
156
- nf.warnings.push((0, warnings_1.nonExternalConditionalFieldWarning)(`${directiveParentTypeName}.${directiveFieldName}`, nf.subgraphName, currentFieldCoords, fieldSet, fieldSetDirective));
157
- }
158
- return;
159
- }
160
- const conditionalFieldData = (0, utils_1.getValueOrDefault)(nf.conditionalFieldDataByCoordinates, currentFieldCoords, utils_3.newConditionalFieldData);
161
- const fieldSetCondition = (0, router_configuration_1.newFieldSetConditionData)({
162
- fieldCoordinatesPath: [...fieldCoordinatesPath],
163
- fieldPath: [...fieldPath],
164
- });
165
- fieldSetDirective === utils_3.FieldSetDirective.PROVIDES
166
- ? conditionalFieldData.providedBy.push(fieldSetCondition)
167
- : conditionalFieldData.requiredBy.push(fieldSetCondition);
168
- return;
169
- }
170
- if (!namedTypeData) {
171
- // Should not be possible to receive this error
172
- errorMessage = (0, errors_1.unknownTypeInFieldSetErrorMessage)(fieldSet, currentFieldCoords, namedTypeName);
173
- return graphql_1.BREAK;
174
- }
175
- if (isExternal) {
176
- const data = (0, utils_1.getValueOrDefault)(nf.conditionalFieldDataByCoordinates, currentFieldCoords, utils_3.newConditionalFieldData);
177
- switch (fieldSetDirective) {
178
- case utils_3.FieldSetDirective.PROVIDES:
179
- data.providedBy.push((0, router_configuration_1.newFieldSetConditionData)({
180
- fieldCoordinatesPath: [...fieldCoordinatesPath],
181
- fieldPath: [...fieldPath],
182
- }));
183
- break;
184
- default:
185
- break;
186
- }
187
- externalAncestors.add(currentFieldCoords);
188
- }
189
- if (namedTypeData.kind === graphql_1.Kind.OBJECT_TYPE_DEFINITION ||
190
- namedTypeData.kind === graphql_1.Kind.INTERFACE_TYPE_DEFINITION ||
191
- namedTypeData.kind === graphql_1.Kind.UNION_TYPE_DEFINITION) {
192
- shouldDefineSelectionSet = true;
193
- parentDatas.push(namedTypeData);
194
- return;
195
- }
196
- },
197
- leave() {
198
- externalAncestors.delete(fieldCoordinatesPath.pop() || '');
199
- fieldPath.pop();
200
- },
201
- },
202
- InlineFragment: {
203
- enter(node) {
204
- const parentData = parentDatas[currentDepth];
205
- const parentTypeName = parentData.name;
206
- const fieldCoordinates = fieldCoordinatesPath.length < 1
207
- ? selectionSetParentData.name
208
- : fieldCoordinatesPath[fieldCoordinatesPath.length - 1];
209
- if (!node.typeCondition) {
210
- errorMessage = (0, errors_1.inlineFragmentWithoutTypeConditionErrorMessage)(fieldSet, fieldCoordinates);
211
- return graphql_1.BREAK;
212
- }
213
- const typeConditionName = node.typeCondition.name.value;
214
- // It's possible to infinitely define fragments
215
- if (typeConditionName === parentTypeName) {
216
- parentDatas.push(parentData);
217
- shouldDefineSelectionSet = true;
218
- return;
219
- }
220
- if (!(0, utils_2.isKindAbstract)(parentData.kind)) {
221
- errorMessage = (0, errors_1.invalidInlineFragmentTypeErrorMessage)(fieldSet, fieldCoordinatesPath, typeConditionName, parentTypeName);
222
- return graphql_1.BREAK;
223
- }
224
- const fragmentNamedTypeData = nf.parentDefinitionDataByTypeName.get(typeConditionName);
225
- if (!fragmentNamedTypeData) {
226
- errorMessage = (0, errors_1.unknownInlineFragmentTypeConditionErrorMessage)(fieldSet, fieldCoordinatesPath, parentTypeName, typeConditionName);
227
- return graphql_1.BREAK;
228
- }
229
- shouldDefineSelectionSet = true;
230
- switch (fragmentNamedTypeData.kind) {
231
- case graphql_1.Kind.INTERFACE_TYPE_DEFINITION: {
232
- if (!fragmentNamedTypeData.implementedInterfaceTypeNames.has(parentTypeName)) {
233
- break;
234
- }
235
- parentDatas.push(fragmentNamedTypeData);
236
- return;
237
- }
238
- case graphql_1.Kind.OBJECT_TYPE_DEFINITION: {
239
- const concreteTypeNames = nf.concreteTypeNamesByAbstractTypeName.get(parentTypeName);
240
- if (!concreteTypeNames || !concreteTypeNames.has(typeConditionName)) {
241
- break;
242
- }
243
- parentDatas.push(fragmentNamedTypeData);
244
- return;
245
- }
246
- case graphql_1.Kind.UNION_TYPE_DEFINITION: {
247
- parentDatas.push(fragmentNamedTypeData);
248
- return;
249
- }
250
- default: {
251
- errorMessage = (0, errors_1.invalidInlineFragmentTypeConditionTypeErrorMessage)(fieldSet, fieldCoordinatesPath, parentTypeName, typeConditionName, (0, utils_1.kindToTypeString)(fragmentNamedTypeData.kind));
252
- return graphql_1.BREAK;
253
- }
254
- }
255
- errorMessage = (0, errors_1.invalidInlineFragmentTypeConditionErrorMessage)(fieldSet, fieldCoordinatesPath, typeConditionName, (0, utils_1.kindToTypeString)(parentData.kind), parentTypeName);
256
- return graphql_1.BREAK;
257
- },
258
- },
259
- SelectionSet: {
260
- enter() {
261
- if (!shouldDefineSelectionSet) {
262
- const parentData = parentDatas[currentDepth];
263
- if (parentData.kind === graphql_1.Kind.UNION_TYPE_DEFINITION) {
264
- // Should never happen
265
- errorMessage = (0, errors_1.unparsableFieldSetSelectionErrorMessage)(fieldSet, lastFieldName);
266
- return graphql_1.BREAK;
267
- }
268
- const fieldData = parentData.fieldDataByFieldName.get(lastFieldName);
269
- if (!fieldData) {
270
- errorMessage = (0, errors_1.undefinedFieldInFieldSetErrorMessage)(fieldSet, parentData.name, lastFieldName);
271
- return graphql_1.BREAK;
272
- }
273
- const fieldNamedTypeName = (0, ast_1.getTypeNodeNamedTypeName)(fieldData.node.type);
274
- // If the child is not found, it's a base scalar. Undefined types would have already been handled.
275
- const namedTypeData = nf.parentDefinitionDataByTypeName.get(fieldNamedTypeName);
276
- const childKind = namedTypeData ? namedTypeData.kind : graphql_1.Kind.SCALAR_TYPE_DEFINITION;
277
- errorMessage = (0, errors_1.invalidSelectionSetDefinitionErrorMessage)(fieldSet, fieldCoordinatesPath, fieldNamedTypeName, (0, utils_1.kindToTypeString)(childKind));
278
- return graphql_1.BREAK;
279
- }
280
- currentDepth += 1;
281
- shouldDefineSelectionSet = false;
282
- if (currentDepth < 0 || currentDepth >= parentDatas.length) {
283
- errorMessage = (0, errors_1.unparsableFieldSetSelectionErrorMessage)(fieldSet, lastFieldName);
284
- return graphql_1.BREAK;
285
- }
286
- definedFields.push(new Set());
287
- },
288
- leave() {
289
- if (shouldDefineSelectionSet) {
290
- const parentData = parentDatas[currentDepth + 1];
291
- errorMessage = (0, errors_1.invalidSelectionSetErrorMessage)(fieldSet, fieldCoordinatesPath, parentData.name, (0, utils_1.kindToTypeString)(parentData.kind));
292
- shouldDefineSelectionSet = false;
293
- }
294
- // Empty selection sets would be a parse error, so it is unnecessary to handle them
295
- currentDepth -= 1;
296
- parentDatas.pop();
297
- definedFields.pop();
298
- },
299
- },
300
- });
301
- if (errorMessage) {
302
- return { errorMessage };
303
- }
304
- return { configuration: { fieldName: directiveFieldName, selectionSet: getNormalizedFieldSet(documentNode) } };
305
- }
306
- function validateKeyFieldSets(nf, entityParentData, nonResolvableByKeyFieldSet, fieldNames) {
307
- const isEntityInterface = nf.entityInterfaceDataByTypeName.has(entityParentData.name);
308
- const entityTypeName = entityParentData.name;
309
- const errorMessages = [];
310
- const configurations = [];
311
- const keyFieldNames = new Set();
312
- const allKeyFieldSetPaths = [];
313
- // If the key is on an entity interface/interface object, an entity data node should not be propagated
314
- const entityDataNode = isEntityInterface ? undefined : nf.internalGraph.addEntityDataNode(entityParentData.name);
315
- const graphNode = nf.internalGraph.addOrUpdateNode(entityParentData.name);
316
- for (const [fieldSet, disableEntityResolver] of nonResolvableByKeyFieldSet) {
317
- // Create a new selection set so that the value can be parsed as a new DocumentNode
318
- const { error, documentNode } = (0, utils_2.safeParse)('{' + fieldSet + '}');
319
- if (error || !documentNode) {
320
- errorMessages.push((0, errors_1.unparsableFieldSetErrorMessage)(fieldSet, error));
321
- continue;
322
- }
323
- const parentWithFieldsDatas = [entityParentData];
324
- const definedFields = [];
325
- const currentPath = [];
326
- const keyFieldSetPaths = new Set();
327
- let currentDepth = -1;
328
- let shouldDefineSelectionSet = true;
329
- let lastFieldName = '';
330
- (0, graphql_1.visit)(documentNode, {
331
- Argument: {
332
- enter(node) {
333
- // Fields that define arguments are never allowed in a key FieldSet
334
- // However, at this stage, it actually means the argument is undefined on the field
335
- errorMessages.push((0, errors_1.unexpectedArgumentErrorMessage)(fieldSet, `${parentWithFieldsDatas[currentDepth].name}.${lastFieldName}`, node.name.value));
336
- return graphql_1.BREAK;
337
- },
338
- },
339
- Field: {
340
- enter(node) {
341
- const grandparentData = parentWithFieldsDatas[currentDepth - 1];
342
- const parentData = parentWithFieldsDatas[currentDepth];
343
- const parentTypeName = parentData.name;
344
- const fieldName = node.name.value;
345
- const fieldCoords = `${parentTypeName}.${fieldName}`;
346
- nf.unvalidatedExternalFieldCoords.delete(fieldCoords);
347
- // If an object-like was just visited, a selection set should have been entered
348
- if (shouldDefineSelectionSet) {
349
- errorMessages.push((0, errors_1.invalidSelectionSetErrorMessage)(fieldSet, [`${grandparentData.name}.${lastFieldName}`], parentTypeName, (0, utils_1.kindToTypeString)(parentData.kind)));
350
- return graphql_1.BREAK;
351
- }
352
- lastFieldName = fieldName;
353
- const fieldData = parentData.fieldDataByFieldName.get(fieldName);
354
- // undefined if the field does not exist on the parent
355
- if (!fieldData) {
356
- errorMessages.push((0, errors_1.undefinedFieldInFieldSetErrorMessage)(fieldSet, parentTypeName, fieldName));
357
- return graphql_1.BREAK;
358
- }
359
- // TODO navigate already provided keys
360
- if (fieldData.argumentDataByArgumentName.size) {
361
- errorMessages.push((0, errors_1.argumentsInKeyFieldSetErrorMessage)(fieldSet, fieldCoords));
362
- return graphql_1.BREAK;
363
- }
364
- if (definedFields[currentDepth].has(fieldName)) {
365
- errorMessages.push((0, errors_1.duplicateFieldInFieldSetErrorMessage)(fieldSet, fieldCoords));
366
- return graphql_1.BREAK;
367
- }
368
- currentPath.push(fieldName);
369
- // Fields that form part of an entity key are intrinsically shareable
370
- fieldData.isShareableBySubgraphName.set(nf.subgraphName, true);
371
- definedFields[currentDepth].add(fieldName);
372
- /* Depth 0 is the original parent type
373
- * If a field is external, but it's part of a key FieldSet, it should be included in its respective
374
- * root or child node */
375
- if (currentDepth === 0) {
376
- keyFieldNames.add(fieldName);
377
- fieldNames.add(fieldName);
378
- }
379
- else {
380
- const nestedConfigurationData = nf.configurationDataByParentTypeName.get(parentTypeName);
381
- if (!nestedConfigurationData) {
382
- errorMessages.push((0, errors_1.invalidConfigurationDataErrorMessage)(parentTypeName, fieldName, fieldSet));
383
- return graphql_1.BREAK;
384
- }
385
- nestedConfigurationData.fieldNames.add(fieldName);
386
- }
387
- (0, utils_1.getValueOrDefault)(nf.keyFieldNamesByParentTypeName, parentTypeName, () => new Set()).add(fieldName);
388
- const namedTypeName = (0, ast_1.getTypeNodeNamedTypeName)(fieldData.node.type);
389
- // The base scalars are not in the parents map
390
- if (constants_1.BASE_SCALARS.has(namedTypeName)) {
391
- keyFieldSetPaths.add(currentPath.join(string_constants_1.PERIOD));
392
- currentPath.pop();
393
- return;
394
- }
395
- // The child could itself be a parent
396
- const namedTypeData = nf.parentDefinitionDataByTypeName.get(namedTypeName);
397
- if (!namedTypeData) {
398
- // Should not be possible to receive this error
399
- errorMessages.push((0, errors_1.unknownTypeInFieldSetErrorMessage)(fieldSet, fieldCoords, namedTypeName));
400
- return graphql_1.BREAK;
401
- }
402
- if (namedTypeData.kind === graphql_1.Kind.OBJECT_TYPE_DEFINITION) {
403
- shouldDefineSelectionSet = true;
404
- parentWithFieldsDatas.push(namedTypeData);
405
- return;
406
- }
407
- // interfaces and unions are invalid in a key directive
408
- if ((0, utils_2.isKindAbstract)(namedTypeData.kind)) {
409
- errorMessages.push((0, errors_1.abstractTypeInKeyFieldSetErrorMessage)(fieldSet, fieldCoords, namedTypeName, (0, utils_1.kindToTypeString)(namedTypeData.kind)));
410
- return graphql_1.BREAK;
411
- }
412
- keyFieldSetPaths.add(currentPath.join(string_constants_1.PERIOD));
413
- currentPath.pop();
414
- },
415
- },
416
- InlineFragment: {
417
- enter() {
418
- errorMessages.push(errors_1.inlineFragmentInFieldSetErrorMessage);
419
- return graphql_1.BREAK;
420
- },
421
- },
422
- SelectionSet: {
423
- enter() {
424
- if (!shouldDefineSelectionSet) {
425
- const parentData = parentWithFieldsDatas[currentDepth];
426
- const parentTypeName = parentData.name;
427
- const fieldCoordinates = `${parentTypeName}.${lastFieldName}`;
428
- // If the last field is not an object-like
429
- const fieldData = parentData.fieldDataByFieldName.get(lastFieldName);
430
- if (!fieldData) {
431
- errorMessages.push((0, errors_1.undefinedFieldInFieldSetErrorMessage)(fieldSet, fieldCoordinates, lastFieldName));
432
- return graphql_1.BREAK;
433
- }
434
- const fieldNamedTypeName = (0, ast_1.getTypeNodeNamedTypeName)(fieldData.node.type);
435
- // If the child is not found, it's a base scalar. Undefined types would have already been handled.
436
- const namedTypeData = nf.parentDefinitionDataByTypeName.get(fieldNamedTypeName);
437
- const namedTypeKind = namedTypeData ? namedTypeData.kind : graphql_1.Kind.SCALAR_TYPE_DEFINITION;
438
- errorMessages.push((0, errors_1.invalidSelectionSetDefinitionErrorMessage)(fieldSet, [fieldCoordinates], fieldNamedTypeName, (0, utils_1.kindToTypeString)(namedTypeKind)));
439
- return graphql_1.BREAK;
440
- }
441
- currentDepth += 1;
442
- shouldDefineSelectionSet = false;
443
- if (currentDepth < 0 || currentDepth >= parentWithFieldsDatas.length) {
444
- errorMessages.push((0, errors_1.unparsableFieldSetSelectionErrorMessage)(fieldSet, lastFieldName));
445
- return graphql_1.BREAK;
446
- }
447
- definedFields.push(new Set());
448
- },
449
- leave() {
450
- if (shouldDefineSelectionSet) {
451
- const grandparentData = parentWithFieldsDatas[currentDepth];
452
- const grandparentTypeName = grandparentData.name;
453
- const parentData = parentWithFieldsDatas[currentDepth + 1];
454
- const fieldCoordinates = `${grandparentTypeName}.${lastFieldName}`;
455
- errorMessages.push((0, errors_1.invalidSelectionSetErrorMessage)(fieldSet, [fieldCoordinates], parentData.name, (0, utils_1.kindToTypeString)(parentData.kind)));
456
- shouldDefineSelectionSet = false;
457
- }
458
- // Empty selection sets would be a parse error, so it is unnecessary to handle them
459
- currentDepth -= 1;
460
- parentWithFieldsDatas.pop();
461
- definedFields.pop();
462
- },
463
- },
464
- });
465
- if (errorMessages.length > 0) {
466
- continue;
467
- }
468
- const normalizedFieldSet = getNormalizedFieldSet(documentNode);
469
- configurations.push({
470
- fieldName: '',
471
- selectionSet: normalizedFieldSet,
472
- ...(disableEntityResolver ? { disableEntityResolver: true } : {}),
473
- });
474
- graphNode.satisfiedFieldSets.add(normalizedFieldSet);
475
- if (disableEntityResolver) {
476
- continue;
477
- }
478
- entityDataNode?.addTargetSubgraphByFieldSet(normalizedFieldSet, nf.subgraphName);
479
- allKeyFieldSetPaths.push(keyFieldSetPaths);
480
- }
481
- if (errorMessages.length) {
482
- nf.errors.push((0, errors_1.invalidKeyDirectivesError)(entityTypeName, errorMessages));
483
- return;
484
- }
485
- // todo
486
- // nf.internalGraph.addEntityNode(entityTypeName, allKeyFieldSetPaths);
487
- if (configurations.length) {
488
- return configurations;
489
- }
490
- }
491
- function getFieldSetParent(factory, fieldSetDirective, parentData, fieldName, parentTypeName) {
492
- if (fieldSetDirective !== utils_3.FieldSetDirective.PROVIDES) {
493
- return { fieldSetParentData: parentData };
494
- }
495
- const fieldData = (0, utils_1.getOrThrowError)(parentData.fieldDataByFieldName, fieldName, `${parentTypeName}.fieldDataByFieldName`);
496
- const fieldNamedTypeName = (0, ast_1.getTypeNodeNamedTypeName)(fieldData.node.type);
497
- const namedTypeData = factory.parentDefinitionDataByTypeName.get(fieldNamedTypeName);
498
- // This error should never happen
499
- if (!namedTypeData) {
500
- return {
501
- errorString: (0, errors_1.unknownNamedTypeErrorMessage)(`${parentTypeName}.${fieldName}`, fieldNamedTypeName),
502
- };
503
- }
504
- if (namedTypeData.kind !== graphql_1.Kind.INTERFACE_TYPE_DEFINITION && namedTypeData.kind !== graphql_1.Kind.OBJECT_TYPE_DEFINITION) {
505
- return {
506
- errorString: (0, errors_1.incompatibleTypeWithProvidesErrorMessage)(`${parentTypeName}.${fieldName}`, fieldNamedTypeName),
507
- };
508
- }
509
- return { fieldSetParentData: namedTypeData };
510
- }
511
- function validateProvidesOrRequires(nf, parentData, fieldSetByFieldName, fieldSetDirective) {
512
- const errorMessages = [];
513
- const configurations = [];
514
- const parentTypeName = (0, utils_3.getParentTypeName)(parentData);
515
- for (const [fieldName, fieldSet] of fieldSetByFieldName) {
516
- /* It is possible to encounter a field before encountering the type definition.
517
- Consequently, at that time, it is unknown whether the named type is an entity.
518
- If it isn't, the @provides directive does not make sense and can be ignored.
519
- */
520
- const { fieldSetParentData, errorString } = getFieldSetParent(nf, fieldSetDirective, parentData, fieldName, parentTypeName);
521
- const fieldCoords = `${parentTypeName}.${fieldName}`;
522
- if (errorString) {
523
- errorMessages.push(errorString);
524
- continue;
525
- }
526
- if (!fieldSetParentData) {
527
- continue;
528
- }
529
- const { errorMessage, configuration } = validateNonRepeatableFieldSet(nf, fieldSetParentData, fieldSet, fieldName, fieldSetDirective, parentTypeName);
530
- if (errorMessage) {
531
- errorMessages.push(` On "${fieldCoords}" —` + errorMessage);
532
- continue;
533
- }
534
- if (configuration) {
535
- configurations.push(configuration);
536
- continue;
537
- }
538
- // Should never happen
539
- throw (0, errors_1.invalidConfigurationResultFatalError)(fieldCoords);
540
- }
541
- if (errorMessages.length > 0) {
542
- nf.errors.push((0, errors_1.invalidProvidesOrRequiresDirectivesError)(fieldSetDirective, errorMessages));
543
- return;
544
- }
545
- if (configurations.length > 0) {
546
- return configurations;
547
- }
548
- }
549
- function validateAndAddConditionalFieldSetsToConfiguration(nf, parentData, fieldSetData) {
550
- const configurationData = (0, utils_1.getOrThrowError)(nf.configurationDataByParentTypeName, (0, utils_3.getParentTypeName)(parentData), 'configurationDataByParentTypeName');
551
- const provides = validateProvidesOrRequires(nf, parentData, fieldSetData.provides, utils_3.FieldSetDirective.PROVIDES);
552
- if (provides) {
553
- configurationData.provides = provides;
554
- }
555
- const requires = validateProvidesOrRequires(nf, parentData, fieldSetData.requires, utils_3.FieldSetDirective.REQUIRES);
556
- if (requires) {
557
- configurationData.requires = requires;
558
- }
559
- }
560
- function isNodeQuery(typeName, operationTypeNode) {
561
- return typeName === string_constants_1.QUERY || operationTypeNode === graphql_1.OperationTypeNode.QUERY;
562
- }
563
- function validateArgumentTemplateReferences(value, argumentDataByArgumentName, errorMessages) {
564
- const matches = value.matchAll(constants_1.EDFS_ARGS_REGEXP);
565
- const undefinedArgs = new Set();
566
- const invalidArgs = new Set();
567
- for (const match of matches) {
568
- if (match.length < 2) {
569
- invalidArgs.add(match[0]);
570
- continue;
571
- }
572
- if (!argumentDataByArgumentName.has(match[1])) {
573
- undefinedArgs.add(match[1]);
574
- }
575
- }
576
- for (const undefinedArg of undefinedArgs) {
577
- errorMessages.push((0, errors_1.undefinedEventSubjectsArgumentErrorMessage)(undefinedArg));
578
- }
579
- for (const invalidArg of invalidArgs) {
580
- errorMessages.push((0, errors_1.invalidEventSubjectsArgumentErrorMessage)(invalidArg));
581
- }
582
- }
583
- function initializeDirectiveDefinitionDatas() {
584
- return new Map([
585
- [string_constants_1.AUTHENTICATED, directive_definition_data_1.AUTHENTICATED_DEFINITION_DATA],
586
- [string_constants_1.COMPOSE_DIRECTIVE, directive_definition_data_1.COMPOSE_DIRECTIVE_DEFINITION_DATA],
587
- [string_constants_1.CONFIGURE_DESCRIPTION, directive_definition_data_1.CONFIGURE_DESCRIPTION_DEFINITION_DATA],
588
- [string_constants_1.CONFIGURE_CHILD_DESCRIPTIONS, directive_definition_data_1.CONFIGURE_CHILD_DESCRIPTIONS_DEFINITION_DATA],
589
- [string_constants_1.DEPRECATED, directive_definition_data_1.DEPRECATED_DEFINITION_DATA],
590
- [string_constants_1.EDFS_KAFKA_PUBLISH, directive_definition_data_1.KAFKA_PUBLISH_DEFINITION_DATA],
591
- [string_constants_1.EDFS_KAFKA_SUBSCRIBE, directive_definition_data_1.KAFKA_SUBSCRIBE_DEFINITION_DATA],
592
- [string_constants_1.EDFS_NATS_PUBLISH, directive_definition_data_1.NATS_PUBLISH_DEFINITION_DATA],
593
- [string_constants_1.EDFS_NATS_PUBLISH, directive_definition_data_1.NATS_PUBLISH_DEFINITION_DATA],
594
- [string_constants_1.EDFS_NATS_REQUEST, directive_definition_data_1.NATS_REQUEST_DEFINITION_DATA],
595
- [string_constants_1.EDFS_NATS_SUBSCRIBE, directive_definition_data_1.NATS_SUBSCRIBE_DEFINITION_DATA],
596
- [string_constants_1.EXTENDS, directive_definition_data_1.EXTENDS_DEFINITION_DATA],
597
- [string_constants_1.EXTERNAL, directive_definition_data_1.EXTERNAL_DEFINITION_DATA],
598
- [string_constants_1.INACCESSIBLE, directive_definition_data_1.INACCESSIBLE_DEFINITION_DATA],
599
- [string_constants_1.INTERFACE_OBJECT, directive_definition_data_1.INTERFACE_OBJECT_DEFINITION_DATA],
600
- [string_constants_1.KEY, directive_definition_data_1.KEY_DEFINITION_DATA],
601
- [string_constants_1.LINK, directive_definition_data_1.LINK_DEFINITION_DATA],
602
- [string_constants_1.OVERRIDE, directive_definition_data_1.OVERRIDE_DEFINITION_DATA],
603
- [string_constants_1.PROVIDES, directive_definition_data_1.PROVIDES_DEFINITION_DATA],
604
- [string_constants_1.REQUIRES, directive_definition_data_1.REQUIRES_DEFINITION_DATA],
605
- [string_constants_1.REQUIRES_SCOPES, directive_definition_data_1.REQUIRES_SCOPES_DEFINITION_DATA],
606
- [string_constants_1.SHAREABLE, directive_definition_data_1.SHAREABLE_DEFINITION_DATA],
607
- [string_constants_1.SPECIFIED_BY, directive_definition_data_1.SPECIFIED_BY_DEFINITION_DATA],
608
- [string_constants_1.SUBSCRIPTION_FILTER, directive_definition_data_1.SUBSCRIPTION_FILTER_DEFINITION_DATA],
609
- [string_constants_1.TAG, directive_definition_data_1.TAG_DEFINITION_DATA],
610
- ]);
611
- }
612
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/normalization/utils.ts"],"names":[],"mappings":";;AA+GA,gDAIC;AAOD,0CAKC;AAOD,4EAmBC;AAED,oDAiBC;AAOD,sDAQC;AAuTD,oDA8NC;AAgGD,8GAkBC;AAED,kCAEC;AAED,gFAuBC;AAED,gFA4BC;AA73BD,qCAAoH;AACpH,0CAAsF;AACtF,wCAA4F;AAC5F,gEA4BmC;AAEnC,6CA2B0B;AAC1B,kDAAoE;AACpE,uFAIsD;AAWtD,gDAAkE;AAClE,oDAAyG;AACzG,mDAA0E;AAC1E,2EAyBqC;AAMrC,SAAgB,kBAAkB;IAChC,OAAO;QACL,2BAA2B,EAAE,IAAI,GAAG,EAAmB;KACxD,CAAC;AACJ,CAAC;AAOD,SAAgB,eAAe;IAC7B,OAAO;QACL,QAAQ,EAAE,IAAI,GAAG,EAAkB;QACnC,QAAQ,EAAE,IAAI,GAAG,EAAkB;KACpC,CAAC;AACJ,CAAC;AAOD,SAAgB,gCAAgC,CAC9C,oBAA4C,EAC5C,iBAAoC;IAEpC,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC7C,KAAK,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,IAAI,oBAAoB,EAAE,CAAC;QAC/D,IAAI,cAAc,CAAC,yBAAyB,CAAC,GAAG,CAAC,2BAAQ,CAAC,EAAE,CAAC;YAC3D,IAAI,iBAAiB,CAAC,kBAAkB,EAAE,CAAC;gBACzC,iBAAiB,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,IAAI,kBAAkB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAChC,iBAAiB,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,SAAgB,oBAAoB,CAAC,IAAY,EAAE,GAAwB,EAAE,UAAiC;IAC5G,0DAA0D;IAC1D,yFAAyF;IACzF,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,OAAO;IACT,CAAC;IACD,uCAAuC;IACvC,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO;IACT,CAAC;IACD,sDAAsD;IACtD,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,KAAK,yBAAM,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,KAAK,cAAI,CAAC,MAAM,EAAE,CAAC;QACtF,OAAO;IACT,CAAC;IACD,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAOD,SAAgB,qBAAqB,CAAC,YAA0B;IAC9D;;;;;MAKE;IACF,OAAO,IAAA,eAAK,EAAC,IAAA,yCAAiC,EAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrG,CAAC;AAED,SAAS,8BAA8B,CACrC,iBAAoC,EACpC,uBAA+B,EAC/B,kBAA0B;IAE1B,QAAQ,iBAAiB,EAAE,CAAC;QAC1B,KAAK,yBAAiB,CAAC,QAAQ;YAC7B,OAAO,CAAC,GAAG,uBAAuB,IAAI,kBAAkB,EAAE,CAAC,CAAC;QAC9D;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,6BAA6B,CACpC,EAAwB,EACxB,sBAA2C,EAC3C,QAAgB,EAChB,kBAA0B,EAC1B,iBAAoC,EACpC,uBAA+B;IAE/B,mFAAmF;IACnF,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,IAAA,iBAAS,EAAC,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC,CAAC;IAChE,IAAI,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3B,OAAO,EAAE,YAAY,EAAE,IAAA,uCAA8B,EAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;IAC3E,CAAC;IACD,MAAM,WAAW,GAAkD,CAAC,sBAAsB,CAAC,CAAC;IAC5F,MAAM,aAAa,GAAkB,EAAE,CAAC;IACxC,MAAM,oBAAoB,GAAG,8BAA8B,CACzD,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,CACnB,CAAC;IACF,MAAM,SAAS,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACvC,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC5C,IAAI,YAAY,CAAC;IACjB,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;IACtB,IAAI,wBAAwB,GAAG,IAAI,CAAC;IACpC,IAAI,aAAa,GAAG,kBAAkB,CAAC;IACvC,IAAA,eAAK,EAAC,YAAY,EAAE;QAClB,QAAQ,EAAE;YACR,KAAK;gBACH,OAAO,KAAK,CAAC;YACf,CAAC;SACF;QACD,KAAK,EAAE;YACL,KAAK,CAAC,IAAI;gBACR,MAAM,UAAU,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC7C,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC;gBACvC,IAAI,UAAU,CAAC,IAAI,KAAK,cAAI,CAAC,qBAAqB,EAAE,CAAC;oBACnD,YAAY,GAAG,IAAA,4CAAmC,EAAC,QAAQ,EAAE,oBAAoB,EAAE,cAAc,CAAC,CAAC;oBACnG,OAAO,eAAK,CAAC;gBACf,CAAC;gBACD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBAClC,MAAM,kBAAkB,GAAG,GAAG,cAAc,IAAI,SAAS,EAAE,CAAC;gBAC5D,EAAE,CAAC,8BAA8B,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBAC7D,+EAA+E;gBAC/E,IAAI,wBAAwB,EAAE,CAAC;oBAC7B,YAAY,GAAG,IAAA,wCAA+B,EAC5C,QAAQ,EACR,oBAAoB,EACpB,cAAc,EACd,IAAA,wBAAgB,EAAC,UAAU,CAAC,IAAI,CAAC,CAClC,CAAC;oBACF,OAAO,eAAK,CAAC;gBACf,CAAC;gBACD,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC9C,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC1B,aAAa,GAAG,SAAS,CAAC;gBAC1B,MAAM,SAAS,GAAG,UAAU,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACjE,sDAAsD;gBACtD,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,YAAY,GAAG,IAAA,6CAAoC,EAAC,QAAQ,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;oBACzF,OAAO,eAAK,CAAC;gBACf,CAAC;gBACD,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC/C,YAAY,GAAG,IAAA,6CAAoC,EAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;oBAClF,OAAO,eAAK,CAAC;gBACf,CAAC;gBACD,aAAa,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC3C,MAAM,UAAU,GAAG,SAAS,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;gBAC3E,MAAM,aAAa,GAAG,IAAA,8BAAwB,EAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpE,qCAAqC;gBACrC,MAAM,aAAa,GAAG,EAAE,CAAC,8BAA8B,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBAC3E,8CAA8C;gBAC9C,IACE,wBAAY,CAAC,GAAG,CAAC,aAAa,CAAC;oBAC/B,aAAa,EAAE,IAAI,KAAK,cAAI,CAAC,sBAAsB;oBACnD,aAAa,EAAE,IAAI,KAAK,cAAI,CAAC,oBAAoB,EACjD,CAAC;oBACD,IAAI,iBAAiB,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;wBAC9C,IAAI,EAAE,CAAC,oBAAoB,EAAE,CAAC;4BAC5B,EAAE,CAAC,MAAM,CAAC,IAAI,CACZ,IAAA,yCAAgC,EAC9B,GAAG,uBAAuB,IAAI,kBAAkB,EAAE,EAClD,EAAE,CAAC,YAAY,EACf,kBAAkB,EAClB,QAAQ,EACR,iBAAiB,CAClB,CACF,CAAC;wBACJ,CAAC;6BAAM,CAAC;4BACN;;iCAEK;4BACL,EAAE,CAAC,QAAQ,CAAC,IAAI,CACd,IAAA,6CAAkC,EAChC,GAAG,uBAAuB,IAAI,kBAAkB,EAAE,EAClD,EAAE,CAAC,YAAY,EACf,kBAAkB,EAClB,QAAQ,EACR,iBAAiB,CAClB,CACF,CAAC;wBACJ,CAAC;wBACD,OAAO;oBACT,CAAC;oBACD,MAAM,oBAAoB,GAAG,IAAA,yBAAiB,EAC5C,EAAE,CAAC,iCAAiC,EACpC,kBAAkB,EAClB,+BAAuB,CACxB,CAAC;oBACF,MAAM,iBAAiB,GAAG,IAAA,+CAAwB,EAAC;wBACjD,oBAAoB,EAAE,CAAC,GAAG,oBAAoB,CAAC;wBAC/C,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC;qBAC1B,CAAC,CAAC;oBACH,iBAAiB,KAAK,yBAAiB,CAAC,QAAQ;wBAC9C,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC;wBACzD,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBAC5D,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,+CAA+C;oBAC/C,YAAY,GAAG,IAAA,0CAAiC,EAAC,QAAQ,EAAE,kBAAkB,EAAE,aAAa,CAAC,CAAC;oBAC9F,OAAO,eAAK,CAAC;gBACf,CAAC;gBACD,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,IAAI,GAAG,IAAA,yBAAiB,EAC5B,EAAE,CAAC,iCAAiC,EACpC,kBAAkB,EAClB,+BAAuB,CACxB,CAAC;oBACF,QAAQ,iBAAiB,EAAE,CAAC;wBAC1B,KAAK,yBAAiB,CAAC,QAAQ;4BAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAA,+CAAwB,EAAC;gCACvB,oBAAoB,EAAE,CAAC,GAAG,oBAAoB,CAAC;gCAC/C,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC;6BAC1B,CAAC,CACH,CAAC;4BACF,MAAM;wBACR;4BACE,MAAM;oBACV,CAAC;oBACD,iBAAiB,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBAC5C,CAAC;gBACD,IACE,aAAa,CAAC,IAAI,KAAK,cAAI,CAAC,sBAAsB;oBAClD,aAAa,CAAC,IAAI,KAAK,cAAI,CAAC,yBAAyB;oBACrD,aAAa,CAAC,IAAI,KAAK,cAAI,CAAC,qBAAqB,EACjD,CAAC;oBACD,wBAAwB,GAAG,IAAI,CAAC;oBAChC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAChC,OAAO;gBACT,CAAC;YACH,CAAC;YACD,KAAK;gBACH,iBAAiB,CAAC,MAAM,CAAC,oBAAoB,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3D,SAAS,CAAC,GAAG,EAAE,CAAC;YAClB,CAAC;SACF;QACD,cAAc,EAAE;YACd,KAAK,CAAC,IAAI;gBACR,MAAM,UAAU,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC7C,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC;gBACvC,MAAM,gBAAgB,GACpB,oBAAoB,CAAC,MAAM,GAAG,CAAC;oBAC7B,CAAC,CAAC,sBAAsB,CAAC,IAAI;oBAC7B,CAAC,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC5D,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;oBACxB,YAAY,GAAG,IAAA,uDAA8C,EAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;oBAC1F,OAAO,eAAK,CAAC;gBACf,CAAC;gBACD,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;gBACxD,+CAA+C;gBAC/C,IAAI,iBAAiB,KAAK,cAAc,EAAE,CAAC;oBACzC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAC7B,wBAAwB,GAAG,IAAI,CAAC;oBAChC,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,IAAA,sBAAc,EAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACrC,YAAY,GAAG,IAAA,8CAAqC,EAClD,QAAQ,EACR,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,CACf,CAAC;oBACF,OAAO,eAAK,CAAC;gBACf,CAAC;gBACD,MAAM,qBAAqB,GAAG,EAAE,CAAC,8BAA8B,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBACvF,IAAI,CAAC,qBAAqB,EAAE,CAAC;oBAC3B,YAAY,GAAG,IAAA,uDAA8C,EAC3D,QAAQ,EACR,oBAAoB,EACpB,cAAc,EACd,iBAAiB,CAClB,CAAC;oBACF,OAAO,eAAK,CAAC;gBACf,CAAC;gBACD,wBAAwB,GAAG,IAAI,CAAC;gBAChC,QAAQ,qBAAqB,CAAC,IAAI,EAAE,CAAC;oBACnC,KAAK,cAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;wBACpC,IAAI,CAAC,qBAAqB,CAAC,6BAA6B,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;4BAC7E,MAAM;wBACR,CAAC;wBACD,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;wBACxC,OAAO;oBACT,CAAC;oBACD,KAAK,cAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;wBACjC,MAAM,iBAAiB,GAAG,EAAE,CAAC,mCAAmC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;wBACrF,IAAI,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;4BACpE,MAAM;wBACR,CAAC;wBACD,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;wBACxC,OAAO;oBACT,CAAC;oBACD,KAAK,cAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;wBAChC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;wBACxC,OAAO;oBACT,CAAC;oBACD,OAAO,CAAC,CAAC,CAAC;wBACR,YAAY,GAAG,IAAA,2DAAkD,EAC/D,QAAQ,EACR,oBAAoB,EACpB,cAAc,EACd,iBAAiB,EACjB,IAAA,wBAAgB,EAAC,qBAAqB,CAAC,IAAI,CAAC,CAC7C,CAAC;wBACF,OAAO,eAAK,CAAC;oBACf,CAAC;gBACH,CAAC;gBACD,YAAY,GAAG,IAAA,uDAA8C,EAC3D,QAAQ,EACR,oBAAoB,EACpB,iBAAiB,EACjB,IAAA,wBAAgB,EAAC,UAAU,CAAC,IAAI,CAAC,EACjC,cAAc,CACf,CAAC;gBACF,OAAO,eAAK,CAAC;YACf,CAAC;SACF;QACD,YAAY,EAAE;YACZ,KAAK;gBACH,IAAI,CAAC,wBAAwB,EAAE,CAAC;oBAC9B,MAAM,UAAU,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;oBAC7C,IAAI,UAAU,CAAC,IAAI,KAAK,cAAI,CAAC,qBAAqB,EAAE,CAAC;wBACnD,sBAAsB;wBACtB,YAAY,GAAG,IAAA,gDAAuC,EAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;wBAChF,OAAO,eAAK,CAAC;oBACf,CAAC;oBACD,MAAM,SAAS,GAAG,UAAU,CAAC,oBAAoB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBACrE,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,YAAY,GAAG,IAAA,6CAAoC,EAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;wBAC9F,OAAO,eAAK,CAAC;oBACf,CAAC;oBACD,MAAM,kBAAkB,GAAG,IAAA,8BAAwB,EAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACzE,kGAAkG;oBAClG,MAAM,aAAa,GAAG,EAAE,CAAC,8BAA8B,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;oBAChF,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,cAAI,CAAC,sBAAsB,CAAC;oBACnF,YAAY,GAAG,IAAA,kDAAyC,EACtD,QAAQ,EACR,oBAAoB,EACpB,kBAAkB,EAClB,IAAA,wBAAgB,EAAC,SAAS,CAAC,CAC5B,CAAC;oBACF,OAAO,eAAK,CAAC;gBACf,CAAC;gBACD,YAAY,IAAI,CAAC,CAAC;gBAClB,wBAAwB,GAAG,KAAK,CAAC;gBACjC,IAAI,YAAY,GAAG,CAAC,IAAI,YAAY,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;oBAC3D,YAAY,GAAG,IAAA,gDAAuC,EAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;oBAChF,OAAO,eAAK,CAAC;gBACf,CAAC;gBACD,aAAa,CAAC,IAAI,CAAC,IAAI,GAAG,EAAU,CAAC,CAAC;YACxC,CAAC;YACD,KAAK;gBACH,IAAI,wBAAwB,EAAE,CAAC;oBAC7B,MAAM,UAAU,GAAG,WAAW,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;oBACjD,YAAY,GAAG,IAAA,wCAA+B,EAC5C,QAAQ,EACR,oBAAoB,EACpB,UAAU,CAAC,IAAI,EACf,IAAA,wBAAgB,EAAC,UAAU,CAAC,IAAI,CAAC,CAClC,CAAC;oBACF,wBAAwB,GAAG,KAAK,CAAC;gBACnC,CAAC;gBACD,mFAAmF;gBACnF,YAAY,IAAI,CAAC,CAAC;gBAClB,WAAW,CAAC,GAAG,EAAE,CAAC;gBAClB,aAAa,CAAC,GAAG,EAAE,CAAC;YACtB,CAAC;SACF;KACF,CAAC,CAAC;IACH,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,EAAE,YAAY,EAAE,CAAC;IAC1B,CAAC;IACD,OAAO,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,YAAY,EAAE,qBAAqB,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;AACjH,CAAC;AAED,SAAgB,oBAAoB,CAClC,EAAwB,EACxB,gBAAqC,EACrC,0BAAgD,EAChD,UAAuB;IAEvB,MAAM,iBAAiB,GAAG,EAAE,CAAC,6BAA6B,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACtF,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC;IAC7C,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,MAAM,cAAc,GAAiC,EAAE,CAAC;IACxD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,MAAM,mBAAmB,GAAuB,EAAE,CAAC;IACnD,sGAAsG;IACtG,MAAM,cAAc,GAAG,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACjH,MAAM,SAAS,GAAG,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,KAAK,MAAM,CAAC,QAAQ,EAAE,qBAAqB,CAAC,IAAI,0BAA0B,EAAE,CAAC;QAC3E,mFAAmF;QACnF,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,IAAA,iBAAS,EAAC,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC,CAAC;QAChE,IAAI,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;YAC3B,aAAa,CAAC,IAAI,CAAC,IAAA,uCAA8B,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;YACpE,SAAS;QACX,CAAC;QACD,MAAM,qBAAqB,GAA0B,CAAC,gBAAgB,CAAC,CAAC;QACxE,MAAM,aAAa,GAAuB,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAkB,EAAE,CAAC;QACtC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC3C,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;QACtB,IAAI,wBAAwB,GAAG,IAAI,CAAC;QACpC,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,IAAA,eAAK,EAAC,YAAY,EAAE;YAClB,QAAQ,EAAE;gBACR,KAAK,CAAC,IAAI;oBACR,mEAAmE;oBACnE,mFAAmF;oBACnF,aAAa,CAAC,IAAI,CAChB,IAAA,uCAA8B,EAC5B,QAAQ,EACR,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC,IAAI,IAAI,aAAa,EAAE,EAC9D,IAAI,CAAC,IAAI,CAAC,KAAK,CAChB,CACF,CAAC;oBACF,OAAO,eAAK,CAAC;gBACf,CAAC;aACF;YACD,KAAK,EAAE;gBACL,KAAK,CAAC,IAAI;oBACR,MAAM,eAAe,GAAG,qBAAqB,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;oBAChE,MAAM,UAAU,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;oBACvD,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC;oBACvC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;oBAClC,MAAM,WAAW,GAAG,GAAG,cAAc,IAAI,SAAS,EAAE,CAAC;oBACrD,EAAE,CAAC,8BAA8B,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;oBACtD,+EAA+E;oBAC/E,IAAI,wBAAwB,EAAE,CAAC;wBAC7B,aAAa,CAAC,IAAI,CAChB,IAAA,wCAA+B,EAC7B,QAAQ,EACR,CAAC,GAAG,eAAe,CAAC,IAAI,IAAI,aAAa,EAAE,CAAC,EAC5C,cAAc,EACd,IAAA,wBAAgB,EAAC,UAAU,CAAC,IAAI,CAAC,CAClC,CACF,CAAC;wBACF,OAAO,eAAK,CAAC;oBACf,CAAC;oBACD,aAAa,GAAG,SAAS,CAAC;oBAC1B,MAAM,SAAS,GAAG,UAAU,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBACjE,sDAAsD;oBACtD,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,aAAa,CAAC,IAAI,CAAC,IAAA,6CAAoC,EAAC,QAAQ,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC;wBAC9F,OAAO,eAAK,CAAC;oBACf,CAAC;oBACD,sCAAsC;oBACtC,IAAI,SAAS,CAAC,0BAA0B,CAAC,IAAI,EAAE,CAAC;wBAC9C,aAAa,CAAC,IAAI,CAAC,IAAA,2CAAkC,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;wBAC9E,OAAO,eAAK,CAAC;oBACf,CAAC;oBACD,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC/C,aAAa,CAAC,IAAI,CAAC,IAAA,6CAAoC,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;wBAChF,OAAO,eAAK,CAAC;oBACf,CAAC;oBACD,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC5B,qEAAqE;oBACrE,SAAS,CAAC,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;oBAC/D,aAAa,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC3C;;4CAEwB;oBACxB,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;wBACvB,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;wBAC7B,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC5B,CAAC;yBAAM,CAAC;wBACN,MAAM,uBAAuB,GAAG,EAAE,CAAC,iCAAiC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;wBACzF,IAAI,CAAC,uBAAuB,EAAE,CAAC;4BAC7B,aAAa,CAAC,IAAI,CAAC,IAAA,6CAAoC,EAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;4BAC9F,OAAO,eAAK,CAAC;wBACf,CAAC;wBACD,uBAAuB,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBACpD,CAAC;oBACD,IAAA,yBAAiB,EAAC,EAAE,CAAC,6BAA6B,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,GAAG,EAAU,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC5G,MAAM,aAAa,GAAG,IAAA,8BAAwB,EAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACpE,8CAA8C;oBAC9C,IAAI,wBAAY,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;wBACpC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,yBAAM,CAAC,CAAC,CAAC;wBAC/C,WAAW,CAAC,GAAG,EAAE,CAAC;wBAClB,OAAO;oBACT,CAAC;oBACD,qCAAqC;oBACrC,MAAM,aAAa,GAAG,EAAE,CAAC,8BAA8B,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBAC3E,IAAI,CAAC,aAAa,EAAE,CAAC;wBACnB,+CAA+C;wBAC/C,aAAa,CAAC,IAAI,CAAC,IAAA,0CAAiC,EAAC,QAAQ,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;wBAC5F,OAAO,eAAK,CAAC;oBACf,CAAC;oBACD,IAAI,aAAa,CAAC,IAAI,KAAK,cAAI,CAAC,sBAAsB,EAAE,CAAC;wBACvD,wBAAwB,GAAG,IAAI,CAAC;wBAChC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;wBAC1C,OAAO;oBACT,CAAC;oBACD,uDAAuD;oBACvD,IAAI,IAAA,sBAAc,EAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;wBACvC,aAAa,CAAC,IAAI,CAChB,IAAA,8CAAqC,EACnC,QAAQ,EACR,WAAW,EACX,aAAa,EACb,IAAA,wBAAgB,EAAC,aAAa,CAAC,IAAI,CAAC,CACrC,CACF,CAAC;wBACF,OAAO,eAAK,CAAC;oBACf,CAAC;oBACD,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,yBAAM,CAAC,CAAC,CAAC;oBAC/C,WAAW,CAAC,GAAG,EAAE,CAAC;gBACpB,CAAC;aACF;YACD,cAAc,EAAE;gBACd,KAAK;oBACH,aAAa,CAAC,IAAI,CAAC,6CAAoC,CAAC,CAAC;oBACzD,OAAO,eAAK,CAAC;gBACf,CAAC;aACF;YACD,YAAY,EAAE;gBACZ,KAAK;oBACH,IAAI,CAAC,wBAAwB,EAAE,CAAC;wBAC9B,MAAM,UAAU,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;wBACvD,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC;wBACvC,MAAM,gBAAgB,GAAG,GAAG,cAAc,IAAI,aAAa,EAAE,CAAC;wBAC9D,0CAA0C;wBAC1C,MAAM,SAAS,GAAG,UAAU,CAAC,oBAAoB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;wBACrE,IAAI,CAAC,SAAS,EAAE,CAAC;4BACf,aAAa,CAAC,IAAI,CAAC,IAAA,6CAAoC,EAAC,QAAQ,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAC;4BACpG,OAAO,eAAK,CAAC;wBACf,CAAC;wBACD,MAAM,kBAAkB,GAAG,IAAA,8BAAwB,EAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACzE,kGAAkG;wBAClG,MAAM,aAAa,GAAG,EAAE,CAAC,8BAA8B,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;wBAChF,MAAM,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,cAAI,CAAC,sBAAsB,CAAC;wBACvF,aAAa,CAAC,IAAI,CAChB,IAAA,kDAAyC,EACvC,QAAQ,EACR,CAAC,gBAAgB,CAAC,EAClB,kBAAkB,EAClB,IAAA,wBAAgB,EAAC,aAAa,CAAC,CAChC,CACF,CAAC;wBACF,OAAO,eAAK,CAAC;oBACf,CAAC;oBACD,YAAY,IAAI,CAAC,CAAC;oBAClB,wBAAwB,GAAG,KAAK,CAAC;oBACjC,IAAI,YAAY,GAAG,CAAC,IAAI,YAAY,IAAI,qBAAqB,CAAC,MAAM,EAAE,CAAC;wBACrE,aAAa,CAAC,IAAI,CAAC,IAAA,gDAAuC,EAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;wBACrF,OAAO,eAAK,CAAC;oBACf,CAAC;oBACD,aAAa,CAAC,IAAI,CAAC,IAAI,GAAG,EAAU,CAAC,CAAC;gBACxC,CAAC;gBACD,KAAK;oBACH,IAAI,wBAAwB,EAAE,CAAC;wBAC7B,MAAM,eAAe,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;wBAC5D,MAAM,mBAAmB,GAAG,eAAe,CAAC,IAAI,CAAC;wBACjD,MAAM,UAAU,GAAG,qBAAqB,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;wBAC3D,MAAM,gBAAgB,GAAG,GAAG,mBAAmB,IAAI,aAAa,EAAE,CAAC;wBACnE,aAAa,CAAC,IAAI,CAChB,IAAA,wCAA+B,EAC7B,QAAQ,EACR,CAAC,gBAAgB,CAAC,EAClB,UAAU,CAAC,IAAI,EACf,IAAA,wBAAgB,EAAC,UAAU,CAAC,IAAI,CAAC,CAClC,CACF,CAAC;wBACF,wBAAwB,GAAG,KAAK,CAAC;oBACnC,CAAC;oBACD,mFAAmF;oBACnF,YAAY,IAAI,CAAC,CAAC;oBAClB,qBAAqB,CAAC,GAAG,EAAE,CAAC;oBAC5B,aAAa,CAAC,GAAG,EAAE,CAAC;gBACtB,CAAC;aACF;SACF,CAAC,CAAC;QACH,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,SAAS;QACX,CAAC;QACD,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;QAC/D,cAAc,CAAC,IAAI,CAAC;YAClB,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,kBAAkB;YAChC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClE,CAAC,CAAC;QACH,SAAS,CAAC,kBAAkB,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACrD,IAAI,qBAAqB,EAAE,CAAC;YAC1B,SAAS;QACX,CAAC;QACD,cAAc,EAAE,2BAA2B,CAAC,kBAAkB,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;QACjF,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;QACzB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAA,kCAAyB,EAAC,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC;QACzE,OAAO;IACT,CAAC;IACD,OAAO;IACP,uEAAuE;IACvE,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;QAC1B,OAAO,cAAc,CAAC;IACxB,CAAC;AACH,CAAC;AAOD,SAAS,iBAAiB,CACxB,OAA6B,EAC7B,iBAAoC,EACpC,UAA+B,EAC/B,SAAiB,EACjB,cAAsB;IAEtB,IAAI,iBAAiB,KAAK,yBAAiB,CAAC,QAAQ,EAAE,CAAC;QACrD,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC;IAC5C,CAAC;IACD,MAAM,SAAS,GAAG,IAAA,uBAAe,EAC/B,UAAU,CAAC,oBAAoB,EAC/B,SAAS,EACT,GAAG,cAAc,uBAAuB,CACzC,CAAC;IACF,MAAM,kBAAkB,GAAG,IAAA,8BAAwB,EAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEzE,MAAM,aAAa,GAAG,OAAO,CAAC,8BAA8B,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACrF,iCAAiC;IACjC,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO;YACL,WAAW,EAAE,IAAA,qCAA4B,EAAC,GAAG,cAAc,IAAI,SAAS,EAAE,EAAE,kBAAkB,CAAC;SAChG,CAAC;IACJ,CAAC;IACD,IAAI,aAAa,CAAC,IAAI,KAAK,cAAI,CAAC,yBAAyB,IAAI,aAAa,CAAC,IAAI,KAAK,cAAI,CAAC,sBAAsB,EAAE,CAAC;QAChH,OAAO;YACL,WAAW,EAAE,IAAA,iDAAwC,EAAC,GAAG,cAAc,IAAI,SAAS,EAAE,EAAE,kBAAkB,CAAC;SAC5G,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,CAAC;AAC/C,CAAC;AAED,SAAS,0BAA0B,CACjC,EAAwB,EACxB,UAA+B,EAC/B,mBAAwC,EACxC,iBAAoC;IAEpC,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,MAAM,cAAc,GAAiC,EAAE,CAAC;IACxD,MAAM,cAAc,GAAG,IAAA,yBAAiB,EAAC,UAAU,CAAC,CAAC;IACrD,KAAK,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,mBAAmB,EAAE,CAAC;QACxD;;;UAGE;QACF,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,GAAG,iBAAiB,CAC3D,EAAE,EACF,iBAAiB,EACjB,UAAU,EACV,SAAS,EACT,cAAc,CACf,CAAC;QACF,MAAM,WAAW,GAAG,GAAG,cAAc,IAAI,SAAS,EAAE,CAAC;QACrD,IAAI,WAAW,EAAE,CAAC;YAChB,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAChC,SAAS;QACX,CAAC;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QACD,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,6BAA6B,CACnE,EAAE,EACF,kBAAkB,EAClB,QAAQ,EACR,SAAS,EACT,iBAAiB,EACjB,cAAc,CACf,CAAC;QACF,IAAI,YAAY,EAAE,CAAC;YACjB,aAAa,CAAC,IAAI,CAAC,QAAQ,WAAW,KAAK,GAAG,YAAY,CAAC,CAAC;YAC5D,SAAS;QACX,CAAC;QACD,IAAI,aAAa,EAAE,CAAC;YAClB,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACnC,SAAS;QACX,CAAC;QACD,sBAAsB;QACtB,MAAM,IAAA,6CAAoC,EAAC,WAAW,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAA,iDAAwC,EAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC,CAAC;QAC3F,OAAO;IACT,CAAC;IACD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,cAAc,CAAC;IACxB,CAAC;AACH,CAAC;AAED,SAAgB,iDAAiD,CAC/D,EAAwB,EACxB,UAA+B,EAC/B,YAA0B;IAE1B,MAAM,iBAAiB,GAAG,IAAA,uBAAe,EACvC,EAAE,CAAC,iCAAiC,EACpC,IAAA,yBAAiB,EAAC,UAAU,CAAC,EAC7B,mCAAmC,CACpC,CAAC;IACF,MAAM,QAAQ,GAAG,0BAA0B,CAAC,EAAE,EAAE,UAAU,EAAE,YAAY,CAAC,QAAQ,EAAE,yBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC/G,IAAI,QAAQ,EAAE,CAAC;QACb,iBAAiB,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACxC,CAAC;IACD,MAAM,QAAQ,GAAG,0BAA0B,CAAC,EAAE,EAAE,UAAU,EAAE,YAAY,CAAC,QAAQ,EAAE,yBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC/G,IAAI,QAAQ,EAAE,CAAC;QACb,iBAAiB,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACxC,CAAC;AACH,CAAC;AAED,SAAgB,WAAW,CAAC,QAAgB,EAAE,iBAAqC;IACjF,OAAO,QAAQ,KAAK,wBAAK,IAAI,iBAAiB,KAAK,2BAAiB,CAAC,KAAK,CAAC;AAC7E,CAAC;AAED,SAAgB,kCAAkC,CAChD,KAAa,EACb,0BAAuD,EACvD,aAAuB;IAEvB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,4BAAgB,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,SAAS;QACX,CAAC;QACD,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,aAAa,CAAC,IAAI,CAAC,IAAA,mDAA0C,EAAC,YAAY,CAAC,CAAC,CAAC;IAC/E,CAAC;IACD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,aAAa,CAAC,IAAI,CAAC,IAAA,iDAAwC,EAAC,UAAU,CAAC,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,SAAgB,kCAAkC;IAChD,OAAO,IAAI,GAAG,CAAkC;QAC9C,CAAC,gCAAa,EAAE,yDAA6B,CAAC;QAC9C,CAAC,oCAAiB,EAAE,6DAAiC,CAAC;QACtD,CAAC,wCAAqB,EAAE,iEAAqC,CAAC;QAC9D,CAAC,+CAA4B,EAAE,wEAA4C,CAAC;QAC5E,CAAC,6BAAU,EAAE,sDAA0B,CAAC;QACxC,CAAC,qCAAkB,EAAE,yDAA6B,CAAC;QACnD,CAAC,uCAAoB,EAAE,2DAA+B,CAAC;QACvD,CAAC,oCAAiB,EAAE,wDAA4B,CAAC;QACjD,CAAC,oCAAiB,EAAE,wDAA4B,CAAC;QACjD,CAAC,oCAAiB,EAAE,wDAA4B,CAAC;QACjD,CAAC,sCAAmB,EAAE,0DAA8B,CAAC;QACrD,CAAC,0BAAO,EAAE,mDAAuB,CAAC;QAClC,CAAC,2BAAQ,EAAE,oDAAwB,CAAC;QACpC,CAAC,+BAAY,EAAE,wDAA4B,CAAC;QAC5C,CAAC,mCAAgB,EAAE,4DAAgC,CAAC;QACpD,CAAC,sBAAG,EAAE,+CAAmB,CAAC;QAC1B,CAAC,uBAAI,EAAE,gDAAoB,CAAC;QAC5B,CAAC,2BAAQ,EAAE,oDAAwB,CAAC;QACpC,CAAC,2BAAQ,EAAE,oDAAwB,CAAC;QACpC,CAAC,2BAAQ,EAAE,oDAAwB,CAAC;QACpC,CAAC,kCAAe,EAAE,2DAA+B,CAAC;QAClD,CAAC,4BAAS,EAAE,qDAAyB,CAAC;QACtC,CAAC,+BAAY,EAAE,wDAA4B,CAAC;QAC5C,CAAC,sCAAmB,EAAE,+DAAmC,CAAC;QAC1D,CAAC,sBAAG,EAAE,+CAAmB,CAAC;KAC3B,CAAC,CAAC;AACL,CAAC"}