desy-angular 5.0.1 → 5.1.3

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 (42) hide show
  1. package/bundles/desy-angular.umd.js +1218 -97
  2. package/bundles/desy-angular.umd.js.map +1 -1
  3. package/bundles/desy-angular.umd.min.js +2 -2
  4. package/bundles/desy-angular.umd.min.js.map +1 -1
  5. package/desy-angular.d.ts +29 -24
  6. package/desy-angular.metadata.json +1 -1
  7. package/esm2015/desy-angular.js +30 -25
  8. package/esm2015/lib/desy-buttons/components/toggle/toggle-off-state/toggle-off-state.component.js +15 -0
  9. package/esm2015/lib/desy-buttons/components/toggle/toggle-on-state/toggle-on-state.component.js +15 -0
  10. package/esm2015/lib/desy-buttons/components/toggle/toggle.component.js +41 -0
  11. package/esm2015/lib/desy-buttons/desy-buttons.module.js +12 -3
  12. package/esm2015/lib/desy-forms/components/tree/interfaces/itree-item.js +3 -0
  13. package/esm2015/lib/desy-forms/components/tree/interfaces/quit-tree-item-focus-options.js +2 -0
  14. package/esm2015/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.js +151 -0
  15. package/esm2015/lib/desy-forms/components/tree/tree-item/tree-item.component.js +370 -0
  16. package/esm2015/lib/desy-forms/components/tree/tree-items-generator/tree-items-generator.component.js +25 -0
  17. package/esm2015/lib/desy-forms/components/tree/tree-sub/tree-sub.component.js +14 -0
  18. package/esm2015/lib/desy-forms/components/tree/tree.component.js +408 -0
  19. package/esm2015/lib/desy-forms/desy-forms.module.js +15 -1
  20. package/esm2015/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.js +8 -3
  21. package/esm2015/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.js +7 -4
  22. package/esm2015/lib/desy-nav/components/header/header-subnav/header-subnav.component.js +2 -2
  23. package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical.component.js +2 -2
  24. package/esm2015/lib/desy-nav/components/nav/nav.component.js +38 -2
  25. package/esm2015/lib/desy-pagination/components/pagination/pagination.component.js +2 -2
  26. package/esm2015/public-api.js +5 -1
  27. package/fesm2015/desy-angular.js +1133 -71
  28. package/fesm2015/desy-angular.js.map +1 -1
  29. package/lib/desy-buttons/components/toggle/toggle-off-state/toggle-off-state.component.d.ts +5 -0
  30. package/lib/desy-buttons/components/toggle/toggle-on-state/toggle-on-state.component.d.ts +5 -0
  31. package/lib/desy-buttons/components/toggle/toggle.component.d.ts +15 -0
  32. package/lib/desy-forms/components/tree/interfaces/itree-item.d.ts +5 -0
  33. package/lib/desy-forms/components/tree/interfaces/quit-tree-item-focus-options.d.ts +5 -0
  34. package/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.d.ts +43 -0
  35. package/lib/desy-forms/components/tree/tree-item/tree-item.component.d.ts +87 -0
  36. package/lib/desy-forms/components/tree/tree-items-generator/tree-items-generator.component.d.ts +10 -0
  37. package/lib/desy-forms/components/tree/tree-sub/tree-sub.component.d.ts +6 -0
  38. package/lib/desy-forms/components/tree/tree.component.d.ts +112 -0
  39. package/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.d.ts +2 -0
  40. package/lib/desy-nav/components/nav/nav.component.d.ts +4 -0
  41. package/package.json +2 -2
  42. package/public-api.d.ts +4 -0
