@trudb/tru-common-lib 0.1.252 → 0.1.259
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/card-column/classes/tru-card-column-config.mjs +1 -1
- package/esm2022/lib/components/card-column/tru-card-column.mjs +5 -3
- package/fesm2022/trudb-tru-common-lib.mjs +3 -2
- package/fesm2022/trudb-tru-common-lib.mjs.map +1 -1
- package/lib/components/card-column/classes/tru-card-column-config.d.ts +1 -0
- package/lib/components/card-column/tru-card-column.d.ts +2 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNhcmQtY29sdW1uLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9jYXJkLWNvbHVtbi9jbGFzc2VzL3RydS1jYXJkLWNvbHVtbi1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBUcnVUYWJsZUNvbmZpZ0Jhc2UgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZS1jbGFzc2VzL3RydS10YWJsZS1jb25maWctYmFzZVwiO1xyXG5pbXBvcnQgeyBUcnVSZXBvcnRDb25maWcgfSBmcm9tIFwiLi4vLi4vLi4vY2xhc3Nlcy90cnUtcmVwb3J0LWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBUcnVFbnRpdHlCYXNlIH0gZnJvbSBcIi4uLy4uLy4uL2Jhc2UtY2xhc3Nlcy90cnUtZW50aXR5LWJhc2VcIjtcclxuaW1wb3J0IHsgVHJ1Q2FyZENvbHVtbkRhdGEgfSBmcm9tIFwiLi90cnUtY2FyZC1jb2x1bW4tZGF0YVwiO1xyXG5pbXBvcnQgeyBFbnRpdHlRdWVyeSB9IGZyb20gXCJicmVlemUtY2xpZW50XCI7XHJcbmltcG9ydCB7IFRydUNvbXBvbmVudENvbmZpZ0Jhc2UgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZS1jbGFzc2VzL3RydS1jb21wb25lbnQtY29uZmlnLWJhc2VcIjtcclxuaW1wb3J0IHsgVHJ1Q2FyZENvbHVtblNlYXJjaFJlc3VsdHNDb25maWdCYXNlIH0gZnJvbSBcIi4vdHJ1LWNhcmQtY29sdW1uLXNlYXJjaC1yZXN1bHRzLWNvbmZpZy1iYXNlXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUcnVDYXJkQ29sdW1uQ29uZmlnIHtcclxuICBwYXJlbnRUYWJsZU5hbWU6IHN0cmluZztcclxuICBwYXJlbnRUYWJsZVBsdXJhbExhYmVsOiBzdHJpbmc7XHJcbiAgY2hpbGRUYWJsZU5hbWU6IHN0cmluZztcclxuICBjaGlsZFRhYmxlUGx1cmFsTGFiZWw6IHN0cmluZztcclxuICBrZXk6IHN0cmluZztcclxuICBsb2NrUHJvcGVydHk6IHN0cmluZyB8IG51bGw7XHJcbiAgcHJldmVudEFkZDogYm9vbGVhbjtcclxuICBjb2xvcjogc3RyaW5nIHwgbnVsbDtcclxuICB1bmFzc2lnbmVkVmlzaWJsZTogYW55O1xyXG4gIHVuYXNzaWduZWROYW1lOiBzdHJpbmcgfCBudWxsO1xyXG4gIHVuYXNzaWduZWRMb2NrZWQ6IGFueTtcclxuICB1bmFzc2lnbmVkQ29sb3I6IHN0cmluZyB8IG51bGw7XHJcbiAgdW5hc3NpZ25lZERyYWdnYWJsZTogYm9vbGVhbjtcclxuICB1bmFzc2lnbmVkRHJvcHBhYmxlOiBib29sZWFuO1xyXG4gIGluYWN0aXZlVmlzaWJsZTogYm9vbGVhbjtcclxuICBpbmFjdGl2ZURyYWdnYWJsZTogYm9vbGVhbjtcclxuICBpbmFjdGl2ZURyb3BwYWJsZTogYm9vbGVhbjtcclxuICByZXN1bHRDb25maWc6IFRydUNhcmRDb2x1bW5TZWFyY2hSZXN1bHRzQ29uZmlnQmFzZTtcclxuICByZXBvcnRDb25maWc6IFRydVJlcG9ydENvbmZpZztcclxuICB3aWR0aDogbnVtYmVyO1xyXG5cclxuICBjb2x1bW5Tb3J0PzogKGNvbHVtbnM6IEFycmF5PGFueT4pID0+IGFueTtcclxuICBjYXJkU29ydD86IChjYXJkczogQXJyYXk8YW55PikgPT4gYW55O1xyXG4gIGRhdGE/OiAoZW50aXR5OiBUcnVFbnRpdHlCYXNlKSA9PiBUcnVDYXJkQ29sdW1uRGF0YTtcclxuICBxdWVyeT86IChicmVlemVRdWVyeTogRW50aXR5UXVlcnksIHByb3BlcnR5TmFtZTogc3RyaW5nKSA9PiBhbnk7XHJcbn1cclxuIl19
|
|
@@ -5,6 +5,7 @@ import { v4 as uuidv4 } from 'uuid';
|
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "../../services/tru-data-context";
|
|
7
7
|
import * as i2 from "../../services/tru-model-type-lookup";
|
|
8
|
+
import * as i3 from "@angular/common";
|
|
8
9
|
export class TruCardColumn {
|
|
9
10
|
dataContext;
|
|
10
11
|
modelTypeLookup;
|
|
@@ -38,6 +39,7 @@ export class TruCardColumn {
|
|
|
38
39
|
cardFilterStr;
|
|
39
40
|
uniqueId;
|
|
40
41
|
busyMessage = 'Rendering...';
|
|
42
|
+
isBusy = false;
|
|
41
43
|
columns;
|
|
42
44
|
lockedColumns;
|
|
43
45
|
constructor(dataContext, modelTypeLookup) {
|
|
@@ -293,11 +295,11 @@ export class TruCardColumn {
|
|
|
293
295
|
this.uniqueId = uuidv4();
|
|
294
296
|
}
|
|
295
297
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruCardColumn, deps: [{ token: i1.TruDataContext }, { token: i2.TruModelTypeLookup }], target: i0.ɵɵFactoryTarget.Component });
|
|
296
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruCardColumn, selector: "tru-card-column", inputs: { config: "config", name: "name" }, viewQueries: [{ propertyName: "portal", first: true, predicate: [".tru-card-portal"], descendants: true }], ngImport: i0, template: "
|
|
298
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruCardColumn, selector: "tru-card-column", inputs: { config: "config", name: "name" }, viewQueries: [{ propertyName: "portal", first: true, predicate: [".tru-card-portal"], descendants: true }], ngImport: i0, template: "<div class=\"tru-card\">\r\n <div *ngIf=\"isBusy\"\r\n class=\"tru-card-busy-indicator\">\r\n <p>Searching for {{config.childTablePluralLabel}}...</p>\r\n </div>\r\n <div *ngIf=\"busyMessage\"\r\n class=\"tru-card-busy-indicator\">\r\n <p>{{busyMessage}}</p>\r\n </div>\r\n <!--<tru-toolbar [config]=\"config.toolbarConfig\" class=\"main-toolbar\"></tru-toolbar>-->\r\n <div class=\"tru-card-portal\">\r\n <div [ngStyle]=\"{'width': ((config.width * lockedColumns.length) + (10 * lockedColumns.length - 1)) + 'px' }\"\r\n [ngClass]=\"{'tru-card-portal-locked-columns-divider': lockedColumns.length}\"\r\n *ngIf=\"lockedColumns.length\"\r\n class=\"tru-card-portal-locked-columns locked-columns\">\r\n\r\n </div>\r\n <div [ngStyle]=\"{'left': lockedColumns.length ? ((config.width * lockedColumns.length) + (10 * lockedColumns.length - 1) + 22) + 'px' : 0 }\"\r\n class=\"tru-card-portal-columns unlocked-columns\">\r\n\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".tru-card-busy-indicator{position:absolute;inset:25px 0 0;z-index:10000;background-color:transparent}.tru-card-busy-indicator p{position:relative;float:left;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff}.tru-card-filter{position:absolute;top:0;left:0;right:0;height:30px;line-height:30px;padding-left:10px}.tru-card-portal{position:absolute;inset:30px 10px 0;border:1px solid #ddd;padding:10px;background-color:#0079bf}.tru-card-portal-disabled>*{opacity:.75;pointer-events:none}.tru-card-portal-locked-columns{position:absolute;top:10px;left:0;bottom:0;padding:0 5px 10px 10px;display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-start}.tru-card-portal-locked-columns .tru-card-portal-column{margin-left:0;margin-bottom:0}.tru-card-portal-locked-columns .tru-card-portal-column:not(:first-child){margin-left:10px!important}.tru-card-portal-locked-columns-divider{border-right:1px solid #cdd2d4}.tru-card-portal-columns{position:absolute;inset:10px 10px 10px 222px;padding-top:0;display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-start;overflow-x:auto;overflow-y:hidden}.tru-card-portal-column{position:relative;border:1px solid #ddd;border-radius:4px;background:#e2e4e6;vertical-align:top;max-height:calc(100% + 8px);margin-left:10px;margin-bottom:10px;display:flex;flex-direction:column}.tru-card-portal-column-inactive *{font-style:italic;opacity:.7}.tru-card-portal-column-header{flex:0 0 auto;padding:5px;position:relative;min-height:18px}.tru-card-portal-column-header-extras{position:absolute;right:5px;top:4px}.tru-card-portal-column-header-extra-button{border-radius:3px;background:transparent}.tru-card-portal-column-header-extra-button:hover{border-radius:3px;background:#cdd2d4}.tru-card-portal-column-footer{flex:0 0 auto;padding:0 3px 3px;position:relative;height:25px;line-height:25px;display:none}.tru-card-portal-column-footer-text{font-size:14px;color:#777;padding-left:5px;text-decoration:none}.tru-card-portal-column-footer-text:hover{text-decoration:underline;color:#777}.tru-card-portal-column-footer-text:active,.tru-card-portal-column-footer-text:visited{color:#777}.tru-card-icon-small{color:#999;height:18px;font-size:14px;line-height:18px;width:19px;-webkit-font-smoothing:antialiased;display:inline-block!important;font-style:normal;font-weight:400;text-align:center;text-decoration:none;position:relative}.tru-card-portal-column-headertext{font-weight:700;font-size:16px;color:#333;padding-left:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-right:20px}.tru-card-portal-column-headertext-hover:hover{text-decoration:underline}.tru-card-portal-card-scroll-port{overflow-y:auto;overflow-x:hidden}.tru-card-portal-card-container{margin:0 3px;padding:0 2px;height:37px;transition:all .4s ease-out;opacity:1}.tru-card-portal-card-container.show{opacity:1}.tru-card-portal-card-container *{pointer-events:none}.tru-card-portal-card{background-color:#fff;border:1px solid #fff;border-radius:3px;padding:2px 6px 2px 8px;position:relative;cursor:pointer;display:block;min-height:15px;text-decoration:none;z-index:0;outline:none;box-shadow:0 .5px #ccc}.tru-card-portal-card:hover{background-color:#efefef;border:1px solid #efefef}.tru-card-portal-card p{word-wrap:break-word}.tru-card-portal-card:focus{outline:none}.tru-card-portal-card.empty{border:1px dashed #999}.tru-card-placeholder{position:absolute;left:0;right:0;margin:0;z-index:100;border-color:#0079bf;border-top-style:dashed;border-bottom-style:dashed}.tru-card-selected{border-color:#52a8eccc!important;background-color:#52a8eccc!important}.tru-card-selected p{color:#000!important}.tru-card-menu{position:absolute;top:20px;right:0;background:#fff;border:1px #ccc solid;border-radius:3px;z-index:1;padding:7px;width:200px}.tru-card-menu hr{height:1px;border:1px #ccc solid;border-bottom:0;border-left:0;border-right:0;width:100%;margin:0;padding:0}.tru-card-menu a{color:#777;text-decoration:none;float:left;line-height:16px;margin-top:2px;margin-bottom:2px}.tru-card-menu span{color:#777;float:left;line-height:16px;margin-top:3px}.tru-card-menu a:hover{text-decoration:underline;color:#777}.tru-card-menu a:active,.tru-card-menu a:visited{color:#777}.tru-card-menu-move-container{width:100%!important;display:inline-flex}.tru-card-menu-move-container select{width:100%!important}.tru-card-menu-move-container a{margin-top:1px;margin-left:3px;display:block}.tru-card-menu-move-container span{color:#0079bf;margin-top:0}.tru-card-menu-move-container .move-button-disabled{pointer-events:none;opacity:.75}.tru-card-menu-move-container .move-button-disabled span{color:#ccc}.tru-card-portal-column-filtered,.tru-card-portal-card-filtered{display:none}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
297
299
|
}
|
|
298
300
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruCardColumn, decorators: [{
|
|
299
301
|
type: Component,
|
|
300
|
-
args: [{ selector: 'tru-card-column', template: "
|
|
302
|
+
args: [{ selector: 'tru-card-column', template: "<div class=\"tru-card\">\r\n <div *ngIf=\"isBusy\"\r\n class=\"tru-card-busy-indicator\">\r\n <p>Searching for {{config.childTablePluralLabel}}...</p>\r\n </div>\r\n <div *ngIf=\"busyMessage\"\r\n class=\"tru-card-busy-indicator\">\r\n <p>{{busyMessage}}</p>\r\n </div>\r\n <!--<tru-toolbar [config]=\"config.toolbarConfig\" class=\"main-toolbar\"></tru-toolbar>-->\r\n <div class=\"tru-card-portal\">\r\n <div [ngStyle]=\"{'width': ((config.width * lockedColumns.length) + (10 * lockedColumns.length - 1)) + 'px' }\"\r\n [ngClass]=\"{'tru-card-portal-locked-columns-divider': lockedColumns.length}\"\r\n *ngIf=\"lockedColumns.length\"\r\n class=\"tru-card-portal-locked-columns locked-columns\">\r\n\r\n </div>\r\n <div [ngStyle]=\"{'left': lockedColumns.length ? ((config.width * lockedColumns.length) + (10 * lockedColumns.length - 1) + 22) + 'px' : 0 }\"\r\n class=\"tru-card-portal-columns unlocked-columns\">\r\n\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".tru-card-busy-indicator{position:absolute;inset:25px 0 0;z-index:10000;background-color:transparent}.tru-card-busy-indicator p{position:relative;float:left;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff}.tru-card-filter{position:absolute;top:0;left:0;right:0;height:30px;line-height:30px;padding-left:10px}.tru-card-portal{position:absolute;inset:30px 10px 0;border:1px solid #ddd;padding:10px;background-color:#0079bf}.tru-card-portal-disabled>*{opacity:.75;pointer-events:none}.tru-card-portal-locked-columns{position:absolute;top:10px;left:0;bottom:0;padding:0 5px 10px 10px;display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-start}.tru-card-portal-locked-columns .tru-card-portal-column{margin-left:0;margin-bottom:0}.tru-card-portal-locked-columns .tru-card-portal-column:not(:first-child){margin-left:10px!important}.tru-card-portal-locked-columns-divider{border-right:1px solid #cdd2d4}.tru-card-portal-columns{position:absolute;inset:10px 10px 10px 222px;padding-top:0;display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-start;overflow-x:auto;overflow-y:hidden}.tru-card-portal-column{position:relative;border:1px solid #ddd;border-radius:4px;background:#e2e4e6;vertical-align:top;max-height:calc(100% + 8px);margin-left:10px;margin-bottom:10px;display:flex;flex-direction:column}.tru-card-portal-column-inactive *{font-style:italic;opacity:.7}.tru-card-portal-column-header{flex:0 0 auto;padding:5px;position:relative;min-height:18px}.tru-card-portal-column-header-extras{position:absolute;right:5px;top:4px}.tru-card-portal-column-header-extra-button{border-radius:3px;background:transparent}.tru-card-portal-column-header-extra-button:hover{border-radius:3px;background:#cdd2d4}.tru-card-portal-column-footer{flex:0 0 auto;padding:0 3px 3px;position:relative;height:25px;line-height:25px;display:none}.tru-card-portal-column-footer-text{font-size:14px;color:#777;padding-left:5px;text-decoration:none}.tru-card-portal-column-footer-text:hover{text-decoration:underline;color:#777}.tru-card-portal-column-footer-text:active,.tru-card-portal-column-footer-text:visited{color:#777}.tru-card-icon-small{color:#999;height:18px;font-size:14px;line-height:18px;width:19px;-webkit-font-smoothing:antialiased;display:inline-block!important;font-style:normal;font-weight:400;text-align:center;text-decoration:none;position:relative}.tru-card-portal-column-headertext{font-weight:700;font-size:16px;color:#333;padding-left:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-right:20px}.tru-card-portal-column-headertext-hover:hover{text-decoration:underline}.tru-card-portal-card-scroll-port{overflow-y:auto;overflow-x:hidden}.tru-card-portal-card-container{margin:0 3px;padding:0 2px;height:37px;transition:all .4s ease-out;opacity:1}.tru-card-portal-card-container.show{opacity:1}.tru-card-portal-card-container *{pointer-events:none}.tru-card-portal-card{background-color:#fff;border:1px solid #fff;border-radius:3px;padding:2px 6px 2px 8px;position:relative;cursor:pointer;display:block;min-height:15px;text-decoration:none;z-index:0;outline:none;box-shadow:0 .5px #ccc}.tru-card-portal-card:hover{background-color:#efefef;border:1px solid #efefef}.tru-card-portal-card p{word-wrap:break-word}.tru-card-portal-card:focus{outline:none}.tru-card-portal-card.empty{border:1px dashed #999}.tru-card-placeholder{position:absolute;left:0;right:0;margin:0;z-index:100;border-color:#0079bf;border-top-style:dashed;border-bottom-style:dashed}.tru-card-selected{border-color:#52a8eccc!important;background-color:#52a8eccc!important}.tru-card-selected p{color:#000!important}.tru-card-menu{position:absolute;top:20px;right:0;background:#fff;border:1px #ccc solid;border-radius:3px;z-index:1;padding:7px;width:200px}.tru-card-menu hr{height:1px;border:1px #ccc solid;border-bottom:0;border-left:0;border-right:0;width:100%;margin:0;padding:0}.tru-card-menu a{color:#777;text-decoration:none;float:left;line-height:16px;margin-top:2px;margin-bottom:2px}.tru-card-menu span{color:#777;float:left;line-height:16px;margin-top:3px}.tru-card-menu a:hover{text-decoration:underline;color:#777}.tru-card-menu a:active,.tru-card-menu a:visited{color:#777}.tru-card-menu-move-container{width:100%!important;display:inline-flex}.tru-card-menu-move-container select{width:100%!important}.tru-card-menu-move-container a{margin-top:1px;margin-left:3px;display:block}.tru-card-menu-move-container span{color:#0079bf;margin-top:0}.tru-card-menu-move-container .move-button-disabled{pointer-events:none;opacity:.75}.tru-card-menu-move-container .move-button-disabled span{color:#ccc}.tru-card-portal-column-filtered,.tru-card-portal-card-filtered{display:none}\n"] }]
|
|
301
303
|
}], ctorParameters: () => [{ type: i1.TruDataContext }, { type: i2.TruModelTypeLookup }], propDecorators: { config: [{
|
|
302
304
|
type: Input
|
|
303
305
|
}], name: [{
|
|
@@ -306,4 +308,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
306
308
|
type: ViewChild,
|
|
307
309
|
args: ['.tru-card-portal', { static: false }]
|
|
308
310
|
}] } });
|
|
309
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNhcmQtY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NhcmQtY29sdW1uL3RydS1jYXJkLWNvbHVtbi50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9jYXJkLWNvbHVtbi90cnUtY2FyZC1jb2x1bW4uaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxLQUFLLENBQUMsTUFBTSxZQUFZLENBQUM7QUFDaEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQVdwQyxNQUFNLE9BQU8sYUFBYTtJQXlDZDtJQUNBO0lBekNELE1BQU0sQ0FBdUI7SUFDN0IsSUFBSSxDQUFPO0lBRThCLE1BQU0sQ0FBa0I7SUFFbEUsZUFBZSxDQUFVO0lBQ3pCLHNCQUFzQixDQUFVO0lBQ2hDLGNBQWMsQ0FBVTtJQUN4QixxQkFBcUIsQ0FBVTtJQUMvQixHQUFHLENBQVU7SUFDYixXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQ25CLFlBQVksQ0FBaUI7SUFDN0IsS0FBSyxDQUFpQjtJQUN0QixpQkFBaUIsQ0FBVztJQUM1QixjQUFjLENBQWlCO0lBQy9CLGdCQUFnQixDQUFVO0lBQzFCLGVBQWUsQ0FBaUI7SUFDaEMsbUJBQW1CLENBQVc7SUFDOUIsbUJBQW1CLENBQVc7SUFFOUIsZUFBZSxDQUFXO0lBQzFCLGlCQUFpQixDQUFXO0lBQzVCLGlCQUFpQixDQUFXO0lBRTVCLFVBQVUsQ0FBc0M7SUFDaEQsUUFBUSxDQUFvQztJQUU1QyxpQkFBaUIsQ0FBVTtJQUMzQixnQkFBZ0IsQ0FBVTtJQUMxQixZQUFZLENBQU07SUFDbEIsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUNuQixnQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUFDdEIsYUFBYSxDQUFNO0lBQ25CLFFBQVEsQ0FBVTtJQUNsQixXQUFXLEdBQVcsY0FBYyxDQUFDO0lBRTdDLE9BQU8sQ0FBTTtJQUNiLGFBQWEsQ0FBTTtJQUVuQixZQUNVLFdBQTJCLEVBQzNCLGVBQW1DO1FBRG5DLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMzQixvQkFBZSxHQUFmLGVBQWUsQ0FBb0I7SUFDN0MsQ0FBQztJQUVPLGdCQUFnQixHQUFHLElBQUksQ0FBQyxDQUFBLDRDQUE0QztJQUNwRSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsQ0FBQyw4QkFBOEI7SUFFN0QsbUJBQW1CLEdBQUcsQ0FBQyxNQUFxQixFQUFFLEVBQUU7UUFDdEQsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdEQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7SUFFTSxvQkFBb0IsR0FBRyxDQUFDLE1BQXFCLEVBQUUsRUFBRTtRQUV2RCxNQUFNLGtCQUFrQixHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQW1DLENBQUM7UUFDMUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3JDLENBQUMsQ0FBQTtJQUVPLGdCQUFnQixHQUFHLENBQUMsTUFBcUIsRUFBRSxFQUFFO1FBRW5ELE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBbUMsQ0FBQztRQUMxRSxPQUFPLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzVDLENBQUMsQ0FBQTtJQUVPLG1CQUFtQixHQUFHLENBQUMsTUFBcUIsRUFBRSxFQUFFO1FBRXRELE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBbUMsQ0FBQztRQUMxRSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUMsQ0FBQTtJQUVPLHVCQUF1QixHQUFHLENBQUMsUUFBOEIsRUFBRSxTQUFpQixFQUFFLEVBQUU7UUFDdEYsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQXFCLEVBQUUsRUFBRTtZQUVoRCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxHQUFzQixDQUFDO1lBQ3ZELE9BQU8sTUFBTSxDQUFDLGtCQUFrQixDQUFDLEtBQUssU0FBUyxDQUFBO1FBQ2pELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFBO0lBRU8sS0FBSyxHQUFHLEdBQUcsRUFBRTtRQUNuQixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkUsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTNFLE9BQU8sYUFBYSxJQUFJLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQUMsQ0FBQztRQUFBLENBQUM7UUFDekcsT0FBTyxlQUFlLElBQUksZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7UUFBQyxDQUFDO1FBQ2hILE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUM7UUFBQyxDQUFDO1FBQUEsQ0FBQztRQUNoRSxxQ0FBcUM7UUFDckMsNkJBQTZCO0lBQy9CLENBQUMsQ0FBQTtJQUVPLG9CQUFvQixHQUFHLENBQUMsSUFBcUIsRUFBTyxFQUFFO1FBQzVELElBQUksT0FBTyxHQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQixLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2hELElBQUksUUFBZ0IsQ0FBQztZQUNyQixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM3QixRQUFRLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QixDQUFDO1lBRUQsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUMsQ0FBQTtJQUVPLGlCQUFpQixDQUFDLFdBQXVCLEVBQUUsTUFBZTtRQUNoRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsTUFBTTtZQUNULFlBQVksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFMUQsSUFBSSxXQUFXLENBQUMsTUFBTTtZQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQztRQUVwQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBRTFCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbEIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLGFBQWEsR0FBZSxFQUFFLENBQUM7UUFDbkMsSUFBSSxZQUFZLEdBQWUsRUFBRSxDQUFDO1FBQ2xDLElBQUksT0FBTyxHQUFlLEVBQUUsQ0FBQztRQUU3QixJQUFJLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUVuRSxJQUFJLG9CQUFvQixHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFFdkQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUs7WUFDbkIsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxvQkFBb0IsQ0FBQyxDQUFDOztZQUV2RCxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFcEQsdUJBQXVCO1FBQ3ZCLDZDQUE2QztRQUU3QyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDNUgsMENBQTBDO1lBRTFDLFlBQVksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUMxQyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7b0JBQzNHLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUMzRCxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNyQixPQUFPLElBQUksQ0FBQztvQkFDZCxDQUFDO2dCQUNILENBQUM7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBRXBELElBQUksa0JBQWtCLEdBQWUsRUFBRSxDQUFDO1lBQ3hDLElBQUksbUJBQW1CLEdBQWU7Z0JBQ3BDO29CQUNFLFVBQVUsRUFBRSxJQUFJO29CQUNoQixLQUFLLEVBQUUsRUFBRTtpQkFDVjthQUNGLENBQUM7WUFFRixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7Z0JBQzlCLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3JCLElBQUksbUJBQW1CLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUN6RCxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQzt3QkFDNUQsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDN0IsQ0FBQzt5QkFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7d0JBQ3pHLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3ZCLENBQUM7Z0JBQ0gsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUM7b0JBQzFCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbEMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUgsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUM3QixJQUFJLFlBQVksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUN2QyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO3dCQUN0QyxPQUFPLENBQUMsQ0FBQyxHQUFHLEtBQUssTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxHQUFHLENBQUM7b0JBQzVELE9BQU8sS0FBSyxDQUFDO2dCQUNmLENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksWUFBWSxFQUFFLENBQUM7b0JBQ2pCLElBQUksbUJBQW1CLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUMvRCxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDNUQsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUM1RCxDQUFDO2dCQUNILENBQUM7cUJBQU0sSUFDTCxDQUFDLFlBQVk7b0JBQ2IsTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7b0JBQ3BDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUMvQyxJQUFJLGNBQWMsR0FBRyxNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO29CQUMxRCxJQUFJLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUN0RCxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUM3QixjQUFjLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDO3dCQUNsQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQzFDLENBQUM7b0JBQ0QsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQzlELENBQUM7cUJBQU0sQ0FBQztvQkFDTixtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUN0RSxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxlQUFlLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDZCQUE2QjtnQkFFekQsYUFBYSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQzVDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO29CQUN4RCxJQUFJLENBQUM7d0JBQ0gsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7d0JBRXBDLE9BQU8sSUFBSSxDQUFDO2dCQUNoQixDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDaEMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7b0JBQ3hELElBQUksQ0FBQzt3QkFDSCxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOzt3QkFFcEMsT0FBTyxJQUFJLENBQUM7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDO2dCQUNILGtCQUFrQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDdEQsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7b0JBQ3hELElBQUksQ0FBQzt3QkFDSCxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOzt3QkFFcEMsT0FBTyxJQUFJLENBQUM7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDO2dCQUNILFlBQVksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUMxQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztvQkFDeEQsSUFBSSxDQUFDO3dCQUNILE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O3dCQUVwQyxPQUFPLElBQUksQ0FBQztnQkFDaEIsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUMvQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQy9CLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakUsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUN6QixNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pFLENBQUMsQ0FBQyxDQUFDO2dCQUVILGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUNwQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pFLENBQUMsQ0FBQyxDQUFDO2dCQUVILG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUNyQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pFLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLGVBQWU7Z0JBQ3RCLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFFL0MsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFdkMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCO2dCQUNsRCxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBRWhELElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxnQkFBZ0I7Z0JBQ2pELGFBQWEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRWhELElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1lBQ25DLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1lBRXZCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNiLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUUvQyxJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNYLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDaEYsSUFBSSxzQkFBc0IsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLGlCQUFpQixHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUM7b0JBQ2hGLGFBQWEsQ0FBQyxVQUFVLEdBQUcsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEYsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLFFBQVE7WUFDWixZQUFZLGFBQWtCLEVBQUUsT0FBWTtZQUU1QyxDQUFDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7UUFDbkQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUM7UUFDakUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQztRQUNqRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQztRQUMvRCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFDN0MsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztRQUN2RCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDO1FBQ2pELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1FBQ3JELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7UUFDbkQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUM7UUFDM0QsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUM7UUFFM0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUNuRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztRQUN2RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztRQUV2RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFFckMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3ZELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNDLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDdkQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDOUQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUM5QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1FBQ3JELENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBQzNCLENBQUM7dUdBclVVLGFBQWE7MkZBQWIsYUFBYSwrTUNkMUIsb2tDQTBCQTs7MkZEWmEsYUFBYTtrQkFMekIsU0FBUzsrQkFDRSxpQkFBaUI7b0hBS2xCLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRTRDLE1BQU07c0JBQXZELFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIF8gZnJvbSAndW5kZXJzY29yZSc7XHJcbmltcG9ydCB7IGJyZWV6ZSB9IGZyb20gJ2JyZWV6ZS1jbGllbnQnO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtZGF0YS1jb250ZXh0JztcclxuaW1wb3J0IHsgVHJ1RW50aXR5QmFzZSB9IGZyb20gJy4uLy4uL2Jhc2UtY2xhc3Nlcy90cnUtZW50aXR5LWJhc2UnO1xyXG5pbXBvcnQgeyBUcnVNb2RlbFR5cGVMb29rdXAgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtbW9kZWwtdHlwZS1sb29rdXAnO1xyXG5pbXBvcnQgeyBJVHJ1Q2FyZENvbHVtbkNvbmZpZyB9IGZyb20gJy4vY2xhc3Nlcy90cnUtY2FyZC1jb2x1bW4tY29uZmlnJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJ1LWNhcmQtY29sdW1uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJ1LWNhcmQtY29sdW1uLmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RydS1jYXJkLWNvbHVtbi5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1Q2FyZENvbHVtbiB7XHJcbiAgQElucHV0KCkgY29uZmlnITogSVRydUNhcmRDb2x1bW5Db25maWdcclxuICBASW5wdXQoKSBuYW1lITogYW55O1xyXG5cclxuICBAVmlld0NoaWxkKCcudHJ1LWNhcmQtcG9ydGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pIHBvcnRhbCE6IEhUTUxEaXZFbGVtZW50O1xyXG5cclxuICBwcml2YXRlIHBhcmVudFRhYmxlTmFtZSE6IHN0cmluZztcclxuICBwcml2YXRlIHBhcmVudFRhYmxlUGx1cmFsTGFiZWwhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBjaGlsZFRhYmxlTmFtZSE6IHN0cmluZztcclxuICBwcml2YXRlIGNoaWxkVGFibGVQbHVyYWxMYWJlbCE6IHN0cmluZztcclxuICBwcml2YXRlIGtleSE6IHN0cmluZztcclxuICBwcml2YXRlIHBhcmVudFF1ZXJ5ID0gbnVsbDtcclxuICBwcml2YXRlIGxvY2tQcm9wZXJ0eSE6IHN0cmluZyB8IG51bGw7XHJcbiAgcHJpdmF0ZSBjb2xvciE6IHN0cmluZyB8IG51bGw7XHJcbiAgcHJpdmF0ZSB1bmFzc2lnbmVkVmlzaWJsZSE6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSB1bmFzc2lnbmVkTmFtZSE6IHN0cmluZyB8IG51bGw7XHJcbiAgcHJpdmF0ZSB1bmFzc2lnbmVkTG9ja2VkITogc3RyaW5nO1xyXG4gIHByaXZhdGUgdW5hc3NpZ25lZENvbG9yITogc3RyaW5nIHwgbnVsbDtcclxuICBwcml2YXRlIHVuYXNzaWduZWREcmFnZ2FibGUhOiBib29sZWFuO1xyXG4gIHByaXZhdGUgdW5hc3NpZ25lZERyb3BwYWJsZSE6IGJvb2xlYW47XHJcblxyXG4gIHByaXZhdGUgaW5hY3RpdmVWaXNpYmxlITogYm9vbGVhbjtcclxuICBwcml2YXRlIGluYWN0aXZlRHJhZ2dhYmxlITogYm9vbGVhbjtcclxuICBwcml2YXRlIGluYWN0aXZlRHJvcHBhYmxlITogYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSBjb2x1bW5Tb3J0OiAoKGNvbHVtbnM6IGFueSkgPT4gYW55KSB8IHVuZGVmaW5lZDtcclxuICBwcml2YXRlIGNhcmRTb3J0OiAoKGNhcmRzOiBhbnkpID0+IGFueSkgfCB1bmRlZmluZWQ7XHJcblxyXG4gIHByaXZhdGUgcmVsYXRlZFBhcmVudE5hbWUhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSByZWxhdGVkQ2hpbGROYW1lITogc3RyaW5nO1xyXG4gIHByaXZhdGUgaW5zZXJ0QmVmb3JlOiBhbnk7XHJcbiAgcHJpdmF0ZSBzZWxlY3RlZENhcmRzID0gW107XHJcbiAgcHJpdmF0ZSBjb2x1bW5GaWx0ZXJSZWZzID0gW107XHJcbiAgcHJpdmF0ZSBjYXJkRmlsdGVyU3RyOiBhbnk7XHJcbiAgcHJpdmF0ZSB1bmlxdWVJZCE6IHN0cmluZztcclxuICBwcml2YXRlIGJ1c3lNZXNzYWdlOiBzdHJpbmcgPSAnUmVuZGVyaW5nLi4uJztcclxuXHJcbiAgY29sdW1uczogYW55O1xyXG4gIGxvY2tlZENvbHVtbnM6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRhdGFDb250ZXh0OiBUcnVEYXRhQ29udGV4dCxcclxuICAgIHByaXZhdGUgbW9kZWxUeXBlTG9va3VwOiBUcnVNb2RlbFR5cGVMb29rdXApIHtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcGFyZW50VGFibGVNb2RlbCA9IG51bGw7Ly9kYXRhU2VydmljZS5tb2RlbC50YWJsZXNbcGFyZW50VGFibGVOYW1lXTtcclxuICBwcml2YXRlIHVzZXJIYXNQYXJlbnRUYWJsZVJvbGUgPSBudWxsOyAvL3BhcmVudFRhYmxlTW9kZWwuY2FuRGlzcGxheTtcclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVEYXRhRm9yRW50aXR5ID0gKGVudGl0eTogVHJ1RW50aXR5QmFzZSkgPT4ge1xyXG4gICAgdmFyIGRhdGEgPSB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcucm93RGF0YUVuaGFuY2VyKCk7XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGhhc1VuZGVmaW5lZENoaWxkcmVuID0gKGVudGl0eTogVHJ1RW50aXR5QmFzZSkgPT4ge1xyXG4gICAgdHlwZSBFbnRpdHlPYmplY3RLZXkgPSBrZXlvZiB0eXBlb2YgZW50aXR5O1xyXG4gICAgY29uc3QgZW50aXR5UHJvcGVydHlOYW1lID0gJ28nICsgdGhpcy5yZWxhdGVkQ2hpbGROYW1lIGFzIEVudGl0eU9iamVjdEtleTtcclxuICAgIHJldHVybiAhZW50aXR5W2VudGl0eVByb3BlcnR5TmFtZV07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc0VtcHR5Q2hpbGRyZW4gPSAoZW50aXR5OiBUcnVFbnRpdHlCYXNlKSA9PiB7XHJcbiAgICB0eXBlIEVudGl0eU9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBlbnRpdHk7XHJcbiAgICBjb25zdCBlbnRpdHlQcm9wZXJ0eU5hbWUgPSAnbycgKyB0aGlzLnJlbGF0ZWRDaGlsZE5hbWUgYXMgRW50aXR5T2JqZWN0S2V5O1xyXG4gICAgcmV0dXJuICFlbnRpdHlbZW50aXR5UHJvcGVydHlOYW1lXS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc0luYWN0aXZlQ2hpbGRyZW4gPSAoZW50aXR5OiBUcnVFbnRpdHlCYXNlKSA9PiB7XHJcbiAgICB0eXBlIEVudGl0eU9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBlbnRpdHk7XHJcbiAgICBjb25zdCBlbnRpdHlQcm9wZXJ0eU5hbWUgPSAnbycgKyB0aGlzLnJlbGF0ZWRDaGlsZE5hbWUgYXMgRW50aXR5T2JqZWN0S2V5O1xyXG4gICAgcmV0dXJuIF8uZXZlcnkoW2VudGl0eVByb3BlcnR5TmFtZV0sIChjaGlsZDogYW55KSA9PiB7IHJldHVybiAhY2hpbGQuYWN0aXZlOyB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzQWRkZWRVbnNhdmVkQ2hpbGRyZW4gPSAoZW50aXRpZXM6IEFycmF5PFRydUVudGl0eUJhc2U+LCBwYXJlbnRSZWY6IG51bWJlcikgPT4ge1xyXG4gICAgcmV0dXJuIF8uc29tZShlbnRpdGllcywgKGVudGl0eTogVHJ1RW50aXR5QmFzZSkgPT4ge1xyXG4gICAgICB0eXBlIEVudGl0eU9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBlbnRpdHk7XHJcbiAgICAgIGNvbnN0IGVudGl0eVByb3BlcnR5TmFtZSA9IHRoaXMua2V5IGFzIEVudGl0eU9iamVjdEtleTtcclxuICAgICAgcmV0dXJuIGVudGl0eVtlbnRpdHlQcm9wZXJ0eU5hbWVdID09PSBwYXJlbnRSZWZcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhciA9ICgpID0+IHtcclxuICAgIHZhciBsb2NrZWRDb2x1bW5zID0gdGhpcy5wb3J0YWwucXVlcnlTZWxlY3RvckFsbCgnLmxvY2tlZC1jb2x1bW5zJylbMF07XHJcbiAgICB2YXIgdW5sb2NrZWRDb2x1bW5zID0gdGhpcy5wb3J0YWwucXVlcnlTZWxlY3RvckFsbCgnLnVubG9ja2VkLWNvbHVtbnMnKVswXTtcclxuXHJcbiAgICB3aGlsZSAobG9ja2VkQ29sdW1ucyAmJiBsb2NrZWRDb2x1bW5zLmxhc3RDaGlsZCkgeyBsb2NrZWRDb2x1bW5zLnJlbW92ZUNoaWxkKGxvY2tlZENvbHVtbnMubGFzdENoaWxkKTsgfTtcclxuICAgIHdoaWxlICh1bmxvY2tlZENvbHVtbnMgJiYgdW5sb2NrZWRDb2x1bW5zLmxhc3RDaGlsZCkgeyB1bmxvY2tlZENvbHVtbnMucmVtb3ZlQ2hpbGQodW5sb2NrZWRDb2x1bW5zLmxhc3RDaGlsZCk7IH1cclxuICAgIHdoaWxlICh0aGlzLnNlbGVjdGVkQ2FyZHMubGVuZ3RoKSB7IHRoaXMuc2VsZWN0ZWRDYXJkcy5wb3AoKTsgfTtcclxuICAgIC8vdGhpcy5jb25maWcub25TZWxlY3Rpb25DaGFuZ2VkKFtdKTtcclxuICAgIC8vdGhpcy5jb25maWcuY2xlYXJGaWx0ZXJzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFZhbHVlRnJvbVNvcnRQYXRoID0gKGFyZ3M6IFthbnksIHN0cmluZ1tdXSk6IGFueSA9PiB7XHJcbiAgICBsZXQgY3VycmVudDogYW55ID0gYXJnc1swXTtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBhcmdzWzFdLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBwYXJ0TmFtZTogc3RyaW5nO1xyXG4gICAgICBpZiAoaSAhPT0gYXJnc1sxXS5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgcGFydE5hbWUgPSAnbycgKyBhcmdzWzFdW2ldO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHBhcnROYW1lID0gYXJnc1sxXVtpXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGN1cnJlbnRbcGFydE5hbWVdKSB7XHJcbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnRbcGFydE5hbWVdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY3VycmVudDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlSXRlbXNTb3VyY2UobmV3RW50aXRpZXM6IEFycmF5PGFueT4sIHJldmVydDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5jbGVhcigpO1xyXG4gICAgaWYgKCFyZXZlcnQpXHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzY3JvbGxfcG9zaXRpb24nICsgdXVpZHY0KCksICcwJyk7XHJcblxyXG4gICAgaWYgKG5ld0VudGl0aWVzLmxlbmd0aClcclxuICAgICAgdGhpcy5idXN5TWVzc2FnZSA9ICdSZW5kZXJpbmcuLi4nO1xyXG5cclxuICAgIHRoaXMuY29sdW1uRmlsdGVyUmVmcyA9IFtdO1xyXG4gICAgdGhpcy5jYXJkRmlsdGVyU3RyID0gbnVsbDtcclxuXHJcbiAgICBpZiAoIW5ld0VudGl0aWVzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmxvY2tlZENvbHVtbnMgPSBbXTtcclxuICAgICAgdGhpcy5jb2x1bW5zID0gW107XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgbG9ja2VkQ29sdW1uczogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgbGV0IGVtcHR5UGFyZW50czogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgbGV0IGNvbHVtbnM6IEFycmF5PGFueT4gPSBbXTtcclxuXHJcbiAgICBsZXQgcXVlcnkgPSBuZXcgYnJlZXplLkVudGl0eVF1ZXJ5KCdRdWVyeScgKyB0aGlzLnBhcmVudFRhYmxlTmFtZSk7XHJcblxyXG4gICAgdmFyIHJlbGF0ZWRDaGlsZFByb3BlcnR5ID0gJ28nICsgdGhpcy5yZWxhdGVkQ2hpbGROYW1lO1xyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZy5xdWVyeSlcclxuICAgICAgcXVlcnkgPSB0aGlzLmNvbmZpZy5xdWVyeShxdWVyeSwgcmVsYXRlZENoaWxkUHJvcGVydHkpO1xyXG4gICAgZWxzZVxyXG4gICAgICBxdWVyeSA9IHF1ZXJ5LmV4cGFuZCgnbycgKyB0aGlzLnJlbGF0ZWRDaGlsZE5hbWUpO1xyXG5cclxuICAgIC8vaWYgKHRoaXMucGFyZW50UXVlcnkpXHJcbiAgICAvLyAgcXVlcnkgPSBxdWVyaWVzW3RoaXMucGFyZW50UXVlcnldKHF1ZXJ5KTtcclxuXHJcbiAgICB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmN1c3RvbVNlYXJjaCh0aGlzLm1vZGVsVHlwZUxvb2t1cC5nZXRUeXBlKHRoaXMucGFyZW50VGFibGVOYW1lKSwgcXVlcnkpLnN1YnNjcmliZSgocGFyZW50cykgPT4ge1xyXG4gICAgICAvL3RoaXMuY29uZmlnLmFkZFBhcmVudHNUb0ZpbHRlcihwYXJlbnRzKTtcclxuXHJcbiAgICAgIGVtcHR5UGFyZW50cyA9IF8uZmlsdGVyKHBhcmVudHMsIChwYXJlbnQpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5oYXNVbmRlZmluZWRDaGlsZHJlbihwYXJlbnQpIHx8IHRoaXMuaGFzRW1wdHlDaGlsZHJlbihwYXJlbnQpIHx8IHRoaXMuaGFzSW5hY3RpdmVDaGlsZHJlbihwYXJlbnQpKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuaGFzQWRkZWRVbnNhdmVkQ2hpbGRyZW4obmV3RW50aXRpZXMsIHBhcmVudC5SZWYpKSB7XHJcbiAgICAgICAgICAgIHBhcmVudFsnY2FyZHMnXSA9IFtdO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgICAgbGV0IHF1ZXJ5YWJsZVBhcmVudFJlZnMgPSBfLnBsdWNrKHBhcmVudHMsIHRoaXMua2V5KVxyXG5cclxuICAgICAgbGV0IGluYWN0aXZlV2l0aFBhcmVudDogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgICBsZXQgYWN0aXZlV2l0aG91dFBhcmVudDogQXJyYXk8YW55PiA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB1bmFzc2lnbmVkOiB0cnVlLFxyXG4gICAgICAgICAgY2FyZHM6IFtdXHJcbiAgICAgICAgfVxyXG4gICAgICBdO1xyXG5cclxuICAgICAgcGFyZW50cy5mb3JFYWNoKChwYXJlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIHBhcmVudFsnY2FyZHMnXSA9IFtdO1xyXG4gICAgICAgIGlmIChxdWVyeWFibGVQYXJlbnRSZWZzLmluZGV4T2YocGFyZW50W3RoaXMua2V5XSkgIT09IC0xKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5sb2NrUHJvcGVydHkgIT09IG51bGwgJiYgcGFyZW50W3RoaXMubG9ja1Byb3BlcnR5XSkge1xyXG4gICAgICAgICAgICBsb2NrZWRDb2x1bW5zLnB1c2gocGFyZW50KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5sb2NrUHJvcGVydHkgIT09IG51bGwgJiYgIXBhcmVudFt0aGlzLmxvY2tQcm9wZXJ0eV0gJiYgIV8uY29udGFpbnMoZW1wdHlQYXJlbnRzLCBwYXJlbnQpKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbnMucHVzaChwYXJlbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBwYXJlbnRbJ2luYWN0aXZlJ10gPSB0cnVlO1xyXG4gICAgICAgICAgaW5hY3RpdmVXaXRoUGFyZW50LnB1c2gocGFyZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgbmV3RW50aXRpZXMuZm9yRWFjaCgoZW50aXR5KSA9PiB7XHJcbiAgICAgICAgdmFyIGVudGl0eVBhcmVudCA9IF8uZmluZChwYXJlbnRzLCAocCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGVudGl0eVsnbycgKyB0aGlzLnJlbGF0ZWRQYXJlbnROYW1lXSlcclxuICAgICAgICAgICAgcmV0dXJuIHAuUmVmID09PSBlbnRpdHlbJ28nICsgdGhpcy5yZWxhdGVkUGFyZW50TmFtZV0uUmVmO1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAoZW50aXR5UGFyZW50KSB7XHJcbiAgICAgICAgICBpZiAocXVlcnlhYmxlUGFyZW50UmVmcy5pbmRleE9mKGVudGl0eVBhcmVudFt0aGlzLmtleV0pICE9PSAtMSkge1xyXG4gICAgICAgICAgICBlbnRpdHlQYXJlbnQuY2FyZHMucHVzaCh0aGlzLmNyZWF0ZURhdGFGb3JFbnRpdHkoZW50aXR5KSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBlbnRpdHlQYXJlbnQuY2FyZHMucHVzaCh0aGlzLmNyZWF0ZURhdGFGb3JFbnRpdHkoZW50aXR5KSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICFlbnRpdHlQYXJlbnQgJiZcclxuICAgICAgICAgIGVudGl0eVsnbycgKyB0aGlzLnJlbGF0ZWRQYXJlbnROYW1lXSAmJlxyXG4gICAgICAgICAgZW50aXR5WydvJyArIHRoaXMucmVsYXRlZFBhcmVudE5hbWVdLlJlZiA+IDApIHtcclxuICAgICAgICAgIGxldCBpbmFjdGl2ZVBhcmVudCA9IGVudGl0eVsnbycgKyB0aGlzLnJlbGF0ZWRQYXJlbnROYW1lXTtcclxuICAgICAgICAgIGlmIChpbmFjdGl2ZVdpdGhQYXJlbnQuaW5kZXhPZihpbmFjdGl2ZVBhcmVudCkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIGluYWN0aXZlUGFyZW50WydjYXJkcyddID0gW107XHJcbiAgICAgICAgICAgIGluYWN0aXZlUGFyZW50WydpbmFjdGl2ZSddID0gdHJ1ZTtcclxuICAgICAgICAgICAgaW5hY3RpdmVXaXRoUGFyZW50LnB1c2goaW5hY3RpdmVQYXJlbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaW5hY3RpdmVQYXJlbnQuY2FyZHMucHVzaCh0aGlzLmNyZWF0ZURhdGFGb3JFbnRpdHkoZW50aXR5KSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGFjdGl2ZVdpdGhvdXRQYXJlbnRbMF0uY2FyZHMucHVzaCh0aGlzLmNyZWF0ZURhdGFGb3JFbnRpdHkoZW50aXR5KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmNvbHVtblNvcnQpIHtcclxuICAgICAgICB2YXIgY29sdW1uU29ydFBhcnRzID0gWycnXTsgLy90aGlzLmNvbHVtblNvcnQuc3BsaXQoJy8nKTtcclxuXHJcbiAgICAgICAgbG9ja2VkQ29sdW1ucyA9IF8uc29ydEJ5KGxvY2tlZENvbHVtbnMsIChvKSA9PiB7XHJcbiAgICAgICAgICB2YXIgdiA9IHRoaXMuZ2V0VmFsdWVGcm9tU29ydFBhdGgoW28sIGNvbHVtblNvcnRQYXJ0c10pO1xyXG4gICAgICAgICAgaWYgKHYpXHJcbiAgICAgICAgICAgIHJldHVybiBfLmlzU3RyaW5nKHYpID8gdi50cmltKCkgOiB2O1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb2x1bW5zID0gXy5zb3J0QnkoY29sdW1ucywgKG8pID0+IHtcclxuICAgICAgICAgIHZhciB2ID0gdGhpcy5nZXRWYWx1ZUZyb21Tb3J0UGF0aChbbywgY29sdW1uU29ydFBhcnRzXSk7XHJcbiAgICAgICAgICBpZiAodilcclxuICAgICAgICAgICAgcmV0dXJuIF8uaXNTdHJpbmcodikgPyB2LnRyaW0oKSA6IHY7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGluYWN0aXZlV2l0aFBhcmVudCA9IF8uc29ydEJ5KGluYWN0aXZlV2l0aFBhcmVudCwgKG8pID0+IHtcclxuICAgICAgICAgIHZhciB2ID0gdGhpcy5nZXRWYWx1ZUZyb21Tb3J0UGF0aChbbywgY29sdW1uU29ydFBhcnRzXSk7XHJcbiAgICAgICAgICBpZiAodilcclxuICAgICAgICAgICAgcmV0dXJuIF8uaXNTdHJpbmcodikgPyB2LnRyaW0oKSA6IHY7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGVtcHR5UGFyZW50cyA9IF8uc29ydEJ5KGVtcHR5UGFyZW50cywgKG8pID0+IHtcclxuICAgICAgICAgIHZhciB2ID0gdGhpcy5nZXRWYWx1ZUZyb21Tb3J0UGF0aChbbywgY29sdW1uU29ydFBhcnRzXSk7XHJcbiAgICAgICAgICBpZiAodilcclxuICAgICAgICAgICAgcmV0dXJuIF8uaXNTdHJpbmcodikgPyB2LnRyaW0oKSA6IHY7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmlnLmNhcmRTb3J0ID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgbG9ja2VkQ29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgICAgIGNvbHVtbi5jYXJkcyA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5jYXJkU29ydChjb2x1bW4uY2FyZHMpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICAgICAgY29sdW1uLmNhcmRzID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmNhcmRTb3J0KGNvbHVtbi5jYXJkcyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGluYWN0aXZlV2l0aFBhcmVudC5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgICAgIGNvbHVtbi5jYXJkcyA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5jYXJkU29ydChjb2x1bW4uY2FyZHMpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBhY3RpdmVXaXRob3V0UGFyZW50LmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICAgICAgY29sdW1uLmNhcmRzID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmNhcmRTb3J0KGNvbHVtbi5jYXJkcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmluYWN0aXZlVmlzaWJsZSlcclxuICAgICAgICBjb2x1bW5zID0gY29sdW1ucy5jb25jYXQoaW5hY3RpdmVXaXRoUGFyZW50KTtcclxuXHJcbiAgICAgIGNvbHVtbnMgPSBjb2x1bW5zLmNvbmNhdChlbXB0eVBhcmVudHMpO1xyXG5cclxuICAgICAgaWYgKHRoaXMudW5hc3NpZ25lZFZpc2libGUgJiYgIXRoaXMudW5hc3NpZ25lZExvY2tlZClcclxuICAgICAgICBjb2x1bW5zID0gY29sdW1ucy5jb25jYXQoYWN0aXZlV2l0aG91dFBhcmVudCk7XHJcblxyXG4gICAgICBpZiAodGhpcy51bmFzc2lnbmVkVmlzaWJsZSAmJiB0aGlzLnVuYXNzaWduZWRMb2NrZWQpXHJcbiAgICAgICAgbG9ja2VkQ29sdW1ucyA9IGNvbHVtbnMuY29uY2F0KGxvY2tlZENvbHVtbnMpO1xyXG5cclxuICAgICAgdGhpcy5sb2NrZWRDb2x1bW5zID0gbG9ja2VkQ29sdW1ucztcclxuICAgICAgdGhpcy5jb2x1bW5zID0gY29sdW1ucztcclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2xlYXIoKTtcclxuICAgICAgICBuZXcgQ2FyZFZpZXcodGhpcy5sb2NrZWRDb2x1bW5zLCB0aGlzLmNvbHVtbnMpO1xyXG5cclxuICAgICAgICBpZiAocmV2ZXJ0KSB7XHJcbiAgICAgICAgICBsZXQgY29sdW1uRWxlbWVudCA9IHRoaXMucG9ydGFsLnF1ZXJ5U2VsZWN0b3JBbGwoJy50cnUtY2FyZC1wb3J0YWwtY29sdW1ucycpWzBdO1xyXG4gICAgICAgICAgbGV0IHByZXZpb3VzU2Nyb2xsUG9zaXRpb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc2Nyb2xsX3Bvc2l0aW9uJyArIHV1aWR2NCgpKTtcclxuICAgICAgICAgIGNvbHVtbkVsZW1lbnQuc2Nyb2xsTGVmdCA9IHByZXZpb3VzU2Nyb2xsUG9zaXRpb24gPyArcHJldmlvdXNTY3JvbGxQb3NpdGlvbiA6IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNsYXNzIENhcmRWaWV3IHtcclxuICAgICAgY29uc3RydWN0b3IobG9ja2VkQ29sdW1uczogYW55LCBjb2x1bW5zOiBhbnkpIHtcclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5wYXJlbnRUYWJsZU5hbWUgPSB0aGlzLmNvbmZpZy5wYXJlbnRUYWJsZU5hbWU7XHJcbiAgICB0aGlzLnBhcmVudFRhYmxlUGx1cmFsTGFiZWwgPSB0aGlzLmNvbmZpZy5wYXJlbnRUYWJsZVBsdXJhbExhYmVsO1xyXG4gICAgdGhpcy5jaGlsZFRhYmxlTmFtZSA9IHRoaXMuY29uZmlnLmNoaWxkVGFibGVOYW1lO1xyXG4gICAgdGhpcy5jaGlsZFRhYmxlUGx1cmFsTGFiZWwgPSB0aGlzLmNvbmZpZy5jaGlsZFRhYmxlUGx1cmFsTGFiZWw7XHJcbiAgICB0aGlzLmtleSA9IHRoaXMuY29uZmlnLmtleTtcclxuICAgIHRoaXMucGFyZW50UXVlcnkgPSBudWxsXHJcbiAgICB0aGlzLmxvY2tQcm9wZXJ0eSA9IHRoaXMuY29uZmlnLmxvY2tQcm9wZXJ0eTtcclxuICAgIHRoaXMuY29sb3IgPSB0aGlzLmNvbmZpZy5jb2xvcjtcclxuICAgIHRoaXMudW5hc3NpZ25lZFZpc2libGUgPSB0aGlzLmNvbmZpZy51bmFzc2lnbmVkVmlzaWJsZTtcclxuICAgIHRoaXMudW5hc3NpZ25lZE5hbWUgPSB0aGlzLmNvbmZpZy51bmFzc2lnbmVkTmFtZTtcclxuICAgIHRoaXMudW5hc3NpZ25lZExvY2tlZCA9IHRoaXMuY29uZmlnLnVuYXNzaWduZWRMb2NrZWQ7XHJcbiAgICB0aGlzLnVuYXNzaWduZWRDb2xvciA9IHRoaXMuY29uZmlnLnVuYXNzaWduZWRDb2xvcjtcclxuICAgIHRoaXMudW5hc3NpZ25lZERyYWdnYWJsZSA9IHRoaXMuY29uZmlnLnVuYXNzaWduZWREcmFnZ2FibGU7XHJcbiAgICB0aGlzLnVuYXNzaWduZWREcm9wcGFibGUgPSB0aGlzLmNvbmZpZy51bmFzc2lnbmVkRHJvcHBhYmxlO1xyXG5cclxuICAgIHRoaXMuaW5hY3RpdmVWaXNpYmxlID0gdGhpcy5jb25maWcuaW5hY3RpdmVWaXNpYmxlO1xyXG4gICAgdGhpcy5pbmFjdGl2ZURyYWdnYWJsZSA9IHRoaXMuY29uZmlnLmluYWN0aXZlRHJhZ2dhYmxlO1xyXG4gICAgdGhpcy5pbmFjdGl2ZURyb3BwYWJsZSA9IHRoaXMuY29uZmlnLmluYWN0aXZlRHJvcHBhYmxlO1xyXG5cclxuICAgIHRoaXMuY29sdW1uU29ydCA9IHRoaXMuY29uZmlnLmNvbHVtblNvcnQ7XHJcbiAgICB0aGlzLmNhcmRTb3J0ID0gdGhpcy5jb25maWcuY2FyZFNvcnQ7XHJcblxyXG4gICAgbGV0IGluZGV4ID0gdGhpcy5rZXkubGFzdEluZGV4T2YodGhpcy5wYXJlbnRUYWJsZU5hbWUpO1xyXG4gICAgbGV0IHByZWZpeCA9IHRoaXMua2V5LnN1YnN0cmluZyhpbmRleCwgLTEpO1xyXG4gICAgaWYgKHByZWZpeCkge1xyXG4gICAgICB0aGlzLnJlbGF0ZWRQYXJlbnROYW1lID0gcHJlZml4ICsgdGhpcy5wYXJlbnRUYWJsZU5hbWU7XHJcbiAgICAgIHRoaXMucmVsYXRlZENoaWxkTmFtZSA9IHByZWZpeCArIHRoaXMuY2hpbGRUYWJsZVBsdXJhbExhYmVsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZWxhdGVkUGFyZW50TmFtZSA9IHRoaXMucGFyZW50VGFibGVOYW1lO1xyXG4gICAgICB0aGlzLnJlbGF0ZWRDaGlsZE5hbWUgPSB0aGlzLmNoaWxkVGFibGVQbHVyYWxMYWJlbDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnVuaXF1ZUlkID0gdXVpZHY0KCk7XHJcbiAgfVxyXG59XHJcbiIsIjwhLS08ZGl2IGNsYXNzPVwidHJ1LWNhcmRcIj5cclxuICA8ZGl2ICpuZ0lmPVwiY29uZmlnLmlzQnVzeVwiXHJcbiAgICAgICBjbGFzcz1cInRydS1jYXJkLWJ1c3ktaW5kaWNhdG9yXCI+XHJcbiAgICA8cD5TZWFyY2hpbmcgZm9yIHt7Y29uZmlnLmVudGl0eVBsdXJhbExhYmVsfX0uLi48L3A+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cImNvbmZpZy5idXN5TWVzc2FnZVwiXHJcbiAgICAgICBjbGFzcz1cInRydS1jYXJkLWJ1c3ktaW5kaWNhdG9yXCI+XHJcbiAgICA8cD57e2NvbmZpZy5idXN5TWVzc2FnZX19PC9wPlxyXG4gIDwvZGl2Pi0tPlxyXG4gIDwhLS08dHJ1LXRvb2xiYXIgW2NvbmZpZ109XCJjb25maWcudG9vbGJhckNvbmZpZ1wiIGNsYXNzPVwibWFpbi10b29sYmFyXCI+PC90cnUtdG9vbGJhcj4tLT5cclxuICA8IS0tPGRpdiBjbGFzcz1cInRydS1jYXJkLXBvcnRhbFwiPlxyXG4gICAgPGRpdiBbbmdTdHlsZV09XCJ7J3dpZHRoJzogKChjb25maWcud2lkdGggKiBsb2NrZWRDb2x1bW5zLmxlbmd0aCkgKyAoMTAgKiBsb2NrZWRDb2x1bW5zLmxlbmd0aCAtIDEpKSArICdweCcgfVwiXHJcbiAgICAgICAgIFtuZ0NsYXNzXT1cInsndHJ1LWNhcmQtcG9ydGFsLWxvY2tlZC1jb2x1bW5zLWRpdmlkZXInOiBsb2NrZWRDb2x1bW5zLmxlbmd0aH1cIlxyXG4gICAgICAgICAqbmdJZj1cImxvY2tlZENvbHVtbnMubGVuZ3RoXCJcclxuICAgICAgICAgY2xhc3M9XCJ0cnUtY2FyZC1wb3J0YWwtbG9ja2VkLWNvbHVtbnMgbG9ja2VkLWNvbHVtbnNcIj5cclxuXHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgW25nU3R5bGVdPVwieydsZWZ0JzogbG9ja2VkQ29sdW1ucy5sZW5ndGggPyAoKGNvbmZpZy53aWR0aCAqIGxvY2tlZENvbHVtbnMubGVuZ3RoKSArICgxMCAqIGxvY2tlZENvbHVtbnMubGVuZ3RoIC0gMSkgKyAyMikgKyAncHgnIDogMCB9XCJcclxuICAgICAgICAgY2xhc3M9XCJ0cnUtY2FyZC1wb3J0YWwtY29sdW1ucyB1bmxvY2tlZC1jb2x1bW5zXCI+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2Pi0tPlxyXG48ZGl2PlxyXG4gIDxwPlRlc3Q8L3A+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
311
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNhcmQtY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NhcmQtY29sdW1uL3RydS1jYXJkLWNvbHVtbi50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9jYXJkLWNvbHVtbi90cnUtY2FyZC1jb2x1bW4uaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxLQUFLLENBQUMsTUFBTSxZQUFZLENBQUM7QUFDaEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFXcEMsTUFBTSxPQUFPLGFBQWE7SUEwQ2Q7SUFDQTtJQTFDRCxNQUFNLENBQXVCO0lBQzdCLElBQUksQ0FBTztJQUU4QixNQUFNLENBQWtCO0lBRWxFLGVBQWUsQ0FBVTtJQUN6QixzQkFBc0IsQ0FBVTtJQUNoQyxjQUFjLENBQVU7SUFDeEIscUJBQXFCLENBQVU7SUFDL0IsR0FBRyxDQUFVO0lBQ2IsV0FBVyxHQUFHLElBQUksQ0FBQztJQUNuQixZQUFZLENBQWlCO0lBQzdCLEtBQUssQ0FBaUI7SUFDdEIsaUJBQWlCLENBQVc7SUFDNUIsY0FBYyxDQUFpQjtJQUMvQixnQkFBZ0IsQ0FBVTtJQUMxQixlQUFlLENBQWlCO0lBQ2hDLG1CQUFtQixDQUFXO0lBQzlCLG1CQUFtQixDQUFXO0lBRTlCLGVBQWUsQ0FBVztJQUMxQixpQkFBaUIsQ0FBVztJQUM1QixpQkFBaUIsQ0FBVztJQUU1QixVQUFVLENBQXNDO0lBQ2hELFFBQVEsQ0FBb0M7SUFFNUMsaUJB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b3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIF8gZnJvbSAndW5kZXJzY29yZSc7XHJcbmltcG9ydCB7IGJyZWV6ZSB9IGZyb20gJ2JyZWV6ZS1jbGllbnQnO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtZGF0YS1jb250ZXh0JztcclxuaW1wb3J0IHsgVHJ1RW50aXR5QmFzZSB9IGZyb20gJy4uLy4uL2Jhc2UtY2xhc3Nlcy90cnUtZW50aXR5LWJhc2UnO1xyXG5pbXBvcnQgeyBUcnVNb2RlbFR5cGVMb29rdXAgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtbW9kZWwtdHlwZS1sb29rdXAnO1xyXG5pbXBvcnQgeyBJVHJ1Q2FyZENvbHVtbkNvbmZpZyB9IGZyb20gJy4vY2xhc3Nlcy90cnUtY2FyZC1jb2x1bW4tY29uZmlnJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJ1LWNhcmQtY29sdW1uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJ1LWNhcmQtY29sdW1uLmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RydS1jYXJkLWNvbHVtbi5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1Q2FyZENvbHVtbiB7XHJcbiAgQElucHV0KCkgY29uZmlnITogSVRydUNhcmRDb2x1bW5Db25maWdcclxuICBASW5wdXQoKSBuYW1lITogYW55O1xyXG5cclxuICBAVmlld0NoaWxkKCcudHJ1LWNhcmQtcG9ydGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pIHBvcnRhbCE6IEhUTUxEaXZFbGVtZW50O1xyXG5cclxuICBwcml2YXRlIHBhcmVudFRhYmxlTmFtZSE6IHN0cmluZztcclxuICBwcml2YXRlIHBhcmVudFRhYmxlUGx1cmFsTGFiZWwhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBjaGlsZFRhYmxlTmFtZSE6IHN0cmluZztcclxuICBwcml2YXRlIGNoaWxkVGFibGVQbHVyYWxMYWJlbCE6IHN0cmluZztcclxuICBwcml2YXRlIGtleSE6IHN0cmluZztcclxuICBwcml2YXRlIHBhcmVudFF1ZXJ5ID0gbnVsbDtcclxuICBwcml2YXRlIGxvY2tQcm9wZXJ0eSE6IHN0cmluZyB8IG51bGw7XHJcbiAgcHJpdmF0ZSBjb2xvciE6IHN0cmluZyB8IG51bGw7XHJcbiAgcHJpdmF0ZSB1bmFzc2lnbmVkVmlzaWJsZSE6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSB1bmFzc2lnbmVkTmFtZSE6IHN0cmluZyB8IG51bGw7XHJcbiAgcHJpdmF0ZSB1bmFzc2lnbmVkTG9ja2VkITogc3RyaW5nO1xyXG4gIHByaXZhdGUgdW5hc3NpZ25lZENvbG9yITogc3RyaW5nIHwgbnVsbDtcclxuICBwcml2YXRlIHVuYXNzaWduZWREcmFnZ2FibGUhOiBib29sZWFuO1xyXG4gIHByaXZhdGUgdW5hc3NpZ25lZERyb3BwYWJsZSE6IGJvb2xlYW47XHJcblxyXG4gIHByaXZhdGUgaW5hY3RpdmVWaXNpYmxlITogYm9vbGVhbjtcclxuICBwcml2YXRlIGluYWN0aXZlRHJhZ2dhYmxlITogYm9vbGVhbjtcclxuICBwcml2YXRlIGluYWN0aXZlRHJvcHBhYmxlITogYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSBjb2x1bW5Tb3J0OiAoKGNvbHVtbnM6IGFueSkgPT4gYW55KSB8IHVuZGVmaW5lZDtcclxuICBwcml2YXRlIGNhcmRTb3J0OiAoKGNhcmRzOiBhbnkpID0+IGFueSkgfCB1bmRlZmluZWQ7XHJcblxyXG4gIHByaXZhdGUgcmVsYXRlZFBhcmVudE5hbWUhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSByZWxhdGVkQ2hpbGROYW1lITogc3RyaW5nO1xyXG4gIHByaXZhdGUgaW5zZXJ0QmVmb3JlOiBhbnk7XHJcbiAgcHJpdmF0ZSBzZWxlY3RlZENhcmRzID0gW107XHJcbiAgcHJpdmF0ZSBjb2x1bW5GaWx0ZXJSZWZzID0gW107XHJcbiAgcHJpdmF0ZSBjYXJkRmlsdGVyU3RyOiBhbnk7XHJcbiAgcHJpdmF0ZSB1bmlxdWVJZCE6IHN0cmluZztcclxuXHJcbiAgYnVzeU1lc3NhZ2U6IHN0cmluZyA9ICdSZW5kZXJpbmcuLi4nO1xyXG4gIGlzQnVzeTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbHVtbnM6IGFueTtcclxuICBsb2NrZWRDb2x1bW5zOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkYXRhQ29udGV4dDogVHJ1RGF0YUNvbnRleHQsXHJcbiAgICBwcml2YXRlIG1vZGVsVHlwZUxvb2t1cDogVHJ1TW9kZWxUeXBlTG9va3VwKSB7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhcmVudFRhYmxlTW9kZWwgPSBudWxsOy8vZGF0YVNlcnZpY2UubW9kZWwudGFibGVzW3BhcmVudFRhYmxlTmFtZV07XHJcbiAgcHJpdmF0ZSB1c2VySGFzUGFyZW50VGFibGVSb2xlID0gbnVsbDsgLy9wYXJlbnRUYWJsZU1vZGVsLmNhbkRpc3BsYXk7XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRGF0YUZvckVudGl0eSA9IChlbnRpdHk6IFRydUVudGl0eUJhc2UpID0+IHtcclxuICAgIHZhciBkYXRhID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLnJvd0RhdGFFbmhhbmNlcigpO1xyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBoYXNVbmRlZmluZWRDaGlsZHJlbiA9IChlbnRpdHk6IFRydUVudGl0eUJhc2UpID0+IHtcclxuICAgIHR5cGUgRW50aXR5T2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIGVudGl0eTtcclxuICAgIGNvbnN0IGVudGl0eVByb3BlcnR5TmFtZSA9ICdvJyArIHRoaXMucmVsYXRlZENoaWxkTmFtZSBhcyBFbnRpdHlPYmplY3RLZXk7XHJcbiAgICByZXR1cm4gIWVudGl0eVtlbnRpdHlQcm9wZXJ0eU5hbWVdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYXNFbXB0eUNoaWxkcmVuID0gKGVudGl0eTogVHJ1RW50aXR5QmFzZSkgPT4ge1xyXG4gICAgdHlwZSBFbnRpdHlPYmplY3RLZXkgPSBrZXlvZiB0eXBlb2YgZW50aXR5O1xyXG4gICAgY29uc3QgZW50aXR5UHJvcGVydHlOYW1lID0gJ28nICsgdGhpcy5yZWxhdGVkQ2hpbGROYW1lIGFzIEVudGl0eU9iamVjdEtleTtcclxuICAgIHJldHVybiAhZW50aXR5W2VudGl0eVByb3BlcnR5TmFtZV0ubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYXNJbmFjdGl2ZUNoaWxkcmVuID0gKGVudGl0eTogVHJ1RW50aXR5QmFzZSkgPT4ge1xyXG4gICAgdHlwZSBFbnRpdHlPYmplY3RLZXkgPSBrZXlvZiB0eXBlb2YgZW50aXR5O1xyXG4gICAgY29uc3QgZW50aXR5UHJvcGVydHlOYW1lID0gJ28nICsgdGhpcy5yZWxhdGVkQ2hpbGROYW1lIGFzIEVudGl0eU9iamVjdEtleTtcclxuICAgIHJldHVybiBfLmV2ZXJ5KFtlbnRpdHlQcm9wZXJ0eU5hbWVdLCAoY2hpbGQ6IGFueSkgPT4geyByZXR1cm4gIWNoaWxkLmFjdGl2ZTsgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc0FkZGVkVW5zYXZlZENoaWxkcmVuID0gKGVudGl0aWVzOiBBcnJheTxUcnVFbnRpdHlCYXNlPiwgcGFyZW50UmVmOiBudW1iZXIpID0+IHtcclxuICAgIHJldHVybiBfLnNvbWUoZW50aXRpZXMsIChlbnRpdHk6IFRydUVudGl0eUJhc2UpID0+IHtcclxuICAgICAgdHlwZSBFbnRpdHlPYmplY3RLZXkgPSBrZXlvZiB0eXBlb2YgZW50aXR5O1xyXG4gICAgICBjb25zdCBlbnRpdHlQcm9wZXJ0eU5hbWUgPSB0aGlzLmtleSBhcyBFbnRpdHlPYmplY3RLZXk7XHJcbiAgICAgIHJldHVybiBlbnRpdHlbZW50aXR5UHJvcGVydHlOYW1lXSA9PT0gcGFyZW50UmVmXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYXIgPSAoKSA9PiB7XHJcbiAgICB2YXIgbG9ja2VkQ29sdW1ucyA9IHRoaXMucG9ydGFsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5sb2NrZWQtY29sdW1ucycpWzBdO1xyXG4gICAgdmFyIHVubG9ja2VkQ29sdW1ucyA9IHRoaXMucG9ydGFsLnF1ZXJ5U2VsZWN0b3JBbGwoJy51bmxvY2tlZC1jb2x1bW5zJylbMF07XHJcblxyXG4gICAgd2hpbGUgKGxvY2tlZENvbHVtbnMgJiYgbG9ja2VkQ29sdW1ucy5sYXN0Q2hpbGQpIHsgbG9ja2VkQ29sdW1ucy5yZW1vdmVDaGlsZChsb2NrZWRDb2x1bW5zLmxhc3RDaGlsZCk7IH07XHJcbiAgICB3aGlsZSAodW5sb2NrZWRDb2x1bW5zICYmIHVubG9ja2VkQ29sdW1ucy5sYXN0Q2hpbGQpIHsgdW5sb2NrZWRDb2x1bW5zLnJlbW92ZUNoaWxkKHVubG9ja2VkQ29sdW1ucy5sYXN0Q2hpbGQpOyB9XHJcbiAgICB3aGlsZSAodGhpcy5zZWxlY3RlZENhcmRzLmxlbmd0aCkgeyB0aGlzLnNlbGVjdGVkQ2FyZHMucG9wKCk7IH07XHJcbiAgICAvL3RoaXMuY29uZmlnLm9uU2VsZWN0aW9uQ2hhbmdlZChbXSk7XHJcbiAgICAvL3RoaXMuY29uZmlnLmNsZWFyRmlsdGVycygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRWYWx1ZUZyb21Tb3J0UGF0aCA9IChhcmdzOiBbYW55LCBzdHJpbmdbXV0pOiBhbnkgPT4ge1xyXG4gICAgbGV0IGN1cnJlbnQ6IGFueSA9IGFyZ3NbMF07XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgYXJnc1sxXS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgcGFydE5hbWU6IHN0cmluZztcclxuICAgICAgaWYgKGkgIT09IGFyZ3NbMV0ubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgIHBhcnROYW1lID0gJ28nICsgYXJnc1sxXVtpXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwYXJ0TmFtZSA9IGFyZ3NbMV1baV07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChjdXJyZW50W3BhcnROYW1lXSkge1xyXG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W3BhcnROYW1lXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGN1cnJlbnQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUl0ZW1zU291cmNlKG5ld0VudGl0aWVzOiBBcnJheTxhbnk+LCByZXZlcnQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuY2xlYXIoKTtcclxuICAgIGlmICghcmV2ZXJ0KVxyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc2Nyb2xsX3Bvc2l0aW9uJyArIHV1aWR2NCgpLCAnMCcpO1xyXG5cclxuICAgIGlmIChuZXdFbnRpdGllcy5sZW5ndGgpXHJcbiAgICAgIHRoaXMuYnVzeU1lc3NhZ2UgPSAnUmVuZGVyaW5nLi4uJztcclxuXHJcbiAgICB0aGlzLmNvbHVtbkZpbHRlclJlZnMgPSBbXTtcclxuICAgIHRoaXMuY2FyZEZpbHRlclN0ciA9IG51bGw7XHJcblxyXG4gICAgaWYgKCFuZXdFbnRpdGllcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5sb2NrZWRDb2x1bW5zID0gW107XHJcbiAgICAgIHRoaXMuY29sdW1ucyA9IFtdO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGxvY2tlZENvbHVtbnM6IEFycmF5PGFueT4gPSBbXTtcclxuICAgIGxldCBlbXB0eVBhcmVudHM6IEFycmF5PGFueT4gPSBbXTtcclxuICAgIGxldCBjb2x1bW5zOiBBcnJheTxhbnk+ID0gW107XHJcblxyXG4gICAgbGV0IHF1ZXJ5ID0gbmV3IGJyZWV6ZS5FbnRpdHlRdWVyeSgnUXVlcnknICsgdGhpcy5wYXJlbnRUYWJsZU5hbWUpO1xyXG5cclxuICAgIHZhciByZWxhdGVkQ2hpbGRQcm9wZXJ0eSA9ICdvJyArIHRoaXMucmVsYXRlZENoaWxkTmFtZTtcclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcucXVlcnkpXHJcbiAgICAgIHF1ZXJ5ID0gdGhpcy5jb25maWcucXVlcnkocXVlcnksIHJlbGF0ZWRDaGlsZFByb3BlcnR5KTtcclxuICAgIGVsc2VcclxuICAgICAgcXVlcnkgPSBxdWVyeS5leHBhbmQoJ28nICsgdGhpcy5yZWxhdGVkQ2hpbGROYW1lKTtcclxuXHJcbiAgICAvL2lmICh0aGlzLnBhcmVudFF1ZXJ5KVxyXG4gICAgLy8gIHF1ZXJ5ID0gcXVlcmllc1t0aGlzLnBhcmVudFF1ZXJ5XShxdWVyeSk7XHJcblxyXG4gICAgdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5jdXN0b21TZWFyY2godGhpcy5tb2RlbFR5cGVMb29rdXAuZ2V0VHlwZSh0aGlzLnBhcmVudFRhYmxlTmFtZSksIHF1ZXJ5KS5zdWJzY3JpYmUoKHBhcmVudHMpID0+IHtcclxuICAgICAgLy90aGlzLmNvbmZpZy5hZGRQYXJlbnRzVG9GaWx0ZXIocGFyZW50cyk7XHJcblxyXG4gICAgICBlbXB0eVBhcmVudHMgPSBfLmZpbHRlcihwYXJlbnRzLCAocGFyZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuaGFzVW5kZWZpbmVkQ2hpbGRyZW4ocGFyZW50KSB8fCB0aGlzLmhhc0VtcHR5Q2hpbGRyZW4ocGFyZW50KSB8fCB0aGlzLmhhc0luYWN0aXZlQ2hpbGRyZW4ocGFyZW50KSkge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmhhc0FkZGVkVW5zYXZlZENoaWxkcmVuKG5ld0VudGl0aWVzLCBwYXJlbnQuUmVmKSkge1xyXG4gICAgICAgICAgICBwYXJlbnRbJ2NhcmRzJ10gPSBbXTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICAgIGxldCBxdWVyeWFibGVQYXJlbnRSZWZzID0gXy5wbHVjayhwYXJlbnRzLCB0aGlzLmtleSlcclxuXHJcbiAgICAgIGxldCBpbmFjdGl2ZVdpdGhQYXJlbnQ6IEFycmF5PGFueT4gPSBbXTtcclxuICAgICAgbGV0IGFjdGl2ZVdpdGhvdXRQYXJlbnQ6IEFycmF5PGFueT4gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdW5hc3NpZ25lZDogdHJ1ZSxcclxuICAgICAgICAgIGNhcmRzOiBbXVxyXG4gICAgICAgIH1cclxuICAgICAgXTtcclxuXHJcbiAgICAgIHBhcmVudHMuZm9yRWFjaCgocGFyZW50OiBhbnkpID0+IHtcclxuICAgICAgICBwYXJlbnRbJ2NhcmRzJ10gPSBbXTtcclxuICAgICAgICBpZiAocXVlcnlhYmxlUGFyZW50UmVmcy5pbmRleE9mKHBhcmVudFt0aGlzLmtleV0pICE9PSAtMSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMubG9ja1Byb3BlcnR5ICE9PSBudWxsICYmIHBhcmVudFt0aGlzLmxvY2tQcm9wZXJ0eV0pIHtcclxuICAgICAgICAgICAgbG9ja2VkQ29sdW1ucy5wdXNoKHBhcmVudCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubG9ja1Byb3BlcnR5ICE9PSBudWxsICYmICFwYXJlbnRbdGhpcy5sb2NrUHJvcGVydHldICYmICFfLmNvbnRhaW5zKGVtcHR5UGFyZW50cywgcGFyZW50KSkge1xyXG4gICAgICAgICAgICBjb2x1bW5zLnB1c2gocGFyZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcGFyZW50WydpbmFjdGl2ZSddID0gdHJ1ZTtcclxuICAgICAgICAgIGluYWN0aXZlV2l0aFBhcmVudC5wdXNoKHBhcmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIG5ld0VudGl0aWVzLmZvckVhY2goKGVudGl0eSkgPT4ge1xyXG4gICAgICAgIHZhciBlbnRpdHlQYXJlbnQgPSBfLmZpbmQocGFyZW50cywgKHApID0+IHtcclxuICAgICAgICAgIGlmIChlbnRpdHlbJ28nICsgdGhpcy5yZWxhdGVkUGFyZW50TmFtZV0pXHJcbiAgICAgICAgICAgIHJldHVybiBwLlJlZiA9PT0gZW50aXR5WydvJyArIHRoaXMucmVsYXRlZFBhcmVudE5hbWVdLlJlZjtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKGVudGl0eVBhcmVudCkge1xyXG4gICAgICAgICAgaWYgKHF1ZXJ5YWJsZVBhcmVudFJlZnMuaW5kZXhPZihlbnRpdHlQYXJlbnRbdGhpcy5rZXldKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgZW50aXR5UGFyZW50LmNhcmRzLnB1c2godGhpcy5jcmVhdGVEYXRhRm9yRW50aXR5KGVudGl0eSkpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZW50aXR5UGFyZW50LmNhcmRzLnB1c2godGhpcy5jcmVhdGVEYXRhRm9yRW50aXR5KGVudGl0eSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAhZW50aXR5UGFyZW50ICYmXHJcbiAgICAgICAgICBlbnRpdHlbJ28nICsgdGhpcy5yZWxhdGVkUGFyZW50TmFtZV0gJiZcclxuICAgICAgICAgIGVudGl0eVsnbycgKyB0aGlzLnJlbGF0ZWRQYXJlbnROYW1lXS5SZWYgPiAwKSB7XHJcbiAgICAgICAgICBsZXQgaW5hY3RpdmVQYXJlbnQgPSBlbnRpdHlbJ28nICsgdGhpcy5yZWxhdGVkUGFyZW50TmFtZV07XHJcbiAgICAgICAgICBpZiAoaW5hY3RpdmVXaXRoUGFyZW50LmluZGV4T2YoaW5hY3RpdmVQYXJlbnQpID09PSAtMSkge1xyXG4gICAgICAgICAgICBpbmFjdGl2ZVBhcmVudFsnY2FyZHMnXSA9IFtdO1xyXG4gICAgICAgICAgICBpbmFjdGl2ZVBhcmVudFsnaW5hY3RpdmUnXSA9IHRydWU7XHJcbiAgICAgICAgICAgIGluYWN0aXZlV2l0aFBhcmVudC5wdXNoKGluYWN0aXZlUGFyZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGluYWN0aXZlUGFyZW50LmNhcmRzLnB1c2godGhpcy5jcmVhdGVEYXRhRm9yRW50aXR5KGVudGl0eSkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBhY3RpdmVXaXRob3V0UGFyZW50WzBdLmNhcmRzLnB1c2godGhpcy5jcmVhdGVEYXRhRm9yRW50aXR5KGVudGl0eSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5jb2x1bW5Tb3J0KSB7XHJcbiAgICAgICAgdmFyIGNvbHVtblNvcnRQYXJ0cyA9IFsnJ107IC8vdGhpcy5jb2x1bW5Tb3J0LnNwbGl0KCcvJyk7XHJcblxyXG4gICAgICAgIGxvY2tlZENvbHVtbnMgPSBfLnNvcnRCeShsb2NrZWRDb2x1bW5zLCAobykgPT4ge1xyXG4gICAgICAgICAgdmFyIHYgPSB0aGlzLmdldFZhbHVlRnJvbVNvcnRQYXRoKFtvLCBjb2x1bW5Tb3J0UGFydHNdKTtcclxuICAgICAgICAgIGlmICh2KVxyXG4gICAgICAgICAgICByZXR1cm4gXy5pc1N0cmluZyh2KSA/IHYudHJpbSgpIDogdjtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29sdW1ucyA9IF8uc29ydEJ5KGNvbHVtbnMsIChvKSA9PiB7XHJcbiAgICAgICAgICB2YXIgdiA9IHRoaXMuZ2V0VmFsdWVGcm9tU29ydFBhdGgoW28sIGNvbHVtblNvcnRQYXJ0c10pO1xyXG4gICAgICAgICAgaWYgKHYpXHJcbiAgICAgICAgICAgIHJldHVybiBfLmlzU3RyaW5nKHYpID8gdi50cmltKCkgOiB2O1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpbmFjdGl2ZVdpdGhQYXJlbnQgPSBfLnNvcnRCeShpbmFjdGl2ZVdpdGhQYXJlbnQsIChvKSA9PiB7XHJcbiAgICAgICAgICB2YXIgdiA9IHRoaXMuZ2V0VmFsdWVGcm9tU29ydFBhdGgoW28sIGNvbHVtblNvcnRQYXJ0c10pO1xyXG4gICAgICAgICAgaWYgKHYpXHJcbiAgICAgICAgICAgIHJldHVybiBfLmlzU3RyaW5nKHYpID8gdi50cmltKCkgOiB2O1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9KTtcclxuICAgICAgICBlbXB0eVBhcmVudHMgPSBfLnNvcnRCeShlbXB0eVBhcmVudHMsIChvKSA9PiB7XHJcbiAgICAgICAgICB2YXIgdiA9IHRoaXMuZ2V0VmFsdWVGcm9tU29ydFBhdGgoW28sIGNvbHVtblNvcnRQYXJ0c10pO1xyXG4gICAgICAgICAgaWYgKHYpXHJcbiAgICAgICAgICAgIHJldHVybiBfLmlzU3RyaW5nKHYpID8gdi50cmltKCkgOiB2O1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbmZpZy5jYXJkU29ydCA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIGxvY2tlZENvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgICAgICBjb2x1bW4uY2FyZHMgPSB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuY2FyZFNvcnQoY29sdW1uLmNhcmRzKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgICAgIGNvbHVtbi5jYXJkcyA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5jYXJkU29ydChjb2x1bW4uY2FyZHMpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpbmFjdGl2ZVdpdGhQYXJlbnQuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgICAgICBjb2x1bW4uY2FyZHMgPSB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuY2FyZFNvcnQoY29sdW1uLmNhcmRzKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgYWN0aXZlV2l0aG91dFBhcmVudC5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgICAgIGNvbHVtbi5jYXJkcyA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5jYXJkU29ydChjb2x1bW4uY2FyZHMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5pbmFjdGl2ZVZpc2libGUpXHJcbiAgICAgICAgY29sdW1ucyA9IGNvbHVtbnMuY29uY2F0KGluYWN0aXZlV2l0aFBhcmVudCk7XHJcblxyXG4gICAgICBjb2x1bW5zID0gY29sdW1ucy5jb25jYXQoZW1wdHlQYXJlbnRzKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnVuYXNzaWduZWRWaXNpYmxlICYmICF0aGlzLnVuYXNzaWduZWRMb2NrZWQpXHJcbiAgICAgICAgY29sdW1ucyA9IGNvbHVtbnMuY29uY2F0KGFjdGl2ZVdpdGhvdXRQYXJlbnQpO1xyXG5cclxuICAgICAgaWYgKHRoaXMudW5hc3NpZ25lZFZpc2libGUgJiYgdGhpcy51bmFzc2lnbmVkTG9ja2VkKVxyXG4gICAgICAgIGxvY2tlZENvbHVtbnMgPSBjb2x1bW5zLmNvbmNhdChsb2NrZWRDb2x1bW5zKTtcclxuXHJcbiAgICAgIHRoaXMubG9ja2VkQ29sdW1ucyA9IGxvY2tlZENvbHVtbnM7XHJcbiAgICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnM7XHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmNsZWFyKCk7XHJcbiAgICAgICAgbmV3IENhcmRWaWV3KHRoaXMubG9ja2VkQ29sdW1ucywgdGhpcy5jb2x1bW5zKTtcclxuXHJcbiAgICAgICAgaWYgKHJldmVydCkge1xyXG4gICAgICAgICAgbGV0IGNvbHVtbkVsZW1lbnQgPSB0aGlzLnBvcnRhbC5xdWVyeVNlbGVjdG9yQWxsKCcudHJ1LWNhcmQtcG9ydGFsLWNvbHVtbnMnKVswXTtcclxuICAgICAgICAgIGxldCBwcmV2aW91c1Njcm9sbFBvc2l0aW9uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Njcm9sbF9wb3NpdGlvbicgKyB1dWlkdjQoKSk7XHJcbiAgICAgICAgICBjb2x1bW5FbGVtZW50LnNjcm9sbExlZnQgPSBwcmV2aW91c1Njcm9sbFBvc2l0aW9uID8gK3ByZXZpb3VzU2Nyb2xsUG9zaXRpb24gOiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjbGFzcyBDYXJkVmlldyB7XHJcbiAgICAgIGNvbnN0cnVjdG9yKGxvY2tlZENvbHVtbnM6IGFueSwgY29sdW1uczogYW55KSB7XHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucGFyZW50VGFibGVOYW1lID0gdGhpcy5jb25maWcucGFyZW50VGFibGVOYW1lO1xyXG4gICAgdGhpcy5wYXJlbnRUYWJsZVBsdXJhbExhYmVsID0gdGhpcy5jb25maWcucGFyZW50VGFibGVQbHVyYWxMYWJlbDtcclxuICAgIHRoaXMuY2hpbGRUYWJsZU5hbWUgPSB0aGlzLmNvbmZpZy5jaGlsZFRhYmxlTmFtZTtcclxuICAgIHRoaXMuY2hpbGRUYWJsZVBsdXJhbExhYmVsID0gdGhpcy5jb25maWcuY2hpbGRUYWJsZVBsdXJhbExhYmVsO1xyXG4gICAgdGhpcy5rZXkgPSB0aGlzLmNvbmZpZy5rZXk7XHJcbiAgICB0aGlzLnBhcmVudFF1ZXJ5ID0gbnVsbFxyXG4gICAgdGhpcy5sb2NrUHJvcGVydHkgPSB0aGlzLmNvbmZpZy5sb2NrUHJvcGVydHk7XHJcbiAgICB0aGlzLmNvbG9yID0gdGhpcy5jb25maWcuY29sb3I7XHJcbiAgICB0aGlzLnVuYXNzaWduZWRWaXNpYmxlID0gdGhpcy5jb25maWcudW5hc3NpZ25lZFZpc2libGU7XHJcbiAgICB0aGlzLnVuYXNzaWduZWROYW1lID0gdGhpcy5jb25maWcudW5hc3NpZ25lZE5hbWU7XHJcbiAgICB0aGlzLnVuYXNzaWduZWRMb2NrZWQgPSB0aGlzLmNvbmZpZy51bmFzc2lnbmVkTG9ja2VkO1xyXG4gICAgdGhpcy51bmFzc2lnbmVkQ29sb3IgPSB0aGlzLmNvbmZpZy51bmFzc2lnbmVkQ29sb3I7XHJcbiAgICB0aGlzLnVuYXNzaWduZWREcmFnZ2FibGUgPSB0aGlzLmNvbmZpZy51bmFzc2lnbmVkRHJhZ2dhYmxlO1xyXG4gICAgdGhpcy51bmFzc2lnbmVkRHJvcHBhYmxlID0gdGhpcy5jb25maWcudW5hc3NpZ25lZERyb3BwYWJsZTtcclxuXHJcbiAgICB0aGlzLmluYWN0aXZlVmlzaWJsZSA9IHRoaXMuY29uZmlnLmluYWN0aXZlVmlzaWJsZTtcclxuICAgIHRoaXMuaW5hY3RpdmVEcmFnZ2FibGUgPSB0aGlzLmNvbmZpZy5pbmFjdGl2ZURyYWdnYWJsZTtcclxuICAgIHRoaXMuaW5hY3RpdmVEcm9wcGFibGUgPSB0aGlzLmNvbmZpZy5pbmFjdGl2ZURyb3BwYWJsZTtcclxuXHJcbiAgICB0aGlzLmNvbHVtblNvcnQgPSB0aGlzLmNvbmZpZy5jb2x1bW5Tb3J0O1xyXG4gICAgdGhpcy5jYXJkU29ydCA9IHRoaXMuY29uZmlnLmNhcmRTb3J0O1xyXG5cclxuICAgIGxldCBpbmRleCA9IHRoaXMua2V5Lmxhc3RJbmRleE9mKHRoaXMucGFyZW50VGFibGVOYW1lKTtcclxuICAgIGxldCBwcmVmaXggPSB0aGlzLmtleS5zdWJzdHJpbmcoaW5kZXgsIC0xKTtcclxuICAgIGlmIChwcmVmaXgpIHtcclxuICAgICAgdGhpcy5yZWxhdGVkUGFyZW50TmFtZSA9IHByZWZpeCArIHRoaXMucGFyZW50VGFibGVOYW1lO1xyXG4gICAgICB0aGlzLnJlbGF0ZWRDaGlsZE5hbWUgPSBwcmVmaXggKyB0aGlzLmNoaWxkVGFibGVQbHVyYWxMYWJlbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucmVsYXRlZFBhcmVudE5hbWUgPSB0aGlzLnBhcmVudFRhYmxlTmFtZTtcclxuICAgICAgdGhpcy5yZWxhdGVkQ2hpbGROYW1lID0gdGhpcy5jaGlsZFRhYmxlUGx1cmFsTGFiZWw7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51bmlxdWVJZCA9IHV1aWR2NCgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidHJ1LWNhcmRcIj5cclxuICA8ZGl2ICpuZ0lmPVwiaXNCdXN5XCJcclxuICAgICAgIGNsYXNzPVwidHJ1LWNhcmQtYnVzeS1pbmRpY2F0b3JcIj5cclxuICAgIDxwPlNlYXJjaGluZyBmb3Ige3tjb25maWcuY2hpbGRUYWJsZVBsdXJhbExhYmVsfX0uLi48L3A+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cImJ1c3lNZXNzYWdlXCJcclxuICAgICAgIGNsYXNzPVwidHJ1LWNhcmQtYnVzeS1pbmRpY2F0b3JcIj5cclxuICAgIDxwPnt7YnVzeU1lc3NhZ2V9fTwvcD5cclxuICA8L2Rpdj5cclxuICA8IS0tPHRydS10b29sYmFyIFtjb25maWddPVwiY29uZmlnLnRvb2xiYXJDb25maWdcIiBjbGFzcz1cIm1haW4tdG9vbGJhclwiPjwvdHJ1LXRvb2xiYXI+LS0+XHJcbiAgPGRpdiBjbGFzcz1cInRydS1jYXJkLXBvcnRhbFwiPlxyXG4gICAgPGRpdiBbbmdTdHlsZV09XCJ7J3dpZHRoJzogKChjb25maWcud2lkdGggKiBsb2NrZWRDb2x1bW5zLmxlbmd0aCkgKyAoMTAgKiBsb2NrZWRDb2x1bW5zLmxlbmd0aCAtIDEpKSArICdweCcgfVwiXHJcbiAgICAgICAgIFtuZ0NsYXNzXT1cInsndHJ1LWNhcmQtcG9ydGFsLWxvY2tlZC1jb2x1bW5zLWRpdmlkZXInOiBsb2NrZWRDb2x1bW5zLmxlbmd0aH1cIlxyXG4gICAgICAgICAqbmdJZj1cImxvY2tlZENvbHVtbnMubGVuZ3RoXCJcclxuICAgICAgICAgY2xhc3M9XCJ0cnUtY2FyZC1wb3J0YWwtbG9ja2VkLWNvbHVtbnMgbG9ja2VkLWNvbHVtbnNcIj5cclxuXHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgW25nU3R5bGVdPVwieydsZWZ0JzogbG9ja2VkQ29sdW1ucy5sZW5ndGggPyAoKGNvbmZpZy53aWR0aCAqIGxvY2tlZENvbHVtbnMubGVuZ3RoKSArICgxMCAqIGxvY2tlZENvbHVtbnMubGVuZ3RoIC0gMSkgKyAyMikgKyAncHgnIDogMCB9XCJcclxuICAgICAgICAgY2xhc3M9XCJ0cnUtY2FyZC1wb3J0YWwtY29sdW1ucyB1bmxvY2tlZC1jb2x1bW5zXCI+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -2660,6 +2660,7 @@ class TruCardColumn {
|
|
|
2660
2660
|
cardFilterStr;
|
|
2661
2661
|
uniqueId;
|
|
2662
2662
|
busyMessage = 'Rendering...';
|
|
2663
|
+
isBusy = false;
|
|
2663
2664
|
columns;
|
|
2664
2665
|
lockedColumns;
|
|
2665
2666
|
constructor(dataContext, modelTypeLookup) {
|
|
@@ -2915,11 +2916,11 @@ class TruCardColumn {
|
|
|
2915
2916
|
this.uniqueId = v4();
|
|
2916
2917
|
}
|
|
2917
2918
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruCardColumn, deps: [{ token: TruDataContext }, { token: TruModelTypeLookup }], target: i0.ɵɵFactoryTarget.Component });
|
|
2918
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruCardColumn, selector: "tru-card-column", inputs: { config: "config", name: "name" }, viewQueries: [{ propertyName: "portal", first: true, predicate: [".tru-card-portal"], descendants: true }], ngImport: i0, template: "
|
|
2919
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruCardColumn, selector: "tru-card-column", inputs: { config: "config", name: "name" }, viewQueries: [{ propertyName: "portal", first: true, predicate: [".tru-card-portal"], descendants: true }], ngImport: i0, template: "<div class=\"tru-card\">\r\n <div *ngIf=\"isBusy\"\r\n class=\"tru-card-busy-indicator\">\r\n <p>Searching for {{config.childTablePluralLabel}}...</p>\r\n </div>\r\n <div *ngIf=\"busyMessage\"\r\n class=\"tru-card-busy-indicator\">\r\n <p>{{busyMessage}}</p>\r\n </div>\r\n <!--<tru-toolbar [config]=\"config.toolbarConfig\" class=\"main-toolbar\"></tru-toolbar>-->\r\n <div class=\"tru-card-portal\">\r\n <div [ngStyle]=\"{'width': ((config.width * lockedColumns.length) + (10 * lockedColumns.length - 1)) + 'px' }\"\r\n [ngClass]=\"{'tru-card-portal-locked-columns-divider': lockedColumns.length}\"\r\n *ngIf=\"lockedColumns.length\"\r\n class=\"tru-card-portal-locked-columns locked-columns\">\r\n\r\n </div>\r\n <div [ngStyle]=\"{'left': lockedColumns.length ? ((config.width * lockedColumns.length) + (10 * lockedColumns.length - 1) + 22) + 'px' : 0 }\"\r\n class=\"tru-card-portal-columns unlocked-columns\">\r\n\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".tru-card-busy-indicator{position:absolute;inset:25px 0 0;z-index:10000;background-color:transparent}.tru-card-busy-indicator p{position:relative;float:left;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff}.tru-card-filter{position:absolute;top:0;left:0;right:0;height:30px;line-height:30px;padding-left:10px}.tru-card-portal{position:absolute;inset:30px 10px 0;border:1px solid #ddd;padding:10px;background-color:#0079bf}.tru-card-portal-disabled>*{opacity:.75;pointer-events:none}.tru-card-portal-locked-columns{position:absolute;top:10px;left:0;bottom:0;padding:0 5px 10px 10px;display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-start}.tru-card-portal-locked-columns .tru-card-portal-column{margin-left:0;margin-bottom:0}.tru-card-portal-locked-columns .tru-card-portal-column:not(:first-child){margin-left:10px!important}.tru-card-portal-locked-columns-divider{border-right:1px solid #cdd2d4}.tru-card-portal-columns{position:absolute;inset:10px 10px 10px 222px;padding-top:0;display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-start;overflow-x:auto;overflow-y:hidden}.tru-card-portal-column{position:relative;border:1px solid #ddd;border-radius:4px;background:#e2e4e6;vertical-align:top;max-height:calc(100% + 8px);margin-left:10px;margin-bottom:10px;display:flex;flex-direction:column}.tru-card-portal-column-inactive *{font-style:italic;opacity:.7}.tru-card-portal-column-header{flex:0 0 auto;padding:5px;position:relative;min-height:18px}.tru-card-portal-column-header-extras{position:absolute;right:5px;top:4px}.tru-card-portal-column-header-extra-button{border-radius:3px;background:transparent}.tru-card-portal-column-header-extra-button:hover{border-radius:3px;background:#cdd2d4}.tru-card-portal-column-footer{flex:0 0 auto;padding:0 3px 3px;position:relative;height:25px;line-height:25px;display:none}.tru-card-portal-column-footer-text{font-size:14px;color:#777;padding-left:5px;text-decoration:none}.tru-card-portal-column-footer-text:hover{text-decoration:underline;color:#777}.tru-card-portal-column-footer-text:active,.tru-card-portal-column-footer-text:visited{color:#777}.tru-card-icon-small{color:#999;height:18px;font-size:14px;line-height:18px;width:19px;-webkit-font-smoothing:antialiased;display:inline-block!important;font-style:normal;font-weight:400;text-align:center;text-decoration:none;position:relative}.tru-card-portal-column-headertext{font-weight:700;font-size:16px;color:#333;padding-left:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-right:20px}.tru-card-portal-column-headertext-hover:hover{text-decoration:underline}.tru-card-portal-card-scroll-port{overflow-y:auto;overflow-x:hidden}.tru-card-portal-card-container{margin:0 3px;padding:0 2px;height:37px;transition:all .4s ease-out;opacity:1}.tru-card-portal-card-container.show{opacity:1}.tru-card-portal-card-container *{pointer-events:none}.tru-card-portal-card{background-color:#fff;border:1px solid #fff;border-radius:3px;padding:2px 6px 2px 8px;position:relative;cursor:pointer;display:block;min-height:15px;text-decoration:none;z-index:0;outline:none;box-shadow:0 .5px #ccc}.tru-card-portal-card:hover{background-color:#efefef;border:1px solid #efefef}.tru-card-portal-card p{word-wrap:break-word}.tru-card-portal-card:focus{outline:none}.tru-card-portal-card.empty{border:1px dashed #999}.tru-card-placeholder{position:absolute;left:0;right:0;margin:0;z-index:100;border-color:#0079bf;border-top-style:dashed;border-bottom-style:dashed}.tru-card-selected{border-color:#52a8eccc!important;background-color:#52a8eccc!important}.tru-card-selected p{color:#000!important}.tru-card-menu{position:absolute;top:20px;right:0;background:#fff;border:1px #ccc solid;border-radius:3px;z-index:1;padding:7px;width:200px}.tru-card-menu hr{height:1px;border:1px #ccc solid;border-bottom:0;border-left:0;border-right:0;width:100%;margin:0;padding:0}.tru-card-menu a{color:#777;text-decoration:none;float:left;line-height:16px;margin-top:2px;margin-bottom:2px}.tru-card-menu span{color:#777;float:left;line-height:16px;margin-top:3px}.tru-card-menu a:hover{text-decoration:underline;color:#777}.tru-card-menu a:active,.tru-card-menu a:visited{color:#777}.tru-card-menu-move-container{width:100%!important;display:inline-flex}.tru-card-menu-move-container select{width:100%!important}.tru-card-menu-move-container a{margin-top:1px;margin-left:3px;display:block}.tru-card-menu-move-container span{color:#0079bf;margin-top:0}.tru-card-menu-move-container .move-button-disabled{pointer-events:none;opacity:.75}.tru-card-menu-move-container .move-button-disabled span{color:#ccc}.tru-card-portal-column-filtered,.tru-card-portal-card-filtered{display:none}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
2919
2920
|
}
|
|
2920
2921
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruCardColumn, decorators: [{
|
|
2921
2922
|
type: Component,
|
|
2922
|
-
args: [{ selector: 'tru-card-column', template: "
|
|
2923
|
+
args: [{ selector: 'tru-card-column', template: "<div class=\"tru-card\">\r\n <div *ngIf=\"isBusy\"\r\n class=\"tru-card-busy-indicator\">\r\n <p>Searching for {{config.childTablePluralLabel}}...</p>\r\n </div>\r\n <div *ngIf=\"busyMessage\"\r\n class=\"tru-card-busy-indicator\">\r\n <p>{{busyMessage}}</p>\r\n </div>\r\n <!--<tru-toolbar [config]=\"config.toolbarConfig\" class=\"main-toolbar\"></tru-toolbar>-->\r\n <div class=\"tru-card-portal\">\r\n <div [ngStyle]=\"{'width': ((config.width * lockedColumns.length) + (10 * lockedColumns.length - 1)) + 'px' }\"\r\n [ngClass]=\"{'tru-card-portal-locked-columns-divider': lockedColumns.length}\"\r\n *ngIf=\"lockedColumns.length\"\r\n class=\"tru-card-portal-locked-columns locked-columns\">\r\n\r\n </div>\r\n <div [ngStyle]=\"{'left': lockedColumns.length ? ((config.width * lockedColumns.length) + (10 * lockedColumns.length - 1) + 22) + 'px' : 0 }\"\r\n class=\"tru-card-portal-columns unlocked-columns\">\r\n\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".tru-card-busy-indicator{position:absolute;inset:25px 0 0;z-index:10000;background-color:transparent}.tru-card-busy-indicator p{position:relative;float:left;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff}.tru-card-filter{position:absolute;top:0;left:0;right:0;height:30px;line-height:30px;padding-left:10px}.tru-card-portal{position:absolute;inset:30px 10px 0;border:1px solid #ddd;padding:10px;background-color:#0079bf}.tru-card-portal-disabled>*{opacity:.75;pointer-events:none}.tru-card-portal-locked-columns{position:absolute;top:10px;left:0;bottom:0;padding:0 5px 10px 10px;display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-start}.tru-card-portal-locked-columns .tru-card-portal-column{margin-left:0;margin-bottom:0}.tru-card-portal-locked-columns .tru-card-portal-column:not(:first-child){margin-left:10px!important}.tru-card-portal-locked-columns-divider{border-right:1px solid #cdd2d4}.tru-card-portal-columns{position:absolute;inset:10px 10px 10px 222px;padding-top:0;display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-start;overflow-x:auto;overflow-y:hidden}.tru-card-portal-column{position:relative;border:1px solid #ddd;border-radius:4px;background:#e2e4e6;vertical-align:top;max-height:calc(100% + 8px);margin-left:10px;margin-bottom:10px;display:flex;flex-direction:column}.tru-card-portal-column-inactive *{font-style:italic;opacity:.7}.tru-card-portal-column-header{flex:0 0 auto;padding:5px;position:relative;min-height:18px}.tru-card-portal-column-header-extras{position:absolute;right:5px;top:4px}.tru-card-portal-column-header-extra-button{border-radius:3px;background:transparent}.tru-card-portal-column-header-extra-button:hover{border-radius:3px;background:#cdd2d4}.tru-card-portal-column-footer{flex:0 0 auto;padding:0 3px 3px;position:relative;height:25px;line-height:25px;display:none}.tru-card-portal-column-footer-text{font-size:14px;color:#777;padding-left:5px;text-decoration:none}.tru-card-portal-column-footer-text:hover{text-decoration:underline;color:#777}.tru-card-portal-column-footer-text:active,.tru-card-portal-column-footer-text:visited{color:#777}.tru-card-icon-small{color:#999;height:18px;font-size:14px;line-height:18px;width:19px;-webkit-font-smoothing:antialiased;display:inline-block!important;font-style:normal;font-weight:400;text-align:center;text-decoration:none;position:relative}.tru-card-portal-column-headertext{font-weight:700;font-size:16px;color:#333;padding-left:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-right:20px}.tru-card-portal-column-headertext-hover:hover{text-decoration:underline}.tru-card-portal-card-scroll-port{overflow-y:auto;overflow-x:hidden}.tru-card-portal-card-container{margin:0 3px;padding:0 2px;height:37px;transition:all .4s ease-out;opacity:1}.tru-card-portal-card-container.show{opacity:1}.tru-card-portal-card-container *{pointer-events:none}.tru-card-portal-card{background-color:#fff;border:1px solid #fff;border-radius:3px;padding:2px 6px 2px 8px;position:relative;cursor:pointer;display:block;min-height:15px;text-decoration:none;z-index:0;outline:none;box-shadow:0 .5px #ccc}.tru-card-portal-card:hover{background-color:#efefef;border:1px solid #efefef}.tru-card-portal-card p{word-wrap:break-word}.tru-card-portal-card:focus{outline:none}.tru-card-portal-card.empty{border:1px dashed #999}.tru-card-placeholder{position:absolute;left:0;right:0;margin:0;z-index:100;border-color:#0079bf;border-top-style:dashed;border-bottom-style:dashed}.tru-card-selected{border-color:#52a8eccc!important;background-color:#52a8eccc!important}.tru-card-selected p{color:#000!important}.tru-card-menu{position:absolute;top:20px;right:0;background:#fff;border:1px #ccc solid;border-radius:3px;z-index:1;padding:7px;width:200px}.tru-card-menu hr{height:1px;border:1px #ccc solid;border-bottom:0;border-left:0;border-right:0;width:100%;margin:0;padding:0}.tru-card-menu a{color:#777;text-decoration:none;float:left;line-height:16px;margin-top:2px;margin-bottom:2px}.tru-card-menu span{color:#777;float:left;line-height:16px;margin-top:3px}.tru-card-menu a:hover{text-decoration:underline;color:#777}.tru-card-menu a:active,.tru-card-menu a:visited{color:#777}.tru-card-menu-move-container{width:100%!important;display:inline-flex}.tru-card-menu-move-container select{width:100%!important}.tru-card-menu-move-container a{margin-top:1px;margin-left:3px;display:block}.tru-card-menu-move-container span{color:#0079bf;margin-top:0}.tru-card-menu-move-container .move-button-disabled{pointer-events:none;opacity:.75}.tru-card-menu-move-container .move-button-disabled span{color:#ccc}.tru-card-portal-column-filtered,.tru-card-portal-card-filtered{display:none}\n"] }]
|
|
2923
2924
|
}], ctorParameters: () => [{ type: TruDataContext }, { type: TruModelTypeLookup }], propDecorators: { config: [{
|
|
2924
2925
|
type: Input
|
|
2925
2926
|
}], name: [{
|