@pepperi-addons/ngx-lib 0.4.1-beta.50 → 0.4.1-beta.52

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 (57) hide show
  1. package/core/customization/customization.model.d.ts +1 -3
  2. package/esm2020/address/address.component.mjs +1 -1
  3. package/esm2020/core/common/services/validator.service.mjs +2 -3
  4. package/esm2020/core/customization/customization.model.mjs +5 -3
  5. package/esm2020/form/field-generator.component.mjs +1 -1
  6. package/esm2020/form/form.component.mjs +3 -3
  7. package/esm2020/form/internal-field-generator.component.mjs +1 -1
  8. package/esm2020/profile-data-views-list/profile-data-views-list.component.mjs +1 -1
  9. package/esm2020/quantity-selector/quantity-selector.component.mjs +9 -1
  10. package/esm2020/query-builder/query-builder-item/query-builder-item.component.mjs +1 -1
  11. package/esm2020/select/select.component.mjs +6 -3
  12. package/esm2020/smart-filters/boolean-filter/boolean-filter.component.mjs +1 -1
  13. package/esm2020/smart-filters/date-filter/date-filter.component.mjs +1 -1
  14. package/esm2020/smart-filters/multi-select-filter/multi-select-filter.component.mjs +1 -1
  15. package/esm2020/smart-filters/number-filter/number-filter.component.mjs +1 -1
  16. package/esm2020/smart-filters/text-filter/text-filter.component.mjs +1 -1
  17. package/esm2020/textbox/textbox.component.mjs +37 -32
  18. package/fesm2015/pepperi-addons-ngx-lib-address.mjs +1 -1
  19. package/fesm2015/pepperi-addons-ngx-lib-address.mjs.map +1 -1
  20. package/fesm2015/pepperi-addons-ngx-lib-form.mjs +4 -4
  21. package/fesm2015/pepperi-addons-ngx-lib-form.mjs.map +1 -1
  22. package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.mjs +1 -1
  23. package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.mjs.map +1 -1
  24. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.mjs +8 -0
  25. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.mjs.map +1 -1
  26. package/fesm2015/pepperi-addons-ngx-lib-query-builder.mjs +1 -1
  27. package/fesm2015/pepperi-addons-ngx-lib-query-builder.mjs.map +1 -1
  28. package/fesm2015/pepperi-addons-ngx-lib-select.mjs +5 -2
  29. package/fesm2015/pepperi-addons-ngx-lib-select.mjs.map +1 -1
  30. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.mjs +5 -5
  31. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.mjs.map +1 -1
  32. package/fesm2015/pepperi-addons-ngx-lib-textbox.mjs +38 -33
  33. package/fesm2015/pepperi-addons-ngx-lib-textbox.mjs.map +1 -1
  34. package/fesm2015/pepperi-addons-ngx-lib.mjs +6 -4
  35. package/fesm2015/pepperi-addons-ngx-lib.mjs.map +1 -1
  36. package/fesm2020/pepperi-addons-ngx-lib-address.mjs +1 -1
  37. package/fesm2020/pepperi-addons-ngx-lib-address.mjs.map +1 -1
  38. package/fesm2020/pepperi-addons-ngx-lib-form.mjs +4 -4
  39. package/fesm2020/pepperi-addons-ngx-lib-form.mjs.map +1 -1
  40. package/fesm2020/pepperi-addons-ngx-lib-profile-data-views-list.mjs +1 -1
  41. package/fesm2020/pepperi-addons-ngx-lib-profile-data-views-list.mjs.map +1 -1
  42. package/fesm2020/pepperi-addons-ngx-lib-quantity-selector.mjs +8 -0
  43. package/fesm2020/pepperi-addons-ngx-lib-quantity-selector.mjs.map +1 -1
  44. package/fesm2020/pepperi-addons-ngx-lib-query-builder.mjs +1 -1
  45. package/fesm2020/pepperi-addons-ngx-lib-query-builder.mjs.map +1 -1
  46. package/fesm2020/pepperi-addons-ngx-lib-select.mjs +5 -2
  47. package/fesm2020/pepperi-addons-ngx-lib-select.mjs.map +1 -1
  48. package/fesm2020/pepperi-addons-ngx-lib-smart-filters.mjs +5 -5
  49. package/fesm2020/pepperi-addons-ngx-lib-smart-filters.mjs.map +1 -1
  50. package/fesm2020/pepperi-addons-ngx-lib-textbox.mjs +38 -32
  51. package/fesm2020/pepperi-addons-ngx-lib-textbox.mjs.map +1 -1
  52. package/fesm2020/pepperi-addons-ngx-lib.mjs +5 -4
  53. package/fesm2020/pepperi-addons-ngx-lib.mjs.map +1 -1
  54. package/package.json +1 -1
  55. package/select/select.component.d.ts +2 -1
  56. package/src/core/style/components/checkbox.scss +4 -0
  57. package/textbox/textbox.component.d.ts +3 -8
@@ -98,13 +98,11 @@ export declare type PepTextboxFieldType = 'text' | 'link' | 'email' | 'phone' |
98
98
  interface IPepTextboxFieldOptions extends IPepFieldBaseOptions {
99
99
  type?: PepTextboxFieldType;
100
100
  regex?: string | RegExp;
101
- regexError?: string;
102
101
  }
103
102
  export declare class PepTextboxField extends PepFieldBase {
104
103
  controlType: string;
105
104
  type: PepTextboxFieldType;
106
- regex: string | RegExp;
107
- regexError: string;
105
+ regex?: string | RegExp;
108
106
  digitsNumberAfterDecimalPoint: number;
109
107
  constructor(options?: IPepTextboxFieldOptions);
110
108
  update(options: IPepTextboxFieldOptions): void;
@@ -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\" [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", "regex", "regexError", "isInFocus"], 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", "fontBodyType"] }], 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\" [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", "regex", "regexError", "isInFocus"], 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", "typeaheadDebounceInterval"], outputs: ["valueChange", "formValidationChange"] }, { kind: "component", type: i6.PepFieldTitleComponent, selector: "pep-field-title", inputs: ["label", "mandatory", "disabled", "maxFieldCharacters", "hint", "xAlignment", "showTitle", "inputLength", "fontBodyType"] }], 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\" [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"] }]
@@ -141,8 +141,7 @@ export class PepValidatorService {
141
141
  return valid ? value : null;
142
142
  }
143
143
  validatePhone(value) {
144
- // test phone with regular expression, when
145
- // phone is invalid, replace it with the previousValue
144
+ // test phone with regular expression
146
145
  const valid = new RegExp(this.phone).test(value);
147
146
  return valid;
148
147
  }
@@ -270,4 +269,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
270
269
  }], ctorParameters: function () { return [{ type: i1.TranslateService, decorators: [{
271
270
  type: Optional
272
271
  }] }]; } });
