@pepperi-addons/ngx-lib 0.4.0-angular14.35 → 0.4.0-angular14.38

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 (69) hide show
  1. package/chip/chip.component.d.ts +18 -0
  2. package/chip/chip.module.d.ts +19 -0
  3. package/chip/index.d.ts +5 -0
  4. package/chip/public-api.d.ts +2 -0
  5. package/color/color-picker.component.d.ts +1 -1
  6. package/core/common/services/addon.service.d.ts +1 -1
  7. package/core/common/services/utilities.service.d.ts +3 -3
  8. package/esm2020/address/address.component.mjs +1 -1
  9. package/esm2020/chip/chip.component.mjs +36 -0
  10. package/esm2020/chip/chip.module.mjs +60 -0
  11. package/esm2020/chip/pepperi-addons-ngx-lib-chip.mjs +5 -0
  12. package/esm2020/chip/public-api.mjs +6 -0
  13. package/esm2020/color/color-picker.component.mjs +4 -4
  14. package/esm2020/core/common/services/addon.service.mjs +7 -5
  15. package/esm2020/core/common/services/utilities.service.mjs +10 -10
  16. package/esm2020/form/field-generator.component.mjs +1 -1
  17. package/esm2020/form/internal-field-generator.component.mjs +1 -1
  18. package/esm2020/group-buttons/group-buttons.component.mjs +4 -3
  19. package/esm2020/icon/icon-generated-all.model.mjs +3 -1
  20. package/esm2020/icon/icon-generated.model.mjs +9 -1
  21. package/esm2020/list/list-pager.component.mjs +1 -1
  22. package/esm2020/smart-filters/date-filter/date-filter.component.mjs +1 -1
  23. package/esm2020/smart-filters/number-filter/number-filter.component.mjs +1 -1
  24. package/esm2020/smart-filters/text-filter/text-filter.component.mjs +1 -1
  25. package/esm2020/textbox/textbox.component.mjs +11 -5
  26. package/fesm2015/pepperi-addons-ngx-lib-address.mjs +1 -1
  27. package/fesm2015/pepperi-addons-ngx-lib-address.mjs.map +1 -1
  28. package/fesm2015/pepperi-addons-ngx-lib-chip.mjs +104 -0
  29. package/fesm2015/pepperi-addons-ngx-lib-chip.mjs.map +1 -0
  30. package/fesm2015/pepperi-addons-ngx-lib-color.mjs +3 -3
  31. package/fesm2015/pepperi-addons-ngx-lib-color.mjs.map +1 -1
  32. package/fesm2015/pepperi-addons-ngx-lib-form.mjs +2 -2
  33. package/fesm2015/pepperi-addons-ngx-lib-form.mjs.map +1 -1
  34. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.mjs +3 -2
  35. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.mjs.map +1 -1
  36. package/fesm2015/pepperi-addons-ngx-lib-icon.mjs +11 -1
  37. package/fesm2015/pepperi-addons-ngx-lib-icon.mjs.map +1 -1
  38. package/fesm2015/pepperi-addons-ngx-lib-list.mjs +1 -1
  39. package/fesm2015/pepperi-addons-ngx-lib-list.mjs.map +1 -1
  40. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.mjs +3 -3
  41. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.mjs.map +1 -1
  42. package/fesm2015/pepperi-addons-ngx-lib-textbox.mjs +10 -4
  43. package/fesm2015/pepperi-addons-ngx-lib-textbox.mjs.map +1 -1
  44. package/fesm2015/pepperi-addons-ngx-lib.mjs +16 -12
  45. package/fesm2015/pepperi-addons-ngx-lib.mjs.map +1 -1
  46. package/fesm2020/pepperi-addons-ngx-lib-address.mjs +1 -1
  47. package/fesm2020/pepperi-addons-ngx-lib-address.mjs.map +1 -1
  48. package/fesm2020/pepperi-addons-ngx-lib-chip.mjs +104 -0
  49. package/fesm2020/pepperi-addons-ngx-lib-chip.mjs.map +1 -0
  50. package/fesm2020/pepperi-addons-ngx-lib-color.mjs +3 -3
  51. package/fesm2020/pepperi-addons-ngx-lib-color.mjs.map +1 -1
  52. package/fesm2020/pepperi-addons-ngx-lib-form.mjs +2 -2
  53. package/fesm2020/pepperi-addons-ngx-lib-form.mjs.map +1 -1
  54. package/fesm2020/pepperi-addons-ngx-lib-group-buttons.mjs +3 -2
  55. package/fesm2020/pepperi-addons-ngx-lib-group-buttons.mjs.map +1 -1
  56. package/fesm2020/pepperi-addons-ngx-lib-icon.mjs +11 -1
  57. package/fesm2020/pepperi-addons-ngx-lib-icon.mjs.map +1 -1
  58. package/fesm2020/pepperi-addons-ngx-lib-list.mjs +1 -1
  59. package/fesm2020/pepperi-addons-ngx-lib-list.mjs.map +1 -1
  60. package/fesm2020/pepperi-addons-ngx-lib-smart-filters.mjs +3 -3
  61. package/fesm2020/pepperi-addons-ngx-lib-smart-filters.mjs.map +1 -1
  62. package/fesm2020/pepperi-addons-ngx-lib-textbox.mjs +10 -4
  63. package/fesm2020/pepperi-addons-ngx-lib-textbox.mjs.map +1 -1
  64. package/fesm2020/pepperi-addons-ngx-lib.mjs +14 -12
  65. package/fesm2020/pepperi-addons-ngx-lib.mjs.map +1 -1
  66. package/icon/icon-generated-all.model.d.ts +2 -0
  67. package/icon/icon-generated.model.d.ts +9 -1
  68. package/package.json +9 -1
  69. package/textbox/textbox.component.d.ts +3 -1
