verben-ng-ui 0.0.2 → 0.0.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.
- package/esm2022/lib/Verbena-input/verbena-input.component.mjs +55 -10
- package/esm2022/lib/components/card-data-view/card-data-view.component.mjs +1 -1
- package/esm2022/lib/components/chip/chip.component.mjs +1 -1
- package/esm2022/lib/components/data-export/data-export.component.mjs +158 -90
- package/esm2022/lib/components/data-export/data-export.module.mjs +34 -5
- package/esm2022/lib/components/data-export/data-export.service.mjs +12 -5
- package/esm2022/lib/components/data-export/data-export.types.mjs +11 -2
- package/esm2022/lib/components/data-table/data-table.component.mjs +89 -39
- package/esm2022/lib/components/data-table/style.types.mjs +1 -1
- package/esm2022/lib/components/data-view/data-view.component.mjs +1 -1
- package/esm2022/lib/components/date-picker/date-picker.component.mjs +1 -1
- package/esm2022/lib/components/drop-down/drop-down-item/drop-down-item.component.mjs +1 -1
- package/esm2022/lib/components/drop-down/drop-down.component.mjs +2 -2
- package/esm2022/lib/components/notification/notification.component.mjs +82 -5
- package/esm2022/lib/components/notification/notification.module.mjs +5 -4
- package/esm2022/lib/components/sort-table/sort-table.component.mjs +1 -1
- package/esm2022/lib/components/svg/svg.component.mjs +41 -4
- package/esm2022/lib/components/table-filter/table-filter.component.mjs +3 -15
- package/esm2022/lib/components/tooltip/tooltip.component.mjs +3 -3
- package/esm2022/lib/components/verben-mail/verben-mail.component.mjs +1 -1
- package/esm2022/lib/components/visible-column/visible-column.component.mjs +1 -1
- package/esm2022/lib/verbena-button/verbena-button.component.mjs +8 -5
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/verben-ng-ui.mjs +627 -326
- package/fesm2022/verben-ng-ui.mjs.map +1 -1
- package/lib/Verbena-input/verbena-input.component.d.ts +14 -3
- package/lib/components/data-export/data-export.component.d.ts +49 -19
- package/lib/components/data-export/data-export.module.d.ts +6 -1
- package/lib/components/data-export/data-export.types.d.ts +10 -1
- package/lib/components/data-table/data-table.component.d.ts +10 -3
- package/lib/components/data-table/style.types.d.ts +33 -9
- package/lib/components/notification/notification.component.d.ts +17 -17
- package/lib/components/notification/notification.module.d.ts +2 -1
- package/lib/components/svg/svg.component.d.ts +5 -3
- package/lib/components/table-filter/table-filter.component.d.ts +0 -2
- package/lib/components/tooltip/tooltip.component.d.ts +2 -2
- package/lib/verbena-button/verbena-button.component.d.ts +4 -3
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -1,119 +1,162 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
2
|
import { Validators } from '@angular/forms';
|
|
3
|
+
import { Operators, } from './data-export.types';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "
|
|
5
|
-
import * as i2 from "
|
|
5
|
+
import * as i1 from "./data-export.service";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
6
7
|
import * as i3 from "@angular/common";
|
|
8
|
+
import * as i4 from "../svg/svg.component";
|
|
9
|
+
import * as i5 from "../card/card.component";
|
|
10
|
+
import * as i6 from "../drop-down/drop-down.component";
|
|
11
|
+
import * as i7 from "../../Verbena-input/verbena-input.component";
|
|
7
12
|
export class DataExportComponent {
|
|
8
|
-
fb;
|
|
9
13
|
exportService;
|
|
14
|
+
fb;
|
|
10
15
|
data;
|
|
11
16
|
exportDataEvent = new EventEmitter();
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
profiles = [];
|
|
18
|
+
groupItems = [];
|
|
19
|
+
newGroupForm;
|
|
20
|
+
newOperation = {
|
|
21
|
+
id: '',
|
|
22
|
+
name: '',
|
|
23
|
+
field1: '',
|
|
24
|
+
operator: Operators.add,
|
|
25
|
+
field2: '',
|
|
26
|
+
};
|
|
27
|
+
numericProperties = [];
|
|
28
|
+
stringProperties = [];
|
|
29
|
+
isEditingOperation = false;
|
|
30
|
+
showAllProfiles = false;
|
|
31
|
+
showAllGroups = false;
|
|
32
|
+
operatorsNumeric = [
|
|
33
|
+
Operators.add,
|
|
34
|
+
Operators.subtract,
|
|
35
|
+
Operators.multiply,
|
|
36
|
+
Operators.divide,
|
|
37
|
+
];
|
|
38
|
+
operatorsString = [
|
|
39
|
+
Operators.concatenateSpace,
|
|
40
|
+
Operators.concatenateCommaSpace,
|
|
41
|
+
Operators.concatenateComma,
|
|
42
|
+
];
|
|
43
|
+
constructor(exportService, fb) {
|
|
19
44
|
this.exportService = exportService;
|
|
45
|
+
this.fb = fb;
|
|
46
|
+
this.newGroupForm = this.fb.group({
|
|
47
|
+
name: ['', Validators.required],
|
|
48
|
+
});
|
|
20
49
|
}
|
|
21
50
|
ngOnInit() {
|
|
22
|
-
this.
|
|
23
|
-
this.
|
|
24
|
-
}
|
|
25
|
-
initForms() {
|
|
26
|
-
this.initProfileForm();
|
|
27
|
-
this.initOperationForm();
|
|
28
|
-
this.initProfileSelectionForm();
|
|
51
|
+
this.initializeGroupItems();
|
|
52
|
+
this.updateProfiles();
|
|
29
53
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
items: this.fb.array(itemControls),
|
|
35
|
-
});
|
|
54
|
+
ngOnChanges() {
|
|
55
|
+
if (this.data) {
|
|
56
|
+
this.initializeGroupItems();
|
|
57
|
+
}
|
|
36
58
|
}
|
|
37
|
-
|
|
38
|
-
this.
|
|
39
|
-
name: ['', Validators.required],
|
|
40
|
-
field1: ['', Validators.required],
|
|
41
|
-
operator: ['', Validators.required],
|
|
42
|
-
field2: ['', Validators.required],
|
|
43
|
-
});
|
|
59
|
+
get visibleProfiles() {
|
|
60
|
+
return this.showAllProfiles ? this.profiles : this.profiles.slice(0, 3);
|
|
44
61
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
this.profileSelectionForm = this.fb.group({
|
|
48
|
-
selectedProfiles: this.fb.array(profileControls),
|
|
49
|
-
});
|
|
62
|
+
get visibleGroups() {
|
|
63
|
+
return this.showAllGroups ? this.groupItems : this.groupItems.slice(0, 3);
|
|
50
64
|
}
|
|
51
|
-
|
|
65
|
+
initializeGroupItems() {
|
|
52
66
|
if (this.data && this.data.length > 0) {
|
|
53
|
-
const
|
|
54
|
-
this.exportService.setBaseProperties(
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
.
|
|
58
|
-
.map((item) => item.id);
|
|
59
|
-
this.initProfileForm();
|
|
60
|
-
}
|
|
61
|
-
onSubmitOperation() {
|
|
62
|
-
if (this.operationForm.valid) {
|
|
63
|
-
const operation = {
|
|
64
|
-
id: Date.now().toString(),
|
|
65
|
-
...this.operationForm.value,
|
|
66
|
-
};
|
|
67
|
-
this.exportService.addOperation(operation);
|
|
68
|
-
this.operationForm.reset();
|
|
69
|
-
this.updateProperties();
|
|
67
|
+
const properties = Object.keys(this.data[0]);
|
|
68
|
+
this.exportService.setBaseProperties(properties);
|
|
69
|
+
this.numericProperties = properties.filter((prop) => typeof this.data[0][prop] === 'number');
|
|
70
|
+
this.stringProperties = properties.filter((prop) => typeof this.data[0][prop] === 'string');
|
|
71
|
+
this.updateGroupItems();
|
|
70
72
|
}
|
|
71
73
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
74
|
+
updateProfiles() {
|
|
75
|
+
this.profiles = this.exportService.getProfiles().map((profile) => ({
|
|
76
|
+
...profile,
|
|
77
|
+
selected: false,
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
80
|
+
updateGroupItems() {
|
|
81
|
+
this.groupItems = this.exportService.getAllItems().map((item) => ({
|
|
82
|
+
...item,
|
|
83
|
+
selected: false,
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
86
|
+
addGroup() {
|
|
87
|
+
console.log('in');
|
|
88
|
+
if (this.newGroupForm.valid) {
|
|
89
|
+
const selectedItems = this.groupItems.filter((item) => item.selected);
|
|
90
|
+
if (selectedItems.length > 0) {
|
|
91
|
+
const newProfile = {
|
|
92
|
+
id: Date.now().toString(),
|
|
93
|
+
name: this.newGroupForm.get('name')?.value,
|
|
94
|
+
items: selectedItems,
|
|
95
|
+
};
|
|
96
|
+
this.exportService.addProfile(newProfile);
|
|
97
|
+
this.updateProfiles();
|
|
98
|
+
this.groupItems.forEach((item) => (item.selected = false));
|
|
99
|
+
this.newGroupForm.reset();
|
|
100
|
+
console.log('SELECTED');
|
|
101
|
+
}
|
|
102
|
+
console.log('VALID');
|
|
86
103
|
}
|
|
87
104
|
}
|
|
88
105
|
editProfile(profile) {
|
|
89
|
-
this.
|
|
90
|
-
|
|
91
|
-
items: this.exportService
|
|
92
|
-
.getAllItems()
|
|
93
|
-
.map((item) => profile.items.some((profileItem) => profileItem.id === item.id)),
|
|
106
|
+
this.groupItems.forEach((item) => {
|
|
107
|
+
item.selected = profile.items.some((profileItem) => profileItem.id === item.id);
|
|
94
108
|
});
|
|
109
|
+
this.removeProfile(profile);
|
|
110
|
+
}
|
|
111
|
+
removeProfile(profile) {
|
|
112
|
+
this.exportService.removeProfile(profile.id);
|
|
113
|
+
this.updateProfiles();
|
|
114
|
+
}
|
|
115
|
+
addOrUpdateOperation() {
|
|
116
|
+
if (this.newOperation.name &&
|
|
117
|
+
this.newOperation.field1 &&
|
|
118
|
+
this.newOperation.field2) {
|
|
119
|
+
if (this.isEditingOperation) {
|
|
120
|
+
this.exportService.updateOperation(this.newOperation.id, this.newOperation);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
const operation = {
|
|
124
|
+
...this.newOperation,
|
|
125
|
+
id: Date.now().toString(),
|
|
126
|
+
};
|
|
127
|
+
this.exportService.addOperation(operation);
|
|
128
|
+
}
|
|
129
|
+
this.updateGroupItems();
|
|
130
|
+
this.resetOperationForm();
|
|
131
|
+
}
|
|
95
132
|
}
|
|
96
133
|
editOperation(operation) {
|
|
97
|
-
this.
|
|
134
|
+
this.newOperation = { ...operation };
|
|
135
|
+
this.isEditingOperation = true;
|
|
98
136
|
}
|
|
99
|
-
removeOperation(
|
|
100
|
-
this.exportService.removeOperation(id);
|
|
101
|
-
this.
|
|
137
|
+
removeOperation(operation) {
|
|
138
|
+
this.exportService.removeOperation(operation.id);
|
|
139
|
+
this.updateGroupItems();
|
|
102
140
|
}
|
|
103
|
-
|
|
104
|
-
this.
|
|
105
|
-
|
|
141
|
+
resetOperationForm() {
|
|
142
|
+
this.newOperation = {
|
|
143
|
+
id: '',
|
|
144
|
+
name: '',
|
|
145
|
+
field1: '',
|
|
146
|
+
operator: Operators.add,
|
|
147
|
+
field2: '',
|
|
148
|
+
};
|
|
149
|
+
this.isEditingOperation = false;
|
|
106
150
|
}
|
|
107
151
|
resetAll() {
|
|
108
152
|
this.exportService.resetAll();
|
|
109
|
-
this.
|
|
110
|
-
this.
|
|
153
|
+
this.initializeGroupItems();
|
|
154
|
+
this.updateProfiles();
|
|
155
|
+
this.resetOperationForm();
|
|
156
|
+
this.newGroupForm.reset();
|
|
111
157
|
}
|
|
112
158
|
exportData() {
|
|
113
|
-
const selectedProfiles = this.
|
|
114
|
-
.getProfiles()
|
|
115
|
-
.filter((_, i) => this.profileSelectionForm.get('selectedProfiles').at(i)
|
|
116
|
-
.value);
|
|
159
|
+
const selectedProfiles = this.profiles.filter((profile) => profile.selected);
|
|
117
160
|
if (selectedProfiles.length > 0) {
|
|
118
161
|
const exportedData = this.exportService.exportData(this.data, selectedProfiles);
|
|
119
162
|
this.exportDataEvent.emit(exportedData);
|
|
@@ -122,15 +165,40 @@ export class DataExportComponent {
|
|
|
122
165
|
console.log('No profiles selected for export');
|
|
123
166
|
}
|
|
124
167
|
}
|
|
125
|
-
|
|
126
|
-
|
|
168
|
+
onField1Change() {
|
|
169
|
+
this.newOperation.field2 = '';
|
|
170
|
+
this.newOperation.operator = this.isNumericField(this.newOperation.field1)
|
|
171
|
+
? Operators.add
|
|
172
|
+
: Operators.concatenateSpace;
|
|
173
|
+
}
|
|
174
|
+
isNumericField(field) {
|
|
175
|
+
return this.numericProperties.includes(field);
|
|
176
|
+
}
|
|
177
|
+
get availableOperators() {
|
|
178
|
+
return this.isNumericField(this.newOperation.field1)
|
|
179
|
+
? this.operatorsNumeric
|
|
180
|
+
: this.operatorsString;
|
|
181
|
+
}
|
|
182
|
+
get availableFields2() {
|
|
183
|
+
return this.isNumericField(this.newOperation.field1)
|
|
184
|
+
? this.numericProperties
|
|
185
|
+
: this.stringProperties;
|
|
186
|
+
}
|
|
187
|
+
toggleShowAllProfiles() {
|
|
188
|
+
this.showAllProfiles = !this.showAllProfiles;
|
|
189
|
+
}
|
|
190
|
+
toggleShowAllGroups() {
|
|
191
|
+
this.showAllGroups = !this.showAllGroups;
|
|
192
|
+
}
|
|
193
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DataExportComponent, deps: [{ token: i1.DataExportService }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
194
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: DataExportComponent, selector: "lib-data-export", inputs: { data: "data" }, outputs: { exportDataEvent: "exportDataEvent" }, usesOnChanges: true, ngImport: i0, template: "<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n class=\"export-card\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Export</h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"resetAll()\"\n >\n Reset\n </button>\n </div>\n <div card-body class=\"card-body\">\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Profiles</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <div *ngFor=\"let profile of visibleProfiles; let i = index\" class=\"item\">\n <div class=\"item-label\">\n <input\n type=\"checkbox\"\n [id]=\"'profile-' + i\"\n [(ngModel)]=\"profile.selected\"\n />\n <label [for]=\"'profile-' + i\" class=\"checkbox-label\">\n {{ profile.name }}\n </label>\n </div>\n <div class=\"item-actions\">\n <verben-svg\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editProfile(profile)\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"removeProfile(profile)\"\n ></verben-svg>\n </div>\n </div>\n <div\n *ngIf=\"profiles.length > 3\"\n (click)=\"toggleShowAllProfiles()\"\n class=\"show-more\"\n >\n <span>{{ showAllProfiles ? \"Show less\" : \"Show more\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </div>\n </section>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Group</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <form [formGroup]=\"newGroupForm\" (ngSubmit)=\"addGroup()\">\n <verbena-input\n placeholder=\"Group name\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100%\"\n height=\"20px\"\n pd=\"4px 6px\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n formControlName=\"name\"\n ></verbena-input>\n </form>\n <div *ngFor=\"let item of visibleGroups; let i = index\" class=\"item\">\n <div class=\"item-label\">\n <input\n type=\"checkbox\"\n [id]=\"'group-' + i\"\n [(ngModel)]=\"item.selected\"\n />\n <label [for]=\"'group-' + i\" class=\"checkbox-label\">\n {{ item.name }}\n </label>\n </div>\n <div class=\"item-actions\" *ngIf=\"item.type === 'operation'\">\n <verben-svg\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editOperation(item)\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"removeOperation(item)\"\n ></verben-svg>\n </div>\n </div>\n <div\n *ngIf=\"groupItems.length > 3\"\n (click)=\"toggleShowAllGroups()\"\n class=\"show-more\"\n >\n <span>{{ showAllGroups ? \"Show less\" : \"Show more\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </div>\n <button class=\"add-button\" (click)=\"addGroup()\">+ Add</button>\n </section>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Operation</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <verbena-input\n placeholder=\"Operation name\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100%\"\n height=\"20px\"\n pd=\"2px 6px\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n [(ngModel)]=\"newOperation.name\"\n ></verbena-input>\n <div class=\"operation-grid\">\n <verben-drop-down\n width=\"'8rem'\"\n placeholder=\"Select field\"\n [options]=\"numericProperties.concat(stringProperties)\"\n [(ngModel)]=\"newOperation.field1\"\n (ngModelChange)=\"onField1Change()\"\n >\n </verben-drop-down>\n <verben-drop-down\n width=\"'8rem'\"\n placeholder=\"Select operator\"\n [options]=\"availableOperators\"\n [(ngModel)]=\"newOperation.operator\"\n >\n </verben-drop-down>\n <verben-drop-down\n width=\"'8rem'\"\n placeholder=\"Select field\"\n [options]=\"availableFields2\"\n [(ngModel)]=\"newOperation.field2\"\n >\n </verben-drop-down>\n </div>\n <button class=\"add-button\" (click)=\"addOrUpdateOperation()\">\n {{ isEditingOperation ? \"Update\" : \"+ Add\" }}\n </button>\n </section>\n </div>\n <div card-footer class=\"card-footer\">\n <button class=\"export-button\" (click)=\"exportData()\">Export</button>\n </div>\n</verben-card>\n", styles: [".export-card{font-size:.75rem}.card-header{display:flex;justify-content:space-between;align-items:center}.header-title{font-weight:600;font-size:.8125rem}.card-body,.section{display:flex;flex-direction:column;gap:1rem}.section-header{display:flex;justify-content:space-between;align-items:center}.section-title{font-size:.8125rem}.item{display:flex;justify-content:space-between;align-items:center}.item-label{display:flex;align-items:center;gap:.5rem}.checkbox-label{line-height:1}.item-actions{display:flex;gap:.5rem}.show-more{display:flex;align-items:center;color:#6b7280;cursor:pointer}.divider{border:none;border-top:1px solid #e8eaf1}.operation-grid{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.add-button{margin-top:.5rem;outline:none;border:none;background-color:transparent;color:#3479e9;font-size:.75rem;font-weight:500;cursor:pointer}.card-footer{display:flex;justify-content:flex-end;background-color:transparent}.export-button{margin-top:.5rem;outline:none;border:none;padding:.2rem 1.6rem;background-color:#ffe681;color:#404040;font-size:.75rem;font-weight:600;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "size"] }, { kind: "component", type: i5.CardComponent, selector: "verben-card", inputs: ["pd", "mg", "height", "width", "textColor", "bgColor", "border", "borderRadius", "disabled", "aspectRatio"] }, { kind: "component", type: i6.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }, { kind: "component", type: i7.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "inputWrapperClass", "customErrorMessages"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
127
195
|
}
|
|
128
196
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DataExportComponent, decorators: [{
|
|
129
197
|
type: Component,
|
|
130
|
-
args: [{ selector: 'lib-data-export', changeDetection: ChangeDetectionStrategy.OnPush, template: "<
|
|
131
|
-
}], ctorParameters: () => [{ type: i1.
|
|
198
|
+
args: [{ selector: 'lib-data-export', changeDetection: ChangeDetectionStrategy.OnPush, template: "<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n class=\"export-card\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Export</h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"resetAll()\"\n >\n Reset\n </button>\n </div>\n <div card-body class=\"card-body\">\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Profiles</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <div *ngFor=\"let profile of visibleProfiles; let i = index\" class=\"item\">\n <div class=\"item-label\">\n <input\n type=\"checkbox\"\n [id]=\"'profile-' + i\"\n [(ngModel)]=\"profile.selected\"\n />\n <label [for]=\"'profile-' + i\" class=\"checkbox-label\">\n {{ profile.name }}\n </label>\n </div>\n <div class=\"item-actions\">\n <verben-svg\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editProfile(profile)\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"removeProfile(profile)\"\n ></verben-svg>\n </div>\n </div>\n <div\n *ngIf=\"profiles.length > 3\"\n (click)=\"toggleShowAllProfiles()\"\n class=\"show-more\"\n >\n <span>{{ showAllProfiles ? \"Show less\" : \"Show more\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </div>\n </section>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Group</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <form [formGroup]=\"newGroupForm\" (ngSubmit)=\"addGroup()\">\n <verbena-input\n placeholder=\"Group name\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100%\"\n height=\"20px\"\n pd=\"4px 6px\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n formControlName=\"name\"\n ></verbena-input>\n </form>\n <div *ngFor=\"let item of visibleGroups; let i = index\" class=\"item\">\n <div class=\"item-label\">\n <input\n type=\"checkbox\"\n [id]=\"'group-' + i\"\n [(ngModel)]=\"item.selected\"\n />\n <label [for]=\"'group-' + i\" class=\"checkbox-label\">\n {{ item.name }}\n </label>\n </div>\n <div class=\"item-actions\" *ngIf=\"item.type === 'operation'\">\n <verben-svg\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editOperation(item)\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"removeOperation(item)\"\n ></verben-svg>\n </div>\n </div>\n <div\n *ngIf=\"groupItems.length > 3\"\n (click)=\"toggleShowAllGroups()\"\n class=\"show-more\"\n >\n <span>{{ showAllGroups ? \"Show less\" : \"Show more\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </div>\n <button class=\"add-button\" (click)=\"addGroup()\">+ Add</button>\n </section>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Operation</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <verbena-input\n placeholder=\"Operation name\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100%\"\n height=\"20px\"\n pd=\"2px 6px\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n [(ngModel)]=\"newOperation.name\"\n ></verbena-input>\n <div class=\"operation-grid\">\n <verben-drop-down\n width=\"'8rem'\"\n placeholder=\"Select field\"\n [options]=\"numericProperties.concat(stringProperties)\"\n [(ngModel)]=\"newOperation.field1\"\n (ngModelChange)=\"onField1Change()\"\n >\n </verben-drop-down>\n <verben-drop-down\n width=\"'8rem'\"\n placeholder=\"Select operator\"\n [options]=\"availableOperators\"\n [(ngModel)]=\"newOperation.operator\"\n >\n </verben-drop-down>\n <verben-drop-down\n width=\"'8rem'\"\n placeholder=\"Select field\"\n [options]=\"availableFields2\"\n [(ngModel)]=\"newOperation.field2\"\n >\n </verben-drop-down>\n </div>\n <button class=\"add-button\" (click)=\"addOrUpdateOperation()\">\n {{ isEditingOperation ? \"Update\" : \"+ Add\" }}\n </button>\n </section>\n </div>\n <div card-footer class=\"card-footer\">\n <button class=\"export-button\" (click)=\"exportData()\">Export</button>\n </div>\n</verben-card>\n", styles: [".export-card{font-size:.75rem}.card-header{display:flex;justify-content:space-between;align-items:center}.header-title{font-weight:600;font-size:.8125rem}.card-body,.section{display:flex;flex-direction:column;gap:1rem}.section-header{display:flex;justify-content:space-between;align-items:center}.section-title{font-size:.8125rem}.item{display:flex;justify-content:space-between;align-items:center}.item-label{display:flex;align-items:center;gap:.5rem}.checkbox-label{line-height:1}.item-actions{display:flex;gap:.5rem}.show-more{display:flex;align-items:center;color:#6b7280;cursor:pointer}.divider{border:none;border-top:1px solid #e8eaf1}.operation-grid{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.add-button{margin-top:.5rem;outline:none;border:none;background-color:transparent;color:#3479e9;font-size:.75rem;font-weight:500;cursor:pointer}.card-footer{display:flex;justify-content:flex-end;background-color:transparent}.export-button{margin-top:.5rem;outline:none;border:none;padding:.2rem 1.6rem;background-color:#ffe681;color:#404040;font-size:.75rem;font-weight:600;cursor:pointer}\n"] }]
|
|
199
|
+
}], ctorParameters: () => [{ type: i1.DataExportService }, { type: i2.FormBuilder }], propDecorators: { data: [{
|
|
132
200
|
type: Input
|
|
133
201
|
}], exportDataEvent: [{
|
|
134
202
|
type: Output
|
|
135
203
|
}] } });
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1leHBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWV4cG9ydC9kYXRhLWV4cG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtZXhwb3J0L2RhdGEtZXhwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBcUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBVS9FLE1BQU0sT0FBTyxtQkFBbUI7SUFXcEI7SUFDRDtJQVhBLElBQUksQ0FBUztJQUNaLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBeUIsQ0FBQztJQUV0RSxXQUFXLENBQWE7SUFDeEIsYUFBYSxDQUFhO0lBQzFCLG9CQUFvQixDQUFhO0lBQ2pDLGNBQWMsR0FBYSxFQUFFLENBQUM7SUFDOUIsYUFBYSxHQUFhLEVBQUUsQ0FBQztJQUU3QixZQUNVLEVBQWUsRUFDaEIsYUFBZ0M7UUFEL0IsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNoQixrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7SUFDdEMsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLFNBQVM7UUFDZixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFD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QUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsVUFBVTtRQUNSLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWE7YUFDeEMsV0FBVyxFQUFFO2FBQ2IsTUFBTSxDQUNMLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQ04sSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDbkUsS0FBSyxDQUNYLENBQUM7UUFFSixJQUFJLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FDaEQsSUFBSSxDQUFDLElBQUksRUFDVCxnQkFBZ0IsQ0FDakIsQ0FBQztZQUNGLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzFDLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ2pELENBQUM7SUFDSCxDQUFDO3VHQTNJVSxtQkFBbUI7MkZBQW5CLG1CQUFtQixrSUNqQmhDLGt6RkEwRkE7OzJGRHpFYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU07Z0hBR3RDLElBQUk7c0JBQVosS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERhdGFFeHBvcnRTZXJ2aWNlIH0gZnJvbSAnLi9kYXRhLWV4cG9ydC5zZXJ2aWNlJztcbmltcG9ydCB7IEV4cG9ydFByb2ZpbGUsIE9wZXJhdGlvbiB9IGZyb20gJy4vZGF0YS1leHBvcnQudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZGF0YS1leHBvcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS1leHBvcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZGF0YS1leHBvcnQuY29tcG9uZW50LmNzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhRXhwb3J0Q29tcG9uZW50IHtcbiAgQElucHV0KCkgZGF0YSE6IGFueVtdO1xuICBAT3V0cHV0KCkgZXhwb3J0RGF0YUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ8c3RyaW5nLCBhbnk+W10+KCk7XG5cbiAgcHJvZmlsZUZvcm0hOiBGb3JtR3JvdXA7XG4gIG9wZXJhdGlvbkZvcm0hOiBGb3JtR3JvdXA7XG4gIHByb2ZpbGVTZWxlY3Rpb25Gb3JtITogRm9ybUdyb3VwO1xuICBiYXNlUHJvcGVydGllczogc3RyaW5nW10gPSBbXTtcbiAgYWxsUHJvcGVydGllczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwdWJsaWMgZXhwb3J0U2VydmljZTogRGF0YUV4cG9ydFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdEZvcm1zKCk7XG4gICAgdGhpcy51cGRhdGVQcm9wZXJ0aWVzKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRGb3JtcygpIHtcbiAgICB0aGlzLmluaXRQcm9maWxlRm9ybSgpO1xuICAgIHRoaXMuaW5pdE9wZXJhdGlvbkZvcm0oKTtcbiAgICB0aGlzLmluaXRQcm9maWxlU2VsZWN0aW9uRm9ybSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0UHJvZmlsZUZvcm0oKSB7XG4gICAgY29uc3QgaXRlbUNvbnRyb2xzID0gdGhpcy5leHBvcnRTZXJ2aWNlLmdldEFsbEl0ZW1zKCkubWFwKCgpID0+IGZhbHNlKTtcbiAgICB0aGlzLnByb2ZpbGVGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBuYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgaXRlbXM6IHRoaXMuZmIuYXJyYXkoaXRlbUNvbnRyb2xzKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdE9wZXJhdGlvbkZvcm0oKSB7XG4gICAgdGhpcy5vcGVyYXRpb25Gb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBuYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgZmllbGQxOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgb3BlcmF0b3I6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBmaWVsZDI6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRQcm9maWxlU2VsZWN0aW9uRm9ybSgpIHtcbiAgICBjb25zdCBwcm9maWxlQ29udHJvbHMgPSB0aGlzLmV4cG9ydFNlcnZpY2UuZ2V0UHJvZmlsZXMoKS5tYXAoKCkgPT4gZmFsc2UpO1xuICAgIHRoaXMucHJvZmlsZVNlbGVjdGlvbkZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIHNlbGVjdGVkUHJvZmlsZXM6IHRoaXMuZmIuYXJyYXkocHJvZmlsZUNvbnRyb2xzKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUHJvcGVydGllcygpIHtcbiAgICBpZiAodGhpcy5kYXRhICYmIHRoaXMuZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBiYXNlUHJvcGVydGllcyA9IE9iamVjdC5rZXlzKHRoaXMuZGF0YVswXSk7XG4gICAgICB0aGlzLmV4cG9ydFNlcnZpY2Uuc2V0QmFzZVByb3BlcnRpZXMoYmFzZVByb3BlcnRpZXMpO1xuICAgIH1cbiAgICB0aGlzLmFsbFByb3BlcnRpZXMgPSB0aGlzLmV4cG9ydFNlcnZpY2VcbiAgICAgIC5nZXRBbGxJdGVtcygpXG4gICAgICAubWFwKChpdGVtKSA9PiBpdGVtLmlkKTtcbiAgICB0aGlzLmluaXRQcm9maWxlRm9ybSgpO1xuICB9XG5cbiAgb25TdWJtaXRPcGVyYXRpb24oKSB7XG4gICAgaWYgKHRoaXMub3BlcmF0aW9uRm9ybS52YWxpZCkge1xuICAgICAgY29uc3Qgb3BlcmF0aW9uOiBPcGVyYXRpb24gPSB7XG4gICAgICAgIGlkOiBEYXRlLm5vdygpLnRvU3RyaW5nKCksXG4gICAgICAgIC4uLnRoaXMub3BlcmF0aW9uRm9ybS52YWx1ZSxcbiAgICAgIH07XG4gICAgICB0aGlzLmV4cG9ydFNlcnZpY2UuYWRkT3BlcmF0aW9uKG9wZXJhdGlvbik7XG4gICAgICB0aGlzLm9wZXJhdGlvbkZvcm0ucmVzZXQoKTtcbiAgICAgIHRoaXMudXBkYXRlUHJvcGVydGllcygpO1xuICAgIH1cbiAgfVxuXG4gIG9uU3VibWl0UHJvZmlsZSgpIHtcbiAgICBpZiAodGhpcy5wcm9maWxlRm9ybS52YWxpZCkge1xuICAgICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5wcm9maWxlRm9ybS52YWx1ZTtcbiAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLmV4cG9ydFNlcnZpY2VcbiAgICAgICAgLmdldEFsbEl0ZW1zKClcbiAgICAgICAgLmZpbHRlcigoXywgaSkgPT4gZm9ybVZhbHVlLml0ZW1zW2ldKTtcbiAgICAgIGNvbnN0IG5ld1Byb2ZpbGU6IEV4cG9ydFByb2ZpbGUgPSB7XG4gICAgICAgIGlkOiBEYXRlLm5vdygpLnRvU3RyaW5nKCksXG4gICAgICAgIG5hbWU6IGZvcm1WYWx1ZS5uYW1lLFxuICAgICAgICBpdGVtczogc2VsZWN0ZWRJdGVtcyxcbiAgICAgIH07XG4gICAgICB0aGlzLmV4cG9ydFNlcnZpY2UuYWRkUHJvZmlsZShuZXdQcm9maWxlKTtcbiAgICAgIHRoaXMucHJvZmlsZUZvcm0ucmVzZXQoKTtcbiAgICAgIHRoaXMuaW5pdFByb2ZpbGVTZWxlY3Rpb25Gb3JtKCk7XG4gICAgfVxuICB9XG5cbiAgZWRpdFByb2ZpbGUocHJvZmlsZTogRXhwb3J0UHJvZmlsZSkge1xuICAgIHRoaXMucHJvZmlsZUZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBuYW1lOiBwcm9maWxlLm5hbWUsXG4gICAgICBpdGVtczogdGhpcy5leHBvcnRTZXJ2aWNlXG4gICAgICAgIC5nZXRBbGxJdGVtcygpXG4gICAgICAgIC5tYXAoKGl0ZW0pID0+XG4gICAgICAgICAgcHJvZmlsZS5pdGVtcy5zb21lKChwcm9maWxlSXRlbSkgPT4gcHJvZmlsZUl0ZW0uaWQgPT09IGl0ZW0uaWQpXG4gICAgICAgICksXG4gICAgfSk7XG4gIH1cblxuICBlZGl0T3BlcmF0aW9uKG9wZXJhdGlvbjogT3BlcmF0aW9uKSB7XG4gICAgdGhpcy5vcGVyYXRpb25Gb3JtLnBhdGNoVmFsdWUob3BlcmF0aW9uKTtcbiAgfVxuXG4gIHJlbW92ZU9wZXJhdGlvbihpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5leHBvcnRTZXJ2aWNlLnJlbW92ZU9wZXJhdGlvbihpZCk7XG4gICAgdGhpcy51cGRhdGVQcm9wZXJ0aWVzKCk7XG4gIH1cblxuICByZW1vdmVQcm9maWxlKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmV4cG9ydFNlcnZpY2UucmVtb3ZlUHJvZmlsZShpZCk7XG4gICAgdGhpcy5pbml0UHJvZmlsZVNlbGVjdGlvbkZvcm0oKTtcbiAgfVxuXG4gIHJlc2V0QWxsKCkge1xuICAgIHRoaXMuZXhwb3J0U2VydmljZS5yZXNldEFsbCgpO1xuICAgIHRoaXMuaW5pdEZvcm1zKCk7XG4gICAgdGhpcy51cGRhdGVQcm9wZXJ0aWVzKCk7XG4gIH1cblxuICBleHBvcnREYXRhKCkge1xuICAgIGNvbnN0IHNlbGVjdGVkUHJvZmlsZXMgPSB0aGlzLmV4cG9ydFNlcnZpY2VcbiAgICAgIC5nZXRQcm9maWxlcygpXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAoXywgaSkgPT5cbiAgICAgICAgICAodGhpcy5wcm9maWxlU2VsZWN0aW9uRm9ybS5nZXQoJ3NlbGVjdGVkUHJvZmlsZXMnKSBhcyBGb3JtQXJyYXkpLmF0KGkpXG4gICAgICAgICAgICAudmFsdWVcbiAgICAgICk7XG5cbiAgICBpZiAoc2VsZWN0ZWRQcm9maWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBleHBvcnRlZERhdGEgPSB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0RGF0YShcbiAgICAgICAgdGhpcy5kYXRhLFxuICAgICAgICBzZWxlY3RlZFByb2ZpbGVzXG4gICAgICApO1xuICAgICAgdGhpcy5leHBvcnREYXRhRXZlbnQuZW1pdChleHBvcnRlZERhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygnTm8gcHJvZmlsZXMgc2VsZWN0ZWQgZm9yIGV4cG9ydCcpO1xuICAgIH1cbiAgfVxufVxuIiwiPGgyPkV4cG9ydCBDb25maWd1cmF0aW9uPC9oMj5cblxuPGgzPkNyZWF0ZSBPcGVyYXRpb248L2gzPlxuPGZvcm0gW2Zvcm1Hcm91cF09XCJvcGVyYXRpb25Gb3JtXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0T3BlcmF0aW9uKClcIj5cbiAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIiBwbGFjZWhvbGRlcj1cIk9wZXJhdGlvbiBOYW1lXCIgLz5cbiAgPHNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJmaWVsZDFcIj5cbiAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0IEZpZWxkIDE8L29wdGlvbj5cbiAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBwcm9wIG9mIGJhc2VQcm9wZXJ0aWVzXCIgW3ZhbHVlXT1cInByb3BcIj5cbiAgICAgIHt7IHByb3AgfX1cbiAgICA8L29wdGlvbj5cbiAgPC9zZWxlY3Q+XG4gIDxzZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwib3BlcmF0b3JcIj5cbiAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0IE9wZXJhdG9yPC9vcHRpb24+XG4gICAgPG9wdGlvbiB2YWx1ZT1cImFkZFwiPis8L29wdGlvbj5cbiAgICA8b3B0aW9uIHZhbHVlPVwic3VidHJhY3RcIj4tPC9vcHRpb24+XG4gICAgPG9wdGlvbiB2YWx1ZT1cIm11bHRpcGx5XCI+Kjwvb3B0aW9uPlxuICAgIDxvcHRpb24gdmFsdWU9XCJkaXZpZGVcIj4vPC9vcHRpb24+XG4gIDwvc2VsZWN0PlxuICA8c2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImZpZWxkMlwiPlxuICAgIDxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3QgRmllbGQgMjwvb3B0aW9uPlxuICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHByb3Agb2YgYmFzZVByb3BlcnRpZXNcIiBbdmFsdWVdPVwicHJvcFwiPlxuICAgICAge3sgcHJvcCB9fVxuICAgIDwvb3B0aW9uPlxuICA8L3NlbGVjdD5cbiAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgW2Rpc2FibGVkXT1cIiFvcGVyYXRpb25Gb3JtLnZhbGlkXCI+QWRkIE9wZXJhdGlvbjwvYnV0dG9uPlxuPC9mb3JtPlxuXG48aDM+T3BlcmF0aW9uczwvaDM+XG48ZGl2XG4gICpuZ0Zvcj1cImxldCBvcGVyYXRpb24gb2YgZXhwb3J0U2VydmljZS5nZXRPcGVyYXRpb25zKClcIlxuICBjbGFzcz1cIm9wZXJhdGlvbi1pdGVtXCJcbj5cbiAgPHNwYW5cbiAgICA+e3sgb3BlcmF0aW9uLm5hbWUgfX06IHt7IG9wZXJhdGlvbi5maWVsZDEgfX0ge3sgb3BlcmF0aW9uLm9wZXJhdG9yIH19XG4gICAge3sgb3BlcmF0aW9uLmZpZWxkMiB9fTwvc3BhblxuICA+XG4gIDxkaXY+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiZWRpdE9wZXJhdGlvbihvcGVyYXRpb24pXCI+RWRpdDwvYnV0dG9uPlxuICAgIDxidXR0b24gKGNsaWNrKT1cInJlbW92ZU9wZXJhdGlvbihvcGVyYXRpb24uaWQpXCI+UmVtb3ZlPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxoMz5DcmVhdGUgUHJvZmlsZTwvaDM+XG48Zm9ybSBbZm9ybUdyb3VwXT1cInByb2ZpbGVGb3JtXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0UHJvZmlsZSgpXCI+XG4gIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgcGxhY2Vob2xkZXI9XCJQcm9maWxlIE5hbWVcIiAvPlxuICA8ZGl2IGZvcm1BcnJheU5hbWU9XCJpdGVtc1wiIGNsYXNzPVwiY2hlY2tib3gtZ3JvdXBcIj5cbiAgICA8bGFiZWxcbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGV4cG9ydFNlcnZpY2UuZ2V0QWxsSXRlbXMoKTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICBjbGFzcz1cImNoZWNrYm94LWxhYmVsXCJcbiAgICA+XG4gICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2Zvcm1Db250cm9sTmFtZV09XCJpXCIgLz5cbiAgICAgIHt7IGl0ZW0ubmFtZSB9fSAoe3sgaXRlbS50eXBlIH19KVxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBbZGlzYWJsZWRdPVwiIXByb2ZpbGVGb3JtLnZhbGlkXCI+U2F2ZSBQcm9maWxlPC9idXR0b24+XG48L2Zvcm0+XG5cbjxoMz5Qcm9maWxlczwvaDM+XG48dWw+XG4gIDxsaSAqbmdGb3I9XCJsZXQgcHJvZmlsZSBvZiBleHBvcnRTZXJ2aWNlLmdldFByb2ZpbGVzKClcIj5cbiAgICA8c3Bhbj57eyBwcm9maWxlLm5hbWUgfX08L3NwYW4+XG4gICAgPGRpdj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJwcm9maWxlLmlkICE9PSAnZGVmYXVsdCdcIiAoY2xpY2spPVwiZWRpdFByb2ZpbGUocHJvZmlsZSlcIj5cbiAgICAgICAgRWRpdFxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwicHJvZmlsZS5pZCAhPT0gJ2RlZmF1bHQnXCJcbiAgICAgICAgKGNsaWNrKT1cInJlbW92ZVByb2ZpbGUocHJvZmlsZS5pZClcIlxuICAgICAgPlxuICAgICAgICBSZW1vdmVcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2xpPlxuPC91bD5cblxuPGJ1dHRvbiAoY2xpY2spPVwicmVzZXRBbGwoKVwiPlJlc2V0IEFsbDwvYnV0dG9uPlxuXG48aDM+RXhwb3J0PC9oMz5cbjxmb3JtIFtmb3JtR3JvdXBdPVwicHJvZmlsZVNlbGVjdGlvbkZvcm1cIj5cbiAgPGRpdiBmb3JtQXJyYXlOYW1lPVwic2VsZWN0ZWRQcm9maWxlc1wiIGNsYXNzPVwiY2hlY2tib3gtZ3JvdXBcIj5cbiAgICA8bGFiZWxcbiAgICAgICpuZ0Zvcj1cImxldCBwcm9maWxlIG9mIGV4cG9ydFNlcnZpY2UuZ2V0UHJvZmlsZXMoKTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICBjbGFzcz1cImNoZWNrYm94LWxhYmVsXCJcbiAgICA+XG4gICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2Zvcm1Db250cm9sTmFtZV09XCJpXCIgLz5cbiAgICAgIHt7IHByb2ZpbGUubmFtZSB9fVxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuPC9mb3JtPlxuPGJ1dHRvbiAoY2xpY2spPVwiZXhwb3J0RGF0YSgpXCI+RXhwb3J0IFNlbGVjdGVkIFByb2ZpbGVzPC9idXR0b24+XG4iXX0=
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1leHBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWV4cG9ydC9kYXRhLWV4cG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtZXhwb3J0L2RhdGEtZXhwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBcUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0UsT0FBTyxFQUlMLFNBQVMsR0FDVixNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7QUFRN0IsTUFBTSxPQUFPLG1CQUFtQjtJQWlDcEI7SUFDQTtJQWpDRCxJQUFJLENBQVM7SUFDWixlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7SUFFdEUsUUFBUSxHQUE4QyxFQUFFLENBQUM7SUFDekQsVUFBVSxHQUEyQyxFQUFFLENBQUM7SUFDeEQsWUFBWSxDQUFZO0lBQ3hCLFlBQVksR0FBYztRQUN4QixFQUFFLEVBQUUsRUFBRTtRQUNOLElBQUksRUFBRSxFQUFFO1FBQ1IsTUFBTSxFQUFFLEVBQUU7UUFDVixRQUFRLEVBQUUsU0FBUyxDQUFDLEdBQUc7UUFDdkIsTUFBTSxFQUFFLEVBQUU7S0FDWCxDQUFDO0lBQ0YsaUJBQWlCLEdBQWEsRUFBRSxDQUFDO0lBQ2pDLGdCQUFnQixHQUFhLEVBQUUsQ0FBQztJQUNoQyxrQkFBa0IsR0FBWSxLQUFLLENBQUM7SUFDcEMsZUFBZSxHQUFZLEtBQUssQ0FBQztJQUNqQyxhQUFhLEdBQVksS0FBSyxD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QW1CO2tCQU4vQixTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNO2dIQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEYXRhRXhwb3J0U2VydmljZSB9IGZyb20gJy4vZGF0YS1leHBvcnQuc2VydmljZSc7XG5pbXBvcnQge1xuICBFeHBvcnRJdGVtLFxuICBFeHBvcnRQcm9maWxlLFxuICBPcGVyYXRpb24sXG4gIE9wZXJhdG9ycyxcbn0gZnJvbSAnLi9kYXRhLWV4cG9ydC50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1kYXRhLWV4cG9ydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLWV4cG9ydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kYXRhLWV4cG9ydC5jb21wb25lbnQuY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERhdGFFeHBvcnRDb21wb25lbnQge1xuICBASW5wdXQoKSBkYXRhITogYW55W107XG4gIEBPdXRwdXQoKSBleHBvcnREYXRhRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZDxzdHJpbmcsIGFueT5bXT4oKTtcblxuICBwcm9maWxlczogKEV4cG9ydFByb2ZpbGUgJiB7IHNlbGVjdGVkOiBib29sZWFuIH0pW10gPSBbXTtcbiAgZ3JvdXBJdGVtczogKEV4cG9ydEl0ZW0gJiB7IHNlbGVjdGVkOiBib29sZWFuIH0pW10gPSBbXTtcbiAgbmV3R3JvdXBGb3JtOiBGb3JtR3JvdXA7XG4gIG5ld09wZXJhdGlvbjogT3BlcmF0aW9uID0ge1xuICAgIGlkOiAnJyxcbiAgICBuYW1lOiAnJyxcbiAgICBmaWVsZDE6ICcnLFxuICAgIG9wZXJhdG9yOiBPcGVyYXRvcnMuYWRkLFxuICAgIGZpZWxkMjogJycsXG4gIH07XG4gIG51bWVyaWNQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICBzdHJpbmdQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICBpc0VkaXRpbmdPcGVyYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd0FsbFByb2ZpbGVzOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dBbGxHcm91cHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBvcGVyYXRvcnNOdW1lcmljOiBPcGVyYXRvcnNbXSA9IFtcbiAgICBPcGVyYXRvcnMuYWRkLFxuICAgIE9wZXJhdG9ycy5zdWJ0cmFjdCxcbiAgICBPcGVyYXRvcnMubXVsdGlwbHksXG4gICAgT3BlcmF0b3JzLmRpdmlkZSxcbiAgXTtcbiAgb3BlcmF0b3JzU3RyaW5nOiBPcGVyYXRvcnNbXSA9IFtcbiAgICBPcGVyYXRvcnMuY29uY2F0ZW5hdGVTcGFjZSxcbiAgICBPcGVyYXRvcnMuY29uY2F0ZW5hdGVDb21tYVNwYWNlLFxuICAgIE9wZXJhdG9ycy5jb25jYXRlbmF0ZUNvbW1hLFxuICBdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZXhwb3J0U2VydmljZTogRGF0YUV4cG9ydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXJcbiAgKSB7XG4gICAgdGhpcy5uZXdHcm91cEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIG5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmluaXRpYWxpemVHcm91cEl0ZW1zKCk7XG4gICAgdGhpcy51cGRhdGVQcm9maWxlcygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgdGhpcy5pbml0aWFsaXplR3JvdXBJdGVtcygpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB2aXNpYmxlUHJvZmlsZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd0FsbFByb2ZpbGVzID8gdGhpcy5wcm9maWxlcyA6IHRoaXMucHJvZmlsZXMuc2xpY2UoMCwgMyk7XG4gIH1cblxuICBnZXQgdmlzaWJsZUdyb3VwcygpIHtcbiAgICByZXR1cm4gdGhpcy5zaG93QWxsR3JvdXBzID8gdGhpcy5ncm91cEl0ZW1zIDogdGhpcy5ncm91cEl0ZW1zLnNsaWNlKDAsIDMpO1xuICB9XG5cbiAgaW5pdGlhbGl6ZUdyb3VwSXRlbXMoKSB7XG4gICAgaWYgKHRoaXMuZGF0YSAmJiB0aGlzLmRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgcHJvcGVydGllcyA9IE9iamVjdC5rZXlzKHRoaXMuZGF0YVswXSk7XG4gICAgICB0aGlzLmV4cG9ydFNlcnZpY2Uuc2V0QmFzZVByb3BlcnRpZXMocHJvcGVydGllcyk7XG4gICAgICB0aGlzLm51bWVyaWNQcm9wZXJ0aWVzID0gcHJvcGVydGllcy5maWx0ZXIoXG4gICAgICAgIChwcm9wKSA9PiB0eXBlb2YgdGhpcy5kYXRhWzBdW3Byb3BdID09PSAnbnVtYmVyJ1xuICAgICAgKTtcbiAgICAgIHRoaXMuc3RyaW5nUHJvcGVydGllcyA9IHByb3BlcnRpZXMuZmlsdGVyKFxuICAgICAgICAocHJvcCkgPT4gdHlwZW9mIHRoaXMuZGF0YVswXVtwcm9wXSA9PT0gJ3N0cmluZydcbiAgICAgICk7XG4gICAgICB0aGlzLnVwZGF0ZUdyb3VwSXRlbXMoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVQcm9maWxlcygpIHtcbiAgICB0aGlzLnByb2ZpbGVzID0gdGhpcy5leHBvcnRTZXJ2aWNlLmdldFByb2ZpbGVzKCkubWFwKChwcm9maWxlKSA9PiAoe1xuICAgICAgLi4ucHJvZmlsZSxcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICB9KSk7XG4gIH1cblxuICB1cGRhdGVHcm91cEl0ZW1zKCkge1xuICAgIHRoaXMuZ3JvdXBJdGVtcyA9IHRoaXMuZXhwb3J0U2VydmljZS5nZXRBbGxJdGVtcygpLm1hcCgoaXRlbSkgPT4gKHtcbiAgICAgIC4uLml0ZW0sXG4gICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgfSkpO1xuICB9XG5cbiAgYWRkR3JvdXAoKSB7XG4gICAgY29uc29sZS5sb2coJ2luJyk7XG4gICAgaWYgKHRoaXMubmV3R3JvdXBGb3JtLnZhbGlkKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5ncm91cEl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5zZWxlY3RlZCk7XG4gICAgICBpZiAoc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IG5ld1Byb2ZpbGU6IEV4cG9ydFByb2ZpbGUgPSB7XG4gICAgICAgICAgaWQ6IERhdGUubm93KCkudG9TdHJpbmcoKSxcbiAgICAgICAgICBuYW1lOiB0aGlzLm5ld0dyb3VwRm9ybS5nZXQoJ25hbWUnKT8udmFsdWUsXG4gICAgICAgICAgaXRlbXM6IHNlbGVjdGVkSXRlbXMsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZXhwb3J0U2VydmljZS5hZGRQcm9maWxlKG5ld1Byb2ZpbGUpO1xuICAgICAgICB0aGlzLnVwZGF0ZVByb2ZpbGVzKCk7XG4gICAgICAgIHRoaXMuZ3JvdXBJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiAoaXRlbS5zZWxlY3RlZCA9IGZhbHNlKSk7XG4gICAgICAgIHRoaXMubmV3R3JvdXBGb3JtLnJlc2V0KCk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdTRUxFQ1RFRCcpO1xuICAgICAgfVxuICAgICAgY29uc29sZS5sb2coJ1ZBTElEJyk7XG4gICAgfVxuICB9XG5cbiAgZWRpdFByb2ZpbGUocHJvZmlsZTogRXhwb3J0UHJvZmlsZSAmIHsgc2VsZWN0ZWQ6IGJvb2xlYW4gfSkge1xuICAgIHRoaXMuZ3JvdXBJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpdGVtLnNlbGVjdGVkID0gcHJvZmlsZS5pdGVtcy5zb21lKFxuICAgICAgICAocHJvZmlsZUl0ZW0pID0+IHByb2ZpbGVJdGVtLmlkID09PSBpdGVtLmlkXG4gICAgICApO1xuICAgIH0pO1xuICAgIHRoaXMucmVtb3ZlUHJvZmlsZShwcm9maWxlKTtcbiAgfVxuXG4gIHJlbW92ZVByb2ZpbGUocHJvZmlsZTogRXhwb3J0UHJvZmlsZSAmIHsgc2VsZWN0ZWQ6IGJvb2xlYW4gfSkge1xuICAgIHRoaXMuZXhwb3J0U2VydmljZS5yZW1vdmVQcm9maWxlKHByb2ZpbGUuaWQpO1xuICAgIHRoaXMudXBkYXRlUHJvZmlsZXMoKTtcbiAgfVxuXG4gIGFkZE9yVXBkYXRlT3BlcmF0aW9uKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMubmV3T3BlcmF0aW9uLm5hbWUgJiZcbiAgICAgIHRoaXMubmV3T3BlcmF0aW9uLmZpZWxkMSAmJlxuICAgICAgdGhpcy5uZXdPcGVyYXRpb24uZmllbGQyXG4gICAgKSB7XG4gICAgICBpZiAodGhpcy5pc0VkaXRpbmdPcGVyYXRpb24pIHtcbiAgICAgICAgdGhpcy5leHBvcnRTZXJ2aWNlLnVwZGF0ZU9wZXJhdGlvbihcbiAgICAgICAgICB0aGlzLm5ld09wZXJhdGlvbi5pZCxcbiAgICAgICAgICB0aGlzLm5ld09wZXJhdGlvblxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb3BlcmF0aW9uOiBPcGVyYXRpb24gPSB7XG4gICAgICAgICAgLi4udGhpcy5uZXdPcGVyYXRpb24sXG4gICAgICAgICAgaWQ6IERhdGUubm93KCkudG9TdHJpbmcoKSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5leHBvcnRTZXJ2aWNlLmFkZE9wZXJhdGlvbihvcGVyYXRpb24pO1xuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVHcm91cEl0ZW1zKCk7XG4gICAgICB0aGlzLnJlc2V0T3BlcmF0aW9uRm9ybSgpO1xuICAgIH1cbiAgfVxuXG4gIGVkaXRPcGVyYXRpb24ob3BlcmF0aW9uOiBFeHBvcnRJdGVtICYgeyBzZWxlY3RlZDogYm9vbGVhbiB9KSB7XG4gICAgdGhpcy5uZXdPcGVyYXRpb24gPSB7IC4uLihvcGVyYXRpb24gYXMgdW5rbm93biBhcyBPcGVyYXRpb24pIH07XG4gICAgdGhpcy5pc0VkaXRpbmdPcGVyYXRpb24gPSB0cnVlO1xuICB9XG5cbiAgcmVtb3ZlT3BlcmF0aW9uKG9wZXJhdGlvbjogRXhwb3J0SXRlbSAmIHsgc2VsZWN0ZWQ6IGJvb2xlYW4gfSkge1xuICAgIHRoaXMuZXhwb3J0U2VydmljZS5yZW1vdmVPcGVyYXRpb24ob3BlcmF0aW9uLmlkKTtcbiAgICB0aGlzLnVwZGF0ZUdyb3VwSXRlbXMoKTtcbiAgfVxuXG4gIHJlc2V0T3BlcmF0aW9uRm9ybSgpIHtcbiAgICB0aGlzLm5ld09wZXJhdGlvbiA9IHtcbiAgICAgIGlkOiAnJyxcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgZmllbGQxOiAnJyxcbiAgICAgIG9wZXJhdG9yOiBPcGVyYXRvcnMuYWRkLFxuICAgICAgZmllbGQyOiAnJyxcbiAgICB9O1xuICAgIHRoaXMuaXNFZGl0aW5nT3BlcmF0aW9uID0gZmFsc2U7XG4gIH1cblxuICByZXNldEFsbCgpIHtcbiAgICB0aGlzLmV4cG9ydFNlcnZpY2UucmVzZXRBbGwoKTtcbiAgICB0aGlzLmluaXRpYWxpemVHcm91cEl0ZW1zKCk7XG4gICAgdGhpcy51cGRhdGVQcm9maWxlcygpO1xuICAgIHRoaXMucmVzZXRPcGVyYXRpb25Gb3JtKCk7XG4gICAgdGhpcy5uZXdHcm91cEZvcm0ucmVzZXQoKTtcbiAgfVxuXG4gIGV4cG9ydERhdGEoKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRQcm9maWxlcyA9IHRoaXMucHJvZmlsZXMuZmlsdGVyKFxuICAgICAgKHByb2ZpbGUpID0+IHByb2ZpbGUuc2VsZWN0ZWRcbiAgICApO1xuICAgIGlmIChzZWxlY3RlZFByb2ZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGV4cG9ydGVkRGF0YSA9IHRoaXMuZXhwb3J0U2VydmljZS5leHBvcnREYXRhKFxuICAgICAgICB0aGlzLmRhdGEsXG4gICAgICAgIHNlbGVjdGVkUHJvZmlsZXNcbiAgICAgICk7XG4gICAgICB0aGlzLmV4cG9ydERhdGFFdmVudC5lbWl0KGV4cG9ydGVkRGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKCdObyBwcm9maWxlcyBzZWxlY3RlZCBmb3IgZXhwb3J0Jyk7XG4gICAgfVxuICB9XG5cbiAgb25GaWVsZDFDaGFuZ2UoKSB7XG4gICAgdGhpcy5uZXdPcGVyYXRpb24uZmllbGQyID0gJyc7XG4gICAgdGhpcy5uZXdPcGVyYXRpb24ub3BlcmF0b3IgPSB0aGlzLmlzTnVtZXJpY0ZpZWxkKHRoaXMubmV3T3BlcmF0aW9uLmZpZWxkMSlcbiAgICAgID8gT3BlcmF0b3JzLmFkZFxuICAgICAgOiBPcGVyYXRvcnMuY29uY2F0ZW5hdGVTcGFjZTtcbiAgfVxuXG4gIGlzTnVtZXJpY0ZpZWxkKGZpZWxkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5udW1lcmljUHJvcGVydGllcy5pbmNsdWRlcyhmaWVsZCk7XG4gIH1cblxuICBnZXQgYXZhaWxhYmxlT3BlcmF0b3JzKCk6IE9wZXJhdG9yc1tdIHtcbiAgICByZXR1cm4gdGhpcy5pc051bWVyaWNGaWVsZCh0aGlzLm5ld09wZXJhdGlvbi5maWVsZDEpXG4gICAgICA/IHRoaXMub3BlcmF0b3JzTnVtZXJpY1xuICAgICAgOiB0aGlzLm9wZXJhdG9yc1N0cmluZztcbiAgfVxuXG4gIGdldCBhdmFpbGFibGVGaWVsZHMyKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5pc051bWVyaWNGaWVsZCh0aGlzLm5ld09wZXJhdGlvbi5maWVsZDEpXG4gICAgICA/IHRoaXMubnVtZXJpY1Byb3BlcnRpZXNcbiAgICAgIDogdGhpcy5zdHJpbmdQcm9wZXJ0aWVzO1xuICB9XG5cbiAgdG9nZ2xlU2hvd0FsbFByb2ZpbGVzKCkge1xuICAgIHRoaXMuc2hvd0FsbFByb2ZpbGVzID0gIXRoaXMuc2hvd0FsbFByb2ZpbGVzO1xuICB9XG5cbiAgdG9nZ2xlU2hvd0FsbEdyb3VwcygpIHtcbiAgICB0aGlzLnNob3dBbGxHcm91cHMgPSAhdGhpcy5zaG93QWxsR3JvdXBzO1xuICB9XG59XG4iLCI8dmVyYmVuLWNhcmRcbiAgd2lkdGg9XCIyNHJlbVwiXG4gIGJvcmRlclJhZGl1cz1cIjFyZW1cIlxuICBbYm9yZGVyXT1cIicxcHggc29saWQgI0Q0QTAwNydcIlxuICBjbGFzcz1cImV4cG9ydC1jYXJkXCJcbj5cbiAgPGRpdiBjYXJkLWhlYWRlciBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XG4gICAgPGg0IGNsYXNzPVwiaGVhZGVyLXRpdGxlXCI+RXhwb3J0PC9oND5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cInJlc2V0LWJ1dHRvblwiXG4gICAgICBbc3R5bGUuY29sb3JdPVwiJyMzNDc5RTknXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIid0cmFuc3BhcmVudCdcIlxuICAgICAgW3N0eWxlLmJvcmRlcl09XCInbm9uZSdcIlxuICAgICAgW3N0eWxlLmN1cnNvcl09XCIncG9pbnRlcidcIlxuICAgICAgW3N0eWxlLmZvbnQtc2l6ZV09XCInMTJweCdcIlxuICAgICAgKGNsaWNrKT1cInJlc2V0QWxsKClcIlxuICAgID5cbiAgICAgIFJlc2V0XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNhcmQtYm9keSBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5Qcm9maWxlczwvaDM+XG4gICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgaWNvbj1cImluZm9cIlxuICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgZmlsbD1cImdyZXlcIlxuICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwcm9maWxlIG9mIHZpc2libGVQcm9maWxlczsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiaXRlbVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1sYWJlbFwiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIFtpZF09XCIncHJvZmlsZS0nICsgaVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInByb2ZpbGUuc2VsZWN0ZWRcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGxhYmVsIFtmb3JdPVwiJ3Byb2ZpbGUtJyArIGlcIiBjbGFzcz1cImNoZWNrYm94LWxhYmVsXCI+XG4gICAgICAgICAgICB7eyBwcm9maWxlLm5hbWUgfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tYWN0aW9uc1wiPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgICBpY29uPVwiZWRpdFwiXG4gICAgICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICBzdHJva2U9XCIjMzQ3OUU5XCJcbiAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZWRpdFByb2ZpbGUocHJvZmlsZSlcIlxuICAgICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgIGljb249XCJkZWxldGVcIlxuICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiI0UyMDAwMFwiXG4gICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlUHJvZmlsZShwcm9maWxlKVwiXG4gICAgICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJwcm9maWxlcy5sZW5ndGggPiAzXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNob3dBbGxQcm9maWxlcygpXCJcbiAgICAgICAgY2xhc3M9XCJzaG93LW1vcmVcIlxuICAgICAgPlxuICAgICAgICA8c3Bhbj57eyBzaG93QWxsUHJvZmlsZXMgPyBcIlNob3cgbGVzc1wiIDogXCJTaG93IG1vcmVcIiB9fTwvc3Bhbj5cbiAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICBpY29uPVwiY2hldnJvblwiXG4gICAgICAgICAgW3dpZHRoXT1cIjhcIlxuICAgICAgICAgIFtoZWlnaHRdPVwiNlwiXG4gICAgICAgICAgZmlsbD1cImJsYWNrXCJcbiAgICAgICAgICBzdHJva2U9XCJibGFja1wiXG4gICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG4gICAgPGhyIGNsYXNzPVwiZGl2aWRlclwiIC8+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1oZWFkZXJcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPkdyb3VwPC9oMz5cbiAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICBpY29uPVwiaW5mb1wiXG4gICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICBmaWxsPVwiZ3JleVwiXG4gICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwibmV3R3JvdXBGb3JtXCIgKG5nU3VibWl0KT1cImFkZEdyb3VwKClcIj5cbiAgICAgICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIkdyb3VwIG5hbWVcIlxuICAgICAgICAgIGJvcmRlcj1cIjFweCBzb2xpZCAjY2NjXCJcbiAgICAgICAgICBib3JkZXJSYWRpdXM9XCI1cHhcIlxuICAgICAgICAgIHRleHRDb2xvcj1cImJsYWNrXCJcbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIGhlaWdodD1cIjIwcHhcIlxuICAgICAgICAgIHBkPVwiNHB4IDZweFwiXG4gICAgICAgICAgW3Nob3dCb3JkZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgW3Nob3dFcnJvck1lc3NhZ2VdPVwidHJ1ZVwiXG4gICAgICAgICAgW2Vycm9yUG9zaXRpb25dPVwiJ2JvdHRvbSdcIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgICA+PC92ZXJiZW5hLWlucHV0PlxuICAgICAgPC9mb3JtPlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2aXNpYmxlR3JvdXBzOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJpdGVtXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWxhYmVsXCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgW2lkXT1cIidncm91cC0nICsgaVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uc2VsZWN0ZWRcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGxhYmVsIFtmb3JdPVwiJ2dyb3VwLScgKyBpXCIgY2xhc3M9XCJjaGVja2JveC1sYWJlbFwiPlxuICAgICAgICAgICAge3sgaXRlbS5uYW1lIH19XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWFjdGlvbnNcIiAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ29wZXJhdGlvbidcIj5cbiAgICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgICAgaWNvbj1cImVkaXRcIlxuICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NzlFOVwiXG4gICAgICAgICAgICBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRPcGVyYXRpb24oaXRlbSlcIlxuICAgICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgIGljb249XCJkZWxldGVcIlxuICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiI0UyMDAwMFwiXG4gICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlT3BlcmF0aW9uKGl0ZW0pXCJcbiAgICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cImdyb3VwSXRlbXMubGVuZ3RoID4gM1wiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVTaG93QWxsR3JvdXBzKClcIlxuICAgICAgICBjbGFzcz1cInNob3ctbW9yZVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuPnt7IHNob3dBbGxHcm91cHMgPyBcIlNob3cgbGVzc1wiIDogXCJTaG93IG1vcmVcIiB9fTwvc3Bhbj5cbiAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICBpY29uPVwiY2hldnJvblwiXG4gICAgICAgICAgW3dpZHRoXT1cIjhcIlxuICAgICAgICAgIFtoZWlnaHRdPVwiNlwiXG4gICAgICAgICAgZmlsbD1cImJsYWNrXCJcbiAgICAgICAgICBzdHJva2U9XCJibGFja1wiXG4gICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJhZGQtYnV0dG9uXCIgKGNsaWNrKT1cImFkZEdyb3VwKClcIj4rIEFkZDwvYnV0dG9uPlxuICAgIDwvc2VjdGlvbj5cbiAgICA8aHIgY2xhc3M9XCJkaXZpZGVyXCIgLz5cbiAgICA8c2VjdGlvbiBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRlclwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+T3BlcmF0aW9uPC9oMz5cbiAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICBpY29uPVwiaW5mb1wiXG4gICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICBmaWxsPVwiZ3JleVwiXG4gICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICAgIHBsYWNlaG9sZGVyPVwiT3BlcmF0aW9uIG5hbWVcIlxuICAgICAgICBib3JkZXI9XCIxcHggc29saWQgI2NjY1wiXG4gICAgICAgIGJvcmRlclJhZGl1cz1cIjVweFwiXG4gICAgICAgIHRleHRDb2xvcj1cImJsYWNrXCJcbiAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgaGVpZ2h0PVwiMjBweFwiXG4gICAgICAgIHBkPVwiMnB4IDZweFwiXG4gICAgICAgIFtzaG93Qm9yZGVyXT1cInRydWVcIlxuICAgICAgICBbc2hvd0Vycm9yTWVzc2FnZV09XCJ0cnVlXCJcbiAgICAgICAgW2Vycm9yUG9zaXRpb25dPVwiJ2JvdHRvbSdcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cIm5ld09wZXJhdGlvbi5uYW1lXCJcbiAgICAgID48L3ZlcmJlbmEtaW5wdXQ+XG4gICAgICA8ZGl2IGNsYXNzPVwib3BlcmF0aW9uLWdyaWRcIj5cbiAgICAgICAgPHZlcmJlbi1kcm9wLWRvd25cbiAgICAgICAgICB3aWR0aD1cIic4cmVtJ1wiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgZmllbGRcIlxuICAgICAgICAgIFtvcHRpb25zXT1cIm51bWVyaWNQcm9wZXJ0aWVzLmNvbmNhdChzdHJpbmdQcm9wZXJ0aWVzKVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJuZXdPcGVyYXRpb24uZmllbGQxXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkZpZWxkMUNoYW5nZSgpXCJcbiAgICAgICAgPlxuICAgICAgICA8L3ZlcmJlbi1kcm9wLWRvd24+XG4gICAgICAgIDx2ZXJiZW4tZHJvcC1kb3duXG4gICAgICAgICAgd2lkdGg9XCInOHJlbSdcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IG9wZXJhdG9yXCJcbiAgICAgICAgICBbb3B0aW9uc109XCJhdmFpbGFibGVPcGVyYXRvcnNcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwibmV3T3BlcmF0aW9uLm9wZXJhdG9yXCJcbiAgICAgICAgPlxuICAgICAgICA8L3ZlcmJlbi1kcm9wLWRvd24+XG4gICAgICAgIDx2ZXJiZW4tZHJvcC1kb3duXG4gICAgICAgICAgd2lkdGg9XCInOHJlbSdcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGZpZWxkXCJcbiAgICAgICAgICBbb3B0aW9uc109XCJhdmFpbGFibGVGaWVsZHMyXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cIm5ld09wZXJhdGlvbi5maWVsZDJcIlxuICAgICAgICA+XG4gICAgICAgIDwvdmVyYmVuLWRyb3AtZG93bj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImFkZC1idXR0b25cIiAoY2xpY2spPVwiYWRkT3JVcGRhdGVPcGVyYXRpb24oKVwiPlxuICAgICAgICB7eyBpc0VkaXRpbmdPcGVyYXRpb24gPyBcIlVwZGF0ZVwiIDogXCIrIEFkZFwiIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L3NlY3Rpb24+XG4gIDwvZGl2PlxuICA8ZGl2IGNhcmQtZm9vdGVyIGNsYXNzPVwiY2FyZC1mb290ZXJcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiZXhwb3J0LWJ1dHRvblwiIChjbGljayk9XCJleHBvcnREYXRhKClcIj5FeHBvcnQ8L2J1dHRvbj5cbiAgPC9kaXY+XG48L3ZlcmJlbi1jYXJkPlxuIl19
|
|
@@ -1,20 +1,49 @@
|
|
|
1
1
|
import { NgModule } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { DataExportService } from './data-export.service';
|
|
3
4
|
import { DataExportComponent } from './data-export.component';
|
|
4
5
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
6
|
+
import { SvgModule } from '../svg/svg.module';
|
|
7
|
+
import { CardModule } from '../card/card.module';
|
|
8
|
+
import { DropDownModule } from '../drop-down/drop-down.module';
|
|
9
|
+
import { TooltipModule } from '../tooltip/tooltip.module';
|
|
10
|
+
import { VerbenaInputModule } from '../../Verbena-input/verbena-input.module';
|
|
5
11
|
import * as i0 from "@angular/core";
|
|
6
12
|
export class DataExportModule {
|
|
7
13
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DataExportModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.5", ngImport: i0, type: DataExportModule, declarations: [DataExportComponent], imports: [CommonModule,
|
|
9
|
-
|
|
14
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.5", ngImport: i0, type: DataExportModule, declarations: [DataExportComponent], imports: [CommonModule,
|
|
15
|
+
FormsModule,
|
|
16
|
+
ReactiveFormsModule,
|
|
17
|
+
SvgModule,
|
|
18
|
+
CardModule,
|
|
19
|
+
DropDownModule,
|
|
20
|
+
TooltipModule,
|
|
21
|
+
VerbenaInputModule], exports: [DataExportComponent] });
|
|
22
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DataExportModule, providers: [DataExportService], imports: [CommonModule,
|
|
23
|
+
FormsModule,
|
|
24
|
+
ReactiveFormsModule,
|
|
25
|
+
SvgModule,
|
|
26
|
+
CardModule,
|
|
27
|
+
DropDownModule,
|
|
28
|
+
TooltipModule,
|
|
29
|
+
VerbenaInputModule] });
|
|
10
30
|
}
|
|
11
31
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DataExportModule, decorators: [{
|
|
12
32
|
type: NgModule,
|
|
13
33
|
args: [{
|
|
14
34
|
declarations: [DataExportComponent],
|
|
15
|
-
imports: [
|
|
16
|
-
|
|
35
|
+
imports: [
|
|
36
|
+
CommonModule,
|
|
37
|
+
FormsModule,
|
|
38
|
+
ReactiveFormsModule,
|
|
39
|
+
SvgModule,
|
|
40
|
+
CardModule,
|
|
41
|
+
DropDownModule,
|
|
42
|
+
TooltipModule,
|
|
43
|
+
VerbenaInputModule,
|
|
44
|
+
],
|
|
45
|
+
providers: [DataExportService],
|
|
17
46
|
exports: [DataExportComponent],
|
|
18
47
|
}]
|
|
19
48
|
}] });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1leHBvcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWV4cG9ydC9kYXRhLWV4cG9ydC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFpQjlFLE1BQU0sT0FBTyxnQkFBZ0I7dUdBQWhCLGdCQUFnQjt3R0FBaEIsZ0JBQWdCLGlCQWRaLG1CQUFtQixhQUVoQyxZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixTQUFTO1lBQ1QsVUFBVTtZQUNWLGNBQWM7WUFDZCxhQUFhO1lBQ2Isa0JBQWtCLGFBR1YsbUJBQW1CO3dHQUVsQixnQkFBZ0IsYUFIaEIsQ0FBQyxpQkFBaUIsQ0FBQyxZQVQ1QixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixTQUFTO1lBQ1QsVUFBVTtZQUNWLGNBQWM7WUFDZCxhQUFhO1lBQ2Isa0JBQWtCOzsyRkFLVCxnQkFBZ0I7a0JBZjVCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsbUJBQW1CLENBQUM7b0JBQ25DLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixTQUFTO3dCQUNULFVBQVU7d0JBQ1YsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGtCQUFrQjtxQkFDbkI7b0JBQ0QsU0FBUyxFQUFFLENBQUMsaUJBQWlCLENBQUM7b0JBQzlCLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDO2lCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGF0YUV4cG9ydFNlcnZpY2UgfSBmcm9tICcuL2RhdGEtZXhwb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YUV4cG9ydENvbXBvbmVudCB9IGZyb20gJy4vZGF0YS1leHBvcnQuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ZnTW9kdWxlIH0gZnJvbSAnLi4vc3ZnL3N2Zy5tb2R1bGUnO1xuaW1wb3J0IHsgQ2FyZE1vZHVsZSB9IGZyb20gJy4uL2NhcmQvY2FyZC5tb2R1bGUnO1xuaW1wb3J0IHsgRHJvcERvd25Nb2R1bGUgfSBmcm9tICcuLi9kcm9wLWRvd24vZHJvcC1kb3duLm1vZHVsZSc7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAnLi4vdG9vbHRpcC90b29sdGlwLm1vZHVsZSc7XG5pbXBvcnQgeyBWZXJiZW5hSW5wdXRNb2R1bGUgfSBmcm9tICcuLi8uLi9WZXJiZW5hLWlucHV0L3ZlcmJlbmEtaW5wdXQubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbRGF0YUV4cG9ydENvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBTdmdNb2R1bGUsXG4gICAgQ2FyZE1vZHVsZSxcbiAgICBEcm9wRG93bk1vZHVsZSxcbiAgICBUb29sdGlwTW9kdWxlLFxuICAgIFZlcmJlbmFJbnB1dE1vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbRGF0YUV4cG9ydFNlcnZpY2VdLFxuICBleHBvcnRzOiBbRGF0YUV4cG9ydENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIERhdGFFeHBvcnRNb2R1bGUge31cbiJdfQ==
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Operators, } from './data-export.types';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
export class DataExportService {
|
|
4
5
|
profiles = [];
|
|
@@ -107,14 +108,20 @@ export class DataExportService {
|
|
|
107
108
|
const value1 = Number(item[operation.field1]);
|
|
108
109
|
const value2 = Number(item[operation.field2]);
|
|
109
110
|
switch (operation.operator) {
|
|
110
|
-
case
|
|
111
|
+
case Operators.add:
|
|
111
112
|
return value1 + value2;
|
|
112
|
-
case
|
|
113
|
+
case Operators.subtract:
|
|
113
114
|
return value1 - value2;
|
|
114
|
-
case
|
|
115
|
+
case Operators.multiply:
|
|
115
116
|
return value1 * value2;
|
|
116
|
-
case
|
|
117
|
+
case Operators.divide:
|
|
117
118
|
return value2 !== 0 ? value1 / value2 : NaN;
|
|
119
|
+
case Operators.concatenateSpace:
|
|
120
|
+
return `${value1} ${value2}`;
|
|
121
|
+
case Operators.concatenateCommaSpace:
|
|
122
|
+
return `${value1}, ${value2}`;
|
|
123
|
+
case Operators.concatenateComma:
|
|
124
|
+
return `${value1},${value2}`;
|
|
118
125
|
default:
|
|
119
126
|
return NaN;
|
|
120
127
|
}
|
|
@@ -125,4 +132,4 @@ export class DataExportService {
|
|
|
125
132
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DataExportService, decorators: [{
|
|
126
133
|
type: Injectable
|
|
127
134
|
}], ctorParameters: () => [] });
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1leHBvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS1leHBvcnQvZGF0YS1leHBvcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVMzQyxNQUFNLE9BQU8saUJBQWlCO0lBQ3BCLFFBQVEsR0FBb0IsRUFBRSxDQUFDO0lBQy9CLFVBQVUsR0FBZ0IsRUFBRSxDQUFDO0lBQzdCLGNBQWMsR0FBYSxFQUFFLENBQUM7SUFFdEM7UUFDRSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRU8sd0JBQXdCO1FBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDZDtnQkFDRSxFQUFFLEVBQUUsU0FBUztnQkFDYixJQUFJLEVBQUUsS0FBSztnQkFDWCxLQUFLLEVBQUUsRUFBRTthQUNWO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBc0I7UUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELGFBQWEsQ0FBQyxFQUFVLEVBQUUsY0FBNkI7UUFDckQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDMUQsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLGNBQWMsQ0FBQztRQUN4QyxDQUFDO0lBQ0gs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TUFBTSxHQUFHLE1BQU0sQ0FBRSxJQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDdkQsUUFBUSxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDM0IsS0FBSyxLQUFLO2dCQUNSLE9BQU8sTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUN6QixLQUFLLFVBQVU7Z0JBQ2IsT0FBTyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQ3pCLEtBQUssVUFBVTtnQkFDYixPQUFPLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFDekIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQzlDO2dCQUNFLE9BQU8sR0FBRyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7dUdBN0lVLGlCQUFpQjsyR0FBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRXhwb3J0UHJvZmlsZSxcbiAgT3BlcmF0aW9uLFxuICBFeHBvcnRJdGVtLFxuICBFeHBvcnRJdGVtVHlwZSxcbn0gZnJvbSAnLi9kYXRhLWV4cG9ydC50eXBlcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEYXRhRXhwb3J0U2VydmljZSB7XG4gIHByaXZhdGUgcHJvZmlsZXM6IEV4cG9ydFByb2ZpbGVbXSA9IFtdO1xuICBwcml2YXRlIG9wZXJhdGlvbnM6IE9wZXJhdGlvbltdID0gW107XG4gIHByaXZhdGUgYmFzZVByb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplRGVmYXVsdFByb2ZpbGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZURlZmF1bHRQcm9maWxlKCkge1xuICAgIHRoaXMucHJvZmlsZXMgPSBbXG4gICAgICB7XG4gICAgICAgIGlkOiAnZGVmYXVsdCcsXG4gICAgICAgIG5hbWU6ICdBbGwnLFxuICAgICAgICBpdGVtczogW10sXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBhZGRQcm9maWxlKHByb2ZpbGU6IEV4cG9ydFByb2ZpbGUpOiB2b2lkIHtcbiAgICB0aGlzLnByb2ZpbGVzLnB1c2gocHJvZmlsZSk7XG4gIH1cblxuICBnZXRQcm9maWxlcygpOiBFeHBvcnRQcm9maWxlW10ge1xuICAgIHJldHVybiB0aGlzLnByb2ZpbGVzO1xuICB9XG5cbiAgdXBkYXRlUHJvZmlsZShpZDogc3RyaW5nLCB1cGRhdGVkUHJvZmlsZTogRXhwb3J0UHJvZmlsZSk6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wcm9maWxlcy5maW5kSW5kZXgoKHApID0+IHAuaWQgPT09IGlkKTtcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLnByb2ZpbGVzW2luZGV4XSA9IHVwZGF0ZWRQcm9maWxlO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZVByb2ZpbGUoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucHJvZmlsZXMgPSB0aGlzLnByb2ZpbGVzLmZpbHRlcigocCkgPT4gcC5pZCAhPT0gaWQpO1xuICB9XG5cbiAgYWRkT3BlcmF0aW9uKG9wZXJhdGlvbjogT3BlcmF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5vcGVyYXRpb25zLnB1c2gob3BlcmF0aW9uKTtcbiAgICB0aGlzLnVwZGF0ZURlZmF1bHRQcm9maWxlKCk7XG4gIH1cblxuICBnZXRPcGVyYXRpb25zKCk6IE9wZXJhdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb25zO1xuICB9XG5cbiAgdXBkYXRlT3BlcmF0aW9uKGlkOiBzdHJpbmcsIHVwZGF0ZWRPcGVyYXRpb246IE9wZXJhdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5vcGVyYXRpb25zLmZpbmRJbmRleCgobykgPT4gby5pZCA9PT0gaWQpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMub3BlcmF0aW9uc1tpbmRleF0gPSB1cGRhdGVkT3BlcmF0aW9uO1xuICAgICAgdGhpcy51cGRhdGVEZWZhdWx0UHJvZmlsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZU9wZXJhdGlvbihpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5vcGVyYXRpb25zID0gdGhpcy5vcGVyYXRpb25zLmZpbHRlcigobykgPT4gby5pZCAhPT0gaWQpO1xuICAgIHRoaXMudXBkYXRlRGVmYXVsdFByb2ZpbGUoKTtcbiAgICAvLyBSZW1vdmUgb3BlcmF0aW9uIGZyb20gYWxsIHByb2ZpbGVzXG4gICAgdGhpcy5wcm9maWxlcy5mb3JFYWNoKChwcm9maWxlKSA9PiB7XG4gICAgICBwcm9maWxlLml0ZW1zID0gcHJvZmlsZS5pdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uaWQgIT09IGlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlc2V0QWxsKCk6IHZvaWQge1xuICAgIHRoaXMub3BlcmF0aW9ucyA9IFtdO1xuICAgIHRoaXMuYmFzZVByb3BlcnRpZXMgPSBbXTtcbiAgICB0aGlzLmluaXRpYWxpemVEZWZhdWx0UHJvZmlsZSgpO1xuICB9XG5cbiAgZ2V0QWxsSXRlbXMoKTogRXhwb3J0SXRlbVtdIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4udGhpcy5iYXNlUHJvcGVydGllcy5tYXAoKHByb3ApID0+ICh7XG4gICAgICAgIGlkOiBwcm9wLFxuICAgICAgICBuYW1lOiBwcm9wLFxuICAgICAgICB0eXBlOiAncHJvcGVydHknIGFzIEV4cG9ydEl0ZW1UeXBlLFxuICAgICAgfSkpLFxuICAgICAgLi4udGhpcy5vcGVyYXRpb25zLm1hcCgob3ApID0+ICh7XG4gICAgICAgIGlkOiBvcC5pZCxcbiAgICAgICAgbmFtZTogb3AubmFtZSxcbiAgICAgICAgdHlwZTogJ29wZXJhdGlvbicgYXMgRXhwb3J0SXRlbVR5cGUsXG4gICAgICB9KSksXG4gICAgXTtcbiAgfVxuXG4gIGdldEJhc2VQcm9wZXJ0aWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5iYXNlUHJvcGVydGllcztcbiAgfVxuXG4gIHNldEJhc2VQcm9wZXJ0aWVzKHByb3BlcnRpZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgdGhpcy5iYXNlUHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gICAgdGhpcy51cGRhdGVEZWZhdWx0UHJvZmlsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEZWZhdWx0UHJvZmlsZSgpOiB2b2lkIHtcbiAgICB0aGlzLnByb2ZpbGVzWzBdLml0ZW1zID0gdGhpcy5nZXRBbGxJdGVtcygpO1xuICB9XG5cbiAgZXhwb3J0RGF0YTxUPihcbiAgICBkYXRhOiBUW10sXG4gICAgc2VsZWN0ZWRQcm9maWxlczogRXhwb3J0UHJvZmlsZVtdXG4gICk6IFJlY29yZDxzdHJpbmcsIGFueT5bXSB7XG4gICAgY29uc3QgdW5pcXVlSXRlbXMgPSBuZXcgU2V0PEV4cG9ydEl0ZW0+KCk7XG4gICAgc2VsZWN0ZWRQcm9maWxlcy5mb3JFYWNoKChwcm9maWxlKSA9PiB7XG4gICAgICBwcm9maWxlLml0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHVuaXF1ZUl0ZW1zLmFkZChpdGVtKSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGF0YS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IGV4cG9ydGVkSXRlbTogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgdW5pcXVlSXRlbXMuZm9yRWFjaCgoZXhwb3J0SXRlbSkgPT4ge1xuICAgICAgICBpZiAoZXhwb3J0SXRlbS50eXBlID09PSAncHJvcGVydHknKSB7XG4gICAgICAgICAgZXhwb3J0ZWRJdGVtW2V4cG9ydEl0ZW0uaWRdID0gKGl0ZW0gYXMgYW55KVtleHBvcnRJdGVtLmlkXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBvcGVyYXRpb24gPSB0aGlzLm9wZXJhdGlvbnMuZmluZCgobykgPT4gby5pZCA9PT0gZXhwb3J0SXRlbS5pZCk7XG4gICAgICAgICAgaWYgKG9wZXJhdGlvbikge1xuICAgICAgICAgICAgZXhwb3J0ZWRJdGVtW2V4cG9ydEl0ZW0uaWRdID0gdGhpcy5jYWxjdWxhdGVPcGVyYXRpb24oXG4gICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgIG9wZXJhdGlvblxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGV4cG9ydGVkSXRlbTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlT3BlcmF0aW9uPFQ+KGl0ZW06IFQsIG9wZXJhdGlvbjogT3BlcmF0aW9uKTogbnVtYmVyIHtcbiAgICBjb25zdCB2YWx1ZTEgPSBOdW1iZXIoKGl0ZW0gYXMgYW55KVtvcGVyYXRpb24uZmllbGQxXSk7XG4gICAgY29uc3QgdmFsdWUyID0gTnVtYmVyKChpdGVtIGFzIGFueSlbb3BlcmF0aW9uLmZpZWxkMl0pO1xuICAgIHN3aXRjaCAob3BlcmF0aW9uLm9wZXJhdG9yKSB7XG4gICAgICBjYXNlICdhZGQnOlxuICAgICAgICByZXR1cm4gdmFsdWUxICsgdmFsdWUyO1xuICAgICAgY2FzZSAnc3VidHJhY3QnOlxuICAgICAgICByZXR1cm4gdmFsdWUxIC0gdmFsdWUyO1xuICAgICAgY2FzZSAnbXVsdGlwbHknOlxuICAgICAgICByZXR1cm4gdmFsdWUxICogdmFsdWUyO1xuICAgICAgY2FzZSAnZGl2aWRlJzpcbiAgICAgICAgcmV0dXJuIHZhbHVlMiAhPT0gMCA/IHZhbHVlMSAvIHZhbHVlMiA6IE5hTjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBOYU47XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1leHBvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS1leHBvcnQvZGF0YS1leHBvcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFLTCxTQUFTLEdBQ1YsTUFBTSxxQkFBcUIsQ0FBQzs7QUFHN0IsTUFBTSxPQUFPLGlCQUFpQjtJQUNwQixRQUFRLEdBQW9CLEVBQUUsQ0FBQztJQUMvQixVQUFVLEdBQWdCLEVBQUUsQ0FBQztJQUM3QixjQUFjLEdBQWEsRUFBRSxDQUFDO0lBRXRDO1FBQ0UsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHO1lBQ2Q7Z0JBQ0UsRUFBRSxFQUFFLFNBQVM7Z0JBQ2IsSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsS0FBSyxFQUFFLEVBQUU7YUFDVjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQXNCO1FBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxhQUFhLENBQUMsRUFBVSxFQUFFLGNBQTZCO1FBQ3JELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzFELElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FB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QUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDdkQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFFLElBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN2RCxRQUFRLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMzQixLQUFLLFNBQVMsQ0FBQyxHQUFHO2dCQUNoQixPQUFPLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFDekIsS0FBSyxTQUFTLENBQUMsUUFBUTtnQkFDckIsT0FBTyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQ3pCLEtBQUssU0FBUyxDQUFDLFFBQVE7Z0JBQ3JCLE9BQU8sTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUN6QixLQUFLLFNBQVMsQ0FBQyxNQUFNO2dCQUNuQixPQUFPLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUM5QyxLQUFLLFNBQVMsQ0FBQyxnQkFBZ0I7Z0JBQzdCLE9BQU8sR0FBRyxNQUFNLElBQUksTUFBTSxFQUFFLENBQUM7WUFDL0IsS0FBSyxTQUFTLENBQUMscUJBQXFCO2dCQUNsQyxPQUFPLEdBQUcsTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ2hDLEtBQUssU0FBUyxDQUFDLGdCQUFnQjtnQkFDN0IsT0FBTyxHQUFHLE1BQU0sSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUMvQjtnQkFDRSxPQUFPLEdBQUcsQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO3VHQXRKVSxpQkFBaUI7MkdBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEV4cG9ydFByb2ZpbGUsXG4gIE9wZXJhdGlvbixcbiAgRXhwb3J0SXRlbSxcbiAgRXhwb3J0SXRlbVR5cGUsXG4gIE9wZXJhdG9ycyxcbn0gZnJvbSAnLi9kYXRhLWV4cG9ydC50eXBlcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEYXRhRXhwb3J0U2VydmljZSB7XG4gIHByaXZhdGUgcHJvZmlsZXM6IEV4cG9ydFByb2ZpbGVbXSA9IFtdO1xuICBwcml2YXRlIG9wZXJhdGlvbnM6IE9wZXJhdGlvbltdID0gW107XG4gIHByaXZhdGUgYmFzZVByb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplRGVmYXVsdFByb2ZpbGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZURlZmF1bHRQcm9maWxlKCkge1xuICAgIHRoaXMucHJvZmlsZXMgPSBbXG4gICAgICB7XG4gICAgICAgIGlkOiAnZGVmYXVsdCcsXG4gICAgICAgIG5hbWU6ICdBbGwnLFxuICAgICAgICBpdGVtczogW10sXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBhZGRQcm9maWxlKHByb2ZpbGU6IEV4cG9ydFByb2ZpbGUpOiB2b2lkIHtcbiAgICB0aGlzLnByb2ZpbGVzLnB1c2gocHJvZmlsZSk7XG4gIH1cblxuICBnZXRQcm9maWxlcygpOiBFeHBvcnRQcm9maWxlW10ge1xuICAgIHJldHVybiB0aGlzLnByb2ZpbGVzO1xuICB9XG5cbiAgdXBkYXRlUHJvZmlsZShpZDogc3RyaW5nLCB1cGRhdGVkUHJvZmlsZTogRXhwb3J0UHJvZmlsZSk6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wcm9maWxlcy5maW5kSW5kZXgoKHApID0+IHAuaWQgPT09IGlkKTtcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLnByb2ZpbGVzW2luZGV4XSA9IHVwZGF0ZWRQcm9maWxlO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZVByb2ZpbGUoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucHJvZmlsZXMgPSB0aGlzLnByb2ZpbGVzLmZpbHRlcigocCkgPT4gcC5pZCAhPT0gaWQpO1xuICB9XG5cbiAgYWRkT3BlcmF0aW9uKG9wZXJhdGlvbjogT3BlcmF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5vcGVyYXRpb25zLnB1c2gob3BlcmF0aW9uKTtcbiAgICB0aGlzLnVwZGF0ZURlZmF1bHRQcm9maWxlKCk7XG4gIH1cblxuICBnZXRPcGVyYXRpb25zKCk6IE9wZXJhdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb25zO1xuICB9XG5cbiAgdXBkYXRlT3BlcmF0aW9uKGlkOiBzdHJpbmcsIHVwZGF0ZWRPcGVyYXRpb246IE9wZXJhdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5vcGVyYXRpb25zLmZpbmRJbmRleCgobykgPT4gby5pZCA9PT0gaWQpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMub3BlcmF0aW9uc1tpbmRleF0gPSB1cGRhdGVkT3BlcmF0aW9uO1xuICAgICAgdGhpcy51cGRhdGVEZWZhdWx0UHJvZmlsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZU9wZXJhdGlvbihpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5vcGVyYXRpb25zID0gdGhpcy5vcGVyYXRpb25zLmZpbHRlcigobykgPT4gby5pZCAhPT0gaWQpO1xuICAgIHRoaXMudXBkYXRlRGVmYXVsdFByb2ZpbGUoKTtcbiAgICAvLyBSZW1vdmUgb3BlcmF0aW9uIGZyb20gYWxsIHByb2ZpbGVzXG4gICAgdGhpcy5wcm9maWxlcy5mb3JFYWNoKChwcm9maWxlKSA9PiB7XG4gICAgICBwcm9maWxlLml0ZW1zID0gcHJvZmlsZS5pdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uaWQgIT09IGlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlc2V0QWxsKCk6IHZvaWQge1xuICAgIHRoaXMub3BlcmF0aW9ucyA9IFtdO1xuICAgIHRoaXMuYmFzZVByb3BlcnRpZXMgPSBbXTtcbiAgICB0aGlzLmluaXRpYWxpemVEZWZhdWx0UHJvZmlsZSgpO1xuICB9XG5cbiAgZ2V0QWxsSXRlbXMoKTogRXhwb3J0SXRlbVtdIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4udGhpcy5iYXNlUHJvcGVydGllcy5tYXAoKHByb3ApID0+ICh7XG4gICAgICAgIGlkOiBwcm9wLFxuICAgICAgICBuYW1lOiBwcm9wLFxuICAgICAgICB0eXBlOiAncHJvcGVydHknIGFzIEV4cG9ydEl0ZW1UeXBlLFxuICAgICAgfSkpLFxuICAgICAgLi4udGhpcy5vcGVyYXRpb25zLm1hcCgob3ApID0+ICh7XG4gICAgICAgIGlkOiBvcC5pZCxcbiAgICAgICAgbmFtZTogb3AubmFtZSxcbiAgICAgICAgdHlwZTogJ29wZXJhdGlvbicgYXMgRXhwb3J0SXRlbVR5cGUsXG4gICAgICB9KSksXG4gICAgXTtcbiAgfVxuXG4gIGdldEJhc2VQcm9wZXJ0aWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5iYXNlUHJvcGVydGllcztcbiAgfVxuXG4gIHNldEJhc2VQcm9wZXJ0aWVzKHByb3BlcnRpZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgdGhpcy5iYXNlUHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gICAgdGhpcy51cGRhdGVEZWZhdWx0UHJvZmlsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEZWZhdWx0UHJvZmlsZSgpOiB2b2lkIHtcbiAgICB0aGlzLnByb2ZpbGVzWzBdLml0ZW1zID0gdGhpcy5nZXRBbGxJdGVtcygpO1xuICB9XG5cbiAgZXhwb3J0RGF0YTxUPihcbiAgICBkYXRhOiBUW10sXG4gICAgc2VsZWN0ZWRQcm9maWxlczogRXhwb3J0UHJvZmlsZVtdXG4gICk6IFJlY29yZDxzdHJpbmcsIGFueT5bXSB7XG4gICAgY29uc3QgdW5pcXVlSXRlbXMgPSBuZXcgU2V0PEV4cG9ydEl0ZW0+KCk7XG4gICAgc2VsZWN0ZWRQcm9maWxlcy5mb3JFYWNoKChwcm9maWxlKSA9PiB7XG4gICAgICBwcm9maWxlLml0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHVuaXF1ZUl0ZW1zLmFkZChpdGVtKSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGF0YS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IGV4cG9ydGVkSXRlbTogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgdW5pcXVlSXRlbXMuZm9yRWFjaCgoZXhwb3J0SXRlbSkgPT4ge1xuICAgICAgICBpZiAoZXhwb3J0SXRlbS50eXBlID09PSAncHJvcGVydHknKSB7XG4gICAgICAgICAgZXhwb3J0ZWRJdGVtW2V4cG9ydEl0ZW0uaWRdID0gKGl0ZW0gYXMgYW55KVtleHBvcnRJdGVtLmlkXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBvcGVyYXRpb24gPSB0aGlzLm9wZXJhdGlvbnMuZmluZCgobykgPT4gby5pZCA9PT0gZXhwb3J0SXRlbS5pZCk7XG4gICAgICAgICAgaWYgKG9wZXJhdGlvbikge1xuICAgICAgICAgICAgZXhwb3J0ZWRJdGVtW2V4cG9ydEl0ZW0uaWRdID0gdGhpcy5jYWxjdWxhdGVPcGVyYXRpb24oXG4gICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgIG9wZXJhdGlvblxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGV4cG9ydGVkSXRlbTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlT3BlcmF0aW9uPFQ+KFxuICAgIGl0ZW06IFQsXG4gICAgb3BlcmF0aW9uOiBPcGVyYXRpb25cbiAgKTogbnVtYmVyIHwgc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZTEgPSBOdW1iZXIoKGl0ZW0gYXMgYW55KVtvcGVyYXRpb24uZmllbGQxXSk7XG4gICAgY29uc3QgdmFsdWUyID0gTnVtYmVyKChpdGVtIGFzIGFueSlbb3BlcmF0aW9uLmZpZWxkMl0pO1xuICAgIHN3aXRjaCAob3BlcmF0aW9uLm9wZXJhdG9yKSB7XG4gICAgICBjYXNlIE9wZXJhdG9ycy5hZGQ6XG4gICAgICAgIHJldHVybiB2YWx1ZTEgKyB2YWx1ZTI7XG4gICAgICBjYXNlIE9wZXJhdG9ycy5zdWJ0cmFjdDpcbiAgICAgICAgcmV0dXJuIHZhbHVlMSAtIHZhbHVlMjtcbiAgICAgIGNhc2UgT3BlcmF0b3JzLm11bHRpcGx5OlxuICAgICAgICByZXR1cm4gdmFsdWUxICogdmFsdWUyO1xuICAgICAgY2FzZSBPcGVyYXRvcnMuZGl2aWRlOlxuICAgICAgICByZXR1cm4gdmFsdWUyICE9PSAwID8gdmFsdWUxIC8gdmFsdWUyIDogTmFOO1xuICAgICAgY2FzZSBPcGVyYXRvcnMuY29uY2F0ZW5hdGVTcGFjZTpcbiAgICAgICAgcmV0dXJuIGAke3ZhbHVlMX0gJHt2YWx1ZTJ9YDtcbiAgICAgIGNhc2UgT3BlcmF0b3JzLmNvbmNhdGVuYXRlQ29tbWFTcGFjZTpcbiAgICAgICAgcmV0dXJuIGAke3ZhbHVlMX0sICR7dmFsdWUyfWA7XG4gICAgICBjYXNlIE9wZXJhdG9ycy5jb25jYXRlbmF0ZUNvbW1hOlxuICAgICAgICByZXR1cm4gYCR7dmFsdWUxfSwke3ZhbHVlMn1gO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIE5hTjtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|