@@ -0,0 +1,408 @@
1
+ import { __decorate } from "tslib";
2
+ import { ChangeDetectorRef, Component, ContentChildren, EventEmitter, forwardRef, Input, Output, ViewChild } from '@angular/core';
3
+ import { DesyContentChild } from "../../../shared/decorators/desy-content-child.decorator";
4
+ import { TreeItemComponent } from "./tree-item/tree-item.component";
5
+ import { DesyOnInputChange } from "../../../shared/decorators/desy-on-input-change.decorator";
6
+ import { NG_VALUE_ACCESSOR } from "@angular/forms";
7
+ import { FormFieldComponent } from "../form-field/form-field.component";
8
+ import { FieldsetComponent } from "../fieldset/fieldset.component";
9
+ import { SearchBarComponent } from "../search-bar/search-bar.component";
10
+ export class TreeComponent extends FormFieldComponent {
11
+ constructor(changeDetector) {
12
+ super();
13
+ this.changeDetector = changeDetector;
14
+ this.expandedFirstLevel = true;
15
+ this.decoupleChildFromParent = false;
16
+ this.disableDefaultSearch = false;
17
+ this.searchMatchValuesChange = new EventEmitter();
18
+ this.rootItems = [];
19
+ this._itemListCheckedSubscriptions = [];
20
+ this._itemListQuitFocusSubscriptions = [];
21
+ this._alreadyConfiguringItems = false;
22
+ }
23
+ ngOnDestroy() {
24
+ var _a, _b;
25
+ this.clearSubscriptions(this._itemListCheckedSubscriptions);
26
+ this.clearSubscriptions(this._itemListQuitFocusSubscriptions);
27
+ (_a = this._itemListSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
28
+ (_b = this._allItemListSubscription) === null || _b === void 0 ? void 0 : _b.unsubscribe();
29
+ }
30
+ ngOnChanges(changes) {
31
+ this.configureAllItems();
32
+ }
33
+ /**
34
+ * Se sobrescribe el valor para actualizar los items
35
+ * @Override
36
+ */
37
+ writeValue(value) {
38
+ this.value = value;
39
+ this.configureAllItems(true);
40
+ this.onChange(this.value);
41
+ }
42
+ /*
43
+ * Eventos
44
+ */
45
+ /**
46
+ * Actualiza el valor del componente al checkquearse un ítem
47
+ * @param originItem ítem modificado
48
+ */
49
+ updateValueFromItems(originItem) {
50
+ // Si es radio, se desactivan el resto de items cuando se activa otro item
51
+ if (this.type !== 'checkbox') {
52
+ const items = this.getAllItemsInOrder();
53
+ items.forEach(item => {
54
+ if (item !== originItem && item.checked) {
55
+ item.setChecked(false, true);
56
+ }
57
+ });
58
+ }
59
+ else if (!this.decoupleChildFromParent) {
60
+ this.rootItems.forEach(item => item.setCheckedAutomaticallyDependingOnChildren());
61
+ }
62
+ this.value = [];
63
+ const items = this.getAllItemsInOrder();
64
+ items.forEach(item => {
65
+ if (item.checked) {
66
+ this.value.push(item.value);
67
+ }
68
+ });
69
+ this.onChange(this.value);
70
+ }
71
+ /**
72
+ * Gestiona cuando el foco abandona un ítem desde un evento de teclado controlado
73
+ * @param options
74
+ */
75
+ handleItemQuitFocus(options) {
76
+ if (options && options.nextElement) {
77
+ const items = this.getAllItemsInOrder();
78
+ const focusableItems = items.filter(item => !item.isHidden() && !item.disabled && item.allParentsExpanded);
79
+ switch (options.nextElement) {
80
+ case "first":
81
+ focusableItems[0].focus();
82
+ break;
83
+ case "last":
84
+ focusableItems[focusableItems.length - 1].focus();
85
+ break;
86
+ case "parent":
87
+ const currentSubLevel = options.currentItem.subLevel;
88
+ if (currentSubLevel > 0) {
89
+ const currentItemIndex = focusableItems.findIndex(item => item === options.currentItem);
90
+ const parent = focusableItems.slice(0, currentItemIndex).reverse().find(item => item.subLevel < currentSubLevel);
91
+ if (parent) {
92
+ parent.focus();
93
+ }
94
+ }
95
+ break;
96
+ case "firstChild":
97
+ case "next":
98
+ if (options.currentItem) {
99
+ let currentItemIndex = focusableItems.findIndex(item => item === options.currentItem);
100
+ if (currentItemIndex < focusableItems.length - 1) {
101
+ focusableItems[currentItemIndex + 1].focus();
102
+ }
103
+ }
104
+ break;
105
+ case "previous":
106
+ if (options.currentItem) {
107
+ const currentItemIndex = focusableItems.findIndex(item => item === options.currentItem);
108
+ if (currentItemIndex > 0) {
109
+ focusableItems[currentItemIndex - 1].focus();
110
+ }
111
+ }
112
+ break;
113
+ }
114
+ }
115
+ }
116
+ /**
117
+ * Realiza la búsqueda interna de los items en el componente
118
+ * @param value texto de búsqueda
119
+ */
120
+ onSearch(value) {
121
+ if (!this.disableDefaultSearch) {
122
+ if (value && value.length > 0) {
123
+ this.searchMatchValues = this.allItems.filter(item => item.matchesText(value)).map(item => item.value);
124
+ }
125
+ else {
126
+ this.searchMatchValues = null;
127
+ }
128
+ this.searchMatchValuesChange.emit(this.searchMatchValues);
129
+ }
130
+ }
131
+ /*
132
+ * Eventos al cambiar propiedades
133
+ */
134
+ /**
135
+ * Configura los items del árbol
136
+ */
137
+ configureAllItems(isValueChange = false) {
138
+ if (!this._alreadyConfiguringItems) {
139
+ this._alreadyConfiguringItems = true;
140
+ // Lo realizamos desde un setTimeout para que todos los inputs, values y demás vivan en paz y armonía
141
+ setTimeout(() => {
142
+ var _a;
143
+ if (((_a = this.allItems) === null || _a === void 0 ? void 0 : _a.length) > 0) {
144
+ this.clearSubscriptions(this._itemListCheckedSubscriptions);
145
+ this.clearSubscriptions(this._itemListQuitFocusSubscriptions);
146
+ this.allItems.forEach(item => {
147
+ item.parentName = this.name;
148
+ item.type = this.type;
149
+ item.inheritedDescribedBy = this.getDescribedByForItems();
150
+ item.inheritedExpandedFirstLevel = this.expandedFirstLevel;
151
+ item.inheritedDecoupleChildFromParent = this.decoupleChildFromParent;
152
+ if ((this.value && this.value.length > 0) || isValueChange) {
153
+ const valueList = this.value ? this.value : [];
154
+ item.setChecked(!!valueList.find(v => v === item.value), true);
155
+ }
156
+ item.detectChanges();
157
+ const checkedSubscription = item.checkedChangeForTree.subscribe(() => this.updateValueFromItems(item));
158
+ this._itemListCheckedSubscriptions.push(checkedSubscription);
159
+ const quitFocusSubscription = item.quitFocus.subscribe(options => this.handleItemQuitFocus(options));
160
+ this._itemListQuitFocusSubscriptions.push(quitFocusSubscription);
161
+ });
162
+ this.setErrorInItems(this.hasErrorMessageComponent());
163
+ this.buildTree();
164
+ if (!this.value) {
165
+ this.updateValueFromItems();
166
+ }
167
+ if (this.searchMatchValues) {
168
+ this.onSearchMatchValuesChange();
169
+ }
170
+ }
171
+ if (this.allItems && !this._allItemListSubscription) {
172
+ this._allItemListSubscription = this.allItems.changes.subscribe(() => this.configureAllItems());
173
+ }
174
+ this.changeDetector.detectChanges();
175
+ this._alreadyConfiguringItems = false;
176
+ });
177
+ }
178
+ }
179
+ /**
180
+ * Modifica los items visibles según el filtro de búsqueda
181
+ */
182
+ onSearchMatchValuesChange() {
183
+ if (this.allItems) {
184
+ this.allItems.forEach(item => {
185
+ item.inheritedMatchesSearch = true;
186
+ });
187
+ if (this.searchMatchValues !== null && this.searchMatchValues !== undefined) {
188
+ this.allItems.forEach(item => {
189
+ if (this.searchMatchValues.findIndex(value => item.value === value) < 0) {
190
+ item.inheritedMatchesSearch = false;
191
+ }
192
+ });
193
+ }
194
+ }
195
+ }
196
+ /*
197
+ * Getters and setters
198
+ */
199
+ getIdPrefix() {
200
+ return this.idPrefix ? this.idPrefix : this.name;
201
+ }
202
+ getDescribedBy() {
203
+ let describedBy = '';
204
+ if (this.describedBy) {
205
+ describedBy = this.describedBy;
206
+ }
207
+ if (this.hasHintComponent() && this.hintComponent.id) {
208
+ describedBy = describedBy + ' ' + this.hintComponent.id;
209
+ }
210
+ if (this.hasErrorMessageComponent() && this.errorMessageComponent.id) {
211
+ describedBy = describedBy + ' ' + this.errorMessageComponent.id;
212
+ }
213
+ return describedBy;
214
+ }
215
+ /**
216
+ * Devuelve el valor de describedBy que se transmitirá a los items
217
+ */
218
+ getDescribedByForItems() {
219
+ let describedBy;
220
+ if (this.hasFieldsetComponent()) {
221
+ describedBy = this.fieldsetComponent.describedBy;
222
+ }
223
+ else {
224
+ describedBy = this.getDescribedBy();
225
+ }
226
+ return describedBy;
227
+ }
228
+ hasFieldsetComponent() {
229
+ return !!this.fieldsetComponent;
230
+ }
231
+ /**
232
+ * Overrides super.getHintId();
233
+ */
234
+ getHintId() {
235
+ var _a;
236
+ return this.idPrefix ? this.idPrefix + '-hint' : (_a = this.hintComponent) === null || _a === void 0 ? void 0 : _a.id;
237
+ }
238
+ /**
239
+ * Overrides super.getHintId();
240
+ */
241
+ getErrorId() {
242
+ var _a;
243
+ return this.idPrefix ? this.idPrefix + '-error' : (_a = this.errorMessageComponent) === null || _a === void 0 ? void 0 : _a.id;
244
+ }
245
+ /*
246
+ * Funciones para reemplazar el contenido del fieldset, label, hint o errormessage
247
+ */
248
+ overrideFieldsetParams(fieldset) {
249
+ fieldset.caller = this.innerHtml;
250
+ fieldset.errorId = this.getErrorId();
251
+ fieldset.describedBy = this.getDescribedBy();
252
+ fieldset.detectChanges();
253
+ }
254
+ overrideSearchBarParams(searchbar) {
255
+ const defaultOnChange = searchbar.onChange;
256
+ const newOnChange = value => {
257
+ this.onSearch(value);
258
+ defaultOnChange(value);
259
+ };
260
+ searchbar.registerOnChange(newOnChange);
261
+ }
262
+ /**
263
+ * Se llama desde FormField
264
+ */
265
+ overrideHintParams(hint) {
266
+ hint.id = this.getHintId();
267
+ hint.detectChanges();
268
+ }
269
+ /**
270
+ * Se llama desde FormField
271
+ */
272
+ overrideErrorMessageParams(errorMessage) {
273
+ errorMessage.id = this.getErrorId();
274
+ this.setErrorInItems(this.hasErrorMessageComponent());
275
+ errorMessage.detectChanges();
276
+ }
277
+ /**
278
+ * Se llama desde FormField
279
+ */
280
+ onDeleteErrorMessage(errorMessage) {
281
+ this.setErrorInItems(this.hasErrorMessageComponent());
282
+ }
283
+ /*
284
+ * Métodos privados
285
+ */
286
+ /**
287
+ * Configura la estructura del árbol
288
+ * @private
289
+ */
290
+ buildTree() {
291
+ // Se crea un mapa para tener accesibles los items por key y se borran los listados existentes
292
+ const itemMap = {};
293
+ this.rootItems = [];
294
+ this.allItems.forEach(item => {
295
+ const key = item.getKey();
296
+ itemMap[key] = item;
297
+ if (item.sub) {
298
+ item.sub.itemList = [];
299
+ }
300
+ });
301
+ // Se añaden los items a los listados correspondientes
302
+ this.allItems.forEach(item => {
303
+ const parentKey = item.getParentKey();
304
+ if (parentKey === 'root') {
305
+ this.rootItems.push(item);
306
+ }
307
+ else if (parentKey) {
308
+ const sub = itemMap[parentKey].sub;
309
+ if (sub) {
310
+ sub.itemList.push(item);
311
+ }
312
+ }
313
+ });
314
+ // Se configuran los items desde root
315
+ let order = 0;
316
+ this.rootItems.forEach((item, index) => {
317
+ item.setSubLevel(0);
318
+ item.setDefaultId(`${this.idPrefix}-${index}`);
319
+ item.refreshAllParentsExpandedRecursive(true);
320
+ if (!this.decoupleChildFromParent) {
321
+ item.setCheckedAutomaticallyDependingOnChildren();
322
+ }
323
+ order = item.setOrderRecursively(order);
324
+ });
325
+ }
326
+ /**
327
+ * Si tiene un mensaje de error, se indica a los items
328
+ * @param hasError
329
+ * @private
330
+ */
331
+ setErrorInItems(hasError) {
332
+ var _a;
333
+ if (((_a = this.allItems) === null || _a === void 0 ? void 0 : _a.length) > 0) {
334
+ this.allItems.forEach(item => {
335
+ item.inheritedHasError = hasError;
336
+ item.detectChanges();
337
+ });
338
+ }
339
+ }
340
+ /**
341
+ * Limpia un listado de subscripciones
342
+ * @param subscriptionList
343
+ * @private
344
+ */
345
+ clearSubscriptions(subscriptionList) {
346
+ if (subscriptionList.length > 0) {
347
+ subscriptionList.forEach(s => s.unsubscribe());
348
+ subscriptionList.splice(0, subscriptionList.length);
349
+ }
350
+ }
351
+ /**
352
+ * Devuelve los items del árbol ordenados
353
+ * @private
354
+ */
355
+ getAllItemsInOrder() {
356
+ let list = [];
357
+ if (this.allItems) {
358
+ list = this.allItems.toArray().sort((a, b) => a.orderInTree > b.orderInTree ? 1 : -1);
359
+ }
360
+ return list;
361
+ }
362
+ }
363
+ TreeComponent.decorators = [
364
+ { type: Component, args: [{
365
+ selector: 'desy-tree',
366
+ template: "\r\n<ng-template #innerHtml>\r\n <ng-content select=\"desy-hint\"></ng-content>\r\n <ng-content select=\"desy-error-message\"></ng-content>\r\n <ng-content select=\"desy-search-bar\"></ng-content>\r\n <ul [class]=\"['c-tree', classes] | makeHtmlList\"\r\n [attr.role]=\"role ? role : 'tree'\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.aria-modal]=\"ariaModal ? ariaModal : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n <ng-content></ng-content>\r\n </ul>\r\n</ng-template>\r\n\r\n<!-- tree -->\r\n<div [class]=\"['c-form-group', formGroupClasses] | makeHtmlList\"\r\n [ngClass]=\"{'c-form-group--error': (hasErrorsMessage() || formGroupClasses === 'c-form-group--error') }\">\r\n <ng-container *ngIf=\"hasFieldsetComponent(); else innerHtml\">\r\n <ng-content select=\"desy-fieldset\"></ng-content>\r\n </ng-container>\r\n</div>\r\n",
367
+ providers: [
368
+ {
369
+ provide: NG_VALUE_ACCESSOR,
370
+ useExisting: forwardRef(() => TreeComponent),
371
+ multi: true
372
+ }
373
+ ]
374
+ },] }
375
+ ];
376
+ TreeComponent.ctorParameters = () => [
377
+ { type: ChangeDetectorRef }
378
+ ];
379
+ TreeComponent.propDecorators = {
380
+ idPrefix: [{ type: Input }],
381
+ classes: [{ type: Input }],
382
+ formGroupClasses: [{ type: Input }],
383
+ name: [{ type: Input }],
384
+ type: [{ type: Input }],
385
+ describedBy: [{ type: Input }],
386
+ expandedFirstLevel: [{ type: Input }],
387
+ decoupleChildFromParent: [{ type: Input }],
388
+ disableDefaultSearch: [{ type: Input }],
389
+ searchMatchValues: [{ type: Input }],
390
+ searchMatchValuesChange: [{ type: Output }],
391
+ allItems: [{ type: ContentChildren, args: [TreeItemComponent, { descendants: true },] }],
392
+ fieldsetComponent: [{ type: ContentChildren, args: [FieldsetComponent,] }],
393
+ searchBarComponent: [{ type: ContentChildren, args: [SearchBarComponent,] }],
394
+ innerHtml: [{ type: ViewChild, args: ['innerHtml', { static: true },] }]
395
+ };
396
+ __decorate([
397
+ DesyOnInputChange('onSearchMatchValuesChange')
398
+ ], TreeComponent.prototype, "searchMatchValues", void 0);
399
+ __decorate([
400
+ DesyOnInputChange('configureAllItems')
401
+ ], TreeComponent.prototype, "allItems", void 0);
402
+ __decorate([
403
+ DesyContentChild({ onSetCallbackName: 'overrideFieldsetParams' })
404
+ ], TreeComponent.prototype, "fieldsetComponent", void 0);
405
+ __decorate([
406
+ DesyContentChild({ onSetCallbackName: 'overrideSearchBarParams' })
407
+ ], TreeComponent.prototype, "searchBarComponent", void 0);
408
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LWZvcm1zL2NvbXBvbmVudHMvdHJlZS90cmVlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUFFLFlBQVksRUFDN0IsVUFBVSxFQUNWLEtBQUssRUFHTCxNQUFNLEVBQ3NCLFNBQVMsRUFDdEMsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDekYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFDNUYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFFdEUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFFakUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFhdEUsTUFBTSxPQUFPLGFBQWMsU0FBUSxrQkFBeUI7SUFvQzFELFlBQW9CLGNBQWlDO1FBQ25ELEtBQUssRUFBRSxDQUFDO1FBRFUsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBM0I1Qyx1QkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDMUIsNEJBQXVCLEdBQUcsS0FBSyxDQUFDO1FBRWhDLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUk1Qiw0QkFBdUIsR0FBMkIsSUFBSSxZQUFZLEVBQVksQ0FBQztRQWFqRixjQUFTLEdBQXdCLEVBQUUsQ0FBQztRQUdwQyxrQ0FBNkIsR0FBbUIsRUFBRSxDQUFD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QUFXLEVBQUUsSUFBSSxFQUFFO2dDQUd4RCxlQUFlLFNBQUMsaUJBQWlCO2lDQUdqQyxlQUFlLFNBQUMsa0JBQWtCO3dCQUVsQyxTQUFTLFNBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTs7QUFaL0I7SUFEUixpQkFBaUIsQ0FBQywyQkFBMkIsQ0FBQzt3REFDVjtBQUlzQjtJQUQxRCxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQzsrQ0FDMkQ7QUFHOUQ7SUFEbkMsZ0JBQWdCLENBQUMsRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBQyxDQUFDO3dEQUNRO0FBR3BDO0lBRHBDLGdCQUFnQixDQUFDLEVBQUUsaUJBQWlCLEVBQUUseUJBQXlCLEVBQUMsQ0FBQzt5REFDVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZHJlbiwgRXZlbnRFbWl0dGVyLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXQsIFF1ZXJ5TGlzdCxcclxuICBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RGVzeUNvbnRlbnRDaGlsZH0gZnJvbSBcIi4uLy4uLy4uL3NoYXJlZC9kZWNvcmF0b3JzL2Rlc3ktY29udGVudC1jaGlsZC5kZWNvcmF0b3JcIjtcclxuaW1wb3J0IHtUcmVlSXRlbUNvbXBvbmVudH0gZnJvbSBcIi4vdHJlZS1pdGVtL3RyZWUtaXRlbS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtEZXN5T25JbnB1dENoYW5nZX0gZnJvbSBcIi4uLy4uLy4uL3NoYXJlZC9kZWNvcmF0b3JzL2Rlc3ktb24taW5wdXQtY2hhbmdlLmRlY29yYXRvclwiO1xyXG5pbXBvcnQge05HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtGb3JtRmllbGRDb21wb25lbnR9IGZyb20gXCIuLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge0ZpZWxkc2V0Q29tcG9uZW50fSBmcm9tIFwiLi4vZmllbGRzZXQvZmllbGRzZXQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7UXVpdFRyZWVJdGVtRm9jdXNPcHRpb25zfSBmcm9tIFwiLi9pbnRlcmZhY2VzL3F1aXQtdHJlZS1pdGVtLWZvY3VzLW9wdGlvbnNcIjtcclxuaW1wb3J0IHtTZWFyY2hCYXJDb21wb25lbnR9IGZyb20gXCIuLi9zZWFyY2gtYmFyL3NlYXJjaC1iYXIuY29tcG9uZW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2Rlc3ktdHJlZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVHJlZUNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJlZUNvbXBvbmVudCBleHRlbmRzIEZvcm1GaWVsZENvbXBvbmVudDxhbnlbXT4gaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBJbnB1dCgpIGlkUHJlZml4OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY2xhc3Nlczogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGZvcm1Hcm91cENsYXNzZXM6IHN0cmluZztcclxuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdHlwZTogJ3JhZGlvJ3wnY2hlY2tib3gnfG51bGx8dW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGRlc2NyaWJlZEJ5OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIGV4cGFuZGVkRmlyc3RMZXZlbCA9IHRydWU7XHJcbiAgQElucHV0KCkgZGVjb3VwbGVDaGlsZEZyb21QYXJlbnQgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgZGlzYWJsZURlZmF1bHRTZWFyY2ggPSBmYWxzZTtcclxuXHJcbiAgQERlc3lPbklucHV0Q2hhbmdlKCdvblNlYXJjaE1hdGNoVmFsdWVzQ2hhbmdlJylcclxuICBASW5wdXQoKSBzZWFyY2hNYXRjaFZhbHVlczogc3RyaW5nW107XHJcbiAgQE91dHB1dCgpIHNlYXJjaE1hdGNoVmFsdWVzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcclxuXHJcbiAgQERlc3lPbklucHV0Q2hhbmdlKCdjb25maWd1cmVBbGxJdGVtcycpXHJcbiAgQENvbnRlbnRDaGlsZHJlbihUcmVlSXRlbUNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBhbGxJdGVtczogUXVlcnlMaXN0PFRyZWVJdGVtQ29tcG9uZW50PjtcclxuXHJcbiAgQERlc3lDb250ZW50Q2hpbGQoeyBvblNldENhbGxiYWNrTmFtZTogJ292ZXJyaWRlRmllbGRzZXRQYXJhbXMnfSlcclxuICBAQ29udGVudENoaWxkcmVuKEZpZWxkc2V0Q29tcG9uZW50KSBmaWVsZHNldENvbXBvbmVudDogRmllbGRzZXRDb21wb25lbnQ7XHJcblxyXG4gIEBEZXN5Q29udGVudENoaWxkKHsgb25TZXRDYWxsYmFja05hbWU6ICdvdmVycmlkZVNlYXJjaEJhclBhcmFtcyd9KVxyXG4gIEBDb250ZW50Q2hpbGRyZW4oU2VhcmNoQmFyQ29tcG9uZW50KSBzZWFyY2hCYXJDb21wb25lbnQ6IFNlYXJjaEJhckNvbXBvbmVudDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnaW5uZXJIdG1sJywgeyBzdGF0aWM6IHRydWUgfSkgaW5uZXJIdG1sOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBwcml2YXRlIHJvb3RJdGVtczogVHJlZUl0ZW1Db21wb25lbnRbXSA9IFtdO1xyXG4gIHByaXZhdGUgX2l0ZW1MaXN0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBfYWxsSXRlbUxpc3RTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIF9pdGVtTGlzdENoZWNrZWRTdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIHByaXZhdGUgX2l0ZW1MaXN0UXVpdEZvY3VzU3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwcml2YXRlIF9hbHJlYWR5Q29uZmlndXJpbmdJdGVtcyA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbGVhclN1YnNjcmlwdGlvbnModGhpcy5faXRlbUxpc3RDaGVja2VkU3Vic2NyaXB0aW9ucyk7XHJcbiAgICB0aGlzLmNsZWFyU3Vic2NyaXB0aW9ucyh0aGlzLl9pdGVtTGlzdFF1aXRGb2N1c1N1YnNjcmlwdGlvbnMpO1xyXG4gICAgdGhpcy5faXRlbUxpc3RTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLl9hbGxJdGVtTGlzdFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHRoaXMuY29uZmlndXJlQWxsSXRlbXMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlIHNvYnJlc2NyaWJlIGVsIHZhbG9yIHBhcmEgYWN0dWFsaXphciBsb3MgaXRlbXNcclxuICAgKiBAT3ZlcnJpZGVcclxuICAgKi9cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuY29uZmlndXJlQWxsSXRlbXModHJ1ZSk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBFdmVudG9zXHJcbiAgICovXHJcblxyXG4gIC8qKlxyXG4gICAqIEFjdHVhbGl6YSBlbCB2YWxvciBkZWwgY29tcG9uZW50ZSBhbCBjaGVja3F1ZWFyc2UgdW4gw610ZW1cclxuICAgKiBAcGFyYW0gb3JpZ2luSXRlbSDDrXRlbSBtb2RpZmljYWRvXHJcbiAgICovXHJcbiAgdXBkYXRlVmFsdWVGcm9tSXRlbXMob3JpZ2luSXRlbT86IFRyZWVJdGVtQ29tcG9uZW50KTogdm9pZCB7XHJcblxyXG4gICAgLy8gU2kgZXMgcmFkaW8sIHNlIGRlc2FjdGl2YW4gZWwgcmVzdG8gZGUgaXRlbXMgY3VhbmRvIHNlIGFjdGl2YSBvdHJvIGl0ZW1cclxuICAgIGlmICh0aGlzLnR5cGUgIT09ICdjaGVja2JveCcpIHtcclxuICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldEFsbEl0ZW1zSW5PcmRlcigpO1xyXG4gICAgICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGlmIChpdGVtICE9PSBvcmlnaW5JdGVtICYmIGl0ZW0uY2hlY2tlZCkge1xyXG4gICAgICAgICAgaXRlbS5zZXRDaGVja2VkKGZhbHNlLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmICghdGhpcy5kZWNvdXBsZUNoaWxkRnJvbVBhcmVudCkge1xyXG4gICAgICB0aGlzLnJvb3RJdGVtcy5mb3JFYWNoKGl0ZW0gPT4gaXRlbS5zZXRDaGVja2VkQXV0b21hdGljYWxseURlcGVuZGluZ09uQ2hpbGRyZW4oKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy52YWx1ZSA9IFtdO1xyXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldEFsbEl0ZW1zSW5PcmRlcigpO1xyXG4gICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgaWYgKGl0ZW0uY2hlY2tlZCkge1xyXG4gICAgICAgIHRoaXMudmFsdWUucHVzaChpdGVtLnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VzdGlvbmEgY3VhbmRvIGVsIGZvY28gYWJhbmRvbmEgdW4gw610ZW0gZGVzZGUgdW4gZXZlbnRvIGRlIHRlY2xhZG8gY29udHJvbGFkb1xyXG4gICAqIEBwYXJhbSBvcHRpb25zXHJcbiAgICovXHJcbiAgaGFuZGxlSXRlbVF1aXRGb2N1cyhvcHRpb25zOiBRdWl0VHJlZUl0ZW1Gb2N1c09wdGlvbnMpOiB2b2lkIHtcclxuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMubmV4dEVsZW1lbnQpIHtcclxuICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldEFsbEl0ZW1zSW5PcmRlcigpO1xyXG4gICAgICBjb25zdCBmb2N1c2FibGVJdGVtcyA9IGl0ZW1zLmZpbHRlcihpdGVtID0+ICFpdGVtLmlzSGlkZGVuKCkgJiYgIWl0ZW0uZGlzYWJsZWQgJiYgaXRlbS5hbGxQYXJlbnRzRXhwYW5kZWQpO1xyXG4gICAgICBzd2l0Y2ggKG9wdGlvbnMubmV4dEVsZW1lbnQpIHtcclxuICAgICAgICBjYXNlIFwiZmlyc3RcIjpcclxuICAgICAgICAgIGZvY3VzYWJsZUl0ZW1zWzBdLmZvY3VzKCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFwibGFzdFwiOlxyXG4gICAgICAgICAgZm9jdXNhYmxlSXRlbXNbZm9jdXNhYmxlSXRlbXMubGVuZ3RoIC0gMV0uZm9jdXMoKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgXCJwYXJlbnRcIjpcclxuICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdWJMZXZlbCA9IG9wdGlvbnMuY3VycmVudEl0ZW0uc3ViTGV2ZWw7XHJcbiAgICAgICAgICBpZiAoY3VycmVudFN1YkxldmVsID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50SXRlbUluZGV4ID0gZm9jdXNhYmxlSXRlbXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbSA9PT0gb3B0aW9ucy5jdXJyZW50SXRlbSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGZvY3VzYWJsZUl0ZW1zLnNsaWNlKDAsIGN1cnJlbnRJdGVtSW5kZXgpLnJldmVyc2UoKS5maW5kKGl0ZW0gPT4gaXRlbS5zdWJMZXZlbCA8IGN1cnJlbnRTdWJMZXZlbCk7XHJcbiAgICAgICAgICAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgICAgICAgICBwYXJlbnQuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcImZpcnN0Q2hpbGRcIjpcclxuICAgICAgICBjYXNlIFwibmV4dFwiOlxyXG4gICAgICAgICAgaWYgKG9wdGlvbnMuY3VycmVudEl0ZW0pIHtcclxuICAgICAgICAgICAgbGV0IGN1cnJlbnRJdGVtSW5kZXggPSBmb2N1c2FibGVJdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtID09PSBvcHRpb25zLmN1cnJlbnRJdGVtKTtcclxuICAgICAgICAgICAgaWYgKGN1cnJlbnRJdGVtSW5kZXggPCBmb2N1c2FibGVJdGVtcy5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgICAgZm9jdXNhYmxlSXRlbXNbY3VycmVudEl0ZW1JbmRleCArIDFdLmZvY3VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgXCJwcmV2aW91c1wiOlxyXG4gICAgICAgICAgaWYgKG9wdGlvbnMuY3VycmVudEl0ZW0pIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudEl0ZW1JbmRleCA9IGZvY3VzYWJsZUl0ZW1zLmZpbmRJbmRleChpdGVtID0+IGl0ZW0gPT09IG9wdGlvbnMuY3VycmVudEl0ZW0pO1xyXG4gICAgICAgICAgICBpZiAoY3VycmVudEl0ZW1JbmRleCA+IDApIHtcclxuICAgICAgICAgICAgICBmb2N1c2FibGVJdGVtc1tjdXJyZW50SXRlbUluZGV4IC0gMV0uZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlYWxpemEgbGEgYsO6c3F1ZWRhIGludGVybmEgZGUgbG9zIGl0ZW1zIGVuIGVsIGNvbXBvbmVudGVcclxuICAgKiBAcGFyYW0gdmFsdWUgdGV4dG8gZGUgYsO6c3F1ZWRhXHJcbiAgICovXHJcbiAgb25TZWFyY2godmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVEZWZhdWx0U2VhcmNoKSB7XHJcbiAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hNYXRjaFZhbHVlcyA9IHRoaXMuYWxsSXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5tYXRjaGVzVGV4dCh2YWx1ZSkpLm1hcChpdGVtID0+IGl0ZW0udmFsdWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoTWF0Y2hWYWx1ZXMgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2VhcmNoTWF0Y2hWYWx1ZXNDaGFuZ2UuZW1pdCh0aGlzLnNlYXJjaE1hdGNoVmFsdWVzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICogRXZlbnRvcyBhbCBjYW1iaWFyIHByb3BpZWRhZGVzXHJcbiAgICovXHJcblxyXG4gIC8qKlxyXG4gICAqIENvbmZpZ3VyYSBsb3MgaXRlbXMgZGVsIMOhcmJvbFxyXG4gICAqL1xyXG4gIGNvbmZpZ3VyZUFsbEl0ZW1zKGlzVmFsdWVDaGFuZ2UgPSBmYWxzZSk6IHZvaWQge1xyXG5cclxuICAgIGlmICghdGhpcy5fYWxyZWFkeUNvbmZpZ3VyaW5nSXRlbXMpIHtcclxuICAgICAgdGhpcy5fYWxyZWFkeUNvbmZpZ3VyaW5nSXRlbXMgPSB0cnVlO1xyXG5cclxuICAgICAgLy8gTG8gcmVhbGl6YW1vcyBkZXNkZSB1biBzZXRUaW1lb3V0IHBhcmEgcXVlIHRvZG9zIGxvcyBpbnB1dHMsIHZhbHVlcyB5IGRlbcOhcyB2aXZhbiBlbiBwYXogeSBhcm1vbsOtYVxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5hbGxJdGVtcz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdGhpcy5jbGVhclN1YnNjcmlwdGlvbnModGhpcy5faXRlbUxpc3RDaGVja2VkU3Vic2NyaXB0aW9ucyk7XHJcbiAgICAgICAgICB0aGlzLmNsZWFyU3Vic2NyaXB0aW9ucyh0aGlzLl9pdGVtTGlzdFF1aXRGb2N1c1N1YnNjcmlwdGlvbnMpO1xyXG4gICAgICAgICAgdGhpcy5hbGxJdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBpdGVtLnBhcmVudE5hbWUgPSB0aGlzLm5hbWU7XHJcbiAgICAgICAgICAgIGl0ZW0udHlwZSA9IHRoaXMudHlwZTtcclxuICAgICAgICAgICAgaXRlbS5pbmhlcml0ZWREZXNjcmliZWRCeSA9IHRoaXMuZ2V0RGVzY3JpYmVkQnlGb3JJdGVtcygpO1xyXG4gICAgICAgICAgICBpdGVtLmluaGVyaXRlZEV4cGFuZGVkRmlyc3RMZXZlbCA9IHRoaXMuZXhwYW5kZWRGaXJzdExldmVsO1xyXG4gICAgICAgICAgICBpdGVtLmluaGVyaXRlZERlY291cGxlQ2hpbGRGcm9tUGFyZW50ID0gdGhpcy5kZWNvdXBsZUNoaWxkRnJvbVBhcmVudDtcclxuICAgICAgICAgICAgaWYgKCh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoID4gMCkgfHwgaXNWYWx1ZUNoYW5nZSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlTGlzdCA9IHRoaXMudmFsdWUgPyB0aGlzLnZhbHVlIDogW107XHJcbiAgICAgICAgICAgICAgaXRlbS5zZXRDaGVja2VkKCEhdmFsdWVMaXN0LmZpbmQodiA9PiB2ID09PSBpdGVtLnZhbHVlKSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaXRlbS5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBjaGVja2VkU3Vic2NyaXB0aW9uID0gaXRlbS5jaGVja2VkQ2hhbmdlRm9yVHJlZS5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVWYWx1ZUZyb21JdGVtcyhpdGVtKSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1MaXN0Q2hlY2tlZFN1YnNjcmlwdGlvbnMucHVzaChjaGVja2VkU3Vic2NyaXB0aW9uKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHF1aXRGb2N1c1N1YnNjcmlwdGlvbiA9IGl0ZW0ucXVpdEZvY3VzLnN1YnNjcmliZShvcHRpb25zID0+IHRoaXMuaGFuZGxlSXRlbVF1aXRGb2N1cyhvcHRpb25zKSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1MaXN0UXVpdEZvY3VzU3Vic2NyaXB0aW9ucy5wdXNoKHF1aXRGb2N1c1N1YnNjcmlwdGlvbik7XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICB0aGlzLnNldEVycm9ySW5JdGVtcyh0aGlzLmhhc0Vycm9yTWVzc2FnZUNvbXBvbmVudCgpKTtcclxuXHJcbiAgICAgICAgICB0aGlzLmJ1aWxkVHJlZSgpO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWVGcm9tSXRlbXMoKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5zZWFyY2hNYXRjaFZhbHVlcykge1xyXG4gICAgICAgICAgICB0aGlzLm9uU2VhcmNoTWF0Y2hWYWx1ZXNDaGFuZ2UoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFsbEl0ZW1zICYmICF0aGlzLl9hbGxJdGVtTGlzdFN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgdGhpcy5fYWxsSXRlbUxpc3RTdWJzY3JpcHRpb24gPSB0aGlzLmFsbEl0ZW1zLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMuY29uZmlndXJlQWxsSXRlbXMoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLl9hbHJlYWR5Q29uZmlndXJpbmdJdGVtcyA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1vZGlmaWNhIGxvcyBpdGVtcyB2aXNpYmxlcyBzZWfDum4gZWwgZmlsdHJvIGRlIGLDunNxdWVkYVxyXG4gICAqL1xyXG4gIG9uU2VhcmNoTWF0Y2hWYWx1ZXNDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5hbGxJdGVtcykge1xyXG4gICAgICB0aGlzLmFsbEl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS5pbmhlcml0ZWRNYXRjaGVzU2VhcmNoID0gdHJ1ZTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5zZWFyY2hNYXRjaFZhbHVlcyAhPT0gbnVsbCAmJiB0aGlzLnNlYXJjaE1hdGNoVmFsdWVzICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLmFsbEl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5zZWFyY2hNYXRjaFZhbHVlcy5maW5kSW5kZXgodmFsdWUgPT4gaXRlbS52YWx1ZSA9PT0gdmFsdWUpIDwgMCkge1xyXG4gICAgICAgICAgICBpdGVtLmluaGVyaXRlZE1hdGNoZXNTZWFyY2ggPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAqIEdldHRlcnMgYW5kIHNldHRlcnNcclxuICAgKi9cclxuXHJcbiAgZ2V0SWRQcmVmaXgoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmlkUHJlZml4ID8gdGhpcy5pZFByZWZpeCA6IHRoaXMubmFtZTtcclxuICB9XHJcblxyXG4gIGdldERlc2NyaWJlZEJ5KCk6IHN0cmluZyB7XHJcbiAgICBsZXQgZGVzY3JpYmVkQnkgPSAnJztcclxuICAgIGlmICh0aGlzLmRlc2NyaWJlZEJ5KSB7XHJcbiAgICAgIGRlc2NyaWJlZEJ5ID0gdGhpcy5kZXNjcmliZWRCeTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5oYXNIaW50Q29tcG9uZW50KCkgJiYgdGhpcy5oaW50Q29tcG9uZW50LmlkKSB7XHJcbiAgICAgIGRlc2NyaWJlZEJ5ID0gZGVzY3JpYmVkQnkgKyAnICcgKyB0aGlzLmhpbnRDb21wb25lbnQuaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaGFzRXJyb3JNZXNzYWdlQ29tcG9uZW50KCkgJiYgdGhpcy5lcnJvck1lc3NhZ2VDb21wb25lbnQuaWQpIHtcclxuICAgICAgZGVzY3JpYmVkQnkgPSBkZXNjcmliZWRCeSArICcgJyArIHRoaXMuZXJyb3JNZXNzYWdlQ29tcG9uZW50LmlkO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkZXNjcmliZWRCeTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERldnVlbHZlIGVsIHZhbG9yIGRlIGRlc2NyaWJlZEJ5IHF1ZSBzZSB0cmFuc21pdGlyw6EgYSBsb3MgaXRlbXNcclxuICAgKi9cclxuICBnZXREZXNjcmliZWRCeUZvckl0ZW1zKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgZGVzY3JpYmVkQnk7XHJcbiAgICBpZiAodGhpcy5oYXNGaWVsZHNldENvbXBvbmVudCgpKSB7XHJcbiAgICAgIGRlc2NyaWJlZEJ5ID0gdGhpcy5maWVsZHNldENvbXBvbmVudC5kZXNjcmliZWRCeTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRlc2NyaWJlZEJ5ID0gdGhpcy5nZXREZXNjcmliZWRCeSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkZXNjcmliZWRCeTtcclxuICB9XHJcblxyXG4gIGhhc0ZpZWxkc2V0Q29tcG9uZW50KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy5maWVsZHNldENvbXBvbmVudDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE92ZXJyaWRlcyBzdXBlci5nZXRIaW50SWQoKTtcclxuICAgKi9cclxuICBnZXRIaW50SWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmlkUHJlZml4ID8gdGhpcy5pZFByZWZpeCArICctaGludCcgOiB0aGlzLmhpbnRDb21wb25lbnQ/LmlkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3ZlcnJpZGVzIHN1cGVyLmdldEhpbnRJZCgpO1xyXG4gICAqL1xyXG4gIGdldEVycm9ySWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmlkUHJlZml4ID8gdGhpcy5pZFByZWZpeCArICctZXJyb3InIDogdGhpcy5lcnJvck1lc3NhZ2VDb21wb25lbnQ/LmlkO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBGdW5jaW9uZXMgcGFyYSByZWVtcGxhemFyIGVsIGNvbnRlbmlkbyBkZWwgZmllbGRzZXQsIGxhYmVsLCBoaW50IG8gZXJyb3JtZXNzYWdlXHJcbiAgICovXHJcblxyXG4gIG92ZXJyaWRlRmllbGRzZXRQYXJhbXMoZmllbGRzZXQ6IEZpZWxkc2V0Q29tcG9uZW50KTogdm9pZCB7XHJcbiAgICBmaWVsZHNldC5jYWxsZXIgPSB0aGlzLmlubmVySHRtbDtcclxuICAgIGZpZWxkc2V0LmVycm9ySWQgPSB0aGlzLmdldEVycm9ySWQoKTtcclxuICAgIGZpZWxkc2V0LmRlc2NyaWJlZEJ5ID0gdGhpcy5nZXREZXNjcmliZWRCeSgpO1xyXG4gICAgZmllbGRzZXQuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGVTZWFyY2hCYXJQYXJhbXMoc2VhcmNoYmFyOiBTZWFyY2hCYXJDb21wb25lbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRlZmF1bHRPbkNoYW5nZSA9IHNlYXJjaGJhci5vbkNoYW5nZTtcclxuICAgIGNvbnN0IG5ld09uQ2hhbmdlID0gdmFsdWUgPT4ge1xyXG4gICAgICB0aGlzLm9uU2VhcmNoKHZhbHVlKTtcclxuICAgICAgZGVmYXVsdE9uQ2hhbmdlKHZhbHVlKTtcclxuICAgIH1cclxuICAgIHNlYXJjaGJhci5yZWdpc3Rlck9uQ2hhbmdlKG5ld09uQ2hhbmdlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlIGxsYW1hIGRlc2RlIEZvcm1GaWVsZFxyXG4gICAqL1xyXG4gIG92ZXJyaWRlSGludFBhcmFtcyhoaW50KTogdm9pZCB7XHJcbiAgICBoaW50LmlkID0gdGhpcy5nZXRIaW50SWQoKTtcclxuICAgIGhpbnQuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2UgbGxhbWEgZGVzZGUgRm9ybUZpZWxkXHJcbiAgICovXHJcbiAgb3ZlcnJpZGVFcnJvck1lc3NhZ2VQYXJhbXMoZXJyb3JNZXNzYWdlKTogdm9pZCB7XHJcbiAgICBlcnJvck1lc3NhZ2UuaWQgPSB0aGlzLmdldEVycm9ySWQoKTtcclxuICAgIHRoaXMuc2V0RXJyb3JJbkl0ZW1zKHRoaXMuaGFzRXJyb3JNZXNzYWdlQ29tcG9uZW50KCkpO1xyXG4gICAgZXJyb3JNZXNzYWdlLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlIGxsYW1hIGRlc2RlIEZvcm1GaWVsZFxyXG4gICAqL1xyXG4gIG9uRGVsZXRlRXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRFcnJvckluSXRlbXModGhpcy5oYXNFcnJvck1lc3NhZ2VDb21wb25lbnQoKSk7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAqIE3DqXRvZG9zIHByaXZhZG9zXHJcbiAgICovXHJcblxyXG4gIC8qKlxyXG4gICAqIENvbmZpZ3VyYSBsYSBlc3RydWN0dXJhIGRlbCDDoXJib2xcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgYnVpbGRUcmVlKCk6IHZvaWQge1xyXG5cclxuICAgIC8vIFNlIGNyZWEgdW4gbWFwYSBwYXJhIHRlbmVyIGFjY2VzaWJsZXMgbG9zIGl0ZW1zIHBvciBrZXkgeSBzZSBib3JyYW4gbG9zIGxpc3RhZG9zIGV4aXN0ZW50ZXNcclxuICAgIGNvbnN0IGl0ZW1NYXAgPSB7fVxyXG4gICAgdGhpcy5yb290SXRlbXMgPSBbXTtcclxuICAgIHRoaXMuYWxsSXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgY29uc3Qga2V5ID0gaXRlbS5nZXRLZXkoKTtcclxuICAgICAgaXRlbU1hcFtrZXldID0gaXRlbTtcclxuICAgICAgaWYgKGl0ZW0uc3ViKSB7XHJcbiAgICAgICAgaXRlbS5zdWIuaXRlbUxpc3QgPSBbXTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gU2UgYcOxYWRlbiBsb3MgaXRlbXMgYSBsb3MgbGlzdGFkb3MgY29ycmVzcG9uZGllbnRlc1xyXG4gICAgdGhpcy5hbGxJdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICBjb25zdCBwYXJlbnRLZXkgPSBpdGVtLmdldFBhcmVudEtleSgpO1xyXG4gICAgICBpZiAocGFyZW50S2V5ID09PSAncm9vdCcpIHtcclxuICAgICAgICB0aGlzLnJvb3RJdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcmVudEtleSkge1xyXG4gICAgICAgIGNvbnN0IHN1YiA9IGl0ZW1NYXBbcGFyZW50S2V5XS5zdWI7XHJcbiAgICAgICAgaWYgKHN1Yikge1xyXG4gICAgICAgICAgc3ViLml0ZW1MaXN0LnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBTZSBjb25maWd1cmFuIGxvcyBpdGVtcyBkZXNkZSByb290XHJcbiAgICBsZXQgb3JkZXIgPSAwO1xyXG4gICAgdGhpcy5yb290SXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgaXRlbS5zZXRTdWJMZXZlbCgwKTtcclxuICAgICAgaXRlbS5zZXREZWZhdWx0SWQoYCR7dGhpcy5pZFByZWZpeH0tJHtpbmRleH1gKTtcclxuICAgICAgaXRlbS5yZWZyZXNoQWxsUGFyZW50c0V4cGFuZGVkUmVjdXJzaXZlKHRydWUpO1xyXG4gICAgICBpZiAoIXRoaXMuZGVjb3VwbGVDaGlsZEZyb21QYXJlbnQpIHtcclxuICAgICAgICBpdGVtLnNldENoZWNrZWRBdXRvbWF0aWNhbGx5RGVwZW5kaW5nT25DaGlsZHJlbigpO1xyXG4gICAgICB9XHJcbiAgICAgIG9yZGVyID0gaXRlbS5zZXRPcmRlclJlY3Vyc2l2ZWx5KG9yZGVyKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2kgdGllbmUgdW4gbWVuc2FqZSBkZSBlcnJvciwgc2UgaW5kaWNhIGEgbG9zIGl0ZW1zXHJcbiAgICogQHBhcmFtIGhhc0Vycm9yXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIHNldEVycm9ySW5JdGVtcyhoYXNFcnJvcjogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYWxsSXRlbXM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5hbGxJdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uaW5oZXJpdGVkSGFzRXJyb3IgPSBoYXNFcnJvcjtcclxuICAgICAgICBpdGVtLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMaW1waWEgdW4gbGlzdGFkbyBkZSBzdWJzY3JpcGNpb25lc1xyXG4gICAqIEBwYXJhbSBzdWJzY3JpcHRpb25MaXN0XHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIGNsZWFyU3Vic2NyaXB0aW9ucyhzdWJzY3JpcHRpb25MaXN0OiBTdWJzY3JpcHRpb25bXSk6IHZvaWQge1xyXG4gICAgaWYgKHN1YnNjcmlwdGlvbkxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBzdWJzY3JpcHRpb25MaXN0LmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgICBzdWJzY3JpcHRpb25MaXN0LnNwbGljZSgwLCBzdWJzY3JpcHRpb25MaXN0Lmxlbmd0aClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERldnVlbHZlIGxvcyBpdGVtcyBkZWwgw6FyYm9sIG9yZGVuYWRvc1xyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRBbGxJdGVtc0luT3JkZXIoKTogVHJlZUl0ZW1Db21wb25lbnRbXSB7XHJcbiAgICBsZXQgbGlzdCA9IFtdO1xyXG4gICAgaWYgKHRoaXMuYWxsSXRlbXMpIHtcclxuICAgICAgbGlzdCA9IHRoaXMuYWxsSXRlbXMudG9BcnJheSgpLnNvcnQoKGEsIGIpID0+IGEub3JkZXJJblRyZWUgPiBiLm9yZGVySW5UcmVlID8gMSA6IC0xKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxpc3RcclxuICB9XHJcbn1cclxuIl19
@@ -37,6 +37,11 @@ import { InputGroupInputComponent } from './components/input-group/input-group-i
37
37
  import { InputGroupSelectComponent } from './components/input-group/input-group-select/input-group-select.component';
38
38
  import { OptionGroupComponent } from './components/select/option-group/option-group.component';
39
39
  import { SelectItemComponent } from './components/select/select-item/select-item.component';
40
+ import { TreeComponent } from './components/tree/tree.component';
41
+ import { TreeCheckboxComponent } from './components/tree/tree-checkbox/tree-checkbox.component';
42
+ import { TreeSubComponent } from './components/tree/tree-sub/tree-sub.component';
43
+ import { TreeItemComponent } from './components/tree/tree-item/tree-item.component';
44
+ import { TreeItemsGeneratorComponent } from './components/tree/tree-items-generator/tree-items-generator.component';
40
45
  export class DesyFormsModule {
41
46
  }
42
47
  DesyFormsModule.decorators = [
@@ -73,6 +78,11 @@ DesyFormsModule.decorators = [
73
78
  DateInputDayComponent,
74
79
  DateInputMonthComponent,
75
80
  DateInputYearComponent,
81
+ TreeComponent,
82
+ TreeSubComponent,
83
+ TreeItemComponent,
84
+ TreeCheckboxComponent,
85
+ TreeItemsGeneratorComponent,
76
86
  ConditionDirective,
77
87
  ],
78
88
  imports: [
@@ -109,8 +119,12 @@ DesyFormsModule.decorators = [
109
119
  DateInputDayComponent,
110
120
  DateInputMonthComponent,
111
121
  DateInputYearComponent,
122
+ TreeComponent,
123
+ TreeSubComponent,
124
+ TreeItemComponent,
125
+ TreeItemsGeneratorComponent,
112
126
  ConditionDirective
113
127
  ]
114
128
  },] }
