runlify 0.0.252 → 0.0.253

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 (21) hide show
  1. package/build/projectsGeneration/builders/SystemMetaBuilder.js +3 -1
  2. package/build/projectsGeneration/generateEntity.js +193 -154
  3. package/build/projectsGeneration/generators/fileTemplates/back/services/entity/class.js +11 -39
  4. package/build/projectsGeneration/generators/fileTemplates/back/services/entity/config.js +49 -19
  5. package/build/projectsGeneration/generators/fileTemplates/back/services/serviceConstrictors.js +3 -5
  6. package/build/projectsGeneration/types.js +1 -1
  7. package/build/projectsGeneration/utils.js +16 -14
  8. package/build/types/projectsGeneration/generators/fileTemplates/back/services/entity/class.d.ts +1 -1
  9. package/build/types/projectsGeneration/generators/fileTemplates/back/services/entity/config.d.ts +2 -1
  10. package/build/types/projectsGeneration/utils.d.ts +2 -1
  11. package/package.json +1 -1
  12. package/build/projectsGeneration/generators/fileTemplates/back/services/entity/additionalClass.js +0 -10
  13. package/build/projectsGeneration/generators/fileTemplates/back/services/entity/additionalMethods.js +0 -10
  14. package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/getPostOperations.js +0 -51
  15. package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/getRegistryEntries.js +0 -11
  16. package/build/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/getUnPostOperations.js +0 -19
  17. package/build/types/projectsGeneration/generators/fileTemplates/back/services/entity/additionalClass.d.ts +0 -2
  18. package/build/types/projectsGeneration/generators/fileTemplates/back/services/entity/additionalMethods.d.ts +0 -2
  19. package/build/types/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/getPostOperations.d.ts +0 -3
  20. package/build/types/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/getRegistryEntries.d.ts +0 -2
  21. package/build/types/projectsGeneration/generators/fileTemplates/back/services/entity/hooks/getUnPostOperations.d.ts +0 -3