@@ -0,0 +1,18 @@
1
+ import { OnInit, OnDestroy } from '@angular/core';
2
+ import { MatChipInputEvent } from '@angular/material/chips';
3
+ import * as i0 from "@angular/core";
4
+ export interface Fruit {
5
+ name: string;
6
+ }
7
+ export declare class PepChipComponent implements OnInit, OnDestroy {
8
+ addOnBlur: boolean;
9
+ readonly separatorKeysCodes: readonly [13, 188];
10
+ fruits: Fruit[];
11
+ constructor();
12
+ ngOnInit(): void;
13
+ ngOnDestroy(): void;
14
+ add(event: MatChipInputEvent): void;
15
+ remove(fruit: Fruit): void;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<PepChipComponent, never>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<PepChipComponent, "pep-checkbox", never, {}, {}, never, never, false>;
18
+ }
@@ -0,0 +1,19 @@
1
+ import { PepIconRegistry } from '@pepperi-addons/ngx-lib/icon';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "./chip.component";
4
+ import * as i2 from "@angular/common";
5
+ import * as i3 from "@angular/forms";
6
+ import * as i4 from "@angular/material/core";
7
+ import * as i5 from "@angular/material/form-field";
8
+ import * as i6 from "@angular/material/chips";
9
+ import * as i7 from "@angular/material/icon";
10
+ import * as i8 from "@pepperi-addons/ngx-lib";
11
+ import * as i9 from "@pepperi-addons/ngx-lib/icon";
12
+ import * as i10 from "@pepperi-addons/ngx-lib/field-title";
13
+ export declare class PepChipModule {
14
+ private pepIconRegistry;
15
+ constructor(pepIconRegistry: PepIconRegistry);
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<PepChipModule, never>;
17
+ static ɵmod: i0.ɵɵNgModuleDeclaration<PepChipModule, [typeof i1.PepChipComponent], [typeof i2.CommonModule, typeof i3.ReactiveFormsModule, typeof i4.MatCommonModule, typeof i5.MatFormFieldModule, typeof i6.MatChipsModule, typeof i7.MatIconModule, typeof i8.PepNgxLibModule, typeof i9.PepIconModule, typeof i10.PepFieldTitleModule], [typeof i1.PepChipComponent]>;
18
+ static ɵinj: i0.ɵɵInjectorDeclaration<PepChipModule>;
19
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@pepperi-addons/ngx-lib/chip" />
5
+ export * from './public-api';
@@ -0,0 +1,2 @@
1
+ export * from './chip.module';
2
+ export * from './chip.component';
@@ -48,7 +48,7 @@ export declare class PepColorPickerComponent implements OnInit {
48
48
  onHueChange(value: any): void;
49
49
  onSaturationChange(value: any): void;
50
50
  onLightnessChange(value: any): void;
51
- onColorValueChange(event: any): void;
51
+ onColorValueChange(color: any): void;
52
52
  onSave(event: any): void;
53
53
  closeDialog(event: any): void;
54
54
  static ɵfac: i0.ɵɵFactoryDeclaration<PepColorPickerComponent, never>;
@@ -33,6 +33,6 @@ export declare class PepAddonService {
33
33
  setDefaultTranslateLang(translate: TranslateService, urlLangParam?: string): void;
34
34
  getPagesAddonUUID(): string;
35
35
  static createMultiTranslateLoader(addonUUID: string, addonService: PepAddonService, libsName?: string[]): import("ngx-translate-multi-http-loader").MultiTranslateHttpLoader;
36
- static ɵfac: i0.ɵɵFactoryDeclaration<PepAddonService, never>;
36
+ static ɵfac: i0.ɵɵFactoryDeclaration<PepAddonService, [null, null, null, null, null, { optional: true; }]>;
37
37
  static ɵprov: i0.ɵɵInjectableDeclaration<PepAddonService>;
38
38
  }
@@ -14,9 +14,9 @@ export declare class PepUtilitiesService {
14
14
  isValueHtml(value: string): boolean;
15
15
  isJsonString(str: string): boolean;
16
16
  getSvgElementFromString(document: any, svgContent: string): SVGElement;
17
- formatPercent(value: any): string;
18
- formatCurrency(value: any, currencySign?: string): string;
19
- formatDecimal(value: any): string;
17
+ formatPercent(value: any, minFractionDigits?: number, maxFractionDigits?: number): string;
18
+ formatCurrency(value: any, currencySign?: string, minFractionDigits?: number, maxFractionDigits?: number): string;
19
+ formatDecimal(value: any, minFractionDigits?: number, maxFractionDigits?: number): string;
20
20
  formatNumber(value: any): string;
21
21
  /**
22
22
  * Convert a number in milliseconds to a standard duration string.
@@ -75,7 +75,7 @@ export class PepAddressComponent {
75
75
  }
76
76
  }
77
77
  PepAddressComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepAddressComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
78
- PepAddressComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepAddressComponent, selector: "pep-address", inputs: { key: "key", formattedValue: "formattedValue", label: "label", mandatory: "mandatory", disabled: "disabled", readonly: "readonly", xAlignment: "xAlignment", rowSpan: "rowSpan", groupFields: "groupFields", form: "form", layoutType: "layoutType", visible: "visible" }, outputs: { addressValueChange: "addressValueChange" }, usesOnChanges: true, ngImport: i0, template: "<ng-container [formGroup]=\"form\">\n <ng-container *ngIf=\"layoutType === 'form'\">\n <pep-field-title [label]=\"label\" [mandatory]=\"mandatory\" [disabled]=\"disabled\" class=\"header\">\n </pep-field-title>\n <div [formGroupName]=\"key\" [id]=\"key\" class=\"pep-address-container\"\n dir=\"{{ xAlignment === 'right' ? 'rtl' : 'ltr' }}\">\n <div [ngSwitch]=\"groupField.controlType\" *ngFor=\"let groupField of groupFields; let i = index\"\n class=\"pep-address-field columns-{{ groupField.colSpan }}\">\n <pep-textbox *ngSwitchCase=\"'textbox'\" [layoutType]=\"layoutType\" title=\"{{ groupField.formattedValue }}\"\n [form]=\"form\" [key]=\"groupField.key\" [value]=\"groupField.value\"\n [formattedValue]=\"groupField.formattedValue\" [label]=\"groupField.label\"\n [placeholder]=\"groupField.placeholder\" [type]=\"groupField.type\" [mandatory]=\"groupField.mandatory\"\n [disabled]=\"groupField.disabled\" [readonly]=\"groupField.readonly\"\n [xAlignment]=\"groupField.xAlignment\" [rowSpan]=\"groupField.rowSpan\" [parentFieldKey]=\"key\"\n (valueChange)=\"onValueChange($event, groupField.key)\">\n </pep-textbox>\n\n <pep-select *ngSwitchCase=\"'select'\" [layoutType]=\"layoutType\" title=\"{{ groupField.formattedValue }}\"\n [form]=\"form\" [key]=\"groupField.key\" [value]=\"groupField.value\" [label]=\"groupField.label\"\n [type]=\"groupField.type\" [mandatory]=\"groupField.mandatory\" [disabled]=\"groupField.disabled\"\n [readonly]=\"groupField.readonly\" [xAlignment]=\"groupField.xAlignment\" [rowSpan]=\"groupField.rowSpan\"\n [options]=\"groupField.options\" [parentFieldKey]=\"key\"\n (valueChange)=\"onValueChange($event, groupField.key)\">\n </pep-select>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"layoutType === 'card'\">\n <div class=\"pep-card-input \" title=\"{{ label }}&nbsp;{{ formattedValue }}\"\n [ngClass]=\"['text-align-' + xAlignment]\">\n <span *ngIf=\"label != ''\" class=\"body-xs title\">{{ label }}&nbsp;</span>\n <ng-container *ngFor=\"let groupField of groupFields; let i = index\">\n <span *ngIf=\"groupField?.formattedValue != ''\" class=\"body-sm\">{{ groupField.formattedValue\n }},&nbsp;</span>\n </ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"layoutType === 'table'\">\n <div class=\"pep-card-input \" title=\"{{ formattedValue }}\" [ngClass]=\"['text-align-' + xAlignment]\">\n <ng-container *ngFor=\"let groupField of groupFields; let i = index\">\n <span *ngIf=\"groupField?.formattedValue != ''\" class=\"body-sm\">{{ groupField.formattedValue\n }},&nbsp;</span>\n </ng-container>\n </div>\n </ng-container>\n</ng-container>", styles: [".header{grid-column:1/span 3}.pep-address-container{padding:.875rem var(--pep-spacing-md, .75rem);border-radius:var(--pep-border-radius-md, .25rem);display:grid;grid-template-columns:repeat(3,1fr);grid-column-gap:var(--pep-spacing-md, .75rem);grid-row-gap:var(--pep-spacing-md, .75rem)}.pep-address-container .columns-2{grid-column:1/span 2}.pep-address-container .columns-3{grid-column:1/span 3}\n", ".pepperi-address-container,.pep-address-container{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.04)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i3.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "component", type: i4.PepTextboxComponent, selector: "pep-textbox", inputs: ["key", "value", "formattedValue", "accessory", "label", "placeholder", "type", "mandatory", "disabled", "readonly", "maxFieldCharacters", "hint", "textColor", "xAlignment", "rowSpan", "minValue", "maxValue", "visible", "form", "isActive", "showTitle", "renderTitle", "renderError", "renderSymbol", "layoutType", "parentFieldKey"], outputs: ["valueChange", "formValidationChange"] }, { kind: "component", type: i5.PepSelectComponent, selector: "pep-select", inputs: ["key", "value", "label", "type", "mandatory", "disabled", "readonly", "xAlignment", "rowSpan", "options", "visible", "emptyOption", "form", "layoutType", "parentFieldKey", "isActive", "showTitle", "renderTitle"], outputs: ["valueChange", "formValidationChange"] }, { kind: "component", type: i6.PepFieldTitleComponent, selector: "pep-field-title", inputs: ["label", "mandatory", "disabled", "maxFieldCharacters", "hint", "xAlignment", "showTitle", "inputLength"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
78
+ PepAddressComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepAddressComponent, selector: "pep-address", inputs: { key: "key", formattedValue: "formattedValue", label: "label", mandatory: "mandatory", disabled: "disabled", readonly: "readonly", xAlignment: "xAlignment", rowSpan: "rowSpan", groupFields: "groupFields", form: "form", layoutType: "layoutType", visible: "visible" }, outputs: { addressValueChange: "addressValueChange" }, usesOnChanges: true, ngImport: i0, template: "<ng-container [formGroup]=\"form\">\n <ng-container *ngIf=\"layoutType === 'form'\">\n <pep-field-title [label]=\"label\" [mandatory]=\"mandatory\" [disabled]=\"disabled\" class=\"header\">\n </pep-field-title>\n <div [formGroupName]=\"key\" [id]=\"key\" class=\"pep-address-container\"\n dir=\"{{ xAlignment === 'right' ? 'rtl' : 'ltr' }}\">\n <div [ngSwitch]=\"groupField.controlType\" *ngFor=\"let groupField of groupFields; let i = index\"\n class=\"pep-address-field columns-{{ groupField.colSpan }}\">\n <pep-textbox *ngSwitchCase=\"'textbox'\" [layoutType]=\"layoutType\" title=\"{{ groupField.formattedValue }}\"\n [form]=\"form\" [key]=\"groupField.key\" [value]=\"groupField.value\"\n [formattedValue]=\"groupField.formattedValue\" [label]=\"groupField.label\"\n [placeholder]=\"groupField.placeholder\" [type]=\"groupField.type\" [mandatory]=\"groupField.mandatory\"\n [disabled]=\"groupField.disabled\" [readonly]=\"groupField.readonly\"\n [xAlignment]=\"groupField.xAlignment\" [rowSpan]=\"groupField.rowSpan\" [parentFieldKey]=\"key\"\n (valueChange)=\"onValueChange($event, groupField.key)\">\n </pep-textbox>\n\n <pep-select *ngSwitchCase=\"'select'\" [layoutType]=\"layoutType\" title=\"{{ groupField.formattedValue }}\"\n [form]=\"form\" [key]=\"groupField.key\" [value]=\"groupField.value\" [label]=\"groupField.label\"\n [type]=\"groupField.type\" [mandatory]=\"groupField.mandatory\" [disabled]=\"groupField.disabled\"\n [readonly]=\"groupField.readonly\" [xAlignment]=\"groupField.xAlignment\" [rowSpan]=\"groupField.rowSpan\"\n [options]=\"groupField.options\" [parentFieldKey]=\"key\"\n (valueChange)=\"onValueChange($event, groupField.key)\">\n </pep-select>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"layoutType === 'card'\">\n <div class=\"pep-card-input \" title=\"{{ label }}&nbsp;{{ formattedValue }}\"\n [ngClass]=\"['text-align-' + xAlignment]\">\n <span *ngIf=\"label != ''\" class=\"body-xs title\">{{ label }}&nbsp;</span>\n <ng-container *ngFor=\"let groupField of groupFields; let i = index\">\n <span *ngIf=\"groupField?.formattedValue != ''\" class=\"body-sm\">{{ groupField.formattedValue\n }},&nbsp;</span>\n </ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"layoutType === 'table'\">\n <div class=\"pep-card-input \" title=\"{{ formattedValue }}\" [ngClass]=\"['text-align-' + xAlignment]\">\n <ng-container *ngFor=\"let groupField of groupFields; let i = index\">\n <span *ngIf=\"groupField?.formattedValue != ''\" class=\"body-sm\">{{ groupField.formattedValue\n }},&nbsp;</span>\n </ng-container>\n </div>\n </ng-container>\n</ng-container>", styles: [".header{grid-column:1/span 3}.pep-address-container{padding:.875rem var(--pep-spacing-md, .75rem);border-radius:var(--pep-border-radius-md, .25rem);display:grid;grid-template-columns:repeat(3,1fr);grid-column-gap:var(--pep-spacing-md, .75rem);grid-row-gap:var(--pep-spacing-md, .75rem)}.pep-address-container .columns-2{grid-column:1/span 2}.pep-address-container .columns-3{grid-column:1/span 3}\n", ".pepperi-address-container,.pep-address-container{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.04)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i3.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "component", type: i4.PepTextboxComponent, selector: "pep-textbox", inputs: ["key", "value", "formattedValue", "minFractionDigits", "maxFractionDigits", "accessory", "label", "placeholder", "type", "mandatory", "disabled", "readonly", "maxFieldCharacters", "hint", "textColor", "xAlignment", "rowSpan", "minValue", "maxValue", "visible", "form", "isActive", "showTitle", "renderTitle", "renderError", "renderSymbol", "layoutType", "parentFieldKey"], outputs: ["valueChange", "formValidationChange"] }, { kind: "component", type: i5.PepSelectComponent, selector: "pep-select", inputs: ["key", "value", "label", "type", "mandatory", "disabled", "readonly", "xAlignment", "rowSpan", "options", "visible", "emptyOption", "form", "layoutType", "parentFieldKey", "isActive", "showTitle", "renderTitle"], outputs: ["valueChange", "formValidationChange"] }, { kind: "component", type: i6.PepFieldTitleComponent, selector: "pep-field-title", inputs: ["label", "mandatory", "disabled", "maxFieldCharacters", "hint", "xAlignment", "showTitle", "inputLength"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
79
79
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepAddressComponent, decorators: [{
80
80
  type: Component,
81
81
  args: [{ selector: 'pep-address', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container [formGroup]=\"form\">\n <ng-container *ngIf=\"layoutType === 'form'\">\n <pep-field-title [label]=\"label\" [mandatory]=\"mandatory\" [disabled]=\"disabled\" class=\"header\">\n </pep-field-title>\n <div [formGroupName]=\"key\" [id]=\"key\" class=\"pep-address-container\"\n dir=\"{{ xAlignment === 'right' ? 'rtl' : 'ltr' }}\">\n <div [ngSwitch]=\"groupField.controlType\" *ngFor=\"let groupField of groupFields; let i = index\"\n class=\"pep-address-field columns-{{ groupField.colSpan }}\">\n <pep-textbox *ngSwitchCase=\"'textbox'\" [layoutType]=\"layoutType\" title=\"{{ groupField.formattedValue }}\"\n [form]=\"form\" [key]=\"groupField.key\" [value]=\"groupField.value\"\n [formattedValue]=\"groupField.formattedValue\" [label]=\"groupField.label\"\n [placeholder]=\"groupField.placeholder\" [type]=\"groupField.type\" [mandatory]=\"groupField.mandatory\"\n [disabled]=\"groupField.disabled\" [readonly]=\"groupField.readonly\"\n [xAlignment]=\"groupField.xAlignment\" [rowSpan]=\"groupField.rowSpan\" [parentFieldKey]=\"key\"\n (valueChange)=\"onValueChange($event, groupField.key)\">\n </pep-textbox>\n\n <pep-select *ngSwitchCase=\"'select'\" [layoutType]=\"layoutType\" title=\"{{ groupField.formattedValue }}\"\n [form]=\"form\" [key]=\"groupField.key\" [value]=\"groupField.value\" [label]=\"groupField.label\"\n [type]=\"groupField.type\" [mandatory]=\"groupField.mandatory\" [disabled]=\"groupField.disabled\"\n [readonly]=\"groupField.readonly\" [xAlignment]=\"groupField.xAlignment\" [rowSpan]=\"groupField.rowSpan\"\n [options]=\"groupField.options\" [parentFieldKey]=\"key\"\n (valueChange)=\"onValueChange($event, groupField.key)\">\n </pep-select>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"layoutType === 'card'\">\n <div class=\"pep-card-input \" title=\"{{ label }}&nbsp;{{ formattedValue }}\"\n [ngClass]=\"['text-align-' + xAlignment]\">\n <span *ngIf=\"label != ''\" class=\"body-xs title\">{{ label }}&nbsp;</span>\n <ng-container *ngFor=\"let groupField of groupFields; let i = index\">\n <span *ngIf=\"groupField?.formattedValue != ''\" class=\"body-sm\">{{ groupField.formattedValue\n }},&nbsp;</span>\n </ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"layoutType === 'table'\">\n <div class=\"pep-card-input \" title=\"{{ formattedValue }}\" [ngClass]=\"['text-align-' + xAlignment]\">\n <ng-container *ngFor=\"let groupField of groupFields; let i = index\">\n <span *ngIf=\"groupField?.formattedValue != ''\" class=\"body-sm\">{{ groupField.formattedValue\n }},&nbsp;</span>\n </ng-container>\n </div>\n </ng-container>\n</ng-container>", styles: [".header{grid-column:1/span 3}.pep-address-container{padding:.875rem var(--pep-spacing-md, .75rem);border-radius:var(--pep-border-radius-md, .25rem);display:grid;grid-template-columns:repeat(3,1fr);grid-column-gap:var(--pep-spacing-md, .75rem);grid-row-gap:var(--pep-spacing-md, .75rem)}.pep-address-container .columns-2{grid-column:1/span 2}.pep-address-container .columns-3{grid-column:1/span 3}\n", ".pepperi-address-container,.pep-address-container{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.04)}\n"] }]
@@ -0,0 +1,36 @@
1
+ import { Component, ChangeDetectionStrategy, } from '@angular/core';
2
+ import { COMMA, ENTER } from '@angular/cdk/keycodes';
3
+ import * as i0 from "@angular/core";
4
+ export class PepChipComponent {
5
+ constructor() {
6
+ this.addOnBlur = true;
7
+ this.separatorKeysCodes = [ENTER, COMMA];
8
+ this.fruits = [{ name: 'Lemon' }, { name: 'Lime' }, { name: 'Apple' }];
9
+ }
10
+ ngOnInit() {
11
+ }
12
+ ngOnDestroy() {
13
+ }
14
+ add(event) {
15
+ const value = (event.value || '').trim();
16
+ // Add our fruit
17
+ if (value) {
18
+ this.fruits.push({ name: value });
19
+ }
20
+ // Clear the input value
21
+ event.chipInput.clear();
22
+ }
23
+ remove(fruit) {
24
+ const index = this.fruits.indexOf(fruit);
25
+ if (index >= 0) {
26
+ this.fruits.splice(index, 1);
27
+ }
28
+ }
29
+ }
30
+ PepChipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepChipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
31
+ PepChipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepChipComponent, selector: "pep-checkbox", ngImport: i0, template: "<!-- <mat-form-field class=\"example-chip-list\" appearance=\"fill\">\n <mat-label>Favorite Fruits</mat-label>\n <mat-chip-list #chipList aria-label=\"Fruit selection\">\n <mat-chip *ngFor=\"let fruit of fruits\" (removed)=\"remove(fruit)\">\n {{fruit.name}}\n <button matChipRemove>\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip>\n <input placeholder=\"New fruit...\"\n [matChipInputFor]=\"chipList\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n [matChipInputAddOnBlur]=\"addOnBlur\"\n (matChipInputTokenEnd)=\"add($event)\">\n </mat-chip-list>\n </mat-form-field> -->", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepChipComponent, decorators: [{
33
+ type: Component,
34
+ args: [{ selector: 'pep-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- <mat-form-field class=\"example-chip-list\" appearance=\"fill\">\n <mat-label>Favorite Fruits</mat-label>\n <mat-chip-list #chipList aria-label=\"Fruit selection\">\n <mat-chip *ngFor=\"let fruit of fruits\" (removed)=\"remove(fruit)\">\n {{fruit.name}}\n <button matChipRemove>\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip>\n <input placeholder=\"New fruit...\"\n [matChipInputFor]=\"chipList\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n [matChipInputAddOnBlur]=\"addOnBlur\"\n (matChipInputTokenEnd)=\"add($event)\">\n </mat-chip-list>\n </mat-form-field> -->" }]
35
+ }], ctorParameters: function () { return []; } });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2NoaXAvY2hpcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2NoaXAvY2hpcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUtULHVCQUF1QixHQU0xQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQWFyRCxNQUFNLE9BQU8sZ0JBQWdCO0lBS3pCO1FBSkEsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNSLHVCQUFrQixHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBVSxDQUFDO1FBQ3RELFdBQU0sR0FBWSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFJM0UsQ0FBQztJQUVELFFBQVE7SUFFUixDQUFDO0lBRUQsV0FBVztJQUVYLENBQUM7SUFFRCxHQUFHLENBQUMsS0FBd0I7UUFDeEIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXpDLGdCQUFnQjtRQUNoQixJQUFJLEtBQUssRUFBRTtZQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDckM7UUFFRCx3QkFBd0I7UUFDeEIsS0FBSyxDQUFDLFNBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQVk7UUFDZixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV6QyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7WUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDaEM7SUFDTCxDQUFDOzs2R0FuQ1EsZ0JBQWdCO2lHQUFoQixnQkFBZ0Isb0RDMUI3Qix5ckJBZXVCOzJGRFdWLGdCQUFnQjtrQkFONUIsU0FBUzsrQkFDSSxjQUFjLG1CQUdQLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgUmVuZGVyZXIyLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgT3B0aW9uYWwsXG4gICAgT25DaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENPTU1BLCBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBNYXRDaGlwSW5wdXRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcblxuZXhwb3J0IGludGVyZmFjZSBGcnVpdCB7XG4gICAgbmFtZTogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BlcC1jaGVja2JveCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NoaXAuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NoaXAuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUGVwQ2hpcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBhZGRPbkJsdXIgPSB0cnVlO1xuICAgIHJlYWRvbmx5IHNlcGFyYXRvcktleXNDb2RlcyA9IFtFTlRFUiwgQ09NTUFdIGFzIGNvbnN0O1xuICAgIGZydWl0czogRnJ1aXRbXSA9IFt7IG5hbWU6ICdMZW1vbicgfSwgeyBuYW1lOiAnTGltZScgfSwgeyBuYW1lOiAnQXBwbGUnIH1dO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG5cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcblxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuXG4gICAgfVxuXG4gICAgYWRkKGV2ZW50OiBNYXRDaGlwSW5wdXRFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IChldmVudC52YWx1ZSB8fCAnJykudHJpbSgpO1xuXG4gICAgICAgIC8vIEFkZCBvdXIgZnJ1aXRcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmZydWl0cy5wdXNoKHsgbmFtZTogdmFsdWUgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDbGVhciB0aGUgaW5wdXQgdmFsdWVcbiAgICAgICAgZXZlbnQuY2hpcElucHV0IS5jbGVhcigpO1xuICAgIH1cblxuICAgIHJlbW92ZShmcnVpdDogRnJ1aXQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmZydWl0cy5pbmRleE9mKGZydWl0KTtcblxuICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgdGhpcy5mcnVpdHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgIH0gXG59IiwiPCEtLSA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJleGFtcGxlLWNoaXAtbGlzdFwiIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgPG1hdC1sYWJlbD5GYXZvcml0ZSBGcnVpdHM8L21hdC1sYWJlbD5cbiAgICA8bWF0LWNoaXAtbGlzdCAjY2hpcExpc3QgYXJpYS1sYWJlbD1cIkZydWl0IHNlbGVjdGlvblwiPlxuICAgICAgPG1hdC1jaGlwICpuZ0Zvcj1cImxldCBmcnVpdCBvZiBmcnVpdHNcIiAocmVtb3ZlZCk9XCJyZW1vdmUoZnJ1aXQpXCI+XG4gICAgICAgIHt7ZnJ1aXQubmFtZX19XG4gICAgICAgIDxidXR0b24gbWF0Q2hpcFJlbW92ZT5cbiAgICAgICAgICA8bWF0LWljb24+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L21hdC1jaGlwPlxuICAgICAgPGlucHV0IHBsYWNlaG9sZGVyPVwiTmV3IGZydWl0Li4uXCJcbiAgICAgICAgICAgICBbbWF0Q2hpcElucHV0Rm9yXT1cImNoaXBMaXN0XCJcbiAgICAgICAgICAgICBbbWF0Q2hpcElucHV0U2VwYXJhdG9yS2V5Q29kZXNdPVwic2VwYXJhdG9yS2V5c0NvZGVzXCJcbiAgICAgICAgICAgICBbbWF0Q2hpcElucHV0QWRkT25CbHVyXT1cImFkZE9uQmx1clwiXG4gICAgICAgICAgICAgKG1hdENoaXBJbnB1dFRva2VuRW5kKT1cImFkZCgkZXZlbnQpXCI+XG4gICAgPC9tYXQtY2hpcC1saXN0PlxuICA8L21hdC1mb3JtLWZpZWxkPiAtLT4iXX0=
@@ -0,0 +1,60 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { ReactiveFormsModule } from '@angular/forms';
4
+ import { MatCommonModule } from '@angular/material/core';
5
+ import { MatFormFieldModule } from '@angular/material/form-field';
6
+ import { MatChipsModule } from '@angular/material/chips';
7
+ import { MatIconModule } from '@angular/material/icon';
8
+ import { PepNgxLibModule } from '@pepperi-addons/ngx-lib';
9
+ import { PepIconModule, pepIconSystemBolt, } from '@pepperi-addons/ngx-lib/icon';
10
+ import { PepFieldTitleModule } from '@pepperi-addons/ngx-lib/field-title';
11
+ import { PepChipComponent } from './chip.component';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@pepperi-addons/ngx-lib/icon";
14
+ export class PepChipModule {
15
+ constructor(pepIconRegistry) {
16
+ this.pepIconRegistry = pepIconRegistry;
17
+ this.pepIconRegistry.registerIcons([pepIconSystemBolt]);
18
+ }
19
+ }
20
+ PepChipModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepChipModule, deps: [{ token: i1.PepIconRegistry }], target: i0.ɵɵFactoryTarget.NgModule });
21
+ PepChipModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: PepChipModule, declarations: [PepChipComponent], imports: [CommonModule,
22
+ ReactiveFormsModule,
23
+ // Material modules
24
+ MatCommonModule,
25
+ MatFormFieldModule,
26
+ MatChipsModule,
27
+ MatIconModule,
28
+ PepNgxLibModule,
29
+ PepIconModule,
30
+ PepFieldTitleModule], exports: [PepChipComponent] });
31
+ PepChipModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepChipModule, imports: [CommonModule,
32
+ ReactiveFormsModule,
33
+ // Material modules
34
+ MatCommonModule,
35
+ MatFormFieldModule,
36
+ MatChipsModule,
37
+ MatIconModule,
38
+ PepNgxLibModule,
39
+ PepIconModule,
40
+ PepFieldTitleModule] });
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepChipModule, decorators: [{
42
+ type: NgModule,
43
+ args: [{
44
+ declarations: [PepChipComponent],
45
+ imports: [
46
+ CommonModule,
47
+ ReactiveFormsModule,
48
+ // Material modules
49
+ MatCommonModule,
50
+ MatFormFieldModule,
51
+ MatChipsModule,
52
+ MatIconModule,
53
+ PepNgxLibModule,
54
+ PepIconModule,
55
+ PepFieldTitleModule,
56
+ ],
57
+ exports: [PepChipComponent]
58
+ }]
59
+ }], ctorParameters: function () { return [{ type: i1.PepIconRegistry }]; } });
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2NoaXAvY2hpcC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFDSCxhQUFhLEVBRWIsaUJBQWlCLEdBQ3BCLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQW1CcEQsTUFBTSxPQUFPLGFBQWE7SUFDdEIsWUFBb0IsZUFBZ0M7UUFBaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7OzBHQUhRLGFBQWE7MkdBQWIsYUFBYSxpQkFoQlAsZ0JBQWdCLGFBRTNCLFlBQVk7UUFDWixtQkFBbUI7UUFDbkIsbUJBQW1CO1FBQ25CLGVBQWU7UUFDZixrQkFBa0I7UUFDbEIsY0FBYztRQUNkLGFBQWE7UUFFYixlQUFlO1FBQ2YsYUFBYTtRQUNiLG1CQUFtQixhQUViLGdCQUFnQjsyR0FFakIsYUFBYSxZQWRsQixZQUFZO1FBQ1osbUJBQW1CO1FBQ25CLG1CQUFtQjtRQUNuQixlQUFlO1FBQ2Ysa0JBQWtCO1FBQ2xCLGNBQWM7UUFDZCxhQUFhO1FBRWIsZUFBZTtRQUNmLGFBQWE7UUFDYixtQkFBbUI7MkZBSWQsYUFBYTtrQkFqQnpCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQ2hDLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxhQUFhO3dCQUViLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixtQkFBbUI7cUJBQ3RCO29CQUNELE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO2lCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgTWF0Q29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdENoaXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuXG5pbXBvcnQgeyBQZXBOZ3hMaWJNb2R1bGUgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYic7XG5pbXBvcnQge1xuICAgIFBlcEljb25Nb2R1bGUsXG4gICAgUGVwSWNvblJlZ2lzdHJ5LFxuICAgIHBlcEljb25TeXN0ZW1Cb2x0LFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9pY29uJztcbmltcG9ydCB7IFBlcEZpZWxkVGl0bGVNb2R1bGUgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9maWVsZC10aXRsZSc7XG5cbmltcG9ydCB7IFBlcENoaXBDb21wb25lbnQgfSBmcm9tICcuL2NoaXAuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtQZXBDaGlwQ29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgLy8gTWF0ZXJpYWwgbW9kdWxlc1xuICAgICAgICBNYXRDb21tb25Nb2R1bGUsXG4gICAgICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgTWF0Q2hpcHNNb2R1bGUsXG4gICAgICAgIE1hdEljb25Nb2R1bGUsXG5cbiAgICAgICAgUGVwTmd4TGliTW9kdWxlLFxuICAgICAgICBQZXBJY29uTW9kdWxlLFxuICAgICAgICBQZXBGaWVsZFRpdGxlTW9kdWxlLFxuICAgIF0sXG4gICAgZXhwb3J0czogW1BlcENoaXBDb21wb25lbnRdICAgIFxufSlcbmV4cG9ydCBjbGFzcyBQZXBDaGlwTW9kdWxlIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBlcEljb25SZWdpc3RyeTogUGVwSWNvblJlZ2lzdHJ5KSB7XG4gICAgICAgIHRoaXMucGVwSWNvblJlZ2lzdHJ5LnJlZ2lzdGVySWNvbnMoW3BlcEljb25TeXN0ZW1Cb2x0XSk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVwcGVyaS1hZGRvbnMtbmd4LWxpYi1jaGlwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9jaGlwL3BlcHBlcmktYWRkb25zLW5neC1saWItY2hpcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -0,0 +1,6 @@
1
+ /*
2
+ * Public API Surface of ngx-lib/chip
3
+ */
4
+ export * from './chip.module';
5
+ export * from './chip.component';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvY2hpcC9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygbmd4LWxpYi9jaGlwXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vY2hpcC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jaGlwLmNvbXBvbmVudCc7XG4iXX0=
@@ -197,8 +197,8 @@ export class PepColorPickerComponent {
197
197
  this.currentLightnessMin,
198
198
  });
199
199
  }
200
- onColorValueChange(event) {
201
- this.convertValueStringToColor(event.value);
200
+ onColorValueChange(color) {
201
+ this.convertValueStringToColor(color);
202
202
  }
203
203
  onSave(event) {
204
204
  const color = this.checkAAComplient
@@ -213,7 +213,7 @@ export class PepColorPickerComponent {
213
213
  }
214
214
  PepColorPickerComponent.CURRENT_HUE = '--pep-color-picker-current-hue';
215
215
  PepColorPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepColorPickerComponent, deps: [{ token: i1.PepColorService }, { token: i2.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
216
- PepColorPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepColorPickerComponent, selector: "ng-component", ngImport: i0, template: "<div class=\"pep-color-picker-container\">\n <pep-dialog [title]=\"'COLOR.DIALOG_TITLE' | translate\" (close)=\"closeDialog($event)\">\n <ng-container pep-dialog-content>\n <div class=\"color-chooser-content\">\n <div class=\"current-color\" [ngStyle]=\"{ 'background': data?.value ? data.value : 'transparent' }\"></div>\n\n <pep-slider class=\"slider-box\" [label]=\"'COLOR.CHANGE_HUE' | translate\" [minValue]=\"currentHueMin\"\n [maxValue]=\"currentHueMax\" [value]=\"currentHue\" [background]=\"currentHueBackground\"\n (valueChange)=\"onHueChange($event)\">\n </pep-slider>\n <pep-slider class=\"slider-box\" [label]=\"'COLOR.CHANGE_SATURATION' | translate\"\n [minValue]=\"currentSaturationMin\" [maxValue]=\"currentSaturationMax\" [value]=\"currentSaturation\"\n [background]=\"currentSaturationBackground\" (valueChange)=\"onSaturationChange($event)\">\n </pep-slider>\n <pep-slider class=\"slider-box\" [label]=\"'COLOR.CHANGE_LIGHTNESS' | translate\"\n [minValue]=\"currentLightnessMin\" [maxValue]=\"currentLightnessMax\"\n [value]=\"currentLightnessMax - currentLightness + currentLightnessMin\"\n [background]=\"currentLightnessBackground\" (valueChange)=\"onLightnessChange($event)\">\n </pep-slider>\n </div>\n <div class=\"color-value-content\">\n <div class=\"color-value\" [ngClass]=\"{ 'with-complient': checkAAComplient }\">\n <pep-textbox [key]=\"'colorValue'\" [label]=\"'COLOR.ADD_VALUE_HERE' | translate \"\n [formattedValue]=\"data?.value\" [value]=\"data?.value\" (valueChange)=\"onColorValueChange($event)\">\n </pep-textbox>\n </div>\n <div *ngIf=\"checkAAComplient\" class=\"color-complient-container\">\n <pep-field-title [label]=\"'COLOR.AA_COMPLIENT' | translate \">\n </pep-field-title>\n <div class=\"color-complient\" [ngStyle]=\"{ 'background': complientColor }\">\n <mat-icon *ngIf=\"isUserChooseAAComplientColor\">\n <pep-icon name=\"system_ok\">\n </pep-icon>\n </mat-icon>\n </div>\n </div>\n </div>\n </ng-container>\n <ng-container pep-dialog-actions>\n <div class=\"color-actions pep-spacing-element-negative\">\n <mat-checkbox *ngIf=\"data.showAAComplient\" class=\"pep-spacing-element\" type=\"checkbox\"\n id=\"checkAAComplient\" (change)=\"checkAAComplient = !checkAAComplient\" [checked]=\"checkAAComplient\">\n <span class=\"body-xs ellipsis\">{{ 'COLOR.AA_COMPLIENT' | translate }}</span>\n </mat-checkbox>\n <div>\n <button mat-button [mat-dialog-close]=\"null\" class=\"pep-spacing-element pep-button md weak\">\n {{'ACTIONS.CANCEL' | translate}}\n </button>\n <button mat-button class=\"pep-spacing-element pep-button md strong\" (click)=\"onSave($event)\">\n {{'ACTIONS.OK' | translate}}\n </button>\n </div>\n </div>\n </ng-container>\n </pep-dialog>\n</div>", styles: [".mat-slider-track-background,.mat-slider-horizontal .mat-slider-track-fill{display:none}.pepperi-color-picker-container ::ng-deep .mat-dialog-content,.pep-color-picker-container ::ng-deep .mat-dialog-content{padding:var(--pep-spacing-sm, .5rem) var(--pep-spacing-sm, .5rem) 0}.pepperi-color-picker-container .color-chooser-content,.pep-color-picker-container .color-chooser-content{display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(3,1fr);grid-column-gap:var(--pep-spacing-xl, 1.5rem);grid-row-gap:var(--pep-spacing-sm, .5rem);margin-top:var(--pep-spacing-sm, .5rem)}.pepperi-color-picker-container .color-chooser-content .current-color,.pep-color-picker-container .color-chooser-content .current-color{grid-row:1/span 3;grid-column:6/span 4;border-radius:var(--pep-border-radius-md, .25rem);width:9.25rem;height:9.25rem}.pepperi-color-picker-container .color-chooser-content .slider-box,.pep-color-picker-container .color-chooser-content .slider-box{grid-column:1/span 5}.pepperi-color-picker-container .color-value-content,.pep-color-picker-container .color-value-content{display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(1,1fr);grid-column-gap:var(--pep-spacing-xl, 1.5rem);grid-row-gap:var(--pep-spacing-sm, .5rem);margin-top:1.5rem}.pepperi-color-picker-container .color-value-content .color-value,.pep-color-picker-container .color-value-content .color-value{grid-row:1/span 1;grid-column:1/span 9}.pepperi-color-picker-container .color-value-content .color-value.with-complient,.pep-color-picker-container .color-value-content .color-value.with-complient{grid-column:1/span 5}.pepperi-color-picker-container .color-value-content .color-complient-container,.pep-color-picker-container .color-value-content .color-complient-container{grid-column:6/span 4}.pepperi-color-picker-container .color-value-content .color-complient-container .color-complient,.pep-color-picker-container .color-value-content .color-complient-container .color-complient{display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem);height:var(--pep-form-field-height, 2.5rem);width:9.25rem}.pepperi-color-picker-container ::ng-deep .mat-dialog-actions,.pep-color-picker-container ::ng-deep .mat-dialog-actions{display:block}.pepperi-color-picker-container ::ng-deep .mat-dialog-actions .color-actions,.pep-color-picker-container ::ng-deep .mat-dialog-actions .color-actions{display:flex;justify-content:space-between;align-items:center}\n", ".pepperi-color-picker-container .color-value-content .color-complient-container .color-complient ::ng-deep .mat-icon .svg-icon,.pep-color-picker-container .color-value-content .color-complient-container .color-complient ::ng-deep .mat-icon .svg-icon{fill:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.PepDialogComponent, selector: "pep-dialog", inputs: ["title", "showClose", "showHeader", "showFooter"], outputs: ["close"] }, { kind: "component", type: i8.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }, { kind: "component", type: i9.PepSliderComponent, selector: "pep-slider", inputs: ["label", "disabled", "hint", "background", "step", "minValue", "maxValue", "value"], outputs: ["valueChange", "inputChange"] }, { kind: "component", type: i10.PepFieldTitleComponent, selector: "pep-field-title", inputs: ["label", "mandatory", "disabled", "maxFieldCharacters", "hint", "xAlignment", "showTitle", "inputLength"] }, { kind: "component", type: i11.PepTextboxComponent, selector: "pep-textbox", inputs: ["key", "value", "formattedValue", "accessory", "label", "placeholder", "type", "mandatory", "disabled", "readonly", "maxFieldCharacters", "hint", "textColor", "xAlignment", "rowSpan", "minValue", "maxValue", "visible", "form", "isActive", "showTitle", "renderTitle", "renderError", "renderSymbol", "layoutType", "parentFieldKey"], outputs: ["valueChange", "formValidationChange"] }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }] });
216
+ PepColorPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepColorPickerComponent, selector: "ng-component", ngImport: i0, template: "<div class=\"pep-color-picker-container\">\n <pep-dialog [title]=\"'COLOR.DIALOG_TITLE' | translate\" (close)=\"closeDialog($event)\">\n <ng-container pep-dialog-content>\n <div class=\"color-chooser-content\">\n <div class=\"current-color\" [ngStyle]=\"{ 'background': data?.value ? data.value : 'transparent' }\"></div>\n\n <pep-slider class=\"slider-box\" [label]=\"'COLOR.CHANGE_HUE' | translate\" [minValue]=\"currentHueMin\"\n [maxValue]=\"currentHueMax\" [value]=\"currentHue\" [background]=\"currentHueBackground\"\n (valueChange)=\"onHueChange($event)\">\n </pep-slider>\n <pep-slider class=\"slider-box\" [label]=\"'COLOR.CHANGE_SATURATION' | translate\"\n [minValue]=\"currentSaturationMin\" [maxValue]=\"currentSaturationMax\" [value]=\"currentSaturation\"\n [background]=\"currentSaturationBackground\" (valueChange)=\"onSaturationChange($event)\">\n </pep-slider>\n <pep-slider class=\"slider-box\" [label]=\"'COLOR.CHANGE_LIGHTNESS' | translate\"\n [minValue]=\"currentLightnessMin\" [maxValue]=\"currentLightnessMax\"\n [value]=\"currentLightnessMax - currentLightness + currentLightnessMin\"\n [background]=\"currentLightnessBackground\" (valueChange)=\"onLightnessChange($event)\">\n </pep-slider>\n </div>\n <div class=\"color-value-content\">\n <div class=\"color-value\" [ngClass]=\"{ 'with-complient': checkAAComplient }\">\n <pep-textbox [key]=\"'colorValue'\" [label]=\"'COLOR.ADD_VALUE_HERE' | translate \"\n [formattedValue]=\"data?.value\" [value]=\"data?.value\" (valueChange)=\"onColorValueChange($event)\">\n </pep-textbox>\n </div>\n <div *ngIf=\"checkAAComplient\" class=\"color-complient-container\">\n <pep-field-title [label]=\"'COLOR.AA_COMPLIENT' | translate \">\n </pep-field-title>\n <div class=\"color-complient\" [ngStyle]=\"{ 'background': complientColor }\">\n <mat-icon *ngIf=\"isUserChooseAAComplientColor\">\n <pep-icon name=\"system_ok\">\n </pep-icon>\n </mat-icon>\n </div>\n </div>\n </div>\n </ng-container>\n <ng-container pep-dialog-actions>\n <div class=\"color-actions pep-spacing-element-negative\">\n <mat-checkbox *ngIf=\"data.showAAComplient\" class=\"pep-spacing-element\" type=\"checkbox\"\n id=\"checkAAComplient\" (change)=\"checkAAComplient = !checkAAComplient\" [checked]=\"checkAAComplient\">\n <span class=\"body-xs ellipsis\">{{ 'COLOR.AA_COMPLIENT' | translate }}</span>\n </mat-checkbox>\n <div>\n <button mat-button [mat-dialog-close]=\"null\" class=\"pep-spacing-element pep-button md weak\">\n {{'ACTIONS.CANCEL' | translate}}\n </button>\n <button mat-button class=\"pep-spacing-element pep-button md strong\" (click)=\"onSave($event)\">\n {{'ACTIONS.OK' | translate}}\n </button>\n </div>\n </div>\n </ng-container>\n </pep-dialog>\n</div>", styles: [".mat-slider-track-background,.mat-slider-horizontal .mat-slider-track-fill{display:none}.pepperi-color-picker-container ::ng-deep .mat-dialog-content,.pep-color-picker-container ::ng-deep .mat-dialog-content{padding:var(--pep-spacing-sm, .5rem) var(--pep-spacing-sm, .5rem) 0}.pepperi-color-picker-container .color-chooser-content,.pep-color-picker-container .color-chooser-content{display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(3,1fr);grid-column-gap:var(--pep-spacing-xl, 1.5rem);grid-row-gap:var(--pep-spacing-sm, .5rem);margin-top:var(--pep-spacing-sm, .5rem)}.pepperi-color-picker-container .color-chooser-content .current-color,.pep-color-picker-container .color-chooser-content .current-color{grid-row:1/span 3;grid-column:6/span 4;border-radius:var(--pep-border-radius-md, .25rem);width:9.25rem;height:9.25rem}.pepperi-color-picker-container .color-chooser-content .slider-box,.pep-color-picker-container .color-chooser-content .slider-box{grid-column:1/span 5}.pepperi-color-picker-container .color-value-content,.pep-color-picker-container .color-value-content{display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(1,1fr);grid-column-gap:var(--pep-spacing-xl, 1.5rem);grid-row-gap:var(--pep-spacing-sm, .5rem);margin-top:1.5rem}.pepperi-color-picker-container .color-value-content .color-value,.pep-color-picker-container .color-value-content .color-value{grid-row:1/span 1;grid-column:1/span 9}.pepperi-color-picker-container .color-value-content .color-value.with-complient,.pep-color-picker-container .color-value-content .color-value.with-complient{grid-column:1/span 5}.pepperi-color-picker-container .color-value-content .color-complient-container,.pep-color-picker-container .color-value-content .color-complient-container{grid-column:6/span 4}.pepperi-color-picker-container .color-value-content .color-complient-container .color-complient,.pep-color-picker-container .color-value-content .color-complient-container .color-complient{display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem);height:var(--pep-form-field-height, 2.5rem);width:9.25rem}.pepperi-color-picker-container ::ng-deep .mat-dialog-actions,.pep-color-picker-container ::ng-deep .mat-dialog-actions{display:block}.pepperi-color-picker-container ::ng-deep .mat-dialog-actions .color-actions,.pep-color-picker-container ::ng-deep .mat-dialog-actions .color-actions{display:flex;justify-content:space-between;align-items:center}\n", ".pepperi-color-picker-container .color-value-content .color-complient-container .color-complient ::ng-deep .mat-icon .svg-icon,.pep-color-picker-container .color-value-content .color-complient-container .color-complient ::ng-deep .mat-icon .svg-icon{fill:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.PepDialogComponent, selector: "pep-dialog", inputs: ["title", "showClose", "showHeader", "showFooter"], outputs: ["close"] }, { kind: "component", type: i8.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }, { kind: "component", type: i9.PepSliderComponent, selector: "pep-slider", inputs: ["label", "disabled", "hint", "background", "step", "minValue", "maxValue", "value"], outputs: ["valueChange", "inputChange"] }, { kind: "component", type: i10.PepFieldTitleComponent, selector: "pep-field-title", inputs: ["label", "mandatory", "disabled", "maxFieldCharacters", "hint", "xAlignment", "showTitle", "inputLength"] }, { kind: "component", type: i11.PepTextboxComponent, selector: "pep-textbox", inputs: ["key", "value", "formattedValue", "minFractionDigits", "maxFractionDigits", "accessory", "label", "placeholder", "type", "mandatory", "disabled", "readonly", "maxFieldCharacters", "hint", "textColor", "xAlignment", "rowSpan", "minValue", "maxValue", "visible", "form", "isActive", "showTitle", "renderTitle", "renderError", "renderSymbol", "layoutType", "parentFieldKey"], outputs: ["valueChange", "formValidationChange"] }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }] });
217
217
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepColorPickerComponent, decorators: [{
218
218
  type: Component,
219
219
  args: [{ template: "<div class=\"pep-color-picker-container\">\n <pep-dialog [title]=\"'COLOR.DIALOG_TITLE' | translate\" (close)=\"closeDialog($event)\">\n <ng-container pep-dialog-content>\n <div class=\"color-chooser-content\">\n <div class=\"current-color\" [ngStyle]=\"{ 'background': data?.value ? data.value : 'transparent' }\"></div>\n\n <pep-slider class=\"slider-box\" [label]=\"'COLOR.CHANGE_HUE' | translate\" [minValue]=\"currentHueMin\"\n [maxValue]=\"currentHueMax\" [value]=\"currentHue\" [background]=\"currentHueBackground\"\n (valueChange)=\"onHueChange($event)\">\n </pep-slider>\n <pep-slider class=\"slider-box\" [label]=\"'COLOR.CHANGE_SATURATION' | translate\"\n [minValue]=\"currentSaturationMin\" [maxValue]=\"currentSaturationMax\" [value]=\"currentSaturation\"\n [background]=\"currentSaturationBackground\" (valueChange)=\"onSaturationChange($event)\">\n </pep-slider>\n <pep-slider class=\"slider-box\" [label]=\"'COLOR.CHANGE_LIGHTNESS' | translate\"\n [minValue]=\"currentLightnessMin\" [maxValue]=\"currentLightnessMax\"\n [value]=\"currentLightnessMax - currentLightness + currentLightnessMin\"\n [background]=\"currentLightnessBackground\" (valueChange)=\"onLightnessChange($event)\">\n </pep-slider>\n </div>\n <div class=\"color-value-content\">\n <div class=\"color-value\" [ngClass]=\"{ 'with-complient': checkAAComplient }\">\n <pep-textbox [key]=\"'colorValue'\" [label]=\"'COLOR.ADD_VALUE_HERE' | translate \"\n [formattedValue]=\"data?.value\" [value]=\"data?.value\" (valueChange)=\"onColorValueChange($event)\">\n </pep-textbox>\n </div>\n <div *ngIf=\"checkAAComplient\" class=\"color-complient-container\">\n <pep-field-title [label]=\"'COLOR.AA_COMPLIENT' | translate \">\n </pep-field-title>\n <div class=\"color-complient\" [ngStyle]=\"{ 'background': complientColor }\">\n <mat-icon *ngIf=\"isUserChooseAAComplientColor\">\n <pep-icon name=\"system_ok\">\n </pep-icon>\n </mat-icon>\n </div>\n </div>\n </div>\n </ng-container>\n <ng-container pep-dialog-actions>\n <div class=\"color-actions pep-spacing-element-negative\">\n <mat-checkbox *ngIf=\"data.showAAComplient\" class=\"pep-spacing-element\" type=\"checkbox\"\n id=\"checkAAComplient\" (change)=\"checkAAComplient = !checkAAComplient\" [checked]=\"checkAAComplient\">\n <span class=\"body-xs ellipsis\">{{ 'COLOR.AA_COMPLIENT' | translate }}</span>\n </mat-checkbox>\n <div>\n <button mat-button [mat-dialog-close]=\"null\" class=\"pep-spacing-element pep-button md weak\">\n {{'ACTIONS.CANCEL' | translate}}\n </button>\n <button mat-button class=\"pep-spacing-element pep-button md strong\" (click)=\"onSave($event)\">\n {{'ACTIONS.OK' | translate}}\n </button>\n </div>\n </div>\n </ng-container>\n </pep-dialog>\n</div>", styles: [".mat-slider-track-background,.mat-slider-horizontal .mat-slider-track-fill{display:none}.pepperi-color-picker-container ::ng-deep .mat-dialog-content,.pep-color-picker-container ::ng-deep .mat-dialog-content{padding:var(--pep-spacing-sm, .5rem) var(--pep-spacing-sm, .5rem) 0}.pepperi-color-picker-container .color-chooser-content,.pep-color-picker-container .color-chooser-content{display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(3,1fr);grid-column-gap:var(--pep-spacing-xl, 1.5rem);grid-row-gap:var(--pep-spacing-sm, .5rem);margin-top:var(--pep-spacing-sm, .5rem)}.pepperi-color-picker-container .color-chooser-content .current-color,.pep-color-picker-container .color-chooser-content .current-color{grid-row:1/span 3;grid-column:6/span 4;border-radius:var(--pep-border-radius-md, .25rem);width:9.25rem;height:9.25rem}.pepperi-color-picker-container .color-chooser-content .slider-box,.pep-color-picker-container .color-chooser-content .slider-box{grid-column:1/span 5}.pepperi-color-picker-container .color-value-content,.pep-color-picker-container .color-value-content{display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(1,1fr);grid-column-gap:var(--pep-spacing-xl, 1.5rem);grid-row-gap:var(--pep-spacing-sm, .5rem);margin-top:1.5rem}.pepperi-color-picker-container .color-value-content .color-value,.pep-color-picker-container .color-value-content .color-value{grid-row:1/span 1;grid-column:1/span 9}.pepperi-color-picker-container .color-value-content .color-value.with-complient,.pep-color-picker-container .color-value-content .color-value.with-complient{grid-column:1/span 5}.pepperi-color-picker-container .color-value-content .color-complient-container,.pep-color-picker-container .color-value-content .color-complient-container{grid-column:6/span 4}.pepperi-color-picker-container .color-value-content .color-complient-container .color-complient,.pep-color-picker-container .color-value-content .color-complient-container .color-complient{display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem);height:var(--pep-form-field-height, 2.5rem);width:9.25rem}.pepperi-color-picker-container ::ng-deep .mat-dialog-actions,.pep-color-picker-container ::ng-deep .mat-dialog-actions{display:block}.pepperi-color-picker-container ::ng-deep .mat-dialog-actions .color-actions,.pep-color-picker-container ::ng-deep .mat-dialog-actions .color-actions{display:flex;justify-content:space-between;align-items:center}\n", ".pepperi-color-picker-container .color-value-content .color-complient-container .color-complient ::ng-deep .mat-icon .svg-icon,.pep-color-picker-container .color-value-content .color-complient-container .color-complient ::ng-deep .mat-icon .svg-icon{fill:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}\n"] }]
@@ -221,4 +221,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
221
221
  type: Inject,
222
222
  args: [MAT_DIALOG_DATA]
223
223
  }] }]; } });
224
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvY29sb3IvY29sb3ItcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvY29sb3IvY29sb3ItcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBY3pFLElBQUssb0JBR0o7QUFIRCxXQUFLLG9CQUFvQjtJQUNyQiw2REFBUSxDQUFBO0lBQ1IsNkRBQU8sQ0FBQTtBQUNYLENBQUMsRUFISSxvQkFBb0IsS0FBcEIsb0JBQW9CLFFBR3hCO0FBZUQsTUFBTSxPQUFPLHVCQUF1QjtJQU1oQyxZQUNZLFlBQTZCLEVBQzdCLFNBQWdELEVBQ3hCLElBQStCO1FBRnZELGlCQUFZLEdBQVosWUFBWSxDQUFpQjtRQUM3QixjQUFTLEdBQVQsU0FBUyxDQUF1QztRQUN4QixTQUFJLEdBQUosSUFBSSxDQUEyQjtRQVBsRCxpQkFBWSxHQUFHLE1BQU0sQ0FBQztRQUV2QyxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFrQmhCLHlCQUFvQixHQUFHOzs7Ozs7O2tDQU9ELENBQUM7UUFFL0IsZUFBVSxHQUFHLEdBQUcsQ0FBQztRQUNqQixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQixrQkFBYSxHQUFHLEdBQUcsQ0FBQztRQUNwQix5QkFBb0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7UUFFekMsZ0NBQTJCLEdBQUc7O2tFQUV3QixDQUFDO1FBRS9ELHNCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUN2Qix5QkFBb0IsR0FBRyxDQUFDLENBQUM7UUFDekIseUJBQW9CLEdB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QU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbi8vIGltcG9ydCB7XG4vLyAgICAgaGV4MmhzbCxcbi8vICAgICBoc2xTdHJpbmcyaHNsLFxuLy8gICAgIHJnYlN0cmluZzJoc2wsXG4vLyAgICAgSVBlcEhzbENvbG9yLFxuLy8gICAgIGZpbmRDbG9zZXN0QWNjZXNzaWJsZUNvbG9yLFxuLy8gICAgIGhzbDJoZXgsXG4vLyAgICAgY29udmVydEhzbFRvU3RyaW5nSHNsLFxuLy8gfSBmcm9tICcuL2NvbG9yLXV0aWxzJztcbmltcG9ydCB7IFBlcENvbG9yU2VydmljZSwgSVBlcEhzbENvbG9yIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuXG5pbXBvcnQgeyBQZXBDb2xvclR5cGUgfSBmcm9tICcuL2NvbG9yLm1vZGVsJztcblxuZW51bSBQZXBDb250cmFzdFJhdGlvVHlwZSB7XG4gICAgQUEgPSA0LjUsXG4gICAgQUFBID0gNyxcbn1cblxuaW50ZXJmYWNlIElQZXBDb2xvclBpY2tlckRpYWxvZ0RhdGEge1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgdHlwZTogUGVwQ29sb3JUeXBlO1xuICAgIHNob3dBQUNvbXBsaWVudDogYm9vbGVhbjtcbiAgICBjaGVja0FBQ29tcGxpZW50OiBib29sZWFuO1xuICAgIHRleHRDb2xvcjogc3RyaW5nO1xuICAgIGNvbnRyYXN0UmF0aW86IFBlcENvbnRyYXN0UmF0aW9UeXBlO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29sb3ItcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb2xvci1waWNrZXIuY29tcG9uZW50LnNjc3MnLCAnLi9jb2xvci1waWNrZXIuY29tcG9uZW50LnRoZW1lLnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUGVwQ29sb3JQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHN0YXRpYyBDVVJSRU5UX0hVRSA9ICctLXBlcC1jb2xvci1waWNrZXItY3VycmVudC1odWUnO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdENvbG9yID0gJyNjY2MnO1xuXG4gICAgY2hlY2tBQUNvbXBsaWVudCA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjb2xvclNlcnZpY2U6IFBlcENvbG9yU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxQZXBDb2xvclBpY2tlckNvbXBvbmVudD4sXG4gICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogSVBlcENvbG9yUGlja2VyRGlhbG9nRGF0YVxuICAgICkge1xuICAgICAgICB0aGlzLmRhdGEudHlwZSA9IGRhdGEgPyBkYXRhLnR5cGUgOiAnYW55JztcbiAgICAgICAgdGhpcy5kYXRhLnNob3dBQUNvbXBsaWVudCA9ICFkYXRhXG4gICAgICAgICAgICA/IGZhbHNlXG4gICAgICAgICAgICA6IGRhdGEuc2hvd0FBQ29tcGxpZW50ID8/IHRydWU7XG4gICAgICAgIHRoaXMuZGF0YS50ZXh0Q29sb3IgPSBkYXRhICYmIGRhdGEudGV4dENvbG9yID8gZGF0YS50ZXh0Q29sb3IgOiAnI2ZmZic7XG4gICAgICAgIHRoaXMuZGF0YS5jb250cmFzdFJhdGlvID1cbiAgICAgICAgICAgIGRhdGEgJiYgZGF0YS5jb250cmFzdFJhdGlvXG4gICAgICAgICAgICAgICAgPyBkYXRhLmNvbnRyYXN0UmF0aW9cbiAgICAgICAgICAgICAgICA6IFBlcENvbnRyYXN0UmF0aW9UeXBlLkFBO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVmYXVsdEh1ZUJhY2tncm91bmQgPSBgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LFxuICAgICAgICBoc2woMCwgMTAwJSwgNTAlKSAwJSxcbiAgICAgICAgaHNsKDYwLCAxMDAlLCA1MCUpIDE3JSxcbiAgICAgICAgaHNsKDEyMCwgMTAwJSwgNTAlKSAzMyUsXG4gICAgICAgIGhzbCgxODAsIDEwMCUsIDUwJSkgNTAlLFxuICAgICAgICBoc2woMjQwLCAxMDAlLCA1MCUpIDY3JSxcbiAgICAgICAgaHNsKDMwMCwgMTAwJSwgNTAlKSA4MyUsXG4gICAgICAgIGhzbCgzNjAsIDEwMCUsIDUwJSkgMTAwJSlgO1xuXG4gICAgY3VycmVudEh1ZSA9IDEwMDtcbiAgICBjdXJyZW50SHVlTWluID0gMDtcbiAgICBjdXJyZW50SHVlTWF4ID0gMzYwO1xuICAgIGN1cnJlbnRIdWVCYWNrZ3JvdW5kID0gdGhpcy5kZWZhdWx0SHVlQmFja2dyb3VuZDtcblxuICAgIHByaXZhdGUgZGVmYXVsdFNhdHVyYXRpb25CYWNrZ3JvdW5kID0gYGxpbmVhci1ncmFkaWVudCh0byByaWdodCxcbiAgICAgICAgaHNsKHZhcigtLXBlcC1jb2xvci1waWNrZXItY3VycmVudC1odWUpLCAwLjAxJSwgNTAlKSAwJSxcbiAgICAgICAgaHNsKHZhcigtLXBlcC1jb2xvci1waWNrZXItY3VycmVudC1odWUpLCAxMDAlLCA1MCUpIDEwMCUpYDtcblxuICAgIGN1cnJlbnRTYXR1cmF0aW9uID0gNTA7XG4gICAgY3VycmVudFNhdHVyYXRpb25NaW4gPSAwO1xuICAgIGN1cnJlbnRTYXR1cmF0aW9uTWF4ID0gMTAwO1xuICAgIGN1cnJlbnRTYXR1cmF0aW9uQmFja2dyb3VuZCA9IHRoaXMuZGVmYXVsdFNhdHVyYXRpb25CYWNrZ3JvdW5kO1xuXG4gICAgcHJpdmF0ZSBkZWZhdWx0TGlnaHRuZXNzQmFja2dyb3VuZCA9IGBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsXG4gICAgICAgIGhzbCh2YXIoLS1wZXAtY29sb3ItcGlja2VyLWN1cnJlbnQtaHVlKSwgMTAwJSwgMTAwJSkgMCUsXG4gICAgICAgIGhzbCh2YXIoLS1wZXAtY29sb3ItcGlja2VyLWN1cnJlbnQtaHVlKSwgMTAwJSwgNTAlKSA1MCUsXG4gICAgICAgIGhzbCh2YXIoLS1wZXAtY29sb3ItcGlja2VyLWN1cnJlbnQtaHVlKSwgMTAwJSwgMC4wMSUpIDEwMCUpYDtcblxuICAgIGN1cnJlbnRMaWdodG5lc3MgPSA1MDtcbiAgICBjdXJyZW50TGlnaHRuZXNzTWluID0gMDtcbiAgICBjdXJyZW50TGlnaHRuZXNzTWF4ID0gMTAwO1xuICAgIGN1cnJlbnRMaWdodG5lc3NCYWNrZ3JvdW5kID0gdGhpcy5kZWZhdWx0TGlnaHRuZXNzQmFja2dyb3VuZDtcblxuICAgIGNvbXBsaWVudENvbG9yOiBzdHJpbmc7XG4gICAgaXNVc2VyQ2hvb3NlQUFDb21wbGllbnRDb2xvcjogYm9vbGVhbjtcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluaXRWYXJzKCk7XG4gICAgICAgIHRoaXMuY2hlY2tBQUNvbXBsaWVudCA9IHRoaXMuZGF0YS5jaGVja0FBQ29tcGxpZW50O1xuICAgICAgICB0aGlzLmNvbnZlcnRWYWx1ZVN0cmluZ1RvQ29sb3IodGhpcy5kYXRhLnZhbHVlKTtcbiAgICB9XG5cbiAgICBpbml0VmFycygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0YS50eXBlID09PSAnbWFpbicpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudExpZ2h0bmVzc01heCA9IDEwO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TGlnaHRuZXNzID0gNTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEh1ZUJhY2tncm91bmQgPSB0aGlzLmRlZmF1bHRIdWVCYWNrZ3JvdW5kO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U2F0dXJhdGlvbkJhY2tncm91bmQgPSB0aGlzLmRlZmF1bHRTYXR1cmF0aW9uQmFja2dyb3VuZDtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudExpZ2h0bmVzc0JhY2tncm91bmQgPSB0aGlzLmRlZmF1bHRMaWdodG5lc3NCYWNrZ3JvdW5kO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGF0YS50eXBlID09PSAnc3VjY2VzcycpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEh1ZU1pbiA9IDcwO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50SHVlTWF4ID0gMTUwO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50SHVlID0gMTAwO1xuXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTYXR1cmF0aW9uTWluID0gNTA7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTYXR1cmF0aW9uTWF4ID0gMTAwO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U2F0dXJhdGlvbiA9IDUwO1xuXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRMaWdodG5lc3NNaW4gPSAxMDtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudExpZ2h0bmVzc01heCA9IDY1O1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TGlnaHRuZXNzID0gNTA7XG5cbiAgICAgICAgICAgIHRoaXMuY3VycmVudEh1ZUJhY2tncm91bmQgPSBgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LFxuICAgICAgICAgICAgICAgIGhzbCg3MCwgMTAwJSwgNTAlKSAwJSxcbiAgICAgICAgICAgICAgICBoc2woMTUwLCAxMDAlLCA1MCUpIDEwMCUpYDtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNhdHVyYXRpb25CYWNrZ3JvdW5kID0gYGxpbmVhci1ncmFkaWVudCh0byByaWdodCxcbiAgICAgICAgICAgICAgICBoc2wodmFyKC0tcGVwLWNvbG9yLXBpY2tlci1jdXJyZW50LWh1ZSksIDUwJSwgNTAlKSA1MCUsXG4gICAgICAgICAgICAgICAgaHNsKHZhcigtLXBlcC1jb2xvci1waWNrZXItY3VycmVudC1odWUpLCAxMDAlLCA1MCUpIDEwMCUpYDtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudExpZ2h0bmVzc0JhY2tncm91bmQgPSBgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LFxuICAgICAgICAgICAgICAgIGhzbCh2YXIoLS1wZXAtY29sb3ItcGlja2VyLWN1cnJlbnQtaHVlKSwgMTAwJSwgNjUlKSAxMCUsXG4gICAgICAgICAgICAgICAgaHNsKHZhcigtLXBlcC1jb2xvci1waWNrZXItY3VycmVudC1odWUpLCAxMDAlLCAzNSUpIDM1JSxcbiAgICAgICAgICAgICAgICBoc2wodmFyKC0tcGVwLWNvbG9yLXBpY2tlci1jdXJyZW50LWh1ZSksIDEwMCUsIDEwJSkgNjUlKWA7XG5cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGEudHlwZSA9PT0gJ2NhdXRpb24nKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRIdWVNaW4gPSAtMjA7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRIdWVNYXggPSAyMDtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEh1ZSA9IDEwO1xuXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTYXR1cmF0aW9uTWluID0gNzU7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTYXR1cmF0aW9uTWF4ID0gMTAwO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U2F0dXJhdGlvbiA9IDc1O1xuXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRMaWdodG5lc3NNaW4gPSAyNTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudExpZ2h0bmVzc01heCA9IDc1O1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TGlnaHRuZXNzID0gNTA7XG5cbiAgICAgICAgICAgIHRoaXMuY3VycmVudEh1ZUJhY2tncm91bmQgPSBgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LFxuICAgICAgICAgICAgICAgIGhzbCgzNDAsIDEwMCUsIDUwJSkgMCUsXG4gICAgICAgICAgICAgICAgaHNsKDIwLCAxMDAlLCA1MCUpIDEwMCUpYDtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNhdHVyYXRpb25CYWNrZ3JvdW5kID0gYGxpbmVhci1ncmFkaWVudCh0byByaWdodCxcbiAgICAgICAgICAgICAgICBoc2wodmFyKC0tcGVwLWNvbG9yLXBpY2tlci1jdXJyZW50LWh1ZSksIDc1JSwgNTAlKSA3NSUsXG4gICAgICAgICAgICAgICAgaHNsKHZhcigtLXBlcC1jb2xvci1waWNrZXItY3VycmVudC1odWUpLCAxMDAlLCA1MCUpIDEwMCUpYDtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudExpZ2h0bmVzc0JhY2tncm91bmQgPSBgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LFxuICAgICAgICAgICAgICAgIGhzbCh2YXIoLS1wZXAtY29sb3ItcGlja2VyLWN1cnJlbnQtaHVlKSwgMTAwJSwgNzUlKSAyNSUsXG4gICAgICAgICAgICAgICAgaHNsKHZhcigtLXBlcC1jb2xvci1waWNrZXItY3VycmVudC1odWUpLCAxMDAlLCA1MCUpIDUwJSxcbiAgICAgICAgICAgICAgICBoc2wodmFyKC0tcGVwLWNvbG9yLXBpY2tlci1jdXJyZW50LWh1ZSksIDEwMCUsIDI1JSkgNzUlKWA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRDdXJyZW50SHVlSW5Dc3MoKTogdm9pZCB7XG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAgIFBlcENvbG9yUGlja2VyQ29tcG9uZW50LkNVUlJFTlRfSFVFLFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50SHVlLnRvU3RyaW5nKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjb252ZXJ0VmFsdWVTdHJpbmdUb0NvbG9yKGNvbG9yKTogdm9pZCB7XG4gICAgICAgIGlmIChjb2xvci5pbmRleE9mKCdoc2wnKSA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgaHNsID0gdGhpcy5jb2xvclNlcnZpY2UuaHNsU3RyaW5nMmhzbChjb2xvcik7XG4gICAgICAgICAgICB0aGlzLmNvbnZlcnRDb2xvclRvVmFsdWVTdHJpbmcoaHNsKTtcbiAgICAgICAgfSBlbHNlIGlmIChjb2xvci5pbmRleE9mKCdyZ2InKSA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgaHNsID0gdGhpcy5jb2xvclNlcnZpY2UucmdiU3RyaW5nMmhzbChjb2xvcik7XG4gICAgICAgICAgICB0aGlzLmNvbnZlcnRDb2xvclRvVmFsdWVTdHJpbmcoaHNsKTtcbiAgICAgICAgfSBlbHNlIGlmIChjb2xvci5pbmRleE9mKCcjJykgPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGhzbCA9IHRoaXMuY29sb3JTZXJ2aWNlLmhleDJoc2woY29sb3IpO1xuICAgICAgICAgICAgdGhpcy5jb252ZXJ0Q29sb3JUb1ZhbHVlU3RyaW5nKGhzbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBIYW5kbGUgZGVmYXVsdC5cbiAgICAgICAgICAgIGNvbnN0IGhzbCA9IHRoaXMuY29sb3JTZXJ2aWNlLmhleDJoc2wodGhpcy5kZWZhdWx0Q29sb3IpO1xuICAgICAgICAgICAgdGhpcy5jb252ZXJ0Q29sb3JUb1ZhbHVlU3RyaW5nKGhzbCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldEN1cnJlbnRIdWVJbkNzcygpO1xuICAgIH1cblxuICAgIGNvbnZlcnRDb2xvclRvVmFsdWVTdHJpbmcoaHNsQ29sb3I6IElQZXBIc2xDb2xvcik6IHZvaWQge1xuICAgICAgICAvLyBSZWd1bGFyIGh1ZVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBoc2xDb2xvci5oID49IHRoaXMuY3VycmVudEh1ZU1pbiAmJlxuICAgICAgICAgICAgaHNsQ29sb3IuaCA8PSB0aGlzLmN1cnJlbnRIdWVNYXhcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRIdWUgPSBoc2xDb2xvci5oO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50SHVlTWluIDwgMCAmJlxuICAgICAgICAgICAgaHNsQ29sb3IuaCA+PSAwICYmXG4gICAgICAgICAgICBoc2xDb2xvci5oIDw9IDM2MFxuICAgICAgICApIHtcbiAgICAgICAgICAgIC8vIEZvciBtaW4gd2l0aCAtIChjaGFuZ2UgdG8gdGhlIG90aGVyIHNpZGUgb2YgdGhlIGNpcmNsZSlcbiAgICAgICAgICAgIGhzbENvbG9yLmggPSBoc2xDb2xvci5oIC0gMzYwO1xuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgaHNsQ29sb3IuaCA+PSB0aGlzLmN1cnJlbnRIdWVNaW4gJiZcbiAgICAgICAgICAgICAgICBoc2xDb2xvci5oIDw9IHRoaXMuY3VycmVudEh1ZU1heFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50SHVlID0gaHNsQ29sb3IuaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3VycmVudFNhdHVyYXRpb24gPVxuICAgICAgICAgICAgaHNsQ29sb3IucyA+PSB0aGlzLmN1cnJlbnRTYXR1cmF0aW9uTWluICYmXG4gICAgICAgICAgICAgICAgaHNsQ29sb3IucyA8PSB0aGlzLmN1cnJlbnRTYXR1cmF0aW9uTWF4XG4gICAgICAgICAgICAgICAgPyBoc2xDb2xvci5zXG4gICAgICAgICAgICAgICAgOiB0aGlzLmN1cnJlbnRTYXR1cmF0aW9uO1xuXG4gICAgICAgIHRoaXMuY3VycmVudExpZ2h0bmVzcyA9XG4gICAgICAgICAgICBoc2xDb2xvci5sID49IHRoaXMuY3VycmVudExpZ2h0bmVzc01pbiAmJlxuICAgICAgICAgICAgICAgIGhzbENvbG9yLmwgPD0gdGhpcy5jdXJyZW50TGlnaHRuZXNzTWF4XG4gICAgICAgICAgICAgICAgPyBoc2xDb2xvci5sXG4gICAgICAgICAgICAgICAgOiB0aGlzLmN1cnJlbnRMaWdodG5lc3M7XG5cbiAgICAgICAgLy8gV3JpdGUgdGhlIHZhbHVlIChpZiBodWUgaXMgY2hhbmdlZCB0byB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgY2lyY2xlIHJldHVybiBpdCBiYWNrKS5cbiAgICAgICAgY29uc3QgaHNsID0ge1xuICAgICAgICAgICAgaDogdGhpcy5jdXJyZW50SHVlLFxuICAgICAgICAgICAgczogdGhpcy5jdXJyZW50U2F0dXJhdGlvbixcbiAgICAgICAgICAgIGw6IHRoaXMuY3VycmVudExpZ2h0bmVzcyxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5kYXRhLnZhbHVlID0gdGhpcy5jb2xvclNlcnZpY2UuY29udmVydEhzbFRvU3RyaW5nSHNsKGhzbCk7XG5cbiAgICAgICAgLy8gQ2hlY2sgdGhlIGNvbnRyYXN0IHJhdGlvIC0gc2V0IHRoZSBjbG9zZXN0IGFjY2Vzc2libGUgY29sb3IgdG8gY29tcGxpZW50Q29sb3JcbiAgICAgICAgLy8gYW5kIHVwZGF0ZSBpc1VzZXJDaG9vc2VBQUNvbXBsaWVudENvbG9yLlxuICAgICAgICBjb25zdCBhZGp1c3RhYmxlQ29sb3IgPSB0aGlzLmNvbG9yU2VydmljZS5oc2wyaGV4KGhzbCk7XG4gICAgICAgIGNvbnN0IGNsb3Nlc3RIZXggPSB0aGlzLmNvbG9yU2VydmljZS5maW5kQ2xvc2VzdEFjY2Vzc2libGVDb2xvcihcbiAgICAgICAgICAgIGFkanVzdGFibGVDb2xvcixcbiAgICAgICAgICAgIHRoaXMuZGF0YS50ZXh0Q29sb3IsXG4gICAgICAgICAgICB0aGlzLmRhdGEuY29udHJhc3RSYXRpb1xuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuaXNVc2VyQ2hvb3NlQUFDb21wbGllbnRDb2xvciA9IGFkanVzdGFibGVDb2xvciA9PT0gY2xvc2VzdEhleDtcbiAgICAgICAgdGhpcy5jb21wbGllbnRDb2xvciA9IHRoaXMuY29sb3JTZXJ2aWNlLmNvbnZlcnRIc2xUb1N0cmluZ0hzbChcbiAgICAgICAgICAgIHRoaXMuY29sb3JTZXJ2aWNlLmhleDJoc2woY2xvc2VzdEhleClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvbkh1ZUNoYW5nZSh2YWx1ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnZlcnRDb2xvclRvVmFsdWVTdHJpbmcoeyBoOiB2YWx1ZSB9KTtcbiAgICAgICAgdGhpcy5zZXRDdXJyZW50SHVlSW5Dc3MoKTtcbiAgICB9XG5cbiAgICBvblNhdHVyYXRpb25DaGFuZ2UodmFsdWUpOiB2b2lkIHtcbiAgICAgICAgLy8gdGhpcy5jdXJyZW50U2F0dXJhdGlvbiA9IGV2ZW50LnZhbHVlO1xuICAgICAgICB0aGlzLmNvbnZlcnRDb2xvclRvVmFsdWVTdHJpbmcoeyBzOiB2YWx1ZSB9KTtcbiAgICB9XG5cbiAgICBvbkxpZ2h0bmVzc0NoYW5nZSh2YWx1ZSk6IHZvaWQge1xuICAgICAgICAvLyB0aGlzLmN1cnJlbnRMaWdodG5lc3MgPSBldmVudC52YWx1ZTtcbiAgICAgICAgdGhpcy5jb252ZXJ0Q29sb3JUb1ZhbHVlU3RyaW5nKHtcbiAgICAgICAgICAgIGw6XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TGlnaHRuZXNzTWF4IC1cbiAgICAgICAgICAgICAgICB2YWx1ZSArXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TGlnaHRuZXNzTWluLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkNvbG9yVmFsdWVDaGFuZ2UoZXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb252ZXJ0VmFsdWVTdHJpbmdUb0NvbG9yKGV2ZW50LnZhbHVlKTtcbiAgICB9XG5cbiAgICBvblNhdmUoZXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29sb3IgPSB0aGlzLmNoZWNrQUFDb21wbGllbnRcbiAgICAgICAgICAgID8gdGhpcy5jb21wbGllbnRDb2xvclxuICAgICAgICAgICAgOiB0aGlzLmRhdGEudmFsdWU7XG5cbiAgICAgICAgLy8gdGhpcy5ub3RpZnkuZW1pdCh7IGtleTogdGhpcy5rZXksIHZhbHVlOiBjb2xvciB9KTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoY29sb3IpO1xuICAgIH1cblxuICAgIGNsb3NlRGlhbG9nKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGV2ZW50KTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicGVwLWNvbG9yLXBpY2tlci1jb250YWluZXJcIj5cbiAgICA8cGVwLWRpYWxvZyBbdGl0bGVdPVwiJ0NPTE9SLkRJQUxPR19USVRMRScgfCB0cmFuc2xhdGVcIiAoY2xvc2UpPVwiY2xvc2VEaWFsb2coJGV2ZW50KVwiPlxuICAgICAgICA8bmctY29udGFpbmVyIHBlcC1kaWFsb2ctY29udGVudD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xvci1jaG9vc2VyLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VycmVudC1jb2xvclwiIFtuZ1N0eWxlXT1cInsgJ2JhY2tncm91bmQnOiBkYXRhPy52YWx1ZSA/IGRhdGEudmFsdWUgOiAndHJhbnNwYXJlbnQnIH1cIj48L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxwZXAtc2xpZGVyIGNsYXNzPVwic2xpZGVyLWJveFwiIFtsYWJlbF09XCInQ09MT1IuQ0hBTkdFX0hVRScgfCB0cmFuc2xhdGVcIiBbbWluVmFsdWVdPVwiY3VycmVudEh1ZU1pblwiXG4gICAgICAgICAgICAgICAgICAgIFttYXhWYWx1ZV09XCJjdXJyZW50SHVlTWF4XCIgW3ZhbHVlXT1cImN1cnJlbnRIdWVcIiBbYmFja2dyb3VuZF09XCJjdXJyZW50SHVlQmFja2dyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkh1ZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPC9wZXAtc2xpZGVyPlxuICAgICAgICAgICAgICAgIDxwZXAtc2xpZGVyIGNsYXNzPVwic2xpZGVyLWJveFwiIFtsYWJlbF09XCInQ09MT1IuQ0hBTkdFX1NBVFVSQVRJT04nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW21pblZhbHVlXT1cImN1cnJlbnRTYXR1cmF0aW9uTWluXCIgW21heFZhbHVlXT1cImN1cnJlbnRTYXR1cmF0aW9uTWF4XCIgW3ZhbHVlXT1cImN1cnJlbnRTYXR1cmF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2JhY2tncm91bmRdPVwiY3VycmVudFNhdHVyYXRpb25CYWNrZ3JvdW5kXCIgKHZhbHVlQ2hhbmdlKT1cIm9uU2F0dXJhdGlvbkNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPC9wZXAtc2xpZGVyPlxuICAgICAgICAgICAgICAgIDxwZXAtc2xpZGVyIGNsYXNzPVwic2xpZGVyLWJveFwiIFtsYWJlbF09XCInQ09MT1IuQ0hBTkdFX0xJR0hUTkVTUycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbWluVmFsdWVdPVwiY3VycmVudExpZ2h0bmVzc01pblwiIFttYXhWYWx1ZV09XCJjdXJyZW50TGlnaHRuZXNzTWF4XCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImN1cnJlbnRMaWdodG5lc3NNYXggLSBjdXJyZW50TGlnaHRuZXNzICsgY3VycmVudExpZ2h0bmVzc01pblwiXG4gICAgICAgICAgICAgICAgICAgIFtiYWNrZ3JvdW5kXT1cImN1cnJlbnRMaWdodG5lc3NCYWNrZ3JvdW5kXCIgKHZhbHVlQ2hhbmdlKT1cIm9uTGlnaHRuZXNzQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8L3BlcC1zbGlkZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xvci12YWx1ZS1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbG9yLXZhbHVlXCIgW25nQ2xhc3NdPVwieyAnd2l0aC1jb21wbGllbnQnOiBjaGVja0FBQ29tcGxpZW50IH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHBlcC10ZXh0Ym94IFtrZXldPVwiJ2NvbG9yVmFsdWUnXCIgW2xhYmVsXT1cIidDT0xPUi5BRERfVkFMVUVfSEVSRScgfCB0cmFuc2xhdGUgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtYXR0ZWRWYWx1ZV09XCJkYXRhPy52YWx1ZVwiIFt2YWx1ZV09XCJkYXRhPy52YWx1ZVwiICh2YWx1ZUNoYW5nZSk9XCJvbkNvbG9yVmFsdWVDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8L3BlcC10ZXh0Ym94PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjaGVja0FBQ29tcGxpZW50XCIgY2xhc3M9XCJjb2xvci1jb21wbGllbnQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwZXAtZmllbGQtdGl0bGUgW2xhYmVsXT1cIidDT0xPUi5BQV9DT01QTElFTlQnIHwgdHJhbnNsYXRlIFwiPlxuICAgICAgICAgICAgICAgICAgICA8L3BlcC1maWVsZC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbG9yLWNvbXBsaWVudFwiIFtuZ1N0eWxlXT1cInsgJ2JhY2tncm91bmQnOiBjb21wbGllbnRDb2xvciB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJpc1VzZXJDaG9vc2VBQUNvbXBsaWVudENvbG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBlcC1pY29uIG5hbWU9XCJzeXN0ZW1fb2tcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BlcC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgcGVwLWRpYWxvZy1hY3Rpb25zPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbG9yLWFjdGlvbnMgcGVwLXNwYWNpbmctZWxlbWVudC1uZWdhdGl2ZVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggKm5nSWY9XCJkYXRhLnNob3dBQUNvbXBsaWVudFwiIGNsYXNzPVwicGVwLXNwYWNpbmctZWxlbWVudFwiIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiY2hlY2tBQUNvbXBsaWVudFwiIChjaGFuZ2UpPVwiY2hlY2tBQUNvbXBsaWVudCA9ICFjaGVja0FBQ29tcGxpZW50XCIgW2NoZWNrZWRdPVwiY2hlY2tBQUNvbXBsaWVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvZHkteHMgZWxsaXBzaXNcIj57eyAnQ09MT1IuQUFfQ09NUExJRU5UJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwibnVsbFwiIGNsYXNzPVwicGVwLXNwYWNpbmctZWxlbWVudCBwZXAtYnV0dG9uIG1kIHdlYWtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FDVElPTlMuQ0FOQ0VMJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJwZXAtc3BhY2luZy1lbGVtZW50IHBlcC1idXR0b24gbWQgc3Ryb25nXCIgKGNsaWNrKT1cIm9uU2F2ZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eydBQ1RJT05TLk9LJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvcGVwLWRpYWxvZz5cbjwvZGl2PiJdfQ==
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvY29sb3IvY29sb3ItcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvY29sb3IvY29sb3ItcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBY3pFLElBQUssb0JBR0o7QUFIRCxXQUFLLG9CQUFvQjtJQUNyQiw2REFBUSxDQUFBO0lBQ1IsNkRBQU8sQ0FBQTtBQUNYLENBQUMsRUFISSxvQkFBb0IsS0FBcEIsb0JBQW9CLFFBR3hCO0FBZUQsTUFBTSxPQUFPLHVCQUF1QjtJQU1oQyxZQUNZLFlBQTZCLEVBQzdCLFNBQWdELEVBQ3hCLElBQStCO1FBRnZELGlCQUFZLEdBQVosWUFBWSxDQUFpQjtRQUM3QixjQUFTLEdBQVQsU0FBUyxDQUF1QztRQUN4QixTQUFJLEdBQUosSUFBSSxDQUEyQjtRQVBsRCxpQkFBWSxHQUFHLE1BQU0sQ0FBQztRQUV2QyxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFrQmhCLHlCQUFvQixHQUFHOzs7Ozs7O2tDQU9ELENBQUM7UUFFL0IsZUFBVSxHQUFHLEdBQUcsQ0FBQztRQUNqQixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQixrQkFBYSxHQUFHLEdBQUcsQ0FBQztRQUNwQix5QkFBb0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7UUFFekMsZ0NBQTJCLEdBQUc7O2tFQUV3QixDQUFDO1FBRS9ELHNCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUN2Qix5QkFBb0IsR0FBRyxDQUFDLENBQUM7UUFDekIseUJBQW9CLEdB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QUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuLy8gaW1wb3J0IHtcbi8vICAgICBoZXgyaHNsLFxuLy8gICAgIGhzbFN0cmluZzJoc2wsXG4vLyAgICAgcmdiU3RyaW5nMmhzbCxcbi8vICAgICBJUGVwSHNsQ29sb3IsXG4vLyAgICAgZmluZENsb3Nlc3RBY2Nlc3NpYmxlQ29sb3IsXG4vLyAgICAgaHNsMmhleCxcbi8vICAgICBjb252ZXJ0SHNsVG9TdHJpbmdIc2wsXG4vLyB9IGZyb20gJy4vY29sb3ItdXRpbHMnO1xuaW1wb3J0IHsgUGVwQ29sb3JTZXJ2aWNlLCBJUGVwSHNsQ29sb3IgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYic7XG5cbmltcG9ydCB7IFBlcENvbG9yVHlwZSB9IGZyb20gJy4vY29sb3IubW9kZWwnO1xuXG5lbnVtIFBlcENvbnRyYXN0UmF0aW9UeXBlIHtcbiAgICBBQSA9IDQuNSxcbiAgICBBQUEgPSA3LFxufVxuXG5pbnRlcmZhY2UgSVBlcENvbG9yUGlja2VyRGlhbG9nRGF0YSB7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICB0eXBlOiBQZXBDb2xvclR5cGU7XG4gICAgc2hvd0FBQ29tcGxpZW50OiBib29sZWFuO1xuICAgIGNoZWNrQUFDb21wbGllbnQ6IGJvb2xlYW47XG4gICAgdGV4dENvbG9yOiBzdHJpbmc7XG4gICAgY29udHJhc3RSYXRpbzogUGVwQ29udHJhc3RSYXRpb1R5cGU7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnLi9jb2xvci1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NvbG9yLXBpY2tlci5jb21wb25lbnQuc2NzcycsICcuL2NvbG9yLXBpY2tlci5jb21wb25lbnQudGhlbWUuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBDb2xvclBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgc3RhdGljIENVUlJFTlRfSFVFID0gJy0tcGVwLWNvbG9yLXBpY2tlci1jdXJyZW50LWh1ZSc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0Q29sb3IgPSAnI2NjYyc7XG5cbiAgICBjaGVja0FBQ29tcGxpZW50ID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNvbG9yU2VydmljZTogUGVwQ29sb3JTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFBlcENvbG9yUGlja2VyQ29tcG9uZW50PixcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBJUGVwQ29sb3JQaWNrZXJEaWFsb2dEYXRhXG4gICAgKSB7XG4gICAgICAgIHRoaXMuZGF0YS50eXBlID0gZGF0YSA/IGRhdGEudHlwZSA6ICdhbnknO1xuICAgICAgICB0aGlzLmRhdGEuc2hvd0FBQ29tcGxpZW50ID0gIWRhdGFcbiAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgIDogZGF0YS5zaG93QUFDb21wbGllbnQgPz8gdHJ1ZTtcbiAgICAgICAgdGhpcy5kYXRhLnRleHRDb2xvciA9IGRhdGEgJiYgZGF0YS50ZXh0Q29sb3IgPyBkYXRhLnRleHRDb2xvciA6ICcjZmZmJztcbiAgICAgICAgdGhpcy5kYXRhLmNvbnRyYXN0UmF0aW8gPVxuICAgICAgICAgICAgZGF0YSAmJiBkYXRhLmNvbnRyYXN0UmF0aW9cbiAgICAgICAgICAgICAgICA/IGRhdGEuY29udHJhc3RSYXRpb1xuICAgICAgICAgICAgICAgIDogUGVwQ29udHJhc3RSYXRpb1R5cGUuQUE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWZhdWx0SHVlQmFja2dyb3VuZCA9IGBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsXG4gICAgICAgIGhzbCgwLCAxMDAlLCA1MCUpIDAlLFxuICAgICAgICBoc2woNjAsIDEwMCUsIDUwJSkgMTclLFxuICAgICAgICBoc2woMTIwLCAxMDAlLCA1MCUpIDMzJSxcbiAgICAgICAgaHNsKDE4MCwgMTAwJSwgNTAlKSA1MCUsXG4gICAgICAgIGhzbCgyNDAsIDEwMCUsIDUwJSkgNjclLFxuICAgICAgICBoc2woMzAwLCAxMDAlLCA1MCUpIDgzJSxcbiAgICAgICAgaHNsKDM2MCwgMTAwJSwgNTAlKSAxMDAlKWA7XG5cbiAgICBjdXJyZW50SHVlID0gMTAwO1xuICAgIGN1cnJlbnRIdWVNaW4gPSAwO1xuICAgIGN1cnJlbnRIdWVNYXggPSAzNjA7XG4gICAgY3VycmVudEh1ZUJhY2tncm91bmQgPSB0aGlzLmRlZmF1bHRIdWVCYWNrZ3JvdW5kO1xuXG4gICAgcHJpdmF0ZSBkZWZhdWx0U2F0dXJhdGlvbkJhY2tncm91bmQgPSBgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LFxuICAgICAgICBoc2wodmFyKC0tcGVwLWNvbG9yLXBpY2tlci1jdXJyZW50LWh1ZSksIDAuMDElLCA1MCUpIDAlLFxuICAgICAgICBoc2wodmFyKC0tcGVwLWNvbG9yLXBpY2tlci1jdXJyZW50LWh1ZSksIDEwMCUsIDUwJSkgMTAwJSlgO1xuXG4gICAgY3VycmVudFNhdHVyYXRpb24gPSA1MDtcbiAgICBjdXJyZW50U2F0dXJhdGlvbk1pbiA9IDA7XG4gICAgY3VycmVudFNhdHVyYXRpb25NYXggPSAxMDA7XG4gICAgY3VycmVudFNhdHVyYXRpb25CYWNrZ3JvdW5kID0gdGhpcy5kZWZhdWx0U2F0dXJhdGlvbkJhY2tncm91bmQ7XG5cbiAgICBwcml2YXRlIGRlZmF1bHRMaWdodG5lc3NCYWNrZ3JvdW5kID0gYGxpbmVhci1ncmFkaWVudCh0byByaWdodCxcbiAgICAgICAgaHNsKHZhcigtLXBlcC1jb2xvci1waWNrZXItY3VycmVudC1odWUpLCAxMDAlLCAxMDAlKSAwJSxcbiAgICAgICAgaHNsKHZhcigtLXBlcC1jb2xvci1waWNrZXItY3VycmVudC1odWUpLCAxMDAlLCA1MCUpIDUwJSxcbiAgICAgICAgaHNsKHZhcigtLXBlcC1jb2xvci1waWNrZXItY3VycmVudC1odWUpLCAxMDAlLCAwLjAxJSkgMTAwJSlgO1xuXG4gICAgY3VycmVudExpZ2h0bmVzcyA9IDUwO1xuICAgIGN1cnJlbnRMaWdodG5lc3NNaW4gPSAwO1xuICAgIGN1cnJlbnRMaWdodG5lc3NNYXggPSAxMDA7XG4gICAgY3VycmVudExpZ2h0bmVzc0JhY2tncm91bmQgPSB0aGlzLmRlZmF1bHRMaWdodG5lc3NCYWNrZ3JvdW5kO1xuXG4gICAgY29tcGxpZW50Q29sb3I6IHN0cmluZztcbiAgICBpc1VzZXJDaG9vc2VBQUNvbXBsaWVudENvbG9yOiBib29sZWFuO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdFZhcnMoKTtcbiAgICAgICAgdGhpcy5jaGVja0FBQ29tcGxpZW50ID0gdGhpcy5kYXRhLmNoZWNrQUFDb21wbGllbnQ7XG4gICAgICAgIHRoaXMuY29udmVydFZhbHVlU3RyaW5nVG9Db2xvcih0aGlzLmRhdGEudmFsdWUpO1xuICAgIH1cblxuICAgIGluaXRWYXJzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kYXRhLnR5cGUgPT09ICdtYWluJykge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TGlnaHRuZXNzTWF4ID0gMTA7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRMaWdodG5lc3MgPSA1O1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50SHVlQmFja2dyb3VuZCA9IHRoaXMuZGVmYXVsdEh1ZUJhY2tncm91bmQ7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTYXR1cmF0aW9uQmFja2dyb3VuZCA9IHRoaXMuZGVmYXVsdFNhdHVyYXRpb25CYWNrZ3JvdW5kO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TGlnaHRuZXNzQmFja2dyb3VuZCA9IHRoaXMuZGVmYXVsdExpZ2h0bmVzc0JhY2tncm91bmQ7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRhLnR5cGUgPT09ICdzdWNjZXNzJykge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50SHVlTWluID0gNzA7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRIdWVNYXggPSAxNTA7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRIdWUgPSAxMDA7XG5cbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNhdHVyYXRpb25NaW4gPSA1MDtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNhdHVyYXRpb25NYXggPSAxMDA7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTYXR1cmF0aW9uID0gNTA7XG5cbiAgICAgICAgICAgIHRoaXMuY3VycmVudExpZ2h0bmVzc01pbiA9IDEwO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TGlnaHRuZXNzTWF4ID0gNjU7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRMaWdodG5lc3MgPSA1MDtcblxuICAgICAgICAgICAgdGhpcy5jdXJyZW50SHVlQmFja2dyb3VuZCA9IGBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsXG4gICAgICAgICAgICAgICAgaHNsKDcwLCAxMDAlLCA1MCUpIDAlLFxuICAgICAgICAgICAgICAgIGhzbCgxNTAsIDEwMCUsIDUwJSkgMTAwJSlgO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U2F0dXJhdGlvbkJhY2tncm91bmQgPSBgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LFxuICAgICAgICAgICAgICAgIGhzbCh2YXIoLS1wZXAtY29sb3ItcGlja2VyLWN1cnJlbnQtaHVlKSwgNTAlLCA1MCUpIDUwJSxcbiAgICAgICAgICAgICAgICBoc2wodmFyKC0tcGVwLWNvbG9yLXBpY2tlci1jdXJyZW50LWh1ZSksIDEwMCUsIDUwJSkgMTAwJSlgO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TGlnaHRuZXNzQmFja2dyb3VuZCA9IGBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsXG4gICAgICAgICAgICAgICAgaHNsKHZhcigtLXBlcC1jb2xvci1waWNrZXItY3VycmVudC1odWUpLCAxMDAlLCA2NSUpIDEwJSxcbiAgICAgICAgICAgICAgICBoc2wodmFyKC0tcGVwLWNvbG9yLXBpY2tlci1jdXJyZW50LWh1ZSksIDEwMCUsIDM1JSkgMzUlLFxuICAgICAgICAgICAgICAgIGhzbCh2YXIoLS1wZXAtY29sb3ItcGlja2VyLWN1cnJlbnQtaHVlKSwgMTAwJSwgMTAlKSA2NSUpYDtcblxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGF0YS50eXBlID09PSAnY2F1dGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEh1ZU1pbiA9IC0yMDtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEh1ZU1heCA9IDIwO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50SHVlID0gMTA7XG5cbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNhdHVyYXRpb25NaW4gPSA3NTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNhdHVyYXRpb25NYXggPSAxMDA7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTYXR1cmF0aW9uID0gNzU7XG5cbiAgICAgICAgICAgIHRoaXMuY3VycmVudExpZ2h0bmVzc01pbiA9IDI1O1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TGlnaHRuZXNzTWF4ID0gNzU7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRMaWdodG5lc3MgPSA1MDtcblxuICAgICAgICAgICAgdGhpcy5jdXJyZW50SHVlQmFja2dyb3VuZCA9IGBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsXG4gICAgICAgICAgICAgICAgaHNsKDM0MCwgMTAwJSwgNTAlKSAwJSxcbiAgICAgICAgICAgICAgICBoc2woMjAsIDEwMCUsIDUwJSkgMTAwJSlgO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U2F0dXJhdGlvbkJhY2tncm91bmQgPSBgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LFxuICAgICAgICAgICAgICAgIGhzbCh2YXIoLS1wZXAtY29sb3ItcGlja2VyLWN1cnJlbnQtaHVlKSwgNzUlLCA1MCUpIDc1JSxcbiAgICAgICAgICAgICAgICBoc2wodmFyKC0tcGVwLWNvbG9yLXBpY2tlci1jdXJyZW50LWh1ZSksIDEwMCUsIDUwJSkgMTAwJSlgO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TGlnaHRuZXNzQmFja2dyb3VuZCA9IGBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsXG4gICAgICAgICAgICAgICAgaHNsKHZhcigtLXBlcC1jb2xvci1waWNrZXItY3VycmVudC1odWUpLCAxMDAlLCA3NSUpIDI1JSxcbiAgICAgICAgICAgICAgICBoc2wodmFyKC0tcGVwLWNvbG9yLXBpY2tlci1jdXJyZW50LWh1ZSksIDEwMCUsIDUwJSkgNTAlLFxuICAgICAgICAgICAgICAgIGhzbCh2YXIoLS1wZXAtY29sb3ItcGlja2VyLWN1cnJlbnQtaHVlKSwgMTAwJSwgMjUlKSA3NSUpYDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldEN1cnJlbnRIdWVJbkNzcygpOiB2b2lkIHtcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICAgICAgUGVwQ29sb3JQaWNrZXJDb21wb25lbnQuQ1VSUkVOVF9IVUUsXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRIdWUudG9TdHJpbmcoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnZlcnRWYWx1ZVN0cmluZ1RvQ29sb3IoY29sb3IpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNvbG9yLmluZGV4T2YoJ2hzbCcpID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBoc2wgPSB0aGlzLmNvbG9yU2VydmljZS5oc2xTdHJpbmcyaHNsKGNvbG9yKTtcbiAgICAgICAgICAgIHRoaXMuY29udmVydENvbG9yVG9WYWx1ZVN0cmluZyhoc2wpO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbG9yLmluZGV4T2YoJ3JnYicpID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBoc2wgPSB0aGlzLmNvbG9yU2VydmljZS5yZ2JTdHJpbmcyaHNsKGNvbG9yKTtcbiAgICAgICAgICAgIHRoaXMuY29udmVydENvbG9yVG9WYWx1ZVN0cmluZyhoc2wpO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbG9yLmluZGV4T2YoJyMnKSA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgaHNsID0gdGhpcy5jb2xvclNlcnZpY2UuaGV4MmhzbChjb2xvcik7XG4gICAgICAgICAgICB0aGlzLmNvbnZlcnRDb2xvclRvVmFsdWVTdHJpbmcoaHNsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBkZWZhdWx0LlxuICAgICAgICAgICAgY29uc3QgaHNsID0gdGhpcy5jb2xvclNlcnZpY2UuaGV4MmhzbCh0aGlzLmRlZmF1bHRDb2xvcik7XG4gICAgICAgICAgICB0aGlzLmNvbnZlcnRDb2xvclRvVmFsdWVTdHJpbmcoaHNsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0Q3VycmVudEh1ZUluQ3NzKCk7XG4gICAgfVxuXG4gICAgY29udmVydENvbG9yVG9WYWx1ZVN0cmluZyhoc2xDb2xvcjogSVBlcEhzbENvbG9yKTogdm9pZCB7XG4gICAgICAgIC8vIFJlZ3VsYXIgaHVlXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGhzbENvbG9yLmggPj0gdGhpcy5jdXJyZW50SHVlTWluICYmXG4gICAgICAgICAgICBoc2xDb2xvci5oIDw9IHRoaXMuY3VycmVudEh1ZU1heFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEh1ZSA9IGhzbENvbG9yLmg7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRIdWVNaW4gPCAwICYmXG4gICAgICAgICAgICBoc2xDb2xvci5oID49IDAgJiZcbiAgICAgICAgICAgIGhzbENvbG9yLmggPD0gMzYwXG4gICAgICAgICkge1xuICAgICAgICAgICAgLy8gRm9yIG1pbiB3aXRoIC0gKGNoYW5nZSB0byB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgY2lyY2xlKVxuICAgICAgICAgICAgaHNsQ29sb3IuaCA9IGhzbENvbG9yLmggLSAzNjA7XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBoc2xDb2xvci5oID49IHRoaXMuY3VycmVudEh1ZU1pbiAmJlxuICAgICAgICAgICAgICAgIGhzbENvbG9yLmggPD0gdGhpcy5jdXJyZW50SHVlTWF4XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRIdWUgPSBoc2xDb2xvci5oO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jdXJyZW50U2F0dXJhdGlvbiA9XG4gICAgICAgICAgICBoc2xDb2xvci5zID49IHRoaXMuY3VycmVudFNhdHVyYXRpb25NaW4gJiZcbiAgICAgICAgICAgICAgICBoc2xDb2xvci5zIDw9IHRoaXMuY3VycmVudFNhdHVyYXRpb25NYXhcbiAgICAgICAgICAgICAgICA/IGhzbENvbG9yLnNcbiAgICAgICAgICAgICAgICA6IHRoaXMuY3VycmVudFNhdHVyYXRpb247XG5cbiAgICAgICAgdGhpcy5jdXJyZW50TGlnaHRuZXNzID1cbiAgICAgICAgICAgIGhzbENvbG9yLmwgPj0gdGhpcy5jdXJyZW50TGlnaHRuZXNzTWluICYmXG4gICAgICAgICAgICAgICAgaHNsQ29sb3IubCA8PSB0aGlzLmN1cnJlbnRMaWdodG5lc3NNYXhcbiAgICAgICAgICAgICAgICA/IGhzbENvbG9yLmxcbiAgICAgICAgICAgICAgICA6IHRoaXMuY3VycmVudExpZ2h0bmVzcztcblxuICAgICAgICAvLyBXcml0ZSB0aGUgdmFsdWUgKGlmIGh1ZSBpcyBjaGFuZ2VkIHRvIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBjaXJjbGUgcmV0dXJuIGl0IGJhY2spLlxuICAgICAgICBjb25zdCBoc2wgPSB7XG4gICAgICAgICAgICBoOiB0aGlzLmN1cnJlbnRIdWUsXG4gICAgICAgICAgICBzOiB0aGlzLmN1cnJlbnRTYXR1cmF0aW9uLFxuICAgICAgICAgICAgbDogdGhpcy5jdXJyZW50TGlnaHRuZXNzLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmRhdGEudmFsdWUgPSB0aGlzLmNvbG9yU2VydmljZS5jb252ZXJ0SHNsVG9TdHJpbmdIc2woaHNsKTtcblxuICAgICAgICAvLyBDaGVjayB0aGUgY29udHJhc3QgcmF0aW8gLSBzZXQgdGhlIGNsb3Nlc3QgYWNjZXNzaWJsZSBjb2xvciB0byBjb21wbGllbnRDb2xvclxuICAgICAgICAvLyBhbmQgdXBkYXRlIGlzVXNlckNob29zZUFBQ29tcGxpZW50Q29sb3IuXG4gICAgICAgIGNvbnN0IGFkanVzdGFibGVDb2xvciA9IHRoaXMuY29sb3JTZXJ2aWNlLmhzbDJoZXgoaHNsKTtcbiAgICAgICAgY29uc3QgY2xvc2VzdEhleCA9IHRoaXMuY29sb3JTZXJ2aWNlLmZpbmRDbG9zZXN0QWNjZXNzaWJsZUNvbG9yKFxuICAgICAgICAgICAgYWRqdXN0YWJsZUNvbG9yLFxuICAgICAgICAgICAgdGhpcy5kYXRhLnRleHRDb2xvcixcbiAgICAgICAgICAgIHRoaXMuZGF0YS5jb250cmFzdFJhdGlvXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5pc1VzZXJDaG9vc2VBQUNvbXBsaWVudENvbG9yID0gYWRqdXN0YWJsZUNvbG9yID09PSBjbG9zZXN0SGV4O1xuICAgICAgICB0aGlzLmNvbXBsaWVudENvbG9yID0gdGhpcy5jb2xvclNlcnZpY2UuY29udmVydEhzbFRvU3RyaW5nSHNsKFxuICAgICAgICAgICAgdGhpcy5jb2xvclNlcnZpY2UuaGV4MmhzbChjbG9zZXN0SGV4KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG9uSHVlQ2hhbmdlKHZhbHVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udmVydENvbG9yVG9WYWx1ZVN0cmluZyh7IGg6IHZhbHVlIH0pO1xuICAgICAgICB0aGlzLnNldEN1cnJlbnRIdWVJbkNzcygpO1xuICAgIH1cblxuICAgIG9uU2F0dXJhdGlvbkNoYW5nZSh2YWx1ZSk6IHZvaWQge1xuICAgICAgICAvLyB0aGlzLmN1cnJlbnRTYXR1cmF0aW9uID0gZXZlbnQudmFsdWU7XG4gICAgICAgIHRoaXMuY29udmVydENvbG9yVG9WYWx1ZVN0cmluZyh7IHM6IHZhbHVlIH0pO1xuICAgIH1cblxuICAgIG9uTGlnaHRuZXNzQ2hhbmdlKHZhbHVlKTogdm9pZCB7XG4gICAgICAgIC8vIHRoaXMuY3VycmVudExpZ2h0bmVzcyA9IGV2ZW50LnZhbHVlO1xuICAgICAgICB0aGlzLmNvbnZlcnRDb2xvclRvVmFsdWVTdHJpbmcoe1xuICAgICAgICAgICAgbDpcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRMaWdodG5lc3NNYXggLVxuICAgICAgICAgICAgICAgIHZhbHVlICtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRMaWdodG5lc3NNaW4sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uQ29sb3JWYWx1ZUNoYW5nZShjb2xvcik6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnZlcnRWYWx1ZVN0cmluZ1RvQ29sb3IoY29sb3IpO1xuICAgIH1cblxuICAgIG9uU2F2ZShldmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb2xvciA9IHRoaXMuY2hlY2tBQUNvbXBsaWVudFxuICAgICAgICAgICAgPyB0aGlzLmNvbXBsaWVudENvbG9yXG4gICAgICAgICAgICA6IHRoaXMuZGF0YS52YWx1ZTtcblxuICAgICAgICAvLyB0aGlzLm5vdGlmeS5lbWl0KHsga2V5OiB0aGlzLmtleSwgdmFsdWU6IGNvbG9yIH0pO1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShjb2xvcik7XG4gICAgfVxuXG4gICAgY2xvc2VEaWFsb2coZXZlbnQpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoZXZlbnQpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwZXAtY29sb3ItcGlja2VyLWNvbnRhaW5lclwiPlxuICAgIDxwZXAtZGlhbG9nIFt0aXRsZV09XCInQ09MT1IuRElBTE9HX1RJVExFJyB8IHRyYW5zbGF0ZVwiIChjbG9zZSk9XCJjbG9zZURpYWxvZygkZXZlbnQpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgcGVwLWRpYWxvZy1jb250ZW50PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbG9yLWNob29zZXItY29udGVudFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJyZW50LWNvbG9yXCIgW25nU3R5bGVdPVwieyAnYmFja2dyb3VuZCc6IGRhdGE/LnZhbHVlID8gZGF0YS52YWx1ZSA6ICd0cmFuc3BhcmVudCcgfVwiPjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPHBlcC1zbGlkZXIgY2xhc3M9XCJzbGlkZXItYm94XCIgW2xhYmVsXT1cIidDT0xPUi5DSEFOR0VfSFVFJyB8IHRyYW5zbGF0ZVwiIFttaW5WYWx1ZV09XCJjdXJyZW50SHVlTWluXCJcbiAgICAgICAgICAgICAgICAgICAgW21heFZhbHVlXT1cImN1cnJlbnRIdWVNYXhcIiBbdmFsdWVdPVwiY3VycmVudEh1ZVwiIFtiYWNrZ3JvdW5kXT1cImN1cnJlbnRIdWVCYWNrZ3JvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uSHVlQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8L3BlcC1zbGlkZXI+XG4gICAgICAgICAgICAgICAgPHBlcC1zbGlkZXIgY2xhc3M9XCJzbGlkZXItYm94XCIgW2xhYmVsXT1cIidDT0xPUi5DSEFOR0VfU0FUVVJBVElPTicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbWluVmFsdWVdPVwiY3VycmVudFNhdHVyYXRpb25NaW5cIiBbbWF4VmFsdWVdPVwiY3VycmVudFNhdHVyYXRpb25NYXhcIiBbdmFsdWVdPVwiY3VycmVudFNhdHVyYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICBbYmFja2dyb3VuZF09XCJjdXJyZW50U2F0dXJhdGlvbkJhY2tncm91bmRcIiAodmFsdWVDaGFuZ2UpPVwib25TYXR1cmF0aW9uQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8L3BlcC1zbGlkZXI+XG4gICAgICAgICAgICAgICAgPHBlcC1zbGlkZXIgY2xhc3M9XCJzbGlkZXItYm94XCIgW2xhYmVsXT1cIidDT0xPUi5DSEFOR0VfTElHSFRORVNTJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFttaW5WYWx1ZV09XCJjdXJyZW50TGlnaHRuZXNzTWluXCIgW21heFZhbHVlXT1cImN1cnJlbnRMaWdodG5lc3NNYXhcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY3VycmVudExpZ2h0bmVzc01heCAtIGN1cnJlbnRMaWdodG5lc3MgKyBjdXJyZW50TGlnaHRuZXNzTWluXCJcbiAgICAgICAgICAgICAgICAgICAgW2JhY2tncm91bmRdPVwiY3VycmVudExpZ2h0bmVzc0JhY2tncm91bmRcIiAodmFsdWVDaGFuZ2UpPVwib25MaWdodG5lc3NDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDwvcGVwLXNsaWRlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbG9yLXZhbHVlLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sb3ItdmFsdWVcIiBbbmdDbGFzc109XCJ7ICd3aXRoLWNvbXBsaWVudCc6IGNoZWNrQUFDb21wbGllbnQgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8cGVwLXRleHRib3ggW2tleV09XCInY29sb3JWYWx1ZSdcIiBbbGFiZWxdPVwiJ0NPTE9SLkFERF9WQUxVRV9IRVJFJyB8IHRyYW5zbGF0ZSBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1hdHRlZFZhbHVlXT1cImRhdGE/LnZhbHVlXCIgW3ZhbHVlXT1cImRhdGE/LnZhbHVlXCIgKHZhbHVlQ2hhbmdlKT1cIm9uQ29sb3JWYWx1ZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvcGVwLXRleHRib3g+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNoZWNrQUFDb21wbGllbnRcIiBjbGFzcz1cImNvbG9yLWNvbXBsaWVudC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBlcC1maWVsZC10aXRsZSBbbGFiZWxdPVwiJ0NPTE9SLkFBX0NPTVBMSUVOVCcgfCB0cmFuc2xhdGUgXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvcGVwLWZpZWxkLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sb3ItY29tcGxpZW50XCIgW25nU3R5bGVdPVwieyAnYmFja2dyb3VuZCc6IGNvbXBsaWVudENvbG9yIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImlzVXNlckNob29zZUFBQ29tcGxpZW50Q29sb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGVwLWljb24gbmFtZT1cInN5c3RlbV9va1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGVwLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBwZXAtZGlhbG9nLWFjdGlvbnM+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sb3ItYWN0aW9ucyBwZXAtc3BhY2luZy1lbGVtZW50LW5lZ2F0aXZlXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCAqbmdJZj1cImRhdGEuc2hvd0FBQ29tcGxpZW50XCIgY2xhc3M9XCJwZXAtc3BhY2luZy1lbGVtZW50XCIgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJjaGVja0FBQ29tcGxpZW50XCIgKGNoYW5nZSk9XCJjaGVja0FBQ29tcGxpZW50ID0gIWNoZWNrQUFDb21wbGllbnRcIiBbY2hlY2tlZF09XCJjaGVja0FBQ29tcGxpZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYm9keS14cyBlbGxpcHNpc1wiPnt7ICdDT0xPUi5BQV9DT01QTElFTlQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0LWRpYWxvZy1jbG9zZV09XCJudWxsXCIgY2xhc3M9XCJwZXAtc3BhY2luZy1lbGVtZW50IHBlcC1idXR0b24gbWQgd2Vha1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3snQUNUSU9OUy5DQU5DRUwnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cInBlcC1zcGFjaW5nLWVsZW1lbnQgcGVwLWJ1dHRvbiBtZCBzdHJvbmdcIiAoY2xpY2spPVwib25TYXZlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FDVElPTlMuT0snIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9wZXAtZGlhbG9nPlxuPC9kaXY+Il19
@@ -1,4 +1,4 @@
1
- import { Injectable } from '@angular/core';
1
+ import { Injectable, Optional } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "./session.service";
4
4
  import * as i2 from "../../http/services/http.service";
@@ -25,7 +25,7 @@ export class PepAddonService {
25
25
  //
26
26
  }
27
27
  get devServer() {
28
- return this.route.snapshot.queryParamMap.get('devServer') === 'true';
28
+ return this.route ? this.route.snapshot.queryParamMap.get('devServer') === 'true' : false;
29
29
  }
30
30
  getAddonBaseRelativePath(isAsync = false) {
31
31
  return isAsync
@@ -140,12 +140,14 @@ export class PepAddonService {
140
140
  ]);
141
141
  }
142
142
  }
