tuain-ng-forms-lib 17.0.0 → 17.1.0

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 (28) hide show
  1. package/esm2022/lib/classes/forms/action.mjs +66 -40
  2. package/esm2022/lib/classes/forms/element.mjs +8 -3
  3. package/esm2022/lib/classes/forms/field.mjs +81 -71
  4. package/esm2022/lib/classes/forms/section.mjs +51 -39
  5. package/esm2022/lib/classes/forms/subsection.mjs +45 -27
  6. package/esm2022/lib/classes/forms/table/table.mjs +124 -82
  7. package/esm2022/lib/components/elements/action.component.mjs +29 -19
  8. package/esm2022/lib/components/elements/field.component.mjs +56 -69
  9. package/esm2022/lib/components/elements/layout/piece.component.mjs +43 -19
  10. package/esm2022/lib/components/elements/layout/section.component.mjs +21 -13
  11. package/esm2022/lib/components/elements/layout/sub-section.component.mjs +21 -13
  12. package/esm2022/lib/components/elements/tables/table-record-action.component.mjs +13 -8
  13. package/esm2022/lib/components/elements/tables/table.component.mjs +38 -35
  14. package/fesm2022/tuain-ng-forms-lib.mjs +581 -423
  15. package/fesm2022/tuain-ng-forms-lib.mjs.map +1 -1
  16. package/lib/classes/forms/action.d.ts +30 -14
  17. package/lib/classes/forms/field.d.ts +9 -4
  18. package/lib/classes/forms/section.d.ts +18 -6
  19. package/lib/classes/forms/subsection.d.ts +28 -10
  20. package/lib/classes/forms/table/table.d.ts +63 -21
  21. package/lib/components/elements/action.component.d.ts +8 -1
  22. package/lib/components/elements/field.component.d.ts +21 -15
  23. package/lib/components/elements/layout/piece.component.d.ts +8 -4
  24. package/lib/components/elements/layout/section.component.d.ts +1 -0
  25. package/lib/components/elements/layout/sub-section.component.d.ts +1 -0
  26. package/lib/components/elements/tables/table-record-action.component.d.ts +1 -0
  27. package/lib/components/elements/tables/table.component.d.ts +12 -5
  28. package/package.json +1 -1
@@ -1,10 +1,25 @@
1
- import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
1
+ import { Component, signal, Input, ChangeDetectionStrategy } from '@angular/core';
2
2
  import { ElementComponent } from '../layout/element.component';
3
3
  import * as i0 from "@angular/core";