@@ -62,7 +62,6 @@ var DefaultActions_1 = require("./generators/fileTemplates/ui/pages/EntityShow/D
62
62
  var utils_1 = require("./utils");
63
63
  var fs_jetpack_1 = require("fs-jetpack");
64
64
  var additionalTabs_1 = require("./generators/fileTemplates/ui/pages/EntityShow/additionalTabs");
65
- var additionalMethods_1 = require("./generators/fileTemplates/back/services/entity/additionalMethods");
66
65
  var additionalResolvers_1 = require("./generators/fileTemplates/back/graph/additionalResolvers");
67
66
  var entityPermissionToGraphqlTmpl_1 = require("./generators/fileTemplates/back/graph/entityPermissionToGraphqlTmpl");
68
67
  var entityAdditionalPermissionToGraphqlTmpl_1 = require("./generators/fileTemplates/back/graph/entityAdditionalPermissionToGraphqlTmpl");
@@ -77,9 +76,6 @@ var beforeCreate_1 = require("./generators/fileTemplates/back/services/entity/ho
77
76
  var beforeUpdate_1 = require("./generators/fileTemplates/back/services/entity/hooks/beforeUpdate");
78
77
  var afterUpdate_1 = require("./generators/fileTemplates/back/services/entity/hooks/afterUpdate");
79
78
  var afterDelete_1 = require("./generators/fileTemplates/back/services/entity/hooks/afterDelete");
80
- var getUnPostOperations_1 = require("./generators/fileTemplates/back/services/entity/hooks/getUnPostOperations");
81
- var getRegistryEntries_1 = require("./generators/fileTemplates/back/services/entity/hooks/getRegistryEntries");
82
- var getPostOperations_1 = require("./generators/fileTemplates/back/services/entity/hooks/getPostOperations");
83
79
  var beforeDelete_1 = require("./generators/fileTemplates/back/services/entity/hooks/beforeDelete");
84
80
  var beforeUpsert_1 = require("./generators/fileTemplates/back/services/entity/hooks/beforeUpsert");
85
81
  var changeListFilter_1 = require("./generators/fileTemplates/back/services/entity/hooks/changeListFilter");
@@ -90,169 +86,212 @@ var initBuiltInHooks_1 = require("./generators/fileTemplates/back/services/entit
90
86
  var tenantIdRequiredHooks_1 = require("./generators/fileTemplates/back/services/entity/hooks/tenantIdRequiredHooks");
91
87
  var config_1 = require("./generators/fileTemplates/back/services/entity/config");
92
88
  var class_1 = require("./generators/fileTemplates/back/services/entity/class");
93
- var additionalClass_1 = require("./generators/fileTemplates/back/services/entity/additionalClass");
94
89
  var generateEntity = function (entityWideGenerationArgs) { return __awaiter(void 0, void 0, void 0, function () {
95
- var system, allEntities, allSumRegistries, allInfoRegistries, entity, allLinks, options, prjBackSrcPrefixedDir, prjDetachedBackSrcDir, serviceName, serviceDir, oldServicePath, configPath, baseClassPath, classPath, config, baseClassService, classService, generatedService, hooksDir, graphServiceDir, prjUiSrcPrefixedDir, prjDetachedUiSrcDir, widgetsDir, countWdgetsDir, generatedResources, toLinks, pagesDir, entityShowDir, mainTab, defaultMainTab, additionalTabs, _i, toLinks_1, link, tabsDir, entity_1, componentName, dependencyTab, entityCreateDir, entityEditDir, entityListDir, listWdgetsDir, generatedResources;
96
- return __generator(this, function (_a) {
97
- switch (_a.label) {
90
+ var allEntities, allSumRegistries, allInfoRegistries, entity, allLinks, options, prjBackSrcPrefixedDir, prjDetachedBackSrcDir, serviceName, serviceDir, servicePath, configPath, aditionalsMethodsClassPath, additionalsClassText, searchString, importsText, first, indexEndOfString, index, beforeFromAdditionalMethods, codeFromAdditionalMethods, generatedClassService, generatedClassService, config, generatedService, hooksDir, graphServiceDir, prjUiSrcPrefixedDir, prjDetachedUiSrcDir, widgetsDir, countWdgetsDir, generatedResources, toLinks, pagesDir, entityShowDir, mainTab, defaultMainTab, additionalTabs, _i, toLinks_1, link, tabsDir, entity_1, componentName, dependencyTab, entityCreateDir, entityEditDir, entityListDir, listWdgetsDir, generatedResources;
91
+ var _a, _b, _c;
92
+ return __generator(this, function (_d) {
93
+ switch (_d.label) {
98
94
  case 0:
99
- system = entityWideGenerationArgs.system, allEntities = entityWideGenerationArgs.allEntities, allSumRegistries = entityWideGenerationArgs.allSumRegistries, allInfoRegistries = entityWideGenerationArgs.allInfoRegistries, entity = entityWideGenerationArgs.entity, allLinks = entityWideGenerationArgs.allLinks, options = entityWideGenerationArgs.options;
95
+ allEntities = entityWideGenerationArgs.allEntities, allSumRegistries = entityWideGenerationArgs.allSumRegistries, allInfoRegistries = entityWideGenerationArgs.allInfoRegistries, entity = entityWideGenerationArgs.entity, allLinks = entityWideGenerationArgs.allLinks, options = entityWideGenerationArgs.options;
100
96
  prjBackSrcPrefixedDir = '';
101
97
  prjDetachedBackSrcDir = (0, path_1.join)(options.detachedBackProject, 'src');
102
98
  // if (options.detachedBackProject) {
103
99
  prjBackSrcPrefixedDir = (0, path_1.join)(prjDetachedBackSrcDir, 'adm');
104
- if (!(options.genPrismaServices && !options.typesOnly)) return [3 /*break*/, 26];
100
+ if (!(options.genPrismaServices && !options.typesOnly)) return [3 /*break*/, 29];
105
101
  serviceName = "".concat((0, cases_1.pascalPlural)(entity.name), "Service");
106
102
  serviceDir = (0, path_1.join)(prjBackSrcPrefixedDir, 'services', serviceName);
107
- oldServicePath = (0, path_1.join)(serviceDir, "".concat(serviceName, ".ts"));
103
+ servicePath = (0, path_1.join)(serviceDir, "".concat(serviceName, ".ts"));
108
104
  configPath = (0, path_1.join)(serviceDir, "config.ts");
109
- baseClassPath = (0, path_1.join)(serviceDir, "Base".concat(serviceName, "Class.ts"));
110
- classPath = (0, path_1.join)(serviceDir, "".concat(serviceName, "Class.ts"));
111
- if (!entityWideGenerationArgs.entity.previewFeatures.includes('classService')) return [3 /*break*/, 4];
112
- config = (0, config_1.configTmpl)(entityWideGenerationArgs);
113
- baseClassService = (0, class_1.prismaServiceBaseClassTmpl)(entityWideGenerationArgs);
114
- classService = (0, additionalClass_1.prismaServiceClassTmpl)(entityWideGenerationArgs);
115
- return [4 /*yield*/, (0, fs_jetpack_1.write)(configPath, config)];
105
+ aditionalsMethodsClassPath = (0, path_1.join)(serviceDir, "".concat(serviceName, "Class.ts"));
106
+ if (!entityWideGenerationArgs.entity.previewFeatures.includes('classService')) return [3 /*break*/, 11];
107
+ if (!(0, fs_jetpack_1.exists)(aditionalsMethodsClassPath)) return [3 /*break*/, 4];
108
+ return [4 /*yield*/, (0, fs_jetpack_1.read)(aditionalsMethodsClassPath)];
116
109
  case 1:
117
- _a.sent();
118
- return [4 /*yield*/, (0, fs_jetpack_1.write)(baseClassPath, baseClassService)];
110
+ additionalsClassText = _d.sent();
111
+ searchString = "export class ".concat(serviceName, "Class extends Base").concat(serviceName, "Class {");
112
+ importsText = '';
113
+ first = true;
114
+ while ((additionalsClassText === null || additionalsClassText === void 0 ? void 0 : additionalsClassText.indexOf('import')) === 0) {
115
+ indexEndOfString = additionalsClassText.indexOf('\n');
116
+ if (!first) {
117
+ importsText += additionalsClassText === null || additionalsClassText === void 0 ? void 0 : additionalsClassText.slice(0, indexEndOfString + 1);
118
+ }
119
+ additionalsClassText = additionalsClassText === null || additionalsClassText === void 0 ? void 0 : additionalsClassText.slice(indexEndOfString + 1);
120
+ first = false;
121
+ }
122
+ index = additionalsClassText === null || additionalsClassText === void 0 ? void 0 : additionalsClassText.indexOf(searchString);
123
+ beforeFromAdditionalMethods = (_a = additionalsClassText === null || additionalsClassText === void 0 ? void 0 : additionalsClassText.slice(0, index)) === null || _a === void 0 ? void 0 : _a.trim();
124
+ codeFromAdditionalMethods = '';
125
+ if (index) {
126
+ codeFromAdditionalMethods = (_c = (_b = additionalsClassText === null || additionalsClassText === void 0 ? void 0 : additionalsClassText.slice(index + searchString.length, (additionalsClassText === null || additionalsClassText === void 0 ? void 0 : additionalsClassText.lastIndexOf('}')) - 1)) === null || _b === void 0 ? void 0 : _b.trim()) !== null && _c !== void 0 ? _c : '';
127
+ }
128
+ generatedClassService = (0, class_1.prismaServiceBaseClassTmpl)(entityWideGenerationArgs, importsText, beforeFromAdditionalMethods, codeFromAdditionalMethods);
129
+ return [4 /*yield*/, (0, fs_jetpack_1.write)(servicePath, generatedClassService)];
119
130
  case 2:
120
- _a.sent();
121
- return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)(classPath, classService)
122
- // await remove(oldServicePath)
123
- ];
131
+ _d.sent();
132
+ return [4 /*yield*/, (0, fs_jetpack_1.remove)(aditionalsMethodsClassPath)];
124
133
  case 3:
125
- _a.sent();
134
+ _d.sent();
126
135
  return [3 /*break*/, 6];
127
136
  case 4:
137
+ generatedClassService = (0, class_1.prismaServiceBaseClassTmpl)(entityWideGenerationArgs);
138
+ // await write(servicePath, generatedClassService) // todo: uncomment for migration
139
+ return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)(servicePath, generatedClassService)];
140
+ case 5:
141
+ // await write(servicePath, generatedClassService) // todo: uncomment for migration
142
+ _d.sent();
143
+ _d.label = 6;
144
+ case 6:
145
+ config = (0, config_1.configTmpl)(entityWideGenerationArgs, allSumRegistries, allInfoRegistries);
146
+ return [4 /*yield*/, (0, fs_jetpack_1.write)(configPath, config)];
147
+ case 7:
148
+ _d.sent();
149
+ return [4 /*yield*/, (0, fs_jetpack_1.remove)((0, path_1.join)(serviceDir, "Base".concat(serviceName, "Class.ts")))];
150
+ case 8:
151
+ _d.sent();
152
+ if (!(0, fs_jetpack_1.exists)((0, path_1.join)(serviceDir, 'additionalMethods.ts'))) return [3 /*break*/, 10];
153
+ return [4 /*yield*/, (0, fs_jetpack_1.renameAsync)((0, path_1.join)(serviceDir, 'additionalMethods.ts'), 'additionalMethods.ts_')];
154
+ case 9:
155
+ _d.sent();
156
+ _d.label = 10;
157
+ case 10: return [3 /*break*/, 13];
158
+ case 11:
128
159
  generatedService = (0, service_1.prismaServiceTmpl)(entityWideGenerationArgs);
129
- return [4 /*yield*/, (0, fs_jetpack_1.write)(oldServicePath, generatedService)
160
+ return [4 /*yield*/, (0, fs_jetpack_1.write)(servicePath, generatedService)
130
161
  // await remove(configPath)
131
162
  // await remove(baseClassPath)
132
163
  ];
133
- case 5:
134
- _a.sent();
135
- _a.label = 6;
136
- case 6: return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(serviceDir, 'additionalMethods.ts'), (0, additionalMethods_1.backAdditionalMethodsTmpl)(entityWideGenerationArgs))];
137
- case 7:
138
- _a.sent();
139
- return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(serviceDir, 'initUserHooks.ts'), (0, initUserHooks_1.initUserHooksTmpl)(entityWideGenerationArgs))];
140
- case 8:
141
- _a.sent();
164
+ case 12:
165
+ _d.sent();
166
+ _d.label = 13;
167
+ case 13: return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(serviceDir, 'initUserHooks.ts'), (0, initUserHooks_1.initUserHooksTmpl)(entityWideGenerationArgs))];
168
+ case 14:
169
+ _d.sent();
142
170
  hooksDir = (0, path_1.join)(serviceDir, 'hooks');
143
- if (!['optional', 'required'].includes(entity.multitenancy)) return [3 /*break*/, 10];
171
+ if (!['optional', 'required'].includes(entity.multitenancy)) return [3 /*break*/, 16];
144
172
  if (!entityWideGenerationArgs.entities.some(function (entity) { return entity.name === 'tenants'; })) {
145
173
  throw new Error('Only the sprt project supports the multitenancy field!');
146
174
  }
147
175
  return [4 /*yield*/, (0, fs_jetpack_1.write)((0, path_1.join)(hooksDir, 'tenantIdRequiredHooks.ts'), (0, tenantIdRequiredHooks_1.tenantIdRequiredHooksTmpl)(entityWideGenerationArgs))];
148
- case 9:
149
- _a.sent();
150
- _a.label = 10;
151
- case 10: return [4 /*yield*/, (0, fs_jetpack_1.write)((0, path_1.join)(serviceDir, 'initBuiltInHooks.ts'), (0, initBuiltInHooks_1.initBuiltInHooksTmpl)(entityWideGenerationArgs))];
152
- case 11:
153
- _a.sent();
154
- return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(hooksDir, 'additionalOperationsOnCreate.ts'), (0, additionalOperationsOnCreate_1.additionalOperationsOnCreateTmpl)(entityWideGenerationArgs))];
155
- case 12:
156
- _a.sent();
157
- return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(hooksDir, 'additionalOperationsOnUpdate.ts'), (0, additionalOperationsOnUpdate_1.additionalOperationsOnUpdateTmpl)(entityWideGenerationArgs))];
158
- case 13:
159
- _a.sent();
160
- return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(hooksDir, 'additionalOperationsOnDelete.ts'), (0, additionalOperationsOnDelete_1.additionalOperationsOnDeleteTmpl)(entityWideGenerationArgs))];
161
- case 14:
162
- _a.sent();
163
- return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(hooksDir, 'beforeCreate.ts'), (0, beforeCreate_1.beforeCreateTmpl)(entityWideGenerationArgs))];
164
176
  case 15:
165
- _a.sent();
166
- return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(hooksDir, 'beforeDelete.ts'), (0, beforeDelete_1.beforeDeleteTmpl)(entityWideGenerationArgs))];
167
- case 16:
168
- _a.sent();
169
- return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(hooksDir, 'beforeUpdate.ts'), (0, beforeUpdate_1.beforeUpdateTmpl)(entityWideGenerationArgs))];
177
+ _d.sent();
178
+ _d.label = 16;
179
+ case 16: return [4 /*yield*/, (0, fs_jetpack_1.write)((0, path_1.join)(serviceDir, 'initBuiltInHooks.ts'), (0, initBuiltInHooks_1.initBuiltInHooksTmpl)(entityWideGenerationArgs))];
170
180
  case 17:
