kwikid-forms 0.4.1 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/bundles/kwikid-forms.umd.js +1868 -3663
  2. package/bundles/kwikid-forms.umd.js.map +1 -1
  3. package/esm2015/lib/builder/builder-form-editor/builder-form-editor.component.js +403 -0
  4. package/esm2015/lib/builder/builder-form-editor/builder-form-editor.definitions.js +6 -0
  5. package/esm2015/lib/builder/builder-form-editor/builder-form-editor.helper.js +29 -0
  6. package/esm2015/lib/builder/builder-form-editor/builder-form-editor.module.js +39 -0
  7. package/esm2015/lib/builder/builder-form-editor/builder.form-editor.constants.js +189 -0
  8. package/esm2015/lib/builder/builder-form-editor/builder.form-editor.service.js +43 -0
  9. package/esm2015/lib/builder/builder-form-list/builder-forms-list.component.js +99 -0
  10. package/esm2015/lib/builder/builder-form-list/builder-forms-list.module.js +40 -0
  11. package/esm2015/lib/builder/builder.component.js +111 -258
  12. package/esm2015/lib/builder/builder.helper.js +78 -0
  13. package/esm2015/lib/builder/builder.module.js +15 -72
  14. package/esm2015/lib/kwikid-forms.module.js +4 -16
  15. package/esm2015/lib/renderer/config-converter/config-converter.constants.js +74 -0
  16. package/esm2015/lib/renderer/config-converter/config-converter.helper.js +49 -0
  17. package/esm2015/lib/renderer/config-converter/config-converter.js +514 -0
  18. package/esm2015/lib/renderer/form-view/definitions/form-view.fields.definition.js +2 -1
  19. package/esm2015/lib/renderer/form-view/form-view.component.js +4 -33
  20. package/esm2015/lib/renderer/form-view/form-view.module.js +7 -6
  21. package/esm2015/lib/renderer/forms-list/forms-list.component.js +3 -5
  22. package/esm2015/lib/renderer/forms-list/forms-list.module.js +7 -5
  23. package/esm2015/lib/renderer/renderer.component.js +4 -6
  24. package/esm2015/public_api.js +1 -3
  25. package/fesm2015/kwikid-forms.js +1452 -5045
  26. package/fesm2015/kwikid-forms.js.map +1 -1
  27. package/lib/builder/builder-form-editor/builder-form-editor.component.d.ts +108 -0
  28. package/lib/builder/builder-form-editor/builder-form-editor.definitions.d.ts +5 -0
  29. package/lib/builder/builder-form-editor/builder-form-editor.helper.d.ts +3 -0
  30. package/lib/builder/builder-form-editor/builder-form-editor.module.d.ts +11 -0
  31. package/lib/{builder2 → builder}/builder-form-editor/builder.form-editor.constants.d.ts +76 -0
  32. package/lib/builder/builder-form-editor/builder.form-editor.service.d.ts +7 -0
  33. package/lib/{builder2 → builder}/builder-form-list/builder-forms-list.component.d.ts +2 -1
  34. package/lib/{builder2 → builder}/builder-form-list/builder-forms-list.module.d.ts +1 -1
  35. package/lib/builder/builder.component.d.ts +15 -34
  36. package/lib/builder/builder.helper.d.ts +1 -0
  37. package/lib/builder/builder.module.d.ts +7 -21
  38. package/lib/kwikid-forms.module.d.ts +2 -3
  39. package/lib/renderer/config-converter/config-converter.constants.d.ts +73 -0
  40. package/lib/renderer/config-converter/config-converter.d.ts +5 -0
  41. package/lib/renderer/config-converter/config-converter.helper.d.ts +7 -0
  42. package/lib/renderer/form-view/definitions/form-view.fields.definition.d.ts +1 -0
  43. package/lib/renderer/form-view/form-view.component.d.ts +0 -4
  44. package/lib/renderer/form-view/form-view.module.d.ts +7 -9
  45. package/lib/renderer/forms-list/forms-list.module.d.ts +5 -6
  46. package/package.json +3 -3
  47. package/public_api.d.ts +0 -2
  48. package/esm2015/lib/builder/element-config-editor/editors/basic/checkbox-config.editor.component.js +0 -72
  49. package/esm2015/lib/builder/element-config-editor/editors/basic/date-config.editor.component.js +0 -72
  50. package/esm2015/lib/builder/element-config-editor/editors/basic/number-config.editor.component.js +0 -72
  51. package/esm2015/lib/builder/element-config-editor/editors/basic/otp-config.editor.component.js +0 -130
  52. package/esm2015/lib/builder/element-config-editor/editors/basic/phone-config.editor.component.js +0 -132
  53. package/esm2015/lib/builder/element-config-editor/editors/basic/radio-config.editor.component.js +0 -396
  54. package/esm2015/lib/builder/element-config-editor/editors/basic/select-config.editor.component.js +0 -302
  55. package/esm2015/lib/builder/element-config-editor/editors/basic/text-config.editor.component.js +0 -132
  56. package/esm2015/lib/builder/element-config-editor/editors/basic-element-config.editor.component.js +0 -698
  57. package/esm2015/lib/builder/element-config-editor/editors/document/aadhaar-number-config.editor.component.js +0 -130
  58. package/esm2015/lib/builder/element-config-editor/editors/document/pan-number-config.editor.component.js +0 -135
  59. package/esm2015/lib/builder/element-config-editor/editors/document-element-config.editor.component.js +0 -610
  60. package/esm2015/lib/builder/element-config-editor/editors/other/html-config.editor.component.js +0 -120
  61. package/esm2015/lib/builder/element-config-editor/editors/other/title-config.editor.component.js +0 -121
  62. package/esm2015/lib/builder/element-config-editor/editors/other-element-config.editor.component.js +0 -214
  63. package/esm2015/lib/builder/element-config-editor/element-config-editor.component.js +0 -97
  64. package/esm2015/lib/builder/shared/elements.js +0 -90
  65. package/esm2015/lib/builder/shared/helpers.js +0 -6
  66. package/esm2015/lib/builder2/builder-form-editor/builder-form-editor.component.js +0 -268
  67. package/esm2015/lib/builder2/builder-form-editor/builder-form-editor.module.js +0 -38
  68. package/esm2015/lib/builder2/builder-form-editor/builder-form-editor.pipe.js +0 -19
  69. package/esm2015/lib/builder2/builder-form-editor/builder.form-editor.constants.js +0 -178
  70. package/esm2015/lib/builder2/builder-form-list/builder-forms-list.component.js +0 -85
  71. package/esm2015/lib/builder2/builder-form-list/builder-forms-list.module.js +0 -37
  72. package/esm2015/lib/builder2/builder2.component.js +0 -169
  73. package/esm2015/lib/builder2/builder2.module.js +0 -46
  74. package/esm2015/lib/renderer/config-converter.helper.js +0 -629
  75. package/esm2015/lib/renderer/form-view/pipes/safe-html.pipe.js +0 -25
  76. package/esm2015/lib/renderer/form-view/pipes/safe-url.pipe.js +0 -25
  77. package/esm2015/lib/renderer/forms-list/pipes/safe-html.pipe.js +0 -25
  78. package/lib/builder/element-config-editor/editors/basic/checkbox-config.editor.component.d.ts +0 -16
  79. package/lib/builder/element-config-editor/editors/basic/date-config.editor.component.d.ts +0 -16
  80. package/lib/builder/element-config-editor/editors/basic/number-config.editor.component.d.ts +0 -16
  81. package/lib/builder/element-config-editor/editors/basic/otp-config.editor.component.d.ts +0 -16
  82. package/lib/builder/element-config-editor/editors/basic/phone-config.editor.component.d.ts +0 -16
  83. package/lib/builder/element-config-editor/editors/basic/radio-config.editor.component.d.ts +0 -25
  84. package/lib/builder/element-config-editor/editors/basic/select-config.editor.component.d.ts +0 -24
  85. package/lib/builder/element-config-editor/editors/basic/text-config.editor.component.d.ts +0 -16
  86. package/lib/builder/element-config-editor/editors/basic-element-config.editor.component.d.ts +0 -20
  87. package/lib/builder/element-config-editor/editors/document/aadhaar-number-config.editor.component.d.ts +0 -16
  88. package/lib/builder/element-config-editor/editors/document/pan-number-config.editor.component.d.ts +0 -16
  89. package/lib/builder/element-config-editor/editors/document-element-config.editor.component.d.ts +0 -20
  90. package/lib/builder/element-config-editor/editors/other/html-config.editor.component.d.ts +0 -16
  91. package/lib/builder/element-config-editor/editors/other/title-config.editor.component.d.ts +0 -16
  92. package/lib/builder/element-config-editor/editors/other-element-config.editor.component.d.ts +0 -20
  93. package/lib/builder/element-config-editor/element-config-editor.component.d.ts +0 -20
  94. package/lib/builder/shared/elements.d.ts +0 -34
  95. package/lib/builder/shared/helpers.d.ts +0 -1
  96. package/lib/builder2/builder-form-editor/builder-form-editor.component.d.ts +0 -48
  97. package/lib/builder2/builder-form-editor/builder-form-editor.module.d.ts +0 -12
  98. package/lib/builder2/builder-form-editor/builder-form-editor.pipe.d.ts +0 -7
  99. package/lib/builder2/builder2.component.d.ts +0 -37
  100. package/lib/builder2/builder2.module.d.ts +0 -13
  101. package/lib/renderer/config-converter.helper.d.ts +0 -9
  102. package/lib/renderer/form-view/pipes/safe-html.pipe.d.ts +0 -15
  103. package/lib/renderer/form-view/pipes/safe-url.pipe.d.ts +0 -15
  104. package/lib/renderer/forms-list/pipes/safe-html.pipe.d.ts +0 -15
