ngx-techlify-core 18.64.0 → 18.65.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/audit-log/audit-log-for-model/audit-log-for-model.module.mjs +1 -5
- package/esm2022/lib/audit-log/audit-log-list/audit-log-list.module.mjs +4 -9
- package/esm2022/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.mjs +1 -5
- package/esm2022/lib/audit-log/audit-log-view/audit-log-view.component.mjs +5 -5
- package/esm2022/lib/audit-log/audit-log-view/audit-log-view.module.mjs +1 -5
- package/esm2022/lib/audit-log/audit-log-view-model/audit-log-view-model.component.mjs +4 -5
- package/esm2022/lib/audit-log/audit-log-view-model/audit-log-view-model.module.mjs +1 -5
- package/esm2022/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.mjs +1 -5
- package/esm2022/lib/entity-files/entity-file-form/entity-file-form.component.mjs +9 -10
- package/esm2022/lib/entity-files/entity-files-view-all.component.mjs +18 -20
- package/esm2022/lib/entity-files/entity-files-view-all.module.mjs +4 -9
- package/esm2022/lib/import-csv/data-import/data-import.component.mjs +4 -5
- package/esm2022/lib/import-csv/failed-items-list/failed-items-list.component.mjs +6 -7
- package/esm2022/lib/import-csv/field-mapping/field-mapping.component.mjs +10 -11
- package/esm2022/lib/import-csv/import-csv.component.mjs +15 -15
- package/esm2022/lib/import-csv/import-history-list/import-history-list.component.mjs +6 -7
- package/esm2022/lib/import-csv/import-success/import-success.component.mjs +7 -8
- package/esm2022/lib/role/index.mjs +2 -2
- package/esm2022/lib/role/role-form.component.mjs +4 -4
- package/esm2022/lib/role/role-list/role-list.component.mjs +120 -0
- package/esm2022/lib/role/role-view/role-view.component.mjs +3 -4
- package/esm2022/lib/role/role.module.mjs +9 -16
- package/esm2022/lib/role/role.routes.mjs +3 -3
- package/fesm2022/ngx-techlify-core.mjs +126 -158
- package/fesm2022/ngx-techlify-core.mjs.map +1 -1
- package/lib/audit-log/audit-log-for-model/audit-log-for-model.module.d.ts +3 -4
- package/lib/audit-log/audit-log-list/audit-log-list.module.d.ts +7 -8
- package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.d.ts +5 -6
- package/lib/audit-log/audit-log-view/audit-log-view.module.d.ts +2 -3
- package/lib/audit-log/audit-log-view-model/audit-log-view-model.module.d.ts +2 -3
- package/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.d.ts +2 -3
- package/lib/entity-files/entity-files-view-all.module.d.ts +11 -12
- package/lib/role/index.d.ts +1 -1
- package/lib/role/{roles-view-all.component.d.ts → role-list/role-list.component.d.ts} +8 -14
- package/lib/role/role.module.d.ts +6 -7
- package/package.json +1 -1
- package/esm2022/lib/role/roles-view-all.component.mjs +0 -128
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@angular/common";
|
|
4
|
-
import * as i2 from "@angular/
|
|
5
|
-
import * as i3 from "@angular/material/
|
|
6
|
-
import * as i4 from "@angular/material/
|
|
7
|
-
import * as i5 from "@angular/material/divider";
|
|
4
|
+
import * as i2 from "@angular/material/button";
|
|
5
|
+
import * as i3 from "@angular/material/icon";
|
|
6
|
+
import * as i4 from "@angular/material/divider";
|
|
8
7
|
export class FailedItemsListComponent {
|
|
9
8
|
constructor(location) {
|
|
10
9
|
this.location = location;
|
|
@@ -20,11 +19,11 @@ export class FailedItemsListComponent {
|
|
|
20
19
|
this.onReUpload.emit(true);
|
|
21
20
|
}
|
|
22
21
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FailedItemsListComponent, deps: [{ token: i1.Location }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FailedItemsListComponent, selector: "app-failed-items-list", inputs: { failedItems: "failedItems", selectedFields: "selectedFields" }, outputs: { onReUpload: "onReUpload" }, ngImport: i0, template: "<div *ngIf=\"failedItems.length\" class=\"mt-4\"
|
|
22
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FailedItemsListComponent, selector: "app-failed-items-list", inputs: { failedItems: "failedItems", selectedFields: "selectedFields" }, outputs: { onReUpload: "onReUpload" }, ngImport: i0, template: "<div *ngIf=\"failedItems.length\" class=\"d-flex flex-column mt-4\">\n <div class=\"d-flex flex-row flex-wrap pb-3\">\n <h5 style=\"flex: 0 0 30%;\" class=\"primary-color\">Summary</h5>\n <div style=\"flex: 0 0 70%;\" class=\"d-flex align-items-center\">\n <h5 class=\"secondary-color mb-0\">\n <span class=\"font-weight-bold\">{{failedItems.length}} </span>\n </h5>\n <span class=\"text-muted\"> Error(s) Found In Uploaded File</span>\n </div>\n </div>\n\n <div>\n <mat-divider></mat-divider>\n </div>\n <div class=\"d-flex flex-column pt-3\">\n <h5 class=\"primary-color\">Errors</h5>\n <div style=\"overflow-x: auto;width: 1100px;\" class=\"pt-3\">\n <table class=\"table table-bordered table-striped table-hover table-sm ml-4 w-100\">\n <thead>\n <tr>\n <th>#</th>\n <th *ngFor=\"let field of selectedFields;\">{{field?.property}}</th>\n <th class=\"text-danger\">Error</th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let timesheet of failedItems; let i=index\">\n <tr>\n <td>{{i + 1}}</td>\n <td *ngFor=\"let field of selectedFields;\">\n <ng-container *ngIf=\"(field.propertyType == 'date' || field.propertyType == 'dateTime')\n &&isValidDate(timesheet[field.property]);else elseProperty;\">\n {{ timesheet[field.property] | date: 'MMM d, y, H:mm:ss' }}\n </ng-container>\n <ng-template #elseProperty>\n {{ timesheet[field.property] }}\n </ng-template>\n </td>\n <td class=\"text-danger\">\n {{timesheet?.error}}\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n </div>\n <div class=\"d-flex justify-content-end w-100 mt-1\">\n <button mat-button class=\"mt-2 mr-2\" type=\"button\" (click)=\"location.back()\">\n Close\n </button>\n <button mat-stroked-button class=\"mt-2 mr-2 primary-color\" type=\"button\" (click)=\"reUpload()\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n file_upload\n </span>\n </mat-icon>\n Re-upload\n </button>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] }); }
|
|
24
23
|
}
|
|
25
24
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FailedItemsListComponent, decorators: [{
|
|
26
25
|
type: Component,
|
|
27
|
-
args: [{ selector: 'app-failed-items-list', template: "<div *ngIf=\"failedItems.length\" class=\"mt-4\"
|
|
26
|
+
args: [{ selector: 'app-failed-items-list', template: "<div *ngIf=\"failedItems.length\" class=\"d-flex flex-column mt-4\">\n <div class=\"d-flex flex-row flex-wrap pb-3\">\n <h5 style=\"flex: 0 0 30%;\" class=\"primary-color\">Summary</h5>\n <div style=\"flex: 0 0 70%;\" class=\"d-flex align-items-center\">\n <h5 class=\"secondary-color mb-0\">\n <span class=\"font-weight-bold\">{{failedItems.length}} </span>\n </h5>\n <span class=\"text-muted\"> Error(s) Found In Uploaded File</span>\n </div>\n </div>\n\n <div>\n <mat-divider></mat-divider>\n </div>\n <div class=\"d-flex flex-column pt-3\">\n <h5 class=\"primary-color\">Errors</h5>\n <div style=\"overflow-x: auto;width: 1100px;\" class=\"pt-3\">\n <table class=\"table table-bordered table-striped table-hover table-sm ml-4 w-100\">\n <thead>\n <tr>\n <th>#</th>\n <th *ngFor=\"let field of selectedFields;\">{{field?.property}}</th>\n <th class=\"text-danger\">Error</th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let timesheet of failedItems; let i=index\">\n <tr>\n <td>{{i + 1}}</td>\n <td *ngFor=\"let field of selectedFields;\">\n <ng-container *ngIf=\"(field.propertyType == 'date' || field.propertyType == 'dateTime')\n &&isValidDate(timesheet[field.property]);else elseProperty;\">\n {{ timesheet[field.property] | date: 'MMM d, y, H:mm:ss' }}\n </ng-container>\n <ng-template #elseProperty>\n {{ timesheet[field.property] }}\n </ng-template>\n </td>\n <td class=\"text-danger\">\n {{timesheet?.error}}\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n </div>\n <div class=\"d-flex justify-content-end w-100 mt-1\">\n <button mat-button class=\"mt-2 mr-2\" type=\"button\" (click)=\"location.back()\">\n Close\n </button>\n <button mat-stroked-button class=\"mt-2 mr-2 primary-color\" type=\"button\" (click)=\"reUpload()\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n file_upload\n </span>\n </mat-icon>\n Re-upload\n </button>\n </div>\n</div>" }]
|
|
28
27
|
}], ctorParameters: () => [{ type: i1.Location }], propDecorators: { failedItems: [{
|
|
29
28
|
type: Input
|
|
30
29
|
}], selectedFields: [{
|
|
@@ -32,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
32
31
|
}], onReUpload: [{
|
|
33
32
|
type: Output
|
|
34
33
|
}] } });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFpbGVkLWl0ZW1zLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9pbXBvcnQtY3N2L2ZhaWxlZC1pdGVtcy1saXN0L2ZhaWxlZC1pdGVtcy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvaW1wb3J0LWNzdi9mYWlsZWQtaXRlbXMtbGlzdC9mYWlsZWQtaXRlbXMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFPL0UsTUFBTSxPQUFPLHdCQUF3QjtJQUtuQyxZQUNTLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFIakIsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFJdEMsQ0FBQztJQUVMLFFBQVE7SUFDUixDQUFDO0lBRUQsV0FBVyxDQUFDLENBQU07UUFDaEIsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsT0FBTyxJQUFJLFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQzsrR0FuQlUsd0JBQXdCO21HQUF4Qix3QkFBd0IsOEtDUnJDLGd5RUE0RE07OzRGRHBETyx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UsdUJBQXVCOzZFQUt4QixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZhaWxlZC1pdGVtcy1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZhaWxlZC1pdGVtcy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmFpbGVkLWl0ZW1zLWxpc3QuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGYWlsZWRJdGVtc0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBmYWlsZWRJdGVtczogYW55W107XG4gIEBJbnB1dCgpIHNlbGVjdGVkRmllbGRzOiBhbnlbXTtcbiAgQE91dHB1dCgpIG9uUmVVcGxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGxvY2F0aW9uOiBMb2NhdGlvblxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICB9XG5cbiAgaXNWYWxpZERhdGUoZDogYW55KTogYm9vbGVhbiB7XG4gICAgdmFyIGRhdGUgPSBuZXcgRGF0ZShkKTtcbiAgICByZXR1cm4gZGF0ZSBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKGRhdGUuZ2V0VGltZSgpKTtcbiAgfVxuXG4gIHJlVXBsb2FkKCkge1xuICAgIHRoaXMub25SZVVwbG9hZC5lbWl0KHRydWUpO1xuICB9XG5cbn1cbiIsIjxkaXYgKm5nSWY9XCJmYWlsZWRJdGVtcy5sZW5ndGhcIiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBtdC00XCI+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgZmxleC13cmFwIHBiLTNcIj5cbiAgICA8aDUgc3R5bGU9XCJmbGV4OiAwIDAgMzAlO1wiIGNsYXNzPVwicHJpbWFyeS1jb2xvclwiPlN1bW1hcnk8L2g1PlxuICAgIDxkaXYgc3R5bGU9XCJmbGV4OiAwIDAgNzAlO1wiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGg1IGNsYXNzPVwic2Vjb25kYXJ5LWNvbG9yIG1iLTBcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXdlaWdodC1ib2xkXCI+e3tmYWlsZWRJdGVtcy5sZW5ndGh9fSAmbmJzcDs8L3NwYW4+XG4gICAgICA8L2g1PlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkXCI+IEVycm9yKHMpIEZvdW5kIEluIFVwbG9hZGVkIEZpbGU8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXY+XG4gICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIHB0LTNcIj5cbiAgICA8aDUgY2xhc3M9XCJwcmltYXJ5LWNvbG9yXCI+RXJyb3JzPC9oNT5cbiAgICA8ZGl2IHN0eWxlPVwib3ZlcmZsb3cteDogYXV0bzt3aWR0aDogMTEwMHB4O1wiIGNsYXNzPVwicHQtM1wiPlxuICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtYm9yZGVyZWQgdGFibGUtc3RyaXBlZCB0YWJsZS1ob3ZlciB0YWJsZS1zbSBtbC00IHctMTAwXCI+XG4gICAgICAgIDx0aGVhZD5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGg+IzwvdGg+XG4gICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGZpZWxkIG9mIHNlbGVjdGVkRmllbGRzO1wiPnt7ZmllbGQ/LnByb3BlcnR5fX08L3RoPlxuICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1kYW5nZXJcIj5FcnJvcjwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRpbWVzaGVldCBvZiBmYWlsZWRJdGVtczsgbGV0IGk9aW5kZXhcIj5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgPHRkPnt7aSArIDF9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgZmllbGQgb2Ygc2VsZWN0ZWRGaWVsZHM7XCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmaWVsZC5wcm9wZXJ0eVR5cGUgPT0gJ2RhdGUnIHx8IGZpZWxkLnByb3BlcnR5VHlwZSA9PSAnZGF0ZVRpbWUnKVxuICAgICAgICAgICAgICAgICAmJmlzVmFsaWREYXRlKHRpbWVzaGVldFtmaWVsZC5wcm9wZXJ0eV0pO2Vsc2UgZWxzZVByb3BlcnR5O1wiPlxuICAgICAgICAgICAgICAgICAge3sgdGltZXNoZWV0W2ZpZWxkLnByb3BlcnR5XSB8IGRhdGU6ICdNTU0gZCwgeSwgSDptbTpzcycgfX1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Vsc2VQcm9wZXJ0eT5cbiAgICAgICAgICAgICAgICAgIHt7IHRpbWVzaGVldFtmaWVsZC5wcm9wZXJ0eV0gfX1cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPlxuICAgICAgICAgICAgICAgIHt7dGltZXNoZWV0Py5lcnJvcn19XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCB3LTEwMCBtdC0xXCI+XG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwibXQtMiBtci0yXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJsb2NhdGlvbi5iYWNrKClcIj5cbiAgICAgIENsb3NlXG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJtdC0yIG1yLTIgcHJpbWFyeS1jb2xvclwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVVcGxvYWQoKVwiPlxuICAgICAgPG1hdC1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkXCI+XG4gICAgICAgICAgZmlsZV91cGxvYWRcbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9tYXQtaWNvbj5cbiAgICAgIFJlLXVwbG9hZFxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|
|
@@ -4,14 +4,13 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
import * as i1 from "@angular/forms";
|
|
5
5
|
import * as i2 from "../../core/form-validator.service";
|
|
6
6
|
import * as i3 from "@angular/common";
|
|
7
|
-
import * as i4 from "@angular/
|
|
8
|
-
import * as i5 from "@angular/material/
|
|
9
|
-
import * as i6 from "@angular/material/
|
|
10
|
-
import * as i7 from "@angular/material/
|
|
11
|
-
import * as i8 from "@angular/material/
|
|
12
|
-
import * as i9 from "@angular/material/
|
|
13
|
-
import * as i10 from "@angular/material/
|
|
14
|
-
import * as i11 from "@angular/material/tooltip";
|
|
7
|
+
import * as i4 from "@angular/material/button";
|
|
8
|
+
import * as i5 from "@angular/material/form-field";
|
|
9
|
+
import * as i6 from "@angular/material/icon";
|
|
10
|
+
import * as i7 from "@angular/material/core";
|
|
11
|
+
import * as i8 from "@angular/material/select";
|
|
12
|
+
import * as i9 from "@angular/material/divider";
|
|
13
|
+
import * as i10 from "@angular/material/tooltip";
|
|
15
14
|
const errorMessages = {
|
|
16
15
|
property: {
|
|
17
16
|
required: "Property is required",
|
|
@@ -136,11 +135,11 @@ export class FieldMappingComponent {
|
|
|
136
135
|
this.onReUpload.emit(true);
|
|
137
136
|
}
|
|
138
137
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FieldMappingComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.FormValidatorService }, { token: i0.ChangeDetectorRef }, { token: i3.Location }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
139
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FieldMappingComponent, selector: "app-field-mapping", inputs: { data: "data", config: "config" }, outputs: { onSave: "onSave", onReUpload: "onReUpload" }, ngImport: i0, template: "<div
|
|
138
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FieldMappingComponent, selector: "app-field-mapping", inputs: { data: "data", config: "config" }, outputs: { onSave: "onSave", onReUpload: "onReUpload" }, ngImport: i0, template: "<div class=\"d-flex flex-column mt-2\">\n <div class=\"d-flex flex-row flex-wrap pb-3\">\n <h5 style=\"flex: 0 0 30%;\" class=\"primary-color\">Summary</h5>\n <div style=\"flex: 0 0 70%;\" class=\"d-flex align-items-center\">\n <h5 class=\"secondary-color mb-0\">\n <span class=\"font-weight-bold\">{{data.length}} </span>\n </h5>\n <span class=\"text-muted ml-2\"> Records Found In Uploaded File</span>\n </div>\n </div>\n\n <div>\n <mat-divider></mat-divider>\n </div>\n\n <form [formGroup]=\"importMappingForm\" (ngSubmit)=\"next()\" class=\"d-flex flex-column pt-3\">\n <h5 class=\"primary-color pb-2\">Properties</h5>\n <table style=\"width: 100%;\" class=\"table table-sm table-striped\">\n <tr class=\"table-header-row\">\n <th>Column Headers From File</th>\n <th>Preview Information</th>\n <th>Property</th>\n </tr>\n <ng-container formArrayName=\"fields\">\n <tr *ngFor=\"let field of fieldsArray.controls; let i = index\" [formGroupName]=\"i\">\n <td>{{ field.get('label').value }}</td>\n <td>{{ field.get('value').value }}</td>\n <td>\n <div class=\"d-flex align-items-center\">\n <mat-form-field class=\"flex-grow-1\" appearance=\"outline\">\n <mat-label>Select Property</mat-label>\n <mat-select placeholder=\"Select Property\" formControlName=\"property\" required\n (selectionChange)=\"updatePropertyType($event, i)\">\n <mat-option *ngFor=\"let property of properties\" [value]=\"property.value\">\n {{property.label}}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"isFieldValid('property', fieldsArray.controls[i])\">\n {{getErrorMessage('property', fieldsArray.controls[i])}}\n </mat-error>\n </mat-form-field>\n\n <mat-icon role=\"button\" class=\"ms-3 text-danger\" type=\"button\" mat-icon-button (click)=\"removeField(i)\"\n *ngIf=\"fieldsArray.length > 1\" matTooltip=\"Remove column\" matTooltipPosition=\"right\"\n style=\"margin-bottom: 1.25em;\">remove_circle</mat-icon>\n </div>\n </td>\n </tr>\n </ng-container>\n </table>\n\n <div class=\"mt-1 d-flex flex-row gap-2 justify-content-end align-items-center\">\n <button mat-button class=\"mt-2 mr-2\" type=\"button\" (click)=\"location.back()\">\n Cancel\n </button>\n <button mat-stroked-button class=\"mt-2 mr-2 primary-color\" type=\"button\" (click)=\"reUpload()\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n file_upload\n </span>\n </mat-icon>\n Re-upload\n </button>\n <button mat-stroked-button class=\"mt-2 primary-bg\" type=\"submit\">\n Next\n <mat-icon>\n chevron_right\n </mat-icon>\n </button>\n </div>\n </form>\n</div>", styles: ["table{width:100%}th,td{padding:1%}.table-header-row{background-color:#e6e4e4;color:#000;font-weight:bolder}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
|
|
140
139
|
}
|
|
141
140
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FieldMappingComponent, decorators: [{
|
|
142
141
|
type: Component,
|
|
143
|
-
args: [{ selector: 'app-field-mapping', template: "<div
|
|
142
|
+
args: [{ selector: 'app-field-mapping', template: "<div class=\"d-flex flex-column mt-2\">\n <div class=\"d-flex flex-row flex-wrap pb-3\">\n <h5 style=\"flex: 0 0 30%;\" class=\"primary-color\">Summary</h5>\n <div style=\"flex: 0 0 70%;\" class=\"d-flex align-items-center\">\n <h5 class=\"secondary-color mb-0\">\n <span class=\"font-weight-bold\">{{data.length}} </span>\n </h5>\n <span class=\"text-muted ml-2\"> Records Found In Uploaded File</span>\n </div>\n </div>\n\n <div>\n <mat-divider></mat-divider>\n </div>\n\n <form [formGroup]=\"importMappingForm\" (ngSubmit)=\"next()\" class=\"d-flex flex-column pt-3\">\n <h5 class=\"primary-color pb-2\">Properties</h5>\n <table style=\"width: 100%;\" class=\"table table-sm table-striped\">\n <tr class=\"table-header-row\">\n <th>Column Headers From File</th>\n <th>Preview Information</th>\n <th>Property</th>\n </tr>\n <ng-container formArrayName=\"fields\">\n <tr *ngFor=\"let field of fieldsArray.controls; let i = index\" [formGroupName]=\"i\">\n <td>{{ field.get('label').value }}</td>\n <td>{{ field.get('value').value }}</td>\n <td>\n <div class=\"d-flex align-items-center\">\n <mat-form-field class=\"flex-grow-1\" appearance=\"outline\">\n <mat-label>Select Property</mat-label>\n <mat-select placeholder=\"Select Property\" formControlName=\"property\" required\n (selectionChange)=\"updatePropertyType($event, i)\">\n <mat-option *ngFor=\"let property of properties\" [value]=\"property.value\">\n {{property.label}}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"isFieldValid('property', fieldsArray.controls[i])\">\n {{getErrorMessage('property', fieldsArray.controls[i])}}\n </mat-error>\n </mat-form-field>\n\n <mat-icon role=\"button\" class=\"ms-3 text-danger\" type=\"button\" mat-icon-button (click)=\"removeField(i)\"\n *ngIf=\"fieldsArray.length > 1\" matTooltip=\"Remove column\" matTooltipPosition=\"right\"\n style=\"margin-bottom: 1.25em;\">remove_circle</mat-icon>\n </div>\n </td>\n </tr>\n </ng-container>\n </table>\n\n <div class=\"mt-1 d-flex flex-row gap-2 justify-content-end align-items-center\">\n <button mat-button class=\"mt-2 mr-2\" type=\"button\" (click)=\"location.back()\">\n Cancel\n </button>\n <button mat-stroked-button class=\"mt-2 mr-2 primary-color\" type=\"button\" (click)=\"reUpload()\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n file_upload\n </span>\n </mat-icon>\n Re-upload\n </button>\n <button mat-stroked-button class=\"mt-2 primary-bg\" type=\"submit\">\n Next\n <mat-icon>\n chevron_right\n </mat-icon>\n </button>\n </div>\n </form>\n</div>", styles: ["table{width:100%}th,td{padding:1%}.table-header-row{background-color:#e6e4e4;color:#000;font-weight:bolder}\n"] }]
|
|
144
143
|
}], ctorParameters: () => [{ type: i1.UntypedFormBuilder }, { type: i2.FormValidatorService }, { type: i0.ChangeDetectorRef }, { type: i3.Location }], propDecorators: { data: [{
|
|
145
144
|
type: Input
|
|
146
145
|
}], config: [{
|
|
@@ -150,4 +149,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
150
149
|
}], onReUpload: [{
|
|
151
150
|
type: Output
|
|
152
151
|
}] } });
|
|
153
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtbWFwcGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2ltcG9ydC1jc3YvZmllbGQtbWFwcGluZy9maWVsZC1tYXBwaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvaW1wb3J0LWNzdi9maWVsZC1tYXBwaW5nL2ZpZWxkLW1hcHBpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUF3QyxrQkFBa0IsRUFBb0IsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFJeEgsTUFBTSxhQUFhLEdBQVE7SUFDekIsUUFBUSxFQUFFO1FBQ1IsUUFBUSxFQUFFLHNCQUFzQjtRQUNoQyxXQUFXLEVBQUUsaUJBQWlCO0tBQy9CO0NBQ0YsQ0FBQztBQU9GLE1BQU0sT0FBTyxxQkFBcUI7SUFVaEMsWUFDVSxFQUFzQixFQUN0QixvQkFBMEMsRUFDMUMsaUJBQW9DLEVBQ3JDLFFBQWtCO1FBSGpCLE9BQUUsR0FBRixFQUFFLENBQW9CO1FBQ3RCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNyQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBVDNCLG1CQUFjLEdBQVUsRUFBRSxDQUFDO1FBQzNCLGVBQVUsR0FBVSxFQUFFLENBQUM7UUFDYixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM1QixlQUFVLEdBQUUsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVF2QyxJQUFJLENBQUMsdUJBQXVCLEVBQUUs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OytHQTVJVSxxQkFBcUI7bUdBQXJCLHFCQUFxQiw4SkNsQmxDLG0wRkFxRU07OzRGRG5ETyxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1CO2lMQU9wQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUdJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybVZhbGlkYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2Zvcm0tdmFsaWRhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQXJyYXksIFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW1wb3J0Q3N2Q29uZmlnIH0gZnJvbSAnLi4vaW1wb3J0LWNzdi1jb25maWcnO1xuXG5jb25zdCBlcnJvck1lc3NhZ2VzOiBhbnkgPSB7XG4gIHByb3BlcnR5OiB7XG4gICAgcmVxdWlyZWQ6IFwiUHJvcGVydHkgaXMgcmVxdWlyZWRcIixcbiAgICB1bmF2YWlsYWJsZTogXCJEdXBsaWNhdGUgZW50cnlcIlxuICB9LFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZpZWxkLW1hcHBpbmcnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmllbGQtbWFwcGluZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpZWxkLW1hcHBpbmcuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGaWVsZE1hcHBpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIGltcG9ydE1hcHBpbmdGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBASW5wdXQoKSBkYXRhOiBhbnlbXTtcbiAgQElucHV0KCkgY29uZmlnOiBJbXBvcnRDc3ZDb25maWc7XG4gIGZpcnN0RGF0YUFycmF5OiBhbnlbXSA9IFtdO1xuICBwcm9wZXJ0aWVzOiBhbnlbXSA9IFtdO1xuICBAT3V0cHV0KCkgb25TYXZlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25SZVVwbG9hZD0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGZvcm1WYWxpZGF0b3JTZXJ2aWNlOiBGb3JtVmFsaWRhdG9yU2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgbG9jYXRpb246IExvY2F0aW9uXG4gICkge1xuICAgIHRoaXMuY3JlYXRlSW1wb3J0TWFwcGluZ0Zvcm0oKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucHJvcGVydGllcyA9IHRoaXMuY29uZmlnLnByb3BlcnRpZXM7O1xuICAgIHRoaXMucmVGZWN0b3JBdHRyaWJ1dGVzKHRoaXMuZGF0YVswXSk7XG4gIH1cblxuICBjcmVhdGVJbXBvcnRNYXBwaW5nRm9ybSgpIHtcbiAgICB0aGlzLmltcG9ydE1hcHBpbmdGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBmaWVsZHM6IHRoaXMuZmIuYXJyYXkoW10pLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGZpZWxkc0FycmF5KCk6IFVudHlwZWRGb3JtQXJyYXkge1xuICAgIHJldHVybiB0aGlzLmltcG9ydE1hcHBpbmdGb3JtLmdldCgnZmllbGRzJykgYXMgVW50eXBlZEZvcm1BcnJheTtcbiAgfVxuXG4gIGNyZWF0ZUZpZWxkKGZpZWxkOiBhbnkpOiBVbnR5cGVkRm9ybUdyb3VwIHtcbiAgICB2YXIgZmllbGRGb3JtOiBVbnR5cGVkRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBpZDogbmV3IFVudHlwZWRGb3JtQ29udHJvbChmaWVsZC5pZCksXG4gICAgICBsYWJlbDogbmV3IFVudHlwZWRGb3JtQ29udHJvbChmaWVsZC5sYWJlbCksXG4gICAgICB2YWx1ZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbChmaWVsZC52YWx1ZSksXG4gICAgICBwcm9wZXJ0eTogbmV3IFVudHlwZWRGb3JtQ29udHJvbChmaWVsZC5wcm9wZXJ0eSxcbiAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcbiAgICAgICAgICBdXG4gICAgICAgIClcbiAgICAgICksXG4gICAgICBwcm9wZXJ0eVR5cGU6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZmllbGQucHJvcGVydHlUeXBlKVxuICAgIH0pO1xuICAgIHJldHVybiBmaWVsZEZvcm07XG4gIH1cblxuICByZUZlY3RvckF0dHJpYnV0ZXMoZGF0YSkge1xuICAgIGZvciAodmFyIGsgaW4gZGF0YSkge1xuICAgICAgaWYgKGRhdGEuaGFzT3duUHJvcGVydHkoaykpIHtcbiAgICAgICAgdmFyIGRhdGFWYWx1ZSA9IHtcbiAgICAgICAgICBpZDogJycsXG4gICAgICAgICAgbGFiZWw6IGssXG4gICAgICAgICAgdmFsdWU6IGRhdGFba10sXG4gICAgICAgICAgcHJvcGVydHk6ICcnLFxuICAgICAgICAgIHByb3BlcnR5VHlwZTogJydcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5maXJzdERhdGFBcnJheS5wdXNoKGRhdGFWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZmlyc3REYXRhQXJyYXkuZm9yRWFjaCgoZWxlbWVudDogYW55LCBtYWluSW5kZXg6IGFueSkgPT4ge1xuICAgICAgZWxlbWVudC5pZCA9IG1haW5JbmRleDtcbiAgICAgIHRoaXMucHJvcGVydGllcy5maW5kKChwcm9wZXJ0eTogYW55LCBpbmRleDogYW55KSA9PiB7XG4gICAgICAgIGlmIChwcm9wZXJ0eS5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGVsZW1lbnQubGFiZWwudG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgICBlbGVtZW50LnByb3BlcnR5ID0gcHJvcGVydHkudmFsdWU7XG4gICAgICAgICAgZWxlbWVudC5wcm9wZXJ0eVR5cGUgPSBwcm9wZXJ0eS50eXBlO1xuICAgICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG5leHQoKSB7XG4gICAgdGhpcy5pbXBvcnRNYXBwaW5nRm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgaWYgKCF0aGlzLmltcG9ydE1hcHBpbmdGb3JtLnZhbGlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMub25TYXZlLmVtaXQodGhpcy5pbXBvcnRNYXBwaW5nRm9ybS52YWx1ZSk7XG4gIH1cblxuICAvKiogTWV0aG9kIHRvIGV2YWx1YXRlIGZvcm0gZmllbGRzKi9cbiAgaXNGaWVsZFZhbGlkKGZpZWxkOiBzdHJpbmcsIGZvcm06IGFueSkge1xuICAgIHJldHVybiB0aGlzLmZvcm1WYWxpZGF0b3JTZXJ2aWNlLmlzRmllbGRWYWxpZChmaWVsZCwgZm9ybSk7XG4gIH1cblxuICAvKiogTWV0aG9kIHRvIGZpbmQgZXJyb3IgaW4gZm9ybSBmaWVsZHMqL1xuICBnZXRFcnJvck1lc3NhZ2UoZmllbGQ6IHN0cmluZywgZm9ybTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybVZhbGlkYXRvclNlcnZpY2UuZ2V0RXJyb3JNZXNzYWdlKGZpZWxkLCBmb3JtLCBlcnJvck1lc3NhZ2VzKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvL0NhbGxlZCBhZnRlciBuZ0FmdGVyQ29udGVudEluaXQgd2hlbiB0aGUgY29tcG9uZW50J3MgdmlldyBoYXMgYmVlbiBpbml0aWFsaXplZC4gQXBwbGllcyB0byBjb21wb25lbnRzIG9ubHkuXG4gICAgLy9BZGQgJ2ltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCcgdG8gdGhlIGNsYXNzLlxuICAgIHNldFRpbWVvdXQoeCA9PiB7XG4gICAgICB0aGlzLmZpcnN0RGF0YUFycmF5LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmZpZWxkc0FycmF5LnB1c2godGhpcy5jcmVhdGVGaWVsZChlbGVtZW50KSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDUwMCk7XG4gIH1cblxuICB1cGRhdGVQcm9wZXJ0eVR5cGUoZXZlbnQ6IGFueSwgaW5kZXg6IGFueSk6IHZvaWQge1xuICAgIHZhciBmaWVsZCA9IHRoaXMucHJvcGVydGllcy5maW5kKChmaWVsZDogYW55KSA9PiBmaWVsZC52YWx1ZSA9PSBldmVudC52YWx1ZSk7XG4gICAgaWYgKGZpZWxkKSB7XG4gICAgICB0aGlzLmZpZWxkc0FycmF5LmNvbnRyb2xzW2luZGV4XS5nZXQoJ3Byb3BlcnR5VHlwZScpLnNldFZhbHVlKGZpZWxkLnR5cGUpO1xuICAgICAgdGhpcy51bmlxdWVWYWxpZGF0b3IoKTtcbiAgICB9XG4gIH1cblxuICB1bmlxdWVWYWxpZGF0b3IoKSB7XG4gICAgdGhpcy5maWVsZHNBcnJheS52YWx1ZS5mb3JFYWNoKChmaWVsZDogYW55LCBpbmRleDogYW55KSA9PiB7XG4gICAgICB2YXIgY29udHJvbCA9IHRoaXMuZmllbGRzQXJyYXkuY29udHJvbHNbaW5kZXhdLmdldCgncHJvcGVydHknKTtcbiAgICAgIGNvbnN0IGlzTmFtZVVuaXF1ZSA9IHRoaXMuZmllbGRzQXJyYXkudmFsdWUuZmluZChwcm9wZXJ0eURhdGEgPT5cbiAgICAgICAgcHJvcGVydHlEYXRhLnByb3BlcnR5ID09PSBjb250cm9sLnZhbHVlXG4gICAgICAgICYmIHByb3BlcnR5RGF0YS5pZCAhPSB0aGlzLmZpZWxkc0FycmF5LmNvbnRyb2xzW2luZGV4XS5nZXQoJ2lkJykudmFsdWVcbiAgICAgIClcbiAgICAgICAgPyBmYWxzZVxuICAgICAgICA6IHRydWU7XG4gICAgICBpZiAoIWlzTmFtZVVuaXF1ZSkge1xuICAgICAgICBjb250cm9sLnNldEVycm9ycyh7IHVuYXZhaWxhYmxlOiB0cnVlIH0pO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmVtb3ZlRmllbGQoaW5kZXg6IG51bWJlcikge1xuICAgIGlmIChpbmRleCA9PSAtMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmZpZWxkc0FycmF5LnJlbW92ZUF0KGluZGV4KTtcbiAgfVxuXG4gIHJlVXBsb2FkKCkge1xuICAgIHRoaXMub25SZVVwbG9hZC5lbWl0KHRydWUpO1xuICB9XG5cbn1cbiIsIjxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBjbGFzcz1cIm10LTJcIj5cbiAgPGRpdiBmeExheW91dD1cInJvdyB3cmFwXCIgY2xhc3M9XCJwYi0zXCI+XG4gICAgPGg1IGZ4RmxleD1cIjMwJVwiIGNsYXNzPVwicHJpbWFyeS1jb2xvclwiPlN1bW1hcnk8L2g1PlxuICAgIDxkaXYgZnhGbGV4PVwiNzAlXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIj5cbiAgICAgIDxoNSBjbGFzcz1cInNlY29uZGFyeS1jb2xvclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtd2VpZ2h0LWJvbGRcIj57e2RhdGEubGVuZ3RofX08L3NwYW4+XG4gICAgICA8L2g1PlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkIG1sLTJcIj4gUmVjb3JkcyBGb3VuZCBJbiBVcGxvYWRlZCBGaWxlPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2PlxuICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICA8L2Rpdj5cblxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImltcG9ydE1hcHBpbmdGb3JtXCIgKG5nU3VibWl0KT1cIm5leHQoKVwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgY2xhc3M9XCJwdC0zXCI+XG4gICAgPGg1IGNsYXNzPVwicHJpbWFyeS1jb2xvciBwYi0yXCI+UHJvcGVydGllczwvaDU+XG4gICAgPHRhYmxlIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zbSB0YWJsZS1zdHJpcGVkXCI+XG4gICAgICA8dHIgY2xhc3M9XCJ0YWJsZS1oZWFkZXItcm93XCI+XG4gICAgICAgIDx0aD5Db2x1bW4gSGVhZGVycyBGcm9tIEZpbGU8L3RoPlxuICAgICAgICA8dGg+UHJldmlldyBJbmZvcm1hdGlvbjwvdGg+XG4gICAgICAgIDx0aD5Qcm9wZXJ0eTwvdGg+XG4gICAgICA8L3RyPlxuICAgICAgPG5nLWNvbnRhaW5lciBmb3JtQXJyYXlOYW1lPVwiZmllbGRzXCI+XG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZmllbGRzQXJyYXkuY29udHJvbHM7IGxldCBpID0gaW5kZXhcIiBbZm9ybUdyb3VwTmFtZV09XCJpXCI+XG4gICAgICAgICAgPHRkPnt7IGZpZWxkLmdldCgnbGFiZWwnKS52YWx1ZSB9fTwvdGQ+XG4gICAgICAgICAgPHRkPnt7IGZpZWxkLmdldCgndmFsdWUnKS52YWx1ZSB9fTwvdGQ+XG4gICAgICAgICAgPHRkPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGZ4RmxleD1cIjEwMCVcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgICAgICAgICAgICA8bWF0LWxhYmVsPlNlbGVjdCBQcm9wZXJ0eTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBwbGFjZWhvbGRlcj1cIlNlbGVjdCBQcm9wZXJ0eVwiIGZvcm1Db250cm9sTmFtZT1cInByb3BlcnR5XCIgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInVwZGF0ZVByb3BlcnR5VHlwZSgkZXZlbnQsIGkpXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHByb3BlcnR5IG9mIHByb3BlcnRpZXNcIiBbdmFsdWVdPVwicHJvcGVydHkudmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIHt7cHJvcGVydHkubGFiZWx9fVxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCdwcm9wZXJ0eScsIGZpZWxkc0FycmF5LmNvbnRyb2xzW2ldKVwiPlxuICAgICAgICAgICAgICAgIHt7Z2V0RXJyb3JNZXNzYWdlKCdwcm9wZXJ0eScsIGZpZWxkc0FycmF5LmNvbnRyb2xzW2ldKX19XG4gICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicmVtb3ZlRmllbGQoaSlcIiAqbmdJZj1cImZpZWxkc0FycmF5Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiUmVtb3ZlIGNvbHVtblwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+cmVtb3ZlX2NpcmNsZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC90YWJsZT5cblxuICAgIDxkaXYgY2xhc3M9XCJtdC0xIGQtZmxleCBmbGV4LXJvdyBnYXAtMiBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwibXQtMiBtci0yXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJsb2NhdGlvbi5iYWNrKClcIj5cbiAgICAgICAgQ2FuY2VsXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwibXQtMiBtci0yIHByaW1hcnktY29sb3JcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlVXBsb2FkKClcIj5cbiAgICAgICAgPG1hdC1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRcIj5cbiAgICAgICAgICAgIGZpbGVfdXBsb2FkXG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICBSZS11cGxvYWRcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJtdC0yIHByaW1hcnktYmdcIiB0eXBlPVwic3VibWl0XCI+XG4gICAgICAgIE5leHRcbiAgICAgICAgPG1hdC1pY29uPlxuICAgICAgICAgIGNoZXZyb25fcmlnaHRcbiAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L2Rpdj4iXX0=
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtbWFwcGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2ltcG9ydC1jc3YvZmllbGQtbWFwcGluZy9maWVsZC1tYXBwaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvaW1wb3J0LWNzdi9maWVsZC1tYXBwaW5nL2ZpZWxkLW1hcHBpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUF3QyxrQkFBa0IsRUFBb0IsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7OztBQUl4SCxNQUFNLGFBQWEsR0FBUTtJQUN6QixRQUFRLEVBQUU7UUFDUixRQUFRLEVBQUUsc0JBQXNCO1FBQ2hDLFdBQVcsRUFBRSxpQkFBaUI7S0FDL0I7Q0FDRixDQUFDO0FBT0YsTUFBTSxPQUFPLHFCQUFxQjtJQVVoQyxZQUNVLEVBQXNCLEVBQ3RCLG9CQUEwQyxFQUMxQyxpQkFBb0MsRUFDckMsUUFBa0I7UUFIakIsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7UUFDdEIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3JDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFUM0IsbUJBQWMsR0FBVSxFQUFFLENBQUM7UUFDM0IsZUFBVSxHQUFVLEVBQUUsQ0FBQztRQUNiLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVCLGVBQVUsR0FBRSxJQUFJLFlBQVksRUFBRSxDQUFDO1FBUXZDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxD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K0dBNUlVLHFCQUFxQjttR0FBckIscUJBQXFCLDhKQ2xCbEMsZy9GQXVFTTs7NEZEckRPLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxtQkFBbUI7aUxBT3BCLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR0ksTUFBTTtzQkFBZixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtVmFsaWRhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvZm9ybS12YWxpZGF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1BcnJheSwgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbXBvcnRDc3ZDb25maWcgfSBmcm9tICcuLi9pbXBvcnQtY3N2LWNvbmZpZyc7XG5cbmNvbnN0IGVycm9yTWVzc2FnZXM6IGFueSA9IHtcbiAgcHJvcGVydHk6IHtcbiAgICByZXF1aXJlZDogXCJQcm9wZXJ0eSBpcyByZXF1aXJlZFwiLFxuICAgIHVuYXZhaWxhYmxlOiBcIkR1cGxpY2F0ZSBlbnRyeVwiXG4gIH0sXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZmllbGQtbWFwcGluZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWVsZC1tYXBwaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmllbGQtbWFwcGluZy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZpZWxkTWFwcGluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgaW1wb3J0TWFwcGluZ0Zvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIGRhdGE6IGFueVtdO1xuICBASW5wdXQoKSBjb25maWc6IEltcG9ydENzdkNvbmZpZztcbiAgZmlyc3REYXRhQXJyYXk6IGFueVtdID0gW107XG4gIHByb3BlcnRpZXM6IGFueVtdID0gW107XG4gIEBPdXRwdXQoKSBvblNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvblJlVXBsb2FkPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgZm9ybVZhbGlkYXRvclNlcnZpY2U6IEZvcm1WYWxpZGF0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyBsb2NhdGlvbjogTG9jYXRpb25cbiAgKSB7XG4gICAgdGhpcy5jcmVhdGVJbXBvcnRNYXBwaW5nRm9ybSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wcm9wZXJ0aWVzID0gdGhpcy5jb25maWcucHJvcGVydGllczs7XG4gICAgdGhpcy5yZUZlY3RvckF0dHJpYnV0ZXModGhpcy5kYXRhWzBdKTtcbiAgfVxuXG4gIGNyZWF0ZUltcG9ydE1hcHBpbmdGb3JtKCkge1xuICAgIHRoaXMuaW1wb3J0TWFwcGluZ0Zvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGZpZWxkczogdGhpcy5mYi5hcnJheShbXSksXG4gICAgfSk7XG4gIH1cblxuICBnZXQgZmllbGRzQXJyYXkoKTogVW50eXBlZEZvcm1BcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuaW1wb3J0TWFwcGluZ0Zvcm0uZ2V0KCdmaWVsZHMnKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xuICB9XG5cbiAgY3JlYXRlRmllbGQoZmllbGQ6IGFueSk6IFVudHlwZWRGb3JtR3JvdXAge1xuICAgIHZhciBmaWVsZEZvcm06IFVudHlwZWRGb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGlkOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKGZpZWxkLmlkKSxcbiAgICAgIGxhYmVsOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKGZpZWxkLmxhYmVsKSxcbiAgICAgIHZhbHVlOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKGZpZWxkLnZhbHVlKSxcbiAgICAgIHByb3BlcnR5OiBuZXcgVW50eXBlZEZvcm1Db250cm9sKGZpZWxkLnByb3BlcnR5LFxuICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoXG4gICAgICAgICAgW1xuICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxuICAgICAgICAgIF1cbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIHByb3BlcnR5VHlwZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbChmaWVsZC5wcm9wZXJ0eVR5cGUpXG4gICAgfSk7XG4gICAgcmV0dXJuIGZpZWxkRm9ybTtcbiAgfVxuXG4gIHJlRmVjdG9yQXR0cmlidXRlcyhkYXRhKSB7XG4gICAgZm9yICh2YXIgayBpbiBkYXRhKSB7XG4gICAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShrKSkge1xuICAgICAgICB2YXIgZGF0YVZhbHVlID0ge1xuICAgICAgICAgIGlkOiAnJyxcbiAgICAgICAgICBsYWJlbDogayxcbiAgICAgICAgICB2YWx1ZTogZGF0YVtrXSxcbiAgICAgICAgICBwcm9wZXJ0eTogJycsXG4gICAgICAgICAgcHJvcGVydHlUeXBlOiAnJ1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZpcnN0RGF0YUFycmF5LnB1c2goZGF0YVZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5maXJzdERhdGFBcnJheS5mb3JFYWNoKChlbGVtZW50OiBhbnksIG1haW5JbmRleDogYW55KSA9PiB7XG4gICAgICBlbGVtZW50LmlkID0gbWFpbkluZGV4O1xuICAgICAgdGhpcy5wcm9wZXJ0aWVzLmZpbmQoKHByb3BlcnR5OiBhbnksIGluZGV4OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHByb3BlcnR5LmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZWxlbWVudC5sYWJlbC50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICAgIGVsZW1lbnQucHJvcGVydHkgPSBwcm9wZXJ0eS52YWx1ZTtcbiAgICAgICAgICBlbGVtZW50LnByb3BlcnR5VHlwZSA9IHByb3BlcnR5LnR5cGU7XG4gICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICB0aGlzLmltcG9ydE1hcHBpbmdGb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICBpZiAoIXRoaXMuaW1wb3J0TWFwcGluZ0Zvcm0udmFsaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vblNhdmUuZW1pdCh0aGlzLmltcG9ydE1hcHBpbmdGb3JtLnZhbHVlKTtcbiAgfVxuXG4gIC8qKiBNZXRob2QgdG8gZXZhbHVhdGUgZm9ybSBmaWVsZHMqL1xuICBpc0ZpZWxkVmFsaWQoZmllbGQ6IHN0cmluZywgZm9ybTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybVZhbGlkYXRvclNlcnZpY2UuaXNGaWVsZFZhbGlkKGZpZWxkLCBmb3JtKTtcbiAgfVxuXG4gIC8qKiBNZXRob2QgdG8gZmluZCBlcnJvciBpbiBmb3JtIGZpZWxkcyovXG4gIGdldEVycm9yTWVzc2FnZShmaWVsZDogc3RyaW5nLCBmb3JtOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtVmFsaWRhdG9yU2VydmljZS5nZXRFcnJvck1lc3NhZ2UoZmllbGQsIGZvcm0sIGVycm9yTWVzc2FnZXMpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vQ2FsbGVkIGFmdGVyIG5nQWZ0ZXJDb250ZW50SW5pdCB3aGVuIHRoZSBjb21wb25lbnQncyB2aWV3IGhhcyBiZWVuIGluaXRpYWxpemVkLiBBcHBsaWVzIHRvIGNvbXBvbmVudHMgb25seS5cbiAgICAvL0FkZCAnaW1wbGVtZW50cyBBZnRlclZpZXdJbml0JyB0byB0aGUgY2xhc3MuXG4gICAgc2V0VGltZW91dCh4ID0+IHtcbiAgICAgIHRoaXMuZmlyc3REYXRhQXJyYXkuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZmllbGRzQXJyYXkucHVzaCh0aGlzLmNyZWF0ZUZpZWxkKGVsZW1lbnQpKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSwgNTAwKTtcbiAgfVxuXG4gIHVwZGF0ZVByb3BlcnR5VHlwZShldmVudDogYW55LCBpbmRleDogYW55KTogdm9pZCB7XG4gICAgdmFyIGZpZWxkID0gdGhpcy5wcm9wZXJ0aWVzLmZpbmQoKGZpZWxkOiBhbnkpID0+IGZpZWxkLnZhbHVlID09IGV2ZW50LnZhbHVlKTtcbiAgICBpZiAoZmllbGQpIHtcbiAgICAgIHRoaXMuZmllbGRzQXJyYXkuY29udHJvbHNbaW5kZXhdLmdldCgncHJvcGVydHlUeXBlJykuc2V0VmFsdWUoZmllbGQudHlwZSk7XG4gICAgICB0aGlzLnVuaXF1ZVZhbGlkYXRvcigpO1xuICAgIH1cbiAgfVxuXG4gIHVuaXF1ZVZhbGlkYXRvcigpIHtcbiAgICB0aGlzLmZpZWxkc0FycmF5LnZhbHVlLmZvckVhY2goKGZpZWxkOiBhbnksIGluZGV4OiBhbnkpID0+IHtcbiAgICAgIHZhciBjb250cm9sID0gdGhpcy5maWVsZHNBcnJheS5jb250cm9sc1tpbmRleF0uZ2V0KCdwcm9wZXJ0eScpO1xuICAgICAgY29uc3QgaXNOYW1lVW5pcXVlID0gdGhpcy5maWVsZHNBcnJheS52YWx1ZS5maW5kKHByb3BlcnR5RGF0YSA9PlxuICAgICAgICBwcm9wZXJ0eURhdGEucHJvcGVydHkgPT09IGNvbnRyb2wudmFsdWVcbiAgICAgICAgJiYgcHJvcGVydHlEYXRhLmlkICE9IHRoaXMuZmllbGRzQXJyYXkuY29udHJvbHNbaW5kZXhdLmdldCgnaWQnKS52YWx1ZVxuICAgICAgKVxuICAgICAgICA/IGZhbHNlXG4gICAgICAgIDogdHJ1ZTtcbiAgICAgIGlmICghaXNOYW1lVW5pcXVlKSB7XG4gICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKHsgdW5hdmFpbGFibGU6IHRydWUgfSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY29udHJvbC5zZXRFcnJvcnMobnVsbCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZW1vdmVGaWVsZChpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKGluZGV4ID09IC0xKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZmllbGRzQXJyYXkucmVtb3ZlQXQoaW5kZXgpO1xuICB9XG5cbiAgcmVVcGxvYWQoKSB7XG4gICAgdGhpcy5vblJlVXBsb2FkLmVtaXQodHJ1ZSk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBtdC0yXCI+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgZmxleC13cmFwIHBiLTNcIj5cbiAgICA8aDUgc3R5bGU9XCJmbGV4OiAwIDAgMzAlO1wiIGNsYXNzPVwicHJpbWFyeS1jb2xvclwiPlN1bW1hcnk8L2g1PlxuICAgIDxkaXYgc3R5bGU9XCJmbGV4OiAwIDAgNzAlO1wiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGg1IGNsYXNzPVwic2Vjb25kYXJ5LWNvbG9yIG1iLTBcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXdlaWdodC1ib2xkXCI+e3tkYXRhLmxlbmd0aH19ICZuYnNwOzwvc3Bhbj5cbiAgICAgIDwvaDU+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtbXV0ZWQgbWwtMlwiPiBSZWNvcmRzIEZvdW5kIEluIFVwbG9hZGVkIEZpbGU8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXY+XG4gICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gIDwvZGl2PlxuXG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiaW1wb3J0TWFwcGluZ0Zvcm1cIiAobmdTdWJtaXQpPVwibmV4dCgpXCIgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gcHQtM1wiPlxuICAgIDxoNSBjbGFzcz1cInByaW1hcnktY29sb3IgcGItMlwiPlByb3BlcnRpZXM8L2g1PlxuICAgIDx0YWJsZSBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIGNsYXNzPVwidGFibGUgdGFibGUtc20gdGFibGUtc3RyaXBlZFwiPlxuICAgICAgPHRyIGNsYXNzPVwidGFibGUtaGVhZGVyLXJvd1wiPlxuICAgICAgICA8dGg+Q29sdW1uIEhlYWRlcnMgRnJvbSBGaWxlPC90aD5cbiAgICAgICAgPHRoPlByZXZpZXcgSW5mb3JtYXRpb248L3RoPlxuICAgICAgICA8dGg+UHJvcGVydHk8L3RoPlxuICAgICAgPC90cj5cbiAgICAgIDxuZy1jb250YWluZXIgZm9ybUFycmF5TmFtZT1cImZpZWxkc1wiPlxuICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZpZWxkc0FycmF5LmNvbnRyb2xzOyBsZXQgaSA9IGluZGV4XCIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiPlxuICAgICAgICAgIDx0ZD57eyBmaWVsZC5nZXQoJ2xhYmVsJykudmFsdWUgfX08L3RkPlxuICAgICAgICAgIDx0ZD57eyBmaWVsZC5nZXQoJ3ZhbHVlJykudmFsdWUgfX08L3RkPlxuICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZsZXgtZ3Jvdy0xXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlNlbGVjdCBQcm9wZXJ0eTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IHBsYWNlaG9sZGVyPVwiU2VsZWN0IFByb3BlcnR5XCIgZm9ybUNvbnRyb2xOYW1lPVwicHJvcGVydHlcIiByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJ1cGRhdGVQcm9wZXJ0eVR5cGUoJGV2ZW50LCBpKVwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHByb3BlcnR5IG9mIHByb3BlcnRpZXNcIiBbdmFsdWVdPVwicHJvcGVydHkudmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3twcm9wZXJ0eS5sYWJlbH19XG4gICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJpc0ZpZWxkVmFsaWQoJ3Byb3BlcnR5JywgZmllbGRzQXJyYXkuY29udHJvbHNbaV0pXCI+XG4gICAgICAgICAgICAgICAgICB7e2dldEVycm9yTWVzc2FnZSgncHJvcGVydHknLCBmaWVsZHNBcnJheS5jb250cm9sc1tpXSl9fVxuICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiByb2xlPVwiYnV0dG9uXCIgY2xhc3M9XCJtcy0zIHRleHQtZGFuZ2VyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicmVtb3ZlRmllbGQoaSlcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZmllbGRzQXJyYXkubGVuZ3RoID4gMVwiIG1hdFRvb2x0aXA9XCJSZW1vdmUgY29sdW1uXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMS4yNWVtO1wiPnJlbW92ZV9jaXJjbGU8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGFibGU+XG5cbiAgICA8ZGl2IGNsYXNzPVwibXQtMSBkLWZsZXggZmxleC1yb3cgZ2FwLTIganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cIm10LTIgbXItMlwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwibG9jYXRpb24uYmFjaygpXCI+XG4gICAgICAgIENhbmNlbFxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cIm10LTIgbXItMiBwcmltYXJ5LWNvbG9yXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZVVwbG9hZCgpXCI+XG4gICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkXCI+XG4gICAgICAgICAgICBmaWxlX3VwbG9hZFxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgUmUtdXBsb2FkXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwibXQtMiBwcmltYXJ5LWJnXCIgdHlwZT1cInN1Ym1pdFwiPlxuICAgICAgICBOZXh0XG4gICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICBjaGV2cm9uX3JpZ2h0XG4gICAgICAgIDwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuPC9kaXY+Il19
|
|
@@ -7,17 +7,16 @@ import * as i1 from "../core/alert.service";
|
|
|
7
7
|
import * as i2 from "../core/error-handler.service";
|
|
8
8
|
import * as i3 from "../core/http.service";
|
|
9
9
|
import * as i4 from "@angular/common";
|
|
10
|
-
import * as i5 from "@angular/
|
|
11
|
-
import * as i6 from "@angular/material/
|
|
12
|
-
import * as i7 from "@angular/material/
|
|
13
|
-
import * as i8 from "@angular/material/
|
|
14
|
-
import * as i9 from "
|
|
15
|
-
import * as i10 from "
|
|
16
|
-
import * as i11 from "./
|
|
17
|
-
import * as i12 from "./
|
|
18
|
-
import * as i13 from "./import-
|
|
19
|
-
import * as i14 from "./import-
|
|
20
|
-
import * as i15 from "./data-import/data-import.component";
|
|
10
|
+
import * as i5 from "@angular/material/button";
|
|
11
|
+
import * as i6 from "@angular/material/icon";
|
|
12
|
+
import * as i7 from "@angular/material/card";
|
|
13
|
+
import * as i8 from "@angular/material/tooltip";
|
|
14
|
+
import * as i9 from "../file-dropper/file-dropper.component";
|
|
15
|
+
import * as i10 from "./field-mapping/field-mapping.component";
|
|
16
|
+
import * as i11 from "./failed-items-list/failed-items-list.component";
|
|
17
|
+
import * as i12 from "./import-history-list/import-history-list.component";
|
|
18
|
+
import * as i13 from "./import-success/import-success.component";
|
|
19
|
+
import * as i14 from "./data-import/data-import.component";
|
|
21
20
|
let ImportCsvComponent = class ImportCsvComponent {
|
|
22
21
|
constructor(alertService, errorHandler, http, datePipe) {
|
|
23
22
|
this.alertService = alertService;
|
|
@@ -102,13 +101,14 @@ let ImportCsvComponent = class ImportCsvComponent {
|
|
|
102
101
|
const data = reader.result;
|
|
103
102
|
selectedFile = XLSX.read(data, {
|
|
104
103
|
type: 'binary',
|
|
105
|
-
|
|
104
|
+
raw: true,
|
|
106
105
|
});
|
|
107
106
|
jsonData = selectedFile.SheetNames.reduce((initial, name) => {
|
|
108
107
|
const sheet = selectedFile.Sheets[name];
|
|
109
108
|
initial = XLSX.utils.sheet_to_json(sheet, {
|
|
110
109
|
header: 0,
|
|
111
110
|
defval: "",
|
|
111
|
+
raw: false,
|
|
112
112
|
});
|
|
113
113
|
return initial;
|
|
114
114
|
}, {});
|
|
@@ -193,7 +193,7 @@ let ImportCsvComponent = class ImportCsvComponent {
|
|
|
193
193
|
this.currentStep = 1;
|
|
194
194
|
}
|
|
195
195
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ImportCsvComponent, deps: [{ token: i1.AlertService }, { token: i2.ErrorHandlerService }, { token: i3.HttpService }, { token: i4.DatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
196
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ImportCsvComponent, selector: "app-import-csv", inputs: { config: "config" }, ngImport: i0, template: "<div
|
|
196
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ImportCsvComponent, selector: "app-import-csv", inputs: { config: "config" }, ngImport: i0, template: "<div class=\"d-flex flex-column\">\n <mat-card class=\"w-100 p-0\">\n <mat-card-content class=\"d-flex flex-row flex-wrap align-items-center justify-content-center w-100 primary-color\">\n <h4 style=\"flex: 0 0 20%;\" class=\"ml-2\">\n Step {{step.step}}: <span class=\"normal-font-weight\">{{step?.title}}</span>\n </h4>\n <h3 class=\"d-flex align-items-center justify-content-center gap-3 text-dark\" style=\"flex: 0 0 80%;\">\n <span>{{config?.title}} Import</span>\n <a *ngIf=\"config?.sampleFile && currentStep == 1\" style=\"color: inherit;\" [download]=\"config?.sampleFile?.name\"\n target=\"_blank\" [href]=\"config?.sampleFile?.path\" matTooltip=\"Download Sample file\" matTooltipPosition=\"below\">\n <button mat-stroked-button class=\"primary-color\">\n <mat-icon>\n download\n </mat-icon>\n Sample File\n </button>\n </a>\n </h3>\n </mat-card-content>\n </mat-card>\n <div class=\"w-100 mt-2\">\n <div class=\"row g-3\" *ngIf=\"currentStep==1 || currentStep == 2 || currentStep == 4\">\n <div class=\"col-12 col-md-8\">\n <mat-card class=\"w-100\">\n <mat-card-content class=\"d-flex flex-column\">\n <div class=\"w-100\">\n <section class=\"d-flex flex-column w-100\" *ngIf=\"config.importType && !this.fileData.length && !this.failedItems.length\">\n <h5 class=\"primary-color pb-3\">File Upload</h5>\n <app-file-dropper class=\"d-block w-100 mb-2 drop-section\" [config]=\"filesConfig\" [fileArray]=\"filesList\"\n (fileChanged)=\"fileChanged($event)\">\n </app-file-dropper>\n <app-import-history-list *ngIf=\"config.importHistory.isEnabled\" [config]=\"config\">\n </app-import-history-list>\n </section>\n <app-field-mapping class=\"w-100\" *ngIf=\"this.fileData.length > 0 && !this.failedItems.length\"\n [data]=\"fileData\" [config]=\"config\" (onSave)=\"mappingProcessed($event)\" (onReUpload)=\"reUpload()\">\n </app-field-mapping>\n <app-failed-items-list class=\"w-100\" *ngIf=\"this.failedItems.length > 0\" [failedItems]=\"failedItems\"\n [selectedFields]=\"selectedFields\" (onReUpload)=\"reUpload()\"></app-failed-items-list>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n <div class=\"col-12 col-md-4\">\n <mat-card class=\"w-100\">\n <mat-card-content class=\"d-flex flex-column\">\n <h5 class=\"primary-color pb-3\">Instructions & Requirements</h5>\n <div class=\"text-muted\">\n <p>\n 1. Please use this yyyy/MM/dd date format for all the date fields. Otherwise your date fields will be\n incorrect or not will be accepted. Ex: 2021/09/27\n </p>\n <ng-container *ngIf=\"config?.customErrorMessages\">\n <ng-container *ngIf=\"config?.isRenderCustomErrorMessagesInHtml; else renderPlainText\">\n <ng-container *ngFor=\"let message of config?.customErrorMessages\">\n <div [innerHtml]=\"message\"></div>\n </ng-container>\n </ng-container>\n <ng-template #renderPlainText>\n <p *ngFor=\"let message of config?.customErrorMessages\">\n {{message}}\n </p>\n </ng-template>\n </ng-container>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n </div>\n <div class=\"d-flex flex-column p-3\" *ngIf=\"currentStep==3 || currentStep == 5\">\n <app-data-import [step]=\"step\"></app-data-import>\n </div>\n <div class=\"d-flex flex-column p-3\" *ngIf=\"currentStep == 6\">\n <app-import-success [data]=\"result\" [config]=\"config\"></app-import-success>\n </div>\n </div>\n</div>\n", styles: [".drop-section{width:100%!important}.mat-card-title{margin:0!important}.clickable-card{width:100%}.normal-font-weight{font-weight:200!important}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i7.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i9.FileDropperComponent, selector: "app-file-dropper", inputs: ["fileArray", "config", "styles"], outputs: ["fileChanged"] }, { kind: "component", type: i10.FieldMappingComponent, selector: "app-field-mapping", inputs: ["data", "config"], outputs: ["onSave", "onReUpload"] }, { kind: "component", type: i11.FailedItemsListComponent, selector: "app-failed-items-list", inputs: ["failedItems", "selectedFields"], outputs: ["onReUpload"] }, { kind: "component", type: i12.ImportHistoryListComponent, selector: "app-import-history-list", inputs: ["config"] }, { kind: "component", type: i13.ImportSuccessComponent, selector: "app-import-success", inputs: ["data", "config"] }, { kind: "component", type: i14.DataImportComponent, selector: "app-data-import", inputs: ["step"] }] }); }
|
|
197
197
|
};
|
|
198
198
|
ImportCsvComponent = __decorate([
|
|
199
199
|
UntilDestroy()
|
|
@@ -201,8 +201,8 @@ ImportCsvComponent = __decorate([
|
|
|
201
201
|
export { ImportCsvComponent };
|
|
202
202
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ImportCsvComponent, decorators: [{
|
|
203
203
|
type: Component,
|
|
204
|
-
args: [{ selector: 'app-import-csv', template: "<div
|
|
204
|
+
args: [{ selector: 'app-import-csv', template: "<div class=\"d-flex flex-column\">\n <mat-card class=\"w-100 p-0\">\n <mat-card-content class=\"d-flex flex-row flex-wrap align-items-center justify-content-center w-100 primary-color\">\n <h4 style=\"flex: 0 0 20%;\" class=\"ml-2\">\n Step {{step.step}}: <span class=\"normal-font-weight\">{{step?.title}}</span>\n </h4>\n <h3 class=\"d-flex align-items-center justify-content-center gap-3 text-dark\" style=\"flex: 0 0 80%;\">\n <span>{{config?.title}} Import</span>\n <a *ngIf=\"config?.sampleFile && currentStep == 1\" style=\"color: inherit;\" [download]=\"config?.sampleFile?.name\"\n target=\"_blank\" [href]=\"config?.sampleFile?.path\" matTooltip=\"Download Sample file\" matTooltipPosition=\"below\">\n <button mat-stroked-button class=\"primary-color\">\n <mat-icon>\n download\n </mat-icon>\n Sample File\n </button>\n </a>\n </h3>\n </mat-card-content>\n </mat-card>\n <div class=\"w-100 mt-2\">\n <div class=\"row g-3\" *ngIf=\"currentStep==1 || currentStep == 2 || currentStep == 4\">\n <div class=\"col-12 col-md-8\">\n <mat-card class=\"w-100\">\n <mat-card-content class=\"d-flex flex-column\">\n <div class=\"w-100\">\n <section class=\"d-flex flex-column w-100\" *ngIf=\"config.importType && !this.fileData.length && !this.failedItems.length\">\n <h5 class=\"primary-color pb-3\">File Upload</h5>\n <app-file-dropper class=\"d-block w-100 mb-2 drop-section\" [config]=\"filesConfig\" [fileArray]=\"filesList\"\n (fileChanged)=\"fileChanged($event)\">\n </app-file-dropper>\n <app-import-history-list *ngIf=\"config.importHistory.isEnabled\" [config]=\"config\">\n </app-import-history-list>\n </section>\n <app-field-mapping class=\"w-100\" *ngIf=\"this.fileData.length > 0 && !this.failedItems.length\"\n [data]=\"fileData\" [config]=\"config\" (onSave)=\"mappingProcessed($event)\" (onReUpload)=\"reUpload()\">\n </app-field-mapping>\n <app-failed-items-list class=\"w-100\" *ngIf=\"this.failedItems.length > 0\" [failedItems]=\"failedItems\"\n [selectedFields]=\"selectedFields\" (onReUpload)=\"reUpload()\"></app-failed-items-list>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n <div class=\"col-12 col-md-4\">\n <mat-card class=\"w-100\">\n <mat-card-content class=\"d-flex flex-column\">\n <h5 class=\"primary-color pb-3\">Instructions & Requirements</h5>\n <div class=\"text-muted\">\n <p>\n 1. Please use this yyyy/MM/dd date format for all the date fields. Otherwise your date fields will be\n incorrect or not will be accepted. Ex: 2021/09/27\n </p>\n <ng-container *ngIf=\"config?.customErrorMessages\">\n <ng-container *ngIf=\"config?.isRenderCustomErrorMessagesInHtml; else renderPlainText\">\n <ng-container *ngFor=\"let message of config?.customErrorMessages\">\n <div [innerHtml]=\"message\"></div>\n </ng-container>\n </ng-container>\n <ng-template #renderPlainText>\n <p *ngFor=\"let message of config?.customErrorMessages\">\n {{message}}\n </p>\n </ng-template>\n </ng-container>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n </div>\n <div class=\"d-flex flex-column p-3\" *ngIf=\"currentStep==3 || currentStep == 5\">\n <app-data-import [step]=\"step\"></app-data-import>\n </div>\n <div class=\"d-flex flex-column p-3\" *ngIf=\"currentStep == 6\">\n <app-import-success [data]=\"result\" [config]=\"config\"></app-import-success>\n </div>\n </div>\n</div>\n", styles: [".drop-section{width:100%!important}.mat-card-title{margin:0!important}.clickable-card{width:100%}.normal-font-weight{font-weight:200!important}\n"] }]
|
|
205
205
|
}], ctorParameters: () => [{ type: i1.AlertService }, { type: i2.ErrorHandlerService }, { type: i3.HttpService }, { type: i4.DatePipe }], propDecorators: { config: [{
|
|
206
206
|
type: Input
|
|
207
207
|
}] } });
|
|
208
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LWNzdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2ltcG9ydC1jc3YvaW1wb3J0LWNzdi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2ltcG9ydC1jc3YvaW1wb3J0LWNzdi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBR0EsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUd6RCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVdEIsSUFBTSxrQkFBa0IsR0FBeEIsTUFBTSxrQkFBa0I7SUEwRDdCLFlBQ1UsWUFBMEIsRUFDMUIsWUFBaUMsRUFDakMsSUFBaUIsRUFDakIsUUFBa0I7UUFIbEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQTFENUIsY0FBUyxHQUFVLEVBQUUsQ0FBQztRQUN0QixTQUFJLEdBQVUsRUFBRSxDQUFDO1FBQ2pCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIseUJBQW9CLEdBQVksS0FBSyxDQUFDO1FBRXRDLGFBQVEsR0FBVSxFQUFFLENBQUM7UUFDckIsZ0JBQVcsR0FBVSxFQUFFLENBQUM7UUFDeEIsbUJBQWMsR0FBVSxFQUFFLENBQUM7UUFDM0IsZ0JBQVcsR0FBUTtZQUNqQjtnQkFDRSxFQUFFLEVBQUUsQ0FBQztnQkFDTCxJQUFJLEVBQUUsQ0FBQztnQkFDUCxLQUFLLEVBQUUsUUFBUTtn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QUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQzsrR0E1TFUsa0JBQWtCO21HQUFsQixrQkFBa0Isb0ZDakIvQixtcUlBNkVNOztBRDVETyxrQkFBa0I7SUFQOUIsWUFBWSxFQUFFO0dBT0Ysa0JBQWtCLENBOEw5Qjs7NEZBOUxZLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxnQkFBZ0I7b0tBTWpCLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZpZXdlckNvbmZpZyB9IGZyb20gJy4uL2RvY3VtZW50LXZpZXdlci92aWV3ZXItY29uZmlnLm1vZGVsJztcbmltcG9ydCB7IEZpbGVEcm9wcGVyQ29uZmlnIH0gZnJvbSAnLi4vZmlsZS1kcm9wcGVyL2ZpbGUtZHJvcHBlci5tb2RlbCc7XG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4uL2NvcmUvaHR0cC5zZXJ2aWNlJztcbmltcG9ydCB7IFVudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL2FsZXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRXJyb3JIYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL2NvcmUvZXJyb3ItaGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeCc7XG5pbXBvcnQgeyBJbXBvcnRDc3ZDb25maWcgfSBmcm9tICcuL2ltcG9ydC1jc3YtY29uZmlnJztcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuQFVudGlsRGVzdHJveSgpXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1pbXBvcnQtY3N2JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ltcG9ydC1jc3YuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbXBvcnQtY3N2LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSW1wb3J0Q3N2Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcmVzdWx0OiBhbnk7XG4gIEBJbnB1dCgpIGNvbmZpZzogSW1wb3J0Q3N2Q29uZmlnO1xuICBmaWxlc0NvbmZpZzogRmlsZURyb3BwZXJDb25maWc7XG4gIGZpbGVzTGlzdDogYW55W10gPSBbXTtcbiAgZGF0YTogYW55W10gPSBbXTtcbiAgaXNVcGxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0ltcG9ydFR5cGVTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuICB2aWV3ZXJDb25maWc6IFZpZXdlckNvbmZpZztcbiAgZmlsZURhdGE6IGFueVtdID0gW107XG4gIGZhaWxlZEl0ZW1zOiBhbnlbXSA9IFtdO1xuICBzZWxlY3RlZEZpZWxkczogYW55W10gPSBbXTtcbiAgaW1wb3J0U3RlcHM6IGFueSA9IFtcbiAgICB7XG4gICAgICBpZDogMSxcbiAgICAgIHN0ZXA6IDEsXG4gICAgICB0aXRsZTogJ1VwbG9hZCcsXG4gICAgICBwcm9ncmVzc1RpdGxlOiAnJyxcbiAgICAgIHByb2dyZXNzRGVzY3JpcHRpb246ICcnXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogMixcbiAgICAgIHN0ZXA6IDIsXG4gICAgICB0aXRsZTogJ0ZpZWxkIE1hcHBpbmdzJyxcbiAgICAgIHByb2dyZXNzVGl0bGU6ICcnLFxuICAgICAgcHJvZ3Jlc3NEZXNjcmlwdGlvbjogJydcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAzLFxuICAgICAgc3RlcDogMyxcbiAgICAgIHRpdGxlOiAnRGF0YSBWYWxpZGF0aW9uJyxcbiAgICAgIHByb2dyZXNzVGl0bGU6ICdEYXRhIEJlaW5nIFZhbGlkYXRlZCcsXG4gICAgICBwcm9ncmVzc0Rlc2NyaXB0aW9uOiAnVGhlIGRhdGEgaXMgY3VycmVudGx5IGJlaW5nIHZhbGlkYXRlZCBhbmQgY2hlY2tlZCBmb3IgZXJyb3JzLCBwbGVhc2UgZG8gbm90IG5hdmlnYXRlIGF3YXkgZnJvbSB0aGlzIHBhZ2UuICdcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiA0LFxuICAgICAgc3RlcDogMyxcbiAgICAgIHRpdGxlOiAnRGF0YSBWYWxpZGF0aW9uICYgRXJyb3JzJyxcbiAgICAgIHByb2dyZXNzVGl0bGU6ICcnLFxuICAgICAgcHJvZ3Jlc3NEZXNjcmlwdGlvbjogJydcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiA1LFxuICAgICAgc3RlcDogNCxcbiAgICAgIHRpdGxlOiAnRGF0YSBJbXBvcnRpbmcnLFxuICAgICAgcHJvZ3Jlc3NUaXRsZTogJ0RhdGEgQmVpbmcgSW1wb3J0ZWQnLFxuICAgICAgcHJvZ3Jlc3NEZXNjcmlwdGlvbjogJ1RoZSBkYXRhIGlzIGN1cnJlbnRseSBiZWluZyBpbXBvcnRlZCBhbmQgc2F2ZWQsIHBsZWFzZSBkbyBub3QgbmF2aWdhdGUgYXdheSBmcm9tIHRoaXMgcGFnZS4gQWZ0ZXIgdGhlIGltcG9ydCBpcyBjb21wbGV0ZWQsIHlvdSB3aWxsIGJlIHJlZGlyZWN0ZWQgdG8gYSBwYWdlIHdpdGggdGhlIGltcG9ydGVkIHJlY29yZHMuJ1xuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IDYsXG4gICAgICBzdGVwOiA1LFxuICAgICAgdGl0bGU6ICdTdWNjZXNzIFBhZ2UgJiBEYXRhIFByZXZpZXcnLFxuICAgICAgcHJvZ3Jlc3NUaXRsZTogJycsXG4gICAgICBwcm9ncmVzc0Rlc2NyaXB0aW9uOiAnJ1xuICAgIH0sXG4gIF07XG4gIGN1cnJlbnRTdGVwOiBhbnkgPSAxO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlcnJvckhhbmRsZXI6IEVycm9ySGFuZGxlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwU2VydmljZSxcbiAgICBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZVxuICApIHtcbiAgICB0aGlzLmZpbGVzQ29uZmlnID0ge1xuICAgICAgZmlsZUlkOiBcImZpbGVcIixcbiAgICAgIGNvbnRhaW5lcklkOiBcImZpbGVDb250YWluZXJcIixcbiAgICAgIHN0eWxlczoge1xuICAgICAgICBoZWlnaHQ6IFwiMjAwcHhcIlxuICAgICAgfSxcbiAgICAgIGFjY2VwdEZpbGU6ICcuY3N2JyxcbiAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgIG1heFNpemU6IDEwLFxuICAgICAgYWNjZXB0RmlsZVRleHQ6IFwiLmNzdlwiXG4gICAgfTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICB9XG5cbiAgZ2V0IHN0ZXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW1wb3J0U3RlcHMuZmluZChzdGVwID0+IHN0ZXAuaWQgPT0gdGhpcy5jdXJyZW50U3RlcCk7XG4gIH1cblxuICBhc3luYyBmaWxlQ2hhbmdlZChldmVudDogYW55KSB7XG4gICAgbGV0IHNlbGVjdGVkRmlsZSA9IG51bGw7XG4gICAgbGV0IGpzb25EYXRhID0gbnVsbDtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIGNvbnN0IGZpbGUgPSBldmVudFswXTtcbiAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHJlYWRlci5yZXN1bHQ7XG4gICAgICBzZWxlY3RlZEZpbGUgPSBYTFNYLnJlYWQoZGF0YSwge1xuICAgICAgICB0eXBlOiAnYmluYXJ5JyxcbiAgICAgICAgY2VsbERhdGVzOiB0cnVlLFxuICAgICAgfSk7XG4gICAgICBqc29uRGF0YSA9IHNlbGVjdGVkRmlsZS5TaGVldE5hbWVzLnJlZHVjZSgoaW5pdGlhbCwgbmFtZSkgPT4ge1xuICAgICAgICBjb25zdCBzaGVldCA9IHNlbGVjdGVkRmlsZS5TaGVldHNbbmFtZV07XG4gICAgICAgIGluaXRpYWwgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2pzb24oc2hlZXQsIHtcbiAgICAgICAgICBoZWFkZXI6IDAsXG4gICAgICAgICAgZGVmdmFsOiBcIlwiLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGluaXRpYWw7XG4gICAgICB9LCB7fSk7XG4gICAgICB0aGlzLmZpbGVEYXRhID0ganNvbkRhdGE7XG4gICAgICBpZiAodGhpcy5maWxlRGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5yZVVwbG9hZCgpO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydCgnQ1NWIGZpbGUgaXMgZW1wdHknLCAnZXJyb3InKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5maWxlc0xpc3QgPSBldmVudDtcbiAgICAgIHRoaXMuY3VycmVudFN0ZXAgPSAyO1xuICAgIH1cbiAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUpO1xuICB9XG5cbiAgbWFwcGluZ1Byb2Nlc3NlZChldmVudDogYW55KSB7XG4gICAgdGhpcy5jdXJyZW50U3RlcCA9IDM7XG4gICAgc2V0VGltZW91dCh4ID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZHMgPSBldmVudC5maWVsZHM7XG4gICAgICAvL0FycmF5IG9mIG1hcHBlZCBtb2RlbHNcbiAgICAgIGNvbnN0IG1hcHBlZE1vZGVscyA9IFtdO1xuICAgICAgLyoqRm9yZWFjaCBmaWxlIGRhdGEsIG1hcCB0aGUgc2VsZWN0ZWQgZmllbGRzICovXG4gICAgICB0aGlzLmZpbGVEYXRhLmZvckVhY2goZGF0YSA9PiB7XG4gICAgICAgIGNvbnN0IG1hcHBlZE9iamVjdDogYW55ID0gPGFueT57fTtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIGRhdGEpIHtcbiAgICAgICAgICAvL0ZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgc2VsZWN0ZWQgZmllbGQgZm9yIHRoZSBrZXlcbiAgICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuc2VsZWN0ZWRGaWVsZHMuZmluZCgoZmllbGQ6IGFueSkgPT4gZmllbGQubGFiZWwgPT0ga2V5KTtcbiAgICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICAgIGlmIChmaWVsZC5wcm9wZXJ0eVR5cGUgPT0gJ2RhdGUnICYmIHRoaXMuaXNWYWxpZERhdGUobmV3IERhdGUoZGF0YVtmaWVsZC5sYWJlbF0pKSkge1xuICAgICAgICAgICAgICBtYXBwZWRPYmplY3RbZmllbGQucHJvcGVydHldID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0obmV3IERhdGUoZGF0YVtmaWVsZC5sYWJlbF0pLCAneXl5eS1NTS1kZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZmllbGQucHJvcGVydHlUeXBlID09ICdkYXRlVGltZScgJiYgdGhpcy5pc1ZhbGlkRGF0ZShuZXcgRGF0ZShkYXRhW2ZpZWxkLmxhYmVsXSkpKSB7XG4gICAgICAgICAgICAgIG1hcHBlZE9iamVjdFtmaWVsZC5wcm9wZXJ0eV0gPSAobmV3IERhdGUoZGF0YVtmaWVsZC5sYWJlbF0pIGFzIERhdGUpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgbWFwcGVkT2JqZWN0W2ZpZWxkLnByb3BlcnR5XSA9IGRhdGFbZmllbGQubGFiZWxdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvL1B1c2ggdGhlIGNsZWFuZWQgb2JqZWN0IHRvIG1hcHBlZCBtb2RlbHMgYXJyYXlcbiAgICAgICAgbWFwcGVkTW9kZWxzLnB1c2gobWFwcGVkT2JqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zYXZlKG1hcHBlZE1vZGVscyk7XG4gICAgfSwgMjAwMCk7XG4gIH1cblxuICBhc3luYyBzYXZlKHRlbXBGaWxlRGF0YTogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuaHR0cC5wb3N0KHRoaXMuY29uZmlnLmFwaVVybCwgeyBkYXRhOiB0ZW1wRmlsZURhdGEgfSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgICAgKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XG5cbiAgICAgICAgICB0aGlzLmZhaWxlZEl0ZW1zID0gcmVzdWx0LmZhaWxlZF9pdGVtcztcbiAgICAgICAgICBpZiAodGhpcy5mYWlsZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KHJlc3VsdC5tc2csICd3YXJuJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghKHRoaXMuZmFpbGVkSXRlbXMubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFN0ZXAgPSA1O1xuICAgICAgICAgICAgc2V0VGltZW91dCh4ID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcCA9IDY7XG4gICAgICAgICAgICAgIHRoaXMucmVzdWx0ID0gcmVzdWx0O1xuICAgICAgICAgICAgfSwgMjAwMCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcCA9IDQ7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKChlcnJvci5zdGF0dXMgPT09IDQyMiB8fCBlcnJvci5zdGF0dXMgPT09IDQwMCkgJiYgZXJyb3IubXNnKSB7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KGVycm9yLm1zZywgXCJ3YXJuaW5nXCIpO1xuICAgICAgfVxuICAgICAgdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgdGhpcy5yZVVwbG9hZCgpO1xuICAgIH1cbiAgfVxuXG4gIGlzVmFsaWREYXRlKGQ6IGFueSkge1xuICAgIHJldHVybiBkIGluc3RhbmNlb2YgRGF0ZSAmJiAhaXNOYU4oZC5nZXRUaW1lKCkpO1xuICB9XG5cbiAgcmVVcGxvYWQoKSB7XG4gICAgdGhpcy5kYXRhID0gW107XG4gICAgdGhpcy5maWxlRGF0YSA9IFtdO1xuICAgIHRoaXMuZmlsZXNMaXN0ID0gW107XG4gICAgdGhpcy5mYWlsZWRJdGVtcyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRGaWVsZHMgPSBbXTtcbiAgICB0aGlzLmN1cnJlbnRTdGVwID0gMTtcbiAgfVxuXG59XG4iLCI8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uIHdyYXBcIiBjbGFzcz1cInAtNFwiPlxuICA8bWF0LWNhcmQgZnhGbGV4PVwiMTAwJVwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgY2xhc3M9XCJwLTBcIj5cbiAgICA8bWF0LWNhcmQtY29udGVudCBmeEZpbGwgZnhMYXlvdXQ9XCJyb3cgd3JhcFwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgY2xhc3M9XCJwcmltYXJ5LWNvbG9yXCI+XG4gICAgICA8aDQgZnhGbGV4PVwiMjAlXCIgY2xhc3M9XCJtbC0yXCI+XG4gICAgICAgIFN0ZXAge3tzdGVwLnN0ZXB9fTogPHNwYW4gY2xhc3M9XCJub3JtYWwtZm9udC13ZWlnaHRcIj57e3N0ZXA/LnRpdGxlfX08L3NwYW4+XG4gICAgICA8L2g0PlxuICAgICAgPGgzIGZ4RmxleD1cIjgwJVwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgY2xhc3M9XCJ0ZXh0LWRhcmtcIiBmeExheW91dEdhcD1cIjFyZW0gZ3JpZFwiPlxuICAgICAgICA8c3Bhbj57e2NvbmZpZz8udGl0bGV9fSBJbXBvcnQ8L3NwYW4+XG4gICAgICAgIDxhICpuZ0lmPVwiY29uZmlnPy5zYW1wbGVGaWxlICYmIGN1cnJlbnRTdGVwID09IDFcIiBzdHlsZT1cImNvbG9yOiBpbmhlcml0O1wiIFtkb3dubG9hZF09XCJjb25maWc/LnNhbXBsZUZpbGU/Lm5hbWVcIlxuICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiIFtocmVmXT1cImNvbmZpZz8uc2FtcGxlRmlsZT8ucGF0aFwiIG1hdFRvb2x0aXA9XCJEb3dubG9hZCBTYW1wbGUgZmlsZVwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImJlbG93XCJcbiAgICAgICAgICBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxuICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwicHJpbWFyeS1jb2xvclwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPlxuICAgICAgICAgICAgICBkb3dubG9hZFxuICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIFNhbXBsZSBGaWxlXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvaDM+XG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICA8L21hdC1jYXJkPlxuICA8ZGl2IGZ4RmxleD1cIjEwMCVcIiBjbGFzcz1cIm10LTNcIj5cbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93IHdyYXBcIiBmeExheW91dEdhcD1cIjFyZW0gZ3JpZFwiICpuZ0lmPVwiY3VycmVudFN0ZXA9PTEgfHwgY3VycmVudFN0ZXAgPT0gMiB8fCBjdXJyZW50U3RlcCA9PSA0XCI+XG4gICAgICA8ZGl2IGZ4RmxleD1cIjEwMCVcIiBmeEZsZXguZ3Qtc209XCIwIDEgY2FsYyg3MCUtMXJlbSlcIj5cbiAgICAgICAgPG1hdC1jYXJkIGZ4RmxleD1cIjEwMCVcIj5cbiAgICAgICAgICA8bWF0LWNhcmQtY29udGVudCBmeExheW91dD1cImNvbHVtblwiPlxuICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCIxMDAlXCI+XG4gICAgICAgICAgICAgIDxzZWN0aW9uIGZ4TGF5b3V0PVwiY29sdW1uXCIgKm5nSWY9XCJjb25maWcuaW1wb3J0VHlwZSAmJiAhdGhpcy5maWxlRGF0YS5sZW5ndGggJiYgIXRoaXMuZmFpbGVkSXRlbXMubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwicHJpbWFyeS1jb2xvciBwYi0zXCI+RmlsZSBVcGxvYWQ8L2g1PlxuICAgICAgICAgICAgICAgIDxhcHAtZmlsZS1kcm9wcGVyIGZ4RmlsbCBjbGFzcz1cIm1iLTIgZHJvcC1zZWN0aW9uXCIgW2NvbmZpZ109XCJmaWxlc0NvbmZpZ1wiIFtmaWxlQXJyYXldPVwiZmlsZXNMaXN0XCJcbiAgICAgICAgICAgICAgICAgIChmaWxlQ2hhbmdlZCk9XCJmaWxlQ2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtZmlsZS1kcm9wcGVyPlxuICAgICAgICAgICAgICAgIDxhcHAtaW1wb3J0LWhpc3RvcnktbGlzdCAqbmdJZj1cImNvbmZpZy5pbXBvcnRIaXN0b3J5LmlzRW5hYmxlZFwiIFtjb25maWddPVwiY29uZmlnXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtaW1wb3J0LWhpc3RvcnktbGlzdD5cbiAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgICAgICA8YXBwLWZpZWxkLW1hcHBpbmcgY2xhc3M9XCJ3LTEwMFwiICpuZ0lmPVwidGhpcy5maWxlRGF0YS5sZW5ndGggPiAwICYmICF0aGlzLmZhaWxlZEl0ZW1zLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgW2RhdGFdPVwiZmlsZURhdGFcIiBbY29uZmlnXT1cImNvbmZpZ1wiIChvblNhdmUpPVwibWFwcGluZ1Byb2Nlc3NlZCgkZXZlbnQpXCIgKG9uUmVVcGxvYWQpPVwicmVVcGxvYWQoKVwiPlxuICAgICAgICAgICAgICA8L2FwcC1maWVsZC1tYXBwaW5nPlxuICAgICAgICAgICAgICA8YXBwLWZhaWxlZC1pdGVtcy1saXN0IGNsYXNzPVwidy0xMDBcIiAqbmdJZj1cInRoaXMuZmFpbGVkSXRlbXMubGVuZ3RoID4gMFwiIFtmYWlsZWRJdGVtc109XCJmYWlsZWRJdGVtc1wiXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkRmllbGRzXT1cInNlbGVjdGVkRmllbGRzXCIgKG9uUmVVcGxvYWQpPVwicmVVcGxvYWQoKVwiPjwvYXBwLWZhaWxlZC1pdGVtcy1saXN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgICAgICA8L21hdC1jYXJkPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGZ4RmxleD1cIjEwMCVcIiBmeEZsZXguZ3Qtc209XCIzMCVcIj5cbiAgICAgICAgPG1hdC1jYXJkIGZ4RmxleD1cIjEwMCVcIj5cbiAgICAgICAgICA8bWF0LWNhcmQtY29udGVudCBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBzdGFydFwiPlxuICAgICAgICAgICAgPGg1IGNsYXNzPVwicHJpbWFyeS1jb2xvciBwYi0zXCI+SW5zdHJ1Y3Rpb25zICYgUmVxdWlyZW1lbnRzPC9oNT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+XG4gICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgIDEuIFBsZWFzZSB1c2UgdGhpcyB5eXl5L01NL2RkIGRhdGUgZm9ybWF0IGZvciBhbGwgdGhlIGRhdGUgZmllbGRzLiBPdGhlcndpc2UgeW91ciBkYXRlIGZpZWxkcyB3aWxsIGJlXG4gICAgICAgICAgICAgICAgaW5jb3JyZWN0IG9yIG5vdCB3aWxsIGJlIGFjY2VwdGVkLiBFeDogMjAyMS8wOS8yN1xuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWc/LmN1c3RvbUVycm9yTWVzc2FnZXNcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnPy5pc1JlbmRlckN1c3RvbUVycm9yTWVzc2FnZXNJbkh0bWw7IGVsc2UgcmVuZGVyUGxhaW5UZXh0XCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtZXNzYWdlIG9mIGNvbmZpZz8uY3VzdG9tRXJyb3JNZXNzYWdlc1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpbm5lckh0bWxdPVwibWVzc2FnZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNyZW5kZXJQbGFpblRleHQ+XG4gICAgICAgICAgICAgICAgICA8cCAqbmdGb3I9XCJsZXQgbWVzc2FnZSBvZiBjb25maWc/LmN1c3RvbUVycm9yTWVzc2FnZXNcIj5cbiAgICAgICAgICAgICAgICAgICAge3ttZXNzYWdlfX1cbiAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgPC9tYXQtY2FyZD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW4gd3JhcFwiIGNsYXNzPVwicC00XCIgKm5nSWY9XCJjdXJyZW50U3RlcD09MyB8fCBjdXJyZW50U3RlcCA9PSA1XCI+XG4gICAgICA8YXBwLWRhdGEtaW1wb3J0IFtzdGVwXT1cInN0ZXBcIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPjwvYXBwLWRhdGEtaW1wb3J0PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW4gd3JhcFwiIGNsYXNzPVwicC00XCIgKm5nSWY9XCJjdXJyZW50U3RlcCA9PSA2XCI+XG4gICAgICA8YXBwLWltcG9ydC1zdWNjZXNzIFtkYXRhXT1cInJlc3VsdFwiIFtjb25maWddPVwiY29uZmlnXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIj48L2FwcC1pbXBvcnQtc3VjY2Vzcz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LWNzdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2ltcG9ydC1jc3YvaW1wb3J0LWNzdi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2ltcG9ydC1jc3YvaW1wb3J0LWNzdi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBR0EsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUd6RCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVV0QixJQUFNLGtCQUFrQixHQUF4QixNQUFNLGtCQUFrQjtJQTBEN0IsWUFDVSxZQUEwQixFQUMxQixZQUFpQyxFQUNqQyxJQUFpQixFQUNqQixRQUFrQjtRQUhsQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBMUQ1QixjQUFTLEdBQVUsRUFBRSxDQUFDO1FBQ3RCLFNBQUksR0FBVSxFQUFFLENBQUM7UUFDakIsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUM1Qix5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFFdEMsYUFBUSxHQUFVLEVBQUUsQ0FBQztRQUNyQixnQkFBVyxHQUFVLEVBQUUsQ0FBQztRQUN4QixtQkFBYyxHQUFVLEVBQUUsQ0FBQztRQUMzQixnQkFBVyxHQUFRO1lBQ2pCO2dCQUNFLEVBQUUsRUFBRSxDQUFDO2dCQUNMLElBQUksRUFBRSxDQUFDO2dCQUNQLEtBQUssRUFBRSxRQUFRO2dC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QyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7K0dBN0xVLGtCQUFrQjttR0FBbEIsa0JBQWtCLG9GQ2pCL0IscTlIQTZFQTs7QUQ1RGEsa0JBQWtCO0lBUDlCLFlBQVksRUFBRTtHQU9GLGtCQUFrQixDQStMOUI7OzRGQS9MWSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZ0JBQWdCO29LQU1qQixNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaWV3ZXJDb25maWcgfSBmcm9tICcuLi9kb2N1bWVudC12aWV3ZXIvdmlld2VyLWNvbmZpZy5tb2RlbCc7XG5pbXBvcnQgeyBGaWxlRHJvcHBlckNvbmZpZyB9IGZyb20gJy4uL2ZpbGUtZHJvcHBlci9maWxlLWRyb3BwZXIubW9kZWwnO1xuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL2h0dHAuc2VydmljZSc7XG5pbXBvcnQgeyBVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IEVycm9ySGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL2Vycm9yLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xuaW1wb3J0IHsgSW1wb3J0Q3N2Q29uZmlnIH0gZnJvbSAnLi9pbXBvcnQtY3N2LWNvbmZpZyc7XG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbkBVbnRpbERlc3Ryb3koKVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtaW1wb3J0LWNzdicsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbXBvcnQtY3N2LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW1wb3J0LWNzdi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEltcG9ydENzdkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHJlc3VsdDogYW55O1xuICBASW5wdXQoKSBjb25maWc6IEltcG9ydENzdkNvbmZpZztcbiAgZmlsZXNDb25maWc6IEZpbGVEcm9wcGVyQ29uZmlnO1xuICBmaWxlc0xpc3Q6IGFueVtdID0gW107XG4gIGRhdGE6IGFueVtdID0gW107XG4gIGlzVXBsb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNJbXBvcnRUeXBlU2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdmlld2VyQ29uZmlnOiBWaWV3ZXJDb25maWc7XG4gIGZpbGVEYXRhOiBhbnlbXSA9IFtdO1xuICBmYWlsZWRJdGVtczogYW55W10gPSBbXTtcbiAgc2VsZWN0ZWRGaWVsZHM6IGFueVtdID0gW107XG4gIGltcG9ydFN0ZXBzOiBhbnkgPSBbXG4gICAge1xuICAgICAgaWQ6IDEsXG4gICAgICBzdGVwOiAxLFxuICAgICAgdGl0bGU6ICdVcGxvYWQnLFxuICAgICAgcHJvZ3Jlc3NUaXRsZTogJycsXG4gICAgICBwcm9ncmVzc0Rlc2NyaXB0aW9uOiAnJ1xuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IDIsXG4gICAgICBzdGVwOiAyLFxuICAgICAgdGl0bGU6ICdGaWVsZCBNYXBwaW5ncycsXG4gICAgICBwcm9ncmVzc1RpdGxlOiAnJyxcbiAgICAgIHByb2dyZXNzRGVzY3JpcHRpb246ICcnXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogMyxcbiAgICAgIHN0ZXA6IDMsXG4gICAgICB0aXRsZTogJ0RhdGEgVmFsaWRhdGlvbicsXG4gICAgICBwcm9ncmVzc1RpdGxlOiAnRGF0YSBCZWluZyBWYWxpZGF0ZWQnLFxuICAgICAgcHJvZ3Jlc3NEZXNjcmlwdGlvbjogJ1RoZSBkYXRhIGlzIGN1cnJlbnRseSBiZWluZyB2YWxpZGF0ZWQgYW5kIGNoZWNrZWQgZm9yIGVycm9ycywgcGxlYXNlIGRvIG5vdCBuYXZpZ2F0ZSBhd2F5IGZyb20gdGhpcyBwYWdlLiAnXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogNCxcbiAgICAgIHN0ZXA6IDMsXG4gICAgICB0aXRsZTogJ0RhdGEgVmFsaWRhdGlvbiAmIEVycm9ycycsXG4gICAgICBwcm9ncmVzc1RpdGxlOiAnJyxcbiAgICAgIHByb2dyZXNzRGVzY3JpcHRpb246ICcnXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogNSxcbiAgICAgIHN0ZXA6IDQsXG4gICAgICB0aXRsZTogJ0RhdGEgSW1wb3J0aW5nJyxcbiAgICAgIHByb2dyZXNzVGl0bGU6ICdEYXRhIEJlaW5nIEltcG9ydGVkJyxcbiAgICAgIHByb2dyZXNzRGVzY3JpcHRpb246ICdUaGUgZGF0YSBpcyBjdXJyZW50bHkgYmVpbmcgaW1wb3J0ZWQgYW5kIHNhdmVkLCBwbGVhc2UgZG8gbm90IG5hdmlnYXRlIGF3YXkgZnJvbSB0aGlzIHBhZ2UuIEFmdGVyIHRoZSBpbXBvcnQgaXMgY29tcGxldGVkLCB5b3Ugd2lsbCBiZSByZWRpcmVjdGVkIHRvIGEgcGFnZSB3aXRoIHRoZSBpbXBvcnRlZCByZWNvcmRzLidcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiA2LFxuICAgICAgc3RlcDogNSxcbiAgICAgIHRpdGxlOiAnU3VjY2VzcyBQYWdlICYgRGF0YSBQcmV2aWV3JyxcbiAgICAgIHByb2dyZXNzVGl0bGU6ICcnLFxuICAgICAgcHJvZ3Jlc3NEZXNjcmlwdGlvbjogJydcbiAgICB9LFxuICBdO1xuICBjdXJyZW50U3RlcDogYW55ID0gMTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXJyb3JIYW5kbGVyOiBFcnJvckhhbmRsZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGVcbiAgKSB7XG4gICAgdGhpcy5maWxlc0NvbmZpZyA9IHtcbiAgICAgIGZpbGVJZDogXCJmaWxlXCIsXG4gICAgICBjb250YWluZXJJZDogXCJmaWxlQ29udGFpbmVyXCIsXG4gICAgICBzdHlsZXM6IHtcbiAgICAgICAgaGVpZ2h0OiBcIjIwMHB4XCJcbiAgICAgIH0sXG4gICAgICBhY2NlcHRGaWxlOiAnLmNzdicsXG4gICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICBtYXhTaXplOiAxMCxcbiAgICAgIGFjY2VwdEZpbGVUZXh0OiBcIi5jc3ZcIlxuICAgIH07XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgfVxuXG4gIGdldCBzdGVwKCkge1xuICAgIHJldHVybiB0aGlzLmltcG9ydFN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLmlkID09IHRoaXMuY3VycmVudFN0ZXApO1xuICB9XG5cbiAgYXN5bmMgZmlsZUNoYW5nZWQoZXZlbnQ6IGFueSkge1xuICAgIGxldCBzZWxlY3RlZEZpbGUgPSBudWxsO1xuICAgIGxldCBqc29uRGF0YSA9IG51bGw7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICBjb25zdCBmaWxlID0gZXZlbnRbMF07XG4gICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSByZWFkZXIucmVzdWx0O1xuICAgICAgc2VsZWN0ZWRGaWxlID0gWExTWC5yZWFkKGRhdGEsIHtcbiAgICAgICAgdHlwZTogJ2JpbmFyeScsXG4gICAgICAgIHJhdzogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAganNvbkRhdGEgPSBzZWxlY3RlZEZpbGUuU2hlZXROYW1lcy5yZWR1Y2UoKGluaXRpYWwsIG5hbWUpID0+IHtcbiAgICAgICAgY29uc3Qgc2hlZXQgPSBzZWxlY3RlZEZpbGUuU2hlZXRzW25hbWVdO1xuICAgICAgICBpbml0aWFsID0gWExTWC51dGlscy5zaGVldF90b19qc29uKHNoZWV0LCB7XG4gICAgICAgICAgaGVhZGVyOiAwLFxuICAgICAgICAgIGRlZnZhbDogXCJcIixcbiAgICAgICAgICByYXc6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGluaXRpYWw7XG4gICAgICB9LCB7fSk7XG4gICAgICB0aGlzLmZpbGVEYXRhID0ganNvbkRhdGE7XG4gICAgICBpZiAodGhpcy5maWxlRGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5yZVVwbG9hZCgpO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydCgnQ1NWIGZpbGUgaXMgZW1wdHknLCAnZXJyb3InKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5maWxlc0xpc3QgPSBldmVudDtcbiAgICAgIHRoaXMuY3VycmVudFN0ZXAgPSAyO1xuICAgIH1cbiAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUpO1xuICB9XG5cbiAgbWFwcGluZ1Byb2Nlc3NlZChldmVudDogYW55KSB7XG4gICAgdGhpcy5jdXJyZW50U3RlcCA9IDM7XG4gICAgc2V0VGltZW91dCh4ID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZHMgPSBldmVudC5maWVsZHM7XG4gICAgICAvL0FycmF5IG9mIG1hcHBlZCBtb2RlbHNcbiAgICAgIGNvbnN0IG1hcHBlZE1vZGVscyA9IFtdO1xuICAgICAgLyoqRm9yZWFjaCBmaWxlIGRhdGEsIG1hcCB0aGUgc2VsZWN0ZWQgZmllbGRzICovXG4gICAgICB0aGlzLmZpbGVEYXRhLmZvckVhY2goZGF0YSA9PiB7XG4gICAgICAgIGNvbnN0IG1hcHBlZE9iamVjdDogYW55ID0gPGFueT57fTtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIGRhdGEpIHtcbiAgICAgICAgICAvL0ZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgc2VsZWN0ZWQgZmllbGQgZm9yIHRoZSBrZXlcbiAgICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuc2VsZWN0ZWRGaWVsZHMuZmluZCgoZmllbGQ6IGFueSkgPT4gZmllbGQubGFiZWwgPT0ga2V5KTtcbiAgICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICAgIGlmIChmaWVsZC5wcm9wZXJ0eVR5cGUgPT0gJ2RhdGUnICYmIHRoaXMuaXNWYWxpZERhdGUobmV3IERhdGUoZGF0YVtmaWVsZC5sYWJlbF0pKSkge1xuICAgICAgICAgICAgICBtYXBwZWRPYmplY3RbZmllbGQucHJvcGVydHldID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0obmV3IERhdGUoZGF0YVtmaWVsZC5sYWJlbF0pLCAneXl5eS1NTS1kZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZmllbGQucHJvcGVydHlUeXBlID09ICdkYXRlVGltZScgJiYgdGhpcy5pc1ZhbGlkRGF0ZShuZXcgRGF0ZShkYXRhW2ZpZWxkLmxhYmVsXSkpKSB7XG4gICAgICAgICAgICAgIG1hcHBlZE9iamVjdFtmaWVsZC5wcm9wZXJ0eV0gPSAobmV3IERhdGUoZGF0YVtmaWVsZC5sYWJlbF0pIGFzIERhdGUpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgbWFwcGVkT2JqZWN0W2ZpZWxkLnByb3BlcnR5XSA9IGRhdGFbZmllbGQubGFiZWxdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvL1B1c2ggdGhlIGNsZWFuZWQgb2JqZWN0IHRvIG1hcHBlZCBtb2RlbHMgYXJyYXlcbiAgICAgICAgbWFwcGVkTW9kZWxzLnB1c2gobWFwcGVkT2JqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zYXZlKG1hcHBlZE1vZGVscyk7XG4gICAgfSwgMjAwMCk7XG4gIH1cblxuICBhc3luYyBzYXZlKHRlbXBGaWxlRGF0YTogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuaHR0cC5wb3N0KHRoaXMuY29uZmlnLmFwaVVybCwgeyBkYXRhOiB0ZW1wRmlsZURhdGEgfSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgICAgKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XG5cbiAgICAgICAgICB0aGlzLmZhaWxlZEl0ZW1zID0gcmVzdWx0LmZhaWxlZF9pdGVtcztcbiAgICAgICAgICBpZiAodGhpcy5mYWlsZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KHJlc3VsdC5tc2csICd3YXJuJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghKHRoaXMuZmFpbGVkSXRlbXMubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFN0ZXAgPSA1O1xuICAgICAgICAgICAgc2V0VGltZW91dCh4ID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcCA9IDY7XG4gICAgICAgICAgICAgIHRoaXMucmVzdWx0ID0gcmVzdWx0O1xuICAgICAgICAgICAgfSwgMjAwMCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcCA9IDQ7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKChlcnJvci5zdGF0dXMgPT09IDQyMiB8fCBlcnJvci5zdGF0dXMgPT09IDQwMCkgJiYgZXJyb3IubXNnKSB7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KGVycm9yLm1zZywgXCJ3YXJuaW5nXCIpO1xuICAgICAgfVxuICAgICAgdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgdGhpcy5yZVVwbG9hZCgpO1xuICAgIH1cbiAgfVxuXG4gIGlzVmFsaWREYXRlKGQ6IGFueSkge1xuICAgIHJldHVybiBkIGluc3RhbmNlb2YgRGF0ZSAmJiAhaXNOYU4oZC5nZXRUaW1lKCkpO1xuICB9XG5cbiAgcmVVcGxvYWQoKSB7XG4gICAgdGhpcy5kYXRhID0gW107XG4gICAgdGhpcy5maWxlRGF0YSA9IFtdO1xuICAgIHRoaXMuZmlsZXNMaXN0ID0gW107XG4gICAgdGhpcy5mYWlsZWRJdGVtcyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRGaWVsZHMgPSBbXTtcbiAgICB0aGlzLmN1cnJlbnRTdGVwID0gMTtcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uXCI+XG4gIDxtYXQtY2FyZCBjbGFzcz1cInctMTAwIHAtMFwiPlxuICAgIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGZsZXgtd3JhcCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciB3LTEwMCBwcmltYXJ5LWNvbG9yXCI+XG4gICAgICA8aDQgc3R5bGU9XCJmbGV4OiAwIDAgMjAlO1wiIGNsYXNzPVwibWwtMlwiPlxuICAgICAgICBTdGVwIHt7c3RlcC5zdGVwfX06IDxzcGFuIGNsYXNzPVwibm9ybWFsLWZvbnQtd2VpZ2h0XCI+e3tzdGVwPy50aXRsZX19PC9zcGFuPlxuICAgICAgPC9oND5cbiAgICAgIDxoMyBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMyB0ZXh0LWRhcmtcIiBzdHlsZT1cImZsZXg6IDAgMCA4MCU7XCI+XG4gICAgICAgIDxzcGFuPnt7Y29uZmlnPy50aXRsZX19IEltcG9ydDwvc3Bhbj5cbiAgICAgICAgPGEgKm5nSWY9XCJjb25maWc/LnNhbXBsZUZpbGUgJiYgY3VycmVudFN0ZXAgPT0gMVwiIHN0eWxlPVwiY29sb3I6IGluaGVyaXQ7XCIgW2Rvd25sb2FkXT1cImNvbmZpZz8uc2FtcGxlRmlsZT8ubmFtZVwiXG4gICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCIgW2hyZWZdPVwiY29uZmlnPy5zYW1wbGVGaWxlPy5wYXRoXCIgbWF0VG9vbHRpcD1cIkRvd25sb2FkIFNhbXBsZSBmaWxlXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYmVsb3dcIj5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInByaW1hcnktY29sb3JcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgICAgZG93bmxvYWRcbiAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICBTYW1wbGUgRmlsZVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2E+XG4gICAgICA8L2gzPlxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgPC9tYXQtY2FyZD5cbiAgPGRpdiBjbGFzcz1cInctMTAwIG10LTJcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IGctM1wiICpuZ0lmPVwiY3VycmVudFN0ZXA9PTEgfHwgY3VycmVudFN0ZXAgPT0gMiB8fCBjdXJyZW50U3RlcCA9PSA0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC04XCI+XG4gICAgICAgIDxtYXQtY2FyZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiB3LTEwMFwiICpuZ0lmPVwiY29uZmlnLmltcG9ydFR5cGUgJiYgIXRoaXMuZmlsZURhdGEubGVuZ3RoICYmICF0aGlzLmZhaWxlZEl0ZW1zLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInByaW1hcnktY29sb3IgcGItM1wiPkZpbGUgVXBsb2FkPC9oNT5cbiAgICAgICAgICAgICAgICA8YXBwLWZpbGUtZHJvcHBlciBjbGFzcz1cImQtYmxvY2sgdy0xMDAgbWItMiBkcm9wLXNlY3Rpb25cIiBbY29uZmlnXT1cImZpbGVzQ29uZmlnXCIgW2ZpbGVBcnJheV09XCJmaWxlc0xpc3RcIlxuICAgICAgICAgICAgICAgICAgKGZpbGVDaGFuZ2VkKT1cImZpbGVDaGFuZ2VkKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1maWxlLWRyb3BwZXI+XG4gICAgICAgICAgICAgICAgPGFwcC1pbXBvcnQtaGlzdG9yeS1saXN0ICpuZ0lmPVwiY29uZmlnLmltcG9ydEhpc3RvcnkuaXNFbmFibGVkXCIgW2NvbmZpZ109XCJjb25maWdcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1pbXBvcnQtaGlzdG9yeS1saXN0PlxuICAgICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgICAgIDxhcHAtZmllbGQtbWFwcGluZyBjbGFzcz1cInctMTAwXCIgKm5nSWY9XCJ0aGlzLmZpbGVEYXRhLmxlbmd0aCA+IDAgJiYgIXRoaXMuZmFpbGVkSXRlbXMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBbZGF0YV09XCJmaWxlRGF0YVwiIFtjb25maWddPVwiY29uZmlnXCIgKG9uU2F2ZSk9XCJtYXBwaW5nUHJvY2Vzc2VkKCRldmVudClcIiAob25SZVVwbG9hZCk9XCJyZVVwbG9hZCgpXCI+XG4gICAgICAgICAgICAgIDwvYXBwLWZpZWxkLW1hcHBpbmc+XG4gICAgICAgICAgICAgIDxhcHAtZmFpbGVkLWl0ZW1zLWxpc3QgY2xhc3M9XCJ3LTEwMFwiICpuZ0lmPVwidGhpcy5mYWlsZWRJdGVtcy5sZW5ndGggPiAwXCIgW2ZhaWxlZEl0ZW1zXT1cImZhaWxlZEl0ZW1zXCJcbiAgICAgICAgICAgICAgICBbc2VsZWN0ZWRGaWVsZHNdPVwic2VsZWN0ZWRGaWVsZHNcIiAob25SZVVwbG9hZCk9XCJyZVVwbG9hZCgpXCI+PC9hcHAtZmFpbGVkLWl0ZW1zLWxpc3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDwvbWF0LWNhcmQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTRcIj5cbiAgICAgICAgPG1hdC1jYXJkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtblwiPlxuICAgICAgICAgICAgPGg1IGNsYXNzPVwicHJpbWFyeS1jb2xvciBwYi0zXCI+SW5zdHJ1Y3Rpb25zICYgUmVxdWlyZW1lbnRzPC9oNT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+XG4gICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgIDEuIFBsZWFzZSB1c2UgdGhpcyB5eXl5L01NL2RkIGRhdGUgZm9ybWF0IGZvciBhbGwgdGhlIGRhdGUgZmllbGRzLiBPdGhlcndpc2UgeW91ciBkYXRlIGZpZWxkcyB3aWxsIGJlXG4gICAgICAgICAgICAgICAgaW5jb3JyZWN0IG9yIG5vdCB3aWxsIGJlIGFjY2VwdGVkLiBFeDogMjAyMS8wOS8yN1xuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWc/LmN1c3RvbUVycm9yTWVzc2FnZXNcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnPy5pc1JlbmRlckN1c3RvbUVycm9yTWVzc2FnZXNJbkh0bWw7IGVsc2UgcmVuZGVyUGxhaW5UZXh0XCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtZXNzYWdlIG9mIGNvbmZpZz8uY3VzdG9tRXJyb3JNZXNzYWdlc1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpbm5lckh0bWxdPVwibWVzc2FnZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNyZW5kZXJQbGFpblRleHQ+XG4gICAgICAgICAgICAgICAgICA8cCAqbmdGb3I9XCJsZXQgbWVzc2FnZSBvZiBjb25maWc/LmN1c3RvbUVycm9yTWVzc2FnZXNcIj5cbiAgICAgICAgICAgICAgICAgICAge3ttZXNzYWdlfX1cbiAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgPC9tYXQtY2FyZD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gcC0zXCIgKm5nSWY9XCJjdXJyZW50U3RlcD09MyB8fCBjdXJyZW50U3RlcCA9PSA1XCI+XG4gICAgICA8YXBwLWRhdGEtaW1wb3J0IFtzdGVwXT1cInN0ZXBcIj48L2FwcC1kYXRhLWltcG9ydD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIHAtM1wiICpuZ0lmPVwiY3VycmVudFN0ZXAgPT0gNlwiPlxuICAgICAgPGFwcC1pbXBvcnQtc3VjY2VzcyBbZGF0YV09XCJyZXN1bHRcIiBbY29uZmlnXT1cImNvbmZpZ1wiPjwvYXBwLWltcG9ydC1zdWNjZXNzPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|