171
- _a.sent();
172
- return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(hooksDir, 'beforeUpsert.ts'), (0, beforeUpsert_1.beforeUpsertTmpl)(entityWideGenerationArgs))];
181
+ _d.sent();
182
+ return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(hooksDir, 'additionalOperationsOnCreate.ts'), (0, additionalOperationsOnCreate_1.additionalOperationsOnCreateTmpl)(entityWideGenerationArgs))];
173
183
  case 18:
174
- _a.sent();
175
- return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(hooksDir, 'afterCreate.ts'), (0, afterCreate_1.afterCreateTmpl)(entityWideGenerationArgs))];
184
+ _d.sent();
185
+ return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(hooksDir, 'additionalOperationsOnUpdate.ts'), (0, additionalOperationsOnUpdate_1.additionalOperationsOnUpdateTmpl)(entityWideGenerationArgs))];
176
186
  case 19:
177
- _a.sent();
178
- return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(hooksDir, 'afterUpdate.ts'), (0, afterUpdate_1.afterUpdateTmpl)(entityWideGenerationArgs))];
187
+ _d.sent();
188
+ return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(hooksDir, 'additionalOperationsOnDelete.ts'), (0, additionalOperationsOnDelete_1.additionalOperationsOnDeleteTmpl)(entityWideGenerationArgs))];
179
189
  case 20:
180
- _a.sent();
181
- return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(hooksDir, 'afterDelete.ts'), (0, afterDelete_1.afterDeleteTmpl)(entityWideGenerationArgs))];
190
+ _d.sent();
191
+ return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(hooksDir, 'beforeCreate.ts'), (0, beforeCreate_1.beforeCreateTmpl)(entityWideGenerationArgs))];
182
192
  case 21:
183
- _a.sent();
184
- return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(hooksDir, 'changeListFilter.ts'), (0, changeListFilter_1.changeListFilterTmpl)(entityWideGenerationArgs))];
193
+ _d.sent();
194
+ return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(hooksDir, 'beforeDelete.ts'), (0, beforeDelete_1.beforeDeleteTmpl)(entityWideGenerationArgs))];
185
195
  case 22:
186
- _a.sent();
187
- if (!(entity.type === 'document')) return [3 /*break*/, 26];
188
- return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(hooksDir, 'getRegistryEntries.ts'), (0, getRegistryEntries_1.getRegistryEntriesTmpl)(system.prefix, entity))];
196
+ _d.sent();
197
+ return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(hooksDir, 'beforeUpdate.ts'), (0, beforeUpdate_1.beforeUpdateTmpl)(entityWideGenerationArgs))];
189
198
  case 23:
190
- _a.sent();
191
- return [4 /*yield*/, (0, fs_jetpack_1.write)((0, path_1.join)(hooksDir, 'getPostOperations.ts'), (0, getPostOperations_1.getPostOperationsTmpl)(system.prefix, entity, allSumRegistries, allInfoRegistries, options))];
199
+ _d.sent();
200
+ return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(hooksDir, 'beforeUpsert.ts'), (0, beforeUpsert_1.beforeUpsertTmpl)(entityWideGenerationArgs))];
192
201
  case 24:
193
- _a.sent();
194
- return [4 /*yield*/, (0, fs_jetpack_1.write)((0, path_1.join)(hooksDir, 'getUnPostOperations.ts'), (0, getUnPostOperations_1.getUnPostOperationsTmpl)(system.prefix, entity, options))];
202
+ _d.sent();
203
+ return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(hooksDir, 'afterCreate.ts'), (0, afterCreate_1.afterCreateTmpl)(entityWideGenerationArgs))];
195
204
  case 25:
196
- _a.sent();
197
- _a.label = 26;
205
+ _d.sent();
206
+ return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(hooksDir, 'afterUpdate.ts'), (0, afterUpdate_1.afterUpdateTmpl)(entityWideGenerationArgs))];
198
207
  case 26:
199
- graphServiceDir = (0, path_1.join)(prjBackSrcPrefixedDir, 'graph', 'services', (0, cases_1.camelPlural)(entity.name));
200
- if (!options.genGraphSchema) return [3 /*break*/, 29];
201
- return [4 /*yield*/, (0, fs_jetpack_1.write)((0, path_1.join)(graphServiceDir, 'baseTypeDefs.ts'), (0, types_1.backBaseTypesTmpl)((0, graphql_1.printSchema)((0, genGraphCrudSchema_1.genGraphCrudSchema)(entity)), options))];
208
+ _d.sent();
209
+ return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(hooksDir, 'afterDelete.ts'), (0, afterDelete_1.afterDeleteTmpl)(entityWideGenerationArgs))];
202
210
  case 27:
203
- _a.sent();
204
- return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(graphServiceDir, 'additionalTypeDefs.ts'), (0, additionalTypes_1.backAdditionalTypesTmpl)())];
211
+ _d.sent();
212
+ return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(hooksDir, 'changeListFilter.ts'), (0, changeListFilter_1.changeListFilterTmpl)(entityWideGenerationArgs))
213
+ // if (entity.type === 'document') {
214
+ // // await writeFileIfNotExists(
215
+ // // join(hooksDir, 'getRegistryEntries.ts'),
216
+ // // getRegistryEntriesTmpl(system.prefix, entity)
217
+ // // )
218
+ // // await write(
219
+ // // join(hooksDir, 'getPostOperations.ts'),
220
+ // // getPostOperationsTmpl(
221
+ // // system.prefix,
222
+ // // entity,
223
+ // // allSumRegistries,
224
+ // // allInfoRegistries,
225
+ // // options
226
+ // // )
227
+ // // )
228
+ // // await write(
229
+ // // join(hooksDir, 'getUnPostOperations.ts'),
230
+ // // getUnPostOperationsTmpl(system.prefix, entity, options)
231
+ // // )
232
+ // }
233
+ ];
205
234
  case 28:
206
- _a.sent();
207
- _a.label = 29;
235
+ _d.sent();
236
+ _d.label = 29;
208
237
  case 29:
209
- if (!(options.genGraphResolvers && !options.typesOnly)) return [3 /*break*/, 32];
210
- return [4 /*yield*/, (0, fs_jetpack_1.write)("".concat(graphServiceDir, "/baseResolvers.ts"), (0, resolvers_1.backBaseResolversTmpl)(entityWideGenerationArgs))];
238
+ graphServiceDir = (0, path_1.join)(prjBackSrcPrefixedDir, 'graph', 'services', (0, cases_1.camelPlural)(entity.name));
239
+ if (!options.genGraphSchema) return [3 /*break*/, 32];
240
+ return [4 /*yield*/, (0, fs_jetpack_1.write)((0, path_1.join)(graphServiceDir, 'baseTypeDefs.ts'), (0, types_1.backBaseTypesTmpl)((0, graphql_1.printSchema)((0, genGraphCrudSchema_1.genGraphCrudSchema)(entity)), options))];
211
241
  case 30:
212
- _a.sent();
213
- return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)("".concat(graphServiceDir, "/additionalResolvers.ts"), (0, additionalResolvers_1.backAdditionalResolversTmpl)())];
242
+ _d.sent();
243
+ return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(graphServiceDir, 'additionalTypeDefs.ts'), (0, additionalTypes_1.backAdditionalTypesTmpl)())];
214
244
  case 31:
215
- _a.sent();
216
- _a.label = 32;
245
+ _d.sent();
246
+ _d.label = 32;
217
247
  case 32:
248
+ if (!(options.genGraphResolvers && !options.typesOnly)) return [3 /*break*/, 35];
249
+ return [4 /*yield*/, (0, fs_jetpack_1.write)("".concat(graphServiceDir, "/baseResolvers.ts"), (0, resolvers_1.backBaseResolversTmpl)(entityWideGenerationArgs))];
250
+ case 33:
251
+ _d.sent();
252
+ return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)("".concat(graphServiceDir, "/additionalResolvers.ts"), (0, additionalResolvers_1.backAdditionalResolversTmpl)())];
253
+ case 34:
254
+ _d.sent();
255
+ _d.label = 35;
256
+ case 35:
218
257
  prjUiSrcPrefixedDir = '';
219
258
  prjDetachedUiSrcDir = (0, path_1.join)(options.detachedUiProject, 'src');
220
259
  // if (options.detachedBackProject) {
221
260
  prjUiSrcPrefixedDir = (0, path_1.join)(prjDetachedUiSrcDir, 'adm');
222
261
  widgetsDir = (0, path_1.join)(prjUiSrcPrefixedDir, 'widgets');
223
- if (!!options.typesOnly) return [3 /*break*/, 60];
262
+ if (!!options.typesOnly) return [3 /*break*/, 63];
224
263
  // Permissions
225
264
  return [4 /*yield*/, (0, fs_jetpack_1.write)("".concat(graphServiceDir, "/permissionsToGraphql.ts"), (0, entityPermissionToGraphqlTmpl_1.backEntityPermissionToGraphqlTmpl)(entityWideGenerationArgs))];
