verben-ng-ui 1.2.60 → 1.2.62
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/src/lib/components/data-extend/data-extend.component.mjs +8 -7
- package/esm2022/src/lib/components/data-import/data-import.component.mjs +4 -4
- package/esm2022/src/lib/components/data-import/data-import.service.mjs +32 -10
- package/esm2022/src/lib/components/data-table/data-table.component.mjs +13 -5
- package/fesm2022/verben-ng-ui-src-lib-components-data-extend.mjs +6 -5
- package/fesm2022/verben-ng-ui-src-lib-components-data-extend.mjs.map +1 -1
- package/fesm2022/verben-ng-ui-src-lib-components-data-import.mjs +33 -11
- package/fesm2022/verben-ng-ui-src-lib-components-data-import.mjs.map +1 -1
- package/fesm2022/verben-ng-ui-src-lib-components-data-table.mjs +11 -3
- package/fesm2022/verben-ng-ui-src-lib-components-data-table.mjs.map +1 -1
- package/package.json +92 -92
- package/src/lib/components/data-extend/data-extend.component.d.ts +1 -1
- package/src/lib/components/data-import/data-import.component.d.ts +1 -2
- package/src/lib/components/data-table/data-table.component.d.ts +4 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Component, computed,
|
|
2
|
-
import { DataType } from './data-extend.types';
|
|
1
|
+
import { Component, computed, input, output, signal } from '@angular/core';
|
|
3
2
|
import { Validators } from '@angular/forms';
|
|
3
|
+
import { DataType } from './data-extend.types';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "@angular/forms";
|
|
6
6
|
import * as i2 from "@angular/common";
|
|
@@ -14,7 +14,7 @@ export class DataExtendComponent {
|
|
|
14
14
|
fb;
|
|
15
15
|
properties = input([]);
|
|
16
16
|
extendDataEvent = output();
|
|
17
|
-
items
|
|
17
|
+
items;
|
|
18
18
|
showAll = signal(false);
|
|
19
19
|
visibleItems;
|
|
20
20
|
form;
|
|
@@ -23,9 +23,10 @@ export class DataExtendComponent {
|
|
|
23
23
|
constructor(fb) {
|
|
24
24
|
this.fb = fb;
|
|
25
25
|
this.visibleItems = computed(() => this.showAll() ? this.items() : this.items().slice(0, 3));
|
|
26
|
-
effect(() => {
|
|
27
|
-
|
|
28
|
-
});
|
|
26
|
+
// effect(() => {
|
|
27
|
+
// this.items.set(this.properties());
|
|
28
|
+
// });
|
|
29
|
+
this.items = signal([]);
|
|
29
30
|
this.form = this.fb.group({
|
|
30
31
|
Name: ['', Validators.required],
|
|
31
32
|
DefaultValue: [''],
|
|
@@ -110,4 +111,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImpo
|
|
|
110
111
|
type: Component,
|
|
111
112
|
args: [{ selector: 'lib-data-extend', template: "<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n class=\"export-card\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Expand</h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"reset()\"\n >\n Reset\n </button>\n </div>\n <div card-body class=\"card-body\">\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Entity</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <div *ngFor=\"let item of visibleItems(); let i = index\" class=\"item\">\n <div class=\"item-label\">\n <!-- <input\n type=\"checkbox\"\n [id]=\"'item-' + i\"\n [(ngModel)]=\"item.selected\"\n /> -->\n <label [for]=\"'item-' + i\" class=\"checkbox-label\">\n {{ item.Name }}\n </label>\n </div>\n <div class=\"item-actions\">\n <verben-svg\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editItem(i)\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"removeItem(i)\"\n ></verben-svg>\n </div>\n </div>\n <div\n *ngIf=\"items().length > 3\"\n (click)=\"toggleShowAll()\"\n class=\"show-more\"\n >\n <span>{{ showAll() ? \"Show less\" : \"Show more\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </div>\n </section>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Properties</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <form [formGroup]=\"form\" (ngSubmit)=\"addItem()\">\n <div class=\"\">\n <p class=\"\">Name</p>\n <verbena-input\n placeholder=\"Enter property name\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100%\"\n fontSize=\"11px\"\n height=\"20px\"\n pd=\"2px 4px !important\"\n bgColor=\"transparent\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n formControlName=\"Name\"\n ></verbena-input>\n </div>\n\n <div>\n <label for=\"DataType\">Data Type</label>\n <verben-drop-down\n id=\"DataType\"\n width=\"'100%'\"\n height=\"'1.25rem'\"\n placeholder=\"Select type\"\n [options]=\"dataTypes\"\n formControlName=\"DataType\"\n >\n </verben-drop-down>\n </div>\n\n <div>\n <label htmlFor=\"Options\" class=\"mb-2\">Enter Options</label>\n <verben-chip\n label=\"Options\"\n id=\"Options\"\n [placeholder]=\"'Enter Options'\"\n formControlName=\"Options\"\n ></verben-chip>\n </div>\n\n <div>\n <label for=\"DefaultValue\">Default Value</label>\n\n <verbena-input\n [placeHolder]=\"'Enter default text'\"\n formControlName=\"DefaultValue\"\n id=\"DefaultValue\"\n label=\"Default Value (optional)\"\n />\n </div>\n\n <div>\n <p class=\"mb-2\">Required</p>\n\n <verbena-switch\n label=\"Required\"\n [onColor]=\"'#1A237E'\"\n formControlName=\"IsRequired\"\n ></verbena-switch>\n </div>\n\n <div class=\"value-range\">\n <verbena-input\n [type]=\"'number'\"\n name=\"minValue\"\n label=\"Min Value\"\n formControlName=\"MinValue\"\n />\n <verbena-input\n [type]=\"'number'\"\n name=\"maxValue\"\n label=\"Max Value\"\n formControlName=\"MinValue\"\n />\n </div>\n\n <button\n [disabled]=\"!form.valid\"\n class=\"add-button ml-auto\"\n type=\"submit\"\n >\n + Add\n </button>\n </form>\n </section>\n </div>\n <div card-footer class=\"card-footer\">\n <button class=\"export-button\" (click)=\"save()\">Extend</button>\n </div>\n</verben-card>\n", styles: [".export-card{font-size:.75rem;z-index:10}.card-header{display:flex;justify-content:space-between;align-items:center;background-color:transparent;padding:4px!important}.header-title{font-weight:600;font-size:.8125rem}.card-body,.section{display:flex;flex-direction:column;gap:.5rem}.section-header{display:flex;justify-content:space-between;align-items:center}.section-title{font-size:.8125rem}.item{display:flex;justify-content:space-between;align-items:center}.item-label{display:flex;align-items:center;gap:.5rem}.checkbox-label{line-height:1}.item-actions{display:flex;gap:.5rem}.show-more{display:flex;gap:.5em;align-items:center;color:#6b7280;cursor:pointer}.divider{border:none;border-top:1px solid #e8eaf1}.operation-grid{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.add-button{margin-top:.5rem;margin-left:auto;outline:none;border:none;background-color:transparent;color:#3479e9;font-size:.75rem;font-weight:500;cursor:pointer}.card-footer{display:flex;justify-content:flex-end;background-color:transparent}.export-button{margin-top:.5rem;outline:none;border:none;padding:.2rem 1.6rem;background-color:#ffe681;color:#404040;font-size:.75rem;font-weight:600;cursor:pointer}.value-range{display:flex;gap:.5rem;align-items:center}\n"] }]
|
|
112
113
|
}], ctorParameters: () => [{ type: i1.FormBuilder }] });
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1leHRlbmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWV4dGVuZC9kYXRhLWV4dGVuZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtZXh0ZW5kL2RhdGEtZXh0ZW5kLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUVOLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWtCLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9ELE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFPcEUsTUFBTSxPQUFPLG1CQUFtQjtJQVlWO0lBWHBCLFVBQVUsR0FBRyxLQUFLLENBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLGVBQWUsR0FBRyxNQUFNLEVBQW9CLENBQUM7SUFFN0MsS0FBSyxHQUFxQyxNQUFNLENBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZFLE9BQU8sR0FBNEIsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQzFELFlBQVksQ0FBMkI7SUFDdkMsSUFBSSxDQUFZO0lBQ2hCLFlBQVksR0FBMEIsSUFBSSxDQUFDO0lBRTNDLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXBDLFlBQW9CLEVBQWU7UUFBZixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUNoQyxJQUFJLENBQUMsT0FBTyxFQUFF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QUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFhO1FBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWE7UUFDcEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7d0dBM0dVLG1CQUFtQjs0RkFBbkIsbUJBQW1CLDJQQ2xCaEMsZ2lLQW9MQTs7NEZEbEthLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIFNpZ25hbCxcbiAgc2lnbmFsLFxuICBXcml0YWJsZVNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhRXh0ZW5kSXRlbSwgRGF0YVR5cGUgfSBmcm9tICcuL2RhdGEtZXh0ZW5kLnR5cGVzJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1kYXRhLWV4dGVuZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLWV4dGVuZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kYXRhLWV4dGVuZC5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YUV4dGVuZENvbXBvbmVudCB7XG4gIHByb3BlcnRpZXMgPSBpbnB1dDxEYXRhRXh0ZW5kSXRlbVtdPihbXSk7XG4gIGV4dGVuZERhdGFFdmVudCA9IG91dHB1dDxEYXRhRXh0ZW5kSXRlbVtdPigpO1xuXG4gIGl0ZW1zOiBXcml0YWJsZVNpZ25hbDxEYXRhRXh0ZW5kSXRlbVtdPiA9IHNpZ25hbDxEYXRhRXh0ZW5kSXRlbVtdPihbXSk7XG4gIHNob3dBbGw6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgdmlzaWJsZUl0ZW1zOiBTaWduYWw8RGF0YUV4dGVuZEl0ZW1bXT47XG4gIGZvcm06IEZvcm1Hcm91cDtcbiAgc2VsZWN0ZWRJdGVtOiBEYXRhRXh0ZW5kSXRlbSB8IG51bGwgPSBudWxsO1xuXG4gIGRhdGFUeXBlcyA9IE9iamVjdC52YWx1ZXMoRGF0YVR5cGUpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyKSB7XG4gICAgdGhpcy52aXNpYmxlSXRlbXMgPSBjb21wdXRlZCgoKSA9PlxuICAgICAgdGhpcy5zaG93QWxsKCkgPyB0aGlzLml0ZW1zKCkgOiB0aGlzLml0ZW1zKCkuc2xpY2UoMCwgMylcbiAgICApO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLml0ZW1zLnNldCh0aGlzLnByb3BlcnRpZXMoKSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIE5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBEZWZhdWx0VmFsdWU6IFsnJ10sXG4gICAgICBEYXRhVHlwZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIE1heFZhbHVlOiBbMF0sXG4gICAgICBNaW5WYWx1ZTogWzBdLFxuICAgICAgSXNSZXF1aXJlZDogW2ZhbHNlXSxcbiAgICAgIE9wdGlvbnM6IFsnJ10sXG4gICAgfSk7XG5cbiAgICB0aGlzLmZvcm0uZ2V0KCdEYXRhVHlwZScpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICB2YWx1ZSA9PT0gRGF0YVR5cGUuU2luZ2xlU2VsZWN0aW9uIHx8XG4gICAgICAgIHZhbHVlID09PSBEYXRhVHlwZS5NdWx0aVNlbGVjdGlvblxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ09wdGlvbnMnKT8uZW5hYmxlKCk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ09wdGlvbnMnKT8uc2V0VmFsdWUoJycpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdPcHRpb25zJyk/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ09wdGlvbnMnKT8uY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ09wdGlvbnMnKT8uZGlzYWJsZSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIHZhbHVlID09PSBEYXRhVHlwZS5OdW1iZXIgfHxcbiAgICAgICAgdmFsdWUgPT09IERhdGFUeXBlLkRlY2ltYWwgfHxcbiAgICAgICAgdmFsdWUgPT09IERhdGFUeXBlLlNpbmdsZVNlbGVjdGlvbiB8fFxuICAgICAgICB2YWx1ZSA9PT0gRGF0YVR5cGUuTXVsdGlTZWxlY3Rpb25cbiAgICAgICkge1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdNYXhWYWx1ZScpPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ01pblZhbHVlJyk/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZSA9PT0gRGF0YVR5cGUuVGV4dCkge1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdNYXhWYWx1ZScpPy5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnTWluVmFsdWUnKT8uY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ01heFZhbHVlJyk/LmRpc2FibGUoKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnTWluVmFsdWUnKT8uZGlzYWJsZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnTWF4VmFsdWUnKT8uZW5hYmxlKCk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ01pblZhbHVlJyk/LmVuYWJsZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdPcHRpb25zJyk/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHRvZ2dsZVNob3dBbGwoKSB7XG4gICAgdGhpcy5zaG93QWxsLnVwZGF0ZSgocHJldikgPT4gIXByZXYpO1xuICB9XG5cbiAgYWRkSXRlbSgpIHtcbiAgICBjb25zdCBuZXdJdGVtID0gdGhpcy5mb3JtLnZhbHVlO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbSkge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLml0ZW1zKCkuaW5kZXhPZih0aGlzLnNlbGVjdGVkSXRlbSk7XG4gICAgICB0aGlzLml0ZW1zLnVwZGF0ZSgocHJldikgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkSXRlbXMgPSBbLi4ucHJldl07XG4gICAgICAgIHVwZGF0ZWRJdGVtc1tpbmRleF0gPSBuZXdJdGVtO1xuICAgICAgICByZXR1cm4gdXBkYXRlZEl0ZW1zO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXRlbXMudXBkYXRlKChwcmV2KSA9PiBbLi4ucHJldiwgbmV3SXRlbV0pO1xuICAgIH1cbiAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgfVxuXG4gIHJlbW92ZUl0ZW0oaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuaXRlbXMudXBkYXRlKChwcmV2KSA9PiBwcmV2LmZpbHRlcigoXywgaSkgPT4gaSAhPT0gaW5kZXgpKTtcbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgdGhpcy5leHRlbmREYXRhRXZlbnQuZW1pdCh0aGlzLml0ZW1zKCkpO1xuICB9XG5cbiAgY2FuY2VsKCkge1xuICAgIHRoaXMuaXRlbXMuc2V0KHRoaXMucHJvcGVydGllcygpKTtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMuaXRlbXMuc2V0KFtdKTtcbiAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgfVxuXG4gIGVkaXRJdGVtKGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5pdGVtcygpW2luZGV4XTtcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShpdGVtKTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGl0ZW07XG4gIH1cbn1cbiIsIjx2ZXJiZW4tY2FyZFxuICB3aWR0aD1cIjI0cmVtXCJcbiAgYm9yZGVyUmFkaXVzPVwiMXJlbVwiXG4gIFtib3JkZXJdPVwiJzFweCBzb2xpZCAjRDRBMDA3J1wiXG4gIGJnQ29sb3I9XCIjRkZGRkZGXCJcbiAgY2xhc3M9XCJleHBvcnQtY2FyZFwiXG4+XG4gIDxkaXYgY2FyZC1oZWFkZXIgY2xhc3M9XCJjYXJkLWhlYWRlclwiPlxuICAgIDxoNCBjbGFzcz1cImhlYWRlci10aXRsZVwiPkV4cGFuZDwvaDQ+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJyZXNldC1idXR0b25cIlxuICAgICAgW3N0eWxlLmNvbG9yXT1cIicjMzQ3OUU5J1wiXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCIndHJhbnNwYXJlbnQnXCJcbiAgICAgIFtzdHlsZS5ib3JkZXJdPVwiJ25vbmUnXCJcbiAgICAgIFtzdHlsZS5jdXJzb3JdPVwiJ3BvaW50ZXInXCJcbiAgICAgIFtzdHlsZS5mb250LXNpemVdPVwiJzEycHgnXCJcbiAgICAgIChjbGljayk9XCJyZXNldCgpXCJcbiAgICA+XG4gICAgICBSZXNldFxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjYXJkLWJvZHkgY2xhc3M9XCJjYXJkLWJvZHlcIj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRlclwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+RW50aXR5PC9oMz5cbiAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICBpY29uPVwiaW5mb1wiXG4gICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICBmaWxsPVwiZ3JleVwiXG4gICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdmlzaWJsZUl0ZW1zKCk7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cIml0ZW1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tbGFiZWxcIj5cbiAgICAgICAgICA8IS0tIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIFtpZF09XCInaXRlbS0nICsgaVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uc2VsZWN0ZWRcIlxuICAgICAgICAgIC8+IC0tPlxuICAgICAgICAgIDxsYWJlbCBbZm9yXT1cIidpdGVtLScgKyBpXCIgY2xhc3M9XCJjaGVja2JveC1sYWJlbFwiPlxuICAgICAgICAgICAge3sgaXRlbS5OYW1lIH19XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWFjdGlvbnNcIj5cbiAgICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgICAgaWNvbj1cImVkaXRcIlxuICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NzlFOVwiXG4gICAgICAgICAgICBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRJdGVtKGkpXCJcbiAgICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgICBpY29uPVwiZGVsZXRlXCJcbiAgICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICAgIHN0cm9rZT1cIiNFMjAwMDBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUl0ZW0oaSlcIlxuICAgICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiaXRlbXMoKS5sZW5ndGggPiAzXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNob3dBbGwoKVwiXG4gICAgICAgIGNsYXNzPVwic2hvdy1tb3JlXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4+e3sgc2hvd0FsbCgpID8gXCJTaG93IGxlc3NcIiA6IFwiU2hvdyBtb3JlXCIgfX08L3NwYW4+XG4gICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgaWNvbj1cImNoZXZyb25cIlxuICAgICAgICAgIFt3aWR0aF09XCI4XCJcbiAgICAgICAgICBbaGVpZ2h0XT1cIjZcIlxuICAgICAgICAgIGZpbGw9XCJibGFja1wiXG4gICAgICAgICAgc3Ryb2tlPVwiYmxhY2tcIlxuICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuICAgIDxociBjbGFzcz1cImRpdmlkZXJcIiAvPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5Qcm9wZXJ0aWVzPC9oMz5cbiAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICBpY29uPVwiaW5mb1wiXG4gICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICBmaWxsPVwiZ3JleVwiXG4gICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJhZGRJdGVtKClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgIDxwIGNsYXNzPVwiXCI+TmFtZTwvcD5cbiAgICAgICAgICA8dmVyYmVuYS1pbnB1dFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBwcm9wZXJ0eSBuYW1lXCJcbiAgICAgICAgICAgIGJvcmRlcj1cIjFweCBzb2xpZCAjY2NjXCJcbiAgICAgICAgICAgIGJvcmRlclJhZGl1cz1cIjVweFwiXG4gICAgICAgICAgICB0ZXh0Q29sb3I9XCJibGFja1wiXG4gICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgZm9udFNpemU9XCIxMXB4XCJcbiAgICAgICAgICAgIGhlaWdodD1cIjIwcHhcIlxuICAgICAgICAgICAgcGQ9XCIycHggNHB4ICFpbXBvcnRhbnRcIlxuICAgICAgICAgICAgYmdDb2xvcj1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgIFtzaG93Qm9yZGVyXT1cInRydWVcIlxuICAgICAgICAgICAgW3Nob3dFcnJvck1lc3NhZ2VdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbZXJyb3JQb3NpdGlvbl09XCInYm90dG9tJ1wiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJOYW1lXCJcbiAgICAgICAgICA+PC92ZXJiZW5hLWlucHV0PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJEYXRhVHlwZVwiPkRhdGEgVHlwZTwvbGFiZWw+XG4gICAgICAgICAgPHZlcmJlbi1kcm9wLWRvd25cbiAgICAgICAgICAgIGlkPVwiRGF0YVR5cGVcIlxuICAgICAgICAgICAgd2lkdGg9XCInMTAwJSdcIlxuICAgICAgICAgICAgaGVpZ2h0PVwiJzEuMjVyZW0nXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IHR5cGVcIlxuICAgICAgICAgICAgW29wdGlvbnNdPVwiZGF0YVR5cGVzXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIkRhdGFUeXBlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC92ZXJiZW4tZHJvcC1kb3duPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxsYWJlbCBodG1sRm9yPVwiT3B0aW9uc1wiIGNsYXNzPVwibWItMlwiPkVudGVyIE9wdGlvbnM8L2xhYmVsPlxuICAgICAgICAgIDx2ZXJiZW4tY2hpcFxuICAgICAgICAgICAgbGFiZWw9XCJPcHRpb25zXCJcbiAgICAgICAgICAgIGlkPVwiT3B0aW9uc1wiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0VudGVyIE9wdGlvbnMnXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIk9wdGlvbnNcIlxuICAgICAgICAgID48L3ZlcmJlbi1jaGlwPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJEZWZhdWx0VmFsdWVcIj5EZWZhdWx0IFZhbHVlPC9sYWJlbD5cblxuICAgICAgICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0VudGVyIGRlZmF1bHQgdGV4dCdcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiRGVmYXVsdFZhbHVlXCJcbiAgICAgICAgICAgIGlkPVwiRGVmYXVsdFZhbHVlXCJcbiAgICAgICAgICAgIGxhYmVsPVwiRGVmYXVsdCBWYWx1ZSAob3B0aW9uYWwpXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxwIGNsYXNzPVwibWItMlwiPlJlcXVpcmVkPC9wPlxuXG4gICAgICAgICAgPHZlcmJlbmEtc3dpdGNoXG4gICAgICAgICAgICBsYWJlbD1cIlJlcXVpcmVkXCJcbiAgICAgICAgICAgIFtvbkNvbG9yXT1cIicjMUEyMzdFJ1wiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJJc1JlcXVpcmVkXCJcbiAgICAgICAgICA+PC92ZXJiZW5hLXN3aXRjaD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlLXJhbmdlXCI+XG4gICAgICAgICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgICAgICAgIFt0eXBlXT1cIidudW1iZXInXCJcbiAgICAgICAgICAgIG5hbWU9XCJtaW5WYWx1ZVwiXG4gICAgICAgICAgICBsYWJlbD1cIk1pbiBWYWx1ZVwiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJNaW5WYWx1ZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8dmVyYmVuYS1pbnB1dFxuICAgICAgICAgICAgW3R5cGVdPVwiJ251bWJlcidcIlxuICAgICAgICAgICAgbmFtZT1cIm1heFZhbHVlXCJcbiAgICAgICAgICAgIGxhYmVsPVwiTWF4IFZhbHVlXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIk1pblZhbHVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFmb3JtLnZhbGlkXCJcbiAgICAgICAgICBjbGFzcz1cImFkZC1idXR0b24gbWwtYXV0b1wiXG4gICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgID5cbiAgICAgICAgICArIEFkZFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZm9ybT5cbiAgICA8L3NlY3Rpb24+XG4gIDwvZGl2PlxuICA8ZGl2IGNhcmQtZm9vdGVyIGNsYXNzPVwiY2FyZC1mb290ZXJcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiZXhwb3J0LWJ1dHRvblwiIChjbGljayk9XCJzYXZlKClcIj5FeHRlbmQ8L2J1dHRvbj5cbiAgPC9kaXY+XG48L3ZlcmJlbi1jYXJkPlxuIl19
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1leHRlbmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWV4dGVuZC9kYXRhLWV4dGVuZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtZXh0ZW5kL2RhdGEtZXh0ZW5kLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBRU4sTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFrQixRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7OztBQU8vRCxNQUFNLE9BQU8sbUJBQW1CO0lBWVY7SUFYcEIsVUFBVSxHQUFHLEtBQUssQ0FBbUIsRUFBRSxDQUFDLENBQUM7SUFDekMsZUFBZSxHQUFHLE1BQU0sRUFBb0IsQ0FBQztJQUU3QyxLQUFLLENBQW1DO0lBQ3hDLE9BQU8sR0FBNEIsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQzFELFlBQVksQ0FBMkI7SUFDdkMsSUFBSSxDQUFZO0lBQ2hCLFlBQVksR0FBMEIsSUFBSSxDQUFDO0lBRTNDLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXBDLFlBQW9CLEVBQWU7UUFBZixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUNoQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUs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QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhO1FBQ3BCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO3dHQTdHVSxtQkFBbUI7NEZBQW5CLG1CQUFtQiwyUENqQmhDLGdpS0FvTEE7OzRGRG5LYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgU2lnbmFsLFxuICBzaWduYWwsXG4gIFdyaXRhYmxlU2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERhdGFFeHRlbmRJdGVtLCBEYXRhVHlwZSB9IGZyb20gJy4vZGF0YS1leHRlbmQudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZGF0YS1leHRlbmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS1leHRlbmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZGF0YS1leHRlbmQuY29tcG9uZW50LmNzcycsXG59KVxuZXhwb3J0IGNsYXNzIERhdGFFeHRlbmRDb21wb25lbnQge1xuICBwcm9wZXJ0aWVzID0gaW5wdXQ8RGF0YUV4dGVuZEl0ZW1bXT4oW10pO1xuICBleHRlbmREYXRhRXZlbnQgPSBvdXRwdXQ8RGF0YUV4dGVuZEl0ZW1bXT4oKTtcblxuICBpdGVtczogV3JpdGFibGVTaWduYWw8RGF0YUV4dGVuZEl0ZW1bXT47XG4gIHNob3dBbGw6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgdmlzaWJsZUl0ZW1zOiBTaWduYWw8RGF0YUV4dGVuZEl0ZW1bXT47XG4gIGZvcm06IEZvcm1Hcm91cDtcbiAgc2VsZWN0ZWRJdGVtOiBEYXRhRXh0ZW5kSXRlbSB8IG51bGwgPSBudWxsO1xuXG4gIGRhdGFUeXBlcyA9IE9iamVjdC52YWx1ZXMoRGF0YVR5cGUpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyKSB7XG4gICAgdGhpcy52aXNpYmxlSXRlbXMgPSBjb21wdXRlZCgoKSA9PlxuICAgICAgdGhpcy5zaG93QWxsKCkgPyB0aGlzLml0ZW1zKCkgOiB0aGlzLml0ZW1zKCkuc2xpY2UoMCwgMylcbiAgICApO1xuICAgIC8vIGVmZmVjdCgoKSA9PiB7XG4gICAgLy8gICB0aGlzLml0ZW1zLnNldCh0aGlzLnByb3BlcnRpZXMoKSk7XG4gICAgLy8gfSk7XG5cbiAgICB0aGlzLml0ZW1zID0gc2lnbmFsPERhdGFFeHRlbmRJdGVtW10+KFtdKTtcblxuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgTmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIERlZmF1bHRWYWx1ZTogWycnXSxcbiAgICAgIERhdGFUeXBlOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgTWF4VmFsdWU6IFswXSxcbiAgICAgIE1pblZhbHVlOiBbMF0sXG4gICAgICBJc1JlcXVpcmVkOiBbZmFsc2VdLFxuICAgICAgT3B0aW9uczogWycnXSxcbiAgICB9KTtcblxuICAgIHRoaXMuZm9ybS5nZXQoJ0RhdGFUeXBlJyk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIHZhbHVlID09PSBEYXRhVHlwZS5TaW5nbGVTZWxlY3Rpb24gfHxcbiAgICAgICAgdmFsdWUgPT09IERhdGFUeXBlLk11bHRpU2VsZWN0aW9uXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnT3B0aW9ucycpPy5lbmFibGUoKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnT3B0aW9ucycpPy5zZXRWYWx1ZSgnJyk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ09wdGlvbnMnKT8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnT3B0aW9ucycpPy5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnT3B0aW9ucycpPy5kaXNhYmxlKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgdmFsdWUgPT09IERhdGFUeXBlLk51bWJlciB8fFxuICAgICAgICB2YWx1ZSA9PT0gRGF0YVR5cGUuRGVjaW1hbCB8fFxuICAgICAgICB2YWx1ZSA9PT0gRGF0YVR5cGUuU2luZ2xlU2VsZWN0aW9uIHx8XG4gICAgICAgIHZhbHVlID09PSBEYXRhVHlwZS5NdWx0aVNlbGVjdGlvblxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ01heFZhbHVlJyk/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnTWluVmFsdWUnKT8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlID09PSBEYXRhVHlwZS5UZXh0KSB7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ01heFZhbHVlJyk/LmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdNaW5WYWx1ZScpPy5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnTWF4VmFsdWUnKT8uZGlzYWJsZSgpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdNaW5WYWx1ZScpPy5kaXNhYmxlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdNYXhWYWx1ZScpPy5lbmFibGUoKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnTWluVmFsdWUnKT8uZW5hYmxlKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZm9ybS5nZXQoJ09wdGlvbnMnKT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH0pO1xuICB9XG5cbiAgdG9nZ2xlU2hvd0FsbCgpIHtcbiAgICB0aGlzLnNob3dBbGwudXBkYXRlKChwcmV2KSA9PiAhcHJldik7XG4gIH1cblxuICBhZGRJdGVtKCkge1xuICAgIGNvbnN0IG5ld0l0ZW0gPSB0aGlzLmZvcm0udmFsdWU7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuaXRlbXMoKS5pbmRleE9mKHRoaXMuc2VsZWN0ZWRJdGVtKTtcbiAgICAgIHRoaXMuaXRlbXMudXBkYXRlKChwcmV2KSA9PiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRJdGVtcyA9IFsuLi5wcmV2XTtcbiAgICAgICAgdXBkYXRlZEl0ZW1zW2luZGV4XSA9IG5ld0l0ZW07XG4gICAgICAgIHJldHVybiB1cGRhdGVkSXRlbXM7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pdGVtcy51cGRhdGUoKHByZXYpID0+IFsuLi5wcmV2LCBuZXdJdGVtXSk7XG4gICAgfVxuICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICB9XG5cbiAgcmVtb3ZlSXRlbShpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5pdGVtcy51cGRhdGUoKHByZXYpID0+IHByZXYuZmlsdGVyKChfLCBpKSA9PiBpICE9PSBpbmRleCkpO1xuICB9XG5cbiAgc2F2ZSgpIHtcbiAgICB0aGlzLmV4dGVuZERhdGFFdmVudC5lbWl0KHRoaXMuaXRlbXMoKSk7XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5pdGVtcy5zZXQodGhpcy5wcm9wZXJ0aWVzKCkpO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5pdGVtcy5zZXQoW10pO1xuICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICB9XG5cbiAgZWRpdEl0ZW0oaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1zKClbaW5kZXhdO1xuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKGl0ZW0pO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gaXRlbTtcbiAgfVxufVxuIiwiPHZlcmJlbi1jYXJkXG4gIHdpZHRoPVwiMjRyZW1cIlxuICBib3JkZXJSYWRpdXM9XCIxcmVtXCJcbiAgW2JvcmRlcl09XCInMXB4IHNvbGlkICNENEEwMDcnXCJcbiAgYmdDb2xvcj1cIiNGRkZGRkZcIlxuICBjbGFzcz1cImV4cG9ydC1jYXJkXCJcbj5cbiAgPGRpdiBjYXJkLWhlYWRlciBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XG4gICAgPGg0IGNsYXNzPVwiaGVhZGVyLXRpdGxlXCI+RXhwYW5kPC9oND5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cInJlc2V0LWJ1dHRvblwiXG4gICAgICBbc3R5bGUuY29sb3JdPVwiJyMzNDc5RTknXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIid0cmFuc3BhcmVudCdcIlxuICAgICAgW3N0eWxlLmJvcmRlcl09XCInbm9uZSdcIlxuICAgICAgW3N0eWxlLmN1cnNvcl09XCIncG9pbnRlcidcIlxuICAgICAgW3N0eWxlLmZvbnQtc2l6ZV09XCInMTJweCdcIlxuICAgICAgKGNsaWNrKT1cInJlc2V0KClcIlxuICAgID5cbiAgICAgIFJlc2V0XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNhcmQtYm9keSBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5FbnRpdHk8L2gzPlxuICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgIGljb249XCJpbmZvXCJcbiAgICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgIGZpbGw9XCJncmV5XCJcbiAgICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2aXNpYmxlSXRlbXMoKTsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiaXRlbVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1sYWJlbFwiPlxuICAgICAgICAgIDwhLS0gPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgW2lkXT1cIidpdGVtLScgKyBpXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5zZWxlY3RlZFwiXG4gICAgICAgICAgLz4gLS0+XG4gICAgICAgICAgPGxhYmVsIFtmb3JdPVwiJ2l0ZW0tJyArIGlcIiBjbGFzcz1cImNoZWNrYm94LWxhYmVsXCI+XG4gICAgICAgICAgICB7eyBpdGVtLk5hbWUgfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tYWN0aW9uc1wiPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgICBpY29uPVwiZWRpdFwiXG4gICAgICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICBzdHJva2U9XCIjMzQ3OUU5XCJcbiAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZWRpdEl0ZW0oaSlcIlxuICAgICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgIGljb249XCJkZWxldGVcIlxuICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiI0UyMDAwMFwiXG4gICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlSXRlbShpKVwiXG4gICAgICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJpdGVtcygpLmxlbmd0aCA+IDNcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2hvd0FsbCgpXCJcbiAgICAgICAgY2xhc3M9XCJzaG93LW1vcmVcIlxuICAgICAgPlxuICAgICAgICA8c3Bhbj57eyBzaG93QWxsKCkgPyBcIlNob3cgbGVzc1wiIDogXCJTaG93IG1vcmVcIiB9fTwvc3Bhbj5cbiAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICBpY29uPVwiY2hldnJvblwiXG4gICAgICAgICAgW3dpZHRoXT1cIjhcIlxuICAgICAgICAgIFtoZWlnaHRdPVwiNlwiXG4gICAgICAgICAgZmlsbD1cImJsYWNrXCJcbiAgICAgICAgICBzdHJva2U9XCJibGFja1wiXG4gICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG4gICAgPGhyIGNsYXNzPVwiZGl2aWRlclwiIC8+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1oZWFkZXJcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPlByb3BlcnRpZXM8L2gzPlxuICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgIGljb249XCJpbmZvXCJcbiAgICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgIGZpbGw9XCJncmV5XCJcbiAgICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cImFkZEl0ZW0oKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJcIj5OYW1lPC9wPlxuICAgICAgICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHByb3BlcnR5IG5hbWVcIlxuICAgICAgICAgICAgYm9yZGVyPVwiMXB4IHNvbGlkICNjY2NcIlxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzPVwiNXB4XCJcbiAgICAgICAgICAgIHRleHRDb2xvcj1cImJsYWNrXCJcbiAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICBmb250U2l6ZT1cIjExcHhcIlxuICAgICAgICAgICAgaGVpZ2h0PVwiMjBweFwiXG4gICAgICAgICAgICBwZD1cIjJweCA0cHggIWltcG9ydGFudFwiXG4gICAgICAgICAgICBiZ0NvbG9yPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgW3Nob3dCb3JkZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbc2hvd0Vycm9yTWVzc2FnZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtlcnJvclBvc2l0aW9uXT1cIidib3R0b20nXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIk5hbWVcIlxuICAgICAgICAgID48L3ZlcmJlbmEtaW5wdXQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cIkRhdGFUeXBlXCI+RGF0YSBUeXBlPC9sYWJlbD5cbiAgICAgICAgICA8dmVyYmVuLWRyb3AtZG93blxuICAgICAgICAgICAgaWQ9XCJEYXRhVHlwZVwiXG4gICAgICAgICAgICB3aWR0aD1cIicxMDAlJ1wiXG4gICAgICAgICAgICBoZWlnaHQ9XCInMS4yNXJlbSdcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgdHlwZVwiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJkYXRhVHlwZXNcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiRGF0YVR5cGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L3ZlcmJlbi1kcm9wLWRvd24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGxhYmVsIGh0bWxGb3I9XCJPcHRpb25zXCIgY2xhc3M9XCJtYi0yXCI+RW50ZXIgT3B0aW9uczwvbGFiZWw+XG4gICAgICAgICAgPHZlcmJlbi1jaGlwXG4gICAgICAgICAgICBsYWJlbD1cIk9wdGlvbnNcIlxuICAgICAgICAgICAgaWQ9XCJPcHRpb25zXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInRW50ZXIgT3B0aW9ucydcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiT3B0aW9uc1wiXG4gICAgICAgICAgPjwvdmVyYmVuLWNoaXA+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cIkRlZmF1bHRWYWx1ZVwiPkRlZmF1bHQgVmFsdWU8L2xhYmVsPlxuXG4gICAgICAgICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInRW50ZXIgZGVmYXVsdCB0ZXh0J1wiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJEZWZhdWx0VmFsdWVcIlxuICAgICAgICAgICAgaWQ9XCJEZWZhdWx0VmFsdWVcIlxuICAgICAgICAgICAgbGFiZWw9XCJEZWZhdWx0IFZhbHVlIChvcHRpb25hbClcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPHAgY2xhc3M9XCJtYi0yXCI+UmVxdWlyZWQ8L3A+XG5cbiAgICAgICAgICA8dmVyYmVuYS1zd2l0Y2hcbiAgICAgICAgICAgIGxhYmVsPVwiUmVxdWlyZWRcIlxuICAgICAgICAgICAgW29uQ29sb3JdPVwiJyMxQTIzN0UnXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIklzUmVxdWlyZWRcIlxuICAgICAgICAgID48L3ZlcmJlbmEtc3dpdGNoPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWUtcmFuZ2VcIj5cbiAgICAgICAgICA8dmVyYmVuYS1pbnB1dFxuICAgICAgICAgICAgW3R5cGVdPVwiJ251bWJlcidcIlxuICAgICAgICAgICAgbmFtZT1cIm1pblZhbHVlXCJcbiAgICAgICAgICAgIGxhYmVsPVwiTWluIFZhbHVlXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIk1pblZhbHVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICAgICAgICBbdHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICAgICAgICBuYW1lPVwibWF4VmFsdWVcIlxuICAgICAgICAgICAgbGFiZWw9XCJNYXggVmFsdWVcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiTWluVmFsdWVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWZvcm0udmFsaWRcIlxuICAgICAgICAgIGNsYXNzPVwiYWRkLWJ1dHRvbiBtbC1hdXRvXCJcbiAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgPlxuICAgICAgICAgICsgQWRkXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9mb3JtPlxuICAgIDwvc2VjdGlvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2FyZC1mb290ZXIgY2xhc3M9XCJjYXJkLWZvb3RlclwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJleHBvcnQtYnV0dG9uXCIgKGNsaWNrKT1cInNhdmUoKVwiPkV4dGVuZDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvdmVyYmVuLWNhcmQ+XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, computed, effect, input, output, signal, } from '@angular/core';
|
|
2
|
-
import { FormArray
|
|
2
|
+
import { FormArray } from '@angular/forms';
|
|
3
3
|
import { DataImportService } from './data-import.service';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "./data-import.service";
|
|
@@ -90,7 +90,7 @@ export class DataImportComponent {
|
|
|
90
90
|
});
|
|
91
91
|
this.previewColumnsList = computed(() => {
|
|
92
92
|
return this.previewColumns()
|
|
93
|
-
.filter((col) => col.importKey || col.formControlName)
|
|
93
|
+
.filter((col) => col.importKey || col.importBy || col.formControlName)
|
|
94
94
|
.map((column) => {
|
|
95
95
|
const matchingTemplate = this.columnTemplates().find((t) => t.columnId === column.id);
|
|
96
96
|
if (matchingTemplate) {
|
|
@@ -115,7 +115,7 @@ export class DataImportComponent {
|
|
|
115
115
|
this.headers = computed(() => {
|
|
116
116
|
return (this.fields() ??
|
|
117
117
|
this.previewColumnsList()
|
|
118
|
-
.filter((col) => col.importKey)
|
|
118
|
+
.filter((col) => col.importKey || col.importBy)
|
|
119
119
|
.map((col) => col.header.toString()));
|
|
120
120
|
});
|
|
121
121
|
}
|
|
@@ -180,4 +180,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImpo
|
|
|
180
180
|
type: Component,
|
|
181
181
|
args: [{ selector: 'lib-data-import', providers: [DataImportService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n class=\"export-card\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Import</h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"reset()\"\n >\n Reset\n </button>\n </div>\n <div card-body class=\"card-body\">\n <div class=\"flex gap-4 justify-between\">\n <button class=\"export-button\" (click)=\"handleTemplateExport()\">\n Download Template\n </button>\n <label for=\"fileInput\" class=\"export-button\">Upload File</label>\n </div>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div\n class=\"drop-area\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n <p>\n Drag and drop files here or\n <label for=\"fileInput\" [style.color]=\"'#3479E9'\"\n >click to browse</label\n >\n </p>\n <input\n type=\"file\"\n id=\"fileInput\"\n (change)=\"onFileSelected($event)\"\n style=\"display: none\"\n accept=\".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\"\n multiple\n />\n </div>\n <div *ngIf=\"files.length > 0\">\n <h3>Uploaded Files:</h3>\n <ul>\n <li *ngFor=\"let file of files\">{{ file.name }}</li>\n </ul>\n </div>\n </section>\n </div>\n <div card-footer class=\"card-footer\">\n <button\n [disabled]=\"service.importedData().length < 1\"\n class=\"export-button\"\n (click)=\"save()\"\n >\n Import\n </button>\n </div>\n</verben-card>\n\n<!-- Modal Component -->\n<verben-dialogue\n [showCloseIcon]=\"true\"\n [dismissOutsideClick]=\"true\"\n [closeOnEscape]=\"true\"\n [size]=\"'large'\"\n [mode]=\"'dialogue'\"\n [customClass]=\"'my-modal-custom-class'\"\n [disableFooter]=\"false\"\n [modalData]=\"[{ data: {} }]\"\n [isVisible]=\"showPreview\"\n [headerTemplate]=\"headerTemplate\"\n [bodyTemplate]=\"bodyTemplate\"\n [footerTemplate]=\"footerTemplate\"\n dialogueWidth=\"85%\"\n>\n <a download=\"\"></a>\n</verben-dialogue>\n\n<!-- Define templates -->\n<ng-template #headerTemplate>\n <h2>Upload Preview</h2>\n</ng-template>\n\n<ng-template #bodyTemplate>\n <div class=\"flex gap-4 items-center justify-between my-4\">\n <p class=\"\">Total Items: {{ service.importedData().length }}</p>\n\n <p class=\"\">Duplicates: {{ duplicateIndexSet.size }}</p>\n\n <p class=\"\">Invalid Items: {{ invalidIndexSet.size }}</p>\n\n <verben-drop-down\n [multiselect]=\"true\"\n placeholder=\"Find duplicates by\"\n [options]=\"headers()\"\n [ngModel]=\"uniqueIdentifiers()\"\n (ngModelChange)=\"uniqueIdentifiers.set($event)\"\n ></verben-drop-down>\n </div>\n <div style=\"max-height: min(75vh, 780px); overflow: auto\">\n <lib-data-table\n [data]=\"service.importedData()\"\n [columns]=\"previewColumnsList()\"\n [formGroupConfig]=\"formGroupConfig()\"\n [useVirtualScroll]=\"true\"\n (rowSave)=\"service.addRow($event)\"\n >\n <ng-container libColumn=\"actions\">\n <ng-template\n #cell\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex action-buttons\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n\n <ng-template\n #cellEdit\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex action-buttons\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"tick\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n</ng-template>\n\n<ng-template #footerTemplate>\n <div class=\"footer-buttons flex gap-4 items-center justify-between my-4\">\n <button\n class=\"btn btn-secondary cancel-button\"\n (click)=\"showPreview = false\"\n >\n Cancel\n </button>\n <button class=\"btn btn-primary export-button\" (click)=\"save()\">\n Complete\n </button>\n </div>\n</ng-template>\n", styles: [".drop-area{border:2px dashed #ccc;padding:20px;text-align:center;cursor:pointer}.drop-area.drag-active{background-color:#eee}.export-card{font-size:.75rem;z-index:10}.card-header,.card-footer{display:flex;justify-content:space-between;align-items:center;background-color:transparent;padding:4px!important}.header-title{font-weight:600;font-size:.8125rem}.card-body{display:flex;flex-direction:column;gap:.5rem;padding-top:-8px!important}.section{display:flex;flex-direction:column;gap:.5rem}.section-header{display:flex;justify-content:space-between;align-items:center}.section-title{font-size:.8125rem}.item{display:flex;justify-content:space-between;align-items:center}.item-label{display:flex;align-items:center;gap:.5rem}.checkbox-label{line-height:1}.item-actions{display:flex;gap:.5rem}.show-more{display:flex;gap:.5em;align-items:center;color:#6b7280;cursor:pointer}.divider{border:none;border-top:1px solid #e8eaf1}.operation-grid{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.add-button{margin-top:.5rem;margin-left:auto;outline:none;border:none;background-color:transparent;color:#3479e9;font-size:.75rem;font-weight:500;cursor:pointer}.footer-buttons{display:flex;gap:.5rem;align-items:center;justify-content:space-between;width:100%}.cancel-button,.export-button{outline:none;border:none;padding:.2rem 1.6rem;font-size:.75rem;font-weight:600;cursor:pointer}.cancel-button{background-color:#404040;color:#fff}.export-button{background-color:#ffe681;color:#404040}.value-range{display:flex;gap:.5rem;align-items:center}.action-buttons{display:flex;align-items:center;gap:2rem}\n"] }]
|
|
182
182
|
}], ctorParameters: () => [{ type: i1.DataImportService }] });
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1pbXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWltcG9ydC9kYXRhLWltcG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtaW1wb3J0L2RhdGEtaW1wb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFFTixNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFLdkIsT0FBTyxFQUVMLFNBQVMsR0FHVixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7O0FBUzFELE1BQU0sT0FBTyxtQkFBbUI7SUE0RFg7SUEzRG5CLGNBQWMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUF5QixDQUFDO0lBQ3pELGVBQWUsR0FBRyxLQUFLLEVBSXBCLENBQUM7SUFDSjs7T0FFRztJQUNILE1BQU0sR0FBRyxLQUFLLEVBQVksQ0FBQztJQUMzQixLQUFLLEdBQUcsS0FBSyxDQUFTLGlCQUFpQixDQUFDLENBQUM7SUFDekMsZUFBZSxHQUFHLEtBQUssQ0FBNkIsRUFBRSxDQUFDLENBQUM7SUFDeEQsTUFBTSxHQUFHLEtBQUssRUFBK0IsQ0FBQztJQUM5Qzs7T0FFRztJQUNILFdBQVcsR0FBRyxLQUFLLEVBQU8sQ0FBQztJQUMzQjs7O09BR0c7SUFDSCxnQkFBZ0IsR0FBRyxLQUFLLEVBQTRDLENBQUM7SUFDckU7O09BRUc7SUFDSCxtQkFBbUIsR0FBRyxNQUFNLEVBQVksQ0FBQztJQUN6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RSxRQUFRLENBQUM7UUFDbEQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLGlEQUFpRDtJQUNuRCxDQUFDO3dHQXpNVSxtQkFBbUI7NEZBQW5CLG1CQUFtQixreENBSG5CLENBQUMsaUJBQWlCLENBQUMsMEJDNUJoQyw4OEtBZ01BOzs0RkRqS2EsbUJBQW1CO2tCQVAvQixTQUFTOytCQUNFLGlCQUFpQixhQUdoQixDQUFDLGlCQUFpQixDQUFDLG1CQUNiLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBTaWduYWwsXG4gIHNpZ25hbCxcbiAgV3JpdGFibGVTaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29sdW1uRGVmaW5pdGlvbixcbiAgRm9ybUdyb3VwQ29uZmlnLFxufSBmcm9tICd2ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdGFibGUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQXJyYXksXG4gIEZvcm1Db250cm9sLFxuICBGb3JtR3JvdXAsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbHVtbkRpcmVjdGl2ZSB9IGZyb20gJ3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS10YWJsZSc7XG5pbXBvcnQgeyBEYXRhSW1wb3J0U2VydmljZSB9IGZyb20gJy4vZGF0YS1pbXBvcnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1kYXRhLWltcG9ydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLWltcG9ydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kYXRhLWltcG9ydC5jb21wb25lbnQuY3NzJyxcbiAgcHJvdmlkZXJzOiBbRGF0YUltcG9ydFNlcnZpY2VdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YUltcG9ydENvbXBvbmVudDxUIGV4dGVuZHMge30+IHtcbiAgcHJldmlld0NvbHVtbnMgPSBpbnB1dC5yZXF1aXJlZDxDb2x1bW5EZWZpbml0aW9uPFQ+W10+KCk7XG4gIGZvcm1Hcm91cENvbmZpZyA9IGlucHV0PFxuICAgIEZvcm1Hcm91cENvbmZpZzx7XG4gICAgICBbSyBpbiBrZXlvZiBUXTogQWJzdHJhY3RDb250cm9sO1xuICAgIH0+XG4gID4oKTtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBpbXBvcnRLZXkgb2YgcHJldmlld0NvbHVtbnMgaW5zdGVhZFxuICAgKi9cbiAgZmllbGRzID0gaW5wdXQ8c3RyaW5nW10+KCk7XG4gIHRpdGxlID0gaW5wdXQ8c3RyaW5nPignZXhwb3J0LXRlbXBsYXRlJyk7XG4gIGNvbHVtblRlbXBsYXRlcyA9IGlucHV0PHJlYWRvbmx5IENvbHVtbkRpcmVjdGl2ZVtdPihbXSk7XG4gIHBhcnNlciA9IGlucHV0PChkYXRhOiBhbnkpID0+IFBhcnRpYWw8VD5bXT4oKTtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFBsZWFzZSByZW1vdmUsIG5vdyBoYW5kbGVkIGludGVybmFsbHlcbiAgICovXG4gIHByZXZpZXdEYXRhID0gaW5wdXQ8VFtdPigpO1xuICAvKipcbiAgICogUGFzcyB0aGUgbWV0aG9kIHRvIHVzZSB0aGUgaW1wb3J0ZWQgZGF0YSxcbiAgICogYW5kIGV2ZW50dWFsbHkgcmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWxseSB1c2VkXG4gICAqL1xuICBvbkltcG9ydENvbXBsZXRlID0gaW5wdXQ8KGRhdGE6IFBhcnRpYWw8VD5bXSkgPT4gUHJvbWlzZTxib29sZWFuPj4oKTtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFBsZWFzZSByZW1vdmUsIG5vdyBoYW5kbGVkIGludGVybmFsbHlcbiAgICovXG4gIGV4cG9ydFRlbXBsYXRlRXZlbnQgPSBvdXRwdXQ8c3RyaW5nW10+KCk7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBQbGVhc2UgcmVtb3ZlLCBub3cgaGFuZGxlZCBpbnRlcm5hbGx5XG4gICAqL1xuICBpbXBvcnRFdmVudCA9IG91dHB1dDxGaWxlPigpO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBvbkltcG9ydENvbXBsZXRlIGlucHV0IGluc3RlYWRcbiAgICovXG4gIGltcG9ydEV2ZW50RGF0YSA9IG91dHB1dDxQYXJ0aWFsPFQ+W10+KCk7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBQbGVhc2UgcmVtb3ZlLCBub3cgaGFuZGxlZCBpbnRlcm5hbGx5XG4gICAqL1xuICByb3dTYXZlID0gb3V0cHV0PHtcbiAgICBpbmRleDogbnVtYmVyO1xuICAgIGtleTogbnVtYmVyIHwgc3RyaW5nO1xuICAgIGRhdGE6IFBhcnRpYWw8VD47XG4gIH0+KCk7XG5cbiAgLy8gZGF0YTogU2lnbmFsPChUICYgeyBpc0R1cGxpY2F0ZTogYm9vbGVhbiB9KVtdPjtcbiAgcHJldmlld0NvbHVtbnNMaXN0OiBTaWduYWw8Q29sdW1uRGVmaW5pdGlvbjxUPltdPjtcbiAgZm9ybXMgPSBuZXcgRm9ybUFycmF5PEZvcm1Hcm91cD4oW10pO1xuICB1bmlxdWVJZGVudGlmaWVyczogV3JpdGFibGVTaWduYWw8c3RyaW5nW10+ID0gc2lnbmFsKFtdKTtcbiAgLy8gZHVwbGljYXRlRGF0YU1hcDogTWFwPHN0cmluZywgbnVtYmVyPiA9IG5ldyBNYXAoKTtcbiAgZHVwbGljYXRlSW5kZXhTZXQgPSBuZXcgU2V0PG51bWJlcj4oKTtcbiAgaW52YWxpZEluZGV4U2V0ID0gbmV3IE1hcDxudW1iZXIsIENvbHVtbkRpcmVjdGl2ZVsnY29sdW1uSWQnXVtdPigpO1xuXG4gIGhlYWRlcnM6IFNpZ25hbDxzdHJpbmdbXT47XG5cbiAgcHJpdmF0ZSBfZXh0OiAneGxzeCcgfCAneGxzJyB8ICdjc3YnID0gJ3hsc3gnO1xuXG4gIGZpbGVzOiBGaWxlW10gPSBbXTtcbiAgaXNEcmFnZ2luZyA9IGZhbHNlO1xuICBzaG93UHJldmlldyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzZXJ2aWNlOiBEYXRhSW1wb3J0U2VydmljZTxUPikge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAvLyBjb25zdCBjb2x1bW5zID0gdGhpcy5wcmV2aWV3Q29sdW1uc0xpc3QoKTtcblxuICAgICAgY29uc3QgaWRlbnRpZmllcnMgPSB0aGlzLnVuaXF1ZUlkZW50aWZpZXJzKCk7XG5cbiAgICAgIHRoaXMuc2VydmljZS5pbXBvcnRlZERhdGEoKT8uZm9yRWFjaCgoZCwgaSwgYXJyKSA9PiB7XG4gICAgICAgIGlmIChzZXJ2aWNlLmlzRHVwbGljYXRlKGQsIGFyciwgaWRlbnRpZmllcnMpKSB7XG4gICAgICAgICAgdGhpcy5kdXBsaWNhdGVJbmRleFNldC5hZGQoaSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjb2x1bW5zXG4gICAgICAgIC8vICAgLmZpbHRlcigoeyB2YWxpZGF0b3JGbiB9KSA9PiB2YWxpZGF0b3JGbiAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAvLyAgIC5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgLy8gICAgIGNvbnN0IGludmFsaWRGaWVsZHMgPSBPYmplY3QuZW50cmllcyhkKS5yZWR1Y2U8c3RyaW5nW10+KFxuICAgICAgICAvLyAgICAgICAoZiwgW2ssIHZdLCBpKSA9PiB7XG4gICAgICAgIC8vICAgICAgICAgaWYgKFxuICAgICAgICAvLyAgICAgICAgICAgY29sdW1uLnZhbGlkYXRvckZuICYmXG4gICAgICAgIC8vICAgICAgICAgICAhY29sdW1uLnZhbGlkYXRvckZuKHYgYXMgVFtrZXlvZiBUXSlcbiAgICAgICAgLy8gICAgICAgICApIHtcbiAgICAgICAgLy8gICAgICAgICAgIGYucHVzaChjb2x1bW4uaWQpO1xuICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgLy8gICAgICAgICByZXR1cm4gZjtcbiAgICAgICAgLy8gICAgICAgfSxcbiAgICAgICAgLy8gICAgICAgW11cbiAgICAgICAgLy8gICAgICk7XG5cbiAgICAgICAgLy8gICAgIGlmIChpbnZhbGlkRmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gICAgICAgdGhpcy5pbnZhbGlkSW5kZXhTZXQuc2V0KGksIGludmFsaWRGaWVsZHMpO1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnByZXZpZXdDb2x1bW5zTGlzdCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnByZXZpZXdDb2x1bW5zKClcbiAgICAgICAgLmZpbHRlcigoY29sKSA9PiBjb2wuaW1wb3J0S2V5IHx8IGNvbC5mb3JtQ29udHJvbE5hbWUpXG4gICAgICAgIC5tYXAoKGNvbHVtbikgPT4ge1xuICAgICAgICAgIGNvbnN0IG1hdGNoaW5nVGVtcGxhdGUgPSB0aGlzLmNvbHVtblRlbXBsYXRlcygpLmZpbmQoXG4gICAgICAgICAgICAodCkgPT4gdC5jb2x1bW5JZCA9PT0gY29sdW1uLmlkXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAobWF0Y2hpbmdUZW1wbGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgICAgICAvLyBhY2Nlc3NvcktleTogY29sdW1uLmltcG9ydEtleSxcbiAgICAgICAgICAgICAgY2VsbFRlbXBsYXRlOiBtYXRjaGluZ1RlbXBsYXRlLmNlbGxUZW1wbGF0ZSxcbiAgICAgICAgICAgICAgY2VsbEVkaXRUZW1wbGF0ZTogbWF0Y2hpbmdUZW1wbGF0ZS5jZWxsRWRpdFRlbXBsYXRlLFxuICAgICAgICAgICAgICBoZWFkZXJUZW1wbGF0ZTogbWF0Y2hpbmdUZW1wbGF0ZS5oZWFkZXJUZW1wbGF0ZSxcbiAgICAgICAgICAgICAgZm9vdGVyVGVtcGxhdGU6IG1hdGNoaW5nVGVtcGxhdGUuZm9vdGVyVGVtcGxhdGUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gY29sdW1uO1xuICAgICAgICB9KVxuICAgICAgICAuY29uY2F0KFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ2FjdGlvbnMnLFxuICAgICAgICAgICAgaGVhZGVyOiAnQWN0aW9ucycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmhlYWRlcnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLmZpZWxkcygpID8/XG4gICAgICAgIHRoaXMucHJldmlld0NvbHVtbnNMaXN0KClcbiAgICAgICAgICAuZmlsdGVyKChjb2wpID0+IGNvbC5pbXBvcnRLZXkpXG4gICAgICAgICAgLm1hcCgoY29sKSA9PiBjb2wuaGVhZGVyLnRvU3RyaW5nKCkpXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmlzRHJhZ2dpbmcgPSB0cnVlO1xuICB9XG5cbiAgb25EcmFnTGVhdmUoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5pc0RyYWdnaW5nID0gZmFsc2U7XG4gIH1cblxuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5pc0RyYWdnaW5nID0gZmFsc2U7XG4gICAgdGhpcy5maWxlcyA9IEFycmF5LmZyb20oZXZlbnQuZGF0YVRyYW5zZmVyIS5maWxlcyk7XG5cbiAgICB0aGlzLnNlcnZpY2UuaGFuZGxlSW1wb3J0KFxuICAgICAgdGhpcy5maWxlc1swXSxcbiAgICAgIHRoaXMucHJldmlld0NvbHVtbnNMaXN0KCksXG4gICAgICB0aGlzLnBhcnNlcigpXG4gICAgKTtcbiAgICAvLyB0aGlzLmltcG9ydEV2ZW50LmVtaXQodGhpcy5maWxlc1swXSk7XG4gICAgdGhpcy5zaG93UHJldmlldyA9IHRydWU7XG4gIH1cblxuICBvbkZpbGVTZWxlY3RlZChldmVudDogYW55KSB7XG4gICAgdGhpcy5maWxlcyA9IEFycmF5LmZyb20oZXZlbnQudGFyZ2V0LmZpbGVzKTtcbiAgICB0aGlzLnNlcnZpY2UuaGFuZGxlSW1wb3J0KFxuICAgICAgdGhpcy5maWxlc1swXSxcbiAgICAgIHRoaXMucHJldmlld0NvbHVtbnNMaXN0KCksXG4gICAgICB0aGlzLnBhcnNlcigpXG4gICAgKTtcblxuICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9ICcnO1xuXG4gICAgLy8gdGhpcy5pbXBvcnRFdmVudC5lbWl0KHRoaXMuZmlsZXNbMF0pO1xuICAgIHRoaXMuc2hvd1ByZXZpZXcgPSB0cnVlO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5maWxlcyA9IFtdO1xuICAgIHRoaXMuc2hvd1ByZXZpZXcgPSBmYWxzZTtcbiAgICB0aGlzLnNlcnZpY2UuY2xlYXJEYXRhKCk7XG4gIH1cblxuICBzYXZlKCkge1xuICAgIC8vIGNvbnNvbGUubG9nKCdQUkVWREFUQScsIHRoaXMuc2VydmljZS5pbXBvcnRlZERhdGEoKSk7XG4gICAgY29uc3Qgb25Db21wbGV0ZSA9IHRoaXMub25JbXBvcnRDb21wbGV0ZSgpO1xuICAgIGlmIChvbkNvbXBsZXRlKSB7XG4gICAgICBvbkNvbXBsZXRlKHRoaXMuc2VydmljZS5pbXBvcnRlZERhdGEoKSkudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgIHRoaXMuc2hvd1ByZXZpZXcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW1wb3J0RXZlbnREYXRhLmVtaXQodGhpcy5zZXJ2aWNlLmltcG9ydGVkRGF0YSgpIHx8IFtdKTtcbiAgICAgIHRoaXMuc2hvd1ByZXZpZXcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBnZXRDb250cm9sTmFtZXMoKSB7XG4gICAgY29uc3QgY29udHJvbHMgPSB0aGlzLmZvcm1Hcm91cENvbmZpZygpPy5jb250cm9scztcbiAgICBpZiAoY29udHJvbHMpIHtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhjb250cm9scyk7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGhhbmRsZVRlbXBsYXRlRXhwb3J0KCkge1xuICAgIHRoaXMuc2VydmljZS5oYW5kbGVUZW1wbGF0ZUV4cG9ydCh0aGlzLmhlYWRlcnMoKSwgdGhpcy50aXRsZSgpKTtcbiAgICAvLyB0aGlzLmV4cG9ydFRlbXBsYXRlRXZlbnQuZW1pdCh0aGlzLmhlYWRlcnMoKSk7XG4gIH1cblxuICAvLyBnZXRGb3JtQ29udHJvbChpbmRleDogbnVtYmVyLCBmaWVsZDogc3RyaW5nKSB7XG4gIC8vICAgY29uc3QgY29udHJvbCA9IHRoaXMuLmdldChpbmRleCk/LmdldChmaWVsZCkgYXMgRm9ybUNvbnRyb2w8YW55PjtcbiAgLy8gICBjb25zb2xlLmxvZyhjb250cm9sKTtcbiAgLy8gICByZXR1cm4gY29udHJvbDtcbiAgLy8gfVxufVxuIiwiPHZlcmJlbi1jYXJkXG4gIHdpZHRoPVwiMjRyZW1cIlxuICBib3JkZXJSYWRpdXM9XCIxcmVtXCJcbiAgW2JvcmRlcl09XCInMXB4IHNvbGlkICNENEEwMDcnXCJcbiAgYmdDb2xvcj1cIiNGRkZGRkZcIlxuICBjbGFzcz1cImV4cG9ydC1jYXJkXCJcbj5cbiAgPGRpdiBjYXJkLWhlYWRlciBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XG4gICAgPGg0IGNsYXNzPVwiaGVhZGVyLXRpdGxlXCI+SW1wb3J0PC9oND5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cInJlc2V0LWJ1dHRvblwiXG4gICAgICBbc3R5bGUuY29sb3JdPVwiJyMzNDc5RTknXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIid0cmFuc3BhcmVudCdcIlxuICAgICAgW3N0eWxlLmJvcmRlcl09XCInbm9uZSdcIlxuICAgICAgW3N0eWxlLmN1cnNvcl09XCIncG9pbnRlcidcIlxuICAgICAgW3N0eWxlLmZvbnQtc2l6ZV09XCInMTJweCdcIlxuICAgICAgKGNsaWNrKT1cInJlc2V0KClcIlxuICAgID5cbiAgICAgIFJlc2V0XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNhcmQtYm9keSBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC00IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImV4cG9ydC1idXR0b25cIiAoY2xpY2spPVwiaGFuZGxlVGVtcGxhdGVFeHBvcnQoKVwiPlxuICAgICAgICBEb3dubG9hZCBUZW1wbGF0ZVxuICAgICAgPC9idXR0b24+XG4gICAgICA8bGFiZWwgZm9yPVwiZmlsZUlucHV0XCIgY2xhc3M9XCJleHBvcnQtYnV0dG9uXCI+VXBsb2FkIEZpbGU8L2xhYmVsPlxuICAgIDwvZGl2PlxuICAgIDxociBjbGFzcz1cImRpdmlkZXJcIiAvPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImRyb3AtYXJlYVwiXG4gICAgICAgIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIlxuICAgICAgICAoZHJhZ2xlYXZlKT1cIm9uRHJhZ0xlYXZlKCRldmVudClcIlxuICAgICAgICAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxwPlxuICAgICAgICAgIERyYWcgYW5kIGRyb3AgZmlsZXMgaGVyZSBvclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJmaWxlSW5wdXRcIiBbc3R5bGUuY29sb3JdPVwiJyMzNDc5RTknXCJcbiAgICAgICAgICAgID5jbGljayB0byBicm93c2U8L2xhYmVsXG4gICAgICAgICAgPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICBpZD1cImZpbGVJbnB1dFwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIlxuICAgICAgICAgIGFjY2VwdD1cIi5jc3YsIGFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0LCBhcHBsaWNhdGlvbi92bmQubXMtZXhjZWxcIlxuICAgICAgICAgIG11bHRpcGxlXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmaWxlcy5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxoMz5VcGxvYWRlZCBGaWxlczo8L2gzPlxuICAgICAgICA8dWw+XG4gICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBmaWxlIG9mIGZpbGVzXCI+e3sgZmlsZS5uYW1lIH19PC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2FyZC1mb290ZXIgY2xhc3M9XCJjYXJkLWZvb3RlclwiPlxuICAgIDxidXR0b25cbiAgICAgIFtkaXNhYmxlZF09XCJzZXJ2aWNlLmltcG9ydGVkRGF0YSgpLmxlbmd0aCA8IDFcIlxuICAgICAgY2xhc3M9XCJleHBvcnQtYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJzYXZlKClcIlxuICAgID5cbiAgICAgIEltcG9ydFxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvdmVyYmVuLWNhcmQ+XG5cbjwhLS0gTW9kYWwgQ29tcG9uZW50IC0tPlxuPHZlcmJlbi1kaWFsb2d1ZVxuICBbc2hvd0Nsb3NlSWNvbl09XCJ0cnVlXCJcbiAgW2Rpc21pc3NPdXRzaWRlQ2xpY2tdPVwidHJ1ZVwiXG4gIFtjbG9zZU9uRXNjYXBlXT1cInRydWVcIlxuICBbc2l6ZV09XCInbGFyZ2UnXCJcbiAgW21vZGVdPVwiJ2RpYWxvZ3VlJ1wiXG4gIFtjdXN0b21DbGFzc109XCInbXktbW9kYWwtY3VzdG9tLWNsYXNzJ1wiXG4gIFtkaXNhYmxlRm9vdGVyXT1cImZhbHNlXCJcbiAgW21vZGFsRGF0YV09XCJbeyBkYXRhOiB7fSB9XVwiXG4gIFtpc1Zpc2libGVdPVwic2hvd1ByZXZpZXdcIlxuICBbaGVhZGVyVGVtcGxhdGVdPVwiaGVhZGVyVGVtcGxhdGVcIlxuICBbYm9keVRlbXBsYXRlXT1cImJvZHlUZW1wbGF0ZVwiXG4gIFtmb290ZXJUZW1wbGF0ZV09XCJmb290ZXJUZW1wbGF0ZVwiXG4gIGRpYWxvZ3VlV2lkdGg9XCI4NSVcIlxuPlxuICA8YSBkb3dubG9hZD1cIlwiPjwvYT5cbjwvdmVyYmVuLWRpYWxvZ3VlPlxuXG48IS0tIERlZmluZSB0ZW1wbGF0ZXMgLS0+XG48bmctdGVtcGxhdGUgI2hlYWRlclRlbXBsYXRlPlxuICA8aDI+VXBsb2FkIFByZXZpZXc8L2gyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNib2R5VGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC00IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbXktNFwiPlxuICAgIDxwIGNsYXNzPVwiXCI+VG90YWwgSXRlbXM6IHt7IHNlcnZpY2UuaW1wb3J0ZWREYXRhKCkubGVuZ3RoIH19PC9wPlxuXG4gICAgPHAgY2xhc3M9XCJcIj5EdXBsaWNhdGVzOiB7eyBkdXBsaWNhdGVJbmRleFNldC5zaXplIH19PC9wPlxuXG4gICAgPHAgY2xhc3M9XCJcIj5JbnZhbGlkIEl0ZW1zOiB7eyBpbnZhbGlkSW5kZXhTZXQuc2l6ZSB9fTwvcD5cblxuICAgIDx2ZXJiZW4tZHJvcC1kb3duXG4gICAgICBbbXVsdGlzZWxlY3RdPVwidHJ1ZVwiXG4gICAgICBwbGFjZWhvbGRlcj1cIkZpbmQgZHVwbGljYXRlcyBieVwiXG4gICAgICBbb3B0aW9uc109XCJoZWFkZXJzKClcIlxuICAgICAgW25nTW9kZWxdPVwidW5pcXVlSWRlbnRpZmllcnMoKVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJ1bmlxdWVJZGVudGlmaWVycy5zZXQoJGV2ZW50KVwiXG4gICAgPjwvdmVyYmVuLWRyb3AtZG93bj5cbiAgPC9kaXY+XG4gIDxkaXYgc3R5bGU9XCJtYXgtaGVpZ2h0OiBtaW4oNzV2aCwgNzgwcHgpOyBvdmVyZmxvdzogYXV0b1wiPlxuICAgIDxsaWItZGF0YS10YWJsZVxuICAgICAgW2RhdGFdPVwic2VydmljZS5pbXBvcnRlZERhdGEoKVwiXG4gICAgICBbY29sdW1uc109XCJwcmV2aWV3Q29sdW1uc0xpc3QoKVwiXG4gICAgICBbZm9ybUdyb3VwQ29uZmlnXT1cImZvcm1Hcm91cENvbmZpZygpXCJcbiAgICAgIFt1c2VWaXJ0dWFsU2Nyb2xsXT1cInRydWVcIlxuICAgICAgKHJvd1NhdmUpPVwic2VydmljZS5hZGRSb3coJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciBsaWJDb2x1bW49XCJhY3Rpb25zXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICNjZWxsXG4gICAgICAgICAgbGV0LXZhbHVlXG4gICAgICAgICAgbGV0LWRlbGV0ZVJvdz1cImRlbGV0ZVJvd1wiXG4gICAgICAgICAgbGV0LWlzRWRpdGluZz1cImlzRWRpdGluZ1wiXG4gICAgICAgICAgbGV0LXRvZ2dsZVJvd0VkaXQ9XCJ0b2dnbGVSb3dFZGl0XCJcbiAgICAgICAgICBsZXQtcm93PVwicm93XCJcbiAgICAgICAgICBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhY3Rpb24tYnV0dG9uc1wiPlxuICAgICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJvd0VkaXQoKVwiXG4gICAgICAgICAgICAgIGljb249XCJlZGl0XCJcbiAgICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgPjwvdmVyYmVuLXN2Zz5cblxuICAgICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgICAgaWNvbj1cImRlbGV0ZVwiXG4gICAgICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlUm93KClcIlxuICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgI2NlbGxFZGl0XG4gICAgICAgICAgbGV0LXZhbHVlXG4gICAgICAgICAgbGV0LWRlbGV0ZVJvdz1cImRlbGV0ZVJvd1wiXG4gICAgICAgICAgbGV0LWlzRWRpdGluZz1cImlzRWRpdGluZ1wiXG4gICAgICAgICAgbGV0LXRvZ2dsZVJvd0VkaXQ9XCJ0b2dnbGVSb3dFZGl0XCJcbiAgICAgICAgICBsZXQtcm93PVwicm93XCJcbiAgICAgICAgICBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhY3Rpb24tYnV0dG9uc1wiPlxuICAgICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJvd0VkaXQoKVwiXG4gICAgICAgICAgICAgIGljb249XCJ0aWNrXCJcbiAgICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgPjwvdmVyYmVuLXN2Zz5cblxuICAgICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgICAgaWNvbj1cImRlbGV0ZVwiXG4gICAgICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlUm93KClcIlxuICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2xpYi1kYXRhLXRhYmxlPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZm9vdGVyVGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmb290ZXItYnV0dG9ucyBmbGV4IGdhcC00IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbXktNFwiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgY2FuY2VsLWJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwic2hvd1ByZXZpZXcgPSBmYWxzZVwiXG4gICAgPlxuICAgICAgQ2FuY2VsXG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBleHBvcnQtYnV0dG9uXCIgKGNsaWNrKT1cInNhdmUoKVwiPlxuICAgICAgQ29tcGxldGVcbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1pbXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWltcG9ydC9kYXRhLWltcG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtaW1wb3J0L2RhdGEtaW1wb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFFTixNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLFNBQVMsRUFFVixNQUFNLGdCQUFnQixDQUFDO0FBTXhCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7O0FBUzFELE1BQU0sT0FBTyxtQkFBbUI7SUE0RFg7SUEzRG5CLGNBQWMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUF5QixDQUFDO0lBQ3pELGVBQWUsR0FBRyxLQUFLLEVBSXBCLENBQUM7SUFDSjs7T0FFRztJQUNILE1BQU0sR0FBRyxLQUFLLEVBQVksQ0FBQztJQUMzQixLQUFLLEdBQUcsS0FBSyxDQUFTLGlCQUFpQixDQUFDLENBQUM7SUFDekMsZUFBZSxHQUFHLEtBQUssQ0FBNkIsRUFBRSxDQUFDLENBQUM7SUFDeEQsTUFBTSxHQUFHLEtBQUssRUFBK0IsQ0FBQztJQUM5Qzs7T0FFRztJQUNILFdBQVcsR0FBRyxLQUFLLEVBQU8sQ0FBQztJQUMzQjs7O09BR0c7SUFDSCxnQkFBZ0IsR0FBRyxLQUFLLEVBQTRDLENBQUM7SUFDckU7O09BRUc7SUFDSCxtQkFBbUIsR0FBRyxNQUFNLEVBQVksQ0FBQztJQUN6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YixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsUUFBUSxDQUFDO1FBQ2xELElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELG9CQUFvQjtRQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNoRSxpREFBaUQ7SUFDbkQsQ0FBQzt3R0F6TVUsbUJBQW1COzRGQUFuQixtQkFBbUIsa3hDQUhuQixDQUFDLGlCQUFpQixDQUFDLDBCQzNCaEMsODhLQWdNQTs7NEZEbEthLG1CQUFtQjtrQkFQL0IsU0FBUzsrQkFDRSxpQkFBaUIsYUFHaEIsQ0FBQyxpQkFBaUIsQ0FBQyxtQkFDYix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgU2lnbmFsLFxuICBzaWduYWwsXG4gIFdyaXRhYmxlU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgRm9ybUFycmF5LFxuICBGb3JtR3JvdXBcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgQ29sdW1uRGVmaW5pdGlvbixcbiAgQ29sdW1uRGlyZWN0aXZlLFxuICBGb3JtR3JvdXBDb25maWcsXG59IGZyb20gJ3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS10YWJsZSc7XG5pbXBvcnQgeyBEYXRhSW1wb3J0U2VydmljZSB9IGZyb20gJy4vZGF0YS1pbXBvcnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1kYXRhLWltcG9ydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLWltcG9ydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kYXRhLWltcG9ydC5jb21wb25lbnQuY3NzJyxcbiAgcHJvdmlkZXJzOiBbRGF0YUltcG9ydFNlcnZpY2VdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YUltcG9ydENvbXBvbmVudDxUIGV4dGVuZHMge30+IHtcbiAgcHJldmlld0NvbHVtbnMgPSBpbnB1dC5yZXF1aXJlZDxDb2x1bW5EZWZpbml0aW9uPFQ+W10+KCk7XG4gIGZvcm1Hcm91cENvbmZpZyA9IGlucHV0PFxuICAgIEZvcm1Hcm91cENvbmZpZzx7XG4gICAgICBbSyBpbiBrZXlvZiBUXTogQWJzdHJhY3RDb250cm9sO1xuICAgIH0+XG4gID4oKTtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBpbXBvcnRLZXkgb2YgcHJldmlld0NvbHVtbnMgaW5zdGVhZFxuICAgKi9cbiAgZmllbGRzID0gaW5wdXQ8c3RyaW5nW10+KCk7XG4gIHRpdGxlID0gaW5wdXQ8c3RyaW5nPignZXhwb3J0LXRlbXBsYXRlJyk7XG4gIGNvbHVtblRlbXBsYXRlcyA9IGlucHV0PHJlYWRvbmx5IENvbHVtbkRpcmVjdGl2ZVtdPihbXSk7XG4gIHBhcnNlciA9IGlucHV0PChkYXRhOiBhbnkpID0+IFBhcnRpYWw8VD5bXT4oKTtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFBsZWFzZSByZW1vdmUsIG5vdyBoYW5kbGVkIGludGVybmFsbHlcbiAgICovXG4gIHByZXZpZXdEYXRhID0gaW5wdXQ8VFtdPigpO1xuICAvKipcbiAgICogUGFzcyB0aGUgbWV0aG9kIHRvIHVzZSB0aGUgaW1wb3J0ZWQgZGF0YSxcbiAgICogYW5kIGV2ZW50dWFsbHkgcmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWxseSB1c2VkXG4gICAqL1xuICBvbkltcG9ydENvbXBsZXRlID0gaW5wdXQ8KGRhdGE6IFBhcnRpYWw8VD5bXSkgPT4gUHJvbWlzZTxib29sZWFuPj4oKTtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFBsZWFzZSByZW1vdmUsIG5vdyBoYW5kbGVkIGludGVybmFsbHlcbiAgICovXG4gIGV4cG9ydFRlbXBsYXRlRXZlbnQgPSBvdXRwdXQ8c3RyaW5nW10+KCk7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBQbGVhc2UgcmVtb3ZlLCBub3cgaGFuZGxlZCBpbnRlcm5hbGx5XG4gICAqL1xuICBpbXBvcnRFdmVudCA9IG91dHB1dDxGaWxlPigpO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBvbkltcG9ydENvbXBsZXRlIGlucHV0IGluc3RlYWRcbiAgICovXG4gIGltcG9ydEV2ZW50RGF0YSA9IG91dHB1dDxQYXJ0aWFsPFQ+W10+KCk7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBQbGVhc2UgcmVtb3ZlLCBub3cgaGFuZGxlZCBpbnRlcm5hbGx5XG4gICAqL1xuICByb3dTYXZlID0gb3V0cHV0PHtcbiAgICBpbmRleDogbnVtYmVyO1xuICAgIGtleTogbnVtYmVyIHwgc3RyaW5nO1xuICAgIGRhdGE6IFBhcnRpYWw8VD47XG4gIH0+KCk7XG5cbiAgLy8gZGF0YTogU2lnbmFsPChUICYgeyBpc0R1cGxpY2F0ZTogYm9vbGVhbiB9KVtdPjtcbiAgcHJldmlld0NvbHVtbnNMaXN0OiBTaWduYWw8Q29sdW1uRGVmaW5pdGlvbjxUPltdPjtcbiAgZm9ybXMgPSBuZXcgRm9ybUFycmF5PEZvcm1Hcm91cD4oW10pO1xuICB1bmlxdWVJZGVudGlmaWVyczogV3JpdGFibGVTaWduYWw8c3RyaW5nW10+ID0gc2lnbmFsKFtdKTtcbiAgLy8gZHVwbGljYXRlRGF0YU1hcDogTWFwPHN0cmluZywgbnVtYmVyPiA9IG5ldyBNYXAoKTtcbiAgZHVwbGljYXRlSW5kZXhTZXQgPSBuZXcgU2V0PG51bWJlcj4oKTtcbiAgaW52YWxpZEluZGV4U2V0ID0gbmV3IE1hcDxudW1iZXIsIENvbHVtbkRpcmVjdGl2ZVsnY29sdW1uSWQnXVtdPigpO1xuXG4gIGhlYWRlcnM6IFNpZ25hbDxzdHJpbmdbXT47XG5cbiAgcHJpdmF0ZSBfZXh0OiAneGxzeCcgfCAneGxzJyB8ICdjc3YnID0gJ3hsc3gnO1xuXG4gIGZpbGVzOiBGaWxlW10gPSBbXTtcbiAgaXNEcmFnZ2luZyA9IGZhbHNlO1xuICBzaG93UHJldmlldyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzZXJ2aWNlOiBEYXRhSW1wb3J0U2VydmljZTxUPikge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAvLyBjb25zdCBjb2x1bW5zID0gdGhpcy5wcmV2aWV3Q29sdW1uc0xpc3QoKTtcblxuICAgICAgY29uc3QgaWRlbnRpZmllcnMgPSB0aGlzLnVuaXF1ZUlkZW50aWZpZXJzKCk7XG5cbiAgICAgIHRoaXMuc2VydmljZS5pbXBvcnRlZERhdGEoKT8uZm9yRWFjaCgoZCwgaSwgYXJyKSA9PiB7XG4gICAgICAgIGlmIChzZXJ2aWNlLmlzRHVwbGljYXRlKGQsIGFyciwgaWRlbnRpZmllcnMpKSB7XG4gICAgICAgICAgdGhpcy5kdXBsaWNhdGVJbmRleFNldC5hZGQoaSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjb2x1bW5zXG4gICAgICAgIC8vICAgLmZpbHRlcigoeyB2YWxpZGF0b3JGbiB9KSA9PiB2YWxpZGF0b3JGbiAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAvLyAgIC5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgLy8gICAgIGNvbnN0IGludmFsaWRGaWVsZHMgPSBPYmplY3QuZW50cmllcyhkKS5yZWR1Y2U8c3RyaW5nW10+KFxuICAgICAgICAvLyAgICAgICAoZiwgW2ssIHZdLCBpKSA9PiB7XG4gICAgICAgIC8vICAgICAgICAgaWYgKFxuICAgICAgICAvLyAgICAgICAgICAgY29sdW1uLnZhbGlkYXRvckZuICYmXG4gICAgICAgIC8vICAgICAgICAgICAhY29sdW1uLnZhbGlkYXRvckZuKHYgYXMgVFtrZXlvZiBUXSlcbiAgICAgICAgLy8gICAgICAgICApIHtcbiAgICAgICAgLy8gICAgICAgICAgIGYucHVzaChjb2x1bW4uaWQpO1xuICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgLy8gICAgICAgICByZXR1cm4gZjtcbiAgICAgICAgLy8gICAgICAgfSxcbiAgICAgICAgLy8gICAgICAgW11cbiAgICAgICAgLy8gICAgICk7XG5cbiAgICAgICAgLy8gICAgIGlmIChpbnZhbGlkRmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gICAgICAgdGhpcy5pbnZhbGlkSW5kZXhTZXQuc2V0KGksIGludmFsaWRGaWVsZHMpO1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnByZXZpZXdDb2x1bW5zTGlzdCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnByZXZpZXdDb2x1bW5zKClcbiAgICAgICAgLmZpbHRlcigoY29sKSA9PiBjb2wuaW1wb3J0S2V5IHx8IGNvbC5pbXBvcnRCeSB8fCBjb2wuZm9ybUNvbnRyb2xOYW1lKVxuICAgICAgICAubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgICBjb25zdCBtYXRjaGluZ1RlbXBsYXRlID0gdGhpcy5jb2x1bW5UZW1wbGF0ZXMoKS5maW5kKFxuICAgICAgICAgICAgKHQpID0+IHQuY29sdW1uSWQgPT09IGNvbHVtbi5pZFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKG1hdGNoaW5nVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgICAgICAgLy8gYWNjZXNzb3JLZXk6IGNvbHVtbi5pbXBvcnRLZXksXG4gICAgICAgICAgICAgIGNlbGxUZW1wbGF0ZTogbWF0Y2hpbmdUZW1wbGF0ZS5jZWxsVGVtcGxhdGUsXG4gICAgICAgICAgICAgIGNlbGxFZGl0VGVtcGxhdGU6IG1hdGNoaW5nVGVtcGxhdGUuY2VsbEVkaXRUZW1wbGF0ZSxcbiAgICAgICAgICAgICAgaGVhZGVyVGVtcGxhdGU6IG1hdGNoaW5nVGVtcGxhdGUuaGVhZGVyVGVtcGxhdGUsXG4gICAgICAgICAgICAgIGZvb3RlclRlbXBsYXRlOiBtYXRjaGluZ1RlbXBsYXRlLmZvb3RlclRlbXBsYXRlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGNvbHVtbjtcbiAgICAgICAgfSlcbiAgICAgICAgLmNvbmNhdChbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdhY3Rpb25zJyxcbiAgICAgICAgICAgIGhlYWRlcjogJ0FjdGlvbnMnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5oZWFkZXJzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5maWVsZHMoKSA/P1xuICAgICAgICB0aGlzLnByZXZpZXdDb2x1bW5zTGlzdCgpXG4gICAgICAgICAgLmZpbHRlcigoY29sKSA9PiBjb2wuaW1wb3J0S2V5IHx8IGNvbC5pbXBvcnRCeSlcbiAgICAgICAgICAubWFwKChjb2wpID0+IGNvbC5oZWFkZXIudG9TdHJpbmcoKSlcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBvbkRyYWdPdmVyKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuaXNEcmFnZ2luZyA9IHRydWU7XG4gIH1cblxuICBvbkRyYWdMZWF2ZShldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIG9uRHJvcChldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmZpbGVzID0gQXJyYXkuZnJvbShldmVudC5kYXRhVHJhbnNmZXIhLmZpbGVzKTtcblxuICAgIHRoaXMuc2VydmljZS5oYW5kbGVJbXBvcnQoXG4gICAgICB0aGlzLmZpbGVzWzBdLFxuICAgICAgdGhpcy5wcmV2aWV3Q29sdW1uc0xpc3QoKSxcbiAgICAgIHRoaXMucGFyc2VyKClcbiAgICApO1xuICAgIC8vIHRoaXMuaW1wb3J0RXZlbnQuZW1pdCh0aGlzLmZpbGVzWzBdKTtcbiAgICB0aGlzLnNob3dQcmV2aWV3ID0gdHJ1ZTtcbiAgfVxuXG4gIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmZpbGVzID0gQXJyYXkuZnJvbShldmVudC50YXJnZXQuZmlsZXMpO1xuICAgIHRoaXMuc2VydmljZS5oYW5kbGVJbXBvcnQoXG4gICAgICB0aGlzLmZpbGVzWzBdLFxuICAgICAgdGhpcy5wcmV2aWV3Q29sdW1uc0xpc3QoKSxcbiAgICAgIHRoaXMucGFyc2VyKClcbiAgICApO1xuXG4gICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gJyc7XG5cbiAgICAvLyB0aGlzLmltcG9ydEV2ZW50LmVtaXQodGhpcy5maWxlc1swXSk7XG4gICAgdGhpcy5zaG93UHJldmlldyA9IHRydWU7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLmZpbGVzID0gW107XG4gICAgdGhpcy5zaG93UHJldmlldyA9IGZhbHNlO1xuICAgIHRoaXMuc2VydmljZS5jbGVhckRhdGEoKTtcbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ1BSRVZEQVRBJywgdGhpcy5zZXJ2aWNlLmltcG9ydGVkRGF0YSgpKTtcbiAgICBjb25zdCBvbkNvbXBsZXRlID0gdGhpcy5vbkltcG9ydENvbXBsZXRlKCk7XG4gICAgaWYgKG9uQ29tcGxldGUpIHtcbiAgICAgIG9uQ29tcGxldGUodGhpcy5zZXJ2aWNlLmltcG9ydGVkRGF0YSgpKS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgdGhpcy5zaG93UHJldmlldyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbXBvcnRFdmVudERhdGEuZW1pdCh0aGlzLnNlcnZpY2UuaW1wb3J0ZWREYXRhKCkgfHwgW10pO1xuICAgICAgdGhpcy5zaG93UHJldmlldyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGdldENvbnRyb2xOYW1lcygpIHtcbiAgICBjb25zdCBjb250cm9scyA9IHRoaXMuZm9ybUdyb3VwQ29uZmlnKCk/LmNvbnRyb2xzO1xuICAgIGlmIChjb250cm9scykge1xuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGNvbnRyb2xzKTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgaGFuZGxlVGVtcGxhdGVFeHBvcnQoKSB7XG4gICAgdGhpcy5zZXJ2aWNlLmhhbmRsZVRlbXBsYXRlRXhwb3J0KHRoaXMuaGVhZGVycygpLCB0aGlzLnRpdGxlKCkpO1xuICAgIC8vIHRoaXMuZXhwb3J0VGVtcGxhdGVFdmVudC5lbWl0KHRoaXMuaGVhZGVycygpKTtcbiAgfVxuXG4gIC8vIGdldEZvcm1Db250cm9sKGluZGV4OiBudW1iZXIsIGZpZWxkOiBzdHJpbmcpIHtcbiAgLy8gICBjb25zdCBjb250cm9sID0gdGhpcy4uZ2V0KGluZGV4KT8uZ2V0KGZpZWxkKSBhcyBGb3JtQ29udHJvbDxhbnk+O1xuICAvLyAgIGNvbnNvbGUubG9nKGNvbnRyb2wpO1xuICAvLyAgIHJldHVybiBjb250cm9sO1xuICAvLyB9XG59XG4iLCI8dmVyYmVuLWNhcmRcbiAgd2lkdGg9XCIyNHJlbVwiXG4gIGJvcmRlclJhZGl1cz1cIjFyZW1cIlxuICBbYm9yZGVyXT1cIicxcHggc29saWQgI0Q0QTAwNydcIlxuICBiZ0NvbG9yPVwiI0ZGRkZGRlwiXG4gIGNsYXNzPVwiZXhwb3J0LWNhcmRcIlxuPlxuICA8ZGl2IGNhcmQtaGVhZGVyIGNsYXNzPVwiY2FyZC1oZWFkZXJcIj5cbiAgICA8aDQgY2xhc3M9XCJoZWFkZXItdGl0bGVcIj5JbXBvcnQ8L2g0PlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwicmVzZXQtYnV0dG9uXCJcbiAgICAgIFtzdHlsZS5jb2xvcl09XCInIzM0NzlFOSdcIlxuICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiJ3RyYW5zcGFyZW50J1wiXG4gICAgICBbc3R5bGUuYm9yZGVyXT1cIidub25lJ1wiXG4gICAgICBbc3R5bGUuY3Vyc29yXT1cIidwb2ludGVyJ1wiXG4gICAgICBbc3R5bGUuZm9udC1zaXplXT1cIicxMnB4J1wiXG4gICAgICAoY2xpY2spPVwicmVzZXQoKVwiXG4gICAgPlxuICAgICAgUmVzZXRcbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2FyZC1ib2R5IGNsYXNzPVwiY2FyZC1ib2R5XCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTQganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiZXhwb3J0LWJ1dHRvblwiIChjbGljayk9XCJoYW5kbGVUZW1wbGF0ZUV4cG9ydCgpXCI+XG4gICAgICAgIERvd25sb2FkIFRlbXBsYXRlXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxsYWJlbCBmb3I9XCJmaWxlSW5wdXRcIiBjbGFzcz1cImV4cG9ydC1idXR0b25cIj5VcGxvYWQgRmlsZTwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgPGhyIGNsYXNzPVwiZGl2aWRlclwiIC8+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZHJvcC1hcmVhXCJcbiAgICAgICAgKGRyYWdvdmVyKT1cIm9uRHJhZ092ZXIoJGV2ZW50KVwiXG4gICAgICAgIChkcmFnbGVhdmUpPVwib25EcmFnTGVhdmUoJGV2ZW50KVwiXG4gICAgICAgIChkcm9wKT1cIm9uRHJvcCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPHA+XG4gICAgICAgICAgRHJhZyBhbmQgZHJvcCBmaWxlcyBoZXJlIG9yXG4gICAgICAgICAgPGxhYmVsIGZvcj1cImZpbGVJbnB1dFwiIFtzdHlsZS5jb2xvcl09XCInIzM0NzlFOSdcIlxuICAgICAgICAgICAgPmNsaWNrIHRvIGJyb3dzZTwvbGFiZWxcbiAgICAgICAgICA+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgIGlkPVwiZmlsZUlucHV0XCJcbiAgICAgICAgICAoY2hhbmdlKT1cIm9uRmlsZVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiXG4gICAgICAgICAgYWNjZXB0PVwiLmNzdiwgYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQsIGFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbFwiXG4gICAgICAgICAgbXVsdGlwbGVcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZpbGVzLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPGgzPlVwbG9hZGVkIEZpbGVzOjwvaDM+XG4gICAgICAgIDx1bD5cbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZXNcIj57eyBmaWxlLm5hbWUgfX08L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjYXJkLWZvb3RlciBjbGFzcz1cImNhcmQtZm9vdGVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgW2Rpc2FibGVkXT1cInNlcnZpY2UuaW1wb3J0ZWREYXRhKCkubGVuZ3RoIDwgMVwiXG4gICAgICBjbGFzcz1cImV4cG9ydC1idXR0b25cIlxuICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXG4gICAgPlxuICAgICAgSW1wb3J0XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC92ZXJiZW4tY2FyZD5cblxuPCEtLSBNb2RhbCBDb21wb25lbnQgLS0+XG48dmVyYmVuLWRpYWxvZ3VlXG4gIFtzaG93Q2xvc2VJY29uXT1cInRydWVcIlxuICBbZGlzbWlzc091dHNpZGVDbGlja109XCJ0cnVlXCJcbiAgW2Nsb3NlT25Fc2NhcGVdPVwidHJ1ZVwiXG4gIFtzaXplXT1cIidsYXJnZSdcIlxuICBbbW9kZV09XCInZGlhbG9ndWUnXCJcbiAgW2N1c3RvbUNsYXNzXT1cIidteS1tb2RhbC1jdXN0b20tY2xhc3MnXCJcbiAgW2Rpc2FibGVGb290ZXJdPVwiZmFsc2VcIlxuICBbbW9kYWxEYXRhXT1cIlt7IGRhdGE6IHt9IH1dXCJcbiAgW2lzVmlzaWJsZV09XCJzaG93UHJldmlld1wiXG4gIFtoZWFkZXJUZW1wbGF0ZV09XCJoZWFkZXJUZW1wbGF0ZVwiXG4gIFtib2R5VGVtcGxhdGVdPVwiYm9keVRlbXBsYXRlXCJcbiAgW2Zvb3RlclRlbXBsYXRlXT1cImZvb3RlclRlbXBsYXRlXCJcbiAgZGlhbG9ndWVXaWR0aD1cIjg1JVwiXG4+XG4gIDxhIGRvd25sb2FkPVwiXCI+PC9hPlxuPC92ZXJiZW4tZGlhbG9ndWU+XG5cbjwhLS0gRGVmaW5lIHRlbXBsYXRlcyAtLT5cbjxuZy10ZW1wbGF0ZSAjaGVhZGVyVGVtcGxhdGU+XG4gIDxoMj5VcGxvYWQgUHJldmlldzwvaDI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2JvZHlUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTQgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBteS00XCI+XG4gICAgPHAgY2xhc3M9XCJcIj5Ub3RhbCBJdGVtczoge3sgc2VydmljZS5pbXBvcnRlZERhdGEoKS5sZW5ndGggfX08L3A+XG5cbiAgICA8cCBjbGFzcz1cIlwiPkR1cGxpY2F0ZXM6IHt7IGR1cGxpY2F0ZUluZGV4U2V0LnNpemUgfX08L3A+XG5cbiAgICA8cCBjbGFzcz1cIlwiPkludmFsaWQgSXRlbXM6IHt7IGludmFsaWRJbmRleFNldC5zaXplIH19PC9wPlxuXG4gICAgPHZlcmJlbi1kcm9wLWRvd25cbiAgICAgIFttdWx0aXNlbGVjdF09XCJ0cnVlXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiRmluZCBkdXBsaWNhdGVzIGJ5XCJcbiAgICAgIFtvcHRpb25zXT1cImhlYWRlcnMoKVwiXG4gICAgICBbbmdNb2RlbF09XCJ1bmlxdWVJZGVudGlmaWVycygpXCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVuaXF1ZUlkZW50aWZpZXJzLnNldCgkZXZlbnQpXCJcbiAgICA+PC92ZXJiZW4tZHJvcC1kb3duPlxuICA8L2Rpdj5cbiAgPGRpdiBzdHlsZT1cIm1heC1oZWlnaHQ6IG1pbig3NXZoLCA3ODBweCk7IG92ZXJmbG93OiBhdXRvXCI+XG4gICAgPGxpYi1kYXRhLXRhYmxlXG4gICAgICBbZGF0YV09XCJzZXJ2aWNlLmltcG9ydGVkRGF0YSgpXCJcbiAgICAgIFtjb2x1bW5zXT1cInByZXZpZXdDb2x1bW5zTGlzdCgpXCJcbiAgICAgIFtmb3JtR3JvdXBDb25maWddPVwiZm9ybUdyb3VwQ29uZmlnKClcIlxuICAgICAgW3VzZVZpcnR1YWxTY3JvbGxdPVwidHJ1ZVwiXG4gICAgICAocm93U2F2ZSk9XCJzZXJ2aWNlLmFkZFJvdygkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyIGxpYkNvbHVtbj1cImFjdGlvbnNcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgI2NlbGxcbiAgICAgICAgICBsZXQtdmFsdWVcbiAgICAgICAgICBsZXQtZGVsZXRlUm93PVwiZGVsZXRlUm93XCJcbiAgICAgICAgICBsZXQtaXNFZGl0aW5nPVwiaXNFZGl0aW5nXCJcbiAgICAgICAgICBsZXQtdG9nZ2xlUm93RWRpdD1cInRvZ2dsZVJvd0VkaXRcIlxuICAgICAgICAgIGxldC1yb3c9XCJyb3dcIlxuICAgICAgICAgIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFjdGlvbi1idXR0b25zXCI+XG4gICAgICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUm93RWRpdCgpXCJcbiAgICAgICAgICAgICAgaWNvbj1cImVkaXRcIlxuICAgICAgICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuXG4gICAgICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgICAgICBpY29uPVwiZGVsZXRlXCJcbiAgICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVSb3coKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAjY2VsbEVkaXRcbiAgICAgICAgICBsZXQtdmFsdWVcbiAgICAgICAgICBsZXQtZGVsZXRlUm93PVwiZGVsZXRlUm93XCJcbiAgICAgICAgICBsZXQtaXNFZGl0aW5nPVwiaXNFZGl0aW5nXCJcbiAgICAgICAgICBsZXQtdG9nZ2xlUm93RWRpdD1cInRvZ2dsZVJvd0VkaXRcIlxuICAgICAgICAgIGxldC1yb3c9XCJyb3dcIlxuICAgICAgICAgIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFjdGlvbi1idXR0b25zXCI+XG4gICAgICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUm93RWRpdCgpXCJcbiAgICAgICAgICAgICAgaWNvbj1cInRpY2tcIlxuICAgICAgICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuXG4gICAgICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgICAgICBpY29uPVwiZGVsZXRlXCJcbiAgICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVSb3coKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbGliLWRhdGEtdGFibGU+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNmb290ZXJUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImZvb3Rlci1idXR0b25zIGZsZXggZ2FwLTQgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBteS00XCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSBjYW5jZWwtYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJzaG93UHJldmlldyA9IGZhbHNlXCJcbiAgICA+XG4gICAgICBDYW5jZWxcbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGV4cG9ydC1idXR0b25cIiAoY2xpY2spPVwic2F2ZSgpXCI+XG4gICAgICBDb21wbGV0ZVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -6,27 +6,49 @@ export class DataImportService {
|
|
|
6
6
|
constructor() { }
|
|
7
7
|
// Function to transform imported data to match your model structure
|
|
8
8
|
transformImportData(importedData, columnDefinitions) {
|
|
9
|
-
// Create
|
|
9
|
+
// Create mappings from header to importKey and importBy
|
|
10
10
|
const headerToImportKeyMap = new Map();
|
|
11
|
-
|
|
11
|
+
const headerToImportByMap = new Map();
|
|
12
|
+
// Filter column definitions to only those with importKey or importBy and populate the maps
|
|
12
13
|
columnDefinitions
|
|
13
|
-
.filter((col) => col.importKey)
|
|
14
|
+
.filter((col) => col.importKey || col.importBy)
|
|
14
15
|
.forEach((col) => {
|
|
15
16
|
const header = typeof col.header === 'string'
|
|
16
17
|
? col.header
|
|
17
18
|
: col.header({}).toString();
|
|
18
|
-
|
|
19
|
+
if (col.importKey) {
|
|
20
|
+
headerToImportKeyMap.set(header, col.importKey);
|
|
21
|
+
}
|
|
22
|
+
if (col.importBy) {
|
|
23
|
+
headerToImportByMap.set(header, col.importBy);
|
|
24
|
+
}
|
|
19
25
|
});
|
|
20
26
|
// Transform each row in the imported data
|
|
21
27
|
return importedData.map((row) => {
|
|
22
28
|
const transformedRow = {};
|
|
23
29
|
// Process each key in the row
|
|
24
30
|
Object.entries(row).forEach(([key, value]) => {
|
|
25
|
-
//
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
31
|
+
// Check if there's an importBy transformation first (takes priority)
|
|
32
|
+
const importBy = headerToImportByMap.get(key);
|
|
33
|
+
if (importBy) {
|
|
34
|
+
if (typeof importBy === 'function') {
|
|
35
|
+
// Use the importBy function to transform the entire imported row
|
|
36
|
+
const importKey = headerToImportKeyMap.get(key);
|
|
37
|
+
if (importKey) {
|
|
38
|
+
transformedRow[importKey] = importBy(row);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
// importBy is a direct key reference
|
|
43
|
+
transformedRow[importBy] = value;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
// Fall back to importKey if no importBy is defined
|
|
48
|
+
const importKey = headerToImportKeyMap.get(key);
|
|
49
|
+
if (importKey) {
|
|
50
|
+
transformedRow[importKey] = value;
|
|
51
|
+
}
|
|
30
52
|
}
|
|
31
53
|
});
|
|
32
54
|
return transformedRow;
|
|
@@ -107,4 +129,4 @@ export class DataImportService {
|
|
|
107
129
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DataImportService, decorators: [{
|
|
108
130
|
type: Injectable
|
|
109
131
|
}], ctorParameters: () => [] });
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1pbXBvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS1pbXBvcnQvZGF0YS1pbXBvcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUk5QyxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFlBQVksR0FBd0IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRS9DLGdCQUFlLENBQUM7SUFFaEIsb0VBQW9FO0lBQ3BFLG1CQUFtQixDQUNqQixZQUFtQyxFQUNuQyxpQkFBd0M7UUFFeEMsNENBQTRDO1FBQzVDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7UUFFeEQsOEVBQThFO1FBQzlFLGlCQUFpQjthQUNkLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQzthQUM5QixPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNmLE1BQU0sTUFBTSxHQUNWLE9BQU8sR0FBRyxDQUFDLE1BQU0sS0FBSyxRQUFRO2dCQUM1QixDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU07Z0JBQ1osQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsU0FBb0IsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO1FBRUwsMENBQTBDO1FBQzFDLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFD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c0JBQXNCO1FBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDL0IsNkRBQTZEO1lBQzdELE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUN0QixPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2pDLENBQUM7Z0JBQ0QsT0FBTyxDQUFDLENBQUM7WUFDWCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsb0NBQW9DO0lBQ3RDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBaUIsRUFBRSxLQUFtQixFQUFFLFdBQXFCO1FBQ3ZFLE9BQU8sQ0FDTCxLQUFLLENBQUMsTUFBTSxDQUNWLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDTixXQUFXLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDdEIsV0FBVyxDQUFDLEtBQUssQ0FDZixDQUFDLFVBQVUsRUFBRSxFQUFFLENBQ2IsS0FBSyxDQUFDLFVBQXFCLENBQUM7Z0JBQzVCLEtBQUssQ0FBQyxVQUFxQixDQUFDLEtBQUssR0FBRyxDQUFDLFVBQXFCLENBQUMsQ0FDOUQsQ0FDSixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUIsQ0FBQzt3R0FoSVUsaUJBQWlCOzRHQUFqQixpQkFBaUI7OzRGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyByZWFkLCB1dGlscywgd3JpdGVGaWxlIH0gZnJvbSAneGxzeCc7XG5pbXBvcnQgeyBDb2x1bW5EZWZpbml0aW9uIH0gZnJvbSAndmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLXRhYmxlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhdGFJbXBvcnRTZXJ2aWNlPFQ+IHtcbiAgaW1wb3J0ZWREYXRhOiBXcml0YWJsZVNpZ25hbDxUW10+ID0gc2lnbmFsKFtdKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLy8gRnVuY3Rpb24gdG8gdHJhbnNmb3JtIGltcG9ydGVkIGRhdGEgdG8gbWF0Y2ggeW91ciBtb2RlbCBzdHJ1Y3R1cmVcbiAgdHJhbnNmb3JtSW1wb3J0RGF0YTxUPihcbiAgICBpbXBvcnRlZERhdGE6IFJlY29yZDxzdHJpbmcsIGFueT5bXSxcbiAgICBjb2x1bW5EZWZpbml0aW9uczogQ29sdW1uRGVmaW5pdGlvbjxUPltdXG4gICk6IFBhcnRpYWw8VD5bXSB7XG4gICAgLy8gQ3JlYXRlIGEgbWFwcGluZyBmcm9tIGhlYWRlciB0byBpbXBvcnRLZXlcbiAgICBjb25zdCBoZWFkZXJUb0ltcG9ydEtleU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBrZXlvZiBUPigpO1xuXG4gICAgLy8gRmlsdGVyIGNvbHVtbiBkZWZpbml0aW9ucyB0byBvbmx5IHRob3NlIHdpdGggaW1wb3J0S2V5IGFuZCBwb3B1bGF0ZSB0aGUgbWFwXG4gICAgY29sdW1uRGVmaW5pdGlvbnNcbiAgICAgIC5maWx0ZXIoKGNvbCkgPT4gY29sLmltcG9ydEtleSlcbiAgICAgIC5mb3JFYWNoKChjb2wpID0+IHtcbiAgICAgICAgY29uc3QgaGVhZGVyID1cbiAgICAgICAgICB0eXBlb2YgY29sLmhlYWRlciA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgID8gY29sLmhlYWRlclxuICAgICAgICAgICAgOiBjb2wuaGVhZGVyKHt9KS50b1N0cmluZygpO1xuICAgICAgICBoZWFkZXJUb0ltcG9ydEtleU1hcC5zZXQoaGVhZGVyLCBjb2wuaW1wb3J0S2V5IGFzIGtleW9mIFQpO1xuICAgICAgfSk7XG5cbiAgICAvLyBUcmFuc2Zvcm0gZWFjaCByb3cgaW4gdGhlIGltcG9ydGVkIGRhdGFcbiAgICByZXR1cm4gaW1wb3J0ZWREYXRhLm1hcCgocm93KSA9PiB7XG4gICAgICBjb25zdCB0cmFuc2Zvcm1lZFJvdzogUGFydGlhbDxUPiA9IHt9O1xuXG4gICAgICAvLyBQcm9jZXNzIGVhY2gga2V5IGluIHRoZSByb3dcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJvdykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIC8vIEZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgaW1wb3J0IGtleSBmb3IgdGhpcyBoZWFkZXIva2V5XG4gICAgICAgIGNvbnN0IGltcG9ydEtleSA9IGhlYWRlclRvSW1wb3J0S2V5TWFwLmdldChrZXkpO1xuXG4gICAgICAgIC8vIE9ubHkgYWRkIHRoZSBmaWVsZCBpZiB0aGVyZSdzIGEgbWF0Y2hpbmcgaW1wb3J0IGtleVxuICAgICAgICBpZiAoaW1wb3J0S2V5KSB7XG4gICAgICAgICAgdHJhbnNmb3JtZWRSb3dbaW1wb3J0S2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRyYW5zZm9ybWVkUm93O1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlSW1wb3J0KFxuICAgIGZpbGU6IEZpbGUsXG4gICAgLy8gcHJldmlld2VyPzogKGRhdGE6IGFueVtdKSA9PiB2b2lkLFxuICAgIGNvbHVtbkRlZmluaXRpb25zOiBDb2x1bW5EZWZpbml0aW9uPFQ+W10sXG4gICAgcGFyc2VJbXBvcnQ/OiAoZGF0YTogYW55KSA9PiBQYXJ0aWFsPFQ+W11cbiAgKSB7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICByZWFkZXIub25sb2FkID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgIC8vIGNvbnN0IHdiID0gcmVhZChldmVudC50YXJnZXQucmVzdWx0LCB7XG4gICAgICAvLyAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgLy8gICByYXc6IHRydWUsXG4gICAgICAvLyAgIGNlbGxUZXh0OiB0cnVlLFxuICAgICAgLy8gICBjZWxsRm9ybXVsYTogZmFsc2UsXG4gICAgICAvLyAgIGNlbGxORjogZmFsc2UsXG4gICAgICAvLyB9KTtcbiAgICAgIC8vIGNvbnNvbGUudGltZSgnQmVnaW4nKTtcbiAgICAgIGxldCBpbXBvcnRlZDogYW55W10gPSBbXTtcbiAgICAgIGNvbnN0IHdiID0gcmVhZChldmVudC50YXJnZXQucmVzdWx0LCB7IHJhdzogdHJ1ZSB9KTtcbiAgICAgIGNvbnN0IHNoZWV0cyA9IHdiLlNoZWV0TmFtZXM7XG4gICAgICBpZiAoc2hlZXRzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCByb3dzID0gdXRpbHMuc2hlZXRfdG9fanNvbih3Yi5TaGVldHNbc2hlZXRzWzBdXSwge1xuICAgICAgICAgIHJhdzogZmFsc2UsXG4gICAgICAgICAgLy8gZGVmdmFsOiAnJyxcbiAgICAgICAgICAvLyByYXdOdW1iZXJzOiB0cnVlLFxuICAgICAgICAgIC8vIGRhdGVORjogJ2RkL21tL3l5eXknLFxuICAgICAgICB9KSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+W107XG5cbiAgICAgICAgaW1wb3J0ZWQgPSB0aGlzLnRyYW5zZm9ybUltcG9ydERhdGEocm93cywgY29sdW1uRGVmaW5pdGlvbnMpIGFzIFRbXTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ1RSQU5TRk9STUVEJywgaW1wb3J0ZWQpO1xuXG4gICAgICAgIGlmIChwYXJzZUltcG9ydCkge1xuICAgICAgICAgIGltcG9ydGVkID0gcGFyc2VJbXBvcnQoaW1wb3J0ZWQpO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdQQVJTRUQnLCBpbXBvcnRlZCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcHJldmlld2VyKGltcG9ydGVkKTtcbiAgICAgIH1cbiAgICAgIC8vIGNvbnNvbGUubG9nKCdJbXBvcnRlZCBkYXRhOicsIEpTT04uc3RyaW5naWZ5KGltcG9ydGVkLCBudWxsLCAyKSk7XG4gICAgICAvLyBjb25zb2xlLnRpbWUoJ1N0YXJ0IFByb2Nlc3MnKTtcbiAgICAgIHRoaXMuaW1wb3J0ZWREYXRhLnNldChpbXBvcnRlZCk7XG4gICAgICAvLyBjb25zb2xlLnRpbWVFbmQoJ0JlZ2luJyk7XG4gICAgICByZXR1cm4gaW1wb3J0ZWQ7XG4gICAgfTtcbiAgICByZXR1cm4gcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpO1xuICB9XG5cbiAgaGFuZGxlVGVtcGxhdGVFeHBvcnQoZmllbGRzOiBzdHJpbmdbXSwgdGl0bGU6IHN0cmluZykge1xuICAgIGNvbnNvbGUubG9nKGZpZWxkcyk7XG4gICAgY29uc3Qgd2IgPSB1dGlscy5ib29rX25ldygpO1xuICAgIGNvbnN0IHdzOiBhbnkgPSB1dGlscy5qc29uX3RvX3NoZWV0KFtdKTtcbiAgICB1dGlscy5zaGVldF9hZGRfYW9hKHdzLCBbZmllbGRzXSk7XG4gICAgLy8gdXRpbHMuc2hlZXRfYWRkX2pzb24od3MsIHRoaXMuX2RhdGEsIHsgb3JpZ2luOiAnQTInLCBza2lwSGVhZGVyOiB0cnVlIH0pO1xuICAgIHV0aWxzLmJvb2tfYXBwZW5kX3NoZWV0KHdiLCB3cywgdGl0bGUpO1xuICAgIHdyaXRlRmlsZSh3YiwgdGl0bGUgKyAnLXRlbXBsYXRlLicgKyAneGxzeCcpO1xuICB9XG5cbiAgYWRkUm93KGV2ZW50OiB7IGluZGV4OiBudW1iZXI7IGtleTogc3RyaW5nIHwgbnVtYmVyOyBkYXRhOiBQYXJ0aWFsPFQ+IH0pIHtcbiAgICAvLyBjb25zb2xlLmxvZyhldmVudCk7XG4gICAgdGhpcy5pbXBvcnRlZERhdGEudXBkYXRlKChkYXQpID0+IHtcbiAgICAgIC8vIGRhdFtldmVudC5pbmRleF0gPSB7IC4uLmRhdFtldmVudC5pbmRleF0sIC4uLmV2ZW50LmRhdGEgfTtcbiAgICAgIHJldHVybiBkYXQubWFwKChkLCBpKSA9PiB7XG4gICAgICAgIGlmIChpID09PSBldmVudC5pbmRleCkge1xuICAgICAgICAgIHJldHVybiB7IC4uLmQsIC4uLmV2ZW50LmRhdGEgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZDtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuaW1wb3J0ZWREYXRhKCkpO1xuICB9XG5cbiAgaXNEdXBsaWNhdGUoZGF0dW06IFBhcnRpYWw8VD4sIGFycmF5OiBQYXJ0aWFsPFQ+W10sIGlkZW50aWZpZXJzOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiAoXG4gICAgICBhcnJheS5maWx0ZXIoXG4gICAgICAgIChkYXQpID0+XG4gICAgICAgICAgaWRlbnRpZmllcnMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgIGlkZW50aWZpZXJzLmV2ZXJ5KFxuICAgICAgICAgICAgKGlkZW50aWZpZXIpID0+XG4gICAgICAgICAgICAgIGRhdHVtW2lkZW50aWZpZXIgYXMga2V5b2YgVF0gJiZcbiAgICAgICAgICAgICAgZGF0dW1baWRlbnRpZmllciBhcyBrZXlvZiBUXSA9PT0gZGF0W2lkZW50aWZpZXIgYXMga2V5b2YgVF1cbiAgICAgICAgICApXG4gICAgICApLmxlbmd0aCA+IDFcbiAgICApO1xuICB9XG5cbiAgY2xlYXJEYXRhKCkge1xuICAgIHRoaXMuaW1wb3J0ZWREYXRhLnNldChbXSk7XG4gIH1cbn1cbiJdfQ==
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1pbXBvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS1pbXBvcnQvZGF0YS1pbXBvcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFFbkUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUc5QyxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFlBQVksR0FBd0IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRS9DLGdCQUFnQixDQUFDO0lBRWpCLG9FQUFvRTtJQUNwRSxtQkFBbUIsQ0FDakIsWUFBbUMsRUFDbkMsaUJBQXdDO1FBRXhDLHdEQUF3RDtRQUN4RCxNQUFNLG9CQUFvQixHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO1FBQ3hELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxHQUFHLEVBR2hDLENBQUM7UUFFSiwyRkFBMkY7UUFDM0YsaUJBQWlCO2FBQ2QsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUM7YUFDOUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDZixNQUFNLE1BQU0sR0FDVixPQUFPLEdBQUcsQ0FBQyxNQUFNLEtBQUssUUFBUTtnQkFDNUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNO2dCQUNaLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBRWhDLElBQUksR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNsQixvQkFBb0IsQ0FBQyxHQUFHLENBQUMsTUFB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LE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILG9DQUFvQztJQUN0QyxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWlCLEVBQUUsS0FBbUIsRUFBRSxXQUFxQjtRQUN2RSxPQUFPLENBQ0wsS0FBSyxDQUFDLE1BQU0sQ0FDVixDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ04sV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ3RCLFdBQVcsQ0FBQyxLQUFLLENBQ2YsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUNiLEtBQUssQ0FBQyxVQUFxQixDQUFDO2dCQUM1QixLQUFLLENBQUMsVUFBcUIsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxVQUFxQixDQUFDLENBQzlELENBQ0osQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLENBQUM7d0dBekpVLGlCQUFpQjs0R0FBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29sdW1uRGVmaW5pdGlvbiB9IGZyb20gJ3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS10YWJsZSc7XG5pbXBvcnQgeyByZWFkLCB1dGlscywgd3JpdGVGaWxlIH0gZnJvbSAneGxzeCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEYXRhSW1wb3J0U2VydmljZTxUPiB7XG4gIGltcG9ydGVkRGF0YTogV3JpdGFibGVTaWduYWw8VFtdPiA9IHNpZ25hbChbXSk7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICAvLyBGdW5jdGlvbiB0byB0cmFuc2Zvcm0gaW1wb3J0ZWQgZGF0YSB0byBtYXRjaCB5b3VyIG1vZGVsIHN0cnVjdHVyZVxuICB0cmFuc2Zvcm1JbXBvcnREYXRhPFQ+KFxuICAgIGltcG9ydGVkRGF0YTogUmVjb3JkPHN0cmluZywgYW55PltdLFxuICAgIGNvbHVtbkRlZmluaXRpb25zOiBDb2x1bW5EZWZpbml0aW9uPFQ+W11cbiAgKTogUGFydGlhbDxUPltdIHtcbiAgICAvLyBDcmVhdGUgbWFwcGluZ3MgZnJvbSBoZWFkZXIgdG8gaW1wb3J0S2V5IGFuZCBpbXBvcnRCeVxuICAgIGNvbnN0IGhlYWRlclRvSW1wb3J0S2V5TWFwID0gbmV3IE1hcDxzdHJpbmcsIGtleW9mIFQ+KCk7XG4gICAgY29uc3QgaGVhZGVyVG9JbXBvcnRCeU1hcCA9IG5ldyBNYXA8XG4gICAgICBzdHJpbmcsXG4gICAgICBrZXlvZiBUIHwgKChpbXBvcnRlZFJvdzogYW55KSA9PiBUW2tleW9mIFRdKVxuICAgID4oKTtcblxuICAgIC8vIEZpbHRlciBjb2x1bW4gZGVmaW5pdGlvbnMgdG8gb25seSB0aG9zZSB3aXRoIGltcG9ydEtleSBvciBpbXBvcnRCeSBhbmQgcG9wdWxhdGUgdGhlIG1hcHNcbiAgICBjb2x1bW5EZWZpbml0aW9uc1xuICAgICAgLmZpbHRlcigoY29sKSA9PiBjb2wuaW1wb3J0S2V5IHx8IGNvbC5pbXBvcnRCeSlcbiAgICAgIC5mb3JFYWNoKChjb2wpID0+IHtcbiAgICAgICAgY29uc3QgaGVhZGVyID1cbiAgICAgICAgICB0eXBlb2YgY29sLmhlYWRlciA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgID8gY29sLmhlYWRlclxuICAgICAgICAgICAgOiBjb2wuaGVhZGVyKHt9KS50b1N0cmluZygpO1xuXG4gICAgICAgIGlmIChjb2wuaW1wb3J0S2V5KSB7XG4gICAgICAgICAgaGVhZGVyVG9JbXBvcnRLZXlNYXAuc2V0KGhlYWRlciwgY29sLmltcG9ydEtleSBhcyBrZXlvZiBUKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2wuaW1wb3J0QnkpIHtcbiAgICAgICAgICBoZWFkZXJUb0ltcG9ydEJ5TWFwLnNldChoZWFkZXIsIGNvbC5pbXBvcnRCeSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgLy8gVHJhbnNmb3JtIGVhY2ggcm93IGluIHRoZSBpbXBvcnRlZCBkYXRhXG4gICAgcmV0dXJuIGltcG9ydGVkRGF0YS5tYXAoKHJvdykgPT4ge1xuICAgICAgY29uc3QgdHJhbnNmb3JtZWRSb3c6IFBhcnRpYWw8VD4gPSB7fTtcblxuICAgICAgLy8gUHJvY2VzcyBlYWNoIGtleSBpbiB0aGUgcm93XG4gICAgICBPYmplY3QuZW50cmllcyhyb3cpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGFuIGltcG9ydEJ5IHRyYW5zZm9ybWF0aW9uIGZpcnN0ICh0YWtlcyBwcmlvcml0eSlcbiAgICAgICAgY29uc3QgaW1wb3J0QnkgPSBoZWFkZXJUb0ltcG9ydEJ5TWFwLmdldChrZXkpO1xuXG4gICAgICAgIGlmIChpbXBvcnRCeSkge1xuICAgICAgICAgIGlmICh0eXBlb2YgaW1wb3J0QnkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIC8vIFVzZSB0aGUgaW1wb3J0QnkgZnVuY3Rpb24gdG8gdHJhbnNmb3JtIHRoZSBlbnRpcmUgaW1wb3J0ZWQgcm93XG4gICAgICAgICAgICBjb25zdCBpbXBvcnRLZXkgPSBoZWFkZXJUb0ltcG9ydEtleU1hcC5nZXQoa2V5KTtcbiAgICAgICAgICAgIGlmIChpbXBvcnRLZXkpIHtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtZWRSb3dbaW1wb3J0S2V5XSA9IGltcG9ydEJ5KHJvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGltcG9ydEJ5IGlzIGEgZGlyZWN0IGtleSByZWZlcmVuY2VcbiAgICAgICAgICAgIHRyYW5zZm9ybWVkUm93W2ltcG9ydEJ5XSA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBGYWxsIGJhY2sgdG8gaW1wb3J0S2V5IGlmIG5vIGltcG9ydEJ5IGlzIGRlZmluZWRcbiAgICAgICAgICBjb25zdCBpbXBvcnRLZXkgPSBoZWFkZXJUb0ltcG9ydEtleU1hcC5nZXQoa2V5KTtcbiAgICAgICAgICBpZiAoaW1wb3J0S2V5KSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFJvd1tpbXBvcnRLZXldID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRyYW5zZm9ybWVkUm93O1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlSW1wb3J0KFxuICAgIGZpbGU6IEZpbGUsXG4gICAgLy8gcHJldmlld2VyPzogKGRhdGE6IGFueVtdKSA9PiB2b2lkLFxuICAgIGNvbHVtbkRlZmluaXRpb25zOiBDb2x1bW5EZWZpbml0aW9uPFQ+W10sXG4gICAgcGFyc2VJbXBvcnQ/OiAoZGF0YTogYW55KSA9PiBQYXJ0aWFsPFQ+W11cbiAgKSB7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICByZWFkZXIub25sb2FkID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgIC8vIGNvbnN0IHdiID0gcmVhZChldmVudC50YXJnZXQucmVzdWx0LCB7XG4gICAgICAvLyAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgLy8gICByYXc6IHRydWUsXG4gICAgICAvLyAgIGNlbGxUZXh0OiB0cnVlLFxuICAgICAgLy8gICBjZWxsRm9ybXVsYTogZmFsc2UsXG4gICAgICAvLyAgIGNlbGxORjogZmFsc2UsXG4gICAgICAvLyB9KTtcbiAgICAgIC8vIGNvbnNvbGUudGltZSgnQmVnaW4nKTtcbiAgICAgIGxldCBpbXBvcnRlZDogYW55W10gPSBbXTtcbiAgICAgIGNvbnN0IHdiID0gcmVhZChldmVudC50YXJnZXQucmVzdWx0LCB7IHJhdzogdHJ1ZSB9KTtcbiAgICAgIGNvbnN0IHNoZWV0cyA9IHdiLlNoZWV0TmFtZXM7XG4gICAgICBpZiAoc2hlZXRzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCByb3dzID0gdXRpbHMuc2hlZXRfdG9fanNvbih3Yi5TaGVldHNbc2hlZXRzWzBdXSwge1xuICAgICAgICAgIHJhdzogZmFsc2UsXG4gICAgICAgICAgLy8gZGVmdmFsOiAnJyxcbiAgICAgICAgICAvLyByYXdOdW1iZXJzOiB0cnVlLFxuICAgICAgICAgIC8vIGRhdGVORjogJ2RkL21tL3l5eXknLFxuICAgICAgICB9KSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+W107XG5cbiAgICAgICAgaW1wb3J0ZWQgPSB0aGlzLnRyYW5zZm9ybUltcG9ydERhdGEocm93cywgY29sdW1uRGVmaW5pdGlvbnMpIGFzIFRbXTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ1RSQU5TRk9STUVEJywgaW1wb3J0ZWQpO1xuXG4gICAgICAgIGlmIChwYXJzZUltcG9ydCkge1xuICAgICAgICAgIGltcG9ydGVkID0gcGFyc2VJbXBvcnQoaW1wb3J0ZWQpO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdQQVJTRUQnLCBpbXBvcnRlZCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcHJldmlld2VyKGltcG9ydGVkKTtcbiAgICAgIH1cbiAgICAgIC8vIGNvbnNvbGUubG9nKCdJbXBvcnRlZCBkYXRhOicsIEpTT04uc3RyaW5naWZ5KGltcG9ydGVkLCBudWxsLCAyKSk7XG4gICAgICAvLyBjb25zb2xlLnRpbWUoJ1N0YXJ0IFByb2Nlc3MnKTtcbiAgICAgIHRoaXMuaW1wb3J0ZWREYXRhLnNldChpbXBvcnRlZCk7XG4gICAgICAvLyBjb25zb2xlLnRpbWVFbmQoJ0JlZ2luJyk7XG4gICAgICByZXR1cm4gaW1wb3J0ZWQ7XG4gICAgfTtcbiAgICByZXR1cm4gcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpO1xuICB9XG5cbiAgaGFuZGxlVGVtcGxhdGVFeHBvcnQoZmllbGRzOiBzdHJpbmdbXSwgdGl0bGU6IHN0cmluZykge1xuICAgIGNvbnNvbGUubG9nKGZpZWxkcyk7XG4gICAgY29uc3Qgd2IgPSB1dGlscy5ib29rX25ldygpO1xuICAgIGNvbnN0IHdzOiBhbnkgPSB1dGlscy5qc29uX3RvX3NoZWV0KFtdKTtcbiAgICB1dGlscy5zaGVldF9hZGRfYW9hKHdzLCBbZmllbGRzXSk7XG4gICAgLy8gdXRpbHMuc2hlZXRfYWRkX2pzb24od3MsIHRoaXMuX2RhdGEsIHsgb3JpZ2luOiAnQTInLCBza2lwSGVhZGVyOiB0cnVlIH0pO1xuICAgIHV0aWxzLmJvb2tfYXBwZW5kX3NoZWV0KHdiLCB3cywgdGl0bGUpO1xuICAgIHdyaXRlRmlsZSh3YiwgdGl0bGUgKyAnLXRlbXBsYXRlLicgKyAneGxzeCcpO1xuICB9XG5cbiAgYWRkUm93KGV2ZW50OiB7IGluZGV4OiBudW1iZXI7IGtleTogc3RyaW5nIHwgbnVtYmVyOyBkYXRhOiBQYXJ0aWFsPFQ+IH0pIHtcbiAgICAvLyBjb25zb2xlLmxvZyhldmVudCk7XG4gICAgdGhpcy5pbXBvcnRlZERhdGEudXBkYXRlKChkYXQpID0+IHtcbiAgICAgIC8vIGRhdFtldmVudC5pbmRleF0gPSB7IC4uLmRhdFtldmVudC5pbmRleF0sIC4uLmV2ZW50LmRhdGEgfTtcbiAgICAgIHJldHVybiBkYXQubWFwKChkLCBpKSA9PiB7XG4gICAgICAgIGlmIChpID09PSBldmVudC5pbmRleCkge1xuICAgICAgICAgIHJldHVybiB7IC4uLmQsIC4uLmV2ZW50LmRhdGEgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZDtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuaW1wb3J0ZWREYXRhKCkpO1xuICB9XG5cbiAgaXNEdXBsaWNhdGUoZGF0dW06IFBhcnRpYWw8VD4sIGFycmF5OiBQYXJ0aWFsPFQ+W10sIGlkZW50aWZpZXJzOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiAoXG4gICAgICBhcnJheS5maWx0ZXIoXG4gICAgICAgIChkYXQpID0+XG4gICAgICAgICAgaWRlbnRpZmllcnMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgIGlkZW50aWZpZXJzLmV2ZXJ5KFxuICAgICAgICAgICAgKGlkZW50aWZpZXIpID0+XG4gICAgICAgICAgICAgIGRhdHVtW2lkZW50aWZpZXIgYXMga2V5b2YgVF0gJiZcbiAgICAgICAgICAgICAgZGF0dW1baWRlbnRpZmllciBhcyBrZXlvZiBUXSA9PT0gZGF0W2lkZW50aWZpZXIgYXMga2V5b2YgVF1cbiAgICAgICAgICApXG4gICAgICApLmxlbmd0aCA+IDFcbiAgICApO1xuICB9XG5cbiAgY2xlYXJEYXRhKCkge1xuICAgIHRoaXMuaW1wb3J0ZWREYXRhLnNldChbXSk7XG4gIH1cbn1cbiJdfQ==
|