@@ -1,610 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { Component, EventEmitter, Input, Output } from "@angular/core";
3
- import { FormControl, FormGroup } from "@angular/forms";
4
- import { logMethod } from "kwikid-toolkit";
5
- import _ from "lodash";
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "kwikui";
8
- import * as i2 from "./document/aadhaar-number-config.editor.component";
9
- import * as i3 from "./document/pan-number-config.editor.component";
10
- import * as i4 from "@angular/common";
11
- import * as i5 from "@angular/forms";
12
- export class DocumentElementConfigEditor {
13
- constructor() {
14
- this.saveClickCounter = 0;
15
- this.elementConfig = {
16
- label: "",
17
- key: "",
18
- disabled: false,
19
- default: {
20
- value: true
21
- },
22
- validators: {
23
- min: null,
24
- max: null,
25
- minLength: null,
26
- maxLength: null,
27
- required: true
28
- },
29
- properties: {
30
- placeholder: "",
31
- readOnly: false
32
- }
33
- };
34
- this.updateElement = new EventEmitter();
35
- this.elementType = "";
36
- this.saveDocumentClickCounter = 0;
37
- this.documentFormGroup = undefined;
38
- }
39
- ngOnInit() {
40
- this.assignVariables();
41
- this.createDocumentFormGroup();
42
- }
43
- ngOnChanges(changes) {
44
- var _a;
45
- const verifyChange = (key) => {
46
- return changes.hasOwnProperty(key) && !changes[key].firstChange;
47
- };
48
- if (verifyChange("elementConfig")) {
49
- this.elementConfig = changes.elementConfig.currentValue;
50
- this.assignVariables();
51
- (_a = this.documentFormGroup) === null || _a === void 0 ? void 0 : _a.reset(this.elementConfig);
52
- }
53
- if (verifyChange("saveClickCounter")) {
54
- if (changes.saveClickCounter.previousValue !==
55
- changes.saveClickCounter.currentValue) {
56
- this.saveClickCounter = changes.saveClickCounter.currentValue;
57
- this.handleOnSave();
58
- }
59
- }
60
- }
61
- assignVariables() {
62
- this.elementType = this.elementConfig.elementType;
63
- }
64
- createDocumentFormGroup() {
65
- this.documentFormGroup = new FormGroup({
66
- label: new FormControl(this.elementConfig.label),
67
- key: new FormControl(this.elementConfig.key),
68
- disabled: new FormControl(this.elementConfig.disabled),
69
- default: new FormGroup({
70
- value: new FormControl(this.elementConfig.default.value, {
71
- updateOn: "change"
72
- })
73
- }),
74
- validators: new FormGroup({
75
- min: new FormControl(this.elementConfig.validators.min, {
76
- updateOn: "change"
77
- }),
78
- minLength: new FormControl(this.elementConfig.validators.minLength, {
79
- updateOn: "change"
80
- }),
81
- max: new FormControl(this.elementConfig.validators.max, {
82
- updateOn: "change"
83
- }),
84
- maxLength: new FormControl(this.elementConfig.validators.maxLength, {
85
- updateOn: "change"
86
- }),
87
- required: new FormControl(this.elementConfig.validators.required, {
88
- updateOn: "change"
89
- })
90
- }),
91
- properties: new FormGroup({
92
- placeholder: new FormControl(this.elementConfig.properties.placeholder, {
93
- updateOn: "change"
94
- }),
95
- readOnly: new FormControl(this.elementConfig.properties.readOnly, {
96
- updateOn: "change"
97
- })
98
- })
99
- });
100
- this.documentFormGroup.updateValueAndValidity();
101
- }
102
- handleOnSaveUpdateElement(event) {
103
- // Get Common Config
104
- let documentElementCommonConfig = this.documentFormGroup.getRawValue();
105
- documentElementCommonConfig.key = documentElementCommonConfig.key.replace(/\s/g, "_");
106
- // Get Document Element Config
107
- const documentElementConfig = event.documentElementConfig;
108
- this.elementConfig = _.merge(this.elementConfig, documentElementCommonConfig, documentElementConfig);
109
- this.updateElement.emit({ elementConfig: this.elementConfig });
110
- }
111
- handleOnSave() {
112
- this.saveDocumentClickCounter++;
113
- }
114
- }
115
- /** @nocollapse */ DocumentElementConfigEditor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DocumentElementConfigEditor, deps: [], target: i0.ɵɵFactoryTarget.Component });
116
- /** @nocollapse */ DocumentElementConfigEditor.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DocumentElementConfigEditor, selector: "document-element-config-editor", inputs: { saveClickCounter: "saveClickCounter", elementConfig: "elementConfig" }, outputs: { updateElement: "updateElement" }, usesOnChanges: true, ngImport: i0, template: `
117
- <ng-container *ngIf="elementConfig !== undefined">
118
- <kwikui-table
119
- style="width: 100%; height: 100%; overflow: auto; box-shadow: 0px 0px 10px -6px #000; border: 0px solid gray; border-radius: 1rem;"
120
- [columns]="['id', 'type', 'category']"
121
- [headers]="{ id: 'ID', type: 'Type', category: 'Category' }"
122
- [data]="[
123
- {
124
- id: elementConfig.elementId,
125
- type: elementConfig.elementType,
126
- category: elementConfig.elementCategory
127
- }
128
- ]"
129
- (onClick)="(undefined)"
130
- ></kwikui-table>
131
- </ng-container>
132
- <form [formGroup]="documentFormGroup">
133
- <fieldset>
134
- <legend class="form-group-title">Standard</legend>
135
- <div class="form-group">
136
- <kwikui-input
137
- [label]="'Label'"
138
- [id]="'document-field-label'"
139
- [type]="'text'"
140
- [formControlName]="'label'"
141
- [formControl]="documentFormGroup.controls['label']"
142
- [disabled]="false"
143
- [placeholder]="'Please enter your Label'"
144
- [focus]="false"
145
- [invalid]="false"
146
- [case]="'default'"
147
- size="m"
148
- ></kwikui-input>
149
- </div>
150
- <div class="form-group">
151
- <kwikui-input
152
- [label]="'Key'"
153
- [id]="'document-field-key'"
154
- [type]="'text'"
155
- [formControlName]="'key'"
156
- [formControl]="documentFormGroup.controls['key']"
157
- [disabled]="false"
158
- [placeholder]="'Please enter your Key'"
159
- [focus]="false"
160
- [invalid]="false"
161
- [case]="'default'"
162
- size="m"
163
- ></kwikui-input>
164
- </div>
165
- <div class="form-group">
166
- <kwikui-input-select
167
- [options]="[true, false]"
168
- [label]="'Disabled'"
169
- [id]="'document-input-property-disabled'"
170
- size="m"
171
- [formControlName]="'disabled'"
172
- [formControl]="documentFormGroup.controls['disabled']"
173
- [focus]="false"
174
- [disabled]="false"
175
- [invalid]="false"
176
- [placeholder]="'Please select either true or false'"
177
- ></kwikui-input-select>
178
- </div>
179
- </fieldset>
180
-
181
- <div formGroupName="default">
182
- <fieldset>
183
- <legend class="form-group-title">Default</legend>
184
- <div class="form-group">
185
- <kwikui-input-select
186
- size="m"
187
- [options]="[true, false]"
188
- [label]="'value'"
189
- [id]="'document-input-property-value'"
190
- [formControlName]="'value'"
191
- [formControl]="
192
- documentFormGroup['controls'].default['controls'].value
193
- "
194
- [focus]="false"
195
- [disabled]="false"
196
- [invalid]="false"
197
- [placeholder]="'Please select either true or false'"
198
- ></kwikui-input-select>
199
- </div>
200
- </fieldset>
201
- </div>
202
-
203
- <div formGroupName="validators">
204
- <fieldset>
205
- <legend class="form-group-title">Validators</legend>
206
- <div class="form-group">
207
- <kwikui-input-number
208
- [label]="'min'"
209
- [id]="'document-input-validators-min'"
210
- [formControlName]="'min'"
211
- [formControl]="
212
- documentFormGroup['controls'].validators['controls'].min
213
- "
214
- [disabled]="false"
215
- [placeholder]="'Please enter your minimum value'"
216
- [focus]="false"
217
- [invalid]="false"
218
- size="m"
219
- ></kwikui-input-number>
220
- </div>
221
- <div class="form-group">
222
- <kwikui-input-number
223
- [label]="'max'"
224
- [id]="'document-input-validators-max'"
225
- [formControlName]="'max'"
226
- [formControl]="
227
- documentFormGroup['controls'].validators['controls'].max
228
- "
229
- [disabled]="false"
230
- [placeholder]="'Please enter your maximum value'"
231
- [focus]="false"
232
- [invalid]="false"
233
- size="m"
234
- ></kwikui-input-number>
235
- </div>
236
- <div class="form-group">
237
- <kwikui-input-number
238
- [label]="'minLength'"
239
- [id]="'document-input-validators-minLength'"
240
- [formControlName]="'minLength'"
241
- [formControl]="
242
- documentFormGroup['controls'].validators['controls'].minLength
243
- "
244
- [disabled]="false"
245
- [placeholder]="'Please enter your minimum length value'"
246
- [focus]="false"
247
- [invalid]="false"
248
- size="m"
249
- ></kwikui-input-number>
250
- </div>
251
- <div class="form-group">
252
- <kwikui-input-number
253
- [label]="'maxLength'"
254
- [id]="'document-input-validators-maxLength'"
255
- [formControlName]="'maxLength'"
256
- [formControl]="
257
- documentFormGroup['controls'].validators['controls'].maxLength
258
- "
259
- [disabled]="false"
260
- [placeholder]="'Please enter your maximum length value'"
261
- [focus]="false"
262
- [invalid]="false"
263
- size="m"
264
- ></kwikui-input-number>
265
- </div>
266
- <div class="form-group">
267
- <kwikui-input-select
268
- size="m"
269
- [options]="[true, false]"
270
- [label]="'required'"
271
- [id]="'document-input-property-required'"
272
- [formControlName]="'required'"
273
- [formControl]="
274
- documentFormGroup['controls'].validators['controls'].required
275
- "
276
- [focus]="false"
277
- [disabled]="false"
278
- [invalid]="false"
279
- [placeholder]="'Please select either true or false'"
280
- ></kwikui-input-select>
281
- </div>
282
- </fieldset>
283
- </div>
284
-
285
- <div formGroupName="properties">
286
- <fieldset>
287
- <legend class="form-group-title">Properties</legend>
288
- <div class="form-group">
289
- <kwikui-input
290
- [label]="'Placeholder'"
291
- [id]="'document-field-placeholder'"
292
- [type]="'text'"
293
- [formControlName]="'placeholder'"
294
- [formControl]="
295
- documentFormGroup.controls.properties['controls'].placeholder
296
- "
297
- [disabled]="false"
298
- [placeholder]="'Please enter your placeholder'"
299
- [focus]="false"
300
- [invalid]="false"
301
- [case]="'default'"
302
- size="m"
303
- ></kwikui-input>
304
- </div>
305
- <div class="form-group">
306
- <kwikui-input-select
307
- [options]="[true, false]"
308
- [label]="'readOnly'"
309
- [id]="'document-input-property-readOnly'"
310
- [formControlName]="'readOnly'"
311
- [formControl]="
312
- documentFormGroup['controls'].properties['controls'].readOnly
313
- "
314
- size="m"
315
- [focus]="false"
316
- [disabled]="false"
317
- [invalid]="false"
318
- [placeholder]="'Please select either true or false'"
319
- ></kwikui-input-select>
320
- </div>
321
- </fieldset>
322
- </div>
323
-
324
- <ng-container [ngSwitch]="elementType">
325
- <ng-container *ngSwitchCase="'aadhaar-number'">
326
- <document-aadhaar-number-config-editor
327
- [saveDocumentClickCounter]="saveDocumentClickCounter"
328
- [elementConfig]="elementConfig"
329
- (updateElement)="handleOnSaveUpdateElement($event)"
330
- ></document-aadhaar-number-config-editor>
331
- </ng-container>
332
- <ng-container *ngSwitchCase="'pan-number'">
333
- <document-pan-number-config-editor
334
- [saveDocumentClickCounter]="saveDocumentClickCounter"
335
- [elementConfig]="elementConfig"
336
- (updateElement)="handleOnSaveUpdateElement($event)"
337
- ></document-pan-number-config-editor>
338
- </ng-container>
339
- </ng-container>
340
- </form>
341
- `, isInline: true, styles: ["\n :host {\n display: flex;\n flex-direction: column;\n align-content: center;\n justify-content: flex-start;\n align-items: stretch;\n gap: 1rem;\n }\n "], components: [{ type: i1.KwikUITableComponent, selector: "kwikui-table", inputs: ["id", "columns", "headers", "data"], outputs: ["onClick"] }, { type: i1.KwikUIInputComponent, selector: "kwikui-input", inputs: ["label", "id", "type", "formControlName", "formControl", "placeholder", "focus", "invalid", "disabled", "validators", "case", "size", "icon", "properties"], outputs: ["getKeyValue"] }, { type: i1.KwikUIInputSelectComponent, selector: "kwikui-input-select", inputs: ["label", "id", "formControlName", "formControl", "placeholder", "focus", "invalid", "disabled", "options", "size", "validators", "properties"], outputs: ["getKeyValue"] }, { type: i1.KwikUIInputNumberComponent, selector: "kwikui-input-number", inputs: ["label", "id", "formControlName", "formControl", "placeholder", "focus", "invalid", "disabled", "min", "max", "prefix", "postfix", "precision", "decimal", "size", "validators", "properties"], outputs: ["getKeyValue"] }, { type: i2.DocumentAadhaarNumberConfigEditor, selector: "document-aadhaar-number-config-editor", inputs: ["saveDocumentClickCounter", "elementConfig"], outputs: ["updateElement"] }, { type: i3.DocumentPanNumberConfigEditor, selector: "document-pan-number-config-editor", inputs: ["saveDocumentClickCounter", "elementConfig"], outputs: ["updateElement"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i5.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i5.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }] });
342
- __decorate([
343
- logMethod
344
- ], DocumentElementConfigEditor.prototype, "ngOnInit", null);
345
- __decorate([
346
- logMethod
347
- ], DocumentElementConfigEditor.prototype, "ngOnChanges", null);
348
- __decorate([
349
- logMethod
350
- ], DocumentElementConfigEditor.prototype, "assignVariables", null);
351
- __decorate([
352
- logMethod
353
- ], DocumentElementConfigEditor.prototype, "createDocumentFormGroup", null);
354
- __decorate([
355
- logMethod
356
- ], DocumentElementConfigEditor.prototype, "handleOnSaveUpdateElement", null);
357
- __decorate([
358
- logMethod
359
- ], DocumentElementConfigEditor.prototype, "handleOnSave", null);
360
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DocumentElementConfigEditor, decorators: [{
361
- type: Component,
362
- args: [{
363
- selector: "document-element-config-editor",
364
- template: `
365
- <ng-container *ngIf="elementConfig !== undefined">
366
- <kwikui-table
367
- style="width: 100%; height: 100%; overflow: auto; box-shadow: 0px 0px 10px -6px #000; border: 0px solid gray; border-radius: 1rem;"
368
- [columns]="['id', 'type', 'category']"
369
- [headers]="{ id: 'ID', type: 'Type', category: 'Category' }"
370
- [data]="[
371
- {
372
- id: elementConfig.elementId,
373
- type: elementConfig.elementType,
374
- category: elementConfig.elementCategory
375
- }
376
- ]"
377
- (onClick)="(undefined)"
378
- ></kwikui-table>
379
- </ng-container>
380
- <form [formGroup]="documentFormGroup">
381
- <fieldset>
382
- <legend class="form-group-title">Standard</legend>
383
- <div class="form-group">
384
- <kwikui-input
385
- [label]="'Label'"
386
- [id]="'document-field-label'"
387
- [type]="'text'"
388
- [formControlName]="'label'"
389
- [formControl]="documentFormGroup.controls['label']"
390
- [disabled]="false"
391
- [placeholder]="'Please enter your Label'"
392
- [focus]="false"
393
- [invalid]="false"
394
- [case]="'default'"
395
- size="m"
396
- ></kwikui-input>
397
- </div>
398
- <div class="form-group">
399
- <kwikui-input
400
- [label]="'Key'"
401
- [id]="'document-field-key'"
402
- [type]="'text'"
403
- [formControlName]="'key'"
404
- [formControl]="documentFormGroup.controls['key']"
405
- [disabled]="false"
406
- [placeholder]="'Please enter your Key'"
407
- [focus]="false"
408
- [invalid]="false"
409
- [case]="'default'"
410
- size="m"
411
- ></kwikui-input>
412
- </div>
413
- <div class="form-group">
414
- <kwikui-input-select
415
- [options]="[true, false]"
416
- [label]="'Disabled'"
417
- [id]="'document-input-property-disabled'"
418
- size="m"
419
- [formControlName]="'disabled'"
420
- [formControl]="documentFormGroup.controls['disabled']"
421
- [focus]="false"
422
- [disabled]="false"
423
- [invalid]="false"
424
- [placeholder]="'Please select either true or false'"
425
- ></kwikui-input-select>
426
- </div>
427
- </fieldset>
428
-
429
- <div formGroupName="default">
430
- <fieldset>
431
- <legend class="form-group-title">Default</legend>
432
- <div class="form-group">
433
- <kwikui-input-select
434
- size="m"
435
- [options]="[true, false]"
436
- [label]="'value'"
437
- [id]="'document-input-property-value'"
438
- [formControlName]="'value'"
439
- [formControl]="
440
- documentFormGroup['controls'].default['controls'].value
441
- "
442
- [focus]="false"
443
- [disabled]="false"
444
- [invalid]="false"
445
- [placeholder]="'Please select either true or false'"
446
- ></kwikui-input-select>
447
- </div>
448
- </fieldset>
449
- </div>
450
-
451
- <div formGroupName="validators">
452
- <fieldset>
453
- <legend class="form-group-title">Validators</legend>
454
- <div class="form-group">
455
- <kwikui-input-number
456
- [label]="'min'"
457
- [id]="'document-input-validators-min'"
458
- [formControlName]="'min'"
459
- [formControl]="
460
- documentFormGroup['controls'].validators['controls'].min
461
- "
462
- [disabled]="false"
463
- [placeholder]="'Please enter your minimum value'"
464
- [focus]="false"
465
- [invalid]="false"
466
- size="m"
467
- ></kwikui-input-number>
468
- </div>
469
- <div class="form-group">
470
- <kwikui-input-number
471
- [label]="'max'"
472
- [id]="'document-input-validators-max'"
473
- [formControlName]="'max'"
474
- [formControl]="
475
- documentFormGroup['controls'].validators['controls'].max
476
- "
477
- [disabled]="false"
478
- [placeholder]="'Please enter your maximum value'"
479
- [focus]="false"
480
- [invalid]="false"
481
- size="m"
482
- ></kwikui-input-number>
483
- </div>
484
- <div class="form-group">
485
- <kwikui-input-number
486
- [label]="'minLength'"
487
- [id]="'document-input-validators-minLength'"
488
- [formControlName]="'minLength'"
489
- [formControl]="
490
- documentFormGroup['controls'].validators['controls'].minLength
491
- "
492
- [disabled]="false"
493
- [placeholder]="'Please enter your minimum length value'"
494
- [focus]="false"
495
- [invalid]="false"
496
- size="m"
497
- ></kwikui-input-number>
498
- </div>
499
- <div class="form-group">
500
- <kwikui-input-number
501
- [label]="'maxLength'"
502
- [id]="'document-input-validators-maxLength'"
503
- [formControlName]="'maxLength'"
504
- [formControl]="
505
- documentFormGroup['controls'].validators['controls'].maxLength
506
- "
507
- [disabled]="false"
508
- [placeholder]="'Please enter your maximum length value'"
509
- [focus]="false"
510
- [invalid]="false"
511
- size="m"
512
- ></kwikui-input-number>
513
- </div>
514
- <div class="form-group">
515
- <kwikui-input-select
516
- size="m"
517
- [options]="[true, false]"
518
- [label]="'required'"
519
- [id]="'document-input-property-required'"
520
- [formControlName]="'required'"
521
- [formControl]="
522
- documentFormGroup['controls'].validators['controls'].required
523
- "
524
- [focus]="false"
525
- [disabled]="false"
526
- [invalid]="false"
527
- [placeholder]="'Please select either true or false'"
528
- ></kwikui-input-select>
529
- </div>
530
- </fieldset>
531
- </div>
532
-
533
- <div formGroupName="properties">
534
- <fieldset>
535
- <legend class="form-group-title">Properties</legend>
536
- <div class="form-group">
537
- <kwikui-input
538
- [label]="'Placeholder'"
539
- [id]="'document-field-placeholder'"
540
- [type]="'text'"
541
- [formControlName]="'placeholder'"
542
- [formControl]="
543
- documentFormGroup.controls.properties['controls'].placeholder
544
- "
545
- [disabled]="false"
546
- [placeholder]="'Please enter your placeholder'"
547
- [focus]="false"
548
- [invalid]="false"
549
- [case]="'default'"
550
- size="m"
551
- ></kwikui-input>
552
- </div>
553
- <div class="form-group">
554
- <kwikui-input-select
555
- [options]="[true, false]"
556
- [label]="'readOnly'"
557
- [id]="'document-input-property-readOnly'"
558
- [formControlName]="'readOnly'"
559
- [formControl]="
560
- documentFormGroup['controls'].properties['controls'].readOnly
561
- "
562
- size="m"
563
- [focus]="false"
564
- [disabled]="false"
565
- [invalid]="false"
566
- [placeholder]="'Please select either true or false'"
567
- ></kwikui-input-select>
568
- </div>
569
- </fieldset>
570
- </div>
571
-
572
- <ng-container [ngSwitch]="elementType">
573
- <ng-container *ngSwitchCase="'aadhaar-number'">
574
- <document-aadhaar-number-config-editor
575
- [saveDocumentClickCounter]="saveDocumentClickCounter"
576
- [elementConfig]="elementConfig"
577
- (updateElement)="handleOnSaveUpdateElement($event)"
578
- ></document-aadhaar-number-config-editor>
579
- </ng-container>
580
- <ng-container *ngSwitchCase="'pan-number'">
581
- <document-pan-number-config-editor
582
- [saveDocumentClickCounter]="saveDocumentClickCounter"
583
- [elementConfig]="elementConfig"
584
- (updateElement)="handleOnSaveUpdateElement($event)"
585
- ></document-pan-number-config-editor>
586
- </ng-container>
587
- </ng-container>
588
- </form>
589
- `,
590
- styles: [
591
- `
592
- :host {
593
- display: flex;
594
- flex-direction: column;
595
- align-content: center;
596
- justify-content: flex-start;
597
- align-items: stretch;
598
- gap: 1rem;
599
- }
600
- `
601
- ]
602
- }]
603
- }], ctorParameters: function () { return []; }, propDecorators: { saveClickCounter: [{
604
- type: Input
605
- }], elementConfig: [{
606
- type: Input
607
- }], updateElement: [{
608
- type: Output
609
- }], ngOnInit: [], ngOnChanges: [], assignVariables: [], createDocumentFormGroup: [], handleOnSaveUpdateElement: [], handleOnSave: [] } });
610
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtZWxlbWVudC1jb25maWcuZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL2J1aWxkZXIvZWxlbWVudC1jb25maWctZWRpdG9yL2VkaXRvcnMvZG9jdW1lbnQtZWxlbWVudC1jb25maWcuZWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7Ozs7Ozs7QUFtUHZCLE1BQU0sT0FBTywyQkFBMkI7SUFpQ3RDO1FBL0JBLHFCQUFnQixHQUFXLENBQUMsQ0FBQztRQUc3QixrQkFBYSxHQUFRO1lBQ25CLEtBQUssRUFBRSxFQUFFO1lBQ1QsR0FBRyxFQUFFLEVBQUU7WUFDUCxRQUFRLEVBQUUsS0FBSztZQUNmLE9BQU8sRUFBRTtnQkFDUCxLQUFLLEVBQUUsSUFBSTthQUNaO1lBQ0QsVUFBVSxFQUFFO2dCQUNWLEdBQUcsRUFBRSxJQUFJO2dCQUNULEdBQUcsRUFBRSxJQUFJO2dCQUNULFNBQVMsRUFBRSxJQUFJO2dCQUNmLFNBQVMsRUFBRSxJQUFJO2dCQUNmLFFBQVEsRUFBRSxJQUFJO2FBQ2Y7WUFDRCxVQUFVLEVBQUU7Z0JBQ1YsV0FBVyxFQUFFLEVBQUU7Z0JBQ2YsUUFBUSxFQUFFLEtBQUs7YUFDaEI7U0FDRixDQUFDO1FBR0Ysa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRXhDLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pC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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlPVDtBQWtERDtJQURDLFNBQVM7MkRBSVQ7QUFHRDtJQURDLFNBQVM7OERBc0JUO0FBR0Q7SUFEQyxTQUFTO2tFQUdUO0FBR0Q7SUFEQyxTQUFTOzBFQXlDVDtBQUdEO0lBREMsU0FBUzs0RUFtQlQ7QUFHRDtJQURDLFNBQVM7K0RBR1Q7NEZBeklVLDJCQUEyQjtrQkFqUHZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdDQUFnQztvQkFDMUMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpT1Q7b0JBQ0QsTUFBTSxFQUFFO3dCQUNOOzs7Ozs7Ozs7S0FTQztxQkFDRjtpQkFDRjswRUFHQyxnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBc0JOLGFBQWE7c0JBRFosTUFBTTtnQkFXUCxRQUFRLE1BTVIsV0FBVyxNQXdCWCxlQUFlLE1BS2YsdUJBQXVCLE1BMkN2Qix5QkFBeUIsTUFxQnpCLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBsb2dNZXRob2QgfSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCBfIGZyb20gXCJsb2Rhc2hcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImRvY3VtZW50LWVsZW1lbnQtY29uZmlnLWVkaXRvclwiLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbGVtZW50Q29uZmlnICE9PSB1bmRlZmluZWRcIj5cbiAgICAgIDxrd2lrdWktdGFibGVcbiAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBvdmVyZmxvdzogYXV0bzsgYm94LXNoYWRvdzogMHB4IDBweCAxMHB4IC02cHggIzAwMDsgYm9yZGVyOiAwcHggc29saWQgZ3JheTsgYm9yZGVyLXJhZGl1czogMXJlbTtcIlxuICAgICAgICBbY29sdW1uc109XCJbJ2lkJywgJ3R5cGUnLCAnY2F0ZWdvcnknXVwiXG4gICAgICAgIFtoZWFkZXJzXT1cInsgaWQ6ICdJRCcsIHR5cGU6ICdUeXBlJywgY2F0ZWdvcnk6ICdDYXRlZ29yeScgfVwiXG4gICAgICAgIFtkYXRhXT1cIltcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogZWxlbWVudENvbmZpZy5lbGVtZW50SWQsXG4gICAgICAgICAgICB0eXBlOiBlbGVtZW50Q29uZmlnLmVsZW1lbnRUeXBlLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IGVsZW1lbnRDb25maWcuZWxlbWVudENhdGVnb3J5XG4gICAgICAgICAgfVxuICAgICAgICBdXCJcbiAgICAgICAgKG9uQ2xpY2spPVwiKHVuZGVmaW5lZClcIlxuICAgICAgPjwva3dpa3VpLXRhYmxlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZG9jdW1lbnRGb3JtR3JvdXBcIj5cbiAgICAgIDxmaWVsZHNldD5cbiAgICAgICAgPGxlZ2VuZCBjbGFzcz1cImZvcm0tZ3JvdXAtdGl0bGVcIj5TdGFuZGFyZDwvbGVnZW5kPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxrd2lrdWktaW5wdXRcbiAgICAgICAgICAgIFtsYWJlbF09XCInTGFiZWwnXCJcbiAgICAgICAgICAgIFtpZF09XCInZG9jdW1lbnQtZmllbGQtbGFiZWwnXCJcbiAgICAgICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIidsYWJlbCdcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImRvY3VtZW50Rm9ybUdyb3VwLmNvbnRyb2xzWydsYWJlbCddXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1BsZWFzZSBlbnRlciB5b3VyIExhYmVsJ1wiXG4gICAgICAgICAgICBbZm9jdXNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2ludmFsaWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2Nhc2VdPVwiJ2RlZmF1bHQnXCJcbiAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICA+PC9rd2lrdWktaW5wdXQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxrd2lrdWktaW5wdXRcbiAgICAgICAgICAgIFtsYWJlbF09XCInS2V5J1wiXG4gICAgICAgICAgICBbaWRdPVwiJ2RvY3VtZW50LWZpZWxkLWtleSdcIlxuICAgICAgICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiJ2tleSdcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImRvY3VtZW50Rm9ybUdyb3VwLmNvbnRyb2xzWydrZXknXVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidQbGVhc2UgZW50ZXIgeW91ciBLZXknXCJcbiAgICAgICAgICAgIFtmb2N1c109XCJmYWxzZVwiXG4gICAgICAgICAgICBbaW52YWxpZF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbY2FzZV09XCInZGVmYXVsdCdcIlxuICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgID48L2t3aWt1aS1pbnB1dD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGt3aWt1aS1pbnB1dC1zZWxlY3RcbiAgICAgICAgICAgIFtvcHRpb25zXT1cIlt0cnVlLCBmYWxzZV1cIlxuICAgICAgICAgICAgW2xhYmVsXT1cIidEaXNhYmxlZCdcIlxuICAgICAgICAgICAgW2lkXT1cIidkb2N1bWVudC1pbnB1dC1wcm9wZXJ0eS1kaXNhYmxlZCdcIlxuICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCInZGlzYWJsZWQnXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJkb2N1bWVudEZvcm1Hcm91cC5jb250cm9sc1snZGlzYWJsZWQnXVwiXG4gICAgICAgICAgICBbZm9jdXNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtpbnZhbGlkXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInUGxlYXNlIHNlbGVjdCBlaXRoZXIgdHJ1ZSBvciBmYWxzZSdcIlxuICAgICAgICAgID48L2t3aWt1aS1pbnB1dC1zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9maWVsZHNldD5cblxuICAgICAgPGRpdiBmb3JtR3JvdXBOYW1lPVwiZGVmYXVsdFwiPlxuICAgICAgICA8ZmllbGRzZXQ+XG4gICAgICAgICAgPGxlZ2VuZCBjbGFzcz1cImZvcm0tZ3JvdXAtdGl0bGVcIj5EZWZhdWx0PC9sZWdlbmQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxrd2lrdWktaW5wdXQtc2VsZWN0XG4gICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgICAgW29wdGlvbnNdPVwiW3RydWUsIGZhbHNlXVwiXG4gICAgICAgICAgICAgIFtsYWJlbF09XCIndmFsdWUnXCJcbiAgICAgICAgICAgICAgW2lkXT1cIidkb2N1bWVudC1pbnB1dC1wcm9wZXJ0eS12YWx1ZSdcIlxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIid2YWx1ZSdcIlxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRGb3JtR3JvdXBbJ2NvbnRyb2xzJ10uZGVmYXVsdFsnY29udHJvbHMnXS52YWx1ZVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbZm9jdXNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbaW52YWxpZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInUGxlYXNlIHNlbGVjdCBlaXRoZXIgdHJ1ZSBvciBmYWxzZSdcIlxuICAgICAgICAgICAgPjwva3dpa3VpLWlucHV0LXNlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9maWVsZHNldD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGZvcm1Hcm91cE5hbWU9XCJ2YWxpZGF0b3JzXCI+XG4gICAgICAgIDxmaWVsZHNldD5cbiAgICAgICAgICA8bGVnZW5kIGNsYXNzPVwiZm9ybS1ncm91cC10aXRsZVwiPlZhbGlkYXRvcnM8L2xlZ2VuZD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGt3aWt1aS1pbnB1dC1udW1iZXJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cIidtaW4nXCJcbiAgICAgICAgICAgICAgW2lkXT1cIidkb2N1bWVudC1pbnB1dC12YWxpZGF0b3JzLW1pbidcIlxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIidtaW4nXCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIlxuICAgICAgICAgICAgICAgIGRvY3VtZW50Rm9ybUdyb3VwWydjb250cm9scyddLnZhbGlkYXRvcnNbJ2NvbnRyb2xzJ10ubWluXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInUGxlYXNlIGVudGVyIHlvdXIgbWluaW11bSB2YWx1ZSdcIlxuICAgICAgICAgICAgICBbZm9jdXNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbaW52YWxpZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgID48L2t3aWt1aS1pbnB1dC1udW1iZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxrd2lrdWktaW5wdXQtbnVtYmVyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCInbWF4J1wiXG4gICAgICAgICAgICAgIFtpZF09XCInZG9jdW1lbnQtaW5wdXQtdmFsaWRhdG9ycy1tYXgnXCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCInbWF4J1wiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJcbiAgICAgICAgICAgICAgICBkb2N1bWVudEZvcm1Hcm91cFsnY29udHJvbHMnXS52YWxpZGF0b3JzWydjb250cm9scyddLm1heFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1BsZWFzZSBlbnRlciB5b3VyIG1heGltdW0gdmFsdWUnXCJcbiAgICAgICAgICAgICAgW2ZvY3VzXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgW2ludmFsaWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICA+PC9rd2lrdWktaW5wdXQtbnVtYmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICA8a3dpa3VpLWlucHV0LW51bWJlclxuICAgICAgICAgICAgICBbbGFiZWxdPVwiJ21pbkxlbmd0aCdcIlxuICAgICAgICAgICAgICBbaWRdPVwiJ2RvY3VtZW50LWlucHV0LXZhbGlkYXRvcnMtbWluTGVuZ3RoJ1wiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiJ21pbkxlbmd0aCdcIlxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRGb3JtR3JvdXBbJ2NvbnRyb2xzJ10udmFsaWRhdG9yc1snY29udHJvbHMnXS5taW5MZW5ndGhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidQbGVhc2UgZW50ZXIgeW91ciBtaW5pbXVtIGxlbmd0aCB2YWx1ZSdcIlxuICAgICAgICAgICAgICBbZm9jdXNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbaW52YWxpZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgID48L2t3aWt1aS1pbnB1dC1udW1iZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxrd2lrdWktaW5wdXQtbnVtYmVyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCInbWF4TGVuZ3RoJ1wiXG4gICAgICAgICAgICAgIFtpZF09XCInZG9jdW1lbnQtaW5wdXQtdmFsaWRhdG9ycy1tYXhMZW5ndGgnXCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCInbWF4TGVuZ3RoJ1wiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJcbiAgICAgICAgICAgICAgICBkb2N1bWVudEZvcm1Hcm91cFsnY29udHJvbHMnXS52YWxpZGF0b3JzWydjb250cm9scyddLm1heExlbmd0aFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1BsZWFzZSBlbnRlciB5b3VyIG1heGltdW0gbGVuZ3RoIHZhbHVlJ1wiXG4gICAgICAgICAgICAgIFtmb2N1c109XCJmYWxzZVwiXG4gICAgICAgICAgICAgIFtpbnZhbGlkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgPjwva3dpa3VpLWlucHV0LW51bWJlcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGt3aWt1aS1pbnB1dC1zZWxlY3RcbiAgICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgICBbb3B0aW9uc109XCJbdHJ1ZSwgZmFsc2VdXCJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cIidyZXF1aXJlZCdcIlxuICAgICAgICAgICAgICBbaWRdPVwiJ2RvY3VtZW50LWlucHV0LXByb3BlcnR5LXJlcXVpcmVkJ1wiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiJ3JlcXVpcmVkJ1wiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJcbiAgICAgICAgICAgICAgICBkb2N1bWVudEZvcm1Hcm91cFsnY29udHJvbHMnXS52YWxpZGF0b3JzWydjb250cm9scyddLnJlcXVpcmVkXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtmb2N1c109XCJmYWxzZVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgIFtpbnZhbGlkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidQbGVhc2Ugc2VsZWN0IGVpdGhlciB0cnVlIG9yIGZhbHNlJ1wiXG4gICAgICAgICAgICA+PC9rd2lrdWktaW5wdXQtc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgZm9ybUdyb3VwTmFtZT1cInByb3BlcnRpZXNcIj5cbiAgICAgICAgPGZpZWxkc2V0PlxuICAgICAgICAgIDxsZWdlbmQgY2xhc3M9XCJmb3JtLWdyb3VwLXRpdGxlXCI+UHJvcGVydGllczwvbGVnZW5kPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICA8a3dpa3VpLWlucHV0XG4gICAgICAgICAgICAgIFtsYWJlbF09XCInUGxhY2Vob2xkZXInXCJcbiAgICAgICAgICAgICAgW2lkXT1cIidkb2N1bWVudC1maWVsZC1wbGFjZWhvbGRlcidcIlxuICAgICAgICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIidwbGFjZWhvbGRlcidcIlxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRGb3JtR3JvdXAuY29udHJvbHMucHJvcGVydGllc1snY29udHJvbHMnXS5wbGFjZWhvbGRlclxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1BsZWFzZSBlbnRlciB5b3VyIHBsYWNlaG9sZGVyJ1wiXG4gICAgICAgICAgICAgIFtmb2N1c109XCJmYWxzZVwiXG4gICAgICAgICAgICAgIFtpbnZhbGlkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgW2Nhc2VdPVwiJ2RlZmF1bHQnXCJcbiAgICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgPjwva3dpa3VpLWlucHV0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICA8a3dpa3VpLWlucHV0LXNlbGVjdFxuICAgICAgICAgICAgICBbb3B0aW9uc109XCJbdHJ1ZSwgZmFsc2VdXCJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cIidyZWFkT25seSdcIlxuICAgICAgICAgICAgICBbaWRdPVwiJ2RvY3VtZW50LWlucHV0LXByb3BlcnR5LXJlYWRPbmx5J1wiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiJ3JlYWRPbmx5J1wiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJcbiAgICAgICAgICAgICAgICBkb2N1bWVudEZvcm1Hcm91cFsnY29udHJvbHMnXS5wcm9wZXJ0aWVzWydjb250cm9scyddLnJlYWRPbmx5XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgICAgW2ZvY3VzXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgW2ludmFsaWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1BsZWFzZSBzZWxlY3QgZWl0aGVyIHRydWUgb3IgZmFsc2UnXCJcbiAgICAgICAgICAgID48L2t3aWt1aS1pbnB1dC1zZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZWxlbWVudFR5cGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2FhZGhhYXItbnVtYmVyJ1wiPlxuICAgICAgICAgIDxkb2N1bWVudC1hYWRoYWFyLW51bWJlci1jb25maWctZWRpdG9yXG4gICAgICAgICAgICBbc2F2ZURvY3VtZW50Q2xpY2tDb3VudGVyXT1cInNhdmVEb2N1bWVudENsaWNrQ291bnRlclwiXG4gICAgICAgICAgICBbZWxlbWVudENvbmZpZ109XCJlbGVtZW50Q29uZmlnXCJcbiAgICAgICAgICAgICh1cGRhdGVFbGVtZW50KT1cImhhbmRsZU9uU2F2ZVVwZGF0ZUVsZW1lbnQoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvZG9jdW1lbnQtYWFkaGFhci1udW1iZXItY29uZmlnLWVkaXRvcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidwYW4tbnVtYmVyJ1wiPlxuICAgICAgICAgIDxkb2N1bWVudC1wYW4tbnVtYmVyLWNvbmZpZy1lZGl0b3JcbiAgICAgICAgICAgIFtzYXZlRG9jdW1lbnRDbGlja0NvdW50ZXJdPVwic2F2ZURvY3VtZW50Q2xpY2tDb3VudGVyXCJcbiAgICAgICAgICAgIFtlbGVtZW50Q29uZmlnXT1cImVsZW1lbnRDb25maWdcIlxuICAgICAgICAgICAgKHVwZGF0ZUVsZW1lbnQpPVwiaGFuZGxlT25TYXZlVXBkYXRlRWxlbWVudCgkZXZlbnQpXCJcbiAgICAgICAgICA+PC9kb2N1bWVudC1wYW4tbnVtYmVyLWNvbmZpZy1lZGl0b3I+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9mb3JtPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgfVxuICAgIGBcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEb2N1bWVudEVsZW1lbnRDb25maWdFZGl0b3IgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKVxuICBzYXZlQ2xpY2tDb3VudGVyOiBudW1iZXIgPSAwO1xuXG4gIEBJbnB1dCgpXG4gIGVsZW1lbnRDb25maWc6IGFueSA9IHtcbiAgICBsYWJlbDogXCJcIixcbiAgICBrZXk6IFwiXCIsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSxcbiAgICB2YWxpZGF0b3JzOiB7XG4gICAgICBtaW46IG51bGwsXG4gICAgICBtYXg6IG51bGwsXG4gICAgICBtaW5MZW5ndGg6IG51bGwsXG4gICAgICBtYXhMZW5ndGg6IG51bGwsXG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH0sXG4gICAgcHJvcGVydGllczoge1xuICAgICAgcGxhY2Vob2xkZXI6IFwiXCIsXG4gICAgICByZWFkT25seTogZmFsc2VcbiAgICB9XG4gIH07XG5cbiAgQE91dHB1dCgpXG4gIHVwZGF0ZUVsZW1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBlbGVtZW50VHlwZTogc3RyaW5nID0gXCJcIjtcbiAgc2F2ZURvY3VtZW50Q2xpY2tDb3VudGVyOiBudW1iZXIgPSAwO1xuXG4gIGRvY3VtZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXAgPSB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIEBsb2dNZXRob2RcbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5hc3NpZ25WYXJpYWJsZXMoKTtcbiAgICB0aGlzLmNyZWF0ZURvY3VtZW50Rm9ybUdyb3VwKCk7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zdCB2ZXJpZnlDaGFuZ2UgPSAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBjaGFuZ2VzLmhhc093blByb3BlcnR5KGtleSkgJiYgIWNoYW5nZXNba2V5XS5maXJzdENoYW5nZTtcbiAgICB9O1xuXG4gICAgaWYgKHZlcmlmeUNoYW5nZShcImVsZW1lbnRDb25maWdcIikpIHtcbiAgICAgIHRoaXMuZWxlbWVudENvbmZpZyA9IGNoYW5nZXMuZWxlbWVudENvbmZpZy5jdXJyZW50VmFsdWU7XG4gICAgICB0aGlzLmFzc2lnblZhcmlhYmxlcygpO1xuICAgICAgdGhpcy5kb2N1bWVudEZvcm1Hcm91cD8ucmVzZXQodGhpcy5lbGVtZW50Q29uZmlnKTtcbiAgICB9XG5cbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwic2F2ZUNsaWNrQ291bnRlclwiKSkge1xuICAgICAgaWYgKFxuICAgICAgICBjaGFuZ2VzLnNhdmVDbGlja0NvdW50ZXIucHJldmlvdXNWYWx1ZSAhPT1cbiAgICAgICAgY2hhbmdlcy5zYXZlQ2xpY2tDb3VudGVyLmN1cnJlbnRWYWx1ZVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuc2F2ZUNsaWNrQ291bnRlciA9IGNoYW5nZXMuc2F2ZUNsaWNrQ291bnRlci5jdXJyZW50VmFsdWU7XG5cbiAgICAgICAgdGhpcy5oYW5kbGVPblNhdmUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGFzc2lnblZhcmlhYmxlcygpIHtcbiAgICB0aGlzLmVsZW1lbnRUeXBlID0gdGhpcy5lbGVtZW50Q29uZmlnLmVsZW1lbnRUeXBlO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBjcmVhdGVEb2N1bWVudEZvcm1Hcm91cCgpIHtcbiAgICB0aGlzLmRvY3VtZW50Rm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICBsYWJlbDogbmV3IEZvcm1Db250cm9sKHRoaXMuZWxlbWVudENvbmZpZy5sYWJlbCksXG4gICAgICBrZXk6IG5ldyBGb3JtQ29udHJvbCh0aGlzLmVsZW1lbnRDb25maWcua2V5KSxcbiAgICAgIGRpc2FibGVkOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5lbGVtZW50Q29uZmlnLmRpc2FibGVkKSxcbiAgICAgIGRlZmF1bHQ6IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICB2YWx1ZTogbmV3IEZvcm1Db250cm9sKHRoaXMuZWxlbWVudENvbmZpZy5kZWZhdWx0LnZhbHVlLCB7XG4gICAgICAgICAgdXBkYXRlT246IFwiY2hhbmdlXCJcbiAgICAgICAgfSlcbiAgICAgIH0pLFxuICAgICAgdmFsaWRhdG9yczogbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIG1pbjogbmV3IEZvcm1Db250cm9sKHRoaXMuZWxlbWVudENvbmZpZy52YWxpZGF0b3JzLm1pbiwge1xuICAgICAgICAgIHVwZGF0ZU9uOiBcImNoYW5nZVwiXG4gICAgICAgIH0pLFxuICAgICAgICBtaW5MZW5ndGg6IG5ldyBGb3JtQ29udHJvbCh0aGlzLmVsZW1lbnRDb25maWcudmFsaWRhdG9ycy5taW5MZW5ndGgsIHtcbiAgICAgICAgICB1cGRhdGVPbjogXCJjaGFuZ2VcIlxuICAgICAgICB9KSxcbiAgICAgICAgbWF4OiBuZXcgRm9ybUNvbnRyb2wodGhpcy5lbGVtZW50Q29uZmlnLnZhbGlkYXRvcnMubWF4LCB7XG4gICAgICAgICAgdXBkYXRlT246IFwiY2hhbmdlXCJcbiAgICAgICAgfSksXG4gICAgICAgIG1heExlbmd0aDogbmV3IEZvcm1Db250cm9sKHRoaXMuZWxlbWVudENvbmZpZy52YWxpZGF0b3JzLm1heExlbmd0aCwge1xuICAgICAgICAgIHVwZGF0ZU9uOiBcImNoYW5nZVwiXG4gICAgICAgIH0pLFxuICAgICAgICByZXF1aXJlZDogbmV3IEZvcm1Db250cm9sKHRoaXMuZWxlbWVudENvbmZpZy52YWxpZGF0b3JzLnJlcXVpcmVkLCB7XG4gICAgICAgICAgdXBkYXRlT246IFwiY2hhbmdlXCJcbiAgICAgICAgfSlcbiAgICAgIH0pLFxuICAgICAgcHJvcGVydGllczogbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIHBsYWNlaG9sZGVyOiBuZXcgRm9ybUNvbnRyb2woXG4gICAgICAgICAgdGhpcy5lbGVtZW50Q29uZmlnLnByb3BlcnRpZXMucGxhY2Vob2xkZXIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgdXBkYXRlT246IFwiY2hhbmdlXCJcbiAgICAgICAgICB9XG4gICAgICAgICksXG4gICAgICAgIHJlYWRPbmx5OiBuZXcgRm9ybUNvbnRyb2wodGhpcy5lbGVtZW50Q29uZmlnLnByb3BlcnRpZXMucmVhZE9ubHksIHtcbiAgICAgICAgICB1cGRhdGVPbjogXCJjaGFuZ2VcIlxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9KTtcbiAgICB0aGlzLmRvY3VtZW50Rm9ybUdyb3VwLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlT25TYXZlVXBkYXRlRWxlbWVudChldmVudDogYW55KSB7XG4gICAgLy8gR2V0IENvbW1vbiBDb25maWdcbiAgICBsZXQgZG9jdW1lbnRFbGVtZW50Q29tbW9uQ29uZmlnID0gdGhpcy5kb2N1bWVudEZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpO1xuICAgIGRvY3VtZW50RWxlbWVudENvbW1vbkNvbmZpZy5rZXkgPSBkb2N1bWVudEVsZW1lbnRDb21tb25Db25maWcua2V5LnJlcGxhY2UoXG4gICAgICAvXFxzL2csXG4gICAgICBcIl9cIlxuICAgICk7XG5cbiAgICAvLyBHZXQgRG9jdW1lbnQgRWxlbWVudCBDb25maWdcbiAgICBjb25zdCBkb2N1bWVudEVsZW1lbnRDb25maWcgPSBldmVudC5kb2N1bWVudEVsZW1lbnRDb25maWc7XG5cbiAgICB0aGlzLmVsZW1lbnRDb25maWcgPSBfLm1lcmdlKFxuICAgICAgdGhpcy5lbGVtZW50Q29uZmlnLFxuICAgICAgZG9jdW1lbnRFbGVtZW50Q29tbW9uQ29uZmlnLFxuICAgICAgZG9jdW1lbnRFbGVtZW50Q29uZmlnXG4gICAgKTtcblxuICAgIHRoaXMudXBkYXRlRWxlbWVudC5lbWl0KHsgZWxlbWVudENvbmZpZzogdGhpcy5lbGVtZW50Q29uZmlnIH0pO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBoYW5kbGVPblNhdmUoKSB7XG4gICAgdGhpcy5zYXZlRG9jdW1lbnRDbGlja0NvdW50ZXIrKztcbiAgfVxufVxuIl19