115
129
  ];
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzeS1mb3Jtcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LWZvcm1zL2Rlc3ktZm9ybXMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsY0FBYztBQUNkLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDM0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDckYs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QixrQkFBa0I7b0JBQ2xCLGVBQWU7b0JBQ2Ysb0JBQW9CO29CQUNwQixxQkFBcUI7b0JBQ3JCLHVCQUF1QjtvQkFDdkIsc0JBQXNCO29CQUV0QixrQkFBa0I7aUJBQ25CO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU2hhcmVkTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NoYXJlZC5tb2R1bGUnO1xyXG4vLyBjb21wb25lbnRlc1xyXG5pbXBvcnQgeyBUZW1wbGF0ZURyaXZlbldyYXBwZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGVtcGxhdGUtZHJpdmVuLXdyYXBwZXIvdGVtcGxhdGUtZHJpdmVuLXdyYXBwZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBIaW50Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2hpbnQvaGludC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMYWJlbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9sYWJlbC9sYWJlbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFcnJvck1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZXJyb3ItbWVzc2FnZS9lcnJvci1tZXNzYWdlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpZWxkc2V0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2ZpZWxkc2V0L2ZpZWxkc2V0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExlZ2VuZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9maWVsZHNldC9sZWdlbmQvbGVnZW5kLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRleHRhcmVhQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RleHRhcmVhL3RleHRhcmVhLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENoYXJhY3RlckNvdW50Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NoYXJhY3Rlci1jb3VudC9jaGFyYWN0ZXItY291bnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJbnB1dEdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2lucHV0LWdyb3VwL2lucHV0LWdyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJhZGlvc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yYWRpb3MvcmFkaW9zLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJhZGlvSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yYWRpb3MvcmFkaW8taXRlbS9yYWRpby1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENoZWNrYm94ZXNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2hlY2tib3hlcy9jaGVja2JveGVzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENoZWNrYm94SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jaGVja2JveGVzL2NoZWNrYm94LWl0ZW0vY2hlY2tib3gtaXRlbS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEYXRlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNlYXJjaEJhckNvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL3NlYXJjaC1iYXIvc2VhcmNoLWJhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBPcHRpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc2VsZWN0L29wdGlvbi9vcHRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGF0ZUlucHV0RGF5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC1kYXkvZGF0ZS1pbnB1dC1kYXkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGF0ZUlucHV0TW9udGhDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LW1vbnRoL2RhdGUtaW5wdXQtbW9udGguY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGF0ZUlucHV0WWVhckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9kYXRlLWlucHV0L2RhdGUtaW5wdXQteWVhci9kYXRlLWlucHV0LXllYXIuY29tcG9uZW50JztcclxuXHJcbi8vIGRpcmVjdGl2YXNcclxuaW1wb3J0IHsgQ29uZGl0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2NvbmRpdGlvbi5kaXJlY3RpdmUnO1xyXG5cclxuaW1wb3J0IHtEZXN5Q29tbW9uc01vZHVsZX0gZnJvbSAnLi4vZGVzeS1jb21tb25zL2Rlc3ktY29tbW9ucy5tb2R1bGUnO1xyXG5pbXBvcnQgeyBJbnB1dEdyb3VwSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9pbnB1dC1ncm91cC9pbnB1dC1ncm91cC1pdGVtL2lucHV0LWdyb3VwLWl0ZW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGF0ZUlucHV0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9kYXRlLWlucHV0L2RhdGUtaW5wdXQtaXRlbS9kYXRlLWlucHV0LWl0ZW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW5wdXRHcm91cERpdmlkZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvaW5wdXQtZ3JvdXAvaW5wdXQtZ3JvdXAtZGl2aWRlci9pbnB1dC1ncm91cC1kaXZpZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhdGVJbnB1dERpdmlkZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LWRpdmlkZXIvZGF0ZS1pbnB1dC1kaXZpZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElucHV0R3JvdXBJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9pbnB1dC1ncm91cC9pbnB1dC1ncm91cC1pbnB1dC9pbnB1dC1ncm91cC1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJbnB1dEdyb3VwU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2lucHV0LWdyb3VwL2lucHV0LWdyb3VwLXNlbGVjdC9pbnB1dC1ncm91cC1zZWxlY3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT3B0aW9uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc2VsZWN0L29wdGlvbi1ncm91cC9vcHRpb24tZ3JvdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2VsZWN0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0LWl0ZW0vc2VsZWN0LWl0ZW0uY29tcG9uZW50JztcclxuXHJcblxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIFRlbXBsYXRlRHJpdmVuV3JhcHBlckNvbXBvbmVudCxcclxuICAgIEZvcm1GaWVsZENvbXBvbmVudCxcclxuICAgIEhpbnRDb21wb25lbnQsXHJcbiAgICBMYWJlbENvbXBvbmVudCxcclxuICAgIEVycm9yTWVzc2FnZUNvbXBvbmVudCxcclxuICAgIEZpZWxkc2V0Q29tcG9uZW50LFxyXG4gICAgTGVnZW5kQ29tcG9uZW50LFxyXG4gICAgVGV4dGFyZWFDb21wb25lbnQsXHJcbiAgICBDaGFyYWN0ZXJDb3VudENvbXBvbmVudCxcclxuICAgIElucHV0Q29tcG9uZW50LFxyXG4gICAgU2VsZWN0Q29tcG9uZW50LFxyXG4gICAgRmlsZVVwbG9hZENvbXBvbmVudCxcclxuICAgIElucHV0R3JvdXBDb21wb25lbnQsXHJcbiAgICBJbnB1dEdyb3VwSXRlbUNvbXBvbmVudCxcclxuICAgIERhdGVJbnB1dEl0ZW1Db21wb25lbnQsXHJcbiAgICBJbnB1dEdyb3VwRGl2aWRlckNvbXBvbmVudCxcclxuICAgIERhdGVJbnB1dERpdmlkZXJDb21wb25lbnQsXHJcbiAgICBJbnB1dEdyb3VwSW5wdXRDb21wb25lbnQsXHJcbiAgICBJbnB1dEdyb3VwU2VsZWN0Q29tcG9uZW50LFxyXG4gICAgUmFkaW9zQ29tcG9uZW50LFxyXG4gICAgUmFkaW9JdGVtQ29tcG9uZW50LFxyXG4gICAgQ2hlY2tib3hlc0NvbXBvbmVudCxcclxuICAgIENoZWNrYm94SXRlbUNvbXBvbmVudCxcclxuICAgIERhdGVJbnB1dENvbXBvbmVudCxcclxuICAgIFNlYXJjaEJhckNvbXBvbmVudCxcclxuICAgIE9wdGlvbkNvbXBvbmVudCxcclxuICAgIE9wdGlvbkdyb3VwQ29tcG9uZW50LFxyXG4gICAgU2VsZWN0SXRlbUNvbXBvbmVudCxcclxuICAgIERhdGVJbnB1dERheUNvbXBvbmVudCxcclxuICAgIERhdGVJbnB1dE1vbnRoQ29tcG9uZW50LFxyXG4gICAgRGF0ZUlucHV0WWVhckNvbXBvbmVudCxcclxuXHJcbiAgICBDb25kaXRpb25EaXJlY3RpdmUsXHJcblxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgU2hhcmVkTW9kdWxlLFxyXG4gICAgRGVzeUNvbW1vbnNNb2R1bGUsXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBIaW50Q29tcG9uZW50LFxyXG4gICAgTGFiZWxDb21wb25lbnQsXHJcbiAgICBFcnJvck1lc3NhZ2VDb21wb25lbnQsXHJcbiAgICBGaWVsZHNldENvbXBvbmVudCxcclxuICAgIExlZ2VuZENvbXBvbmVudCxcclxuICAgIFRleHRhcmVhQ29tcG9uZW50LFxyXG4gICAgQ2hhcmFjdGVyQ291bnRDb21wb25lbnQsXHJcbiAgICBJbnB1dENvbXBvbmVudCxcclxuICAgIFNlbGVjdENvbXBvbmVudCxcclxuICAgIEZpbGVVcGxvYWRDb21wb25lbnQsXHJcbiAgICBJbnB1dEdyb3VwQ29tcG9uZW50LFxyXG4gICAgSW5wdXRHcm91cERpdmlkZXJDb21wb25lbnQsXHJcbiAgICBEYXRlSW5wdXREaXZpZGVyQ29tcG9uZW50LFxyXG4gICAgSW5wdXRHcm91cElucHV0Q29tcG9uZW50LFxyXG4gICAgSW5wdXRHcm91cFNlbGVjdENvbXBvbmVudCxcclxuICAgIFJhZGlvc0NvbXBvbmVudCxcclxuICAgIFJhZGlvSXRlbUNvbXBvbmVudCxcclxuICAgIENoZWNrYm94ZXNDb21wb25lbnQsXHJcbiAgICBDaGVja2JveEl0ZW1Db21wb25lbnQsXHJcbiAgICBEYXRlSW5wdXRDb21wb25lbnQsXHJcbiAgICBTZWFyY2hCYXJDb21wb25lbnQsXHJcbiAgICBPcHRpb25Db21wb25lbnQsXHJcbiAgICBPcHRpb25Hcm91cENvbXBvbmVudCxcclxuICAgIERhdGVJbnB1dERheUNvbXBvbmVudCxcclxuICAgIERhdGVJbnB1dE1vbnRoQ29tcG9uZW50LFxyXG4gICAgRGF0ZUlucHV0WWVhckNvbXBvbmVudCxcclxuXHJcbiAgICBDb25kaXRpb25EaXJlY3RpdmVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZXN5Rm9ybXNNb2R1bGUgeyB9XHJcbiJdfQ==
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzeS1mb3Jtcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LWZvcm1zL2Rlc3ktZm9ybXMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsY0FBYztBQUNkLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDM0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDckYs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O2lCQUNsQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsYUFBYTtvQkFDYixjQUFjO29CQUNkLHFCQUFxQjtvQkFDckIsaUJBQWlCO29CQUNqQixlQUFlO29CQUNmLGlCQUFpQjtvQkFDakIsdUJBQXVCO29CQUN2QixjQUFjO29CQUNkLGVBQWU7b0JBQ2YsbUJBQW1CO29CQUNuQixtQkFBbUI7b0JBQ25CLDBCQUEwQjtvQkFDMUIseUJBQXlCO29CQUN6Qix3QkFBd0I7b0JBQ3hCLHlCQUF5QjtvQkFDekIsZUFBZTtvQkFDZixrQkFBa0I7b0JBQ2xCLG1CQUFtQjtvQkFDbkIscUJBQXFCO29CQUNyQixrQkFBa0I7b0JBQ2xCLGtCQUFrQjtvQkFDbEIsZUFBZTtvQkFDZixvQkFBb0I7b0JBQ3BCLHFCQUFxQjtvQkFDckIsdUJBQXVCO29CQUN2QixzQkFBc0I7b0JBQ3RCLGFBQWE7b0JBQ2IsZ0JBQWdCO29CQUNoQixpQkFBaUI7b0JBQ2pCLDJCQUEyQjtvQkFFM0Isa0JBQWtCO2lCQUNuQjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcclxuLy8gY29tcG9uZW50ZXNcclxuaW1wb3J0IHsgVGVtcGxhdGVEcml2ZW5XcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RlbXBsYXRlLWRyaXZlbi13cmFwcGVyL3RlbXBsYXRlLWRyaXZlbi13cmFwcGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSGludENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9oaW50L2hpbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGFiZWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbGFiZWwvbGFiZWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRXJyb3JNZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Vycm9yLW1lc3NhZ2UvZXJyb3ItbWVzc2FnZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGaWVsZHNldENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9maWVsZHNldC9maWVsZHNldC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMZWdlbmRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZmllbGRzZXQvbGVnZW5kL2xlZ2VuZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUZXh0YXJlYUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90ZXh0YXJlYS90ZXh0YXJlYS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGFyYWN0ZXJDb3VudENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jaGFyYWN0ZXItY291bnQvY2hhcmFjdGVyLWNvdW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2lucHV0L2lucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW5wdXRHcm91cENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9pbnB1dC1ncm91cC9pbnB1dC1ncm91cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSYWRpb3NDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmFkaW9zL3JhZGlvcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSYWRpb0l0ZW1Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmFkaW9zL3JhZGlvLWl0ZW0vcmFkaW8taXRlbS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGVja2JveGVzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NoZWNrYm94ZXMvY2hlY2tib3hlcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGVja2JveEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2hlY2tib3hlcy9jaGVja2JveC1pdGVtL2NoZWNrYm94LWl0ZW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGF0ZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZWFyY2hCYXJDb21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50cy9zZWFyY2gtYmFyL3NlYXJjaC1iYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NlbGVjdC9vcHRpb24vb3B0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhdGVJbnB1dERheUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9kYXRlLWlucHV0L2RhdGUtaW5wdXQtZGF5L2RhdGUtaW5wdXQtZGF5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhdGVJbnB1dE1vbnRoQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC1tb250aC9kYXRlLWlucHV0LW1vbnRoLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhdGVJbnB1dFllYXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LXllYXIvZGF0ZS1pbnB1dC15ZWFyLmNvbXBvbmVudCc7XHJcblxyXG4vLyBkaXJlY3RpdmFzXHJcbmltcG9ydCB7IENvbmRpdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9jb25kaXRpb24uZGlyZWN0aXZlJztcclxuXHJcbmltcG9ydCB7IERlc3lDb21tb25zTW9kdWxlIH0gZnJvbSAnLi4vZGVzeS1jb21tb25zL2Rlc3ktY29tbW9ucy5tb2R1bGUnO1xyXG5pbXBvcnQgeyBJbnB1dEdyb3VwSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9pbnB1dC1ncm91cC9pbnB1dC1ncm91cC1pdGVtL2lucHV0LWdyb3VwLWl0ZW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGF0ZUlucHV0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9kYXRlLWlucHV0L2RhdGUtaW5wdXQtaXRlbS9kYXRlLWlucHV0LWl0ZW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW5wdXRHcm91cERpdmlkZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvaW5wdXQtZ3JvdXAvaW5wdXQtZ3JvdXAtZGl2aWRlci9pbnB1dC1ncm91cC1kaXZpZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhdGVJbnB1dERpdmlkZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LWRpdmlkZXIvZGF0ZS1pbnB1dC1kaXZpZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElucHV0R3JvdXBJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9pbnB1dC1ncm91cC9pbnB1dC1ncm91cC1pbnB1dC9pbnB1dC1ncm91cC1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJbnB1dEdyb3VwU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2lucHV0LWdyb3VwL2lucHV0LWdyb3VwLXNlbGVjdC9pbnB1dC1ncm91cC1zZWxlY3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT3B0aW9uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc2VsZWN0L29wdGlvbi1ncm91cC9vcHRpb24tZ3JvdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2VsZWN0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0LWl0ZW0vc2VsZWN0LWl0ZW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHJlZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90cmVlL3RyZWUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHJlZUNoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RyZWUvdHJlZS1jaGVja2JveC90cmVlLWNoZWNrYm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyZWVTdWJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdHJlZS90cmVlLXN1Yi90cmVlLXN1Yi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmVlSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90cmVlL3RyZWUtaXRlbS90cmVlLWl0ZW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHJlZUl0ZW1zR2VuZXJhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RyZWUvdHJlZS1pdGVtcy1nZW5lcmF0b3IvdHJlZS1pdGVtcy1nZW5lcmF0b3IuY29tcG9uZW50JztcclxuXHJcblxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIFRlbXBsYXRlRHJpdmVuV3JhcHBlckNvbXBvbmVudCxcclxuICAgIEZvcm1GaWVsZENvbXBvbmVudCxcclxuICAgIEhpbnRDb21wb25lbnQsXHJcbiAgICBMYWJlbENvbXBvbmVudCxcclxuICAgIEVycm9yTWVzc2FnZUNvbXBvbmVudCxcclxuICAgIEZpZWxkc2V0Q29tcG9uZW50LFxyXG4gICAgTGVnZW5kQ29tcG9uZW50LFxyXG4gICAgVGV4dGFyZWFDb21wb25lbnQsXHJcbiAgICBDaGFyYWN0ZXJDb3VudENvbXBvbmVudCxcclxuICAgIElucHV0Q29tcG9uZW50LFxyXG4gICAgU2VsZWN0Q29tcG9uZW50LFxyXG4gICAgRmlsZVVwbG9hZENvbXBvbmVudCxcclxuICAgIElucHV0R3JvdXBDb21wb25lbnQsXHJcbiAgICBJbnB1dEdyb3VwSXRlbUNvbXBvbmVudCxcclxuICAgIERhdGVJbnB1dEl0ZW1Db21wb25lbnQsXHJcbiAgICBJbnB1dEdyb3VwRGl2aWRlckNvbXBvbmVudCxcclxuICAgIERhdGVJbnB1dERpdmlkZXJDb21wb25lbnQsXHJcbiAgICBJbnB1dEdyb3VwSW5wdXRDb21wb25lbnQsXHJcbiAgICBJbnB1dEdyb3VwU2VsZWN0Q29tcG9uZW50LFxyXG4gICAgUmFkaW9zQ29tcG9uZW50LFxyXG4gICAgUmFkaW9JdGVtQ29tcG9uZW50LFxyXG4gICAgQ2hlY2tib3hlc0NvbXBvbmVudCxcclxuICAgIENoZWNrYm94SXRlbUNvbXBvbmVudCxcclxuICAgIERhdGVJbnB1dENvbXBvbmVudCxcclxuICAgIFNlYXJjaEJhckNvbXBvbmVudCxcclxuICAgIE9wdGlvbkNvbXBvbmVudCxcclxuICAgIE9wdGlvbkdyb3VwQ29tcG9uZW50LFxyXG4gICAgU2VsZWN0SXRlbUNvbXBvbmVudCxcclxuICAgIERhdGVJbnB1dERheUNvbXBvbmVudCxcclxuICAgIERhdGVJbnB1dE1vbnRoQ29tcG9uZW50LFxyXG4gICAgRGF0ZUlucHV0WWVhckNvbXBvbmVudCxcclxuICAgIFRyZWVDb21wb25lbnQsXHJcbiAgICBUcmVlU3ViQ29tcG9uZW50LFxyXG4gICAgVHJlZUl0ZW1Db21wb25lbnQsXHJcbiAgICBUcmVlQ2hlY2tib3hDb21wb25lbnQsXHJcbiAgICBUcmVlSXRlbXNHZW5lcmF0b3JDb21wb25lbnQsXHJcblxyXG4gICAgQ29uZGl0aW9uRGlyZWN0aXZlLFxyXG5cclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFNoYXJlZE1vZHVsZSxcclxuICAgIERlc3lDb21tb25zTW9kdWxlLFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgSGludENvbXBvbmVudCxcclxuICAgIExhYmVsQ29tcG9uZW50LFxyXG4gICAgRXJyb3JNZXNzYWdlQ29tcG9uZW50LFxyXG4gICAgRmllbGRzZXRDb21wb25lbnQsXHJcbiAgICBMZWdlbmRDb21wb25lbnQsXHJcbiAgICBUZXh0YXJlYUNvbXBvbmVudCxcclxuICAgIENoYXJhY3RlckNvdW50Q29tcG9uZW50LFxyXG4gICAgSW5wdXRDb21wb25lbnQsXHJcbiAgICBTZWxlY3RDb21wb25lbnQsXHJcbiAgICBGaWxlVXBsb2FkQ29tcG9uZW50LFxyXG4gICAgSW5wdXRHcm91cENvbXBvbmVudCxcclxuICAgIElucHV0R3JvdXBEaXZpZGVyQ29tcG9uZW50LFxyXG4gICAgRGF0ZUlucHV0RGl2aWRlckNvbXBvbmVudCxcclxuICAgIElucHV0R3JvdXBJbnB1dENvbXBvbmVudCxcclxuICAgIElucHV0R3JvdXBTZWxlY3RDb21wb25lbnQsXHJcbiAgICBSYWRpb3NDb21wb25lbnQsXHJcbiAgICBSYWRpb0l0ZW1Db21wb25lbnQsXHJcbiAgICBDaGVja2JveGVzQ29tcG9uZW50LFxyXG4gICAgQ2hlY2tib3hJdGVtQ29tcG9uZW50LFxyXG4gICAgRGF0ZUlucHV0Q29tcG9uZW50LFxyXG4gICAgU2VhcmNoQmFyQ29tcG9uZW50LFxyXG4gICAgT3B0aW9uQ29tcG9uZW50LFxyXG4gICAgT3B0aW9uR3JvdXBDb21wb25lbnQsXHJcbiAgICBEYXRlSW5wdXREYXlDb21wb25lbnQsXHJcbiAgICBEYXRlSW5wdXRNb250aENvbXBvbmVudCxcclxuICAgIERhdGVJbnB1dFllYXJDb21wb25lbnQsXHJcbiAgICBUcmVlQ29tcG9uZW50LFxyXG4gICAgVHJlZVN1YkNvbXBvbmVudCxcclxuICAgIFRyZWVJdGVtQ29tcG9uZW50LFxyXG4gICAgVHJlZUl0ZW1zR2VuZXJhdG9yQ29tcG9uZW50LFxyXG5cclxuICAgIENvbmRpdGlvbkRpcmVjdGl2ZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIERlc3lGb3Jtc01vZHVsZSB7IH1cclxuIl19
@@ -3,6 +3,7 @@ import { Component, ContentChildren, Input } from '@angular/core';
3
3
  import { DesyContentChild } from '../../../../shared/decorators/desy-content-child.decorator';
