@wemake4u/form-player-se 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/directives/date.directive.mjs +93 -0
- package/esm2022/lib/directives/disable.directive.mjs +18 -4
- package/esm2022/lib/directives/dropdown.directive.mjs +8 -7
- package/esm2022/lib/directives/number.directive.mjs +108 -0
- package/esm2022/lib/directives/repeat.directive.mjs +6 -2
- package/esm2022/lib/directives/tab.directive.mjs +5 -1
- package/esm2022/lib/dynamic-fields/dynamic-fields.component.mjs +54 -19
- package/esm2022/lib/dynamic-form/dynamic-form.component.mjs +18 -30
- package/esm2022/lib/locale/locale-it.mjs +7 -2
- package/esm2022/lib/services/programmability.service.mjs +21 -25
- package/esm2022/lib/services/proxy.service.mjs +1 -1
- package/esm2022/lib/utils/gridCells.mjs +64 -9
- package/esm2022/lib/utils/gridUtils.mjs +75 -0
- package/fesm2022/wemake4u-form-player-se.mjs +464 -101
- package/fesm2022/wemake4u-form-player-se.mjs.map +1 -1
- package/lib/directives/date.directive.d.ts +8 -0
- package/lib/directives/disable.directive.d.ts +5 -2
- package/lib/directives/dropdown.directive.d.ts +1 -1
- package/lib/directives/number.directive.d.ts +16 -0
- package/lib/dynamic-fields/dynamic-fields.component.d.ts +6 -1
- package/lib/dynamic-form/dynamic-form.component.d.ts +5 -1
- package/lib/locale/locale-it.d.ts +5 -0
- package/lib/services/programmability.service.d.ts +7 -3
- package/lib/services/proxy.service.d.ts +1 -0
- package/lib/utils/gridCells.d.ts +51 -2
- package/lib/utils/gridUtils.d.ts +4 -0
- package/package.json +1 -1
|
@@ -205,17 +205,13 @@ export class DynamicFormComponent {
|
|
|
205
205
|
}
|
|
206
206
|
else if (component.key) {
|
|
207
207
|
let defaultValue = this.getDefaultValue(component);
|
|
208
|
-
const
|
|
208
|
+
const validators = this.getValidators(formGroup, component);
|
|
209
209
|
const options = {
|
|
210
|
-
validators:
|
|
210
|
+
validators: validators || [],
|
|
211
211
|
updateOn: this.getUpdateOn(component) || "change"
|
|
212
212
|
};
|
|
213
213
|
const control = formBuilder.control(defaultValue, options);
|
|
214
214
|
formGroup.addControl(component.key, control);
|
|
215
|
-
programmability?.watch(control);
|
|
216
|
-
if (component.type === 'number') {
|
|
217
|
-
this.useNumber(control);
|
|
218
|
-
}
|
|
219
215
|
}
|
|
220
216
|
}
|
|
221
217
|
});
|
|
@@ -226,22 +222,31 @@ export class DynamicFormComponent {
|
|
|
226
222
|
}
|
|
227
223
|
let currentGroup = formGroup;
|
|
228
224
|
this.splitPath(path).forEach((segment) => {
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
225
|
+
const existGroup = currentGroup.get(segment);
|
|
226
|
+
if (existGroup instanceof FormGroup) {
|
|
227
|
+
currentGroup = existGroup;
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
else if (existGroup) {
|
|
231
|
+
throw new Error(`Cannot create form group because an element with path ${segment} already exists`);
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
const segmentGroup = formBuilder.group({});
|
|
235
|
+
currentGroup.addControl(segment, segmentGroup);
|
|
236
|
+
currentGroup = segmentGroup;
|
|
237
|
+
}
|
|
232
238
|
});
|
|
233
239
|
return currentGroup;
|
|
234
240
|
}
|
|
235
241
|
getValidators(formGroup, component) {
|
|
236
242
|
const validators = [];
|
|
237
|
-
const noWatch = (control) => { };
|
|
238
243
|
if (component?.validate?.required === true) {
|
|
239
244
|
validators.push(Validators.required);
|
|
240
245
|
}
|
|
241
246
|
if (!Array.isArray(component.validations)) {
|
|
242
247
|
if (validators.length == 0)
|
|
243
248
|
return null;
|
|
244
|
-
return
|
|
249
|
+
return validators;
|
|
245
250
|
}
|
|
246
251
|
component.validations?.forEach((item) => {
|
|
247
252
|
if (!this.programmabilityService.isExpression(item.expression))
|
|
@@ -255,15 +260,7 @@ export class DynamicFormComponent {
|
|
|
255
260
|
});
|
|
256
261
|
if (validators.length == 0)
|
|
257
262
|
return null;
|
|
258
|
-
return
|
|
259
|
-
validators: validators,
|
|
260
|
-
watch: (control) => {
|
|
261
|
-
//let formGroup = control.parent as FormGroup;
|
|
262
|
-
//this.watch(formGroup, Array.from(set), () => {
|
|
263
|
-
// control.updateValueAndValidity();
|
|
264
|
-
//});
|
|
265
|
-
}
|
|
266
|
-
};
|
|
263
|
+
return validators;
|
|
267
264
|
}
|
|
268
265
|
validateFn(formGroup, item) {
|
|
269
266
|
return (control) => {
|
|
@@ -287,15 +284,6 @@ export class DynamicFormComponent {
|
|
|
287
284
|
return null;
|
|
288
285
|
};
|
|
289
286
|
}
|
|
290
|
-
useNumber(formControl) {
|
|
291
|
-
/* Required for Siro Input because the type number was not implemented correctly */
|
|
292
|
-
formControl.valueChanges.subscribe(value => {
|
|
293
|
-
const numericValue = value === '' ? null : parseFloat(value);
|
|
294
|
-
if (numericValue === null || !isNaN(numericValue)) {
|
|
295
|
-
formControl.setValue(numericValue, { emitEvent: false });
|
|
296
|
-
}
|
|
297
|
-
});
|
|
298
|
-
}
|
|
299
287
|
isFormComponent(component) {
|
|
300
288
|
switch (component.type) {
|
|
301
289
|
case "checkbox":
|
|
@@ -392,4 +380,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
392
380
|
}], activeNav: [{
|
|
393
381
|
type: Input
|
|
394
382
|
}] } });
|
|
395
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4Q0FBOEM7QUFFOUMsT0FBTyxFQUNMLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUNQLGlCQUFpQixFQUFFLFlBQVksRUFFakQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDUSxTQUFTLEVBQ1AsVUFBVSxFQUMxQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFnQixZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRixPQUFPLEVBQ0wsMkJBQTJCLEVBQUUscUJBQXFCLEVBQUUseUJBQXlCLEVBQzNFLG9CQUFvQixFQUFFLGdDQUFnQyxFQUFFLGlDQUFpQyxFQUU1RixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFF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QUFhO3NCQUFyQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQThFSCxTQUFTO3NCQURaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vdHlwZXMvdHlwaW5ncy5kLnRzXCIgLz5cclxuXHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSBcclxuICAsIFNpbXBsZUNoYW5nZXMsIFZpZXdFbmNhcHN1bGF0aW9uLCBFdmVudEVtaXR0ZXJcclxuICAsIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIEZvcm1Db250cm9sLCBGb3JtQ29udHJvbE9wdGlvbnMsIEFic3RyYWN0Q29udHJvbFxyXG4gICwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMsIFZhbGlkYXRpb25FcnJvcnNcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQcm9ncmFtbWFiaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBwYXRjaEZvcm0gfSBmcm9tICcuLi91dGlscy9wYXRjaEZvcm0nO1xyXG5pbXBvcnQgeyBncm91cEJ5Um93IH0gZnJvbSAnLi4vdXRpbHMvZ3JvdXBCeVJvdyc7XHJcbmltcG9ydCB7IENvbW1hbmRFdmVudCwgRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IER5bmFtaWNGaWVsZHNDb21wb25lbnQgfSBmcm9tICcuLi9keW5hbWljLWZpZWxkcy9keW5hbWljLWZpZWxkcy5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gIFNpcmlvU2lkZW5hdk1vYmlsZUNvbXBvbmVudCwgU2lyaW9TaWRlbmF2Q29tcG9uZW50LCBTaXJpb1NpZGVuYXZJdGVtQ29tcG9uZW50XHJcbiAgLCBTaXJpb0J1dHRvbkNvbXBvbmVudCwgU2lyaW9TdGVwcGVyUHJvZ3Jlc3NCYXJDb21wb25lbnQsIFNpcmlvU3RlcHBlclByb2dyZXNzSXRlbUNvbXBvbmVudFxyXG4gICwgU2lyaW9TdGVwcGVyUHJvZ3Jlc3NTdGF0dXMsIE5neFNpcmlvRXZlbnRcclxufSBmcm9tICduZ3gtc2lyaW8tbGliJztcclxuaW1wb3J0IHsgUmVnaXN0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcmVnaXN0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlZ2lzdGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9yZWdpc3Rlci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb250cm9sIH0gZnJvbSAnLi4vY29udHJvbHMvY29udHJvbCc7IFxyXG5cclxuaW1wb3J0IHsgVGV4dHMgfSBmcm9tICcuLi9sb2NhbGUvbG9jYWxlLWl0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWR5bmFtaWMtZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbXHJcbiAgICAnLi4vc2hhcmVkL2Jvb3RzdHJhcC1ncmlkLnNjc3MnLFxyXG4gICAgJy4vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5jc3MnXHJcbiAgXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGVcclxuICAgICwgUmVnaXN0ZXJEaXJlY3RpdmVcclxuICAgICwgU2lyaW9TaWRlbmF2TW9iaWxlQ29tcG9uZW50LCBTaXJpb1NpZGVuYXZDb21wb25lbnQsIFNpcmlvU2lkZW5hdkl0ZW1Db21wb25lbnRcclxuICAgICwgU2lyaW9CdXR0b25Db21wb25lbnQsIFNpcmlvU3RlcHBlclByb2dyZXNzQmFyQ29tcG9uZW50LCBTaXJpb1N0ZXBwZXJQcm9ncmVzc0l0ZW1Db21wb25lbnRcclxuICAgICwgRHluYW1pY0ZpZWxkc0NvbXBvbmVudF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBFdmVudFNlcnZpY2UsIFByb2dyYW1tYWJpbGl0eVNlcnZpY2UsIFJlZ2lzdGVyU2VydmljZVxyXG4gIF0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgc2NoZW1hOiBhbnk7XHJcbiAgQElucHV0KCkgZm9ybUdyb3VwITogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIHZhbHVlOiBhbnkgPSB7fTtcclxuICBASW5wdXQoKSBzaG93TmF2OiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93TmF2QnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBwcm9ncmVzc1N0YXR1czogYm9vbGVhbiA9IHRydWU7XHJcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGluaXRpYWxpemVkID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtR3JvdXA+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ29tbWFuZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q29tbWFuZEV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBhY3RpdmVOYXZDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXJcclxuICAgICwgcHJpdmF0ZSBwcm9ncmFtbWFiaWxpdHlTZXJ2aWNlOiBQcm9ncmFtbWFiaWxpdHlTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgZXZlbnRzOiBFdmVudFNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSByZWdpc3RlclNlcnZpY2U6IFJlZ2lzdGVyU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIFRleHRzID0gVGV4dHM7XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbGVhckhhbmRsZXJzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snc2NoZW1hJ10pIHtcclxuICAgICAgaWYgKCF0aGlzLmZvcm1Hcm91cCkge1xyXG4gICAgICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7fSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuY2xlYXJDb250cm9scygpO1xyXG5cclxuICAgICAgdGhpcy5jbGVhckhhbmRsZXJzKCk7XHJcblxyXG4gICAgICBjb25zdCBzY2hlbWEgPSBjaGFuZ2VzWydzY2hlbWEnXS5jdXJyZW50VmFsdWU7XHJcblxyXG4gICAgICB0aGlzLl9mb3JtcyA9IGdyb3VwQnlSb3coc2NoZW1hLmZvcm1zID8/IFtdKTtcclxuXHJcbiAgICAgIHRoaXMuYnVpbGRGb3JtKCk7XHJcblxyXG4gICAgICBpZiAodGhpcy52YWx1ZSkge1xyXG4gICAgICAgIHRoaXMucGF0Y2hWYWx1ZSh0aGlzLmZvcm1Hcm91cCwgdGhpcy52YWx1ZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKVxyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQuZW1pdCh0aGlzLmZvcm1Hcm91cCk7XHJcblxyXG4gICAgICB0aGlzLnJlZ2lzdGVySGFuZGxlcnMoKTsgICAgICBcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBmb3JtcygpOiBBcnJheTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9mb3JtcztcclxuICB9XHJcblxyXG4gIGNhblByZXZpb3VzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0UHJldmlvdXMoKSAhPSAtMTsgXHJcbiAgfVxyXG5cclxuICBnb1ByZXZpb3VzKCkge1xyXG4gICAgaWYgKHRoaXMuY2FuUHJldmlvdXMoKSkge1xyXG4gICAgICB0aGlzLmFjdGl2ZU5hdiA9IHRoaXMuZ2V0UHJldmlvdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbk5leHQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXROZXh0KCkgIT0gLTE7ICAgIFxyXG4gIH1cclxuXHJcbiAgZ29OZXh0KCkge1xyXG4gICAgaWYgKHRoaXMuY2FuTmV4dCgpKSB7IFxyXG4gICAgICB0aGlzLmFjdGl2ZU5hdiA9IHRoaXMuZ2V0TmV4dCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q29udHJvbHMoKTogQ29udHJvbFtdIHtcclxuICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyU2VydmljZS5nZXRDb250cm9scygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udHJvbChuYW1lOiBzdHJpbmcpOiBDb250cm9sIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyU2VydmljZS5nZXRDb250cm9sKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFjdGl2ZU5hdigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZU5hdjtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGFjdGl2ZU5hdih2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICBpZiAodmFsdWUgPj0gMCAmJiB2YWx1ZSA8IHRoaXMuZ2V0TWF4TmF2KCkpIHtcclxuICAgICAgdGhpcy5fYWN0aXZlTmF2ID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5hY3RpdmVOYXZDaGFuZ2UuZW1pdCh0aGlzLl9hY3RpdmVOYXYpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRGb3JtR3JvdXAocGF0aDogc3RyaW5nIHwgbnVsbCk6IEZvcm1Hcm91cCB7XHJcbiAgICBjb25zdCBjb250cm9sID0gcGF0aCA/IHRoaXMuZm9ybUdyb3VwLmdldChwYXRoKSA6IHRoaXMuZm9ybUdyb3VwO1xyXG4gICAgaWYgKCEoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb250cm9sIGlzIG5vdCBhIEZvcm1Hcm91cCcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBnZXRGb3JtU3RhdHVzKGZvcm06IGFueSk6IFNpcmlvU3RlcHBlclByb2dyZXNzU3RhdHVzIHtcclxuXHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuX2Zvcm1zLmZpbmRJbmRleChmID0+IGYuaWQgPT09IGZvcm0uaWQpO1xyXG5cclxuICAgIGNvbnN0IGN1cnJlbnQgPSBpbmRleCA9PSB0aGlzLmFjdGl2ZU5hdjtcclxuXHJcbiAgICBpZiAoY3VycmVudCkge1xyXG4gICAgICByZXR1cm4gXCJhY3RpdmVcIjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMucHJvZ3Jlc3NTdGF0dXMpIHtcclxuICAgICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy5nZXRGb3JtR3JvdXAoZm9ybS5wYXRoKTtcclxuICAgICAgcmV0dXJuIGZvcm1Hcm91cC52YWxpZCA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBcImFjdGl2ZVwiO1xyXG4gICAgfSAgICBcclxuICB9XHJcblxyXG4gIGFjdGl2YXRlRm9ybSh0aXRsZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZm9ybXMuZmluZEluZGV4KGZvcm0gPT4gZm9ybS50aXRsZSA9PT0gdGl0bGUpO1xyXG4gICAgaWYgKGluZGV4ICE9IC0xKVxyXG4gICAgICB0aGlzLmFjdGl2ZU5hdiA9IGluZGV4O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgb25Db21tYW5kU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBfZm9ybXM6IEFycmF5PGFueT4gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBfYWN0aXZlTmF2OiBudW1iZXIgPSAwO1xyXG5cclxuICBwcml2YXRlIGdldE5leHQoKTogbnVtYmVyIHtcclxuICAgIGlmICh0aGlzLmFjdGl2ZU5hdiA8IHRoaXMuZ2V0TWF4TmF2KCkgLSAxKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFjdGl2ZU5hdiArIDE7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIC0xO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQcmV2aW91cygpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlTmF2ID4gMCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5hY3RpdmVOYXYgLSAxO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiAtMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TWF4TmF2KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZm9ybXMubGVuZ3RoID8/IDA7ICAgIFxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgY2xlYXJDb250cm9scygpOiB2b2lkIHtcclxuICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woa2V5KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWdpc3RlckhhbmRsZXJzKCk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24gPSB0aGlzLmZvcm1Hcm91cC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5vbkNvbW1hbmRTdWJzY3JpcHRpb24gPSB0aGlzLmV2ZW50cy5vbkNvbW1hbmQuc3Vic2NyaWJlKChkYXRhKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLm9uQ29tbWFuZClcclxuICAgICAgICB0aGlzLm9uQ29tbWFuZC5lbWl0KGRhdGEpO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBjbGVhckhhbmRsZXJzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub25Db21tYW5kU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMub25Db21tYW5kU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkRm9ybSgpIHtcclxuICAgIHRoaXMuZm9ybXMuZm9yRWFjaCgoZm9ybTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRHcm91cCA9IHRoaXMuYXBwbHlQYXRoKHRoaXMuZmIsIHRoaXMuZm9ybUdyb3VwLCBmb3JtLnBhdGgpO1xyXG4gICAgICBmb3JtLnJvd3M/LmZvckVhY2goKHJvdzogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5hZGRDb250cm9scyh0aGlzLmZiLCBjdXJyZW50R3JvdXAsIHJvdy5jb21wb25lbnRzKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkQ29udHJvbHMoZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLCBmb3JtR3JvdXA6IEZvcm1Hcm91cCwgY29tcG9uZW50czogQXJyYXk8YW55Pikge1xyXG4gICAgbGV0IGZvcm1Db21wb25lbnQgPSB0aGlzO1xyXG5cclxuICAgIGNvbXBvbmVudHM/LmZvckVhY2goKGNvbXBvbmVudDogYW55KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmlzRm9ybUNvbXBvbmVudChjb21wb25lbnQpKSB7XHJcbiAgICAgICAgaWYgKGNvbXBvbmVudC50eXBlID09PSAnZHluYW1pY2xpc3QnKSB7XHJcbiAgICAgICAgICBpZiAoY29tcG9uZW50LnBhdGgpIHtcclxuICAgICAgICAgICAgbGV0IGZvcm1BcnJheSA9IGZvcm1CdWlsZGVyLmFycmF5PEZvcm1Hcm91cD4oW10pO1xyXG5cclxuICAgICAgICAgICAgZm9ybUdyb3VwLmFkZENvbnRyb2woY29tcG9uZW50LnBhdGgsIGZvcm1BcnJheSk7XHJcblxyXG4gICAgICAgICAgICAoZm9ybUFycmF5IGFzIGFueSkuYWRkTmV3SXRlbSA9IGZ1bmN0aW9uICgpOiBGb3JtR3JvdXAge1xyXG4gICAgICAgICAgICAgIGxldCBuZXdHcm91cCA9IGZvcm1CdWlsZGVyLmdyb3VwKHt9KTtcclxuICAgICAgICAgICAgICBjb21wb25lbnQucm93cz8uZm9yRWFjaCgocm93OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGZvcm1Db21wb25lbnQuYWRkQ29udHJvbHMoZm9ybUJ1aWxkZXIsIG5ld0dyb3VwLCByb3cuY29tcG9uZW50cyk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgZm9ybUFycmF5LnB1c2gobmV3R3JvdXApO1xyXG4gICAgICAgICAgICAgIHJldHVybiBuZXdHcm91cDtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoY29tcG9uZW50LnR5cGUgPT09ICdncm91cCcpIHtcclxuICAgICAgICAgIGNvbnN0IGN1cnJlbnRHcm91cCA9IHRoaXMuYXBwbHlQYXRoKGZvcm1CdWlsZGVyLCBmb3JtR3JvdXAsIGNvbXBvbmVudC5wYXRoKTtcclxuICAgICAgICAgIGNvbXBvbmVudC5yb3dzPy5mb3JFYWNoKChyb3c6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBmb3JtQ29tcG9uZW50LmFkZENvbnRyb2xzKGZvcm1CdWlsZGVyLCBjdXJyZW50R3JvdXAsIHJvdy5jb21wb25lbnRzKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChjb21wb25lbnQua2V5KSB7XHJcbiAgICAgICAgICBsZXQgZGVmYXVsdFZhbHVlID0gdGhpcy5nZXREZWZhdWx0VmFsdWUoY29tcG9uZW50KTtcclxuICAgICAgICAgIGNvbnN0IHByb2dyYW1tYWJpbGl0eSA9IHRoaXMuZ2V0VmFsaWRhdG9ycyhmb3JtR3JvdXAsIGNvbXBvbmVudCk7XHJcbiAgICAgICAgICBjb25zdCBvcHRpb25zOiBGb3JtQ29udHJvbE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6IHByb2dyYW1tYWJpbGl0eT8udmFsaWRhdG9ycyB8fCBbXSxcclxuICAgICAgICAgICAgdXBkYXRlT246IHRoaXMuZ2V0VXBkYXRlT24oY29tcG9uZW50KSB8fCBcImNoYW5nZVwiXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgY29uc3QgY29udHJvbCA9IGZvcm1CdWlsZGVyLmNvbnRyb2woZGVmYXVsdFZhbHVlLCBvcHRpb25zKTtcclxuICAgICAgICAgIGZvcm1Hcm91cC5hZGRDb250cm9sKGNvbXBvbmVudC5rZXksIGNvbnRyb2wpO1xyXG4gICAgICAgICAgcHJvZ3JhbW1hYmlsaXR5Py53YXRjaChjb250cm9sISk7ICAgICAgICAgIFxyXG4gICAgICAgICAgaWYgKGNvbXBvbmVudC50eXBlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICB0aGlzLnVzZU51bWJlcihjb250cm9sIGFzIEZvcm1Db250cm9sKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseVBhdGgoZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLCBmb3JtR3JvdXA6IEZvcm1Hcm91cCwgcGF0aDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXBhdGgpIHtcclxuICAgICAgcmV0dXJuIGZvcm1Hcm91cDtcclxuICAgIH1cclxuICAgIGxldCBjdXJyZW50R3JvdXA6IEZvcm1Hcm91cCA9IGZvcm1Hcm91cDtcclxuICAgIHRoaXMuc3BsaXRQYXRoKHBhdGgpLmZvckVhY2goKHNlZ21lbnQpID0+IHtcclxuICAgICAgbGV0IG5ld0dyb3VwID0gZm9ybUJ1aWxkZXIuZ3JvdXAoe30pO1xyXG4gICAgICBjdXJyZW50R3JvdXAuYWRkQ29udHJvbChzZWdtZW50LCBuZXdHcm91cCk7XHJcbiAgICAgIGN1cnJlbnRHcm91cCA9IG5ld0dyb3VwO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY3VycmVudEdyb3VwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRWYWxpZGF0b3JzKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBjb21wb25lbnQ6IGFueSlcclxuICAgIDogeyB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdOyB3YXRjaDogKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4gdm9pZCB9IHwgbnVsbCB7XHJcblxyXG4gICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0IG5vV2F0Y2ggPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7IH07XHJcblxyXG4gICAgaWYgKGNvbXBvbmVudD8udmFsaWRhdGU/LnJlcXVpcmVkID09PSB0cnVlKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29tcG9uZW50LnZhbGlkYXRpb25zKSkge1xyXG4gICAgICBpZiAodmFsaWRhdG9ycy5sZW5ndGggPT0gMClcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgcmV0dXJuIHsgdmFsaWRhdG9yczogdmFsaWRhdG9ycywgd2F0Y2g6IG5vV2F0Y2ggfTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnQudmFsaWRhdGlvbnM/LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMucHJvZ3JhbW1hYmlsaXR5U2VydmljZS5pc0V4cHJlc3Npb24oaXRlbS5leHByZXNzaW9uKSlcclxuICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICBpZiAoaXRlbS50eXBlID09PSBcInZhbGlkYXRlXCIpIHtcclxuICAgICAgICB2YWxpZGF0b3JzLnB1c2godGhpcy52YWxpZGF0ZUZuKGZvcm1Hcm91cCwgaXRlbSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gXCJpbnZhbGlkYXRlXCIpIHtcclxuICAgICAgICB2YWxpZGF0b3JzLnB1c2godGhpcy5pbnZhbGlkYXRlRm4oZm9ybUdyb3VwLCBpdGVtKSk7XHJcbiAgICAgIH0gICAgICBcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh2YWxpZGF0b3JzLmxlbmd0aCA9PSAwKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB2YWxpZGF0b3JzOiB2YWxpZGF0b3JzLFxyXG4gICAgICB3YXRjaDogKGNvbnRyb2wpID0+IHtcclxuICAgICAgICAvL2xldCBmb3JtR3JvdXAgPSBjb250cm9sLnBhcmVudCBhcyBGb3JtR3JvdXA7XHJcbiAgICAgICAgLy90aGlzLndhdGNoKGZvcm1Hcm91cCwgQXJyYXkuZnJvbShzZXQpLCAoKSA9PiB7XHJcbiAgICAgICAgLy8gIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIC8vfSk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZhbGlkYXRlRm4oZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGl0ZW06IGFueSk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xyXG5cclxuICAgICAgLy9pZiAoIWNvbnRyb2wudG91Y2hlZClcclxuICAgICAgLy8gIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgdmFyIHZhbGlkID0gdGhpcy5wcm9ncmFtbWFiaWxpdHlTZXJ2aWNlLmV2YWx1YXRlVW5hcnkoZm9ybUdyb3VwLCBpdGVtLmV4cHJlc3Npb24sIGNvbnRyb2wudmFsdWUpO1xyXG5cclxuICAgICAgaWYgKCF2YWxpZCkge1xyXG4gICAgICAgIHJldHVybiB7IGVycm9yOiB0cnVlLCBtZXNzYWdlOiBpdGVtLm1lc3NhZ2UgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGludmFsaWRhdGVGbihmb3JtR3JvdXA6IEZvcm1Hcm91cCwgaXRlbTogYW55KTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcblxyXG4gICAgICAvL2lmICghY29udHJvbC50b3VjaGVkKVxyXG4gICAgICAvLyAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICB2YXIgaW52YWxpZCA9IHRoaXMucHJvZ3JhbW1hYmlsaXR5U2VydmljZS5ldmFsdWF0ZVVuYXJ5KGZvcm1Hcm91cCwgaXRlbS5leHByZXNzaW9uLCBjb250cm9sLnZhbHVlKTtcclxuXHJcbiAgICAgIGlmIChpbnZhbGlkKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgZXJyb3I6IHRydWUsIG1lc3NhZ2U6IGl0ZW0ubWVzc2FnZSB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXNlTnVtYmVyKGZvcm1Db250cm9sOiBGb3JtQ29udHJvbCkge1xyXG4gICAgLyogUmVxdWlyZWQgZm9yIFNpcm8gSW5wdXQgYmVjYXVzZSB0aGUgdHlwZSBudW1iZXIgd2FzIG5vdCBpbXBsZW1lbnRlZCBjb3JyZWN0bHkgKi9cclxuICAgIGZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4ge1xyXG4gICAgICBjb25zdCBudW1lcmljVmFsdWUgPSB2YWx1ZSA9PT0gJycgPyBudWxsIDogcGFyc2VGbG9hdCh2YWx1ZSk7XHJcbiAgICAgIGlmIChudW1lcmljVmFsdWUgPT09IG51bGwgfHwgIWlzTmFOKG51bWVyaWNWYWx1ZSkpIHtcclxuICAgICAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZShudW1lcmljVmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzRm9ybUNvbXBvbmVudChjb21wb25lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgc3dpdGNoIChjb21wb25lbnQudHlwZSkge1xyXG4gICAgICBjYXNlIFwiY2hlY2tib3hcIjpcclxuICAgICAgY2FzZSBcImNoZWNrbGlzdFwiOlxyXG4gICAgICBjYXNlIFwiZGF0ZXRpbWVcIjpcclxuICAgICAgY2FzZSBcImR5bmFtaWNsaXN0XCI6XHJcbiAgICAgIGNhc2UgXCJmaWxlcGlja2VyXCI6XHJcbiAgICAgIGNhc2UgXCJncm91cFwiOlxyXG4gICAgICBjYXNlIFwibnVtYmVyXCI6XHJcbiAgICAgIGNhc2UgXCJyYWRpb1wiOlxyXG4gICAgICBjYXNlIFwic2VsZWN0XCI6XHJcbiAgICAgIGNhc2UgXCJ0YWdsaXN0XCI6XHJcbiAgICAgIGNhc2UgXCJ0ZXh0YXJlYVwiOlxyXG4gICAgICBjYXNlIFwidGV4dGZpZWxkXCI6XHJcbiAgICAgIGNhc2UgXCJyYW5nZVwiOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VXBkYXRlT24oY29tcG9uZW50OiBhbnkpOiBhbnkge1xyXG4gICAgc3dpdGNoIChjb21wb25lbnQudHlwZSkge1xyXG4gICAgICBjYXNlIFwibnVtYmVyXCI6XHJcbiAgICAgIGNhc2UgXCJ0ZXh0YXJlYVwiOlxyXG4gICAgICBjYXNlIFwidGV4dGZpZWxkXCI6XHJcbiAgICAgICAgcmV0dXJuIFwiYmx1clwiO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREZWZhdWx0VmFsdWUoY29tcG9uZW50OiBhbnkpOiBhbnkge1xyXG4gICAgc3dpdGNoIChjb21wb25lbnQudHlwZSkge1xyXG4gICAgICBjYXNlIFwidGV4dGFyZWFcIjpcclxuICAgICAgY2FzZSBcInRleHRmaWVsZFwiOlxyXG4gICAgICBjYXNlIFwicmFkaW9cIjpcclxuICAgICAgY2FzZSBcInNlbGVjdFwiOlxyXG4gICAgICAgIHJldHVybiBjb21wb25lbnQuZGVmYXVsdFZhbHVlIGFzIHN0cmluZztcclxuICAgICAgY2FzZSBcIm51bWJlclwiOlxyXG4gICAgICAgIHJldHVybiBjb21wb25lbnQuZGVmYXVsdFZhbHVlIGFzIG51bWJlcjtcclxuICAgICAgY2FzZSBcImNoZWNrYm94XCI6XHJcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5kZWZhdWx0VmFsdWUgYXMgYm9vbGVhbjtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3BsaXRQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZ1tdIHtcclxuICAgIGlmICghcGF0aCkge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGF0aFxyXG4gICAgICAuc3BsaXQoJy4nKVxyXG4gICAgICAubWFwKHNlZ21lbnQgPT4gc2VnbWVudC50cmltKCkpXHJcbiAgICAgIC5maWx0ZXIoc2VnbWVudCA9PiBzZWdtZW50Lmxlbmd0aCA+IDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXRjaFZhbHVlKGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogYW55KSB7XHJcbiAgICBwYXRjaEZvcm0oZm9ybUdyb3VwLCB2YWx1ZSk7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCIgY2xhc3M9XCJuZ3NcIj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG5cclxuICAgICAgPCEtLSAjcmVnaW9uIHByb2dyZXNzIC0tPlxyXG4gICAgICA8bmd4LXNpcmlvLXN0ZXBwZXItcHJvZ3Jlc3MtYmFyICpuZ0lmPVwic2hvd1Byb2dyZXNzXCJcclxuICAgICAgICAoZXZlbnRDbGljayk9XCJhY3RpdmF0ZUZvcm0oJGV2ZW50LmRhdGEubGFiZWwpXCIgXHJcbiAgICAgICAgW2hhc0Ryb3Bkb3duXT1cInRydWVcIiBcclxuICAgICAgICBbZHJvcERvd25MYWJlbF09XCJUZXh0cy5TaG93XCI+XHJcbiAgICAgICAgPG5neC1zaXJpby1zdGVwcGVyLXByb2dyZXNzLWl0ZW0gKm5nRm9yPVwibGV0IGZvcm0gb2YgZm9ybXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoYXNOYXZpZ2F0aW9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0dXNdPVwiZ2V0Rm9ybVN0YXR1cyhmb3JtKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImZvcm0udGl0bGVcIiAvPlxyXG4gICAgICA8L25neC1zaXJpby1zdGVwcGVyLXByb2dyZXNzLWJhcj5cclxuICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dOYXZcIj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcblxyXG4gICAgICAgICAgPCEtLSAjcmVnaW9uIHNpZGVuYXYgLS0+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3NpZGVuYXZUZW1wbGF0ZT5cclxuICAgICAgICAgICAgPG5neC1zaXJpby1zaWRlbmF2PlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZvcm0gb2YgZm9ybXMsIGxldCBzZWN0aW9uSW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgPG5neC1zaXJpby1zaWRlbmF2LWl0ZW0gW2lzQWN0aXZlXT1cImFjdGl2ZU5hdiA9PSBzZWN0aW9uSW5kZXhcIiAoY2xpY2spPVwiYWN0aXZlTmF2ID0gc2VjdGlvbkluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IGZvcm0udGl0bGUgfX1cclxuICAgICAgICAgICAgICAgIDwvbmd4LXNpcmlvLXNpZGVuYXYtaXRlbT5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZ3gtc2lyaW8tc2lkZW5hdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgPG5neC1zaXJpby1zaWRlbmF2LW1vYmlsZSBjbGFzcz1cImQtYmxvY2sgZC1sZy1ub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Blbk1lbnVMYWJlbD1cIkFwcmkgTWVudVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5NZW51QXJpYUxhYmVsPVwiQXByaSBNZW51XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VNZW51TGFiZWw9XCJDaGl1ZGkgTWVudVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlTWVudUFyaWFMYWJlbD1cIkNoaXVkaSBNZW51XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaWRlbmF2VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmd4LXNpcmlvLXNpZGVuYXYtbW9iaWxlPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtbm9uZSBkLWxnLWJsb2NrXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaWRlbmF2VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VwYXJhdG9yLWhvcml6b250YWxcIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtZWxlbWVudC1mb3JtXCIgW25nQ2xhc3NdPVwic2hvd05hdiA/ICdjb2wtbWQtMTEnIDogJ2NvbC1tZC0xNidcIj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZm9ybSBvZiBmb3JtcywgbGV0IHNlY3Rpb25JbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlTmF2ID09IHNlY3Rpb25JbmRleFwiXHJcbiAgICAgICAgICAgICAgICNkZWZhdWx0XHJcbiAgICAgICAgICAgICAgIFtyZWdpc3Rlcl09XCJmb3JtXCJcclxuICAgICAgICAgICAgICAgW2NvbXBvbmVudFJlZl09XCJkZWZhdWx0XCI+XHJcbiAgICAgICAgICAgIDxhcHAtZHluYW1pYy1maWVsZHMgW2Zvcm1Hcm91cF09XCJnZXRGb3JtR3JvdXAoZm9ybS5wYXRoKVwiIFtyb3dzXT1cImZvcm0ucm93c1wiPjwvYXBwLWR5bmFtaWMtZmllbGRzPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93TmF2QnV0dG9uXCI+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBzZWN0aW9uLW5hdnNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04IGNvbC1tZC04XCI+XHJcbiAgICAgICAgICAgICAgPG5neC1zaXJpby1idXR0b24gW2NvbG9yXT1cIm51bGxcIiBbZGlzYWJsZWRdPVwiIWNhbk5leHQoKVwiIChjbGljayk9XCJnb05leHQoKVwiIGNsYXNzPVwibmV4dFNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgIHt7IFRleHRzLk5leHRTZWN0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhLXNvbGlkIGZhLWNoZXZyb24tcmlnaHRcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvbmd4LXNpcmlvLWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOCBjb2wtbWQtOFwiPlxyXG4gICAgICAgICAgICAgIDxuZ3gtc2lyaW8tYnV0dG9uIFtjb2xvcl09XCJudWxsXCIgW2Rpc2FibGVkXT1cIiFjYW5QcmV2aW91cygpXCIgKGNsaWNrKT1cImdvUHJldmlvdXMoKVwiIGNsYXNzPVwicHJldlNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmEtc29saWQgZmEtY2hldnJvbi1sZWZ0XCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEwcHhcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICB7eyBUZXh0cy5QcmV2aW91c1NlY3Rpb24gfX1cclxuICAgICAgICAgICAgICA8L25neC1zaXJpby1idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Zvcm0+XHJcblxyXG5cclxuXHJcbiJdfQ==
|
|
383
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4Q0FBOEM7QUFFOUMsT0FBTyxFQUNMLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUNQLGlCQUFpQixFQUFFLFlBQVksRUFDakQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDUSxTQUFTLEVBQ1AsVUFBVSxFQUMxQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFnQixZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRixPQUFPLEVBQ0wsMkJBQTJCLEVBQUUscUJBQXFCLEVBQUUseUJBQXlCLEVBQzNFLG9CQUFvQixFQUFFLGdDQUFnQyxFQUFFLGlDQUFpQyxFQUU1RixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFF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LHFCQUFxQixxR0FBRSx5QkFBeUIsK2FBQzdFLG9CQUFvQixxWkFBRSxnQ0FBZ0MsMktBQUUsaUNBQWlDLDhJQUN6RixzQkFBc0I7OzRGQU1mLG9CQUFvQjtrQkFsQmhDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBTWhCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxtQkFBbUI7d0JBQ3ZDLGlCQUFpQjt3QkFDakIsMkJBQTJCLEVBQUUscUJBQXFCLEVBQUUseUJBQXlCO3dCQUM3RSxvQkFBb0IsRUFBRSxnQ0FBZ0MsRUFBRSxpQ0FBaUM7d0JBQ3pGLHNCQUFzQixDQUFDLGFBQ2hCO3dCQUNULFlBQVksRUFBRSxzQkFBc0IsRUFBRSxlQUFlO3FCQUN0RCxpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJOzhLQUc1QixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBOEVILFNBQVM7c0JBRFosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi90eXBlcy90eXBpbmdzLmQudHNcIiAvPlxyXG5cclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IFxyXG4gICwgU2ltcGxlQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb24sIEV2ZW50RW1pdHRlclxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIEZvcm1Db250cm9sT3B0aW9ucywgQWJzdHJhY3RDb250cm9sXHJcbiAgLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycywgVmFsaWRhdGlvbkVycm9yc1xyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFByb2dyYW1tYWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcm9ncmFtbWFiaWxpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IHBhdGNoRm9ybSB9IGZyb20gJy4uL3V0aWxzL3BhdGNoRm9ybSc7XHJcbmltcG9ydCB7IGdyb3VwQnlSb3cgfSBmcm9tICcuLi91dGlscy9ncm91cEJ5Um93JztcclxuaW1wb3J0IHsgQ29tbWFuZEV2ZW50LCBFdmVudFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9ldmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRHluYW1pY0ZpZWxkc0NvbXBvbmVudCB9IGZyb20gJy4uL2R5bmFtaWMtZmllbGRzL2R5bmFtaWMtZmllbGRzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgU2lyaW9TaWRlbmF2TW9iaWxlQ29tcG9uZW50LCBTaXJpb1NpZGVuYXZDb21wb25lbnQsIFNpcmlvU2lkZW5hdkl0ZW1Db21wb25lbnRcclxuICAsIFNpcmlvQnV0dG9uQ29tcG9uZW50LCBTaXJpb1N0ZXBwZXJQcm9ncmVzc0JhckNvbXBvbmVudCwgU2lyaW9TdGVwcGVyUHJvZ3Jlc3NJdGVtQ29tcG9uZW50XHJcbiAgLCBTaXJpb1N0ZXBwZXJQcm9ncmVzc1N0YXR1c1xyXG59IGZyb20gJ25neC1zaXJpby1saWInO1xyXG5pbXBvcnQgeyBSZWdpc3RlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9yZWdpc3Rlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVnaXN0ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3JlZ2lzdGVyLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbnRyb2wgfSBmcm9tICcuLi9jb250cm9scy9jb250cm9sJzsgXHJcblxyXG5pbXBvcnQgeyBUZXh0cyB9IGZyb20gJy4uL2xvY2FsZS9sb2NhbGUtaXQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZHluYW1pYy1mb3JtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFtcclxuICAgICcuLi9zaGFyZWQvYm9vdHN0cmFwLWdyaWQuc2NzcycsXHJcbiAgICAnLi9keW5hbWljLWZvcm0uY29tcG9uZW50LmNzcydcclxuICBdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZVxyXG4gICAgLCBSZWdpc3RlckRpcmVjdGl2ZVxyXG4gICAgLCBTaXJpb1NpZGVuYXZNb2JpbGVDb21wb25lbnQsIFNpcmlvU2lkZW5hdkNvbXBvbmVudCwgU2lyaW9TaWRlbmF2SXRlbUNvbXBvbmVudFxyXG4gICAgLCBTaXJpb0J1dHRvbkNvbXBvbmVudCwgU2lyaW9TdGVwcGVyUHJvZ3Jlc3NCYXJDb21wb25lbnQsIFNpcmlvU3RlcHBlclByb2dyZXNzSXRlbUNvbXBvbmVudFxyXG4gICAgLCBEeW5hbWljRmllbGRzQ29tcG9uZW50XSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIEV2ZW50U2VydmljZSwgUHJvZ3JhbW1hYmlsaXR5U2VydmljZSwgUmVnaXN0ZXJTZXJ2aWNlXHJcbiAgXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBzY2hlbWE6IGFueTtcclxuICBASW5wdXQoKSBmb3JtR3JvdXAhOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgdmFsdWU6IGFueSA9IHt9O1xyXG4gIEBJbnB1dCgpIHNob3dOYXY6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dOYXZCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHByb2dyZXNzU3RhdHVzOiBib29sZWFuID0gdHJ1ZTtcclxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgaW5pdGlhbGl6ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1Hcm91cD4oKTtcclxuICBAT3V0cHV0KCkgb25Db21tYW5kID0gbmV3IEV2ZW50RW1pdHRlcjxDb21tYW5kRXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpIGFjdGl2ZU5hdkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlclxyXG4gICAgLCBwcml2YXRlIHByb2dyYW1tYWJpbGl0eVNlcnZpY2U6IFByb2dyYW1tYWJpbGl0eVNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBldmVudHM6IEV2ZW50U2VydmljZVxyXG4gICAgLCBwcml2YXRlIHJlZ2lzdGVyU2VydmljZTogUmVnaXN0ZXJTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgVGV4dHMgPSBUZXh0cztcclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsZWFySGFuZGxlcnMoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydzY2hlbWEnXSkge1xyXG4gICAgICBpZiAoIXRoaXMuZm9ybUdyb3VwKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHt9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5jbGVhckNvbnRyb2xzKCk7XHJcblxyXG4gICAgICB0aGlzLmNsZWFySGFuZGxlcnMoKTtcclxuXHJcbiAgICAgIGNvbnN0IHNjaGVtYSA9IGNoYW5nZXNbJ3NjaGVtYSddLmN1cnJlbnRWYWx1ZTtcclxuXHJcbiAgICAgIHRoaXMuX2Zvcm1zID0gZ3JvdXBCeVJvdyhzY2hlbWEuZm9ybXMgPz8gW10pO1xyXG5cclxuICAgICAgdGhpcy5idWlsZEZvcm0oKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5wYXRjaFZhbHVlKHRoaXMuZm9ybUdyb3VwLCB0aGlzLnZhbHVlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpXHJcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZC5lbWl0KHRoaXMuZm9ybUdyb3VwKTtcclxuXHJcbiAgICAgIHRoaXMucmVnaXN0ZXJIYW5kbGVycygpOyAgICAgIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGZvcm1zKCk6IEFycmF5PGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1zO1xyXG4gIH1cclxuXHJcbiAgY2FuUHJldmlvdXMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRQcmV2aW91cygpICE9IC0xOyBcclxuICB9XHJcblxyXG4gIGdvUHJldmlvdXMoKSB7XHJcbiAgICBpZiAodGhpcy5jYW5QcmV2aW91cygpKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlTmF2ID0gdGhpcy5nZXRQcmV2aW91cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuTmV4dCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmdldE5leHQoKSAhPSAtMTsgICAgXHJcbiAgfVxyXG5cclxuICBnb05leHQoKSB7XHJcbiAgICBpZiAodGhpcy5jYW5OZXh0KCkpIHsgXHJcbiAgICAgIHRoaXMuYWN0aXZlTmF2ID0gdGhpcy5nZXROZXh0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDb250cm9scygpOiBDb250cm9sW10ge1xyXG4gICAgcmV0dXJuIHRoaXMucmVnaXN0ZXJTZXJ2aWNlLmdldENvbnRyb2xzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRDb250cm9sKG5hbWU6IHN0cmluZyk6IENvbnRyb2wgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMucmVnaXN0ZXJTZXJ2aWNlLmdldENvbnRyb2wobmFtZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgYWN0aXZlTmF2KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlTmF2O1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgYWN0aXZlTmF2KHZhbHVlOiBudW1iZXIpIHtcclxuICAgIGlmICh2YWx1ZSA+PSAwICYmIHZhbHVlIDwgdGhpcy5nZXRNYXhOYXYoKSkge1xyXG4gICAgICB0aGlzLl9hY3RpdmVOYXYgPSB2YWx1ZTtcclxuICAgIH1cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmFjdGl2ZU5hdkNoYW5nZS5lbWl0KHRoaXMuX2FjdGl2ZU5hdik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEZvcm1Hcm91cChwYXRoOiBzdHJpbmcgfCBudWxsKTogRm9ybUdyb3VwIHtcclxuICAgIGNvbnN0IGNvbnRyb2wgPSBwYXRoID8gdGhpcy5mb3JtR3JvdXAuZ2V0KHBhdGgpIDogdGhpcy5mb3JtR3JvdXA7XHJcbiAgICBpZiAoIShjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbnRyb2wgaXMgbm90IGEgRm9ybUdyb3VwJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29udHJvbDtcclxuICB9XHJcblxyXG4gIGdldEZvcm1TdGF0dXMoZm9ybTogYW55KTogU2lyaW9TdGVwcGVyUHJvZ3Jlc3NTdGF0dXMge1xyXG5cclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fZm9ybXMuZmluZEluZGV4KGYgPT4gZi5pZCA9PT0gZm9ybS5pZCk7XHJcblxyXG4gICAgY29uc3QgY3VycmVudCA9IGluZGV4ID09IHRoaXMuYWN0aXZlTmF2O1xyXG5cclxuICAgIGlmIChjdXJyZW50KSB7XHJcbiAgICAgIHJldHVybiBcImFjdGl2ZVwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5wcm9ncmVzc1N0YXR1cykge1xyXG4gICAgICBjb25zdCBmb3JtR3JvdXAgPSB0aGlzLmdldEZvcm1Hcm91cChmb3JtLnBhdGgpO1xyXG4gICAgICByZXR1cm4gZm9ybUdyb3VwLnZhbGlkID8gXCJzdWNjZXNzXCIgOiBcImVycm9yXCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIFwiYWN0aXZlXCI7XHJcbiAgICB9ICAgIFxyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGVGb3JtKHRpdGxlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5mb3Jtcy5maW5kSW5kZXgoZm9ybSA9PiBmb3JtLnRpdGxlID09PSB0aXRsZSk7XHJcbiAgICBpZiAoaW5kZXggIT0gLTEpXHJcbiAgICAgIHRoaXMuYWN0aXZlTmF2ID0gaW5kZXg7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBvbkNvbW1hbmRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIF9mb3JtczogQXJyYXk8YW55PiA9IFtdO1xyXG5cclxuICBwcml2YXRlIF9hY3RpdmVOYXY6IG51bWJlciA9IDA7XHJcblxyXG4gIHByaXZhdGUgZ2V0TmV4dCgpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlTmF2IDwgdGhpcy5nZXRNYXhOYXYoKSAtIDEpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlTmF2ICsgMTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gLTE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFByZXZpb3VzKCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVOYXYgPiAwKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFjdGl2ZU5hdiAtIDE7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIC0xO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRNYXhOYXYoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9mb3Jtcy5sZW5ndGggPz8gMDsgICAgXHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBjbGVhckNvbnRyb2xzKCk6IHZvaWQge1xyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtR3JvdXAuY29udHJvbHMpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAucmVtb3ZlQ29udHJvbChrZXkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlZ2lzdGVySGFuZGxlcnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbiA9IHRoaXMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLm9uQ29tbWFuZFN1YnNjcmlwdGlvbiA9IHRoaXMuZXZlbnRzLm9uQ29tbWFuZC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgaWYgKHRoaXMub25Db21tYW5kKVxyXG4gICAgICAgIHRoaXMub25Db21tYW5kLmVtaXQoZGF0YSk7XHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGNsZWFySGFuZGxlcnMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy52YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vbkNvbW1hbmRTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5vbkNvbW1hbmRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRGb3JtKCkge1xyXG4gICAgdGhpcy5mb3Jtcy5mb3JFYWNoKChmb3JtOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgY3VycmVudEdyb3VwID0gdGhpcy5hcHBseVBhdGgodGhpcy5mYiwgdGhpcy5mb3JtR3JvdXAsIGZvcm0ucGF0aCk7XHJcbiAgICAgIGZvcm0ucm93cz8uZm9yRWFjaCgocm93OiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmFkZENvbnRyb2xzKHRoaXMuZmIsIGN1cnJlbnRHcm91cCwgcm93LmNvbXBvbmVudHMpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRDb250cm9scyhmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsIGZvcm1Hcm91cDogRm9ybUdyb3VwLCBjb21wb25lbnRzOiBBcnJheTxhbnk+KSB7XHJcbiAgICBsZXQgZm9ybUNvbXBvbmVudCA9IHRoaXM7XHJcblxyXG4gICAgY29tcG9uZW50cz8uZm9yRWFjaCgoY29tcG9uZW50OiBhbnkpID0+IHtcclxuICAgICAgaWYgKHRoaXMuaXNGb3JtQ29tcG9uZW50KGNvbXBvbmVudCkpIHtcclxuICAgICAgICBpZiAoY29tcG9uZW50LnR5cGUgPT09ICdkeW5hbWljbGlzdCcpIHtcclxuICAgICAgICAgIGlmIChjb21wb25lbnQucGF0aCkge1xyXG4gICAgICAgICAgICBsZXQgZm9ybUFycmF5ID0gZm9ybUJ1aWxkZXIuYXJyYXk8Rm9ybUdyb3VwPihbXSk7XHJcblxyXG4gICAgICAgICAgICBmb3JtR3JvdXAuYWRkQ29udHJvbChjb21wb25lbnQucGF0aCwgZm9ybUFycmF5KTtcclxuXHJcbiAgICAgICAgICAgIChmb3JtQXJyYXkgYXMgYW55KS5hZGROZXdJdGVtID0gZnVuY3Rpb24gKCk6IEZvcm1Hcm91cCB7XHJcbiAgICAgICAgICAgICAgbGV0IG5ld0dyb3VwID0gZm9ybUJ1aWxkZXIuZ3JvdXAoe30pO1xyXG4gICAgICAgICAgICAgIGNvbXBvbmVudC5yb3dzPy5mb3JFYWNoKChyb3c6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgZm9ybUNvbXBvbmVudC5hZGRDb250cm9scyhmb3JtQnVpbGRlciwgbmV3R3JvdXAsIHJvdy5jb21wb25lbnRzKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBmb3JtQXJyYXkucHVzaChuZXdHcm91cCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG5ld0dyb3VwO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChjb21wb25lbnQudHlwZSA9PT0gJ2dyb3VwJykge1xyXG4gICAgICAgICAgY29uc3QgY3VycmVudEdyb3VwID0gdGhpcy5hcHBseVBhdGgoZm9ybUJ1aWxkZXIsIGZvcm1Hcm91cCwgY29tcG9uZW50LnBhdGgpO1xyXG4gICAgICAgICAgY29tcG9uZW50LnJvd3M/LmZvckVhY2goKHJvdzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGZvcm1Db21wb25lbnQuYWRkQ29udHJvbHMoZm9ybUJ1aWxkZXIsIGN1cnJlbnRHcm91cCwgcm93LmNvbXBvbmVudHMpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGNvbXBvbmVudC5rZXkpIHtcclxuICAgICAgICAgIGxldCBkZWZhdWx0VmFsdWUgPSB0aGlzLmdldERlZmF1bHRWYWx1ZShjb21wb25lbnQpO1xyXG4gICAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHRoaXMuZ2V0VmFsaWRhdG9ycyhmb3JtR3JvdXAsIGNvbXBvbmVudCk7XHJcbiAgICAgICAgICBjb25zdCBvcHRpb25zOiBGb3JtQ29udHJvbE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6IHZhbGlkYXRvcnMgfHwgW10sXHJcbiAgICAgICAgICAgIHVwZGF0ZU9uOiB0aGlzLmdldFVwZGF0ZU9uKGNvbXBvbmVudCkgfHwgXCJjaGFuZ2VcIlxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtQnVpbGRlci5jb250cm9sKGRlZmF1bHRWYWx1ZSwgb3B0aW9ucyk7XHJcbiAgICAgICAgICBmb3JtR3JvdXAuYWRkQ29udHJvbChjb21wb25lbnQua2V5LCBjb250cm9sKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseVBhdGgoZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLCBmb3JtR3JvdXA6IEZvcm1Hcm91cCwgcGF0aDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXBhdGgpIHtcclxuICAgICAgcmV0dXJuIGZvcm1Hcm91cDtcclxuICAgIH1cclxuICAgIGxldCBjdXJyZW50R3JvdXA6IEZvcm1Hcm91cCA9IGZvcm1Hcm91cDtcclxuICAgIHRoaXMuc3BsaXRQYXRoKHBhdGgpLmZvckVhY2goKHNlZ21lbnQpID0+IHtcclxuICAgICAgY29uc3QgZXhpc3RHcm91cCA9IGN1cnJlbnRHcm91cC5nZXQoc2VnbWVudCk7XHJcbiAgICAgIGlmIChleGlzdEdyb3VwIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XHJcbiAgICAgICAgY3VycmVudEdyb3VwID0gZXhpc3RHcm91cDtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoZXhpc3RHcm91cCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNyZWF0ZSBmb3JtIGdyb3VwIGJlY2F1c2UgYW4gZWxlbWVudCB3aXRoIHBhdGggJHtzZWdtZW50fSBhbHJlYWR5IGV4aXN0c2ApO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHNlZ21lbnRHcm91cCA9IGZvcm1CdWlsZGVyLmdyb3VwKHt9KTtcclxuICAgICAgICBjdXJyZW50R3JvdXAuYWRkQ29udHJvbChzZWdtZW50LCBzZWdtZW50R3JvdXApO1xyXG4gICAgICAgIGN1cnJlbnRHcm91cCA9IHNlZ21lbnRHcm91cDtcclxuICAgICAgfSBcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGN1cnJlbnRHcm91cDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VmFsaWRhdG9ycyhmb3JtR3JvdXA6IEZvcm1Hcm91cCwgY29tcG9uZW50OiBhbnkpOiBWYWxpZGF0b3JGbltdIHwgbnVsbCB7XHJcblxyXG4gICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG5cclxuICAgIGlmIChjb21wb25lbnQ/LnZhbGlkYXRlPy5yZXF1aXJlZCA9PT0gdHJ1ZSkge1xyXG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbXBvbmVudC52YWxpZGF0aW9ucykpIHtcclxuICAgICAgaWYgKHZhbGlkYXRvcnMubGVuZ3RoID09IDApXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIHJldHVybiB2YWxpZGF0b3JzO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudC52YWxpZGF0aW9ucz8uZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5wcm9ncmFtbWFiaWxpdHlTZXJ2aWNlLmlzRXhwcmVzc2lvbihpdGVtLmV4cHJlc3Npb24pKVxyXG4gICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09IFwidmFsaWRhdGVcIikge1xyXG4gICAgICAgIHZhbGlkYXRvcnMucHVzaCh0aGlzLnZhbGlkYXRlRm4oZm9ybUdyb3VwLCBpdGVtKSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoaXRlbS50eXBlID09PSBcImludmFsaWRhdGVcIikge1xyXG4gICAgICAgIHZhbGlkYXRvcnMucHVzaCh0aGlzLmludmFsaWRhdGVGbihmb3JtR3JvdXAsIGl0ZW0pKTtcclxuICAgICAgfSAgICAgIFxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHZhbGlkYXRvcnMubGVuZ3RoID09IDApXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgIHJldHVybiB2YWxpZGF0b3JzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0ZUZuKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBpdGVtOiBhbnkpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuXHJcbiAgICAgIC8vaWYgKCFjb250cm9sLnRvdWNoZWQpXHJcbiAgICAgIC8vICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgIHZhciB2YWxpZCA9IHRoaXMucHJvZ3JhbW1hYmlsaXR5U2VydmljZS5ldmFsdWF0ZVVuYXJ5KGZvcm1Hcm91cCwgaXRlbS5leHByZXNzaW9uLCBjb250cm9sLnZhbHVlKTtcclxuXHJcbiAgICAgIGlmICghdmFsaWQpIHtcclxuICAgICAgICByZXR1cm4geyBlcnJvcjogdHJ1ZSwgbWVzc2FnZTogaXRlbS5tZXNzYWdlIH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbnZhbGlkYXRlRm4oZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGl0ZW06IGFueSk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xyXG5cclxuICAgICAgLy9pZiAoIWNvbnRyb2wudG91Y2hlZClcclxuICAgICAgLy8gIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgdmFyIGludmFsaWQgPSB0aGlzLnByb2dyYW1tYWJpbGl0eVNlcnZpY2UuZXZhbHVhdGVVbmFyeShmb3JtR3JvdXAsIGl0ZW0uZXhwcmVzc2lvbiwgY29udHJvbC52YWx1ZSk7XHJcblxyXG4gICAgICBpZiAoaW52YWxpZCkge1xyXG4gICAgICAgIHJldHVybiB7IGVycm9yOiB0cnVlLCBtZXNzYWdlOiBpdGVtLm1lc3NhZ2UgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzRm9ybUNvbXBvbmVudChjb21wb25lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgc3dpdGNoIChjb21wb25lbnQudHlwZSkge1xyXG4gICAgICBjYXNlIFwiY2hlY2tib3hcIjpcclxuICAgICAgY2FzZSBcImNoZWNrbGlzdFwiOlxyXG4gICAgICBjYXNlIFwiZGF0ZXRpbWVcIjpcclxuICAgICAgY2FzZSBcImR5bmFtaWNsaXN0XCI6XHJcbiAgICAgIGNhc2UgXCJmaWxlcGlja2VyXCI6XHJcbiAgICAgIGNhc2UgXCJncm91cFwiOlxyXG4gICAgICBjYXNlIFwibnVtYmVyXCI6XHJcbiAgICAgIGNhc2UgXCJyYWRpb1wiOlxyXG4gICAgICBjYXNlIFwic2VsZWN0XCI6XHJcbiAgICAgIGNhc2UgXCJ0YWdsaXN0XCI6XHJcbiAgICAgIGNhc2UgXCJ0ZXh0YXJlYVwiOlxyXG4gICAgICBjYXNlIFwidGV4dGZpZWxkXCI6XHJcbiAgICAgIGNhc2UgXCJyYW5nZVwiOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VXBkYXRlT24oY29tcG9uZW50OiBhbnkpOiBhbnkge1xyXG4gICAgc3dpdGNoIChjb21wb25lbnQudHlwZSkge1xyXG4gICAgICBjYXNlIFwibnVtYmVyXCI6XHJcbiAgICAgIGNhc2UgXCJ0ZXh0YXJlYVwiOlxyXG4gICAgICBjYXNlIFwidGV4dGZpZWxkXCI6XHJcbiAgICAgICAgcmV0dXJuIFwiYmx1clwiO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREZWZhdWx0VmFsdWUoY29tcG9uZW50OiBhbnkpOiBhbnkge1xyXG4gICAgc3dpdGNoIChjb21wb25lbnQudHlwZSkge1xyXG4gICAgICBjYXNlIFwidGV4dGFyZWFcIjpcclxuICAgICAgY2FzZSBcInRleHRmaWVsZFwiOlxyXG4gICAgICBjYXNlIFwicmFkaW9cIjpcclxuICAgICAgY2FzZSBcInNlbGVjdFwiOlxyXG4gICAgICAgIHJldHVybiBjb21wb25lbnQuZGVmYXVsdFZhbHVlIGFzIHN0cmluZztcclxuICAgICAgY2FzZSBcIm51bWJlclwiOlxyXG4gICAgICAgIHJldHVybiBjb21wb25lbnQuZGVmYXVsdFZhbHVlIGFzIG51bWJlcjtcclxuICAgICAgY2FzZSBcImNoZWNrYm94XCI6XHJcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5kZWZhdWx0VmFsdWUgYXMgYm9vbGVhbjtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3BsaXRQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZ1tdIHtcclxuICAgIGlmICghcGF0aCkge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGF0aFxyXG4gICAgICAuc3BsaXQoJy4nKVxyXG4gICAgICAubWFwKHNlZ21lbnQgPT4gc2VnbWVudC50cmltKCkpXHJcbiAgICAgIC5maWx0ZXIoc2VnbWVudCA9PiBzZWdtZW50Lmxlbmd0aCA+IDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXRjaFZhbHVlKGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogYW55KSB7XHJcbiAgICBwYXRjaEZvcm0oZm9ybUdyb3VwLCB2YWx1ZSk7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCIgY2xhc3M9XCJuZ3NcIj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG5cclxuICAgICAgPCEtLSAjcmVnaW9uIHByb2dyZXNzIC0tPlxyXG4gICAgICA8bmd4LXNpcmlvLXN0ZXBwZXItcHJvZ3Jlc3MtYmFyICpuZ0lmPVwic2hvd1Byb2dyZXNzXCJcclxuICAgICAgICAoZXZlbnRDbGljayk9XCJhY3RpdmF0ZUZvcm0oJGV2ZW50LmRhdGEubGFiZWwpXCIgXHJcbiAgICAgICAgW2hhc0Ryb3Bkb3duXT1cInRydWVcIiBcclxuICAgICAgICBbZHJvcERvd25MYWJlbF09XCJUZXh0cy5TaG93XCI+XHJcbiAgICAgICAgPG5neC1zaXJpby1zdGVwcGVyLXByb2dyZXNzLWl0ZW0gKm5nRm9yPVwibGV0IGZvcm0gb2YgZm9ybXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoYXNOYXZpZ2F0aW9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0dXNdPVwiZ2V0Rm9ybVN0YXR1cyhmb3JtKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImZvcm0udGl0bGVcIiAvPlxyXG4gICAgICA8L25neC1zaXJpby1zdGVwcGVyLXByb2dyZXNzLWJhcj5cclxuICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dOYXZcIj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcblxyXG4gICAgICAgICAgPCEtLSAjcmVnaW9uIHNpZGVuYXYgLS0+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3NpZGVuYXZUZW1wbGF0ZT5cclxuICAgICAgICAgICAgPG5neC1zaXJpby1zaWRlbmF2PlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZvcm0gb2YgZm9ybXMsIGxldCBzZWN0aW9uSW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgPG5neC1zaXJpby1zaWRlbmF2LWl0ZW0gW2lzQWN0aXZlXT1cImFjdGl2ZU5hdiA9PSBzZWN0aW9uSW5kZXhcIiAoY2xpY2spPVwiYWN0aXZlTmF2ID0gc2VjdGlvbkluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IGZvcm0udGl0bGUgfX1cclxuICAgICAgICAgICAgICAgIDwvbmd4LXNpcmlvLXNpZGVuYXYtaXRlbT5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZ3gtc2lyaW8tc2lkZW5hdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgPG5neC1zaXJpby1zaWRlbmF2LW1vYmlsZSBjbGFzcz1cImQtYmxvY2sgZC1sZy1ub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Blbk1lbnVMYWJlbD1cIkFwcmkgTWVudVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5NZW51QXJpYUxhYmVsPVwiQXByaSBNZW51XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VNZW51TGFiZWw9XCJDaGl1ZGkgTWVudVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlTWVudUFyaWFMYWJlbD1cIkNoaXVkaSBNZW51XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaWRlbmF2VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmd4LXNpcmlvLXNpZGVuYXYtbW9iaWxlPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtbm9uZSBkLWxnLWJsb2NrXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaWRlbmF2VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VwYXJhdG9yLWhvcml6b250YWxcIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtZWxlbWVudC1mb3JtXCIgW25nQ2xhc3NdPVwic2hvd05hdiA/ICdjb2wtbWQtMTEnIDogJ2NvbC1tZC0xNidcIj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZm9ybSBvZiBmb3JtcywgbGV0IHNlY3Rpb25JbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlTmF2ID09IHNlY3Rpb25JbmRleFwiXHJcbiAgICAgICAgICAgICAgICNkZWZhdWx0XHJcbiAgICAgICAgICAgICAgIFtyZWdpc3Rlcl09XCJmb3JtXCJcclxuICAgICAgICAgICAgICAgW2NvbXBvbmVudFJlZl09XCJkZWZhdWx0XCI+XHJcbiAgICAgICAgICAgIDxhcHAtZHluYW1pYy1maWVsZHMgW2Zvcm1Hcm91cF09XCJnZXRGb3JtR3JvdXAoZm9ybS5wYXRoKVwiIFtyb3dzXT1cImZvcm0ucm93c1wiPjwvYXBwLWR5bmFtaWMtZmllbGRzPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93TmF2QnV0dG9uXCI+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBzZWN0aW9uLW5hdnNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04IGNvbC1tZC04XCI+XHJcbiAgICAgICAgICAgICAgPG5neC1zaXJpby1idXR0b24gW2NvbG9yXT1cIm51bGxcIiBbZGlzYWJsZWRdPVwiIWNhbk5leHQoKVwiIChjbGljayk9XCJnb05leHQoKVwiIGNsYXNzPVwibmV4dFNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgIHt7IFRleHRzLk5leHRTZWN0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhLXNvbGlkIGZhLWNoZXZyb24tcmlnaHRcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvbmd4LXNpcmlvLWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOCBjb2wtbWQtOFwiPlxyXG4gICAgICAgICAgICAgIDxuZ3gtc2lyaW8tYnV0dG9uIFtjb2xvcl09XCJudWxsXCIgW2Rpc2FibGVkXT1cIiFjYW5QcmV2aW91cygpXCIgKGNsaWNrKT1cImdvUHJldmlvdXMoKVwiIGNsYXNzPVwicHJldlNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmEtc29saWQgZmEtY2hldnJvbi1sZWZ0XCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEwcHhcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICB7eyBUZXh0cy5QcmV2aW91c1NlY3Rpb24gfX1cclxuICAgICAgICAgICAgICA8L25neC1zaXJpby1idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Zvcm0+XHJcblxyXG5cclxuXHJcbiJdfQ==
|
|
@@ -8,6 +8,11 @@ export const Texts = {
|
|
|
8
8
|
PreviousSection: "Sezione precedente",
|
|
9
9
|
NextSection: "Sezione successiva",
|
|
10
10
|
Show: "Visualizza",
|
|
11
|
-
|
|
11
|
+
Remove: "Rimuovi",
|
|
12
|
+
Close: "Chiudi",
|
|
13
|
+
Name: "Nome",
|
|
14
|
+
Size: "Dimensione",
|
|
15
|
+
Type: "Tipo",
|
|
16
|
+
Actions: "Azioni"
|
|
12
17
|
};
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvbG9jYWxlL2xvY2FsZS1pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUc7SUFDbkIsWUFBWSxFQUFFLHVCQUF1QjtJQUNyQyxNQUFNLEVBQUUsUUFBUTtJQUNoQixVQUFVLEVBQUUsbUJBQW1CO0lBQy9CLFdBQVcsRUFBRSxpQkFBaUI7SUFDOUIsT0FBTyxFQUFFLFVBQVU7SUFDbkIsVUFBVSxFQUFFLFNBQVM7SUFDckIsZUFBZSxFQUFFLG9CQUFvQjtJQUNyQyxXQUFXLEVBQUUsb0JBQW9CO0lBQ2pDLElBQUksRUFBRSxZQUFZO0lBQ2xCLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLEtBQUssRUFBRSxRQUFRO0lBQ2YsSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsWUFBWTtJQUNsQixJQUFJLEVBQUUsTUFBTTtJQUNaLE9BQU8sRUFBRSxRQUFRO0NBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgVGV4dHMgPSB7XHJcbiAgVHlwZVRvU2VhcmNoOiBcIkRpZ2l0YSBwZXIgY2VyY2FyZS4uLlwiLFxyXG4gIFVwbG9hZDogXCJVcGxvYWRcIixcclxuICBTY3JvbGxMZWZ0OiBcIlNjb3JyaSBhIHNpbmlzdHJhXCIsXHJcbiAgU2Nyb2xsUmlnaHQ6IFwiU2NvcnJpIGEgZGVzdHJhXCIsXHJcbiAgQWRkSXRlbTogXCJBZ2dpdW5naVwiLFxyXG4gIFJlbW92ZUl0ZW06IFwiUmltdW92aVwiLFxyXG4gIFByZXZpb3VzU2VjdGlvbjogXCJTZXppb25lIHByZWNlZGVudGVcIixcclxuICBOZXh0U2VjdGlvbjogXCJTZXppb25lIHN1Y2Nlc3NpdmFcIixcclxuICBTaG93OiBcIlZpc3VhbGl6emFcIixcclxuICBSZW1vdmU6IFwiUmltdW92aVwiLFxyXG4gIENsb3NlOiBcIkNoaXVkaVwiLFxyXG4gIE5hbWU6IFwiTm9tZVwiLFxyXG4gIFNpemU6IFwiRGltZW5zaW9uZVwiLFxyXG4gIFR5cGU6IFwiVGlwb1wiLFxyXG4gIEFjdGlvbnM6IFwiQXppb25pXCJcclxufTtcclxuIl19
|
|
@@ -45,14 +45,14 @@ export class ProgrammabilityService {
|
|
|
45
45
|
}
|
|
46
46
|
return value ?? "";
|
|
47
47
|
}
|
|
48
|
-
evaluateBoolean(formGroup, value) {
|
|
48
|
+
evaluateBoolean(formGroup, value, options = {}) {
|
|
49
49
|
if (typeof value === 'boolean') {
|
|
50
50
|
return value;
|
|
51
51
|
}
|
|
52
52
|
else if (typeof value === 'string') {
|
|
53
53
|
const strValue = value;
|
|
54
54
|
if (this.isExpression(strValue)) {
|
|
55
|
-
return this.evalExpression(formGroup, this.getExpression(strValue));
|
|
55
|
+
return this.evalExpression(formGroup, this.getExpression(strValue), options);
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
return null;
|
|
@@ -69,9 +69,9 @@ export class ProgrammabilityService {
|
|
|
69
69
|
}
|
|
70
70
|
return null;
|
|
71
71
|
}
|
|
72
|
-
evaluate(formGroup, value,
|
|
72
|
+
evaluate(formGroup, value, options = {}) {
|
|
73
73
|
if (this.isExpression(value)) {
|
|
74
|
-
return this.evalExpression(formGroup, this.getExpression(value),
|
|
74
|
+
return this.evalExpression(formGroup, this.getExpression(value), options);
|
|
75
75
|
}
|
|
76
76
|
return null;
|
|
77
77
|
}
|
|
@@ -100,23 +100,24 @@ export class ProgrammabilityService {
|
|
|
100
100
|
return null;
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
|
-
evalExpression(formGroup, expression,
|
|
103
|
+
evalExpression(formGroup, expression, options = {}) {
|
|
104
104
|
const evaluate = () => {
|
|
105
105
|
try {
|
|
106
|
-
return this.feelService.evalExpression(expression, this.getContext(formGroup));
|
|
106
|
+
return this.feelService.evalExpression(expression, this.getContext(formGroup, options));
|
|
107
107
|
}
|
|
108
108
|
catch (e) {
|
|
109
109
|
console.log(expression, e);
|
|
110
110
|
return null;
|
|
111
111
|
}
|
|
112
112
|
};
|
|
113
|
+
const cacheable = options.cacheable ?? this.cacheable;
|
|
113
114
|
if (cacheable) {
|
|
114
115
|
const watchKey = `:watch(${expression})`;
|
|
115
|
-
this.weakService.call(
|
|
116
|
-
this.watchExpression(formGroup, expression, () => this.weakService.invalidate(
|
|
116
|
+
this.weakService.call(this, watchKey, () => {
|
|
117
|
+
this.watchExpression(formGroup, expression, () => this.weakService.invalidate(this, expression));
|
|
117
118
|
return true;
|
|
118
119
|
});
|
|
119
|
-
return this.weakService.call(
|
|
120
|
+
return this.weakService.call(this, expression, evaluate);
|
|
120
121
|
}
|
|
121
122
|
else {
|
|
122
123
|
return evaluate();
|
|
@@ -130,7 +131,7 @@ export class ProgrammabilityService {
|
|
|
130
131
|
return null;
|
|
131
132
|
}
|
|
132
133
|
}
|
|
133
|
-
createProxy(formGroup) {
|
|
134
|
+
createProxy(formGroup, proxyFn = null) {
|
|
134
135
|
if (!formGroup) {
|
|
135
136
|
return null;
|
|
136
137
|
}
|
|
@@ -145,6 +146,8 @@ export class ProgrammabilityService {
|
|
|
145
146
|
notifyWarning: (message, delay) => this.toastService.notifyWarning(message, delay),
|
|
146
147
|
notifyError: (message, delay) => this.toastService.notifyError(message, delay)
|
|
147
148
|
};
|
|
149
|
+
if (proxyFn)
|
|
150
|
+
proxyFn(options);
|
|
148
151
|
return this.proxyService.getProxy(formGroup.value, options);
|
|
149
152
|
}
|
|
150
153
|
getParent(formGroup) {
|
|
@@ -154,9 +157,9 @@ export class ProgrammabilityService {
|
|
|
154
157
|
}
|
|
155
158
|
return parent;
|
|
156
159
|
}
|
|
157
|
-
getContext(control) {
|
|
160
|
+
getContext(control, options = {}) {
|
|
158
161
|
const formGroup = control;
|
|
159
|
-
const context = this.createProxy(formGroup);
|
|
162
|
+
const context = this.createProxy(formGroup, options.proxyFn);
|
|
160
163
|
return context;
|
|
161
164
|
}
|
|
162
165
|
watchExpression(formGroup, expression, callback) {
|
|
@@ -166,22 +169,18 @@ export class ProgrammabilityService {
|
|
|
166
169
|
}
|
|
167
170
|
;
|
|
168
171
|
watchDependencies(formGroup, dependencies, callback) {
|
|
169
|
-
const subscriptions = [];
|
|
170
|
-
const scopeName = "scope";
|
|
171
172
|
const parentName = "parent";
|
|
172
|
-
const
|
|
173
|
-
|
|
173
|
+
const subscribe = (control) => {
|
|
174
|
+
control.valueChanges
|
|
174
175
|
.pipe(takeUntil(this.destroy$))
|
|
175
176
|
.subscribe(() => {
|
|
176
177
|
setTimeout(() => {
|
|
177
178
|
callback();
|
|
178
179
|
});
|
|
179
|
-
})
|
|
180
|
+
});
|
|
180
181
|
};
|
|
181
182
|
for (const dependence of dependencies) {
|
|
182
183
|
if (Array.isArray(dependence)) {
|
|
183
|
-
if (dependence[0] === scopeName)
|
|
184
|
-
continue;
|
|
185
184
|
let targetForm = formGroup;
|
|
186
185
|
let controlPath = dependence;
|
|
187
186
|
while (controlPath.length > 0 && controlPath[0] === parentName) {
|
|
@@ -193,20 +192,17 @@ export class ProgrammabilityService {
|
|
|
193
192
|
if (controlPath.length > 0 && targetForm) {
|
|
194
193
|
const control = targetForm.get(controlPath);
|
|
195
194
|
if (control) {
|
|
196
|
-
|
|
195
|
+
subscribe(control);
|
|
197
196
|
}
|
|
198
197
|
}
|
|
199
198
|
}
|
|
200
199
|
else {
|
|
201
|
-
if (dependence === scopeName)
|
|
202
|
-
continue;
|
|
203
200
|
const control = formGroup.get(dependence);
|
|
204
201
|
if (control) {
|
|
205
|
-
|
|
202
|
+
subscribe(control);
|
|
206
203
|
}
|
|
207
204
|
}
|
|
208
205
|
}
|
|
209
|
-
return subscriptions;
|
|
210
206
|
}
|
|
211
207
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProgrammabilityService, deps: [{ token: i1.FeelService }, { token: i2.WeakService }, { token: i3.ProxyService }, { token: i4.ToastService }, { token: i5.RegisterService, optional: true }, { token: i6.ScopeService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
212
208
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProgrammabilityService });
|
|
@@ -218,4 +214,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
218
214
|
}] }, { type: i6.ScopeService, decorators: [{
|
|
219
215
|
type: Optional
|
|
220
216
|
}] }] });
|
|
221
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9zZXJ2aWNlcy9wcm9ncmFtbWFiaWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQW1CLFNBQVMsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBR3ZFLE9BQU8sRUFBZ0IsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJdkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQUd4RCxNQUFNLE9BQU8sc0JBQXNCO0lBRWI7SUFDUjtJQUNBO0lBQ0E7SUFDWTtJQUNBO0lBTHhCLFlBQW9CLFdBQXdCLEVBQ2hDLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLFlBQTBCLEVBQ2QsUUFBeUIsRUFDekIsS0FBbUI7UUFMdkIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDaEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixVQUFLLEdBQUwsS0FBSyxDQUFjO0lBQ3ZDLENBQUM7SUFFRyxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUV2QyxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBbUI7UUFDOUIsT0FBTyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUFBLENBQUM7SUFFRixhQUFhLENBQUMsSUFBbUI7UUFDL0IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztZQUN6QixPQUFPLElBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQUEsQ0FBQztJQUVGLGNBQWMsQ0FBQyxTQUFvQixFQUFFLEtBQW9CO1FBQ3ZELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBVyxDQUFDO1FBQzdFLENBQUM7UUFDRCxPQUFPLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGVBQWUsQ0FBQyxTQUFvQixFQUFFLEtBQThCO1FBQ2xFLElBQUksT0FBTyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDL0IsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO2FBQ0ksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxNQUFNLFFBQVEsR0FBVyxLQUFLLENBQUM7WUFDL0IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBWSxDQUFDO1lBQ2pGLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsY0FBYyxDQUFDLFNBQW9CLEVBQUUsS0FBNkI7UUFDaEUsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7YUFDSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ25DLE1BQU0sUUFBUSxHQUFXLEtBQUssQ0FBQztZQUMvQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDaEMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFXLENBQUM7WUFDaEYsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxRQUFRLENBQUMsU0FBb0IsRUFBRSxLQUFvQixFQUFFLFlBQW9CLElBQUksQ0FBQyxTQUFTO1FBQ3JGLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM5RSxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsU0FBb0IsRUFBRSxLQUFvQjtRQUV6RCxJQUFJLFFBQVEsR0FBa0IsSUFBSSxDQUFDO1FBRW5DLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdCLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFXLENBQUM7UUFDakYsQ0FBQzthQUNJLENBQUM7WUFDSixRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ25CLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsYUFBYSxDQUFDLFNBQW9CLEVBQUUsS0FBb0IsRUFBRSxLQUFVO1FBQ2xFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sU0FBUyxHQUFZLElBQUksQ0FBQztJQUUxQixhQUFhLENBQUMsU0FBb0IsRUFBRSxVQUFrQixFQUFFLEtBQVU7UUFDeEUsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQzVDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQzFCLEtBQUssQ0FBQyxDQUFDO1FBQ2IsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRU8sY0FBYyxDQUFDLFNBQW9CLEVBQUUsVUFBa0IsRUFBRSxZQUFxQixJQUFJLENBQUMsU0FBUztRQUNsRyxNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUU7WUFDcEIsSUFBSSxDQUFDO2dCQUNILE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUM3QyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7WUFDakMsQ0FBQztZQUNELE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxNQUFNLFFBQVEsR0FBRyxVQUFVLFVBQVUsR0FBRyxDQUFDO1lBRXpDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUM5QyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQ3RDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUM5RCxPQUFPLElBQUksQ0FBQztZQUNkLENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7YUFDSSxDQUFDO1lBQ0osT0FBTyxRQUFRLEVBQUUsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUVPLFlBQVksQ0FBQyxTQUFvQixFQUFFLFVBQWtCO1FBQzNELElBQUksQ0FBQztZQUNILE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRU8sV0FBVyxDQUFDLFNBQTJCO1FBRTdDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFbkMsT0FBTyxDQUFDLE1BQU0sR0FBRztZQUNmLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztZQUNqQyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO1lBQ3pELFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQ3RELFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQzVELFVBQVUsRUFBRSxDQUFDLE9BQWUsRUFBRSxLQUFjLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUM7WUFDN0YsYUFBYSxFQUFFLENBQUMsT0FBZSxFQUFFLEtBQWMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQztZQUNuRyxhQUFhLEVBQUUsQ0FBQyxPQUFlLEVBQUUsS0FBYyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDO1lBQ25HLFdBQVcsRUFBRSxDQUFDLE9BQWUsRUFBRSxLQUFjLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUM7U0FDaEcsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU8sU0FBUyxDQUFDLFNBQW9CO1FBQ3BDLElBQUksTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFFOUIsT0FBTyxNQUFNLFlBQVksU0FBUyxFQUFFLENBQUM7WUFDbkMsTUFBTSxHQUFHLE1BQU0sRUFBRSxNQUFNLENBQUM7UUFDMUIsQ0FBQztRQUVELE9BQU8sTUFBMEIsQ0FBQztJQUNwQyxDQUFDO0lBRU8sVUFBVSxDQUFDLE9BQXdCO1FBRXpDLE1BQU0sU0FBUyxHQUFHLE9BQTJCLENBQUM7UUFFOUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQXdCLENBQUM7UUFFbkUsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVPLGVBQWUsQ0FBQyxTQUFvQixFQUFFLFVBQWtCLEVBQUUsUUFBb0I7UUFDcEYsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUFBLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxTQUFvQixFQUFFLFlBQW1DLEVBQUUsUUFBb0I7UUFDdkcsTUFBTSxhQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUN6QyxNQUFNLFNBQVMsR0FBVyxPQUFPLENBQUM7UUFDbEMsTUFBTSxVQUFVLEdBQVcsUUFBUSxDQUFDO1FBRXBDLE1BQU0sY0FBYyxHQUFHLENBQUMsT0FBd0IsRUFBRSxFQUFFO1lBQ2xELGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVk7aUJBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUM5QixTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsUUFBUSxFQUFFLENBQUM7Z0JBQ2IsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ1AsQ0FBQyxDQUFBO1FBRUQsS0FBSyxNQUFNLFVBQVUsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUN0QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUztvQkFDN0IsU0FBUztnQkFFWCxJQUFJLFVBQVUsR0FBMkIsU0FBUyxDQUFDO2dCQUNuRCxJQUFJLFdBQVcsR0FBRyxVQUFVLENBQUM7Z0JBRTdCLE9BQU8sV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUMvRCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU07d0JBQ3BCLE1BQU07b0JBQ1IsVUFBVSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7b0JBQy9CLFdBQVcsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyQyxDQUFDO2dCQUVELElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksVUFBVSxFQUFFLENBQUM7b0JBQ3pDLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQzVDLElBQUksT0FBTyxFQUFFLENBQUM7d0JBQ1osY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUMxQixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxVQUFVLEtBQUssU0FBUztvQkFDMUIsU0FBUztnQkFFWCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNaLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDMUIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQzt3R0F2T1Usc0JBQXNCOzRHQUF0QixzQkFBc0I7OzRGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVU7OzBCQU9KLFFBQVE7OzBCQUNSLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZlZWxTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmVlbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2NvcGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc2NvcGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFByb3h5U2VydmljZSwgUHJveHlPcHRpb25zIH0gZnJvbSAnLi4vc2VydmljZXMvcHJveHkuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlZ2lzdGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JlZ2lzdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV2Vha1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy93ZWFrLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwsIFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBQcm9ncmFtbWFiaWxpdHlTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmZWVsU2VydmljZTogRmVlbFNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSB3ZWFrU2VydmljZTogV2Vha1NlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBwcm94eVNlcnZpY2U6IFByb3h5U2VydmljZVxyXG4gICAgLCBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlXHJcbiAgICAsIEBPcHRpb25hbCgpIHByaXZhdGUgcmVnaXN0ZXI6IFJlZ2lzdGVyU2VydmljZVxyXG4gICAgLCBAT3B0aW9uYWwoKSBwcml2YXRlIHNjb3BlOiBTY29wZVNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIGlzRXhwcmVzc2lvbih0ZXh0OiBzdHJpbmcgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGV4dCAhPSBudWxsICYmIHRleHQuc3RhcnRzV2l0aChcIj1cIik7XHJcbiAgfTtcclxuXHJcbiAgZ2V0RXhwcmVzc2lvbih0ZXh0OiBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbih0ZXh0KSlcclxuICAgICAgcmV0dXJuIHRleHQhLnN1YnN0cmluZygxKTtcclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH07XHJcblxyXG4gIGV2YWx1YXRlU3RyaW5nKGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmV2YWxFeHByZXNzaW9uKGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHZhbHVlKSkgYXMgc3RyaW5nO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlID8/IFwiXCI7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZUJvb2xlYW4oZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHZhbHVlOiBib29sZWFuIHwgc3RyaW5nIHwgbnVsbCk6IGJvb2xlYW4gfCBudWxsIHtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGNvbnN0IHN0clZhbHVlOiBzdHJpbmcgPSB2YWx1ZTtcclxuICAgICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHN0clZhbHVlKSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmV2YWxFeHByZXNzaW9uKGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHN0clZhbHVlKSkgYXMgYm9vbGVhbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZU51bWJlcihmb3JtR3JvdXA6IEZvcm1Hcm91cCwgdmFsdWU6IG51bWJlciB8IHN0cmluZyB8IG51bGwpOiBudW1iZXIgfCBudWxsIHtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgY29uc3Qgc3RyVmFsdWU6IHN0cmluZyA9IHZhbHVlO1xyXG4gICAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24oc3RyVmFsdWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXZhbEV4cHJlc3Npb24oZm9ybUdyb3VwLCB0aGlzLmdldEV4cHJlc3Npb24oc3RyVmFsdWUpKSBhcyBudW1iZXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGUoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHZhbHVlOiBzdHJpbmcgfCBudWxsLCBjYWNoZWFibGU6Ym9vbGVhbiA9IHRoaXMuY2FjaGVhYmxlKTogYW55IHtcclxuICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbih2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZXZhbEV4cHJlc3Npb24oZm9ybUdyb3VwLCB0aGlzLmdldEV4cHJlc3Npb24odmFsdWUpLCBjYWNoZWFibGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZVRlbXBsYXRlKGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogc3RyaW5nIHwgbnVsbCk6IGFueSB7XHJcblxyXG4gICAgbGV0IHRlbXBsYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24odmFsdWUpKSB7XHJcbiAgICAgIHRlbXBsYXRlID0gdGhpcy5ldmFsRXhwcmVzc2lvbihmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSkpIGFzIHN0cmluZztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0ZW1wbGF0ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmV2YWxUZW1wbGF0ZShmb3JtR3JvdXAsIHRlbXBsYXRlID8/IFwiXCIpO1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGVVbmFyeShmb3JtR3JvdXA6IEZvcm1Hcm91cCwgdmFsdWU6IHN0cmluZyB8IG51bGwsIGlucHV0OiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ldmFsVW5hcnlUZXN0KGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHZhbHVlKSwgaW5wdXQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhY2hlYWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIHByaXZhdGUgZXZhbFVuYXJ5VGVzdChmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZXhwcmVzc2lvbjogc3RyaW5nLCBpbnB1dDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gdGhpcy5mZWVsU2VydmljZS5ldmFsVW5hcnlUZXN0KGV4cHJlc3Npb25cclxuICAgICAgICAsIHRoaXMuZ2V0Q29udGV4dChmb3JtR3JvdXApXHJcbiAgICAgICAgLCBpbnB1dCk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBldmFsRXhwcmVzc2lvbihmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZXhwcmVzc2lvbjogc3RyaW5nLCBjYWNoZWFibGU6IGJvb2xlYW4gPSB0aGlzLmNhY2hlYWJsZSk6IGFueSB7XHJcbiAgICBjb25zdCBldmFsdWF0ZSA9ICgpID0+IHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mZWVsU2VydmljZS5ldmFsRXhwcmVzc2lvbihleHByZXNzaW9uXHJcbiAgICAgICAgICAsIHRoaXMuZ2V0Q29udGV4dChmb3JtR3JvdXApKVxyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXhwcmVzc2lvbiwgZSk7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgaWYgKGNhY2hlYWJsZSkge1xyXG4gICAgICBjb25zdCB3YXRjaEtleSA9IGA6d2F0Y2goJHtleHByZXNzaW9ufSlgO1xyXG5cclxuICAgICAgdGhpcy53ZWFrU2VydmljZS5jYWxsKGZvcm1Hcm91cCwgd2F0Y2hLZXksICgpID0+IHtcclxuICAgICAgICB0aGlzLndhdGNoRXhwcmVzc2lvbihmb3JtR3JvdXAsIGV4cHJlc3Npb25cclxuICAgICAgICAgICwgKCkgPT4gdGhpcy53ZWFrU2VydmljZS5pbnZhbGlkYXRlKGZvcm1Hcm91cCwgZXhwcmVzc2lvbikpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLndlYWtTZXJ2aWNlLmNhbGwoZm9ybUdyb3VwLCBleHByZXNzaW9uLCBldmFsdWF0ZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIGV2YWx1YXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV2YWxUZW1wbGF0ZShmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZXhwcmVzc2lvbjogc3RyaW5nKTogYW55IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZlZWxTZXJ2aWNlLmV2YWxUZW1wbGF0ZShleHByZXNzaW9uXHJcbiAgICAgICAgLCB0aGlzLmdldENvbnRleHQoZm9ybUdyb3VwKSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVQcm94eShmb3JtR3JvdXA6IEZvcm1Hcm91cCB8IG51bGwpOiBhbnkge1xyXG5cclxuICAgIGlmICghZm9ybUdyb3VwKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9wdGlvbnMgPSBuZXcgUHJveHlPcHRpb25zKCk7XHJcblxyXG4gICAgb3B0aW9ucy5leHRlbmQgPSB7XHJcbiAgICAgIHBhcmVudDogdGhpcy5nZXRQYXJlbnQoZm9ybUdyb3VwKSxcclxuICAgICAgZ2V0Rm9ybUdyb3VwOiAoKSA9PiB0aGlzLnByb3h5U2VydmljZS5nZXRQcm94eShmb3JtR3JvdXApLFxyXG4gICAgICBnZXRTY29wZTogKCkgPT4gdGhpcy5zY29wZSA/IHRoaXMuc2NvcGUucHJveHkoKSA6IG51bGwsXHJcbiAgICAgIGNvbnRyb2xzOiAoKSA9PiB0aGlzLnJlZ2lzdGVyID8gdGhpcy5yZWdpc3Rlci5wcm94eSgpIDogbnVsbCxcclxuICAgICAgbm90aWZ5SW5mbzogKG1lc3NhZ2U6IHN0cmluZywgZGVsYXk/OiBudW1iZXIpID0+IHRoaXMudG9hc3RTZXJ2aWNlLm5vdGlmeUluZm8obWVzc2FnZSwgZGVsYXkpLFxyXG4gICAgICBub3RpZnlTdWNjZXNzOiAobWVzc2FnZTogc3RyaW5nLCBkZWxheT86IG51bWJlcikgPT4gdGhpcy50b2FzdFNlcnZpY2Uubm90aWZ5U3VjY2VzcyhtZXNzYWdlLCBkZWxheSksXHJcbiAgICAgIG5vdGlmeVdhcm5pbmc6IChtZXNzYWdlOiBzdHJpbmcsIGRlbGF5PzogbnVtYmVyKSA9PiB0aGlzLnRvYXN0U2VydmljZS5ub3RpZnlXYXJuaW5nKG1lc3NhZ2UsIGRlbGF5KSxcclxuICAgICAgbm90aWZ5RXJyb3I6IChtZXNzYWdlOiBzdHJpbmcsIGRlbGF5PzogbnVtYmVyKSA9PiB0aGlzLnRvYXN0U2VydmljZS5ub3RpZnlFcnJvcihtZXNzYWdlLCBkZWxheSlcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHRoaXMucHJveHlTZXJ2aWNlLmdldFByb3h5KGZvcm1Hcm91cC52YWx1ZSwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBhcmVudChmb3JtR3JvdXA6IEZvcm1Hcm91cCkgOiBGb3JtR3JvdXAgfCBudWxsIHtcclxuICAgIGxldCBwYXJlbnQgPSBmb3JtR3JvdXAucGFyZW50O1xyXG5cclxuICAgIHdoaWxlIChwYXJlbnQgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgcGFyZW50ID0gcGFyZW50Py5wYXJlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHBhcmVudCBhcyBGb3JtR3JvdXAgfCBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDb250ZXh0KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xyXG5cclxuICAgIGNvbnN0IGZvcm1Hcm91cCA9IGNvbnRyb2wgYXMgRm9ybUdyb3VwIHwgbnVsbDtcclxuICAgIFxyXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuY3JlYXRlUHJveHkoZm9ybUdyb3VwKSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cclxuICAgIHJldHVybiBjb250ZXh0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB3YXRjaEV4cHJlc3Npb24oZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGV4cHJlc3Npb246IHN0cmluZywgY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoZm9ybUdyb3VwKTtcclxuICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IHRoaXMuZmVlbFNlcnZpY2UuZ2V0RGVwZW5kZW5jaWVzKGV4cHJlc3Npb24sIGNvbnRleHQpO1xyXG4gICAgdGhpcy53YXRjaERlcGVuZGVuY2llcyhmb3JtR3JvdXAsIGRlcGVuZGVuY2llcywgY2FsbGJhY2spO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgd2F0Y2hEZXBlbmRlbmNpZXMoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGRlcGVuZGVuY2llczogKHN0cmluZyB8IHN0cmluZ1tdKVtdLCBjYWxsYmFjazogKCkgPT4gdm9pZCk6IFN1YnNjcmlwdGlvbltdIHtcclxuICAgIGNvbnN0IHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgICBjb25zdCBzY29wZU5hbWU6IHN0cmluZyA9IFwic2NvcGVcIjtcclxuICAgIGNvbnN0IHBhcmVudE5hbWU6IHN0cmluZyA9IFwicGFyZW50XCI7XHJcblxyXG4gICAgY29uc3QgaW52b2tlQ2FsbGJhY2sgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XHJcbiAgICAgIHN1YnNjcmlwdGlvbnMucHVzaChjb250cm9sLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSkpXHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChjb25zdCBkZXBlbmRlbmNlIG9mIGRlcGVuZGVuY2llcykge1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkZXBlbmRlbmNlKSkge1xyXG4gICAgICAgIGlmIChkZXBlbmRlbmNlWzBdID09PSBzY29wZU5hbWUpXHJcbiAgICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgICAgbGV0IHRhcmdldEZvcm06IEFic3RyYWN0Q29udHJvbCB8IG51bGwgPSBmb3JtR3JvdXA7XHJcbiAgICAgICAgbGV0IGNvbnRyb2xQYXRoID0gZGVwZW5kZW5jZTtcclxuXHJcbiAgICAgICAgd2hpbGUgKGNvbnRyb2xQYXRoLmxlbmd0aCA+IDAgJiYgY29udHJvbFBhdGhbMF0gPT09IHBhcmVudE5hbWUpIHtcclxuICAgICAgICAgIGlmICghdGFyZ2V0Rm9ybS5wYXJlbnQpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgdGFyZ2V0Rm9ybSA9IHRhcmdldEZvcm0ucGFyZW50O1xyXG4gICAgICAgICAgY29udHJvbFBhdGggPSBjb250cm9sUGF0aC5zbGljZSgxKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjb250cm9sUGF0aC5sZW5ndGggPiAwICYmIHRhcmdldEZvcm0pIHtcclxuICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0YXJnZXRGb3JtLmdldChjb250cm9sUGF0aCk7XHJcbiAgICAgICAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICAgICAgICBpbnZva2VDYWxsYmFjayhjb250cm9sKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGRlcGVuZGVuY2UgPT09IHNjb3BlTmFtZSlcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybUdyb3VwLmdldChkZXBlbmRlbmNlKTtcclxuICAgICAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICAgICAgaW52b2tlQ2FsbGJhY2soY29udHJvbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3Vic2NyaXB0aW9ucztcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9zZXJ2aWNlcy9wcm9ncmFtbWFiaWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQW1CLFNBQVMsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBR3ZFLE9BQU8sRUFBZ0IsWUFBWSxFQUFpQixNQUFNLDJCQUEyQixDQUFDO0FBSXRGLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQUcxQyxNQUFNLE9BQU8sc0JBQXNCO0lBRWI7SUFDUjtJQUNBO0lBQ0E7SUFDWTtJQUNBO0lBTHhCLFlBQW9CLFdBQXdCLEVBQ2hDLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLFlBQTBCLEVBQ2QsUUFBeUIsRUFDekIsS0FBbUI7UUFMdkIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDaEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixVQUFLLEdBQUwsS0FBSyxDQUFjO0lBQ3ZDLENBQUM7SUFFRyxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUV2QyxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBbUI7UUFDOUIsT0FBTyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENB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QUFHLENBQUMsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQy9ELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTTt3QkFDcEIsTUFBTTtvQkFDUixVQUFVLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztvQkFDL0IsV0FBVyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JDLENBQUM7Z0JBRUQsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztvQkFDekMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDNUMsSUFBSSxPQUFPLEVBQUUsQ0FBQzt3QkFDWixTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3JCLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNaLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDckIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzt3R0FyT1Usc0JBQXNCOzRHQUF0QixzQkFBc0I7OzRGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVU7OzBCQU9KLFFBQVE7OzBCQUNSLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZlZWxTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmVlbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2NvcGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc2NvcGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFByb3h5U2VydmljZSwgUHJveHlPcHRpb25zLCBQcm94eUNvbmZpZ0ZuIH0gZnJvbSAnLi4vc2VydmljZXMvcHJveHkuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlZ2lzdGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JlZ2lzdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV2Vha1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy93ZWFrLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUHJvZ3JhbW1hYmlsaXR5U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmVlbFNlcnZpY2U6IEZlZWxTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgd2Vha1NlcnZpY2U6IFdlYWtTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgcHJveHlTZXJ2aWNlOiBQcm94eVNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZVxyXG4gICAgLCBAT3B0aW9uYWwoKSBwcml2YXRlIHJlZ2lzdGVyOiBSZWdpc3RlclNlcnZpY2VcclxuICAgICwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBzY29wZTogU2NvcGVTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBpc0V4cHJlc3Npb24odGV4dDogc3RyaW5nIHwgbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRleHQgIT0gbnVsbCAmJiB0ZXh0LnN0YXJ0c1dpdGgoXCI9XCIpO1xyXG4gIH07XHJcblxyXG4gIGdldEV4cHJlc3Npb24odGV4dDogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24odGV4dCkpXHJcbiAgICAgIHJldHVybiB0ZXh0IS5zdWJzdHJpbmcoMSk7XHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9O1xyXG5cclxuICBldmFsdWF0ZVN0cmluZyhmb3JtR3JvdXA6IEZvcm1Hcm91cCwgdmFsdWU6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ldmFsRXhwcmVzc2lvbihmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSkpIGFzIHN0cmluZztcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZSA/PyBcIlwiO1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGVCb29sZWFuKGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogYm9vbGVhbiB8IHN0cmluZyB8IG51bGwsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHt9KTogYm9vbGVhbiB8IG51bGwge1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgY29uc3Qgc3RyVmFsdWU6IHN0cmluZyA9IHZhbHVlO1xyXG4gICAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24oc3RyVmFsdWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXZhbEV4cHJlc3Npb24oZm9ybUdyb3VwLCB0aGlzLmdldEV4cHJlc3Npb24oc3RyVmFsdWUpLCBvcHRpb25zKSBhcyBib29sZWFuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGV2YWx1YXRlTnVtYmVyKGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICBjb25zdCBzdHJWYWx1ZTogc3RyaW5nID0gdmFsdWU7XHJcbiAgICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbihzdHJWYWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ldmFsRXhwcmVzc2lvbihmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbihzdHJWYWx1ZSkpIGFzIG51bWJlcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZShmb3JtR3JvdXA6IEZvcm1Hcm91cCwgdmFsdWU6IHN0cmluZyB8IG51bGwsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHsgfSk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmV2YWxFeHByZXNzaW9uKGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHZhbHVlKSwgb3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGV2YWx1YXRlVGVtcGxhdGUoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHZhbHVlOiBzdHJpbmcgfCBudWxsKTogYW55IHtcclxuXHJcbiAgICBsZXQgdGVtcGxhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbih2YWx1ZSkpIHtcclxuICAgICAgdGVtcGxhdGUgPSB0aGlzLmV2YWxFeHByZXNzaW9uKGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHZhbHVlKSkgYXMgc3RyaW5nO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRlbXBsYXRlID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZXZhbFRlbXBsYXRlKGZvcm1Hcm91cCwgdGVtcGxhdGUgPz8gXCJcIik7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZVVuYXJ5KGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogc3RyaW5nIHwgbnVsbCwgaW5wdXQ6IGFueSk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmV2YWxVbmFyeVRlc3QoZm9ybUdyb3VwLCB0aGlzLmdldEV4cHJlc3Npb24odmFsdWUpLCBpbnB1dCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2FjaGVhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgcHJpdmF0ZSBldmFsVW5hcnlUZXN0KGZvcm1Hcm91cDogRm9ybUdyb3VwLCBleHByZXNzaW9uOiBzdHJpbmcsIGlucHV0OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZlZWxTZXJ2aWNlLmV2YWxVbmFyeVRlc3QoZXhwcmVzc2lvblxyXG4gICAgICAgICwgdGhpcy5nZXRDb250ZXh0KGZvcm1Hcm91cClcclxuICAgICAgICAsIGlucHV0KTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV2YWxFeHByZXNzaW9uKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBleHByZXNzaW9uOiBzdHJpbmcsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHt9KTogYW55IHtcclxuICAgIGNvbnN0IGV2YWx1YXRlID0gKCkgPT4ge1xyXG4gICAgICB0cnkge1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5mZWVsU2VydmljZS5ldmFsRXhwcmVzc2lvbihleHByZXNzaW9uXHJcbiAgICAgICAgICAsIHRoaXMuZ2V0Q29udGV4dChmb3JtR3JvdXAsIG9wdGlvbnMpKVxyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXhwcmVzc2lvbiwgZSk7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgY2FjaGVhYmxlID0gb3B0aW9ucy5jYWNoZWFibGUgPz8gdGhpcy5jYWNoZWFibGU7XHJcblxyXG4gICAgaWYgKGNhY2hlYWJsZSkge1xyXG4gICAgICBjb25zdCB3YXRjaEtleSA9IGA6d2F0Y2goJHtleHByZXNzaW9ufSlgO1xyXG5cclxuICAgICAgdGhpcy53ZWFrU2VydmljZS5jYWxsKHRoaXMsIHdhdGNoS2V5LCAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy53YXRjaEV4cHJlc3Npb24oZm9ybUdyb3VwLCBleHByZXNzaW9uXHJcbiAgICAgICAgICAsICgpID0+IHRoaXMud2Vha1NlcnZpY2UuaW52YWxpZGF0ZSh0aGlzLCBleHByZXNzaW9uKSk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMud2Vha1NlcnZpY2UuY2FsbCh0aGlzLCBleHByZXNzaW9uLCBldmFsdWF0ZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIGV2YWx1YXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV2YWxUZW1wbGF0ZShmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZXhwcmVzc2lvbjogc3RyaW5nKTogYW55IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZlZWxTZXJ2aWNlLmV2YWxUZW1wbGF0ZShleHByZXNzaW9uXHJcbiAgICAgICAgLCB0aGlzLmdldENvbnRleHQoZm9ybUdyb3VwKSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVQcm94eShmb3JtR3JvdXA6IEZvcm1Hcm91cCB8IG51bGxcclxuICAgICwgcHJveHlGbjogKChvcHRpb25zOiBQcm94eU9wdGlvbnMpID0+IHZvaWQpIHwgbnVsbCA9IG51bGwpOiBhbnkge1xyXG5cclxuICAgIGlmICghZm9ybUdyb3VwKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9wdGlvbnMgPSBuZXcgUHJveHlPcHRpb25zKCk7XHJcblxyXG4gICAgb3B0aW9ucy5leHRlbmQgPSB7XHJcbiAgICAgIHBhcmVudDogdGhpcy5nZXRQYXJlbnQoZm9ybUdyb3VwKSxcclxuICAgICAgZ2V0Rm9ybUdyb3VwOiAoKSA9PiB0aGlzLnByb3h5U2VydmljZS5nZXRQcm94eShmb3JtR3JvdXApLFxyXG4gICAgICBnZXRTY29wZTogKCkgPT4gdGhpcy5zY29wZSA/IHRoaXMuc2NvcGUucHJveHkoKSA6IG51bGwsXHJcbiAgICAgIGNvbnRyb2xzOiAoKSA9PiB0aGlzLnJlZ2lzdGVyID8gdGhpcy5yZWdpc3Rlci5wcm94eSgpIDogbnVsbCxcclxuICAgICAgbm90aWZ5SW5mbzogKG1lc3NhZ2U6IHN0cmluZywgZGVsYXk/OiBudW1iZXIpID0+IHRoaXMudG9hc3RTZXJ2aWNlLm5vdGlmeUluZm8obWVzc2FnZSwgZGVsYXkpLFxyXG4gICAgICBub3RpZnlTdWNjZXNzOiAobWVzc2FnZTogc3RyaW5nLCBkZWxheT86IG51bWJlcikgPT4gdGhpcy50b2FzdFNlcnZpY2Uubm90aWZ5U3VjY2VzcyhtZXNzYWdlLCBkZWxheSksXHJcbiAgICAgIG5vdGlmeVdhcm5pbmc6IChtZXNzYWdlOiBzdHJpbmcsIGRlbGF5PzogbnVtYmVyKSA9PiB0aGlzLnRvYXN0U2VydmljZS5ub3RpZnlXYXJuaW5nKG1lc3NhZ2UsIGRlbGF5KSxcclxuICAgICAgbm90aWZ5RXJyb3I6IChtZXNzYWdlOiBzdHJpbmcsIGRlbGF5PzogbnVtYmVyKSA9PiB0aGlzLnRvYXN0U2VydmljZS5ub3RpZnlFcnJvcihtZXNzYWdlLCBkZWxheSlcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHByb3h5Rm4pXHJcbiAgICAgIHByb3h5Rm4ob3B0aW9ucyk7XHJcbiAgICBcclxuICAgIHJldHVybiB0aGlzLnByb3h5U2VydmljZS5nZXRQcm94eShmb3JtR3JvdXAudmFsdWUsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQYXJlbnQoZm9ybUdyb3VwOiBGb3JtR3JvdXApIDogRm9ybUdyb3VwIHwgbnVsbCB7XHJcbiAgICBsZXQgcGFyZW50ID0gZm9ybUdyb3VwLnBhcmVudDtcclxuXHJcbiAgICB3aGlsZSAocGFyZW50IGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAgIHBhcmVudCA9IHBhcmVudD8ucGFyZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwYXJlbnQgYXMgRm9ybUdyb3VwIHwgbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q29udGV4dChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHt9KTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcblxyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gY29udHJvbCBhcyBGb3JtR3JvdXAgfCBudWxsO1xyXG4gICAgXHJcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jcmVhdGVQcm94eShmb3JtR3JvdXAsIG9wdGlvbnMucHJveHlGbikgYXMgUmVjb3JkPHN0cmluZywgYW55PjtcclxuXHJcbiAgICByZXR1cm4gY29udGV4dDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgd2F0Y2hFeHByZXNzaW9uKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBleHByZXNzaW9uOiBzdHJpbmcsIGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KGZvcm1Hcm91cCk7XHJcbiAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSB0aGlzLmZlZWxTZXJ2aWNlLmdldERlcGVuZGVuY2llcyhleHByZXNzaW9uLCBjb250ZXh0KTtcclxuICAgIHRoaXMud2F0Y2hEZXBlbmRlbmNpZXMoZm9ybUdyb3VwLCBkZXBlbmRlbmNpZXMsIGNhbGxiYWNrKTtcclxuICB9O1xyXG5cclxuICBwcml2YXRlIHdhdGNoRGVwZW5kZW5jaWVzKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBkZXBlbmRlbmNpZXM6IChzdHJpbmcgfCBzdHJpbmdbXSlbXSwgY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBhcmVudE5hbWU6IHN0cmluZyA9IFwicGFyZW50XCI7XHJcblxyXG4gICAgY29uc3Qgc3Vic2NyaWJlID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICBjb250cm9sLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChjb25zdCBkZXBlbmRlbmNlIG9mIGRlcGVuZGVuY2llcykge1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkZXBlbmRlbmNlKSkge1xyXG4gICAgICAgIGxldCB0YXJnZXRGb3JtOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsID0gZm9ybUdyb3VwO1xyXG4gICAgICAgIGxldCBjb250cm9sUGF0aCA9IGRlcGVuZGVuY2U7XHJcblxyXG4gICAgICAgIHdoaWxlIChjb250cm9sUGF0aC5sZW5ndGggPiAwICYmIGNvbnRyb2xQYXRoWzBdID09PSBwYXJlbnROYW1lKSB7XHJcbiAgICAgICAgICBpZiAoIXRhcmdldEZvcm0ucGFyZW50KVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIHRhcmdldEZvcm0gPSB0YXJnZXRGb3JtLnBhcmVudDtcclxuICAgICAgICAgIGNvbnRyb2xQYXRoID0gY29udHJvbFBhdGguc2xpY2UoMSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY29udHJvbFBhdGgubGVuZ3RoID4gMCAmJiB0YXJnZXRGb3JtKSB7XHJcbiAgICAgICAgICBjb25zdCBjb250cm9sID0gdGFyZ2V0Rm9ybS5nZXQoY29udHJvbFBhdGgpO1xyXG4gICAgICAgICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgICAgICAgc3Vic2NyaWJlKGNvbnRyb2wpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybUdyb3VwLmdldChkZXBlbmRlbmNlKTtcclxuICAgICAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICAgICAgc3Vic2NyaWJlKGNvbnRyb2wpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSAgICBcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXZhbHVhdGVPcHRpb25zIHtcclxuICBjYWNoZWFibGU/OiBib29sZWFuO1xyXG4gIHByb3h5Rm4/OiBQcm94eUNvbmZpZ0ZuO1xyXG59XHJcbiJdfQ==
|
|
@@ -128,4 +128,4 @@ export class ProxyOptions {
|
|
|
128
128
|
}
|
|
129
129
|
log = false;
|
|
130
130
|
}
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL3NlcnZpY2VzL3Byb3h5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFM0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBS3RDLE1BQU0sT0FBTyxZQUFZO0lBRXZCLGdCQUFnQixDQUFDO0lBRWpCLFFBQVEsQ0FBQyxRQUFhLEVBQUUsVUFBK0IsSUFBSTtRQUN6RCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU8sV0FBVyxDQUFDLFFBQWEsRUFBRSxJQUFhLEVBQUUsVUFBK0IsSUFBSTtRQUVuRixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO1FBRUQsT0FBTyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDekIsR0FBRyxFQUFFLENBQUMsTUFBVyxFQUFFLFFBQVEsRUFBRSxFQUFFO2dCQUU3QixJQUFJLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDMUIsT0FBTyxJQUFJLENBQUM7Z0JBQ2QsQ0FBQztnQkFFRCxJQUFJLEtBQUssR0FBRyxTQUFTLENBQUM7Z0JBRXRCLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLFFBQVEsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3BFLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUN4RCxDQUFDO3FCQUNJLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FB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LEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFHRCxJQUFJLFFBQVEsQ0FBQyxFQUFjO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUdELElBQUksU0FBUyxDQUFDLEVBQWU7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBR00sR0FBRyxHQUFZLEtBQUssQ0FBQztDQUM3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmNvbnN0IElTX1BST1hZID0gU3ltYm9sKFwiX19pc1Byb3h5JFwiKTtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFByb3h5U2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIGdldFByb3h5KGluc3RhbmNlOiBhbnksIG9wdGlvbnM6IFByb3h5T3B0aW9ucyB8IG51bGwgPSBudWxsKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLmNyZWF0ZVByb3h5KGluc3RhbmNlLCB0cnVlLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlUHJveHkoaW5zdGFuY2U6IGFueSwgcm9vdDogYm9vbGVhbiwgb3B0aW9uczogUHJveHlPcHRpb25zIHwgbnVsbCA9IG51bGwpOiBhbnkge1xyXG5cclxuICAgIGlmICghaW5zdGFuY2UpIHtcclxuICAgICAgcmV0dXJuIGluc3RhbmNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBuZXcgUHJveHkoaW5zdGFuY2UsIHtcclxuICAgICAgZ2V0OiAodGFyZ2V0OiBhbnksIHByb3BlcnR5KSA9PiB7XHJcblxyXG4gICAgICAgIGlmIChwcm9wZXJ0eSA9PT0gSVNfUFJPWFkpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHZhbHVlID0gdW5kZWZpbmVkO1xyXG5cclxuICAgICAgICBpZiAocm9vdCAmJiBvcHRpb25zICYmIG9wdGlvbnMuZXh0ZW5kICYmIHByb3BlcnR5IGluIG9wdGlvbnMuZXh0ZW5kKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IFJlZmxlY3QuZ2V0KG9wdGlvbnMuZXh0ZW5kLCBwcm9wZXJ0eSwgdGFyZ2V0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmlzQ3VzdG9tICYmIG9wdGlvbnMuZ2V0Q3VzdG9tICYmIG9wdGlvbnMuaXNDdXN0b20odGFyZ2V0LCBwcm9wZXJ0eSwgcm9vdCkpIHtcclxuICAgICAgICAgIHZhbHVlID0gb3B0aW9ucy5nZXRDdXN0b20odGFyZ2V0LCBwcm9wZXJ0eSwgcm9vdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHByb3BlcnR5IGluIHRhcmdldCkge1xyXG4gICAgICAgICAgdmFsdWUgPSBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3BlcnR5LCB0YXJnZXQpOyAgICAgICAgICBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zPy5sb2cpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHRhcmdldCwgcHJvcGVydHksIHZhbHVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlzUHJveHkodmFsdWUpKVxyXG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG5cclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVGdW5jdGlvbih2YWx1ZSwgdGFyZ2V0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUHJveHkodmFsdWUsIGZhbHNlLCBvcHRpb25zKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgfSxcclxuICAgICAgc2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgdmFsdWUpID0+IHtcclxuICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmNhblNldCAmJiAhb3B0aW9ucy5jYW5TZXQodGFyZ2V0LCBwcm9wZXJ0eSwgcm9vdCkpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gUmVmbGVjdC5zZXQodGFyZ2V0LCBwcm9wZXJ0eSwgdmFsdWUsIHRhcmdldCk7XHJcbiAgICAgICAgfSAgICAgICAgXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlbGV0ZVByb3BlcnR5OiAodGFyZ2V0LCBwcm9wZXJ0eSkgPT4ge1xyXG4gICAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuY2FuRGVsZXRlICYmICFvcHRpb25zLmNhbkRlbGV0ZSh0YXJnZXQsIHByb3BlcnR5LCByb290KSkge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChwcm9wZXJ0eSBpbiB0YXJnZXQpIHtcclxuICAgICAgICAgIHJldHVybiBkZWxldGUgdGFyZ2V0W3Byb3BlcnR5XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBoYXM6ICh0YXJnZXQsIHByb3BlcnR5KSA9PiB7XHJcbiAgICAgICAgaWYgKHJvb3QgJiYgb3B0aW9ucyAmJiBvcHRpb25zLmV4dGVuZCAmJiBwcm9wZXJ0eSBpbiBvcHRpb25zLmV4dGVuZCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5pc0N1c3RvbSAmJiBvcHRpb25zLmlzQ3VzdG9tKHRhcmdldCwgcHJvcGVydHksIHJvb3QpKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocHJvcGVydHkgaW4gdGFyZ2V0KSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUZ1bmN0aW9uKGZuOiBGdW5jdGlvbiwgdGFyZ2V0OiBhbnkpOiBGdW5jdGlvbiB7XHJcbiAgICByZXR1cm4gKC4uLmFyZ3M6IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4gZm4uYmluZCh0YXJnZXQpKC4uLmFyZ3MpO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNQcm94eShvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIG9iaiAmJiBvYmpbSVNfUFJPWFldID09PSB0cnVlOyAgICBcclxuICB9XHJcbn1cclxuXHJcbnR5cGUgUHJveHlRdWVyeSA9ICh0YXJnZXQ6IGFueSwgcHJvcGVydHk6IHN0cmluZyB8IHN5bWJvbCwgcm9vdDogYm9vbGVhbikgPT4gYm9vbGVhbjtcclxuXHJcbnR5cGUgUHJveHlHZXR0ZXIgPSAodGFyZ2V0OiBhbnksIHByb3BlcnR5OiBzdHJpbmcgfCBzeW1ib2wsIHJvb3Q6IGJvb2xlYW4pID0+IGFueTtcclxuXHJcbmV4cG9ydCBjbGFzcyBQcm94eU9wdGlvbnMge1xyXG4gIHByaXZhdGUgX2NhbkRlbGV0ZTogUHJveHlRdWVyeSA9ICgpID0+IHRydWU7XHJcbiAgcHJpdmF0ZSBfY2FuU2V0OiBQcm94eVF1ZXJ5ID0gKCkgPT4gdHJ1ZTtcclxuICBwcml2YXRlIF9pc0N1c3RvbTogUHJveHlRdWVyeSA9ICgpID0+IGZhbHNlO1xyXG4gIHByaXZhdGUgX2dldEN1c3RvbTogUHJveHlHZXR0ZXIgPSAoKSA9PiB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBfZXh0ZW5kOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gKCkgPT4gdW5kZWZpbmVkO1xyXG5cclxuICBzZXQgZXh0ZW5kKGZuOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcbiAgICB0aGlzLl9leHRlbmQgPSBmbjtcclxuICB9XHJcblxyXG4gIGdldCBleHRlbmQoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZXh0ZW5kO1xyXG4gIH1cclxuXHJcblxyXG4gIHNldCBjYW5EZWxldGUoZm46IFByb3h5UXVlcnkpIHtcclxuICAgIHRoaXMuX2NhbkRlbGV0ZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNhbkRlbGV0ZSgpOiBQcm94eVF1ZXJ5IHtcclxuICAgIHJldHVybiB0aGlzLl9jYW5EZWxldGU7XHJcbiAgfVxyXG5cclxuXHJcbiAgc2V0IGNhblNldChmbjogUHJveHlRdWVyeSkge1xyXG4gICAgdGhpcy5fY2FuU2V0ID0gZm47XHJcbiAgfVxyXG5cclxuICBnZXQgY2FuU2V0KCk6IFByb3h5UXVlcnkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhblNldDtcclxuICB9XHJcblxyXG5cclxuICBzZXQgaXNDdXN0b20oZm46IFByb3h5UXVlcnkpIHtcclxuICAgIHRoaXMuX2lzQ3VzdG9tID0gZm47XHJcbiAgfVxyXG5cclxuICBnZXQgaXNDdXN0b20oKTogUHJveHlRdWVyeSB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNDdXN0b207XHJcbiAgfVxyXG5cclxuXHJcbiAgc2V0IGdldEN1c3RvbShmbjogUHJveHlHZXR0ZXIpIHtcclxuICAgIHRoaXMuX2dldEN1c3RvbSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdldEN1c3RvbSgpOiBQcm94eUdldHRlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZ2V0Q3VzdG9tO1xyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBsb2c6IGJvb2xlYW4gPSBmYWxzZTtcclxufVxyXG5cclxuIl19
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL3NlcnZpY2VzL3Byb3h5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFM0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBS3RDLE1BQU0sT0FBTyxZQUFZO0lBRXZCLGdCQUFnQixDQUFDO0lBRWpCLFFBQVEsQ0FBQyxRQUFhLEVBQUUsVUFBK0IsSUFBSTtRQUN6RCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU8sV0FBVyxDQUFDLFFBQWEsRUFBRSxJQUFhLEVBQzVDLFVBQStCLElBQUk7UUFFckMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUVELE9BQU8sSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ3pCLEdBQUcsRUFBRSxDQUFDLE1BQVcsRUFBRSxRQUFRLEVBQUUsRUFBRTtnQkFFN0IsSUFBSSxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQzFCLE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7Z0JBRUQsSUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDO2dCQUV0QixJQUFJLElBQUksSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxRQUFRLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNwRSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDeEQsQ0FBQztxQkFDSSxJQUFJLE9BQU8sSUFBSSxPQUFPLENB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RyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBR0QsSUFBSSxRQUFRLENBQUMsRUFBYztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFHRCxJQUFJLFNBQVMsQ0FBQyxFQUFlO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUdNLEdBQUcsR0FBWSxLQUFLLENBQUM7Q0FDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5jb25zdCBJU19QUk9YWSA9IFN5bWJvbChcIl9faXNQcm94eSRcIik7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm94eVNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBnZXRQcm94eShpbnN0YW5jZTogYW55LCBvcHRpb25zOiBQcm94eU9wdGlvbnMgfCBudWxsID0gbnVsbCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVQcm94eShpbnN0YW5jZSwgdHJ1ZSwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVByb3h5KGluc3RhbmNlOiBhbnksIHJvb3Q6IGJvb2xlYW5cclxuICAgICwgb3B0aW9uczogUHJveHlPcHRpb25zIHwgbnVsbCA9IG51bGwpOiBhbnkge1xyXG5cclxuICAgIGlmICghaW5zdGFuY2UpIHtcclxuICAgICAgcmV0dXJuIGluc3RhbmNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBuZXcgUHJveHkoaW5zdGFuY2UsIHtcclxuICAgICAgZ2V0OiAodGFyZ2V0OiBhbnksIHByb3BlcnR5KSA9PiB7XHJcblxyXG4gICAgICAgIGlmIChwcm9wZXJ0eSA9PT0gSVNfUFJPWFkpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHZhbHVlID0gdW5kZWZpbmVkO1xyXG5cclxuICAgICAgICBpZiAocm9vdCAmJiBvcHRpb25zICYmIG9wdGlvbnMuZXh0ZW5kICYmIHByb3BlcnR5IGluIG9wdGlvbnMuZXh0ZW5kKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IFJlZmxlY3QuZ2V0KG9wdGlvbnMuZXh0ZW5kLCBwcm9wZXJ0eSwgdGFyZ2V0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmlzQ3VzdG9tICYmIG9wdGlvbnMuZ2V0Q3VzdG9tICYmIG9wdGlvbnMuaXNDdXN0b20odGFyZ2V0LCBwcm9wZXJ0eSwgcm9vdCkpIHtcclxuICAgICAgICAgIHZhbHVlID0gb3B0aW9ucy5nZXRDdXN0b20odGFyZ2V0LCBwcm9wZXJ0eSwgcm9vdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHByb3BlcnR5IGluIHRhcmdldCkge1xyXG4gICAgICAgICAgdmFsdWUgPSBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3BlcnR5LCB0YXJnZXQpOyAgICAgICAgICBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zPy5sb2cpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHRhcmdldCwgcHJvcGVydHksIHZhbHVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlzUHJveHkodmFsdWUpKVxyXG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG5cclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVGdW5jdGlvbih2YWx1ZSwgdGFyZ2V0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUHJveHkodmFsdWUsIGZhbHNlLCBvcHRpb25zKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgfSxcclxuICAgICAgc2V0OiAodGFyZ2V0LCBwcm9wZXJ0eSwgdmFsdWUpID0+IHtcclxuICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmNhblNldCAmJiAhb3B0aW9ucy5jYW5TZXQodGFyZ2V0LCBwcm9wZXJ0eSwgcm9vdCkpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gUmVmbGVjdC5zZXQodGFyZ2V0LCBwcm9wZXJ0eSwgdmFsdWUsIHRhcmdldCk7XHJcbiAgICAgICAgfSAgICAgICAgXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlbGV0ZVByb3BlcnR5OiAodGFyZ2V0LCBwcm9wZXJ0eSkgPT4ge1xyXG4gICAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuY2FuRGVsZXRlICYmICFvcHRpb25zLmNhbkRlbGV0ZSh0YXJnZXQsIHByb3BlcnR5LCByb290KSkge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChwcm9wZXJ0eSBpbiB0YXJnZXQpIHtcclxuICAgICAgICAgIHJldHVybiBkZWxldGUgdGFyZ2V0W3Byb3BlcnR5XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBoYXM6ICh0YXJnZXQsIHByb3BlcnR5KSA9PiB7XHJcbiAgICAgICAgaWYgKHJvb3QgJiYgb3B0aW9ucyAmJiBvcHRpb25zLmV4dGVuZCAmJiBwcm9wZXJ0eSBpbiBvcHRpb25zLmV4dGVuZCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5pc0N1c3RvbSAmJiBvcHRpb25zLmlzQ3VzdG9tKHRhcmdldCwgcHJvcGVydHksIHJvb3QpKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocHJvcGVydHkgaW4gdGFyZ2V0KSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUZ1bmN0aW9uKGZuOiBGdW5jdGlvbiwgdGFyZ2V0OiBhbnkpOiBGdW5jdGlvbiB7XHJcbiAgICByZXR1cm4gKC4uLmFyZ3M6IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4gZm4uYmluZCh0YXJnZXQpKC4uLmFyZ3MpO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNQcm94eShvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIG9iaiAmJiBvYmpbSVNfUFJPWFldID09PSB0cnVlOyAgICBcclxuICB9XHJcbn1cclxuXHJcbnR5cGUgUHJveHlRdWVyeSA9ICh0YXJnZXQ6IGFueSwgcHJvcGVydHk6IHN0cmluZyB8IHN5bWJvbCwgcm9vdDogYm9vbGVhbikgPT4gYm9vbGVhbjtcclxuXHJcbnR5cGUgUHJveHlHZXR0ZXIgPSAodGFyZ2V0OiBhbnksIHByb3BlcnR5OiBzdHJpbmcgfCBzeW1ib2wsIHJvb3Q6IGJvb2xlYW4pID0+IGFueTtcclxuXHJcbmV4cG9ydCBjbGFzcyBQcm94eU9wdGlvbnMge1xyXG4gIHByaXZhdGUgX2NhbkRlbGV0ZTogUHJveHlRdWVyeSA9ICgpID0+IHRydWU7XHJcbiAgcHJpdmF0ZSBfY2FuU2V0OiBQcm94eVF1ZXJ5ID0gKCkgPT4gdHJ1ZTtcclxuICBwcml2YXRlIF9pc0N1c3RvbTogUHJveHlRdWVyeSA9ICgpID0+IGZhbHNlO1xyXG4gIHByaXZhdGUgX2dldEN1c3RvbTogUHJveHlHZXR0ZXIgPSAoKSA9PiB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBfZXh0ZW5kOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gKCkgPT4gdW5kZWZpbmVkO1xyXG5cclxuICBzZXQgZXh0ZW5kKGZuOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcbiAgICB0aGlzLl9leHRlbmQgPSBmbjtcclxuICB9XHJcblxyXG4gIGdldCBleHRlbmQoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZXh0ZW5kO1xyXG4gIH1cclxuXHJcblxyXG4gIHNldCBjYW5EZWxldGUoZm46IFByb3h5UXVlcnkpIHtcclxuICAgIHRoaXMuX2NhbkRlbGV0ZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNhbkRlbGV0ZSgpOiBQcm94eVF1ZXJ5IHtcclxuICAgIHJldHVybiB0aGlzLl9jYW5EZWxldGU7XHJcbiAgfVxyXG5cclxuXHJcbiAgc2V0IGNhblNldChmbjogUHJveHlRdWVyeSkge1xyXG4gICAgdGhpcy5fY2FuU2V0ID0gZm47XHJcbiAgfVxyXG5cclxuICBnZXQgY2FuU2V0KCk6IFByb3h5UXVlcnkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhblNldDtcclxuICB9XHJcblxyXG5cclxuICBzZXQgaXNDdXN0b20oZm46IFByb3h5UXVlcnkpIHtcclxuICAgIHRoaXMuX2lzQ3VzdG9tID0gZm47XHJcbiAgfVxyXG5cclxuICBnZXQgaXNDdXN0b20oKTogUHJveHlRdWVyeSB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNDdXN0b207XHJcbiAgfVxyXG5cclxuXHJcbiAgc2V0IGdldEN1c3RvbShmbjogUHJveHlHZXR0ZXIpIHtcclxuICAgIHRoaXMuX2dldEN1c3RvbSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdldEN1c3RvbSgpOiBQcm94eUdldHRlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZ2V0Q3VzdG9tO1xyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBsb2c6IGJvb2xlYW4gPSBmYWxzZTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUHJveHlDb25maWdGbiA9IChvcHRpb25zOiBQcm94eU9wdGlvbnMpID0+IHZvaWQ7XHJcbiJdfQ==
|