226
- case 33:
265
+ case 36:
227
266
  // Permissions
228
- _a.sent();
267
+ _d.sent();
229
268
  return [4 /*yield*/, (0, fs_jetpack_1.write)("".concat(graphServiceDir, "/basePermissionsToGraphql.ts"), (0, entityBasePermissionToGraphql_1.backBasePermissionToGraphqlTmpl)(entityWideGenerationArgs))];
230
- case 34:
231
- _a.sent();
269
+ case 37:
270
+ _d.sent();
232
271
  return [4 /*yield*/, (0, fs_jetpack_1.write)("".concat(graphServiceDir, "/additionalPermissionsToGraphql.ts"), (0, entityAdditionalPermissionToGraphqlTmpl_1.backEntityAdditionalPermissionToGraphqlTmpl)(entityWideGenerationArgs))
233
272
  // CountWidget
234
273
  // src/dc/widgets/count/CountAccountsWidget.tsx genUiCountWidget uiCountWidgetTmpl
235
274
  ];
236
- case 35:
237
- _a.sent();
238
- if (!options.genUiCountWidget) return [3 /*break*/, 37];
275
+ case 38:
276
+ _d.sent();
277
+ if (!options.genUiCountWidget) return [3 /*break*/, 40];
239
278
  countWdgetsDir = (0, path_1.join)(widgetsDir, 'count');
240
279
  generatedResources = (0, CountWidget_1.uiCountWidgetTmpl)(entityWideGenerationArgs);
241
280
  return [4 /*yield*/, (0, fs_jetpack_1.write)((0, path_1.join)(countWdgetsDir, "Count".concat((0, cases_1.pascal)(entity.name), "Widget.tsx")), generatedResources)];
242
- case 36:
243
- _a.sent();
244
- _a.label = 37;
245
- case 37:
281
+ case 39:
282
+ _d.sent();
283
+ _d.label = 40;
284
+ case 40:
246
285
  toLinks = (0, getLinksFromExternalEntities_1.getLinksFromExternalEntities)(entity, allLinks);
247
286
  pagesDir = (0, path_1.join)(prjUiSrcPrefixedDir, 'pages', entity.name);
248
- if (!options.forms.show) return [3 /*break*/, 47];
287
+ if (!options.forms.show) return [3 /*break*/, 50];
249
288
  entityShowDir = (0, path_1.join)(pagesDir, "".concat((0, cases_1.pascalSingular)(entity.name), "Show"));
250
289
  mainTab = (0, MainTab_1.uiEntityShowMainTabTmpl)();
251
290
  return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(entityShowDir, 'MainTab.tsx'), mainTab)
252
291
  // DefaultMainTab
253
292
  ];
254
- case 38:
255
- _a.sent();
293
+ case 41:
294
+ _d.sent();
256
295
  defaultMainTab = (0, DefaultMainTab_1.uiEntityShowDefaultMainTabTmpl)(entityWideGenerationArgs);
257
296
  return [4 /*yield*/, (0, fs_jetpack_1.write)((0, path_1.join)(entityShowDir, 'DefaultMainTab.tsx'), defaultMainTab)
258
297
  // // index
@@ -260,8 +299,8 @@ var generateEntity = function (entityWideGenerationArgs) { return __awaiter(void
260
299
  // await write(join(entityShowDir, 'index.tsx'), index);
261
300
  // DefaultEntityShow
262
301
  ];
263
- case 39:
264
- _a.sent();
302
+ case 42:
303
+ _d.sent();
265
304
  // // index
266
305
  // const index = uiEntityShowIndexTmpl(prefix, allEntities, entity, toLinks, options);
267
306
  // await write(join(entityShowDir, 'index.tsx'), index);
@@ -270,39 +309,39 @@ var generateEntity = function (entityWideGenerationArgs) { return __awaiter(void
270
309
  // DefaultActions
271
310
  // if (entity.type === 'document' && entity.registries.length > 0) {
272
311
  ];
273
- case 40:
312
+ case 43:
274
313
  // // index
275
314
  // const index = uiEntityShowIndexTmpl(prefix, allEntities, entity, toLinks, options);
276
315
  // await write(join(entityShowDir, 'index.tsx'), index);
277
316
  // DefaultEntityShow
278
- _a.sent();
317
+ _d.sent();
279
318
  // DefaultActions
280
319
  // if (entity.type === 'document' && entity.registries.length > 0) {
281
320
  return [4 /*yield*/, (0, fs_jetpack_1.write)((0, path_1.join)(entityShowDir, 'DefaultActions.tsx'), (0, DefaultActions_1.uiDefaultActionTmpl)(entityWideGenerationArgs))
282
321
  // }
283
322
  // index
284
323
  ];
285
- case 41:
324
+ case 44:
286
325
  // DefaultActions
287
326
  // if (entity.type === 'document' && entity.registries.length > 0) {
288
- _a.sent();
327
+ _d.sent();
289
328
  // }
290
329
  // index
291
330
  return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(entityShowDir, 'index.tsx'), (0, EntityShow_1.uiEntityShowIndexTmpl)(entityWideGenerationArgs))];
292
- case 42:
331
+ case 45:
293
332
  // }
294
333
  // index
295
- _a.sent();
334
+ _d.sent();
296
335
  additionalTabs = (0, additionalTabs_1.uiAdditionalTabsTmpl)();
297
336
  return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(entityShowDir, 'additionalTabs.tsx'), additionalTabs)
298
337
  // DependencyTabs
299
338
  ];
300
- case 43:
301
- _a.sent();
339
+ case 46:
340
+ _d.sent();
302
341
  _i = 0, toLinks_1 = toLinks;
303
- _a.label = 44;
304
- case 44:
305
- if (!(_i < toLinks_1.length)) return [3 /*break*/, 47];
342
+ _d.label = 47;
343
+ case 47:
344
+ if (!(_i < toLinks_1.length)) return [3 /*break*/, 50];
306
345
  link = toLinks_1[_i];
307
346
  tabsDir = (0, path_1.join)(entityShowDir, 'tabs');
308
347
  entity_1 = allEntities.get(link.entityOwnerName);
@@ -312,59 +351,59 @@ var generateEntity = function (entityWideGenerationArgs) { return __awaiter(void
312
351
  componentName = "".concat((0, cases_1.pascal)(entity_1.name)).concat((0, cases_1.pascal)(link.fromField.name), "Tab");
313
352
  dependencyTab = (0, DependencyTab_1.uiEntityShowDependencyTabTmpl)(allEntities, entity_1, link, options);
314
353
  return [4 /*yield*/, (0, fs_jetpack_1.write)((0, path_1.join)(tabsDir, "".concat(componentName, ".tsx")), dependencyTab)];
315
- case 45:
316
- _a.sent();
317
- _a.label = 46;
318
- case 46:
354
+ case 48:
355
+ _d.sent();
356
+ _d.label = 49;
357
+ case 49:
319
358
  _i++;
320
- return [3 /*break*/, 44];
321
- case 47:
322
- if (!options.forms.create) return [3 /*break*/, 50];
359
+ return [3 /*break*/, 47];
360
+ case 50:
361
+ if (!options.forms.create) return [3 /*break*/, 53];
323
362
  entityCreateDir = (0, path_1.join)(pagesDir, "".concat((0, cases_1.pascalSingular)(entity.name), "Create"));
324
363
  return [4 /*yield*/, (0, fs_jetpack_1.write)((0, path_1.join)(entityCreateDir, "Default".concat((0, cases_1.pascalSingular)(entity.name), "Create.tsx")), (0, DefaultEntityCreate_1.uiDefaultCreateTmpl)(entityWideGenerationArgs))];
325
- case 48:
326
- _a.sent();
364
+ case 51:
365
+ _d.sent();
327
366
  return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(entityCreateDir, 'index.tsx'), (0, EntityCreate_1.uiCreateTmpl)(entityWideGenerationArgs))];
328
- case 49:
329
- _a.sent();
330
- _a.label = 50;
331
- case 50:
332
- if (!options.forms.edit) return [3 /*break*/, 53];
367
+ case 52:
368
+ _d.sent();
369
+ _d.label = 53;
370
+ case 53:
371
+ if (!options.forms.edit) return [3 /*break*/, 56];
333
372
  entityEditDir = (0, path_1.join)(pagesDir, "".concat((0, cases_1.pascalSingular)(entity.name), "Edit"));
334
373
  return [4 /*yield*/, (0, fs_jetpack_1.write)((0, path_1.join)(entityEditDir, "Default".concat((0, cases_1.pascalSingular)(entity.name), "Edit.tsx")), (0, DefaultEntityEdit_1.uiDefaultEditTmpl)(entityWideGenerationArgs))];