4
4
  import { NavComponent } from '../../nav/nav.component';
5
5
  import { AccessibilityComponent } from "../../../../shared/components";
6
+ import { ContentComponent } from "../../../../desy-commons/components/content/content.component";
6
7
  export class HeaderDropdownComponent extends AccessibilityComponent {
7
8
  overrideNavParams(nav) {
8
9
  nav.hasNav = true;
@@ -18,7 +19,7 @@ export class HeaderDropdownComponent extends AccessibilityComponent {
18
19
  HeaderDropdownComponent.decorators = [
19
20
  { type: Component, args: [{
20
21
  selector: 'desy-header-dropdown',
21
- template: "<div class=\"ml-4 flex items-center lg:ml-6\">\r\n <div class=\"ml-3 relative\">\r\n <desy-dropdown [hiddenText]=\"hiddenText\"\r\n [classesContainer]=\"classesContainer ? classesContainer : 'hidden lg:block'\"\r\n [classesTooltip]=\"classesTooltip\"\r\n [classes]=\"classes ? classes : 'c-dropdown--header'\"\r\n [caller]=\"caller\"\r\n\r\n [role]=\"role\"\r\n [ariaLabel]=\"ariaLabel\"\r\n [ariaDescribedBy]=\"ariaDescribedBy\"\r\n [ariaLabelledBy]=\"ariaLabelledBy\"\r\n [ariaHidden]=\"ariaHidden\"\r\n [ariaDisabled]=\"ariaDisabled\"\r\n [ariaControls]=\"ariaControls\"\r\n [ariaCurrent]=\"ariaCurrent\"\r\n [ariaLive]=\"ariaLive\"\r\n [ariaExpanded]=\"ariaExpanded\"\r\n [ariaErrorMessage]=\"ariaErrorMessage\"\r\n [ariaHasPopup]=\"ariaHasPopup\"\r\n [tabindex]=\"tabindex\">\r\n <ng-content></ng-content>\r\n </desy-dropdown>\r\n <ng-template #caller>\r\n <ng-content select=\"desy-nav\"></ng-content>\r\n </ng-template>\r\n </div>\r\n</div>\r\n"
22
+ template: "<div class=\"ml-4 flex items-center lg:ml-6\">\r\n <div class=\"ml-3 relative\">\r\n <desy-dropdown [hiddenText]=\"hiddenText\"\r\n [classesContainer]=\"classesContainer ? classesContainer : 'hidden lg:block'\"\r\n [classesTooltip]=\"classesTooltip\"\r\n [classes]=\"classes ? classes : 'c-dropdown--header'\"\r\n [caller]=\"caller\"\r\n\r\n [role]=\"role\"\r\n [ariaLabel]=\"ariaLabel\"\r\n [ariaDescribedBy]=\"ariaDescribedBy\"\r\n [ariaLabelledBy]=\"ariaLabelledBy\"\r\n [ariaHidden]=\"ariaHidden\"\r\n [ariaDisabled]=\"ariaDisabled\"\r\n [ariaControls]=\"ariaControls\"\r\n [ariaCurrent]=\"ariaCurrent\"\r\n [ariaLive]=\"ariaLive\"\r\n [ariaExpanded]=\"ariaExpanded\"\r\n [ariaErrorMessage]=\"ariaErrorMessage\"\r\n [ariaHasPopup]=\"ariaHasPopup\"\r\n [tabindex]=\"tabindex\">\r\n <ng-content></ng-content>\r\n </desy-dropdown>\r\n <ng-template #caller>\r\n <ng-container *desyCustomInnerContent=\"{ component: contentComponent, template: templateNav }\"></ng-container>\r\n </ng-template>\r\n </div>\r\n</div>\r\n\r\n<ng-template #templateNav>\r\n <ng-content select=\"desy-nav\"></ng-content>\r\n</ng-template>\r\n"
22
23
  },] }
23
24
  ];
24
25
  HeaderDropdownComponent.propDecorators = {
@@ -26,9 +27,13 @@ HeaderDropdownComponent.propDecorators = {
26
27
  classesContainer: [{ type: Input }],
27
28
  classesTooltip: [{ type: Input }],
28
29
  classes: [{ type: Input }],
29
- nav: [{ type: ContentChildren, args: [NavComponent,] }]
30
+ nav: [{ type: ContentChildren, args: [NavComponent,] }],
31
+ contentComponent: [{ type: ContentChildren, args: [ContentComponent,] }]
30
32
  };
31
33
  __decorate([
32
34
  DesyContentChild({ onSetCallbackName: 'overrideNavParams' })
33
35
  ], HeaderDropdownComponent.prototype, "nav", void 0);
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktbmF2L2NvbXBvbmVudHMvaGVhZGVyL2hlYWRlci1kcm9wZG93bi9oZWFkZXItZHJvcGRvd24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDNUYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBTXJFLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxzQkFBc0I7SUFVakUsaUJBQWlCLENBQUMsR0FBaUI7UUFDakMsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbEIsR0FBRyxDQUFDLFFBQVEsR0FBRywwQkFBMEIsQ0FBQztRQUMxQyxHQUFHLENBQUMsU0FBUyxHQUFHLGlCQUFpQixDQUFDO1FBQ2xDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsZ0JBQWdCLENBQUM7UUFDL0Isc0VBQXNFO0lBQ3hFLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxPQUFlO1FBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxPQUFPLHNCQUFzQixDQUFDLENBQUM7SUFDcEQsQ0FBQzs7O1lBeEJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsc0JBQXNCO2dCQUNoQyw2d0NBQStDO2FBQ2hEOzs7eUJBR0UsS0FBSzsrQkFDTCxLQUFLOzZCQUNMLEtBQUs7c0JBQ0wsS0FBSztrQkFHTCxlQUFlLFNBQUMsWUFBWTs7QUFBRTtJQUQ5QixnQkFBZ0IsQ0FBQyxFQUFDLGlCQUFpQixFQUFFLG1CQUFtQixFQUFDLENBQUM7b0RBQ1YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RGVzeUNvbnRlbnRDaGlsZH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2RlY29yYXRvcnMvZGVzeS1jb250ZW50LWNoaWxkLmRlY29yYXRvcic7XHJcbmltcG9ydCB7TmF2Q29tcG9uZW50fSBmcm9tICcuLi8uLi9uYXYvbmF2LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7QWNjZXNzaWJpbGl0eUNvbXBvbmVudH0gZnJvbSBcIi4uLy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2Rlc3ktaGVhZGVyLWRyb3Bkb3duJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaGVhZGVyLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhlYWRlckRyb3Bkb3duQ29tcG9uZW50IGV4dGVuZHMgQWNjZXNzaWJpbGl0eUNvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIGhpZGRlblRleHQ6IHN0cmluZztcclxuICBASW5wdXQoKSBjbGFzc2VzQ29udGFpbmVyOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY2xhc3Nlc1Rvb2x0aXA6IHN0cmluZztcclxuICBASW5wdXQoKSBjbGFzc2VzOiBzdHJpbmc7XHJcblxyXG4gIEBEZXN5Q29udGVudENoaWxkKHtvblNldENhbGxiYWNrTmFtZTogJ292ZXJyaWRlTmF2UGFyYW1zJ30pXHJcbiAgQENvbnRlbnRDaGlsZHJlbihOYXZDb21wb25lbnQpIG5hdjogTmF2Q29tcG9uZW50O1xyXG5cclxuICBvdmVycmlkZU5hdlBhcmFtcyhuYXY6IE5hdkNvbXBvbmVudCk6IHZvaWQge1xyXG4gICAgbmF2Lmhhc05hdiA9IHRydWU7XHJcbiAgICBuYXYuaWRQcmVmaXggPSAnaGVhZGVyLWRyb3Bkb3duLW5hdi1pdGVtJztcclxuICAgIG5hdi5hcmlhTGFiZWwgPSAnTWVuw7ogZGUgdXN1YXJpbyc7XHJcbiAgICBuYXYuY2xhc3NlcyA9ICd3LW1heCBtYXgtdy02NCc7XHJcbiAgICAvLyBuYXYuaWQgPSAnaWQtZHJvcGRvd24tbmF2JzsgLy8gTm8gZXhpc3RlIGNvbW8gcGFyYW0gZGUgbmF2Q29tcG9uZW50XHJcbiAgfVxyXG5cclxuICBoYW5kbGVFbXB0eUNvbnRlbnQoZWxlbWVudDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7ZWxlbWVudH0gY29udGVudCBpcyByZXF1aXJlZGApO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
36
+ __decorate([
37
+ DesyContentChild()
38
+ ], HeaderDropdownComponent.prototype, "contentComponent", void 0);
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktbmF2L2NvbXBvbmVudHMvaGVhZGVyL2hlYWRlci1kcm9wZG93bi9oZWFkZXItZHJvcGRvd24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDNUYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLCtEQUErRCxDQUFDO0FBTS9GLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxzQkFBc0I7SUFhakUsaUJBQWlCLENBQUMsR0FBaUI7UUFDakMsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbEIsR0FBRyxDQUFDLFFBQVEsR0FBRywwQkFBMEIsQ0FBQztRQUMxQyxHQUFHLENBQUMsU0FBUyxHQUFHLGlCQUFpQixDQUFDO1FBQ2xDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsZ0JBQWdCLENBQUM7UUFDL0Isc0VBQXNFO0lBQ3hFLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxPQUFlO1FBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxPQUFPLHNCQUFzQixDQUFDLENBQUM7SUFDcEQsQ0FBQzs7O1lBM0JGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsc0JBQXNCO2dCQUNoQyx1N0NBQStDO2FBQ2hEOzs7eUJBR0UsS0FBSzsrQkFDTCxLQUFLOzZCQUNMLEtBQUs7c0JBQ0wsS0FBSztrQkFHTCxlQUFlLFNBQUMsWUFBWTsrQkFHNUIsZUFBZSxTQUFDLGdCQUFnQjs7QUFIRjtJQUQ5QixnQkFBZ0IsQ0FBQyxFQUFDLGlCQUFpQixFQUFFLG1CQUFtQixFQUFDLENBQUM7b0RBQ1Y7QUFHZDtJQURsQyxnQkFBZ0IsRUFBRTtpRUFDbUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RGVzeUNvbnRlbnRDaGlsZH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2RlY29yYXRvcnMvZGVzeS1jb250ZW50LWNoaWxkLmRlY29yYXRvcic7XHJcbmltcG9ydCB7TmF2Q29tcG9uZW50fSBmcm9tICcuLi8uLi9uYXYvbmF2LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7QWNjZXNzaWJpbGl0eUNvbXBvbmVudH0gZnJvbSBcIi4uLy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzXCI7XHJcbmltcG9ydCB7Q29udGVudENvbXBvbmVudH0gZnJvbSBcIi4uLy4uLy4uLy4uL2Rlc3ktY29tbW9ucy9jb21wb25lbnRzL2NvbnRlbnQvY29udGVudC5jb21wb25lbnRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGVzeS1oZWFkZXItZHJvcGRvd24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXItZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGVhZGVyRHJvcGRvd25Db21wb25lbnQgZXh0ZW5kcyBBY2Nlc3NpYmlsaXR5Q29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KCkgaGlkZGVuVGV4dDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGNsYXNzZXNDb250YWluZXI6IHN0cmluZztcclxuICBASW5wdXQoKSBjbGFzc2VzVG9vbHRpcDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGNsYXNzZXM6IHN0cmluZztcclxuXHJcbiAgQERlc3lDb250ZW50Q2hpbGQoe29uU2V0Q2FsbGJhY2tOYW1lOiAnb3ZlcnJpZGVOYXZQYXJhbXMnfSlcclxuICBAQ29udGVudENoaWxkcmVuKE5hdkNvbXBvbmVudCkgbmF2OiBOYXZDb21wb25lbnQ7XHJcblxyXG4gIEBEZXN5Q29udGVudENoaWxkKClcclxuICBAQ29udGVudENoaWxkcmVuKENvbnRlbnRDb21wb25lbnQpIGNvbnRlbnRDb21wb25lbnQ6IENvbnRlbnRDb21wb25lbnQ7XHJcblxyXG4gIG92ZXJyaWRlTmF2UGFyYW1zKG5hdjogTmF2Q29tcG9uZW50KTogdm9pZCB7XHJcbiAgICBuYXYuaGFzTmF2ID0gdHJ1ZTtcclxuICAgIG5hdi5pZFByZWZpeCA9ICdoZWFkZXItZHJvcGRvd24tbmF2LWl0ZW0nO1xyXG4gICAgbmF2LmFyaWFMYWJlbCA9ICdNZW7DuiBkZSB1c3VhcmlvJztcclxuICAgIG5hdi5jbGFzc2VzID0gJ3ctbWF4IG1heC13LTY0JztcclxuICAgIC8vIG5hdi5pZCA9ICdpZC1kcm9wZG93bi1uYXYnOyAvLyBObyBleGlzdGUgY29tbyBwYXJhbSBkZSBuYXZDb21wb25lbnRcclxuICB9XHJcblxyXG4gIGhhbmRsZUVtcHR5Q29udGVudChlbGVtZW50OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgJHtlbGVtZW50fSBjb250ZW50IGlzIHJlcXVpcmVkYCk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=