@churchillliving/se-ui-toolkit 6.54.369 → 6.54.374

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.
@@ -1,11 +1,49 @@
1
- import { Component } from '@angular/core';
1
+ import { Component, Optional } from '@angular/core';
2
+ import { EFormControl } from '../../../../models/form.model';
2
3
  import * as i0 from "@angular/core";
4
+ import * as i1 from "../../../../services/grid.service";
5
+ import * as i2 from "primeng/dynamicdialog";
6
+ import * as i3 from "@angular/common";
7
+ import * as i4 from "../../form-util/form-util.component";
3
8
  export class EmailFilterComponent {
4
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: EmailFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: EmailFilterComponent, selector: "se-email-filter", ngImport: i0, template: "<p>email-filter works!</p>\n", styles: [""] }); }
9
+ constructor(gridService, config) {
10
+ this.gridService = gridService;
11
+ this.config = config;
12
+ }
13
+ ngOnInit() {
14
+ this.initializeForm();
15
+ }
16
+ initializeForm() {
17
+ this.dynamicForm = {
18
+ formSections: [
19
+ {
20
+ fields: [
21
+ ...this.config.data.formFields,
22
+ {
23
+ label: 'Run',
24
+ control: EFormControl.ADD_BUTTON,
25
+ onClick: () => {
26
+ const formattedObject = JSON.stringify(this.dynamicForm.formSections[0]?.fields
27
+ ?.filter(field => field.control !== "add_button")
28
+ ?.reduce((acc, field) => {
29
+ acc[field.field] = field.value;
30
+ return acc;
31
+ }, {}));
32
+ this.gridService.generateSendEmailEvent(this.config.data.uniqueKey, formattedObject);
33
+ },
34
+ }
35
+ ]
36
+ }
37
+ ]
38
+ };
39
+ }
40
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: EmailFilterComponent, deps: [{ token: i1.GridService }, { token: i2.DynamicDialogConfig, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
41
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: EmailFilterComponent, selector: "se-email-filter", ngImport: i0, template: "<se-form-util *ngIf=\"dynamicForm\" [form]=\"dynamicForm\" [hideSaveButton]=\"true\" [hideCancelButton]=\"true\">\n</se-form-util>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.FormUtilComponent, selector: "se-form-util", inputs: ["stickyActions", "form", "hideSaveButton", "hideCancelButton", "formButtons", "loading", "activeTestMode"], outputs: ["saveForm", "cancelForm", "dropDownChangeEvent", "sectionClickedEvent"] }] }); }
6
42
  }
7
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: EmailFilterComponent, decorators: [{
8
44
  type: Component,
9
- args: [{ selector: 'se-email-filter', template: "<p>email-filter works!</p>\n" }]
10
- }] });
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlLXVpLXRvb2xraXQvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UvZW1haWwvZW1haWwtZmlsdGVyL2VtYWlsLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL2VtYWlsL2VtYWlsLWZpbHRlci9lbWFpbC1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPMUMsTUFBTSxPQUFPLG9CQUFvQjtpSUFBcEIsb0JBQW9CO3FIQUFwQixvQkFBb0IsdURDUGpDLDhCQUNBOzsyRkRNYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlLWVtYWlsLWZpbHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbWFpbC1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbWFpbC1maWx0ZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBFbWFpbEZpbHRlckNvbXBvbmVudCB7XG5cbn1cbiIsIjxwPmVtYWlsLWZpbHRlciB3b3JrcyE8L3A+XG4iXX0=
45
+ args: [{ selector: 'se-email-filter', template: "<se-form-util *ngIf=\"dynamicForm\" [form]=\"dynamicForm\" [hideSaveButton]=\"true\" [hideCancelButton]=\"true\">\n</se-form-util>" }]
46
+ }], ctorParameters: function () { return [{ type: i1.GridService }, { type: i2.DynamicDialogConfig, decorators: [{
47
+ type: Optional
48
+ }] }]; } });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlLXVpLXRvb2xraXQvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UvZW1haWwvZW1haWwtZmlsdGVyL2VtYWlsLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL2VtYWlsL2VtYWlsLWZpbHRlci9lbWFpbC1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEQsT0FBTyxFQUFFLFlBQVksRUFBZ0IsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7O0FBVTNFLE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFDVSxXQUF3QixFQUNiLE1BQTJCO1FBRHRDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ2IsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7SUFDNUMsQ0FBQztJQUdMLFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsV0FBVyxHQUFHO1lBQ2pCLFlBQVksRUFBRTtnQkFDWjtvQkFDRSxNQUFNLEVBQUU7d0JBQ04sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVO3dCQUM5Qjs0QkFDRSxLQUFLLEVBQUUsS0FBSzs0QkFDWixPQUFPLEVBQUUsWUFBWSxDQUFDLFVBQVU7NEJBQ2hDLE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0NBQ1osTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNO29DQUM3RSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssWUFBWSxDQUFDO29DQUNqRCxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRTtvQ0FDdEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO29DQUMvQixPQUFPLEdBQUcsQ0FBQztnQ0FDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQ0FDVixJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FBQzs0QkFDdkYsQ0FBQzt5QkFDRjtxQkFFRjtpQkFDRjthQUNGO1NBRUYsQ0FBQTtJQUNILENBQUM7aUlBcENVLG9CQUFvQjtxSEFBcEIsb0JBQW9CLHVEQ1pqQyxvSUFDZTs7MkZEV0Ysb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGlCQUFpQjs7MEJBT3hCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEeW5hbWljRGlhbG9nQ29uZmlnIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcbmltcG9ydCB7IEVGb3JtQ29udHJvbCwgSUR5bmFtaWNGb3JtIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2Zvcm0ubW9kZWwnO1xuaW1wb3J0IHsgR3JpZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9ncmlkLnNlcnZpY2UnO1xuXG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2UtZW1haWwtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VtYWlsLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VtYWlsLWZpbHRlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEVtYWlsRmlsdGVyQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBncmlkU2VydmljZTogR3JpZFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGNvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZyxcbiAgKSB7IH1cblxuICBkeW5hbWljRm9ybTogSUR5bmFtaWNGb3JtO1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxpemVGb3JtKCk7XG4gIH1cblxuICBpbml0aWFsaXplRm9ybSgpIHtcbiAgICB0aGlzLmR5bmFtaWNGb3JtID0ge1xuICAgICAgZm9ybVNlY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgIC4uLnRoaXMuY29uZmlnLmRhdGEuZm9ybUZpZWxkcyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdSdW4nLFxuICAgICAgICAgICAgICBjb250cm9sOiBFRm9ybUNvbnRyb2wuQUREX0JVVFRPTixcbiAgICAgICAgICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZE9iamVjdCA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZHluYW1pY0Zvcm0uZm9ybVNlY3Rpb25zWzBdPy5maWVsZHNcbiAgICAgICAgICAgICAgICAgID8uZmlsdGVyKGZpZWxkID0+IGZpZWxkLmNvbnRyb2wgIT09IFwiYWRkX2J1dHRvblwiKVxuICAgICAgICAgICAgICAgICAgPy5yZWR1Y2UoKGFjYywgZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYWNjW2ZpZWxkLmZpZWxkXSA9IGZpZWxkLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgICAgfSwge30pKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLmdlbmVyYXRlU2VuZEVtYWlsRXZlbnQodGhpcy5jb25maWcuZGF0YS51bmlxdWVLZXksIGZvcm1hdHRlZE9iamVjdCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIF1cblxuICAgIH1cbiAgfVxufVxuIiwiPHNlLWZvcm0tdXRpbCAqbmdJZj1cImR5bmFtaWNGb3JtXCIgW2Zvcm1dPVwiZHluYW1pY0Zvcm1cIiBbaGlkZVNhdmVCdXR0b25dPVwidHJ1ZVwiIFtoaWRlQ2FuY2VsQnV0dG9uXT1cInRydWVcIj5cbjwvc2UtZm9ybS11dGlsPiJdfQ==
@@ -1,32 +1,73 @@
1
1
  import { Component, Input } from '@angular/core';
