@fundamental-ngx/platform 0.46.0-rc.58 → 0.46.0-rc.59

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/esm2022/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.mjs +2 -2
  2. package/esm2022/form/multi-input/multi-input.component.mjs +9 -24
  3. package/esm2022/form/switch/switch/switch.component.mjs +7 -10
  4. package/esm2022/link/link.component.mjs +3 -3
  5. package/esm2022/search-field/search-field.component.mjs +18 -22
  6. package/esm2022/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.mjs +15 -24
  7. package/esm2022/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +8 -9
  8. package/esm2022/smart-filter-bar/interfaces/smart-filter-bar-visibility-category.mjs +1 -1
  9. package/esm2022/smart-filter-bar/interfaces/strategy-labels.type.mjs +1 -1
  10. package/esm2022/table/components/table-editable-cell/table-editable-cell.component.mjs +2 -2
  11. package/fesm2022/fundamental-ngx-platform-form.mjs +19 -36
  12. package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
  13. package/fesm2022/fundamental-ngx-platform-link.mjs +2 -2
  14. package/fesm2022/fundamental-ngx-platform-link.mjs.map +1 -1
  15. package/fesm2022/fundamental-ngx-platform-search-field.mjs +17 -21
  16. package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
  17. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +20 -26
  18. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
  19. package/fesm2022/fundamental-ngx-platform-table.mjs +1 -1
  20. package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
  21. package/form/multi-input/multi-input.component.d.ts +2 -12
  22. package/form/switch/switch/switch.component.d.ts +2 -4
  23. package/fundamental-ngx-platform-v0.46.0-rc.59.tgz +0 -0
  24. package/package.json +4 -4
  25. package/schematics/ng-add/index.js +1 -1
  26. package/search-field/search-field.component.d.ts +5 -7
  27. package/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.d.ts +2 -7
  28. package/smart-filter-bar/interfaces/smart-filter-bar-visibility-category.d.ts +6 -1
  29. package/smart-filter-bar/interfaces/strategy-labels.type.d.ts +7 -1
  30. package/fundamental-ngx-platform-v0.46.0-rc.58.tgz +0 -0
@@ -12,10 +12,10 @@ export class DynamicFormGeneratorSwitchComponent extends BaseDynamicFormGenerato
12
12
  super();
13
13
  }
14
14
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: DynamicFormGeneratorSwitchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: DynamicFormGeneratorSwitchComponent, isStandalone: true, selector: "fdp-dynamic-form-generator-switch", usesInheritance: true, ngImport: i0, template: "<ng-container [formGroup]=\"form\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-switch\n [id]=\"id\"\n [name]=\"name\"\n [semantic]=\"formItem.guiOptions?.additionalData?.semantic\"\n [formControlName]=\"name\"\n ></fdp-switch>\n </ng-container>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "ngmodule", type: PlatformSwitchModule }, { kind: "component", type: i2.SwitchComponent, selector: "fdp-switch", inputs: ["ariaLabel", "ariaLabelledby", "semantic"], outputs: ["switchChange"] }], viewProviders: [dynamicFormFieldProvider, dynamicFormGroupChildProvider], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: DynamicFormGeneratorSwitchComponent, isStandalone: true, selector: "fdp-dynamic-form-generator-switch", usesInheritance: true, ngImport: i0, template: "<ng-container [formGroup]=\"form\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-switch\n [id]=\"id\"\n [name]=\"name\"\n [semantic]=\"formItem.guiOptions?.additionalData?.semantic\"\n [formControlName]=\"name\"\n ></fdp-switch>\n </ng-container>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "ngmodule", type: PlatformSwitchModule }, { kind: "component", type: i2.SwitchComponent, selector: "fdp-switch", inputs: ["ariaLabelledby", "semantic"], outputs: ["switchChange"] }], viewProviders: [dynamicFormFieldProvider, dynamicFormGroupChildProvider], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
16
16
  }