143
- PepAddonService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepAddonService, deps: [{ token: i1.PepSessionService }, { token: i2.PepHttpService }, { token: i3.PepLoaderService }, { token: i4.PepTranslateService }, { token: i5.PepFileService }, { token: i6.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable });
143
+ PepAddonService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepAddonService, deps: [{ token: i1.PepSessionService }, { token: i2.PepHttpService }, { token: i3.PepLoaderService }, { token: i4.PepTranslateService }, { token: i5.PepFileService }, { token: i6.ActivatedRoute, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
144
144
  PepAddonService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepAddonService, providedIn: 'root' });
145
145
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepAddonService, decorators: [{
146
146
  type: Injectable,
147
147
  args: [{
148
148
  providedIn: 'root',
149
149
  }]
150
- }], ctorParameters: function () { return [{ type: i1.PepSessionService }, { type: i2.PepHttpService }, { type: i3.PepLoaderService }, { type: i4.PepTranslateService }, { type: i5.PepFileService }, { type: i6.ActivatedRoute }]; } });
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvc3JjL2NvcmUvY29tbW9uL3NlcnZpY2VzL2FkZG9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7QUFZM0M7O0VBRUU7QUFJRixNQUFNLE9BQU8sZUFBZTtJQVd4QixZQUNZLGNBQWlDLEVBQ2pDLFdBQTJCLEVBQzNCLGFBQStCLEVBQ2hDLGdCQUFxQyxFQUNyQyxXQUEyQixFQUMxQixLQUFxQjtRQUxyQixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQzNCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXFCO1FBQ3JDLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMxQixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQWhCaEIscUJBQWdCLEdBQUcsc0NBQXNDLENBQUM7UUFDM0UsOERBQThEO1FBQzdDLHNDQUFpQyxHQUFHLDRCQUE0QixDQUFDO1FBQ2pFLDRCQUF1QixHQUFHLGFBQWEsQ0FBQztRQUN4QyxrQ0FBNkIsR0FBRyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsUUFBUSxDQUFDO1FBY3JGLEVBQUU7SUFDTixDQUFDO0lBYkQsSUFBWSxTQUFTO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsS0FBSyxNQUFNLENBQUM7SUFDekUsQ0FBQztJQWFPLHdCQUF3QixDQUFDLE9BQU8sR0FBRyxLQUFLO1FBQzVDLE9BQU8sT0FBTztZQUNWLENBQUMsQ0FBQyxJQUFJLENBQUMsNkJBQTZCO1lBQ3BDLENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUM7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J0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUGVwU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL3Nlc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBQZXBGaWxlU2VydmljZSB9IGZyb20gJy4vZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBlcEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaHR0cC9zZXJ2aWNlcy9odHRwLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGVwTG9hZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2h0dHAvc2VydmljZXMvbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IElUcmFuc2xhdGlvblJlc291cmNlIH0gZnJvbSAnbmd4LXRyYW5zbGF0ZS1tdWx0aS1odHRwLWxvYWRlcic7XG5pbXBvcnQgeyBQZXBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGUuc2VydmljZSc7XG5cbi8qXG4gICAgVGhpcyBzZXJ2aWNlIGlzIHRoZSB3ZWJhcHAgYXBpIGZvciBhZGRvbiB1c2VnZS5cbiovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBBZGRvblNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgUEFHRVNfQURET05fVVVJRCA9ICc1MDA2MmUwYy05OTY3LTRlZDQtOTEwMi1mMmJjNTA2MDJkNDEnO1xuICAgIC8vIHByaXZhdGUgcmVhZG9ubHkgQURET05fQVNTRVRTX1BBVEhfS0VZID0gJ0FkZG9uQXNzZXRzUGF0aCc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBBRERPTlNfRElDVElPTkFSWV9BU1NFVFNfUEFUSF9LRVkgPSAnQWRkb25zRGljdGlvbmFyeUFzc2V0c1BhdGgnO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgQURET05fQVBJX1JFTEFUSVZFX1BBVEggPSAnL2FkZG9ucy9hcGknO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgQURET05fQVBJX0FTWU5DX1JFTEFUSVZFX1BBVEggPSBgJHt0aGlzLkFERE9OX0FQSV9SRUxBVElWRV9QQVRIfS9hc3luY2A7XG5cbiAgICBwcml2YXRlIGdldCBkZXZTZXJ2ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCdkZXZTZXJ2ZXInKSA9PT0gJ3RydWUnO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlOiBQZXBTZXNzaW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBodHRwU2VydmljZTogUGVwSHR0cFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbG9hZGVyU2VydmljZTogUGVwTG9hZGVyU2VydmljZSxcbiAgICAgICAgcHVibGljIHRyYW5zbGF0ZVNlcnZpY2U6IFBlcFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBmaWxlU2VydmljZTogUGVwRmlsZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICkge1xuICAgICAgICAvL1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QWRkb25CYXNlUmVsYXRpdmVQYXRoKGlzQXN5bmMgPSBmYWxzZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBpc0FzeW5jXG4gICAgICAgICAgICA/IHRoaXMuQURET05fQVBJX0FTWU5DX1JFTEFUSVZFX1BBVEhcbiAgICAgICAgICAgIDogdGhpcy5BRERPTl9BUElfUkVMQVRJVkVfUEFUSDtcbiAgICB9XG5cbiAgICBnZXRBZGRvblN0YXRpY0ZvbGRlcihhZGRvblVVSUQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIC8vIGlmIChhZGRvblVVSUQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgYWRkb25zRGljdGlvbmFyeSA9IHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0T2JqZWN0KHRoaXMuQURET05TX0RJQ1RJT05BUllfQVNTRVRTX1BBVEhfS0VZKTtcbiAgICAgICAgICAgIHJldHVybiBhZGRvbnNEaWN0aW9uYXJ5ICYmIGFkZG9uc0RpY3Rpb25hcnlbYWRkb25VVUlEXSA/IGFkZG9uc0RpY3Rpb25hcnlbYWRkb25VVUlEXSA6ICcnO1xuICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gcmV0dXJuIHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0T2JqZWN0KHRoaXMuQURET05fQVNTRVRTX1BBVEhfS0VZKSB8fCAnJztcbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgIHNldEFkZG9uU3RhdGljRm9sZGVyKHBhdGg6IHN0cmluZywgYWRkb25VVUlEOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgLy8gaWYgKGFkZG9uVVVJRC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBhZGRvbnNEaWN0aW9uYXJ5ID0gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRPYmplY3QodGhpcy5BRERPTlNfRElDVElPTkFSWV9BU1NFVFNfUEFUSF9LRVkpID8/IHt9O1xuICAgICAgICAgICAgYWRkb25zRGljdGlvbmFyeVthZGRvblVVSURdID0gcGF0aDtcbiAgICAgICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2V0T2JqZWN0KHRoaXMuQURET05TX0RJQ1RJT05BUllfQVNTRVRTX1BBVEhfS0VZLCBhZGRvbnNEaWN0aW9uYXJ5KTtcbiAgICAgICAgLy8gfSBlbHNlIHtcbiAgICAgICAgLy8gICAgIHJldHVybiB0aGlzLnNlc3Npb25TZXJ2aWNlLnNldE9iamVjdCh0aGlzLkFERE9OX0FTU0VUU19QQVRIX0tFWSwgcGF0aCk7XG4gICAgICAgIC8vIH1cbiAgICB9XG5cbiAgICBnZXRTZXJ2ZXJCYXNlVXJsKGFkZG9uVVVJRDogc3RyaW5nLCBmaWxlTmFtZSA9ICcnLCBpc0FzeW5jID0gZmFsc2UsIGxvY2FsaG9zdFBvcnQgPSA0NTAwKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZmlsZVRvQWRkID0gZmlsZU5hbWUubGVuZ3RoID4gMCA/IGAvJHtmaWxlTmFtZX1gIDogJyc7XG4gICAgICAgIFxuICAgICAgICAvLyBGb3IgZGV2U2VydmVyIHJ1biBzZXJ2ZXIgb24gbG9jYWxob3N0LlxuICAgICAgICBpZih0aGlzLmRldlNlcnZlcikge1xuICAgICAgICAgICAgcmV0dXJuIGBodHRwOi8vbG9jYWxob3N0OiR7bG9jYWxob3N0UG9ydH0ke2ZpbGVUb0FkZH1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYmFzZVVybCA9IHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0UGFwaUJhc2VVcmwoKTtcbiAgICAgICAgICAgIHJldHVybiBgJHtiYXNlVXJsfSR7dGhpcy5nZXRBZGRvbkJhc2VSZWxhdGl2ZVBhdGgoaXNBc3luYyl9LyR7YWRkb25VVUlEfSR7ZmlsZVRvQWRkfWA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRBZGRvbkFwaUNhbGwoXG4gICAgICAgIGFkZG9uVVVJRDogc3RyaW5nLFxuICAgICAgICBmaWxlTmFtZTogc3RyaW5nLFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgaHR0cE9wdGlvbnMgPSB7fSxcbiAgICAgICAgaXNBc3luYyA9IGZhbHNlXG4gICAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgLy8gcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuZ2V0UGFwaUFwaUNhbGwoXG4gICAgICAgIC8vICAgICBgJHt0aGlzLmdldEFkZG9uQmFzZVJlbGF0aXZlUGF0aChcbiAgICAgICAgLy8gICAgICAgICBpc0FzeW5jXG4gICAgICAgIC8vICAgICApfS8ke2FkZG9uVVVJRH0vJHtmaWxlTmFtZX0vJHtmdW5jdGlvbk5hbWV9YCxcbiAgICAgICAgLy8gICAgIGh0dHBPcHRpb25zXG4gICAgICAgIC8vICk7XG5cbiAgICAgICAgY29uc3QgcGFwaUJhc2VVcmwgPSB0aGlzLmdldFNlcnZlckJhc2VVcmwoYWRkb25VVUlELCBmaWxlTmFtZSwgaXNBc3luYyk7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLmdldEh0dHBDYWxsKGAke3BhcGlCYXNlVXJsfS8ke2Z1bmN0aW9uTmFtZX1gLCBodHRwT3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcG9zdEFkZG9uQXBpQ2FsbChcbiAgICAgICAgYWRkb25VVUlEOiBzdHJpbmcsXG4gICAgICAgIGZpbGVOYW1lOiBzdHJpbmcsXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBib2R5ID0ge30sXG4gICAgICAgIGh0dHBPcHRpb25zID0ge30sXG4gICAgICAgIGlzQXN5bmMgPSBmYWxzZVxuICAgICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIC8vIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnBvc3RQYXBpQXBpQ2FsbChcbiAgICAgICAgLy8gICAgIGAke3RoaXMuZ2V0QWRkb25CYXNlUmVsYXRpdmVQYXRoKFxuICAgICAgICAvLyAgICAgICAgIGlzQXN5bmNcbiAgICAgICAgLy8gICAgICl9LyR7YWRkb25VVUlEfS8ke2ZpbGVOYW1lfS8ke2Z1bmN0aW9uTmFtZX1gLFxuICAgICAgICAvLyAgICAgYm9keSxcbiAgICAgICAgLy8gICAgIGh0dHBPcHRpb25zXG4gICAgICAgIC8vICk7XG5cbiAgICAgICAgY29uc3QgcGFwaUJhc2VVcmwgPSB0aGlzLmdldFNlcnZlckJhc2VVcmwoYWRkb25VVUlELCBmaWxlTmFtZSwgaXNBc3luYyk7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnBvc3RIdHRwQ2FsbChgJHtwYXBpQmFzZVVybH0vJHtmdW5jdGlvbk5hbWV9YCwgYm9keSwgaHR0cE9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8vIFRPRE86IG5lZWQgdG8gY2hlayB0aGlzIGlmIHRoZSBsb2FkZXIgaXMgd29ya2luZy5cbiAgICBmZXRjaChpbnB1dDogUmVxdWVzdEluZm8sIGluaXQ/OiBSZXF1ZXN0SW5pdCk6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICAgICAgdGhpcy5sb2FkZXJTZXJ2aWNlLnNob3coKTtcblxuICAgICAgICByZXR1cm4gd2luZG93LmZldGNoKGlucHV0LCBpbml0KS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGVyU2VydmljZS5oaWRlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldE5neExpYlRyYW5zbGF0aW9uUmVzb3VyY2UoYWRkb25VVUlEOiBzdHJpbmcsIGxpYk5hbWUgPSAnbmd4LWxpYicpOiBJVHJhbnNsYXRpb25SZXNvdXJjZSB7XG4gICAgICAgIGNvbnN0IGFkZG9uU3RhdGljRm9sZGVyID0gdGhpcy5nZXRBZGRvblN0YXRpY0ZvbGRlcihhZGRvblVVSUQpO1xuICAgICAgICBjb25zdCB0cmFuc2xhdGlvbnNQYXRoOiBzdHJpbmcgPSB0aGlzLmZpbGVTZXJ2aWNlLmdldEFzc2V0c1RyYW5zbGF0aW9uc1BhdGgoYWRkb25TdGF0aWNGb2xkZXIsIGxpYk5hbWUpO1xuICAgICAgICBjb25zdCB0cmFuc2xhdGlvbnNTdWZmaXg6IHN0cmluZyA9IHRoaXMuZmlsZVNlcnZpY2UuZ2V0QXNzZXRzVHJhbnNsYXRpb25zU3VmZml4KGxpYk5hbWUpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmVmaXg6IHRyYW5zbGF0aW9uc1BhdGgsXG4gICAgICAgICAgICBzdWZmaXg6IHRyYW5zbGF0aW9uc1N1ZmZpeCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBnZXRBZGRvblRyYW5zbGF0aW9uUmVzb3VyY2UoYWRkb25VVUlEOiBzdHJpbmcpOiBJVHJhbnNsYXRpb25SZXNvdXJjZSB7XG4gICAgICAgIGNvbnN0IGFkZG9uU3RhdGljRm9sZGVyID0gdGhpcy5nZXRBZGRvblN0YXRpY0ZvbGRlcihhZGRvblVVSUQpO1xuICAgICAgICBjb25zdCBkZWZhdWx0U3ViRm9sZGVyID0gJ2Fzc2V0cy9pMThuLyc7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZWZpeDogYWRkb25TdGF0aWNGb2xkZXIubGVuZ3RoID4gMCA/IGAke2FkZG9uU3RhdGljRm9sZGVyfSR7ZGVmYXVsdFN1YkZvbGRlcn1gIDogYC8ke2RlZmF1bHRTdWJGb2xkZXJ9YCxcbiAgICAgICAgICAgIHN1ZmZpeDogJy5qc29uJyxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBzZXREZWZhdWx0VHJhbnNsYXRlTGFuZyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHVybExhbmdQYXJhbSA9ICd1c2VyTGFuZycpIHtcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnNldERlZmF1bHRUcmFuc2xhdGVMYW5nKHRyYW5zbGF0ZSwgdXJsTGFuZ1BhcmFtKTtcbiAgICB9XG5cbiAgICBnZXRQYWdlc0FkZG9uVVVJRCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuUEFHRVNfQURET05fVVVJRDtcbiAgICB9XG5cbiAgICAvLyAvLyBEZXByZWNhdGVkIG5lZWQgdG8gZGVsZXRlIGluIG5leHQgbWFqb3IuXG4gICAgLy8gcHVibGljIHN0YXRpYyBjcmVhdGVEZWZhdWx0TXVsdGlUcmFuc2xhdGVMb2FkZXIoXG4gICAgLy8gICAgIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgLy8gICAgIGZpbGVTZXJ2aWNlOiBQZXBGaWxlU2VydmljZSxcbiAgICAvLyAgICAgYWRkb25TZXJ2aWNlOiBQZXBBZGRvblNlcnZpY2UsXG4gICAgLy8gICAgIGFkZG9uVVVJRCA9ICcnXG4gICAgLy8gKSB7XG4gICAgLy8gICAgIGNvbnN0IG5neExpYlRyYW5zbGF0aW9uUmVzb3VyY2UgPSBhZGRvblNlcnZpY2UuZ2V0Tmd4TGliVHJhbnNsYXRpb25SZXNvdXJjZShhZGRvblVVSUQpO1xuICAgIC8vICAgICBjb25zdCBhZGRvblRyYW5zbGF0aW9uUmVzb3VyY2UgPSBhZGRvblNlcnZpY2UuZ2V0QWRkb25UcmFuc2xhdGlvblJlc291cmNlKGFkZG9uVVVJRCk7XG5cbiAgICAvLyAgICAgcmV0dXJuIGFkZG9uU2VydmljZS50cmFuc2xhdGVTZXJ2aWNlLmNyZWF0ZU11bHRpVHJhbnNsYXRlTG9hZGVyKFtcbiAgICAvLyAgICAgICAgIG5neExpYlRyYW5zbGF0aW9uUmVzb3VyY2UsXG4gICAgLy8gICAgICAgICBhZGRvblRyYW5zbGF0aW9uUmVzb3VyY2VcbiAgICAvLyAgICAgXSk7XG4gICAgLy8gfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVNdWx0aVRyYW5zbGF0ZUxvYWRlcihcbiAgICAgICAgYWRkb25VVUlEOiBzdHJpbmcsXG4gICAgICAgIGFkZG9uU2VydmljZTogUGVwQWRkb25TZXJ2aWNlLFxuICAgICAgICBsaWJzTmFtZSA9IFsnbmd4LWxpYiddLFxuICAgICkge1xuICAgICAgICBjb25zdCBuZ3hMaWJUcmFuc2xhdGlvblJlc291cmNlcyA9IFtdO1xuXG4gICAgICAgIGlmIChsaWJzTmFtZT8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGxpYnNOYW1lLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpYk5hbWUgPSBsaWJzTmFtZVtpbmRleF07XG4gICAgICAgICAgICAgICAgbmd4TGliVHJhbnNsYXRpb25SZXNvdXJjZXMucHVzaChhZGRvblNlcnZpY2UuZ2V0Tmd4TGliVHJhbnNsYXRpb25SZXNvdXJjZShhZGRvblVVSUQsIGxpYk5hbWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFkZG9uVHJhbnNsYXRpb25SZXNvdXJjZSA9IGFkZG9uU2VydmljZS5nZXRBZGRvblRyYW5zbGF0aW9uUmVzb3VyY2UoYWRkb25VVUlEKTtcblxuICAgICAgICByZXR1cm4gYWRkb25TZXJ2aWNlLnRyYW5zbGF0ZVNlcnZpY2UuY3JlYXRlTXVsdGlUcmFuc2xhdGVMb2FkZXIoW1xuICAgICAgICAgICAgLi4ubmd4TGliVHJhbnNsYXRpb25SZXNvdXJjZXMsXG4gICAgICAgICAgICBhZGRvblRyYW5zbGF0aW9uUmVzb3VyY2VcbiAgICAgICAgXSk7XG4gICAgfVxufVxuIl19
150
+ }], ctorParameters: function () { return [{ type: i1.PepSessionService }, { type: i2.PepHttpService }, { type: i3.PepLoaderService }, { type: i4.PepTranslateService }, { type: i5.PepFileService }, { type: i6.ActivatedRoute, decorators: [{
151
+ type: Optional
152
+ }] }]; } });
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvc3JjL2NvcmUvY29tbW9uL3NlcnZpY2VzL2FkZG9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7O0FBWXJEOztFQUVFO0FBSUYsTUFBTSxPQUFPLGVBQWU7SUFXeEIsWUFDWSxjQUFpQyxFQUNqQyxXQUEyQixFQUMzQixhQUErQixFQUNoQyxnQkFBcUMsRUFDckMsV0FBMkIsRUFDZCxLQUFxQjtRQUxqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQzNCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXFCO1FBQ3JDLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBaEI1QixxQkFBZ0IsR0FBRyxzQ0FBc0MsQ0FBQztRQUMzRSw4REFBOEQ7UUFDN0Msc0NBQWlDLEdBQUcsNEJBQTRCLENBQUM7UUFDakUsNEJBQXVCLEdBQUcsYUFBYSxDQUFDO1FBQ3hDLGtDQUE2QixHQUFHLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixRQUFRLENBQUM7UUFjckYsRUFBRTtJQUNOLENBQUM7SUFiRCxJQUFZLFNBQVM7UUFDakIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzlGLENBQUM7SUFhTyx3QkFBd0IsQ0FBQyxPQUFPLEdBQUcsS0FBSztRQUM1QyxPQUFPLE9BQU87WUFDVixDQUFDLENBQUMsSUFBSSxDQUFDLDZCQUE2QjtZQUNwQyxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDO0lBQ3ZDLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxTQUFpQjtRQUNsQyw4QkFBOEI7UUFDMUIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUMvRixPQUFPLGdCQUFnQixJQUFJLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzlGLFdBQVc7UUFDUCwwRUFBMEU7UUFDOUUsSUFBSTtJQUNSLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxJQUFZLEVBQUUsU0FBaUI7UUFDaEQsOEJBQThCO1FBQzFCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNuQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsaUNBQWlDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUM1RixXQUFXO1FBQ1gsOEVBQThFO1FBQzlFLElBQUk7SUFDUixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsU0FBaUIsRUFBRSxRQUFRLEdBQUcsRUFBRSxFQUFFLE9BQU8sR0FBRyxLQUFLLEVBQUUsYUFBYSxHQUFHLElBQUk7UUFDcEYsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUU1RCx5Q0FBeUM7UUFDekMsSUFBRyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2YsT0FBTyxvQkFBb0IsYUFBYSxHQUFHLFNBQVMsRUFBRSxDQUFDO1NBQzFEO2FBQU07WUFDSCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3JELE9BQU8sR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxJQUFJLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQztTQUN6RjtJQUNMLENBQUM7SUFFRCxlQUFlLENBQ1gsU0FBaUIsRUFDakIsUUFBZ0IsRUFDaEIsWUFBb0IsRUFDcEIsV0FBVyxHQUFHLEVBQUUsRUFDaEIsT0FBTyxHQUFHLEtBQUs7UUFFZiwwQ0FBMEM7UUFDMUMsd0NBQXdDO1FBQ3hDLGtCQUFrQjtRQUNsQixvREFBb0Q7UUFDcEQsa0JBQWtCO1FBQ2xCLEtBQUs7UUFFTCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN4RSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEdBQUcsV0FBVyxJQUFJLFlBQVksRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxnQkFBZ0IsQ0FDWixTQUFpQixFQUNqQixRQUFnQixFQUNoQixZQUFvQixFQUNwQixJQUFJLEdBQUcsRUFBRSxFQUNULFdBQVcsR0FBRyxFQUFFLEVBQ2hCLE9BQU8sR0FBRyxLQUFLO1FBRWYsMkNBQTJDO1FBQzNDLHdDQUF3QztRQUN4QyxrQkFBa0I7UUFDbEIsb0RBQW9EO1FBQ3BELFlBQVk7UUFDWixrQkFBa0I7UUFDbEIsS0FBSztRQUVMLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsR0FBRyxXQUFXLElBQUksWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxvREFBb0Q7SUFDcEQsS0FBSyxDQUFDLEtBQWtCLEVBQUUsSUFBa0I7UUFDeEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUUxQixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDMUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxTQUFpQixFQUFFLE9BQU8sR0FBRyxTQUFTO1FBQy9ELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sZ0JBQWdCLEdBQVcsSUFBSSxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN4RyxNQUFNLGtCQUFrQixHQUFXLElBQUksQ0FBQyxXQUFXLENBQUMsMkJBQTJCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFekYsT0FBTztZQUNILE1BQU0sRUFBRSxnQkFBZ0I7WUFDeEIsTUFBTSxFQUFFLGtCQUFrQjtTQUM3QixDQUFDO0lBQ04sQ0FBQztJQUVELDJCQUEyQixDQUFDLFNBQWlCO1FBQ3pDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sZ0JBQWdCLEdBQUcsY0FBYyxDQUFDO1FBRXhDLE9BQU87WUFDSCxNQUFNLEVBQUUsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxpQkFBaUIsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLGdCQUFnQixFQUFFO1lBQ3pHLE1BQU0sRUFBRSxPQUFPO1NBQ2xCLENBQUM7SUFDTixDQUFDO0lBRUQsdUJBQXVCLENBQUMsU0FBMkIsRUFBRSxZQUFZLEdBQUcsVUFBVTtRQUMxRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxpQkFBaUI7UUFDYixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsOENBQThDO0lBQzlDLG1EQUFtRDtJQUNuRCx3QkFBd0I7SUFDeEIsbUNBQW1DO0lBQ25DLHFDQUFxQztJQUNyQyxxQkFBcUI7SUFDckIsTUFBTTtJQUNOLDhGQUE4RjtJQUM5Riw0RkFBNEY7SUFFNUYsd0VBQXdFO0lBQ3hFLHFDQUFxQztJQUNyQyxtQ0FBbUM7SUFDbkMsVUFBVTtJQUNWLElBQUk7SUFFRyxNQUFNLENBQUMsMEJBQTBCLENBQ3BDLFNBQWlCLEVBQ2pCLFlBQTZCLEVBQzdCLFFBQVEsR0FBRyxDQUFDLFNBQVMsQ0FBQztRQUV0QixNQUFNLDBCQUEwQixHQUFHLEVBQUUsQ0FBQztRQUV0QyxJQUFJLFFBQVEsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3RCLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUNsRCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2hDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsNEJBQTRCLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDbEc7U0FDSjtRQUVELE1BQU0sd0JBQXdCLEdBQUcsWUFBWSxDQUFDLDJCQUEyQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXJGLE9BQU8sWUFBWSxDQUFDLGdCQUFnQixDQUFDLDBCQUEwQixDQUFDO1lBQzVELEdBQUcsMEJBQTBCO1lBQzdCLHdCQUF3QjtTQUMzQixDQUFDLENBQUM7SUFDUCxDQUFDOzs0R0EzS1EsZUFBZTtnSEFBZixlQUFlLGNBRlosTUFBTTsyRkFFVCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBa0JRLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUGVwU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL3Nlc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBQZXBGaWxlU2VydmljZSB9IGZyb20gJy4vZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBlcEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaHR0cC9zZXJ2aWNlcy9odHRwLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGVwTG9hZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2h0dHAvc2VydmljZXMvbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IElUcmFuc2xhdGlvblJlc291cmNlIH0gZnJvbSAnbmd4LXRyYW5zbGF0ZS1tdWx0aS1odHRwLWxvYWRlcic7XG5pbXBvcnQgeyBQZXBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGUuc2VydmljZSc7XG5cbi8qXG4gICAgVGhpcyBzZXJ2aWNlIGlzIHRoZSB3ZWJhcHAgYXBpIGZvciBhZGRvbiB1c2VnZS5cbiovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBBZGRvblNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgUEFHRVNfQURET05fVVVJRCA9ICc1MDA2MmUwYy05OTY3LTRlZDQtOTEwMi1mMmJjNTA2MDJkNDEnO1xuICAgIC8vIHByaXZhdGUgcmVhZG9ubHkgQURET05fQVNTRVRTX1BBVEhfS0VZID0gJ0FkZG9uQXNzZXRzUGF0aCc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBBRERPTlNfRElDVElPTkFSWV9BU1NFVFNfUEFUSF9LRVkgPSAnQWRkb25zRGljdGlvbmFyeUFzc2V0c1BhdGgnO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgQURET05fQVBJX1JFTEFUSVZFX1BBVEggPSAnL2FkZG9ucy9hcGknO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgQURET05fQVBJX0FTWU5DX1JFTEFUSVZFX1BBVEggPSBgJHt0aGlzLkFERE9OX0FQSV9SRUxBVElWRV9QQVRIfS9hc3luY2A7XG5cbiAgICBwcml2YXRlIGdldCBkZXZTZXJ2ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlID8gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldCgnZGV2U2VydmVyJykgPT09ICd0cnVlJyA6IGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlOiBQZXBTZXNzaW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBodHRwU2VydmljZTogUGVwSHR0cFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbG9hZGVyU2VydmljZTogUGVwTG9hZGVyU2VydmljZSxcbiAgICAgICAgcHVibGljIHRyYW5zbGF0ZVNlcnZpY2U6IFBlcFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBmaWxlU2VydmljZTogUGVwRmlsZVNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICkge1xuICAgICAgICAvL1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QWRkb25CYXNlUmVsYXRpdmVQYXRoKGlzQXN5bmMgPSBmYWxzZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBpc0FzeW5jXG4gICAgICAgICAgICA/IHRoaXMuQURET05fQVBJX0FTWU5DX1JFTEFUSVZFX1BBVEhcbiAgICAgICAgICAgIDogdGhpcy5BRERPTl9BUElfUkVMQVRJVkVfUEFUSDtcbiAgICB9XG5cbiAgICBnZXRBZGRvblN0YXRpY0ZvbGRlcihhZGRvblVVSUQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIC8vIGlmIChhZGRvblVVSUQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgYWRkb25zRGljdGlvbmFyeSA9IHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0T2JqZWN0KHRoaXMuQURET05TX0RJQ1RJT05BUllfQVNTRVRTX1BBVEhfS0VZKTtcbiAgICAgICAgICAgIHJldHVybiBhZGRvbnNEaWN0aW9uYXJ5ICYmIGFkZG9uc0RpY3Rpb25hcnlbYWRkb25VVUlEXSA/IGFkZG9uc0RpY3Rpb25hcnlbYWRkb25VVUlEXSA6ICcnO1xuICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gcmV0dXJuIHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0T2JqZWN0KHRoaXMuQURET05fQVNTRVRTX1BBVEhfS0VZKSB8fCAnJztcbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgIHNldEFkZG9uU3RhdGljRm9sZGVyKHBhdGg6IHN0cmluZywgYWRkb25VVUlEOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgLy8gaWYgKGFkZG9uVVVJRC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBhZGRvbnNEaWN0aW9uYXJ5ID0gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRPYmplY3QodGhpcy5BRERPTlNfRElDVElPTkFSWV9BU1NFVFNfUEFUSF9LRVkpID8/IHt9O1xuICAgICAgICAgICAgYWRkb25zRGljdGlvbmFyeVthZGRvblVVSURdID0gcGF0aDtcbiAgICAgICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2V0T2JqZWN0KHRoaXMuQURET05TX0RJQ1RJT05BUllfQVNTRVRTX1BBVEhfS0VZLCBhZGRvbnNEaWN0aW9uYXJ5KTtcbiAgICAgICAgLy8gfSBlbHNlIHtcbiAgICAgICAgLy8gICAgIHJldHVybiB0aGlzLnNlc3Npb25TZXJ2aWNlLnNldE9iamVjdCh0aGlzLkFERE9OX0FTU0VUU19QQVRIX0tFWSwgcGF0aCk7XG4gICAgICAgIC8vIH1cbiAgICB9XG5cbiAgICBnZXRTZXJ2ZXJCYXNlVXJsKGFkZG9uVVVJRDogc3RyaW5nLCBmaWxlTmFtZSA9ICcnLCBpc0FzeW5jID0gZmFsc2UsIGxvY2FsaG9zdFBvcnQgPSA0NTAwKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZmlsZVRvQWRkID0gZmlsZU5hbWUubGVuZ3RoID4gMCA/IGAvJHtmaWxlTmFtZX1gIDogJyc7XG4gICAgICAgIFxuICAgICAgICAvLyBGb3IgZGV2U2VydmVyIHJ1biBzZXJ2ZXIgb24gbG9jYWxob3N0LlxuICAgICAgICBpZih0aGlzLmRldlNlcnZlcikge1xuICAgICAgICAgICAgcmV0dXJuIGBodHRwOi8vbG9jYWxob3N0OiR7bG9jYWxob3N0UG9ydH0ke2ZpbGVUb0FkZH1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYmFzZVVybCA9IHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0UGFwaUJhc2VVcmwoKTtcbiAgICAgICAgICAgIHJldHVybiBgJHtiYXNlVXJsfSR7dGhpcy5nZXRBZGRvbkJhc2VSZWxhdGl2ZVBhdGgoaXNBc3luYyl9LyR7YWRkb25VVUlEfSR7ZmlsZVRvQWRkfWA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRBZGRvbkFwaUNhbGwoXG4gICAgICAgIGFkZG9uVVVJRDogc3RyaW5nLFxuICAgICAgICBmaWxlTmFtZTogc3RyaW5nLFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgaHR0cE9wdGlvbnMgPSB7fSxcbiAgICAgICAgaXNBc3luYyA9IGZhbHNlXG4gICAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgLy8gcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuZ2V0UGFwaUFwaUNhbGwoXG4gICAgICAgIC8vICAgICBgJHt0aGlzLmdldEFkZG9uQmFzZVJlbGF0aXZlUGF0aChcbiAgICAgICAgLy8gICAgICAgICBpc0FzeW5jXG4gICAgICAgIC8vICAgICApfS8ke2FkZG9uVVVJRH0vJHtmaWxlTmFtZX0vJHtmdW5jdGlvbk5hbWV9YCxcbiAgICAgICAgLy8gICAgIGh0dHBPcHRpb25zXG4gICAgICAgIC8vICk7XG5cbiAgICAgICAgY29uc3QgcGFwaUJhc2VVcmwgPSB0aGlzLmdldFNlcnZlckJhc2VVcmwoYWRkb25VVUlELCBmaWxlTmFtZSwgaXNBc3luYyk7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLmdldEh0dHBDYWxsKGAke3BhcGlCYXNlVXJsfS8ke2Z1bmN0aW9uTmFtZX1gLCBodHRwT3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcG9zdEFkZG9uQXBpQ2FsbChcbiAgICAgICAgYWRkb25VVUlEOiBzdHJpbmcsXG4gICAgICAgIGZpbGVOYW1lOiBzdHJpbmcsXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBib2R5ID0ge30sXG4gICAgICAgIGh0dHBPcHRpb25zID0ge30sXG4gICAgICAgIGlzQXN5bmMgPSBmYWxzZVxuICAgICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIC8vIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnBvc3RQYXBpQXBpQ2FsbChcbiAgICAgICAgLy8gICAgIGAke3RoaXMuZ2V0QWRkb25CYXNlUmVsYXRpdmVQYXRoKFxuICAgICAgICAvLyAgICAgICAgIGlzQXN5bmNcbiAgICAgICAgLy8gICAgICl9LyR7YWRkb25VVUlEfS8ke2ZpbGVOYW1lfS8ke2Z1bmN0aW9uTmFtZX1gLFxuICAgICAgICAvLyAgICAgYm9keSxcbiAgICAgICAgLy8gICAgIGh0dHBPcHRpb25zXG4gICAgICAgIC8vICk7XG5cbiAgICAgICAgY29uc3QgcGFwaUJhc2VVcmwgPSB0aGlzLmdldFNlcnZlckJhc2VVcmwoYWRkb25VVUlELCBmaWxlTmFtZSwgaXNBc3luYyk7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnBvc3RIdHRwQ2FsbChgJHtwYXBpQmFzZVVybH0vJHtmdW5jdGlvbk5hbWV9YCwgYm9keSwgaHR0cE9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8vIFRPRE86IG5lZWQgdG8gY2hlayB0aGlzIGlmIHRoZSBsb2FkZXIgaXMgd29ya2luZy5cbiAgICBmZXRjaChpbnB1dDogUmVxdWVzdEluZm8sIGluaXQ/OiBSZXF1ZXN0SW5pdCk6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICAgICAgdGhpcy5sb2FkZXJTZXJ2aWNlLnNob3coKTtcblxuICAgICAgICByZXR1cm4gd2luZG93LmZldGNoKGlucHV0LCBpbml0KS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGVyU2VydmljZS5oaWRlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldE5neExpYlRyYW5zbGF0aW9uUmVzb3VyY2UoYWRkb25VVUlEOiBzdHJpbmcsIGxpYk5hbWUgPSAnbmd4LWxpYicpOiBJVHJhbnNsYXRpb25SZXNvdXJjZSB7XG4gICAgICAgIGNvbnN0IGFkZG9uU3RhdGljRm9sZGVyID0gdGhpcy5nZXRBZGRvblN0YXRpY0ZvbGRlcihhZGRvblVVSUQpO1xuICAgICAgICBjb25zdCB0cmFuc2xhdGlvbnNQYXRoOiBzdHJpbmcgPSB0aGlzLmZpbGVTZXJ2aWNlLmdldEFzc2V0c1RyYW5zbGF0aW9uc1BhdGgoYWRkb25TdGF0aWNGb2xkZXIsIGxpYk5hbWUpO1xuICAgICAgICBjb25zdCB0cmFuc2xhdGlvbnNTdWZmaXg6IHN0cmluZyA9IHRoaXMuZmlsZVNlcnZpY2UuZ2V0QXNzZXRzVHJhbnNsYXRpb25zU3VmZml4KGxpYk5hbWUpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmVmaXg6IHRyYW5zbGF0aW9uc1BhdGgsXG4gICAgICAgICAgICBzdWZmaXg6IHRyYW5zbGF0aW9uc1N1ZmZpeCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBnZXRBZGRvblRyYW5zbGF0aW9uUmVzb3VyY2UoYWRkb25VVUlEOiBzdHJpbmcpOiBJVHJhbnNsYXRpb25SZXNvdXJjZSB7XG4gICAgICAgIGNvbnN0IGFkZG9uU3RhdGljRm9sZGVyID0gdGhpcy5nZXRBZGRvblN0YXRpY0ZvbGRlcihhZGRvblVVSUQpO1xuICAgICAgICBjb25zdCBkZWZhdWx0U3ViRm9sZGVyID0gJ2Fzc2V0cy9pMThuLyc7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZWZpeDogYWRkb25TdGF0aWNGb2xkZXIubGVuZ3RoID4gMCA/IGAke2FkZG9uU3RhdGljRm9sZGVyfSR7ZGVmYXVsdFN1YkZvbGRlcn1gIDogYC8ke2RlZmF1bHRTdWJGb2xkZXJ9YCxcbiAgICAgICAgICAgIHN1ZmZpeDogJy5qc29uJyxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBzZXREZWZhdWx0VHJhbnNsYXRlTGFuZyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHVybExhbmdQYXJhbSA9ICd1c2VyTGFuZycpIHtcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnNldERlZmF1bHRUcmFuc2xhdGVMYW5nKHRyYW5zbGF0ZSwgdXJsTGFuZ1BhcmFtKTtcbiAgICB9XG5cbiAgICBnZXRQYWdlc0FkZG9uVVVJRCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuUEFHRVNfQURET05fVVVJRDtcbiAgICB9XG5cbiAgICAvLyAvLyBEZXByZWNhdGVkIG5lZWQgdG8gZGVsZXRlIGluIG5leHQgbWFqb3IuXG4gICAgLy8gcHVibGljIHN0YXRpYyBjcmVhdGVEZWZhdWx0TXVsdGlUcmFuc2xhdGVMb2FkZXIoXG4gICAgLy8gICAgIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgLy8gICAgIGZpbGVTZXJ2aWNlOiBQZXBGaWxlU2VydmljZSxcbiAgICAvLyAgICAgYWRkb25TZXJ2aWNlOiBQZXBBZGRvblNlcnZpY2UsXG4gICAgLy8gICAgIGFkZG9uVVVJRCA9ICcnXG4gICAgLy8gKSB7XG4gICAgLy8gICAgIGNvbnN0IG5neExpYlRyYW5zbGF0aW9uUmVzb3VyY2UgPSBhZGRvblNlcnZpY2UuZ2V0Tmd4TGliVHJhbnNsYXRpb25SZXNvdXJjZShhZGRvblVVSUQpO1xuICAgIC8vICAgICBjb25zdCBhZGRvblRyYW5zbGF0aW9uUmVzb3VyY2UgPSBhZGRvblNlcnZpY2UuZ2V0QWRkb25UcmFuc2xhdGlvblJlc291cmNlKGFkZG9uVVVJRCk7XG5cbiAgICAvLyAgICAgcmV0dXJuIGFkZG9uU2VydmljZS50cmFuc2xhdGVTZXJ2aWNlLmNyZWF0ZU11bHRpVHJhbnNsYXRlTG9hZGVyKFtcbiAgICAvLyAgICAgICAgIG5neExpYlRyYW5zbGF0aW9uUmVzb3VyY2UsXG4gICAgLy8gICAgICAgICBhZGRvblRyYW5zbGF0aW9uUmVzb3VyY2VcbiAgICAvLyAgICAgXSk7XG4gICAgLy8gfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVNdWx0aVRyYW5zbGF0ZUxvYWRlcihcbiAgICAgICAgYWRkb25VVUlEOiBzdHJpbmcsXG4gICAgICAgIGFkZG9uU2VydmljZTogUGVwQWRkb25TZXJ2aWNlLFxuICAgICAgICBsaWJzTmFtZSA9IFsnbmd4LWxpYiddLFxuICAgICkge1xuICAgICAgICBjb25zdCBuZ3hMaWJUcmFuc2xhdGlvblJlc291cmNlcyA9IFtdO1xuXG4gICAgICAgIGlmIChsaWJzTmFtZT8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGxpYnNOYW1lLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpYk5hbWUgPSBsaWJzTmFtZVtpbmRleF07XG4gICAgICAgICAgICAgICAgbmd4TGliVHJhbnNsYXRpb25SZXNvdXJjZXMucHVzaChhZGRvblNlcnZpY2UuZ2V0Tmd4TGliVHJhbnNsYXRpb25SZXNvdXJjZShhZGRvblVVSUQsIGxpYk5hbWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFkZG9uVHJhbnNsYXRpb25SZXNvdXJjZSA9IGFkZG9uU2VydmljZS5nZXRBZGRvblRyYW5zbGF0aW9uUmVzb3VyY2UoYWRkb25VVUlEKTtcblxuICAgICAgICByZXR1cm4gYWRkb25TZXJ2aWNlLnRyYW5zbGF0ZVNlcnZpY2UuY3JlYXRlTXVsdGlUcmFuc2xhdGVMb2FkZXIoW1xuICAgICAgICAgICAgLi4ubmd4TGliVHJhbnNsYXRpb25SZXNvdXJjZXMsXG4gICAgICAgICAgICBhZGRvblRyYW5zbGF0aW9uUmVzb3VyY2VcbiAgICAgICAgXSk7XG4gICAgfVxufVxuIl19