@pepperi-addons/ngx-composite-lib 0.4.2-beta.201 → 0.4.2-beta.203
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/esm2020/asset-picker-button/asset-picker-button.component.mjs +1 -1
- package/esm2020/color-settings/color-settings.component.mjs +1 -1
- package/esm2020/file-status-panel/file-status-panel.component.mjs +94 -29
- package/esm2020/generic-fields-builder/flow-field/flow-field.component.mjs +110 -0
- package/esm2020/generic-fields-builder/generic-fields-builder.component.mjs +270 -18
- package/esm2020/generic-fields-builder/generic-fields-builder.model.mjs +2 -0
- package/esm2020/generic-fields-builder/generic-fields-builder.module.mjs +35 -7
- package/esm2020/generic-fields-builder/public-api.mjs +2 -1
- package/esm2020/generic-list/generic-list.component.mjs +26 -7
- package/esm2020/generic-list/generic-list.service.mjs +3 -2
- package/esm2020/icon-picker/icon-picker.component.mjs +1 -1
- package/esm2020/layout-builder/main-editor/main-editor.component.mjs +1 -1
- package/esm2020/layout-builder/section-editor/section-editor.component.mjs +1 -1
- package/esm2020/layout-builder2/layout-builder.component.mjs +3 -3
- package/esm2020/layout-builder2/main-editor/main-editor.component.mjs +1 -1
- package/esm2020/layout-builder2/section-block/section-block.component.mjs +3 -3
- package/esm2020/layout-builder2/section-editor/section-editor.component.mjs +1 -1
- package/esm2020/manage-parameters/manage-parameters.component.mjs +1 -1
- package/esm2020/mapping-parameters/mapping-parameters.component.mjs +1 -1
- package/esm2020/mapping-parameters/param-map/param-map.component.mjs +1 -1
- package/esm2020/padding-settings/padding-settings.component.mjs +1 -1
- package/esm2020/rich-text/rich-text.component.mjs +1 -14
- package/esm2020/shadow-settings/shadow-settings.component.mjs +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-asset-picker-button.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-color-settings.mjs +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-color-settings.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-file-status-panel.mjs +91 -28
- package/fesm2015/pepperi-addons-ngx-composite-lib-file-status-panel.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-generic-fields-builder.mjs +413 -23
- package/fesm2015/pepperi-addons-ngx-composite-lib-generic-fields-builder.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-generic-list.mjs +28 -7
- package/fesm2015/pepperi-addons-ngx-composite-lib-generic-list.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-icon-picker.mjs +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-icon-picker.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder.mjs +2 -2
- package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder2.mjs +6 -6
- package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder2.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-manage-parameters.mjs +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-manage-parameters.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-mapping-parameters.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-padding-settings.mjs +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-padding-settings.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-rich-text.mjs +0 -13
- package/fesm2015/pepperi-addons-ngx-composite-lib-rich-text.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-shadow-settings.mjs +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-shadow-settings.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-asset-picker-button.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-color-settings.mjs +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-color-settings.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-file-status-panel.mjs +93 -28
- package/fesm2020/pepperi-addons-ngx-composite-lib-file-status-panel.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-generic-fields-builder.mjs +406 -23
- package/fesm2020/pepperi-addons-ngx-composite-lib-generic-fields-builder.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-generic-list.mjs +27 -7
- package/fesm2020/pepperi-addons-ngx-composite-lib-generic-list.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-icon-picker.mjs +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-icon-picker.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder.mjs +2 -2
- package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder2.mjs +6 -6
- package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder2.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-manage-parameters.mjs +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-manage-parameters.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-mapping-parameters.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-padding-settings.mjs +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-padding-settings.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-rich-text.mjs +0 -13
- package/fesm2020/pepperi-addons-ngx-composite-lib-rich-text.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-shadow-settings.mjs +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-shadow-settings.mjs.map +1 -1
- package/file-status-panel/file-status-panel.component.d.ts +17 -5
- package/generic-fields-builder/flow-field/flow-field.component.d.ts +51 -0
- package/generic-fields-builder/generic-fields-builder.component.d.ts +34 -14
- package/generic-fields-builder/generic-fields-builder.model.d.ts +20 -0
- package/generic-fields-builder/generic-fields-builder.module.d.ts +19 -13
- package/generic-fields-builder/public-api.d.ts +1 -0
- package/generic-list/generic-list.component.d.ts +5 -2
- package/package.json +2 -2
- package/src/assets/i18n/en.ngx-composite-lib.json +5 -0
|
@@ -2,51 +2,194 @@ import { moveItemInArray } from '@angular/cdk/drag-drop';
|
|
|
2
2
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
3
|
import { PepGuid } from '@pepperi-addons/ngx-lib';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "
|
|
6
|
-
import * as i2 from "
|
|
7
|
-
import * as i3 from "@angular/
|
|
8
|
-
import * as i4 from "@angular/
|
|
9
|
-
import * as i5 from "@
|
|
10
|
-
import * as i6 from "@
|
|
11
|
-
import * as i7 from "@pepperi-addons/ngx-lib/
|
|
12
|
-
import * as i8 from "
|
|
13
|
-
import * as i9 from "@ngx-
|
|
5
|
+
import * as i1 from "@pepperi-addons/ngx-lib/remote-loader";
|
|
6
|
+
import * as i2 from "./generic-fields-builder.service";
|
|
7
|
+
import * as i3 from "@angular/platform-browser";
|
|
8
|
+
import * as i4 from "@angular/common";
|
|
9
|
+
import * as i5 from "@angular/cdk/drag-drop";
|
|
10
|
+
import * as i6 from "@angular/material/icon";
|
|
11
|
+
import * as i7 from "@pepperi-addons/ngx-lib/icon";
|
|
12
|
+
import * as i8 from "@pepperi-addons/ngx-lib/page-layout";
|
|
13
|
+
import * as i9 from "@pepperi-addons/ngx-lib/draggable-items";
|
|
14
|
+
import * as i10 from "./field-container/field-container.component";
|
|
15
|
+
import * as i11 from "./flow-field/flow-field.component";
|
|
16
|
+
import * as i12 from "@ngx-translate/core";
|
|
14
17
|
export class GenericFieldsBuilderComponent {
|
|
15
|
-
constructor(genericFieldsBuilderService) {
|
|
18
|
+
constructor(viewContainerRef, addonBlockLoaderService, genericFieldsBuilderService, sanitizer) {
|
|
19
|
+
this.viewContainerRef = viewContainerRef;
|
|
20
|
+
this.addonBlockLoaderService = addonBlockLoaderService;
|
|
16
21
|
this.genericFieldsBuilderService = genericFieldsBuilderService;
|
|
22
|
+
this.sanitizer = sanitizer;
|
|
17
23
|
// @Input() title: string = '';
|
|
18
24
|
this.builderTitle = '';
|
|
19
25
|
this.builderTitleHint = '';
|
|
20
26
|
this.showAddSeparator = true;
|
|
21
27
|
this.itemKeyLabel = '';
|
|
22
28
|
this.itemTitleLabel = '';
|
|
29
|
+
this.templateType = 'generic';
|
|
30
|
+
this.disableIfParams = [];
|
|
31
|
+
this.usedSingleUseLogicBlockRefs = new Set();
|
|
32
|
+
this.singleUseLogicBlockKeys = new Set();
|
|
23
33
|
this._availableFields = [];
|
|
24
34
|
this.fieldTemplate = undefined;
|
|
35
|
+
this.fieldContentCallback = undefined;
|
|
25
36
|
this._fields = [];
|
|
26
37
|
this.fieldsChange = new EventEmitter();
|
|
27
38
|
this.fieldAdd = new EventEmitter();
|
|
39
|
+
this.fieldRemove = new EventEmitter();
|
|
28
40
|
this.emptyDropAreaId = 'emptyDropArea';
|
|
29
41
|
this.mappedFieldsId = 'mappedFields';
|
|
30
42
|
this.isGrabbing = false;
|
|
43
|
+
this._availableFieldsTitles = new Map();
|
|
31
44
|
this.genericFieldsBuilderService.isGrabbingChange$.subscribe((value) => {
|
|
32
45
|
this.isGrabbing = value;
|
|
33
46
|
});
|
|
34
47
|
}
|
|
35
48
|
set availableFields(value) {
|
|
36
49
|
this._availableFields = value;
|
|
50
|
+
const titles = new Map();
|
|
51
|
+
(value ?? []).forEach((item) => {
|
|
52
|
+
const data = item?.data;
|
|
53
|
+
const fieldKey = data?.key ?? data?.FieldID;
|
|
54
|
+
if (fieldKey) {
|
|
55
|
+
titles.set(fieldKey, item.title);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
this._availableFieldsTitles = titles;
|
|
59
|
+
this.singleUseLogicBlockKeys = new Set((value ?? [])
|
|
60
|
+
.filter(item => !!item?.data?.singleUse)
|
|
61
|
+
.map(item => this.getLogicBlockRefKeyFromAvailableField(item))
|
|
62
|
+
.filter((key) => !!key));
|
|
63
|
+
this.recomputeUsedSingleUseLogicBlockRefs();
|
|
64
|
+
}
|
|
65
|
+
get availableFieldsTitles() {
|
|
66
|
+
return this._availableFieldsTitles;
|
|
37
67
|
}
|
|
38
68
|
get availableFields() {
|
|
39
|
-
|
|
69
|
+
if (this.templateType !== 'flow' || this.usedSingleUseLogicBlockRefs.size === 0) {
|
|
70
|
+
return this._availableFields;
|
|
71
|
+
}
|
|
72
|
+
return this._availableFields.filter(item => {
|
|
73
|
+
const key = this.getLogicBlockRefKeyFromAvailableField(item);
|
|
74
|
+
return !key || !this.usedSingleUseLogicBlockRefs.has(key);
|
|
75
|
+
});
|
|
40
76
|
}
|
|
41
77
|
set fields(value) {
|
|
42
78
|
this._fields = value;
|
|
79
|
+
this.recomputeUsedSingleUseLogicBlockRefs();
|
|
43
80
|
}
|
|
44
81
|
get fields() {
|
|
45
82
|
return this._fields;
|
|
46
83
|
}
|
|
84
|
+
getFieldContent(field, index) {
|
|
85
|
+
try {
|
|
86
|
+
const html = this.fieldContentCallback?.(field, index) ?? '';
|
|
87
|
+
return this.sanitizer.bypassSecurityTrustHtml(html);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return '';
|
|
91
|
+
}
|
|
92
|
+
}
|
|
47
93
|
notifyFieldsChange() {
|
|
48
94
|
this.fieldsChange.emit(this._fields);
|
|
49
95
|
}
|
|
96
|
+
getLogicBlockRefKeyFromAvailableField(item) {
|
|
97
|
+
const data = item?.data;
|
|
98
|
+
const addonUUID = data?.addonUUID ?? data?.AddonUUID;
|
|
99
|
+
const name = data?.relationName ?? data?.Name ?? item?.title;
|
|
100
|
+
if (!addonUUID || !name) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
return `${addonUUID}|${name}`;
|
|
104
|
+
}
|
|
105
|
+
getLogicBlockRefKeyFromMappedField(field) {
|
|
106
|
+
const relation = field?.Relation ?? field?.draggableItemData?.Relation;
|
|
107
|
+
const addonUUID = relation?.AddonUUID;
|
|
108
|
+
const name = relation?.Name;
|
|
109
|
+
if (!addonUUID || !name) {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
return `${addonUUID}|${name}`;
|
|
113
|
+
}
|
|
114
|
+
recomputeUsedSingleUseLogicBlockRefs() {
|
|
115
|
+
this.usedSingleUseLogicBlockRefs.clear();
|
|
116
|
+
if (this.singleUseLogicBlockKeys.size === 0 || this._fields.length === 0) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
this._fields.forEach((field) => {
|
|
120
|
+
const refKey = this.getLogicBlockRefKeyFromMappedField(field);
|
|
121
|
+
if (refKey && this.singleUseLogicBlockKeys.has(refKey)) {
|
|
122
|
+
this.usedSingleUseLogicBlockRefs.add(refKey);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
onInnerFieldsChange(fields) {
|
|
127
|
+
this._fields = fields;
|
|
128
|
+
this.notifyFieldsChange();
|
|
129
|
+
}
|
|
130
|
+
cloneField(field) {
|
|
131
|
+
try {
|
|
132
|
+
return JSON.parse(JSON.stringify(field));
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
return { ...field };
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
onDeleteGenericField(field) {
|
|
139
|
+
const index = this._fields.findIndex(f => f === field);
|
|
140
|
+
if (index > -1) {
|
|
141
|
+
const removedField = this._fields[index];
|
|
142
|
+
this.spliceMappedFields(index, 1);
|
|
143
|
+
this.fieldRemove.emit({ field: removedField, index });
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
onDuplicateGenericField(field) {
|
|
147
|
+
const index = this._fields.findIndex(f => f === field);
|
|
148
|
+
if (index > -1) {
|
|
149
|
+
const draggableItemKey = field?.draggableItemData?.key ?? PepGuid.newGuid();
|
|
150
|
+
const newField = {
|
|
151
|
+
...field,
|
|
152
|
+
key: PepGuid.newGuid(),
|
|
153
|
+
draggableItemData: {
|
|
154
|
+
key: draggableItemKey,
|
|
155
|
+
...(field.draggableItemData || {})
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
const blockName = newField?.draggableItemData?.Name;
|
|
159
|
+
if (typeof blockName === 'string') {
|
|
160
|
+
newField.draggableItemData.Name = `${blockName}_copy`;
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
const name = newField?.Name;
|
|
164
|
+
if (typeof name === 'string') {
|
|
165
|
+
newField.Name = `${name}_copy`;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
const newIndex = index + 1;
|
|
169
|
+
this.spliceMappedFields(newIndex, 0, newField);
|
|
170
|
+
this.fieldAdd.emit({ field: newField, index: newIndex });
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
onEditFlowGenericField(field) {
|
|
174
|
+
if (this.templateType !== 'flow') {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const block = field?.draggableItemData;
|
|
178
|
+
const addonUUID = block?.Relation?.AddonUUID;
|
|
179
|
+
const name = block?.Relation?.Name;
|
|
180
|
+
if (!addonUUID || !name) {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
this.openLogicBlockConfigurationDialog({
|
|
184
|
+
addonUUID,
|
|
185
|
+
name,
|
|
186
|
+
configuration: block?.Configuration ?? '{}',
|
|
187
|
+
onSetConfiguration: (configuration) => {
|
|
188
|
+
block.Configuration = configuration;
|
|
189
|
+
this.notifyFieldsChange();
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
}
|
|
50
193
|
addNewField(draggableItem, index) {
|
|
51
194
|
// Add new menuField to the mappedFields.
|
|
52
195
|
const field = {
|
|
@@ -57,6 +200,92 @@ export class GenericFieldsBuilderComponent {
|
|
|
57
200
|
this.spliceMappedFields(index, 0, field);
|
|
58
201
|
this.fieldAdd.emit({ field, index });
|
|
59
202
|
}
|
|
203
|
+
getEventDataFields() {
|
|
204
|
+
const result = {};
|
|
205
|
+
(this.disableIfParams ?? []).forEach((param) => {
|
|
206
|
+
const name = param?.Name;
|
|
207
|
+
if (typeof name === 'string' && name.length > 0) {
|
|
208
|
+
result[name] = {
|
|
209
|
+
Type: param?.Type ?? 'String',
|
|
210
|
+
DefaultValue: param?.DefaultValue,
|
|
211
|
+
ObjectStructure: param?.ObjectStructure,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
return result;
|
|
216
|
+
}
|
|
217
|
+
openLogicBlockConfigurationDialog(options) {
|
|
218
|
+
const dialogRef = this.addonBlockLoaderService.loadAddonBlockInDialog({
|
|
219
|
+
container: this.viewContainerRef,
|
|
220
|
+
name: options.name,
|
|
221
|
+
blockType: 'LogicBlock',
|
|
222
|
+
addonUUID: options.addonUUID,
|
|
223
|
+
size: 'regular',
|
|
224
|
+
hostObject: {
|
|
225
|
+
Configuration: options.configuration,
|
|
226
|
+
EventData: this.getEventDataFields(),
|
|
227
|
+
},
|
|
228
|
+
hostEventsCallback: (event) => {
|
|
229
|
+
if (!event) {
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
switch (event.type) {
|
|
233
|
+
case 'close-dialog': {
|
|
234
|
+
dialogRef?.close();
|
|
235
|
+
break;
|
|
236
|
+
}
|
|
237
|
+
case 'set-configuration': {
|
|
238
|
+
dialogRef?.close();
|
|
239
|
+
options.onSetConfiguration(event.configuration);
|
|
240
|
+
break;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
createFlowLogicBlockFromDraggableItem(draggableItem) {
|
|
247
|
+
const data = draggableItem?.data;
|
|
248
|
+
const draggableItemKey = data?.key ?? PepGuid.newGuid();
|
|
249
|
+
const addonUUID = data?.addonUUID ?? data?.AddonUUID;
|
|
250
|
+
const relationName = data?.relationName ?? data?.Name ?? draggableItem?.title;
|
|
251
|
+
const executionURL = data?.blockExecutionRelativeURL ?? data?.ExecutionURL;
|
|
252
|
+
return {
|
|
253
|
+
key: draggableItemKey,
|
|
254
|
+
Name: draggableItem.title,
|
|
255
|
+
Disabled: false,
|
|
256
|
+
DisabledConditionFilter: null,
|
|
257
|
+
Configuration: '{}',
|
|
258
|
+
Type: 'LogicBlock',
|
|
259
|
+
Relation: {
|
|
260
|
+
AddonUUID: addonUUID,
|
|
261
|
+
Name: relationName,
|
|
262
|
+
ExecutionURL: executionURL,
|
|
263
|
+
},
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
addNewFlowFieldWithDialog(draggableItem, index) {
|
|
267
|
+
const block = this.createFlowLogicBlockFromDraggableItem(draggableItem);
|
|
268
|
+
const addonUUID = block?.Relation?.AddonUUID;
|
|
269
|
+
const name = block?.Relation?.Name;
|
|
270
|
+
if (!addonUUID || !name) {
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
const field = {
|
|
274
|
+
key: PepGuid.newGuid(),
|
|
275
|
+
title: draggableItem.title,
|
|
276
|
+
draggableItemData: block,
|
|
277
|
+
};
|
|
278
|
+
this.openLogicBlockConfigurationDialog({
|
|
279
|
+
addonUUID,
|
|
280
|
+
name,
|
|
281
|
+
configuration: block?.Configuration ?? '{}',
|
|
282
|
+
onSetConfiguration: (configuration) => {
|
|
283
|
+
block.Configuration = configuration;
|
|
284
|
+
this.spliceMappedFields(index, 0, field);
|
|
285
|
+
this.fieldAdd.emit({ field, index });
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
}
|
|
60
289
|
spliceMappedFields(start, deleteCount, field) {
|
|
61
290
|
if (field) {
|
|
62
291
|
this._fields.splice(start, deleteCount, field);
|
|
@@ -64,6 +293,7 @@ export class GenericFieldsBuilderComponent {
|
|
|
64
293
|
else {
|
|
65
294
|
this._fields.splice(start, deleteCount);
|
|
66
295
|
}
|
|
296
|
+
this.recomputeUsedSingleUseLogicBlockRefs();
|
|
67
297
|
this.notifyFieldsChange();
|
|
68
298
|
}
|
|
69
299
|
ngOnInit() {
|
|
@@ -81,19 +311,33 @@ export class GenericFieldsBuilderComponent {
|
|
|
81
311
|
this.notifyFieldsChange();
|
|
82
312
|
}
|
|
83
313
|
else if (event.container.id === 'emptyDropArea') {
|
|
84
|
-
|
|
314
|
+
const item = event.previousContainer.data[event.previousIndex];
|
|
315
|
+
const index = this.fields.length;
|
|
316
|
+
if (this.templateType === 'flow') {
|
|
317
|
+
this.addNewFlowFieldWithDialog(item, index);
|
|
318
|
+
}
|
|
319
|
+
else {
|
|
320
|
+
this.addNewField(item, index);
|
|
321
|
+
}
|
|
85
322
|
}
|
|
86
323
|
else {
|
|
87
|
-
|
|
324
|
+
const item = event.previousContainer.data[event.previousIndex];
|
|
325
|
+
const index = event.currentIndex;
|
|
326
|
+
if (this.templateType === 'flow') {
|
|
327
|
+
this.addNewFlowFieldWithDialog(item, index);
|
|
328
|
+
}
|
|
329
|
+
else {
|
|
330
|
+
this.addNewField(item, index);
|
|
331
|
+
}
|
|
88
332
|
}
|
|
89
333
|
}
|
|
90
334
|
}
|
|
91
|
-
GenericFieldsBuilderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: GenericFieldsBuilderComponent, deps: [{ token: i1.GenericFieldsBuilderService }], target: i0.ɵɵFactoryTarget.Component });
|
|
92
|
-
GenericFieldsBuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: GenericFieldsBuilderComponent, selector: "pep-generic-fields-builder", inputs: { builderTitle: "builderTitle", builderTitleHint: "builderTitleHint", showAddSeparator: "showAddSeparator", itemKeyLabel: "itemKeyLabel", itemTitleLabel: "itemTitleLabel", setAddedFieldDataCallback: "setAddedFieldDataCallback", availableFields: "availableFields", fieldTemplate: "fieldTemplate", fields: "fields" }, outputs: { fieldsChange: "fieldsChange", fieldAdd: "fieldAdd" }, ngImport: i0, template: "<pep-page-layout >\n <ng-container pep-main-area>\n <div *ngIf=\"availableFields\" class=\"mapped-fields-container\">\n <div class=\"available-fields-side-area\">\n <pep-draggable-items [items]=\"availableFields\" [title]=\"'GENERIC_FIELDS_BUILDER.AVAILABLE_FIELDS' | translate\" titleType=\"with-bottom-border\" titleSizeType=\"md\"\n itemPlaceholderType=\"weak\" [showSearch]=\"true\" [dropAreaIds]=\"['emptyDropArea', 'mappedFields']\" (itemDragStarted)=\"onDragStart($event)\" (itemDragEnded)=\"onDragEnd($event)\">\n </pep-draggable-items>\n </div>\n <div pep-main-area class=\"mapped-fields-main-area\">\n <div class=\"mapped-fields-top-area pep-border-bottom\"\n [title]=\"builderTitle + ' ' + (builderTitleHint ? ('(' + builderTitleHint + ')') : '')\">\n <span class=\"title-md\">{{ builderTitle }} </span>\n <span *ngIf=\"builderTitleHint\" class=\"color-dimmed\">({{ builderTitleHint }})</span>\n </div>\n \n <div class=\"fields-area\">\n <ng-container *ngIf=\"fields === null || fields.length === 0; then emptyTemplate; else notEmptyTemplate\"></ng-container>\n <ng-template #emptyTemplate>\n <div [id]=\"emptyDropAreaId\" class=\"drop-field-here-area\" cdkDropList (cdkDropListDropped)=\"onDropField($event)\">\n <mat-icon class=\"pep-spacing-element\">\n <pep-icon name=\"arrow_down_alt\"></pep-icon>\n </mat-icon>\n <span class=\"body-sm ellipsis\">\n {{ 'GENERIC_FIELDS_BUILDER.EMPTY_DROP_AREA_TEXT' | translate }}\n </span> \n </div>\n </ng-template>\n <ng-template #notEmptyTemplate>\n <div [id]=\"mappedFieldsId\" class=\"mapped-fields-area\" [ngClass]=\"{ 'no-row-gap': !isGrabbing }\"\n cdkDropList [cdkDropListData]=\"fields\" (cdkDropListDropped)=\"onDropField($event)\">\n <ng-container *ngFor=\"let field of fields; let i = index\" >\n <pep-field-container cdkDrag (cdkDragStarted)=\"onDragStart($event)\" (cdkDragEnded)=\"onDragEnd($event)\">\n <ng-container *ngTemplateOutlet=\"fieldTemplate || defaultTemplate; context: { field: field, index: i }\"></ng-container>\n </pep-field-container>\n <!-- <div class=\"mapped-field-container\" \n cdkDrag (cdkDragStarted)=\"onDragStart($event)\" (cdkDragEnded)=\"onDragEnd($event)\">\n \n <div class=\"field-wrapper\">\n <ng-container *ngTemplateOutlet=\"fieldTemplate || defaultTemplate; context: { field: field, index: i }\"></ng-container>\n </div>\n </div> -->\n </ng-container>\n </div>\n </ng-template>\n </div>\n </div>\n </div>\n </ng-container>\n</pep-page-layout>\n\n<ng-template #defaultTemplate let-field=\"field\" let-index=\"index\">\n {{ 'GENERIC_FIELDS_BUILDER.TEMPLATE_NOT_SUPPLIED' | translate: { fieldTitle: field.title || field.key } }}\n</ng-template>\n", styles: [".mapped-field-container{cursor:grab;max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem);background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%));min-height:2.5rem}.mapped-fields-container{display:grid;height:100%;grid-template-columns:auto 1fr;grid-template-areas:\"side-area main-area\"}.mapped-fields-container .available-fields-side-area{grid-area:side-area;width:240px;max-width:240px;overflow:auto;height:inherit;padding-top:var(--pep-spacing-2xl, 2rem);margin-inline-end:calc(var(--pep-spacing-lg, 1rem) * 2)}.mapped-fields-container .mapped-fields-main-area{display:grid;grid-template-rows:auto 1fr;grid-area:main-area;padding-top:var(--pep-spacing-2xl, 2rem);overflow:auto;height:inherit}.mapped-fields-container .mapped-fields-main-area .mapped-fields-top-area{height:var(--pep-top-bar-field-height, 2.5rem);display:flex;align-items:center}.mapped-fields-container .mapped-fields-main-area .fields-area{overflow:auto;height:inherit;padding-top:var(--pep-spacing-lg, 1rem);padding-bottom:var(--pep-spacing-lg, 1rem);padding-inline:var(--pep-spacing-xs, .25rem)}.drop-field-here-area{min-height:5rem;max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem);background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.08);position:relative}.drop-field-here-area:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),calc(var(--pep-color-system-primary-l, 10%) + 30%))}.drop-field-here-area.cdk-drop-list-dragging{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.drop-field-here-area.cdk-drop-list-dragging:hover{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 20%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.drop-field-here-area.cdk-drop-list-dragging ::ng-deep .placeholder-item{display:none}.mapped-fields-area{display:flex;flex-direction:column;gap:var(--pep-spacing-lg, 1rem)}.mapped-fields-area.cdk-drop-list-dragging ::ng-deep .placeholder-item{max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem);background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5);height:0!important}.mapped-fields-area .cdk-drag-placeholder ::ng-deep .mapped-field-container{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.mapped-fields-area .cdk-drag-placeholder ::ng-deep .mapped-field-container .field-wrapper{opacity:0}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }, { kind: "component", type: i6.PepPageLayoutComponent, selector: "pep-page-layout", inputs: ["addPadding", "showShadow"] }, { kind: "component", type: i7.PepDraggableItemsComponent, selector: "pep-draggable-items", inputs: ["containerId", "showSearch", "title", "titleType", "titleSizeType", "itemPlaceholderType", "dropAreaIds", "items"], outputs: ["itemDragStarted", "itemDragEnded"] }, { kind: "component", type: i8.FieldContainerComponent, selector: "pep-field-container" }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] });
|
|
335
|
+
GenericFieldsBuilderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: GenericFieldsBuilderComponent, deps: [{ token: i0.ViewContainerRef }, { token: i1.PepAddonBlockLoaderService }, { token: i2.GenericFieldsBuilderService }, { token: i3.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
|
|
336
|
+
GenericFieldsBuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: GenericFieldsBuilderComponent, selector: "pep-generic-fields-builder", inputs: { builderTitle: "builderTitle", builderTitleHint: "builderTitleHint", showAddSeparator: "showAddSeparator", itemKeyLabel: "itemKeyLabel", itemTitleLabel: "itemTitleLabel", setAddedFieldDataCallback: "setAddedFieldDataCallback", templateType: "templateType", disableIfParams: "disableIfParams", availableFields: "availableFields", fieldTemplate: "fieldTemplate", fieldContentCallback: "fieldContentCallback", fields: "fields" }, outputs: { fieldsChange: "fieldsChange", fieldAdd: "fieldAdd", fieldRemove: "fieldRemove" }, ngImport: i0, template: "<pep-page-layout >\n <ng-container pep-main-area>\n <div *ngIf=\"availableFields\" class=\"mapped-fields-container\">\n <div class=\"available-fields-side-area\">\n <pep-draggable-items [items]=\"availableFields\" [title]=\"'GENERIC_FIELDS_BUILDER.AVAILABLE_FIELDS' | translate\" titleType=\"with-bottom-border\" titleSizeType=\"md\"\n itemPlaceholderType=\"weak\" [showSearch]=\"true\" [dropAreaIds]=\"['emptyDropArea', 'mappedFields']\" (itemDragStarted)=\"onDragStart($event)\" (itemDragEnded)=\"onDragEnd($event)\">\n </pep-draggable-items>\n </div>\n <div pep-main-area class=\"mapped-fields-main-area\">\n <div class=\"mapped-fields-top-area pep-border-bottom\"\n [title]=\"builderTitle + ' ' + (builderTitleHint ? ('(' + builderTitleHint + ')') : '')\">\n <span class=\"title-md\">{{ builderTitle }} </span>\n <span *ngIf=\"builderTitleHint\" class=\"color-dimmed\">({{ builderTitleHint }})</span>\n </div>\n \n <div class=\"fields-area\">\n <ng-container *ngIf=\"fields === null || fields.length === 0; then emptyTemplate; else notEmptyTemplate\"></ng-container>\n <ng-template #emptyTemplate>\n <div [id]=\"emptyDropAreaId\" class=\"drop-field-here-area\" cdkDropList (cdkDropListDropped)=\"onDropField($event)\">\n <mat-icon class=\"pep-spacing-element\">\n <pep-icon name=\"arrow_down_alt\"></pep-icon>\n </mat-icon>\n <span class=\"body-sm ellipsis\">\n {{ 'GENERIC_FIELDS_BUILDER.EMPTY_DROP_AREA_TEXT' | translate }}\n </span> \n </div>\n </ng-template>\n <ng-template #notEmptyTemplate>\n <div [id]=\"mappedFieldsId\" class=\"mapped-fields-area\" [ngClass]=\"{ 'no-row-gap': !isGrabbing }\"\n cdkDropList [cdkDropListData]=\"fields\" (cdkDropListDropped)=\"onDropField($event)\">\n <ng-container *ngFor=\"let field of fields; let i = index\" >\n <pep-field-container cdkDrag (cdkDragStarted)=\"onDragStart($event)\" (cdkDragEnded)=\"onDragEnd($event)\">\n <pep-generic-fields-flow-field *ngIf=\"templateType === 'flow'\"\n [field]=\"$any(field)\"\n [disableIfParams]=\"$any(disableIfParams)\"\n [usedSingleUseLogicBlockRefs]=\"usedSingleUseLogicBlockRefs\"\n (deleteBlockClicked)=\"onDeleteGenericField($any($event))\"\n (editBlockClicked)=\"onEditFlowGenericField($any($event))\"\n (duplicateBlockClicked)=\"onDuplicateGenericField($any($event))\"\n (fieldChanged)=\"onInnerFieldsChange(fields)\">\n </pep-generic-fields-flow-field>\n <ng-container *ngIf=\"templateType !== 'flow'\">\n <ng-container *ngTemplateOutlet=\"fieldTemplate || defaultTemplate; context: { field: field, index: i }\"></ng-container>\n </ng-container>\n </pep-field-container>\n </ng-container>\n </div>\n </ng-template>\n </div>\n </div>\n </div>\n </ng-container>\n</pep-page-layout>\n\n<ng-template #defaultTemplate let-field=\"field\" let-index=\"index\">\n <ng-container *ngIf=\"fieldContentCallback; else noTemplateText\">\n <div [innerHTML]=\"getFieldContent(field, index)\"></div>\n </ng-container>\n <ng-template #noTemplateText>\n {{ 'GENERIC_FIELDS_BUILDER.TEMPLATE_NOT_SUPPLIED' | translate: { fieldTitle: field.title || field.key } }}\n </ng-template>\n</ng-template>\n", styles: [".mapped-field-container{cursor:grab;max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem);background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%));min-height:2.5rem}.mapped-fields-container{display:grid;height:100%;grid-template-columns:auto 1fr;grid-template-areas:\"side-area main-area\"}.mapped-fields-container .available-fields-side-area{grid-area:side-area;width:240px;max-width:240px;overflow:auto;height:inherit;padding-top:var(--pep-spacing-2xl, 2rem);margin-inline-end:calc(var(--pep-spacing-lg, 1rem) * 2)}.mapped-fields-container .mapped-fields-main-area{display:grid;grid-template-rows:auto 1fr;grid-area:main-area;padding-top:var(--pep-spacing-2xl, 2rem);overflow:auto;height:inherit}.mapped-fields-container .mapped-fields-main-area .mapped-fields-top-area{height:var(--pep-top-bar-field-height, 2.5rem);display:flex;align-items:center}.mapped-fields-container .mapped-fields-main-area .fields-area{overflow:auto;height:inherit;padding-top:var(--pep-spacing-lg, 1rem);padding-bottom:var(--pep-spacing-lg, 1rem);padding-inline:var(--pep-spacing-xs, .25rem)}.drop-field-here-area{min-height:5rem;max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem);background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.08);position:relative}.drop-field-here-area:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),calc(var(--pep-color-system-primary-l, 10%) + 30%))}.drop-field-here-area.cdk-drop-list-dragging{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.drop-field-here-area.cdk-drop-list-dragging:hover{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 20%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.drop-field-here-area.cdk-drop-list-dragging ::ng-deep .placeholder-item{display:none}.mapped-fields-area{display:flex;flex-direction:column;gap:var(--pep-spacing-lg, 1rem)}.mapped-fields-area.cdk-drop-list-dragging ::ng-deep .placeholder-item{max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem);background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5);height:0!important}.mapped-fields-area .cdk-drag-placeholder ::ng-deep .mapped-field-container{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.mapped-fields-area .cdk-drag-placeholder ::ng-deep .mapped-field-container .field-wrapper{opacity:0}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i5.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }, { kind: "component", type: i8.PepPageLayoutComponent, selector: "pep-page-layout", inputs: ["addPadding", "showShadow"] }, { kind: "component", type: i9.PepDraggableItemsComponent, selector: "pep-draggable-items", inputs: ["containerId", "showSearch", "title", "titleType", "titleSizeType", "itemPlaceholderType", "dropAreaIds", "items"], outputs: ["itemDragStarted", "itemDragEnded"] }, { kind: "component", type: i10.FieldContainerComponent, selector: "pep-field-container" }, { kind: "component", type: i11.FlowFieldComponent, selector: "pep-generic-fields-flow-field", inputs: ["field", "disableIfParams", "usedSingleUseLogicBlockRefs"], outputs: ["deleteBlockClicked", "editBlockClicked", "duplicateBlockClicked", "fieldChanged"] }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }] });
|
|
93
337
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: GenericFieldsBuilderComponent, decorators: [{
|
|
94
338
|
type: Component,
|
|
95
|
-
args: [{ selector: 'pep-generic-fields-builder', template: "<pep-page-layout >\n <ng-container pep-main-area>\n <div *ngIf=\"availableFields\" class=\"mapped-fields-container\">\n <div class=\"available-fields-side-area\">\n <pep-draggable-items [items]=\"availableFields\" [title]=\"'GENERIC_FIELDS_BUILDER.AVAILABLE_FIELDS' | translate\" titleType=\"with-bottom-border\" titleSizeType=\"md\"\n itemPlaceholderType=\"weak\" [showSearch]=\"true\" [dropAreaIds]=\"['emptyDropArea', 'mappedFields']\" (itemDragStarted)=\"onDragStart($event)\" (itemDragEnded)=\"onDragEnd($event)\">\n </pep-draggable-items>\n </div>\n <div pep-main-area class=\"mapped-fields-main-area\">\n <div class=\"mapped-fields-top-area pep-border-bottom\"\n [title]=\"builderTitle + ' ' + (builderTitleHint ? ('(' + builderTitleHint + ')') : '')\">\n <span class=\"title-md\">{{ builderTitle }} </span>\n <span *ngIf=\"builderTitleHint\" class=\"color-dimmed\">({{ builderTitleHint }})</span>\n </div>\n \n <div class=\"fields-area\">\n <ng-container *ngIf=\"fields === null || fields.length === 0; then emptyTemplate; else notEmptyTemplate\"></ng-container>\n <ng-template #emptyTemplate>\n <div [id]=\"emptyDropAreaId\" class=\"drop-field-here-area\" cdkDropList (cdkDropListDropped)=\"onDropField($event)\">\n <mat-icon class=\"pep-spacing-element\">\n <pep-icon name=\"arrow_down_alt\"></pep-icon>\n </mat-icon>\n <span class=\"body-sm ellipsis\">\n {{ 'GENERIC_FIELDS_BUILDER.EMPTY_DROP_AREA_TEXT' | translate }}\n </span> \n </div>\n </ng-template>\n <ng-template #notEmptyTemplate>\n <div [id]=\"mappedFieldsId\" class=\"mapped-fields-area\" [ngClass]=\"{ 'no-row-gap': !isGrabbing }\"\n cdkDropList [cdkDropListData]=\"fields\" (cdkDropListDropped)=\"onDropField($event)\">\n <ng-container *ngFor=\"let field of fields; let i = index\" >\n <pep-field-container cdkDrag (cdkDragStarted)=\"onDragStart($event)\" (cdkDragEnded)=\"onDragEnd($event)\">\n <
|
|
96
|
-
}], ctorParameters: function () { return [{ type: i1.GenericFieldsBuilderService }]; }, propDecorators: { builderTitle: [{
|
|
339
|
+
args: [{ selector: 'pep-generic-fields-builder', template: "<pep-page-layout >\n <ng-container pep-main-area>\n <div *ngIf=\"availableFields\" class=\"mapped-fields-container\">\n <div class=\"available-fields-side-area\">\n <pep-draggable-items [items]=\"availableFields\" [title]=\"'GENERIC_FIELDS_BUILDER.AVAILABLE_FIELDS' | translate\" titleType=\"with-bottom-border\" titleSizeType=\"md\"\n itemPlaceholderType=\"weak\" [showSearch]=\"true\" [dropAreaIds]=\"['emptyDropArea', 'mappedFields']\" (itemDragStarted)=\"onDragStart($event)\" (itemDragEnded)=\"onDragEnd($event)\">\n </pep-draggable-items>\n </div>\n <div pep-main-area class=\"mapped-fields-main-area\">\n <div class=\"mapped-fields-top-area pep-border-bottom\"\n [title]=\"builderTitle + ' ' + (builderTitleHint ? ('(' + builderTitleHint + ')') : '')\">\n <span class=\"title-md\">{{ builderTitle }} </span>\n <span *ngIf=\"builderTitleHint\" class=\"color-dimmed\">({{ builderTitleHint }})</span>\n </div>\n \n <div class=\"fields-area\">\n <ng-container *ngIf=\"fields === null || fields.length === 0; then emptyTemplate; else notEmptyTemplate\"></ng-container>\n <ng-template #emptyTemplate>\n <div [id]=\"emptyDropAreaId\" class=\"drop-field-here-area\" cdkDropList (cdkDropListDropped)=\"onDropField($event)\">\n <mat-icon class=\"pep-spacing-element\">\n <pep-icon name=\"arrow_down_alt\"></pep-icon>\n </mat-icon>\n <span class=\"body-sm ellipsis\">\n {{ 'GENERIC_FIELDS_BUILDER.EMPTY_DROP_AREA_TEXT' | translate }}\n </span> \n </div>\n </ng-template>\n <ng-template #notEmptyTemplate>\n <div [id]=\"mappedFieldsId\" class=\"mapped-fields-area\" [ngClass]=\"{ 'no-row-gap': !isGrabbing }\"\n cdkDropList [cdkDropListData]=\"fields\" (cdkDropListDropped)=\"onDropField($event)\">\n <ng-container *ngFor=\"let field of fields; let i = index\" >\n <pep-field-container cdkDrag (cdkDragStarted)=\"onDragStart($event)\" (cdkDragEnded)=\"onDragEnd($event)\">\n <pep-generic-fields-flow-field *ngIf=\"templateType === 'flow'\"\n [field]=\"$any(field)\"\n [disableIfParams]=\"$any(disableIfParams)\"\n [usedSingleUseLogicBlockRefs]=\"usedSingleUseLogicBlockRefs\"\n (deleteBlockClicked)=\"onDeleteGenericField($any($event))\"\n (editBlockClicked)=\"onEditFlowGenericField($any($event))\"\n (duplicateBlockClicked)=\"onDuplicateGenericField($any($event))\"\n (fieldChanged)=\"onInnerFieldsChange(fields)\">\n </pep-generic-fields-flow-field>\n <ng-container *ngIf=\"templateType !== 'flow'\">\n <ng-container *ngTemplateOutlet=\"fieldTemplate || defaultTemplate; context: { field: field, index: i }\"></ng-container>\n </ng-container>\n </pep-field-container>\n </ng-container>\n </div>\n </ng-template>\n </div>\n </div>\n </div>\n </ng-container>\n</pep-page-layout>\n\n<ng-template #defaultTemplate let-field=\"field\" let-index=\"index\">\n <ng-container *ngIf=\"fieldContentCallback; else noTemplateText\">\n <div [innerHTML]=\"getFieldContent(field, index)\"></div>\n </ng-container>\n <ng-template #noTemplateText>\n {{ 'GENERIC_FIELDS_BUILDER.TEMPLATE_NOT_SUPPLIED' | translate: { fieldTitle: field.title || field.key } }}\n </ng-template>\n</ng-template>\n", styles: [".mapped-field-container{cursor:grab;max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem);background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%));min-height:2.5rem}.mapped-fields-container{display:grid;height:100%;grid-template-columns:auto 1fr;grid-template-areas:\"side-area main-area\"}.mapped-fields-container .available-fields-side-area{grid-area:side-area;width:240px;max-width:240px;overflow:auto;height:inherit;padding-top:var(--pep-spacing-2xl, 2rem);margin-inline-end:calc(var(--pep-spacing-lg, 1rem) * 2)}.mapped-fields-container .mapped-fields-main-area{display:grid;grid-template-rows:auto 1fr;grid-area:main-area;padding-top:var(--pep-spacing-2xl, 2rem);overflow:auto;height:inherit}.mapped-fields-container .mapped-fields-main-area .mapped-fields-top-area{height:var(--pep-top-bar-field-height, 2.5rem);display:flex;align-items:center}.mapped-fields-container .mapped-fields-main-area .fields-area{overflow:auto;height:inherit;padding-top:var(--pep-spacing-lg, 1rem);padding-bottom:var(--pep-spacing-lg, 1rem);padding-inline:var(--pep-spacing-xs, .25rem)}.drop-field-here-area{min-height:5rem;max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem);background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.08);position:relative}.drop-field-here-area:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),calc(var(--pep-color-system-primary-l, 10%) + 30%))}.drop-field-here-area.cdk-drop-list-dragging{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.drop-field-here-area.cdk-drop-list-dragging:hover{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 20%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.drop-field-here-area.cdk-drop-list-dragging ::ng-deep .placeholder-item{display:none}.mapped-fields-area{display:flex;flex-direction:column;gap:var(--pep-spacing-lg, 1rem)}.mapped-fields-area.cdk-drop-list-dragging ::ng-deep .placeholder-item{max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem);background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5);height:0!important}.mapped-fields-area .cdk-drag-placeholder ::ng-deep .mapped-field-container{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.mapped-fields-area .cdk-drag-placeholder ::ng-deep .mapped-field-container .field-wrapper{opacity:0}\n"] }]
|
|
340
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i1.PepAddonBlockLoaderService }, { type: i2.GenericFieldsBuilderService }, { type: i3.DomSanitizer }]; }, propDecorators: { builderTitle: [{
|
|
97
341
|
type: Input
|
|
98
342
|
}], builderTitleHint: [{
|
|
99
343
|
type: Input
|
|
@@ -105,15 +349,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
|
105
349
|
type: Input
|
|
106
350
|
}], setAddedFieldDataCallback: [{
|
|
107
351
|
type: Input
|
|
352
|
+
}], templateType: [{
|
|
353
|
+
type: Input
|
|
354
|
+
}], disableIfParams: [{
|
|
355
|
+
type: Input
|
|
108
356
|
}], availableFields: [{
|
|
109
357
|
type: Input
|
|
110
358
|
}], fieldTemplate: [{
|
|
111
359
|
type: Input
|
|
360
|
+
}], fieldContentCallback: [{
|
|
361
|
+
type: Input
|
|
112
362
|
}], fields: [{
|
|
113
363
|
type: Input
|
|
114
364
|
}], fieldsChange: [{
|
|
115
365
|
type: Output
|
|
116
366
|
}], fieldAdd: [{
|
|
117
367
|
type: Output
|
|
368
|
+
}], fieldRemove: [{
|
|
369
|
+
type: Output
|
|
118
370
|
}] } });
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1maWVsZHMtYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9zaXRlLWxpYi9nZW5lcmljLWZpZWxkcy1idWlsZGVyL2dlbmVyaWMtZmllbGRzLWJ1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZ2VuZXJpYy1maWVsZHMtYnVpbGRlci9nZW5lcmljLWZpZWxkcy1idWlsZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBeUMsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBMEIsTUFBTSxlQUFlLENBQUM7QUFHdkcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7OztBQW1CbEQsTUFBTSxPQUFPLDZCQUE2QjtJQXVDdEMsWUFDWSwyQkFBd0Q7UUFBeEQsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUE2QjtRQXZDcEUsK0JBQStCO1FBQ3RCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUN0QixxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDeEIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFHckIscUJBQWdCLEdBQTZCLEVBQUUsQ0FBQztRQVMvQyxrQkFBYSxHQUFpQyxTQUFTLENBQUM7UUFFekQsWUFBTyxHQUF1QixFQUFFLENBQUM7UUFVekMsaUJBQVksR0FBcUMsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFHeEYsYUFBUSxHQUE2QyxJQUFJLFlBQVksRUFBOEIsQ0FBQztRQUVwRyxvQkFBZSxHQUFHLGVBQWUsQ0FBQztRQUNsQyxt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O0lBQ0wsQ0FBQzs7MEhBOUZRLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLHVjQ3ZCMUMseWxIQXFEQTsyRkQ5QmEsNkJBQTZCO2tCQUx6QyxTQUFTOytCQUNJLDRCQUE0QjtrSEFNN0IsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyx5QkFBeUI7c0JBQWpDLEtBQUs7Z0JBSUYsZUFBZTtzQkFEbEIsS0FBSztnQkFRRyxhQUFhO3NCQUFyQixLQUFLO2dCQUlGLE1BQU07c0JBRFQsS0FBSztnQkFTTixZQUFZO3NCQURYLE1BQU07Z0JBSVAsUUFBUTtzQkFEUCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIENka0RyYWdFbmQsIENka0RyYWdTdGFydCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJUGVwRHJhZ2dhYmxlSXRlbSwgSVBlcERyYWdnYWJsZUl0ZW1EYXRhIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvZHJhZ2dhYmxlLWl0ZW1zJztcbmltcG9ydCB7IEdlbmVyaWNGaWVsZHNCdWlsZGVyU2VydmljZSB9IGZyb20gJy4vZ2VuZXJpYy1maWVsZHMtYnVpbGRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBlcEd1aWQgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlcEdlbmVyaWNGaWVsZCB7XG4gICAga2V5OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBkcmFnZ2FibGVJdGVtRGF0YTogSVBlcERyYWdnYWJsZUl0ZW1EYXRhXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQZXBHZW5lcmljRmllbGRBZGRlZEV2ZW50IHtcbiAgICBmaWVsZDogSVBlcEdlbmVyaWNGaWVsZCxcbiAgICBpbmRleDogbnVtYmVyLFxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BlcC1nZW5lcmljLWZpZWxkcy1idWlsZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZ2VuZXJpYy1maWVsZHMtYnVpbGRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZ2VuZXJpYy1maWVsZHMtYnVpbGRlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEdlbmVyaWNGaWVsZHNCdWlsZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvLyBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJyc7XG4gICAgQElucHV0KCkgYnVpbGRlclRpdGxlID0gJyc7XG4gICAgQElucHV0KCkgYnVpbGRlclRpdGxlSGludCA9ICcnO1xuICAgIEBJbnB1dCgpIHNob3dBZGRTZXBhcmF0b3IgPSB0cnVlO1xuICAgIEBJbnB1dCgpIGl0ZW1LZXlMYWJlbCA9ICcnO1xuICAgIEBJbnB1dCgpIGl0ZW1UaXRsZUxhYmVsID0gJyc7XG4gICAgQElucHV0KCkgc2V0QWRkZWRGaWVsZERhdGFDYWxsYmFjazogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkOy8vIEZ1bmN0aW9uIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgcHJpdmF0ZSBfYXZhaWxhYmxlRmllbGRzOiBBcnJheTxJUGVwRHJhZ2dhYmxlSXRlbT4gPSBbXTtcbiAgICBASW5wdXQoKVxuICAgIHNldCBhdmFpbGFibGVGaWVsZHModmFsdWU6IEFycmF5PElQZXBEcmFnZ2FibGVJdGVtPikge1xuICAgICAgICB0aGlzLl9hdmFpbGFibGVGaWVsZHMgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IGF2YWlsYWJsZUZpZWxkcygpOiBBcnJheTxJUGVwRHJhZ2dhYmxlSXRlbT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXZhaWxhYmxlRmllbGRzO1xuICAgIH1cbiAgICBcbiAgICBASW5wdXQoKSBmaWVsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIFxuICAgIHByaXZhdGUgX2ZpZWxkczogSVBlcEdlbmVyaWNGaWVsZFtdID0gW107XG4gICAgQElucHV0KClcbiAgICBzZXQgZmllbGRzKHZhbHVlOiBJUGVwR2VuZXJpY0ZpZWxkW10pIHtcbiAgICAgICAgdGhpcy5fZmllbGRzID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBmaWVsZHMoKSA6IElQZXBHZW5lcmljRmllbGRbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWVsZHM7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgZmllbGRzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SVBlcEdlbmVyaWNGaWVsZFtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8SVBlcEdlbmVyaWNGaWVsZFtdPigpO1xuICAgIFxuICAgIEBPdXRwdXQoKVxuICAgIGZpZWxkQWRkOiBFdmVudEVtaXR0ZXI8SVBlcEdlbmVyaWNGaWVsZEFkZGVkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwR2VuZXJpY0ZpZWxkQWRkZWRFdmVudD4oKTtcbiAgICBcbiAgICBlbXB0eURyb3BBcmVhSWQgPSAnZW1wdHlEcm9wQXJlYSc7XG4gICAgbWFwcGVkRmllbGRzSWQgPSAnbWFwcGVkRmllbGRzJztcbiAgICBpc0dyYWJiaW5nID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBnZW5lcmljRmllbGRzQnVpbGRlclNlcnZpY2U6IEdlbmVyaWNGaWVsZHNCdWlsZGVyU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLmdlbmVyaWNGaWVsZHNCdWlsZGVyU2VydmljZS5pc0dyYWJiaW5nQ2hhbmdlJC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzR3JhYmJpbmcgPSB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBub3RpZnlGaWVsZHNDaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMuZmllbGRzQ2hhbmdlLmVtaXQodGhpcy5fZmllbGRzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZE5ld0ZpZWxkKGRyYWdnYWJsZUl0ZW06IElQZXBEcmFnZ2FibGVJdGVtLCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIC8vIEFkZCBuZXcgbWVudUZpZWxkIHRvIHRoZSBtYXBwZWRGaWVsZHMuXG4gICAgICAgIGNvbnN0IGZpZWxkOiBJUGVwR2VuZXJpY0ZpZWxkID0geyBcbiAgICAgICAgICAgIGtleTogUGVwR3VpZC5uZXdHdWlkKCksIFxuICAgICAgICAgICAgZHJhZ2dhYmxlSXRlbURhdGE6IGRyYWdnYWJsZUl0ZW0uZGF0YSxcbiAgICAgICAgICAgIHRpdGxlOiBkcmFnZ2FibGVJdGVtLnRpdGxlIFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuc3BsaWNlTWFwcGVkRmllbGRzKGluZGV4LCAwLCBmaWVsZCk7XG4gICAgICAgIHRoaXMuZmllbGRBZGQuZW1pdCh7ZmllbGQsIGluZGV4fSk7XG4gICAgfVxuICAgIFxuICAgIHByaXZhdGUgc3BsaWNlTWFwcGVkRmllbGRzKHN0YXJ0OiBudW1iZXIsIGRlbGV0ZUNvdW50OiBudW1iZXIsIGZpZWxkPzogYW55KSB7XG4gICAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICAgICAgdGhpcy5fZmllbGRzLnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQsIGZpZWxkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2ZpZWxkcy5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubm90aWZ5RmllbGRzQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIC8vXG4gICAgfVxuXG4gICAgb25EcmFnU3RhcnQoZXZlbnQ6IENka0RyYWdTdGFydCkge1xuICAgICAgICB0aGlzLmdlbmVyaWNGaWVsZHNCdWlsZGVyU2VydmljZS5vbkRyYWdTdGFydChldmVudCk7XG4gICAgfVxuICAgIFxuICAgIG9uRHJhZ0VuZChldmVudDogQ2RrRHJhZ0VuZCkge1xuICAgICAgICB0aGlzLmdlbmVyaWNGaWVsZHNCdWlsZGVyU2VydmljZS5vbkRyYWdFbmQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uRHJvcEZpZWxkKGV2ZW50OiBDZGtEcmFnRHJvcDxhbnlbXT4pIHtcbiAgICAgICAgaWYgKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyID09PSBldmVudC5jb250YWluZXIpIHtcbiAgICAgICAgICAgIG1vdmVJdGVtSW5BcnJheShldmVudC5jb250YWluZXIuZGF0YSwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5RmllbGRzQ2hhbmdlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuY29udGFpbmVyLmlkID09PSAnZW1wdHlEcm9wQXJlYScpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkTmV3RmllbGQoZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YVtldmVudC5wcmV2aW91c0luZGV4XSwgdGhpcy5maWVsZHMubGVuZ3RoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWRkTmV3RmllbGQoZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YVtldmVudC5wcmV2aW91c0luZGV4XSwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxwZXAtcGFnZS1sYXlvdXQgPlxuICAgIDxuZy1jb250YWluZXIgcGVwLW1haW4tYXJlYT5cbiAgICAgICAgPGRpdiAqbmdJZj1cImF2YWlsYWJsZUZpZWxkc1wiIGNsYXNzPVwibWFwcGVkLWZpZWxkcy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmFpbGFibGUtZmllbGRzLXNpZGUtYXJlYVwiPlxuICAgICAgICAgICAgICAgIDxwZXAtZHJhZ2dhYmxlLWl0ZW1zIFtpdGVtc109XCJhdmFpbGFibGVGaWVsZHNcIiBbdGl0bGVdPVwiJ0dFTkVSSUNfRklFTERTX0JVSUxERVIuQVZBSUxBQkxFX0ZJRUxEUycgfCB0cmFuc2xhdGVcIiB0aXRsZVR5cGU9XCJ3aXRoLWJvdHRvbS1ib3JkZXJcIiB0aXRsZVNpemVUeXBlPVwibWRcIlxuICAgICAgICAgICAgICAgICAgICBpdGVtUGxhY2Vob2xkZXJUeXBlPVwid2Vha1wiIFtzaG93U2VhcmNoXT1cInRydWVcIiBbZHJvcEFyZWFJZHNdPVwiWydlbXB0eURyb3BBcmVhJywgJ21hcHBlZEZpZWxkcyddXCIgKGl0ZW1EcmFnU3RhcnRlZCk9XCJvbkRyYWdTdGFydCgkZXZlbnQpXCIgKGl0ZW1EcmFnRW5kZWQpPVwib25EcmFnRW5kKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8L3BlcC1kcmFnZ2FibGUtaXRlbXM+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgcGVwLW1haW4tYXJlYSBjbGFzcz1cIm1hcHBlZC1maWVsZHMtbWFpbi1hcmVhXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcHBlZC1maWVsZHMtdG9wLWFyZWEgcGVwLWJvcmRlci1ib3R0b21cIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiYnVpbGRlclRpdGxlICsgJyAnICsgKGJ1aWxkZXJUaXRsZUhpbnQgPyAoJygnICsgYnVpbGRlclRpdGxlSGludCArICcpJykgOiAnJylcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZS1tZFwiPnt7IGJ1aWxkZXJUaXRsZSB9fSZuYnNwOzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJidWlsZGVyVGl0bGVIaW50XCIgY2xhc3M9XCJjb2xvci1kaW1tZWRcIj4oe3sgYnVpbGRlclRpdGxlSGludCB9fSk8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkcy1hcmVhXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZHMgPT09IG51bGwgfHwgZmllbGRzLmxlbmd0aCA9PT0gMDsgdGhlbiBlbXB0eVRlbXBsYXRlOyBlbHNlIG5vdEVtcHR5VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNlbXB0eVRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiZW1wdHlEcm9wQXJlYUlkXCIgY2xhc3M9XCJkcm9wLWZpZWxkLWhlcmUtYXJlYVwiIGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wRmllbGQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInBlcC1zcGFjaW5nLWVsZW1lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBlcC1pY29uIG5hbWU9XCJhcnJvd19kb3duX2FsdFwiPjwvcGVwLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvZHktc20gZWxsaXBzaXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0dFTkVSSUNfRklFTERTX0JVSUxERVIuRU1QVFlfRFJPUF9BUkVBX1RFWFQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPiBcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vdEVtcHR5VGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCJtYXBwZWRGaWVsZHNJZFwiIGNsYXNzPVwibWFwcGVkLWZpZWxkcy1hcmVhXCIgW25nQ2xhc3NdPVwieyAnbm8tcm93LWdhcCc6ICFpc0dyYWJiaW5nIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNka0Ryb3BMaXN0IFtjZGtEcm9wTGlzdERhdGFdPVwiZmllbGRzXCIgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyb3BGaWVsZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZmllbGRzOyBsZXQgaSA9IGluZGV4XCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGVwLWZpZWxkLWNvbnRhaW5lciBjZGtEcmFnIChjZGtEcmFnU3RhcnRlZCk9XCJvbkRyYWdTdGFydCgkZXZlbnQpXCIgKGNka0RyYWdFbmRlZCk9XCJvbkRyYWdFbmQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpZWxkVGVtcGxhdGUgfHwgZGVmYXVsdFRlbXBsYXRlOyBjb250ZXh0OiB7IGZpZWxkOiBmaWVsZCwgaW5kZXg6IGkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BlcC1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm1hcHBlZC1maWVsZC1jb250YWluZXJcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNka0RyYWcgKGNka0RyYWdTdGFydGVkKT1cIm9uRHJhZ1N0YXJ0KCRldmVudClcIiAoY2RrRHJhZ0VuZGVkKT1cIm9uRHJhZ0VuZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpZWxkVGVtcGxhdGUgfHwgZGVmYXVsdFRlbXBsYXRlOyBjb250ZXh0OiB7IGZpZWxkOiBmaWVsZCwgaW5kZXg6IGkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9wZXAtcGFnZS1sYXlvdXQ+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRlbXBsYXRlIGxldC1maWVsZD1cImZpZWxkXCIgbGV0LWluZGV4PVwiaW5kZXhcIj5cbiAgICB7eyAnR0VORVJJQ19GSUVMRFNfQlVJTERFUi5URU1QTEFURV9OT1RfU1VQUExJRUQnIHwgdHJhbnNsYXRlOiB7IGZpZWxkVGl0bGU6IGZpZWxkLnRpdGxlIHx8IGZpZWxkLmtleSB9IH19XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
371
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1maWVsZHMtYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9zaXRlLWxpYi9nZW5lcmljLWZpZWxkcy1idWlsZGVyL2dlbmVyaWMtZmllbGRzLWJ1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZ2VuZXJpYy1maWVsZHMtYnVpbGRlci9nZW5lcmljLWZpZWxkcy1idWlsZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBeUMsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBNEMsTUFBTSxlQUFlLENBQUM7QUFJekgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7OztBQWVsRCxNQUFNLE9BQU8sNkJBQTZCO0lBbUZ0QyxZQUNZLGdCQUFrQyxFQUNsQyx1QkFBbUQsRUFDbkQsMkJBQXdELEVBQ3hELFNBQXVCO1FBSHZCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUE0QjtRQUNuRCxnQ0FBMkIsR0FBM0IsMkJBQTJCLENBQTZCO1FBQ3hELGNBQVMsR0FBVCxTQUFTLENBQWM7UUF0Rm5DLCtCQUErQjtRQUN0QixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBR3BCLGlCQUFZLEdBQXdDLFNBQVMsQ0FBQztRQUU5RCxvQkFBZSxHQUEyQyxFQUFFLENBQUM7UUFDdEUsZ0NB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cnQsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCB0eXBlIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBJUGVwRHJhZ2dhYmxlSXRlbSB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2RyYWdnYWJsZS1pdGVtcyc7XG5pbXBvcnQgeyBHZW5lcmljRmllbGRzQnVpbGRlclNlcnZpY2UgfSBmcm9tICcuL2dlbmVyaWMtZmllbGRzLWJ1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQZXBHdWlkIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuaW1wb3J0IHsgUGVwQWRkb25CbG9ja0xvYWRlclNlcnZpY2UgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9yZW1vdGUtbG9hZGVyJztcblxuaW1wb3J0IHtcbiAgICBJUGVwR2VuZXJpY0ZpZWxkLFxuICAgIElQZXBHZW5lcmljRmllbGRBZGRlZEV2ZW50LFxuICAgIElQZXBHZW5lcmljRmllbGRSZW1vdmVkRXZlbnQsXG4gICAgUGVwR2VuZXJpY0ZpZWxkc0J1aWxkZXJUZW1wbGF0ZVR5cGVcbn0gZnJvbSAnLi9nZW5lcmljLWZpZWxkcy1idWlsZGVyLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtZ2VuZXJpYy1maWVsZHMtYnVpbGRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dlbmVyaWMtZmllbGRzLWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2dlbmVyaWMtZmllbGRzLWJ1aWxkZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBHZW5lcmljRmllbGRzQnVpbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLy8gQElucHV0KCkgdGl0bGU6IHN0cmluZyA9ICcnO1xuICAgIEBJbnB1dCgpIGJ1aWxkZXJUaXRsZSA9ICcnO1xuICAgIEBJbnB1dCgpIGJ1aWxkZXJUaXRsZUhpbnQgPSAnJztcbiAgICBASW5wdXQoKSBzaG93QWRkU2VwYXJhdG9yID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBpdGVtS2V5TGFiZWwgPSAnJztcbiAgICBASW5wdXQoKSBpdGVtVGl0bGVMYWJlbCA9ICcnO1xuICAgIEBJbnB1dCgpIHNldEFkZGVkRmllbGREYXRhQ2FsbGJhY2s6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDsvLyBGdW5jdGlvbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpIHRlbXBsYXRlVHlwZTogUGVwR2VuZXJpY0ZpZWxkc0J1aWxkZXJUZW1wbGF0ZVR5cGUgPSAnZ2VuZXJpYyc7XG5cbiAgICBASW5wdXQoKSBkaXNhYmxlSWZQYXJhbXM6IEFycmF5PHsgTmFtZTogc3RyaW5nOyBUeXBlPzogc3RyaW5nIH0+ID0gW107XG4gICAgdXNlZFNpbmdsZVVzZUxvZ2ljQmxvY2tSZWZzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIHByaXZhdGUgc2luZ2xlVXNlTG9naWNCbG9ja0tleXM6IFNldDxzdHJpbmc+ID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBwcml2YXRlIF9hdmFpbGFibGVGaWVsZHM6IEFycmF5PElQZXBEcmFnZ2FibGVJdGVtPiA9IFtdO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGF2YWlsYWJsZUZpZWxkcyh2YWx1ZTogQXJyYXk8SVBlcERyYWdnYWJsZUl0ZW0+KSB7XG4gICAgICAgIHRoaXMuX2F2YWlsYWJsZUZpZWxkcyA9IHZhbHVlO1xuXG4gICAgICAgIGNvbnN0IHRpdGxlcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgICAgICh2YWx1ZSA/PyBbXSkuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IGl0ZW0/LmRhdGEgYXMgeyBrZXk/OiBzdHJpbmc7IEZpZWxkSUQ/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkS2V5ID0gZGF0YT8ua2V5ID8/IGRhdGE/LkZpZWxkSUQ7XG4gICAgICAgICAgICBpZiAoZmllbGRLZXkpIHtcbiAgICAgICAgICAgICAgICB0aXRsZXMuc2V0KGZpZWxkS2V5LCBpdGVtLnRpdGxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2F2YWlsYWJsZUZpZWxkc1RpdGxlcyA9IHRpdGxlcztcblxuICAgICAgICB0aGlzLnNpbmdsZVVzZUxvZ2ljQmxvY2tLZXlzID0gbmV3IFNldChcbiAgICAgICAgICAgICh2YWx1ZSA/PyBbXSlcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gISEoaXRlbT8uZGF0YSBhcyBhbnkpPy5zaW5nbGVVc2UpXG4gICAgICAgICAgICAgICAgLm1hcChpdGVtID0+IHRoaXMuZ2V0TG9naWNCbG9ja1JlZktleUZyb21BdmFpbGFibGVGaWVsZChpdGVtKSlcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChrZXkpOiBrZXkgaXMgc3RyaW5nID0+ICEha2V5KVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMucmVjb21wdXRlVXNlZFNpbmdsZVVzZUxvZ2ljQmxvY2tSZWZzKCk7XG4gICAgfVxuXG4gICAgZ2V0IGF2YWlsYWJsZUZpZWxkc1RpdGxlcygpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F2YWlsYWJsZUZpZWxkc1RpdGxlcztcbiAgICB9XG4gICAgZ2V0IGF2YWlsYWJsZUZpZWxkcygpOiBBcnJheTxJUGVwRHJhZ2dhYmxlSXRlbT4ge1xuICAgICAgICBpZiAodGhpcy50ZW1wbGF0ZVR5cGUgIT09ICdmbG93JyB8fCB0aGlzLnVzZWRTaW5nbGVVc2VMb2dpY0Jsb2NrUmVmcy5zaXplID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYXZhaWxhYmxlRmllbGRzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2F2YWlsYWJsZUZpZWxkcy5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSB0aGlzLmdldExvZ2ljQmxvY2tSZWZLZXlGcm9tQXZhaWxhYmxlRmllbGQoaXRlbSk7XG4gICAgICAgICAgICByZXR1cm4gIWtleSB8fCAhdGhpcy51c2VkU2luZ2xlVXNlTG9naWNCbG9ja1JlZnMuaGFzKGtleSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBcbiAgICBASW5wdXQoKSBmaWVsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KCkgZmllbGRDb250ZW50Q2FsbGJhY2s6ICgoZmllbGQ6IElQZXBHZW5lcmljRmllbGQsIGluZGV4OiBudW1iZXIpID0+IHN0cmluZykgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgXG4gICAgcHJpdmF0ZSBfZmllbGRzOiBJUGVwR2VuZXJpY0ZpZWxkW10gPSBbXTtcbiAgICBASW5wdXQoKVxuICAgIHNldCBmaWVsZHModmFsdWU6IElQZXBHZW5lcmljRmllbGRbXSkge1xuICAgICAgICB0aGlzLl9maWVsZHMgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5yZWNvbXB1dGVVc2VkU2luZ2xlVXNlTG9naWNCbG9ja1JlZnMoKTtcbiAgICB9XG4gICAgZ2V0IGZpZWxkcygpIDogSVBlcEdlbmVyaWNGaWVsZFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkcztcbiAgICB9XG5cbiAgICBAT3V0cHV0KClcbiAgICBmaWVsZHNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJUGVwR2VuZXJpY0ZpZWxkW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwR2VuZXJpY0ZpZWxkW10+KCk7XG4gICAgXG4gICAgQE91dHB1dCgpXG4gICAgZmllbGRBZGQ6IEV2ZW50RW1pdHRlcjxJUGVwR2VuZXJpY0ZpZWxkQWRkZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBHZW5lcmljRmllbGRBZGRlZEV2ZW50PigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgZmllbGRSZW1vdmU6IEV2ZW50RW1pdHRlcjxJUGVwR2VuZXJpY0ZpZWxkUmVtb3ZlZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8SVBlcEdlbmVyaWNGaWVsZFJlbW92ZWRFdmVudD4oKTtcbiAgICBcbiAgICBlbXB0eURyb3BBcmVhSWQgPSAnZW1wdHlEcm9wQXJlYSc7XG4gICAgbWFwcGVkRmllbGRzSWQgPSAnbWFwcGVkRmllbGRzJztcbiAgICBpc0dyYWJiaW5nID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIF9hdmFpbGFibGVGaWVsZHNUaXRsZXM6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSBhZGRvbkJsb2NrTG9hZGVyU2VydmljZTogUGVwQWRkb25CbG9ja0xvYWRlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZ2VuZXJpY0ZpZWxkc0J1aWxkZXJTZXJ2aWNlOiBHZW5lcmljRmllbGRzQnVpbGRlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcbiAgICApIHtcbiAgICAgICAgdGhpcy5nZW5lcmljRmllbGRzQnVpbGRlclNlcnZpY2UuaXNHcmFiYmluZ0NoYW5nZSQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0dyYWJiaW5nID0gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldEZpZWxkQ29udGVudChmaWVsZDogSVBlcEdlbmVyaWNGaWVsZCwgaW5kZXg6IG51bWJlcik6IFNhZmVIdG1sIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGh0bWwgPSB0aGlzLmZpZWxkQ29udGVudENhbGxiYWNrPy4oZmllbGQsIGluZGV4KSA/PyAnJztcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChodG1sKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG5vdGlmeUZpZWxkc0NoYW5nZSgpIHtcbiAgICAgICAgdGhpcy5maWVsZHNDaGFuZ2UuZW1pdCh0aGlzLl9maWVsZHMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TG9naWNCbG9ja1JlZktleUZyb21BdmFpbGFibGVGaWVsZChpdGVtOiBJUGVwRHJhZ2dhYmxlSXRlbSk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBjb25zdCBkYXRhID0gaXRlbT8uZGF0YSBhcyBhbnk7XG4gICAgICAgIGNvbnN0IGFkZG9uVVVJRCA9IGRhdGE/LmFkZG9uVVVJRCA/PyBkYXRhPy5BZGRvblVVSUQ7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBkYXRhPy5yZWxhdGlvbk5hbWUgPz8gZGF0YT8uTmFtZSA/PyBpdGVtPy50aXRsZTtcblxuICAgICAgICBpZiAoIWFkZG9uVVVJRCB8fCAhbmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYCR7YWRkb25VVUlEfXwke25hbWV9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExvZ2ljQmxvY2tSZWZLZXlGcm9tTWFwcGVkRmllbGQoZmllbGQ6IElQZXBHZW5lcmljRmllbGQpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgY29uc3QgcmVsYXRpb24gPSAoZmllbGQgYXMgYW55KT8uUmVsYXRpb24gPz8gKGZpZWxkIGFzIGFueSk/LmRyYWdnYWJsZUl0ZW1EYXRhPy5SZWxhdGlvbjtcbiAgICAgICAgY29uc3QgYWRkb25VVUlEID0gcmVsYXRpb24/LkFkZG9uVVVJRDtcbiAgICAgICAgY29uc3QgbmFtZSA9IHJlbGF0aW9uPy5OYW1lO1xuXG4gICAgICAgIGlmICghYWRkb25VVUlEIHx8ICFuYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBgJHthZGRvblVVSUR9fCR7bmFtZX1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVjb21wdXRlVXNlZFNpbmdsZVVzZUxvZ2ljQmxvY2tSZWZzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVzZWRTaW5nbGVVc2VMb2dpY0Jsb2NrUmVmcy5jbGVhcigpO1xuXG4gICAgICAgIGlmICh0aGlzLnNpbmdsZVVzZUxvZ2ljQmxvY2tLZXlzLnNpemUgPT09IDAgfHwgdGhpcy5fZmllbGRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZWZLZXkgPSB0aGlzLmdldExvZ2ljQmxvY2tSZWZLZXlGcm9tTWFwcGVkRmllbGQoZmllbGQpO1xuICAgICAgICAgICAgaWYgKHJlZktleSAmJiB0aGlzLnNpbmdsZVVzZUxvZ2ljQmxvY2tLZXlzLmhhcyhyZWZLZXkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VkU2luZ2xlVXNlTG9naWNCbG9ja1JlZnMuYWRkKHJlZktleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uSW5uZXJGaWVsZHNDaGFuZ2UoZmllbGRzOiBJUGVwR2VuZXJpY0ZpZWxkW10pIHtcbiAgICAgICAgdGhpcy5fZmllbGRzID0gZmllbGRzO1xuICAgICAgICB0aGlzLm5vdGlmeUZpZWxkc0NoYW5nZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvbmVGaWVsZChmaWVsZDogSVBlcEdlbmVyaWNGaWVsZCk6IElQZXBHZW5lcmljRmllbGQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZmllbGQpKSBhcyBJUGVwR2VuZXJpY0ZpZWxkO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmZpZWxkIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRlbGV0ZUdlbmVyaWNGaWVsZChmaWVsZDogSVBlcEdlbmVyaWNGaWVsZCkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuX2ZpZWxkcy5maW5kSW5kZXgoZiA9PiBmID09PSBmaWVsZCk7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICBjb25zdCByZW1vdmVkRmllbGQgPSB0aGlzLl9maWVsZHNbaW5kZXhdO1xuICAgICAgICAgICAgdGhpcy5zcGxpY2VNYXBwZWRGaWVsZHMoaW5kZXgsIDEpO1xuICAgICAgICAgICAgdGhpcy5maWVsZFJlbW92ZS5lbWl0KHsgZmllbGQ6IHJlbW92ZWRGaWVsZCwgaW5kZXggfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkR1cGxpY2F0ZUdlbmVyaWNGaWVsZChmaWVsZDogSVBlcEdlbmVyaWNGaWVsZCkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuX2ZpZWxkcy5maW5kSW5kZXgoZiA9PiBmID09PSBmaWVsZCk7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICBjb25zdCBkcmFnZ2FibGVJdGVtS2V5ID0gKGZpZWxkPy5kcmFnZ2FibGVJdGVtRGF0YSBhcyBhbnkpPy5rZXkgPz8gUGVwR3VpZC5uZXdHdWlkKCk7XG4gICAgICAgICAgICBjb25zdCBuZXdGaWVsZCA9IHtcbiAgICAgICAgICAgICAgICAuLi5maWVsZCxcbiAgICAgICAgICAgICAgICBrZXk6IFBlcEd1aWQubmV3R3VpZCgpLFxuICAgICAgICAgICAgICAgIGRyYWdnYWJsZUl0ZW1EYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogZHJhZ2dhYmxlSXRlbUtleSxcbiAgICAgICAgICAgICAgICAgICAgLi4uKGZpZWxkLmRyYWdnYWJsZUl0ZW1EYXRhIHx8IHt9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBibG9ja05hbWUgPSAobmV3RmllbGQgYXMgYW55KT8uZHJhZ2dhYmxlSXRlbURhdGE/Lk5hbWU7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGJsb2NrTmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAobmV3RmllbGQgYXMgYW55KS5kcmFnZ2FibGVJdGVtRGF0YS5OYW1lID0gYCR7YmxvY2tOYW1lfV9jb3B5YDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IChuZXdGaWVsZCBhcyBhbnkpPy5OYW1lO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgKG5ld0ZpZWxkIGFzIGFueSkuTmFtZSA9IGAke25hbWV9X2NvcHlgO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbmV3SW5kZXggPSBpbmRleCArIDE7XG4gICAgICAgICAgICB0aGlzLnNwbGljZU1hcHBlZEZpZWxkcyhuZXdJbmRleCwgMCwgbmV3RmllbGQpO1xuICAgICAgICAgICAgdGhpcy5maWVsZEFkZC5lbWl0KHsgZmllbGQ6IG5ld0ZpZWxkLCBpbmRleDogbmV3SW5kZXggfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkVkaXRGbG93R2VuZXJpY0ZpZWxkKGZpZWxkOiBJUGVwR2VuZXJpY0ZpZWxkKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRlbXBsYXRlVHlwZSAhPT0gJ2Zsb3cnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBibG9jayA9IGZpZWxkPy5kcmFnZ2FibGVJdGVtRGF0YSBhcyBhbnk7XG4gICAgICAgIGNvbnN0IGFkZG9uVVVJRCA9IGJsb2NrPy5SZWxhdGlvbj8uQWRkb25VVUlEO1xuICAgICAgICBjb25zdCBuYW1lID0gYmxvY2s/LlJlbGF0aW9uPy5OYW1lO1xuICAgICAgICBpZiAoIWFkZG9uVVVJRCB8fCAhbmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vcGVuTG9naWNCbG9ja0NvbmZpZ3VyYXRpb25EaWFsb2coe1xuICAgICAgICAgICAgYWRkb25VVUlELFxuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb246IGJsb2NrPy5Db25maWd1cmF0aW9uID8/ICd7fScsXG4gICAgICAgICAgICBvblNldENvbmZpZ3VyYXRpb246IChjb25maWd1cmF0aW9uOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBibG9jay5Db25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjtcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmeUZpZWxkc0NoYW5nZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZE5ld0ZpZWxkKGRyYWdnYWJsZUl0ZW06IElQZXBEcmFnZ2FibGVJdGVtLCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIC8vIEFkZCBuZXcgbWVudUZpZWxkIHRvIHRoZSBtYXBwZWRGaWVsZHMuXG4gICAgICAgIGNvbnN0IGZpZWxkOiBJUGVwR2VuZXJpY0ZpZWxkID0geyBcbiAgICAgICAgICAgIGtleTogUGVwR3VpZC5uZXdHdWlkKCksIFxuICAgICAgICAgICAgZHJhZ2dhYmxlSXRlbURhdGE6IGRyYWdnYWJsZUl0ZW0uZGF0YSxcbiAgICAgICAgICAgIHRpdGxlOiBkcmFnZ2FibGVJdGVtLnRpdGxlIFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuc3BsaWNlTWFwcGVkRmllbGRzKGluZGV4LCAwLCBmaWVsZCk7XG4gICAgICAgIHRoaXMuZmllbGRBZGQuZW1pdCh7ZmllbGQsIGluZGV4fSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRFdmVudERhdGFGaWVsZHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICAodGhpcy5kaXNhYmxlSWZQYXJhbXMgPz8gW10pLmZvckVhY2goKHBhcmFtOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBwYXJhbT8uTmFtZTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbmFtZSA9PT0gJ3N0cmluZycgJiYgbmFtZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W25hbWVdID0ge1xuICAgICAgICAgICAgICAgICAgICBUeXBlOiBwYXJhbT8uVHlwZSA/PyAnU3RyaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiBwYXJhbT8uRGVmYXVsdFZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBPYmplY3RTdHJ1Y3R1cmU6IHBhcmFtPy5PYmplY3RTdHJ1Y3R1cmUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcGVuTG9naWNCbG9ja0NvbmZpZ3VyYXRpb25EaWFsb2cob3B0aW9uczoge1xuICAgICAgICBhZGRvblVVSUQ6IHN0cmluZztcbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICBjb25maWd1cmF0aW9uOiBzdHJpbmc7XG4gICAgICAgIG9uU2V0Q29uZmlndXJhdGlvbjogKGNvbmZpZ3VyYXRpb246IHN0cmluZykgPT4gdm9pZDtcbiAgICB9KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuYWRkb25CbG9ja0xvYWRlclNlcnZpY2UubG9hZEFkZG9uQmxvY2tJbkRpYWxvZyh7XG4gICAgICAgICAgICBjb250YWluZXI6IHRoaXMudmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgICAgICAgIGJsb2NrVHlwZTogJ0xvZ2ljQmxvY2snLFxuICAgICAgICAgICAgYWRkb25VVUlEOiBvcHRpb25zLmFkZG9uVVVJRCxcbiAgICAgICAgICAgIHNpemU6ICdyZWd1bGFyJyxcbiAgICAgICAgICAgIGhvc3RPYmplY3Q6IHtcbiAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uOiBvcHRpb25zLmNvbmZpZ3VyYXRpb24sXG4gICAgICAgICAgICAgICAgRXZlbnREYXRhOiB0aGlzLmdldEV2ZW50RGF0YUZpZWxkcygpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhvc3RFdmVudHNDYWxsYmFjazogKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFldmVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Nsb3NlLWRpYWxvZyc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpYWxvZ1JlZj8uY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NldC1jb25maWd1cmF0aW9uJzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlhbG9nUmVmPy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5vblNldENvbmZpZ3VyYXRpb24oZXZlbnQuY29uZmlndXJhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVGbG93TG9naWNCbG9ja0Zyb21EcmFnZ2FibGVJdGVtKGRyYWdnYWJsZUl0ZW06IElQZXBEcmFnZ2FibGVJdGVtKTogYW55IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IGRyYWdnYWJsZUl0ZW0/LmRhdGEgYXMgYW55O1xuXG4gICAgICAgIGNvbnN0IGRyYWdnYWJsZUl0ZW1LZXkgPSBkYXRhPy5rZXkgPz8gUGVwR3VpZC5uZXdHdWlkKCk7XG5cbiAgICAgICAgY29uc3QgYWRkb25VVUlEID0gZGF0YT8uYWRkb25VVUlEID8/IGRhdGE/LkFkZG9uVVVJRDtcbiAgICAgICAgY29uc3QgcmVsYXRpb25OYW1lID0gZGF0YT8ucmVsYXRpb25OYW1lID8/IGRhdGE/Lk5hbWUgPz8gZHJhZ2dhYmxlSXRlbT8udGl0bGU7XG4gICAgICAgIGNvbnN0IGV4ZWN1dGlvblVSTCA9IGRhdGE/LmJsb2NrRXhlY3V0aW9uUmVsYXRpdmVVUkwgPz8gZGF0YT8uRXhlY3V0aW9uVVJMO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBrZXk6IGRyYWdnYWJsZUl0ZW1LZXksXG4gICAgICAgICAgICBOYW1lOiBkcmFnZ2FibGVJdGVtLnRpdGxlLFxuICAgICAgICAgICAgRGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgRGlzYWJsZWRDb25kaXRpb25GaWx0ZXI6IG51bGwsXG4gICAgICAgICAgICBDb25maWd1cmF0aW9uOiAne30nLFxuICAgICAgICAgICAgVHlwZTogJ0xvZ2ljQmxvY2snLFxuICAgICAgICAgICAgUmVsYXRpb246IHtcbiAgICAgICAgICAgICAgICBBZGRvblVVSUQ6IGFkZG9uVVVJRCxcbiAgICAgICAgICAgICAgICBOYW1lOiByZWxhdGlvbk5hbWUsXG4gICAgICAgICAgICAgICAgRXhlY3V0aW9uVVJMOiBleGVjdXRpb25VUkwsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkTmV3Rmxvd0ZpZWxkV2l0aERpYWxvZyhkcmFnZ2FibGVJdGVtOiBJUGVwRHJhZ2dhYmxlSXRlbSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBibG9jayA9IHRoaXMuY3JlYXRlRmxvd0xvZ2ljQmxvY2tGcm9tRHJhZ2dhYmxlSXRlbShkcmFnZ2FibGVJdGVtKTtcbiAgICAgICAgY29uc3QgYWRkb25VVUlEID0gYmxvY2s/LlJlbGF0aW9uPy5BZGRvblVVSUQ7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBibG9jaz8uUmVsYXRpb24/Lk5hbWU7XG5cbiAgICAgICAgaWYgKCFhZGRvblVVSUQgfHwgIW5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpZWxkOiBJUGVwR2VuZXJpY0ZpZWxkID0ge1xuICAgICAgICAgICAga2V5OiBQZXBHdWlkLm5ld0d1aWQoKSxcbiAgICAgICAgICAgIHRpdGxlOiBkcmFnZ2FibGVJdGVtLnRpdGxlLFxuICAgICAgICAgICAgZHJhZ2dhYmxlSXRlbURhdGE6IGJsb2NrLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMub3BlbkxvZ2ljQmxvY2tDb25maWd1cmF0aW9uRGlhbG9nKHtcbiAgICAgICAgICAgIGFkZG9uVVVJRCxcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uOiBibG9jaz8uQ29uZmlndXJhdGlvbiA/PyAne30nLFxuICAgICAgICAgICAgb25TZXRDb25maWd1cmF0aW9uOiAoY29uZmlndXJhdGlvbjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgYmxvY2suQ29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247XG4gICAgICAgICAgICAgICAgdGhpcy5zcGxpY2VNYXBwZWRGaWVsZHMoaW5kZXgsIDAsIGZpZWxkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpZWxkQWRkLmVtaXQoeyBmaWVsZCwgaW5kZXggfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBcbiAgICBwcml2YXRlIHNwbGljZU1hcHBlZEZpZWxkcyhzdGFydDogbnVtYmVyLCBkZWxldGVDb3VudDogbnVtYmVyLCBmaWVsZD86IGFueSkge1xuICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZpZWxkcy5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50LCBmaWVsZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9maWVsZHMuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlY29tcHV0ZVVzZWRTaW5nbGVVc2VMb2dpY0Jsb2NrUmVmcygpO1xuICAgICAgICB0aGlzLm5vdGlmeUZpZWxkc0NoYW5nZSgpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICAvL1xuICAgIH1cblxuICAgIG9uRHJhZ1N0YXJ0KGV2ZW50OiBDZGtEcmFnU3RhcnQpIHtcbiAgICAgICAgdGhpcy5nZW5lcmljRmllbGRzQnVpbGRlclNlcnZpY2Uub25EcmFnU3RhcnQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uRHJhZ0VuZChldmVudDogQ2RrRHJhZ0VuZCkge1xuICAgICAgICB0aGlzLmdlbmVyaWNGaWVsZHNCdWlsZGVyU2VydmljZS5vbkRyYWdFbmQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uRHJvcEZpZWxkKGV2ZW50OiBDZGtEcmFnRHJvcDxhbnlbXT4pIHtcbiAgICAgICAgaWYgKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyID09PSBldmVudC5jb250YWluZXIpIHtcbiAgICAgICAgICAgIG1vdmVJdGVtSW5BcnJheShldmVudC5jb250YWluZXIuZGF0YSwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5RmllbGRzQ2hhbmdlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuY29udGFpbmVyLmlkID09PSAnZW1wdHlEcm9wQXJlYScpIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhW2V2ZW50LnByZXZpb3VzSW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmZpZWxkcy5sZW5ndGg7XG4gICAgICAgICAgICBpZiAodGhpcy50ZW1wbGF0ZVR5cGUgPT09ICdmbG93Jykge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkTmV3Rmxvd0ZpZWxkV2l0aERpYWxvZyhpdGVtLCBpbmRleCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkTmV3RmllbGQoaXRlbSwgaW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGFbZXZlbnQucHJldmlvdXNJbmRleF07XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IGV2ZW50LmN1cnJlbnRJbmRleDtcbiAgICAgICAgICAgIGlmICh0aGlzLnRlbXBsYXRlVHlwZSA9PT0gJ2Zsb3cnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGROZXdGbG93RmllbGRXaXRoRGlhbG9nKGl0ZW0sIGluZGV4KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGROZXdGaWVsZChpdGVtLCBpbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8cGVwLXBhZ2UtbGF5b3V0ID5cbiAgICA8bmctY29udGFpbmVyIHBlcC1tYWluLWFyZWE+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJhdmFpbGFibGVGaWVsZHNcIiBjbGFzcz1cIm1hcHBlZC1maWVsZHMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhaWxhYmxlLWZpZWxkcy1zaWRlLWFyZWFcIj5cbiAgICAgICAgICAgICAgICA8cGVwLWRyYWdnYWJsZS1pdGVtcyBbaXRlbXNdPVwiYXZhaWxhYmxlRmllbGRzXCIgW3RpdGxlXT1cIidHRU5FUklDX0ZJRUxEU19CVUlMREVSLkFWQUlMQUJMRV9GSUVMRFMnIHwgdHJhbnNsYXRlXCIgdGl0bGVUeXBlPVwid2l0aC1ib3R0b20tYm9yZGVyXCIgdGl0bGVTaXplVHlwZT1cIm1kXCJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVBsYWNlaG9sZGVyVHlwZT1cIndlYWtcIiBbc2hvd1NlYXJjaF09XCJ0cnVlXCIgW2Ryb3BBcmVhSWRzXT1cIlsnZW1wdHlEcm9wQXJlYScsICdtYXBwZWRGaWVsZHMnXVwiIChpdGVtRHJhZ1N0YXJ0ZWQpPVwib25EcmFnU3RhcnQoJGV2ZW50KVwiIChpdGVtRHJhZ0VuZGVkKT1cIm9uRHJhZ0VuZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPC9wZXAtZHJhZ2dhYmxlLWl0ZW1zPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHBlcC1tYWluLWFyZWEgY2xhc3M9XCJtYXBwZWQtZmllbGRzLW1haW4tYXJlYVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXBwZWQtZmllbGRzLXRvcC1hcmVhIHBlcC1ib3JkZXItYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImJ1aWxkZXJUaXRsZSArICcgJyArIChidWlsZGVyVGl0bGVIaW50ID8gKCcoJyArIGJ1aWxkZXJUaXRsZUhpbnQgKyAnKScpIDogJycpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGUtbWRcIj57eyBidWlsZGVyVGl0bGUgfX0mbmJzcDs8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYnVpbGRlclRpdGxlSGludFwiIGNsYXNzPVwiY29sb3ItZGltbWVkXCI+KHt7IGJ1aWxkZXJUaXRsZUhpbnQgfX0pPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZHMtYXJlYVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGRzID09PSBudWxsIHx8IGZpZWxkcy5sZW5ndGggPT09IDA7IHRoZW4gZW1wdHlUZW1wbGF0ZTsgZWxzZSBub3RFbXB0eVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZW1wdHlUZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cImVtcHR5RHJvcEFyZWFJZFwiIGNsYXNzPVwiZHJvcC1maWVsZC1oZXJlLWFyZWFcIiBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcEZpZWxkKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJwZXAtc3BhY2luZy1lbGVtZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwZXAtaWNvbiBuYW1lPVwiYXJyb3dfZG93bl9hbHRcIj48L3BlcC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJib2R5LXNtIGVsbGlwc2lzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdHRU5FUklDX0ZJRUxEU19CVUlMREVSLkVNUFRZX0RST1BfQVJFQV9URVhUJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4gXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3RFbXB0eVRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwibWFwcGVkRmllbGRzSWRcIiBjbGFzcz1cIm1hcHBlZC1maWVsZHMtYXJlYVwiIFtuZ0NsYXNzXT1cInsgJ25vLXJvdy1nYXAnOiAhaXNHcmFiYmluZyB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtEcm9wTGlzdCBbY2RrRHJvcExpc3REYXRhXT1cImZpZWxkc1wiIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wRmllbGQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZpZWxkczsgbGV0IGkgPSBpbmRleFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBlcC1maWVsZC1jb250YWluZXIgY2RrRHJhZyAoY2RrRHJhZ1N0YXJ0ZWQpPVwib25EcmFnU3RhcnQoJGV2ZW50KVwiIChjZGtEcmFnRW5kZWQpPVwib25EcmFnRW5kKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwZXAtZ2VuZXJpYy1maWVsZHMtZmxvdy1maWVsZCAqbmdJZj1cInRlbXBsYXRlVHlwZSA9PT0gJ2Zsb3cnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiJGFueShmaWVsZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlSWZQYXJhbXNdPVwiJGFueShkaXNhYmxlSWZQYXJhbXMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdXNlZFNpbmdsZVVzZUxvZ2ljQmxvY2tSZWZzXT1cInVzZWRTaW5nbGVVc2VMb2dpY0Jsb2NrUmVmc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZUJsb2NrQ2xpY2tlZCk9XCJvbkRlbGV0ZUdlbmVyaWNGaWVsZCgkYW55KCRldmVudCkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWRpdEJsb2NrQ2xpY2tlZCk9XCJvbkVkaXRGbG93R2VuZXJpY0ZpZWxkKCRhbnkoJGV2ZW50KSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkdXBsaWNhdGVCbG9ja0NsaWNrZWQpPVwib25EdXBsaWNhdGVHZW5lcmljRmllbGQoJGFueSgkZXZlbnQpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkQ2hhbmdlZCk9XCJvbklubmVyRmllbGRzQ2hhbmdlKGZpZWxkcylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGVwLWdlbmVyaWMtZmllbGRzLWZsb3ctZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGVtcGxhdGVUeXBlICE9PSAnZmxvdydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRUZW1wbGF0ZSB8fCBkZWZhdWx0VGVtcGxhdGU7IGNvbnRleHQ6IHsgZmllbGQ6IGZpZWxkLCBpbmRleDogaSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wZXAtZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L3BlcC1wYWdlLWxheW91dD5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0VGVtcGxhdGUgbGV0LWZpZWxkPVwiZmllbGRcIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZENvbnRlbnRDYWxsYmFjazsgZWxzZSBub1RlbXBsYXRlVGV4dFwiPlxuICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZ2V0RmllbGRDb250ZW50KGZpZWxkLCBpbmRleClcIj48L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI25vVGVtcGxhdGVUZXh0PlxuICAgICAgICB7eyAnR0VORVJJQ19GSUVMRFNfQlVJTERFUi5URU1QTEFURV9OT1RfU1VQUExJRUQnIHwgdHJhbnNsYXRlOiB7IGZpZWxkVGl0bGU6IGZpZWxkLnRpdGxlIHx8IGZpZWxkLmtleSB9IH19XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1maWVsZHMtYnVpbGRlci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21wb3NpdGUtbGliL2dlbmVyaWMtZmllbGRzLWJ1aWxkZXIvZ2VuZXJpYy1maWVsZHMtYnVpbGRlci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVBlcERyYWdnYWJsZUl0ZW1EYXRhIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvZHJhZ2dhYmxlLWl0ZW1zJztcblxuZXhwb3J0IHR5cGUgUGVwR2VuZXJpY0ZpZWxkc0J1aWxkZXJUZW1wbGF0ZVR5cGUgPSAnZ2VuZXJpYycgfCAnZmxvdyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlcEdlbmVyaWNGaWVsZCB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBkcmFnZ2FibGVJdGVtRGF0YT86IElQZXBEcmFnZ2FibGVJdGVtRGF0YTtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlcEdlbmVyaWNGaWVsZEFkZGVkRXZlbnQge1xuICAgIGZpZWxkOiBJUGVwR2VuZXJpY0ZpZWxkO1xuICAgIGluZGV4OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlcEdlbmVyaWNGaWVsZFJlbW92ZWRFdmVudCB7XG4gICAgZmllbGQ6IElQZXBHZW5lcmljRmllbGQ7XG4gICAgaW5kZXg6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUGVwR2VuZXJpY0ZpZWxkRWRpdEV2ZW50IHtcbiAgICBmaWVsZDogSVBlcEdlbmVyaWNGaWVsZDtcbiAgICBpbmRleDogbnVtYmVyO1xufVxuIl19
|