17
17
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: DynamicFormGeneratorSwitchComponent, decorators: [{
18
18
  type: Component,
19
19
  args: [{ selector: 'fdp-dynamic-form-generator-switch', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [dynamicFormFieldProvider, dynamicFormGroupChildProvider], standalone: true, imports: [FormsModule, ReactiveFormsModule, PlatformSwitchModule], template: "<ng-container [formGroup]=\"form\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-switch\n [id]=\"id\"\n [name]=\"name\"\n [semantic]=\"formItem.guiOptions?.additionalData?.semantic\"\n [formControlName]=\"name\"\n ></fdp-switch>\n </ng-container>\n</ng-container>\n" }]
20
20
  }], ctorParameters: function () { return []; } });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLWdlbmVyYXRvci1zd2l0Y2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vZm9ybS1nZW5lcmF0b3IvY29udHJvbHMvZHluYW1pYy1mb3JtLWdlbmVyYXRvci1zd2l0Y2gvZHluYW1pYy1mb3JtLWdlbmVyYXRvci1zd2l0Y2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vZm9ybS1nZW5lcmF0b3IvY29udHJvbHMvZHluYW1pYy1mb3JtLWdlbmVyYXRvci1zd2l0Y2gvZHluYW1pYy1mb3JtLWdlbmVyYXRvci1zd2l0Y2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM1RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFXbEUsTUFBTSxPQUFPLG1DQUFvQyxTQUFRLCtCQUErQjtJQUNwRixjQUFjO0lBQ2Q7UUFDSSxLQUFLLEVBQUUsQ0FBQztJQUNaLENBQUM7OEdBSlEsbUNBQW1DO2tHQUFuQyxtQ0FBbUMsb0hDaEJoRCx3VkFVQSwyQ0RJYyxXQUFXLGtTQUFFLG1CQUFtQixzYkFBRSxvQkFBb0IsNktBRmpELENBQUMsd0JBQXdCLEVBQUUsNkJBQTZCLENBQUM7OzJGQUkvRCxtQ0FBbUM7a0JBVC9DLFNBQVM7K0JBQ0ksbUNBQW1DLGlCQUU5QixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxDQUFDLHdCQUF3QixFQUFFLDZCQUE2QixDQUFDLGNBQzVELElBQUksV0FDUCxDQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJhc2VEeW5hbWljRm9ybUdlbmVyYXRvckNvbnRyb2wgfSBmcm9tICcuLi8uLi9iYXNlLWR5bmFtaWMtZm9ybS1nZW5lcmF0b3ItY29udHJvbCc7XG5pbXBvcnQgeyBkeW5hbWljRm9ybUZpZWxkUHJvdmlkZXIsIGR5bmFtaWNGb3JtR3JvdXBDaGlsZFByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL3Byb3ZpZGVycyc7XG5pbXBvcnQgeyBQbGF0Zm9ybVN3aXRjaE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL3N3aXRjaC9zd2l0Y2gubW9kdWxlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1keW5hbWljLWZvcm0tZ2VuZXJhdG9yLXN3aXRjaCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMtZm9ybS1nZW5lcmF0b3Itc3dpdGNoLmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHZpZXdQcm92aWRlcnM6IFtkeW5hbWljRm9ybUZpZWxkUHJvdmlkZXIsIGR5bmFtaWNGb3JtR3JvdXBDaGlsZFByb3ZpZGVyXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgUGxhdGZvcm1Td2l0Y2hNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNGb3JtR2VuZXJhdG9yU3dpdGNoQ29tcG9uZW50IGV4dGVuZHMgQmFzZUR5bmFtaWNGb3JtR2VuZXJhdG9yQ29udHJvbCB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgIDxuZy1jb250YWluZXIgW2Zvcm1Hcm91cE5hbWVdPVwiZm9ybUdyb3VwTmFtZVwiPlxuICAgICAgICA8ZmRwLXN3aXRjaFxuICAgICAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgICAgICAgW3NlbWFudGljXT1cImZvcm1JdGVtLmd1aU9wdGlvbnM/LmFkZGl0aW9uYWxEYXRhPy5zZW1hbnRpY1wiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5hbWVcIlxuICAgICAgICA+PC9mZHAtc3dpdGNoPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLWdlbmVyYXRvci1zd2l0Y2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vZm9ybS1nZW5lcmF0b3IvY29udHJvbHMvZHluYW1pYy1mb3JtLWdlbmVyYXRvci1zd2l0Y2gvZHluYW1pYy1mb3JtLWdlbmVyYXRvci1zd2l0Y2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vZm9ybS1nZW5lcmF0b3IvY29udHJvbHMvZHluYW1pYy1mb3JtLWdlbmVyYXRvci1zd2l0Y2gvZHluYW1pYy1mb3JtLWdlbmVyYXRvci1zd2l0Y2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM1RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFXbEUsTUFBTSxPQUFPLG1DQUFvQyxTQUFRLCtCQUErQjtJQUNwRixjQUFjO0lBQ2Q7UUFDSSxLQUFLLEVBQUUsQ0FBQztJQUNaLENBQUM7OEdBSlEsbUNBQW1DO2tHQUFuQyxtQ0FBbUMsb0hDaEJoRCx3VkFVQSwyQ0RJYyxXQUFXLGtTQUFFLG1CQUFtQixzYkFBRSxvQkFBb0IsZ0tBRmpELENBQUMsd0JBQXdCLEVBQUUsNkJBQTZCLENBQUM7OzJGQUkvRCxtQ0FBbUM7a0JBVC9DLFNBQVM7K0JBQ0ksbUNBQW1DLGlCQUU5QixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxDQUFDLHdCQUF3QixFQUFFLDZCQUE2QixDQUFDLGNBQzVELElBQUksV0FDUCxDQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJhc2VEeW5hbWljRm9ybUdlbmVyYXRvckNvbnRyb2wgfSBmcm9tICcuLi8uLi9iYXNlLWR5bmFtaWMtZm9ybS1nZW5lcmF0b3ItY29udHJvbCc7XG5pbXBvcnQgeyBkeW5hbWljRm9ybUZpZWxkUHJvdmlkZXIsIGR5bmFtaWNGb3JtR3JvdXBDaGlsZFByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL3Byb3ZpZGVycyc7XG5pbXBvcnQgeyBQbGF0Zm9ybVN3aXRjaE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL3N3aXRjaC9zd2l0Y2gubW9kdWxlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1keW5hbWljLWZvcm0tZ2VuZXJhdG9yLXN3aXRjaCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMtZm9ybS1nZW5lcmF0b3Itc3dpdGNoLmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHZpZXdQcm92aWRlcnM6IFtkeW5hbWljRm9ybUZpZWxkUHJvdmlkZXIsIGR5bmFtaWNGb3JtR3JvdXBDaGlsZFByb3ZpZGVyXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgUGxhdGZvcm1Td2l0Y2hNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNGb3JtR2VuZXJhdG9yU3dpdGNoQ29tcG9uZW50IGV4dGVuZHMgQmFzZUR5bmFtaWNGb3JtR2VuZXJhdG9yQ29udHJvbCB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgIDxuZy1jb250YWluZXIgW2Zvcm1Hcm91cE5hbWVdPVwiZm9ybUdyb3VwTmFtZVwiPlxuICAgICAgICA8ZmRwLXN3aXRjaFxuICAgICAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgICAgICAgW3NlbWFudGljXT1cImZvcm1JdGVtLmd1aU9wdGlvbnM/LmFkZGl0aW9uYWxEYXRhPy5zZW1hbnRpY1wiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5hbWVcIlxuICAgICAgICA+PC9mZHAtc3dpdGNoPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -13,9 +13,8 @@ import { ContentDensityModule, ContentDensityObserver, contentDensityObserverPro
13
13
  import { FormControlComponent } from '@fundamental-ngx/core/form';
14
14
  import { InputGroupModule } from '@fundamental-ngx/core/input-group';
15
15
  import { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';
16
- import { FD_LANGUAGE, TranslationResolver } from '@fundamental-ngx/i18n';
16
+ import { FdTranslatePipe } from '@fundamental-ngx/i18n';
17
17
  import equal from 'fast-deep-equal';
18
- import { Observable, firstValueFrom } from 'rxjs';
19
18
  import { AutoCompleteDirective } from '../auto-complete/auto-complete.directive';
20
19
  import { BaseMultiInput } from './base-multi-input';
21
20
  import { PlatformMultiInputMobileComponent } from './multi-input-mobile/multi-input-mobile.component';
@@ -30,7 +29,6 @@ import * as i5 from "@fundamental-ngx/core/content-density";
30
29
  import * as i6 from "@fundamental-ngx/core/input-group";
31
30
  import * as i7 from "@fundamental-ngx/platform/list";
32
31
  import * as i8 from "@fundamental-ngx/platform/shared";
33
- import * as i9 from "rxjs";
34
32
  let uniqueHiddenLabel = 0;
35
33
  export class MultiInputSelectionChangeEvent {
36
34
  /**
@@ -88,9 +86,7 @@ export class PlatformMultiInputComponent extends BaseMultiInput {
88
86
  /** @hidden */
89
87
  formField,
90
88
  /** @hidden */
91
- formControl, contentDensityObserver,
92
- /** @hidden */
93
- _language) {
89
+ formControl, contentDensityObserver) {
94
90
  super(cd, elementRef, ngControl, controlContainer, ngForm, dialogConfig, _multiInputConfig, formField, formControl);
95
91
  this.cd = cd;
96
92
  this.elementRef = elementRef;
@@ -104,7 +100,6 @@ export class PlatformMultiInputComponent extends BaseMultiInput {
104
100
  this._providers = _providers;
105
101
  this._multiInputConfig = _multiInputConfig;
106
102
  this.contentDensityObserver = contentDensityObserver;
107
- this._language = _language;
108
103
  /** @hidden */
109
104
  this.tokenCountHiddenLabel = `fdp-multi-input-token-count-id-${uniqueHiddenLabel++}`;
110
105
  /** token count hidden label */
@@ -137,8 +132,6 @@ export class PlatformMultiInputComponent extends BaseMultiInput {
137
132
  this.closeOnOutsideClick = true;
138
133
  /** Event emitted when item is selected. */
139
134
  this.selectionChange = new EventEmitter();
140
- /** @hidden */
141
- this._translationResolver = new TranslationResolver();
142
135
  /** Display function. Accepts an object of the same type as the
143
136
  * items passed to dropdownValues as argument, and outputs a string.
144
137
  * An arrow function can be used to access the *this* keyword in the calling component.
@@ -153,7 +146,6 @@ export class PlatformMultiInputComponent extends BaseMultiInput {
153
146
  if (!this.dataSource && this.entityClass && providers?.has(this.entityClass)) {
154
147
  this.dataSource = new MultiInputDataSource(providers.get(this.entityClass));
155
148
  }
156
- this._getAriaLabel();
157
149
  }
158
150
  /** @hidden */
159
151
  ngAfterViewInit() {
@@ -360,12 +352,7 @@ export class PlatformMultiInputComponent extends BaseMultiInput {
360
352
  containerRef: this._viewContainerRef
361
353
  }, { injector });
362
354
  }
363
- /** @hidden */
364
- async _getAriaLabel() {
365
- const lang = await firstValueFrom(this._language);
366
- this.ariaLabel = this._translationResolver.resolve(lang, 'coreMultiInput.multiInputAriaLabel');
367
- }
368
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: PlatformMultiInputComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.NgControl, optional: true, self: true }, { token: i1.ControlContainer, optional: true, skipSelf: true }, { token: i1.NgForm, optional: true, self: true }, { token: i2.DialogConfig, optional: true }, { token: i3.DynamicComponentService }, { token: i0.ViewContainerRef }, { token: i0.Injector }, { token: DATA_PROVIDERS, optional: true }, { token: i4.MultiInputConfig }, { token: FD_FORM_FIELD, host: true, optional: true, skipSelf: true }, { token: FD_FORM_FIELD_CONTROL, host: true, optional: true, skipSelf: true }, { token: i5.ContentDensityObserver }, { token: FD_LANGUAGE }], target: i0.ɵɵFactoryTarget.Component }); }
355
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: PlatformMultiInputComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.NgControl, optional: true, self: true }, { token: i1.ControlContainer, optional: true, skipSelf: true }, { token: i1.NgForm, optional: true, self: true }, { token: i2.DialogConfig, optional: true }, { token: i3.DynamicComponentService }, { token: i0.ViewContainerRef }, { token: i0.Injector }, { token: DATA_PROVIDERS, optional: true }, { token: i4.MultiInputConfig }, { token: FD_FORM_FIELD, host: true, optional: true, skipSelf: true }, { token: FD_FORM_FIELD_CONTROL, host: true, optional: true, skipSelf: true }, { token: i5.ContentDensityObserver }], target: i0.ɵɵFactoryTarget.Component }); }
369
356
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: PlatformMultiInputComponent, isStandalone: true, selector: "fdp-multi-input", inputs: { tokenHiddenId: "tokenHiddenId", type: "type", autofocus: "autofocus", glyphAriaLabel: "glyphAriaLabel", selected: "selected", selectionMode: "selectionMode", hasByLine: "hasByLine", disabled: "disabled", fillControlMode: "fillControlMode", triggers: "triggers", closeOnOutsideClick: "closeOnOutsideClick", addOnButtonClickFn: "addOnButtonClickFn", displayFn: "displayFn" }, outputs: { selectionChange: "selectionChange" }, providers: [
370
357
  {
371
358
  provide: FD_FORM_FIELD_CONTROL,
@@ -373,7 +360,7 @@ export class PlatformMultiInputComponent extends BaseMultiInput {
373
360
  multi: true
374
361
  },
375
362
  contentDensityObserverProviders()
376
- ], viewQueries: [{ propertyName: "listTemplateDD", first: true, predicate: ListComponent, descendants: true }, { propertyName: "tokenizer", first: true, predicate: TokenizerComponent, descendants: true }, { propertyName: "controlTemplate", first: true, predicate: ["controlTemplate"], descendants: true }, { propertyName: "listTemplate", first: true, predicate: ["listTemplate"], descendants: true }, { propertyName: "_listItems", predicate: BaseListItem, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"fd-multi-input\">\n <ng-container *ngTemplateOutlet=\"mobile ? mobileTemplate : desktopTemplate\"></ng-container>\n</div>\n<ng-template #desktopTemplate>\n <fd-popover\n additionalBodyClass=\"fdp-multi-input__list-container\"\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"_popoverOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"(!autoResize && minWidth) || 0\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </fd-popover-control>\n <fd-popover-body>\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n\n<ng-template #mobileTemplate>\n <ng-container [ngTemplateOutlet]=\"controlTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #controlTemplate>\n <fd-input-group\n [button]=\"true\"\n [buttonFocusable]=\"buttonFocusable\"\n [isControl]=\"true\"\n glyph=\"value-help\"\n [state]=\"state\"\n [disabled]=\"disabled\"\n (keydown)=\"removeSelectedTokens($event)\"\n (addOnButtonClicked)=\"addOnButtonClick($event)\"\n (click)=\"onInputGroupClicked()\"\n [glyphAriaLabel]=\"glyphAriaLabel\"\n >\n <span [attr.id]=\"tokenHiddenId\" aria-hidden=\"true\" class=\"fdp-multi-input__invisible-text\"\n >Contains {{ selected.length || 'no' }} token</span\n >\n <fd-tokenizer\n *ngIf=\"selected\"\n [tokenizerFocusable]=\"false\"\n [compactCollapse]=\"true\"\n #tokenizer\n class=\"fd-multi-input-tokenizer-custom\"\n (moreClickedEvent)=\"moreClicked()\"\n tabindex=\"-1\"\n role=\"listbox\"\n >\n <fd-token\n [readOnly]=\"disabled\"\n (onCloseClick)=\"removeToken(token)\"\n *ngFor=\"let token of selected; let i = index\"\n [attr.aria-posinset]=\"i\"\n [attr.aria-setsize]=\"selected.length\"\n >\n <span>{{ token.label | displayFnPipe : displayFn }}</span>\n </fd-token>\n\n <input\n #searchInputElement\n type=\"text\"\n class=\"fd-input fd-multi-input-tokenizer-input fd-tokenizer__input\"\n fdp-auto-complete\n autocomplete=\"off\"\n (onComplete)=\"_onAutoComplete($event)\"\n (keydown.enter)=\"_onKeydownEnter($event)\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [inputText]=\"inputText\"\n [options]=\"_suggestions\"\n fd-input-group-input\n fd-form-control\n [attr.id]=\"id\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"searchTermChanged()\"\n [ngModelOptions]=\"{ standalone: true }\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched(); tokenizer._showAllTokens()\"\n (blur)=\"tokenizer._hideTokens()\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n aria-haspopup=\"listbox\"\n [attr.aria-readonly]=\"readonly\"\n [ariaLabel]=\"ariaLabel\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [attr.aria-required]=\"required\"\n [attr.aria-describedby]=\"tokenHiddenId\"\n aria-roledescription=\"Multi Value Input\"\n fdkInitialFocus\n [enabled]=\"autofocus\"\n />\n </fd-tokenizer>\n </fd-input-group>\n</ng-template>\n<ng-template #listTemplate>\n <fdp-list\n [noBorder]=\"true\"\n #listTemplateDD\n [hasByLine]=\"hasByLine\"\n [selectionMode]=\"selectionMode\"\n *ngIf=\"_suggestions && _suggestions.length\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n >\n <ng-container *ngIf=\"!isGroup\">\n <fdp-standard-list-item\n *ngFor=\"let listItem of _suggestions\"\n [title]=\"listItem.label\"\n [description]=\"listItem.description || ''\"\n [avatar]=\"listItem.avatarSrc\"\n [value]=\"listItem.value\"\n (itemSelected)=\"selectionMode !== 'multi' && addToArray(listItem, true)\"\n (itemCheckboxSelected)=\"_checkboxSelected(listItem, $event)\"\n (buttonClicked)=\"deleteToken(listItem)\"\n role=\"option\"\n >\n </fdp-standard-list-item>\n </ng-container>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate\">\n <fdp-list-group-header [groupHeaderTitle]=\"group.label\"></fdp-list-group-header>\n </ng-container>\n\n <ng-container *ngIf=\"groupItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-container>\n\n <fdp-standard-list-item\n *ngFor=\"let optionItem of group.children; let i = index\"\n [title]=\"optionItem.label\"\n [value]=\"optionItem.value\"\n (itemSelected)=\"addToArray(optionItem, true)\"\n (itemCheckboxSelected)=\"addToArray(optionItem, false)\"\n (buttonClicked)=\"deleteToken(optionItem)\"\n role=\"option\"\n >\n </fdp-standard-list-item>\n </ng-container>\n </ng-container>\n </fdp-list>\n</ng-template>\n", styles: [".fd-multi-input-tokenizer-custom{width:calc(100% - 2.25rem)}.fd-multi-input-tokenizer-custom--compact{width:calc(100% - 2rem)}.fdp-multi-input__list-container.fd-popover__body{width:100%;overflow:hidden;position:relative}.fdp-multi-input__invisible-text{display:none!important}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i6.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "iconTitle", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "directive", type: i6.InputGroupInputDirective, selector: "[fdInputGroupInput], [fd-input-group-input]", inputs: ["class"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TokenComponent, selector: "fd-token", inputs: ["disabled", "selected", "readOnly"], outputs: ["onCloseClick", "onRemove", "onTokenClick", "onTokenKeydown", "elementFocused"] }, { kind: "component", type: TokenizerComponent, selector: "fd-tokenizer", inputs: ["class", "disableKeyboardDeletion", "compactCollapse", "tokenizerFocusable", "inputValue", "glyph", "moreTerm", "open"], outputs: ["moreClickedEvent"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: AutoCompleteDirective, selector: "[fdp-auto-complete]", inputs: ["options", "inputText", "mobile"], outputs: ["onComplete"] }, { kind: "directive", type: InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "ngmodule", type: PlatformListModule }, { kind: "component", type: i7.ListComponent, selector: "fdp-list", inputs: ["selectedItems", "ariaSetsize", "ariaMultiselectable", "loadTitle", "loadingLabel", "delayTime", "itemSize", "loadMore", "loadOnScroll", "role", "listType", "maxHeight", "noBorder", "scrollOffsetPercentage", "selection", "selectionMode", "value", "rowSelection", "dataSource", "navigated", "navigationIndicator", "hasByLine", "hasObject", "unreadIndicator"], outputs: ["selectedItemChange"] }, { kind: "component", type: i7.ListGroupHeaderComponent, selector: "fdp-list-group-header", inputs: ["groupHeaderTitle"] }, { kind: "component", type: i7.StandardListItemComponent, selector: "fdp-standard-list-item" }, { kind: "ngmodule", type: StandardListItemModule }, { kind: "pipe", type: DisplayFnPipe, name: "displayFnPipe" }, { kind: "ngmodule", type: ContentDensityModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
363
+ ], viewQueries: [{ propertyName: "listTemplateDD", first: true, predicate: ListComponent, descendants: true }, { propertyName: "tokenizer", first: true, predicate: TokenizerComponent, descendants: true }, { propertyName: "controlTemplate", first: true, predicate: ["controlTemplate"], descendants: true }, { propertyName: "listTemplate", first: true, predicate: ["listTemplate"], descendants: true }, { propertyName: "_listItems", predicate: BaseListItem, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"fd-multi-input\">\n <ng-container *ngTemplateOutlet=\"mobile ? mobileTemplate : desktopTemplate\"></ng-container>\n</div>\n<ng-template #desktopTemplate>\n <fd-popover\n additionalBodyClass=\"fdp-multi-input__list-container\"\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"_popoverOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"(!autoResize && minWidth) || 0\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </fd-popover-control>\n <fd-popover-body>\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n\n<ng-template #mobileTemplate>\n <ng-container [ngTemplateOutlet]=\"controlTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #controlTemplate>\n <fd-input-group\n [button]=\"true\"\n [buttonFocusable]=\"buttonFocusable\"\n [isControl]=\"true\"\n glyph=\"value-help\"\n [state]=\"state\"\n [disabled]=\"disabled\"\n (keydown)=\"removeSelectedTokens($event)\"\n (addOnButtonClicked)=\"addOnButtonClick($event)\"\n (click)=\"onInputGroupClicked()\"\n [glyphAriaLabel]=\"glyphAriaLabel\"\n >\n <span [attr.id]=\"tokenHiddenId\" aria-hidden=\"true\" class=\"fdp-multi-input__invisible-text\"\n >Contains {{ selected.length || 'no' }} token</span\n >\n <fd-tokenizer\n *ngIf=\"selected\"\n [tokenizerFocusable]=\"false\"\n [compactCollapse]=\"true\"\n #tokenizer\n class=\"fd-multi-input-tokenizer-custom\"\n (moreClickedEvent)=\"moreClicked()\"\n tabindex=\"-1\"\n role=\"listbox\"\n >\n <fd-token\n [readOnly]=\"disabled\"\n (onCloseClick)=\"removeToken(token)\"\n *ngFor=\"let token of selected; let i = index\"\n [attr.aria-posinset]=\"i\"\n [attr.aria-setsize]=\"selected.length\"\n >\n <span>{{ token.label | displayFnPipe : displayFn }}</span>\n </fd-token>\n\n <input\n #searchInputElement\n type=\"text\"\n class=\"fd-input fd-multi-input-tokenizer-input fd-tokenizer__input\"\n fdp-auto-complete\n autocomplete=\"off\"\n (onComplete)=\"_onAutoComplete($event)\"\n (keydown.enter)=\"_onKeydownEnter($event)\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [inputText]=\"inputText\"\n [options]=\"_suggestions\"\n fd-input-group-input\n fd-form-control\n [attr.id]=\"id\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"searchTermChanged()\"\n [ngModelOptions]=\"{ standalone: true }\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched(); tokenizer._showAllTokens()\"\n (blur)=\"tokenizer._hideTokens()\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n aria-haspopup=\"listbox\"\n [attr.aria-readonly]=\"readonly\"\n [ariaLabel]=\"ariaLabel || ('coreMultiInput.multiInputAriaLabel' | fdTranslate)\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [attr.aria-required]=\"required\"\n [attr.aria-describedby]=\"tokenHiddenId\"\n aria-roledescription=\"Multi Value Input\"\n fdkInitialFocus\n [enabled]=\"autofocus\"\n />\n </fd-tokenizer>\n </fd-input-group>\n</ng-template>\n<ng-template #listTemplate>\n <fdp-list\n [noBorder]=\"true\"\n #listTemplateDD\n [hasByLine]=\"hasByLine\"\n [selectionMode]=\"selectionMode\"\n *ngIf=\"_suggestions && _suggestions.length\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n >\n <ng-container *ngIf=\"!isGroup\">\n <fdp-standard-list-item\n *ngFor=\"let listItem of _suggestions\"\n [title]=\"listItem.label\"\n [description]=\"listItem.description || ''\"\n [avatar]=\"listItem.avatarSrc\"\n [value]=\"listItem.value\"\n (itemSelected)=\"selectionMode !== 'multi' && addToArray(listItem, true)\"\n (itemCheckboxSelected)=\"_checkboxSelected(listItem, $event)\"\n (buttonClicked)=\"deleteToken(listItem)\"\n role=\"option\"\n >\n </fdp-standard-list-item>\n </ng-container>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate\">\n <fdp-list-group-header [groupHeaderTitle]=\"group.label\"></fdp-list-group-header>\n </ng-container>\n\n <ng-container *ngIf=\"groupItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-container>\n\n <fdp-standard-list-item\n *ngFor=\"let optionItem of group.children; let i = index\"\n [title]=\"optionItem.label\"\n [value]=\"optionItem.value\"\n (itemSelected)=\"addToArray(optionItem, true)\"\n (itemCheckboxSelected)=\"addToArray(optionItem, false)\"\n (buttonClicked)=\"deleteToken(optionItem)\"\n role=\"option\"\n >\n </fdp-standard-list-item>\n </ng-container>\n </ng-container>\n </fdp-list>\n</ng-template>\n", styles: [".fd-multi-input-tokenizer-custom{width:calc(100% - 2.25rem)}.fd-multi-input-tokenizer-custom--compact{width:calc(100% - 2rem)}.fdp-multi-input__list-container.fd-popover__body{width:100%;overflow:hidden;position:relative}.fdp-multi-input__invisible-text{display:none!important}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i6.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "iconTitle", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "directive", type: i6.InputGroupInputDirective, selector: "[fdInputGroupInput], [fd-input-group-input]", inputs: ["class"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TokenComponent, selector: "fd-token", inputs: ["disabled", "selected", "readOnly"], outputs: ["onCloseClick", "onRemove", "onTokenClick", "onTokenKeydown", "elementFocused"] }, { kind: "component", type: TokenizerComponent, selector: "fd-tokenizer", inputs: ["class", "disableKeyboardDeletion", "compactCollapse", "tokenizerFocusable", "inputValue", "glyph", "moreTerm", "open"], outputs: ["moreClickedEvent"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: AutoCompleteDirective, selector: "[fdp-auto-complete]", inputs: ["options", "inputText", "mobile"], outputs: ["onComplete"] }, { kind: "directive", type: InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "ngmodule", type: PlatformListModule }, { kind: "component", type: i7.ListComponent, selector: "fdp-list", inputs: ["selectedItems", "ariaSetsize", "ariaMultiselectable", "loadTitle", "loadingLabel", "delayTime", "itemSize", "loadMore", "loadOnScroll", "role", "listType", "maxHeight", "noBorder", "scrollOffsetPercentage", "selection", "selectionMode", "value", "rowSelection", "dataSource", "navigated", "navigationIndicator", "hasByLine", "hasObject", "unreadIndicator"], outputs: ["selectedItemChange"] }, { kind: "component", type: i7.ListGroupHeaderComponent, selector: "fdp-list-group-header", inputs: ["groupHeaderTitle"] }, { kind: "component", type: i7.StandardListItemComponent, selector: "fdp-standard-list-item" }, { kind: "ngmodule", type: StandardListItemModule }, { kind: "pipe", type: DisplayFnPipe, name: "displayFnPipe" }, { kind: "ngmodule", type: ContentDensityModule }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
377
364
  }
378
365
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: PlatformMultiInputComponent, decorators: [{
379
366
  type: Component,
@@ -402,8 +389,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
402
389
  PlatformListModule,
403
390
  StandardListItemModule,
404
391
  DisplayFnPipe,
405
- ContentDensityModule
406
- ], template: "<div class=\"fd-multi-input\">\n <ng-container *ngTemplateOutlet=\"mobile ? mobileTemplate : desktopTemplate\"></ng-container>\n</div>\n<ng-template #desktopTemplate>\n <fd-popover\n additionalBodyClass=\"fdp-multi-input__list-container\"\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"_popoverOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"(!autoResize && minWidth) || 0\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </fd-popover-control>\n <fd-popover-body>\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n\n<ng-template #mobileTemplate>\n <ng-container [ngTemplateOutlet]=\"controlTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #controlTemplate>\n <fd-input-group\n [button]=\"true\"\n [buttonFocusable]=\"buttonFocusable\"\n [isControl]=\"true\"\n glyph=\"value-help\"\n [state]=\"state\"\n [disabled]=\"disabled\"\n (keydown)=\"removeSelectedTokens($event)\"\n (addOnButtonClicked)=\"addOnButtonClick($event)\"\n (click)=\"onInputGroupClicked()\"\n [glyphAriaLabel]=\"glyphAriaLabel\"\n >\n <span [attr.id]=\"tokenHiddenId\" aria-hidden=\"true\" class=\"fdp-multi-input__invisible-text\"\n >Contains {{ selected.length || 'no' }} token</span\n >\n <fd-tokenizer\n *ngIf=\"selected\"\n [tokenizerFocusable]=\"false\"\n [compactCollapse]=\"true\"\n #tokenizer\n class=\"fd-multi-input-tokenizer-custom\"\n (moreClickedEvent)=\"moreClicked()\"\n tabindex=\"-1\"\n role=\"listbox\"\n >\n <fd-token\n [readOnly]=\"disabled\"\n (onCloseClick)=\"removeToken(token)\"\n *ngFor=\"let token of selected; let i = index\"\n [attr.aria-posinset]=\"i\"\n [attr.aria-setsize]=\"selected.length\"\n >\n <span>{{ token.label | displayFnPipe : displayFn }}</span>\n </fd-token>\n\n <input\n #searchInputElement\n type=\"text\"\n class=\"fd-input fd-multi-input-tokenizer-input fd-tokenizer__input\"\n fdp-auto-complete\n autocomplete=\"off\"\n (onComplete)=\"_onAutoComplete($event)\"\n (keydown.enter)=\"_onKeydownEnter($event)\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [inputText]=\"inputText\"\n [options]=\"_suggestions\"\n fd-input-group-input\n fd-form-control\n [attr.id]=\"id\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"searchTermChanged()\"\n [ngModelOptions]=\"{ standalone: true }\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched(); tokenizer._showAllTokens()\"\n (blur)=\"tokenizer._hideTokens()\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n aria-haspopup=\"listbox\"\n [attr.aria-readonly]=\"readonly\"\n [ariaLabel]=\"ariaLabel\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [attr.aria-required]=\"required\"\n [attr.aria-describedby]=\"tokenHiddenId\"\n aria-roledescription=\"Multi Value Input\"\n fdkInitialFocus\n [enabled]=\"autofocus\"\n />\n </fd-tokenizer>\n </fd-input-group>\n</ng-template>\n<ng-template #listTemplate>\n <fdp-list\n [noBorder]=\"true\"\n #listTemplateDD\n [hasByLine]=\"hasByLine\"\n [selectionMode]=\"selectionMode\"\n *ngIf=\"_suggestions && _suggestions.length\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n >\n <ng-container *ngIf=\"!isGroup\">\n <fdp-standard-list-item\n *ngFor=\"let listItem of _suggestions\"\n [title]=\"listItem.label\"\n [description]=\"listItem.description || ''\"\n [avatar]=\"listItem.avatarSrc\"\n [value]=\"listItem.value\"\n (itemSelected)=\"selectionMode !== 'multi' && addToArray(listItem, true)\"\n (itemCheckboxSelected)=\"_checkboxSelected(listItem, $event)\"\n (buttonClicked)=\"deleteToken(listItem)\"\n role=\"option\"\n >\n </fdp-standard-list-item>\n </ng-container>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate\">\n <fdp-list-group-header [groupHeaderTitle]=\"group.label\"></fdp-list-group-header>\n </ng-container>\n\n <ng-container *ngIf=\"groupItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-container>\n\n <fdp-standard-list-item\n *ngFor=\"let optionItem of group.children; let i = index\"\n [title]=\"optionItem.label\"\n [value]=\"optionItem.value\"\n (itemSelected)=\"addToArray(optionItem, true)\"\n (itemCheckboxSelected)=\"addToArray(optionItem, false)\"\n (buttonClicked)=\"deleteToken(optionItem)\"\n role=\"option\"\n >\n </fdp-standard-list-item>\n </ng-container>\n </ng-container>\n </fdp-list>\n</ng-template>\n", styles: [".fd-multi-input-tokenizer-custom{width:calc(100% - 2.25rem)}.fd-multi-input-tokenizer-custom--compact{width:calc(100% - 2rem)}.fdp-multi-input__list-container.fd-popover__body{width:100%;overflow:hidden;position:relative}.fdp-multi-input__invisible-text{display:none!important}\n"] }]
392
+ ContentDensityModule,
393
+ FdTranslatePipe
394
+ ], template: "<div class=\"fd-multi-input\">\n <ng-container *ngTemplateOutlet=\"mobile ? mobileTemplate : desktopTemplate\"></ng-container>\n</div>\n<ng-template #desktopTemplate>\n <fd-popover\n additionalBodyClass=\"fdp-multi-input__list-container\"\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"_popoverOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"(!autoResize && minWidth) || 0\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </fd-popover-control>\n <fd-popover-body>\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n\n<ng-template #mobileTemplate>\n <ng-container [ngTemplateOutlet]=\"controlTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #controlTemplate>\n <fd-input-group\n [button]=\"true\"\n [buttonFocusable]=\"buttonFocusable\"\n [isControl]=\"true\"\n glyph=\"value-help\"\n [state]=\"state\"\n [disabled]=\"disabled\"\n (keydown)=\"removeSelectedTokens($event)\"\n (addOnButtonClicked)=\"addOnButtonClick($event)\"\n (click)=\"onInputGroupClicked()\"\n [glyphAriaLabel]=\"glyphAriaLabel\"\n >\n <span [attr.id]=\"tokenHiddenId\" aria-hidden=\"true\" class=\"fdp-multi-input__invisible-text\"\n >Contains {{ selected.length || 'no' }} token</span\n >\n <fd-tokenizer\n *ngIf=\"selected\"\n [tokenizerFocusable]=\"false\"\n [compactCollapse]=\"true\"\n #tokenizer\n class=\"fd-multi-input-tokenizer-custom\"\n (moreClickedEvent)=\"moreClicked()\"\n tabindex=\"-1\"\n role=\"listbox\"\n >\n <fd-token\n [readOnly]=\"disabled\"\n (onCloseClick)=\"removeToken(token)\"\n *ngFor=\"let token of selected; let i = index\"\n [attr.aria-posinset]=\"i\"\n [attr.aria-setsize]=\"selected.length\"\n >\n <span>{{ token.label | displayFnPipe : displayFn }}</span>\n </fd-token>\n\n <input\n #searchInputElement\n type=\"text\"\n class=\"fd-input fd-multi-input-tokenizer-input fd-tokenizer__input\"\n fdp-auto-complete\n autocomplete=\"off\"\n (onComplete)=\"_onAutoComplete($event)\"\n (keydown.enter)=\"_onKeydownEnter($event)\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [inputText]=\"inputText\"\n [options]=\"_suggestions\"\n fd-input-group-input\n fd-form-control\n [attr.id]=\"id\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"searchTermChanged()\"\n [ngModelOptions]=\"{ standalone: true }\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched(); tokenizer._showAllTokens()\"\n (blur)=\"tokenizer._hideTokens()\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n aria-haspopup=\"listbox\"\n [attr.aria-readonly]=\"readonly\"\n [ariaLabel]=\"ariaLabel || ('coreMultiInput.multiInputAriaLabel' | fdTranslate)\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [attr.aria-required]=\"required\"\n [attr.aria-describedby]=\"tokenHiddenId\"\n aria-roledescription=\"Multi Value Input\"\n fdkInitialFocus\n [enabled]=\"autofocus\"\n />\n </fd-tokenizer>\n </fd-input-group>\n</ng-template>\n<ng-template #listTemplate>\n <fdp-list\n [noBorder]=\"true\"\n #listTemplateDD\n [hasByLine]=\"hasByLine\"\n [selectionMode]=\"selectionMode\"\n *ngIf=\"_suggestions && _suggestions.length\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n >\n <ng-container *ngIf=\"!isGroup\">\n <fdp-standard-list-item\n *ngFor=\"let listItem of _suggestions\"\n [title]=\"listItem.label\"\n [description]=\"listItem.description || ''\"\n [avatar]=\"listItem.avatarSrc\"\n [value]=\"listItem.value\"\n (itemSelected)=\"selectionMode !== 'multi' && addToArray(listItem, true)\"\n (itemCheckboxSelected)=\"_checkboxSelected(listItem, $event)\"\n (buttonClicked)=\"deleteToken(listItem)\"\n role=\"option\"\n >\n </fdp-standard-list-item>\n </ng-container>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate\">\n <fdp-list-group-header [groupHeaderTitle]=\"group.label\"></fdp-list-group-header>\n </ng-container>\n\n <ng-container *ngIf=\"groupItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-container>\n\n <fdp-standard-list-item\n *ngFor=\"let optionItem of group.children; let i = index\"\n [title]=\"optionItem.label\"\n [value]=\"optionItem.value\"\n (itemSelected)=\"addToArray(optionItem, true)\"\n (itemCheckboxSelected)=\"addToArray(optionItem, false)\"\n (buttonClicked)=\"deleteToken(optionItem)\"\n role=\"option\"\n >\n </fdp-standard-list-item>\n </ng-container>\n </ng-container>\n </fdp-list>\n</ng-template>\n", styles: [".fd-multi-input-tokenizer-custom{width:calc(100% - 2.25rem)}.fd-multi-input-tokenizer-custom--compact{width:calc(100% - 2rem)}.fdp-multi-input__list-container.fd-popover__body{width:100%;overflow:hidden;position:relative}.fdp-multi-input__invisible-text{display:none!important}\n"] }]
407
395
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.NgControl, decorators: [{
408
396
  type: Optional
409
397
  }, {
@@ -441,10 +429,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
441
429
  }, {
442
430
  type: Inject,
443
431
  args: [FD_FORM_FIELD_CONTROL]
444
- }] }, { type: i5.ContentDensityObserver }, { type: i9.Observable, decorators: [{
445
- type: Inject,
446
- args: [FD_LANGUAGE]
447
- }] }]; }, propDecorators: { tokenHiddenId: [{
432
+ }] }, { type: i5.ContentDensityObserver }]; }, propDecorators: { tokenHiddenId: [{
448
433
  type: Input
449
434
  }], type: [{
450
435
  type: Input
@@ -488,4 +473,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
488
473
  }], displayFn: [{
489
474
  type: Input
490
475
  }] } });