335
- case 51:
336
- _a.sent();
374
+ case 54:
375
+ _d.sent();
337
376
  return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(entityEditDir, 'index.tsx'), (0, EntityEdit_1.uiEditTmpl)(entityWideGenerationArgs))];
338
- case 52:
339
- _a.sent();
340
- _a.label = 53;
341
- case 53:
342
- if (!options.forms.list) return [3 /*break*/, 58];
377
+ case 55:
378
+ _d.sent();
379
+ _d.label = 56;
380
+ case 56:
381
+ if (!options.forms.list) return [3 /*break*/, 61];
343
382
  entityListDir = (0, path_1.join)(pagesDir, "".concat((0, cases_1.pascalSingular)(entity.name), "List"));
344
383
  return [4 /*yield*/, (0, fs_jetpack_1.write)((0, path_1.join)(entityListDir, "Default".concat((0, cases_1.pascalSingular)(entity.name), "List.tsx")), (0, DefaultEntityList_1.uiDefaultListTmpl)(entityWideGenerationArgs))];
345
- case 54:
346
- _a.sent();
384
+ case 57:
385
+ _d.sent();
347
386
  return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(entityListDir, "".concat((0, cases_1.pascalSingular)(entity.name), "Filter.tsx")), (0, EntityFilter_1.uiFilterTmpl)(entityWideGenerationArgs))];
348
- case 55:
349
- _a.sent();
387
+ case 58:
388
+ _d.sent();
350
389
  return [4 /*yield*/, (0, fs_jetpack_1.write)((0, path_1.join)(entityListDir, "Default".concat((0, cases_1.pascalSingular)(entity.name), "Filter.tsx")), (0, DefaultEntityFilter_1.uiDefaultFilterTmpl)(entityWideGenerationArgs))];
351
- case 56:
352
- _a.sent();
390
+ case 59:
391
+ _d.sent();
353
392
  return [4 /*yield*/, (0, utils_1.writeFileIfNotExists)((0, path_1.join)(entityListDir, 'index.tsx'), (0, EntityList_1.uiListTmpl)(entityWideGenerationArgs))];
354
- case 57:
355
- _a.sent();
356
- _a.label = 58;
357
- case 58:
358
- if (!options.genUiListWidget) return [3 /*break*/, 60];
393
+ case 60:
394
+ _d.sent();
395
+ _d.label = 61;
396
+ case 61:
397
+ if (!options.genUiListWidget) return [3 /*break*/, 63];
359
398
  listWdgetsDir = (0, path_1.join)(widgetsDir, 'list');
360
399
  generatedResources = (0, ListWidget_1.uiListWidgetTmpl)(entityWideGenerationArgs);
361
400
  return [4 /*yield*/, (0, fs_jetpack_1.write)((0, path_1.join)(listWdgetsDir, "List".concat((0, cases_1.pascal)(entity.name), "Widget.tsx")), generatedResources)];
362
- case 59:
363
- _a.sent();
364
- _a.label = 60;
365
- case 60: return [2 /*return*/];
401
+ case 62:
402
+ _d.sent();
403
+ _d.label = 63;
404
+ case 63: return [2 /*return*/];
366
405
  }
367
406
  });
368
407
  }); };
369
408
  exports.generateEntity = generateEntity;