2
+ import { EmailFilterComponent } from '../email-filter/email-filter.component';
3
+ import { autoSetLookupData } from '../../../../services/utilities.service';
4
+ import { EFormControl } from '../../../../models/form.model';
2
5
  import * as i0 from "@angular/core";
3
6
  import * as i1 from "primeng/dynamicdialog";
4
- import * as i2 from "../../../../services/grid.service";
5
- import * as i3 from "primeng/button";
7
+ import * as i2 from "../../../../services/request.service";
8
+ import * as i3 from "../../../../services/grid.service";
9
+ import * as i4 from "../../../../services/alert.service";
10
+ import * as i5 from "primeng/button";
6
11
  export class EmailGenerateBtnComponent {
7
- constructor(dialogService, gridService) {
12
+ constructor(dialogService, requestService, gridService, alertService) {
8
13
  this.dialogService = dialogService;
14
+ this.requestService = requestService;
9
15
  this.gridService = gridService;
16
+ this.alertService = alertService;
10
17
  this.showDialog = true;
11
18
  }
12
19
  ngOnInit() {
13
20
  }
14
21
  onClickGenerateEmailBtn() {
15
22
  let data = { ...this.column.data };
16
- console.log('data:1 ', data);
17
23
  if (Object.keys(this.selectedRow)?.length > 0) {
18
- //const newData = {...utilities.autoSetLookupData(this.column.data.data, this.selectedRow), selectedRow: this.selectedRow, label: this.label};
19
- const keys = Object.keys(this.column.data.data);
20
- this.gridService.generateSendEmailEvent(this.selectedRow[keys[0]]);
24
+ const newData = { ...autoSetLookupData(this.column.data.data, this.selectedRow), selectedRow: this.selectedRow, label: this.label };
25
+ this.requestService.getOne('/EmailConfig/Email', newData.uniqueKey).subscribe((response) => {
26
+ const emailInfo = JSON.parse(response?.emailInfo);
27
+ const emailBody = emailInfo?.body;
28
+ const matchedParams = emailBody?.match(/{(.*?)}/g);
29
+ if (matchedParams && this.column.showDialog) {
30
+ const parameterList = matchedParams.map(params => params.replace(/[{}]/g, ''));
31
+ const formFields = parameterList?.map(field => ({ field: field, label: field, control: EFormControl.INPUT }));
32
+ const ref = this.dialogService.open(EmailFilterComponent, {
33
+ header: "View Email Parameters",
34
+ width: '70%',
35
+ height: '50%',
36
+ data: {
37
+ formFields: formFields,
38
+ uniqueKey: newData.uniqueKey
39
+ },
40
+ });
41
+ const dialogRef = this.dialogService.dialogComponentRefMap.get(ref);
42
+ const component = dialogRef?.instance;
43
+ const ariaLabelledBy = component.getAriaLabelledBy();
44
+ component.getAriaLabelledBy = () => ariaLabelledBy;
45
+ }
46
+ else {
47
+ const matchedData = matchedParams?.reduce((acc, param) => {
48
+ const key = param.replace(/[{}]/g, '');
49
+ const lowerCaseKey = key?.toLowerCase();
50
+ const matchedKey = Object.keys(newData?.selectedRow)?.find(existingKey => existingKey.toLowerCase() === lowerCaseKey);
51
+ if (matchedKey) {
52
+ acc[key] = newData?.selectedRow[matchedKey];
53
+ }
54
+ return acc;
55
+ }, {});
56
+ const formattedObject = JSON.stringify(matchedData);
57
+ this.gridService.generateSendEmailEvent(newData.uniqueKey, formattedObject);
58
+ }
59
+ }, (error) => {
60
+ this.alertService.apiError(error);
61
+ });
21
62
  }
22
63
  }
23
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: EmailGenerateBtnComponent, deps: [{ token: i1.DialogService }, { token: i2.GridService }], target: i0.ɵɵFactoryTarget.Component }); }
24
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: EmailGenerateBtnComponent, selector: "se-email-generate-btn", inputs: { label: "label", icon: "icon", showDialog: "showDialog", column: "column", selectedRow: "selectedRow" }, ngImport: i0, template: "<button pButton type=\"button\" [icon]=\"icon\" [label]=\"label\" class=\"grid-component-grid-add-btn\"\n (click)=\"onClickGenerateEmailBtn()\"></button>", styles: [""], dependencies: [{ kind: "directive", type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }] }); }
64
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: EmailGenerateBtnComponent, deps: [{ token: i1.DialogService }, { token: i2.RequestService }, { token: i3.GridService }, { token: i4.AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
65
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: EmailGenerateBtnComponent, selector: "se-email-generate-btn", inputs: { label: "label", icon: "icon", showDialog: "showDialog", column: "column", selectedRow: "selectedRow" }, ngImport: i0, template: "<button pButton type=\"button\" [icon]=\"icon\" [label]=\"label\" class=\"grid-component-grid-add-btn\"\n (click)=\"onClickGenerateEmailBtn()\"></button>", styles: [""], dependencies: [{ kind: "directive", type: i5.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }] }); }
25
66
  }