491
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vbXVsdGktaW5wdXQvbXVsdGktaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vbXVsdGktaW5wdXQvbXVsdGktaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JFLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLElBQUksRUFDSixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxJQUFJLEVBQ0osUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsVUFBVSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVsRixPQUFPLEVBQUUsYUFBYSxFQUFFLHVCQUF1QixFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENB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LGtCQUFrQjtzQkFEakIsS0FBSztnQkFLRyxlQUFlO3NCQUR2QixNQUFNO2dCQUtQLFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBSzdCLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBSzVCLFlBQVk7c0JBRFgsU0FBUzt1QkFBQyxjQUFjO2dCQUtSLFVBQVU7c0JBRDFCLFlBQVk7dUJBQUMsWUFBWTtnQkF1RDFCLFNBQVM7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmcgKi9cbmltcG9ydCB7IERPV05fQVJST1csIEVTQ0FQRSwgVVBfQVJST1cgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0LFxuICAgIEluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTZWxmLFxuICAgIFNraXBTZWxmLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBmb3J3YXJkUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgRm9ybXNNb2R1bGUsIE5nQ29udHJvbCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRkRfRk9STV9GSUVMRCwgRkRfRk9STV9GSUVMRF9DT05UUk9MIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvZm9ybXMnO1xuXG5pbXBvcnQgeyBEaXNwbGF5Rm5QaXBlLCBEeW5hbWljQ29tcG9uZW50U2VydmljZSwgSW5pdGlhbEZvY3VzRGlyZWN0aXZlLCBLZXlVdGlsIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRGlhbG9nQ29uZmlnIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5pbXBvcnQgeyBUb2tlbkNvbXBvbmVudCwgVG9rZW5pemVyQ29tcG9uZW50LCBUb2tlbml6ZXJJbnB1dERpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90b2tlbic7XG5pbXBvcnQge1xuICAgIEJhc2VMaXN0SXRlbSxcbiAgICBMaXN0Q29tcG9uZW50LFxuICAgIE1vZGlmeUl0ZW1FdmVudCxcbiAgICBQbGF0Zm9ybUxpc3RNb2R1bGUsXG4gICAgU2VsZWN0aW9uVHlwZSxcbiAgICBTdGFuZGFyZExpc3RJdGVtTW9kdWxlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vbGlzdCc7XG5pbXBvcnQge1xuICAgIERBVEFfUFJPVklERVJTLFxuICAgIERhdGFQcm92aWRlcixcbiAgICBNdWx0aUlucHV0RGF0YVNvdXJjZSxcbiAgICBNdWx0aUlucHV0T3B0aW9uLFxuICAgIFBsYXRmb3JtRm9ybUZpZWxkLFxuICAgIFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbCxcbiAgICBpc0Z1bmN0aW9uXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcblxuaW1wb3J0IHsgTmdGb3IsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDb250ZW50RGVuc2l0eU1vZHVsZSxcbiAgICBDb250ZW50RGVuc2l0eU9ic2VydmVyLFxuICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnNcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9mb3JtJztcbmltcG9ydCB7IElucHV0R3JvdXBNb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvaW5wdXQtZ3JvdXAnO1xuaW1wb3J0IHsgUG9wb3ZlckJvZHlDb21wb25lbnQsIFBvcG92ZXJDb21wb25lbnQsIFBvcG92ZXJDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3BvcG92ZXInO1xuaW1wb3J0IHsgUG9wb3ZlckZpbGxNb2RlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5pbXBvcnQgeyBGRF9MQU5HVUFHRSwgRmRMYW5ndWFnZSwgVHJhbnNsYXRpb25SZXNvbHZlciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgZXF1YWwgZnJvbSAnZmFzdC1kZWVwLWVxdWFsJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRvQ29tcGxldGVEaXJlY3RpdmUsIEF1dG9Db21wbGV0ZUV2ZW50IH0gZnJvbSAnLi4vYXV0by1jb21wbGV0ZS9hdXRvLWNvbXBsZXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJbnB1dFR5cGUgfSBmcm9tICcuLi9pbnB1dC9pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmFzZU11bHRpSW5wdXQgfSBmcm9tICcuL2Jhc2UtbXVsdGktaW5wdXQnO1xuaW1wb3J0IHsgUGxhdGZvcm1NdWx0aUlucHV0TW9iaWxlQ29tcG9uZW50IH0gZnJvbSAnLi9tdWx0aS1pbnB1dC1tb2JpbGUvbXVsdGktaW5wdXQtbW9iaWxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNdWx0aUlucHV0Q29uZmlnIH0gZnJvbSAnLi9tdWx0aS1pbnB1dC5jb25maWcnO1xuaW1wb3J0IHsgTVVMVElJTlBVVF9DT01QT05FTlQgfSBmcm9tICcuL211bHRpLWlucHV0LmludGVyZmFjZSc7XG5cbmxldCB1bmlxdWVIaWRkZW5MYWJlbCA9IDA7XG5cbmV4cG9ydCBjbGFzcyBNdWx0aUlucHV0U2VsZWN0aW9uQ2hhbmdlRXZlbnQge1xuICAgIC8qKlxuICAgICAqIE11bHRpIElucHV0IHNlbGVjdGlvbiBjaGFuZ2UgZXZlbnRcbiAgICAgKiBAcGFyYW0gc291cmNlIE11bHRpIElucHV0IGNvbXBvbmVudFxuICAgICAqIEBwYXJhbSBwYXlsb2FkIFNlbGVjdGVkIHZhbHVlXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBzb3VyY2U6IFBsYXRmb3JtTXVsdGlJbnB1dENvbXBvbmVudCxcbiAgICAgICAgcHVibGljIHBheWxvYWQ6IGFueSAvLyBDb250YWlucyBzZWxlY3RlZCBpdGVtXG4gICAgKSB7fVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1tdWx0aS1pbnB1dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL211bHRpLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9tdWx0aS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0ZPUk1fRklFTERfQ09OVFJPTCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBsYXRmb3JtTXVsdGlJbnB1dENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKClcbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBQb3BvdmVyQ29tcG9uZW50LFxuICAgICAgICBQb3BvdmVyQ29udHJvbENvbXBvbmVudCxcbiAgICAgICAgUG9wb3ZlckJvZHlDb21wb25lbnQsXG4gICAgICAgIElucHV0R3JvdXBNb2R1bGUsXG4gICAgICAgIE5nSWYsXG4gICAgICAgIFRva2VuQ29tcG9uZW50LFxuICAgICAgICBUb2tlbml6ZXJDb21wb25lbnQsXG4gICAgICAgIFRva2VuaXplcklucHV0RGlyZWN0aXZlLFxuICAgICAgICBOZ0ZvcixcbiAgICAgICAgRm9ybUNvbnRyb2xDb21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBBdXRvQ29tcGxldGVEaXJlY3RpdmUsXG4gICAgICAgIEluaXRpYWxGb2N1c0RpcmVjdGl2ZSxcbiAgICAgICAgUGxhdGZvcm1MaXN0TW9kdWxlLFxuICAgICAgICBTdGFuZGFyZExpc3RJdGVtTW9kdWxlLFxuICAgICAgICBEaXNwbGF5Rm5QaXBlLFxuICAgICAgICBDb250ZW50RGVuc2l0eU1vZHVsZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUGxhdGZvcm1NdWx0aUlucHV0Q29tcG9uZW50IGV4dGVuZHMgQmFzZU11bHRpSW5wdXQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHRva2VuQ291bnRIaWRkZW5MYWJlbCA9IGBmZHAtbXVsdGktaW5wdXQtdG9rZW4tY291bnQtaWQtJHt1bmlxdWVIaWRkZW5MYWJlbCsrfWA7XG5cbiAgICAvKiogdG9rZW4gIGNvdW50IGhpZGRlbiBsYWJlbCAqL1xuICAgIEBJbnB1dCgpXG4gICAgdG9rZW5IaWRkZW5JZDogc3RyaW5nID0gdGhpcy50b2tlbkNvdW50SGlkZGVuTGFiZWw7XG5cbiAgICAvKiogdHlwZSBSZXByZXNlbnQgdGhlIHR5cGUgb2YgaW5wdXQgdXNlZCBmb3IgdGhlIG11bHRpIElucHV0ICovXG4gICAgQElucHV0KClcbiAgICB0eXBlOiBJbnB1dFR5cGU7XG5cbiAgICAvKiogYm9vbGVhbiB0eXBlIHJlcHJlc2VudHMgdGhlIGZvY3VzIHNldCBmb3IgdGhlIHJlc3BlY3RpdmUgbXVsdGkgaW5wdXQgKi9cbiAgICBASW5wdXQoKVxuICAgIGF1dG9mb2N1cyA9IGZhbHNlO1xuXG4gICAgLyoqICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2x5cGhBcmlhTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChMaXN0Q29tcG9uZW50KVxuICAgIGxpc3RUZW1wbGF0ZUREOiBMaXN0Q29tcG9uZW50PE11bHRpSW5wdXRPcHRpb24+O1xuXG4gICAgLyoqIFNlbGVjdGVkIHZhbHVlcyBmcm9tIHRoZSBsaXN0IGl0ZW1zLiAqL1xuICAgIF9zZWxlY3RlZDogYW55W10gPSBbXTtcblxuICAgIC8qKiBTZWxlY3RlZCBpdGVtcyBvZiB0aGUgbXVsdGkgaW5wdXQuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgc2VsZWN0ZWQoc2VsZWN0ZWRWYWx1ZTogYW55W10pIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHNlbGVjdGVkVmFsdWU7XG4gICAgfVxuICAgIGdldCBzZWxlY3RlZCgpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0aW9uTW9kZTogU2VsZWN0aW9uVHlwZSA9ICdub25lJztcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBsaXN0IGluIGJ5bGluZSBtb2RlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaGFzQnlMaW5lID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNlbGVjdGVkVmFsdWU/OiBNdWx0aUlucHV0T3B0aW9uO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaXNHcm91cCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhKHRoaXMuZ3JvdXAgJiYgdGhpcy5ncm91cEtleSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gV2hldGhlciB0aGUgaW5wdXQgaXMgZGlzYWJsZWQuICovXG4gICAgcHJvdGVjdGVkIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIG11bHRpIGlucHV0IGlzIGRpc2FibGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRpc2FibGVkKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByZXNldCBvcHRpb25zIGZvciB0aGUgU2VsZWN0IGJvZHkgd2lkdGgsIHdoYXRldmVyIGlzIGNob3NlbiwgdGhlIGJvZHkgaGFzIGEgNjAwcHggbGltaXQuXG4gICAgICogYGF0LWxlYXN0YCB3aWxsIGFwcGx5IGEgbWluaW11bSB3aWR0aCB0byB0aGUgYm9keSBlcXVpdmFsZW50IHRvIHRoZSB3aWR0aCBvZiB0aGUgY29udHJvbC4gLSBEZWZhdWx0XG4gICAgICogYGVxdWFsYCB3aWxsIGFwcGx5IGEgd2lkdGggdG8gdGhlIGJvZHkgZXF1aXZhbGVudCB0byB0aGUgd2lkdGggb2YgdGhlIGNvbnRyb2wuXG4gICAgICogJ2ZpdC1jb250ZW50JyB3aWxsIGFwcGx5IHdpZHRoIG5lZWRlZCB0byBwcm9wZXJseSBkaXNwbGF5IGl0ZW1zIGluc2lkZSwgaW5kZXBlbmRlbnQgb2YgY29udHJvbC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZpbGxDb250cm9sTW9kZTogUG9wb3ZlckZpbGxNb2RlID0gJ2F0LWxlYXN0JztcblxuICAgIC8qKlxuICAgICAqIFRoZSB0cmlnZ2VyIGV2ZW50cyB0aGF0IHdpbGwgb3Blbi9jbG9zZSB0aGUgb3B0aW9ucyBwb3BvdmVyLlxuICAgICAqIEFjY2VwdHMgYW55IFtIVE1MIERPTSBFdmVudHNdKGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vanNyZWYvZG9tX29ial9ldmVudC5hc3ApLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdHJpZ2dlcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKiogV2hldGhlciB0aGUgY29tYm9ib3ggc2hvdWxkIGNsb3NlLCB3aGVuIGEgY2xpY2sgaXMgcGVyZm9ybWVkIG91dHNpZGUgaXRzIGJvdW5kYXJpZXMuIFRydWUgYnkgZGVmYXVsdCAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2xvc2VPbk91dHNpZGVDbGljayA9IHRydWU7XG5cbiAgICAvKiogQ2FsbGJhY2sgZnVuY3Rpb24gd2hlbiBhZGQtb24gYnV0dG9uIGNsaWNrZWQuICovXG4gICAgQElucHV0KClcbiAgICBhZGRPbkJ1dHRvbkNsaWNrRm46ICgpID0+IHZvaWQ7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGl0ZW0gaXMgc2VsZWN0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNdWx0aUlucHV0U2VsZWN0aW9uQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoVG9rZW5pemVyQ29tcG9uZW50KVxuICAgIHRva2VuaXplcjogVG9rZW5pemVyQ29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdjb250cm9sVGVtcGxhdGUnKVxuICAgIGNvbnRyb2xUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnbGlzdFRlbXBsYXRlJylcbiAgICBsaXN0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oQmFzZUxpc3RJdGVtKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2xpc3RJdGVtczogUXVlcnlMaXN0PEJhc2VMaXN0SXRlbT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RyYW5zbGF0aW9uUmVzb2x2ZXIgPSBuZXcgVHJhbnNsYXRpb25SZXNvbHZlcigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgLyoqIEBoaWRkZW4gKi9cbiAgICAgICAgcmVhZG9ubHkgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICAvKiogQGhpZGRlbiAqL1xuICAgICAgICByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICAvKiogQGhpZGRlbiAqL1xuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHJlYWRvbmx5IG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSByZWFkb25seSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuICAgICAgICAvKiogQGhpZGRlbiAqL1xuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHJlYWRvbmx5IG5nRm9ybTogTmdGb3JtLFxuICAgICAgICAvKiogQGhpZGRlbiAqL1xuICAgICAgICBAT3B0aW9uYWwoKSByZWFkb25seSBkaWFsb2dDb25maWc6IERpYWxvZ0NvbmZpZyxcbiAgICAgICAgLyoqIEBoaWRkZW4gKi9cbiAgICAgICAgcmVhZG9ubHkgX2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlOiBEeW5hbWljQ29tcG9uZW50U2VydmljZSxcbiAgICAgICAgLyoqIEBoaWRkZW4gKi9cbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgLyoqIEBoaWRkZW4gKi9cbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICAvKiogQGhpZGRlbiAqL1xuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERBVEFfUFJPVklERVJTKSBwcml2YXRlIF9wcm92aWRlcnM6IE1hcDxzdHJpbmcsIERhdGFQcm92aWRlcjxhbnk+PixcbiAgICAgICAgLyoqIEBoaWRkZW4gKi9cbiAgICAgICAgcmVhZG9ubHkgX211bHRpSW5wdXRDb25maWc6IE11bHRpSW5wdXRDb25maWcsXG4gICAgICAgIC8qKiBAaGlkZGVuICovXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIEBIb3N0KCkgQEluamVjdChGRF9GT1JNX0ZJRUxEKSBmb3JtRmllbGQ6IFBsYXRmb3JtRm9ybUZpZWxkLFxuICAgICAgICAvKiogQGhpZGRlbiAqL1xuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBASG9zdCgpIEBJbmplY3QoRkRfRk9STV9GSUVMRF9DT05UUk9MKSBmb3JtQ29udHJvbDogUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sLFxuICAgICAgICByZWFkb25seSBjb250ZW50RGVuc2l0eU9ic2VydmVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyLFxuICAgICAgICAvKiogQGhpZGRlbiAqL1xuICAgICAgICBASW5qZWN0KEZEX0xBTkdVQUdFKSBwcml2YXRlIHJlYWRvbmx5IF9sYW5ndWFnZTogT2JzZXJ2YWJsZTxGZExhbmd1YWdlPlxuICAgICkge1xuICAgICAgICBzdXBlcihcbiAgICAgICAgICAgIGNkLFxuICAgICAgICAgICAgZWxlbWVudFJlZixcbiAgICAgICAgICAgIG5nQ29udHJvbCxcbiAgICAgICAgICAgIGNvbnRyb2xDb250YWluZXIsXG4gICAgICAgICAgICBuZ0Zvcm0sXG4gICAgICAgICAgICBkaWFsb2dDb25maWcsXG4gICAgICAgICAgICBfbXVsdGlJbnB1dENvbmZpZyxcbiAgICAgICAgICAgIGZvcm1GaWVsZCxcbiAgICAgICAgICAgIGZvcm1Db250cm9sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIERpc3BsYXkgZnVuY3Rpb24uIEFjY2VwdHMgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgYXMgdGhlXG4gICAgICogaXRlbXMgcGFzc2VkIHRvIGRyb3Bkb3duVmFsdWVzIGFzIGFyZ3VtZW50LCBhbmQgb3V0cHV0cyBhIHN0cmluZy5cbiAgICAgKiBBbiBhcnJvdyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBhY2Nlc3MgdGhlICp0aGlzKiBrZXl3b3JkIGluIHRoZSBjYWxsaW5nIGNvbXBvbmVudC5cbiAgICAgKiBTZWUgbXVsdGkgaW5wdXQgZXhhbXBsZXMgZm9yIGRldGFpbHMuICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5Rm4gPSAoc3RyOiBzdHJpbmcpOiBzdHJpbmcgPT4gc3RyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICBjb25zdCBwcm92aWRlcnMgPSB0aGlzLl9wcm92aWRlcnM/LnNpemUgPT09IDAgPyB0aGlzLl9tdWx0aUlucHV0Q29uZmlnLnByb3ZpZGVycyA6IHRoaXMuX3Byb3ZpZGVycztcbiAgICAgICAgLy8gaWYgd2UgaGF2ZSBib3RoIHByZWZlciBkYXRhU291cmNlXG4gICAgICAgIGlmICghdGhpcy5kYXRhU291cmNlICYmIHRoaXMuZW50aXR5Q2xhc3MgJiYgcHJvdmlkZXJzPy5oYXModGhpcy5lbnRpdHlDbGFzcykpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNdWx0aUlucHV0RGF0YVNvdXJjZShwcm92aWRlcnMuZ2V0KHRoaXMuZW50aXR5Q2xhc3MpISk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9nZXRBcmlhTGFiZWwoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG5cbiAgICAgICAgaWYgKHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRVcE1vYmlsZU1vZGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudG9rZW5pemVyLl9zaG93T3ZlcmZsb3dQb3BvdmVyID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gTWV0aG9kIHRvIGVtaXQgY2hhbmdlIGV2ZW50ICovXG4gICAgZW1pdENoYW5nZUV2ZW50PFQ+KG1vZGVsVmFsdWU6IFQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgTXVsdGlJbnB1dFNlbGVjdGlvbkNoYW5nZUV2ZW50KHRoaXMsIG1vZGVsVmFsdWUpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NoZWNrYm94U2VsZWN0ZWQodmFsdWU6IGFueSwgZXZlbnQ6IE1vZGlmeUl0ZW1FdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpc1NlbGVjdGVkID0gZXZlbnQuc291cmNlLl9zZWxlY3RlZDtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkLmZpbmRJbmRleCgoc2VsZWN0dmFsdWUpID0+IGVxdWFsKHNlbGVjdHZhbHVlLCB2YWx1ZSkpO1xuXG4gICAgICAgIGlmIChpc1NlbGVjdGVkICYmIGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWRkVG9BcnJheSh2YWx1ZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgYWRkVG9BcnJheSh2YWx1ZTogYW55LCBmb2N1c09uSW5wdXQgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZC5maW5kSW5kZXgoKHNlbGVjdHZhbHVlKSA9PiBlcXVhbChzZWxlY3R2YWx1ZSwgdmFsdWUpKTtcbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMubW9iaWxlICYmIGZvY3VzT25JbnB1dCkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3VwZGF0ZU1vZGVsKHRoaXMuc2VsZWN0ZWQpO1xuICAgICAgICBpZiAoZm9jdXNPbklucHV0KSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbWl0Q2hhbmdlRXZlbnQodmFsdWUgPyB0aGlzLnNlbGVjdGVkIDogbnVsbCk7XG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFkZE9uQnV0dG9uQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5vcGVuRHJvcGRvd25PbkFkZE9uQ2xpY2tlZCAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5zaG93TGlzdChmYWxzZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5vcGVuRHJvcGRvd25PbkFkZE9uQ2xpY2tlZCkge1xuICAgICAgICAgICAgdGhpcy5zaG93TGlzdCghdGhpcy5pc09wZW4pO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWRkT25CdXR0b25DbGlja2VkLmVtaXQoZXZlbnQpO1xuXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHRoaXMuYWRkT25CdXR0b25DbGlja0ZuKSkge1xuICAgICAgICAgICAgdGhpcy5hZGRPbkJ1dHRvbkNsaWNrRm4oKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25JbnB1dEdyb3VwQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubW9iaWxlICYmICF0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG1vcmVDbGlja2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbnMgPSB0aGlzLnNlbGVjdGVkO1xuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGRlbGV0ZVRva2VuKHNlbGVjdGVkVmFsdWU6IE11bHRpSW5wdXRPcHRpb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudG9rZW5pemVyLnRva2VuTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnRva2VuaXplci50b2tlbkxpc3QuZm9yRWFjaCgodG9rZW4pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodG9rZW4udG9rZW5XcmFwcGVyRWxlbWVudC5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50ID09PSBzZWxlY3RlZFZhbHVlLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQuc3BsaWNlKHRoaXMuc2VsZWN0ZWQuaW5kZXhPZihzZWxlY3RlZFZhbHVlKSwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdXBkYXRlTW9kZWwodGhpcy5zZWxlY3RlZCk7XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlbW92ZVRva2VuKHRva2VuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5zcGxpY2UodGhpcy5zZWxlY3RlZC5pbmRleE9mKHRva2VuKSwgMSk7XG4gICAgICAgIHRoaXMuZW1pdENoYW5nZUV2ZW50KHRva2VuID8gdGhpcy5zZWxlY3RlZCA6IG51bGwpO1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl91cGRhdGVNb2RlbCh0aGlzLnNlbGVjdGVkKTtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZW1vdmVTZWxlY3RlZFRva2VucyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtET1dOX0FSUk9XLCBVUF9BUlJPV10pKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RDb21wb25lbnQuX3NldEN1cnJlbnRBY3RpdmVJdGVtSW5kZXgoMCk7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0VGVtcGxhdGVERC5saXN0SXRlbXMuZmlyc3QuZm9jdXMoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93TGlzdCghdGhpcy5pc09wZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtFU0NBUEVdKSkge1xuICAgICAgICAgICAgdGhpcy5zaG93TGlzdChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gRGVmaW5lIGlzIHNlbGVjdGVkIGl0ZW0gc2VsZWN0ZWQgKi9cbiAgICBpc1NlbGVjdGVkT3B0aW9uSXRlbShzZWxlY3RlZEl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKHRoaXMubG9va3VwS2V5ICYmIHRoaXMubG9va3VwVmFsdWUodGhpcy5zZWxlY3RlZCkgPT09IHRoaXMubG9va3VwVmFsdWUoc2VsZWN0ZWRJdGVtKSkgfHxcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVZhbHVlKHRoaXMuc2VsZWN0ZWQpID09PSB0aGlzLmRpc3BsYXlWYWx1ZShzZWxlY3RlZEl0ZW0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gTWV0aG9kIHRvIHNldCBzZWxlY3RlZCBpdGVtICovXG4gICAgc2VsZWN0T3B0aW9uSXRlbShpdGVtOiBNdWx0aUlucHV0T3B0aW9uKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gaXRlbTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRUZXh0ID0gaXRlbS5sYWJlbDtcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlucHV0VGV4dCA9IGl0ZW0ubGFiZWw7XG4gICAgICAgIHRoaXMuX2NoZWNrQW5kVXBkYXRlKGl0ZW0pO1xuICAgICAgICB0aGlzLnNob3dMaXN0KGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBNZXRob2QgdG8gc2V0IGFzIHNlbGVjdGVkICovXG4gICAgc2V0QXNTZWxlY3RlZChpdGVtOiBNdWx0aUlucHV0T3B0aW9uW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSBpdGVtO1xuICAgICAgICB0aGlzLmlucHV0VGV4dCA9ICcnO1xuICAgICAgICB0aGlzLl9tYXJrTGlzdEl0ZW1zQXNTZWxlY3RlZCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNYXRob2QgZm9yIG1hcmtpbmcgaXRlbXMgaW4gZHJvcGRvd24gYXMgc2VsZWN0ZWQuXG4gICAgICovXG4gICAgX21hcmtMaXN0SXRlbXNBc1NlbGVjdGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9saXN0SXRlbXM/LmZvckVhY2goKGxpc3RJdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkID0gISF0aGlzLl9zZWxlY3RlZC5maW5kKCh2YWx1ZSkgPT4gZXF1YWwodmFsdWUudmFsdWUsIGxpc3RJdGVtLnZhbHVlKSk7XG4gICAgICAgICAgICBsaXN0SXRlbS5zZXRTZWxlY3RlZChpc1NlbGVjdGVkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25BdXRvQ29tcGxldGUoZXZlbnQ6IEF1dG9Db21wbGV0ZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghZXZlbnQuZm9yY2VDbG9zZSB8fCAhdGhpcy5fc3VnZ2VzdGlvbnMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IFtpdGVtXSA9IHRoaXMuaXNHcm91cCA/IHRoaXMuX3N1Z2dlc3Rpb25zWzBdPy5jaGlsZHJlbiB8fCBbXSA6IHRoaXMuX3N1Z2dlc3Rpb25zO1xuICAgICAgICBpZiAoaXRlbSAmJiBpdGVtLmxhYmVsID09PSBldmVudC50ZXJtKSB7XG4gICAgICAgICAgICB0aGlzLmFkZFRvQXJyYXkoaXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbktleWRvd25FbnRlcihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRUZXh0KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gSGFuZGxlIGRpYWxvZyBkaXNtaXNzaW5nLCBjbG9zZXMgcG9wb3ZlciBhbmQgc2V0cyBiYWNrdXAgZGF0YS4gKi9cbiAgICBfZGlhbG9nRGlzbWlzcyhzZWxlY3RlZDogYW55W10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICAgICAgdGhpcy5zaG93TGlzdChmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gSGFuZGxlIGRpYWxvZyBhcHByb3ZhbCwgY2xvc2VzIHBvcG92ZXIgYW5kIHByb3BhZ2F0ZXMgZGF0YSBjaGFuZ2VzLiAqL1xuICAgIF9kaWFsb2dBcHByb3ZlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuc2VsZWN0ZWQpO1xuICAgICAgICB0aGlzLl91cGRhdGVNb2RlbCh0aGlzLnNlbGVjdGVkKTtcbiAgICAgICAgdGhpcy5zaG93TGlzdChmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gaWYgbm90IHNlbGVjdGVkIHVwZGF0ZSBtb2RlbCAqL1xuICAgIHByaXZhdGUgX2NoZWNrQW5kVXBkYXRlKG1vZGVsVmFsdWU6IE11bHRpSW5wdXRPcHRpb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZE9wdGlvbkl0ZW0obW9kZWxWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9wdGlvbkl0ZW0gPSB0aGlzLl9nZXRTZWxlY3RlZE9wdGlvbkl0ZW0odGhpcy5pbnB1dFRleHQpO1xuXG4gICAgICAgIHRoaXMuX3VwZGF0ZU1vZGVsKG9wdGlvbkl0ZW0gPyBvcHRpb25JdGVtLnZhbHVlIDogdGhpcy5pbnB1dFRleHQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0U2VsZWN0ZWRPcHRpb25JdGVtKHRleHQ6IHN0cmluZyk6IE11bHRpSW5wdXRPcHRpb24gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNHcm91cCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N1Z2dlc3Rpb25zLmZpbmQoKGl0ZW0pID0+IGl0ZW0ubGFiZWwgPT09IHRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3N1Z2dlc3Rpb25zXG4gICAgICAgICAgICAucmVkdWNlKChyZXN1bHQ6IE11bHRpSW5wdXRPcHRpb25bXSwgaXRlbTogTXVsdGlJbnB1dE9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGl0ZW0uY2hpbGRyZW4gJiYgcmVzdWx0LnB1c2goLi4uaXRlbS5jaGlsZHJlbik7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSwgW10pXG4gICAgICAgICAgICAuZmluZCgoaXRlbSkgPT4gaXRlbS5sYWJlbCA9PT0gdGV4dCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gVXBkYXRlIG1vZGVsICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlTW9kZWwodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICAvLyBzZXR0aW5nIHZhbHVlLCBpdCB3aWxsIGNhbGwgc2V0VmFsdWUoKVxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGFzeW5jIF9zZXRVcE1vYmlsZU1vZGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTVVMVElJTlBVVF9DT01QT05FTlQsIHVzZVZhbHVlOiB0aGlzIH1dLFxuICAgICAgICAgICAgcGFyZW50OiB0aGlzLl9pbmplY3RvclxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9keW5hbWljQ29tcG9uZW50U2VydmljZS5jcmVhdGVEeW5hbWljQ29tcG9uZW50KFxuICAgICAgICAgICAgeyBsaXN0VGVtcGxhdGU6IHRoaXMubGlzdFRlbXBsYXRlLCBjb250cm9sVGVtcGxhdGU6IHRoaXMuY29udHJvbFRlbXBsYXRlIH0sXG4gICAgICAgICAgICBQbGF0Zm9ybU11bHRpSW5wdXRNb2JpbGVDb21wb25lbnQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyUmVmOiB0aGlzLl92aWV3Q29udGFpbmVyUmVmXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBpbmplY3RvciB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGFzeW5jIF9nZXRBcmlhTGFiZWwoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGxhbmcgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9sYW5ndWFnZSk7XG4gICAgICAgIHRoaXMuYXJpYUxhYmVsID0gdGhpcy5fdHJhbnNsYXRpb25SZXNvbHZlci5yZXNvbHZlKGxhbmcsICdjb3JlTXVsdGlJbnB1dC5tdWx0aUlucHV0QXJpYUxhYmVsJyk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZkLW11bHRpLWlucHV0XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1vYmlsZSA/IG1vYmlsZVRlbXBsYXRlIDogZGVza3RvcFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjZGVza3RvcFRlbXBsYXRlPlxuICAgIDxmZC1wb3BvdmVyXG4gICAgICAgIGFkZGl0aW9uYWxCb2R5Q2xhc3M9XCJmZHAtbXVsdGktaW5wdXRfX2xpc3QtY29udGFpbmVyXCJcbiAgICAgICAgW2lzT3Blbl09XCJpc09wZW4gJiYgX3N1Z2dlc3Rpb25zLmxlbmd0aCA+IDBcIlxuICAgICAgICAoaXNPcGVuQ2hhbmdlKT1cIl9wb3BvdmVyT3BlbkNoYW5nZUhhbmRsZSgkZXZlbnQpXCJcbiAgICAgICAgW2ZpbGxDb250cm9sTW9kZV09XCJmaWxsQ29udHJvbE1vZGVcIlxuICAgICAgICBbZm9jdXNUcmFwcGVkXT1cInRydWVcIlxuICAgICAgICBbdHJpZ2dlcnNdPVwidHJpZ2dlcnNcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxuICAgICAgICBbbWF4V2lkdGhdPVwiKCFhdXRvUmVzaXplICYmIG1pbldpZHRoKSB8fCAwXCJcbiAgICAgICAgW2Nsb3NlT25PdXRzaWRlQ2xpY2tdPVwiY2xvc2VPbk91dHNpZGVDbGlja1wiXG4gICAgPlxuICAgICAgICA8ZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRyb2xUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2ZkLXBvcG92ZXItY29udHJvbD5cbiAgICAgICAgPGZkLXBvcG92ZXItYm9keT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsaXN0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPC9mZC1wb3BvdmVyLWJvZHk+XG4gICAgPC9mZC1wb3BvdmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtb2JpbGVUZW1wbGF0ZT5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRyb2xUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjb250cm9sVGVtcGxhdGU+XG4gICAgPGZkLWlucHV0LWdyb3VwXG4gICAgICAgIFtidXR0b25dPVwidHJ1ZVwiXG4gICAgICAgIFtidXR0b25Gb2N1c2FibGVdPVwiYnV0dG9uRm9jdXNhYmxlXCJcbiAgICAgICAgW2lzQ29udHJvbF09XCJ0cnVlXCJcbiAgICAgICAgZ2x5cGg9XCJ2YWx1ZS1oZWxwXCJcbiAgICAgICAgW3N0YXRlXT1cInN0YXRlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgKGtleWRvd24pPVwicmVtb3ZlU2VsZWN0ZWRUb2tlbnMoJGV2ZW50KVwiXG4gICAgICAgIChhZGRPbkJ1dHRvbkNsaWNrZWQpPVwiYWRkT25CdXR0b25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uSW5wdXRHcm91cENsaWNrZWQoKVwiXG4gICAgICAgIFtnbHlwaEFyaWFMYWJlbF09XCJnbHlwaEFyaWFMYWJlbFwiXG4gICAgPlxuICAgICAgICA8c3BhbiBbYXR0ci5pZF09XCJ0b2tlbkhpZGRlbklkXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJmZHAtbXVsdGktaW5wdXRfX2ludmlzaWJsZS10ZXh0XCJcbiAgICAgICAgICAgID5Db250YWlucyB7eyBzZWxlY3RlZC5sZW5ndGggfHwgJ25vJyB9fSB0b2tlbjwvc3BhblxuICAgICAgICA+XG4gICAgICAgIDxmZC10b2tlbml6ZXJcbiAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICAgW3Rva2VuaXplckZvY3VzYWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICBbY29tcGFjdENvbGxhcHNlXT1cInRydWVcIlxuICAgICAgICAgICAgI3Rva2VuaXplclxuICAgICAgICAgICAgY2xhc3M9XCJmZC1tdWx0aS1pbnB1dC10b2tlbml6ZXItY3VzdG9tXCJcbiAgICAgICAgICAgIChtb3JlQ2xpY2tlZEV2ZW50KT1cIm1vcmVDbGlja2VkKClcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxmZC10b2tlblxuICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKG9uQ2xvc2VDbGljayk9XCJyZW1vdmVUb2tlbih0b2tlbilcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0b2tlbiBvZiBzZWxlY3RlZDsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1wb3NpbnNldF09XCJpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNldHNpemVdPVwic2VsZWN0ZWQubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyB0b2tlbi5sYWJlbCB8IGRpc3BsYXlGblBpcGUgOiBkaXNwbGF5Rm4gfX08L3NwYW4+XG4gICAgICAgICAgICA8L2ZkLXRva2VuPlxuXG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAjc2VhcmNoSW5wdXRFbGVtZW50XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtaW5wdXQgZmQtbXVsdGktaW5wdXQtdG9rZW5pemVyLWlucHV0IGZkLXRva2VuaXplcl9faW5wdXRcIlxuICAgICAgICAgICAgICAgIGZkcC1hdXRvLWNvbXBsZXRlXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAob25Db21wbGV0ZSk9XCJfb25BdXRvQ29tcGxldGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiX29uS2V5ZG93bkVudGVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uSW5wdXRLZXlkb3duSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbaW5wdXRUZXh0XT1cImlucHV0VGV4dFwiXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiX3N1Z2dlc3Rpb25zXCJcbiAgICAgICAgICAgICAgICBmZC1pbnB1dC1ncm91cC1pbnB1dFxuICAgICAgICAgICAgICAgIGZkLWZvcm0tY29udHJvbFxuICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImlkXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRUZXh0XCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2hUZXJtQ2hhbmdlZCgpXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uVG91Y2hlZCgpOyB0b2tlbml6ZXIuX3Nob3dBbGxUb2tlbnMoKVwiXG4gICAgICAgICAgICAgICAgKGJsdXIpPVwidG9rZW5pemVyLl9oaWRlVG9rZW5zKClcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNPcGVuICYmIF9zdWdnZXN0aW9ucy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICBbYXJpYUxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgW2FyaWFMYWJlbGxlZEJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cInRva2VuSGlkZGVuSWRcIlxuICAgICAgICAgICAgICAgIGFyaWEtcm9sZWRlc2NyaXB0aW9uPVwiTXVsdGkgVmFsdWUgSW5wdXRcIlxuICAgICAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgICAgIFtlbmFibGVkXT1cImF1dG9mb2N1c1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2ZkLXRva2VuaXplcj5cbiAgICA8L2ZkLWlucHV0LWdyb3VwPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjbGlzdFRlbXBsYXRlPlxuICAgIDxmZHAtbGlzdFxuICAgICAgICBbbm9Cb3JkZXJdPVwidHJ1ZVwiXG4gICAgICAgICNsaXN0VGVtcGxhdGVERFxuICAgICAgICBbaGFzQnlMaW5lXT1cImhhc0J5TGluZVwiXG4gICAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cInNlbGVjdGlvbk1vZGVcIlxuICAgICAgICAqbmdJZj1cIl9zdWdnZXN0aW9ucyAmJiBfc3VnZ2VzdGlvbnMubGVuZ3RoXCJcbiAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICBhcmlhLW11bHRpc2VsZWN0YWJsZT1cInRydWVcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0dyb3VwXCI+XG4gICAgICAgICAgICA8ZmRwLXN0YW5kYXJkLWxpc3QtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBsaXN0SXRlbSBvZiBfc3VnZ2VzdGlvbnNcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJsaXN0SXRlbS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgW2Rlc2NyaXB0aW9uXT1cImxpc3RJdGVtLmRlc2NyaXB0aW9uIHx8ICcnXCJcbiAgICAgICAgICAgICAgICBbYXZhdGFyXT1cImxpc3RJdGVtLmF2YXRhclNyY1wiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImxpc3RJdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAoaXRlbVNlbGVjdGVkKT1cInNlbGVjdGlvbk1vZGUgIT09ICdtdWx0aScgJiYgYWRkVG9BcnJheShsaXN0SXRlbSwgdHJ1ZSlcIlxuICAgICAgICAgICAgICAgIChpdGVtQ2hlY2tib3hTZWxlY3RlZCk9XCJfY2hlY2tib3hTZWxlY3RlZChsaXN0SXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGJ1dHRvbkNsaWNrZWQpPVwiZGVsZXRlVG9rZW4obGlzdEl0ZW0pXCJcbiAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZmRwLXN0YW5kYXJkLWxpc3QtaXRlbT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0dyb3VwXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncm91cCBvZiBfc3VnZ2VzdGlvbnNcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWdyb3VwSXRlbVRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmZHAtbGlzdC1ncm91cC1oZWFkZXIgW2dyb3VwSGVhZGVyVGl0bGVdPVwiZ3JvdXAubGFiZWxcIj48L2ZkcC1saXN0LWdyb3VwLWhlYWRlcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncm91cEl0ZW1UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJncm91cEl0ZW1UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHsgbGFiZWw6IGdyb3VwLmxhYmVsIH0gfVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxmZHAtc3RhbmRhcmQtbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb25JdGVtIG9mIGdyb3VwLmNoaWxkcmVuOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIm9wdGlvbkl0ZW0ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uSXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIChpdGVtU2VsZWN0ZWQpPVwiYWRkVG9BcnJheShvcHRpb25JdGVtLCB0cnVlKVwiXG4gICAgICAgICAgICAgICAgICAgIChpdGVtQ2hlY2tib3hTZWxlY3RlZCk9XCJhZGRUb0FycmF5KG9wdGlvbkl0ZW0sIGZhbHNlKVwiXG4gICAgICAgICAgICAgICAgICAgIChidXR0b25DbGlja2VkKT1cImRlbGV0ZVRva2VuKG9wdGlvbkl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvZmRwLXN0YW5kYXJkLWxpc3QtaXRlbT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2ZkcC1saXN0PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
476
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vbXVsdGktaW5wdXQvbXVsdGktaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vbXVsdGktaW5wdXQvbXVsdGktaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JFLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLElBQUksRUFDSixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxJQUFJLEVBQ0osUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsVUFBVSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVsRixPQUFPLEVBQUUsYUFBYSxFQUFFLHVCQUF1QixFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENB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MEJBQ2hCLFFBQVE7OzBCQUFJLFFBQVE7OzBCQUVwQixRQUFROzswQkFBSSxJQUFJOzswQkFFaEIsUUFBUTs7MEJBUVIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxjQUFjOzswQkFJakMsUUFBUTs7MEJBQUksUUFBUTs7MEJBQUksSUFBSTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhOzswQkFFcEQsUUFBUTs7MEJBQUksUUFBUTs7MEJBQUksSUFBSTs7MEJBQUksTUFBTTsyQkFBQyxxQkFBcUI7aUZBbElqRSxhQUFhO3NCQURaLEtBQUs7Z0JBS04sSUFBSTtzQkFESCxLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBS04sY0FBYztzQkFEYixTQUFTO3VCQUFDLGFBQWE7Z0JBUXBCLFFBQVE7c0JBRFgsS0FBSztnQkFZTixhQUFhO3NCQURaLEtBQUs7Z0JBS04sU0FBUztzQkFEUixLQUFLO2dCQWdCRixRQUFRO3NCQURYLEtBQUs7Z0JBZU4sZUFBZTtzQkFEZCxLQUFLO2dCQVFOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBS04sa0JBQWtCO3NCQURqQixLQUFLO2dCQUtHLGVBQWU7c0JBRHZCLE1BQU07Z0JBS1AsU0FBUztzQkFEUixTQUFTO3VCQUFDLGtCQUFrQjtnQkFLN0IsZUFBZTtzQkFEZCxTQUFTO3VCQUFDLGlCQUFpQjtnQkFLNUIsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLGNBQWM7Z0JBS1IsVUFBVTtzQkFEMUIsWUFBWTt1QkFBQyxZQUFZO2dCQWtEMUIsU0FBUztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZyAqL1xuaW1wb3J0IHsgRE9XTl9BUlJPVywgRVNDQVBFLCBVUF9BUlJPVyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3QsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNlbGYsXG4gICAgU2tpcFNlbGYsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGZvcndhcmRSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBGb3Jtc01vZHVsZSwgTmdDb250cm9sLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGRF9GT1JNX0ZJRUxELCBGRF9GT1JNX0ZJRUxEX0NPTlRST0wgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5cbmltcG9ydCB7IERpc3BsYXlGblBpcGUsIER5bmFtaWNDb21wb25lbnRTZXJ2aWNlLCBJbml0aWFsRm9jdXNEaXJlY3RpdmUsIEtleVV0aWwgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBEaWFsb2dDb25maWcgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IFRva2VuQ29tcG9uZW50LCBUb2tlbml6ZXJDb21wb25lbnQsIFRva2VuaXplcklucHV0RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Rva2VuJztcbmltcG9ydCB7XG4gICAgQmFzZUxpc3RJdGVtLFxuICAgIExpc3RDb21wb25lbnQsXG4gICAgTW9kaWZ5SXRlbUV2ZW50LFxuICAgIFBsYXRmb3JtTGlzdE1vZHVsZSxcbiAgICBTZWxlY3Rpb25UeXBlLFxuICAgIFN0YW5kYXJkTGlzdEl0ZW1Nb2R1bGVcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9saXN0JztcbmltcG9ydCB7XG4gICAgREFUQV9QUk9WSURFUlMsXG4gICAgRGF0YVByb3ZpZGVyLFxuICAgIE11bHRpSW5wdXREYXRhU291cmNlLFxuICAgIE11bHRpSW5wdXRPcHRpb24sXG4gICAgUGxhdGZvcm1Gb3JtRmllbGQsXG4gICAgUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sLFxuICAgIGlzRnVuY3Rpb25cbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zaGFyZWQnO1xuXG5pbXBvcnQgeyBOZ0ZvciwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENvbnRlbnREZW5zaXR5TW9kdWxlLFxuICAgIENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsXG4gICAgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVyc1xufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IEZvcm1Db250cm9sQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuaW1wb3J0IHsgSW5wdXRHcm91cE1vZHVsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9pbnB1dC1ncm91cCc7XG5pbXBvcnQgeyBQb3BvdmVyQm9keUNvbXBvbmVudCwgUG9wb3ZlckNvbXBvbmVudCwgUG9wb3ZlckNvbnRyb2xDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvcG9wb3Zlcic7XG5pbXBvcnQgeyBQb3BvdmVyRmlsbE1vZGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2hhcmVkJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgZXF1YWwgZnJvbSAnZmFzdC1kZWVwLWVxdWFsJztcbmltcG9ydCB7IEF1dG9Db21wbGV0ZURpcmVjdGl2ZSwgQXV0b0NvbXBsZXRlRXZlbnQgfSBmcm9tICcuLi9hdXRvLWNvbXBsZXRlL2F1dG8tY29tcGxldGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IElucHV0VHlwZSB9IGZyb20gJy4uL2lucHV0L2lucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYXNlTXVsdGlJbnB1dCB9IGZyb20gJy4vYmFzZS1tdWx0aS1pbnB1dCc7XG5pbXBvcnQgeyBQbGF0Zm9ybU11bHRpSW5wdXRNb2JpbGVDb21wb25lbnQgfSBmcm9tICcuL211bHRpLWlucHV0LW1vYmlsZS9tdWx0aS1pbnB1dC1tb2JpbGUuY29tcG9uZW50JztcbmltcG9ydCB7IE11bHRpSW5wdXRDb25maWcgfSBmcm9tICcuL211bHRpLWlucHV0LmNvbmZpZyc7XG5pbXBvcnQgeyBNVUxUSUlOUFVUX0NPTVBPTkVOVCB9IGZyb20gJy4vbXVsdGktaW5wdXQuaW50ZXJmYWNlJztcblxubGV0IHVuaXF1ZUhpZGRlbkxhYmVsID0gMDtcblxuZXhwb3J0IGNsYXNzIE11bHRpSW5wdXRTZWxlY3Rpb25DaGFuZ2VFdmVudCB7XG4gICAgLyoqXG4gICAgICogTXVsdGkgSW5wdXQgc2VsZWN0aW9uIGNoYW5nZSBldmVudFxuICAgICAqIEBwYXJhbSBzb3VyY2UgTXVsdGkgSW5wdXQgY29tcG9uZW50XG4gICAgICogQHBhcmFtIHBheWxvYWQgU2VsZWN0ZWQgdmFsdWVcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHNvdXJjZTogUGxhdGZvcm1NdWx0aUlucHV0Q29tcG9uZW50LFxuICAgICAgICBwdWJsaWMgcGF5bG9hZDogYW55IC8vIENvbnRhaW5zIHNlbGVjdGVkIGl0ZW1cbiAgICApIHt9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLW11bHRpLWlucHV0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbXVsdGktaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL211bHRpLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRkRfRk9STV9GSUVMRF9DT05UUk9MLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGxhdGZvcm1NdWx0aUlucHV0Q29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMoKVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIFBvcG92ZXJDb21wb25lbnQsXG4gICAgICAgIFBvcG92ZXJDb250cm9sQ29tcG9uZW50LFxuICAgICAgICBQb3BvdmVyQm9keUNvbXBvbmVudCxcbiAgICAgICAgSW5wdXRHcm91cE1vZHVsZSxcbiAgICAgICAgTmdJZixcbiAgICAgICAgVG9rZW5Db21wb25lbnQsXG4gICAgICAgIFRva2VuaXplckNvbXBvbmVudCxcbiAgICAgICAgVG9rZW5pemVySW5wdXREaXJlY3RpdmUsXG4gICAgICAgIE5nRm9yLFxuICAgICAgICBGb3JtQ29udHJvbENvbXBvbmVudCxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIEF1dG9Db21wbGV0ZURpcmVjdGl2ZSxcbiAgICAgICAgSW5pdGlhbEZvY3VzRGlyZWN0aXZlLFxuICAgICAgICBQbGF0Zm9ybUxpc3RNb2R1bGUsXG4gICAgICAgIFN0YW5kYXJkTGlzdEl0ZW1Nb2R1bGUsXG4gICAgICAgIERpc3BsYXlGblBpcGUsXG4gICAgICAgIENvbnRlbnREZW5zaXR5TW9kdWxlLFxuICAgICAgICBGZFRyYW5zbGF0ZVBpcGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFBsYXRmb3JtTXVsdGlJbnB1dENvbXBvbmVudCBleHRlbmRzIEJhc2VNdWx0aUlucHV0IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCB0b2tlbkNvdW50SGlkZGVuTGFiZWwgPSBgZmRwLW11bHRpLWlucHV0LXRva2VuLWNvdW50LWlkLSR7dW5pcXVlSGlkZGVuTGFiZWwrK31gO1xuXG4gICAgLyoqIHRva2VuICBjb3VudCBoaWRkZW4gbGFiZWwgKi9cbiAgICBASW5wdXQoKVxuICAgIHRva2VuSGlkZGVuSWQ6IHN0cmluZyA9IHRoaXMudG9rZW5Db3VudEhpZGRlbkxhYmVsO1xuXG4gICAgLyoqIHR5cGUgUmVwcmVzZW50IHRoZSB0eXBlIG9mIGlucHV0IHVzZWQgZm9yIHRoZSBtdWx0aSBJbnB1dCAqL1xuICAgIEBJbnB1dCgpXG4gICAgdHlwZTogSW5wdXRUeXBlO1xuXG4gICAgLyoqIGJvb2xlYW4gdHlwZSByZXByZXNlbnRzIHRoZSBmb2N1cyBzZXQgZm9yIHRoZSByZXNwZWN0aXZlIG11bHRpIGlucHV0ICovXG4gICAgQElucHV0KClcbiAgICBhdXRvZm9jdXMgPSBmYWxzZTtcblxuICAgIC8qKiAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdseXBoQXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoTGlzdENvbXBvbmVudClcbiAgICBsaXN0VGVtcGxhdGVERDogTGlzdENvbXBvbmVudDxNdWx0aUlucHV0T3B0aW9uPjtcblxuICAgIC8qKiBTZWxlY3RlZCB2YWx1ZXMgZnJvbSB0aGUgbGlzdCBpdGVtcy4gKi9cbiAgICBfc2VsZWN0ZWQ6IGFueVtdID0gW107XG5cbiAgICAvKiogU2VsZWN0ZWQgaXRlbXMgb2YgdGhlIG11bHRpIGlucHV0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNlbGVjdGVkKHNlbGVjdGVkVmFsdWU6IGFueVtdKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBzZWxlY3RlZFZhbHVlO1xuICAgIH1cbiAgICBnZXQgc2VsZWN0ZWQoKTogYW55W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGlvbk1vZGU6IFNlbGVjdGlvblR5cGUgPSAnbm9uZSc7XG5cbiAgICAvKiogV2hldGhlciB0aGUgbGlzdCBpbiBieWxpbmUgbW9kZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGhhc0J5TGluZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZWxlY3RlZFZhbHVlPzogTXVsdGlJbnB1dE9wdGlvbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzR3JvdXAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhISh0aGlzLmdyb3VwICYmIHRoaXMuZ3JvdXBLZXkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFdoZXRoZXIgdGhlIGlucHV0IGlzIGRpc2FibGVkLiAqL1xuICAgIHByb3RlY3RlZCBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBtdWx0aSBpbnB1dCBpcyBkaXNhYmxlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZSkge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcmVzZXQgb3B0aW9ucyBmb3IgdGhlIFNlbGVjdCBib2R5IHdpZHRoLCB3aGF0ZXZlciBpcyBjaG9zZW4sIHRoZSBib2R5IGhhcyBhIDYwMHB4IGxpbWl0LlxuICAgICAqIGBhdC1sZWFzdGAgd2lsbCBhcHBseSBhIG1pbmltdW0gd2lkdGggdG8gdGhlIGJvZHkgZXF1aXZhbGVudCB0byB0aGUgd2lkdGggb2YgdGhlIGNvbnRyb2wuIC0gRGVmYXVsdFxuICAgICAqIGBlcXVhbGAgd2lsbCBhcHBseSBhIHdpZHRoIHRvIHRoZSBib2R5IGVxdWl2YWxlbnQgdG8gdGhlIHdpZHRoIG9mIHRoZSBjb250cm9sLlxuICAgICAqICdmaXQtY29udGVudCcgd2lsbCBhcHBseSB3aWR0aCBuZWVkZWQgdG8gcHJvcGVybHkgZGlzcGxheSBpdGVtcyBpbnNpZGUsIGluZGVwZW5kZW50IG9mIGNvbnRyb2wuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBmaWxsQ29udHJvbE1vZGU6IFBvcG92ZXJGaWxsTW9kZSA9ICdhdC1sZWFzdCc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgdHJpZ2dlciBldmVudHMgdGhhdCB3aWxsIG9wZW4vY2xvc2UgdGhlIG9wdGlvbnMgcG9wb3Zlci5cbiAgICAgKiBBY2NlcHRzIGFueSBbSFRNTCBET00gRXZlbnRzXShodHRwczovL3d3dy53M3NjaG9vbHMuY29tL2pzcmVmL2RvbV9vYmpfZXZlbnQuYXNwKS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRyaWdnZXJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGNvbWJvYm94IHNob3VsZCBjbG9zZSwgd2hlbiBhIGNsaWNrIGlzIHBlcmZvcm1lZCBvdXRzaWRlIGl0cyBib3VuZGFyaWVzLiBUcnVlIGJ5IGRlZmF1bHQgKi9cbiAgICBASW5wdXQoKVxuICAgIGNsb3NlT25PdXRzaWRlQ2xpY2sgPSB0cnVlO1xuXG4gICAgLyoqIENhbGxiYWNrIGZ1bmN0aW9uIHdoZW4gYWRkLW9uIGJ1dHRvbiBjbGlja2VkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWRkT25CdXR0b25DbGlja0ZuOiAoKSA9PiB2b2lkO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBpdGVtIGlzIHNlbGVjdGVkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TXVsdGlJbnB1dFNlbGVjdGlvbkNoYW5nZUV2ZW50PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKFRva2VuaXplckNvbXBvbmVudClcbiAgICB0b2tlbml6ZXI6IFRva2VuaXplckNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnY29udHJvbFRlbXBsYXRlJylcbiAgICBjb250cm9sVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2xpc3RUZW1wbGF0ZScpXG4gICAgbGlzdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKEJhc2VMaXN0SXRlbSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9saXN0SXRlbXM6IFF1ZXJ5TGlzdDxCYXNlTGlzdEl0ZW0+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgLyoqIEBoaWRkZW4gKi9cbiAgICAgICAgcmVhZG9ubHkgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICAvKiogQGhpZGRlbiAqL1xuICAgICAgICByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICAvKiogQGhpZGRlbiAqL1xuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHJlYWRvbmx5IG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSByZWFkb25seSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuICAgICAgICAvKiogQGhpZGRlbiAqL1xuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHJlYWRvbmx5IG5nRm9ybTogTmdGb3JtLFxuICAgICAgICAvKiogQGhpZGRlbiAqL1xuICAgICAgICBAT3B0aW9uYWwoKSByZWFkb25seSBkaWFsb2dDb25maWc6IERpYWxvZ0NvbmZpZyxcbiAgICAgICAgLyoqIEBoaWRkZW4gKi9cbiAgICAgICAgcmVhZG9ubHkgX2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlOiBEeW5hbWljQ29tcG9uZW50U2VydmljZSxcbiAgICAgICAgLyoqIEBoaWRkZW4gKi9cbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgLyoqIEBoaWRkZW4gKi9cbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICAvKiogQGhpZGRlbiAqL1xuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERBVEFfUFJPVklERVJTKSBwcml2YXRlIF9wcm92aWRlcnM6IE1hcDxzdHJpbmcsIERhdGFQcm92aWRlcjxhbnk+PixcbiAgICAgICAgLyoqIEBoaWRkZW4gKi9cbiAgICAgICAgcmVhZG9ubHkgX211bHRpSW5wdXRDb25maWc6IE11bHRpSW5wdXRDb25maWcsXG4gICAgICAgIC8qKiBAaGlkZGVuICovXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIEBIb3N0KCkgQEluamVjdChGRF9GT1JNX0ZJRUxEKSBmb3JtRmllbGQ6IFBsYXRmb3JtRm9ybUZpZWxkLFxuICAgICAgICAvKiogQGhpZGRlbiAqL1xuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBASG9zdCgpIEBJbmplY3QoRkRfRk9STV9GSUVMRF9DT05UUk9MKSBmb3JtQ29udHJvbDogUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sLFxuICAgICAgICByZWFkb25seSBjb250ZW50RGVuc2l0eU9ic2VydmVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKFxuICAgICAgICAgICAgY2QsXG4gICAgICAgICAgICBlbGVtZW50UmVmLFxuICAgICAgICAgICAgbmdDb250cm9sLFxuICAgICAgICAgICAgY29udHJvbENvbnRhaW5lcixcbiAgICAgICAgICAgIG5nRm9ybSxcbiAgICAgICAgICAgIGRpYWxvZ0NvbmZpZyxcbiAgICAgICAgICAgIF9tdWx0aUlucHV0Q29uZmlnLFxuICAgICAgICAgICAgZm9ybUZpZWxkLFxuICAgICAgICAgICAgZm9ybUNvbnRyb2xcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogRGlzcGxheSBmdW5jdGlvbi4gQWNjZXB0cyBhbiBvYmplY3Qgb2YgdGhlIHNhbWUgdHlwZSBhcyB0aGVcbiAgICAgKiBpdGVtcyBwYXNzZWQgdG8gZHJvcGRvd25WYWx1ZXMgYXMgYXJndW1lbnQsIGFuZCBvdXRwdXRzIGEgc3RyaW5nLlxuICAgICAqIEFuIGFycm93IGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGFjY2VzcyB0aGUgKnRoaXMqIGtleXdvcmQgaW4gdGhlIGNhbGxpbmcgY29tcG9uZW50LlxuICAgICAqIFNlZSBtdWx0aSBpbnB1dCBleGFtcGxlcyBmb3IgZGV0YWlscy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlGbiA9IChzdHI6IHN0cmluZyk6IHN0cmluZyA9PiBzdHI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIGNvbnN0IHByb3ZpZGVycyA9IHRoaXMuX3Byb3ZpZGVycz8uc2l6ZSA9PT0gMCA/IHRoaXMuX211bHRpSW5wdXRDb25maWcucHJvdmlkZXJzIDogdGhpcy5fcHJvdmlkZXJzO1xuICAgICAgICAvLyBpZiB3ZSBoYXZlIGJvdGggcHJlZmVyIGRhdGFTb3VyY2VcbiAgICAgICAgaWYgKCF0aGlzLmRhdGFTb3VyY2UgJiYgdGhpcy5lbnRpdHlDbGFzcyAmJiBwcm92aWRlcnM/Lmhhcyh0aGlzLmVudGl0eUNsYXNzKSkge1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE11bHRpSW5wdXREYXRhU291cmNlKHByb3ZpZGVycy5nZXQodGhpcy5lbnRpdHlDbGFzcykhKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcblxuICAgICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFVwTW9iaWxlTW9kZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50b2tlbml6ZXIuX3Nob3dPdmVyZmxvd1BvcG92ZXIgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBNZXRob2QgdG8gZW1pdCBjaGFuZ2UgZXZlbnQgKi9cbiAgICBlbWl0Q2hhbmdlRXZlbnQ8VD4obW9kZWxWYWx1ZTogVCk6IHZvaWQge1xuICAgICAgICBjb25zdCBldmVudCA9IG5ldyBNdWx0aUlucHV0U2VsZWN0aW9uQ2hhbmdlRXZlbnQodGhpcywgbW9kZWxWYWx1ZSk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2hlY2tib3hTZWxlY3RlZCh2YWx1ZTogYW55LCBldmVudDogTW9kaWZ5SXRlbUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBldmVudC5zb3VyY2UuX3NlbGVjdGVkO1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWQuZmluZEluZGV4KChzZWxlY3R2YWx1ZSkgPT4gZXF1YWwoc2VsZWN0dmFsdWUsIHZhbHVlKSk7XG5cbiAgICAgICAgaWYgKGlzU2VsZWN0ZWQgJiYgaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hZGRUb0FycmF5KHZhbHVlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBhZGRUb0FycmF5KHZhbHVlOiBhbnksIGZvY3VzT25JbnB1dCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkLmZpbmRJbmRleCgoc2VsZWN0dmFsdWUpID0+IGVxdWFsKHNlbGVjdHZhbHVlLCB2YWx1ZSkpO1xuICAgICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkLnB1c2godmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5tb2JpbGUgJiYgZm9jdXNPbklucHV0KSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdXBkYXRlTW9kZWwodGhpcy5zZWxlY3RlZCk7XG4gICAgICAgIGlmIChmb2N1c09uSW5wdXQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCh2YWx1ZSA/IHRoaXMuc2VsZWN0ZWQgOiBudWxsKTtcbiAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgYWRkT25CdXR0b25DbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm9wZW5Ecm9wZG93bk9uQWRkT25DbGlja2VkICYmIHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dMaXN0KGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm9wZW5Ecm9wZG93bk9uQWRkT25DbGlja2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dMaXN0KCF0aGlzLmlzT3Blbik7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0RWxlbWVudD8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hZGRPbkJ1dHRvbkNsaWNrZWQuZW1pdChldmVudCk7XG5cbiAgICAgICAgaWYgKGlzRnVuY3Rpb24odGhpcy5hZGRPbkJ1dHRvbkNsaWNrRm4pKSB7XG4gICAgICAgICAgICB0aGlzLmFkZE9uQnV0dG9uQ2xpY2tGbigpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbklucHV0R3JvdXBDbGlja2VkKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tb2JpbGUgJiYgIXRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbW9yZUNsaWNrZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICB0aGlzLl9zdWdnZXN0aW9ucyA9IHRoaXMuc2VsZWN0ZWQ7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZGVsZXRlVG9rZW4oc2VsZWN0ZWRWYWx1ZTogTXVsdGlJbnB1dE9wdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50b2tlbml6ZXIudG9rZW5MaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMudG9rZW5pemVyLnRva2VuTGlzdC5mb3JFYWNoKCh0b2tlbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbi50b2tlbldyYXBwZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQgPT09IHNlbGVjdGVkVmFsdWUubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZC5zcGxpY2UodGhpcy5zZWxlY3RlZC5pbmRleE9mKHNlbGVjdGVkVmFsdWUpLCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl91cGRhdGVNb2RlbCh0aGlzLnNlbGVjdGVkKTtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVtb3ZlVG9rZW4odG9rZW46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkLnNwbGljZSh0aGlzLnNlbGVjdGVkLmluZGV4T2YodG9rZW4pLCAxKTtcbiAgICAgICAgdGhpcy5lbWl0Q2hhbmdlRXZlbnQodG9rZW4gPyB0aGlzLnNlbGVjdGVkIDogbnVsbCk7XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3VwZGF0ZU1vZGVsKHRoaXMuc2VsZWN0ZWQpO1xuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlbW92ZVNlbGVjdGVkVG9rZW5zKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0RPV05fQVJST1csIFVQX0FSUk9XXSkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdENvbXBvbmVudC5fc2V0Q3VycmVudEFjdGl2ZUl0ZW1JbmRleCgwKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RUZW1wbGF0ZURELmxpc3RJdGVtcy5maXJzdC5mb2N1cygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dMaXN0KCF0aGlzLmlzT3Blbik7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0VTQ0FQRV0pKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dMaXN0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBEZWZpbmUgaXMgc2VsZWN0ZWQgaXRlbSBzZWxlY3RlZCAqL1xuICAgIGlzU2VsZWN0ZWRPcHRpb25JdGVtKHNlbGVjdGVkSXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAodGhpcy5sb29rdXBLZXkgJiYgdGhpcy5sb29rdXBWYWx1ZSh0aGlzLnNlbGVjdGVkKSA9PT0gdGhpcy5sb29rdXBWYWx1ZShzZWxlY3RlZEl0ZW0pKSB8fFxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUodGhpcy5zZWxlY3RlZCkgPT09IHRoaXMuZGlzcGxheVZhbHVlKHNlbGVjdGVkSXRlbSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBNZXRob2QgdG8gc2V0IHNlbGVjdGVkIGl0ZW0gKi9cbiAgICBzZWxlY3RPcHRpb25JdGVtKGl0ZW06IE11bHRpSW5wdXRPcHRpb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBpdGVtO1xuICAgICAgICAgICAgdGhpcy5pbnB1dFRleHQgPSBpdGVtLmxhYmVsO1xuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5wdXRUZXh0ID0gaXRlbS5sYWJlbDtcbiAgICAgICAgdGhpcy5fY2hlY2tBbmRVcGRhdGUoaXRlbSk7XG4gICAgICAgIHRoaXMuc2hvd0xpc3QoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIE1ldGhvZCB0byBzZXQgYXMgc2VsZWN0ZWQgKi9cbiAgICBzZXRBc1NlbGVjdGVkKGl0ZW06IE11bHRpSW5wdXRPcHRpb25bXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IGl0ZW07XG4gICAgICAgIHRoaXMuaW5wdXRUZXh0ID0gJyc7XG4gICAgICAgIHRoaXMuX21hcmtMaXN0SXRlbXNBc1NlbGVjdGVkKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1hdGhvZCBmb3IgbWFya2luZyBpdGVtcyBpbiBkcm9wZG93biBhcyBzZWxlY3RlZC5cbiAgICAgKi9cbiAgICBfbWFya0xpc3RJdGVtc0FzU2VsZWN0ZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3RJdGVtcz8uZm9yRWFjaCgobGlzdEl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSAhIXRoaXMuX3NlbGVjdGVkLmZpbmQoKHZhbHVlKSA9PiBlcXVhbCh2YWx1ZS52YWx1ZSwgbGlzdEl0ZW0udmFsdWUpKTtcbiAgICAgICAgICAgIGxpc3RJdGVtLnNldFNlbGVjdGVkKGlzU2VsZWN0ZWQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkF1dG9Db21wbGV0ZShldmVudDogQXV0b0NvbXBsZXRlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFldmVudC5mb3JjZUNsb3NlIHx8ICF0aGlzLl9zdWdnZXN0aW9ucykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgW2l0ZW1dID0gdGhpcy5pc0dyb3VwID8gdGhpcy5fc3VnZ2VzdGlvbnNbMF0/LmNoaWxkcmVuIHx8IFtdIDogdGhpcy5fc3VnZ2VzdGlvbnM7XG4gICAgICAgIGlmIChpdGVtICYmIGl0ZW0ubGFiZWwgPT09IGV2ZW50LnRlcm0pIHtcbiAgICAgICAgICAgIHRoaXMuYWRkVG9BcnJheShpdGVtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uS2V5ZG93bkVudGVyKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pbnB1dFRleHQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBIYW5kbGUgZGlhbG9nIGRpc21pc3NpbmcsIGNsb3NlcyBwb3BvdmVyIGFuZCBzZXRzIGJhY2t1cCBkYXRhLiAqL1xuICAgIF9kaWFsb2dEaXNtaXNzKHNlbGVjdGVkOiBhbnlbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IHNlbGVjdGVkO1xuICAgICAgICB0aGlzLnNob3dMaXN0KGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBIYW5kbGUgZGlhbG9nIGFwcHJvdmFsLCBjbG9zZXMgcG9wb3ZlciBhbmQgcHJvcGFnYXRlcyBkYXRhIGNoYW5nZXMuICovXG4gICAgX2RpYWxvZ0FwcHJvdmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5zZWxlY3RlZCk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZU1vZGVsKHRoaXMuc2VsZWN0ZWQpO1xuICAgICAgICB0aGlzLnNob3dMaXN0KGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBpZiBub3Qgc2VsZWN0ZWQgdXBkYXRlIG1vZGVsICovXG4gICAgcHJpdmF0ZSBfY2hlY2tBbmRVcGRhdGUobW9kZWxWYWx1ZTogTXVsdGlJbnB1dE9wdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkT3B0aW9uSXRlbShtb2RlbFZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3B0aW9uSXRlbSA9IHRoaXMuX2dldFNlbGVjdGVkT3B0aW9uSXRlbSh0aGlzLmlucHV0VGV4dCk7XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlTW9kZWwob3B0aW9uSXRlbSA/IG9wdGlvbkl0ZW0udmFsdWUgOiB0aGlzLmlucHV0VGV4dCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRTZWxlY3RlZE9wdGlvbkl0ZW0odGV4dDogc3RyaW5nKTogTXVsdGlJbnB1dE9wdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0dyb3VwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc3VnZ2VzdGlvbnMuZmluZCgoaXRlbSkgPT4gaXRlbS5sYWJlbCA9PT0gdGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fc3VnZ2VzdGlvbnNcbiAgICAgICAgICAgIC5yZWR1Y2UoKHJlc3VsdDogTXVsdGlJbnB1dE9wdGlvbltdLCBpdGVtOiBNdWx0aUlucHV0T3B0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbS5jaGlsZHJlbiAmJiByZXN1bHQucHVzaCguLi5pdGVtLmNoaWxkcmVuKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9LCBbXSlcbiAgICAgICAgICAgIC5maW5kKChpdGVtKSA9PiBpdGVtLmxhYmVsID09PSB0ZXh0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBVcGRhdGUgbW9kZWwgKi9cbiAgICBwcml2YXRlIF91cGRhdGVNb2RlbCh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIC8vIHNldHRpbmcgdmFsdWUsIGl0IHdpbGwgY2FsbCBzZXRWYWx1ZSgpXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgYXN5bmMgX3NldFVwTW9iaWxlTW9kZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBNVUxUSUlOUFVUX0NPTVBPTkVOVCwgdXNlVmFsdWU6IHRoaXMgfV0sXG4gICAgICAgICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlLmNyZWF0ZUR5bmFtaWNDb21wb25lbnQoXG4gICAgICAgICAgICB7IGxpc3RUZW1wbGF0ZTogdGhpcy5saXN0VGVtcGxhdGUsIGNvbnRyb2xUZW1wbGF0ZTogdGhpcy5jb250cm9sVGVtcGxhdGUgfSxcbiAgICAgICAgICAgIFBsYXRmb3JtTXVsdGlJbnB1dE1vYmlsZUNvbXBvbmVudCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb250YWluZXJSZWY6IHRoaXMuX3ZpZXdDb250YWluZXJSZWZcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGluamVjdG9yIH1cbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmQtbXVsdGktaW5wdXRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9iaWxlID8gbW9iaWxlVGVtcGxhdGUgOiBkZXNrdG9wVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNkZXNrdG9wVGVtcGxhdGU+XG4gICAgPGZkLXBvcG92ZXJcbiAgICAgICAgYWRkaXRpb25hbEJvZHlDbGFzcz1cImZkcC1tdWx0aS1pbnB1dF9fbGlzdC1jb250YWluZXJcIlxuICAgICAgICBbaXNPcGVuXT1cImlzT3BlbiAmJiBfc3VnZ2VzdGlvbnMubGVuZ3RoID4gMFwiXG4gICAgICAgIChpc09wZW5DaGFuZ2UpPVwiX3BvcG92ZXJPcGVuQ2hhbmdlSGFuZGxlKCRldmVudClcIlxuICAgICAgICBbZmlsbENvbnRyb2xNb2RlXT1cImZpbGxDb250cm9sTW9kZVwiXG4gICAgICAgIFtmb2N1c1RyYXBwZWRdPVwidHJ1ZVwiXG4gICAgICAgIFt0cmlnZ2Vyc109XCJ0cmlnZ2Vyc1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seVwiXG4gICAgICAgIFttYXhXaWR0aF09XCIoIWF1dG9SZXNpemUgJiYgbWluV2lkdGgpIHx8IDBcIlxuICAgICAgICBbY2xvc2VPbk91dHNpZGVDbGlja109XCJjbG9zZU9uT3V0c2lkZUNsaWNrXCJcbiAgICA+XG4gICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udHJvbFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICA8ZmQtcG9wb3Zlci1ib2R5PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3RUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2ZkLXBvcG92ZXItYm9keT5cbiAgICA8L2ZkLXBvcG92ZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vYmlsZVRlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udHJvbFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbnRyb2xUZW1wbGF0ZT5cbiAgICA8ZmQtaW5wdXQtZ3JvdXBcbiAgICAgICAgW2J1dHRvbl09XCJ0cnVlXCJcbiAgICAgICAgW2J1dHRvbkZvY3VzYWJsZV09XCJidXR0b25Gb2N1c2FibGVcIlxuICAgICAgICBbaXNDb250cm9sXT1cInRydWVcIlxuICAgICAgICBnbHlwaD1cInZhbHVlLWhlbHBcIlxuICAgICAgICBbc3RhdGVdPVwic3RhdGVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAoa2V5ZG93bik9XCJyZW1vdmVTZWxlY3RlZFRva2VucygkZXZlbnQpXCJcbiAgICAgICAgKGFkZE9uQnV0dG9uQ2xpY2tlZCk9XCJhZGRPbkJ1dHRvbkNsaWNrKCRldmVudClcIlxuICAgICAgICAoY2xpY2spPVwib25JbnB1dEdyb3VwQ2xpY2tlZCgpXCJcbiAgICAgICAgW2dseXBoQXJpYUxhYmVsXT1cImdseXBoQXJpYUxhYmVsXCJcbiAgICA+XG4gICAgICAgIDxzcGFuIFthdHRyLmlkXT1cInRva2VuSGlkZGVuSWRcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImZkcC1tdWx0aS1pbnB1dF9faW52aXNpYmxlLXRleHRcIlxuICAgICAgICAgICAgPkNvbnRhaW5zIHt7IHNlbGVjdGVkLmxlbmd0aCB8fCAnbm8nIH19IHRva2VuPC9zcGFuXG4gICAgICAgID5cbiAgICAgICAgPGZkLXRva2VuaXplclxuICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgICBbdG9rZW5pemVyRm9jdXNhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtjb21wYWN0Q29sbGFwc2VdPVwidHJ1ZVwiXG4gICAgICAgICAgICAjdG9rZW5pemVyXG4gICAgICAgICAgICBjbGFzcz1cImZkLW11bHRpLWlucHV0LXRva2VuaXplci1jdXN0b21cIlxuICAgICAgICAgICAgKG1vcmVDbGlja2VkRXZlbnQpPVwibW9yZUNsaWNrZWQoKVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGZkLXRva2VuXG4gICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAob25DbG9zZUNsaWNrKT1cInJlbW92ZVRva2VuKHRva2VuKVwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRva2VuIG9mIHNlbGVjdGVkOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXBvc2luc2V0XT1cImlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc2V0c2l6ZV09XCJzZWxlY3RlZC5sZW5ndGhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHRva2VuLmxhYmVsIHwgZGlzcGxheUZuUGlwZSA6IGRpc3BsYXlGbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZmQtdG9rZW4+XG5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICNzZWFyY2hJbnB1dEVsZW1lbnRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1pbnB1dCBmZC1tdWx0aS1pbnB1dC10b2tlbml6ZXItaW5wdXQgZmQtdG9rZW5pemVyX19pbnB1dFwiXG4gICAgICAgICAgICAgICAgZmRwLWF1dG8tY29tcGxldGVcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgIChvbkNvbXBsZXRlKT1cIl9vbkF1dG9Db21wbGV0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJfb25LZXlkb3duRW50ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25JbnB1dEtleWRvd25IYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtpbnB1dFRleHRdPVwiaW5wdXRUZXh0XCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJfc3VnZ2VzdGlvbnNcIlxuICAgICAgICAgICAgICAgIGZkLWlucHV0LWdyb3VwLWlucHV0XG4gICAgICAgICAgICAgICAgZmQtZm9ybS1jb250cm9sXG4gICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiaWRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFRleHRcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlYXJjaFRlcm1DaGFuZ2VkKClcIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Ub3VjaGVkKCk7IHRva2VuaXplci5fc2hvd0FsbFRva2VucygpXCJcbiAgICAgICAgICAgICAgICAoYmx1cik9XCJ0b2tlbml6ZXIuX2hpZGVUb2tlbnMoKVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc09wZW4gJiYgX3N1Z2dlc3Rpb25zLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiYXJpYUxhYmVsIHx8ICgnY29yZU11bHRpSW5wdXQubXVsdGlJbnB1dEFyaWFMYWJlbCcgfCBmZFRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICAgIFthcmlhTGFiZWxsZWRCeV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJ0b2tlbkhpZGRlbklkXCJcbiAgICAgICAgICAgICAgICBhcmlhLXJvbGVkZXNjcmlwdGlvbj1cIk11bHRpIFZhbHVlIElucHV0XCJcbiAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICBbZW5hYmxlZF09XCJhdXRvZm9jdXNcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9mZC10b2tlbml6ZXI+XG4gICAgPC9mZC1pbnB1dC1ncm91cD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2xpc3RUZW1wbGF0ZT5cbiAgICA8ZmRwLWxpc3RcbiAgICAgICAgW25vQm9yZGVyXT1cInRydWVcIlxuICAgICAgICAjbGlzdFRlbXBsYXRlRERcbiAgICAgICAgW2hhc0J5TGluZV09XCJoYXNCeUxpbmVcIlxuICAgICAgICBbc2VsZWN0aW9uTW9kZV09XCJzZWxlY3Rpb25Nb2RlXCJcbiAgICAgICAgKm5nSWY9XCJfc3VnZ2VzdGlvbnMgJiYgX3N1Z2dlc3Rpb25zLmxlbmd0aFwiXG4gICAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgICAgYXJpYS1tdWx0aXNlbGVjdGFibGU9XCJ0cnVlXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNHcm91cFwiPlxuICAgICAgICAgICAgPGZkcC1zdGFuZGFyZC1saXN0LWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbGlzdEl0ZW0gb2YgX3N1Z2dlc3Rpb25zXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwibGlzdEl0ZW0ubGFiZWxcIlxuICAgICAgICAgICAgICAgIFtkZXNjcmlwdGlvbl09XCJsaXN0SXRlbS5kZXNjcmlwdGlvbiB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgW2F2YXRhcl09XCJsaXN0SXRlbS5hdmF0YXJTcmNcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJsaXN0SXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgKGl0ZW1TZWxlY3RlZCk9XCJzZWxlY3Rpb25Nb2RlICE9PSAnbXVsdGknICYmIGFkZFRvQXJyYXkobGlzdEl0ZW0sIHRydWUpXCJcbiAgICAgICAgICAgICAgICAoaXRlbUNoZWNrYm94U2VsZWN0ZWQpPVwiX2NoZWNrYm94U2VsZWN0ZWQobGlzdEl0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgICAgIChidXR0b25DbGlja2VkKT1cImRlbGV0ZVRva2VuKGxpc3RJdGVtKVwiXG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2ZkcC1zdGFuZGFyZC1saXN0LWl0ZW0+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNHcm91cFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgX3N1Z2dlc3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFncm91cEl0ZW1UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmRwLWxpc3QtZ3JvdXAtaGVhZGVyIFtncm91cEhlYWRlclRpdGxlXT1cImdyb3VwLmxhYmVsXCI+PC9mZHAtbGlzdC1ncm91cC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JvdXBJdGVtVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ3JvdXBJdGVtVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiB7IGxhYmVsOiBncm91cC5sYWJlbCB9IH1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8ZmRwLXN0YW5kYXJkLWxpc3QtaXRlbVxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uSXRlbSBvZiBncm91cC5jaGlsZHJlbjsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJvcHRpb25JdGVtLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbkl0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAoaXRlbVNlbGVjdGVkKT1cImFkZFRvQXJyYXkob3B0aW9uSXRlbSwgdHJ1ZSlcIlxuICAgICAgICAgICAgICAgICAgICAoaXRlbUNoZWNrYm94U2VsZWN0ZWQpPVwiYWRkVG9BcnJheShvcHRpb25JdGVtLCBmYWxzZSlcIlxuICAgICAgICAgICAgICAgICAgICAoYnV0dG9uQ2xpY2tlZCk9XCJkZWxldGVUb2tlbihvcHRpb25JdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2ZkcC1zdGFuZGFyZC1saXN0LWl0ZW0+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9mZHAtbGlzdD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,9 +1,10 @@
1
1
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Host, Inject, Input, Optional, Output, Self, SkipSelf } from '@angular/core';
2
2
  import { ControlContainer, NgControl, NgForm } from '@angular/forms';