4
+ const CUSTOM_ATTRIBUTES = 'customAttributes';
5
+ const signaledAttributes = [
6
+ 'allSelected', 'code', 'globalSearch', 'globalFilterString', 'recordsPerPage', 'layout',
7
+ 'columns', 'selectedRecords', 'currentPage', 'totalRecordsNumber', 'visibleRecords',
8
+ 'visible', 'disabled',
9
+ ];
4
10
  export class LibTableComponent extends ElementComponent {
5
11
  // Atributos sincronizados del objeto
6
- code;
7
- globalFilterString = '';
12
+ allSelected = signal(null);
13
+ code = signal('');
14
+ globalSearch = signal(null);
15
+ globalFilterString = signal('');
16
+ recordsPerPage = signal(null);
17
+ layout = signal(null);
18
+ columns = signal(null);
19
+ selectedRecords = signal(null);
20
+ currentPage = signal(null);
21
+ totalRecordsNumber = signal(null);
22
+ visibleRecords = signal(null);
8
23
  tableFieldStyles;
9
24
  loaded = false;
10
25
  selectable = false;
@@ -13,7 +28,6 @@ export class LibTableComponent extends ElementComponent {
13
28
  globalActions;
14
29
  selectionActions;
15
30
  table = null;
16
- visibleRecords = [];
17
31
  waiting = false;
18
32
  ngOnInit() {
19
33
  if (!this.table) {
@@ -22,51 +36,42 @@ export class LibTableComponent extends ElementComponent {
22
36
  this.table.setWidget(this);
23
37
  this.formConfig = this.table?._formConfig;
24
38
  this.tableFieldStyles = this.formConfig?.tableFieldStyles;
25
- this.selectable = this.table?.selectable;
39
+ this.selectable = this.table?._selectable;
26
40
  this.hasActions = this.table?.hasActions();
27
41
  this.inlineActions = this.table?.getActions(this.formConfig?.tableActions.inline);
28
42
  this.globalActions = this.table?.getActions(this.formConfig?.tableActions.global);
29
43
  this.selectionActions = this.table?.getActions(this.formConfig?.tableActions.selection);
30
- // Inicialización de campos mapeados del objeto
31
- const mapping = Object.entries(this.formConfig?.tablePropagationAttributes);
32
- for (let index = 0; index < mapping.length; index++) {
33
- const tableAttr = mapping[index]?.[0];
34
- const componentAttr = mapping[index]?.[1]?.toString() ?? '';
35
- const attributeValue = this.table?.[tableAttr];
36
- this.defaultProcessAttributeChange(componentAttr, attributeValue);
37
- this.customProcessAttributeChange(componentAttr, attributeValue);
38
- }
39
- // Subscripción a cambios en atributos
44
+ this.updatePropagatedAttributes();
45
+ this.replaceCustomAttributes(this.table?.customAttributes);
40
46
  this.table?.attributeChange.subscribe(event => {
41
- const { name: attrName, value = null } = event ?? {};
42
- if (attrName) {
43
- this.defaultProcessAttributeChange(attrName, value);
44
- this.customProcessAttributeChange(attrName, value);
47
+ const { name: attribute, value = null } = event ?? {};
48
+ const attributeParts = attribute?.split('.') ?? [];
49
+ if (attribute === 'visibleRecords') {
50
+ this.updateTableData();
51
+ }
52
+ else if (signaledAttributes.includes(attribute)) {
53
+ this.updatePieceAttribute(signaledAttributes, attribute, value);
54
+ }
55
+ else if (attributeParts?.length > 1 && attributeParts?.[0] === CUSTOM_ATTRIBUTES) {
56
+ const subAttribute = attributeParts?.[1] ?? null;
57
+ this.updateCustomAttribute(subAttribute, value);
45
58
  }
46
59
  });
47
60
  this.start();
48
61
  }
62
+ updatePropagatedAttributes() {
63
+ this.updatePieceAttributes(this.table, signaledAttributes);
64
+ }
49
65
  updateTableData() { }
50
66
  tableGlobalAction(actionCode) { this.table?.notifyGlobalAction(actionCode); }
51
67
  tableSelectionAction(actionCode) { this.table?.notifySelectionAction(actionCode); }
52
68
  tableActionSelected(actionEvent) { this.table?.notifyInlineAction(actionEvent); }
53
69
  tableSelectionToggle(recordId) { this.table?.notifyRecordSelection(recordId); }
54
- toggleSelectAll() { return (this.table?.allSelected) ? this.table?.unSelectAll() : this.table?.selectAll(); }
70
+ toggleSelectAll() { return (this.table?._allSelected) ? this.table?.unSelectAll() : this.table?.selectAll(); }
55
71
  globalFilterCompleted() { this.changePage(1); }
56
72
  changePage(requestedPage) { this.table?.changePage(requestedPage); }
57
73
  tableColumnSort(columnName, direction = null) { this.table?.sort(columnName, direction ?? 'ascend'); }
58
74
  globalFilterChanged() { this.table?.setGlobalFilterString(this.globalFilterString?.trim() ?? '', false); }
59
- defaultProcessAttributeChange(attribute, value) {
60
- try {
61
- if (attribute === 'visibleRecords') {
62
- this.updateTableData();
63
- }
64
- return super.defaultProcessAttributeChange(attribute, value);
65
- }
66
- catch {
67
- return false;
68
- }
69
- }
70
75
  filterHasChanged(column, values) {
71
76
  if (!values || values.length === 0) {
72
77
  this.table?.removeColumnFilter(column.fieldCode);
@@ -76,7 +81,7 @@ export class LibTableComponent extends ElementComponent {
76
81
  }
77
82
  }
78
83
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LibTableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
79
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LibTableComponent, selector: "lib-table", inputs: { table: "table", visibleRecords: "visibleRecords", waiting: "waiting" }, usesInheritance: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
84
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LibTableComponent, selector: "lib-table", inputs: { table: "table", waiting: "waiting" }, usesInheritance: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
80
85
  }
81
86
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LibTableComponent, decorators: [{
82
87
  type: Component,
@@ -87,9 +92,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
87
92
  }]
88
93
  }], propDecorators: { table: [{
89
94
  type: Input
90
- }], visibleRecords: [{
91
- type: Input
92
95
  }], waiting: [{
93
96
  type: Input
94
97
  }] } });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvY29tcG9uZW50cy9lbGVtZW50cy90YWJsZXMvdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSWxGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQVEvRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZ0JBQWdCO0lBQ3JELHFDQUFxQztJQUNyQyxJQUFJLENBQU07SUFDVixrQkFBa0IsR0FBVyxFQUFFLENBQUM7SUFFaEMsZ0JBQWdCLENBQU07SUFDdEIsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNmLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDbkIsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUNuQixhQUFhLENBQU07SUFDbkIsYUFBYSxDQUFNO0lBQ25CLGdCQUFnQixDQUFNO0lBRWIsS0FBSyxHQUF1QixJQUFJLENBQUM7SUFDakMsY0FBYyxHQUFzQixFQUFFLENBQUM7SUFDdkMsT0FBTyxHQUFZLEtBQUssQ0FBQztJQUVsQyxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUM7UUFDMUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUM7UUFDMUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxF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QUFqQixpQkFBaUIsMEpBSmxCLDJCQUEyQjs7NEZBSTFCLGlCQUFpQjtrQkFON0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsV0FBVztvQkFDckIsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzhCQWVVLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRhYmxlUmVjb3JkRGF0YSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZm9ybXMvdGFibGUvcm93LWRhdGEnO1xuaW1wb3J0IHsgVGFibGVBY3Rpb25FdmVudCB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZm9ybXMvdGFibGUvdGFibGUnO1xuaW1wb3J0IHsgUmVjb3JkVGFibGUsIFRhYmxlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Zvcm1zL3RhYmxlL3RhYmxlJztcbmltcG9ydCB7IEVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuLi9sYXlvdXQvZWxlbWVudC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItdGFibGUnLFxuICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcblxuZXhwb3J0IGNsYXNzIExpYlRhYmxlQ29tcG9uZW50IGV4dGVuZHMgRWxlbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vIEF0cmlidXRvcyBzaW5jcm9uaXphZG9zIGRlbCBvYmpldG9cbiAgY29kZTogYW55O1xuICBnbG9iYWxGaWx0ZXJTdHJpbmc6IHN0cmluZyA9ICcnO1xuXG4gIHRhYmxlRmllbGRTdHlsZXM6IGFueTtcbiAgbG9hZGVkID0gZmFsc2U7XG4gIHNlbGVjdGFibGUgPSBmYWxzZTtcbiAgaGFzQWN0aW9ucyA9IGZhbHNlO1xuICBpbmxpbmVBY3Rpb25zOiBhbnk7XG4gIGdsb2JhbEFjdGlvbnM6IGFueTtcbiAgc2VsZWN0aW9uQWN0aW9uczogYW55O1xuXG4gIEBJbnB1dCgpIHRhYmxlOiBSZWNvcmRUYWJsZSB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSB2aXNpYmxlUmVjb3JkczogVGFibGVSZWNvcmREYXRhW10gPSBbXTtcbiAgQElucHV0KCkgd2FpdGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy50YWJsZSkgeyByZXR1cm47IH1cbiAgICB0aGlzLnRhYmxlLnNldFdpZGdldCh0aGlzKTtcbiAgICB0aGlzLmZvcm1Db25maWcgPSB0aGlzLnRhYmxlPy5fZm9ybUNvbmZpZztcbiAgICB0aGlzLnRhYmxlRmllbGRTdHlsZXMgPSB0aGlzLmZvcm1Db25maWc/LnRhYmxlRmllbGRTdHlsZXM7XG4gICAgdGhpcy5zZWxlY3RhYmxlID0gdGhpcy50YWJsZT8uc2VsZWN0YWJsZTtcbiAgICB0aGlzLmhhc0FjdGlvbnMgPSB0aGlzLnRhYmxlPy5oYXNBY3Rpb25zKCk7XG4gICAgdGhpcy5pbmxpbmVBY3Rpb25zID0gdGhpcy50YWJsZT8uZ2V0QWN0aW9ucyh0aGlzLmZvcm1Db25maWc/LnRhYmxlQWN0aW9ucy5pbmxpbmUpO1xuICAgIHRoaXMuZ2xvYmFsQWN0aW9ucyA9IHRoaXMudGFibGU/LmdldEFjdGlvbnModGhpcy5mb3JtQ29uZmlnPy50YWJsZUFjdGlvbnMuZ2xvYmFsKTtcbiAgICB0aGlzLnNlbGVjdGlvbkFjdGlvbnMgPSB0aGlzLnRhYmxlPy5nZXRBY3Rpb25zKHRoaXMuZm9ybUNvbmZpZz8udGFibGVBY3Rpb25zLnNlbGVjdGlvbik7XG4gICAgLy8gSW5pY2lhbGl6YWNpw7NuIGRlIGNhbXBvcyBtYXBlYWRvcyBkZWwgb2JqZXRvXG4gICAgY29uc3QgbWFwcGluZyA9IE9iamVjdC5lbnRyaWVzKHRoaXMuZm9ybUNvbmZpZz8udGFibGVQcm9wYWdhdGlvbkF0dHJpYnV0ZXMpO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBtYXBwaW5nLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgdGFibGVBdHRyID0gbWFwcGluZ1tpbmRleF0/LlswXTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudEF0dHIgPSBtYXBwaW5nW2luZGV4XT8uWzFdPy50b1N0cmluZygpID8/ICcnO1xuICAgICAgY29uc3QgYXR0cmlidXRlVmFsdWUgPSB0aGlzLnRhYmxlPy5bdGFibGVBdHRyXTtcbiAgICAgIHRoaXMuZGVmYXVsdFByb2Nlc3NBdHRyaWJ1dGVDaGFuZ2UoY29tcG9uZW50QXR0ciwgYXR0cmlidXRlVmFsdWUpO1xuICAgICAgdGhpcy5jdXN0b21Qcm9jZXNzQXR0cmlidXRlQ2hhbmdlKGNvbXBvbmVudEF0dHIsIGF0dHJpYnV0ZVZhbHVlKTtcbiAgICB9XG4gICAgLy8gU3Vic2NyaXBjacOzbiBhIGNhbWJpb3MgZW4gYXRyaWJ1dG9zXG4gICAgdGhpcy50YWJsZT8uYXR0cmlidXRlQ2hhbmdlLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICBjb25zdCB7IG5hbWU6IGF0dHJOYW1lLCB2YWx1ZSA9IG51bGwgfSA9IGV2ZW50ID8/IHt9O1xuICAgICAgaWYgKGF0dHJOYW1lKSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdFByb2Nlc3NBdHRyaWJ1dGVDaGFuZ2UoYXR0ck5hbWUsIHZhbHVlKTtcbiAgICAgICAgdGhpcy5jdXN0b21Qcm9jZXNzQXR0cmlidXRlQ2hhbmdlKGF0dHJOYW1lLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgdXBkYXRlVGFibGVEYXRhKCkgeyB9XG4gIHRhYmxlR2xvYmFsQWN0aW9uKGFjdGlvbkNvZGU6IHN0cmluZykgeyB0aGlzLnRhYmxlPy5ub3RpZnlHbG9iYWxBY3Rpb24oYWN0aW9uQ29kZSk7IH1cbiAgdGFibGVTZWxlY3Rpb25BY3Rpb24oYWN0aW9uQ29kZTogc3RyaW5nKSB7IHRoaXMudGFibGU/Lm5vdGlmeVNlbGVjdGlvbkFjdGlvbihhY3Rpb25Db2RlKTsgfVxuICB0YWJsZUFjdGlvblNlbGVjdGVkKGFjdGlvbkV2ZW50OiBUYWJsZUFjdGlvbkV2ZW50KSB7IHRoaXMudGFibGU/Lm5vdGlmeUlubGluZUFjdGlvbihhY3Rpb25FdmVudCk7IH1cbiAgdGFibGVTZWxlY3Rpb25Ub2dnbGUocmVjb3JkSWQ6IGFueSkgeyB0aGlzLnRhYmxlPy5ub3RpZnlSZWNvcmRTZWxlY3Rpb24ocmVjb3JkSWQpOyB9XG4gIHRvZ2dsZVNlbGVjdEFsbCgpIHsgcmV0dXJuICh0aGlzLnRhYmxlPy5hbGxTZWxlY3RlZCkgPyB0aGlzLnRhYmxlPy51blNlbGVjdEFsbCgpIDogdGhpcy50YWJsZT8uc2VsZWN0QWxsKCk7IH1cbiAgZ2xvYmFsRmlsdGVyQ29tcGxldGVkKCkgeyB0aGlzLmNoYW5nZVBhZ2UoMSk7IH1cbiAgY2hhbmdlUGFnZShyZXF1ZXN0ZWRQYWdlOiBudW1iZXIpIHsgdGhpcy50YWJsZT8uY2hhbmdlUGFnZShyZXF1ZXN0ZWRQYWdlKTsgfVxuICB0YWJsZUNvbHVtblNvcnQoY29sdW1uTmFtZTogc3RyaW5nLCBkaXJlY3Rpb24gPSBudWxsKSB7IHRoaXMudGFibGU/LnNvcnQoY29sdW1uTmFtZSwgZGlyZWN0aW9uID8/ICdhc2NlbmQnKTsgfVxuICBnbG9iYWxGaWx0ZXJDaGFuZ2VkKCkgeyB0aGlzLnRhYmxlPy5zZXRHbG9iYWxGaWx0ZXJTdHJpbmcodGhpcy5nbG9iYWxGaWx0ZXJTdHJpbmc/LnRyaW0oKSA/PyAnJywgZmFsc2UpOyB9XG5cbiAgb3ZlcnJpZGUgZGVmYXVsdFByb2Nlc3NBdHRyaWJ1dGVDaGFuZ2UoYXR0cmlidXRlOiBzdHJpbmcsIHZhbHVlPzogYW55KTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChhdHRyaWJ1dGUgPT09ICd2aXNpYmxlUmVjb3JkcycpIHtcbiAgICAgICAgdGhpcy51cGRhdGVUYWJsZURhdGEoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdXBlci5kZWZhdWx0UHJvY2Vzc0F0dHJpYnV0ZUNoYW5nZShhdHRyaWJ1dGUsIHZhbHVlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBmaWx0ZXJIYXNDaGFuZ2VkKGNvbHVtbiwgdmFsdWVzKSB7XG4gICAgaWYgKCF2YWx1ZXMgfHwgdmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy50YWJsZT8ucmVtb3ZlQ29sdW1uRmlsdGVyKGNvbHVtbi5maWVsZENvZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRhYmxlPy5hZGRDb2x1bW5GaWx0ZXIoY29sdW1uLmZpZWxkQ29kZSwgdmFsdWVzKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvY29tcG9uZW50cy9lbGVtZW50cy90YWJsZXMvdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkxRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFFL0QsTUFBTSxpQkFBaUIsR0FBRyxrQkFBa0IsQ0FBQztBQUU3QyxNQUFNLGtCQUFrQixHQUFHO0lBQ3pCLGFBQWEsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLFFBQVE7SUFDdkYsU0FBUyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0I7SUFDbkYsU0FBUyxFQUFFLFVBQVU7Q0FDdEIsQ0FBQztBQVFGLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxnQkFBZ0I7SUFDckQscUNBQXFDO0lBQ3JDLFdBQVcsR0FBUSxNQUFNLENBQU0sSUFBSSxDQUFDLENBQUM7SUFDckMsSUFBSSxHQUFRLE1BQU0sQ0FBUyxFQUFFLENBQUMsQ0FBQztJQUMvQixZQUFZLEdBQVEsTUFBTSxDQUFNLElBQUksQ0FBQyxDQUFDO0lBQ3RDLGtCQUFrQixHQUFRLE1BQU0sQ0FBUyxFQUFFLENBQUMsQ0FBQztJQUM3QyxjQUFjLEdBQVEsTUFBTSxDQUFNLElBQUksQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sR0FBUSxNQUFNLENBQU0sSUFBSSxDQUFDLENBQUM7SUFDaEMsT0FBTyxHQUFRLE1BQU0sQ0FBTSxJQUFJLENBQUMsQ0FBQztJQUNqQyxlQUFlLEdBQVEsTUFBTSxDQUFNLElBQUksQ0FBQyxDQUFDO0lBQ3pDLFdBQVcsR0FBUSxNQUFNLENBQU0sSUFBSSxDQUFDLENBQUM7SUFDckMsa0JBQWtCLEdBQVEsTUFBTSxDQUFNLElBQUksQ0FBQyxDQUFDO0lBQzVDLGNBQWMsR0FBUSxNQUFNLENBQU0sSUFBSSxDQUFDLENBQUM7SUFFeEMsZ0JBQWdCLENBQU07SUFDdEIsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNmLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDbkIsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUNuQixhQUFhLENBQU07SUFDbkIsYUFBYSxDQUFNO0lBQ25CLGdCQUFnQixDQUFNO0lBRWIsS0FBSyxHQUF1QixJQUFJLENBQUM7SUFDakMsT0FBTyxHQUFZLEtBQUssQ0FBQztJQUVsQyxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUM7UUFFMUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUM7UUFDMUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQztRQUMxQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4RixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTNELElBQUksQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM1QyxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEdBQUcsSUFBSSxFQUFFLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN0RCxNQUFNLGNBQWMsR0FBRyxTQUFTLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuRCxJQUFJLFNBQVMsS0FBSyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsQ0FBQztpQkFBTSxJQUFJLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUNsRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2xFLENBQUM7aUJBQU0sSUFBSSxjQUFjLEVBQUUsTUFBTSxHQUFHLENBQUMsSUFBSSxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxpQkFBaUIsRUFBRSxDQUFDO2dCQUNuRixNQUFNLFlBQVksR0FBRyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbEQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVELDBCQUEwQjtRQUN4QixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxDQUFBO0lBQzVELENBQUM7SUFFRCxlQUFlLEtBQUssQ0FBQztJQUNyQixpQkFBaUIsQ0FBQyxVQUFrQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLG9CQUFvQixDQUFDLFVBQWtCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0YsbUJBQW1CLENBQUMsV0FBNkIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRyxvQkFBb0IsQ0FBQyxRQUFhLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEYsZUFBZSxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RyxxQkFBcUIsS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxVQUFVLENBQUMsYUFBcUIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUUsZUFBZSxDQUFDLFVBQWtCLEVBQUUsU0FBUyxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RyxtQkFBbUIsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLHFCQUFxQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxNQUFNO1FBQzdCLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsS0FBSyxFQUFFLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEQsQ0FBQztJQUNILENBQUM7d0dBM0VVLGlCQUFpQjs0RkFBakIsaUJBQWlCLHdIQUpsQiwyQkFBMkI7OzRGQUkxQixpQkFBaUI7a0JBTjdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDs4QkF3QlUsS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgc2lnbmFsLCBPbkluaXQsIElucHV0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGFibGVSZWNvcmREYXRhIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3Jtcy90YWJsZS9yb3ctZGF0YSc7XG5pbXBvcnQgeyBUYWJsZUFjdGlvbkV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3Jtcy90YWJsZS90YWJsZSc7XG5pbXBvcnQgeyBSZWNvcmRUYWJsZSwgVGFibGVFdmVudCB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZm9ybXMvdGFibGUvdGFibGUnO1xuaW1wb3J0IHsgRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uL2xheW91dC9lbGVtZW50LmNvbXBvbmVudCc7XG5cbmNvbnN0IENVU1RPTV9BVFRSSUJVVEVTID0gJ2N1c3RvbUF0dHJpYnV0ZXMnO1xuXG5jb25zdCBzaWduYWxlZEF0dHJpYnV0ZXMgPSBbXG4gICdhbGxTZWxlY3RlZCcsICdjb2RlJywgJ2dsb2JhbFNlYXJjaCcsICdnbG9iYWxGaWx0ZXJTdHJpbmcnLCAncmVjb3Jkc1BlclBhZ2UnLCAnbGF5b3V0JyxcbiAgJ2NvbHVtbnMnLCAnc2VsZWN0ZWRSZWNvcmRzJywgJ2N1cnJlbnRQYWdlJywgJ3RvdGFsUmVjb3Jkc051bWJlcicsICd2aXNpYmxlUmVjb3JkcycsXG4gICd2aXNpYmxlJywgJ2Rpc2FibGVkJyxcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi10YWJsZScsXG4gIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuXG5leHBvcnQgY2xhc3MgTGliVGFibGVDb21wb25lbnQgZXh0ZW5kcyBFbGVtZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLy8gQXRyaWJ1dG9zIHNpbmNyb25pemFkb3MgZGVsIG9iamV0b1xuICBhbGxTZWxlY3RlZDogYW55ID0gc2lnbmFsPGFueT4obnVsbCk7XG4gIGNvZGU6IGFueSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgZ2xvYmFsU2VhcmNoOiBhbnkgPSBzaWduYWw8YW55PihudWxsKTtcbiAgZ2xvYmFsRmlsdGVyU3RyaW5nOiBhbnkgPSBzaWduYWw8c3RyaW5nPignJyk7XG4gIHJlY29yZHNQZXJQYWdlOiBhbnkgPSBzaWduYWw8YW55PihudWxsKTtcbiAgbGF5b3V0OiBhbnkgPSBzaWduYWw8YW55PihudWxsKTtcbiAgY29sdW1uczogYW55ID0gc2lnbmFsPGFueT4obnVsbCk7XG4gIHNlbGVjdGVkUmVjb3JkczogYW55ID0gc2lnbmFsPGFueT4obnVsbCk7XG4gIGN1cnJlbnRQYWdlOiBhbnkgPSBzaWduYWw8YW55PihudWxsKTtcbiAgdG90YWxSZWNvcmRzTnVtYmVyOiBhbnkgPSBzaWduYWw8YW55PihudWxsKTtcbiAgdmlzaWJsZVJlY29yZHM6IGFueSA9IHNpZ25hbDxhbnk+KG51bGwpO1xuXG4gIHRhYmxlRmllbGRTdHlsZXM6IGFueTtcbiAgbG9hZGVkID0gZmFsc2U7XG4gIHNlbGVjdGFibGUgPSBmYWxzZTtcbiAgaGFzQWN0aW9ucyA9IGZhbHNlO1xuICBpbmxpbmVBY3Rpb25zOiBhbnk7XG4gIGdsb2JhbEFjdGlvbnM6IGFueTtcbiAgc2VsZWN0aW9uQWN0aW9uczogYW55O1xuXG4gIEBJbnB1dCgpIHRhYmxlOiBSZWNvcmRUYWJsZSB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSB3YWl0aW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCF0aGlzLnRhYmxlKSB7IHJldHVybjsgfVxuICAgIHRoaXMudGFibGUuc2V0V2lkZ2V0KHRoaXMpO1xuICAgIHRoaXMuZm9ybUNvbmZpZyA9IHRoaXMudGFibGU/Ll9mb3JtQ29uZmlnO1xuXG4gICAgdGhpcy50YWJsZUZpZWxkU3R5bGVzID0gdGhpcy5mb3JtQ29uZmlnPy50YWJsZUZpZWxkU3R5bGVzO1xuICAgIHRoaXMuc2VsZWN0YWJsZSA9IHRoaXMudGFibGU/Ll9zZWxlY3RhYmxlO1xuICAgIHRoaXMuaGFzQWN0aW9ucyA9IHRoaXMudGFibGU/Lmhhc0FjdGlvbnMoKTtcbiAgICB0aGlzLmlubGluZUFjdGlvbnMgPSB0aGlzLnRhYmxlPy5nZXRBY3Rpb25zKHRoaXMuZm9ybUNvbmZpZz8udGFibGVBY3Rpb25zLmlubGluZSk7XG4gICAgdGhpcy5nbG9iYWxBY3Rpb25zID0gdGhpcy50YWJsZT8uZ2V0QWN0aW9ucyh0aGlzLmZvcm1Db25maWc/LnRhYmxlQWN0aW9ucy5nbG9iYWwpO1xuICAgIHRoaXMuc2VsZWN0aW9uQWN0aW9ucyA9IHRoaXMudGFibGU/LmdldEFjdGlvbnModGhpcy5mb3JtQ29uZmlnPy50YWJsZUFjdGlvbnMuc2VsZWN0aW9uKTtcbiAgICB0aGlzLnVwZGF0ZVByb3BhZ2F0ZWRBdHRyaWJ1dGVzKCk7XG4gICAgdGhpcy5yZXBsYWNlQ3VzdG9tQXR0cmlidXRlcyh0aGlzLnRhYmxlPy5jdXN0b21BdHRyaWJ1dGVzKTtcblxuICAgIHRoaXMudGFibGU/LmF0dHJpYnV0ZUNoYW5nZS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgY29uc3QgeyBuYW1lOiBhdHRyaWJ1dGUsIHZhbHVlID0gbnVsbCB9ID0gZXZlbnQgPz8ge307XG4gICAgICBjb25zdCBhdHRyaWJ1dGVQYXJ0cyA9IGF0dHJpYnV0ZT8uc3BsaXQoJy4nKSA/PyBbXTtcbiAgICAgIGlmIChhdHRyaWJ1dGUgPT09ICd2aXNpYmxlUmVjb3JkcycpIHtcbiAgICAgICAgdGhpcy51cGRhdGVUYWJsZURhdGEoKTtcbiAgICAgIH0gZWxzZSBpZiAoc2lnbmFsZWRBdHRyaWJ1dGVzLmluY2x1ZGVzKGF0dHJpYnV0ZSkpIHtcbiAgICAgICAgdGhpcy51cGRhdGVQaWVjZUF0dHJpYnV0ZShzaWduYWxlZEF0dHJpYnV0ZXMsIGF0dHJpYnV0ZSwgdmFsdWUpO1xuICAgICAgfSBlbHNlIGlmIChhdHRyaWJ1dGVQYXJ0cz8ubGVuZ3RoID4gMSAmJiBhdHRyaWJ1dGVQYXJ0cz8uWzBdID09PSBDVVNUT01fQVRUUklCVVRFUykge1xuICAgICAgICBjb25zdCBzdWJBdHRyaWJ1dGUgPSBhdHRyaWJ1dGVQYXJ0cz8uWzFdID8/IG51bGw7XG4gICAgICAgIHRoaXMudXBkYXRlQ3VzdG9tQXR0cmlidXRlKHN1YkF0dHJpYnV0ZSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIHVwZGF0ZVByb3BhZ2F0ZWRBdHRyaWJ1dGVzKCkge1xuICAgIHRoaXMudXBkYXRlUGllY2VBdHRyaWJ1dGVzKHRoaXMudGFibGUsIHNpZ25hbGVkQXR0cmlidXRlcylcbiAgfVxuXG4gIHVwZGF0ZVRhYmxlRGF0YSgpIHsgfVxuICB0YWJsZUdsb2JhbEFjdGlvbihhY3Rpb25Db2RlOiBzdHJpbmcpIHsgdGhpcy50YWJsZT8ubm90aWZ5R2xvYmFsQWN0aW9uKGFjdGlvbkNvZGUpOyB9XG4gIHRhYmxlU2VsZWN0aW9uQWN0aW9uKGFjdGlvbkNvZGU6IHN0cmluZykgeyB0aGlzLnRhYmxlPy5ub3RpZnlTZWxlY3Rpb25BY3Rpb24oYWN0aW9uQ29kZSk7IH1cbiAgdGFibGVBY3Rpb25TZWxlY3RlZChhY3Rpb25FdmVudDogVGFibGVBY3Rpb25FdmVudCkgeyB0aGlzLnRhYmxlPy5ub3RpZnlJbmxpbmVBY3Rpb24oYWN0aW9uRXZlbnQpOyB9XG4gIHRhYmxlU2VsZWN0aW9uVG9nZ2xlKHJlY29yZElkOiBhbnkpIHsgdGhpcy50YWJsZT8ubm90aWZ5UmVjb3JkU2VsZWN0aW9uKHJlY29yZElkKTsgfVxuICB0b2dnbGVTZWxlY3RBbGwoKSB7IHJldHVybiAodGhpcy50YWJsZT8uX2FsbFNlbGVjdGVkKSA/IHRoaXMudGFibGU/LnVuU2VsZWN0QWxsKCkgOiB0aGlzLnRhYmxlPy5zZWxlY3RBbGwoKTsgfVxuICBnbG9iYWxGaWx0ZXJDb21wbGV0ZWQoKSB7IHRoaXMuY2hhbmdlUGFnZSgxKTsgfVxuICBjaGFuZ2VQYWdlKHJlcXVlc3RlZFBhZ2U6IG51bWJlcikgeyB0aGlzLnRhYmxlPy5jaGFuZ2VQYWdlKHJlcXVlc3RlZFBhZ2UpOyB9XG4gIHRhYmxlQ29sdW1uU29ydChjb2x1bW5OYW1lOiBzdHJpbmcsIGRpcmVjdGlvbiA9IG51bGwpIHsgdGhpcy50YWJsZT8uc29ydChjb2x1bW5OYW1lLCBkaXJlY3Rpb24gPz8gJ2FzY2VuZCcpOyB9XG4gIGdsb2JhbEZpbHRlckNoYW5nZWQoKSB7IHRoaXMudGFibGU/LnNldEdsb2JhbEZpbHRlclN0cmluZyh0aGlzLmdsb2JhbEZpbHRlclN0cmluZz8udHJpbSgpID8/ICcnLCBmYWxzZSk7IH1cblxuICBmaWx0ZXJIYXNDaGFuZ2VkKGNvbHVtbiwgdmFsdWVzKSB7XG4gICAgaWYgKCF2YWx1ZXMgfHwgdmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy50YWJsZT8ucmVtb3ZlQ29sdW1uRmlsdGVyKGNvbHVtbi5maWVsZENvZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRhYmxlPy5hZGRDb2x1bW5GaWx0ZXIoY29sdW1uLmZpZWxkQ29kZSwgdmFsdWVzKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==