273
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL3NyYy9jb3JlL2NvbW1vbi9zZXJ2aWNlcy92YWxpZGF0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBR0gsV0FBVyxFQUNYLFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDOzs7QUFLeEIsTUFBTSxPQUFPLG1CQUFtQjtJQVU1QixZQUFnQyxZQUE4QixJQUFJO1FBQWxDLGNBQVMsR0FBVCxTQUFTLENBQXlCO1FBVGxFLHVCQUF1QjtRQUNkLG9CQUFlLEdBQUcsVUFBVSxDQUFDO1FBQzdCLGtCQUFhLEdBQUcsWUFBWSxDQUFDO1FBQ3RDLG9CQUFlLEdBQUcsb0JBQW9CLENBQUM7UUFDdkMsa0JBQWEsR0FBRyxzQkFBc0IsQ0FBQztRQUM5QixVQUFLLEdBQUcsNENBQTRDLENBQUM7UUFFOUQscUJBQWdCLEdBQUcsR0FBRyxDQUFDO1FBR25CLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFFdEUsc0dBQXNHO1FBQ3RHLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUU7WUFDM0Msd0JBQXdCLEVBQUUsQ0FBQztTQUM5QixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFF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QyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDckQsSUFBSSxDQUFDLFVBQVUsSUFBSSx5QkFBeUIsSUFBSSxjQUFjLElBQUksQ0FBQyxFQUFFO1lBQ2pFLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7UUFFRCxvQ0FBb0M7UUFDcEMsSUFDSSxJQUFJLENBQUMsaUNBQWlDLENBQ2xDLFdBQVcsRUFDWCxHQUFHLEVBQ0gsZ0JBQWdCLENBQ25CLEVBQ0g7WUFDRSxPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsK0JBQStCO1FBQy9CLE1BQU0sUUFBUSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUQsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQzs7Z0hBL1NRLG1CQUFtQjtvSEFBbkIsbUJBQW1CLGNBRmhCLE1BQU07MkZBRVQsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBV2dCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdENvbnRyb2wsXG4gICAgVmFsaWRhdG9yRm4sXG4gICAgRm9ybUNvbnRyb2wsXG4gICAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBWYWxpZGF0b3JTZXJ2aWNlIHtcbiAgICAvLyAgUmVndWxhciBleHByZXNzaW9uc1xuICAgIHJlYWRvbmx5IGludGVnZXJVbnNpZ25lZCA9ICdeWzAtOV0qJCc7XG4gICAgcmVhZG9ubHkgaW50ZWdlclNpZ25lZCA9ICdeLT9bMC05XSskJztcbiAgICBkZWNpbWFsVW5zaWduZWQgPSAnXlswLTldKyguWzAtOV0rKT8kJztcbiAgICBkZWNpbWFsU2lnbmVkID0gJ14tP1swLTldKyguWzAtOV0rKT8kJztcbiAgICByZWFkb25seSBwaG9uZSA9ICdeWytdKlsoXXswLDF9WzAtOV17MSw0fVspXXswLDF9Wy1zLi8wLTldKiQnO1xuXG4gICAgZGVjaW1hbFNlcGFyYXRvciA9ICcuJztcblxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlID0gbnVsbCkge1xuICAgICAgICBjb25zdCBjdXJyZW50TGFuZyA9IHRoaXMudHJhbnNsYXRlPy5jdXJyZW50TGFuZyB8fCBuYXZpZ2F0b3IubGFuZ3VhZ2U7XG5cbiAgICAgICAgLy8gQ2hlY2sgZm9yIG51bWJlciB3aXRoIHRob3VzYW5kcyBzZXBhcmF0b3IgYW5kIGlmID09PSAnLCcgdGhlbiB0aGUgZGVjaW1hbCBzZXBhcmF0b3IgaXMgJy4nIGVsc2UgJywnXG4gICAgICAgIGNvbnN0IHRtcCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChjdXJyZW50TGFuZywge1xuICAgICAgICAgICAgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOiAyLFxuICAgICAgICB9KS5mb3JtYXQoMTAwMCk7XG4gICAgICAgIHRoaXMuZGVjaW1hbFNlcGFyYXRvciA9IHRtcC5pbmRleE9mKCcsJykgPT09IDEgPyAnLicgOiAnLCc7XG5cbiAgICAgICAgdGhpcy5kZWNpbWFsVW5zaWduZWQgPSBgXlswLTldKygke3RoaXMuZGVjaW1hbFNlcGFyYXRvcn1bMC05XSspPyRgO1xuICAgICAgICB0aGlzLmRlY2ltYWxTaWduZWQgPSBgXi0/WzAtOV0rKCR7dGhpcy5kZWNpbWFsU2VwYXJhdG9yfVswLTldKyk/JGA7XG4gICAgfVxuXG4gICAgLypcbiAgICAgICAgVmFsaWRhdG9yRm4gZnVuY3Rpb25zXG4gICAgKi9cbiAgICBpc0VxdWFsKHRhcmdldDogRm9ybUNvbnRyb2wgfCBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0b3JGbiB7XG4gICAgICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IG51bGwgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0LnZhbHVlICE9PSBjb250cm9sLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgID8geyBlcXVhbDogeyB2YWx1ZTogdHJ1ZSB9IH1cbiAgICAgICAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBpc0dyZWF0ZXJUaGFuKHRhcmdldDogRm9ybUNvbnRyb2wgfCBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0b3JGbiB7XG4gICAgICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IG51bGwgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbnRyb2wudmFsdWUgJiYgdHlwZW9mIHRhcmdldC52YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0LnZhbHVlID4gY29udHJvbC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICA/IHsgZ3JlYXRlcjogeyB2YWx1ZTogdHJ1ZSB9IH1cbiAgICAgICAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb250cm9sLnZhbHVlICYmIHR5cGVvZiB0YXJnZXQudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udHJvbFZhbHVlTnVtZXIgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eShjb250cm9sLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRWYWx1ZU51bWVyID0gY29lcmNlTnVtYmVyUHJvcGVydHkodGFyZ2V0LnZhbHVlKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRWYWx1ZU51bWVyID4gY29udHJvbFZhbHVlTnVtZXJcbiAgICAgICAgICAgICAgICAgICAgPyB7IGdyZWF0ZXI6IHsgdmFsdWU6IHRydWUgfSB9XG4gICAgICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaXNMZXNzVGhhbih0YXJnZXQ6IEZvcm1Db250cm9sIHwgQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdG9yRm4ge1xuICAgICAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBudWxsID0+IHtcbiAgICAgICAgICAgIGlmIChjb250cm9sLnZhbHVlICYmIHR5cGVvZiB0YXJnZXQudmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldC52YWx1ZSA8IGNvbnRyb2wudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgPyB7IGxlc3M6IHsgdmFsdWU6IHRydWUgfSB9XG4gICAgICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udHJvbC52YWx1ZSAmJiB0eXBlb2YgdGFyZ2V0LnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2xWYWx1ZU51bWVyID0gY29lcmNlTnVtYmVyUHJvcGVydHkoY29udHJvbC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0VmFsdWVOdW1lciA9IGNvZXJjZU51bWJlclByb3BlcnR5KHRhcmdldC52YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0VmFsdWVOdW1lciA8IGNvbnRyb2xWYWx1ZU51bWVyXG4gICAgICAgICAgICAgICAgICAgID8geyBsZXNzOiB7IHZhbHVlOiB0cnVlIH0gfVxuICAgICAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGNoZWNrRW1haWxzKHNlcGFyYXRvcj86IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcbiAgICAgICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgbnVsbCA9PiB7XG4gICAgICAgICAgICBpZiAoY29udHJvbC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVtYWlscyA9IGNvbnRyb2wudmFsdWUuc3BsaXQoc2VwYXJhdG9yID8gc2VwYXJhdG9yIDogJywnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjdHJsID0gbmV3IEZvcm1Db250cm9sKCcnLCBbXG4gICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuZW1haWwsXG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZW1haWxzLmV2ZXJ5KCh2YWw6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjdHJsLnNldFZhbHVlKHZhbCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjdHJsLnZhbGlkO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICFyZXN1bHQgPyB7IGVtYWlsczogeyB2YWx1ZTogdHJ1ZSB9IH0gOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB6aXBDb2RlVmFsaWRhdG9yKCk6IFZhbGlkYXRvckZuIHtcbiAgICAgICAgcmV0dXJuIFZhbGlkYXRvcnMucGF0dGVybigvXihcXGR7NX0oLVxcZHs0fSk/fFtBLVpdXFxkW0EtWl0gKlxcZFtBLVpdXFxkKSQvKTtcbiAgICB9XG5cbiAgICBhbGxvd2FibGVDaGFyYWN0ZXJzVmFsaWRhdG9yKCk6IFZhbGlkYXRvckZuIHtcbiAgICAgICAgcmV0dXJuIFZhbGlkYXRvcnMucGF0dGVybihcbiAgICAgICAgICAgIC9eW2EtekEtWjAtOWB+IUAjJCVeJiooKV8rfXt8XCI6Pz48LC4vOydcXFxcXFxdXFxbPVxcLSBdKyQvXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYWxsb3dhYmxlQ2hhcmFjdGVyc1dpdGhvdXROdW1iZXJWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xuICAgICAgICByZXR1cm4gVmFsaWRhdG9ycy5wYXR0ZXJuKFxuICAgICAgICAgICAgL15bYS16QS1aYH4hQCMkJV4mKigpXyt9e3xcIjo/PjwsLi87J1xcXFxcXF1cXFs9XFwtIF0rJC9cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBhbGxvd2FibGVDaGFyYWN0ZXJzV2l0aG91dFNwZWNpYWxWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xuICAgICAgICByZXR1cm4gVmFsaWRhdG9ycy5wYXR0ZXJuKC9eW2EtekEtWjAtOSBdKyQvKTtcbiAgICB9XG5cbiAgICBkYXRlVmFsaWRhdG9yKCk6IFZhbGlkYXRvckZuIHtcbiAgICAgICAgcmV0dXJuIFZhbGlkYXRvcnMucGF0dGVybihcbiAgICAgICAgICAgIC9eKD86KDBbMS05XXwxWzAxMl0pW1xcLy5dKDBbMS05XXxbMTJdWzAtOV18M1swMV0pW1xcLy5dKDE5fDIwKVswLTldezJ9KSQvXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbnVtYmVyVmFsaWRhdG9yKCk6IFZhbGlkYXRvckZuIHtcbiAgICAgICAgcmV0dXJuIFZhbGlkYXRvcnMucGF0dGVybigvXlswLTldKiQvKTtcbiAgICB9XG5cbiAgICAvKlxuICAgICAgICBSZWdFeHAgZnVuY3Rpb25zXG4gICAgKi9cbiAgICB2YWxpZGF0ZU51bWJlcih2YWx1ZTogc3RyaW5nLCBhbGxvd0RlY2ltYWw6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgICAgICAvLyBjaG9vc2UgdGhlIGFwcHJvcGlhdGUgcmVndWxhciBleHByZXNzaW9uXG4gICAgICAgIGxldCByZWdleDogc3RyaW5nO1xuXG4gICAgICAgIGlmIChhbGxvd0RlY2ltYWwpIHtcbiAgICAgICAgICAgIHJlZ2V4ID0gdGhpcy5kZWNpbWFsU2lnbmVkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVnZXggPSB0aGlzLmludGVnZXJTaWduZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB3aGVuIGEgbnVtYmVycyBiZWdpbnMgd2l0aCBhIGRlY2ltYWwgc2VwYXJhdG9yLFxuICAgICAgICAvLyBmaXggaXQgYWRkaW5nIGEgemVybyBpbiB0aGUgYmVnaW5uaW5nXG4gICAgICAgIGNvbnN0IGZpcnN0Q2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KDApO1xuICAgICAgICBpZiAoZmlyc3RDaGFyYWN0ZXIgPT0gdGhpcy5kZWNpbWFsU2VwYXJhdG9yKSB2YWx1ZSA9IDAgKyB2YWx1ZTtcblxuICAgICAgICAvLyB3aGVuIGEgbnVtYmVycyBlbmRzIHdpdGggYSBkZWNpbWFsIHNlcGFyYXRvcixcbiAgICAgICAgLy8gZml4IGl0IGFkZGluZyBhIHplcm8gaW4gdGhlIGVuZFxuICAgICAgICBjb25zdCBsYXN0Q2hhcmFjdGVyID0gdmFsdWUuY2hhckF0KHZhbHVlLmxlbmd0aCAtIDEpO1xuICAgICAgICBpZiAobGFzdENoYXJhY3RlciA9PSB0aGlzLmRlY2ltYWxTZXBhcmF0b3IpIHZhbHVlID0gdmFsdWUgKyAwO1xuXG4gICAgICAgIC8vIHRlc3QgbnVtYmVyIHdpdGggcmVndWxhciBleHByZXNzaW9uLCB3aGVuXG4gICAgICAgIC8vIG51bWJlciBpcyBpbnZhbGlkLCByZXBsYWNlIGl0IHdpdGggYSB6ZXJvXG4gICAgICAgIGNvbnNvbGUubG9nKGByZWdleCBpcyAke3JlZ2V4fSBhbmQgdmFsdWUgaXMgJHt2YWx1ZX1gKTtcbiAgICAgICAgY29uc3QgdmFsaWQ6IGJvb2xlYW4gPSBuZXcgUmVnRXhwKHJlZ2V4KS50ZXN0KHZhbHVlKTtcblxuICAgICAgICByZXR1cm4gdmFsaWQgPyB2YWx1ZSA6IG51bGw7XG4gICAgfVxuXG4gICAgdmFsaWRhdGVQaG9uZSh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIHRlc3QgcGhvbmUgd2l0aCByZWd1bGFyIGV4cHJlc3Npb24sIHdoZW5cbiAgICAgICAgLy8gcGhvbmUgaXMgaW52YWxpZCwgcmVwbGFjZSBpdCB3aXRoIHRoZSBwcmV2aW91c1ZhbHVlXG4gICAgICAgIGNvbnN0IHZhbGlkOiBib29sZWFuID0gbmV3IFJlZ0V4cCh0aGlzLnBob25lKS50ZXN0KHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHZhbGlkO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TmFtZShlKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKGUua2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gZS5rZXk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBmb3Igb2xkIGJyb3dzZXJzXG4gICAgICAgICAgICBpZiAoZS5rZXlDb2RlICYmIFN0cmluZy5mcm9tQ2hhckNvZGUpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGUua2V5Q29kZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ0JhY2tzcGFjZSc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnVGFiJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyNzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnRXNjYXBlJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzNzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnQXJyb3dMZWZ0JztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnQXJyb3dSaWdodCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTg4OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcsJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOTA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJy4nO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDEwOTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnLSc7IC8vIG1pbnVzIGluIG51bWJwYWRcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxNzM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJy0nOyAvLyBtaW51cyBpbiBhbHBoYWJldCBrZXlib2FyZCBpbiBmaXJlZm94XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTg5OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICctJzsgLy8gbWludXMgaW4gYWxwaGFiZXQga2V5Ym9hcmQgaW4gY2hyb21lXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlLmtleUNvZGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYWxsb3dLZXlib2FyZE5vbk51bWVyaWNDaGFyYWN0ZXJzKFxuICAgICAgICBhbGxvd2VkS2V5czogQXJyYXk8c3RyaW5nPixcbiAgICAgICAga2V5OiBzdHJpbmcsXG4gICAgICAgIGNvbnRyb2xPckNvbW1hbmQ6IGJvb2xlYW5cbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdEFsbG93ZWRLZXlzID0gW1xuICAgICAgICAgICAgJ0JhY2tzcGFjZScsXG4gICAgICAgICAgICAnQXJyb3dMZWZ0JyxcbiAgICAgICAgICAgICdBcnJvd1JpZ2h0JyxcbiAgICAgICAgICAgICdFc2NhcGUnLFxuICAgICAgICAgICAgJ1RhYicsXG4gICAgICAgICAgICAnSG9tZScsXG4gICAgICAgICAgICAnRW5kJyxcbiAgICAgICAgICAgICdEZWxldGUnLFxuICAgICAgICBdO1xuXG4gICAgICAgIC8vIGFsbG93IHNvbWUgbm9uLW51bWVyaWMgY2hhcmFjdGVyc1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBkZWZhdWx0QWxsb3dlZEtleXMuaW5kZXhPZihrZXkpICE9IC0xIHx8XG4gICAgICAgICAgICBhbGxvd2VkS2V5cy5pbmRleE9mKGtleSkgIT0gLTEgfHxcbiAgICAgICAgICAgIC8vIEFsbG93OiBDdHJsK0EgYW5kIENvbW1hbmQrQVxuICAgICAgICAgICAgKGtleSA9PSAnYScgJiYgY29udHJvbE9yQ29tbWFuZCkgfHxcbiAgICAgICAgICAgIC8vIEFsbG93OiBDdHJsK0MgYW5kIENvbW1hbmQrQ1xuICAgICAgICAgICAgKGtleSA9PSAnYycgJiYgY29udHJvbE9yQ29tbWFuZCkgfHxcbiAgICAgICAgICAgIC8vIEFsbG93OiBDdHJsK1YgYW5kIENvbW1hbmQrVlxuICAgICAgICAgICAgKGtleSA9PSAndicgJiYgY29udHJvbE9yQ29tbWFuZCkgfHxcbiAgICAgICAgICAgIC8vIEFsbG93OiBDdHJsK1ggYW5kIENvbW1hbmQrWFxuICAgICAgICAgICAgKGtleSA9PSAneCcgJiYgY29udHJvbE9yQ29tbWFuZCkgfHxcbiAgICAgICAgICAgIGtleS5zdGFydHNXaXRoKCdGJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBsZXQgaXQgaGFwcGVuLCBkb24ndCBkbyBhbnl0aGluZ1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc1Bob25lKGU6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3Qga2V5OiBzdHJpbmcgPSB0aGlzLmdldE5hbWUoZSk7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xPckNvbW1hbmQgPSBlLmN0cmxLZXkgPT09IHRydWUgfHwgZS5tZXRhS2V5ID09PSB0cnVlO1xuXG4gICAgICAgIC8vIGFsbG93ZWQga2V5cyBhcGFydCBmcm9tIG51bWVyaWMgY2hhcmFjdGVyc1xuICAgICAgICBjb25zdCBhbGxvd2VkS2V5cyA9IFsnLicsICctJywgJysnLCAnKCcsICcpJywgJyonLCAnIyddO1xuXG4gICAgICAgIC8vIGFsbG93IHNvbWUgbm9uLW51bWVyaWMgY2hhcmFjdGVyc1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmFsbG93S2V5Ym9hcmROb25OdW1lcmljQ2hhcmFjdGVycyhcbiAgICAgICAgICAgICAgICBhbGxvd2VkS2V5cyxcbiAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgY29udHJvbE9yQ29tbWFuZFxuICAgICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gYWxsb3cgcGhvbmUgY2hhcmFjdGVycyBvbmx5XG4gICAgICAgIGNvbnN0IGlzUGhvbmUgPSBuZXcgUmVnRXhwKHRoaXMucGhvbmUpLnRlc3Qoa2V5KTtcbiAgICAgICAgcmV0dXJuIGlzUGhvbmU7XG4gICAgfVxuXG4gICAgaXNOdW1iZXIoZTogS2V5Ym9hcmRFdmVudCwgYWxsb3dEZWNpbWFsOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGN1cnNvclBvc2l0aW9uOiBudW1iZXIgPSBlLnRhcmdldFsnc2VsZWN0aW9uU3RhcnQnXTtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxWYWx1ZTogc3RyaW5nID0gZS50YXJnZXRbJ3ZhbHVlJ107XG4gICAgICAgIGNvbnN0IGtleTogc3RyaW5nID0gdGhpcy5nZXROYW1lKGUpO1xuICAgICAgICBjb25zdCBjb250cm9sT3JDb21tYW5kID0gZS5jdHJsS2V5ID09PSB0cnVlIHx8IGUubWV0YUtleSA9PT0gdHJ1ZTtcbiAgICAgICAgY29uc3Qgc2lnbkV4aXN0cyA9IG9yaWdpbmFsVmFsdWUuaW5jbHVkZXMoJy0nKTtcbiAgICAgICAgY29uc3Qgc2VwYXJhdG9yRXhpc3RzID0gb3JpZ2luYWxWYWx1ZS5pbmNsdWRlcyh0aGlzLmRlY2ltYWxTZXBhcmF0b3IpO1xuXG4gICAgICAgIC8vIGFsbG93ZWQga2V5cyBhcGFydCBmcm9tIG51bWVyaWMgY2hhcmFjdGVyc1xuICAgICAgICBjb25zdCBhbGxvd2VkS2V5cyA9IFtdO1xuXG4gICAgICAgIC8vIHdoZW4gZGVjaW1hbHMgYXJlIGFsbG93ZWQsIGFkZFxuICAgICAgICAvLyBkZWNpbWFsIHNlcGFyYXRvciB0byBhbGxvd2VkIGNvZGVzIHdoZW5cbiAgICAgICAgLy8gaXRzIHBvc2l0aW9uIGlzIG5vdCBjbG9zZSB0byB0aGUgdGhlIHNpZ24gKC0uIGFuZCAuLSlcbiAgICAgICAgY29uc3Qgc2VwYXJhdG9ySXNDbG9zZVRvU2lnbiA9IHNpZ25FeGlzdHMgJiYgY3Vyc29yUG9zaXRpb24gPD0gMTtcbiAgICAgICAgaWYgKGFsbG93RGVjaW1hbCAmJiAhc2VwYXJhdG9ySXNDbG9zZVRvU2lnbiAmJiAhc2VwYXJhdG9yRXhpc3RzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kZWNpbWFsU2VwYXJhdG9yID09ICcuJykgYWxsb3dlZEtleXMucHVzaCgnLicpO1xuICAgICAgICAgICAgZWxzZSBhbGxvd2VkS2V5cy5wdXNoKCcsJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB3aGVuIG1pbnVzIHNpZ24gaXMgYWxsb3dlZCwgYWRkIGl0c1xuICAgICAgICAvLyBrZXkgdG8gYWxsb3dlZCBrZXkgb25seSB3aGVuIHRoZVxuICAgICAgICAvLyBjdXJzb3IgaXMgaW4gdGhlIGZpcnN0IHBvc2l0aW9uLCBhbmRcbiAgICAgICAgLy8gZmlyc3QgY2hhcmFjdGVyIGlzIGRpZmZlcmVudCBmcm9tXG4gICAgICAgIC8vIGRlY2ltYWwgc2VwYXJhdG9yXG4gICAgICAgIGNvbnN0IGZpcnN0Q2hhcmFjdGVySXNTZXBhcmF0b3IgPVxuICAgICAgICAgICAgb3JpZ2luYWxWYWx1ZS5jaGFyQXQoMCkgIT0gdGhpcy5kZWNpbWFsU2VwYXJhdG9yO1xuICAgICAgICBpZiAoIXNpZ25FeGlzdHMgJiYgZmlyc3RDaGFyYWN0ZXJJc1NlcGFyYXRvciAmJiBjdXJzb3JQb3NpdGlvbiA9PSAwKSB7XG4gICAgICAgICAgICBhbGxvd2VkS2V5cy5wdXNoKCctJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhbGxvdyBzb21lIG5vbi1udW1lcmljIGNoYXJhY3RlcnNcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5hbGxvd0tleWJvYXJkTm9uTnVtZXJpY0NoYXJhY3RlcnMoXG4gICAgICAgICAgICAgICAgYWxsb3dlZEtleXMsXG4gICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgIGNvbnRyb2xPckNvbW1hbmRcbiAgICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGFsbG93IG51bWJlciBjaGFyYWN0ZXJzIG9ubHlcbiAgICAgICAgY29uc3QgaXNOdW1iZXIgPSBuZXcgUmVnRXhwKHRoaXMuaW50ZWdlclVuc2lnbmVkKS50ZXN0KGtleSk7XG4gICAgICAgIHJldHVybiBpc051bWJlcjtcbiAgICB9XG59XG4iXX0=
272
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL3NyYy9jb3JlL2NvbW1vbi9zZXJ2aWNlcy92YWxpZGF0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBR0gsV0FBVyxFQUNYLFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDOzs7QUFLeEIsTUFBTSxPQUFPLG1CQUFtQjtJQVU1QixZQUFnQyxZQUE4QixJQUFJO1FBQWxDLGNBQVMsR0FBVCxTQUFTLENBQXlCO1FBVGxFLHVCQUF1QjtRQUNkLG9CQUFlLEdBQUcsVUFBVSxDQUFDO1FBQzdCLGtCQUFhLEdBQUcsWUFBWSxDQUFDO1FBQ3RDLG9CQUFlLEdBQUcsb0JBQW9CLENBQUM7UUFDdkMsa0JBQWEsR0FBRyxzQkFBc0IsQ0FBQztRQUM5QixVQUFLLEdBQUcsNENBQTRDLENBQUM7UUFFOUQscUJBQWdCLEdBQUcsR0FBRyxDQUFDO1FBR25CLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFFdEUsc0dBQXNHO1FBQ3RHLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUU7WUFDM0Msd0JBQXdCLEVBQUUsQ0FBQztTQUM5QixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFF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QUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUNyRCxJQUFJLENBQUMsVUFBVSxJQUFJLHlCQUF5QixJQUFJLGNBQWMsSUFBSSxDQUFDLEVBQUU7WUFDakUsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtRQUVELG9DQUFvQztRQUNwQyxJQUNJLElBQUksQ0FBQyxpQ0FBaUMsQ0FDbEMsV0FBVyxFQUNYLEdBQUcsRUFDSCxnQkFBZ0IsQ0FDbkIsRUFDSDtZQUNFLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCwrQkFBK0I7UUFDL0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1RCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDOztnSEE5U1EsbUJBQW1CO29IQUFuQixtQkFBbUIsY0FGaEIsTUFBTTsyRkFFVCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFXZ0IsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0Q29udHJvbCxcbiAgICBWYWxpZGF0b3JGbixcbiAgICBGb3JtQ29udHJvbCxcbiAgICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFBlcFZhbGlkYXRvclNlcnZpY2Uge1xuICAgIC8vICBSZWd1bGFyIGV4cHJlc3Npb25zXG4gICAgcmVhZG9ubHkgaW50ZWdlclVuc2lnbmVkID0gJ15bMC05XSokJztcbiAgICByZWFkb25seSBpbnRlZ2VyU2lnbmVkID0gJ14tP1swLTldKyQnO1xuICAgIGRlY2ltYWxVbnNpZ25lZCA9ICdeWzAtOV0rKC5bMC05XSspPyQnO1xuICAgIGRlY2ltYWxTaWduZWQgPSAnXi0/WzAtOV0rKC5bMC05XSspPyQnO1xuICAgIHJlYWRvbmx5IHBob25lID0gJ15bK10qWyhdezAsMX1bMC05XXsxLDR9WyldezAsMX1bLXMuLzAtOV0qJCc7XG5cbiAgICBkZWNpbWFsU2VwYXJhdG9yID0gJy4nO1xuXG4gICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UgPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRMYW5nID0gdGhpcy50cmFuc2xhdGU/LmN1cnJlbnRMYW5nIHx8IG5hdmlnYXRvci5sYW5ndWFnZTtcblxuICAgICAgICAvLyBDaGVjayBmb3IgbnVtYmVyIHdpdGggdGhvdXNhbmRzIHNlcGFyYXRvciBhbmQgaWYgPT09ICcsJyB0aGVuIHRoZSBkZWNpbWFsIHNlcGFyYXRvciBpcyAnLicgZWxzZSAnLCdcbiAgICAgICAgY29uc3QgdG1wID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGN1cnJlbnRMYW5nLCB7XG4gICAgICAgICAgICBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM6IDIsXG4gICAgICAgIH0pLmZvcm1hdCgxMDAwKTtcbiAgICAgICAgdGhpcy5kZWNpbWFsU2VwYXJhdG9yID0gdG1wLmluZGV4T2YoJywnKSA9PT0gMSA/ICcuJyA6ICcsJztcblxuICAgICAgICB0aGlzLmRlY2ltYWxVbnNpZ25lZCA9IGBeWzAtOV0rKCR7dGhpcy5kZWNpbWFsU2VwYXJhdG9yfVswLTldKyk/JGA7XG4gICAgICAgIHRoaXMuZGVjaW1hbFNpZ25lZCA9IGBeLT9bMC05XSsoJHt0aGlzLmRlY2ltYWxTZXBhcmF0b3J9WzAtOV0rKT8kYDtcbiAgICB9XG5cbiAgICAvKlxuICAgICAgICBWYWxpZGF0b3JGbiBmdW5jdGlvbnNcbiAgICAqL1xuICAgIGlzRXF1YWwodGFyZ2V0OiBGb3JtQ29udHJvbCB8IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRvckZuIHtcbiAgICAgICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgbnVsbCA9PiB7XG4gICAgICAgICAgICBpZiAoY29udHJvbC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQudmFsdWUgIT09IGNvbnRyb2wudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgPyB7IGVxdWFsOiB7IHZhbHVlOiB0cnVlIH0gfVxuICAgICAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGlzR3JlYXRlclRoYW4odGFyZ2V0OiBGb3JtQ29udHJvbCB8IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRvckZuIHtcbiAgICAgICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgbnVsbCA9PiB7XG4gICAgICAgICAgICBpZiAoY29udHJvbC52YWx1ZSAmJiB0eXBlb2YgdGFyZ2V0LnZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQudmFsdWUgPiBjb250cm9sLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgID8geyBncmVhdGVyOiB7IHZhbHVlOiB0cnVlIH0gfVxuICAgICAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRyb2wudmFsdWUgJiYgdHlwZW9mIHRhcmdldC52YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sVmFsdWVOdW1lciA9IGNvZXJjZU51bWJlclByb3BlcnR5KGNvbnRyb2wudmFsdWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldFZhbHVlTnVtZXIgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh0YXJnZXQudmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldFZhbHVlTnVtZXIgPiBjb250cm9sVmFsdWVOdW1lclxuICAgICAgICAgICAgICAgICAgICA/IHsgZ3JlYXRlcjogeyB2YWx1ZTogdHJ1ZSB9IH1cbiAgICAgICAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBpc0xlc3NUaGFuKHRhcmdldDogRm9ybUNvbnRyb2wgfCBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0b3JGbiB7XG4gICAgICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IG51bGwgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbnRyb2wudmFsdWUgJiYgdHlwZW9mIHRhcmdldC52YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0LnZhbHVlIDwgY29udHJvbC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICA/IHsgbGVzczogeyB2YWx1ZTogdHJ1ZSB9IH1cbiAgICAgICAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb250cm9sLnZhbHVlICYmIHR5cGVvZiB0YXJnZXQudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udHJvbFZhbHVlTnVtZXIgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eShjb250cm9sLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRWYWx1ZU51bWVyID0gY29lcmNlTnVtYmVyUHJvcGVydHkodGFyZ2V0LnZhbHVlKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRWYWx1ZU51bWVyIDwgY29udHJvbFZhbHVlTnVtZXJcbiAgICAgICAgICAgICAgICAgICAgPyB7IGxlc3M6IHsgdmFsdWU6IHRydWUgfSB9XG4gICAgICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY2hlY2tFbWFpbHMoc2VwYXJhdG9yPzogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xuICAgICAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBudWxsID0+IHtcbiAgICAgICAgICAgIGlmIChjb250cm9sLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW1haWxzID0gY29udHJvbC52YWx1ZS5zcGxpdChzZXBhcmF0b3IgPyBzZXBhcmF0b3IgOiAnLCcpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN0cmwgPSBuZXcgRm9ybUNvbnRyb2woJycsIFtcbiAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5lbWFpbCxcbiAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBlbWFpbHMuZXZlcnkoKHZhbDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGN0cmwuc2V0VmFsdWUodmFsKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN0cmwudmFsaWQ7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gIXJlc3VsdCA/IHsgZW1haWxzOiB7IHZhbHVlOiB0cnVlIH0gfSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHppcENvZGVWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xuICAgICAgICByZXR1cm4gVmFsaWRhdG9ycy5wYXR0ZXJuKC9eKFxcZHs1fSgtXFxkezR9KT98W0EtWl1cXGRbQS1aXSAqXFxkW0EtWl1cXGQpJC8pO1xuICAgIH1cblxuICAgIGFsbG93YWJsZUNoYXJhY3RlcnNWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xuICAgICAgICByZXR1cm4gVmFsaWRhdG9ycy5wYXR0ZXJuKFxuICAgICAgICAgICAgL15bYS16QS1aMC05YH4hQCMkJV4mKigpXyt9e3xcIjo/PjwsLi87J1xcXFxcXF1cXFs9XFwtIF0rJC9cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBhbGxvd2FibGVDaGFyYWN0ZXJzV2l0aG91dE51bWJlclZhbGlkYXRvcigpOiBWYWxpZGF0b3JGbiB7XG4gICAgICAgIHJldHVybiBWYWxpZGF0b3JzLnBhdHRlcm4oXG4gICAgICAgICAgICAvXlthLXpBLVpgfiFAIyQlXiYqKClfK317fFwiOj8+PCwuLzsnXFxcXFxcXVxcWz1cXC0gXSskL1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGFsbG93YWJsZUNoYXJhY3RlcnNXaXRob3V0U3BlY2lhbFZhbGlkYXRvcigpOiBWYWxpZGF0b3JGbiB7XG4gICAgICAgIHJldHVybiBWYWxpZGF0b3JzLnBhdHRlcm4oL15bYS16QS1aMC05IF0rJC8pO1xuICAgIH1cblxuICAgIGRhdGVWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xuICAgICAgICByZXR1cm4gVmFsaWRhdG9ycy5wYXR0ZXJuKFxuICAgICAgICAgICAgL14oPzooMFsxLTldfDFbMDEyXSlbXFwvLl0oMFsxLTldfFsxMl1bMC05XXwzWzAxXSlbXFwvLl0oMTl8MjApWzAtOV17Mn0pJC9cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBudW1iZXJWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xuICAgICAgICByZXR1cm4gVmFsaWRhdG9ycy5wYXR0ZXJuKC9eWzAtOV0qJC8pO1xuICAgIH1cblxuICAgIC8qXG4gICAgICAgIFJlZ0V4cCBmdW5jdGlvbnNcbiAgICAqL1xuICAgIHZhbGlkYXRlTnVtYmVyKHZhbHVlOiBzdHJpbmcsIGFsbG93RGVjaW1hbDogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgICAgIC8vIGNob29zZSB0aGUgYXBwcm9waWF0ZSByZWd1bGFyIGV4cHJlc3Npb25cbiAgICAgICAgbGV0IHJlZ2V4OiBzdHJpbmc7XG5cbiAgICAgICAgaWYgKGFsbG93RGVjaW1hbCkge1xuICAgICAgICAgICAgcmVnZXggPSB0aGlzLmRlY2ltYWxTaWduZWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWdleCA9IHRoaXMuaW50ZWdlclNpZ25lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHdoZW4gYSBudW1iZXJzIGJlZ2lucyB3aXRoIGEgZGVjaW1hbCBzZXBhcmF0b3IsXG4gICAgICAgIC8vIGZpeCBpdCBhZGRpbmcgYSB6ZXJvIGluIHRoZSBiZWdpbm5pbmdcbiAgICAgICAgY29uc3QgZmlyc3RDaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQoMCk7XG4gICAgICAgIGlmIChmaXJzdENoYXJhY3RlciA9PSB0aGlzLmRlY2ltYWxTZXBhcmF0b3IpIHZhbHVlID0gMCArIHZhbHVlO1xuXG4gICAgICAgIC8vIHdoZW4gYSBudW1iZXJzIGVuZHMgd2l0aCBhIGRlY2ltYWwgc2VwYXJhdG9yLFxuICAgICAgICAvLyBmaXggaXQgYWRkaW5nIGEgemVybyBpbiB0aGUgZW5kXG4gICAgICAgIGNvbnN0IGxhc3RDaGFyYWN0ZXIgPSB2YWx1ZS5jaGFyQXQodmFsdWUubGVuZ3RoIC0gMSk7XG4gICAgICAgIGlmIChsYXN0Q2hhcmFjdGVyID09IHRoaXMuZGVjaW1hbFNlcGFyYXRvcikgdmFsdWUgPSB2YWx1ZSArIDA7XG5cbiAgICAgICAgLy8gdGVzdCBudW1iZXIgd2l0aCByZWd1bGFyIGV4cHJlc3Npb24sIHdoZW5cbiAgICAgICAgLy8gbnVtYmVyIGlzIGludmFsaWQsIHJlcGxhY2UgaXQgd2l0aCBhIHplcm9cbiAgICAgICAgY29uc29sZS5sb2coYHJlZ2V4IGlzICR7cmVnZXh9IGFuZCB2YWx1ZSBpcyAke3ZhbHVlfWApO1xuICAgICAgICBjb25zdCB2YWxpZDogYm9vbGVhbiA9IG5ldyBSZWdFeHAocmVnZXgpLnRlc3QodmFsdWUpO1xuXG4gICAgICAgIHJldHVybiB2YWxpZCA/IHZhbHVlIDogbnVsbDtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZVBob25lKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgLy8gdGVzdCBwaG9uZSB3aXRoIHJlZ3VsYXIgZXhwcmVzc2lvblxuICAgICAgICBjb25zdCB2YWxpZDogYm9vbGVhbiA9IG5ldyBSZWdFeHAodGhpcy5waG9uZSkudGVzdCh2YWx1ZSk7XG4gICAgICAgIHJldHVybiB2YWxpZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE5hbWUoZSk6IHN0cmluZyB7XG4gICAgICAgIGlmIChlLmtleSkge1xuICAgICAgICAgICAgcmV0dXJuIGUua2V5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gZm9yIG9sZCBicm93c2Vyc1xuICAgICAgICAgICAgaWYgKGUua2V5Q29kZSAmJiBTdHJpbmcuZnJvbUNoYXJDb2RlKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChlLmtleUNvZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdCYWNrc3BhY2UnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1RhYic7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjc6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ0VzY2FwZSc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzc6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ0Fycm93TGVmdCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzk6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ0Fycm93UmlnaHQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE4ODpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnLCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTkwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcuJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDk6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJy0nOyAvLyBtaW51cyBpbiBudW1icGFkXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTczOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICctJzsgLy8gbWludXMgaW4gYWxwaGFiZXQga2V5Ym9hcmQgaW4gZmlyZWZveFxuICAgICAgICAgICAgICAgICAgICBjYXNlIDE4OTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnLSc7IC8vIG1pbnVzIGluIGFscGhhYmV0IGtleWJvYXJkIGluIGNocm9tZVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZS5rZXlDb2RlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFsbG93S2V5Ym9hcmROb25OdW1lcmljQ2hhcmFjdGVycyhcbiAgICAgICAgYWxsb3dlZEtleXM6IEFycmF5PHN0cmluZz4sXG4gICAgICAgIGtleTogc3RyaW5nLFxuICAgICAgICBjb250cm9sT3JDb21tYW5kOiBib29sZWFuXG4gICAgKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRBbGxvd2VkS2V5cyA9IFtcbiAgICAgICAgICAgICdCYWNrc3BhY2UnLFxuICAgICAgICAgICAgJ0Fycm93TGVmdCcsXG4gICAgICAgICAgICAnQXJyb3dSaWdodCcsXG4gICAgICAgICAgICAnRXNjYXBlJyxcbiAgICAgICAgICAgICdUYWInLFxuICAgICAgICAgICAgJ0hvbWUnLFxuICAgICAgICAgICAgJ0VuZCcsXG4gICAgICAgICAgICAnRGVsZXRlJyxcbiAgICAgICAgXTtcblxuICAgICAgICAvLyBhbGxvdyBzb21lIG5vbi1udW1lcmljIGNoYXJhY3RlcnNcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgZGVmYXVsdEFsbG93ZWRLZXlzLmluZGV4T2Yoa2V5KSAhPSAtMSB8fFxuICAgICAgICAgICAgYWxsb3dlZEtleXMuaW5kZXhPZihrZXkpICE9IC0xIHx8XG4gICAgICAgICAgICAvLyBBbGxvdzogQ3RybCtBIGFuZCBDb21tYW5kK0FcbiAgICAgICAgICAgIChrZXkgPT0gJ2EnICYmIGNvbnRyb2xPckNvbW1hbmQpIHx8XG4gICAgICAgICAgICAvLyBBbGxvdzogQ3RybCtDIGFuZCBDb21tYW5kK0NcbiAgICAgICAgICAgIChrZXkgPT0gJ2MnICYmIGNvbnRyb2xPckNvbW1hbmQpIHx8XG4gICAgICAgICAgICAvLyBBbGxvdzogQ3RybCtWIGFuZCBDb21tYW5kK1ZcbiAgICAgICAgICAgIChrZXkgPT0gJ3YnICYmIGNvbnRyb2xPckNvbW1hbmQpIHx8XG4gICAgICAgICAgICAvLyBBbGxvdzogQ3RybCtYIGFuZCBDb21tYW5kK1hcbiAgICAgICAgICAgIChrZXkgPT0gJ3gnICYmIGNvbnRyb2xPckNvbW1hbmQpIHx8XG4gICAgICAgICAgICBrZXkuc3RhcnRzV2l0aCgnRicpXG4gICAgICAgICkge1xuICAgICAgICAgICAgLy8gbGV0IGl0IGhhcHBlbiwgZG9uJ3QgZG8gYW55dGhpbmdcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNQaG9uZShlOiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGtleTogc3RyaW5nID0gdGhpcy5nZXROYW1lKGUpO1xuICAgICAgICBjb25zdCBjb250cm9sT3JDb21tYW5kID0gZS5jdHJsS2V5ID09PSB0cnVlIHx8IGUubWV0YUtleSA9PT0gdHJ1ZTtcblxuICAgICAgICAvLyBhbGxvd2VkIGtleXMgYXBhcnQgZnJvbSBudW1lcmljIGNoYXJhY3RlcnNcbiAgICAgICAgY29uc3QgYWxsb3dlZEtleXMgPSBbJy4nLCAnLScsICcrJywgJygnLCAnKScsICcqJywgJyMnXTtcblxuICAgICAgICAvLyBhbGxvdyBzb21lIG5vbi1udW1lcmljIGNoYXJhY3RlcnNcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5hbGxvd0tleWJvYXJkTm9uTnVtZXJpY0NoYXJhY3RlcnMoXG4gICAgICAgICAgICAgICAgYWxsb3dlZEtleXMsXG4gICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgIGNvbnRyb2xPckNvbW1hbmRcbiAgICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGFsbG93IHBob25lIGNoYXJhY3RlcnMgb25seVxuICAgICAgICBjb25zdCBpc1Bob25lID0gbmV3IFJlZ0V4cCh0aGlzLnBob25lKS50ZXN0KGtleSk7XG4gICAgICAgIHJldHVybiBpc1Bob25lO1xuICAgIH1cblxuICAgIGlzTnVtYmVyKGU6IEtleWJvYXJkRXZlbnQsIGFsbG93RGVjaW1hbDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjdXJzb3JQb3NpdGlvbjogbnVtYmVyID0gZS50YXJnZXRbJ3NlbGVjdGlvblN0YXJ0J107XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsVmFsdWU6IHN0cmluZyA9IGUudGFyZ2V0Wyd2YWx1ZSddO1xuICAgICAgICBjb25zdCBrZXk6IHN0cmluZyA9IHRoaXMuZ2V0TmFtZShlKTtcbiAgICAgICAgY29uc3QgY29udHJvbE9yQ29tbWFuZCA9IGUuY3RybEtleSA9PT0gdHJ1ZSB8fCBlLm1ldGFLZXkgPT09IHRydWU7XG4gICAgICAgIGNvbnN0IHNpZ25FeGlzdHMgPSBvcmlnaW5hbFZhbHVlLmluY2x1ZGVzKCctJyk7XG4gICAgICAgIGNvbnN0IHNlcGFyYXRvckV4aXN0cyA9IG9yaWdpbmFsVmFsdWUuaW5jbHVkZXModGhpcy5kZWNpbWFsU2VwYXJhdG9yKTtcblxuICAgICAgICAvLyBhbGxvd2VkIGtleXMgYXBhcnQgZnJvbSBudW1lcmljIGNoYXJhY3RlcnNcbiAgICAgICAgY29uc3QgYWxsb3dlZEtleXMgPSBbXTtcblxuICAgICAgICAvLyB3aGVuIGRlY2ltYWxzIGFyZSBhbGxvd2VkLCBhZGRcbiAgICAgICAgLy8gZGVjaW1hbCBzZXBhcmF0b3IgdG8gYWxsb3dlZCBjb2RlcyB3aGVuXG4gICAgICAgIC8vIGl0cyBwb3NpdGlvbiBpcyBub3QgY2xvc2UgdG8gdGhlIHRoZSBzaWduICgtLiBhbmQgLi0pXG4gICAgICAgIGNvbnN0IHNlcGFyYXRvcklzQ2xvc2VUb1NpZ24gPSBzaWduRXhpc3RzICYmIGN1cnNvclBvc2l0aW9uIDw9IDE7XG4gICAgICAgIGlmIChhbGxvd0RlY2ltYWwgJiYgIXNlcGFyYXRvcklzQ2xvc2VUb1NpZ24gJiYgIXNlcGFyYXRvckV4aXN0cykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGVjaW1hbFNlcGFyYXRvciA9PSAnLicpIGFsbG93ZWRLZXlzLnB1c2goJy4nKTtcbiAgICAgICAgICAgIGVsc2UgYWxsb3dlZEtleXMucHVzaCgnLCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gd2hlbiBtaW51cyBzaWduIGlzIGFsbG93ZWQsIGFkZCBpdHNcbiAgICAgICAgLy8ga2V5IHRvIGFsbG93ZWQga2V5IG9ubHkgd2hlbiB0aGVcbiAgICAgICAgLy8gY3Vyc29yIGlzIGluIHRoZSBmaXJzdCBwb3NpdGlvbiwgYW5kXG4gICAgICAgIC8vIGZpcnN0IGNoYXJhY3RlciBpcyBkaWZmZXJlbnQgZnJvbVxuICAgICAgICAvLyBkZWNpbWFsIHNlcGFyYXRvclxuICAgICAgICBjb25zdCBmaXJzdENoYXJhY3RlcklzU2VwYXJhdG9yID1cbiAgICAgICAgICAgIG9yaWdpbmFsVmFsdWUuY2hhckF0KDApICE9IHRoaXMuZGVjaW1hbFNlcGFyYXRvcjtcbiAgICAgICAgaWYgKCFzaWduRXhpc3RzICYmIGZpcnN0Q2hhcmFjdGVySXNTZXBhcmF0b3IgJiYgY3Vyc29yUG9zaXRpb24gPT0gMCkge1xuICAgICAgICAgICAgYWxsb3dlZEtleXMucHVzaCgnLScpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gYWxsb3cgc29tZSBub24tbnVtZXJpYyBjaGFyYWN0ZXJzXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuYWxsb3dLZXlib2FyZE5vbk51bWVyaWNDaGFyYWN0ZXJzKFxuICAgICAgICAgICAgICAgIGFsbG93ZWRLZXlzLFxuICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICBjb250cm9sT3JDb21tYW5kXG4gICAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhbGxvdyBudW1iZXIgY2hhcmFjdGVycyBvbmx5XG4gICAgICAgIGNvbnN0IGlzTnVtYmVyID0gbmV3IFJlZ0V4cCh0aGlzLmludGVnZXJVbnNpZ25lZCkudGVzdChrZXkpO1xuICAgICAgICByZXR1cm4gaXNOdW1iZXI7XG4gICAgfVxufVxuIl19
@@ -88,10 +88,11 @@ export class PepTextboxField extends PepFieldBase {
88
88
  super(options);
89
89
  this.controlType = 'textbox';
90
90
  this.type = 'text';
91
+ // regexError?: string;
91
92
  this.digitsNumberAfterDecimalPoint = NaN;
92
93
  this.type = options.type || 'text';
93
- this.regex = options.regex;
94
- this.regexError = options.regexError;
94
+ this.regex = options.regex ?? null;
95
+ // this.regexError = options.regexError ?? null;
95
96
  this.update(options);
96
97
  }
