@indice/ng-components 0.3.9 → 0.3.10
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/_styles.scss +131 -137
- package/esm2022/lib/controls/content-tile/content-tile.component.mjs +34 -6
- package/esm2022/lib/controls/date-picker/date-picker.component.mjs +3 -3
- package/esm2022/lib/controls/drop-down-menu/drop-down-menu.component.mjs +3 -3
- package/esm2022/lib/controls/list-view/list-view.component.mjs +3 -3
- package/esm2022/lib/controls/nav-links-list/nav-links-list.component.mjs +3 -3
- package/esm2022/lib/controls/notifications-indicator/notifications-indicator.component.mjs +3 -3
- package/esm2022/lib/controls/side-pane/side-pane.component.mjs +48 -29
- package/esm2022/lib/controls/skeleton-loader/skeleton-loader.component.mjs +3 -3
- package/esm2022/lib/controls/user-profile-menu/user-profile-menu.component.mjs +11 -7
- package/esm2022/lib/helpers/base-list.component.mjs +10 -5
- package/esm2022/lib/layouts/shell/shell-header/shell-header.component.mjs +11 -3
- package/esm2022/lib/layouts/shell/shell-layout/shell-layout.component.mjs +8 -6
- package/esm2022/lib/layouts/shell/shell-sidebar-header/shell-sidebar-header.component.mjs +3 -3
- package/esm2022/lib/layouts/shell/shell-sidebar-layout/shell-sidebar-layout.component.mjs +6 -3
- package/esm2022/lib/layouts/shell/shell-stacked-layout/shell-stacked-layout.component.mjs +8 -4
- package/esm2022/lib/layouts/views/form-layout/form-layout.component.mjs +1 -1
- package/esm2022/lib/layouts/views/model-view-layout/model-view-layout.component.mjs +6 -4
- package/esm2022/lib/layouts/views/view-layout/view-layout.component.mjs +3 -3
- package/esm2022/lib/ng-components.module.mjs +2 -4
- package/esm2022/lib/pages/http-status/error/error.component.mjs +3 -3
- package/esm2022/lib/pages/http-status/page-not-found/page-not-found.component.mjs +3 -3
- package/esm2022/lib/pages/http-status/unauthorized/unauthorized.component.mjs +3 -3
- package/esm2022/lib/types.mjs +11 -1
- package/esm2022/public-api.mjs +1 -3
- package/fesm2022/indice-ng-components.mjs +131 -76
- package/fesm2022/indice-ng-components.mjs.map +1 -1
- package/lib/controls/content-tile/content-tile.component.d.ts +13 -2
- package/lib/controls/side-pane/side-pane.component.d.ts +9 -3
- package/lib/controls/user-profile-menu/user-profile-menu.component.d.ts +2 -1
- package/lib/helpers/base-list.component.d.ts +2 -1
- package/lib/layouts/shell/shell-header/shell-header.component.d.ts +3 -1
- package/lib/layouts/shell/shell-layout/shell-layout.component.d.ts +3 -2
- package/lib/layouts/shell/shell-sidebar-layout/shell-sidebar-layout.component.d.ts +3 -2
- package/lib/layouts/shell/shell-stacked-layout/shell-stacked-layout.component.d.ts +2 -1
- package/lib/layouts/views/model-view-layout/model-view-layout.component.d.ts +2 -0
- package/lib/ng-components.module.d.ts +7 -9
- package/lib/types.d.ts +10 -1
- package/package.json +2 -2
- package/public-api.d.ts +0 -2
- package/esm2022/lib/controls/content-tile/content-tile-header/content-tile-header.component.mjs +0 -17
- package/esm2022/lib/controls/content-tile/content-tile-item/content-tile-item.component.mjs +0 -19
- package/lib/controls/content-tile/content-tile-header/content-tile-header.component.d.ts +0 -7
- package/lib/controls/content-tile/content-tile-item/content-tile-item.component.d.ts +0 -8
|
@@ -1,9 +1,37 @@
|
|
|
1
|
-
import { Component, ContentChild, ContentChildren, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { ContentTileHeaderComponent } from './content-tile-header/content-tile-header.component';
|
|
3
|
-
import { ContentTileItemComponent } from './content-tile-item/content-tile-item.component';
|
|
1
|
+
import { Component, ContentChild, ContentChildren, EventEmitter, Input, Output, TemplateRef } from '@angular/core';
|
|
4
2
|
import * as i0 from "@angular/core";
|
|
5
3
|
import * as i1 from "@angular/router";
|
|
6
4
|
import * as i2 from "@angular/common";
|
|
5
|
+
export class ContentTileHeaderComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.template = undefined;
|
|
8
|
+
}
|
|
9
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ContentTileHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.6", type: ContentTileHeaderComponent, selector: "lib-content-tile-header", queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
|
|
11
|
+
}
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ContentTileHeaderComponent, decorators: [{
|
|
13
|
+
type: Component,
|
|
14
|
+
args: [{ selector: 'lib-content-tile-header', template: '<ng-content></ng-content>' }]
|
|
15
|
+
}], ctorParameters: () => [], propDecorators: { template: [{
|
|
16
|
+
type: ContentChild,
|
|
17
|
+
args: [TemplateRef]
|
|
18
|
+
}] } });
|
|
19
|
+
export class ContentTileItemComponent {
|
|
20
|
+
constructor() {
|
|
21
|
+
this.template = undefined;
|
|
22
|
+
}
|
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ContentTileItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.6", type: ContentTileItemComponent, selector: "lib-content-tile-item", inputs: { title: "title" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
|
|
25
|
+
}
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ContentTileItemComponent, decorators: [{
|
|
27
|
+
type: Component,
|
|
28
|
+
args: [{ selector: 'lib-content-tile-item', template: '<ng-content></ng-content>' }]
|
|
29
|
+
}], ctorParameters: () => [], propDecorators: { title: [{
|
|
30
|
+
type: Input
|
|
31
|
+
}], template: [{
|
|
32
|
+
type: ContentChild,
|
|
33
|
+
args: [TemplateRef]
|
|
34
|
+
}] } });
|
|
7
35
|
export class ContentTileComponent {
|
|
8
36
|
set items(refs) {
|
|
9
37
|
if (refs) {
|
|
@@ -32,11 +60,11 @@ export class ContentTileComponent {
|
|
|
32
60
|
return false;
|
|
33
61
|
}
|
|
34
62
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ContentTileComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.6", type: ContentTileComponent, selector: "lib-content-tile", inputs: { title: "title", busy: "busy", showAction: ["show-action", "showAction"], showFooter: ["show-footer", "showFooter"], actionText: ["action-text", "actionText"] }, outputs: { tileAction: "tile-action" }, queries: [{ propertyName: "header", first: true, predicate: ContentTileHeaderComponent, descendants: true }, { propertyName: "items", predicate: ContentTileItemComponent, read: ContentTileItemComponent }], ngImport: i0, template: "<div class=\"card\" [class.card-deck-busy]=\"busy\">\r\n <div class=\"card-body\">\r\n <div class=\"kpi-tile-title-container flex align-top\">\r\n <
|
|
63
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.6", type: ContentTileComponent, selector: "lib-content-tile", inputs: { title: "title", busy: "busy", showAction: ["show-action", "showAction"], showFooter: ["show-footer", "showFooter"], actionText: ["action-text", "actionText"] }, outputs: { tileAction: "tile-action" }, queries: [{ propertyName: "header", first: true, predicate: ContentTileHeaderComponent, descendants: true }, { propertyName: "items", predicate: ContentTileItemComponent, read: ContentTileItemComponent }], ngImport: i0, template: "<div class=\"card bg-white\" [class.card-deck-busy]=\"busy\">\r\n <div class=\"card-body\">\r\n <div class=\"kpi-tile-title-container flex align-top\">\r\n <button type=\"button\" *ngIf=\"!header\" class=\"kpi-tile-action text-left flex-1 uppercase\" \r\n (click)=\"emitTileAction($event)\">{{(this.itemTemplates[selectedIndex].title ?? title) ?? '-'}}\r\n </button>\r\n <ng-container *ngIf=\"header && header.template\">\r\n <div class=\"flex-1\">\r\n <ng-template [ngTemplateOutlet]=\"header.template\"></ng-template>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"showAction\" class=\"float-right align-top\">\r\n <button type=\"button\" class=\"kpi-tile-action text-xs uppercase\" (click)=\"emitTileAction($event)\">{{actionText}}</button>\r\n </div>\r\n </div>\r\n <div class=\"flex items-center\" *ngIf=\"itemTemplates\">\r\n <ng-template [ngTemplateOutlet]=\"itemTemplates[selectedIndex].template\"></ng-template>\r\n </div>\r\n <div class=\"tile-card-footer opacity-25 hover:opacity-75\" *ngIf=\"itemTemplates && itemTemplates.length>1\">\r\n <nav class=\"flex items-center justify-between px-4 sm:px-0\">\r\n <div class=\"flex w-0 flex-1\"></div>\r\n <div class=\"flex items-center justify-between px-2\">\r\n <ng-container *ngFor=\"let item of itemTemplates; index as i\">\r\n <button type=\"button\"\r\n title=\"details\"\r\n (click)=\"selectedIndex=i\"\r\n [disabled]=\"selectedIndex===i\"\r\n class=\"tile-card-item-btn\"\r\n [class.tile-card-item-btn-available]=\"selectedIndex!==i\"\r\n [class.tile-card-item-btn-selected]=\"selectedIndex===i\">\r\n </button>\r\n </ng-container>\r\n </div>\r\n <div class=\"flex w-0 flex-1 justify-end\"></div>\r\n </nav>\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
36
64
|
}
|
|
37
65
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: ContentTileComponent, decorators: [{
|
|
38
66
|
type: Component,
|
|
39
|
-
args: [{ selector: 'lib-content-tile', template: "<div class=\"card\" [class.card-deck-busy]=\"busy\">\r\n <div class=\"card-body\">\r\n <div class=\"kpi-tile-title-container flex align-top\">\r\n <
|
|
67
|
+
args: [{ selector: 'lib-content-tile', template: "<div class=\"card bg-white\" [class.card-deck-busy]=\"busy\">\r\n <div class=\"card-body\">\r\n <div class=\"kpi-tile-title-container flex align-top\">\r\n <button type=\"button\" *ngIf=\"!header\" class=\"kpi-tile-action text-left flex-1 uppercase\" \r\n (click)=\"emitTileAction($event)\">{{(this.itemTemplates[selectedIndex].title ?? title) ?? '-'}}\r\n </button>\r\n <ng-container *ngIf=\"header && header.template\">\r\n <div class=\"flex-1\">\r\n <ng-template [ngTemplateOutlet]=\"header.template\"></ng-template>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"showAction\" class=\"float-right align-top\">\r\n <button type=\"button\" class=\"kpi-tile-action text-xs uppercase\" (click)=\"emitTileAction($event)\">{{actionText}}</button>\r\n </div>\r\n </div>\r\n <div class=\"flex items-center\" *ngIf=\"itemTemplates\">\r\n <ng-template [ngTemplateOutlet]=\"itemTemplates[selectedIndex].template\"></ng-template>\r\n </div>\r\n <div class=\"tile-card-footer opacity-25 hover:opacity-75\" *ngIf=\"itemTemplates && itemTemplates.length>1\">\r\n <nav class=\"flex items-center justify-between px-4 sm:px-0\">\r\n <div class=\"flex w-0 flex-1\"></div>\r\n <div class=\"flex items-center justify-between px-2\">\r\n <ng-container *ngFor=\"let item of itemTemplates; index as i\">\r\n <button type=\"button\"\r\n title=\"details\"\r\n (click)=\"selectedIndex=i\"\r\n [disabled]=\"selectedIndex===i\"\r\n class=\"tile-card-item-btn\"\r\n [class.tile-card-item-btn-available]=\"selectedIndex!==i\"\r\n [class.tile-card-item-btn-selected]=\"selectedIndex===i\">\r\n </button>\r\n </ng-container>\r\n </div>\r\n <div class=\"flex w-0 flex-1 justify-end\"></div>\r\n </nav>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
|
|
40
68
|
}], ctorParameters: () => [{ type: i1.Router }], propDecorators: { title: [{
|
|
41
69
|
type: Input
|
|
42
70
|
}], busy: [{
|
|
@@ -60,4 +88,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
|
|
|
60
88
|
type: ContentChild,
|
|
61
89
|
args: [ContentTileHeaderComponent]
|
|
62
90
|
}] } });
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC10aWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9jb250ZW50LXRpbGUvY29udGVudC10aWxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9jb250ZW50LXRpbGUvY29udGVudC10aWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBYSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFJdEksTUFBTSxPQUFPLDBCQUEwQjtJQUVyQztRQUQyQixhQUFRLEdBQW9CLFNBQVMsQ0FBQztJQUNqRCxDQUFDOzhHQUZOLDBCQUEwQjtrR0FBMUIsMEJBQTBCLHFHQUN2QixXQUFXLGdEQUZnQywyQkFBMkI7OzJGQUN6RSwwQkFBMEI7a0JBRHRDLFNBQVM7bUJBQUMsRUFBQyxRQUFRLEVBQUUseUJBQXlCLEVBQUUsUUFBUSxFQUFFLDJCQUEyQixFQUFDO3dEQUUxRCxRQUFRO3NCQUFsQyxZQUFZO3VCQUFDLFdBQVc7O0FBTTNCLE1BQU0sT0FBTyx3QkFBd0I7SUFHbkM7UUFEMkIsYUFBUSxHQUFvQixTQUFTLENBQUM7SUFDakQsQ0FBQzs4R0FITix3QkFBd0I7a0dBQXhCLHdCQUF3QiwrSEFFckIsV0FBVyxnREFIK0IsMkJBQTJCOzsyRkFDeEUsd0JBQXdCO2tCQURwQyxTQUFTO21CQUFDLEVBQUMsUUFBUSxFQUFFLHVCQUF1QixFQUFHLFFBQVEsRUFBRSwyQkFBMkIsRUFBQzt3REFFM0UsS0FBSztzQkFBYixLQUFLO2dCQUNxQixRQUFRO3NCQUFsQyxZQUFZO3VCQUFDLFdBQVc7O0FBUTNCLE1BQU0sT0FBTyxvQkFBb0I7SUFZL0IsSUFDSSxLQUFLLENBQUMsSUFBeUM7UUFDakQsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3RDLENBQUM7SUFDSCxDQUFDO0lBR0QsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFsQnpCLFVBQUssR0FBdUIsU0FBUyxDQUFDO1FBQ3RDLFNBQUksR0FBRyxLQUFLLENBQUM7UUFDQSxlQUFVLEdBQXdCLElBQUksQ0FBQztRQUN2QyxlQUFVLEdBQXdCLElBQUksQ0FBQztRQUN2QyxlQUFVLEdBQVcsYUFBYSxDQUFDO1FBQ3pELDRDQUE0QztRQUNyQixlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEUsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFFbEIsa0JBQWEsR0FBVSxFQUFFLENBQUM7UUFRUyxXQUFNLEdBQTJDLFNBQVMsQ0FBQztJQUMvRCxDQUFDO0lBRXZDLFFBQVE7SUFDUixDQUFDO0lBRU0sY0FBYyxDQUFDLE1BQVc7UUFDL0IsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OEdBOUJVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLCtTQW1CakIsMEJBQTBCLDJEQVB2Qix3QkFBd0IsUUFBVSx3QkFBd0IsNkJDakM3RSxpOURBc0NBOzsyRkRqQmEsb0JBQW9CO2tCQUpoQyxTQUFTOytCQUNFLGtCQUFrQjsyRUFLbkIsS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDZ0IsVUFBVTtzQkFBL0IsS0FBSzt1QkFBQyxhQUFhO2dCQUNFLFVBQVU7c0JBQS9CLEtBQUs7dUJBQUMsYUFBYTtnQkFDRSxVQUFVO3NCQUEvQixLQUFLO3VCQUFDLGFBQWE7Z0JBRUcsVUFBVTtzQkFBaEMsTUFBTTt1QkFBQyxhQUFhO2dCQUtqQixLQUFLO3NCQURSLGVBQWU7dUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsd0JBQXdCLEVBQUU7Z0JBT25DLE1BQU07c0JBQS9DLFlBQVk7dUJBQUMsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIENvbnRlbnRDaGlsZHJlbiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBDb21wb25lbnQoe3NlbGVjdG9yOiAnbGliLWNvbnRlbnQtdGlsZS1oZWFkZXInLCB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nfSlcclxuZXhwb3J0IGNsYXNzIENvbnRlbnRUaWxlSGVhZGVyQ29tcG9uZW50IHtcclxuICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmKSB0ZW1wbGF0ZTogYW55IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcbn1cclxuXHJcblxyXG5AQ29tcG9uZW50KHtzZWxlY3RvcjogJ2xpYi1jb250ZW50LXRpbGUtaXRlbScsICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nfSlcclxuZXhwb3J0IGNsYXNzIENvbnRlbnRUaWxlSXRlbUNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmKSB0ZW1wbGF0ZTogYW55IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNvbnRlbnQtdGlsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnRlbnQtdGlsZS5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbnRlbnRUaWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBidXN5ID0gZmFsc2U7XHJcbiAgQElucHV0KCdzaG93LWFjdGlvbicpIHNob3dBY3Rpb246IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB0cnVlO1xyXG4gIEBJbnB1dCgnc2hvdy1mb290ZXInKSBzaG93Rm9vdGVyOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdHJ1ZTtcclxuICBASW5wdXQoJ2FjdGlvbi10ZXh0JykgYWN0aW9uVGV4dDogc3RyaW5nID0gJ86gzrXPgc65z4PPg8+Mz4TOtc+BzrEnO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1vdXRwdXQtcmVuYW1lXHJcbiAgQE91dHB1dCgndGlsZS1hY3Rpb24nKSB0aWxlQWN0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIHB1YmxpYyBzZWxlY3RlZEluZGV4ID0gMDtcclxuXHJcbiAgcHVibGljIGl0ZW1UZW1wbGF0ZXM6IGFueVtdID0gW107XHJcbiAgQENvbnRlbnRDaGlsZHJlbihDb250ZW50VGlsZUl0ZW1Db21wb25lbnQsIHsgcmVhZDogQ29udGVudFRpbGVJdGVtQ29tcG9uZW50IH0pXHJcbiAgc2V0IGl0ZW1zKHJlZnM6IFF1ZXJ5TGlzdDxDb250ZW50VGlsZUl0ZW1Db21wb25lbnQ+KSB7XHJcbiAgICBpZiAocmVmcykge1xyXG4gICAgICB0aGlzLml0ZW1UZW1wbGF0ZXMgPSByZWZzLnRvQXJyYXkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoQ29udGVudFRpbGVIZWFkZXJDb21wb25lbnQpIGhlYWRlcjogQ29udGVudFRpbGVIZWFkZXJDb21wb25lbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVtaXRUaWxlQWN0aW9uKCRldmVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMudGlsZUFjdGlvbi5lbWl0KCRldmVudCk7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuIiwiPGRpdiBjbGFzcz1cImNhcmQgYmctd2hpdGVcIiBbY2xhc3MuY2FyZC1kZWNrLWJ1c3ldPVwiYnVzeVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJrcGktdGlsZS10aXRsZS1jb250YWluZXIgZmxleCBhbGlnbi10b3BcIj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCIhaGVhZGVyXCIgY2xhc3M9XCJrcGktdGlsZS1hY3Rpb24gdGV4dC1sZWZ0IGZsZXgtMSB1cHBlcmNhc2VcIiBcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiZW1pdFRpbGVBY3Rpb24oJGV2ZW50KVwiPnt7KHRoaXMuaXRlbVRlbXBsYXRlc1tzZWxlY3RlZEluZGV4XS50aXRsZSA/PyB0aXRsZSkgPz8gJy0nfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlciAmJiBoZWFkZXIudGVtcGxhdGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGVyLnRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzaG93QWN0aW9uXCIgY2xhc3M9XCJmbG9hdC1yaWdodCBhbGlnbi10b3BcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImtwaS10aWxlLWFjdGlvbiB0ZXh0LXhzIHVwcGVyY2FzZVwiIChjbGljayk9XCJlbWl0VGlsZUFjdGlvbigkZXZlbnQpXCI+e3thY3Rpb25UZXh0fX08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiICpuZ0lmPVwiaXRlbVRlbXBsYXRlc1wiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVRlbXBsYXRlc1tzZWxlY3RlZEluZGV4XS50ZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0aWxlLWNhcmQtZm9vdGVyIG9wYWNpdHktMjUgaG92ZXI6b3BhY2l0eS03NVwiICpuZ0lmPVwiaXRlbVRlbXBsYXRlcyAmJiBpdGVtVGVtcGxhdGVzLmxlbmd0aD4xXCI+XHJcbiAgICAgIDxuYXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtNCBzbTpweC0wXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggdy0wIGZsZXgtMVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtMlwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtVGVtcGxhdGVzOyBpbmRleCBhcyBpXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJkZXRhaWxzXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRJbmRleD1pXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2VsZWN0ZWRJbmRleD09PWlcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGlsZS1jYXJkLWl0ZW0tYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MudGlsZS1jYXJkLWl0ZW0tYnRuLWF2YWlsYWJsZV09XCJzZWxlY3RlZEluZGV4IT09aVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnRpbGUtY2FyZC1pdGVtLWJ0bi1zZWxlY3RlZF09XCJzZWxlY3RlZEluZGV4PT09aVwiPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHctMCBmbGV4LTEganVzdGlmeS1lbmRcIj48L2Rpdj5cclxuICAgICAgPC9uYXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -260,7 +260,7 @@ export class DatepickerComponent {
|
|
|
260
260
|
useExisting: forwardRef(() => DatepickerComponent),
|
|
261
261
|
multi: true
|
|
262
262
|
}
|
|
263
|
-
], viewQueries: [{ propertyName: "dateInput", first: true, predicate: ["dateInput"], descendants: true }], ngImport: i0, template: "<div class=\"
|
|
263
|
+
], viewQueries: [{ propertyName: "dateInput", first: true, predicate: ["dateInput"], descendants: true }], ngImport: i0, template: "<div [class.relative]=\"!inline\">\r\n<div class=\"datepicker-container\" (clickOutside)=\"closeCalendar()\">\r\n <input *ngIf=\"!inline\"\r\n #dateInput\r\n [readonly]=\"readonly\"\r\n name=\"dateInput\"\r\n (blur)=\"onBlur($event)\"\r\n id=\"dateInput\"\r\n title=\"dateInput\"\r\n (focus)=\"showCalendar = false\"\r\n [value]=\"value | date: displayFormat\"\r\n class=\"datepicker-input\"\r\n [ngClass]=\"{'cursor-not-allowed': disabled}\"\r\n [placeholder]=\"placeholder\">\r\n\r\n <button type=\"button\"\r\n *ngIf=\"!inline\"\r\n class=\"datepicker-button\"\r\n [disabled]=\"disabled\"\r\n (click)=\"openCalendar()\"\r\n [ngClass]=\"{'cursor-not-allowed': disabled}\">\r\n <i class=\"ms-Icon ms-Icon--DateTime2\"></i>\r\n </button>\r\n</div>\r\n<div *ngIf=\"showCalendar || inline\"\r\n [class.absolute]=\"!inline\"\r\n class=\"datepicker-background\"\r\n style=\"height:18rem;min-width:16rem;\"\r\n name=\"calendar\">\r\n <div class=\"datepicker-btn-wrapper\">\r\n <div>\r\n <button type=\"button\"(click)=\"openYears()\">\r\n <span class=\"datepicker-selected-month\">\r\n {{monthNames[month]}}\r\n </span>\r\n <span class=\"datepicker-selected-year\">\r\n {{year}}</span>\r\n </button>\r\n </div>\r\n <div *ngIf=\"!showYears; else showYearsPickerTmpl\">\r\n <button type=\"button\"\r\n class=\"datepicker-nav-btn\"\r\n (click)=\"previousMonth();\">\r\n <svg fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M15 19l-7-7 7-7\" />\r\n </svg>\r\n </button>\r\n <button type=\"button\"\r\n class=\"datepicker-nav-btn\"\r\n (click)=\"nextMonth()\">\r\n <svg fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M9 5l7 7-7 7\" />\r\n </svg>\r\n </button>\r\n </div>\r\n <ng-template #showYearsPickerTmpl>\r\n <div>\r\n <button type=\"button\"\r\n class=\"datepicker-nav-btn\"\r\n (click)=\"previousYear();\">\r\n <svg fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M15 19l-7-7 7-7\" />\r\n </svg>\r\n </button>\r\n <button type=\"button\"\r\n class=\"datepicker-nav-btn\"\r\n (click)=\"nextYear()\">\r\n <svg fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M9 5l7 7-7 7\" />\r\n </svg>\r\n </button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"datepicker-wrapper\"\r\n *ngIf=\"!showYears; else showCalYearsTmpl\">\r\n <div *ngFor=\"let day of dayNames\"\r\n class=\"datepicker-day-name\"\r\n style=\"width: 14.28%\">{{day}}</div>\r\n </div>\r\n\r\n <ng-template #showCalYearsTmpl>\r\n <div class=\"datepicker-content-wrapper\">\r\n <div *ngFor=\"let year of showCalendarYears\"\r\n style=\"width: 18.28%\"\r\n class=\"px-1 mb-1\">\r\n <div (click)=\"selectYearValue(year)\"\r\n class=\"datepicker-year\"\r\n [class]=\"year.selected ? 'selected' : 'not-selected'\">\r\n {{year.year}}</div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"datepicker-content-wrapper\" *ngIf=\"!showYears\">\r\n <div *ngFor=\"let blankday of blankDays\" style=\"width: 14.28%\" class=\"datepicker-blank-days\">{{blankday}}</div>\r\n <div *ngFor=\"let date of calendarDates;\" style=\"width: 14.28%\" class=\"px-1 mb-1\">\r\n <div (click)=\"selectDateValue(date)\" class=\"datepicker-days\" [ngClass]=\"{'out-of-range': outOfRangeDate(date),'selected': date.selected, 'not-selected':!date.selected }\">\r\n {{date.day}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] }); }
|
|
264
264
|
}
|
|
265
265
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DatepickerComponent, decorators: [{
|
|
266
266
|
type: Component,
|
|
@@ -270,7 +270,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
|
|
|
270
270
|
useExisting: forwardRef(() => DatepickerComponent),
|
|
271
271
|
multi: true
|
|
272
272
|
}
|
|
273
|
-
], template: "<div class=\"
|
|
273
|
+
], template: "<div [class.relative]=\"!inline\">\r\n<div class=\"datepicker-container\" (clickOutside)=\"closeCalendar()\">\r\n <input *ngIf=\"!inline\"\r\n #dateInput\r\n [readonly]=\"readonly\"\r\n name=\"dateInput\"\r\n (blur)=\"onBlur($event)\"\r\n id=\"dateInput\"\r\n title=\"dateInput\"\r\n (focus)=\"showCalendar = false\"\r\n [value]=\"value | date: displayFormat\"\r\n class=\"datepicker-input\"\r\n [ngClass]=\"{'cursor-not-allowed': disabled}\"\r\n [placeholder]=\"placeholder\">\r\n\r\n <button type=\"button\"\r\n *ngIf=\"!inline\"\r\n class=\"datepicker-button\"\r\n [disabled]=\"disabled\"\r\n (click)=\"openCalendar()\"\r\n [ngClass]=\"{'cursor-not-allowed': disabled}\">\r\n <i class=\"ms-Icon ms-Icon--DateTime2\"></i>\r\n </button>\r\n</div>\r\n<div *ngIf=\"showCalendar || inline\"\r\n [class.absolute]=\"!inline\"\r\n class=\"datepicker-background\"\r\n style=\"height:18rem;min-width:16rem;\"\r\n name=\"calendar\">\r\n <div class=\"datepicker-btn-wrapper\">\r\n <div>\r\n <button type=\"button\"(click)=\"openYears()\">\r\n <span class=\"datepicker-selected-month\">\r\n {{monthNames[month]}}\r\n </span>\r\n <span class=\"datepicker-selected-year\">\r\n {{year}}</span>\r\n </button>\r\n </div>\r\n <div *ngIf=\"!showYears; else showYearsPickerTmpl\">\r\n <button type=\"button\"\r\n class=\"datepicker-nav-btn\"\r\n (click)=\"previousMonth();\">\r\n <svg fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M15 19l-7-7 7-7\" />\r\n </svg>\r\n </button>\r\n <button type=\"button\"\r\n class=\"datepicker-nav-btn\"\r\n (click)=\"nextMonth()\">\r\n <svg fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M9 5l7 7-7 7\" />\r\n </svg>\r\n </button>\r\n </div>\r\n <ng-template #showYearsPickerTmpl>\r\n <div>\r\n <button type=\"button\"\r\n class=\"datepicker-nav-btn\"\r\n (click)=\"previousYear();\">\r\n <svg fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M15 19l-7-7 7-7\" />\r\n </svg>\r\n </button>\r\n <button type=\"button\"\r\n class=\"datepicker-nav-btn\"\r\n (click)=\"nextYear()\">\r\n <svg fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M9 5l7 7-7 7\" />\r\n </svg>\r\n </button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"datepicker-wrapper\"\r\n *ngIf=\"!showYears; else showCalYearsTmpl\">\r\n <div *ngFor=\"let day of dayNames\"\r\n class=\"datepicker-day-name\"\r\n style=\"width: 14.28%\">{{day}}</div>\r\n </div>\r\n\r\n <ng-template #showCalYearsTmpl>\r\n <div class=\"datepicker-content-wrapper\">\r\n <div *ngFor=\"let year of showCalendarYears\"\r\n style=\"width: 18.28%\"\r\n class=\"px-1 mb-1\">\r\n <div (click)=\"selectYearValue(year)\"\r\n class=\"datepicker-year\"\r\n [class]=\"year.selected ? 'selected' : 'not-selected'\">\r\n {{year.year}}</div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"datepicker-content-wrapper\" *ngIf=\"!showYears\">\r\n <div *ngFor=\"let blankday of blankDays\" style=\"width: 14.28%\" class=\"datepicker-blank-days\">{{blankday}}</div>\r\n <div *ngFor=\"let date of calendarDates;\" style=\"width: 14.28%\" class=\"px-1 mb-1\">\r\n <div (click)=\"selectDateValue(date)\" class=\"datepicker-days\" [ngClass]=\"{'out-of-range': outOfRangeDate(date),'selected': date.selected, 'not-selected':!date.selected }\">\r\n {{date.day}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
|
|
274
274
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
275
275
|
type: Inject,
|
|
276
276
|
args: [LOCALE_ID]
|
|
@@ -297,4 +297,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
|
|
|
297
297
|
}], maxDate: [{
|
|
298
298
|
type: Input
|
|
299
299
|
}] } });
|
|
300
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEcsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckksT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRXpFLDhGQUE4RjtBQVk5RixNQUFNLE9BQU8sbUJBQW1CO0lBNEI5QixRQUFRO1FBQ04sSUFBSSxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLEVBQUUsSUFBSSxF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LEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNyRSwyQ0FBMkM7UUFDM0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUMzQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDcEMsNkJBQTZCO1lBQzdCLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNELGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDekIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3RDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNs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ZEgscTZKQXVJTTs7MkZEdkhPLG1CQUFtQjtrQkFYL0IsU0FBUzsrQkFDRSxpQkFBaUIsYUFFaEI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUM7NEJBQ2xELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzswQkE2Q1ksTUFBTTsyQkFBQyxTQUFTO3lDQTFDcEIsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDbUIsYUFBYTtzQkFBckMsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBQ2QsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNiLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMb2NhbGVNb250aE5hbWVzLCBGb3JtU3R5bGUsIFRyYW5zbGF0aW9uV2lkdGgsIGdldExvY2FsZURheU5hbWVzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEluamVjdCwgSW5wdXQsIExPQ0FMRV9JRCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vLyBmcmVha3NseSBzaW1wbGUgZGF0ZSBwaWNrZXIgOiBodHRwczovL3RhaWx3aW5kLWVsZW1lbnRzLmNvbS9kb2NzL3N0YW5kYXJkL2Zvcm1zL2RhdGVwaWNrZXIvXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWRhdGUtcGlja2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZXBpY2tlckNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZXBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBpbmxpbmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoJ2Rpc3BsYXktZm9ybWF0JykgZGlzcGxheUZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkID0gJ2RkL01NL3l5eXknO1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcclxuICBASW5wdXQoKSB2YWx1ZTogRGF0ZSB8IHVuZGVmaW5lZCB8IG51bGwgPSBudWxsO1xyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xyXG4gIEBWaWV3Q2hpbGQoJ2RhdGVJbnB1dCcpIGRhdGVJbnB1dDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBtaW5EYXRlOiBEYXRlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIG1heERhdGU6IERhdGUgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgcHVibGljIHNob3dDYWxlbmRhciA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93WWVhcnMgPSBmYWxzZTtcclxuICBwdWJsaWMgbW9udGhOYW1lcyA9IGdldExvY2FsZU1vbnRoTmFtZXModGhpcy5sb2NhbGUsIEZvcm1TdHlsZS5TdGFuZGFsb25lLCBUcmFuc2xhdGlvbldpZHRoLldpZGUpO1xyXG4gIHB1YmxpYyBkYXlOYW1lcyA9IGdldExvY2FsZURheU5hbWVzKHRoaXMubG9jYWxlLCBGb3JtU3R5bGUuU3RhbmRhbG9uZSwgVHJhbnNsYXRpb25XaWR0aC5BYmJyZXZpYXRlZCk7XHJcblxyXG4gIHB1YmxpYyBtb250aDogbnVtYmVyID0gLTE7XHJcbiAgcHVibGljIHllYXI6IG51bWJlciA9IC0xO1xyXG4gIHB1YmxpYyBjYWxlbmRhckRhdGVzOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBjYWxlbmRhclllYXJzOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBzaG93Q2FsZW5kYXJZZWFyczogYW55W10gPSBbXTtcclxuICBwdWJsaWMgYmxhbmtEYXlzOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBjYWxlbmRhclllYXJQYWdlID0gMTtcclxuICBwcml2YXRlIHllYXJzUGVyUGFnZSA9IDMwO1xyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlJDogYW55IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgb25Ub3VjaGVkJDogYW55IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGxldCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICB0aGlzLm1vbnRoID0gdG9kYXkuZ2V0TW9udGgoKTtcclxuICAgIHRoaXMueWVhciA9IHRvZGF5LmdldEZ1bGxZZWFyKCk7XHJcbiAgICB0aGlzLmNhbGVuZGFyRGF0ZXMgPSBbeyBkYXk6IHRoaXMudmFsdWUsIHRvZGF5OiB0aGlzLnZhbHVlLCBzZWxlY3RlZDogdGhpcy52YWx1ZSB9XTtcclxuICAgIHRoaXMuY2FsZW5kYXJZZWFycyA9IFt7IHllYXI6IHRoaXMudmFsdWU/LmdldEZ1bGxZZWFyKCksIHRvZGF5OiB0aGlzLnZhbHVlLCBzZWxlY3RlZDogdGhpcy52YWx1ZSB9XTtcclxuICAgIGNvbnN0IHllYXJzQXJyYXkgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAxOTUwOyBpIDw9IHRvZGF5LmdldEZ1bGxZZWFyKCkgKyAyOyBpKyspIHtcclxuICAgICAgeWVhcnNBcnJheS5wdXNoKHsgeWVhcjogaSwgdG9kYXk6IHRoaXMuY29tcGFyZURhdGVzKHRvZGF5LCBudWxsLCBpKSwgc2VsZWN0ZWQ6IGkgPT0gdGhpcy52YWx1ZT8uZ2V0RnVsbFllYXIoKSB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuY2FsZW5kYXJZZWFycyA9IHllYXJzQXJyYXk7XHJcbiAgICB0aGlzLnNob3dDYWxlbmRhclllYXJzID0gdGhpcy5wYWdpbmF0ZSh0aGlzLmNhbGVuZGFyWWVhcnMsIDEpO1xyXG4gICAgdGhpcy5jYWxjRGF5cygpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoQEluamVjdChMT0NBTEVfSUQpIHB1YmxpYyBsb2NhbGU6IHN0cmluZykgeyB9XHJcblxyXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChvYmopIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IG5ldyBEYXRlKG9iaik7XHJcbiAgICAgIHRoaXMubW9udGggPSB0aGlzLnZhbHVlLmdldE1vbnRoKCk7XHJcbiAgICAgIHRoaXMueWVhciA9IHRoaXMudmFsdWUuZ2V0RnVsbFllYXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UkID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCQgPSBmbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkJsdXIoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub25Ub3VjaGVkJCkge1xyXG4gICAgICB0aGlzLm9uVG91Y2hlZCQoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0RGF0ZUZyb21JbnB1dCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdERhdGVWYWx1ZShkYXRlOiBhbnkpOiB2b2lkIHtcclxuICAgIC8vIFRoaXMgc2hvdWxkIGJlIGluIFVUQ1xyXG4gICAgaWYgKCF0aGlzLm91dE9mUmFuZ2VEYXRlKGRhdGUuZGF5KSkge1xyXG4gICAgICBsZXQgc2VsZWN0ZWREYXRlID0gbmV3IERhdGUodGhpcy55ZWFyLCB0aGlzLm1vbnRoLCBkYXRlLmRheSwgMywgMCwgMCwgMCk7XHJcbiAgICAgIHRoaXMudmFsdWUgPSBzZWxlY3RlZERhdGU7XHJcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcclxuICAgICAgaWYgKHRoaXMub25DaGFuZ2UkKSB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSQodGhpcy52YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy51cGRhdGVEYXlzKCk7XHJcbiAgICAgIGlmICh0aGlzLm9uVG91Y2hlZCQpIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCQoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNhbGNEYXlzKCk7XHJcbiAgICAgIHRoaXMuc2hvd0NhbGVuZGFyID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0WWVhclZhbHVlKHllYXI6IGFueSk6IHZvaWQge1xyXG4gICAgLy8gVGhpcyBzaG91bGQgYmUgaW4gVVRDXHJcbiAgICBjb25zdCB0ZW1wWWVhciA9IHRoaXMueWVhcjtcclxuICAgIHRoaXMueWVhciA9IHllYXIueWVhcjtcclxuICAgIGlmICghdGhpcy5vdXRPZlJhbmdlRGF0ZSh0aGlzLmNhbGVuZGFyRGF0ZXM/LmZpbmQoeCA9PiB4LnNlbGVjdGVkID09IHRydWUpID8/IHsgZGF5OiAxIH0pKSB7XHJcbiAgICAgIGxldCBzZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh5ZWFyLnllYXIsIHRoaXMubW9udGggPz8gMSwgdGhpcy5jYWxlbmRhckRhdGVzPy5maW5kKHggPT4geC5zZWxlY3RlZCA9PSB0cnVlKS5kYXkgPz8gMSwgMywgMCwgMCwgMCk7XHJcbiAgICAgIHRoaXMudmFsdWUgPSBzZWxlY3RlZERhdGU7XHJcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcclxuICAgICAgaWYgKHRoaXMub25DaGFuZ2UkKSB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSQodGhpcy52YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy51cGRhdGVEYXlzKCk7XHJcbiAgICAgIGlmICh0aGlzLm9uVG91Y2hlZCQpIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCQoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNob3dZZWFycyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNob3dDYWxlbmRhciA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2FsY0RheXMoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMueWVhciA9IHRlbXBZZWFyO1xyXG4gICAgICB0aGlzLnNob3dZZWFycyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNob3dDYWxlbmRhciA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcHJldmlvdXNNb250aCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm1vbnRoICE9PSAwKSB7XHJcbiAgICAgIHRoaXMubW9udGggPSB0aGlzLm1vbnRoIC0gMTtcclxuICAgICAgdGhpcy5jYWxjRGF5cygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tb250aCA9IDExO1xyXG4gICAgICB0aGlzLnllYXIgPSB0aGlzLnllYXIgLSAxO1xyXG4gICAgICB0aGlzLmNhbGNEYXlzKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vblRvdWNoZWQkKSB7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkJCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5leHRNb250aCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm1vbnRoICE9PSAxMSkge1xyXG4gICAgICB0aGlzLm1vbnRoID0gdGhpcy5tb250aCArIDE7XHJcbiAgICAgIHRoaXMuY2FsY0RheXMoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubW9udGggPSAwO1xyXG4gICAgICB0aGlzLnllYXIgPSB0aGlzLnllYXIgKyAxO1xyXG4gICAgICB0aGlzLmNhbGNEYXlzKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vblRvdWNoZWQkKSB7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkJCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHByZXZpb3VzWWVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd0NhbGVuZGFyWWVhcnMgPSB0aGlzLnBhZ2luYXRlKFxyXG4gICAgICB0aGlzLmNhbGVuZGFyWWVhcnMsXHJcbiAgICAgIHRoaXMuY2FsZW5kYXJZZWFyUGFnZSA+IDEgPyAtLXRoaXMuY2FsZW5kYXJZZWFyUGFnZSA6IDEpO1xyXG4gICAgdGhpcy5jYWxjRGF5cygpO1xyXG4gICAgaWYgKHRoaXMub25Ub3VjaGVkJCkge1xyXG4gICAgICB0aGlzLm9uVG91Y2hlZCQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZXh0WWVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd0NhbGVuZGFyWWVhcnMgPSB0aGlzLnBhZ2luYXRlKFxyXG4gICAgICB0aGlzLmNhbGVuZGFyWWVhcnMsXHJcbiAgICAgIHRoaXMuY2FsZW5kYXJZZWFyUGFnZSA8PSB0aGlzLmNhbGVuZGFyWWVhcnMubGVuZ3RoIC8gdGhpcy55ZWFyc1BlclBhZ2VcclxuICAgICAgICA/ICsrdGhpcy5jYWxlbmRhclllYXJQYWdlXHJcbiAgICAgICAgOiB0aGlzLmNhbGVuZGFyWWVhclBhZ2UpO1xyXG4gICAgdGhpcy5jYWxjRGF5cygpO1xyXG4gICAgaWYgKHRoaXMub25Ub3VjaGVkJCkge1xyXG4gICAgICB0aGlzLm9uVG91Y2hlZCQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29tcGFyZURhdGVzKGRhdGUxOiBEYXRlIHwgdW5kZWZpbmVkIHwgbnVsbCwgZGF5OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLCB5ZWFyOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWRhdGUxKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSh5ZWFyID8/IHRoaXMueWVhciwgdGhpcy5tb250aCwgZGF5ID8/IHRoaXMudmFsdWU/LmdldERheSgpKTtcclxuICAgIHJldHVybiBkYXRlMS50b0RhdGVTdHJpbmcoKSA9PT0gZC50b0RhdGVTdHJpbmcoKTtcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGNhbGNEYXlzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZGF5c0luTW9udGggPSBuZXcgRGF0ZSh0aGlzLnllYXIsIHRoaXMubW9udGggKyAxLCAwKS5nZXREYXRlKCk7XHJcbiAgICAvLyBmaW5kIHdoZXJlIHRvIHN0YXJ0IGNhbGVuZGFyIGRheSBvZiB3ZWVrXHJcbiAgICBjb25zdCBkYXlPZldlZWsgPSBuZXcgRGF0ZSh0aGlzLnllYXIsIHRoaXMubW9udGgpLmdldERheSgpO1xyXG4gICAgY29uc3QgYmxhbmtkYXlzQXJyYXkgPSBuZXcgQXJyYXk8bnVtYmVyPigpO1xyXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gZGF5T2ZXZWVrOyBpKyspIHtcclxuICAgICAgLy8gY2hlY2sgaWYgbW9udGggaXMgRmVicnVhcnlcclxuICAgICAgYmxhbmtkYXlzQXJyYXkucHVzaCh0aGlzLm1vbnRoICE9IDIgPyAoMzIgLSBpKSA6ICgyOSAtIGkpKTtcclxuICAgICAgYmxhbmtkYXlzQXJyYXkucmV2ZXJzZSgpLnNvcnQoKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGRheXNBcnJheSA9IFtdO1xyXG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gZGF5c0luTW9udGg7IGkrKykge1xyXG4gICAgICBkYXlzQXJyYXkucHVzaCh7IGRheTogaSwgdG9kYXk6IHRoaXMuY29tcGFyZURhdGVzKHRvZGF5LCBpLCBudWxsKSwgc2VsZWN0ZWQ6IHRoaXMuY29tcGFyZURhdGVzKHRoaXMudmFsdWUgPz8gdG9kYXksIGksIG51bGwpIH0pO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeWVhcnNBcnJheSA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDE5NTA7IGkgPD0gdG9kYXkuZ2V0RnVsbFllYXIoKSArIDI7IGkrKykge1xyXG4gICAgICB5ZWFyc0FycmF5LnB1c2goeyB5ZWFyOiBpLCB0b2RheTogdGhpcy5jb21wYXJlRGF0ZXModG9kYXksIG51bGwsIGkpLCBzZWxlY3RlZDogaSA9PSB0aGlzLnllYXIgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNhbGVuZGFyWWVhcnMgPSB5ZWFyc0FycmF5O1xyXG4gICAgdGhpcy5ibGFua0RheXMgPSBibGFua2RheXNBcnJheTtcclxuICAgIHRoaXMuY2FsZW5kYXJEYXRlcyA9IGRheXNBcnJheTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRGF5cygpOiB2b2lkIHtcclxuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcclxuICAgIHRoaXMuY2FsZW5kYXJEYXRlcy5mb3JFYWNoKGQgPT4ge1xyXG4gICAgICBkLnRvZGF5ID0gdGhpcy5jb21wYXJlRGF0ZXModG9kYXksIGQsIHRoaXMueWVhcik7XHJcbiAgICAgIGQuc2VsZWN0ZWQgPSB0aGlzLmNvbXBhcmVEYXRlcyh0aGlzLnZhbHVlLCBkLCB0aGlzLnllYXIpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhZ2luYXRlKGFycmF5OiBhbnlbXSwgcGFnZV9udW1iZXI6IG51bWJlcik6IGFueVtdIHtcclxuICAgIHJldHVybiBhcnJheS5zbGljZSgocGFnZV9udW1iZXIgLSAxKSAqIHRoaXMueWVhcnNQZXJQYWdlLCBwYWdlX251bWJlciAqIHRoaXMueWVhcnNQZXJQYWdlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGF0ZUZyb21JbnB1dCgpIHtcclxuICAgIGlmKCF0aGlzLmRhdGVJbnB1dD8ubmF0aXZlRWxlbWVudC52YWx1ZSB8fCB0aGlzLmRhdGVJbnB1dD8ubmF0aXZlRWxlbWVudC52YWx1ZSA9PT0gJycpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xyXG4gICAgICBpZiAodGhpcy5vbkNoYW5nZSQpIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlJCh0aGlzLnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0ZUlucHV0Py5uYXRpdmVFbGVtZW50LnZhbHVlICE9PSAnJyAmJiAhdGhpcy5pbmxpbmUpIHsgICAgXHJcbiAgICAgIHZhciBkYXRlUGFydHMgPSB0aGlzLmRhdGVJbnB1dD8ubmF0aXZlRWxlbWVudC52YWx1ZS5zcGxpdChcIi9cIik7XHJcbiAgICAgIGxldCBkYXRlSW5HckZvcm1hdCA9IG5ldyBEYXRlKCtkYXRlUGFydHNbMl0sIGRhdGVQYXJ0c1sxXSAtIDEsICtkYXRlUGFydHNbMF0sIDMsIDAsIDApO1xyXG4gICAgICBpZiAoZGF0ZUluR3JGb3JtYXQudG9TdHJpbmcoKSAhPT0gJ0ludmFsaWQgRGF0ZScpIHtcclxuICAgICAgICB0aGlzLndyaXRlVmFsdWUoZGF0ZUluR3JGb3JtYXQpXHJcbiAgICAgICAgdGhpcy5jYWxjRGF5cygpO1xyXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChkYXRlSW5HckZvcm1hdCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMub25DaGFuZ2UkKSB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSQodGhpcy52YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy51cGRhdGVEYXlzKCk7XHJcbiAgICAgIGlmICh0aGlzLm9uVG91Y2hlZCQpIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5zaG93Q2FsZW5kYXIgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuWWVhcnMoKSB7XHJcbiAgICB0aGlzLnNob3dZZWFycyA9ICF0aGlzLnNob3dZZWFycztcclxuICAgIHRoaXMuY2FsZW5kYXJZZWFyUGFnZSA9IE1hdGguY2VpbCh0aGlzLmNhbGVuZGFyWWVhcnMubWFwKHggPT4geC55ZWFyKS5pbmRleE9mKHRoaXMueWVhcikgLyB0aGlzLnllYXJzUGVyUGFnZSk7XHJcbiAgICB0aGlzLnNob3dDYWxlbmRhclllYXJzID0gdGhpcy5wYWdpbmF0ZSh0aGlzLmNhbGVuZGFyWWVhcnMsIHRoaXMuY2FsZW5kYXJZZWFyUGFnZSAhPT0gMCA/IHRoaXMuY2FsZW5kYXJZZWFyUGFnZSA6IDEpO1xyXG4gICAgdGhpcy5jYWxjRGF5cygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW5DYWxlbmRhcigpIHtcclxuICAgIHRoaXMuc2hvd0NhbGVuZGFyID0gIXRoaXMuc2hvd0NhbGVuZGFyO1xyXG4gICAgdGhpcy5jYWxjRGF5cygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlQ2FsZW5kYXIoKSB7XHJcbiAgICB0aGlzLnNob3dDYWxlbmRhciA9IGZhbHNlO1xyXG4gICAgLy8gdGhpcy5nZXREYXRlRnJvbUlucHV0KCk7XHJcbiAgfVxyXG5cclxuICBvdXRPZlJhbmdlRGF0ZShkYXRlOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGxldCBvdXRPZlJhbmdlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5taW5EYXRlIHx8IHRoaXMubWF4RGF0ZSkge1xyXG4gICAgICBjb25zdCBkID0gbmV3IERhdGUodGhpcy55ZWFyLCB0aGlzLm1vbnRoLCBkYXRlLmRheSk7XHJcbiAgICAgIGNvbnN0IGRhdGVJbk1pbGxpcyA9IGQuZ2V0VGltZSgpO1xyXG4gICAgICBpZiAodGhpcy5taW5EYXRlKSB7XHJcbiAgICAgICAgbGV0IG1pbkRhdGU6IG51bWJlciA9IHRoaXMubWluRGF0ZS5nZXRUaW1lKCk7XHJcbiAgICAgICAgaWYgKGRhdGVJbk1pbGxpcyA8IG1pbkRhdGUgJiYgdGhpcy5taW5EYXRlLnRvRGF0ZVN0cmluZygpICE9PSBkLnRvRGF0ZVN0cmluZygpKSB7XHJcbiAgICAgICAgICBvdXRPZlJhbmdlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMubWF4RGF0ZSkge1xyXG4gICAgICAgIGxldCBtYXhEYXRlOiBudW1iZXIgPSB0aGlzLm1heERhdGUuZ2V0VGltZSgpO1xyXG4gICAgICAgIGlmIChkYXRlSW5NaWxsaXMgPiBtYXhEYXRlICYmIHRoaXMubWF4RGF0ZS50b0RhdGVTdHJpbmcoKSAhPT0gZC50b0RhdGVTdHJpbmcoKSkge1xyXG4gICAgICAgICAgb3V0T2ZSYW5nZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb3V0T2ZSYW5nZTtcclxuICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwiZmxleFwiXHJcbiAgICAgW25nQ2xhc3NdPVwieydyZWxhdGl2ZSc6ICFpbmxpbmV9XCJcclxuICAgICAoY2xpY2tPdXRzaWRlKT1cImNsb3NlQ2FsZW5kYXIoKVwiPlxyXG5cclxuICA8aW5wdXQgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAqbmdJZj1cIiFpbmxpbmVcIlxyXG4gICAgICAgICAjZGF0ZUlucHV0XHJcbiAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgIG5hbWU9XCJkYXRlSW5wdXRcIlxyXG4gICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXHJcbiAgICAgICAgIGlkPVwiZGF0ZUlucHV0XCJcclxuICAgICAgICAgdGl0bGU9XCJkYXRlSW5wdXRcIlxyXG4gICAgICAgICAoZm9jdXMpPVwic2hvd0NhbGVuZGFyID0gZmFsc2VcIlxyXG4gICAgICAgICBbdmFsdWVdPVwidmFsdWUgfCBkYXRlOiBkaXNwbGF5Rm9ybWF0XCJcclxuICAgICAgICAgY2xhc3M9XCJkZXRhcGlja2VyLWlucHV0XCJcclxuICAgICAgICAgW25nQ2xhc3NdPVwieydjdXJzb3Itbm90LWFsbG93ZWQnOiBkaXNhYmxlZH1cIlxyXG4gICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGlzYWJsZWQgPyAnJyA6IHBsYWNlaG9sZGVyXCI+XHJcblxyXG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAqbmdJZj1cIiFpbmxpbmVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRlcGlja2VyLWJ1dHRvblwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5DYWxlbmRhcigpXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY3Vyc29yLW5vdC1hbGxvd2VkJzogZGlzYWJsZWR9XCI+XHJcbiAgICA8aSBjbGFzcz1cIm1zLUljb24gbXMtSWNvbi0tRGF0ZVRpbWUyXCI+PC9pPlxyXG4gIDwvYnV0dG9uPlxyXG5cclxuICA8ZGl2ICpuZ0lmPVwic2hvd0NhbGVuZGFyIHx8IGlubGluZVwiXHJcbiAgICAgICBbbmdDbGFzc109XCJ7J2Fic29sdXRlJzogIWlubGluZX1cIlxyXG4gICAgICAgY2xhc3M9XCJkYXRlcGlja2VyLWJhY2tncm91bmRcIlxyXG4gICAgICAgc3R5bGU9XCJoZWlnaHQ6MThyZW07bWluLXdpZHRoOjE2cmVtO1wiXHJcbiAgICAgICBuYW1lPVwiY2FsZW5kYXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyLWJ0bi13cmFwcGVyXCI+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuWWVhcnMoKVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlcGlja2VyLXNlbGVjdGVkLW1vbnRoXCI+XHJcbiAgICAgICAgICAgIHt7bW9udGhOYW1lc1ttb250aF19fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlcGlja2VyLXNlbGVjdGVkLXllYXJcIj5cclxuICAgICAgICAgICAge3t5ZWFyfX08L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiIXNob3dZZWFyczsgZWxzZSBzaG93WWVhcnNQaWNrZXJUbXBsXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0ZXBpY2tlci1uYXYtYnRuXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmV2aW91c01vbnRoKCk7XCI+XHJcbiAgICAgICAgICA8c3ZnIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgZD1cIk0xNSAxOWwtNy03IDctN1wiIC8+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRlcGlja2VyLW5hdi1idG5cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRNb250aCgpXCI+XHJcbiAgICAgICAgICA8c3ZnIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgZD1cIk05IDVsNyA3LTcgN1wiIC8+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd1llYXJzUGlja2VyVG1wbD5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRlcGlja2VyLW5hdi1idG5cIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJldmlvdXNZZWFyKCk7XCI+XHJcbiAgICAgICAgICAgIDxzdmcgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxyXG4gICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTE1IDE5bC03LTcgNy03XCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0ZXBpY2tlci1uYXYtYnRuXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRZZWFyKClcIj5cclxuICAgICAgICAgICAgPHN2ZyBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCI+XHJcbiAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNOSA1bDcgNy03IDdcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXItd3JhcHBlclwiXHJcbiAgICAgICAgICpuZ0lmPVwiIXNob3dZZWFyczsgZWxzZSBzaG93Q2FsWWVhcnNUbXBsXCI+XHJcbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRheSBvZiBkYXlOYW1lc1wiXHJcbiAgICAgICAgICAgY2xhc3M9XCJkYXRlcGlja2VyLWRheS1uYW1lXCJcclxuICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxNC4yOCVcIj57e2RheX19PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI3Nob3dDYWxZZWFyc1RtcGw+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyLWNvbnRlbnQtd3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHllYXIgb2Ygc2hvd0NhbGVuZGFyWWVhcnNcIlxyXG4gICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTguMjglXCJcclxuICAgICAgICAgICAgIGNsYXNzPVwicHgtMSBtYi0xXCI+XHJcbiAgICAgICAgICA8ZGl2IChjbGljayk9XCJzZWxlY3RZZWFyVmFsdWUoeWVhcilcIlxyXG4gICAgICAgICAgICAgICBjbGFzcz1cImRhdGVwaWNrZXIteWVhclwiXHJcbiAgICAgICAgICAgICAgIFtjbGFzc109XCJ5ZWFyLnNlbGVjdGVkICA/ICdzZWxlY3RlZCcgOiAnbm90LXNlbGVjdGVkJ1wiPlxyXG4gICAgICAgICAgICB7e3llYXIueWVhcn19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1jb250ZW50LXdyYXBwZXJcIlxyXG4gICAgICAgICAqbmdJZj1cIiFzaG93WWVhcnNcIj5cclxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYmxhbmtkYXkgb2YgYmxhbmtEYXlzXCJcclxuICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxNC4yOCVcIlxyXG4gICAgICAgICAgIGNsYXNzPVwiZGF0ZXBpY2tlci1ibGFuay1kYXlzXCI+e3tibGFua2RheX19PC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGUgb2YgY2FsZW5kYXJEYXRlcztcIlxyXG4gICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDE0LjI4JVwiXHJcbiAgICAgICAgICAgY2xhc3M9XCJweC0xIG1iLTFcIj5cclxuICAgICAgICA8ZGl2IChjbGljayk9XCJzZWxlY3REYXRlVmFsdWUoZGF0ZSlcIlxyXG4gICAgICAgICAgICAgY2xhc3M9XCJkYXRlcGlja2VyLWRheXNcIlxyXG4gICAgICAgICAgICAgW25nQ2xhc3NdPVwieydvdXQtb2YtcmFuZ2UnOiBvdXRPZlJhbmdlRGF0ZShkYXRlKSwnc2VsZWN0ZWQnOiBkYXRlLnNlbGVjdGVkLCAnbm90LXNlbGVjdGVkJzohZGF0ZS5zZWxlY3RlZCB9XCI+XHJcbiAgICAgICAgICB7e2RhdGUuZGF5fX08L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PiJdfQ==
|
|
300
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEcsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckksT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRXpFLDhGQUE4RjtBQVk5RixNQUFNLE9BQU8sbUJBQW1CO0lBNEI5QixRQUFRO1FBQ04sSUFBSSxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3BHLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUN0QixLQUFLLElBQUksQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3JELFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUM7UUFDaEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELFlBQXNDLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBMUMzQyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUNSLGtCQUFhLEdBQXVCLFlBQVksQ0FBQztRQUNqRSxnQkFBVyxHQUF1QixFQUFFLENBQUM7UUFDckMsVUFBSyxHQUE0QixJQUFJLENBQUM7UUFDckMsZ0JBQVcsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUU1RCxZQUFPLEdBQXFCLFNBQVMsQ0FBQztRQUN0QyxZQUFPLEdBQXFCLFNBQVMsQ0FBQztRQUN4QyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0YsYUFBUSxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU5RixVQUFLLEdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDbkIsU0FBSSxHQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLGtCQUFhLEdBQVUsRUFBRSxDQUFDO1FBQzFCLGtCQUFhLEdBQVUsRUFBRSxDQUFDO1FBQzFCLHNCQUFpQixHQUFVLEVBQUUsQ0FBQztRQUM5QixjQUFTLEdBQVUsRUFBRSxDQUFDO1FBQ3RCLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUNwQixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUVsQixjQUFTLEdBQW9CLFNBQVMsQ0FBQztRQUN2QyxlQUFVLEdBQW9CLFNBQVMsQ0FBQztJQWlCUSxDQUFDO0lBRXpELFVBQVUsQ0FBQyxHQUFRO1FBQ2pCLElBQUksR0FBRyxFQUFFLENBQUM7WUFDUixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFvQjtRQUNuQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQVU7UUFDdEIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BCLENBQUM7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU0sZUFBZSxDQUFDLElBQVM7UUFDOUIsd0JBQXdCO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ25DLElBQUksWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3pFLElBQUksQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDO1lBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0IsQ0FBQztZQUNELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLENBQUM7WUFDRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFTSxlQUFlLENBQUMsSUFBUztRQUM5Qix3QkFBd0I7UUFDeEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUMxRixJQUFJLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2hJLElBQUksQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDO1lBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0IsQ0FBQztZQUNELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLENBQUM7WUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUN6QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztZQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVNLGFBQWE7UUFDbEIsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUNwQyxJQUFJLENBQUMsYUFBYSxFQUNsQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FDcEMsSUFBSSxDQUFDLGFBQWEsRUFDbEIsSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZO1lBQ3BFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDekIsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZLENBQUMsS0FBOEIsRUFBRSxHQUE4QixFQUFFLElBQStCO1FBQ2xILElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMvRSxPQUFPLEtBQUssQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUFBLENBQUM7SUFFTSxRQUFRO1FBQ2QsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNyRSwyQ0FBMkM7UUFDM0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUMzQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDcEMsNkJBQTZCO1lBQzdCLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNELGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDekIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3RDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNs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ZEgsc3dKQTRITTs7MkZENUdPLG1CQUFtQjtrQkFYL0IsU0FBUzsrQkFDRSxpQkFBaUIsYUFFaEI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUM7NEJBQ2xELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzswQkE2Q1ksTUFBTTsyQkFBQyxTQUFTO3lDQTFDcEIsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDbUIsYUFBYTtzQkFBckMsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBQ2QsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNiLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMb2NhbGVNb250aE5hbWVzLCBGb3JtU3R5bGUsIFRyYW5zbGF0aW9uV2lkdGgsIGdldExvY2FsZURheU5hbWVzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEluamVjdCwgSW5wdXQsIExPQ0FMRV9JRCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vLyBmcmVha3NseSBzaW1wbGUgZGF0ZSBwaWNrZXIgOiBodHRwczovL3RhaWx3aW5kLWVsZW1lbnRzLmNvbS9kb2NzL3N0YW5kYXJkL2Zvcm1zL2RhdGVwaWNrZXIvXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWRhdGUtcGlja2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZXBpY2tlckNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZXBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBpbmxpbmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoJ2Rpc3BsYXktZm9ybWF0JykgZGlzcGxheUZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkID0gJ2RkL01NL3l5eXknO1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcclxuICBASW5wdXQoKSB2YWx1ZTogRGF0ZSB8IHVuZGVmaW5lZCB8IG51bGwgPSBudWxsO1xyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xyXG4gIEBWaWV3Q2hpbGQoJ2RhdGVJbnB1dCcpIGRhdGVJbnB1dDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBtaW5EYXRlOiBEYXRlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIG1heERhdGU6IERhdGUgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgcHVibGljIHNob3dDYWxlbmRhciA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93WWVhcnMgPSBmYWxzZTtcclxuICBwdWJsaWMgbW9udGhOYW1lcyA9IGdldExvY2FsZU1vbnRoTmFtZXModGhpcy5sb2NhbGUsIEZvcm1TdHlsZS5TdGFuZGFsb25lLCBUcmFuc2xhdGlvbldpZHRoLldpZGUpO1xyXG4gIHB1YmxpYyBkYXlOYW1lcyA9IGdldExvY2FsZURheU5hbWVzKHRoaXMubG9jYWxlLCBGb3JtU3R5bGUuU3RhbmRhbG9uZSwgVHJhbnNsYXRpb25XaWR0aC5BYmJyZXZpYXRlZCk7XHJcblxyXG4gIHB1YmxpYyBtb250aDogbnVtYmVyID0gLTE7XHJcbiAgcHVibGljIHllYXI6IG51bWJlciA9IC0xO1xyXG4gIHB1YmxpYyBjYWxlbmRhckRhdGVzOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBjYWxlbmRhclllYXJzOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBzaG93Q2FsZW5kYXJZZWFyczogYW55W10gPSBbXTtcclxuICBwdWJsaWMgYmxhbmtEYXlzOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBjYWxlbmRhclllYXJQYWdlID0gMTtcclxuICBwcml2YXRlIHllYXJzUGVyUGFnZSA9IDMwO1xyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlJDogYW55IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgb25Ub3VjaGVkJDogYW55IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGxldCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICB0aGlzLm1vbnRoID0gdG9kYXkuZ2V0TW9udGgoKTtcclxuICAgIHRoaXMueWVhciA9IHRvZGF5LmdldEZ1bGxZZWFyKCk7XHJcbiAgICB0aGlzLmNhbGVuZGFyRGF0ZXMgPSBbeyBkYXk6IHRoaXMudmFsdWUsIHRvZGF5OiB0aGlzLnZhbHVlLCBzZWxlY3RlZDogdGhpcy52YWx1ZSB9XTtcclxuICAgIHRoaXMuY2FsZW5kYXJZZWFycyA9IFt7IHllYXI6IHRoaXMudmFsdWU/LmdldEZ1bGxZZWFyKCksIHRvZGF5OiB0aGlzLnZhbHVlLCBzZWxlY3RlZDogdGhpcy52YWx1ZSB9XTtcclxuICAgIGNvbnN0IHllYXJzQXJyYXkgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAxOTUwOyBpIDw9IHRvZGF5LmdldEZ1bGxZZWFyKCkgKyAyOyBpKyspIHtcclxuICAgICAgeWVhcnNBcnJheS5wdXNoKHsgeWVhcjogaSwgdG9kYXk6IHRoaXMuY29tcGFyZURhdGVzKHRvZGF5LCBudWxsLCBpKSwgc2VsZWN0ZWQ6IGkgPT0gdGhpcy52YWx1ZT8uZ2V0RnVsbFllYXIoKSB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuY2FsZW5kYXJZZWFycyA9IHllYXJzQXJyYXk7XHJcbiAgICB0aGlzLnNob3dDYWxlbmRhclllYXJzID0gdGhpcy5wYWdpbmF0ZSh0aGlzLmNhbGVuZGFyWWVhcnMsIDEpO1xyXG4gICAgdGhpcy5jYWxjRGF5cygpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoQEluamVjdChMT0NBTEVfSUQpIHB1YmxpYyBsb2NhbGU6IHN0cmluZykgeyB9XHJcblxyXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChvYmopIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IG5ldyBEYXRlKG9iaik7XHJcbiAgICAgIHRoaXMubW9udGggPSB0aGlzLnZhbHVlLmdldE1vbnRoKCk7XHJcbiAgICAgIHRoaXMueWVhciA9IHRoaXMudmFsdWUuZ2V0RnVsbFllYXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UkID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCQgPSBmbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkJsdXIoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub25Ub3VjaGVkJCkge1xyXG4gICAgICB0aGlzLm9uVG91Y2hlZCQoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0RGF0ZUZyb21JbnB1dCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdERhdGVWYWx1ZShkYXRlOiBhbnkpOiB2b2lkIHtcclxuICAgIC8vIFRoaXMgc2hvdWxkIGJlIGluIFVUQ1xyXG4gICAgaWYgKCF0aGlzLm91dE9mUmFuZ2VEYXRlKGRhdGUuZGF5KSkge1xyXG4gICAgICBsZXQgc2VsZWN0ZWREYXRlID0gbmV3IERhdGUodGhpcy55ZWFyLCB0aGlzLm1vbnRoLCBkYXRlLmRheSwgMywgMCwgMCwgMCk7XHJcbiAgICAgIHRoaXMudmFsdWUgPSBzZWxlY3RlZERhdGU7XHJcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcclxuICAgICAgaWYgKHRoaXMub25DaGFuZ2UkKSB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSQodGhpcy52YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy51cGRhdGVEYXlzKCk7XHJcbiAgICAgIGlmICh0aGlzLm9uVG91Y2hlZCQpIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCQoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNhbGNEYXlzKCk7XHJcbiAgICAgIHRoaXMuc2hvd0NhbGVuZGFyID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0WWVhclZhbHVlKHllYXI6IGFueSk6IHZvaWQge1xyXG4gICAgLy8gVGhpcyBzaG91bGQgYmUgaW4gVVRDXHJcbiAgICBjb25zdCB0ZW1wWWVhciA9IHRoaXMueWVhcjtcclxuICAgIHRoaXMueWVhciA9IHllYXIueWVhcjtcclxuICAgIGlmICghdGhpcy5vdXRPZlJhbmdlRGF0ZSh0aGlzLmNhbGVuZGFyRGF0ZXM/LmZpbmQoeCA9PiB4LnNlbGVjdGVkID09IHRydWUpID8/IHsgZGF5OiAxIH0pKSB7XHJcbiAgICAgIGxldCBzZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh5ZWFyLnllYXIsIHRoaXMubW9udGggPz8gMSwgdGhpcy5jYWxlbmRhckRhdGVzPy5maW5kKHggPT4geC5zZWxlY3RlZCA9PSB0cnVlKS5kYXkgPz8gMSwgMywgMCwgMCwgMCk7XHJcbiAgICAgIHRoaXMudmFsdWUgPSBzZWxlY3RlZERhdGU7XHJcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcclxuICAgICAgaWYgKHRoaXMub25DaGFuZ2UkKSB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSQodGhpcy52YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy51cGRhdGVEYXlzKCk7XHJcbiAgICAgIGlmICh0aGlzLm9uVG91Y2hlZCQpIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCQoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNob3dZZWFycyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNob3dDYWxlbmRhciA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2FsY0RheXMoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMueWVhciA9IHRlbXBZZWFyO1xyXG4gICAgICB0aGlzLnNob3dZZWFycyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNob3dDYWxlbmRhciA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcHJldmlvdXNNb250aCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm1vbnRoICE9PSAwKSB7XHJcbiAgICAgIHRoaXMubW9udGggPSB0aGlzLm1vbnRoIC0gMTtcclxuICAgICAgdGhpcy5jYWxjRGF5cygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tb250aCA9IDExO1xyXG4gICAgICB0aGlzLnllYXIgPSB0aGlzLnllYXIgLSAxO1xyXG4gICAgICB0aGlzLmNhbGNEYXlzKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vblRvdWNoZWQkKSB7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkJCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5leHRNb250aCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm1vbnRoICE9PSAxMSkge1xyXG4gICAgICB0aGlzLm1vbnRoID0gdGhpcy5tb250aCArIDE7XHJcbiAgICAgIHRoaXMuY2FsY0RheXMoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubW9udGggPSAwO1xyXG4gICAgICB0aGlzLnllYXIgPSB0aGlzLnllYXIgKyAxO1xyXG4gICAgICB0aGlzLmNhbGNEYXlzKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vblRvdWNoZWQkKSB7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkJCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHByZXZpb3VzWWVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd0NhbGVuZGFyWWVhcnMgPSB0aGlzLnBhZ2luYXRlKFxyXG4gICAgICB0aGlzLmNhbGVuZGFyWWVhcnMsXHJcbiAgICAgIHRoaXMuY2FsZW5kYXJZZWFyUGFnZSA+IDEgPyAtLXRoaXMuY2FsZW5kYXJZZWFyUGFnZSA6IDEpO1xyXG4gICAgdGhpcy5jYWxjRGF5cygpO1xyXG4gICAgaWYgKHRoaXMub25Ub3VjaGVkJCkge1xyXG4gICAgICB0aGlzLm9uVG91Y2hlZCQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZXh0WWVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd0NhbGVuZGFyWWVhcnMgPSB0aGlzLnBhZ2luYXRlKFxyXG4gICAgICB0aGlzLmNhbGVuZGFyWWVhcnMsXHJcbiAgICAgIHRoaXMuY2FsZW5kYXJZZWFyUGFnZSA8PSB0aGlzLmNhbGVuZGFyWWVhcnMubGVuZ3RoIC8gdGhpcy55ZWFyc1BlclBhZ2VcclxuICAgICAgICA/ICsrdGhpcy5jYWxlbmRhclllYXJQYWdlXHJcbiAgICAgICAgOiB0aGlzLmNhbGVuZGFyWWVhclBhZ2UpO1xyXG4gICAgdGhpcy5jYWxjRGF5cygpO1xyXG4gICAgaWYgKHRoaXMub25Ub3VjaGVkJCkge1xyXG4gICAgICB0aGlzLm9uVG91Y2hlZCQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29tcGFyZURhdGVzKGRhdGUxOiBEYXRlIHwgdW5kZWZpbmVkIHwgbnVsbCwgZGF5OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLCB5ZWFyOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWRhdGUxKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSh5ZWFyID8/IHRoaXMueWVhciwgdGhpcy5tb250aCwgZGF5ID8/IHRoaXMudmFsdWU/LmdldERheSgpKTtcclxuICAgIHJldHVybiBkYXRlMS50b0RhdGVTdHJpbmcoKSA9PT0gZC50b0RhdGVTdHJpbmcoKTtcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGNhbGNEYXlzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZGF5c0luTW9udGggPSBuZXcgRGF0ZSh0aGlzLnllYXIsIHRoaXMubW9udGggKyAxLCAwKS5nZXREYXRlKCk7XHJcbiAgICAvLyBmaW5kIHdoZXJlIHRvIHN0YXJ0IGNhbGVuZGFyIGRheSBvZiB3ZWVrXHJcbiAgICBjb25zdCBkYXlPZldlZWsgPSBuZXcgRGF0ZSh0aGlzLnllYXIsIHRoaXMubW9udGgpLmdldERheSgpO1xyXG4gICAgY29uc3QgYmxhbmtkYXlzQXJyYXkgPSBuZXcgQXJyYXk8bnVtYmVyPigpO1xyXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gZGF5T2ZXZWVrOyBpKyspIHtcclxuICAgICAgLy8gY2hlY2sgaWYgbW9udGggaXMgRmVicnVhcnlcclxuICAgICAgYmxhbmtkYXlzQXJyYXkucHVzaCh0aGlzLm1vbnRoICE9IDIgPyAoMzIgLSBpKSA6ICgyOSAtIGkpKTtcclxuICAgICAgYmxhbmtkYXlzQXJyYXkucmV2ZXJzZSgpLnNvcnQoKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGRheXNBcnJheSA9IFtdO1xyXG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gZGF5c0luTW9udGg7IGkrKykge1xyXG4gICAgICBkYXlzQXJyYXkucHVzaCh7IGRheTogaSwgdG9kYXk6IHRoaXMuY29tcGFyZURhdGVzKHRvZGF5LCBpLCBudWxsKSwgc2VsZWN0ZWQ6IHRoaXMuY29tcGFyZURhdGVzKHRoaXMudmFsdWUgPz8gdG9kYXksIGksIG51bGwpIH0pO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeWVhcnNBcnJheSA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDE5NTA7IGkgPD0gdG9kYXkuZ2V0RnVsbFllYXIoKSArIDI7IGkrKykge1xyXG4gICAgICB5ZWFyc0FycmF5LnB1c2goeyB5ZWFyOiBpLCB0b2RheTogdGhpcy5jb21wYXJlRGF0ZXModG9kYXksIG51bGwsIGkpLCBzZWxlY3RlZDogaSA9PSB0aGlzLnllYXIgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNhbGVuZGFyWWVhcnMgPSB5ZWFyc0FycmF5O1xyXG4gICAgdGhpcy5ibGFua0RheXMgPSBibGFua2RheXNBcnJheTtcclxuICAgIHRoaXMuY2FsZW5kYXJEYXRlcyA9IGRheXNBcnJheTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRGF5cygpOiB2b2lkIHtcclxuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcclxuICAgIHRoaXMuY2FsZW5kYXJEYXRlcy5mb3JFYWNoKGQgPT4ge1xyXG4gICAgICBkLnRvZGF5ID0gdGhpcy5jb21wYXJlRGF0ZXModG9kYXksIGQsIHRoaXMueWVhcik7XHJcbiAgICAgIGQuc2VsZWN0ZWQgPSB0aGlzLmNvbXBhcmVEYXRlcyh0aGlzLnZhbHVlLCBkLCB0aGlzLnllYXIpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhZ2luYXRlKGFycmF5OiBhbnlbXSwgcGFnZV9udW1iZXI6IG51bWJlcik6IGFueVtdIHtcclxuICAgIHJldHVybiBhcnJheS5zbGljZSgocGFnZV9udW1iZXIgLSAxKSAqIHRoaXMueWVhcnNQZXJQYWdlLCBwYWdlX251bWJlciAqIHRoaXMueWVhcnNQZXJQYWdlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGF0ZUZyb21JbnB1dCgpIHtcclxuICAgIGlmKCF0aGlzLmRhdGVJbnB1dD8ubmF0aXZlRWxlbWVudC52YWx1ZSB8fCB0aGlzLmRhdGVJbnB1dD8ubmF0aXZlRWxlbWVudC52YWx1ZSA9PT0gJycpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xyXG4gICAgICBpZiAodGhpcy5vbkNoYW5nZSQpIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlJCh0aGlzLnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0ZUlucHV0Py5uYXRpdmVFbGVtZW50LnZhbHVlICE9PSAnJyAmJiAhdGhpcy5pbmxpbmUpIHsgICAgXHJcbiAgICAgIHZhciBkYXRlUGFydHMgPSB0aGlzLmRhdGVJbnB1dD8ubmF0aXZlRWxlbWVudC52YWx1ZS5zcGxpdChcIi9cIik7XHJcbiAgICAgIGxldCBkYXRlSW5HckZvcm1hdCA9IG5ldyBEYXRlKCtkYXRlUGFydHNbMl0sIGRhdGVQYXJ0c1sxXSAtIDEsICtkYXRlUGFydHNbMF0sIDMsIDAsIDApO1xyXG4gICAgICBpZiAoZGF0ZUluR3JGb3JtYXQudG9TdHJpbmcoKSAhPT0gJ0ludmFsaWQgRGF0ZScpIHtcclxuICAgICAgICB0aGlzLndyaXRlVmFsdWUoZGF0ZUluR3JGb3JtYXQpXHJcbiAgICAgICAgdGhpcy5jYWxjRGF5cygpO1xyXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChkYXRlSW5HckZvcm1hdCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMub25DaGFuZ2UkKSB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSQodGhpcy52YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy51cGRhdGVEYXlzKCk7XHJcbiAgICAgIGlmICh0aGlzLm9uVG91Y2hlZCQpIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5zaG93Q2FsZW5kYXIgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuWWVhcnMoKSB7XHJcbiAgICB0aGlzLnNob3dZZWFycyA9ICF0aGlzLnNob3dZZWFycztcclxuICAgIHRoaXMuY2FsZW5kYXJZZWFyUGFnZSA9IE1hdGguY2VpbCh0aGlzLmNhbGVuZGFyWWVhcnMubWFwKHggPT4geC55ZWFyKS5pbmRleE9mKHRoaXMueWVhcikgLyB0aGlzLnllYXJzUGVyUGFnZSk7XHJcbiAgICB0aGlzLnNob3dDYWxlbmRhclllYXJzID0gdGhpcy5wYWdpbmF0ZSh0aGlzLmNhbGVuZGFyWWVhcnMsIHRoaXMuY2FsZW5kYXJZZWFyUGFnZSAhPT0gMCA/IHRoaXMuY2FsZW5kYXJZZWFyUGFnZSA6IDEpO1xyXG4gICAgdGhpcy5jYWxjRGF5cygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW5DYWxlbmRhcigpIHtcclxuICAgIHRoaXMuc2hvd0NhbGVuZGFyID0gIXRoaXMuc2hvd0NhbGVuZGFyO1xyXG4gICAgdGhpcy5jYWxjRGF5cygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlQ2FsZW5kYXIoKSB7XHJcbiAgICB0aGlzLnNob3dDYWxlbmRhciA9IGZhbHNlO1xyXG4gICAgLy8gdGhpcy5nZXREYXRlRnJvbUlucHV0KCk7XHJcbiAgfVxyXG5cclxuICBvdXRPZlJhbmdlRGF0ZShkYXRlOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGxldCBvdXRPZlJhbmdlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5taW5EYXRlIHx8IHRoaXMubWF4RGF0ZSkge1xyXG4gICAgICBjb25zdCBkID0gbmV3IERhdGUodGhpcy55ZWFyLCB0aGlzLm1vbnRoLCBkYXRlLmRheSk7XHJcbiAgICAgIGNvbnN0IGRhdGVJbk1pbGxpcyA9IGQuZ2V0VGltZSgpO1xyXG4gICAgICBpZiAodGhpcy5taW5EYXRlKSB7XHJcbiAgICAgICAgbGV0IG1pbkRhdGU6IG51bWJlciA9IHRoaXMubWluRGF0ZS5nZXRUaW1lKCk7XHJcbiAgICAgICAgaWYgKGRhdGVJbk1pbGxpcyA8IG1pbkRhdGUgJiYgdGhpcy5taW5EYXRlLnRvRGF0ZVN0cmluZygpICE9PSBkLnRvRGF0ZVN0cmluZygpKSB7XHJcbiAgICAgICAgICBvdXRPZlJhbmdlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMubWF4RGF0ZSkge1xyXG4gICAgICAgIGxldCBtYXhEYXRlOiBudW1iZXIgPSB0aGlzLm1heERhdGUuZ2V0VGltZSgpO1xyXG4gICAgICAgIGlmIChkYXRlSW5NaWxsaXMgPiBtYXhEYXRlICYmIHRoaXMubWF4RGF0ZS50b0RhdGVTdHJpbmcoKSAhPT0gZC50b0RhdGVTdHJpbmcoKSkge1xyXG4gICAgICAgICAgb3V0T2ZSYW5nZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb3V0T2ZSYW5nZTtcclxuICB9XHJcbn0iLCI8ZGl2IFtjbGFzcy5yZWxhdGl2ZV09XCIhaW5saW5lXCI+XHJcbjxkaXYgY2xhc3M9XCJkYXRlcGlja2VyLWNvbnRhaW5lclwiIChjbGlja091dHNpZGUpPVwiY2xvc2VDYWxlbmRhcigpXCI+XHJcbiAgPGlucHV0ICpuZ0lmPVwiIWlubGluZVwiXHJcbiAgICAgICAgICNkYXRlSW5wdXRcclxuICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgbmFtZT1cImRhdGVJbnB1dFwiXHJcbiAgICAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcclxuICAgICAgICAgaWQ9XCJkYXRlSW5wdXRcIlxyXG4gICAgICAgICB0aXRsZT1cImRhdGVJbnB1dFwiXHJcbiAgICAgICAgIChmb2N1cyk9XCJzaG93Q2FsZW5kYXIgPSBmYWxzZVwiXHJcbiAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZSB8IGRhdGU6IGRpc3BsYXlGb3JtYXRcIlxyXG4gICAgICAgICBjbGFzcz1cImRhdGVwaWNrZXItaW5wdXRcIlxyXG4gICAgICAgICBbbmdDbGFzc109XCJ7J2N1cnNvci1ub3QtYWxsb3dlZCc6IGRpc2FibGVkfVwiXHJcbiAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiPlxyXG5cclxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgKm5nSWY9XCIhaW5saW5lXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0ZXBpY2tlci1idXR0b25cIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgIChjbGljayk9XCJvcGVuQ2FsZW5kYXIoKVwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J2N1cnNvci1ub3QtYWxsb3dlZCc6IGRpc2FibGVkfVwiPlxyXG4gICAgPGkgY2xhc3M9XCJtcy1JY29uIG1zLUljb24tLURhdGVUaW1lMlwiPjwvaT5cclxuICA8L2J1dHRvbj5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJzaG93Q2FsZW5kYXIgfHwgaW5saW5lXCJcclxuICAgICAgIFtjbGFzcy5hYnNvbHV0ZV09XCIhaW5saW5lXCJcclxuICAgICAgIGNsYXNzPVwiZGF0ZXBpY2tlci1iYWNrZ3JvdW5kXCJcclxuICAgICAgIHN0eWxlPVwiaGVpZ2h0OjE4cmVtO21pbi13aWR0aDoxNnJlbTtcIlxyXG4gICAgICAgbmFtZT1cImNhbGVuZGFyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1idG4td3JhcHBlclwiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiKGNsaWNrKT1cIm9wZW5ZZWFycygpXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGVwaWNrZXItc2VsZWN0ZWQtbW9udGhcIj5cclxuICAgICAgICAgICAge3ttb250aE5hbWVzW21vbnRoXX19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGVwaWNrZXItc2VsZWN0ZWQteWVhclwiPlxyXG4gICAgICAgICAgICB7e3llYXJ9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCIhc2hvd1llYXJzOyBlbHNlIHNob3dZZWFyc1BpY2tlclRtcGxcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRlcGlja2VyLW5hdi1idG5cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInByZXZpb3VzTW9udGgoKTtcIj5cclxuICAgICAgICAgIDxzdmcgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCI+XHJcbiAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICBkPVwiTTE1IDE5bC03LTcgNy03XCIgLz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGVwaWNrZXItbmF2LWJ0blwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibmV4dE1vbnRoKClcIj5cclxuICAgICAgICAgIDxzdmcgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCI+XHJcbiAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICBkPVwiTTkgNWw3IDctNyA3XCIgLz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNzaG93WWVhcnNQaWNrZXJUbXBsPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGVwaWNrZXItbmF2LWJ0blwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmV2aW91c1llYXIoKTtcIj5cclxuICAgICAgICAgICAgPHN2ZyBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCI+XHJcbiAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNMTUgMTlsLTctNyA3LTdcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRlcGlja2VyLW5hdi1idG5cIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwibmV4dFllYXIoKVwiPlxyXG4gICAgICAgICAgICA8c3ZnIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIj5cclxuICAgICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgZD1cIk05IDVsNyA3LTcgN1wiIC8+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci13cmFwcGVyXCJcclxuICAgICAgICAgKm5nSWY9XCIhc2hvd1llYXJzOyBlbHNlIHNob3dDYWxZZWFyc1RtcGxcIj5cclxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheU5hbWVzXCJcclxuICAgICAgICAgICBjbGFzcz1cImRhdGVwaWNrZXItZGF5LW5hbWVcIlxyXG4gICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDE0LjI4JVwiPnt7ZGF5fX08L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0NhbFllYXJzVG1wbD5cclxuICAgICAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXItY29udGVudC13cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgeWVhciBvZiBzaG93Q2FsZW5kYXJZZWFyc1wiXHJcbiAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxOC4yOCVcIlxyXG4gICAgICAgICAgICAgY2xhc3M9XCJweC0xIG1iLTFcIj5cclxuICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInNlbGVjdFllYXJWYWx1ZSh5ZWFyKVwiXHJcbiAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0ZXBpY2tlci15ZWFyXCJcclxuICAgICAgICAgICAgICAgW2NsYXNzXT1cInllYXIuc2VsZWN0ZWQgID8gJ3NlbGVjdGVkJyA6ICdub3Qtc2VsZWN0ZWQnXCI+XHJcbiAgICAgICAgICAgIHt7eWVhci55ZWFyfX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyLWNvbnRlbnQtd3JhcHBlclwiICpuZ0lmPVwiIXNob3dZZWFyc1wiPlxyXG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBibGFua2RheSBvZiBibGFua0RheXNcIiBzdHlsZT1cIndpZHRoOiAxNC4yOCVcIiBjbGFzcz1cImRhdGVwaWNrZXItYmxhbmstZGF5c1wiPnt7YmxhbmtkYXl9fTwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkYXRlIG9mIGNhbGVuZGFyRGF0ZXM7XCIgc3R5bGU9XCJ3aWR0aDogMTQuMjglXCIgY2xhc3M9XCJweC0xIG1iLTFcIj5cclxuICAgICAgICA8ZGl2IChjbGljayk9XCJzZWxlY3REYXRlVmFsdWUoZGF0ZSlcIiBjbGFzcz1cImRhdGVwaWNrZXItZGF5c1wiIFtuZ0NsYXNzXT1cInsnb3V0LW9mLXJhbmdlJzogb3V0T2ZSYW5nZURhdGUoZGF0ZSksJ3NlbGVjdGVkJzogZGF0ZS5zZWxlY3RlZCwgJ25vdC1zZWxlY3RlZCc6IWRhdGUuc2VsZWN0ZWQgfVwiPlxyXG4gICAgICAgICAge3tkYXRlLmRheX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -47,11 +47,11 @@ export class DropDownMenuComponent {
|
|
|
47
47
|
this.selectedChanged.emit(option.value);
|
|
48
48
|
}
|
|
49
49
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DropDownMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
50
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.6", type: DropDownMenuComponent, selector: "lib-drop-down-menu", inputs: { options: "options", selectedValue: ["selected", "selectedValue"], multiple: "multiple", placeholder: "placeholder", showIcons: ["show-icons", "showIcons"] }, outputs: { selectedChange: "selectedChange", selectedChanged: "selectedChanged" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"dropdown-container\" (clickOutside)=\"onClickOutside($event)\">\r\n <button
|
|
50
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.6", type: DropDownMenuComponent, selector: "lib-drop-down-menu", inputs: { options: "options", selectedValue: ["selected", "selectedValue"], multiple: "multiple", placeholder: "placeholder", showIcons: ["show-icons", "showIcons"] }, outputs: { selectedChange: "selectedChange", selectedChanged: "selectedChanged" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"dropdown-container\" (clickOutside)=\"onClickOutside($event)\">\r\n <button type=\"button\" (click)=\"expanded = !expanded\" class=\"dropdown-button\" aria-haspopup=\"listbox\" aria-expanded=\"true\" aria-labelledby=\"listbox-label\">\r\n <span class=\"dropdown-selected-text\">\r\n <i *ngIf=\"selectedOption?.icon && showIcons\" [class]=\"selectedOption?.icon\" \r\n [class.mr-2]=\"selectedOption?.icon\"></i>{{ selectedOption?.text || placeholder }}\r\n </span>\r\n <span class=\"dropdown-button-icon\">\r\n <!-- Heroicon name: solid/selector -->\r\n <svg class=\"dropdown-arrow\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M10 3a1 1 0 01.707.293l3 3a1 1 0 01-1.414 1.414L10 5.414 7.707 7.707a1 1 0 01-1.414-1.414l3-3A1 1 0 0110 3zm-3.707 9.293a1 1 0 011.414 0L10 14.586l2.293-2.293a1 1 0 011.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z\"\r\n clip-rule=\"evenodd\"/>\r\n </svg>\r\n </span>\r\n </button>\r\n <ul title=\"menu\" *ngIf=\"expanded && options && options.length > 0\" class=\"dropdown-ul\" tabindex=\"-1\" role=\"listbox\" aria-labelledby=\"listbox-label\">\r\n <ng-container *ngFor=\"let option of options\">\r\n <li [class]=\"isSelected(option) ? 'dropdown-li-selected' : 'dropdown-li'\" (click)=\"selectOption(option)\" id=\"listbox-option-0\" role=\"option\">\r\n <span [class]=\"isSelected(option) ? 'dropdown-li-selected-text' : 'dropdown-li-text'\">\r\n <i *ngIf=\"option.icon && showIcons\" [class]=\"option.icon\" [class.mr-2]=\"option.icon\"></i>{{ option.text }}\r\n </span>\r\n <span *ngIf=\"isSelected(option)\" class=\"dropdown-li-selected-indicator-container\">\r\n <!-- Heroicon name: solid/check -->\r\n <svg class=\"dropdown-li-selected-indicator\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\" clip-rule=\"evenodd\"/>\r\n </svg>\r\n </span>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }] }); }
|
|
51
51
|
}
|
|
52
52
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DropDownMenuComponent, decorators: [{
|
|
53
53
|
type: Component,
|
|
54
|
-
args: [{ selector: 'lib-drop-down-menu', template: "<div class=\"dropdown-container\" (clickOutside)=\"onClickOutside($event)\">\r\n <button
|
|
54
|
+
args: [{ selector: 'lib-drop-down-menu', template: "<div class=\"dropdown-container\" (clickOutside)=\"onClickOutside($event)\">\r\n <button type=\"button\" (click)=\"expanded = !expanded\" class=\"dropdown-button\" aria-haspopup=\"listbox\" aria-expanded=\"true\" aria-labelledby=\"listbox-label\">\r\n <span class=\"dropdown-selected-text\">\r\n <i *ngIf=\"selectedOption?.icon && showIcons\" [class]=\"selectedOption?.icon\" \r\n [class.mr-2]=\"selectedOption?.icon\"></i>{{ selectedOption?.text || placeholder }}\r\n </span>\r\n <span class=\"dropdown-button-icon\">\r\n <!-- Heroicon name: solid/selector -->\r\n <svg class=\"dropdown-arrow\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M10 3a1 1 0 01.707.293l3 3a1 1 0 01-1.414 1.414L10 5.414 7.707 7.707a1 1 0 01-1.414-1.414l3-3A1 1 0 0110 3zm-3.707 9.293a1 1 0 011.414 0L10 14.586l2.293-2.293a1 1 0 011.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z\"\r\n clip-rule=\"evenodd\"/>\r\n </svg>\r\n </span>\r\n </button>\r\n <ul title=\"menu\" *ngIf=\"expanded && options && options.length > 0\" class=\"dropdown-ul\" tabindex=\"-1\" role=\"listbox\" aria-labelledby=\"listbox-label\">\r\n <ng-container *ngFor=\"let option of options\">\r\n <li [class]=\"isSelected(option) ? 'dropdown-li-selected' : 'dropdown-li'\" (click)=\"selectOption(option)\" id=\"listbox-option-0\" role=\"option\">\r\n <span [class]=\"isSelected(option) ? 'dropdown-li-selected-text' : 'dropdown-li-text'\">\r\n <i *ngIf=\"option.icon && showIcons\" [class]=\"option.icon\" [class.mr-2]=\"option.icon\"></i>{{ option.text }}\r\n </span>\r\n <span *ngIf=\"isSelected(option)\" class=\"dropdown-li-selected-indicator-container\">\r\n <!-- Heroicon name: solid/check -->\r\n <svg class=\"dropdown-li-selected-indicator\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\" clip-rule=\"evenodd\"/>\r\n </svg>\r\n </span>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</div>\r\n" }]
|
|
55
55
|
}], ctorParameters: () => [], propDecorators: { options: [{
|
|
56
56
|
type: Input
|
|
57
57
|
}], selectedValue: [{
|
|
@@ -69,4 +69,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
|
|
|
69
69
|
}], selectedChanged: [{
|
|
70
70
|
type: Output
|
|
71
71
|
}] } });
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2Ryb3AtZG93bi1tZW51L2Ryb3AtZG93bi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9kcm9wLWRvd24tbWVudS9kcm9wLWRvd24tbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7Ozs7QUFRekcsTUFBTSxPQUFPLHFCQUFxQjtJQVNoQyxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFDRCxJQUFXLGNBQWMsQ0FBQyxNQUF5QjtRQUNqRCxJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2xELElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFNRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFXLFFBQVEsQ0FBQyxLQUFjO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFDRDtRQTNCUyxZQUFPLEdBQTZCLEVBQUUsQ0FBQztRQUNoRCwyQ0FBMkM7UUFDeEIsa0JBQWEsR0FBMkIsU0FBUyxDQUFDO1FBQzVELGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsZ0JBQVcsR0FBVyxzQkFBc0IsQ0FBQztRQUNqQyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRTlCLG9CQUFlLEdBQXNCLElBQUksQ0FBQztRQVV4QyxtQkFBYyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzVELG9CQUFlLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFFL0QsY0FBUyxHQUFHLEtBQUssQ0FBQztJQU9YLENBQUM7SUFFaEIsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMvRyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RixDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVEsS0FBVSxDQUFDO0lBRVosVUFBVSxDQUFDLE1BQWtCO1FBQ2xDLE9BQU8sTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDN0YsQ0FBQztJQUVNLGNBQWMsQ0FBQyxNQUFXO1FBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxZQUFZLENBQUMsTUFBa0I7UUFDcEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDOzhHQWxEVSxxQkFBcUI7a0dBQXJCLHFCQUFxQiwwVUNSbEMsa3hFQStCQTs7MkZEdkJhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFFRSxvQkFBb0I7d0RBSXJCLE9BQU87c0JBQWYsS0FBSztnQkFFYSxhQUFhO3NCQUEvQixLQUFLO3VCQUFDLFVBQVU7Z0JBQ1IsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNlLFNBQVM7c0JBQTdCLEtBQUs7dUJBQUMsWUFBWTtnQkFZVCxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWVudU9wdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ2xpYi1kcm9wLWRvd24tbWVudScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3AtZG93bi1tZW51LmNvbXBvbmVudC5odG1sJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIERyb3BEb3duTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBvcHRpb25zOiBNZW51T3B0aW9uW10gfCB1bmRlZmluZWQgPSBbXTtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCdzZWxlY3RlZCcpIHNlbGVjdGVkVmFsdWU6IGFueSB8IG51bGwgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgbXVsdGlwbGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ86gzrHPgc6xzrrOsc67z44gzrXPgM65zrvOrc6+z4TOtS4uLic7XHJcbiAgQElucHV0KCdzaG93LWljb25zJykgc2hvd0ljb25zID0gdHJ1ZTtcclxuXHJcbiAgcHJpdmF0ZSBzZWxlY3RlZE9wdGlvbiQ6IE1lbnVPcHRpb24gfCBudWxsID0gbnVsbDtcclxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkT3B0aW9uKCk6IE1lbnVPcHRpb24gfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkT3B0aW9uJDtcclxuICB9XHJcbiAgcHVibGljIHNldCBzZWxlY3RlZE9wdGlvbihvcHRpb246IE1lbnVPcHRpb24gfCBudWxsKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uJCA9IG9wdGlvbjtcclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IG9wdGlvbiA/IG9wdGlvbi52YWx1ZSA6IG51bGw7XHJcbiAgICB0aGlzLmV4cGFuZGVkID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgcHJpdmF0ZSBleHBhbmRlZCQgPSBmYWxzZTtcclxuICBwdWJsaWMgZ2V0IGV4cGFuZGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWQkO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGV4cGFuZGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmV4cGFuZGVkJCA9IHZhbHVlO1xyXG4gIH1cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmxlbmd0aCA+IDAgJiYgdGhpcy5zZWxlY3RlZFZhbHVlICE9PSBudWxsICYmIHRoaXMuc2VsZWN0ZWRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24kID0gdGhpcy5vcHRpb25zLmZpbHRlcigobykgPT4gby52YWx1ZSA9PT0gdGhpcy5zZWxlY3RlZFZhbHVlKVswXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge31cclxuXHJcbiAgcHVibGljIGlzU2VsZWN0ZWQob3B0aW9uOiBNZW51T3B0aW9uKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gb3B0aW9uICE9IG51bGwgJiYgdGhpcy5zZWxlY3RlZFZhbHVlICE9IG51bGwgJiYgb3B0aW9uLnZhbHVlID09PSB0aGlzLnNlbGVjdGVkVmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DbGlja091dHNpZGUoJGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuZXhwYW5kZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RPcHRpb24ob3B0aW9uOiBNZW51T3B0aW9uKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gb3B0aW9uO1xyXG4gICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KG9wdGlvbi52YWx1ZSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlZC5lbWl0KG9wdGlvbi52YWx1ZSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkcm9wZG93bi1jb250YWluZXJcIiAoY2xpY2tPdXRzaWRlKT1cIm9uQ2xpY2tPdXRzaWRlKCRldmVudClcIj5cclxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZXhwYW5kZWQgPSAhZXhwYW5kZWRcIiBjbGFzcz1cImRyb3Bkb3duLWJ1dHRvblwiIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCIgYXJpYS1leHBhbmRlZD1cInRydWVcIiBhcmlhLWxhYmVsbGVkYnk9XCJsaXN0Ym94LWxhYmVsXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duLXNlbGVjdGVkLXRleHRcIj5cclxuICAgICAgPGkgKm5nSWY9XCJzZWxlY3RlZE9wdGlvbj8uaWNvbiAmJiBzaG93SWNvbnNcIiBbY2xhc3NdPVwic2VsZWN0ZWRPcHRpb24/Lmljb25cIiBcclxuICAgICAgICAgIFtjbGFzcy5tci0yXT1cInNlbGVjdGVkT3B0aW9uPy5pY29uXCI+PC9pPnt7IHNlbGVjdGVkT3B0aW9uPy50ZXh0IHx8IHBsYWNlaG9sZGVyIH19XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duLWJ1dHRvbi1pY29uXCI+XHJcbiAgICAgIDwhLS0gSGVyb2ljb24gbmFtZTogc29saWQvc2VsZWN0b3IgLS0+XHJcbiAgICAgIDxzdmcgY2xhc3M9XCJkcm9wZG93bi1hcnJvd1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgZD1cIk0xMCAzYTEgMSAwIDAxLjcwNy4yOTNsMyAzYTEgMSAwIDAxLTEuNDE0IDEuNDE0TDEwIDUuNDE0IDcuNzA3IDcuNzA3YTEgMSAwIDAxLTEuNDE0LTEuNDE0bDMtM0ExIDEgMCAwMTEwIDN6bS0zLjcwNyA5LjI5M2ExIDEgMCAwMTEuNDE0IDBMMTAgMTQuNTg2bDIuMjkzLTIuMjkzYTEgMSAwIDAxMS40MTQgMS40MTRsLTMgM2ExIDEgMCAwMS0xLjQxNCAwbC0zLTNhMSAxIDAgMDEwLTEuNDE0elwiXHJcbiAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCIvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvc3Bhbj5cclxuICA8L2J1dHRvbj5cclxuICA8dWwgdGl0bGU9XCJtZW51XCIgKm5nSWY9XCJleHBhbmRlZCAmJiBvcHRpb25zICYmIG9wdGlvbnMubGVuZ3RoID4gMFwiIGNsYXNzPVwiZHJvcGRvd24tdWxcIiB0YWJpbmRleD1cIi0xXCIgcm9sZT1cImxpc3Rib3hcIiBhcmlhLWxhYmVsbGVkYnk9XCJsaXN0Ym94LWxhYmVsXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiPlxyXG4gICAgICA8bGkgW2NsYXNzXT1cImlzU2VsZWN0ZWQob3B0aW9uKSA/ICdkcm9wZG93bi1saS1zZWxlY3RlZCcgOiAnZHJvcGRvd24tbGknXCIgKGNsaWNrKT1cInNlbGVjdE9wdGlvbihvcHRpb24pXCIgaWQ9XCJsaXN0Ym94LW9wdGlvbi0wXCIgcm9sZT1cIm9wdGlvblwiPlxyXG4gICAgICAgIDxzcGFuIFtjbGFzc109XCJpc1NlbGVjdGVkKG9wdGlvbikgPyAnZHJvcGRvd24tbGktc2VsZWN0ZWQtdGV4dCcgOiAnZHJvcGRvd24tbGktdGV4dCdcIj5cclxuICAgICAgICAgIDxpICpuZ0lmPVwib3B0aW9uLmljb24gJiYgc2hvd0ljb25zXCIgW2NsYXNzXT1cIm9wdGlvbi5pY29uXCIgW2NsYXNzLm1yLTJdPVwib3B0aW9uLmljb25cIj48L2k+e3sgb3B0aW9uLnRleHQgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpc1NlbGVjdGVkKG9wdGlvbilcIiBjbGFzcz1cImRyb3Bkb3duLWxpLXNlbGVjdGVkLWluZGljYXRvci1jb250YWluZXJcIj5cclxuICAgICAgICAgIDwhLS0gSGVyb2ljb24gbmFtZTogc29saWQvY2hlY2sgLS0+XHJcbiAgICAgICAgICA8c3ZnIGNsYXNzPVwiZHJvcGRvd24tbGktc2VsZWN0ZWQtaW5kaWNhdG9yXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTE2LjcwNyA1LjI5M2ExIDEgMCAwMTAgMS40MTRsLTggOGExIDEgMCAwMS0xLjQxNCAwbC00LTRhMSAxIDAgMDExLjQxNC0xLjQxNEw4IDEyLjU4Nmw3LjI5My03LjI5M2ExIDEgMCAwMTEuNDE0IDB6XCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiLz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9saT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvdWw+XHJcbjwvZGl2PlxyXG4iXX0=
|