@sumaris-net/ngx-components 2.9.0-alpha3 → 2.9.0-alpha4
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/src/app/core/form/form.class.mjs +5 -5
- package/esm2022/src/app/core/table/async-table.class.mjs +1 -1
- package/esm2022/src/app/core/table/table.class.mjs +4 -4
- package/esm2022/src/app/shared/pipes/form.pipes.mjs +2 -2
- package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +6 -2
- package/fesm2022/sumaris-net.ngx-components.mjs +13 -9
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/src/app/core/form/form.class.d.ts +4 -4
- package/src/app/core/table/async-table.class.d.ts +3 -3
- package/src/app/core/table/table.class.d.ts +3 -3
- package/src/app/shared/pipes/form.pipes.d.ts +4 -4
- package/src/app/shared/validator/form-error-adapter.class.d.ts +22 -4
- package/src/assets/manifest.json +1 -1
|
@@ -100,7 +100,7 @@ export class AppForm {
|
|
|
100
100
|
}
|
|
101
101
|
debug = false;
|
|
102
102
|
tabindex;
|
|
103
|
-
|
|
103
|
+
formErrorTranslateOptions;
|
|
104
104
|
set form(value) {
|
|
105
105
|
this.setForm(value);
|
|
106
106
|
}
|
|
@@ -126,7 +126,7 @@ export class AppForm {
|
|
|
126
126
|
this.enable();
|
|
127
127
|
else
|
|
128
128
|
this.disable();
|
|
129
|
-
this.
|
|
129
|
+
this.formErrorTranslateOptions = this.formErrorTranslateOptions || {
|
|
130
130
|
pathTranslator: this,
|
|
131
131
|
};
|
|
132
132
|
}
|
|
@@ -324,7 +324,7 @@ export class AppForm {
|
|
|
324
324
|
}
|
|
325
325
|
}
|
|
326
326
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AppForm, deps: [{ token: i0.Injector }, { token: i1.UntypedFormGroup }], target: i0.ɵɵFactoryTarget.Directive });
|
|
327
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.11", type: AppForm, inputs: { debug: "debug", tabindex: "tabindex",
|
|
327
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.11", type: AppForm, inputs: { debug: "debug", tabindex: "tabindex", formErrorTranslateOptions: "formErrorTranslateOptions", form: "form" }, outputs: { onCancel: "onCancel", onSubmit: "onSubmit" }, ngImport: i0 });
|
|
328
328
|
}
|
|
329
329
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AppForm, decorators: [{
|
|
330
330
|
type: Directive
|
|
@@ -332,7 +332,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
332
332
|
type: Input
|
|
333
333
|
}], tabindex: [{
|
|
334
334
|
type: Input
|
|
335
|
-
}],
|
|
335
|
+
}], formErrorTranslateOptions: [{
|
|
336
336
|
type: Input
|
|
337
337
|
}], form: [{
|
|
338
338
|
type: Input
|
|
@@ -341,4 +341,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
341
341
|
}], onSubmit: [{
|
|
342
342
|
type: Output
|
|
343
343
|
}] } });
|
|
344
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL2Zvcm0uY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVksS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQXFCLE1BQU0sY0FBYyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQWtCLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxtQkFBbUIsRUFBbUQsTUFBTSxpREFBaUQsQ0FBQztBQUN2SSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQ0wsMkJBQTJCLEdBRzVCLE1BQU0saUVBQWlFLENBQUM7OztBQUd6RSxrRUFBa0U7QUFDbEUsTUFBTSxPQUFPLE9BQU87SUFDVixhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUNqQyxLQUFLLENBQW1CO0lBQ3hCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsZUFBZSxDQUFzQjtJQUNyQyxlQUFlLEdBQVcsSUFBSSxDQUFDO0lBQ3RCLFNBQVMsQ0FBbUI7SUFDNUIsUUFBUSxDQUF1QjtJQUMvQixjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUV4RCw2QkFBNkI7SUFDcEIsWUFBWSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ25ELGNBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FBQztJQUNwRCxZQUFZLEdBQUcsSUFBSSxlQUFlLENBQVMsU0FBUyxDQUFDLENBQUM7SUFFdEQsa0JBQWtCLENBQThCO0lBQ2hELGtCQUFrQixDQUFnRDtJQUUzRSxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsSUFBUztRQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxJQUFJLEtBQUssQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDekMsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssSUFBSSxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLElBQUksS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN4QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFjLE9BQU87UUFDbkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFjLE9BQU8sQ0FBQyxLQUFjO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBa0Q7UUFDeEQsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDdEIsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUs7Z0JBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdELENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQWtEO1FBQ3ZELElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUs7Z0JBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdELENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU0sS0FBSyxLQUFLLENBQUM7SUFDL0MsQ0FBQztJQUVRLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDZCxRQUFRLENBQVM7SUFDakIsc0JBQXNCLENBQTZCO0lBRTVELElBQ0ksSUFBSSxDQUFDLEtBQXVCO1FBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRVMsUUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDbkMsUUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFFN0MsWUFBWSxRQUFrQixFQUFFLElBQXVCO1FBQ3JELElBQUksSUFBSTtZQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLGVBQWUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksMkJBQTJCLENBQ3ZELElBQUksQ0FBQyxRQUFRLElBQUk7WUFDZixpQkFBaUIsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMseUJBQXlCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMzRSxDQUNGLENBQUM7UUFDRixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztJQUMzRCxDQUFDO0lBRUQsUUFBUTtRQUNOLGtEQUFrRDtRQUNsRCxJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDOztZQUM1QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFcEIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsSUFBSTtZQUMzRCxjQUFjLEVBQUUsSUFBSTtTQUNyQixDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWpDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUU1QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNO1FBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBVSxFQUFFLElBQStCO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDM0MsT0FBTztRQUNULENBQUM7UUFFRCxtQ0FBbUM7UUFDbkMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzlELHNCQUFzQjtZQUN0QixNQUFNLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFaEQseUNBQXlDO1lBQ3pDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQzNDLElBQUksSUFBSSxDQUFDLEtBQUs7b0JBQUUsWUFBWSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZELE9BQU87WUFDVCxDQUFDO1FBQ0gsQ0FBQztRQUVELGFBQWE7UUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsT0FBTyxDQUFDLElBQXNCO1FBQzVCLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekYsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQVUsQ0FBQztJQUM5QixDQUFDO0lBRUQsUUFBUSxDQUFDLElBQU8sRUFBRSxJQUFrRDtRQUNsRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPLENBQUMsSUFBSSxDQUFDLHVEQUF1RCxDQUFDLENBQUM7WUFDdEUsT0FBTztRQUNULENBQUM7UUFFRCxRQUFRO1FBQ1IsNkVBQTZFO1FBRTdFLHVGQUF1RjtRQUN2RixZQUFZLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUU3RixJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQVEsRUFBRSxJQUFrRDtRQUNoRSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxJQUFJLENBQUMsS0FBSztnQkFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRTVFLHVGQUF1RjtZQUN2RixNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUk7WUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUQsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFrRDtRQUMvRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSztZQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQWtEO1FBQ2hFLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxLQUFLO1lBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdELENBQUM7SUFFRDs7O09BR0c7SUFDSCxhQUFhLENBQUMsSUFBa0Q7UUFDOUQsOEVBQThFO1FBQzlFLElBQUksSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLGdHQUFnRyxDQUFDLENBQUM7UUFDL0gsWUFBWSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxLQUFLO1lBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUE4QjtRQUM3Qyw4RUFBOEU7UUFDOUUsWUFBWSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUs7WUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0QsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFrRDtRQUM1RCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSztZQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0lBRUQsYUFBYSxDQUFDLElBQThCO1FBQzFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBOEI7UUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFrRDtRQUM1RCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFN0IsbUNBQW1DO1lBQ25DLElBQUksT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQzNDLElBQXVCLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdkMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxJQUFxQjtRQUN6QixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSztZQUFFLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3RELE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLENBQUMsSUFBcUI7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSztZQUFFLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pELE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVELHNCQUFzQixDQUFDLElBQWtEO1FBQ3ZFLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxLQUFLO1lBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFZO1FBQzVCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRCxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLGFBQWEsQ0FBQztJQUNqRSxDQUFDO0lBRUQsNkJBQTZCO0lBRW5CLFlBQVksQ0FBQyxJQUFzQixFQUFFLElBQWlDO1FBQzlFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZTtZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQ3JELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3pELGNBQWMsRUFBRSxJQUFJO1lBQ3BCLEdBQUcsSUFBSTtTQUNSLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUyxnQkFBZ0IsQ0FBQyxJQUFZO1FBQ3JDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ25GLENBQUM7SUFFUyxvQkFBb0IsQ0FBQyxHQUFpQjtRQUM5QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRVMsc0JBQXNCLENBQUMsR0FBaUI7UUFDaEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVTLHlCQUF5QixDQUNqQyxTQUFpQixFQUNqQixJQUE0QztRQUU1QyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFUyxRQUFRLENBQUMsS0FBYSxFQUFFLElBQThCO1FBQzlELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRVMsWUFBWTtRQUNwQixzQ0FBc0M7UUFDdEMsT0FBTyxDQUFDLElBQUksQ0FBQyxzRUFBc0UsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9HLENBQUM7SUFFRCw0QkFBNEI7SUFFcEIsVUFBVSxDQUFDLEtBQWMsRUFBRSxJQUE4QjtRQUMvRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDdkUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFaEMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO3dHQWhYVSxPQUFPOzRGQUFQLE9BQU87OzRGQUFQLE9BQU87a0JBRm5CLFNBQVM7NEdBOEdDLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFHRixJQUFJO3NCQURQLEtBQUs7Z0JBU0ksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcHBGb3JtVXRpbHMsIElBcHBGb3JtLCBPblJlYWR5IH0gZnJvbSAnLi9mb3JtLnV0aWxzJztcbmltcG9ydCB7IExvY2FsU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbG9jYWwtc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyB3YWl0Rm9yRmFsc2UsIFdhaXRGb3JPcHRpb25zLCB3YWl0Rm9yVHJ1ZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9vYnNlcnZhYmxlcyc7XG5pbXBvcnQgeyBGb3JtRXJyb3JUcmFuc2xhdG9yLCBGb3JtRXJyb3JUcmFuc2xhdG9yT3B0aW9ucywgSUZvcm1QYXRoVHJhbnNsYXRvciB9IGZyb20gJy4uLy4uL3NoYXJlZC92YWxpZGF0b3IvZm9ybS1lcnJvci1hZGFwdGVyLmNsYXNzJztcbmltcG9ydCB7IGNoYW5nZUNhc2VUb1VuZGVyc2NvcmUgfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gIE1hdEF1dG9jb21wbGV0ZUNvbmZpZ0hvbGRlcixcbiAgTWF0QXV0b2NvbXBsZXRlRmllbGRBZGRPcHRpb25zLFxuICBNYXRBdXRvY29tcGxldGVGaWVsZENvbmZpZyxcbn0gZnJvbSAnLi4vLi4vc2hhcmVkL21hdGVyaWFsL2F1dG9jb21wbGV0ZS9tYXRlcmlhbC5hdXRvY29tcGxldGUuY29uZmlnJztcblxuQERpcmVjdGl2ZSgpXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBjbGFzcyBBcHBGb3JtPFQ+IGltcGxlbWVudHMgSUFwcEZvcm08VD4sIE9uSW5pdCwgT25EZXN0cm95LCBJRm9ybVBhdGhUcmFuc2xhdG9yIHtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcm90ZWN0ZWQgX2Zvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gIHByb3RlY3RlZCBfZW5hYmxlZCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgZXJyb3JUcmFuc2xhdG9yOiBGb3JtRXJyb3JUcmFuc2xhdG9yO1xuICBwcm90ZWN0ZWQgaTE4bkZpZWxkUHJlZml4OiBzdHJpbmcgPSBudWxsO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2V0dGluZ3M6IExvY2FsU2V0dGluZ3NTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzdHJveVN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8vIFRPRE8gdXNlIFJ4U3RhdGUgaW5zdGVhZCA/XG4gIHJlYWRvbmx5IHJlYWR5U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBsb2FkaW5nU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IGVycm9yU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPih1bmRlZmluZWQpO1xuXG4gIHJlYWRvbmx5IGF1dG9jb21wbGV0ZUhlbHBlcjogTWF0QXV0b2NvbXBsZXRlQ29uZmlnSG9sZGVyO1xuICByZWFkb25seSBhdXRvY29tcGxldGVGaWVsZHM6IHsgW2tleTogc3RyaW5nXTogTWF0QXV0b2NvbXBsZXRlRmllbGRDb25maWcgfTtcblxuICBnZXQgZXJyb3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5lcnJvclN1YmplY3QudmFsdWU7XG4gIH1cblxuICBzZXQgZXJyb3IoZXJyb3I6IHN0cmluZykge1xuICAgIHRoaXMuc2V0RXJyb3IoZXJyb3IpO1xuICB9XG5cbiAgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubG9hZGluZ1N1YmplY3QudmFsdWU7XG4gIH1cblxuICBnZXQgbG9hZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5sb2FkaW5nU3ViamVjdC52YWx1ZTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmZvcm0udmFsdWU7XG4gIH1cblxuICBzZXQgdmFsdWUoZGF0YTogYW55KSB7XG4gICAgdGhpcy5zZXRWYWx1ZShkYXRhKTtcbiAgfVxuXG4gIGdldCBkaXJ0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtPy5kaXJ0eSB8fCBmYWxzZTtcbiAgfVxuXG4gIGdldCBpbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5mb3JtIHx8IHRoaXMuZm9ybS5pbnZhbGlkO1xuICB9XG5cbiAgZ2V0IHBlbmRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmZvcm0gfHwgKHRoaXMuZm9ybS5kaXJ0eSAmJiB0aGlzLmZvcm0ucGVuZGluZyk7XG4gIH1cblxuICBnZXQgdmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybT8udmFsaWQgfHwgZmFsc2U7XG4gIH1cblxuICBnZXQgZW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmZvcm0gfHwgKCF0aGlzLmZvcm0uZGlydHkgJiYgIXRoaXMuZm9ybS50b3VjaGVkKTtcbiAgfVxuXG4gIGdldCB0b3VjaGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZvcm0/LnRvdWNoZWQgfHwgZmFsc2U7XG4gIH1cblxuICBnZXQgdW50b3VjaGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5mb3JtIHx8IHRoaXMuZm9ybS51bnRvdWNoZWQ7XG4gIH1cblxuICBnZXQgZW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZW5hYmxlZDtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuX2VuYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogIEBkZXByZWNhdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IF9lbmFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQ7XG4gIH1cbiAgcHJvdGVjdGVkIHNldCBfZW5hYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZW5hYmxlZCA9IHZhbHVlO1xuICB9XG5cbiAgZGlzYWJsZShvcHRzPzogeyBvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybT8uZGlzYWJsZShvcHRzKTtcbiAgICBpZiAodGhpcy5fZW5hYmxlZCkge1xuICAgICAgdGhpcy5fZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBlbmFibGUob3B0cz86IHsgb25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pOiB2b2lkIHtcbiAgICB0aGlzLmZvcm0/LmVuYWJsZShvcHRzKTtcbiAgICBpZiAoIXRoaXMuX2VuYWJsZWQpIHtcbiAgICAgIHRoaXMuX2VuYWJsZWQgPSB0cnVlO1xuICAgICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZGVzdHJveWVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRlc3Ryb3lTdWJqZWN0Py5jbG9zZWQgIT09IGZhbHNlO1xuICB9XG5cbiAgQElucHV0KCkgZGVidWcgPSBmYWxzZTtcbiAgQElucHV0KCkgdGFiaW5kZXg6IG51bWJlcjtcbiAgQElucHV0KCkgZXJyb3JUcmFuc2xhdG9yT3B0aW9uczogRm9ybUVycm9yVHJhbnNsYXRvck9wdGlvbnM7XG5cbiAgQElucHV0KClcbiAgc2V0IGZvcm0odmFsdWU6IFVudHlwZWRGb3JtR3JvdXApIHtcbiAgICB0aGlzLnNldEZvcm0odmFsdWUpO1xuICB9XG5cbiAgZ2V0IGZvcm0oKTogVW50eXBlZEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm07XG4gIH1cblxuICBAT3V0cHV0KCkgb25DYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yLCBmb3JtPzogVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIGlmIChmb3JtKSB0aGlzLnNldEZvcm0oZm9ybSk7XG4gICAgdGhpcy50cmFuc2xhdGUgPSBpbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSk7XG4gICAgdGhpcy5zZXR0aW5ncyA9IGluamVjdG9yLmdldChMb2NhbFNldHRpbmdzU2VydmljZSk7XG4gICAgdGhpcy5lcnJvclRyYW5zbGF0b3IgPSBpbmplY3Rvci5nZXQoRm9ybUVycm9yVHJhbnNsYXRvcik7XG4gICAgdGhpcy5hdXRvY29tcGxldGVIZWxwZXIgPSBuZXcgTWF0QXV0b2NvbXBsZXRlQ29uZmlnSG9sZGVyKFxuICAgICAgdGhpcy5zZXR0aW5ncyAmJiB7XG4gICAgICAgIGdldFVzZXJBdHRyaWJ1dGVzOiAoYSwgYikgPT4gdGhpcy5zZXR0aW5ncy5nZXRGaWVsZERpc3BsYXlBdHRyaWJ1dGVzKGEsIGIpLFxuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5hdXRvY29tcGxldGVGaWVsZHMgPSB0aGlzLmF1dG9jb21wbGV0ZUhlbHBlci5maWVsZHM7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBXaWxsIGVuYWJsZS9EaXNhYmxlIHRoZSBkZWxlZ2F0aW5nIGFuZ3VsYXIgZm9ybVxuICAgIGlmICh0aGlzLl9lbmFibGVkKSB0aGlzLmVuYWJsZSgpO1xuICAgIGVsc2UgdGhpcy5kaXNhYmxlKCk7XG5cbiAgICB0aGlzLmVycm9yVHJhbnNsYXRvck9wdGlvbnMgPSB0aGlzLmVycm9yVHJhbnNsYXRvck9wdGlvbnMgfHwge1xuICAgICAgcGF0aFRyYW5zbGF0b3I6IHRoaXMsXG4gICAgfTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5yZWFkeVN1YmplY3QudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmxvYWRpbmdTdWJqZWN0LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5lcnJvclN1YmplY3QudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9uQ2FuY2VsLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vblN1Ym1pdC51bnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5kZXN0cm95U3ViamVjdC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95U3ViamVjdC51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgYXN5bmMgY2FuY2VsKCkge1xuICAgIHRoaXMub25DYW5jZWwuZW1pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBldmVudFxuICAgKiBAcGFyYW0gb3B0cyBhbGxvdyB0byBza2lwIHZhbGlkYXRpb24gY2hlY2ssIHVzaW5nIHtjaGVja1ZhbGlkOiBmYWxzZX1cbiAgICovXG4gIGFzeW5jIGRvU3VibWl0KGV2ZW50OiBhbnksIG9wdHM/OiB7IGNoZWNrVmFsaWQ/OiBib29sZWFuIH0pIHtcbiAgICBpZiAoIXRoaXMuX2Zvcm0pIHtcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCh7IGVtaXRFdmVudDogdHJ1ZSB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB2YWxpZCAoaWYgbm90IGRpc2FibGVkKVxuICAgIGlmICgoIW9wdHMgfHwgb3B0cy5jaGVja1ZhbGlkICE9PSBmYWxzZSkgJiYgIXRoaXMuX2Zvcm0udmFsaWQpIHtcbiAgICAgIC8vIFdhaXQgdmFsaWRhdGlvbiBlbmRcbiAgICAgIGF3YWl0IEFwcEZvcm1VdGlscy53YWl0V2hpbGVQZW5kaW5nKHRoaXMuX2Zvcm0pO1xuXG4gICAgICAvLyBGb3JtIGlzIGludmFsaWQ6IGV4aXQgKCsgbG9nIGlmIGRlYnVnKVxuICAgICAgaWYgKHRoaXMuX2Zvcm0uaW52YWxpZCkge1xuICAgICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQoeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG4gICAgICAgIGlmICh0aGlzLmRlYnVnKSBBcHBGb3JtVXRpbHMubG9nRm9ybUVycm9ycyh0aGlzLl9mb3JtKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEVtaXQgZXZlbnRcbiAgICB0aGlzLm9uU3VibWl0LmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgc2V0Rm9ybShmb3JtOiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgaWYgKHRoaXMuX2Zvcm0gIT09IGZvcm0pIHtcbiAgICAgIHRoaXMuX2Zvcm0gPSBmb3JtO1xuICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZCh0aGlzLl9mb3JtLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKChfKSA9PiB0aGlzLm1hcmtGb3JDaGVjaygpKSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0VmFsdWUoKTogUHJvbWlzZTxUPiB8IFQge1xuICAgIHJldHVybiB0aGlzLmZvcm0udmFsdWUgYXMgVDtcbiAgfVxuXG4gIHNldFZhbHVlKGRhdGE6IFQsIG9wdHM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW47IG9ubHlTZWxmPzogYm9vbGVhbiB9KTogUHJvbWlzZTx2b2lkPiB8IHZvaWQge1xuICAgIGlmICghZGF0YSkge1xuICAgICAgY29uc29sZS53YXJuKCdbZm9ybV0gVHJ5aW5nIHRvIHNldCBhbiBlbXB0eSB2YWx1ZSB0byBmb3JtLiBTa2lwcGluZycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIERFQlVHXG4gICAgLy9pZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW2Zvcm1dIFVwZGF0aW5nIGZvcm0gKHVzaW5nIGVudGl0eSknLCBkYXRhKTtcblxuICAgIC8vIENvbnZlcnQgb2JqZWN0IHRvIGpzb24sIHRoZW4gYXBwbHkgaXQgdG8gZm9ybSAoZS5nLiBjb252ZXJ0ICd1bmRlZmluZWQnIGludG8gJ251bGwnKVxuICAgIEFwcEZvcm1VdGlscy5jb3B5RW50aXR5MkZvcm0oZGF0YSwgdGhpcy5mb3JtLCB7IGVtaXRFdmVudDogZmFsc2UsIG9ubHlTZWxmOiB0cnVlLCAuLi5vcHRzIH0pO1xuXG4gICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSB0cnVlKSB7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0KGRhdGE/OiBULCBvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuOyBvbmx5U2VsZj86IGJvb2xlYW4gfSkge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW2Zvcm1dIFJlc2V0dGluZyBmb3JtICh1c2luZyBlbnRpdHkpJywgZGF0YSk7XG5cbiAgICAgIC8vIENvbnZlcnQgb2JqZWN0IHRvIGpzb24sIHRoZW4gYXBwbHkgaXQgdG8gZm9ybSAoZS5nLiBjb252ZXJ0ICd1bmRlZmluZWQnIGludG8gJ251bGwnKVxuICAgICAgY29uc3QganNvbiA9IEFwcEZvcm1VdGlscy5nZXRGb3JtVmFsdWVGcm9tRW50aXR5KGRhdGEsIHRoaXMuZm9ybSk7XG4gICAgICB0aGlzLmZvcm0ucmVzZXQoanNvbiwgeyBlbWl0RXZlbnQ6IGZhbHNlLCBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtLnJlc2V0KHVuZGVmaW5lZCwgeyBlbWl0RXZlbnQ6IGZhbHNlLCBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IHRydWUpIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBtYXJrQXNQcmlzdGluZShvcHRzPzogeyBvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIHRoaXMuZm9ybS5tYXJrQXNQcmlzdGluZShvcHRzKTtcbiAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgbWFya0FzVW50b3VjaGVkKG9wdHM/OiB7IG9ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgdGhpcy5mb3JtLm1hcmtBc1VudG91Y2hlZChvcHRzKTtcbiAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHByZWZlciB0byB1c2UgbWFya0FsbEFzVG91Y2hlZCgpXG4gICAqIEBwYXJhbSBvcHRzXG4gICAqL1xuICBtYXJrQXNUb3VjaGVkKG9wdHM/OiB7IG9ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgLy8gdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKSAvLyBUaGlzIGlzIG5vdCB3b3JraW5nIHdlbGwgKGUuZy4gaW4gVHJpcEZvcm0pXG4gICAgaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUud2FybignVE9ETzogUmVwbGFjZSB0aGlzIGNhbGwgYnkgbWFya0FsbEFzVG91Y2hlZCgpIC0gYmVjYXVzZSBvZiBjaGFuZ2VzIGluIG5neC1jb21wb25lbnRzID49IDAuMTYuMCcpO1xuICAgIEFwcEZvcm1VdGlscy5tYXJrQXNUb3VjaGVkKHRoaXMuZm9ybSwgb3B0cyk7XG4gICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG1hcmtBbGxBc1RvdWNoZWQob3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgLy8gdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKSAvLyBUaGlzIGlzIG5vdCB3b3JraW5nIHdlbGwgKGUuZy4gaW4gVHJpcEZvcm0pXG4gICAgQXBwRm9ybVV0aWxzLm1hcmtBbGxBc1RvdWNoZWQodGhpcy5mb3JtLCBvcHRzKTtcbiAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgbWFya0FzRGlydHkob3B0cz86IHsgb25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICB0aGlzLmZvcm0ubWFya0FzRGlydHkob3B0cyk7XG4gICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG1hcmtBc0xvYWRpbmcob3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgdGhpcy5zZXRMb2FkaW5nKHRydWUsIG9wdHMpO1xuICB9XG5cbiAgbWFya0FzTG9hZGVkKG9wdHM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIHRoaXMuc2V0TG9hZGluZyhmYWxzZSwgb3B0cyk7XG4gIH1cblxuICBtYXJrQXNSZWFkeShvcHRzPzogeyBvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIGlmICghdGhpcy5yZWFkeVN1YmplY3QuY2xvc2VkICYmIHRoaXMucmVhZHlTdWJqZWN0LnZhbHVlICE9PSB0cnVlKSB7XG4gICAgICB0aGlzLnJlYWR5U3ViamVjdC5uZXh0KHRydWUpO1xuXG4gICAgICAvLyBJZiBzdWJjbGFzc2VzIGltcGxlbWVudHMgT25SZWFkeVxuICAgICAgaWYgKHR5cGVvZiB0aGlzWyduZ09uUmVhZHknXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAodGhpcyBhcyBhbnkgYXMgT25SZWFkeSkubmdPblJlYWR5KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdhaXQgZm9ybSBpcyByZWFkeVxuICAgKlxuICAgKiBAcGFyYW0gb3B0c1xuICAgKi9cbiAgcmVhZHkob3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMucmVhZHlTdWJqZWN0LnZhbHVlKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgcmV0dXJuIHdhaXRGb3JUcnVlKHRoaXMucmVhZHlTdWJqZWN0LCB7IHN0b3A6IHRoaXMuZGVzdHJveVN1YmplY3QsIC4uLm9wdHMgfSk7XG4gIH1cblxuICAvKipcbiAgICogV2FpdCBmb3JtIGlzIG5vdCBidXN5ICg9bG9hZGVkKVxuICAgKlxuICAgKiBAcGFyYW0gb3B0c1xuICAgKi9cbiAgd2FpdElkbGUob3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmxvYWRpbmdTdWJqZWN0LnZhbHVlKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgcmV0dXJuIHdhaXRGb3JGYWxzZSh0aGlzLmxvYWRpbmdTdWJqZWN0LCB7IHN0b3A6IHRoaXMuZGVzdHJveVN1YmplY3QsIC4uLm9wdHMgfSk7XG4gIH1cblxuICB1cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KG9wdHM/OiB7IG9ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgQXBwRm9ybVV0aWxzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkodGhpcy5mb3JtLCBvcHRzKTtcbiAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgdHJhbnNsYXRlRm9ybVBhdGgocGF0aDogc3RyaW5nKSB7XG4gICAgY29uc3QgaTE4bkZpZWxkTmFtZSA9IHRoaXMuZ2V0STE4bkZpZWxkTmFtZShwYXRoKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGU/Lmluc3RhbnQoaTE4bkZpZWxkTmFtZSkgfHwgaTE4bkZpZWxkTmFtZTtcbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzIC0tICovXG5cbiAgcHJvdGVjdGVkIGdldEZvcm1FcnJvcihmb3JtOiBVbnR5cGVkRm9ybUdyb3VwLCBvcHRzPzogRm9ybUVycm9yVHJhbnNsYXRvck9wdGlvbnMpOiBzdHJpbmcge1xuICAgIGlmICghZm9ybSB8fCAhdGhpcy5lcnJvclRyYW5zbGF0b3IpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JUcmFuc2xhdG9yLnRyYW5zbGF0ZUZvcm1FcnJvcnModGhpcy5mb3JtLCB7XG4gICAgICBwYXRoVHJhbnNsYXRvcjogdGhpcyxcbiAgICAgIC4uLm9wdHMsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0STE4bkZpZWxkTmFtZShwYXRoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKHRoaXMuaTE4bkZpZWxkUHJlZml4IHx8ICcnKSArIGNoYW5nZUNhc2VUb1VuZGVyc2NvcmUocGF0aCkudG9VcHBlckNhc2UoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWdpc3RlclN1YnNjcmlwdGlvbihzdWI6IFN1YnNjcmlwdGlvbikge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoc3ViKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1bnJlZ2lzdGVyU3Vic2NyaXB0aW9uKHN1YjogU3Vic2NyaXB0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLnJlbW92ZShzdWIpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlZ2lzdGVyQXV0b2NvbXBsZXRlRmllbGQ8RSA9IGFueSwgRUYgPSBhbnk+KFxuICAgIGZpZWxkTmFtZTogc3RyaW5nLFxuICAgIG9wdHM/OiBNYXRBdXRvY29tcGxldGVGaWVsZEFkZE9wdGlvbnM8RSwgRUY+XG4gICk6IE1hdEF1dG9jb21wbGV0ZUZpZWxkQ29uZmlnPEUsIEVGPiB7XG4gICAgcmV0dXJuIHRoaXMuYXV0b2NvbXBsZXRlSGVscGVyLmFkZChmaWVsZE5hbWUsIG9wdHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldEVycm9yKHZhbHVlOiBzdHJpbmcsIG9wdHM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIGlmICh0aGlzLmVycm9yU3ViamVjdC52YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQodmFsdWUpO1xuICAgICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkge1xuICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBtYXJrRm9yQ2hlY2soKSB7XG4gICAgLy8gU2hvdWxkIGJlIG92ZXJ3cml0dGVuIGJ5IHN1YmNsYXNzZXNcbiAgICBjb25zb2xlLndhcm4oJ21hcmtGb3JDaGVjaygpIGhhcyBiZWVuIGNhbGxlZCwgYnV0IGlzIG5vdCBvdmVyd3JpdHRlbiBieSBjb21wb25lbnQgJyArIHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG4gIH1cblxuICAvKiAtLSBwcml2YXRlIGZ1bmN0aW9uIC0tICovXG5cbiAgcHJpdmF0ZSBzZXRMb2FkaW5nKHZhbHVlOiBib29sZWFuLCBvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICBpZiAoIXRoaXMubG9hZGluZ1N1YmplY3QuY2xvc2VkICYmIHRoaXMubG9hZGluZ1N1YmplY3QudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQodmFsdWUpO1xuXG4gICAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
344
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL2Zvcm0uY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVksS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQXFCLE1BQU0sY0FBYyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQWtCLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JGLE9BQU8sRUFBNkIsbUJBQW1CLEVBQXVCLE1BQU0saURBQWlELENBQUM7QUFDdEksT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUNMLDJCQUEyQixHQUc1QixNQUFNLGlFQUFpRSxDQUFDOzs7QUFHekUsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBTyxPQUFPO0lBQ1YsYUFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDakMsS0FBSyxDQUFtQjtJQUN4QixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLGVBQWUsQ0FBc0I7SUFDckMsZUFBZSxHQUFXLElBQUksQ0FBQztJQUN0QixTQUFTLENBQW1CO0lBQzVCLFFBQVEsQ0FBdUI7SUFDL0IsY0FBYyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFeEQsNkJBQTZCO0lBQ3BCLFlBQVksR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUNuRCxjQUFjLEdBQUcsSUFB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QkFBaEIsS0FBSztnQkFDRyx5QkFBeUI7c0JBQWpDLEtBQUs7Z0JBR0YsSUFBSTtzQkFEUCxLQUFLO2dCQVNJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXBwRm9ybVV0aWxzLCBJQXBwRm9ybSwgT25SZWFkeSB9IGZyb20gJy4vZm9ybS51dGlscyc7XG5pbXBvcnQgeyBMb2NhbFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2xvY2FsLXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgd2FpdEZvckZhbHNlLCBXYWl0Rm9yT3B0aW9ucywgd2FpdEZvclRydWUgfSBmcm9tICcuLi8uLi9zaGFyZWQvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHsgRm9ybUVycm9yVHJhbnNsYXRlT3B0aW9ucywgRm9ybUVycm9yVHJhbnNsYXRvciwgSUZvcm1QYXRoVHJhbnNsYXRvciB9IGZyb20gJy4uLy4uL3NoYXJlZC92YWxpZGF0b3IvZm9ybS1lcnJvci1hZGFwdGVyLmNsYXNzJztcbmltcG9ydCB7IGNoYW5nZUNhc2VUb1VuZGVyc2NvcmUgfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gIE1hdEF1dG9jb21wbGV0ZUNvbmZpZ0hvbGRlcixcbiAgTWF0QXV0b2NvbXBsZXRlRmllbGRBZGRPcHRpb25zLFxuICBNYXRBdXRvY29tcGxldGVGaWVsZENvbmZpZyxcbn0gZnJvbSAnLi4vLi4vc2hhcmVkL21hdGVyaWFsL2F1dG9jb21wbGV0ZS9tYXRlcmlhbC5hdXRvY29tcGxldGUuY29uZmlnJztcblxuQERpcmVjdGl2ZSgpXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBjbGFzcyBBcHBGb3JtPFQ+IGltcGxlbWVudHMgSUFwcEZvcm08VD4sIE9uSW5pdCwgT25EZXN0cm95LCBJRm9ybVBhdGhUcmFuc2xhdG9yIHtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcm90ZWN0ZWQgX2Zvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gIHByb3RlY3RlZCBfZW5hYmxlZCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgZXJyb3JUcmFuc2xhdG9yOiBGb3JtRXJyb3JUcmFuc2xhdG9yO1xuICBwcm90ZWN0ZWQgaTE4bkZpZWxkUHJlZml4OiBzdHJpbmcgPSBudWxsO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2V0dGluZ3M6IExvY2FsU2V0dGluZ3NTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzdHJveVN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8vIFRPRE8gdXNlIFJ4U3RhdGUgaW5zdGVhZCA/XG4gIHJlYWRvbmx5IHJlYWR5U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBsb2FkaW5nU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IGVycm9yU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPih1bmRlZmluZWQpO1xuXG4gIHJlYWRvbmx5IGF1dG9jb21wbGV0ZUhlbHBlcjogTWF0QXV0b2NvbXBsZXRlQ29uZmlnSG9sZGVyO1xuICByZWFkb25seSBhdXRvY29tcGxldGVGaWVsZHM6IHsgW2tleTogc3RyaW5nXTogTWF0QXV0b2NvbXBsZXRlRmllbGRDb25maWcgfTtcblxuICBnZXQgZXJyb3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5lcnJvclN1YmplY3QudmFsdWU7XG4gIH1cblxuICBzZXQgZXJyb3IoZXJyb3I6IHN0cmluZykge1xuICAgIHRoaXMuc2V0RXJyb3IoZXJyb3IpO1xuICB9XG5cbiAgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubG9hZGluZ1N1YmplY3QudmFsdWU7XG4gIH1cblxuICBnZXQgbG9hZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5sb2FkaW5nU3ViamVjdC52YWx1ZTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmZvcm0udmFsdWU7XG4gIH1cblxuICBzZXQgdmFsdWUoZGF0YTogYW55KSB7XG4gICAgdGhpcy5zZXRWYWx1ZShkYXRhKTtcbiAgfVxuXG4gIGdldCBkaXJ0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtPy5kaXJ0eSB8fCBmYWxzZTtcbiAgfVxuXG4gIGdldCBpbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5mb3JtIHx8IHRoaXMuZm9ybS5pbnZhbGlkO1xuICB9XG5cbiAgZ2V0IHBlbmRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmZvcm0gfHwgKHRoaXMuZm9ybS5kaXJ0eSAmJiB0aGlzLmZvcm0ucGVuZGluZyk7XG4gIH1cblxuICBnZXQgdmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybT8udmFsaWQgfHwgZmFsc2U7XG4gIH1cblxuICBnZXQgZW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmZvcm0gfHwgKCF0aGlzLmZvcm0uZGlydHkgJiYgIXRoaXMuZm9ybS50b3VjaGVkKTtcbiAgfVxuXG4gIGdldCB0b3VjaGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZvcm0/LnRvdWNoZWQgfHwgZmFsc2U7XG4gIH1cblxuICBnZXQgdW50b3VjaGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5mb3JtIHx8IHRoaXMuZm9ybS51bnRvdWNoZWQ7XG4gIH1cblxuICBnZXQgZW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZW5hYmxlZDtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuX2VuYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogIEBkZXByZWNhdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IF9lbmFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQ7XG4gIH1cbiAgcHJvdGVjdGVkIHNldCBfZW5hYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZW5hYmxlZCA9IHZhbHVlO1xuICB9XG5cbiAgZGlzYWJsZShvcHRzPzogeyBvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybT8uZGlzYWJsZShvcHRzKTtcbiAgICBpZiAodGhpcy5fZW5hYmxlZCkge1xuICAgICAgdGhpcy5fZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBlbmFibGUob3B0cz86IHsgb25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pOiB2b2lkIHtcbiAgICB0aGlzLmZvcm0/LmVuYWJsZShvcHRzKTtcbiAgICBpZiAoIXRoaXMuX2VuYWJsZWQpIHtcbiAgICAgIHRoaXMuX2VuYWJsZWQgPSB0cnVlO1xuICAgICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZGVzdHJveWVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRlc3Ryb3lTdWJqZWN0Py5jbG9zZWQgIT09IGZhbHNlO1xuICB9XG5cbiAgQElucHV0KCkgZGVidWcgPSBmYWxzZTtcbiAgQElucHV0KCkgdGFiaW5kZXg6IG51bWJlcjtcbiAgQElucHV0KCkgZm9ybUVycm9yVHJhbnNsYXRlT3B0aW9uczogRm9ybUVycm9yVHJhbnNsYXRlT3B0aW9ucztcblxuICBASW5wdXQoKVxuICBzZXQgZm9ybSh2YWx1ZTogVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIHRoaXMuc2V0Rm9ybSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgZm9ybSgpOiBVbnR5cGVkRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBvbkNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb25TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IsIGZvcm0/OiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgaWYgKGZvcm0pIHRoaXMuc2V0Rm9ybShmb3JtKTtcbiAgICB0aGlzLnRyYW5zbGF0ZSA9IGluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKTtcbiAgICB0aGlzLnNldHRpbmdzID0gaW5qZWN0b3IuZ2V0KExvY2FsU2V0dGluZ3NTZXJ2aWNlKTtcbiAgICB0aGlzLmVycm9yVHJhbnNsYXRvciA9IGluamVjdG9yLmdldChGb3JtRXJyb3JUcmFuc2xhdG9yKTtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUhlbHBlciA9IG5ldyBNYXRBdXRvY29tcGxldGVDb25maWdIb2xkZXIoXG4gICAgICB0aGlzLnNldHRpbmdzICYmIHtcbiAgICAgICAgZ2V0VXNlckF0dHJpYnV0ZXM6IChhLCBiKSA9PiB0aGlzLnNldHRpbmdzLmdldEZpZWxkRGlzcGxheUF0dHJpYnV0ZXMoYSwgYiksXG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUZpZWxkcyA9IHRoaXMuYXV0b2NvbXBsZXRlSGVscGVyLmZpZWxkcztcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIFdpbGwgZW5hYmxlL0Rpc2FibGUgdGhlIGRlbGVnYXRpbmcgYW5ndWxhciBmb3JtXG4gICAgaWYgKHRoaXMuX2VuYWJsZWQpIHRoaXMuZW5hYmxlKCk7XG4gICAgZWxzZSB0aGlzLmRpc2FibGUoKTtcblxuICAgIHRoaXMuZm9ybUVycm9yVHJhbnNsYXRlT3B0aW9ucyA9IHRoaXMuZm9ybUVycm9yVHJhbnNsYXRlT3B0aW9ucyB8fCB7XG4gICAgICBwYXRoVHJhbnNsYXRvcjogdGhpcyxcbiAgICB9O1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLnJlYWR5U3ViamVjdC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMubG9hZGluZ1N1YmplY3QudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmVycm9yU3ViamVjdC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub25DYW5jZWwudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9uU3VibWl0LnVuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLmRlc3Ryb3lTdWJqZWN0Lm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3lTdWJqZWN0LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBhc3luYyBjYW5jZWwoKSB7XG4gICAgdGhpcy5vbkNhbmNlbC5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqIEBwYXJhbSBvcHRzIGFsbG93IHRvIHNraXAgdmFsaWRhdGlvbiBjaGVjaywgdXNpbmcge2NoZWNrVmFsaWQ6IGZhbHNlfVxuICAgKi9cbiAgYXN5bmMgZG9TdWJtaXQoZXZlbnQ6IGFueSwgb3B0cz86IHsgY2hlY2tWYWxpZD86IGJvb2xlYW4gfSkge1xuICAgIGlmICghdGhpcy5fZm9ybSkge1xuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkKHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHZhbGlkIChpZiBub3QgZGlzYWJsZWQpXG4gICAgaWYgKCghb3B0cyB8fCBvcHRzLmNoZWNrVmFsaWQgIT09IGZhbHNlKSAmJiAhdGhpcy5fZm9ybS52YWxpZCkge1xuICAgICAgLy8gV2FpdCB2YWxpZGF0aW9uIGVuZFxuICAgICAgYXdhaXQgQXBwRm9ybVV0aWxzLndhaXRXaGlsZVBlbmRpbmcodGhpcy5fZm9ybSk7XG5cbiAgICAgIC8vIEZvcm0gaXMgaW52YWxpZDogZXhpdCAoKyBsb2cgaWYgZGVidWcpXG4gICAgICBpZiAodGhpcy5fZm9ybS5pbnZhbGlkKSB7XG4gICAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCh7IGVtaXRFdmVudDogdHJ1ZSB9KTtcbiAgICAgICAgaWYgKHRoaXMuZGVidWcpIEFwcEZvcm1VdGlscy5sb2dGb3JtRXJyb3JzKHRoaXMuX2Zvcm0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRW1pdCBldmVudFxuICAgIHRoaXMub25TdWJtaXQuZW1pdChldmVudCk7XG4gIH1cblxuICBzZXRGb3JtKGZvcm06IFVudHlwZWRGb3JtR3JvdXApIHtcbiAgICBpZiAodGhpcy5fZm9ybSAhPT0gZm9ybSkge1xuICAgICAgdGhpcy5fZm9ybSA9IGZvcm07XG4gICAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKHRoaXMuX2Zvcm0uc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKF8pID0+IHRoaXMubWFya0ZvckNoZWNrKCkpKTtcbiAgICB9XG4gIH1cblxuICBnZXRWYWx1ZSgpOiBQcm9taXNlPFQ+IHwgVCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS52YWx1ZSBhcyBUO1xuICB9XG5cbiAgc2V0VmFsdWUoZGF0YTogVCwgb3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbjsgb25seVNlbGY/OiBib29sZWFuIH0pOiBQcm9taXNlPHZvaWQ+IHwgdm9pZCB7XG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tmb3JtXSBUcnlpbmcgdG8gc2V0IGFuIGVtcHR5IHZhbHVlIHRvIGZvcm0uIFNraXBwaW5nJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gREVCVUdcbiAgICAvL2lmICh0aGlzLmRlYnVnKSBjb25zb2xlLmRlYnVnKCdbZm9ybV0gVXBkYXRpbmcgZm9ybSAodXNpbmcgZW50aXR5KScsIGRhdGEpO1xuXG4gICAgLy8gQ29udmVydCBvYmplY3QgdG8ganNvbiwgdGhlbiBhcHBseSBpdCB0byBmb3JtIChlLmcuIGNvbnZlcnQgJ3VuZGVmaW5lZCcgaW50byAnbnVsbCcpXG4gICAgQXBwRm9ybVV0aWxzLmNvcHlFbnRpdHkyRm9ybShkYXRhLCB0aGlzLmZvcm0sIHsgZW1pdEV2ZW50OiBmYWxzZSwgb25seVNlbGY6IHRydWUsIC4uLm9wdHMgfSk7XG5cbiAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IHRydWUpIHtcbiAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcmVzZXQoZGF0YT86IFQsIG9wdHM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW47IG9ubHlTZWxmPzogYm9vbGVhbiB9KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmICh0aGlzLmRlYnVnKSBjb25zb2xlLmRlYnVnKCdbZm9ybV0gUmVzZXR0aW5nIGZvcm0gKHVzaW5nIGVudGl0eSknLCBkYXRhKTtcblxuICAgICAgLy8gQ29udmVydCBvYmplY3QgdG8ganNvbiwgdGhlbiBhcHBseSBpdCB0byBmb3JtIChlLmcuIGNvbnZlcnQgJ3VuZGVmaW5lZCcgaW50byAnbnVsbCcpXG4gICAgICBjb25zdCBqc29uID0gQXBwRm9ybVV0aWxzLmdldEZvcm1WYWx1ZUZyb21FbnRpdHkoZGF0YSwgdGhpcy5mb3JtKTtcbiAgICAgIHRoaXMuZm9ybS5yZXNldChqc29uLCB7IGVtaXRFdmVudDogZmFsc2UsIG9ubHlTZWxmOiB0cnVlIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm0ucmVzZXQodW5kZWZpbmVkLCB7IGVtaXRFdmVudDogZmFsc2UsIG9ubHlTZWxmOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gdHJ1ZSkgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG1hcmtBc1ByaXN0aW5lKG9wdHM/OiB7IG9ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgdGhpcy5mb3JtLm1hcmtBc1ByaXN0aW5lKG9wdHMpO1xuICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBtYXJrQXNVbnRvdWNoZWQob3B0cz86IHsgb25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICB0aGlzLmZvcm0ubWFya0FzVW50b3VjaGVkKG9wdHMpO1xuICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgcHJlZmVyIHRvIHVzZSBtYXJrQWxsQXNUb3VjaGVkKClcbiAgICogQHBhcmFtIG9wdHNcbiAgICovXG4gIG1hcmtBc1RvdWNoZWQob3B0cz86IHsgb25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICAvLyB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpIC8vIFRoaXMgaXMgbm90IHdvcmtpbmcgd2VsbCAoZS5nLiBpbiBUcmlwRm9ybSlcbiAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS53YXJuKCdUT0RPOiBSZXBsYWNlIHRoaXMgY2FsbCBieSBtYXJrQWxsQXNUb3VjaGVkKCkgLSBiZWNhdXNlIG9mIGNoYW5nZXMgaW4gbmd4LWNvbXBvbmVudHMgPj0gMC4xNi4wJyk7XG4gICAgQXBwRm9ybVV0aWxzLm1hcmtBc1RvdWNoZWQodGhpcy5mb3JtLCBvcHRzKTtcbiAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgbWFya0FsbEFzVG91Y2hlZChvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICAvLyB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpIC8vIFRoaXMgaXMgbm90IHdvcmtpbmcgd2VsbCAoZS5nLiBpbiBUcmlwRm9ybSlcbiAgICBBcHBGb3JtVXRpbHMubWFya0FsbEFzVG91Y2hlZCh0aGlzLmZvcm0sIG9wdHMpO1xuICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBtYXJrQXNEaXJ0eShvcHRzPzogeyBvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIHRoaXMuZm9ybS5tYXJrQXNEaXJ0eShvcHRzKTtcbiAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgbWFya0FzTG9hZGluZyhvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICB0aGlzLnNldExvYWRpbmcodHJ1ZSwgb3B0cyk7XG4gIH1cblxuICBtYXJrQXNMb2FkZWQob3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgdGhpcy5zZXRMb2FkaW5nKGZhbHNlLCBvcHRzKTtcbiAgfVxuXG4gIG1hcmtBc1JlYWR5KG9wdHM/OiB7IG9ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgaWYgKCF0aGlzLnJlYWR5U3ViamVjdC5jbG9zZWQgJiYgdGhpcy5yZWFkeVN1YmplY3QudmFsdWUgIT09IHRydWUpIHtcbiAgICAgIHRoaXMucmVhZHlTdWJqZWN0Lm5leHQodHJ1ZSk7XG5cbiAgICAgIC8vIElmIHN1YmNsYXNzZXMgaW1wbGVtZW50cyBPblJlYWR5XG4gICAgICBpZiAodHlwZW9mIHRoaXNbJ25nT25SZWFkeSddID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICh0aGlzIGFzIGFueSBhcyBPblJlYWR5KS5uZ09uUmVhZHkoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2FpdCBmb3JtIGlzIHJlYWR5XG4gICAqXG4gICAqIEBwYXJhbSBvcHRzXG4gICAqL1xuICByZWFkeShvcHRzPzogV2FpdEZvck9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5yZWFkeVN1YmplY3QudmFsdWUpIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICByZXR1cm4gd2FpdEZvclRydWUodGhpcy5yZWFkeVN1YmplY3QsIHsgc3RvcDogdGhpcy5kZXN0cm95U3ViamVjdCwgLi4ub3B0cyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXYWl0IGZvcm0gaXMgbm90IGJ1c3kgKD1sb2FkZWQpXG4gICAqXG4gICAqIEBwYXJhbSBvcHRzXG4gICAqL1xuICB3YWl0SWRsZShvcHRzPzogV2FpdEZvck9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMubG9hZGluZ1N1YmplY3QudmFsdWUpIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICByZXR1cm4gd2FpdEZvckZhbHNlKHRoaXMubG9hZGluZ1N1YmplY3QsIHsgc3RvcDogdGhpcy5kZXN0cm95U3ViamVjdCwgLi4ub3B0cyB9KTtcbiAgfVxuXG4gIHVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkob3B0cz86IHsgb25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICBBcHBGb3JtVXRpbHMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh0aGlzLmZvcm0sIG9wdHMpO1xuICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICB0cmFuc2xhdGVGb3JtUGF0aChwYXRoOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpMThuRmllbGROYW1lID0gdGhpcy5nZXRJMThuRmllbGROYW1lKHBhdGgpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZT8uaW5zdGFudChpMThuRmllbGROYW1lKSB8fCBpMThuRmllbGROYW1lO1xuICB9XG5cbiAgLyogLS0gcHJvdGVjdGVkIG1ldGhvZHMgLS0gKi9cblxuICBwcm90ZWN0ZWQgZ2V0Rm9ybUVycm9yKGZvcm06IFVudHlwZWRGb3JtR3JvdXAsIG9wdHM/OiBGb3JtRXJyb3JUcmFuc2xhdGVPcHRpb25zKTogc3RyaW5nIHtcbiAgICBpZiAoIWZvcm0gfHwgIXRoaXMuZXJyb3JUcmFuc2xhdG9yKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiB0aGlzLmVycm9yVHJhbnNsYXRvci50cmFuc2xhdGVGb3JtRXJyb3JzKHRoaXMuZm9ybSwge1xuICAgICAgcGF0aFRyYW5zbGF0b3I6IHRoaXMsXG4gICAgICAuLi5vcHRzLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEkxOG5GaWVsZE5hbWUocGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuICh0aGlzLmkxOG5GaWVsZFByZWZpeCB8fCAnJykgKyBjaGFuZ2VDYXNlVG9VbmRlcnNjb3JlKHBhdGgpLnRvVXBwZXJDYXNlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVnaXN0ZXJTdWJzY3JpcHRpb24oc3ViOiBTdWJzY3JpcHRpb24pIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKHN1Yik7XG4gIH1cblxuICBwcm90ZWN0ZWQgdW5yZWdpc3RlclN1YnNjcmlwdGlvbihzdWI6IFN1YnNjcmlwdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5yZW1vdmUoc3ViKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWdpc3RlckF1dG9jb21wbGV0ZUZpZWxkPEUgPSBhbnksIEVGID0gYW55PihcbiAgICBmaWVsZE5hbWU6IHN0cmluZyxcbiAgICBvcHRzPzogTWF0QXV0b2NvbXBsZXRlRmllbGRBZGRPcHRpb25zPEUsIEVGPlxuICApOiBNYXRBdXRvY29tcGxldGVGaWVsZENvbmZpZzxFLCBFRj4ge1xuICAgIHJldHVybiB0aGlzLmF1dG9jb21wbGV0ZUhlbHBlci5hZGQoZmllbGROYW1lLCBvcHRzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRFcnJvcih2YWx1ZTogc3RyaW5nLCBvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICBpZiAodGhpcy5lcnJvclN1YmplY3QudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgbWFya0ZvckNoZWNrKCkge1xuICAgIC8vIFNob3VsZCBiZSBvdmVyd3JpdHRlbiBieSBzdWJjbGFzc2VzXG4gICAgY29uc29sZS53YXJuKCdtYXJrRm9yQ2hlY2soKSBoYXMgYmVlbiBjYWxsZWQsIGJ1dCBpcyBub3Qgb3ZlcndyaXR0ZW4gYnkgY29tcG9uZW50ICcgKyB0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuICB9XG5cbiAgLyogLS0gcHJpdmF0ZSBmdW5jdGlvbiAtLSAqL1xuXG4gIHByaXZhdGUgc2V0TG9hZGluZyh2YWx1ZTogYm9vbGVhbiwgb3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgaWYgKCF0aGlzLmxvYWRpbmdTdWJqZWN0LmNsb3NlZCAmJiB0aGlzLmxvYWRpbmdTdWJqZWN0LnZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KHZhbHVlKTtcblxuICAgICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkge1xuICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|