26
67
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: EmailGenerateBtnComponent, decorators: [{
27
68
  type: Component,
28
69
  args: [{ selector: 'se-email-generate-btn', template: "<button pButton type=\"button\" [icon]=\"icon\" [label]=\"label\" class=\"grid-component-grid-add-btn\"\n (click)=\"onClickGenerateEmailBtn()\"></button>" }]
29
- }], ctorParameters: function () { return [{ type: i1.DialogService }, { type: i2.GridService }]; }, propDecorators: { label: [{
70
+ }], ctorParameters: function () { return [{ type: i1.DialogService }, { type: i2.RequestService }, { type: i3.GridService }, { type: i4.AlertService }]; }, propDecorators: { label: [{
30
71
  type: Input
31
72
  }], icon: [{
32
73
  type: Input
@@ -37,4 +78,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
37
78
  }], selectedRow: [{
38
79
  type: Input
39
80
  }] } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwtZ2VuZXJhdGUtYnRuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlLXVpLXRvb2xraXQvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UvZW1haWwvZW1haWwtZ2VuZXJhdGUtYnRuL2VtYWlsLWdlbmVyYXRlLWJ0bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL2VtYWlsL2VtYWlsLWdlbmVyYXRlLWJ0bi9lbWFpbC1nZW5lcmF0ZS1idG4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBV2pELE1BQU0sT0FBTyx5QkFBeUI7SUFPcEMsWUFDUyxhQUE0QixFQUMzQixXQUF3QjtRQUR6QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQU56QixlQUFVLEdBQVksSUFBSSxDQUFDO0lBT2hDLENBQUM7SUFFTCxRQUFRO0lBQ1IsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM3QixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDN0MsOElBQThJO1lBQzlJLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDcEU7SUFDSCxDQUFDO2lJQXZCWSx5QkFBeUI7cUhBQXpCLHlCQUF5QiwrS0NYdEMsOEpBQ2lEOzsyRkRVcEMseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLHVCQUF1Qjs4SEFLeEIsS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5pbXBvcnQgeyBHcmlkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL2dyaWQuc2VydmljZSc7XG5cblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZS1lbWFpbC1nZW5lcmF0ZS1idG4nLFxuICB0ZW1wbGF0ZVVybDogJy4vZW1haWwtZ2VuZXJhdGUtYnRuLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZW1haWwtZ2VuZXJhdGUtYnRuLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRW1haWxHZW5lcmF0ZUJ0bkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGljb246IHN0cmluZztcbiAgQElucHV0KCkgc2hvd0RpYWxvZzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGNvbHVtbjogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgQElucHV0KCkgc2VsZWN0ZWRSb3c6IHsgW2tleTogc3RyaW5nXTogYW55IH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBncmlkU2VydmljZTogR3JpZFNlcnZpY2UsXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cblxuICBvbkNsaWNrR2VuZXJhdGVFbWFpbEJ0bigpIHtcbiAgICBsZXQgZGF0YSA9IHsgLi4udGhpcy5jb2x1bW4uZGF0YSB9O1xuICAgIGNvbnNvbGUubG9nKCdkYXRhOjEgJywgZGF0YSk7XG4gICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRSb3cpPy5sZW5ndGggPiAwKSB7XG4gICAgICAvL2NvbnN0IG5ld0RhdGEgPSB7Li4udXRpbGl0aWVzLmF1dG9TZXRMb29rdXBEYXRhKHRoaXMuY29sdW1uLmRhdGEuZGF0YSwgdGhpcy5zZWxlY3RlZFJvdyksIHNlbGVjdGVkUm93OiB0aGlzLnNlbGVjdGVkUm93LCBsYWJlbDogdGhpcy5sYWJlbH07XG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5jb2x1bW4uZGF0YS5kYXRhKTtcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLmdlbmVyYXRlU2VuZEVtYWlsRXZlbnQodGhpcy5zZWxlY3RlZFJvd1trZXlzWzBdXSk7XG4gIH1cbn1cbn1cbiIsIjxidXR0b24gcEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2ljb25dPVwiaWNvblwiIFtsYWJlbF09XCJsYWJlbFwiIGNsYXNzPVwiZ3JpZC1jb21wb25lbnQtZ3JpZC1hZGQtYnRuXCJcbiAgICAoY2xpY2spPVwib25DbGlja0dlbmVyYXRlRW1haWxCdG4oKVwiPjwvYnV0dG9uPiJdfQ==
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwtZ2VuZXJhdGUtYnRuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlLXVpLXRvb2xraXQvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UvZW1haWwvZW1haWwtZ2VuZXJhdGUtYnRuL2VtYWlsLWdlbmVyYXRlLWJ0bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL2VtYWlsL2VtYWlsLWdlbmVyYXRlLWJ0bi9lbWFpbC1nZW5lcmF0ZS1idG4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFJOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7O0FBTzdELE1BQU0sT0FBTyx5QkFBeUI7SUFPcEMsWUFDUyxhQUE0QixFQUMzQixjQUE4QixFQUM5QixXQUF3QixFQUN4QixZQUEwQjtRQUgzQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFSM0IsZUFBVSxHQUFZLElBQUksQ0FBQztJQVVoQyxDQUFDO0lBRUwsUUFBUTtJQUNSLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkMsSUFBSSxNQUFNLENBQUMsSUFB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O29CQUNwRCxJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUM7aUJBQzdFO1lBRUgsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEMsQ0FBQyxDQUNGLENBQUM7U0FDSDtJQUNILENBQUM7aUlBakVVLHlCQUF5QjtxSEFBekIseUJBQXlCLCtLQ2R0Qyw4SkFDaUQ7OzJGRGFwQyx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0UsdUJBQXVCO3NMQUt4QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlLCBEeW5hbWljRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcbmltcG9ydCB7IEVtYWlsRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZW1haWwtZmlsdGVyL2VtYWlsLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3JpZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVxdWVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9yZXF1ZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQgeyBhdXRvU2V0TG9va3VwRGF0YSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxpdGllcy5zZXJ2aWNlJztcbmltcG9ydCB7IEVGb3JtQ29udHJvbCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9mb3JtLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2UtZW1haWwtZ2VuZXJhdGUtYnRuJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VtYWlsLWdlbmVyYXRlLWJ0bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VtYWlsLWdlbmVyYXRlLWJ0bi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEVtYWlsR2VuZXJhdGVCdG5Db21wb25lbnQge1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuICBASW5wdXQoKSBpY29uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNob3dEaWFsb2c6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBjb2x1bW46IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIEBJbnB1dCgpIHNlbGVjdGVkUm93OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVxdWVzdFNlcnZpY2U6IFJlcXVlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ3JpZFNlcnZpY2U6IEdyaWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG5cbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgfVxuXG4gIG9uQ2xpY2tHZW5lcmF0ZUVtYWlsQnRuKCkge1xuICAgIGxldCBkYXRhID0geyAuLi50aGlzLmNvbHVtbi5kYXRhIH07XG4gICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRSb3cpPy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBuZXdEYXRhOiBhbnkgPSB7IC4uLmF1dG9TZXRMb29rdXBEYXRhKHRoaXMuY29sdW1uLmRhdGEuZGF0YSwgdGhpcy5zZWxlY3RlZFJvdyksIHNlbGVjdGVkUm93OiB0aGlzLnNlbGVjdGVkUm93LCBsYWJlbDogdGhpcy5sYWJlbCB9O1xuICAgICAgdGhpcy5yZXF1ZXN0U2VydmljZS5nZXRPbmUoJy9FbWFpbENvbmZpZy9FbWFpbCcsIG5ld0RhdGEudW5pcXVlS2V5KS5zdWJzY3JpYmUoXG4gICAgICAgIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgZW1haWxJbmZvID0gSlNPTi5wYXJzZShyZXNwb25zZT8uZW1haWxJbmZvKTtcbiAgICAgICAgICBjb25zdCBlbWFpbEJvZHkgPSBlbWFpbEluZm8/LmJvZHk7XG4gICAgICAgICAgY29uc3QgbWF0Y2hlZFBhcmFtcyA9IGVtYWlsQm9keT8ubWF0Y2goL3soLio/KX0vZyk7XG4gICAgICAgICAgaWYgKG1hdGNoZWRQYXJhbXMgJiYgdGhpcy5jb2x1bW4uc2hvd0RpYWxvZykge1xuICAgICAgICAgICAgY29uc3QgcGFyYW1ldGVyTGlzdCA9IG1hdGNoZWRQYXJhbXMubWFwKHBhcmFtcyA9PiBwYXJhbXMucmVwbGFjZSgvW3t9XS9nLCAnJykpO1xuICAgICAgICAgICAgY29uc3QgZm9ybUZpZWxkcyA9IHBhcmFtZXRlckxpc3Q/Lm1hcChmaWVsZCA9PiAoeyBmaWVsZDogZmllbGQsIGxhYmVsOiBmaWVsZCwgY29udHJvbDogRUZvcm1Db250cm9sLklOUFVUIH0pKTtcbiAgICAgICAgICAgIGNvbnN0IHJlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKEVtYWlsRmlsdGVyQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgIGhlYWRlcjogXCJWaWV3IEVtYWlsIFBhcmFtZXRlcnNcIixcbiAgICAgICAgICAgICAgd2lkdGg6ICc3MCUnLFxuICAgICAgICAgICAgICBoZWlnaHQ6ICc1MCUnLFxuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkczogZm9ybUZpZWxkcyxcbiAgICAgICAgICAgICAgICB1bmlxdWVLZXk6IG5ld0RhdGEudW5pcXVlS2V5XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5kaWFsb2dDb21wb25lbnRSZWZNYXAuZ2V0KHJlZik7XG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnQgPSBkaWFsb2dSZWY/Lmluc3RhbmNlIGFzIER5bmFtaWNEaWFsb2dDb21wb25lbnQ7XG4gICAgICAgICAgICBjb25zdCBhcmlhTGFiZWxsZWRCeSA9IGNvbXBvbmVudC5nZXRBcmlhTGFiZWxsZWRCeSgpO1xuICAgICAgICAgICAgY29tcG9uZW50LmdldEFyaWFMYWJlbGxlZEJ5ID0gKCkgPT4gYXJpYUxhYmVsbGVkQnk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hlZERhdGEgPSBtYXRjaGVkUGFyYW1zPy5yZWR1Y2UoKGFjYywgcGFyYW0pID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qga2V5ID0gcGFyYW0ucmVwbGFjZSgvW3t9XS9nLCAnJyk7XG4gICAgICAgICAgICAgIGNvbnN0IGxvd2VyQ2FzZUtleSA9IGtleT8udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgY29uc3QgbWF0Y2hlZEtleSA9IE9iamVjdC5rZXlzKG5ld0RhdGE/LnNlbGVjdGVkUm93KT8uZmluZChleGlzdGluZ0tleSA9PiBleGlzdGluZ0tleS50b0xvd2VyQ2FzZSgpID09PSBsb3dlckNhc2VLZXkpO1xuICAgICAgICAgICAgICBpZiAobWF0Y2hlZEtleSkge1xuICAgICAgICAgICAgICAgIGFjY1trZXldID0gbmV3RGF0YT8uc2VsZWN0ZWRSb3dbbWF0Y2hlZEtleV07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH0sIHt9KTtcblxuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkT2JqZWN0ID0gSlNPTi5zdHJpbmdpZnkobWF0Y2hlZERhdGEpO1xuICAgICAgICAgICAgdGhpcy5ncmlkU2VydmljZS5nZW5lcmF0ZVNlbmRFbWFpbEV2ZW50KG5ld0RhdGEudW5pcXVlS2V5LCBmb3JtYXR0ZWRPYmplY3QpO1xuICAgICAgICAgIH1cblxuICAgICAgICB9LFxuICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hcGlFcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iLCI8YnV0dG9uIHBCdXR0b24gdHlwZT1cImJ1dHRvblwiIFtpY29uXT1cImljb25cIiBbbGFiZWxdPVwibGFiZWxcIiBjbGFzcz1cImdyaWQtY29tcG9uZW50LWdyaWQtYWRkLWJ0blwiXG4gICAgKGNsaWNrKT1cIm9uQ2xpY2tHZW5lcmF0ZUVtYWlsQnRuKClcIj48L2J1dHRvbj4iXX0=