3
3
  import { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';
4
- import { BaseInput, PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared';
5
- import { SwitchConfig } from './switch.config';
6
4
  import { SwitchModule } from '@fundamental-ngx/core/switch';
5
+ import { FdTranslatePipe } from '@fundamental-ngx/i18n';
6
+ import { BaseInput, PlatformFormField, PlatformFormFieldControl } from '@fundamental-ngx/platform/shared';
7
+ import { SwitchConfig } from './switch.config';
7
8
  import * as i0 from "@angular/core";
8
9
  import * as i1 from "@angular/forms";
9
10
  import * as i2 from "./switch.config";
@@ -24,8 +25,6 @@ export class SwitchComponent extends BaseInput {
24
25
  constructor(cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl, _switchConfig) {
25
26
  super(cd, elementRef, ngControl, controlContainer, ngForm, formField, formControl);
26
27
  this._switchConfig = _switchConfig;
27
- /** aria-label attribute of the inner input element. */
28
- this.ariaLabel = 'Switch input';
29
28
  /** aria-labelledby attribute of the inner input element. */
30
29
  this.ariaLabelledby = null;
31
30
  /** Whether the switch is semantic */
@@ -69,11 +68,11 @@ export class SwitchComponent extends BaseInput {
69
68
  this.switchChange.emit(event);
70
69
  }
71
70
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: SwitchComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.NgControl, optional: true, self: true }, { token: i1.ControlContainer, optional: true, skipSelf: true }, { token: i1.NgForm, optional: true, skipSelf: true }, { token: FD_FORM_FIELD, host: true, optional: true, skipSelf: true }, { token: FD_FORM_FIELD_CONTROL, host: true, optional: true, skipSelf: true }, { token: i2.SwitchConfig }], target: i0.ɵɵFactoryTarget.Component }); }
72
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: SwitchComponent, isStandalone: true, selector: "fdp-switch", inputs: { ariaLabel: "ariaLabel", ariaLabelledby: "ariaLabelledby", semantic: "semantic" }, outputs: { switchChange: "switchChange" }, providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: SwitchComponent, multi: true }], usesInheritance: true, ngImport: i0, template: "<fd-switch\n [id]=\"id\"\n [required]=\"required\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n [semantic]=\"semantic\"\n [ariaLabel]=\"ariaLabel\"\n [ariaLabelledBy]=\"ariaLabelledby\"\n [checked]=\"switchCurrentValue\"\n (checkedChange)=\"onValueChange($event)\"\n></fd-switch>\n", dependencies: [{ kind: "ngmodule", type: SwitchModule }, { kind: "component", type: i3.SwitchComponent, selector: "fd-switch", inputs: ["activeText", "inactiveText", "disabled", "id", "name", "required", "checked", "semantic", "ariaLabel", "ariaLabelledBy"], outputs: ["checkedChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
71
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: SwitchComponent, isStandalone: true, selector: "fdp-switch", inputs: { ariaLabelledby: "ariaLabelledby", semantic: "semantic" }, outputs: { switchChange: "switchChange" }, providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: SwitchComponent, multi: true }], usesInheritance: true, ngImport: i0, template: "<fd-switch\n [id]=\"id\"\n [required]=\"required\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n [semantic]=\"semantic\"\n [ariaLabel]=\"ariaLabel || ('platformSwitch.ariaLabel' | fdTranslate)\"\n [ariaLabelledBy]=\"ariaLabelledby\"\n [checked]=\"switchCurrentValue\"\n (checkedChange)=\"onValueChange($event)\"\n></fd-switch>\n", dependencies: [{ kind: "ngmodule", type: SwitchModule }, { kind: "component", type: i3.SwitchComponent, selector: "fd-switch", inputs: ["activeText", "inactiveText", "disabled", "id", "name", "required", "checked", "semantic", "ariaLabel", "ariaLabelledBy"], outputs: ["checkedChange"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
73
72
  }
74
73
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: SwitchComponent, decorators: [{
75
74
  type: Component,
76
- args: [{ selector: 'fdp-switch', changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: SwitchComponent, multi: true }], standalone: true, imports: [SwitchModule], template: "<fd-switch\n [id]=\"id\"\n [required]=\"required\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n [semantic]=\"semantic\"\n [ariaLabel]=\"ariaLabel\"\n [ariaLabelledBy]=\"ariaLabelledby\"\n [checked]=\"switchCurrentValue\"\n (checkedChange)=\"onValueChange($event)\"\n></fd-switch>\n" }]
75
+ args: [{ selector: 'fdp-switch', changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: SwitchComponent, multi: true }], standalone: true, imports: [SwitchModule, FdTranslatePipe], template: "<fd-switch\n [id]=\"id\"\n [required]=\"required\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n [semantic]=\"semantic\"\n [ariaLabel]=\"ariaLabel || ('platformSwitch.ariaLabel' | fdTranslate)\"\n [ariaLabelledBy]=\"ariaLabelledby\"\n [checked]=\"switchCurrentValue\"\n (checkedChange)=\"onValueChange($event)\"\n></fd-switch>\n" }]
77
76
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.NgControl, decorators: [{
78
77
  type: Optional
79
78
  }, {
@@ -104,13 +103,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
104
103
  }, {
105
104
  type: Inject,
106
105
  args: [FD_FORM_FIELD_CONTROL]
107
- }] }, { type: i2.SwitchConfig }]; }, propDecorators: { ariaLabel: [{
108
- type: Input
109
- }], ariaLabelledby: [{
106
+ }] }, { type: i2.SwitchConfig }]; }, propDecorators: { ariaLabelledby: [{
110
107
  type: Input
111
108
  }], semantic: [{
112
109
  type: Input
113
110
  }], switchChange: [{
114
111
  type: Output
115
112
  }] } });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9mb3JtL3N3aXRjaC9zd2l0Y2gvc3dpdGNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9mb3JtL3N3aXRjaC9zd2l0Y2gvc3dpdGNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLElBQUksRUFDSixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUNKLFFBQVEsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRixPQUFPLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDMUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7O0FBRTVELG1DQUFtQztBQUNuQyxNQUFNLE9BQU8saUJBQWlCO0NBSzdCO0FBVUQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsU0FBUztJQW9CMUMsK0JBQStCO0lBQy9CLElBQUksS0FBSyxDQUFDLFdBQWdCO1FBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUNELElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFPRCxjQUFjO0lBQ2QsWUFDSSxFQUFxQixFQUNyQixVQUFzQixFQUNGLFNBQW9CLEVBQ2hCLGdCQUFrQyxFQUNsQyxNQUFjLEVBQ2lCLFNBQTRCLEVBQ3BCLFdBQXFDLEVBQzFGLGFBQTJCO1FBRXJDLEtBQUssQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRnpFLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBekN6Qyx1REFBdUQ7UUFFdkQsY0FBUyxHQUFHLGNBQWMsQ0FBQztRQUUzQiw0REFBNEQ7UUFFNUQsbUJBQWMsR0FBa0IsSUFBSSxDQUFDO1FBRXJDLHFDQUFxQztRQUVyQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCOzs7V0FHRztRQUVNLGlCQUFZLEdBQW9DLElBQUksWUFBWSxFQUFxQixDQUFDO1FBVS9GOztXQUVHO1FBQ0gsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO0lBYzNCLENBQUM7SUFFRCwrQ0FBK0M7SUFDL0MsYUFBYSxDQUFDLFVBQW1CO1FBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELDJDQUEyQztJQUMzQyxVQUFVLENBQUMsS0FBVTtRQUNqQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssWUFBWSxDQUFDLFVBQW1CO1FBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSyxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUN4QyxNQUFNLEtBQUssR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDdEMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDcEIsS0FBSyxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUM7UUFFM0IseUNBQXlDO1FBQ3pDLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7OEdBOUVRLGVBQWUsd1BBd0NvQixhQUFhLHlEQUNiLHFCQUFxQjtrR0F6Q3hELGVBQWUsZ01BSmIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxpRENoQzlGLHVUQVdBLDJDRHVCYyxZQUFZOzsyRkFFYixlQUFlO2tCQVIzQixTQUFTOytCQUNJLFlBQVksbUJBRUwsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFdBQVcsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLGNBQzlFLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQzs7MEJBdUNsQixRQUFROzswQkFBSSxJQUFJOzswQkFDaEIsUUFBUTs7MEJBQUksUUFBUTs7MEJBQ3BCLFFBQVE7OzBCQUFJLFFBQVE7OzBCQUNwQixRQUFROzswQkFBSSxRQUFROzswQkFBSSxJQUFJOzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUNwRCxRQUFROzswQkFBSSxRQUFROzswQkFBSSxJQUFJOzswQkFBSSxNQUFNOzJCQUFDLHFCQUFxQjt1RUF0Q2pFLFNBQVM7c0JBRFIsS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQVFHLFlBQVk7c0JBRHBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0LFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgU2VsZixcbiAgICBTa2lwU2VsZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIE5nQ29udHJvbCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRkRfRk9STV9GSUVMRCwgRkRfRk9STV9GSUVMRF9DT05UUk9MIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvZm9ybXMnO1xuaW1wb3J0IHsgQmFzZUlucHV0LCBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2wsIFBsYXRmb3JtRm9ybUZpZWxkIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zaGFyZWQnO1xuaW1wb3J0IHsgU3dpdGNoQ29uZmlnIH0gZnJvbSAnLi9zd2l0Y2guY29uZmlnJztcbmltcG9ydCB7IFN3aXRjaE1vZHVsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zd2l0Y2gnO1xuXG4vKiogU3dpdGNoIGNoYW5nZSBldmVudCBpbnN0YW5jZSAqL1xuZXhwb3J0IGNsYXNzIFN3aXRjaENoYW5nZUV2ZW50IHtcbiAgICAvKiogVGhlIHNvdXJjZSBTd2l0Y2ggb2YgdGhlIGV2ZW50LiAqL1xuICAgIHNvdXJjZTogU3dpdGNoQ29tcG9uZW50O1xuICAgIC8qKiBUaGUgbmV3IGBwYXlsb2FkYCB2YWx1ZSBvZiB0aGUgc3dpdGNoLiAqL1xuICAgIHBheWxvYWQ6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLXN3aXRjaCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3N3aXRjaC5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBGRF9GT1JNX0ZJRUxEX0NPTlRST0wsIHVzZUV4aXN0aW5nOiBTd2l0Y2hDb21wb25lbnQsIG11bHRpOiB0cnVlIH1dLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1N3aXRjaE1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgU3dpdGNoQ29tcG9uZW50IGV4dGVuZHMgQmFzZUlucHV0IHtcbiAgICAvKiogYXJpYS1sYWJlbCBhdHRyaWJ1dGUgb2YgdGhlIGlubmVyIGlucHV0IGVsZW1lbnQuICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWwgPSAnU3dpdGNoIGlucHV0JztcblxuICAgIC8qKiBhcmlhLWxhYmVsbGVkYnkgYXR0cmlidXRlIG9mIHRoZSBpbm5lciBpbnB1dCBlbGVtZW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsbGVkYnk6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHN3aXRjaCBpcyBzZW1hbnRpYyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VtYW50aWMgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGZpcmVkIHdoZW4gdGhlIHN0YXRlIG9mIHRoZSBzd2l0Y2ggY2hhbmdlcy5cbiAgICAgKiAqJGV2ZW50KiBjYW4gYmUgdXNlZCB0byByZXRyaWV2ZSB0aGUgbmV3IHN0YXRlIG9mIHRoZSBzd2l0Y2guXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgc3dpdGNoQ2hhbmdlOiBFdmVudEVtaXR0ZXI8U3dpdGNoQ2hhbmdlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxTd2l0Y2hDaGFuZ2VFdmVudD4oKTtcblxuICAgIC8qKiB2YWx1ZSBmb3Igc3dpdGNoIGNvbnRyb2wgKi9cbiAgICBzZXQgdmFsdWUoc2VsZWN0VmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLnNldFZhbHVlKHNlbGVjdFZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiB0cmFja2luZyBzd2l0Y2ggY3VycmVudCB2YWx1ZVxuICAgICAqL1xuICAgIHN3aXRjaEN1cnJlbnRWYWx1ZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBuZ0Zvcm06IE5nRm9ybSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgQEhvc3QoKSBASW5qZWN0KEZEX0ZPUk1fRklFTEQpIGZvcm1GaWVsZDogUGxhdGZvcm1Gb3JtRmllbGQsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIEBIb3N0KCkgQEluamVjdChGRF9GT1JNX0ZJRUxEX0NPTlRST0wpIGZvcm1Db250cm9sOiBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2wsXG4gICAgICAgIHByb3RlY3RlZCBfc3dpdGNoQ29uZmlnOiBTd2l0Y2hDb25maWdcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY2QsIGVsZW1lbnRSZWYsIG5nQ29udHJvbCwgY29udHJvbENvbnRhaW5lciwgbmdGb3JtLCBmb3JtRmllbGQsIGZvcm1Db250cm9sKTtcbiAgICB9XG5cbiAgICAvKiogdXBkYXRlIGNvbnRyb2xsZXIgb24gc3dpdGNoIHN0YXRlIGNoYW5nZSAqL1xuICAgIG9uVmFsdWVDaGFuZ2UobW9kZWxWYWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl91cGRhdGVNb2RlbChtb2RlbFZhbHVlKTtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgnc3dpdGNoOiBvblZhbHVlQ2hhbmdlJyk7XG4gICAgfVxuXG4gICAgLyoqIHdyaXRlIHZhbHVlIGZvciBDb250cm9sVmFsdWVBY2Nlc3NvciAqL1xuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnN3aXRjaEN1cnJlbnRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIHVwZGF0ZSBtb2RlbFxuICAgICAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZU1vZGVsKG1vZGVsVmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZW1pdENoYW5nZUV2ZW50KG1vZGVsVmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogTWV0aG9kIHRvIGVtaXQgY2hhbmdlIGV2ZW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBfZW1pdENoYW5nZUV2ZW50KG1vZGVsVmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgU3dpdGNoQ2hhbmdlRXZlbnQoKTtcbiAgICAgICAgZXZlbnQuc291cmNlID0gdGhpcztcbiAgICAgICAgZXZlbnQucGF5bG9hZCA9IG1vZGVsVmFsdWU7XG5cbiAgICAgICAgLy8gc2V0dGluZyB2YWx1ZSwgaXQgd2lsbCBjYWxsIHNldFZhbHVlKClcbiAgICAgICAgdGhpcy52YWx1ZSA9IG1vZGVsVmFsdWU7XG4gICAgICAgIHRoaXMuc3dpdGNoQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgIH1cbn1cbiIsIjxmZC1zd2l0Y2hcbiAgICBbaWRdPVwiaWRcIlxuICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW25hbWVdPVwibmFtZVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbc2VtYW50aWNdPVwic2VtYW50aWNcIlxuICAgIFthcmlhTGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgICBbYXJpYUxhYmVsbGVkQnldPVwiYXJpYUxhYmVsbGVkYnlcIlxuICAgIFtjaGVja2VkXT1cInN3aXRjaEN1cnJlbnRWYWx1ZVwiXG4gICAgKGNoZWNrZWRDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbj48L2ZkLXN3aXRjaD5cbiJdfQ==
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9mb3JtL3N3aXRjaC9zd2l0Y2gvc3dpdGNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9mb3JtL3N3aXRjaC9zd2l0Y2gvc3dpdGNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLElBQUksRUFDSixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUNKLFFBQVEsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQUUvQyxtQ0FBbUM7QUFDbkMsTUFBTSxPQUFPLGlCQUFpQjtDQUs3QjtBQVVELE1BQU0sT0FBTyxlQUFnQixTQUFRLFNBQVM7SUFnQjFDLCtCQUErQjtJQUMvQixJQUFJLEtBQUssQ0FBQyxXQUFnQjtRQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFDRCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBT0QsY0FBYztJQUNkLFlBQ0ksRUFBcUIsRUFDckIsVUFBc0IsRUFDRixTQUFvQixFQUNoQixnQkFBa0MsRUFDbEMsTUFBYyxFQUNpQixTQUE0QixFQUNwQixXQUFxQyxFQUMxRixhQUEyQjtRQUVyQyxLQUFLLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUZ6RSxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQXJDekMsNERBQTREO1FBRTVELG1CQUFjLEdBQWtCLElBQUksQ0FBQztRQUVyQyxxQ0FBcUM7UUFFckMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQjs7O1dBR0c7UUFFTSxpQkFBWSxHQUFvQyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQVUvRjs7V0FFRztRQUNILHVCQUFrQixHQUFHLEtBQUssQ0FBQztJQWMzQixDQUFDO0lBRUQsK0NBQStDO0lBQy9DLGFBQWEsQ0FBQyxVQUFtQjtRQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCwyQ0FBMkM7SUFDM0MsVUFBVSxDQUFDLEtBQVU7UUFDakIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUNoQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNLLFlBQVksQ0FBQyxVQUFtQjtRQUNwQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZ0JBQWdCLENBQUMsVUFBbUI7UUFDeEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3RDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLEtBQUssQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDO1FBRTNCLHlDQUF5QztRQUN6QyxJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDOzhHQTFFUSxlQUFlLHdQQW9Db0IsYUFBYSx5REFDYixxQkFBcUI7a0dBckN4RCxlQUFlLHdLQUpiLENBQUMsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsaURDakM5RixxV0FXQSwyQ0R3QmMsWUFBWSxrUUFBRSxlQUFlOzsyRkFFOUIsZUFBZTtrQkFSM0IsU0FBUzsrQkFDSSxZQUFZLG1CQUVMLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxXQUFXLGlCQUFpQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxjQUM5RSxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDOzswQkFtQ25DLFFBQVE7OzBCQUFJLElBQUk7OzBCQUNoQixRQUFROzswQkFBSSxRQUFROzswQkFDcEIsUUFBUTs7MEJBQUksUUFBUTs7MEJBQ3BCLFFBQVE7OzBCQUFJLFFBQVE7OzBCQUFJLElBQUk7OzBCQUFJLE1BQU07MkJBQUMsYUFBYTs7MEJBQ3BELFFBQVE7OzBCQUFJLFFBQVE7OzBCQUFJLElBQUk7OzBCQUFJLE1BQU07MkJBQUMscUJBQXFCO3VFQWxDakUsY0FBYztzQkFEYixLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFRRyxZQUFZO3NCQURwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdCxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFNlbGYsXG4gICAgU2tpcFNlbGZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBOZ0NvbnRyb2wsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZEX0ZPUk1fRklFTEQsIEZEX0ZPUk1fRklFTERfQ09OVFJPTCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zJztcbmltcG9ydCB7IFN3aXRjaE1vZHVsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zd2l0Y2gnO1xuaW1wb3J0IHsgRmRUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IEJhc2VJbnB1dCwgUGxhdGZvcm1Gb3JtRmllbGQsIFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IFN3aXRjaENvbmZpZyB9IGZyb20gJy4vc3dpdGNoLmNvbmZpZyc7XG5cbi8qKiBTd2l0Y2ggY2hhbmdlIGV2ZW50IGluc3RhbmNlICovXG5leHBvcnQgY2xhc3MgU3dpdGNoQ2hhbmdlRXZlbnQge1xuICAgIC8qKiBUaGUgc291cmNlIFN3aXRjaCBvZiB0aGUgZXZlbnQuICovXG4gICAgc291cmNlOiBTd2l0Y2hDb21wb25lbnQ7XG4gICAgLyoqIFRoZSBuZXcgYHBheWxvYWRgIHZhbHVlIG9mIHRoZSBzd2l0Y2guICovXG4gICAgcGF5bG9hZDogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtc3dpdGNoJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3dpdGNoLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEZEX0ZPUk1fRklFTERfQ09OVFJPTCwgdXNlRXhpc3Rpbmc6IFN3aXRjaENvbXBvbmVudCwgbXVsdGk6IHRydWUgfV0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbU3dpdGNoTW9kdWxlLCBGZFRyYW5zbGF0ZVBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIFN3aXRjaENvbXBvbmVudCBleHRlbmRzIEJhc2VJbnB1dCB7XG4gICAgLyoqIGFyaWEtbGFiZWxsZWRieSBhdHRyaWJ1dGUgb2YgdGhlIGlubmVyIGlucHV0IGVsZW1lbnQuICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWxsZWRieTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogV2hldGhlciB0aGUgc3dpdGNoIGlzIHNlbWFudGljICovXG4gICAgQElucHV0KClcbiAgICBzZW1hbnRpYyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgZmlyZWQgd2hlbiB0aGUgc3RhdGUgb2YgdGhlIHN3aXRjaCBjaGFuZ2VzLlxuICAgICAqICokZXZlbnQqIGNhbiBiZSB1c2VkIHRvIHJldHJpZXZlIHRoZSBuZXcgc3RhdGUgb2YgdGhlIHN3aXRjaC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBzd2l0Y2hDaGFuZ2U6IEV2ZW50RW1pdHRlcjxTd2l0Y2hDaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFN3aXRjaENoYW5nZUV2ZW50PigpO1xuXG4gICAgLyoqIHZhbHVlIGZvciBzd2l0Y2ggY29udHJvbCAqL1xuICAgIHNldCB2YWx1ZShzZWxlY3RWYWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUoc2VsZWN0VmFsdWUpO1xuICAgIH1cbiAgICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIHRyYWNraW5nIHN3aXRjaCBjdXJyZW50IHZhbHVlXG4gICAgICovXG4gICAgc3dpdGNoQ3VycmVudFZhbHVlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIG5nRm9ybTogTmdGb3JtLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBASG9zdCgpIEBJbmplY3QoRkRfRk9STV9GSUVMRCkgZm9ybUZpZWxkOiBQbGF0Zm9ybUZvcm1GaWVsZCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgQEhvc3QoKSBASW5qZWN0KEZEX0ZPUk1fRklFTERfQ09OVFJPTCkgZm9ybUNvbnRyb2w6IFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbCxcbiAgICAgICAgcHJvdGVjdGVkIF9zd2l0Y2hDb25maWc6IFN3aXRjaENvbmZpZ1xuICAgICkge1xuICAgICAgICBzdXBlcihjZCwgZWxlbWVudFJlZiwgbmdDb250cm9sLCBjb250cm9sQ29udGFpbmVyLCBuZ0Zvcm0sIGZvcm1GaWVsZCwgZm9ybUNvbnRyb2wpO1xuICAgIH1cblxuICAgIC8qKiB1cGRhdGUgY29udHJvbGxlciBvbiBzd2l0Y2ggc3RhdGUgY2hhbmdlICovXG4gICAgb25WYWx1ZUNoYW5nZShtb2RlbFZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZU1vZGVsKG1vZGVsVmFsdWUpO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCdzd2l0Y2g6IG9uVmFsdWVDaGFuZ2UnKTtcbiAgICB9XG5cbiAgICAvKiogd3JpdGUgdmFsdWUgZm9yIENvbnRyb2xWYWx1ZUFjY2Vzc29yICovXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3dpdGNoQ3VycmVudFZhbHVlID0gdmFsdWU7XG4gICAgICAgIHN1cGVyLndyaXRlVmFsdWUodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogdXBkYXRlIG1vZGVsXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlTW9kZWwobW9kZWxWYWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9lbWl0Q2hhbmdlRXZlbnQobW9kZWxWYWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBNZXRob2QgdG8gZW1pdCBjaGFuZ2UgZXZlbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIF9lbWl0Q2hhbmdlRXZlbnQobW9kZWxWYWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCBldmVudCA9IG5ldyBTd2l0Y2hDaGFuZ2VFdmVudCgpO1xuICAgICAgICBldmVudC5zb3VyY2UgPSB0aGlzO1xuICAgICAgICBldmVudC5wYXlsb2FkID0gbW9kZWxWYWx1ZTtcblxuICAgICAgICAvLyBzZXR0aW5nIHZhbHVlLCBpdCB3aWxsIGNhbGwgc2V0VmFsdWUoKVxuICAgICAgICB0aGlzLnZhbHVlID0gbW9kZWxWYWx1ZTtcbiAgICAgICAgdGhpcy5zd2l0Y2hDaGFuZ2UuZW1pdChldmVudCk7XG4gICAgfVxufVxuIiwiPGZkLXN3aXRjaFxuICAgIFtpZF09XCJpZFwiXG4gICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICBbbmFtZV09XCJuYW1lXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtzZW1hbnRpY109XCJzZW1hbnRpY1wiXG4gICAgW2FyaWFMYWJlbF09XCJhcmlhTGFiZWwgfHwgKCdwbGF0Zm9ybVN3aXRjaC5hcmlhTGFiZWwnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICBbYXJpYUxhYmVsbGVkQnldPVwiYXJpYUxhYmVsbGVkYnlcIlxuICAgIFtjaGVja2VkXT1cInN3aXRjaEN1cnJlbnRWYWx1ZVwiXG4gICAgKGNoZWNrZWRDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbj48L2ZkLXN3aXRjaD5cbiJdfQ==