370
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVFbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvamVjdHNHZW5lcmF0aW9uL2dlbmVyYXRlRW50aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDRCQUE0QjtBQUM1Qiw2QkFBMkI7QUFDM0Isd0NBS3VCO0FBQ3ZCLHFFQUErRTtBQUMvRSw2RUFBdUY7QUFDdkYsb0ZBQXdGO0FBQ3hGLHVGQUEyRjtBQUMzRiw2RUFBc0Y7QUFDdEYsc0dBQW9HO0FBQ3BHLDRHQUEwRztBQUMxRyxzR0FBb0c7QUFDcEcsNEZBQTBGO0FBQzFGLDZFQUEyRTtBQUMzRSxpRkFBK0U7QUFDL0UsNkVBQTJFO0FBQzNFLHFGQUFtRjtBQUNuRiw0RUFBMEU7QUFDMUUsbUNBQXFDO0FBQ3JDLGtGQUFnRztBQUNoRyxnR0FBOEc7QUFDOUcsOEZBQTRHO0FBQzVHLGdHQUFtRztBQUNuRyxpQ0FBOEM7QUFDOUMseUNBQWtDO0FBQ2xDLGdHQUFvRztBQUNwRyx1R0FBNkc7QUFDN0csaUdBQXVHO0FBQ3ZHLHFIQUF1SDtBQUN2SCx5SUFBMkk7QUFDM0kscUhBQXFIO0FBQ3JILHlGQUErRjtBQUMvRixtRkFBMkY7QUFDM0YsbUlBQXFJO0FBQ3JJLG1JQUFxSTtBQUNySSxtSUFBcUk7QUFDckksaUdBQW1HO0FBQ25HLG1HQUFxRztBQUNyRyxtR0FBcUc7QUFDckcsaUdBQW1HO0FBQ25HLGlHQUFtRztBQUNuRyxpSEFBbUg7QUFDbkgsK0dBQWlIO0FBQ2pILDZHQUErRztBQUMvRyxtR0FBcUc7QUFDckcsbUdBQXFHO0FBQ3JHLDJHQUE2RztBQUM3RyxzR0FBb0c7QUFDcEcsMEdBQXdHO0FBRXhHLCtGQUFpRztBQUNqRyxxR0FBdUc7QUFDdkcscUhBQXVIO0FBQ3ZILGlGQUFtRjtBQUNuRiwrRUFBa0c7QUFDbEcsbUdBQXdHO0FBRWpHLElBQU0sY0FBYyxHQUFHLFVBQzVCLHdCQUFrRDs7Ozs7Z0JBR2hELE1BQU0sR0FPSix3QkFBd0IsT0FQcEIsRUFDTixXQUFXLEdBTVQsd0JBQXdCLFlBTmYsRUFDWCxnQkFBZ0IsR0FLZCx3QkFBd0IsaUJBTFYsRUFDaEIsaUJBQWlCLEdBSWYsd0JBQXdCLGtCQUpULEVBQ2pCLE1BQU0sR0FHSix3QkFBd0IsT0FIcEIsRUFDTixRQUFRLEdBRU4sd0JBQXdCLFNBRmxCLEVBQ1IsT0FBTyxHQUNMLHdCQUF3QixRQURuQixDQUNtQjtnQkFDeEIscUJBQXFCLEdBQUcsRUFBRSxDQUFBO2dCQUN4QixxQkFBcUIsR0FBRyxJQUFBLFdBQUksRUFBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLENBQUE7Z0JBRXRFLHFDQUFxQztnQkFDckMscUJBQXFCLEdBQUcsSUFBQSxXQUFJLEVBQUMscUJBQXFCLEVBQUUsS0FBSyxDQUFDLENBQUE7cUJBT3RELENBQUEsT0FBTyxDQUFDLGlCQUFpQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQSxFQUEvQyx5QkFBK0M7Z0JBQzNDLFdBQVcsR0FBRyxVQUFHLElBQUEsb0JBQVksRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVMsQ0FBQTtnQkFDbkQsVUFBVSxHQUFHLElBQUEsV0FBSSxFQUFDLHFCQUFxQixFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQTtnQkFDakUsY0FBYyxHQUFHLElBQUEsV0FBSSxFQUFDLFVBQVUsRUFBRSxVQUFHLFdBQVcsUUFBSyxDQUFDLENBQUE7Z0JBQ3RELFVBQVUsR0FBRyxJQUFBLFdBQUksRUFBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUE7Z0JBQzFDLGFBQWEsR0FBRyxJQUFBLFdBQUksRUFBQyxVQUFVLEVBQUUsY0FBTyxXQUFXLGFBQVUsQ0FBQyxDQUFBO2dCQUM5RCxTQUFTLEdBQUcsSUFBQSxXQUFJLEVBQUMsVUFBVSxFQUFFLFVBQUcsV0FBVyxhQUFVLENBQUMsQ0FBQTtxQkFFeEQsd0JBQXdCLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQXhFLHdCQUF3RTtnQkFDcEUsTUFBTSxHQUFHLElBQUEsbUJBQVUsRUFBQyx3QkFBd0IsQ0FBQyxDQUFBO2dCQUM3QyxnQkFBZ0IsR0FBRyxJQUFBLGtDQUEwQixFQUFDLHdCQUF3QixDQUFDLENBQUE7Z0JBQ3ZFLFlBQVksR0FBRyxJQUFBLHdDQUFzQixFQUFDLHdCQUF3QixDQUFDLENBQUE7Z0JBQ3JFLHFCQUFNLElBQUEsa0JBQUssRUFBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLEVBQUE7O2dCQUEvQixTQUErQixDQUFBO2dCQUMvQixxQkFBTSxJQUFBLGtCQUFLLEVBQUMsYUFBYSxFQUFFLGdCQUFnQixDQUFDLEVBQUE7O2dCQUE1QyxTQUE0QyxDQUFBO2dCQUM1QyxxQkFBTSxJQUFBLDRCQUFvQixFQUFDLFNBQVMsRUFBRSxZQUFZLENBQUM7b0JBQ25ELCtCQUErQjtrQkFEb0I7O2dCQUFuRCxTQUFtRCxDQUFBOzs7Z0JBRzdDLGdCQUFnQixHQUFHLElBQUEsMkJBQWlCLEVBQUMsd0JBQXdCLENBQUMsQ0FBQTtnQkFFcEUscUJBQU0sSUFBQSxrQkFBSyxFQUFDLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQztvQkFDN0MsMkJBQTJCO29CQUMzQiw4QkFBOEI7a0JBRmU7O2dCQUE3QyxTQUE2QyxDQUFBOztvQkFLL0MscUJBQU0sSUFBQSw0QkFBb0IsRUFDeEIsSUFBQSxXQUFJLEVBQUMsVUFBVSxFQUFFLHNCQUFzQixDQUFDLEVBQ3hDLElBQUEsNkNBQXlCLEVBQUMsd0JBQXdCLENBQUMsQ0FDcEQsRUFBQTs7Z0JBSEQsU0FHQyxDQUFBO2dCQUNELHFCQUFNLElBQUEsNEJBQW9CLEVBQ3hCLElBQUEsV0FBSSxFQUFDLFVBQVUsRUFBRSxrQkFBa0IsQ0FBQyxFQUNwQyxJQUFBLGlDQUFpQixFQUFDLHdCQUF3QixDQUFDLENBQzVDLEVBQUE7O2dCQUhELFNBR0MsQ0FBQTtnQkFFSyxRQUFRLEdBQUcsSUFBQSxXQUFJLEVBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFBO3FCQUN0QyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUF0RCx5QkFBc0Q7Z0JBQ3hELElBQ0UsQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNyQyxVQUFDLE1BQU0sSUFBSyxPQUFBLE1BQU0sQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUF6QixDQUF5QixDQUN0QyxFQUNEO29CQUNBLE1BQU0sSUFBSSxLQUFLLENBQ2Isd0RBQXdELENBQ3pELENBQUE7aUJBQ0Y7Z0JBRUQscUJBQU0sSUFBQSxrQkFBSyxFQUNULElBQUEsV0FBSSxFQUFDLFFBQVEsRUFBRSwwQkFBMEIsQ0FBQyxFQUMxQyxJQUFBLGlEQUF5QixFQUFDLHdCQUF3QixDQUFDLENBQ3BELEVBQUE7O2dCQUhELFNBR0MsQ0FBQTs7cUJBR0gscUJBQU0sSUFBQSxrQkFBSyxFQUNULElBQUEsV0FBSSxFQUFDLFVBQVUsRUFBRSxxQkFBcUIsQ0FBQyxFQUN2QyxJQUFBLHVDQUFvQixFQUFDLHdCQUF3QixDQUFDLENBQy9DLEVBQUE7O2dCQUhELFNBR0MsQ0FBQTtnQkFFRCxxQkFBTSxJQUFBLDRCQUFvQixFQUN4QixJQUFBLFdBQUksRUFBQyxRQUFRLEVBQUUsaUNBQWlDLENBQUMsRUFDakQsSUFBQSwrREFBZ0MsRUFBQyx3QkFBd0IsQ0FBQyxDQUMzRCxFQUFBOztnQkFIRCxTQUdDLENBQUE7Z0JBQ0QscUJBQU0sSUFBQSw0QkFBb0IsRUFDeEIsSUFBQSxXQUFJLEVBQUMsUUFBUSxFQUFFLGlDQUFpQyxDQUFDLEVBQ2pELElBQUEsK0RBQWdDLEVBQUMsd0JBQXdCLENBQUMsQ0FDM0QsRUFBQTs7Z0JBSEQsU0FHQyxDQUFBO2dCQUNELHFCQUFNLElBQUEsNEJBQW9CLEVBQ3hCLElBQUEsV0FBSSxFQUFDLFFBQVEsRUFBRSxpQ0FBaUMsQ0FBQyxFQUNqRCxJQUFBLCtEQUFnQyxFQUFDLHdCQUF3QixDQUFDLENBQzNELEVBQUE7O2dCQUhELFNBR0MsQ0FBQTtnQkFFRCxxQkFBTSxJQUFBLDRCQUFvQixFQUN4QixJQUFBLFdBQUksRUFBQyxRQUFRLEVBQUUsaUJBQWlCLENBQUMsRUFDakMsSUFBQSwrQkFBZ0IsRUFBQyx3QkFBd0IsQ0FBQyxDQUMzQyxFQUFBOztnQkFIRCxTQUdDLENBQUE7Z0JBQ0QscUJBQU0sSUFBQSw0QkFBb0IsRUFDeEIsSUFBQSxXQUFJLEVBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLEVBQ2pDLElBQUEsK0JBQWdCLEVBQUMsd0JBQXdCLENBQUMsQ0FDM0MsRUFBQTs7Z0JBSEQsU0FHQyxDQUFBO2dCQUNELHFCQUFNLElBQUEsNEJBQW9CLEVBQ3hCLElBQUEsV0FBSSxFQUFDLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxFQUNqQyxJQUFBLCtCQUFnQixFQUFDLHdCQUF3QixDQUFDLENBQzNDLEVBQUE7O2dCQUhELFNBR0MsQ0FBQTtnQkFDRCxxQkFBTSxJQUFBLDRCQUFvQixFQUN4QixJQUFBLFdBQUksRUFBQyxRQUFRLEVBQUUsaUJBQWlCLENBQUMsRUFDakMsSUFBQSwrQkFBZ0IsRUFBQyx3QkFBd0IsQ0FBQyxDQUMzQyxFQUFBOztnQkFIRCxTQUdDLENBQUE7Z0JBQ0QscUJBQU0sSUFBQSw0QkFBb0IsRUFDeEIsSUFBQSxXQUFJLEVBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLEVBQ2hDLElBQUEsNkJBQWUsRUFBQyx3QkFBd0IsQ0FBQyxDQUMxQyxFQUFBOztnQkFIRCxTQUdDLENBQUE7Z0JBQ0QscUJBQU0sSUFBQSw0QkFBb0IsRUFDeEIsSUFBQSxXQUFJLEVBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLEVBQ2hDLElBQUEsNkJBQWUsRUFBQyx3QkFBd0IsQ0FBQyxDQUMxQyxFQUFBOztnQkFIRCxTQUdDLENBQUE7Z0JBQ0QscUJBQU0sSUFBQSw0QkFBb0IsRUFDeEIsSUFBQSxXQUFJLEVBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLEVBQ2hDLElBQUEsNkJBQWUsRUFBQyx3QkFBd0IsQ0FBQyxDQUMxQyxFQUFBOztnQkFIRCxTQUdDLENBQUE7Z0JBQ0QscUJBQU0sSUFBQSw0QkFBb0IsRUFDeEIsSUFBQSxXQUFJLEVBQUMsUUFBUSxFQUFFLHFCQUFxQixDQUFDLEVBQ3JDLElBQUEsdUNBQW9CLEVBQUMsd0JBQXdCLENBQUMsQ0FDL0MsRUFBQTs7Z0JBSEQsU0FHQyxDQUFBO3FCQUVHLENBQUEsTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUEsRUFBMUIseUJBQTBCO2dCQUM1QixxQkFBTSxJQUFBLDRCQUFvQixFQUN4QixJQUFBLFdBQUksRUFBQyxRQUFRLEVBQUUsdUJBQXVCLENBQUMsRUFDdkMsSUFBQSwyQ0FBc0IsRUFBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUM5QyxFQUFBOztnQkFIRCxTQUdDLENBQUE7Z0JBQ0QscUJBQU0sSUFBQSxrQkFBSyxFQUNULElBQUEsV0FBSSxFQUFDLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxFQUN0QyxJQUFBLHlDQUFxQixFQUNuQixNQUFNLENBQUMsTUFBTSxFQUNiLE1BQU0sRUFDTixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLE9BQU8sQ0FDUixDQUNGLEVBQUE7O2dCQVRELFNBU0MsQ0FBQTtnQkFDRCxxQkFBTSxJQUFBLGtCQUFLLEVBQ1QsSUFBQSxXQUFJLEVBQUMsUUFBUSxFQUFFLHdCQUF3QixDQUFDLEVBQ3hDLElBQUEsNkNBQXVCLEVBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQ3hELEVBQUE7O2dCQUhELFNBR0MsQ0FBQTs7O2dCQUtDLGVBQWUsR0FBRyxJQUFBLFdBQUksRUFDMUIscUJBQXFCLEVBQ3JCLE9BQU8sRUFDUCxVQUFVLEVBQ1YsSUFBQSxtQkFBVyxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FDekIsQ0FBQTtxQkFHRyxPQUFPLENBQUMsY0FBYyxFQUF0Qix5QkFBc0I7Z0JBQ3hCLHFCQUFNLElBQUEsa0JBQUssRUFDVCxJQUFBLFdBQUksRUFBQyxlQUFlLEVBQUUsaUJBQWlCLENBQUMsRUFDeEMsSUFBQSx5QkFBaUIsRUFBQyxJQUFBLHFCQUFXLEVBQUMsSUFBQSx1Q0FBa0IsRUFBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUNwRSxFQUFBOztnQkFIRCxTQUdDLENBQUE7Z0JBRUQscUJBQU0sSUFBQSw0QkFBb0IsRUFDeEIsSUFBQSxXQUFJLEVBQUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLEVBQzlDLElBQUEseUNBQXVCLEdBQUUsQ0FDMUIsRUFBQTs7Z0JBSEQsU0FHQyxDQUFBOzs7cUJBSUMsQ0FBQSxPQUFPLENBQUMsaUJBQWlCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFBLEVBQS9DLHlCQUErQztnQkFDakQscUJBQU0sSUFBQSxrQkFBSyxFQUNULFVBQUcsZUFBZSxzQkFBbUIsRUFDckMsSUFBQSxpQ0FBcUIsRUFBQyx3QkFBd0IsQ0FBQyxDQUNoRCxFQUFBOztnQkFIRCxTQUdDLENBQUE7Z0JBQ0QscUJBQU0sSUFBQSw0QkFBb0IsRUFDeEIsVUFBRyxlQUFlLDRCQUF5QixFQUMzQyxJQUFBLGlEQUEyQixHQUFFLENBQzlCLEVBQUE7O2dCQUhELFNBR0MsQ0FBQTs7O2dCQUtDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQTtnQkFDdEIsbUJBQW1CLEdBQUcsSUFBQSxXQUFJLEVBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxDQUFBO2dCQUVsRSxxQ0FBcUM7Z0JBQ3JDLG1CQUFtQixHQUFHLElBQUEsV0FBSSxFQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxDQUFBO2dCQVdoRCxVQUFVLEdBQUcsSUFBQSxXQUFJLEVBQUMsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLENBQUE7cUJBRW5ELENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBbEIseUJBQWtCO2dCQUNwQixjQUFjO2dCQUNkLHFCQUFNLElBQUEsa0JBQUssRUFDVCxVQUFHLGVBQWUsNkJBQTBCLEVBQzVDLElBQUEsaUVBQWlDLEVBQUMsd0JBQXdCLENBQUMsQ0FDNUQsRUFBQTs7Z0JBSkQsY0FBYztnQkFDZCxTQUdDLENBQUE7Z0JBQ0QscUJBQU0sSUFBQSxrQkFBSyxFQUNULFVBQUcsZUFBZSxpQ0FBOEIsRUFDaEQsSUFBQSwrREFBK0IsRUFBQyx3QkFBd0IsQ0FBQyxDQUMxRCxFQUFBOztnQkFIRCxTQUdDLENBQUE7Z0JBQ0QscUJBQU0sSUFBQSxrQkFBSyxFQUNULFVBQUcsZUFBZSx1Q0FBb0MsRUFDdEQsSUFBQSxxRkFBMkMsRUFBQyx3QkFBd0IsQ0FBQyxDQUN0RTtvQkFFRCxjQUFjO29CQUNkLGtGQUFrRjtrQkFIakY7O2dCQUhELFNBR0MsQ0FBQTtxQkFJRyxPQUFPLENBQUMsZ0JBQWdCLEVBQXhCLHlCQUF3QjtnQkFDcEIsY0FBYyxHQUFHLElBQUEsV0FBSSxFQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQTtnQkFFMUMsa0JBQWtCLEdBQUcsSUFBQSwrQkFBaUIsRUFBQyx3QkFBd0IsQ0FBQyxDQUFBO2dCQUV0RSxxQkFBTSxJQUFBLGtCQUFLLEVBQ1QsSUFBQSxXQUFJLEVBQUMsY0FBYyxFQUFFLGVBQVEsSUFBQSxjQUFNLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFZLENBQUMsRUFDN0Qsa0JBQWtCLENBQ25CLEVBQUE7O2dCQUhELFNBR0MsQ0FBQTs7O2dCQUdHLE9BQU8sR0FBRyxJQUFBLDJEQUE0QixFQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQTtnQkFNeEQsUUFBUSxHQUFHLElBQUEsV0FBSSxFQUFDLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7cUJBSTVELE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFsQix5QkFBa0I7Z0JBQ2QsYUFBYSxHQUFHLElBQUEsV0FBSSxFQUFDLFFBQVEsRUFBRSxVQUFHLElBQUEsc0JBQWMsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQU0sQ0FBQyxDQUFBO2dCQUlwRSxPQUFPLEdBQUcsSUFBQSxpQ0FBdUIsR0FBRSxDQUFBO2dCQUN6QyxxQkFBTSxJQUFBLDRCQUFvQixFQUFDLElBQUEsV0FBSSxFQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsRUFBRSxPQUFPLENBQUM7b0JBRXZFLGlCQUFpQjtrQkFGc0Q7O2dCQUF2RSxTQUF1RSxDQUFBO2dCQUdqRSxjQUFjLEdBQUcsSUFBQSwrQ0FBOEIsRUFDbkQsd0JBQXdCLENBQ3pCLENBQUE7Z0JBQ0QscUJBQU0sSUFBQSxrQkFBSyxFQUFDLElBQUEsV0FBSSxFQUFDLGFBQWEsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFLGNBQWMsQ0FBQztvQkFFdEUsV0FBVztvQkFDWCxzRkFBc0Y7b0JBQ3RGLHdEQUF3RDtvQkFFeEQsb0JBQW9CO2tCQU5rRDs7Z0JBQXRFLFNBQXNFLENBQUE7Z0JBRXRFLFdBQVc7Z0JBQ1gsc0ZBQXNGO2dCQUN0Rix3REFBd0Q7Z0JBRXhELG9CQUFvQjtnQkFDcEIscUJBQU0sSUFBQSxrQkFBSyxFQUNULElBQUEsV0FBSSxFQUFDLGFBQWEsRUFBRSxpQkFBVSxJQUFBLHNCQUFjLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFVLENBQUMsRUFDcEUsSUFBQSxxQ0FBaUIsRUFBQyx3QkFBd0IsQ0FBQyxDQUM1QztvQkFFRCxpQkFBaUI7b0JBQ2pCLG9FQUFvRTtrQkFIbkU7O2dCQVJELFdBQVc7Z0JBQ1gsc0ZBQXNGO2dCQUN0Rix3REFBd0Q7Z0JBRXhELG9CQUFvQjtnQkFDcEIsU0FHQyxDQUFBO2dCQUVELGlCQUFpQjtnQkFDakIsb0VBQW9FO2dCQUNwRSxxQkFBTSxJQUFBLGtCQUFLLEVBQ1QsSUFBQSxXQUFJLEVBQUMsYUFBYSxFQUFFLG9CQUFvQixDQUFDLEVBQ3pDLElBQUEsb0NBQW1CLEVBQUMsd0JBQXdCLENBQUMsQ0FDOUM7b0JBQ0QsSUFBSTtvQkFFSixRQUFRO2tCQUhQOztnQkFMRCxpQkFBaUI7Z0JBQ2pCLG9FQUFvRTtnQkFDcEUsU0FHQyxDQUFBO2dCQUNELElBQUk7Z0JBRUosUUFBUTtnQkFDUixxQkFBTSxJQUFBLDRCQUFvQixFQUN4QixJQUFBLFdBQUksRUFBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLEVBQ2hDLElBQUEsa0NBQXFCLEVBQUMsd0JBQXdCLENBQUMsQ0FDaEQsRUFBQTs7Z0JBTkQsSUFBSTtnQkFFSixRQUFRO2dCQUNSLFNBR0MsQ0FBQTtnQkFFSyxjQUFjLEdBQUcsSUFBQSxxQ0FBb0IsR0FBRSxDQUFBO2dCQUM3QyxxQkFBTSxJQUFBLDRCQUFvQixFQUN4QixJQUFBLFdBQUksRUFBQyxhQUFhLEVBQUUsb0JBQW9CLENBQUMsRUFDekMsY0FBYyxDQUNmO29CQUVELGlCQUFpQjtrQkFGaEI7O2dCQUhELFNBR0MsQ0FBQTtzQkFHeUIsRUFBUCxtQkFBTzs7O3FCQUFQLENBQUEscUJBQU8sQ0FBQTtnQkFBZixJQUFJO2dCQUNQLE9BQU8sR0FBRyxJQUFBLFdBQUksRUFBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUE7Z0JBRXJDLFdBQVMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUE7Z0JBRXBELElBQUksQ0FBQyxRQUFNLEVBQUU7b0JBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBYyxJQUFJLENBQUMsZUFBZSxjQUFVLENBQUMsQ0FBQTtpQkFDOUQ7Z0JBRUssYUFBYSxHQUFHLFVBQUcsSUFBQSxjQUFNLEVBQUMsUUFBTSxDQUFDLElBQUksQ0FBQyxTQUFHLElBQUEsY0FBTSxFQUNuRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDcEIsUUFBSyxDQUFBO2dCQUVBLGFBQWEsR0FBRyxJQUFBLDZDQUE2QixFQUNqRCxXQUFXLEVBQ1gsUUFBTSxFQUNOLElBQUksRUFDSixPQUFPLENBQ1IsQ0FBQTtnQkFDRCxxQkFBTSxJQUFBLGtCQUFLLEVBQUMsSUFBQSxXQUFJLEVBQUMsT0FBTyxFQUFFLFVBQUcsYUFBYSxTQUFNLENBQUMsRUFBRSxhQUFhLENBQUMsRUFBQTs7Z0JBQWpFLFNBQWlFLENBQUE7OztnQkFuQmhELElBQU8sQ0FBQTs7O3FCQXVCeEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQXBCLHlCQUFvQjtnQkFDaEIsZUFBZSxHQUFHLElBQUEsV0FBSSxFQUMxQixRQUFRLEVBQ1IsVUFBRyxJQUFBLHNCQUFjLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFRLENBQ3ZDLENBQUE7Z0JBRUQscUJBQU0sSUFBQSxrQkFBSyxFQUNULElBQUEsV0FBSSxFQUNGLGVBQWUsRUFDZixpQkFBVSxJQUFBLHNCQUFjLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFZLENBQ2xELEVBQ0QsSUFBQSx5Q0FBbUIsRUFBQyx3QkFBd0IsQ0FBQyxDQUM5QyxFQUFBOztnQkFORCxTQU1DLENBQUE7Z0JBQ0QscUJBQU0sSUFBQSw0QkFBb0IsRUFDeEIsSUFBQSxXQUFJLEVBQUMsZUFBZSxFQUFFLFdBQVcsQ0FBQyxFQUNsQyxJQUFBLDJCQUFZLEVBQUMsd0JBQXdCLENBQUMsQ0FDdkMsRUFBQTs7Z0JBSEQsU0FHQyxDQUFBOzs7cUJBR0MsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQWxCLHlCQUFrQjtnQkFDZCxhQUFhLEdBQUcsSUFBQSxXQUFJLEVBQUMsUUFBUSxFQUFFLFVBQUcsSUFBQSxzQkFBYyxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBTSxDQUFDLENBQUE7Z0JBRTFFLHFCQUFNLElBQUEsa0JBQUssRUFDVCxJQUFBLFdBQUksRUFBQyxhQUFhLEVBQUUsaUJBQVUsSUFBQSxzQkFBYyxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBVSxDQUFDLEVBQ3BFLElBQUEscUNBQWlCLEVBQUMsd0JBQXdCLENBQUMsQ0FDNUMsRUFBQTs7Z0JBSEQsU0FHQyxDQUFBO2dCQUNELHFCQUFNLElBQUEsNEJBQW9CLEVBQ3hCLElBQUEsV0FBSSxFQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsRUFDaEMsSUFBQSx1QkFBVSxFQUFDLHdCQUF3QixDQUFDLENBQ3JDLEVBQUE7O2dCQUhELFNBR0MsQ0FBQTs7O3FCQUdDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFsQix5QkFBa0I7Z0JBQ2QsYUFBYSxHQUFHLElBQUEsV0FBSSxFQUFDLFFBQVEsRUFBRSxVQUFHLElBQUEsc0JBQWMsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQU0sQ0FBQyxDQUFBO2dCQUUxRSxxQkFBTSxJQUFBLGtCQUFLLEVBQ1QsSUFBQSxXQUFJLEVBQUMsYUFBYSxFQUFFLGlCQUFVLElBQUEsc0JBQWMsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQVUsQ0FBQyxFQUNwRSxJQUFBLHFDQUFpQixFQUFDLHdCQUF3QixDQUFDLENBQzVDLEVBQUE7O2dCQUhELFNBR0MsQ0FBQTtnQkFDRCxxQkFBTSxJQUFBLDRCQUFvQixFQUN4QixJQUFBLFdBQUksRUFBQyxhQUFhLEVBQUUsVUFBRyxJQUFBLHNCQUFjLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFZLENBQUMsRUFDL0QsSUFBQSwyQkFBWSxFQUFDLHdCQUF3QixDQUFDLENBQ3ZDLEVBQUE7O2dCQUhELFNBR0MsQ0FBQTtnQkFDRCxxQkFBTSxJQUFBLGtCQUFLLEVBQ1QsSUFBQSxXQUFJLEVBQUMsYUFBYSxFQUFFLGlCQUFVLElBQUEsc0JBQWMsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQVksQ0FBQyxFQUN0RSxJQUFBLHlDQUFtQixFQUFDLHdCQUF3QixDQUFDLENBQzlDLEVBQUE7O2dCQUhELFNBR0MsQ0FBQTtnQkFDRCxxQkFBTSxJQUFBLDRCQUFvQixFQUN4QixJQUFBLFdBQUksRUFBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLEVBQ2hDLElBQUEsdUJBQVUsRUFBQyx3QkFBd0IsQ0FBQyxDQUNyQyxFQUFBOztnQkFIRCxTQUdDLENBQUE7OztxQkFLQyxPQUFPLENBQUMsZUFBZSxFQUF2Qix5QkFBdUI7Z0JBQ25CLGFBQWEsR0FBRyxJQUFBLFdBQUksRUFBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUE7Z0JBRXhDLGtCQUFrQixHQUFHLElBQUEsNkJBQWdCLEVBQUMsd0JBQXdCLENBQUMsQ0FBQTtnQkFFckUscUJBQU0sSUFBQSxrQkFBSyxFQUNULElBQUEsV0FBSSxFQUFDLGFBQWEsRUFBRSxjQUFPLElBQUEsY0FBTSxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBWSxDQUFDLEVBQzNELGtCQUFrQixDQUNuQixFQUFBOztnQkFIRCxTQUdDLENBQUE7Ozs7O0tBR04sQ0FBQTtBQW5YWSxRQUFBLGNBQWMsa0JBbVgxQiJ9
409
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVFbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvamVjdHNHZW5lcmF0aW9uL2dlbmVyYXRlRW50aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDRCQUE0QjtBQUM1Qiw2QkFBMkI7QUFDM0Isd0NBS3VCO0FBQ3ZCLHFFQUErRTtBQUMvRSw2RUFBdUY7QUFDdkYsb0ZBQXdGO0FBQ3hGLHVGQUEyRjtBQUMzRiw2RUFBc0Y7QUFDdEYsc0dBQW9HO0FBQ3BHLDRHQUEwRztBQUMxRyxzR0FBb0c7QUFDcEcsNEZBQTBGO0FBQzFGLDZFQUEyRTtBQUMzRSxpRkFBK0U7QUFDL0UsNkVBQTJFO0FBQzNFLHFGQUFtRjtBQUNuRiw0RUFBMEU7QUFDMUUsbUNBQXFDO0FBQ3JDLGtGQUFnRztBQUNoRyxnR0FBOEc7QUFDOUcsOEZBQTRHO0FBQzVHLGdHQUFtRztBQUNuRyxpQ0FBOEM7QUFDOUMseUNBQXFFO0FBQ3JFLGdHQUFvRztBQUNwRyxpR0FBdUc7QUFDdkcscUhBQXVIO0FBQ3ZILHlJQUEySTtBQUMzSSxxSEFBcUg7QUFDckgseUZBQStGO0FBQy9GLG1GQUEyRjtBQUMzRixtSUFBcUk7QUFDckksbUlBQXFJO0FBQ3JJLG1JQUFxSTtBQUNySSxpR0FBbUc7QUFDbkcsbUdBQXFHO0FBQ3JHLG1HQUFxRztBQUNyRyxpR0FBbUc7QUFDbkcsaUdBQW1HO0FBQ25HLG1HQUFxRztBQUNyRyxtR0FBcUc7QUFDckcsMkdBQTZHO0FBQzdHLHNHQUFvRztBQUNwRywwR0FBd0c7QUFFeEcsK0ZBQWlHO0FBQ2pHLHFHQUF1RztBQUN2RyxxSEFBdUg7QUFDdkgsaUZBQW1GO0FBQ25GLCtFQUFrRztBQUUzRixJQUFNLGNBQWMsR0FBRyxVQUM1Qix3QkFBa0Q7Ozs7OztnQkFHaEQsV0FBVyxHQU1ULHdCQUF3QixZQU5mLEVBQ1gsZ0JBQWdCLEdBS2Qs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