97
98
  update(options) {
@@ -109,6 +110,7 @@ export class PepTextboxField extends PepFieldBase {
109
110
  const validators = super.getBaseValidators();
110
111
  if (this.type === 'email') {
111
112
  validators.push(Validators.pattern(/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/));
113
+ // validators.push(Validators.email);
112
114
  }
113
115
  else if (this.type === 'phone') {
114
116
  validators.push(Validators.pattern(/^[\d\.\-\+\(\)\*\#]+$/));
@@ -297,4 +299,4 @@ export class PepInternalMenuField extends PepFieldBase {
297
299
  // this.hasSubMenu = options['hasSubMenu'];
298
300
  }
299
301
  }
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9taXphdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvc3JjL2NvcmUvY3VzdG9taXphdGlvbi9jdXN0b21pemF0aW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWdCekQsb0NBQW9DO0FBQ3BDLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUEyQixNQUFNLENBQUM7QUFJM0Usb0NBQW9DO0FBQ3BDLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUF5QixLQUFLLENBQUM7QUFzQ3RFLE1BQU0sT0FBTyxZQUFZO0lBMkJyQix1QkFBdUI7SUFFdkIsWUFBWSxVQUFnQyxFQUFFO1FBQzFDLElBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFFckMsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1FBQzdDLGtDQUFrQztRQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFFL0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxJQUFJLENB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QUFpQixDQUFDO1FBQ2hDLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFLWixJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1FBRTNDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxPQUF3QztRQUNsRCxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXRCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUNyQyxDQUFDO0NBQ0o7QUFNRCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsWUFBWTtJQUdsRCwrQkFBK0I7SUFFL0IsWUFBWSxVQUF3QyxFQUFFO1FBQ2xELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUxuQixnQkFBVyxHQUFHLE1BQU0sQ0FBQztRQUNyQixZQUFPLEdBQWlCLEVBQUUsQ0FBQztRQUt2QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ3JDLDJDQUEyQztJQUMvQyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqIEFsbG93ZWQgbGF5b3V0IG9wdGlvbnMgKi9cbmV4cG9ydCB0eXBlIFBlcExheW91dFR5cGUgPSAnZm9ybScgfCAnY2FyZCcgfCAndGFibGUnO1xuXG4vKiogQWxsb3dlZCBzdHlsZSBvcHRpb25zICovXG5leHBvcnQgdHlwZSBQZXBTdHlsZVR5cGUgPSAnd2VhaycgfCAnd2Vhay1pbnZlcnQnIHwgJ3JlZ3VsYXInIHwgJ3N0cm9uZyc7XG5cbi8qKiBBbGxvd2VkIHN0eWxlIHN0YXRlIG9wdGlvbnMgKi9cbmV4cG9ydCB0eXBlIFBlcFN0eWxlU3RhdGVUeXBlID0gJ3N5c3RlbScgfCAnY2F1dGlvbicgfCAnc3VjY2Vzcyc7XG5cbi8qKiBBbGxvd2VkIHNpemUgb3B0aW9ucyAqL1xuZXhwb3J0IHR5cGUgUGVwU2l6ZVR5cGUgPSAneHMnIHwgJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJztcblxuLyoqIEFsbG93ZWQgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb3B0aW9ucyAqL1xuZXhwb3J0IHR5cGUgUGVwSG9yaXpvbnRhbEFsaWdubWVudCA9ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0Jztcbi8qKiBEZWZhdWx0IGhvcml6b250YWwgYWxpZ25tZW50LiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSE9SSVpPTlRBTF9BTElHTk1FTlQ6IFBlcEhvcml6b250YWxBbGlnbm1lbnQgPSAnbGVmdCc7XG5cbi8qKiBBbGxvd2VkIHZlcnRpY2FsIGFsaWdubWVudCBvcHRpb25zICovXG5leHBvcnQgdHlwZSBQZXBWZXJ0aWNhbEFsaWdubWVudCA9ICd0b3AnIHwgJ21pZGRsZScgfCAnYm90dG9tJztcbi8qKiBEZWZhdWx0IGhvcml6b250YWwgYWxpZ25tZW50LiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVkVSVElDQUxfQUxJR05NRU5UOiBQZXBWZXJ0aWNhbEFsaWdubWVudCA9ICd0b3AnO1xuZXhwb3J0IGludGVyZmFjZSBJUGVwT3B0aW9uIHtcbiAgICBrZXk6IHN0cmluZztcbiAgICB2YWx1ZTogc3RyaW5nO1xufVxuXG4vLyBleHBvcnQgdHlwZSBQZXBGaWVsZEJhc2VUeXBlID0gJycgfCBQZXBJbnRlcm5hbEJ1dHRvbkZpZWxkVHlwZSB8IFBlcFRleHRib3hGaWVsZFR5cGUgfFxuLy8gICAgIFBlcFF1YW50aXR5U2VsZWN0b3JGaWVsZFR5cGUgfCBQZXBEYXRlRmllbGRUeXBlIHwgUGVwQ2hlY2tib3hGaWVsZFR5cGUgfCBQZXBTZWxlY3RGaWVsZFR5cGU7XG5pbnRlcmZhY2UgSVBlcEZpZWxkQmFzZU9wdGlvbnMge1xuICAgIHZhbHVlPzogYW55O1xuICAgIGZvcm1hdHRlZFZhbHVlPzogYW55O1xuICAgIGFkZGl0aW9uYWxWYWx1ZT86IHN0cmluZztcbiAgICBrZXk/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgYWNjZXNzb3J5Pzogc3RyaW5nO1xuICAgIG1hbmRhdG9yeT86IGJvb2xlYW47XG4gICAgcmVhZG9ubHk/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBvcmRlcj86IG51bWJlcjtcbiAgICBjb250cm9sVHlwZT86IHN0cmluZztcbiAgICAvLyB0eXBlPzogUGVwRmllbGRCYXNlVHlwZTtcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBoaWRkZW4/OiBib29sZWFuO1xuICAgIHJvdz86IG51bWJlcjtcbiAgICByb3dTcGFuPzogbnVtYmVyO1xuICAgIGNvbD86IG51bWJlcjtcbiAgICBjb2xTcGFuPzogbnVtYmVyO1xuICAgIHhBbGlnbm1lbnQ/OiBQZXBIb3Jpem9udGFsQWxpZ25tZW50O1xuICAgIHlBbGlnbm1lbnQ/OiBQZXBWZXJ0aWNhbEFsaWdubWVudDtcbiAgICBtYXhGaWVsZENoYXJhY3RlcnM/OiBudW1iZXI7XG4gICAgbWluVmFsdWU/OiBudW1iZXI7XG4gICAgbWF4VmFsdWU/OiBudW1iZXI7XG4gICAgdGV4dENvbG9yPzogc3RyaW5nO1xuICAgIHZpc2libGU/OiBib29sZWFuOyAgICBcbiAgICBlbXB0eU9wdGlvbj86IGJvb2xlYW47ICAgIFxuICAgIC8vIGxhc3RGb2N1c0ZpZWxkPzogYW55O1xuICAgIGRpZ2l0c051bWJlckFmdGVyRGVjaW1hbFBvaW50PzogbnVtYmVyO1xufVxuZXhwb3J0IGNsYXNzIFBlcEZpZWxkQmFzZSB7XG4gICAgdmFsdWU6IGFueTtcbiAgICBmb3JtYXR0ZWRWYWx1ZTogYW55O1xuICAgIGFkZGl0aW9uYWxWYWx1ZTogc3RyaW5nO1xuICAgIGtleTogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgYWNjZXNzb3J5OiBzdHJpbmc7XG4gICAgbWFuZGF0b3J5OiBib29sZWFuO1xuICAgIHJlYWRvbmx5OiBib29sZWFuO1xuICAgIGRpc2FibGVkOiBib29sZWFuO1xuICAgIG9yZGVyOiBudW1iZXI7XG4gICAgLy8gdHlwZTogc3RyaW5nO1xuICAgIGNvbnRyb2xUeXBlOiBzdHJpbmc7XG4gICAgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgICBoaWRkZW46IGJvb2xlYW47XG4gICAgcm93OiBudW1iZXI7XG4gICAgcm93U3BhbjogbnVtYmVyO1xuICAgIGNvbDogbnVtYmVyO1xuICAgIGNvbFNwYW46IG51bWJlcjtcbiAgICB4QWxpZ25tZW50OiBQZXBIb3Jpem9udGFsQWxpZ25tZW50O1xuICAgIHlBbGlnbm1lbnQ6IFBlcFZlcnRpY2FsQWxpZ25tZW50O1xuICAgIGdyb3VwRmllbGRzOiBQZXBGaWVsZEJhc2VbXTtcbiAgICBtYXhGaWVsZENoYXJhY3RlcnM6IG51bWJlcjtcbiAgICBtaW5WYWx1ZTogbnVtYmVyO1xuICAgIG1heFZhbHVlOiBudW1iZXI7XG4gICAgdGV4dENvbG9yOiBzdHJpbmc7XG4gICAgdmlzaWJsZTogYm9vbGVhbjsgICAgICAgIFxuICAgIC8vIGxhc3RGb2N1c0ZpZWxkOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBJUGVwRmllbGRCYXNlT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHRoaXMua2V5ID0gb3B0aW9ucy5rZXkgfHwgJyc7XG4gICAgICAgIHRoaXMubGFiZWwgPSBvcHRpb25zLmxhYmVsIHx8ICcnO1xuICAgICAgICB0aGlzLmFjY2Vzc29yeSA9IG9wdGlvbnMuYWNjZXNzb3J5IHx8ICcnO1xuICAgICAgICB0aGlzLm1hbmRhdG9yeSA9ICEhb3B0aW9ucy5tYW5kYXRvcnk7XG5cbiAgICAgICAgdGhpcy5vcmRlciA9IG9wdGlvbnMub3JkZXIgPz8gMTtcbiAgICAgICAgdGhpcy5jb250cm9sVHlwZSA9IG9wdGlvbnMuY29udHJvbFR5cGUgfHwgJyc7XG4gICAgICAgIC8vIHRoaXMudHlwZSA9IG9wdGlvbnMudHlwZSB8fCAnJztcbiAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IG9wdGlvbnMucGxhY2Vob2xkZXIgfHwgJyc7XG4gICAgICAgIHRoaXMuaGlkZGVuID0gISFvcHRpb25zLmhpZGRlbjtcblxuICAgICAgICB0aGlzLnJvdyA9IG9wdGlvbnMucm93ID8/IDE7XG4gICAgICAgIHRoaXMucm93U3BhbiA9IG9wdGlvbnMucm93U3BhbiA/PyAxO1xuICAgICAgICB0aGlzLmNvbCA9IG9wdGlvbnMuY29sID8/IDE7XG4gICAgICAgIHRoaXMuY29sU3BhbiA9IG9wdGlvbnMuY29sU3BhbiA/PyAxO1xuXG4gICAgICAgIHRoaXMueEFsaWdubWVudCA9IG9wdGlvbnMueEFsaWdubWVudCA/PyBERUZBVUxUX0hPUklaT05UQUxfQUxJR05NRU5UO1xuICAgICAgICB0aGlzLnlBbGlnbm1lbnQgPSBvcHRpb25zLnlBbGlnbm1lbnQgPz8gREVGQVVMVF9WRVJUSUNBTF9BTElHTk1FTlQ7XG5cbiAgICAgICAgdGhpcy5tYXhGaWVsZENoYXJhY3RlcnMgPSBvcHRpb25zLm1heEZpZWxkQ2hhcmFjdGVycyA/PyAwO1xuICAgICAgICB0aGlzLm1pblZhbHVlID0gb3B0aW9ucy5taW5WYWx1ZSA/PyAwO1xuICAgICAgICB0aGlzLm1heFZhbHVlID0gb3B0aW9ucy5tYXhWYWx1ZSA/PyAwO1xuXG4gICAgICAgIHRoaXMudXBkYXRlKG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRCYXNlVmFsaWRhdG9ycyhpc0NoZWNrYm94ID0gZmFsc2UpOiBWYWxpZGF0b3JGbltdIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IFtdO1xuXG4gICAgICAgIGlmICh0aGlzLm1hbmRhdG9yeSAmJiAhdGhpcy5yZWFkb25seSAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgaWYgKGlzQ2hlY2tib3gpIHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZFRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5udWxsVmFsaWRhdG9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1heEZpZWxkQ2hhcmFjdGVycyA+IDApIHtcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLm1heEZpZWxkQ2hhcmFjdGVycykpO1xuICAgICAgICB9ICAgICAgICBcblxuICAgICAgICByZXR1cm4gdmFsaWRhdG9ycztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbltdIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHRoaXMuZ2V0QmFzZVZhbGlkYXRvcnMoKTtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRvcnM7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZShvcHRpb25zOiBJUGVwRmllbGRCYXNlT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gb3B0aW9ucy52YWx1ZTtcbiAgICAgICAgdGhpcy5mb3JtYXR0ZWRWYWx1ZSA9IG9wdGlvbnMuZm9ybWF0dGVkVmFsdWU7XG4gICAgICAgIHRoaXMuYWRkaXRpb25hbFZhbHVlID0gb3B0aW9ucy5hZGRpdGlvbmFsVmFsdWU7XG5cbiAgICAgICAgdGhpcy5yZWFkb25seSA9ICEhb3B0aW9ucy5yZWFkb25seTtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9ICEhb3B0aW9ucy5kaXNhYmxlZDtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gISFvcHRpb25zLnZpc2libGU7XG4gICAgICAgIHRoaXMudGV4dENvbG9yID0gb3B0aW9ucy50ZXh0Q29sb3IgfHwgJyc7XG4gICAgICAgIC8vIHRoaXMubGFzdEZvY3VzRmllbGQgPSBvcHRpb25zLmxhc3RGb2N1c0ZpZWxkIHx8IG51bGw7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGVwUGxhY2Vob2xkZXJGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAncGxhY2Vob2xkZXInO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSVBlcEZpZWxkQmFzZU9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQZXBTZXBhcmF0b3JGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAnc2VwYXJhdG9yJztcbiAgICBcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBJUGVwRmllbGRCYXNlT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpOyAgICAgICAgXG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGVwQXR0YWNobWVudEZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdhdHRhY2htZW50JztcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBGaWVsZEJhc2VPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGVwSW5kaWNhdG9yc0ZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdpbmRpY2F0b3JzJztcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBGaWVsZEJhc2VPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBQZXBUZXh0Ym94RmllbGRUeXBlID1cbiAgICB8ICd0ZXh0J1xuICAgIHwgJ2xpbmsnXG4gICAgfCAnZW1haWwnXG4gICAgfCAncGhvbmUnXG4gICAgfCAnZHVyYXRpb24nXG4gICAgfCAnaW50J1xuICAgIHwgJ3BlcmNlbnRhZ2UnXG4gICAgfCAnY3VycmVuY3knXG4gICAgfCAncmVhbCc7XG5pbnRlcmZhY2UgSVBlcFRleHRib3hGaWVsZE9wdGlvbnMgZXh0ZW5kcyBJUGVwRmllbGRCYXNlT3B0aW9ucyB7XG4gICAgdHlwZT86IFBlcFRleHRib3hGaWVsZFR5cGU7XG4gICAgcmVnZXg/OiBzdHJpbmcgfCBSZWdFeHA7XG4gICAgcmVnZXhFcnJvcj86IHN0cmluZztcbn1cbmV4cG9ydCBjbGFzcyBQZXBUZXh0Ym94RmllbGQgZXh0ZW5kcyBQZXBGaWVsZEJhc2Uge1xuICAgIGNvbnRyb2xUeXBlID0gJ3RleHRib3gnO1xuICAgIHR5cGU6IFBlcFRleHRib3hGaWVsZFR5cGUgPSAndGV4dCc7XG4gICAgcmVnZXg6IHN0cmluZyB8IFJlZ0V4cDtcbiAgICByZWdleEVycm9yOiBzdHJpbmc7XG4gICAgZGlnaXRzTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQgPSBOYU47XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBJUGVwVGV4dGJveEZpZWxkT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgICAgIHRoaXMudHlwZSA9IG9wdGlvbnMudHlwZSB8fCAndGV4dCc7XG4gICAgICAgIHRoaXMucmVnZXggPSBvcHRpb25zLnJlZ2V4O1xuICAgICAgICB0aGlzLnJlZ2V4RXJyb3IgPSBvcHRpb25zLnJlZ2V4RXJyb3I7XG5cblxuICAgICAgICB0aGlzLnVwZGF0ZShvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlKG9wdGlvbnM6IElQZXBUZXh0Ym94RmllbGRPcHRpb25zKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLnVwZGF0ZShvcHRpb25zKTtcblxuICAgICAgICB0aGlzLmRpZ2l0c051bWJlckFmdGVyRGVjaW1hbFBvaW50ID0gb3B0aW9ucy5kaWdpdHNOdW1iZXJBZnRlckRlY2ltYWxQb2ludCA/PyBOYU47XG5cbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2xpbmsnKSB7XG4gICAgICAgICAgICAvLyBESS0xMTI5MiAtIGFkZCBjaGFuZ2VzIGZvciBsaW5rIGZpZWxkIGZvciB0aGUgXCJSZWFkIE9ubHkgZGlzcGxheSB2YWx1ZVwiIHByb3BcbiAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVkVmFsdWUgPVxuICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZWQgJiYgdGhpcy5mb3JtYXR0ZWRWYWx1ZSAmJiB0aGlzLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5mb3JtYXR0ZWRWYWx1ZVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMudmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbltdIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHN1cGVyLmdldEJhc2VWYWxpZGF0b3JzKCk7XG5cbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2VtYWlsJykge1xuICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihcbiAgICAgICAgICAgICAgICAgICAgL14oKFtePD4oKVxcW1xcXVxcXFwuLDs6XFxzQFwiXSsoXFwuW148PigpXFxbXFxdXFxcXC4sOzpcXHNAXCJdKykqKXwoXCIuK1wiKSlAKChcXFtbMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XSl8KChbYS16QS1aXFwtMC05XStcXC4pK1thLXpBLVpdezIsfSkpJC9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ3Bob25lJykge1xuICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucGF0dGVybigvXltcXGRcXC5cXC1cXCtcXChcXClcXCpcXCNdKyQvKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAnaW50JyB8fCB0aGlzLnR5cGUgPT09ICdyZWFsJykge1xuICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucGF0dGVybigvXltcXC4sXFwtXFwrXFxkXSskLykpO1xuXG4gICAgICAgICAgICBpZiAoIWlzTmFOKHRoaXMubWluVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluKHRoaXMubWluVmFsdWUpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpc05hTih0aGlzLm1heFZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heCh0aGlzLm1heFZhbHVlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50eXBlID09PSAndGV4dCcgJiYgdGhpcy5yZWdleCkge1xuICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucGF0dGVybih0aGlzLnJlZ2V4KSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsaWRhdG9ycztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQZXBMaW5rRmllbGQgZXh0ZW5kcyBQZXBGaWVsZEJhc2Uge1xuICAgIGNvbnRyb2xUeXBlID0gJ2xpbmsnO1xuICAgIHR5cGU6IFBlcFRleHRib3hGaWVsZFR5cGUgPSAnbGluayc7XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBJUGVwRmllbGRCYXNlT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgICAgIHRoaXMudXBkYXRlKG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGUob3B0aW9uczogSVBlcFRleHRib3hGaWVsZE9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIudXBkYXRlKG9wdGlvbnMpO1xuXG4gICAgICAgIC8vIERJLTExMjkyIC0gYWRkIGNoYW5nZXMgZm9yIGxpbmsgZmllbGQgZm9yIHRoZSBcIlJlYWQgT25seSBkaXNwbGF5IHZhbHVlXCIgcHJvcFxuICAgICAgICB0aGlzLmZvcm1hdHRlZFZhbHVlID1cbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWQgJiYgdGhpcy5mb3JtYXR0ZWRWYWx1ZSAmJiB0aGlzLnZhbHVlXG4gICAgICAgICAgICAgICAgPyB0aGlzLmZvcm1hdHRlZFZhbHVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnZhbHVlO1xuXG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGVwVGV4dGFyZWFGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAndGV4dGFyZWEnO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSVBlcEZpZWxkQmFzZU9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgLy8gdGhpcy50eXBlID0gJ3RleHRhcmVhJztcbiAgICB9XG59XG5cbmludGVyZmFjZSBJUGVwU2lnbmF0dXJlRmllbGRPcHRpb25zIGV4dGVuZHMgSVBlcEZpZWxkQmFzZU9wdGlvbnMge1xuICAgIHJlbmRlclRpdGxlPzogYm9vbGVhbjtcbiAgICByZW5kZXJFbmxhcmdlQnV0dG9uPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBjbGFzcyBQZXBSaWNoSHRtbFRleHRhcmVhRmllbGQgZXh0ZW5kcyBQZXBGaWVsZEJhc2Uge1xuICAgIGNvbnRyb2xUeXBlID0gJ3JpY2hodG1sdGV4dGFyZWEnOyAgICBcbiAgICByZW5kZXJUaXRsZTogYm9vbGVhbjtcbiAgICByZW5kZXJFbmxhcmdlQnV0dG9uOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSVBlcFNpZ25hdHVyZUZpZWxkT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgICAgIHRoaXMucmVuZGVyVGl0bGUgPSBvcHRpb25zLnJlbmRlclRpdGxlICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLnJlbmRlclRpdGxlIDogdHJ1ZTtcbiAgICAgICAgdGhpcy5yZW5kZXJFbmxhcmdlQnV0dG9uID0gb3B0aW9ucy5yZW5kZXJFbmxhcmdlQnV0dG9uICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLnJlbmRlckVubGFyZ2VCdXR0b24gOiB0cnVlO1xuICAgIH1cbn1cblxuaW50ZXJmYWNlIElQZXBTaWduYXR1cmVGaWVsZE9wdGlvbnMgZXh0ZW5kcyBJUGVwRmllbGRCYXNlT3B0aW9ucyB7XG4gICAgb3B0aW9ucz86IElQZXBPcHRpb25bXTtcbn1cbmV4cG9ydCBjbGFzcyBQZXBTaWduYXR1cmVGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAnc2lnbmF0dXJlJztcbiAgICBvcHRpb25zOiBJUGVwT3B0aW9uW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBTaWduYXR1cmVGaWVsZE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucy5vcHRpb25zIHx8IFtdO1xuICAgIH1cbn1cblxuaW50ZXJmYWNlIElQZXBJbWFnZUZpZWxkT3B0aW9ucyBleHRlbmRzIElQZXBGaWVsZEJhc2VPcHRpb25zIHtcbiAgICBoYXNDYW1wYWlnbkZpZWxkPzogYW55O1xuICAgIGluZGljYXRvcnNGaWVsZD86IGFueTtcbiAgICBtZW51RmllbGQ/OiBhbnk7XG4gICAgb3B0aW9ucz86IElQZXBPcHRpb25bXTtcbiAgICBzaXplTGltaXRNQj86IG51bWJlcjtcbn1cbmV4cG9ydCBjbGFzcyBQZXBJbWFnZUZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdpbWFnZSc7XG4gICAgaGFzQ2FtcGFpZ25GaWVsZCA9IG51bGw7XG4gICAgaW5kaWNhdG9yc0ZpZWxkID0gbnVsbDtcbiAgICBtZW51RmllbGQgPSBudWxsO1xuICAgIG9wdGlvbnM6IElQZXBPcHRpb25bXSA9IFtdO1xuICAgIHNpemVMaW1pdE1CID0gNTtcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBJbWFnZUZpZWxkT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLmhhc0NhbXBhaWduRmllbGQgPSBvcHRpb25zLmhhc0NhbXBhaWduRmllbGQgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5pbmRpY2F0b3JzRmllbGQgPSBvcHRpb25zLmluZGljYXRvcnNGaWVsZCB8fCBudWxsO1xuICAgICAgICB0aGlzLm1lbnVGaWVsZCA9IG9wdGlvbnMubWVudUZpZWxkIHx8IG51bGw7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMub3B0aW9ucyB8fCBbXTtcbiAgICAgICAgdGhpcy5zaXplTGltaXRNQiA9IG9wdGlvbnMuc2l6ZUxpbWl0TUIgfHwgNTtcbiAgICB9XG59XG5cbmludGVyZmFjZSBJUGVwSW1hZ2VzRmllbGRPcHRpb25zIGV4dGVuZHMgSVBlcEZpZWxkQmFzZU9wdGlvbnMge1xuICAgIG9wdGlvbnM/OiBJUGVwT3B0aW9uW107XG59XG5leHBvcnQgY2xhc3MgUGVwSW1hZ2VzRmllbGQgZXh0ZW5kcyBQZXBGaWVsZEJhc2Uge1xuICAgIGNvbnRyb2xUeXBlID0gJ2ltYWdlcyc7XG4gICAgb3B0aW9uczogSVBlcE9wdGlvbltdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBJUGVwSW1hZ2VzRmllbGRPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMub3B0aW9ucyB8fCBbXTtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIFBlcFF1YW50aXR5U2VsZWN0b3JGaWVsZFR5cGUgPVxuICAgIHwgJ2J1dHRvbidcbiAgICB8ICdwYWNrYWdlQnV0dG9uJ1xuICAgIHwgJ3FzJ1xuICAgIHwgJ3FzRm9yTWF0cml4JztcbmludGVyZmFjZSBJUGVwUXVhbnRpdHlTZWxlY3RvckZpZWxkT3B0aW9ucyBleHRlbmRzIElQZXBGaWVsZEJhc2VPcHRpb25zIHtcbiAgICBhbGxvd0RlY2ltYWw/OiBib29sZWFuO1xuICAgIG5vdGlmaWNhdGlvbkluZm8/OiBhbnk7XG4gICAgdHlwZT86IFBlcFF1YW50aXR5U2VsZWN0b3JGaWVsZFR5cGU7XG59XG5leHBvcnQgY2xhc3MgUGVwUXVhbnRpdHlTZWxlY3RvckZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdxcyc7XG4gICAgYWxsb3dEZWNpbWFsOiBib29sZWFuO1xuICAgIG5vdGlmaWNhdGlvbkluZm86IGFueSA9IHt9O1xuICAgIHVwZGF0ZWREYXRhQ291bnQ6IG51bWJlcjtcbiAgICB0eXBlOiBQZXBRdWFudGl0eVNlbGVjdG9yRmllbGRUeXBlO1xuICAgIGRpZ2l0c051bWJlckFmdGVyRGVjaW1hbFBvaW50ID0gTmFOO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSVBlcFF1YW50aXR5U2VsZWN0b3JGaWVsZE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcblxuICAgICAgICB0aGlzLnVwZGF0ZWREYXRhQ291bnQgPSAwO1xuICAgICAgICB0aGlzLnR5cGUgPSBvcHRpb25zLnR5cGUgfHwgJ3FzJztcblxuICAgICAgICB0aGlzLnVwZGF0ZShvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlKG9wdGlvbnM6IElQZXBRdWFudGl0eVNlbGVjdG9yRmllbGRPcHRpb25zKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLnVwZGF0ZShvcHRpb25zKTtcbiAgICAgICAgXG4gICAgICAgIHRoaXMuZGlnaXRzTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQgPSBvcHRpb25zLmRpZ2l0c051bWJlckFmdGVyRGVjaW1hbFBvaW50ID8/IE5hTjtcblxuICAgICAgICB0aGlzLmFsbG93RGVjaW1hbCA9IG9wdGlvbnMuYWxsb3dEZWNpbWFsIHx8IGZhbHNlO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkluZm8gPSBvcHRpb25zLm5vdGlmaWNhdGlvbkluZm87XG4gICAgICAgIHRoaXMudXBkYXRlZERhdGFDb3VudCArPSAxO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgUGVwRGF0ZUZpZWxkVHlwZSA9ICdkYXRldGltZScgfCAnZGF0ZSc7XG5pbnRlcmZhY2UgSVBlcERhdGVGaWVsZE9wdGlvbnMgZXh0ZW5kcyBJUGVwRmllbGRCYXNlT3B0aW9ucyB7XG4gICAgdHlwZT86IFBlcERhdGVGaWVsZFR5cGU7XG59XG5leHBvcnQgY2xhc3MgUGVwRGF0ZUZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdkYXRlJztcbiAgICB0eXBlOiBQZXBEYXRlRmllbGRUeXBlO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSVBlcERhdGVGaWVsZE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcblxuICAgICAgICB0aGlzLnR5cGUgPSBvcHRpb25zLnR5cGUgfHwgJ2RhdGUnO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgUGVwQ2hlY2tib3hGaWVsZFR5cGUgPSAnY2hlY2tib3gnIHwgJ2Jvb2xlYW5UZXh0JztcbmludGVyZmFjZSBJUGVwQ2hlY2tib3hGaWVsZE9wdGlvbnMgZXh0ZW5kcyBJUGVwRmllbGRCYXNlT3B0aW9ucyB7XG4gICAgdHlwZT86IFBlcENoZWNrYm94RmllbGRUeXBlO1xufVxuZXhwb3J0IGNsYXNzIFBlcENoZWNrYm94RmllbGQgZXh0ZW5kcyBQZXBGaWVsZEJhc2Uge1xuICAgIGNvbnRyb2xUeXBlID0gJ2NoZWNrYm94JztcbiAgICB0eXBlOiBQZXBDaGVja2JveEZpZWxkVHlwZTtcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBDaGVja2JveEZpZWxkT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgICAgIHRoaXMudHlwZSA9IG9wdGlvbnMudHlwZSB8fCAnY2hlY2tib3gnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWYWxpZGF0b3JzKCk6IFZhbGlkYXRvckZuW10ge1xuICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gc3VwZXIuZ2V0QmFzZVZhbGlkYXRvcnModHJ1ZSk7XG4gICAgICAgIHJldHVybiB2YWxpZGF0b3JzO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgUGVwU2VsZWN0RmllbGRUeXBlID0gJ3NlbGVjdCcgfCAnbXVsdGknO1xuaW50ZXJmYWNlIElQZXBTZWxlY3RGaWVsZE9wdGlvbnMgZXh0ZW5kcyBJUGVwRmllbGRCYXNlT3B0aW9ucyB7XG4gICAgb3B0aW9ucz86IElQZXBPcHRpb25bXTtcbiAgICB0eXBlPzogUGVwU2VsZWN0RmllbGRUeXBlO1xufVxuZXhwb3J0IGNsYXNzIFBlcFNlbGVjdEZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdzZWxlY3QnO1xuICAgIG9wdGlvbnM6IElQZXBPcHRpb25bXSA9IFtdOyAgICBcbiAgICB0eXBlOiBQZXBTZWxlY3RGaWVsZFR5cGU7ICAgIFxuICAgIGVtcHR5T3B0aW9uOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSVBlcFNlbGVjdEZpZWxkT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLnR5cGUgPSBvcHRpb25zLnR5cGUgfHwgJ3NlbGVjdCc7XG4gICAgICAgIHRoaXMuZW1wdHlPcHRpb24gPSBvcHRpb25zLmVtcHR5T3B0aW9uO1xuXG4gICAgICAgIHRoaXMudXBkYXRlKG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGUob3B0aW9uczogSVBlcFNlbGVjdEZpZWxkT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICBzdXBlci51cGRhdGUob3B0aW9ucyk7XG5cbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucy5vcHRpb25zIHx8IFtdO1xuICAgIH1cbn1cblxuaW50ZXJmYWNlIElQZXBBZGRyZXNzRmllbGRPcHRpb25zIGV4dGVuZHMgSVBlcEZpZWxkQmFzZU9wdGlvbnMge1xuICAgIGdyb3VwRmllbGRzPzogUGVwRmllbGRCYXNlW107XG59XG5leHBvcnQgY2xhc3MgUGVwQWRkcmVzc0ZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdhZGRyZXNzJztcbiAgICBncm91cEZpZWxkczogUGVwRmllbGRCYXNlW10gPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSVBlcEFkZHJlc3NGaWVsZE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5ncm91cEZpZWxkcyA9IG9wdGlvbnMuZ3JvdXBGaWVsZHMgfHwgbnVsbDtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIFBlcEludGVybmFsQnV0dG9uRmllbGRUeXBlID1cbiAgICB8ICdidXR0b24nXG4gICAgfCAncmVmZXJlbmNlJ1xuICAgIHwgJ2xpc3RvZm9iamVjdHMnO1xuaW50ZXJmYWNlIElQZXBJbnRlcm5hbEJ1dHRvbkZpZWxkT3B0aW9ucyBleHRlbmRzIElQZXBGaWVsZEJhc2VPcHRpb25zIHtcbiAgICByZWZlcmVuY2VPYmplY3RUeXBlPzogYW55O1xuICAgIHJlZmVyZW5jZU9iamVjdFN1YlR5cGU/OiBzdHJpbmc7XG4gICAgcmVmZXJlbmNlT2JqZWN0SW50ZXJuYWxUeXBlPzogc3RyaW5nO1xuICAgIHR5cGU/OiBQZXBJbnRlcm5hbEJ1dHRvbkZpZWxkVHlwZTtcbn1cbmV4cG9ydCBjbGFzcyBQZXBJbnRlcm5hbEJ1dHRvbkZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdidXR0b24nO1xuICAgIHJlZmVyZW5jZU9iamVjdFR5cGU7XG4gICAgcmVmZXJlbmNlT2JqZWN0U3ViVHlwZSA9ICcnO1xuICAgIHJlZmVyZW5jZU9iamVjdEludGVybmFsVHlwZSA9ICcnO1xuICAgIHR5cGU6IFBlcEludGVybmFsQnV0dG9uRmllbGRUeXBlO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSVBlcEludGVybmFsQnV0dG9uRmllbGRPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICAgICAgdGhpcy5yZWZlcmVuY2VPYmplY3RUeXBlID0gb3B0aW9ucy5yZWZlcmVuY2VPYmplY3RUeXBlIHx8IG51bGw7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlT2JqZWN0U3ViVHlwZSA9IG9wdGlvbnMucmVmZXJlbmNlT2JqZWN0U3ViVHlwZSB8fCBudWxsO1xuICAgICAgICB0aGlzLnJlZmVyZW5jZU9iamVjdEludGVybmFsVHlwZSA9XG4gICAgICAgICAgICBvcHRpb25zLnJlZmVyZW5jZU9iamVjdEludGVybmFsVHlwZSB8fCBudWxsO1xuXG4gICAgICAgIHRoaXMudHlwZSA9IG9wdGlvbnMudHlwZSB8fCAnYnV0dG9uJztcbiAgICB9XG59XG5cbmludGVyZmFjZSBJUGVwSW50ZXJuYWxQYWdlRmllbGRPcHRpb25zIGV4dGVuZHMgSVBlcEZpZWxkQmFzZU9wdGlvbnMge1xuICAgIG9iamVjdElkPzogc3RyaW5nO1xuICAgIHBhcmVudElkPzogc3RyaW5nO1xuICAgIHNlYXJjaENvZGU/OiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgUGVwSW50ZXJuYWxQYWdlRmllbGQgZXh0ZW5kcyBQZXBGaWVsZEJhc2Uge1xuICAgIGNvbnRyb2xUeXBlID0gJ2ludGVybmFsUGFnZSc7XG4gICAgb2JqZWN0SWQgPSAnJztcbiAgICBwYXJlbnRJZCA9ICcnO1xuICAgIHNlYXJjaENvZGUgPSAnJztcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBJbnRlcm5hbFBhZ2VGaWVsZE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vYmplY3RJZCA9IG9wdGlvbnMub2JqZWN0SWQgfHwgJyc7XG4gICAgICAgIHRoaXMucGFyZW50SWQgPSBvcHRpb25zLnBhcmVudElkIHx8ICcnO1xuICAgICAgICB0aGlzLnNlYXJjaENvZGUgPSBvcHRpb25zLnNlYXJjaENvZGUgfHwgJyc7XG4gICAgfVxufVxuXG5cbmludGVyZmFjZSBJUGVwSW50ZXJuYWxDYXJ1c2VsRmllbGRPcHRpb25zIGV4dGVuZHMgSVBlcEZpZWxkQmFzZU9wdGlvbnMge1xuICAgIHNlYXJjaENvZGU/OiBzdHJpbmc7XG4gICAgcGFnZUluZm8/OiBhbnk7XG59XG5leHBvcnQgY2xhc3MgUGVwSW50ZXJuYWxDYXJ1c2VsRmllbGQgZXh0ZW5kcyBQZXBGaWVsZEJhc2Uge1xuICAgIGNvbnRyb2xUeXBlID0gJ2ludGVybmFsQ2FydXNlbCc7XG4gICAgc2VhcmNoQ29kZSA9ICcnO1xuICAgIHBhZ2VJbmZvO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSVBlcEludGVybmFsQ2FydXNlbEZpZWxkT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLnNlYXJjaENvZGUgPSBvcHRpb25zLnNlYXJjaENvZGUgfHwgJyc7XG5cbiAgICAgICAgdGhpcy51cGRhdGUob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZShvcHRpb25zOiBJUGVwSW50ZXJuYWxDYXJ1c2VsRmllbGRPcHRpb25zKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLnVwZGF0ZShvcHRpb25zKTtcblxuICAgICAgICB0aGlzLnBhZ2VJbmZvID0gb3B0aW9ucy5wYWdlSW5mbztcbiAgICB9XG59XG5cblxuaW50ZXJmYWNlIElQZXBJbnRlcm5hbE1lbnVGaWVsZE9wdGlvbnMgZXh0ZW5kcyBJUGVwRmllbGRCYXNlT3B0aW9ucyB7XG4gICAgb3B0aW9ucz86IElQZXBPcHRpb25bXTtcbn1cbmV4cG9ydCBjbGFzcyBQZXBJbnRlcm5hbE1lbnVGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAnbWVudSc7XG4gICAgb3B0aW9uczogSVBlcE9wdGlvbltdID0gW107XG4gICAgLy8gaGFzU3ViTWVudTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSVBlcEludGVybmFsTWVudUZpZWxkT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zLm9wdGlvbnMgfHwgW107XG4gICAgICAgIC8vIHRoaXMuaGFzU3ViTWVudSA9IG9wdGlvbnNbJ2hhc1N1Yk1lbnUnXTtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlcEZpZWxkVmFsdWVDaGFuZ2VFdmVudCB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBjb250cm9sVHlwZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUGVwRmllbGRDbGlja0V2ZW50IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgICBjb250cm9sVHlwZT86IHN0cmluZztcbiAgICBldmVudFdoaWNoPzogYW55O1xuICAgIG90aGVyRGF0YT86IGFueTtcbn1cbiJdfQ==
302
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9taXphdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvc3JjL2NvcmUvY3VzdG9taXphdGlvbi9jdXN0b21pemF0aW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWdCekQsb0NBQW9DO0FBQ3BDLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUEyQixNQUFNLENBQUM7QUFJM0Usb0NBQW9DO0FBQ3BDLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUF5QixLQUFLLENBQUM7QUFzQ3RFLE1BQU0sT0FBTyxZQUFZO0lBMkJyQix1QkFBdUI7SUFFdkIsWUFBWSxVQUFnQyxFQUFFO1FBQzFDLElBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFFckMsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1FBQzdDLGtDQUFrQztRQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFFL0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxJQUFJLENB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LGlCQUFpQixDQUFDO1FBQ2hDLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFLWixJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1FBRTNDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxPQUF3QztRQUNsRCxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXRCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUNyQyxDQUFDO0NBQ0o7QUFNRCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsWUFBWTtJQUdsRCwrQkFBK0I7SUFFL0IsWUFBWSxVQUF3QyxFQUFFO1FBQ2xELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUxuQixnQkFBVyxHQUFHLE1BQU0sQ0FBQztRQUNyQixZQUFPLEdBQWlCLEVBQUUsQ0FBQztRQUt2QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ3JDLDJDQUEyQztJQUMvQyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqIEFsbG93ZWQgbGF5b3V0IG9wdGlvbnMgKi9cbmV4cG9ydCB0eXBlIFBlcExheW91dFR5cGUgPSAnZm9ybScgfCAnY2FyZCcgfCAndGFibGUnO1xuXG4vKiogQWxsb3dlZCBzdHlsZSBvcHRpb25zICovXG5leHBvcnQgdHlwZSBQZXBTdHlsZVR5cGUgPSAnd2VhaycgfCAnd2Vhay1pbnZlcnQnIHwgJ3JlZ3VsYXInIHwgJ3N0cm9uZyc7XG5cbi8qKiBBbGxvd2VkIHN0eWxlIHN0YXRlIG9wdGlvbnMgKi9cbmV4cG9ydCB0eXBlIFBlcFN0eWxlU3RhdGVUeXBlID0gJ3N5c3RlbScgfCAnY2F1dGlvbicgfCAnc3VjY2Vzcyc7XG5cbi8qKiBBbGxvd2VkIHNpemUgb3B0aW9ucyAqL1xuZXhwb3J0IHR5cGUgUGVwU2l6ZVR5cGUgPSAneHMnIHwgJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJztcblxuLyoqIEFsbG93ZWQgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb3B0aW9ucyAqL1xuZXhwb3J0IHR5cGUgUGVwSG9yaXpvbnRhbEFsaWdubWVudCA9ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0Jztcbi8qKiBEZWZhdWx0IGhvcml6b250YWwgYWxpZ25tZW50LiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSE9SSVpPTlRBTF9BTElHTk1FTlQ6IFBlcEhvcml6b250YWxBbGlnbm1lbnQgPSAnbGVmdCc7XG5cbi8qKiBBbGxvd2VkIHZlcnRpY2FsIGFsaWdubWVudCBvcHRpb25zICovXG5leHBvcnQgdHlwZSBQZXBWZXJ0aWNhbEFsaWdubWVudCA9ICd0b3AnIHwgJ21pZGRsZScgfCAnYm90dG9tJztcbi8qKiBEZWZhdWx0IGhvcml6b250YWwgYWxpZ25tZW50LiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVkVSVElDQUxfQUxJR05NRU5UOiBQZXBWZXJ0aWNhbEFsaWdubWVudCA9ICd0b3AnO1xuZXhwb3J0IGludGVyZmFjZSBJUGVwT3B0aW9uIHtcbiAgICBrZXk6IHN0cmluZztcbiAgICB2YWx1ZTogc3RyaW5nO1xufVxuXG4vLyBleHBvcnQgdHlwZSBQZXBGaWVsZEJhc2VUeXBlID0gJycgfCBQZXBJbnRlcm5hbEJ1dHRvbkZpZWxkVHlwZSB8IFBlcFRleHRib3hGaWVsZFR5cGUgfFxuLy8gICAgIFBlcFF1YW50aXR5U2VsZWN0b3JGaWVsZFR5cGUgfCBQZXBEYXRlRmllbGRUeXBlIHwgUGVwQ2hlY2tib3hGaWVsZFR5cGUgfCBQZXBTZWxlY3RGaWVsZFR5cGU7XG5pbnRlcmZhY2UgSVBlcEZpZWxkQmFzZU9wdGlvbnMge1xuICAgIHZhbHVlPzogYW55O1xuICAgIGZvcm1hdHRlZFZhbHVlPzogYW55O1xuICAgIGFkZGl0aW9uYWxWYWx1ZT86IHN0cmluZztcbiAgICBrZXk/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgYWNjZXNzb3J5Pzogc3RyaW5nO1xuICAgIG1hbmRhdG9yeT86IGJvb2xlYW47XG4gICAgcmVhZG9ubHk/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBvcmRlcj86IG51bWJlcjtcbiAgICBjb250cm9sVHlwZT86IHN0cmluZztcbiAgICAvLyB0eXBlPzogUGVwRmllbGRCYXNlVHlwZTtcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBoaWRkZW4/OiBib29sZWFuO1xuICAgIHJvdz86IG51bWJlcjtcbiAgICByb3dTcGFuPzogbnVtYmVyO1xuICAgIGNvbD86IG51bWJlcjtcbiAgICBjb2xTcGFuPzogbnVtYmVyO1xuICAgIHhBbGlnbm1lbnQ/OiBQZXBIb3Jpem9udGFsQWxpZ25tZW50O1xuICAgIHlBbGlnbm1lbnQ/OiBQZXBWZXJ0aWNhbEFsaWdubWVudDtcbiAgICBtYXhGaWVsZENoYXJhY3RlcnM/OiBudW1iZXI7XG4gICAgbWluVmFsdWU/OiBudW1iZXI7XG4gICAgbWF4VmFsdWU/OiBudW1iZXI7XG4gICAgdGV4dENvbG9yPzogc3RyaW5nO1xuICAgIHZpc2libGU/OiBib29sZWFuOyAgICBcbiAgICBlbXB0eU9wdGlvbj86IGJvb2xlYW47ICAgIFxuICAgIC8vIGxhc3RGb2N1c0ZpZWxkPzogYW55O1xuICAgIGRpZ2l0c051bWJlckFmdGVyRGVjaW1hbFBvaW50PzogbnVtYmVyO1xufVxuZXhwb3J0IGNsYXNzIFBlcEZpZWxkQmFzZSB7XG4gICAgdmFsdWU6IGFueTtcbiAgICBmb3JtYXR0ZWRWYWx1ZTogYW55O1xuICAgIGFkZGl0aW9uYWxWYWx1ZTogc3RyaW5nO1xuICAgIGtleTogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgYWNjZXNzb3J5OiBzdHJpbmc7XG4gICAgbWFuZGF0b3J5OiBib29sZWFuO1xuICAgIHJlYWRvbmx5OiBib29sZWFuO1xuICAgIGRpc2FibGVkOiBib29sZWFuO1xuICAgIG9yZGVyOiBudW1iZXI7XG4gICAgLy8gdHlwZTogc3RyaW5nO1xuICAgIGNvbnRyb2xUeXBlOiBzdHJpbmc7XG4gICAgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgICBoaWRkZW46IGJvb2xlYW47XG4gICAgcm93OiBudW1iZXI7XG4gICAgcm93U3BhbjogbnVtYmVyO1xuICAgIGNvbDogbnVtYmVyO1xuICAgIGNvbFNwYW46IG51bWJlcjtcbiAgICB4QWxpZ25tZW50OiBQZXBIb3Jpem9udGFsQWxpZ25tZW50O1xuICAgIHlBbGlnbm1lbnQ6IFBlcFZlcnRpY2FsQWxpZ25tZW50O1xuICAgIGdyb3VwRmllbGRzOiBQZXBGaWVsZEJhc2VbXTtcbiAgICBtYXhGaWVsZENoYXJhY3RlcnM6IG51bWJlcjtcbiAgICBtaW5WYWx1ZTogbnVtYmVyO1xuICAgIG1heFZhbHVlOiBudW1iZXI7XG4gICAgdGV4dENvbG9yOiBzdHJpbmc7XG4gICAgdmlzaWJsZTogYm9vbGVhbjsgICAgICAgIFxuICAgIC8vIGxhc3RGb2N1c0ZpZWxkOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBJUGVwRmllbGRCYXNlT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHRoaXMua2V5ID0gb3B0aW9ucy5rZXkgfHwgJyc7XG4gICAgICAgIHRoaXMubGFiZWwgPSBvcHRpb25zLmxhYmVsIHx8ICcnO1xuICAgICAgICB0aGlzLmFjY2Vzc29yeSA9IG9wdGlvbnMuYWNjZXNzb3J5IHx8ICcnO1xuICAgICAgICB0aGlzLm1hbmRhdG9yeSA9ICEhb3B0aW9ucy5tYW5kYXRvcnk7XG5cbiAgICAgICAgdGhpcy5vcmRlciA9IG9wdGlvbnMub3JkZXIgPz8gMTtcbiAgICAgICAgdGhpcy5jb250cm9sVHlwZSA9IG9wdGlvbnMuY29udHJvbFR5cGUgfHwgJyc7XG4gICAgICAgIC8vIHRoaXMudHlwZSA9IG9wdGlvbnMudHlwZSB8fCAnJztcbiAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IG9wdGlvbnMucGxhY2Vob2xkZXIgfHwgJyc7XG4gICAgICAgIHRoaXMuaGlkZGVuID0gISFvcHRpb25zLmhpZGRlbjtcblxuICAgICAgICB0aGlzLnJvdyA9IG9wdGlvbnMucm93ID8/IDE7XG4gICAgICAgIHRoaXMucm93U3BhbiA9IG9wdGlvbnMucm93U3BhbiA/PyAxO1xuICAgICAgICB0aGlzLmNvbCA9IG9wdGlvbnMuY29sID8/IDE7XG4gICAgICAgIHRoaXMuY29sU3BhbiA9IG9wdGlvbnMuY29sU3BhbiA/PyAxO1xuXG4gICAgICAgIHRoaXMueEFsaWdubWVudCA9IG9wdGlvbnMueEFsaWdubWVudCA/PyBERUZBVUxUX0hPUklaT05UQUxfQUxJR05NRU5UO1xuICAgICAgICB0aGlzLnlBbGlnbm1lbnQgPSBvcHRpb25zLnlBbGlnbm1lbnQgPz8gREVGQVVMVF9WRVJUSUNBTF9BTElHTk1FTlQ7XG5cbiAgICAgICAgdGhpcy5tYXhGaWVsZENoYXJhY3RlcnMgPSBvcHRpb25zLm1heEZpZWxkQ2hhcmFjdGVycyA/PyAwO1xuICAgICAgICB0aGlzLm1pblZhbHVlID0gb3B0aW9ucy5taW5WYWx1ZSA/PyAwO1xuICAgICAgICB0aGlzLm1heFZhbHVlID0gb3B0aW9ucy5tYXhWYWx1ZSA/PyAwO1xuXG4gICAgICAgIHRoaXMudXBkYXRlKG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRCYXNlVmFsaWRhdG9ycyhpc0NoZWNrYm94ID0gZmFsc2UpOiBWYWxpZGF0b3JGbltdIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IFtdO1xuXG4gICAgICAgIGlmICh0aGlzLm1hbmRhdG9yeSAmJiAhdGhpcy5yZWFkb25seSAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgaWYgKGlzQ2hlY2tib3gpIHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZFRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5udWxsVmFsaWRhdG9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1heEZpZWxkQ2hhcmFjdGVycyA+IDApIHtcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLm1heEZpZWxkQ2hhcmFjdGVycykpO1xuICAgICAgICB9ICAgICAgICBcblxuICAgICAgICByZXR1cm4gdmFsaWRhdG9ycztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbltdIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHRoaXMuZ2V0QmFzZVZhbGlkYXRvcnMoKTtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRvcnM7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZShvcHRpb25zOiBJUGVwRmllbGRCYXNlT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gb3B0aW9ucy52YWx1ZTtcbiAgICAgICAgdGhpcy5mb3JtYXR0ZWRWYWx1ZSA9IG9wdGlvbnMuZm9ybWF0dGVkVmFsdWU7XG4gICAgICAgIHRoaXMuYWRkaXRpb25hbFZhbHVlID0gb3B0aW9ucy5hZGRpdGlvbmFsVmFsdWU7XG5cbiAgICAgICAgdGhpcy5yZWFkb25seSA9ICEhb3B0aW9ucy5yZWFkb25seTtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9ICEhb3B0aW9ucy5kaXNhYmxlZDtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gISFvcHRpb25zLnZpc2libGU7XG4gICAgICAgIHRoaXMudGV4dENvbG9yID0gb3B0aW9ucy50ZXh0Q29sb3IgfHwgJyc7XG4gICAgICAgIC8vIHRoaXMubGFzdEZvY3VzRmllbGQgPSBvcHRpb25zLmxhc3RGb2N1c0ZpZWxkIHx8IG51bGw7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGVwUGxhY2Vob2xkZXJGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAncGxhY2Vob2xkZXInO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSVBlcEZpZWxkQmFzZU9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQZXBTZXBhcmF0b3JGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAnc2VwYXJhdG9yJztcbiAgICBcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBJUGVwRmllbGRCYXNlT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpOyAgICAgICAgXG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGVwQXR0YWNobWVudEZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdhdHRhY2htZW50JztcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBGaWVsZEJhc2VPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGVwSW5kaWNhdG9yc0ZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdpbmRpY2F0b3JzJztcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBGaWVsZEJhc2VPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBQZXBUZXh0Ym94RmllbGRUeXBlID1cbiAgICB8ICd0ZXh0J1xuICAgIHwgJ2xpbmsnXG4gICAgfCAnZW1haWwnXG4gICAgfCAncGhvbmUnXG4gICAgfCAnZHVyYXRpb24nXG4gICAgfCAnaW50J1xuICAgIHwgJ3BlcmNlbnRhZ2UnXG4gICAgfCAnY3VycmVuY3knXG4gICAgfCAncmVhbCc7XG5pbnRlcmZhY2UgSVBlcFRleHRib3hGaWVsZE9wdGlvbnMgZXh0ZW5kcyBJUGVwRmllbGRCYXNlT3B0aW9ucyB7XG4gICAgdHlwZT86IFBlcFRleHRib3hGaWVsZFR5cGU7XG4gICAgcmVnZXg/OiBzdHJpbmcgfCBSZWdFeHA7XG4gICAgLy8gcmVnZXhFcnJvcj86IHN0cmluZztcbn1cbmV4cG9ydCBjbGFzcyBQZXBUZXh0Ym94RmllbGQgZXh0ZW5kcyBQZXBGaWVsZEJhc2Uge1xuICAgIGNvbnRyb2xUeXBlID0gJ3RleHRib3gnO1xuICAgIHR5cGU6IFBlcFRleHRib3hGaWVsZFR5cGUgPSAndGV4dCc7XG4gICAgcmVnZXg/OiBzdHJpbmcgfCBSZWdFeHA7XG4gICAgLy8gcmVnZXhFcnJvcj86IHN0cmluZztcbiAgICBkaWdpdHNOdW1iZXJBZnRlckRlY2ltYWxQb2ludCA9IE5hTjtcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBUZXh0Ym94RmllbGRPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICAgICAgdGhpcy50eXBlID0gb3B0aW9ucy50eXBlIHx8ICd0ZXh0JztcbiAgICAgICAgdGhpcy5yZWdleCA9IG9wdGlvbnMucmVnZXggPz8gbnVsbDtcbiAgICAgICAgLy8gdGhpcy5yZWdleEVycm9yID0gb3B0aW9ucy5yZWdleEVycm9yID8/IG51bGw7XG5cbiAgICAgICAgdGhpcy51cGRhdGUob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZShvcHRpb25zOiBJUGVwVGV4dGJveEZpZWxkT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICBzdXBlci51cGRhdGUob3B0aW9ucyk7XG5cbiAgICAgICAgdGhpcy5kaWdpdHNOdW1iZXJBZnRlckRlY2ltYWxQb2ludCA9IG9wdGlvbnMuZGlnaXRzTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQgPz8gTmFOO1xuXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdsaW5rJykge1xuICAgICAgICAgICAgLy8gREktMTEyOTIgLSBhZGQgY2hhbmdlcyBmb3IgbGluayBmaWVsZCBmb3IgdGhlIFwiUmVhZCBPbmx5IGRpc3BsYXkgdmFsdWVcIiBwcm9wXG4gICAgICAgICAgICB0aGlzLmZvcm1hdHRlZFZhbHVlID1cbiAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVkICYmIHRoaXMuZm9ybWF0dGVkVmFsdWUgJiYgdGhpcy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuZm9ybWF0dGVkVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldFZhbGlkYXRvcnMoKTogVmFsaWRhdG9yRm5bXSB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBzdXBlci5nZXRCYXNlVmFsaWRhdG9ycygpO1xuXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdlbWFpbCcpIHtcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oXG4gICAgICAgICAgICAgICAgICAgIC9eKChbXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVxcW1xcXVxcXFwuLDs6XFxzQFwiXSspKil8KFwiLitcIikpQCgoXFxbWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlxcLTAtOV0rXFwuKStbYS16QS1aXXsyLH0pKSQvXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIC8vIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLmVtYWlsKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdwaG9uZScpIHtcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4oL15bXFxkXFwuXFwtXFwrXFwoXFwpXFwqXFwjXSskLykpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ2ludCcgfHwgdGhpcy50eXBlID09PSAncmVhbCcpIHtcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4oL15bXFwuLFxcLVxcK1xcZF0rJC8pKTtcblxuICAgICAgICAgICAgaWYgKCFpc05hTih0aGlzLm1pblZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbih0aGlzLm1pblZhbHVlKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXNOYU4odGhpcy5tYXhWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXgodGhpcy5tYXhWYWx1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ3RleHQnICYmIHRoaXMucmVnZXgpIHtcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5yZWdleCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRvcnM7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGVwTGlua0ZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdsaW5rJztcbiAgICB0eXBlOiBQZXBUZXh0Ym94RmllbGRUeXBlID0gJ2xpbmsnO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSVBlcEZpZWxkQmFzZU9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcblxuICAgICAgICB0aGlzLnVwZGF0ZShvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlKG9wdGlvbnM6IElQZXBUZXh0Ym94RmllbGRPcHRpb25zKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLnVwZGF0ZShvcHRpb25zKTtcblxuICAgICAgICAvLyBESS0xMTI5MiAtIGFkZCBjaGFuZ2VzIGZvciBsaW5rIGZpZWxkIGZvciB0aGUgXCJSZWFkIE9ubHkgZGlzcGxheSB2YWx1ZVwiIHByb3BcbiAgICAgICAgdGhpcy5mb3JtYXR0ZWRWYWx1ZSA9XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkICYmIHRoaXMuZm9ybWF0dGVkVmFsdWUgJiYgdGhpcy52YWx1ZVxuICAgICAgICAgICAgICAgID8gdGhpcy5mb3JtYXR0ZWRWYWx1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy52YWx1ZTtcblxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBlcFRleHRhcmVhRmllbGQgZXh0ZW5kcyBQZXBGaWVsZEJhc2Uge1xuICAgIGNvbnRyb2xUeXBlID0gJ3RleHRhcmVhJztcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBGaWVsZEJhc2VPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIC8vIHRoaXMudHlwZSA9ICd0ZXh0YXJlYSc7XG4gICAgfVxufVxuXG5pbnRlcmZhY2UgSVBlcFNpZ25hdHVyZUZpZWxkT3B0aW9ucyBleHRlbmRzIElQZXBGaWVsZEJhc2VPcHRpb25zIHtcbiAgICByZW5kZXJUaXRsZT86IGJvb2xlYW47XG4gICAgcmVuZGVyRW5sYXJnZUJ1dHRvbj86IGJvb2xlYW47XG59XG5leHBvcnQgY2xhc3MgUGVwUmljaEh0bWxUZXh0YXJlYUZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdyaWNoaHRtbHRleHRhcmVhJzsgICAgXG4gICAgcmVuZGVyVGl0bGU6IGJvb2xlYW47XG4gICAgcmVuZGVyRW5sYXJnZUJ1dHRvbjogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBTaWduYXR1cmVGaWVsZE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcblxuICAgICAgICB0aGlzLnJlbmRlclRpdGxlID0gb3B0aW9ucy5yZW5kZXJUaXRsZSAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5yZW5kZXJUaXRsZSA6IHRydWU7XG4gICAgICAgIHRoaXMucmVuZGVyRW5sYXJnZUJ1dHRvbiA9IG9wdGlvbnMucmVuZGVyRW5sYXJnZUJ1dHRvbiAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5yZW5kZXJFbmxhcmdlQnV0dG9uIDogdHJ1ZTtcbiAgICB9XG59XG5cbmludGVyZmFjZSBJUGVwU2lnbmF0dXJlRmllbGRPcHRpb25zIGV4dGVuZHMgSVBlcEZpZWxkQmFzZU9wdGlvbnMge1xuICAgIG9wdGlvbnM/OiBJUGVwT3B0aW9uW107XG59XG5leHBvcnQgY2xhc3MgUGVwU2lnbmF0dXJlRmllbGQgZXh0ZW5kcyBQZXBGaWVsZEJhc2Uge1xuICAgIGNvbnRyb2xUeXBlID0gJ3NpZ25hdHVyZSc7XG4gICAgb3B0aW9uczogSVBlcE9wdGlvbltdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBJUGVwU2lnbmF0dXJlRmllbGRPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMub3B0aW9ucyB8fCBbXTtcbiAgICB9XG59XG5cbmludGVyZmFjZSBJUGVwSW1hZ2VGaWVsZE9wdGlvbnMgZXh0ZW5kcyBJUGVwRmllbGRCYXNlT3B0aW9ucyB7XG4gICAgaGFzQ2FtcGFpZ25GaWVsZD86IGFueTtcbiAgICBpbmRpY2F0b3JzRmllbGQ/OiBhbnk7XG4gICAgbWVudUZpZWxkPzogYW55O1xuICAgIG9wdGlvbnM/OiBJUGVwT3B0aW9uW107XG4gICAgc2l6ZUxpbWl0TUI/OiBudW1iZXI7XG59XG5leHBvcnQgY2xhc3MgUGVwSW1hZ2VGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAnaW1hZ2UnO1xuICAgIGhhc0NhbXBhaWduRmllbGQgPSBudWxsO1xuICAgIGluZGljYXRvcnNGaWVsZCA9IG51bGw7XG4gICAgbWVudUZpZWxkID0gbnVsbDtcbiAgICBvcHRpb25zOiBJUGVwT3B0aW9uW10gPSBbXTtcbiAgICBzaXplTGltaXRNQiA9IDU7XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBJUGVwSW1hZ2VGaWVsZE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5oYXNDYW1wYWlnbkZpZWxkID0gb3B0aW9ucy5oYXNDYW1wYWlnbkZpZWxkIHx8IG51bGw7XG4gICAgICAgIHRoaXMuaW5kaWNhdG9yc0ZpZWxkID0gb3B0aW9ucy5pbmRpY2F0b3JzRmllbGQgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5tZW51RmllbGQgPSBvcHRpb25zLm1lbnVGaWVsZCB8fCBudWxsO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zLm9wdGlvbnMgfHwgW107XG4gICAgICAgIHRoaXMuc2l6ZUxpbWl0TUIgPSBvcHRpb25zLnNpemVMaW1pdE1CIHx8IDU7XG4gICAgfVxufVxuXG5pbnRlcmZhY2UgSVBlcEltYWdlc0ZpZWxkT3B0aW9ucyBleHRlbmRzIElQZXBGaWVsZEJhc2VPcHRpb25zIHtcbiAgICBvcHRpb25zPzogSVBlcE9wdGlvbltdO1xufVxuZXhwb3J0IGNsYXNzIFBlcEltYWdlc0ZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdpbWFnZXMnO1xuICAgIG9wdGlvbnM6IElQZXBPcHRpb25bXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSVBlcEltYWdlc0ZpZWxkT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zLm9wdGlvbnMgfHwgW107XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBQZXBRdWFudGl0eVNlbGVjdG9yRmllbGRUeXBlID1cbiAgICB8ICdidXR0b24nXG4gICAgfCAncGFja2FnZUJ1dHRvbidcbiAgICB8ICdxcydcbiAgICB8ICdxc0Zvck1hdHJpeCc7XG5pbnRlcmZhY2UgSVBlcFF1YW50aXR5U2VsZWN0b3JGaWVsZE9wdGlvbnMgZXh0ZW5kcyBJUGVwRmllbGRCYXNlT3B0aW9ucyB7XG4gICAgYWxsb3dEZWNpbWFsPzogYm9vbGVhbjtcbiAgICBub3RpZmljYXRpb25JbmZvPzogYW55O1xuICAgIHR5cGU/OiBQZXBRdWFudGl0eVNlbGVjdG9yRmllbGRUeXBlO1xufVxuZXhwb3J0IGNsYXNzIFBlcFF1YW50aXR5U2VsZWN0b3JGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAncXMnO1xuICAgIGFsbG93RGVjaW1hbDogYm9vbGVhbjtcbiAgICBub3RpZmljYXRpb25JbmZvOiBhbnkgPSB7fTtcbiAgICB1cGRhdGVkRGF0YUNvdW50OiBudW1iZXI7XG4gICAgdHlwZTogUGVwUXVhbnRpdHlTZWxlY3RvckZpZWxkVHlwZTtcbiAgICBkaWdpdHNOdW1iZXJBZnRlckRlY2ltYWxQb2ludCA9IE5hTjtcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBRdWFudGl0eVNlbGVjdG9yRmllbGRPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVkRGF0YUNvdW50ID0gMDtcbiAgICAgICAgdGhpcy50eXBlID0gb3B0aW9ucy50eXBlIHx8ICdxcyc7XG5cbiAgICAgICAgdGhpcy51cGRhdGUob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZShvcHRpb25zOiBJUGVwUXVhbnRpdHlTZWxlY3RvckZpZWxkT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICBzdXBlci51cGRhdGUob3B0aW9ucyk7XG4gICAgICAgIFxuICAgICAgICB0aGlzLmRpZ2l0c051bWJlckFmdGVyRGVjaW1hbFBvaW50ID0gb3B0aW9ucy5kaWdpdHNOdW1iZXJBZnRlckRlY2ltYWxQb2ludCA/PyBOYU47XG5cbiAgICAgICAgdGhpcy5hbGxvd0RlY2ltYWwgPSBvcHRpb25zLmFsbG93RGVjaW1hbCB8fCBmYWxzZTtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25JbmZvID0gb3B0aW9ucy5ub3RpZmljYXRpb25JbmZvO1xuICAgICAgICB0aGlzLnVwZGF0ZWREYXRhQ291bnQgKz0gMTtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIFBlcERhdGVGaWVsZFR5cGUgPSAnZGF0ZXRpbWUnIHwgJ2RhdGUnO1xuaW50ZXJmYWNlIElQZXBEYXRlRmllbGRPcHRpb25zIGV4dGVuZHMgSVBlcEZpZWxkQmFzZU9wdGlvbnMge1xuICAgIHR5cGU/OiBQZXBEYXRlRmllbGRUeXBlO1xufVxuZXhwb3J0IGNsYXNzIFBlcERhdGVGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAnZGF0ZSc7XG4gICAgdHlwZTogUGVwRGF0ZUZpZWxkVHlwZTtcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBEYXRlRmllbGRPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICAgICAgdGhpcy50eXBlID0gb3B0aW9ucy50eXBlIHx8ICdkYXRlJztcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIFBlcENoZWNrYm94RmllbGRUeXBlID0gJ2NoZWNrYm94JyB8ICdib29sZWFuVGV4dCc7XG5pbnRlcmZhY2UgSVBlcENoZWNrYm94RmllbGRPcHRpb25zIGV4dGVuZHMgSVBlcEZpZWxkQmFzZU9wdGlvbnMge1xuICAgIHR5cGU/OiBQZXBDaGVja2JveEZpZWxkVHlwZTtcbn1cbmV4cG9ydCBjbGFzcyBQZXBDaGVja2JveEZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdjaGVja2JveCc7XG4gICAgdHlwZTogUGVwQ2hlY2tib3hGaWVsZFR5cGU7XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBJUGVwQ2hlY2tib3hGaWVsZE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcblxuICAgICAgICB0aGlzLnR5cGUgPSBvcHRpb25zLnR5cGUgfHwgJ2NoZWNrYm94JztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbltdIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHN1cGVyLmdldEJhc2VWYWxpZGF0b3JzKHRydWUpO1xuICAgICAgICByZXR1cm4gdmFsaWRhdG9ycztcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIFBlcFNlbGVjdEZpZWxkVHlwZSA9ICdzZWxlY3QnIHwgJ211bHRpJztcbmludGVyZmFjZSBJUGVwU2VsZWN0RmllbGRPcHRpb25zIGV4dGVuZHMgSVBlcEZpZWxkQmFzZU9wdGlvbnMge1xuICAgIG9wdGlvbnM/OiBJUGVwT3B0aW9uW107XG4gICAgdHlwZT86IFBlcFNlbGVjdEZpZWxkVHlwZTtcbn1cbmV4cG9ydCBjbGFzcyBQZXBTZWxlY3RGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAnc2VsZWN0JztcbiAgICBvcHRpb25zOiBJUGVwT3B0aW9uW10gPSBbXTsgICAgXG4gICAgdHlwZTogUGVwU2VsZWN0RmllbGRUeXBlOyAgICBcbiAgICBlbXB0eU9wdGlvbjogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBTZWxlY3RGaWVsZE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy50eXBlID0gb3B0aW9ucy50eXBlIHx8ICdzZWxlY3QnO1xuICAgICAgICB0aGlzLmVtcHR5T3B0aW9uID0gb3B0aW9ucy5lbXB0eU9wdGlvbjtcblxuICAgICAgICB0aGlzLnVwZGF0ZShvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlKG9wdGlvbnM6IElQZXBTZWxlY3RGaWVsZE9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIudXBkYXRlKG9wdGlvbnMpO1xuXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMub3B0aW9ucyB8fCBbXTtcbiAgICB9XG59XG5cbmludGVyZmFjZSBJUGVwQWRkcmVzc0ZpZWxkT3B0aW9ucyBleHRlbmRzIElQZXBGaWVsZEJhc2VPcHRpb25zIHtcbiAgICBncm91cEZpZWxkcz86IFBlcEZpZWxkQmFzZVtdO1xufVxuZXhwb3J0IGNsYXNzIFBlcEFkZHJlc3NGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAnYWRkcmVzcyc7XG4gICAgZ3JvdXBGaWVsZHM6IFBlcEZpZWxkQmFzZVtdID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBBZGRyZXNzRmllbGRPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMuZ3JvdXBGaWVsZHMgPSBvcHRpb25zLmdyb3VwRmllbGRzIHx8IG51bGw7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBQZXBJbnRlcm5hbEJ1dHRvbkZpZWxkVHlwZSA9XG4gICAgfCAnYnV0dG9uJ1xuICAgIHwgJ3JlZmVyZW5jZSdcbiAgICB8ICdsaXN0b2ZvYmplY3RzJztcbmludGVyZmFjZSBJUGVwSW50ZXJuYWxCdXR0b25GaWVsZE9wdGlvbnMgZXh0ZW5kcyBJUGVwRmllbGRCYXNlT3B0aW9ucyB7XG4gICAgcmVmZXJlbmNlT2JqZWN0VHlwZT86IGFueTtcbiAgICByZWZlcmVuY2VPYmplY3RTdWJUeXBlPzogc3RyaW5nO1xuICAgIHJlZmVyZW5jZU9iamVjdEludGVybmFsVHlwZT86IHN0cmluZztcbiAgICB0eXBlPzogUGVwSW50ZXJuYWxCdXR0b25GaWVsZFR5cGU7XG59XG5leHBvcnQgY2xhc3MgUGVwSW50ZXJuYWxCdXR0b25GaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAnYnV0dG9uJztcbiAgICByZWZlcmVuY2VPYmplY3RUeXBlO1xuICAgIHJlZmVyZW5jZU9iamVjdFN1YlR5cGUgPSAnJztcbiAgICByZWZlcmVuY2VPYmplY3RJbnRlcm5hbFR5cGUgPSAnJztcbiAgICB0eXBlOiBQZXBJbnRlcm5hbEJ1dHRvbkZpZWxkVHlwZTtcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBJbnRlcm5hbEJ1dHRvbkZpZWxkT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgICAgIHRoaXMucmVmZXJlbmNlT2JqZWN0VHlwZSA9IG9wdGlvbnMucmVmZXJlbmNlT2JqZWN0VHlwZSB8fCBudWxsO1xuICAgICAgICB0aGlzLnJlZmVyZW5jZU9iamVjdFN1YlR5cGUgPSBvcHRpb25zLnJlZmVyZW5jZU9iamVjdFN1YlR5cGUgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5yZWZlcmVuY2VPYmplY3RJbnRlcm5hbFR5cGUgPVxuICAgICAgICAgICAgb3B0aW9ucy5yZWZlcmVuY2VPYmplY3RJbnRlcm5hbFR5cGUgfHwgbnVsbDtcblxuICAgICAgICB0aGlzLnR5cGUgPSBvcHRpb25zLnR5cGUgfHwgJ2J1dHRvbic7XG4gICAgfVxufVxuXG5pbnRlcmZhY2UgSVBlcEludGVybmFsUGFnZUZpZWxkT3B0aW9ucyBleHRlbmRzIElQZXBGaWVsZEJhc2VPcHRpb25zIHtcbiAgICBvYmplY3RJZD86IHN0cmluZztcbiAgICBwYXJlbnRJZD86IHN0cmluZztcbiAgICBzZWFyY2hDb2RlPzogc3RyaW5nO1xufVxuZXhwb3J0IGNsYXNzIFBlcEludGVybmFsUGFnZUZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdpbnRlcm5hbFBhZ2UnO1xuICAgIG9iamVjdElkID0gJyc7XG4gICAgcGFyZW50SWQgPSAnJztcbiAgICBzZWFyY2hDb2RlID0gJyc7XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBJUGVwSW50ZXJuYWxQYWdlRmllbGRPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMub2JqZWN0SWQgPSBvcHRpb25zLm9iamVjdElkIHx8ICcnO1xuICAgICAgICB0aGlzLnBhcmVudElkID0gb3B0aW9ucy5wYXJlbnRJZCB8fCAnJztcbiAgICAgICAgdGhpcy5zZWFyY2hDb2RlID0gb3B0aW9ucy5zZWFyY2hDb2RlIHx8ICcnO1xuICAgIH1cbn1cblxuXG5pbnRlcmZhY2UgSVBlcEludGVybmFsQ2FydXNlbEZpZWxkT3B0aW9ucyBleHRlbmRzIElQZXBGaWVsZEJhc2VPcHRpb25zIHtcbiAgICBzZWFyY2hDb2RlPzogc3RyaW5nO1xuICAgIHBhZ2VJbmZvPzogYW55O1xufVxuZXhwb3J0IGNsYXNzIFBlcEludGVybmFsQ2FydXNlbEZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdpbnRlcm5hbENhcnVzZWwnO1xuICAgIHNlYXJjaENvZGUgPSAnJztcbiAgICBwYWdlSW5mbztcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBJbnRlcm5hbENhcnVzZWxGaWVsZE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5zZWFyY2hDb2RlID0gb3B0aW9ucy5zZWFyY2hDb2RlIHx8ICcnO1xuXG4gICAgICAgIHRoaXMudXBkYXRlKG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGUob3B0aW9uczogSVBlcEludGVybmFsQ2FydXNlbEZpZWxkT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICBzdXBlci51cGRhdGUob3B0aW9ucyk7XG5cbiAgICAgICAgdGhpcy5wYWdlSW5mbyA9IG9wdGlvbnMucGFnZUluZm87XG4gICAgfVxufVxuXG5cbmludGVyZmFjZSBJUGVwSW50ZXJuYWxNZW51RmllbGRPcHRpb25zIGV4dGVuZHMgSVBlcEZpZWxkQmFzZU9wdGlvbnMge1xuICAgIG9wdGlvbnM/OiBJUGVwT3B0aW9uW107XG59XG5leHBvcnQgY2xhc3MgUGVwSW50ZXJuYWxNZW51RmllbGQgZXh0ZW5kcyBQZXBGaWVsZEJhc2Uge1xuICAgIGNvbnRyb2xUeXBlID0gJ21lbnUnO1xuICAgIG9wdGlvbnM6IElQZXBPcHRpb25bXSA9IFtdO1xuICAgIC8vIGhhc1N1Yk1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBJbnRlcm5hbE1lbnVGaWVsZE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucy5vcHRpb25zIHx8IFtdO1xuICAgICAgICAvLyB0aGlzLmhhc1N1Yk1lbnUgPSBvcHRpb25zWydoYXNTdWJNZW51J107XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQZXBGaWVsZFZhbHVlQ2hhbmdlRXZlbnQge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgY29udHJvbFR5cGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlcEZpZWxkQ2xpY2tFdmVudCB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdmFsdWU/OiBzdHJpbmc7XG4gICAgY29udHJvbFR5cGU/OiBzdHJpbmc7XG4gICAgZXZlbnRXaGljaD86IGFueTtcbiAgICBvdGhlckRhdGE/OiBhbnk7XG59XG4iXX0=
@@ -117,7 +117,7 @@ export class PepFieldGeneratorComponent {
117
117
  }
118
118
  }
119
119
  PepFieldGeneratorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepFieldGeneratorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
120
- PepFieldGeneratorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepFieldGeneratorComponent, selector: "pep-field-generator", inputs: { field: "field", isActive: "isActive", uid: "uid", form: "form", layoutType: "layoutType", showTitle: "showTitle", checkForChanges: "checkForChanges" }, outputs: { valueChange: "valueChange", formValidationChange: "formValidationChange", elementClick: "elementClick", internalFormFieldChange: "internalFormFieldChange", internalFormFieldClick: "internalFormFieldClick", formValueChange: "formValueChange", formFieldClick: "formFieldClick" }, usesOnChanges: true, ngImport: i0, template: "<ng-container [ngSwitch]=\"field.controlType\" [formGroup]=\"form\">\n\n <pep-address *ngSwitchCase=\"'address'\" [form]=\"form\" [key]=\"field.key\" [formattedValue]=\"field.formattedValue\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [groupFields]=\"field.groupFields\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (addressValueChange)=\"onAddressValueChanged($event, field)\">\n </pep-address>\n\n <pep-attachment *ngSwitchCase=\"'attachment'\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.value\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [isActive]=\"isActive\" [showTitle]=\"showTitle\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n (fileChange)=\"onFileChanged($event, field)\">\n </pep-attachment>\n\n <pep-checkbox *ngSwitchCase=\"'checkbox'\" [form]=\"form\" [key]=\"field.key\"\n [value]=\"(field.value | lowercase) == 'true' || field.value == '1' ? true : false\" [label]=\"field.label\"\n [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [additionalValue]=\"field.additionalValue\"\n [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n </pep-checkbox>\n\n <pep-date *ngSwitchCase=\"'date'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [type]=\"field.type\" [mandatory]=\"field.mandatory\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [textColor]=\"field.textColor\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [minValue]=\"field.minValue\"\n [maxValue]=\"field.maxValue\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n </pep-date>\n\n <pep-images-filmstrip *ngSwitchCase=\"'images'\" [uid]=\"uid\" [form]=\"form\" [key]=\"field.key\" [label]=\"field.label\"\n [showTitle]=\"showTitle\" [rowSpan]=\"field.rowSpan\" [value]=\"field.value\" [layoutType]=\"layoutType\">\n </pep-images-filmstrip>\n\n <pep-image *ngSwitchCase=\"'image'\" [uid]=\"uid\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.formattedValue\"\n [srcLarge]=\"field.value\" [options]=\"field.options\" [label]=\"field.label\" [mandatory]=\"field.mandatory\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\"\n [rowSpan]=\"field.rowSpan\" [indicatorsField]=\"field.indicatorsField\" [menuField]=\"field.menuField\"\n [hasCampaignField]=\"field.hasCampaignField\" [sizeLimitMB]=\"field.sizeLimitMB\" [isActive]=\"isActive\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n (fileChange)=\"onFileChanged($event, field)\">\n </pep-image>\n\n <pep-quantity-selector *ngSwitchCase=\"'qs'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [type]=\"field.type\" [mandatory]=\"field.mandatory\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [textColor]=\"field.textColor\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [allowDecimal]=\"field.allowDecimal\"\n [additionalValue]=\"field.additionalValue\" [notificationInfo]=\"field.notificationInfo\" [isActive]=\"isActive\"\n [layoutType]=\"layoutType\" [showTitle]=\"showTitle\" [visible]=\"field.visible\"\n [minFractionDigits]=\"field.digitsNumberAfterDecimalPoint\" (valueChange)=\"onValueChanged($event, field)\"\n (formValidationChange)=\"onFormValidationChanged($event)\" (elementClick)=\"onClick($event)\">\n </pep-quantity-selector>\n\n <pep-rich-html-textarea *ngSwitchCase=\"'richhtmltextarea'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [maxFieldCharacters]=\"field.maxFieldCharacters\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\" [renderTitle]=\"field.renderTitle\"\n [renderEnlargeButton]=\"field.renderEnlargeButton\" (valueChange)=\"onValueChanged($event, field)\"\n [isActive]=\"isActive\">\n </pep-rich-html-textarea>\n\n <pep-select *ngSwitchCase=\"'select'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\" [label]=\"field.label\"\n [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [options]=\"field.options\" [showTitle]=\"showTitle\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" [emptyOption]=\"field.emptyOption\"\n (valueChange)=\"onValueChanged($event, field)\" (formValidationChange)=\"onFormValidationChanged($event)\"\n [isActive]=\"isActive\">\n </pep-select>\n\n <pep-separator *ngSwitchCase=\"'separator'\" [form]=\"form\" [key]=\"field.key\" [label]=\"field.label\"\n [xAlignment]=\"field.xAlignment\" [layoutType]=\"layoutType\" [visible]=\"field.visible\">\n </pep-separator>\n\n <pep-signature *ngSwitchCase=\"'signature'\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.value\" [label]=\"field.label\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [isActive]=\"isActive\" [layoutType]=\"layoutType\"\n [visible]=\"field.visible\" (fileChange)=\"onFileChanged($event, field)\">\n </pep-signature>\n\n <pep-textarea *ngSwitchCase=\"'textarea'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\" [label]=\"field.label\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\"\n [rowSpan]=\"field.rowSpan\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n </pep-textarea>\n\n <pep-textbox *ngSwitchCase=\"'textbox'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [accessory]=\"field.accessory\" [label]=\"field.label\"\n [placeholder]=\"field.placeholder\" [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\"\n [readonly]=\"field.readonly\" [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [regex]=\"field.regex\" [regexError]=\"field.regexError\"\n [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [minFractionDigits]=\"field.digitsNumberAfterDecimalPoint\"\n (valueChange)=\"onValueChanged($event, field)\" (formValidationChange)=\"onFormValidationChanged($event)\"\n [isActive]=\"isActive\" [visible]=\"field.visible\">\n </pep-textbox>\n\n <pep-link *ngSwitchCase=\"'link'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [placeholder]=\"field.placeholder\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\"\n [rowSpan]=\"field.rowSpan\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\" [visible]=\"field.visible\"\n (formValidationChange)=\"onFormValidationChanged($event)\" (elementClick)=\"onClick($event)\">\n </pep-link>\n\n <pep-indicators *ngSwitchCase=\"'indicators'\" [key]=\"field.key\" [value]=\"field.value\" [layoutType]=\"layoutType\">\n </pep-indicators>\n <pep-internal-button *ngSwitchCase=\"'button'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [formattedValue]=\"field.formattedValue\" [label]=\"field.label\"\n [referenceObjectInternalType]=\"field.referenceObjectInternalType\" [type]=\"field.type\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n (valueChange)=\"onValueChanged($event, field)\">\n </pep-internal-button>\n <pep-internal-menu *ngSwitchCase=\"'menu'\" [key]=\"field.key\" [label]=\"field.label\" [disabled]=\"field.disabled\"\n [xAlignment]=\"field.xAlignment\" [options]=\"field.options\" [layoutType]=\"layoutType\"\n (elementClick)=\"onClick($event)\">\n </pep-internal-menu>\n <pep-internal-page *ngSwitchCase=\"'internalPage'\" [field]=\"field\" [layoutType]=\"layoutType\"\n (internalFormFieldClick)=\"onInternalFormFieldClick($event)\"\n (internalFormFieldChange)=\"onInternalFormFieldChanged($event)\">\n </pep-internal-page>\n\n <pep-internal-carusel *ngSwitchCase=\"'internalCarusel'\" [field]=\"field\"\n (internalFormFieldClick)=\"onInternalFormFieldClick($event)\"\n (internalFormFieldChange)=\"onInternalFormFieldChanged($event)\">\n </pep-internal-carusel>\n\n <ng-container *ngSwitchCase=\"'placeholder'\">\n </ng-container>\n</ng-container>", styles: [":host{width:100%;height:100%}\n"], dependencies: [{ 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: "component", type: i3.PepAddressComponent, selector: "pep-address", inputs: ["key", "formattedValue", "label", "mandatory", "disabled", "readonly", "xAlignment", "rowSpan", "groupFields", "form", "layoutType", "visible"], outputs: ["addressValueChange"] }, { kind: "component", type: i4.PepAttachmentComponent, selector: "pep-attachment", inputs: ["key", "src", "label", "mandatory", "disabled", "readonly", "xAlignment", "rowSpan", "visible", "form", "showTitle", "renderTitle", "layoutType", "isActive"], outputs: ["fileChange", "elementClick"] }, { kind: "component", type: i5.PepCheckboxComponent, selector: "pep-checkbox", inputs: ["key", "value", "label", "type", "mandatory", "disabled", "readonly", "xAlignment", "rowSpan", "additionalValue", "form", "isActive", "showTitle", "renderTitle", "layoutType", "visible"], outputs: ["valueChange"] }, { kind: "component", type: i6.PepDateComponent, selector: "pep-date", inputs: ["key", "value", "formattedValue", "label", "type", "mandatory", "disabled", "readonly", "textColor", "xAlignment", "rowSpan", "visible", "minValue", "maxValue", "minDateValue", "maxDateValue", "form", "isActive", "showTitle", "renderTitle", "renderError", "renderSymbol", "layoutType"], outputs: ["valueChange"] }, { kind: "component", type: i7.PepImageComponent, selector: "pep-image", inputs: ["key", "srcLarge", "src", "options", "label", "mandatory", "disabled", "readonly", "xAlignment", "rowSpan", "indicatorsField", "menuField", "hasCampaignField", "visible", "form", "uid", "showTitle", "renderTitle", "layoutType", "isActive", "sizeLimitMB", "acceptImagesType"], outputs: ["fileChange", "elementClick"] }, { kind: "component", type: i8.PepImagesFilmstripComponent, selector: "pep-images-filmstrip", inputs: ["key", "value", "label", "xAlignment", "rowSpan", "form", "uid", "showTitle", "renderTitle", "layoutType", "currIndex", "showThumbnails"] }, { kind: "component", type: i9.PepQuantitySelectorComponent, selector: "pep-quantity-selector", inputs: ["key", "value", "formattedValue", "minFractionDigits", "maxFractionDigits", "label", "type", "mandatory", "disabled", "readonly", "textColor", "xAlignment", "rowSpan", "allowDecimal", "additionalValue", "notificationInfo", "visible", "form", "showTitle", "renderTitle", "layoutType", "isActive", "styleType", "isInFocus"], outputs: ["valueChange", "elementClick"] }, { kind: "component", type: i10.PepRichHtmlTextareaComponent, selector: "pep-rich-html-textarea", inputs: ["key", "value", "label", "mandatory", "disabled", "readonly", "maxFieldCharacters", "xAlignment", "rowSpan", "visible", "form", "isActive", "showTitle", "renderTitle", "renderEnlargeButton", "layoutType", "inlineMode", "toolbarOptions"], outputs: ["valueChange"] }, { kind: "component", type: i11.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: i12.PepSeparatorComponent, selector: "pep-separator", inputs: ["key", "label", "xAlignment", "form", "layoutType", "visible"] }, { kind: "component", type: i13.PepSignatureComponent, selector: "pep-signature", inputs: ["key", "src", "label", "mandatory", "disabled", "readonly", "xAlignment", "rowSpan", "signatureURL", "visible", "form", "showTitle", "renderTitle", "layoutType", "isActive"], outputs: ["fileChange"] }, { kind: "component", type: i14.PepTextareaComponent, selector: "pep-textarea", inputs: ["key", "value", "label", "mandatory", "disabled", "readonly", "maxFieldCharacters", "textColor", "xAlignment", "rowSpan", "visible", "form", "isActive", "showTitle", "renderTitle", "layoutType"], outputs: ["valueChange"] }, { kind: "component", type: i15.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", "regex", "regexError", "isInFocus"], outputs: ["valueChange", "formValidationChange"] }, { kind: "component", type: i16.PepLinkComponent, selector: "pep-link", inputs: ["key", "value", "formattedValue", "label", "placeholder", "mandatory", "disabled", "readonly", "maxFieldCharacters", "textColor", "xAlignment", "rowSpan", "visible", "form", "isActive", "showTitle", "renderTitle", "renderError", "renderSymbol", "layoutType"], outputs: ["valueChange", "formValidationChange", "elementClick"] }, { kind: "component", type: i17.PepIndicatorsComponent, selector: "pep-indicators", inputs: ["key", "value", "layoutType"] }, { kind: "component", type: i18.PepInternalButtonComponent, selector: "pep-internal-button", inputs: ["key", "value", "formattedValue", "label", "referenceObjectInternalType", "type", "mandatory", "disabled", "readonly", "xAlignment", "rowSpan", "visible", "form", "showTitle", "layoutType"], outputs: ["elementClick", "valueChange"] }, { kind: "component", type: i19.PepInternalMenuComponent, selector: "pep-internal-menu", inputs: ["key", "label", "disabled", "xAlignment", "options", "invertClass", "layoutType"], outputs: ["elementClick"] }, { kind: "component", type: i20.PepInternalPageComponent, selector: "pep-internal-page", inputs: ["field", "layoutType"], outputs: ["internalFormFieldChange", "internalFormFieldClick"] }, { kind: "component", type: i21.PepInternalCaruselComponent, selector: "pep-internal-carusel", inputs: ["field", "layoutType"], outputs: ["internalFormFieldChange", "internalFormFieldClick"] }, { kind: "pipe", type: i1.LowerCasePipe, name: "lowercase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
120
+ PepFieldGeneratorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepFieldGeneratorComponent, selector: "pep-field-generator", inputs: { field: "field", isActive: "isActive", uid: "uid", form: "form", layoutType: "layoutType", showTitle: "showTitle", checkForChanges: "checkForChanges" }, outputs: { valueChange: "valueChange", formValidationChange: "formValidationChange", elementClick: "elementClick", internalFormFieldChange: "internalFormFieldChange", internalFormFieldClick: "internalFormFieldClick", formValueChange: "formValueChange", formFieldClick: "formFieldClick" }, usesOnChanges: true, ngImport: i0, template: "<ng-container [ngSwitch]=\"field.controlType\" [formGroup]=\"form\">\n\n <pep-address *ngSwitchCase=\"'address'\" [form]=\"form\" [key]=\"field.key\" [formattedValue]=\"field.formattedValue\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [groupFields]=\"field.groupFields\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (addressValueChange)=\"onAddressValueChanged($event, field)\">\n </pep-address>\n\n <pep-attachment *ngSwitchCase=\"'attachment'\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.value\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [isActive]=\"isActive\" [showTitle]=\"showTitle\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n (fileChange)=\"onFileChanged($event, field)\">\n </pep-attachment>\n\n <pep-checkbox *ngSwitchCase=\"'checkbox'\" [form]=\"form\" [key]=\"field.key\"\n [value]=\"(field.value | lowercase) == 'true' || field.value == '1' ? true : false\" [label]=\"field.label\"\n [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [additionalValue]=\"field.additionalValue\"\n [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n </pep-checkbox>\n\n <pep-date *ngSwitchCase=\"'date'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [type]=\"field.type\" [mandatory]=\"field.mandatory\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [textColor]=\"field.textColor\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [minValue]=\"field.minValue\"\n [maxValue]=\"field.maxValue\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n </pep-date>\n\n <pep-images-filmstrip *ngSwitchCase=\"'images'\" [uid]=\"uid\" [form]=\"form\" [key]=\"field.key\" [label]=\"field.label\"\n [showTitle]=\"showTitle\" [rowSpan]=\"field.rowSpan\" [value]=\"field.value\" [layoutType]=\"layoutType\">\n </pep-images-filmstrip>\n\n <pep-image *ngSwitchCase=\"'image'\" [uid]=\"uid\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.formattedValue\"\n [srcLarge]=\"field.value\" [options]=\"field.options\" [label]=\"field.label\" [mandatory]=\"field.mandatory\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\"\n [rowSpan]=\"field.rowSpan\" [indicatorsField]=\"field.indicatorsField\" [menuField]=\"field.menuField\"\n [hasCampaignField]=\"field.hasCampaignField\" [sizeLimitMB]=\"field.sizeLimitMB\" [isActive]=\"isActive\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n (fileChange)=\"onFileChanged($event, field)\">\n </pep-image>\n\n <pep-quantity-selector *ngSwitchCase=\"'qs'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [type]=\"field.type\" [mandatory]=\"field.mandatory\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [textColor]=\"field.textColor\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [allowDecimal]=\"field.allowDecimal\"\n [additionalValue]=\"field.additionalValue\" [notificationInfo]=\"field.notificationInfo\" [isActive]=\"isActive\"\n [layoutType]=\"layoutType\" [showTitle]=\"showTitle\" [visible]=\"field.visible\"\n [minFractionDigits]=\"field.digitsNumberAfterDecimalPoint\" (valueChange)=\"onValueChanged($event, field)\"\n (formValidationChange)=\"onFormValidationChanged($event)\" (elementClick)=\"onClick($event)\">\n </pep-quantity-selector>\n\n <pep-rich-html-textarea *ngSwitchCase=\"'richhtmltextarea'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [maxFieldCharacters]=\"field.maxFieldCharacters\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\" [renderTitle]=\"field.renderTitle\"\n [renderEnlargeButton]=\"field.renderEnlargeButton\" (valueChange)=\"onValueChanged($event, field)\"\n [isActive]=\"isActive\">\n </pep-rich-html-textarea>\n\n <pep-select *ngSwitchCase=\"'select'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\" [label]=\"field.label\"\n [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [options]=\"field.options\" [showTitle]=\"showTitle\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" [emptyOption]=\"field.emptyOption\"\n (valueChange)=\"onValueChanged($event, field)\" (formValidationChange)=\"onFormValidationChanged($event)\"\n [isActive]=\"isActive\">\n </pep-select>\n\n <pep-separator *ngSwitchCase=\"'separator'\" [form]=\"form\" [key]=\"field.key\" [label]=\"field.label\"\n [xAlignment]=\"field.xAlignment\" [layoutType]=\"layoutType\" [visible]=\"field.visible\">\n </pep-separator>\n\n <pep-signature *ngSwitchCase=\"'signature'\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.value\" [label]=\"field.label\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [isActive]=\"isActive\" [layoutType]=\"layoutType\"\n [visible]=\"field.visible\" (fileChange)=\"onFileChanged($event, field)\">\n </pep-signature>\n\n <pep-textarea *ngSwitchCase=\"'textarea'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\" [label]=\"field.label\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\"\n [rowSpan]=\"field.rowSpan\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n </pep-textarea>\n\n <pep-textbox *ngSwitchCase=\"'textbox'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [accessory]=\"field.accessory\" [label]=\"field.label\"\n [placeholder]=\"field.placeholder\" [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\"\n [readonly]=\"field.readonly\" [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [regex]=\"field.regex\" [regexError]=\"field.regexError\"\n [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [minFractionDigits]=\"field.digitsNumberAfterDecimalPoint\"\n (valueChange)=\"onValueChanged($event, field)\" (formValidationChange)=\"onFormValidationChanged($event)\"\n [isActive]=\"isActive\" [visible]=\"field.visible\">\n </pep-textbox>\n\n <pep-link *ngSwitchCase=\"'link'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [placeholder]=\"field.placeholder\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\"\n [rowSpan]=\"field.rowSpan\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\" [visible]=\"field.visible\"\n (formValidationChange)=\"onFormValidationChanged($event)\" (elementClick)=\"onClick($event)\">\n </pep-link>\n\n <pep-indicators *ngSwitchCase=\"'indicators'\" [key]=\"field.key\" [value]=\"field.value\" [layoutType]=\"layoutType\">\n </pep-indicators>\n <pep-internal-button *ngSwitchCase=\"'button'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [formattedValue]=\"field.formattedValue\" [label]=\"field.label\"\n [referenceObjectInternalType]=\"field.referenceObjectInternalType\" [type]=\"field.type\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n (valueChange)=\"onValueChanged($event, field)\">\n </pep-internal-button>\n <pep-internal-menu *ngSwitchCase=\"'menu'\" [key]=\"field.key\" [label]=\"field.label\" [disabled]=\"field.disabled\"\n [xAlignment]=\"field.xAlignment\" [options]=\"field.options\" [layoutType]=\"layoutType\"\n (elementClick)=\"onClick($event)\">\n </pep-internal-menu>\n <pep-internal-page *ngSwitchCase=\"'internalPage'\" [field]=\"field\" [layoutType]=\"layoutType\"\n (internalFormFieldClick)=\"onInternalFormFieldClick($event)\"\n (internalFormFieldChange)=\"onInternalFormFieldChanged($event)\">\n </pep-internal-page>\n\n <pep-internal-carusel *ngSwitchCase=\"'internalCarusel'\" [field]=\"field\"\n (internalFormFieldClick)=\"onInternalFormFieldClick($event)\"\n (internalFormFieldChange)=\"onInternalFormFieldChanged($event)\">\n </pep-internal-carusel>\n\n <ng-container *ngSwitchCase=\"'placeholder'\">\n </ng-container>\n</ng-container>", styles: [":host{width:100%;height:100%}\n"], dependencies: [{ 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: "component", type: i3.PepAddressComponent, selector: "pep-address", inputs: ["key", "formattedValue", "label", "mandatory", "disabled", "readonly", "xAlignment", "rowSpan", "groupFields", "form", "layoutType", "visible"], outputs: ["addressValueChange"] }, { kind: "component", type: i4.PepAttachmentComponent, selector: "pep-attachment", inputs: ["key", "src", "label", "mandatory", "disabled", "readonly", "xAlignment", "rowSpan", "visible", "form", "showTitle", "renderTitle", "layoutType", "isActive"], outputs: ["fileChange", "elementClick"] }, { kind: "component", type: i5.PepCheckboxComponent, selector: "pep-checkbox", inputs: ["key", "value", "label", "type", "mandatory", "disabled", "readonly", "xAlignment", "rowSpan", "additionalValue", "form", "isActive", "showTitle", "renderTitle", "layoutType", "visible"], outputs: ["valueChange"] }, { kind: "component", type: i6.PepDateComponent, selector: "pep-date", inputs: ["key", "value", "formattedValue", "label", "type", "mandatory", "disabled", "readonly", "textColor", "xAlignment", "rowSpan", "visible", "minValue", "maxValue", "minDateValue", "maxDateValue", "form", "isActive", "showTitle", "renderTitle", "renderError", "renderSymbol", "layoutType"], outputs: ["valueChange"] }, { kind: "component", type: i7.PepImageComponent, selector: "pep-image", inputs: ["key", "srcLarge", "src", "options", "label", "mandatory", "disabled", "readonly", "xAlignment", "rowSpan", "indicatorsField", "menuField", "hasCampaignField", "visible", "form", "uid", "showTitle", "renderTitle", "layoutType", "isActive", "sizeLimitMB", "acceptImagesType"], outputs: ["fileChange", "elementClick"] }, { kind: "component", type: i8.PepImagesFilmstripComponent, selector: "pep-images-filmstrip", inputs: ["key", "value", "label", "xAlignment", "rowSpan", "form", "uid", "showTitle", "renderTitle", "layoutType", "currIndex", "showThumbnails"] }, { kind: "component", type: i9.PepQuantitySelectorComponent, selector: "pep-quantity-selector", inputs: ["key", "value", "formattedValue", "minFractionDigits", "maxFractionDigits", "label", "type", "mandatory", "disabled", "readonly", "textColor", "xAlignment", "rowSpan", "allowDecimal", "additionalValue", "notificationInfo", "visible", "form", "showTitle", "renderTitle", "layoutType", "isActive", "styleType", "isInFocus"], outputs: ["valueChange", "elementClick"] }, { kind: "component", type: i10.PepRichHtmlTextareaComponent, selector: "pep-rich-html-textarea", inputs: ["key", "value", "label", "mandatory", "disabled", "readonly", "maxFieldCharacters", "xAlignment", "rowSpan", "visible", "form", "isActive", "showTitle", "renderTitle", "renderEnlargeButton", "layoutType", "inlineMode", "toolbarOptions"], outputs: ["valueChange"] }, { kind: "component", type: i11.PepSelectComponent, selector: "pep-select", inputs: ["key", "value", "label", "type", "mandatory", "disabled", "readonly", "xAlignment", "rowSpan", "options", "visible", "emptyOption", "form", "layoutType", "parentFieldKey", "isActive", "showTitle", "renderTitle", "typeaheadDebounceInterval"], outputs: ["valueChange", "formValidationChange"] }, { kind: "component", type: i12.PepSeparatorComponent, selector: "pep-separator", inputs: ["key", "label", "xAlignment", "form", "layoutType", "visible"] }, { kind: "component", type: i13.PepSignatureComponent, selector: "pep-signature", inputs: ["key", "src", "label", "mandatory", "disabled", "readonly", "xAlignment", "rowSpan", "signatureURL", "visible", "form", "showTitle", "renderTitle", "layoutType", "isActive"], outputs: ["fileChange"] }, { kind: "component", type: i14.PepTextareaComponent, selector: "pep-textarea", inputs: ["key", "value", "label", "mandatory", "disabled", "readonly", "maxFieldCharacters", "textColor", "xAlignment", "rowSpan", "visible", "form", "isActive", "showTitle", "renderTitle", "layoutType"], outputs: ["valueChange"] }, { kind: "component", type: i15.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", "regex", "regexError", "isInFocus"], outputs: ["valueChange", "formValidationChange"] }, { kind: "component", type: i16.PepLinkComponent, selector: "pep-link", inputs: ["key", "value", "formattedValue", "label", "placeholder", "mandatory", "disabled", "readonly", "maxFieldCharacters", "textColor", "xAlignment", "rowSpan", "visible", "form", "isActive", "showTitle", "renderTitle", "renderError", "renderSymbol", "layoutType"], outputs: ["valueChange", "formValidationChange", "elementClick"] }, { kind: "component", type: i17.PepIndicatorsComponent, selector: "pep-indicators", inputs: ["key", "value", "layoutType"] }, { kind: "component", type: i18.PepInternalButtonComponent, selector: "pep-internal-button", inputs: ["key", "value", "formattedValue", "label", "referenceObjectInternalType", "type", "mandatory", "disabled", "readonly", "xAlignment", "rowSpan", "visible", "form", "showTitle", "layoutType"], outputs: ["elementClick", "valueChange"] }, { kind: "component", type: i19.PepInternalMenuComponent, selector: "pep-internal-menu", inputs: ["key", "label", "disabled", "xAlignment", "options", "invertClass", "layoutType"], outputs: ["elementClick"] }, { kind: "component", type: i20.PepInternalPageComponent, selector: "pep-internal-page", inputs: ["field", "layoutType"], outputs: ["internalFormFieldChange", "internalFormFieldClick"] }, { kind: "component", type: i21.PepInternalCaruselComponent, selector: "pep-internal-carusel", inputs: ["field", "layoutType"], outputs: ["internalFormFieldChange", "internalFormFieldClick"] }, { kind: "pipe", type: i1.LowerCasePipe, name: "lowercase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
121
121
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepFieldGeneratorComponent, decorators: [{
122
122
  type: Component,
123
123
  args: [{ selector: 'pep-field-generator', encapsulation: ViewEncapsulation.Emulated, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container [ngSwitch]=\"field.controlType\" [formGroup]=\"form\">\n\n <pep-address *ngSwitchCase=\"'address'\" [form]=\"form\" [key]=\"field.key\" [formattedValue]=\"field.formattedValue\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [groupFields]=\"field.groupFields\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (addressValueChange)=\"onAddressValueChanged($event, field)\">\n </pep-address>\n\n <pep-attachment *ngSwitchCase=\"'attachment'\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.value\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [isActive]=\"isActive\" [showTitle]=\"showTitle\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n (fileChange)=\"onFileChanged($event, field)\">\n </pep-attachment>\n\n <pep-checkbox *ngSwitchCase=\"'checkbox'\" [form]=\"form\" [key]=\"field.key\"\n [value]=\"(field.value | lowercase) == 'true' || field.value == '1' ? true : false\" [label]=\"field.label\"\n [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [additionalValue]=\"field.additionalValue\"\n [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n </pep-checkbox>\n\n <pep-date *ngSwitchCase=\"'date'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [type]=\"field.type\" [mandatory]=\"field.mandatory\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [textColor]=\"field.textColor\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [minValue]=\"field.minValue\"\n [maxValue]=\"field.maxValue\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n </pep-date>\n\n <pep-images-filmstrip *ngSwitchCase=\"'images'\" [uid]=\"uid\" [form]=\"form\" [key]=\"field.key\" [label]=\"field.label\"\n [showTitle]=\"showTitle\" [rowSpan]=\"field.rowSpan\" [value]=\"field.value\" [layoutType]=\"layoutType\">\n </pep-images-filmstrip>\n\n <pep-image *ngSwitchCase=\"'image'\" [uid]=\"uid\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.formattedValue\"\n [srcLarge]=\"field.value\" [options]=\"field.options\" [label]=\"field.label\" [mandatory]=\"field.mandatory\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\"\n [rowSpan]=\"field.rowSpan\" [indicatorsField]=\"field.indicatorsField\" [menuField]=\"field.menuField\"\n [hasCampaignField]=\"field.hasCampaignField\" [sizeLimitMB]=\"field.sizeLimitMB\" [isActive]=\"isActive\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n (fileChange)=\"onFileChanged($event, field)\">\n </pep-image>\n\n <pep-quantity-selector *ngSwitchCase=\"'qs'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [type]=\"field.type\" [mandatory]=\"field.mandatory\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [textColor]=\"field.textColor\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [allowDecimal]=\"field.allowDecimal\"\n [additionalValue]=\"field.additionalValue\" [notificationInfo]=\"field.notificationInfo\" [isActive]=\"isActive\"\n [layoutType]=\"layoutType\" [showTitle]=\"showTitle\" [visible]=\"field.visible\"\n [minFractionDigits]=\"field.digitsNumberAfterDecimalPoint\" (valueChange)=\"onValueChanged($event, field)\"\n (formValidationChange)=\"onFormValidationChanged($event)\" (elementClick)=\"onClick($event)\">\n </pep-quantity-selector>\n\n <pep-rich-html-textarea *ngSwitchCase=\"'richhtmltextarea'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [maxFieldCharacters]=\"field.maxFieldCharacters\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\" [renderTitle]=\"field.renderTitle\"\n [renderEnlargeButton]=\"field.renderEnlargeButton\" (valueChange)=\"onValueChanged($event, field)\"\n [isActive]=\"isActive\">\n </pep-rich-html-textarea>\n\n <pep-select *ngSwitchCase=\"'select'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\" [label]=\"field.label\"\n [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [options]=\"field.options\" [showTitle]=\"showTitle\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" [emptyOption]=\"field.emptyOption\"\n (valueChange)=\"onValueChanged($event, field)\" (formValidationChange)=\"onFormValidationChanged($event)\"\n [isActive]=\"isActive\">\n </pep-select>\n\n <pep-separator *ngSwitchCase=\"'separator'\" [form]=\"form\" [key]=\"field.key\" [label]=\"field.label\"\n [xAlignment]=\"field.xAlignment\" [layoutType]=\"layoutType\" [visible]=\"field.visible\">\n </pep-separator>\n\n <pep-signature *ngSwitchCase=\"'signature'\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.value\" [label]=\"field.label\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [isActive]=\"isActive\" [layoutType]=\"layoutType\"\n [visible]=\"field.visible\" (fileChange)=\"onFileChanged($event, field)\">\n </pep-signature>\n\n <pep-textarea *ngSwitchCase=\"'textarea'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\" [label]=\"field.label\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\"\n [rowSpan]=\"field.rowSpan\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n </pep-textarea>\n\n <pep-textbox *ngSwitchCase=\"'textbox'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [accessory]=\"field.accessory\" [label]=\"field.label\"\n [placeholder]=\"field.placeholder\" [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\"\n [readonly]=\"field.readonly\" [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [regex]=\"field.regex\" [regexError]=\"field.regexError\"\n [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [minFractionDigits]=\"field.digitsNumberAfterDecimalPoint\"\n (valueChange)=\"onValueChanged($event, field)\" (formValidationChange)=\"onFormValidationChanged($event)\"\n [isActive]=\"isActive\" [visible]=\"field.visible\">\n </pep-textbox>\n\n <pep-link *ngSwitchCase=\"'link'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [placeholder]=\"field.placeholder\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\"\n [rowSpan]=\"field.rowSpan\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\" [visible]=\"field.visible\"\n (formValidationChange)=\"onFormValidationChanged($event)\" (elementClick)=\"onClick($event)\">\n </pep-link>\n\n <pep-indicators *ngSwitchCase=\"'indicators'\" [key]=\"field.key\" [value]=\"field.value\" [layoutType]=\"layoutType\">\n </pep-indicators>\n <pep-internal-button *ngSwitchCase=\"'button'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [formattedValue]=\"field.formattedValue\" [label]=\"field.label\"\n [referenceObjectInternalType]=\"field.referenceObjectInternalType\" [type]=\"field.type\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n (valueChange)=\"onValueChanged($event, field)\">\n </pep-internal-button>\n <pep-internal-menu *ngSwitchCase=\"'menu'\" [key]=\"field.key\" [label]=\"field.label\" [disabled]=\"field.disabled\"\n [xAlignment]=\"field.xAlignment\" [options]=\"field.options\" [layoutType]=\"layoutType\"\n (elementClick)=\"onClick($event)\">\n </pep-internal-menu>\n <pep-internal-page *ngSwitchCase=\"'internalPage'\" [field]=\"field\" [layoutType]=\"layoutType\"\n (internalFormFieldClick)=\"onInternalFormFieldClick($event)\"\n (internalFormFieldChange)=\"onInternalFormFieldChanged($event)\">\n </pep-internal-page>\n\n <pep-internal-carusel *ngSwitchCase=\"'internalCarusel'\" [field]=\"field\"\n (internalFormFieldClick)=\"onInternalFormFieldClick($event)\"\n (internalFormFieldChange)=\"onInternalFormFieldChanged($event)\">\n </pep-internal-carusel>\n\n <ng-container *ngSwitchCase=\"'placeholder'\">\n </ng-container>\n</ng-container>", styles: [":host{width:100%;height:100%}\n"] }]