barsa-tiles 1.0.355 → 1.0.356

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.
@@ -87,10 +87,10 @@ export class NotificationGroupComponent extends BaseComponent {
87
87
  }
88
88
  }
89
89
  NotificationGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NotificationGroupComponent, deps: [{ token: i1.GroupByPipe }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
90
- NotificationGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: NotificationGroupComponent, selector: "bt-notification-group", inputs: { notifications: "notifications", loading: "loading", deviceSize: "deviceSize", notificationCount: "notificationCount" }, outputs: { viewed: "viewed", remove: "remove", actionClick: "actionClick", show: "show", loadMore: "loadMore" }, host: { properties: { "class": "this._deviceSize" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"notifications && notifications.length > 0; else noData\">\n <ng-container>\n <fd-notification-group>\n <fd-tab-list size=\"s\">\n <fd-tab\n [title]=\"tab.title | bbbTranslate\"\n *ngFor=\"let tab of tabList; let index = index; trackBy: _trackByTitle\"\n >\n <fd-notification-group-list\n *ngFor=\"let groupItem of tab.groupByItems; let index = index; trackBy: _trackByKey\"\n >\n <fd-notification-group-header [(expanded)]=\"expanded[groupItem.key]\">\n <fd-notification-header>\n <bt-notification-group-header\n [notifications]=\"groupItem.value\"\n [title]=\"groupItem.key\"\n ></bt-notification-group-header>\n </fd-notification-header>\n <fd-notification-actions>\n <!-- <button fd-button label=\"Accept All\"></button> -->\n <button\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"'DeleteAll' | bbbTranslate\"\n [title]=\"'DeleteAll' | bbbTranslate\"\n glyph=\"decline\"\n (click)=\"remove.emit({ items: groupItem.value, silent: false })\"\n ></button>\n </fd-notification-actions>\n </fd-notification-group-header>\n <ng-container\n *ngTemplateOutlet=\"\n notificationBody;\n context: { $implicit: groupItem.value, expanded: expanded[groupItem.key] }\n \"\n ></ng-container>\n <!-- <fd-notification-limit *ngIf=\"groupItem.value.length - 4 > 0\">\n <h1 fd-notification-limit-title>\n There are {{ groupItem.value.length - 4 }} more notifications\n </h1>\n <p fd-notification-limit-description>\n You need to close or take action on the listed notifications to display more.\n </p>\n </fd-notification-limit> -->\n </fd-notification-group-list>\n </fd-tab>\n </fd-tab-list>\n </fd-notification-group>\n </ng-container>\n</ng-container>\n<ng-template #noData>\n <bsu-no-data *ngIf=\"!loading; else loadingTpl\"></bsu-no-data>\n</ng-template>\n<ng-template #loadingTpl>\n <div style=\"height: 30px; position: relative\">\n <bsu-mask [top]=\"'10px'\"></bsu-mask>\n </div>\n</ng-template>\n<ng-template #notificationItem> </ng-template>\n\n<ng-template #notificationBody let-notifications let-exapanded=\"expanded\">\n <div style=\"max-height: 346px; overflow-y: auto; overflow-x: hidden\">\n <ng-container *ngFor=\"let mo of notifications; trackBy: _trackMoById; let first = first; let last = last\">\n <bsu-notification-item\n [notificationItem]=\"mo\"\n (viewed)=\"viewed.emit($event)\"\n (remove)=\"remove.emit($event)\"\n (show)=\"show.emit($event)\"\n (actionClick)=\"actionClick.emit($event)\"\n intersectionObserver\n [intersectionThreshold]=\"0.5\"\n [deviceSize]=\"deviceSize\"\n (visibilityChange)=\"onVisibilityChange($event, mo, last)\"\n ></bsu-notification-item>\n </ng-container>\n <ng-container *ngIf=\"loading\">\n <ng-container *ngTemplateOutlet=\"loadingTpl\"></ng-container>\n </ng-container>\n </div>\n</ng-template>\n", styles: [":host{display:block;min-width:600px}:host ::ng-deep .fd-tabs__content{overflow:hidden}:host ::ng-deep .fd-notification{padding:0;box-shadow:none}fd-notification{margin:0;padding-left:0rem!important;padding-right:0rem!important}fd-notification-body{position:relative}.noloading{visibility:hidden;height:0;width:0}.loading{visibility:visible;height:100%;width:100%}:host.s{min-width:auto}\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"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4.NotificationHeaderComponent, selector: "fd-notification-header", inputs: ["uniqueId"] }, { kind: "component", type: i4.NotificationActionsComponent, selector: "fd-notification-actions" }, { kind: "component", type: i4.NotificationGroupHeaderComponent, selector: "fd-notification-group-header", inputs: ["expandCompact", "expandAriaLabel", "expandAriaLabelledBy", "expanded"], outputs: ["expandedChange"] }, { kind: "component", type: i4.NotificationGroupComponent, selector: "fd-notification-group", inputs: ["class", "mobile", "width"] }, { kind: "component", type: i4.NotificationGroupListComponent, selector: "fd-notification-group-list" }, { kind: "component", type: i5.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "expandOverflowText", "defaultTab", "selectDefaultOnTabsChange"], outputs: ["selectedTabChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i5.TabPanelComponent, selector: "fd-tab", inputs: ["id", "ariaLabel", "ariaLabelledBy", "title", "count", "glyph", "header", "disabled", "tabState"], outputs: ["opened", "closed"] }, { kind: "directive", type: i1.IntersectionObserverDirective, selector: "[intersectionObserver]", inputs: ["intersectionDebounce", "intersectionRootMargin", "intersectionRoot", "intersectionThreshold"], outputs: ["visibilityChange"] }, { kind: "component", type: i6.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i6.NoDataComponent, selector: "bsu-no-data" }, { kind: "component", type: i6.NotificationItemComponent, selector: "bsu-notification-item", inputs: ["option", "notificationItem", "showCloseButton", "deviceSize"], outputs: ["viewed", "remove", "actionClick", "show", "close"] }, { kind: "component", type: i7.NotificationGroupHeaderComponent, selector: "bt-notification-group-header", inputs: ["notifications", "title"] }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
90
+ NotificationGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: NotificationGroupComponent, selector: "bt-notification-group", inputs: { notifications: "notifications", loading: "loading", deviceSize: "deviceSize", notificationCount: "notificationCount" }, outputs: { viewed: "viewed", remove: "remove", actionClick: "actionClick", show: "show", loadMore: "loadMore" }, host: { properties: { "class": "this._deviceSize" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"notifications && notifications.length > 0; else noData\">\n <ng-container>\n <fd-notification-group>\n <fd-tab-list size=\"s\" [expandOverflowText]=\"'More' | bbbTranslate\">\n <fd-tab\n [title]=\"tab.title | bbbTranslate\"\n *ngFor=\"let tab of tabList; let index = index; trackBy: _trackByTitle\"\n >\n <fd-notification-group-list\n *ngFor=\"let groupItem of tab.groupByItems; let index = index; trackBy: _trackByKey\"\n >\n <fd-notification-group-header [(expanded)]=\"expanded[groupItem.key]\">\n <fd-notification-header>\n <bt-notification-group-header\n [notifications]=\"groupItem.value\"\n [title]=\"groupItem.key\"\n ></bt-notification-group-header>\n </fd-notification-header>\n <fd-notification-actions>\n <!-- <button fd-button label=\"Accept All\"></button> -->\n <button\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"'DeleteAll' | bbbTranslate\"\n [title]=\"'DeleteAll' | bbbTranslate\"\n glyph=\"decline\"\n (click)=\"remove.emit({ items: groupItem.value, silent: false })\"\n ></button>\n </fd-notification-actions>\n </fd-notification-group-header>\n <ng-container\n *ngTemplateOutlet=\"\n notificationBody;\n context: { $implicit: groupItem.value, expanded: expanded[groupItem.key] }\n \"\n ></ng-container>\n <!-- <fd-notification-limit *ngIf=\"groupItem.value.length - 4 > 0\">\n <h1 fd-notification-limit-title>\n There are {{ groupItem.value.length - 4 }} more notifications\n </h1>\n <p fd-notification-limit-description>\n You need to close or take action on the listed notifications to display more.\n </p>\n </fd-notification-limit> -->\n </fd-notification-group-list>\n </fd-tab>\n </fd-tab-list>\n </fd-notification-group>\n </ng-container>\n</ng-container>\n<ng-template #noData>\n <bsu-no-data *ngIf=\"!loading; else loadingTpl\"></bsu-no-data>\n</ng-template>\n<ng-template #loadingTpl>\n <div style=\"height: 30px; position: relative\">\n <bsu-mask [top]=\"'10px'\"></bsu-mask>\n </div>\n</ng-template>\n<ng-template #notificationItem> </ng-template>\n\n<ng-template #notificationBody let-notifications let-exapanded=\"expanded\">\n <div style=\"max-height: 346px; overflow-y: auto; overflow-x: hidden\">\n <ng-container *ngFor=\"let mo of notifications; trackBy: _trackMoById; let first = first; let last = last\">\n <bsu-notification-item\n [notificationItem]=\"mo\"\n (viewed)=\"viewed.emit($event)\"\n (remove)=\"remove.emit($event)\"\n (show)=\"show.emit($event)\"\n (actionClick)=\"actionClick.emit($event)\"\n intersectionObserver\n [intersectionThreshold]=\"0.5\"\n [deviceSize]=\"deviceSize\"\n (visibilityChange)=\"onVisibilityChange($event, mo, last)\"\n ></bsu-notification-item>\n </ng-container>\n <ng-container *ngIf=\"loading\">\n <ng-container *ngTemplateOutlet=\"loadingTpl\"></ng-container>\n </ng-container>\n </div>\n</ng-template>\n", styles: [":host{display:block;min-width:600px}:host ::ng-deep .fd-tabs__content{overflow:hidden}:host ::ng-deep .fd-notification{padding:0;box-shadow:none}fd-notification{margin:0;padding-left:0rem!important;padding-right:0rem!important}fd-notification-body{position:relative}.noloading{visibility:hidden;height:0;width:0}.loading{visibility:visible;height:100%;width:100%}:host.s{min-width:auto}\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"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4.NotificationHeaderComponent, selector: "fd-notification-header", inputs: ["uniqueId"] }, { kind: "component", type: i4.NotificationActionsComponent, selector: "fd-notification-actions" }, { kind: "component", type: i4.NotificationGroupHeaderComponent, selector: "fd-notification-group-header", inputs: ["expandCompact", "expandAriaLabel", "expandAriaLabelledBy", "expanded"], outputs: ["expandedChange"] }, { kind: "component", type: i4.NotificationGroupComponent, selector: "fd-notification-group", inputs: ["class", "mobile", "width"] }, { kind: "component", type: i4.NotificationGroupListComponent, selector: "fd-notification-group-list" }, { kind: "component", type: i5.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "expandOverflowText", "defaultTab", "selectDefaultOnTabsChange"], outputs: ["selectedTabChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i5.TabPanelComponent, selector: "fd-tab", inputs: ["id", "ariaLabel", "ariaLabelledBy", "title", "count", "glyph", "header", "disabled", "tabState"], outputs: ["opened", "closed"] }, { kind: "directive", type: i1.IntersectionObserverDirective, selector: "[intersectionObserver]", inputs: ["intersectionDebounce", "intersectionRootMargin", "intersectionRoot", "intersectionThreshold"], outputs: ["visibilityChange"] }, { kind: "component", type: i6.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i6.NoDataComponent, selector: "bsu-no-data" }, { kind: "component", type: i6.NotificationItemComponent, selector: "bsu-notification-item", inputs: ["option", "notificationItem", "showCloseButton", "deviceSize"], outputs: ["viewed", "remove", "actionClick", "show", "close"] }, { kind: "component", type: i7.NotificationGroupHeaderComponent, selector: "bt-notification-group-header", inputs: ["notifications", "title"] }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
91
91
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NotificationGroupComponent, decorators: [{
92
92
  type: Component,
93
- args: [{ selector: 'bt-notification-group', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"notifications && notifications.length > 0; else noData\">\n <ng-container>\n <fd-notification-group>\n <fd-tab-list size=\"s\">\n <fd-tab\n [title]=\"tab.title | bbbTranslate\"\n *ngFor=\"let tab of tabList; let index = index; trackBy: _trackByTitle\"\n >\n <fd-notification-group-list\n *ngFor=\"let groupItem of tab.groupByItems; let index = index; trackBy: _trackByKey\"\n >\n <fd-notification-group-header [(expanded)]=\"expanded[groupItem.key]\">\n <fd-notification-header>\n <bt-notification-group-header\n [notifications]=\"groupItem.value\"\n [title]=\"groupItem.key\"\n ></bt-notification-group-header>\n </fd-notification-header>\n <fd-notification-actions>\n <!-- <button fd-button label=\"Accept All\"></button> -->\n <button\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"'DeleteAll' | bbbTranslate\"\n [title]=\"'DeleteAll' | bbbTranslate\"\n glyph=\"decline\"\n (click)=\"remove.emit({ items: groupItem.value, silent: false })\"\n ></button>\n </fd-notification-actions>\n </fd-notification-group-header>\n <ng-container\n *ngTemplateOutlet=\"\n notificationBody;\n context: { $implicit: groupItem.value, expanded: expanded[groupItem.key] }\n \"\n ></ng-container>\n <!-- <fd-notification-limit *ngIf=\"groupItem.value.length - 4 > 0\">\n <h1 fd-notification-limit-title>\n There are {{ groupItem.value.length - 4 }} more notifications\n </h1>\n <p fd-notification-limit-description>\n You need to close or take action on the listed notifications to display more.\n </p>\n </fd-notification-limit> -->\n </fd-notification-group-list>\n </fd-tab>\n </fd-tab-list>\n </fd-notification-group>\n </ng-container>\n</ng-container>\n<ng-template #noData>\n <bsu-no-data *ngIf=\"!loading; else loadingTpl\"></bsu-no-data>\n</ng-template>\n<ng-template #loadingTpl>\n <div style=\"height: 30px; position: relative\">\n <bsu-mask [top]=\"'10px'\"></bsu-mask>\n </div>\n</ng-template>\n<ng-template #notificationItem> </ng-template>\n\n<ng-template #notificationBody let-notifications let-exapanded=\"expanded\">\n <div style=\"max-height: 346px; overflow-y: auto; overflow-x: hidden\">\n <ng-container *ngFor=\"let mo of notifications; trackBy: _trackMoById; let first = first; let last = last\">\n <bsu-notification-item\n [notificationItem]=\"mo\"\n (viewed)=\"viewed.emit($event)\"\n (remove)=\"remove.emit($event)\"\n (show)=\"show.emit($event)\"\n (actionClick)=\"actionClick.emit($event)\"\n intersectionObserver\n [intersectionThreshold]=\"0.5\"\n [deviceSize]=\"deviceSize\"\n (visibilityChange)=\"onVisibilityChange($event, mo, last)\"\n ></bsu-notification-item>\n </ng-container>\n <ng-container *ngIf=\"loading\">\n <ng-container *ngTemplateOutlet=\"loadingTpl\"></ng-container>\n </ng-container>\n </div>\n</ng-template>\n", styles: [":host{display:block;min-width:600px}:host ::ng-deep .fd-tabs__content{overflow:hidden}:host ::ng-deep .fd-notification{padding:0;box-shadow:none}fd-notification{margin:0;padding-left:0rem!important;padding-right:0rem!important}fd-notification-body{position:relative}.noloading{visibility:hidden;height:0;width:0}.loading{visibility:visible;height:100%;width:100%}:host.s{min-width:auto}\n"] }]
93
+ args: [{ selector: 'bt-notification-group', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"notifications && notifications.length > 0; else noData\">\n <ng-container>\n <fd-notification-group>\n <fd-tab-list size=\"s\" [expandOverflowText]=\"'More' | bbbTranslate\">\n <fd-tab\n [title]=\"tab.title | bbbTranslate\"\n *ngFor=\"let tab of tabList; let index = index; trackBy: _trackByTitle\"\n >\n <fd-notification-group-list\n *ngFor=\"let groupItem of tab.groupByItems; let index = index; trackBy: _trackByKey\"\n >\n <fd-notification-group-header [(expanded)]=\"expanded[groupItem.key]\">\n <fd-notification-header>\n <bt-notification-group-header\n [notifications]=\"groupItem.value\"\n [title]=\"groupItem.key\"\n ></bt-notification-group-header>\n </fd-notification-header>\n <fd-notification-actions>\n <!-- <button fd-button label=\"Accept All\"></button> -->\n <button\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"'DeleteAll' | bbbTranslate\"\n [title]=\"'DeleteAll' | bbbTranslate\"\n glyph=\"decline\"\n (click)=\"remove.emit({ items: groupItem.value, silent: false })\"\n ></button>\n </fd-notification-actions>\n </fd-notification-group-header>\n <ng-container\n *ngTemplateOutlet=\"\n notificationBody;\n context: { $implicit: groupItem.value, expanded: expanded[groupItem.key] }\n \"\n ></ng-container>\n <!-- <fd-notification-limit *ngIf=\"groupItem.value.length - 4 > 0\">\n <h1 fd-notification-limit-title>\n There are {{ groupItem.value.length - 4 }} more notifications\n </h1>\n <p fd-notification-limit-description>\n You need to close or take action on the listed notifications to display more.\n </p>\n </fd-notification-limit> -->\n </fd-notification-group-list>\n </fd-tab>\n </fd-tab-list>\n </fd-notification-group>\n </ng-container>\n</ng-container>\n<ng-template #noData>\n <bsu-no-data *ngIf=\"!loading; else loadingTpl\"></bsu-no-data>\n</ng-template>\n<ng-template #loadingTpl>\n <div style=\"height: 30px; position: relative\">\n <bsu-mask [top]=\"'10px'\"></bsu-mask>\n </div>\n</ng-template>\n<ng-template #notificationItem> </ng-template>\n\n<ng-template #notificationBody let-notifications let-exapanded=\"expanded\">\n <div style=\"max-height: 346px; overflow-y: auto; overflow-x: hidden\">\n <ng-container *ngFor=\"let mo of notifications; trackBy: _trackMoById; let first = first; let last = last\">\n <bsu-notification-item\n [notificationItem]=\"mo\"\n (viewed)=\"viewed.emit($event)\"\n (remove)=\"remove.emit($event)\"\n (show)=\"show.emit($event)\"\n (actionClick)=\"actionClick.emit($event)\"\n intersectionObserver\n [intersectionThreshold]=\"0.5\"\n [deviceSize]=\"deviceSize\"\n (visibilityChange)=\"onVisibilityChange($event, mo, last)\"\n ></bsu-notification-item>\n </ng-container>\n <ng-container *ngIf=\"loading\">\n <ng-container *ngTemplateOutlet=\"loadingTpl\"></ng-container>\n </ng-container>\n </div>\n</ng-template>\n", styles: [":host{display:block;min-width:600px}:host ::ng-deep .fd-tabs__content{overflow:hidden}:host ::ng-deep .fd-notification{padding:0;box-shadow:none}fd-notification{margin:0;padding-left:0rem!important;padding-right:0rem!important}fd-notification-body{position:relative}.noloading{visibility:hidden;height:0;width:0}.loading{visibility:visible;height:100%;width:100%}:host.s{min-width:auto}\n"] }]
94
94
  }], ctorParameters: function () { return [{ type: i1.GroupByPipe }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { notifications: [{
95
95
  type: Input
96
96
  }], loading: [{
@@ -113,4 +113,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
113
113
  }], loadMore: [{
114
114
  type: Output
115
115
  }] } });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXRpbGVzL3NyYy9saWIvbm90aWZpY2F0aW9uLWdyb3VwL25vdGlmaWNhdGlvbi1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL25vdGlmaWNhdGlvbi1ncm91cC9ub3RpZmljYXRpb24tZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsTUFBTSxFQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxhQUFhLEVBR2Isa0JBQWtCLEVBR2xCLFFBQVEsRUFHWCxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7QUFTOUIsTUFBTSxPQUFPLDBCQUEyQixTQUFRLGFBQWE7SUFxQnpELFlBQW9CLFlBQXlCLEVBQVUsSUFBdUI7UUFDMUUsS0FBSyxFQUFFLENBQUM7UUFEUSxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUFVLFNBQUksR0FBSixJQUFJLENBQW1CO1FBZnhELGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBRTdCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUM5QyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQWtELENBQUM7UUFDNUUsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBdUQsQ0FBQztRQUN0RixTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQTZDLENBQUM7UUFDckUsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDOUMsYUFBUSxHQUE0QixFQUFFLENBQUM7UUFFdkMsWUFBTyxHQUFxRDtZQUN4RCxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFF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QUFiLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBCYXNlQ29tcG9uZW50LFxuICAgIEdyb3VwQnlJdGVtLFxuICAgIEdyb3VwQnlQaXBlLFxuICAgIEludGVyc2VjdGlvblN0YXR1cyxcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgIFdvcmtmbG93RXhlY3V0ZUNob2ljZVN0YXR1cyxcbiAgICBCYXJzYUFwaSxcbiAgICBOb3RpZmljYXRpb25JdGVtLFxuICAgIE5vdGlmaWNhdGlvbkFjdGlvblxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBBYmJyZXZhdGlvbkRldmljZVNpemUgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnQtbm90aWZpY2F0aW9uLWdyb3VwJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbm90aWZpY2F0aW9uLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9ub3RpZmljYXRpb24tZ3JvdXAuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25Hcm91cENvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgbm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uSXRlbVtdIHwgbnVsbDtcbiAgICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGRldmljZVNpemU6IEFiYnJldmF0aW9uRGV2aWNlU2l6ZTtcbiAgICBASW5wdXQoKSBub3RpZmljYXRpb25Db3VudDogeyB1bnJlYWQ6IG51bWJlcjsgYWxsOiBudW1iZXIgfTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBfZGV2aWNlU2l6ZSA9ICcnO1xuXG4gICAgQE91dHB1dCgpIHZpZXdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Tm90aWZpY2F0aW9uSXRlbT4oKTtcbiAgICBAT3V0cHV0KCkgcmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGl0ZW1zOiBOb3RpZmljYXRpb25JdGVtW107IHNpbGVudDogYm9vbGVhbiB9PigpO1xuICAgIEBPdXRwdXQoKSBhY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpdGVtOiBOb3RpZmljYXRpb25JdGVtOyBidG46IE5vdGlmaWNhdGlvbkFjdGlvbiB9PigpO1xuICAgIEBPdXRwdXQoKSBzaG93ID0gbmV3IEV2ZW50RW1pdHRlcjx7IG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsOyBuYW1hOiBzdHJpbmcgfT4oKTtcbiAgICBAT3V0cHV0KCkgbG9hZE1vcmUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgZXhwYW5kZWQ6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XG5cbiAgICB0YWJMaXN0OiB7IHRpdGxlOiBzdHJpbmc7IGdyb3VwQnlJdGVtczogR3JvdXBCeUl0ZW1bXSB9W10gPSBbXG4gICAgICAgIHsgdGl0bGU6ICdCeSBEYXRlJywgZ3JvdXBCeUl0ZW1zOiBbXSB9LFxuICAgICAgICB7IHRpdGxlOiAnQnkgVHlwZScsIGdyb3VwQnlJdGVtczogW10gfSxcbiAgICAgICAgeyB0aXRsZTogJ0J5IFByaW9yaXR5JywgZ3JvdXBCeUl0ZW1zOiBbXSB9XG4gICAgXTtcbiAgICB2aWV3ZWROb3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25JdGVtW10gPSBbXTtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9ncm91cEJ5UGlwZTogR3JvdXBCeVBpcGUsIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5fZGV2aWNlU2l6ZSA9IHRoaXMuZGV2aWNlU2l6ZTtcbiAgICAgICAgdGhpcy5hcHBseUdyb3VwQnlJdGVtcyh0aGlzLm5vdGlmaWNhdGlvbnMpO1xuICAgIH1cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgICAgICBjb25zdCB7IG5vdGlmaWNhdGlvbnMgfSA9IGNoYW5nZXM7XG4gICAgICAgIGlmIChub3RpZmljYXRpb25zICYmICFub3RpZmljYXRpb25zLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGx5R3JvdXBCeUl0ZW1zKG5vdGlmaWNhdGlvbnMuY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXBwbHlHcm91cEJ5SXRlbXMobm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uSXRlbVtdIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBpZiAoIW5vdGlmaWNhdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGFiTGlzdFswXS5ncm91cEJ5SXRlbXMgPSB0aGlzLl9ncm91cEJ5UGlwZS50cmFuc2Zvcm0obm90aWZpY2F0aW9ucywgJ0NyZWF0aW9uRGF0ZScpO1xuICAgICAgICB0aGlzLnRhYkxpc3RbMV0uZ3JvdXBCeUl0ZW1zID0gdGhpcy5fZ3JvdXBCeVBpcGUudHJhbnNmb3JtKG5vdGlmaWNhdGlvbnMsICdTdWJqZWN0Jyk7XG4gICAgICAgIHRoaXMudGFiTGlzdFsyXS5ncm91cEJ5SXRlbXMgPSB0aGlzLl9ncm91cEJ5UGlwZS50cmFuc2Zvcm0obm90aWZpY2F0aW9ucywgJ1ByaW9yaXR5Jyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50YWJMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50YWJMaXN0W2ldLmdyb3VwQnlJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdEtleSA9IHRoaXMudGFiTGlzdFtpXS5ncm91cEJ5SXRlbXNbMF0ua2V5O1xuICAgICAgICAgICAgICAgIGlmIChmaXJzdEtleSAmJiB0eXBlb2YgdGhpcy5leHBhbmRlZFtmaXJzdEtleV0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kZWRbZmlyc3RLZXldID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgX3RyYWNrQnlUaXRsZShfaW5kZXg6IG51bWJlciwgXzogeyB0aXRsZTogc3RyaW5nOyBncm91cEJ5SXRlbXM6IEdyb3VwQnlJdGVtW10gfSk6IG51bWJlciB8IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBfaW5kZXg7XG4gICAgfVxuICAgIF90cmFja0J5S2V5KF9pbmRleDogbnVtYmVyLCBpdGVtOiB7IGlkOiBzdHJpbmc7IGtleTogc3RyaW5nOyB2YWx1ZTogYW55IH0pOiBudW1iZXIgfCBzdHJpbmcge1xuICAgICAgICByZXR1cm4gaXRlbS5rZXk7XG4gICAgfVxuICAgIF90cmFja01vQnlJZChfaW5kZXg6IG51bWJlciwgbW86IE1ldGFvYmplY3REYXRhTW9kZWwpOiBudW1iZXIgfCBzdHJpbmcge1xuICAgICAgICByZXR1cm4gbW8uSWQ7XG4gICAgfVxuICAgIG9uVmlzaWJpbGl0eUNoYW5nZShlOiBJbnRlcnNlY3Rpb25TdGF0dXMsIG1vOiBOb3RpZmljYXRpb25JdGVtLCBpc0xhc3Q6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGUgPT09IEludGVyc2VjdGlvblN0YXR1cy5WaXNpYmxlKSB7XG4gICAgICAgICAgICBpZiAobW8uVW5yZWFkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3ZWROb3RpZmljYXRpb25zID0gWy4uLnRoaXMudmlld2VkTm90aWZpY2F0aW9ucy5maWx0ZXIoKGMpID0+IGMuVW5yZWFkKSwgbW9dO1xuICAgICAgICAgICAgICAgIHRoaXMudmlld2VkLmVtaXQobW8pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzTGFzdCkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZE1vcmUuZW1pdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIG9uV29ya2Zsb3dFeGVjdXRlQ2hvaWNlU3RhdHVzQ2hhbmdlZChlOiBXb3JrZmxvd0V4ZWN1dGVDaG9pY2VTdGF0dXMsIG1vOiBOb3RpZmljYXRpb25JdGVtKTogdm9pZCB7XG4gICAgICAgIGlmIChlLnJlc3VsdCAmJiAhZS5lcnJvcikge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmUuZW1pdCh7IGl0ZW1zOiBbbW9dLCBzaWxlbnQ6IHRydWUgfSk7XG4gICAgICAgICAgICBCYXJzYUFwaS5Cdy5Ub2FzdC5TdWNjZXNzKGAke2UuY2hvaWNlPy5UaXRsZX0gJHtCYXJzYUFwaS5CQkIuQWN0aW9ufWApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIG1vLiRDaG9pY2VEZWZTdGF0dXMgPSBlO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJub3RpZmljYXRpb25zICYmIG5vdGlmaWNhdGlvbnMubGVuZ3RoID4gMDsgZWxzZSBub0RhdGFcIj5cbiAgICA8bmctY29udGFpbmVyPlxuICAgICAgICA8ZmQtbm90aWZpY2F0aW9uLWdyb3VwPlxuICAgICAgICAgICAgPGZkLXRhYi1saXN0IHNpemU9XCJzXCI+XG4gICAgICAgICAgICAgICAgPGZkLXRhYlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwidGFiLnRpdGxlIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJMaXN0OyBsZXQgaW5kZXggPSBpbmRleDsgdHJhY2tCeTogX3RyYWNrQnlUaXRsZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtbm90aWZpY2F0aW9uLWdyb3VwLWxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBncm91cEl0ZW0gb2YgdGFiLmdyb3VwQnlJdGVtczsgbGV0IGluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IF90cmFja0J5S2V5XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLW5vdGlmaWNhdGlvbi1ncm91cC1oZWFkZXIgWyhleHBhbmRlZCldPVwiZXhwYW5kZWRbZ3JvdXBJdGVtLmtleV1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtbm90aWZpY2F0aW9uLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ0LW5vdGlmaWNhdGlvbi1ncm91cC1oZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtub3RpZmljYXRpb25zXT1cImdyb3VwSXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZ3JvdXBJdGVtLmtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J0LW5vdGlmaWNhdGlvbi1ncm91cC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC1ub3RpZmljYXRpb24taGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1ub3RpZmljYXRpb24tYWN0aW9ucz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIGZkLWJ1dHRvbiBsYWJlbD1cIkFjY2VwdCBBbGxcIj48L2J1dHRvbj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCInRGVsZXRlQWxsJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0RlbGV0ZUFsbCcgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGg9XCJkZWNsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUuZW1pdCh7IGl0ZW1zOiBncm91cEl0ZW0udmFsdWUsIHNpbGVudDogZmFsc2UgfSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC1ub3RpZmljYXRpb24tYWN0aW9ucz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtbm90aWZpY2F0aW9uLWdyb3VwLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb25Cb2R5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogZ3JvdXBJdGVtLnZhbHVlLCBleHBhbmRlZDogZXhwYW5kZWRbZ3JvdXBJdGVtLmtleV0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxmZC1ub3RpZmljYXRpb24tbGltaXQgKm5nSWY9XCJncm91cEl0ZW0udmFsdWUubGVuZ3RoIC0gNCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDEgZmQtbm90aWZpY2F0aW9uLWxpbWl0LXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVyZSBhcmUge3sgZ3JvdXBJdGVtLnZhbHVlLmxlbmd0aCAtIDQgfX0gbW9yZSBub3RpZmljYXRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBmZC1ub3RpZmljYXRpb24tbGltaXQtZGVzY3JpcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGNsb3NlIG9yIHRha2UgYWN0aW9uIG9uIHRoZSBsaXN0ZWQgbm90aWZpY2F0aW9ucyB0byBkaXNwbGF5IG1vcmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC1ub3RpZmljYXRpb24tbGltaXQ+IC0tPlxuICAgICAgICAgICAgICAgICAgICA8L2ZkLW5vdGlmaWNhdGlvbi1ncm91cC1saXN0PlxuICAgICAgICAgICAgICAgIDwvZmQtdGFiPlxuICAgICAgICAgICAgPC9mZC10YWItbGlzdD5cbiAgICAgICAgPC9mZC1ub3RpZmljYXRpb24tZ3JvdXA+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbjxuZy10ZW1wbGF0ZSAjbm9EYXRhPlxuICAgIDxic3Utbm8tZGF0YSAqbmdJZj1cIiFsb2FkaW5nOyBlbHNlIGxvYWRpbmdUcGxcIj48L2JzdS1uby1kYXRhPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ1RwbD5cbiAgICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmVcIj5cbiAgICAgICAgPGJzdS1tYXNrIFt0b3BdPVwiJzEwcHgnXCI+PC9ic3UtbWFzaz5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI25vdGlmaWNhdGlvbkl0ZW0+IDwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbm90aWZpY2F0aW9uQm9keSBsZXQtbm90aWZpY2F0aW9ucyBsZXQtZXhhcGFuZGVkPVwiZXhwYW5kZWRcIj5cbiAgICA8ZGl2IHN0eWxlPVwibWF4LWhlaWdodDogMzQ2cHg7IG92ZXJmbG93LXk6IGF1dG87IG92ZXJmbG93LXg6IGhpZGRlblwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtbyBvZiBub3RpZmljYXRpb25zOyB0cmFja0J5OiBfdHJhY2tNb0J5SWQ7IGxldCBmaXJzdCA9IGZpcnN0OyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICAgICAgICAgIDxic3Utbm90aWZpY2F0aW9uLWl0ZW1cbiAgICAgICAgICAgICAgICBbbm90aWZpY2F0aW9uSXRlbV09XCJtb1wiXG4gICAgICAgICAgICAgICAgKHZpZXdlZCk9XCJ2aWV3ZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAocmVtb3ZlKT1cInJlbW92ZS5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgIChzaG93KT1cInNob3cuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwiYWN0aW9uQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBpbnRlcnNlY3Rpb25PYnNlcnZlclxuICAgICAgICAgICAgICAgIFtpbnRlcnNlY3Rpb25UaHJlc2hvbGRdPVwiMC41XCJcbiAgICAgICAgICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcbiAgICAgICAgICAgICAgICAodmlzaWJpbGl0eUNoYW5nZSk9XCJvblZpc2liaWxpdHlDaGFuZ2UoJGV2ZW50LCBtbywgbGFzdClcIlxuICAgICAgICAgICAgPjwvYnN1LW5vdGlmaWNhdGlvbi1pdGVtPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nVHBsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXRpbGVzL3NyYy9saWIvbm90aWZpY2F0aW9uLWdyb3VwL25vdGlmaWNhdGlvbi1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL25vdGlmaWNhdGlvbi1ncm91cC9ub3RpZmljYXRpb24tZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsTUFBTSxFQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxhQUFhLEVBR2Isa0JBQWtCLEVBR2xCLFFBQVEsRUFHWCxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7QUFTOUIsTUFBTSxPQUFPLDBCQUEyQixTQUFRLGFBQWE7SUFxQnpELFlBQW9CLFlBQXlCLEVBQVUsSUFBdUI7UUFDMUUsS0FBSyxFQUFFLENBQUM7UUFEUSxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUFVLFNBQUksR0FBSixJQUFJLENBQW1CO1FBZnhELGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBRTdCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUM5QyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQWtELENBQUM7UUFDNUUsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBdUQsQ0FBQztRQUN0RixTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQTZDLENBQUM7UUFDckUsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDOUMsYUFBUSxHQUE0QixFQUFFLENBQUM7UUFFdkMsWUFBTyxHQUFxRDtZQUN4RCxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFF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QUFiLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBCYXNlQ29tcG9uZW50LFxuICAgIEdyb3VwQnlJdGVtLFxuICAgIEdyb3VwQnlQaXBlLFxuICAgIEludGVyc2VjdGlvblN0YXR1cyxcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgIFdvcmtmbG93RXhlY3V0ZUNob2ljZVN0YXR1cyxcbiAgICBCYXJzYUFwaSxcbiAgICBOb3RpZmljYXRpb25JdGVtLFxuICAgIE5vdGlmaWNhdGlvbkFjdGlvblxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBBYmJyZXZhdGlvbkRldmljZVNpemUgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnQtbm90aWZpY2F0aW9uLWdyb3VwJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbm90aWZpY2F0aW9uLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9ub3RpZmljYXRpb24tZ3JvdXAuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25Hcm91cENvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgbm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uSXRlbVtdIHwgbnVsbDtcbiAgICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGRldmljZVNpemU6IEFiYnJldmF0aW9uRGV2aWNlU2l6ZTtcbiAgICBASW5wdXQoKSBub3RpZmljYXRpb25Db3VudDogeyB1bnJlYWQ6IG51bWJlcjsgYWxsOiBudW1iZXIgfTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBfZGV2aWNlU2l6ZSA9ICcnO1xuXG4gICAgQE91dHB1dCgpIHZpZXdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Tm90aWZpY2F0aW9uSXRlbT4oKTtcbiAgICBAT3V0cHV0KCkgcmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGl0ZW1zOiBOb3RpZmljYXRpb25JdGVtW107IHNpbGVudDogYm9vbGVhbiB9PigpO1xuICAgIEBPdXRwdXQoKSBhY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpdGVtOiBOb3RpZmljYXRpb25JdGVtOyBidG46IE5vdGlmaWNhdGlvbkFjdGlvbiB9PigpO1xuICAgIEBPdXRwdXQoKSBzaG93ID0gbmV3IEV2ZW50RW1pdHRlcjx7IG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsOyBuYW1hOiBzdHJpbmcgfT4oKTtcbiAgICBAT3V0cHV0KCkgbG9hZE1vcmUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgZXhwYW5kZWQ6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XG5cbiAgICB0YWJMaXN0OiB7IHRpdGxlOiBzdHJpbmc7IGdyb3VwQnlJdGVtczogR3JvdXBCeUl0ZW1bXSB9W10gPSBbXG4gICAgICAgIHsgdGl0bGU6ICdCeSBEYXRlJywgZ3JvdXBCeUl0ZW1zOiBbXSB9LFxuICAgICAgICB7IHRpdGxlOiAnQnkgVHlwZScsIGdyb3VwQnlJdGVtczogW10gfSxcbiAgICAgICAgeyB0aXRsZTogJ0J5IFByaW9yaXR5JywgZ3JvdXBCeUl0ZW1zOiBbXSB9XG4gICAgXTtcbiAgICB2aWV3ZWROb3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25JdGVtW10gPSBbXTtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9ncm91cEJ5UGlwZTogR3JvdXBCeVBpcGUsIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5fZGV2aWNlU2l6ZSA9IHRoaXMuZGV2aWNlU2l6ZTtcbiAgICAgICAgdGhpcy5hcHBseUdyb3VwQnlJdGVtcyh0aGlzLm5vdGlmaWNhdGlvbnMpO1xuICAgIH1cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgICAgICBjb25zdCB7IG5vdGlmaWNhdGlvbnMgfSA9IGNoYW5nZXM7XG4gICAgICAgIGlmIChub3RpZmljYXRpb25zICYmICFub3RpZmljYXRpb25zLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGx5R3JvdXBCeUl0ZW1zKG5vdGlmaWNhdGlvbnMuY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXBwbHlHcm91cEJ5SXRlbXMobm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uSXRlbVtdIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBpZiAoIW5vdGlmaWNhdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGFiTGlzdFswXS5ncm91cEJ5SXRlbXMgPSB0aGlzLl9ncm91cEJ5UGlwZS50cmFuc2Zvcm0obm90aWZpY2F0aW9ucywgJ0NyZWF0aW9uRGF0ZScpO1xuICAgICAgICB0aGlzLnRhYkxpc3RbMV0uZ3JvdXBCeUl0ZW1zID0gdGhpcy5fZ3JvdXBCeVBpcGUudHJhbnNmb3JtKG5vdGlmaWNhdGlvbnMsICdTdWJqZWN0Jyk7XG4gICAgICAgIHRoaXMudGFiTGlzdFsyXS5ncm91cEJ5SXRlbXMgPSB0aGlzLl9ncm91cEJ5UGlwZS50cmFuc2Zvcm0obm90aWZpY2F0aW9ucywgJ1ByaW9yaXR5Jyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50YWJMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50YWJMaXN0W2ldLmdyb3VwQnlJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdEtleSA9IHRoaXMudGFiTGlzdFtpXS5ncm91cEJ5SXRlbXNbMF0ua2V5O1xuICAgICAgICAgICAgICAgIGlmIChmaXJzdEtleSAmJiB0eXBlb2YgdGhpcy5leHBhbmRlZFtmaXJzdEtleV0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kZWRbZmlyc3RLZXldID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgX3RyYWNrQnlUaXRsZShfaW5kZXg6IG51bWJlciwgXzogeyB0aXRsZTogc3RyaW5nOyBncm91cEJ5SXRlbXM6IEdyb3VwQnlJdGVtW10gfSk6IG51bWJlciB8IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBfaW5kZXg7XG4gICAgfVxuICAgIF90cmFja0J5S2V5KF9pbmRleDogbnVtYmVyLCBpdGVtOiB7IGlkOiBzdHJpbmc7IGtleTogc3RyaW5nOyB2YWx1ZTogYW55IH0pOiBudW1iZXIgfCBzdHJpbmcge1xuICAgICAgICByZXR1cm4gaXRlbS5rZXk7XG4gICAgfVxuICAgIF90cmFja01vQnlJZChfaW5kZXg6IG51bWJlciwgbW86IE1ldGFvYmplY3REYXRhTW9kZWwpOiBudW1iZXIgfCBzdHJpbmcge1xuICAgICAgICByZXR1cm4gbW8uSWQ7XG4gICAgfVxuICAgIG9uVmlzaWJpbGl0eUNoYW5nZShlOiBJbnRlcnNlY3Rpb25TdGF0dXMsIG1vOiBOb3RpZmljYXRpb25JdGVtLCBpc0xhc3Q6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGUgPT09IEludGVyc2VjdGlvblN0YXR1cy5WaXNpYmxlKSB7XG4gICAgICAgICAgICBpZiAobW8uVW5yZWFkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3ZWROb3RpZmljYXRpb25zID0gWy4uLnRoaXMudmlld2VkTm90aWZpY2F0aW9ucy5maWx0ZXIoKGMpID0+IGMuVW5yZWFkKSwgbW9dO1xuICAgICAgICAgICAgICAgIHRoaXMudmlld2VkLmVtaXQobW8pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzTGFzdCkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZE1vcmUuZW1pdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIG9uV29ya2Zsb3dFeGVjdXRlQ2hvaWNlU3RhdHVzQ2hhbmdlZChlOiBXb3JrZmxvd0V4ZWN1dGVDaG9pY2VTdGF0dXMsIG1vOiBOb3RpZmljYXRpb25JdGVtKTogdm9pZCB7XG4gICAgICAgIGlmIChlLnJlc3VsdCAmJiAhZS5lcnJvcikge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmUuZW1pdCh7IGl0ZW1zOiBbbW9dLCBzaWxlbnQ6IHRydWUgfSk7XG4gICAgICAgICAgICBCYXJzYUFwaS5Cdy5Ub2FzdC5TdWNjZXNzKGAke2UuY2hvaWNlPy5UaXRsZX0gJHtCYXJzYUFwaS5CQkIuQWN0aW9ufWApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIG1vLiRDaG9pY2VEZWZTdGF0dXMgPSBlO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJub3RpZmljYXRpb25zICYmIG5vdGlmaWNhdGlvbnMubGVuZ3RoID4gMDsgZWxzZSBub0RhdGFcIj5cbiAgICA8bmctY29udGFpbmVyPlxuICAgICAgICA8ZmQtbm90aWZpY2F0aW9uLWdyb3VwPlxuICAgICAgICAgICAgPGZkLXRhYi1saXN0IHNpemU9XCJzXCIgW2V4cGFuZE92ZXJmbG93VGV4dF09XCInTW9yZScgfCBiYmJUcmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgICA8ZmQtdGFiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJ0YWIudGl0bGUgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYkxpc3Q7IGxldCBpbmRleCA9IGluZGV4OyB0cmFja0J5OiBfdHJhY2tCeVRpdGxlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1ub3RpZmljYXRpb24tZ3JvdXAtbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGdyb3VwSXRlbSBvZiB0YWIuZ3JvdXBCeUl0ZW1zOyBsZXQgaW5kZXggPSBpbmRleDsgdHJhY2tCeTogX3RyYWNrQnlLZXlcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmQtbm90aWZpY2F0aW9uLWdyb3VwLWhlYWRlciBbKGV4cGFuZGVkKV09XCJleHBhbmRlZFtncm91cEl0ZW0ua2V5XVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1ub3RpZmljYXRpb24taGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnQtbm90aWZpY2F0aW9uLWdyb3VwLWhlYWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25vdGlmaWNhdGlvbnNdPVwiZ3JvdXBJdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJncm91cEl0ZW0ua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnQtbm90aWZpY2F0aW9uLWdyb3VwLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLW5vdGlmaWNhdGlvbi1oZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLW5vdGlmaWNhdGlvbi1hY3Rpb25zPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gZmQtYnV0dG9uIGxhYmVsPVwiQWNjZXB0IEFsbFwiPjwvYnV0dG9uPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsXT1cIidEZWxldGVBbGwnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInRGVsZXRlQWxsJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaD1cImRlY2xpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZS5lbWl0KHsgaXRlbXM6IGdyb3VwSXRlbS52YWx1ZSwgc2lsZW50OiBmYWxzZSB9KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLW5vdGlmaWNhdGlvbi1hY3Rpb25zPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC1ub3RpZmljYXRpb24tZ3JvdXAtaGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbkJvZHk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBncm91cEl0ZW0udmFsdWUsIGV4cGFuZGVkOiBleHBhbmRlZFtncm91cEl0ZW0ua2V5XSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGZkLW5vdGlmaWNhdGlvbi1saW1pdCAqbmdJZj1cImdyb3VwSXRlbS52YWx1ZS5sZW5ndGggLSA0ID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMSBmZC1ub3RpZmljYXRpb24tbGltaXQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZXJlIGFyZSB7eyBncm91cEl0ZW0udmFsdWUubGVuZ3RoIC0gNCB9fSBtb3JlIG5vdGlmaWNhdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGZkLW5vdGlmaWNhdGlvbi1saW1pdC1kZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gY2xvc2Ugb3IgdGFrZSBhY3Rpb24gb24gdGhlIGxpc3RlZCBub3RpZmljYXRpb25zIHRvIGRpc3BsYXkgbW9yZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLW5vdGlmaWNhdGlvbi1saW1pdD4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDwvZmQtbm90aWZpY2F0aW9uLWdyb3VwLWxpc3Q+XG4gICAgICAgICAgICAgICAgPC9mZC10YWI+XG4gICAgICAgICAgICA8L2ZkLXRhYi1saXN0PlxuICAgICAgICA8L2ZkLW5vdGlmaWNhdGlvbi1ncm91cD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlICNub0RhdGE+XG4gICAgPGJzdS1uby1kYXRhICpuZ0lmPVwiIWxvYWRpbmc7IGVsc2UgbG9hZGluZ1RwbFwiPjwvYnN1LW5vLWRhdGE+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNsb2FkaW5nVHBsPlxuICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZVwiPlxuICAgICAgICA8YnN1LW1hc2sgW3RvcF09XCInMTBweCdcIj48L2JzdS1tYXNrPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjbm90aWZpY2F0aW9uSXRlbT4gPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNub3RpZmljYXRpb25Cb2R5IGxldC1ub3RpZmljYXRpb25zIGxldC1leGFwYW5kZWQ9XCJleHBhbmRlZFwiPlxuICAgIDxkaXYgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzNDZweDsgb3ZlcmZsb3cteTogYXV0bzsgb3ZlcmZsb3cteDogaGlkZGVuXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1vIG9mIG5vdGlmaWNhdGlvbnM7IHRyYWNrQnk6IF90cmFja01vQnlJZDsgbGV0IGZpcnN0ID0gZmlyc3Q7IGxldCBsYXN0ID0gbGFzdFwiPlxuICAgICAgICAgICAgPGJzdS1ub3RpZmljYXRpb24taXRlbVxuICAgICAgICAgICAgICAgIFtub3RpZmljYXRpb25JdGVtXT1cIm1vXCJcbiAgICAgICAgICAgICAgICAodmlld2VkKT1cInZpZXdlZC5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgIChyZW1vdmUpPVwicmVtb3ZlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHNob3cpPVwic2hvdy5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgIChhY3Rpb25DbGljayk9XCJhY3Rpb25DbGljay5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgIGludGVyc2VjdGlvbk9ic2VydmVyXG4gICAgICAgICAgICAgICAgW2ludGVyc2VjdGlvblRocmVzaG9sZF09XCIwLjVcIlxuICAgICAgICAgICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgICAgICAgICAgICAgICh2aXNpYmlsaXR5Q2hhbmdlKT1cIm9uVmlzaWJpbGl0eUNoYW5nZSgkZXZlbnQsIG1vLCBsYXN0KVwiXG4gICAgICAgICAgICA+PC9ic3Utbm90aWZpY2F0aW9uLWl0ZW0+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZ1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvYWRpbmdUcGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -226,10 +226,10 @@ export class ShellbarComponent extends BaseComponent {
226
226
  }
227
227
  }
228
228
  ShellbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ShellbarComponent, deps: [{ token: i1.PortalService }, { token: i1.BreadcrumbService }, { token: i2.TilesService }, { token: i0.ChangeDetectorRef }, { token: i1.BbbTranslatePipe }, { token: i3.DomSanitizer }, { token: i1.NotificationService }, { token: i4.DialogService }, { token: DOCUMENT }, { token: APP_VERSION }], target: i0.ɵɵFactoryTarget.Component });
229
- ShellbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ShellbarComponent, selector: "bt-shellbar", viewQueries: [{ propertyName: "comboboxComponent", first: true, predicate: ComboboxComponent, descendants: true }, { propertyName: "popoverComponent", first: true, predicate: ["popoverComponent"], descendants: true }, { propertyName: "_notificationsDialog", first: true, predicate: ["notificationsDialog"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<link *ngIf=\"cssUrl$ | async as cssUrl\" type=\"text/css\" rel=\"stylesheet\" [href]=\"cssUrl\" />\n<link *ngIf=\"cssCustomUrl$ | async as cssCustomUrl\" type=\"text/css\" rel=\"stylesheet\" [href]=\"cssCustomUrl\" />\n\n<fd-shellbar *ngIf=\"(userLoggedIn$ | async) || allowAnonymous\" [size]=\"deviceSize\" [ngClass]=\"deviceSize\">\n <fd-shellbar-logo *ngIf=\"logo\">\n <a\n [style.backgroundImage]=\"'url(' + (logo?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) + ')'\"\n href=\"/\"\n class=\"fd-shellbar__logo fd-shellbar__logo--image-replaced\"\n aria-label=\"Barsa Novin Ray\"\n ></a>\n </fd-shellbar-logo>\n\n <fd-product-menu\n *ngIf=\"!settings?.HideProductMenu && productMenuItems1 && productMenuItems1.length > 0\"\n [control]=\"productMenuControl\"\n [closePopoverOnSelect]=\"true\"\n [items]=\"productMenuItems1\"\n >\n </fd-product-menu>\n\n <fd-shellbar-subtitle> {{ subtitle | bbbTranslate }}{{ showVersion ? appVersion : '' }} </fd-shellbar-subtitle>\n <fd-shellbar-actions\n *ngIf=\"user && (userMenu?.length || !settings?.HideLanguage)\"\n [user]=\"user\"\n [userMenu]=\"userMenu\"\n #langRef\n >\n <fd-shellbar-action\n *ngFor=\"let action of actions\"\n [glyph]=\"action.Icon\"\n [callback]=\"action.Callback\"\n [label]=\"action.Label\"\n >\n </fd-shellbar-action>\n <fd-shellbar-action\n *ngIf=\"deviceSize === 's'\"\n [glyph]=\"'bell'\"\n [label]=\"'Notifications' | bbbTranslate\"\n [notificationCount]=\"(notificationsCount$ | async)?.unread ?? 0\"\n [notificationLabel]=\"'Notifications' | bbbTranslate\"\n [callback]=\"onBellNotification\"\n >\n </fd-shellbar-action>\n <fd-popover\n *ngIf=\"!settings?.HideNotifications && (notificationsCount$ | async) as notificationCount\"\n [(isOpen)]=\"isOpenNotificatoin\"\n [triggers]=\"[]\"\n [focusTrapped]=\"true\"\n [noArrow]=\"true\"\n placement=\"bottom\"\n title=\"Notification Popover\"\n [focusAutoCapture]=\"true\"\n [mobile]=\"deviceSize === 's'\"\n #popoverComponent\n >\n <fd-popover-control>\n <fd-shellbar-action\n [glyph]=\"'bell'\"\n [label]=\"'Notification'\"\n [notificationCount]=\"notificationCount.unread\"\n [notificationLabel]=\"'Notification Label'\"\n [callback]=\"onOpenNotification\"\n >\n </fd-shellbar-action>\n </fd-popover-control>\n <fd-popover-body style=\"min-width: 320px; overflow-x: auto; box-shadow: var(--sapContent_Shadow0)\">\n <ng-container\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationCount }\"\n ></ng-container>\n </fd-popover-body>\n </fd-popover>\n\n <fd-shellbar-action\n *ngIf=\"!settings?.HideLanguage && deviceSize !== 's'\"\n [glyph]=\"'world'\"\n [label]=\"'language'\"\n [fdMenuTrigger]=\"menu\"\n (callback)=\"(onLanguage)\"\n >\n </fd-shellbar-action>\n <ng-container *ngIf=\"!settings?.HideLanguage && deviceSize === 's'\">\n <fd-shellbar-action\n *ngFor=\"let culture of cultures | keyvalue\"\n [label]=\"culture.value\"\n [callback]=\"onLanguage\"\n class=\"culture-abbrivation\"\n [glyph]=\"culture.key\"\n [ngClass]=\"'flags'\"\n >\n </fd-shellbar-action>\n </ng-container>\n\n <fd-product-switch *ngIf=\"productSwitcher.length > 0\">\n <fd-product-switch-body [products]=\"productSwitcher\" [forceListMode]=\"deviceSize === 's'\">\n </fd-product-switch-body>\n </fd-product-switch>\n <!-- <fd-combobox\n [(ngModel)]=\"searchTerm\"\n [dropdownValues]=\"searchTerms\"\n [placeholder]=\"('EnterSearchCriteria' | bbbTranslate) + ' ...'\"\n [compact]=\"true\"\n >\n </fd-combobox> -->\n </fd-shellbar-actions>\n</fd-shellbar>\n<ng-template #loading>\n <bsu-mask></bsu-mask>\n</ng-template>\n\n<fd-menu #menu>\n <ul fd-list>\n <li fd-list-item *ngFor=\"let culture of cultures | keyvalue\">\n <a fd-list-link (click)=\"onCultureChange(culture.value)\">\n <span fd-list-title>\n <img width=\"14px\" height=\"12px\" [src]=\"'/assets/flags/' + culture.key + '.png'\" />\n <span class=\"culture-abbrivation\" [ngClass]=\"culture.key\"> {{ culture.key }}</span>\n </span>\n </a>\n </li>\n </ul>\n</fd-menu>\n<ng-template #notificationGroupTpl let-notificationCount=\"notificationCount\">\n <div\n style=\"position: relative; height: 100px\"\n *ngIf=\"!notifcationLoaded && (notificationLoading$ | async) === true\"\n >\n <bsu-mask size=\"s\"></bsu-mask>\n </div>\n <bt-notification-group\n [notifications]=\"notifications$ | async\"\n [notificationCount]=\"notificationCount\"\n [loading]=\"(notificationLoading$ | async) === true\"\n (viewed)=\"onNotificationItemViewed($event)\"\n (remove)=\"onRemoveNotifications($event)\"\n (show)=\"popoverComponent.close(); onShowNotification($event)\"\n (actionClick)=\"popoverComponent.close(); onNotificationAction($event)\"\n (loadMore)=\"onNotificationLoadMore()\"\n [deviceSize]=\"deviceSize\"\n ></bt-notification-group>\n</ng-template>\n\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #notificationsDialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Notification' | bbbTranslate }}</h1>\n <button fd-dialog-close-button (click)=\"dialog.dismiss()\"></button>\n </fd-dialog-header>\n <fd-dialog-body class=\"mobile\">\n <ng-container\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationsCount$ | async }\"\n ></ng-container>\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n", styles: [":host{display:block}:host ::ng-deep fd-shellbar-actions fd-avatar{background-color:transparent!important;color:var(--sapShell_InteractiveTextColor, #d1e8ff)}:host ::ng-deep fd-combobox .fd-input-group input{min-width:2rem;height:1.625rem;margin-top:.1875rem;margin-bottom:.1875rem;padding:0 .5rem;box-sizing:border-box}:host ::ng-deep fd-combobox .fd-input-group span{min-width:2rem;min-height:1.625rem}:host ::ng-deep .fd-shellbar__subtitle{font-size:1rem}:host ::ng-deep .fd-shellbar--s{padding:0}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__subtitle{display:block;overflow:hidden;text-wrap:wrap;width:100%;word-break:break-all}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--product{flex:1}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--actions{max-width:120px}.fd-shellbar__logo{min-height:3rem;height:3rem;width:3rem}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline"], outputs: ["focusEscapeList"] }, { kind: "component", type: i6.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "ariaDescribedBy", "noData", "action", "interactive", "growing", "counter", "unread", "selectedListItemScreenReaderText", "navigatedListItemScreenReaderText", "navigatableListItemScreenReaderText"], outputs: ["keyDown"] }, { kind: "directive", type: i6.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i6.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated"] }, { kind: "component", type: i7.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "directive", type: i7.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i8.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i8.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i8.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i8.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title"] }, { kind: "component", type: i9.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i10.ProductSwitchComponent, selector: "fd-product-switch", inputs: ["placement", "ariaLabel", "disabled"] }, { kind: "component", type: i10.ProductSwitchBodyComponent, selector: "fd-product-switch-body", inputs: ["dragAndDropEnabled", "products", "forceListMode"], outputs: ["productsChange", "itemClicked"] }, { kind: "component", type: i11.PopoverControlComponent, selector: "fd-popover-control" }, { kind: "component", type: i11.PopoverBodyComponent, selector: "fd-popover-body" }, { kind: "component", type: i11.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: i12.ShellbarComponent, selector: "fd-shellbar", inputs: ["size", "sideNav"] }, { kind: "component", type: i12.ProductMenuComponent, selector: "fd-product-menu", inputs: ["closeOnEscapeKey", "closeOnOutsideClick", "triggers", "placement", "disabled", "fillControlMode", "control", "items", "closePopoverOnSelect"] }, { kind: "component", type: i12.ShellbarSubtitleComponent, selector: "fd-shellbar-subtitle" }, { kind: "component", type: i12.ShellbarActionsComponent, selector: "fd-shellbar-actions", inputs: ["user", "userMenu", "closePopoverOnSelect", "collapsedItemMenuLabel"] }, { kind: "component", type: i12.ShellbarActionComponent, selector: "fd-shellbar-action", inputs: ["glyph", "callback", "label", "notificationLabel", "notificationCount"] }, { kind: "component", type: i12.ShellbarLogoComponent, selector: "fd-shellbar-logo" }, { kind: "directive", type: i1.MobileDirective, selector: "[mobile]" }, { kind: "component", type: i13.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i14.NotificationGroupComponent, selector: "bt-notification-group", inputs: ["notifications", "loading", "deviceSize", "notificationCount"], outputs: ["viewed", "remove", "actionClick", "show", "loadMore"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
229
+ ShellbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ShellbarComponent, selector: "bt-shellbar", viewQueries: [{ propertyName: "comboboxComponent", first: true, predicate: ComboboxComponent, descendants: true }, { propertyName: "popoverComponent", first: true, predicate: ["popoverComponent"], descendants: true }, { propertyName: "_notificationsDialog", first: true, predicate: ["notificationsDialog"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<link *ngIf=\"cssUrl$ | async as cssUrl\" type=\"text/css\" rel=\"stylesheet\" [href]=\"cssUrl\" />\n<link *ngIf=\"cssCustomUrl$ | async as cssCustomUrl\" type=\"text/css\" rel=\"stylesheet\" [href]=\"cssCustomUrl\" />\n\n<fd-shellbar *ngIf=\"(userLoggedIn$ | async) || allowAnonymous\" [size]=\"deviceSize\" [ngClass]=\"deviceSize\">\n <fd-shellbar-logo *ngIf=\"logo\">\n <a\n [style.backgroundImage]=\"'url(' + (logo?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) + ')'\"\n href=\"/\"\n class=\"fd-shellbar__logo fd-shellbar__logo--image-replaced\"\n aria-label=\"Barsa Novin Ray\"\n ></a>\n </fd-shellbar-logo>\n\n <fd-product-menu\n *ngIf=\"!settings?.HideProductMenu && productMenuItems1 && productMenuItems1.length > 0\"\n [control]=\"productMenuControl\"\n [closePopoverOnSelect]=\"true\"\n [items]=\"productMenuItems1\"\n >\n </fd-product-menu>\n\n <fd-shellbar-subtitle> {{ subtitle | bbbTranslate }}{{ showVersion ? appVersion : '' }} </fd-shellbar-subtitle>\n <fd-shellbar-actions\n *ngIf=\"user && (userMenu?.length || !settings?.HideLanguage)\"\n [user]=\"user\"\n [userMenu]=\"userMenu\"\n #langRef\n >\n <fd-shellbar-action\n *ngFor=\"let action of actions\"\n [glyph]=\"action.Icon\"\n [callback]=\"action.Callback\"\n [label]=\"action.Label\"\n >\n </fd-shellbar-action>\n <fd-shellbar-action\n *ngIf=\"deviceSize === 's' && (userLoggedIn$ | async) === true && !settings?.HideNotifications\"\n [glyph]=\"'bell'\"\n [label]=\"'Notifications' | bbbTranslate\"\n [notificationCount]=\"(notificationsCount$ | async)?.unread ?? 0\"\n [notificationLabel]=\"'Notifications' | bbbTranslate\"\n [callback]=\"onBellNotification\"\n >\n </fd-shellbar-action>\n <fd-popover\n *ngIf=\"!settings?.HideNotifications && (notificationsCount$ | async) as notificationCount\"\n [(isOpen)]=\"isOpenNotificatoin\"\n [triggers]=\"[]\"\n [focusTrapped]=\"true\"\n [noArrow]=\"true\"\n placement=\"bottom\"\n title=\"Notification Popover\"\n [focusAutoCapture]=\"true\"\n [mobile]=\"deviceSize === 's'\"\n #popoverComponent\n >\n <fd-popover-control>\n <fd-shellbar-action\n [glyph]=\"'bell'\"\n [label]=\"'Notification'\"\n [notificationCount]=\"notificationCount.unread\"\n [notificationLabel]=\"'Notification Label'\"\n [callback]=\"onOpenNotification\"\n >\n </fd-shellbar-action>\n </fd-popover-control>\n <fd-popover-body style=\"min-width: 320px; overflow-x: auto; box-shadow: var(--sapContent_Shadow0)\">\n <ng-container\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationCount }\"\n ></ng-container>\n </fd-popover-body>\n </fd-popover>\n\n <fd-shellbar-action\n *ngIf=\"!settings?.HideLanguage && deviceSize !== 's'\"\n [glyph]=\"'world'\"\n [label]=\"'language'\"\n [fdMenuTrigger]=\"menu\"\n (callback)=\"(onLanguage)\"\n >\n </fd-shellbar-action>\n <ng-container *ngIf=\"!settings?.HideLanguage && deviceSize === 's'\">\n <fd-shellbar-action\n *ngFor=\"let culture of cultures | keyvalue\"\n [label]=\"culture.value\"\n [callback]=\"onLanguage\"\n class=\"culture-abbrivation\"\n [glyph]=\"culture.key\"\n [ngClass]=\"'flags'\"\n >\n </fd-shellbar-action>\n </ng-container>\n\n <fd-product-switch *ngIf=\"productSwitcher.length > 0\">\n <fd-product-switch-body [products]=\"productSwitcher\" [forceListMode]=\"deviceSize === 's'\">\n </fd-product-switch-body>\n </fd-product-switch>\n <!-- <fd-combobox\n [(ngModel)]=\"searchTerm\"\n [dropdownValues]=\"searchTerms\"\n [placeholder]=\"('EnterSearchCriteria' | bbbTranslate) + ' ...'\"\n [compact]=\"true\"\n >\n </fd-combobox> -->\n </fd-shellbar-actions>\n</fd-shellbar>\n<ng-template #loading>\n <bsu-mask></bsu-mask>\n</ng-template>\n\n<fd-menu #menu>\n <ul fd-list>\n <li fd-list-item *ngFor=\"let culture of cultures | keyvalue\">\n <a fd-list-link (click)=\"onCultureChange(culture.value)\">\n <span fd-list-title>\n <img width=\"14px\" height=\"12px\" [src]=\"'/assets/flags/' + culture.key + '.png'\" />\n <span class=\"culture-abbrivation\" [ngClass]=\"culture.key\"> {{ culture.key }}</span>\n </span>\n </a>\n </li>\n </ul>\n</fd-menu>\n<ng-template #notificationGroupTpl let-notificationCount=\"notificationCount\">\n <div\n style=\"position: relative; height: 100px\"\n *ngIf=\"!notifcationLoaded && (notificationLoading$ | async) === true\"\n >\n <bsu-mask size=\"s\"></bsu-mask>\n </div>\n <bt-notification-group\n [notifications]=\"notifications$ | async\"\n [notificationCount]=\"notificationCount\"\n [loading]=\"(notificationLoading$ | async) === true\"\n (viewed)=\"onNotificationItemViewed($event)\"\n (remove)=\"onRemoveNotifications($event)\"\n (show)=\"popoverComponent.close(); onShowNotification($event)\"\n (actionClick)=\"popoverComponent.close(); onNotificationAction($event)\"\n (loadMore)=\"onNotificationLoadMore()\"\n [deviceSize]=\"deviceSize\"\n ></bt-notification-group>\n</ng-template>\n\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #notificationsDialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Notification' | bbbTranslate }}</h1>\n <button fd-dialog-close-button (click)=\"dialog.dismiss()\"></button>\n </fd-dialog-header>\n <fd-dialog-body class=\"mobile\">\n <ng-container\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationsCount$ | async }\"\n ></ng-container>\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n", styles: [":host{display:block}:host ::ng-deep fd-shellbar-actions fd-avatar{background-color:transparent!important;color:var(--sapShell_InteractiveTextColor, #d1e8ff)}:host ::ng-deep fd-combobox .fd-input-group input{min-width:2rem;height:1.625rem;margin-top:.1875rem;margin-bottom:.1875rem;padding:0 .5rem;box-sizing:border-box}:host ::ng-deep fd-combobox .fd-input-group span{min-width:2rem;min-height:1.625rem}:host ::ng-deep .fd-shellbar__subtitle{font-size:1rem}:host ::ng-deep .fd-shellbar--s{padding:0}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__subtitle{display:block;overflow:hidden;text-wrap:wrap;width:100%;word-break:break-all}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--product{flex:1}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--actions{max-width:120px}.fd-shellbar__logo{min-height:3rem;height:3rem;width:3rem}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline"], outputs: ["focusEscapeList"] }, { kind: "component", type: i6.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "ariaDescribedBy", "noData", "action", "interactive", "growing", "counter", "unread", "selectedListItemScreenReaderText", "navigatedListItemScreenReaderText", "navigatableListItemScreenReaderText"], outputs: ["keyDown"] }, { kind: "directive", type: i6.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i6.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated"] }, { kind: "component", type: i7.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "directive", type: i7.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i8.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i8.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i8.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i8.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title"] }, { kind: "component", type: i9.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i10.ProductSwitchComponent, selector: "fd-product-switch", inputs: ["placement", "ariaLabel", "disabled"] }, { kind: "component", type: i10.ProductSwitchBodyComponent, selector: "fd-product-switch-body", inputs: ["dragAndDropEnabled", "products", "forceListMode"], outputs: ["productsChange", "itemClicked"] }, { kind: "component", type: i11.PopoverControlComponent, selector: "fd-popover-control" }, { kind: "component", type: i11.PopoverBodyComponent, selector: "fd-popover-body" }, { kind: "component", type: i11.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: i12.ShellbarComponent, selector: "fd-shellbar", inputs: ["size", "sideNav"] }, { kind: "component", type: i12.ProductMenuComponent, selector: "fd-product-menu", inputs: ["closeOnEscapeKey", "closeOnOutsideClick", "triggers", "placement", "disabled", "fillControlMode", "control", "items", "closePopoverOnSelect"] }, { kind: "component", type: i12.ShellbarSubtitleComponent, selector: "fd-shellbar-subtitle" }, { kind: "component", type: i12.ShellbarActionsComponent, selector: "fd-shellbar-actions", inputs: ["user", "userMenu", "closePopoverOnSelect", "collapsedItemMenuLabel"] }, { kind: "component", type: i12.ShellbarActionComponent, selector: "fd-shellbar-action", inputs: ["glyph", "callback", "label", "notificationLabel", "notificationCount"] }, { kind: "component", type: i12.ShellbarLogoComponent, selector: "fd-shellbar-logo" }, { kind: "directive", type: i1.MobileDirective, selector: "[mobile]" }, { kind: "component", type: i13.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i14.NotificationGroupComponent, selector: "bt-notification-group", inputs: ["notifications", "loading", "deviceSize", "notificationCount"], outputs: ["viewed", "remove", "actionClick", "show", "loadMore"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
230
230
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ShellbarComponent, decorators: [{
231
231
  type: Component,
232
- args: [{ selector: 'bt-shellbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<link *ngIf=\"cssUrl$ | async as cssUrl\" type=\"text/css\" rel=\"stylesheet\" [href]=\"cssUrl\" />\n<link *ngIf=\"cssCustomUrl$ | async as cssCustomUrl\" type=\"text/css\" rel=\"stylesheet\" [href]=\"cssCustomUrl\" />\n\n<fd-shellbar *ngIf=\"(userLoggedIn$ | async) || allowAnonymous\" [size]=\"deviceSize\" [ngClass]=\"deviceSize\">\n <fd-shellbar-logo *ngIf=\"logo\">\n <a\n [style.backgroundImage]=\"'url(' + (logo?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) + ')'\"\n href=\"/\"\n class=\"fd-shellbar__logo fd-shellbar__logo--image-replaced\"\n aria-label=\"Barsa Novin Ray\"\n ></a>\n </fd-shellbar-logo>\n\n <fd-product-menu\n *ngIf=\"!settings?.HideProductMenu && productMenuItems1 && productMenuItems1.length > 0\"\n [control]=\"productMenuControl\"\n [closePopoverOnSelect]=\"true\"\n [items]=\"productMenuItems1\"\n >\n </fd-product-menu>\n\n <fd-shellbar-subtitle> {{ subtitle | bbbTranslate }}{{ showVersion ? appVersion : '' }} </fd-shellbar-subtitle>\n <fd-shellbar-actions\n *ngIf=\"user && (userMenu?.length || !settings?.HideLanguage)\"\n [user]=\"user\"\n [userMenu]=\"userMenu\"\n #langRef\n >\n <fd-shellbar-action\n *ngFor=\"let action of actions\"\n [glyph]=\"action.Icon\"\n [callback]=\"action.Callback\"\n [label]=\"action.Label\"\n >\n </fd-shellbar-action>\n <fd-shellbar-action\n *ngIf=\"deviceSize === 's'\"\n [glyph]=\"'bell'\"\n [label]=\"'Notifications' | bbbTranslate\"\n [notificationCount]=\"(notificationsCount$ | async)?.unread ?? 0\"\n [notificationLabel]=\"'Notifications' | bbbTranslate\"\n [callback]=\"onBellNotification\"\n >\n </fd-shellbar-action>\n <fd-popover\n *ngIf=\"!settings?.HideNotifications && (notificationsCount$ | async) as notificationCount\"\n [(isOpen)]=\"isOpenNotificatoin\"\n [triggers]=\"[]\"\n [focusTrapped]=\"true\"\n [noArrow]=\"true\"\n placement=\"bottom\"\n title=\"Notification Popover\"\n [focusAutoCapture]=\"true\"\n [mobile]=\"deviceSize === 's'\"\n #popoverComponent\n >\n <fd-popover-control>\n <fd-shellbar-action\n [glyph]=\"'bell'\"\n [label]=\"'Notification'\"\n [notificationCount]=\"notificationCount.unread\"\n [notificationLabel]=\"'Notification Label'\"\n [callback]=\"onOpenNotification\"\n >\n </fd-shellbar-action>\n </fd-popover-control>\n <fd-popover-body style=\"min-width: 320px; overflow-x: auto; box-shadow: var(--sapContent_Shadow0)\">\n <ng-container\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationCount }\"\n ></ng-container>\n </fd-popover-body>\n </fd-popover>\n\n <fd-shellbar-action\n *ngIf=\"!settings?.HideLanguage && deviceSize !== 's'\"\n [glyph]=\"'world'\"\n [label]=\"'language'\"\n [fdMenuTrigger]=\"menu\"\n (callback)=\"(onLanguage)\"\n >\n </fd-shellbar-action>\n <ng-container *ngIf=\"!settings?.HideLanguage && deviceSize === 's'\">\n <fd-shellbar-action\n *ngFor=\"let culture of cultures | keyvalue\"\n [label]=\"culture.value\"\n [callback]=\"onLanguage\"\n class=\"culture-abbrivation\"\n [glyph]=\"culture.key\"\n [ngClass]=\"'flags'\"\n >\n </fd-shellbar-action>\n </ng-container>\n\n <fd-product-switch *ngIf=\"productSwitcher.length > 0\">\n <fd-product-switch-body [products]=\"productSwitcher\" [forceListMode]=\"deviceSize === 's'\">\n </fd-product-switch-body>\n </fd-product-switch>\n <!-- <fd-combobox\n [(ngModel)]=\"searchTerm\"\n [dropdownValues]=\"searchTerms\"\n [placeholder]=\"('EnterSearchCriteria' | bbbTranslate) + ' ...'\"\n [compact]=\"true\"\n >\n </fd-combobox> -->\n </fd-shellbar-actions>\n</fd-shellbar>\n<ng-template #loading>\n <bsu-mask></bsu-mask>\n</ng-template>\n\n<fd-menu #menu>\n <ul fd-list>\n <li fd-list-item *ngFor=\"let culture of cultures | keyvalue\">\n <a fd-list-link (click)=\"onCultureChange(culture.value)\">\n <span fd-list-title>\n <img width=\"14px\" height=\"12px\" [src]=\"'/assets/flags/' + culture.key + '.png'\" />\n <span class=\"culture-abbrivation\" [ngClass]=\"culture.key\"> {{ culture.key }}</span>\n </span>\n </a>\n </li>\n </ul>\n</fd-menu>\n<ng-template #notificationGroupTpl let-notificationCount=\"notificationCount\">\n <div\n style=\"position: relative; height: 100px\"\n *ngIf=\"!notifcationLoaded && (notificationLoading$ | async) === true\"\n >\n <bsu-mask size=\"s\"></bsu-mask>\n </div>\n <bt-notification-group\n [notifications]=\"notifications$ | async\"\n [notificationCount]=\"notificationCount\"\n [loading]=\"(notificationLoading$ | async) === true\"\n (viewed)=\"onNotificationItemViewed($event)\"\n (remove)=\"onRemoveNotifications($event)\"\n (show)=\"popoverComponent.close(); onShowNotification($event)\"\n (actionClick)=\"popoverComponent.close(); onNotificationAction($event)\"\n (loadMore)=\"onNotificationLoadMore()\"\n [deviceSize]=\"deviceSize\"\n ></bt-notification-group>\n</ng-template>\n\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #notificationsDialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Notification' | bbbTranslate }}</h1>\n <button fd-dialog-close-button (click)=\"dialog.dismiss()\"></button>\n </fd-dialog-header>\n <fd-dialog-body class=\"mobile\">\n <ng-container\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationsCount$ | async }\"\n ></ng-container>\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n", styles: [":host{display:block}:host ::ng-deep fd-shellbar-actions fd-avatar{background-color:transparent!important;color:var(--sapShell_InteractiveTextColor, #d1e8ff)}:host ::ng-deep fd-combobox .fd-input-group input{min-width:2rem;height:1.625rem;margin-top:.1875rem;margin-bottom:.1875rem;padding:0 .5rem;box-sizing:border-box}:host ::ng-deep fd-combobox .fd-input-group span{min-width:2rem;min-height:1.625rem}:host ::ng-deep .fd-shellbar__subtitle{font-size:1rem}:host ::ng-deep .fd-shellbar--s{padding:0}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__subtitle{display:block;overflow:hidden;text-wrap:wrap;width:100%;word-break:break-all}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--product{flex:1}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--actions{max-width:120px}.fd-shellbar__logo{min-height:3rem;height:3rem;width:3rem}\n"] }]
232
+ args: [{ selector: 'bt-shellbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<link *ngIf=\"cssUrl$ | async as cssUrl\" type=\"text/css\" rel=\"stylesheet\" [href]=\"cssUrl\" />\n<link *ngIf=\"cssCustomUrl$ | async as cssCustomUrl\" type=\"text/css\" rel=\"stylesheet\" [href]=\"cssCustomUrl\" />\n\n<fd-shellbar *ngIf=\"(userLoggedIn$ | async) || allowAnonymous\" [size]=\"deviceSize\" [ngClass]=\"deviceSize\">\n <fd-shellbar-logo *ngIf=\"logo\">\n <a\n [style.backgroundImage]=\"'url(' + (logo?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) + ')'\"\n href=\"/\"\n class=\"fd-shellbar__logo fd-shellbar__logo--image-replaced\"\n aria-label=\"Barsa Novin Ray\"\n ></a>\n </fd-shellbar-logo>\n\n <fd-product-menu\n *ngIf=\"!settings?.HideProductMenu && productMenuItems1 && productMenuItems1.length > 0\"\n [control]=\"productMenuControl\"\n [closePopoverOnSelect]=\"true\"\n [items]=\"productMenuItems1\"\n >\n </fd-product-menu>\n\n <fd-shellbar-subtitle> {{ subtitle | bbbTranslate }}{{ showVersion ? appVersion : '' }} </fd-shellbar-subtitle>\n <fd-shellbar-actions\n *ngIf=\"user && (userMenu?.length || !settings?.HideLanguage)\"\n [user]=\"user\"\n [userMenu]=\"userMenu\"\n #langRef\n >\n <fd-shellbar-action\n *ngFor=\"let action of actions\"\n [glyph]=\"action.Icon\"\n [callback]=\"action.Callback\"\n [label]=\"action.Label\"\n >\n </fd-shellbar-action>\n <fd-shellbar-action\n *ngIf=\"deviceSize === 's' && (userLoggedIn$ | async) === true && !settings?.HideNotifications\"\n [glyph]=\"'bell'\"\n [label]=\"'Notifications' | bbbTranslate\"\n [notificationCount]=\"(notificationsCount$ | async)?.unread ?? 0\"\n [notificationLabel]=\"'Notifications' | bbbTranslate\"\n [callback]=\"onBellNotification\"\n >\n </fd-shellbar-action>\n <fd-popover\n *ngIf=\"!settings?.HideNotifications && (notificationsCount$ | async) as notificationCount\"\n [(isOpen)]=\"isOpenNotificatoin\"\n [triggers]=\"[]\"\n [focusTrapped]=\"true\"\n [noArrow]=\"true\"\n placement=\"bottom\"\n title=\"Notification Popover\"\n [focusAutoCapture]=\"true\"\n [mobile]=\"deviceSize === 's'\"\n #popoverComponent\n >\n <fd-popover-control>\n <fd-shellbar-action\n [glyph]=\"'bell'\"\n [label]=\"'Notification'\"\n [notificationCount]=\"notificationCount.unread\"\n [notificationLabel]=\"'Notification Label'\"\n [callback]=\"onOpenNotification\"\n >\n </fd-shellbar-action>\n </fd-popover-control>\n <fd-popover-body style=\"min-width: 320px; overflow-x: auto; box-shadow: var(--sapContent_Shadow0)\">\n <ng-container\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationCount }\"\n ></ng-container>\n </fd-popover-body>\n </fd-popover>\n\n <fd-shellbar-action\n *ngIf=\"!settings?.HideLanguage && deviceSize !== 's'\"\n [glyph]=\"'world'\"\n [label]=\"'language'\"\n [fdMenuTrigger]=\"menu\"\n (callback)=\"(onLanguage)\"\n >\n </fd-shellbar-action>\n <ng-container *ngIf=\"!settings?.HideLanguage && deviceSize === 's'\">\n <fd-shellbar-action\n *ngFor=\"let culture of cultures | keyvalue\"\n [label]=\"culture.value\"\n [callback]=\"onLanguage\"\n class=\"culture-abbrivation\"\n [glyph]=\"culture.key\"\n [ngClass]=\"'flags'\"\n >\n </fd-shellbar-action>\n </ng-container>\n\n <fd-product-switch *ngIf=\"productSwitcher.length > 0\">\n <fd-product-switch-body [products]=\"productSwitcher\" [forceListMode]=\"deviceSize === 's'\">\n </fd-product-switch-body>\n </fd-product-switch>\n <!-- <fd-combobox\n [(ngModel)]=\"searchTerm\"\n [dropdownValues]=\"searchTerms\"\n [placeholder]=\"('EnterSearchCriteria' | bbbTranslate) + ' ...'\"\n [compact]=\"true\"\n >\n </fd-combobox> -->\n </fd-shellbar-actions>\n</fd-shellbar>\n<ng-template #loading>\n <bsu-mask></bsu-mask>\n</ng-template>\n\n<fd-menu #menu>\n <ul fd-list>\n <li fd-list-item *ngFor=\"let culture of cultures | keyvalue\">\n <a fd-list-link (click)=\"onCultureChange(culture.value)\">\n <span fd-list-title>\n <img width=\"14px\" height=\"12px\" [src]=\"'/assets/flags/' + culture.key + '.png'\" />\n <span class=\"culture-abbrivation\" [ngClass]=\"culture.key\"> {{ culture.key }}</span>\n </span>\n </a>\n </li>\n </ul>\n</fd-menu>\n<ng-template #notificationGroupTpl let-notificationCount=\"notificationCount\">\n <div\n style=\"position: relative; height: 100px\"\n *ngIf=\"!notifcationLoaded && (notificationLoading$ | async) === true\"\n >\n <bsu-mask size=\"s\"></bsu-mask>\n </div>\n <bt-notification-group\n [notifications]=\"notifications$ | async\"\n [notificationCount]=\"notificationCount\"\n [loading]=\"(notificationLoading$ | async) === true\"\n (viewed)=\"onNotificationItemViewed($event)\"\n (remove)=\"onRemoveNotifications($event)\"\n (show)=\"popoverComponent.close(); onShowNotification($event)\"\n (actionClick)=\"popoverComponent.close(); onNotificationAction($event)\"\n (loadMore)=\"onNotificationLoadMore()\"\n [deviceSize]=\"deviceSize\"\n ></bt-notification-group>\n</ng-template>\n\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #notificationsDialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Notification' | bbbTranslate }}</h1>\n <button fd-dialog-close-button (click)=\"dialog.dismiss()\"></button>\n </fd-dialog-header>\n <fd-dialog-body class=\"mobile\">\n <ng-container\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationsCount$ | async }\"\n ></ng-container>\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n", styles: [":host{display:block}:host ::ng-deep fd-shellbar-actions fd-avatar{background-color:transparent!important;color:var(--sapShell_InteractiveTextColor, #d1e8ff)}:host ::ng-deep fd-combobox .fd-input-group input{min-width:2rem;height:1.625rem;margin-top:.1875rem;margin-bottom:.1875rem;padding:0 .5rem;box-sizing:border-box}:host ::ng-deep fd-combobox .fd-input-group span{min-width:2rem;min-height:1.625rem}:host ::ng-deep .fd-shellbar__subtitle{font-size:1rem}:host ::ng-deep .fd-shellbar--s{padding:0}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__subtitle{display:block;overflow:hidden;text-wrap:wrap;width:100%;word-break:break-all}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--product{flex:1}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--actions{max-width:120px}.fd-shellbar__logo{min-height:3rem;height:3rem;width:3rem}\n"] }]
233
233
  }], ctorParameters: function () { return [{ type: i1.PortalService }, { type: i1.BreadcrumbService }, { type: i2.TilesService }, { type: i0.ChangeDetectorRef }, { type: i1.BbbTranslatePipe }, { type: i3.DomSanitizer }, { type: i1.NotificationService }, { type: i4.DialogService }, { type: Document, decorators: [{
234
234
  type: Inject,
235
235
  args: [DOCUMENT]
@@ -246,4 +246,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
246
246
  type: ViewChild,
247
247
  args: ['notificationsDialog', { static: true, read: TemplateRef }]
248
248
  }] } });
249
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGxiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtdGlsZXMvc3JjL2xpYi9zaGVsbGJhci9zaGVsbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3NoZWxsYmFyL3NoZWxsYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFDSCxpQkFBaUIsRUFNcEIsTUFBTSx1QkFBdUIsQ0FBQztBQUcvQixPQUFPLEVBQ0gsYUFBYSxFQUNiLFFBQVEsRUFNUixXQUFXLEVBS2QsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQW9COUIsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGFBQWE7SUEwQ2hELFlBQ1ksY0FBNkIsRUFDN0Isa0JBQXFDLEVBQ3JDLGFBQTJCLEVBQzNCLElBQXVCLEVBQ3ZCLGlCQUFtQyxFQUNuQyxhQUEyQixFQUMzQixvQkFBeUMsRUFDekMsY0FBNkIsRUFDWCxTQUFtQixFQUNqQixVQUFrQjtRQUU5QyxLQUFLLEVBQUUsQ0FBQztRQVhBLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsa0JBQWEsR0FBYixhQUFhLENB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ZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgSW5qZWN0LFxuICAgIE9uSW5pdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgQ29tYm9ib3hDb21wb25lbnQsXG4gICAgRGlhbG9nU2VydmljZSxcbiAgICBQb3BvdmVyQ29tcG9uZW50LFxuICAgIFByb2R1Y3RTd2l0Y2hJdGVtLFxuICAgIFNoZWxsYmFyTWVudUl0ZW0sXG4gICAgU2hlbGxiYXJVc2VyXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHtcbiAgICBCYXNlQ29tcG9uZW50LFxuICAgIEJhcnNhQXBpLFxuICAgIE1ldGFvYmplY3REYXRhTW9kZWwsXG4gICAgRmlsZVBpY3R1cmVJbmZvTW9kZWwsXG4gICAgTW9Gb3JSZXBvcnRNb2RlbCxcbiAgICBQb3J0YWxTZXJ2aWNlLFxuICAgIEJyZWFkY3J1bWJTZXJ2aWNlLFxuICAgIEFQUF9WRVJTSU9OLFxuICAgIEJiYlRyYW5zbGF0ZVBpcGUsXG4gICAgTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBOb3RpZmljYXRpb25JdGVtLFxuICAgIE5vdGlmaWNhdGlvbkFjdGlvblxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5cbmltcG9ydCB7IFRpbGVzU2VydmljZSB9IGZyb20gJy4uL3RpbGVzLnNlcnZpY2UnO1xuXG5pbnRlcmZhY2UgU2hlbGxiYXJTZXR0aW5nIGV4dGVuZHMgTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgc3VidGl0bGU6IHN0cmluZztcbiAgICBjYWxjU3VidGl0bGU6IHN0cmluZztcbiAgICBsb2dvOiBGaWxlUGljdHVyZUluZm9Nb2RlbDtcbiAgICBQcm9kdWN0U3dpdGNoSXRlbXM6IE1vRm9yUmVwb3J0TW9kZWw7XG4gICAgUHJvZHVjdE1lbnVJdGVtczogTW9Gb3JSZXBvcnRNb2RlbDtcbiAgICBVc2VyTWVudUl0ZW1zOiBNb0ZvclJlcG9ydE1vZGVsO1xuICAgIEFjdGlvbkl0ZW1zOiBNb0ZvclJlcG9ydE1vZGVsO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2J0LXNoZWxsYmFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2hlbGxiYXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NoZWxsYmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2hlbGxiYXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAVmlld0NoaWxkKENvbWJvYm94Q29tcG9uZW50KSBjb21ib2JveENvbXBvbmVudDogQ29tYm9ib3hDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgncG9wb3ZlckNvbXBvbmVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwb3BvdmVyQ29tcG9uZW50OiBQb3BvdmVyQ29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ25vdGlmaWNhdGlvbnNEaWFsb2cnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVGVtcGxhdGVSZWYgfSkgX25vdGlmaWNhdGlvbnNEaWFsb2c6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgc2hlbGxiYXJEYXRhOiBTaGVsbGJhclNldHRpbmc7XG4gICAgc2V0dGluZ3M6IE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgaXNPcGVuTm90aWZpY2F0b2luID0gZmFsc2U7XG4gICAgZGV2aWNlU2l6ZTogJ3MnIHwgJ20nIHwgJ2wnIHwgJ3hsJyA9ICd4bCc7XG4gICAgcHJvZHVjdE1lbnVDb250cm9sOiBzdHJpbmc7XG4gICAgdXNlcjogU2hlbGxiYXJVc2VyID0ge1xuICAgICAgICBpbml0aWFsczogJ1dXJyxcbiAgICAgICAgY29sb3JBY2NlbnQ6IDFcbiAgICB9O1xuICAgIHNlYXJjaFRlcm1zID0gWyfZhdix2K7YtduMJywgJ9mF2KfZhdmI2LHbjNiqJywgJ9iq24zaqdiqJywgJ9m+2LHZiNqY2YcnXTtcbiAgICBzZWFyY2hUZXJtOiBzdHJpbmc7XG4gICAgYWN0aW9ucyQ6IE9ic2VydmFibGU8U2hlbGxiYXJNZW51SXRlbVtdPjtcbiAgICBwcm9kdWN0TWVudUl0ZW1zMTogU2hlbGxiYXJNZW51SXRlbVtdO1xuICAgIHVzZXJMb2dnZWRJbiQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgY3NzVXJsJDogYW55O1xuICAgIGNzc0N1c3RvbVVybCQ6IGFueTtcbiAgICBhbGxvd0Fub255bW91cyA9IHRydWU7XG4gICAgc2hvd1ZlcnNpb24gPSBmYWxzZTtcbiAgICBjdWx0dXJlczogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBub3RpZmljYXRpb25zQ291bnQkOiBPYnNlcnZhYmxlPHsgdW5yZWFkOiBudW1iZXI7IGFsbDogbnVtYmVyIH0+O1xuICAgIG5vdGlmaWNhdGlvbnMkOiBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbkl0ZW1bXT47XG4gICAgbm90aWZpY2F0aW9uTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgbm90aWZjYXRpb25Mb2FkZWQgPSBmYWxzZTtcbiAgICBfdmlld2VkTm90aWZpY2F0aW9ucyQgPSBuZXcgU3ViamVjdDxOb3RpZmljYXRpb25JdGVtPigpO1xuICAgIG9uQmVsbE5vdGlmaWNhdGlvbiA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5fZG9jdW1lbnQ/LmJvZHkgJiYgdGhpcy5fZG9jdW1lbnQuYm9keS5jbGljaygpO1xuICAgICAgICB0aGlzLl9kaWFsb2dTZXJ2aWNlXG4gICAgICAgICAgICAub3Blbih0aGlzLl9ub3RpZmljYXRpb25zRGlhbG9nLCB7XG4gICAgICAgICAgICAgICAgbW9iaWxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGZ1bGxTY3JlZW46IHRydWUsXG4gICAgICAgICAgICAgICAgdmVydGljYWxQYWRkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjbG9zZU9uTmF2aWdhdGlvbjogdHJ1ZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZnRlckxvYWRlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZU9wZW5Ob3RpZmljYXRpb25QYW5lbCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfTtcbiAgICBfdmlld2VkTm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uSXRlbVtdID0gW107XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX3BvcnRhbFNlcnZpY2U6IFBvcnRhbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2JyZWFkQ3J1bWJTZXJ2aWNlOiBCcmVhZGNydW1iU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfdGlsZXNTZXJ2aWNlOiBUaWxlc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgX2JiYlRyYW5zbGF0ZVBpcGU6IEJiYlRyYW5zbGF0ZVBpcGUsXG4gICAgICAgIHByaXZhdGUgX2RvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgICAgICBwcml2YXRlIF9ub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2N1bWVudDogRG9jdW1lbnQsXG4gICAgICAgIEBJbmplY3QoQVBQX1ZFUlNJT04pIHB1YmxpYyBhcHBWZXJzaW9uOiBzdHJpbmdcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy51c2VyTG9nZ2VkSW4kID0gdGhpcy5fcG9ydGFsU2VydmljZS51c2VyTG9nZ2VkSW4kO1xuICAgICAgICB0aGlzLnNob3dWZXJzaW9uID0gIUJhcnNhQXBpLkxvZ2luRm9ybURhdGEuSXNTZXJ2aWNlRGVzaztcbiAgICAgICAgdGhpcy5fdmlld2VkTm90aWZpY2F0aW9ucyRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICB0YXAoKGl0ZW0pID0+IHRoaXMuX3ZpZXdlZE5vdGlmaWNhdGlvbnMucHVzaChpdGVtKSksXG4gICAgICAgICAgICAgICAgbWFwKChpdGVtKSA9PiB0aGlzLl92aWV3ZWROb3RpZmljYXRpb25zKSxcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMjAwMCksXG4gICAgICAgICAgICAgICAgbWFwKChpdGVtcykgPT4gaXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLlRhZykpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh0YWdzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmlld2VkTm90aWZpY2F0aW9ucyA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2Uuc2V0Tm90aWZpY2F0aW9uVmlld2VkKHRhZ3MpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldCBzdWJ0aXRsZSgpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXRoaXMuc2hlbGxiYXJEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGV2aWNlU2l6ZSA9PT0gJ3MnICYmIHRoaXMuc2hlbGxiYXJEYXRhLk1vYmlsZVN1YnRpdGxlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zaGVsbGJhckRhdGEuTW9iaWxlU3VidGl0bGVcbiAgICAgICAgICAgICAgICA/IGAke3RoaXMuc2hlbGxiYXJEYXRhLk1vYmlsZVN1YnRpdGxlfSAke1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiB0aGlzLnNoZWxsYmFyRGF0YT8uY2FsY1N1YnRpdGxlID09PSAnc3RyaW5nJyA/IHRoaXMuc2hlbGxiYXJEYXRhLmNhbGNTdWJ0aXRsZSA6ICcnXG4gICAgICAgICAgICAgICAgICB9YFxuICAgICAgICAgICAgICAgIDogJyc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc2hlbGxiYXJEYXRhLlN1YnRpdGxlXG4gICAgICAgICAgICA/IGAke3RoaXMuc2hlbGxiYXJEYXRhPy5TdWJ0aXRsZX0gJHtcbiAgICAgICAgICAgICAgICAgIHR5cGVvZiB0aGlzLnNoZWxsYmFyRGF0YT8uY2FsY1N1YnRpdGxlID09PSAnc3RyaW5nJyA/IHRoaXMuc2hlbGxiYXJEYXRhLmNhbGNTdWJ0aXRsZSA6ICcnXG4gICAgICAgICAgICAgIH1gXG4gICAgICAgICAgICA6ICcnO1xuICAgIH1cbiAgICBnZXQgbG9nbygpOiB7IEZpbGVJZDogc3RyaW5nIH0ge1xuICAgICAgICByZXR1cm4gdGhpcy5zaGVsbGJhckRhdGE/LkxvZ287XG4gICAgfVxuICAgIGdldCBhY3Rpb25zKCk6IEFycmF5PE1ldGFvYmplY3REYXRhTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0dGluZ3M/LkhpZGVVc2VyTWVudSA/IFtdIDogdGhpcy5zaGVsbGJhckRhdGE/LkFjdGlvbkl0ZW1zPy5Nb0RhdGFMaXN0ID8/IFtdO1xuICAgIH1cbiAgICBnZXQgdXNlck1lbnUoKTogeyB0ZXh0OiBzdHJpbmc7IGNhbGxiYWNrOiAoKSA9PiB2b2lkIH1bXSB7XG4gICAgICAgIGNvbnN0IG1vRGF0YUxpc3QgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZSh0aGlzLnNoZWxsYmFyRGF0YSwgJ1VzZXJNZW51SXRlbXMuTW9EYXRhTGlzdCcpO1xuICAgICAgICBjb25zdCBpdGVtcyA9IG1vRGF0YUxpc3QgPyBbLi4ubW9EYXRhTGlzdF0gOiBbXTtcbiAgICAgICAgaWYgKCFpdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBpdGVtcy5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICAgICBjLnRleHQgPSB0aGlzLl9iYmJUcmFuc2xhdGVQaXBlLnRyYW5zZm9ybShjLnRleHQpO1xuICAgICAgICAgICAgYy5jYWxsYmFjayA9IG5ldyBGdW5jdGlvbihjLkNvZGUgKyB0aGlzLmJvZHlDbGljayk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIUJhcnNhQXBpLkxvZ2luRm9ybURhdGEuSXNBbm9ueW1vdXMgJiYgQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5Jc1VzZXJMb2dnZWRJbikge1xuICAgICAgICAgICAgaXRlbXMuc3BsaWNlKDAsIDAsIHsgSWQ6ICctMScsICRDYXB0aW9uOiAnJywgdGV4dDogQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5Vc2VyRGlzcGxheU5hbWUgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0dGluZ3M/LkhpZGVVc2VyTWVudSA/IFtdIDogKGl0ZW1zIGFzIGFueSk7XG4gICAgfVxuICAgIGdldCBwcm9kdWN0U3dpdGNoZXIoKTogUHJvZHVjdFN3aXRjaEl0ZW1bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNoZWxsYmFyRGF0YT8uUHJvZHVjdFN3aXRjaEl0ZW0/Lk1vRGF0YUxpc3QgPz8gKFtdIGFzIHVua25vd24gYXMgUHJvZHVjdFN3aXRjaEl0ZW1bXSk7XG4gICAgfVxuICAgIGdldCBwcm9kdWN0TWVudUl0ZW1zKCk6IFNoZWxsYmFyTWVudUl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5zaGVsbGJhckRhdGE/LlByb2R1Y3RNZW51SXRlbXM/Lk1vRGF0YUxpc3QgPz8gW107XG4gICAgICAgIGl0ZW1zLmZvckVhY2goKGMpID0+IChjLmNhbGxiYWNrID0gbmV3IEZ1bmN0aW9uKGMuQ29kZSArIHRoaXMuYm9keUNsaWNrKSkpO1xuICAgICAgICByZXR1cm4gaXRlbXMgYXMgdW5rbm93biBhcyBTaGVsbGJhck1lbnVJdGVtW107XG4gICAgfVxuICAgIGdldCBib2R5Q2xpY2soKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICc7JChcImJvZHlcIikuY2xpY2soKSc7XG4gICAgfVxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmN1bHR1cmVzID0gQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5DdWx0dXJlcztcbiAgICAgICAgdGhpcy5jc3NVcmwkID0gdGhpcy5fcG9ydGFsU2VydmljZS5jc3NVcmwkO1xuICAgICAgICB0aGlzLmNzc0N1c3RvbVVybCQgPSB0aGlzLl9wb3J0YWxTZXJ2aWNlLmNzc0N1c3RvbVVybCQ7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uc0NvdW50JCA9IHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2Uubm90aWZpY2F0aW9uQ291bnQkO1xuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLm5vdGlmaWNhdGlvbkNvdW50JC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKSk7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uTG9hZGluZyQgPSB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLm5vdGlmaWNhdGlvbkxvYWRpbmckO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMkID0gdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5ub3RpZmljYXRpb25zJC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgbWFwKChub3RpZmljYXRpb25zKSA9PiB0aGlzLl9tYXBOb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvbnMpKVxuICAgICAgICApO1xuICAgICAgICBCYXJzYUFwaS5Cdy5TZXRVc2VyUG9ydGFsU2V0dGluZ3MgPSAodXNlclBvcnRhbFNldHRpbmdzOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCA9PiB7XG4gICAgICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlLnNldFVzZXJQb3J0YWxTZXR0aW5ncyh1c2VyUG9ydGFsU2V0dGluZ3MpO1xuICAgICAgICB9O1xuICAgICAgICBCYXJzYUFwaS5Cdy5TZXRTaGVsbGJhclN1YnRpdGxlID0gKGNhbGNTdWJ0aXRsZTogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgICAgICAgICB0aGlzLnNoZWxsYmFyRGF0YS5jYWxjU3VidGl0bGUgPSBjYWxjU3VidGl0bGU7XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlLmRldmljZVNpemUkLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGV2aWNlU2l6ZSA9IGM7XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fYnJlYWRDcnVtYlNlcnZpY2UuYnJlYWRjcnVtYnMkLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGJyZWFkQ3J1bWJzKSA9PiB7XG4gICAgICAgICAgICBpZiAoYnJlYWRDcnVtYnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdE1lbnVDb250cm9sID0gYnJlYWRDcnVtYnNbYnJlYWRDcnVtYnMubGVuZ3RoIC0gMV0ubGFiZWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl90aWxlc1NlcnZpY2Uuc2hlbGxiYXIkLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKG1vKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNoZWxsYmFyRGF0YSA9IG1vIGFzIFNoZWxsYmFyU2V0dGluZztcbiAgICAgICAgICAgIC8vIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICBmb3JrSm9pbihbb2YodGhpcy5wcm9kdWN0TWVudUl0ZW1zKSwgb2YoW10pXSkgLy8gdG8gYXBwZW5kIHVzZXIgZGVmaW5lZFxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXG4gICAgICAgICAgICAgICAgICAgIG1hcCgoW3MxLCBzMl0pID0+IFsuLi5zMSwgLi4uczJdKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdE1lbnVJdGVtczEgPSBjO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuYWxsb3dBbm9ueW1vdXMpIHtcbiAgICAgICAgICAgIHRoaXMuX3RpbGVzU2VydmljZS5sb2FkU2hlbGxiYXIoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlLnVzZXJMb2dnZWRJbiQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgobG9nZ2VkSW4pID0+IHtcbiAgICAgICAgICAgIGlmICghbG9nZ2VkSW4pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl90aWxlc1NlcnZpY2UubG9hZFNoZWxsYmFyKCk7XG4gICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLmxvYWRVbnJlYWROb3RpZmljYXRpb25Db3VudCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkN1bHR1cmVDaGFuZ2UoY3VsdHVyZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jaGFuZ2VDdWx0dXJlKGN1bHR1cmUpO1xuICAgIH1cbiAgICBvblNob3dOb3RpZmljYXRpb24oZTogeyBtbzogTWV0YW9iamVjdERhdGFNb2RlbDsgbmFtYTogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc09wZW5Ob3RpZmljYXRvaW4gPSBmYWxzZTtcbiAgICAgICAgQmFyc2FBcGkuQncuRm9ybS5TaG93KHtcbiAgICAgICAgICAgIE1vOiBlLm1vLFxuICAgICAgICAgICAgTW9Db250ZXh0OiB7XG4gICAgICAgICAgICAgICAgVmlld05hbWU6IGUubmFtYVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgb25Ob3RpZmljYXRpb25JdGVtVmlld2VkKHZpZXdlZE1vOiBOb3RpZmljYXRpb25JdGVtKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZpZXdlZE5vdGlmaWNhdGlvbnMkLm5leHQodmlld2VkTW8pO1xuICAgIH1cblxuICAgIG9uUmVtb3ZlTm90aWZpY2F0aW9ucyhlOiB7IGl0ZW1zOiBNZXRhb2JqZWN0RGF0YU1vZGVsW107IHNpbGVudDogYm9vbGVhbiB9KTogdm9pZCB7XG4gICAgICAgIC8vIGNvbnN0IG1zZyA9XG4gICAgICAgIC8vICAgICBlLml0ZW1zLmxlbmd0aCA9PT0gMVxuICAgICAgICAvLyAgICAgICAgID8gQmFyc2FBcGkuQkJCLlF1ZXN0aW9uRGVsZXRlQ29uZmlybU1lc3NhZ2VcbiAgICAgICAgLy8gICAgICAgICA6IEJhcnNhQXBpLkJCQi5RdWVzdGlvbkRlbGV0ZUNvbmZpcm1NZXNzYWdlTXVsdGk7XG4gICAgICAgIC8vIGNvbnN0IHRpdGxlID0gQmFyc2FBcGkuQkJCLlF1ZXN0aW9uRGVsZXRlQ29uZmlybVRpdGxlO1xuICAgICAgICAvLyBpZiAoIWUuc2lsZW50KSB7XG4gICAgICAgIC8vICAgICBCYXJzYUFwaS5VbC5Nc2dCb3guQ29uZmlybVllc05vKHRydWUsIG1zZywgdGl0bGUsIChlcnJvcikgPT4ge1xuICAgICAgICAvLyAgICAgICAgIGlmICghZXJyb3IpIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5yZW1vdmVOb3RpZmljYXRpb24oZS5pdGVtcyk7XG4gICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAvLyAgICAgfSk7XG4gICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2UucmVtb3ZlTm90aWZpY2F0aW9uKGUuaXRlbXMpO1xuICAgICAgICAvLyB9XG4gICAgfVxuICAgIG9uT3Blbk5vdGlmaWNhdGlvbiA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5pc09wZW5Ob3RpZmljYXRvaW4gPSB0cnVlO1xuICAgICAgICB0aGlzLl9oYW5kbGVPcGVuTm90aWZpY2F0aW9uUGFuZWwoKTtcbiAgICB9O1xuICAgIG9uTm90aWZpY2F0aW9uQWN0aW9uKGU6IHsgaXRlbTogTm90aWZpY2F0aW9uSXRlbTsgYnRuOiBOb3RpZmljYXRpb25BY3Rpb24gfSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlLkV4ZWN1dGVOb3RpZmljYXRpb25BY3Rpb24oZS5pdGVtLlRhZywgZS5idG4uVGl0bGUpO1xuICAgIH1cbiAgICBvbkxhbmd1YWdlID0gKGUpOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgY3VsdHVyZSA9IGUuY3VycmVudFRhcmdldC50ZXh0Q29udGVudC50cmltKCk7XG4gICAgICAgIHRoaXMuX2NoYW5nZUN1bHR1cmUoY3VsdHVyZSk7XG4gICAgfTtcbiAgICBvbk5vdGlmaWNhdGlvbkxvYWRNb3JlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLmxvYWRNb3JlKCk7XG4gICAgfVxuICAgIG9uTm90aWZpY2F0aW9uV29ya2Zsb3dDaG9pY2VTdWNjZXNzKHJlc3VsdCk6IHZvaWQge31cbiAgICBvbk5vdGlmaWNhdGlvbldvcmtmbG93Q2hvaWNlRmFpbGVkKGVycik6IHZvaWQge31cblxuICAgIHByaXZhdGUgX2hhbmRsZU9wZW5Ob3RpZmljYXRpb25QYW5lbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubm90aWZjYXRpb25Mb2FkZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5vdGlmY2F0aW9uTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5sb2FkTm90aWZpY2F0aW9ucygpO1xuICAgIH1cbiAgICBwcml2YXRlIF9tYXBOb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvbnMpOiBOb3RpZmljYXRpb25JdGVtW10ge1xuICAgICAgICByZXR1cm4gbm90aWZpY2F0aW9ucy5tYXAoKG5vdGlmaWNhdGlvbikgPT4gKHtcbiAgICAgICAgICAgIC4uLm5vdGlmaWNhdGlvbixcbiAgICAgICAgICAgIGNvbnRlbnRTYWZlSHRtbDogbm90aWZpY2F0aW9uLkNvbnRlbnRcbiAgICAgICAgICAgICAgICA/IHRoaXMuX2RvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChub3RpZmljYXRpb24uQ29udGVudClcbiAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfY2hhbmdlQ3VsdHVyZShjdWx0dXJlOiBzdHJpbmcgLyogY3VsdHVyZSBzYW1wbGUgOkVuZ2xpc2ggKi8pOiB2b2lkIHtcbiAgICAgICAgQmFyc2FBcGkuQncuU2V0Q3VsdHVyZUJ5RGlzcGxheU5hbWUoY3VsdHVyZSk7XG4gICAgICAgIEJhcnNhQXBpLkJ3Lk5hdmlnYXRlVG8oJy8nKTtcbiAgICB9XG59XG4iLCI8bGluayAqbmdJZj1cImNzc1VybCQgfCBhc3luYyBhcyBjc3NVcmxcIiB0eXBlPVwidGV4dC9jc3NcIiByZWw9XCJzdHlsZXNoZWV0XCIgW2hyZWZdPVwiY3NzVXJsXCIgLz5cbjxsaW5rICpuZ0lmPVwiY3NzQ3VzdG9tVXJsJCB8IGFzeW5jIGFzIGNzc0N1c3RvbVVybFwiIHR5cGU9XCJ0ZXh0L2Nzc1wiIHJlbD1cInN0eWxlc2hlZXRcIiBbaHJlZl09XCJjc3NDdXN0b21VcmxcIiAvPlxuXG48ZmQtc2hlbGxiYXIgKm5nSWY9XCIodXNlckxvZ2dlZEluJCB8IGFzeW5jKSB8fCBhbGxvd0Fub255bW91c1wiIFtzaXplXT1cImRldmljZVNpemVcIiBbbmdDbGFzc109XCJkZXZpY2VTaXplXCI+XG4gICAgPGZkLXNoZWxsYmFyLWxvZ28gKm5nSWY9XCJsb2dvXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZEltYWdlXT1cIid1cmwoJyArIChsb2dvPy5GaWxlSWQgfCBwaWNGaWVsZFNyYzogJ0dldFBpY3R1cmVGcm9tRmlsZUluZm8nOm51bGwpICsgJyknXCJcbiAgICAgICAgICAgIGhyZWY9XCIvXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtc2hlbGxiYXJfX2xvZ28gZmQtc2hlbGxiYXJfX2xvZ28tLWltYWdlLXJlcGxhY2VkXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJCYXJzYSBOb3ZpbiBSYXlcIlxuICAgICAgICA+PC9hPlxuICAgIDwvZmQtc2hlbGxiYXItbG9nbz5cblxuICAgIDxmZC1wcm9kdWN0LW1lbnVcbiAgICAgICAgKm5nSWY9XCIhc2V0dGluZ3M/LkhpZGVQcm9kdWN0TWVudSAmJiBwcm9kdWN0TWVudUl0ZW1zMSAmJiBwcm9kdWN0TWVudUl0ZW1zMS5sZW5ndGggPiAwXCJcbiAgICAgICAgW2NvbnRyb2xdPVwicHJvZHVjdE1lbnVDb250cm9sXCJcbiAgICAgICAgW2Nsb3NlUG9wb3Zlck9uU2VsZWN0XT1cInRydWVcIlxuICAgICAgICBbaXRlbXNdPVwicHJvZHVjdE1lbnVJdGVtczFcIlxuICAgID5cbiAgICA8L2ZkLXByb2R1Y3QtbWVudT5cblxuICAgIDxmZC1zaGVsbGJhci1zdWJ0aXRsZT4ge3sgc3VidGl0bGUgfCBiYmJUcmFuc2xhdGUgfX17eyBzaG93VmVyc2lvbiA/IGFwcFZlcnNpb24gOiAnJyB9fSA8L2ZkLXNoZWxsYmFyLXN1YnRpdGxlPlxuICAgIDxmZC1zaGVsbGJhci1hY3Rpb25zXG4gICAgICAgICpuZ0lmPVwidXNlciAmJiAodXNlck1lbnU/Lmxlbmd0aCB8fCAhc2V0dGluZ3M/LkhpZGVMYW5ndWFnZSlcIlxuICAgICAgICBbdXNlcl09XCJ1c2VyXCJcbiAgICAgICAgW3VzZXJNZW51XT1cInVzZXJNZW51XCJcbiAgICAgICAgI2xhbmdSZWZcbiAgICA+XG4gICAgICAgIDxmZC1zaGVsbGJhci1hY3Rpb25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYWN0aW9uc1wiXG4gICAgICAgICAgICBbZ2x5cGhdPVwiYWN0aW9uLkljb25cIlxuICAgICAgICAgICAgW2NhbGxiYWNrXT1cImFjdGlvbi5DYWxsYmFja1wiXG4gICAgICAgICAgICBbbGFiZWxdPVwiYWN0aW9uLkxhYmVsXCJcbiAgICAgICAgPlxuICAgICAgICA8L2ZkLXNoZWxsYmFyLWFjdGlvbj5cbiAgICAgICAgPGZkLXNoZWxsYmFyLWFjdGlvblxuICAgICAgICAgICAgKm5nSWY9XCJkZXZpY2VTaXplID09PSAncydcIlxuICAgICAgICAgICAgW2dseXBoXT1cIidiZWxsJ1wiXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ05vdGlmaWNhdGlvbnMnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFtub3RpZmljYXRpb25Db3VudF09XCIobm90aWZpY2F0aW9uc0NvdW50JCB8IGFzeW5jKT8udW5yZWFkID8/IDBcIlxuICAgICAgICAgICAgW25vdGlmaWNhdGlvbkxhYmVsXT1cIidOb3RpZmljYXRpb25zJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbY2FsbGJhY2tdPVwib25CZWxsTm90aWZpY2F0aW9uXCJcbiAgICAgICAgPlxuICAgICAgICA8L2ZkLXNoZWxsYmFyLWFjdGlvbj5cbiAgICAgICAgPGZkLXBvcG92ZXJcbiAgICAgICAgICAgICpuZ0lmPVwiIXNldHRpbmdzPy5IaWRlTm90aWZpY2F0aW9ucyAmJiAobm90aWZpY2F0aW9uc0NvdW50JCB8IGFzeW5jKSBhcyBub3RpZmljYXRpb25Db3VudFwiXG4gICAgICAgICAgICBbKGlzT3BlbildPVwiaXNPcGVuTm90aWZpY2F0b2luXCJcbiAgICAgICAgICAgIFt0cmlnZ2Vyc109XCJbXVwiXG4gICAgICAgICAgICBbZm9jdXNUcmFwcGVkXT1cInRydWVcIlxuICAgICAgICAgICAgW25vQXJyb3ddPVwidHJ1ZVwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgICAgdGl0bGU9XCJOb3RpZmljYXRpb24gUG9wb3ZlclwiXG4gICAgICAgICAgICBbZm9jdXNBdXRvQ2FwdHVyZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFttb2JpbGVdPVwiZGV2aWNlU2l6ZSA9PT0gJ3MnXCJcbiAgICAgICAgICAgICNwb3BvdmVyQ29tcG9uZW50XG4gICAgICAgID5cbiAgICAgICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICAgICAgPGZkLXNoZWxsYmFyLWFjdGlvblxuICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiJ2JlbGwnXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidOb3RpZmljYXRpb24nXCJcbiAgICAgICAgICAgICAgICAgICAgW25vdGlmaWNhdGlvbkNvdW50XT1cIm5vdGlmaWNhdGlvbkNvdW50LnVucmVhZFwiXG4gICAgICAgICAgICAgICAgICAgIFtub3RpZmljYXRpb25MYWJlbF09XCInTm90aWZpY2F0aW9uIExhYmVsJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtjYWxsYmFja109XCJvbk9wZW5Ob3RpZmljYXRpb25cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2ZkLXNoZWxsYmFyLWFjdGlvbj5cbiAgICAgICAgICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICAgICAgPGZkLXBvcG92ZXItYm9keSBzdHlsZT1cIm1pbi13aWR0aDogMzIwcHg7IG92ZXJmbG93LXg6IGF1dG87IGJveC1zaGFkb3c6IHZhcigtLXNhcENvbnRlbnRfU2hhZG93MClcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibm90aWZpY2F0aW9uR3JvdXBUcGw7IGNvbnRleHQ6IHsgbm90aWZpY2F0aW9uQ291bnQ6IG5vdGlmaWNhdGlvbkNvdW50IH1cIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZmQtcG9wb3Zlci1ib2R5PlxuICAgICAgICA8L2ZkLXBvcG92ZXI+XG5cbiAgICAgICAgPGZkLXNoZWxsYmFyLWFjdGlvblxuICAgICAgICAgICAgKm5nSWY9XCIhc2V0dGluZ3M/LkhpZGVMYW5ndWFnZSAmJiBkZXZpY2VTaXplICE9PSAncydcIlxuICAgICAgICAgICAgW2dseXBoXT1cIid3b3JsZCdcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIidsYW5ndWFnZSdcIlxuICAgICAgICAgICAgW2ZkTWVudVRyaWdnZXJdPVwibWVudVwiXG4gICAgICAgICAgICAoY2FsbGJhY2spPVwiKG9uTGFuZ3VhZ2UpXCJcbiAgICAgICAgPlxuICAgICAgICA8L2ZkLXNoZWxsYmFyLWFjdGlvbj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzZXR0aW5ncz8uSGlkZUxhbmd1YWdlICYmIGRldmljZVNpemUgPT09ICdzJ1wiPlxuICAgICAgICAgICAgPGZkLXNoZWxsYmFyLWFjdGlvblxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjdWx0dXJlIG9mIGN1bHR1cmVzIHwga2V5dmFsdWVcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjdWx0dXJlLnZhbHVlXCJcbiAgICAgICAgICAgICAgICBbY2FsbGJhY2tdPVwib25MYW5ndWFnZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjdWx0dXJlLWFiYnJpdmF0aW9uXCJcbiAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiY3VsdHVyZS5rZXlcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidmbGFncydcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9mZC1zaGVsbGJhci1hY3Rpb24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxmZC1wcm9kdWN0LXN3aXRjaCAqbmdJZj1cInByb2R1Y3RTd2l0Y2hlci5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICA8ZmQtcHJvZHVjdC1zd2l0Y2gtYm9keSBbcHJvZHVjdHNdPVwicHJvZHVjdFN3aXRjaGVyXCIgW2ZvcmNlTGlzdE1vZGVdPVwiZGV2aWNlU2l6ZSA9PT0gJ3MnXCI+XG4gICAgICAgICAgICA8L2ZkLXByb2R1Y3Qtc3dpdGNoLWJvZHk+XG4gICAgICAgIDwvZmQtcHJvZHVjdC1zd2l0Y2g+XG4gICAgICAgIDwhLS0gPGZkLWNvbWJvYm94XG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIlxuICAgICAgICAgICAgW2Ryb3Bkb3duVmFsdWVzXT1cInNlYXJjaFRlcm1zXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIoJ0VudGVyU2VhcmNoQ3JpdGVyaWEnIHwgYmJiVHJhbnNsYXRlKSArICcgLi4uJ1wiXG4gICAgICAgICAgICBbY29tcGFjdF09XCJ0cnVlXCJcbiAgICAgICAgPlxuICAgICAgICA8L2ZkLWNvbWJvYm94PiAtLT5cbiAgICA8L2ZkLXNoZWxsYmFyLWFjdGlvbnM+XG48L2ZkLXNoZWxsYmFyPlxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICAgIDxic3UtbWFzaz48L2JzdS1tYXNrPlxuPC9uZy10ZW1wbGF0ZT5cblxuPGZkLW1lbnUgI21lbnU+XG4gICAgPHVsIGZkLWxpc3Q+XG4gICAgICAgIDxsaSBmZC1saXN0LWl0ZW0gKm5nRm9yPVwibGV0IGN1bHR1cmUgb2YgY3VsdHVyZXMgfCBrZXl2YWx1ZVwiPlxuICAgICAgICAgICAgPGEgZmQtbGlzdC1saW5rIChjbGljayk9XCJvbkN1bHR1cmVDaGFuZ2UoY3VsdHVyZS52YWx1ZSlcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHdpZHRoPVwiMTRweFwiIGhlaWdodD1cIjEycHhcIiBbc3JjXT1cIicvYXNzZXRzL2ZsYWdzLycgKyBjdWx0dXJlLmtleSArICcucG5nJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3VsdHVyZS1hYmJyaXZhdGlvblwiIFtuZ0NsYXNzXT1cImN1bHR1cmUua2V5XCI+IHt7IGN1bHR1cmUua2V5IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9saT5cbiAgICA8L3VsPlxuPC9mZC1tZW51PlxuPG5nLXRlbXBsYXRlICNub3RpZmljYXRpb25Hcm91cFRwbCBsZXQtbm90aWZpY2F0aW9uQ291bnQ9XCJub3RpZmljYXRpb25Db3VudFwiPlxuICAgIDxkaXZcbiAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7IGhlaWdodDogMTAwcHhcIlxuICAgICAgICAqbmdJZj1cIiFub3RpZmNhdGlvbkxvYWRlZCAmJiAobm90aWZpY2F0aW9uTG9hZGluZyQgfCBhc3luYykgPT09IHRydWVcIlxuICAgID5cbiAgICAgICAgPGJzdS1tYXNrIHNpemU9XCJzXCI+PC9ic3UtbWFzaz5cbiAgICA8L2Rpdj5cbiAgICA8YnQtbm90aWZpY2F0aW9uLWdyb3VwXG4gICAgICAgIFtub3RpZmljYXRpb25zXT1cIm5vdGlmaWNhdGlvbnMkIHwgYXN5bmNcIlxuICAgICAgICBbbm90aWZpY2F0aW9uQ291bnRdPVwibm90aWZpY2F0aW9uQ291bnRcIlxuICAgICAgICBbbG9hZGluZ109XCIobm90aWZpY2F0aW9uTG9hZGluZyQgfCBhc3luYykgPT09IHRydWVcIlxuICAgICAgICAodmlld2VkKT1cIm9uTm90aWZpY2F0aW9uSXRlbVZpZXdlZCgkZXZlbnQpXCJcbiAgICAgICAgKHJlbW92ZSk9XCJvblJlbW92ZU5vdGlmaWNhdGlvbnMoJGV2ZW50KVwiXG4gICAgICAgIChzaG93KT1cInBvcG92ZXJDb21wb25lbnQuY2xvc2UoKTsgb25TaG93Tm90aWZpY2F0aW9uKCRldmVudClcIlxuICAgICAgICAoYWN0aW9uQ2xpY2spPVwicG9wb3ZlckNvbXBvbmVudC5jbG9zZSgpOyBvbk5vdGlmaWNhdGlvbkFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgKGxvYWRNb3JlKT1cIm9uTm90aWZpY2F0aW9uTG9hZE1vcmUoKVwiXG4gICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgID48L2J0LW5vdGlmaWNhdGlvbi1ncm91cD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBsZXQtZGlhbG9nIGxldC1kaWFsb2dDb25maWc9XCJkaWFsb2dDb25maWdcIiAjbm90aWZpY2F0aW9uc0RpYWxvZz5cbiAgICA8ZmQtZGlhbG9nIFtkaWFsb2dDb25maWddPVwiZGlhbG9nQ29uZmlnXCIgW2RpYWxvZ1JlZl09XCJkaWFsb2dcIj5cbiAgICAgICAgPGZkLWRpYWxvZy1oZWFkZXI+XG4gICAgICAgICAgICA8aDEgaWQ9XCJmZC1kaWFsb2ctaGVhZGVyLTEwXCIgZmQtdGl0bGU+e3sgJ05vdGlmaWNhdGlvbicgfCBiYmJUcmFuc2xhdGUgfX08L2gxPlxuICAgICAgICAgICAgPGJ1dHRvbiBmZC1kaWFsb2ctY2xvc2UtYnV0dG9uIChjbGljayk9XCJkaWFsb2cuZGlzbWlzcygpXCI+PC9idXR0b24+XG4gICAgICAgIDwvZmQtZGlhbG9nLWhlYWRlcj5cbiAgICAgICAgPGZkLWRpYWxvZy1ib2R5IGNsYXNzPVwibW9iaWxlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub3RpZmljYXRpb25Hcm91cFRwbDsgY29udGV4dDogeyBub3RpZmljYXRpb25Db3VudDogbm90aWZpY2F0aW9uc0NvdW50JCB8IGFzeW5jIH1cIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2ZkLWRpYWxvZy1ib2R5PlxuICAgIDwvZmQtZGlhbG9nPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGxiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtdGlsZXMvc3JjL2xpYi9zaGVsbGJhci9zaGVsbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3NoZWxsYmFyL3NoZWxsYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFDSCxpQkFBaUIsRUFNcEIsTUFBTSx1QkFBdUIsQ0FBQztBQUcvQixPQUFPLEVBQ0gsYUFBYSxFQUNiLFFBQVEsRUFNUixXQUFXLEVBS2QsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQW9COUIsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGFBQWE7SUEwQ2hELFlBQ1ksY0FBNkIsRUFDN0Isa0JBQXFDLEVBQ3JDLGFBQTJCLEVBQzNCLElBQXVCLEVBQ3ZCLGlCQUFtQyxFQUNuQyxhQUEyQixFQUMzQixvQkFBeUMsRUFDekMsY0FBNkIsRUFDWCxTQUFtQixFQUNqQixVQUFrQjtRQUU5QyxLQUFLLEVBQUUsQ0FBQztRQVhBLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsa0JBQWEsR0FBYixhQUFhLENB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ZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgSW5qZWN0LFxuICAgIE9uSW5pdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgQ29tYm9ib3hDb21wb25lbnQsXG4gICAgRGlhbG9nU2VydmljZSxcbiAgICBQb3BvdmVyQ29tcG9uZW50LFxuICAgIFByb2R1Y3RTd2l0Y2hJdGVtLFxuICAgIFNoZWxsYmFyTWVudUl0ZW0sXG4gICAgU2hlbGxiYXJVc2VyXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHtcbiAgICBCYXNlQ29tcG9uZW50LFxuICAgIEJhcnNhQXBpLFxuICAgIE1ldGFvYmplY3REYXRhTW9kZWwsXG4gICAgRmlsZVBpY3R1cmVJbmZvTW9kZWwsXG4gICAgTW9Gb3JSZXBvcnRNb2RlbCxcbiAgICBQb3J0YWxTZXJ2aWNlLFxuICAgIEJyZWFkY3J1bWJTZXJ2aWNlLFxuICAgIEFQUF9WRVJTSU9OLFxuICAgIEJiYlRyYW5zbGF0ZVBpcGUsXG4gICAgTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBOb3RpZmljYXRpb25JdGVtLFxuICAgIE5vdGlmaWNhdGlvbkFjdGlvblxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5cbmltcG9ydCB7IFRpbGVzU2VydmljZSB9IGZyb20gJy4uL3RpbGVzLnNlcnZpY2UnO1xuXG5pbnRlcmZhY2UgU2hlbGxiYXJTZXR0aW5nIGV4dGVuZHMgTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgc3VidGl0bGU6IHN0cmluZztcbiAgICBjYWxjU3VidGl0bGU6IHN0cmluZztcbiAgICBsb2dvOiBGaWxlUGljdHVyZUluZm9Nb2RlbDtcbiAgICBQcm9kdWN0U3dpdGNoSXRlbXM6IE1vRm9yUmVwb3J0TW9kZWw7XG4gICAgUHJvZHVjdE1lbnVJdGVtczogTW9Gb3JSZXBvcnRNb2RlbDtcbiAgICBVc2VyTWVudUl0ZW1zOiBNb0ZvclJlcG9ydE1vZGVsO1xuICAgIEFjdGlvbkl0ZW1zOiBNb0ZvclJlcG9ydE1vZGVsO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2J0LXNoZWxsYmFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2hlbGxiYXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NoZWxsYmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2hlbGxiYXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAVmlld0NoaWxkKENvbWJvYm94Q29tcG9uZW50KSBjb21ib2JveENvbXBvbmVudDogQ29tYm9ib3hDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgncG9wb3ZlckNvbXBvbmVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwb3BvdmVyQ29tcG9uZW50OiBQb3BvdmVyQ29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ25vdGlmaWNhdGlvbnNEaWFsb2cnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVGVtcGxhdGVSZWYgfSkgX25vdGlmaWNhdGlvbnNEaWFsb2c6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgc2hlbGxiYXJEYXRhOiBTaGVsbGJhclNldHRpbmc7XG4gICAgc2V0dGluZ3M6IE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgaXNPcGVuTm90aWZpY2F0b2luID0gZmFsc2U7XG4gICAgZGV2aWNlU2l6ZTogJ3MnIHwgJ20nIHwgJ2wnIHwgJ3hsJyA9ICd4bCc7XG4gICAgcHJvZHVjdE1lbnVDb250cm9sOiBzdHJpbmc7XG4gICAgdXNlcjogU2hlbGxiYXJVc2VyID0ge1xuICAgICAgICBpbml0aWFsczogJ1dXJyxcbiAgICAgICAgY29sb3JBY2NlbnQ6IDFcbiAgICB9O1xuICAgIHNlYXJjaFRlcm1zID0gWyfZhdix2K7YtduMJywgJ9mF2KfZhdmI2LHbjNiqJywgJ9iq24zaqdiqJywgJ9m+2LHZiNqY2YcnXTtcbiAgICBzZWFyY2hUZXJtOiBzdHJpbmc7XG4gICAgYWN0aW9ucyQ6IE9ic2VydmFibGU8U2hlbGxiYXJNZW51SXRlbVtdPjtcbiAgICBwcm9kdWN0TWVudUl0ZW1zMTogU2hlbGxiYXJNZW51SXRlbVtdO1xuICAgIHVzZXJMb2dnZWRJbiQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgY3NzVXJsJDogYW55O1xuICAgIGNzc0N1c3RvbVVybCQ6IGFueTtcbiAgICBhbGxvd0Fub255bW91cyA9IHRydWU7XG4gICAgc2hvd1ZlcnNpb24gPSBmYWxzZTtcbiAgICBjdWx0dXJlczogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBub3RpZmljYXRpb25zQ291bnQkOiBPYnNlcnZhYmxlPHsgdW5yZWFkOiBudW1iZXI7IGFsbDogbnVtYmVyIH0+O1xuICAgIG5vdGlmaWNhdGlvbnMkOiBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbkl0ZW1bXT47XG4gICAgbm90aWZpY2F0aW9uTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgbm90aWZjYXRpb25Mb2FkZWQgPSBmYWxzZTtcbiAgICBfdmlld2VkTm90aWZpY2F0aW9ucyQgPSBuZXcgU3ViamVjdDxOb3RpZmljYXRpb25JdGVtPigpO1xuICAgIG9uQmVsbE5vdGlmaWNhdGlvbiA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5fZG9jdW1lbnQ/LmJvZHkgJiYgdGhpcy5fZG9jdW1lbnQuYm9keS5jbGljaygpO1xuICAgICAgICB0aGlzLl9kaWFsb2dTZXJ2aWNlXG4gICAgICAgICAgICAub3Blbih0aGlzLl9ub3RpZmljYXRpb25zRGlhbG9nLCB7XG4gICAgICAgICAgICAgICAgbW9iaWxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGZ1bGxTY3JlZW46IHRydWUsXG4gICAgICAgICAgICAgICAgdmVydGljYWxQYWRkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjbG9zZU9uTmF2aWdhdGlvbjogdHJ1ZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZnRlckxvYWRlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZU9wZW5Ob3RpZmljYXRpb25QYW5lbCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfTtcbiAgICBfdmlld2VkTm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uSXRlbVtdID0gW107XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX3BvcnRhbFNlcnZpY2U6IFBvcnRhbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2JyZWFkQ3J1bWJTZXJ2aWNlOiBCcmVhZGNydW1iU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfdGlsZXNTZXJ2aWNlOiBUaWxlc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgX2JiYlRyYW5zbGF0ZVBpcGU6IEJiYlRyYW5zbGF0ZVBpcGUsXG4gICAgICAgIHByaXZhdGUgX2RvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgICAgICBwcml2YXRlIF9ub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2N1bWVudDogRG9jdW1lbnQsXG4gICAgICAgIEBJbmplY3QoQVBQX1ZFUlNJT04pIHB1YmxpYyBhcHBWZXJzaW9uOiBzdHJpbmdcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy51c2VyTG9nZ2VkSW4kID0gdGhpcy5fcG9ydGFsU2VydmljZS51c2VyTG9nZ2VkSW4kO1xuICAgICAgICB0aGlzLnNob3dWZXJzaW9uID0gIUJhcnNhQXBpLkxvZ2luRm9ybURhdGEuSXNTZXJ2aWNlRGVzaztcbiAgICAgICAgdGhpcy5fdmlld2VkTm90aWZpY2F0aW9ucyRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICB0YXAoKGl0ZW0pID0+IHRoaXMuX3ZpZXdlZE5vdGlmaWNhdGlvbnMucHVzaChpdGVtKSksXG4gICAgICAgICAgICAgICAgbWFwKChpdGVtKSA9PiB0aGlzLl92aWV3ZWROb3RpZmljYXRpb25zKSxcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMjAwMCksXG4gICAgICAgICAgICAgICAgbWFwKChpdGVtcykgPT4gaXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLlRhZykpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh0YWdzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmlld2VkTm90aWZpY2F0aW9ucyA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2Uuc2V0Tm90aWZpY2F0aW9uVmlld2VkKHRhZ3MpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldCBzdWJ0aXRsZSgpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXRoaXMuc2hlbGxiYXJEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGV2aWNlU2l6ZSA9PT0gJ3MnICYmIHRoaXMuc2hlbGxiYXJEYXRhLk1vYmlsZVN1YnRpdGxlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zaGVsbGJhckRhdGEuTW9iaWxlU3VidGl0bGVcbiAgICAgICAgICAgICAgICA/IGAke3RoaXMuc2hlbGxiYXJEYXRhLk1vYmlsZVN1YnRpdGxlfSAke1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiB0aGlzLnNoZWxsYmFyRGF0YT8uY2FsY1N1YnRpdGxlID09PSAnc3RyaW5nJyA/IHRoaXMuc2hlbGxiYXJEYXRhLmNhbGNTdWJ0aXRsZSA6ICcnXG4gICAgICAgICAgICAgICAgICB9YFxuICAgICAgICAgICAgICAgIDogJyc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc2hlbGxiYXJEYXRhLlN1YnRpdGxlXG4gICAgICAgICAgICA/IGAke3RoaXMuc2hlbGxiYXJEYXRhPy5TdWJ0aXRsZX0gJHtcbiAgICAgICAgICAgICAgICAgIHR5cGVvZiB0aGlzLnNoZWxsYmFyRGF0YT8uY2FsY1N1YnRpdGxlID09PSAnc3RyaW5nJyA/IHRoaXMuc2hlbGxiYXJEYXRhLmNhbGNTdWJ0aXRsZSA6ICcnXG4gICAgICAgICAgICAgIH1gXG4gICAgICAgICAgICA6ICcnO1xuICAgIH1cbiAgICBnZXQgbG9nbygpOiB7IEZpbGVJZDogc3RyaW5nIH0ge1xuICAgICAgICByZXR1cm4gdGhpcy5zaGVsbGJhckRhdGE/LkxvZ287XG4gICAgfVxuICAgIGdldCBhY3Rpb25zKCk6IEFycmF5PE1ldGFvYmplY3REYXRhTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0dGluZ3M/LkhpZGVVc2VyTWVudSA/IFtdIDogdGhpcy5zaGVsbGJhckRhdGE/LkFjdGlvbkl0ZW1zPy5Nb0RhdGFMaXN0ID8/IFtdO1xuICAgIH1cbiAgICBnZXQgdXNlck1lbnUoKTogeyB0ZXh0OiBzdHJpbmc7IGNhbGxiYWNrOiAoKSA9PiB2b2lkIH1bXSB7XG4gICAgICAgIGNvbnN0IG1vRGF0YUxpc3QgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZSh0aGlzLnNoZWxsYmFyRGF0YSwgJ1VzZXJNZW51SXRlbXMuTW9EYXRhTGlzdCcpO1xuICAgICAgICBjb25zdCBpdGVtcyA9IG1vRGF0YUxpc3QgPyBbLi4ubW9EYXRhTGlzdF0gOiBbXTtcbiAgICAgICAgaWYgKCFpdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBpdGVtcy5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICAgICBjLnRleHQgPSB0aGlzLl9iYmJUcmFuc2xhdGVQaXBlLnRyYW5zZm9ybShjLnRleHQpO1xuICAgICAgICAgICAgYy5jYWxsYmFjayA9IG5ldyBGdW5jdGlvbihjLkNvZGUgKyB0aGlzLmJvZHlDbGljayk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIUJhcnNhQXBpLkxvZ2luRm9ybURhdGEuSXNBbm9ueW1vdXMgJiYgQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5Jc1VzZXJMb2dnZWRJbikge1xuICAgICAgICAgICAgaXRlbXMuc3BsaWNlKDAsIDAsIHsgSWQ6ICctMScsICRDYXB0aW9uOiAnJywgdGV4dDogQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5Vc2VyRGlzcGxheU5hbWUgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0dGluZ3M/LkhpZGVVc2VyTWVudSA/IFtdIDogKGl0ZW1zIGFzIGFueSk7XG4gICAgfVxuICAgIGdldCBwcm9kdWN0U3dpdGNoZXIoKTogUHJvZHVjdFN3aXRjaEl0ZW1bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNoZWxsYmFyRGF0YT8uUHJvZHVjdFN3aXRjaEl0ZW0/Lk1vRGF0YUxpc3QgPz8gKFtdIGFzIHVua25vd24gYXMgUHJvZHVjdFN3aXRjaEl0ZW1bXSk7XG4gICAgfVxuICAgIGdldCBwcm9kdWN0TWVudUl0ZW1zKCk6IFNoZWxsYmFyTWVudUl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5zaGVsbGJhckRhdGE/LlByb2R1Y3RNZW51SXRlbXM/Lk1vRGF0YUxpc3QgPz8gW107XG4gICAgICAgIGl0ZW1zLmZvckVhY2goKGMpID0+IChjLmNhbGxiYWNrID0gbmV3IEZ1bmN0aW9uKGMuQ29kZSArIHRoaXMuYm9keUNsaWNrKSkpO1xuICAgICAgICByZXR1cm4gaXRlbXMgYXMgdW5rbm93biBhcyBTaGVsbGJhck1lbnVJdGVtW107XG4gICAgfVxuICAgIGdldCBib2R5Q2xpY2soKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICc7JChcImJvZHlcIikuY2xpY2soKSc7XG4gICAgfVxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmN1bHR1cmVzID0gQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5DdWx0dXJlcztcbiAgICAgICAgdGhpcy5jc3NVcmwkID0gdGhpcy5fcG9ydGFsU2VydmljZS5jc3NVcmwkO1xuICAgICAgICB0aGlzLmNzc0N1c3RvbVVybCQgPSB0aGlzLl9wb3J0YWxTZXJ2aWNlLmNzc0N1c3RvbVVybCQ7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uc0NvdW50JCA9IHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2Uubm90aWZpY2F0aW9uQ291bnQkO1xuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLm5vdGlmaWNhdGlvbkNvdW50JC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKSk7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uTG9hZGluZyQgPSB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLm5vdGlmaWNhdGlvbkxvYWRpbmckO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMkID0gdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5ub3RpZmljYXRpb25zJC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgbWFwKChub3RpZmljYXRpb25zKSA9PiB0aGlzLl9tYXBOb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvbnMpKVxuICAgICAgICApO1xuICAgICAgICBCYXJzYUFwaS5Cdy5TZXRVc2VyUG9ydGFsU2V0dGluZ3MgPSAodXNlclBvcnRhbFNldHRpbmdzOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCA9PiB7XG4gICAgICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlLnNldFVzZXJQb3J0YWxTZXR0aW5ncyh1c2VyUG9ydGFsU2V0dGluZ3MpO1xuICAgICAgICB9O1xuICAgICAgICBCYXJzYUFwaS5Cdy5TZXRTaGVsbGJhclN1YnRpdGxlID0gKGNhbGNTdWJ0aXRsZTogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgICAgICAgICB0aGlzLnNoZWxsYmFyRGF0YS5jYWxjU3VidGl0bGUgPSBjYWxjU3VidGl0bGU7XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlLmRldmljZVNpemUkLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGV2aWNlU2l6ZSA9IGM7XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fYnJlYWRDcnVtYlNlcnZpY2UuYnJlYWRjcnVtYnMkLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGJyZWFkQ3J1bWJzKSA9PiB7XG4gICAgICAgICAgICBpZiAoYnJlYWRDcnVtYnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdE1lbnVDb250cm9sID0gYnJlYWRDcnVtYnNbYnJlYWRDcnVtYnMubGVuZ3RoIC0gMV0ubGFiZWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl90aWxlc1NlcnZpY2Uuc2hlbGxiYXIkLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKG1vKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNoZWxsYmFyRGF0YSA9IG1vIGFzIFNoZWxsYmFyU2V0dGluZztcbiAgICAgICAgICAgIC8vIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICBmb3JrSm9pbihbb2YodGhpcy5wcm9kdWN0TWVudUl0ZW1zKSwgb2YoW10pXSkgLy8gdG8gYXBwZW5kIHVzZXIgZGVmaW5lZFxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXG4gICAgICAgICAgICAgICAgICAgIG1hcCgoW3MxLCBzMl0pID0+IFsuLi5zMSwgLi4uczJdKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdE1lbnVJdGVtczEgPSBjO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuYWxsb3dBbm9ueW1vdXMpIHtcbiAgICAgICAgICAgIHRoaXMuX3RpbGVzU2VydmljZS5sb2FkU2hlbGxiYXIoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlLnVzZXJMb2dnZWRJbiQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgobG9nZ2VkSW4pID0+IHtcbiAgICAgICAgICAgIGlmICghbG9nZ2VkSW4pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl90aWxlc1NlcnZpY2UubG9hZFNoZWxsYmFyKCk7XG4gICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLmxvYWRVbnJlYWROb3RpZmljYXRpb25Db3VudCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkN1bHR1cmVDaGFuZ2UoY3VsdHVyZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jaGFuZ2VDdWx0dXJlKGN1bHR1cmUpO1xuICAgIH1cbiAgICBvblNob3dOb3RpZmljYXRpb24oZTogeyBtbzogTWV0YW9iamVjdERhdGFNb2RlbDsgbmFtYTogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc09wZW5Ob3RpZmljYXRvaW4gPSBmYWxzZTtcbiAgICAgICAgQmFyc2FBcGkuQncuRm9ybS5TaG93KHtcbiAgICAgICAgICAgIE1vOiBlLm1vLFxuICAgICAgICAgICAgTW9Db250ZXh0OiB7XG4gICAgICAgICAgICAgICAgVmlld05hbWU6IGUubmFtYVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgb25Ob3RpZmljYXRpb25JdGVtVmlld2VkKHZpZXdlZE1vOiBOb3RpZmljYXRpb25JdGVtKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZpZXdlZE5vdGlmaWNhdGlvbnMkLm5leHQodmlld2VkTW8pO1xuICAgIH1cblxuICAgIG9uUmVtb3ZlTm90aWZpY2F0aW9ucyhlOiB7IGl0ZW1zOiBNZXRhb2JqZWN0RGF0YU1vZGVsW107IHNpbGVudDogYm9vbGVhbiB9KTogdm9pZCB7XG4gICAgICAgIC8vIGNvbnN0IG1zZyA9XG4gICAgICAgIC8vICAgICBlLml0ZW1zLmxlbmd0aCA9PT0gMVxuICAgICAgICAvLyAgICAgICAgID8gQmFyc2FBcGkuQkJCLlF1ZXN0aW9uRGVsZXRlQ29uZmlybU1lc3NhZ2VcbiAgICAgICAgLy8gICAgICAgICA6IEJhcnNhQXBpLkJCQi5RdWVzdGlvbkRlbGV0ZUNvbmZpcm1NZXNzYWdlTXVsdGk7XG4gICAgICAgIC8vIGNvbnN0IHRpdGxlID0gQmFyc2FBcGkuQkJCLlF1ZXN0aW9uRGVsZXRlQ29uZmlybVRpdGxlO1xuICAgICAgICAvLyBpZiAoIWUuc2lsZW50KSB7XG4gICAgICAgIC8vICAgICBCYXJzYUFwaS5VbC5Nc2dCb3guQ29uZmlybVllc05vKHRydWUsIG1zZywgdGl0bGUsIChlcnJvcikgPT4ge1xuICAgICAgICAvLyAgICAgICAgIGlmICghZXJyb3IpIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5yZW1vdmVOb3RpZmljYXRpb24oZS5pdGVtcyk7XG4gICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAvLyAgICAgfSk7XG4gICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2UucmVtb3ZlTm90aWZpY2F0aW9uKGUuaXRlbXMpO1xuICAgICAgICAvLyB9XG4gICAgfVxuICAgIG9uT3Blbk5vdGlmaWNhdGlvbiA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5pc09wZW5Ob3RpZmljYXRvaW4gPSB0cnVlO1xuICAgICAgICB0aGlzLl9oYW5kbGVPcGVuTm90aWZpY2F0aW9uUGFuZWwoKTtcbiAgICB9O1xuICAgIG9uTm90aWZpY2F0aW9uQWN0aW9uKGU6IHsgaXRlbTogTm90aWZpY2F0aW9uSXRlbTsgYnRuOiBOb3RpZmljYXRpb25BY3Rpb24gfSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlLkV4ZWN1dGVOb3RpZmljYXRpb25BY3Rpb24oZS5pdGVtLlRhZywgZS5idG4uVGl0bGUpO1xuICAgIH1cbiAgICBvbkxhbmd1YWdlID0gKGUpOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgY3VsdHVyZSA9IGUuY3VycmVudFRhcmdldC50ZXh0Q29udGVudC50cmltKCk7XG4gICAgICAgIHRoaXMuX2NoYW5nZUN1bHR1cmUoY3VsdHVyZSk7XG4gICAgfTtcbiAgICBvbk5vdGlmaWNhdGlvbkxvYWRNb3JlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLmxvYWRNb3JlKCk7XG4gICAgfVxuICAgIG9uTm90aWZpY2F0aW9uV29ya2Zsb3dDaG9pY2VTdWNjZXNzKHJlc3VsdCk6IHZvaWQge31cbiAgICBvbk5vdGlmaWNhdGlvbldvcmtmbG93Q2hvaWNlRmFpbGVkKGVycik6IHZvaWQge31cblxuICAgIHByaXZhdGUgX2hhbmRsZU9wZW5Ob3RpZmljYXRpb25QYW5lbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubm90aWZjYXRpb25Mb2FkZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5vdGlmY2F0aW9uTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5sb2FkTm90aWZpY2F0aW9ucygpO1xuICAgIH1cbiAgICBwcml2YXRlIF9tYXBOb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvbnMpOiBOb3RpZmljYXRpb25JdGVtW10ge1xuICAgICAgICByZXR1cm4gbm90aWZpY2F0aW9ucy5tYXAoKG5vdGlmaWNhdGlvbikgPT4gKHtcbiAgICAgICAgICAgIC4uLm5vdGlmaWNhdGlvbixcbiAgICAgICAgICAgIGNvbnRlbnRTYWZlSHRtbDogbm90aWZpY2F0aW9uLkNvbnRlbnRcbiAgICAgICAgICAgICAgICA/IHRoaXMuX2RvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChub3RpZmljYXRpb24uQ29udGVudClcbiAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfY2hhbmdlQ3VsdHVyZShjdWx0dXJlOiBzdHJpbmcgLyogY3VsdHVyZSBzYW1wbGUgOkVuZ2xpc2ggKi8pOiB2b2lkIHtcbiAgICAgICAgQmFyc2FBcGkuQncuU2V0Q3VsdHVyZUJ5RGlzcGxheU5hbWUoY3VsdHVyZSk7XG4gICAgICAgIEJhcnNhQXBpLkJ3Lk5hdmlnYXRlVG8oJy8nKTtcbiAgICB9XG59XG4iLCI8bGluayAqbmdJZj1cImNzc1VybCQgfCBhc3luYyBhcyBjc3NVcmxcIiB0eXBlPVwidGV4dC9jc3NcIiByZWw9XCJzdHlsZXNoZWV0XCIgW2hyZWZdPVwiY3NzVXJsXCIgLz5cbjxsaW5rICpuZ0lmPVwiY3NzQ3VzdG9tVXJsJCB8IGFzeW5jIGFzIGNzc0N1c3RvbVVybFwiIHR5cGU9XCJ0ZXh0L2Nzc1wiIHJlbD1cInN0eWxlc2hlZXRcIiBbaHJlZl09XCJjc3NDdXN0b21VcmxcIiAvPlxuXG48ZmQtc2hlbGxiYXIgKm5nSWY9XCIodXNlckxvZ2dlZEluJCB8IGFzeW5jKSB8fCBhbGxvd0Fub255bW91c1wiIFtzaXplXT1cImRldmljZVNpemVcIiBbbmdDbGFzc109XCJkZXZpY2VTaXplXCI+XG4gICAgPGZkLXNoZWxsYmFyLWxvZ28gKm5nSWY9XCJsb2dvXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZEltYWdlXT1cIid1cmwoJyArIChsb2dvPy5GaWxlSWQgfCBwaWNGaWVsZFNyYzogJ0dldFBpY3R1cmVGcm9tRmlsZUluZm8nOm51bGwpICsgJyknXCJcbiAgICAgICAgICAgIGhyZWY9XCIvXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtc2hlbGxiYXJfX2xvZ28gZmQtc2hlbGxiYXJfX2xvZ28tLWltYWdlLXJlcGxhY2VkXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJCYXJzYSBOb3ZpbiBSYXlcIlxuICAgICAgICA+PC9hPlxuICAgIDwvZmQtc2hlbGxiYXItbG9nbz5cblxuICAgIDxmZC1wcm9kdWN0LW1lbnVcbiAgICAgICAgKm5nSWY9XCIhc2V0dGluZ3M/LkhpZGVQcm9kdWN0TWVudSAmJiBwcm9kdWN0TWVudUl0ZW1zMSAmJiBwcm9kdWN0TWVudUl0ZW1zMS5sZW5ndGggPiAwXCJcbiAgICAgICAgW2NvbnRyb2xdPVwicHJvZHVjdE1lbnVDb250cm9sXCJcbiAgICAgICAgW2Nsb3NlUG9wb3Zlck9uU2VsZWN0XT1cInRydWVcIlxuICAgICAgICBbaXRlbXNdPVwicHJvZHVjdE1lbnVJdGVtczFcIlxuICAgID5cbiAgICA8L2ZkLXByb2R1Y3QtbWVudT5cblxuICAgIDxmZC1zaGVsbGJhci1zdWJ0aXRsZT4ge3sgc3VidGl0bGUgfCBiYmJUcmFuc2xhdGUgfX17eyBzaG93VmVyc2lvbiA/IGFwcFZlcnNpb24gOiAnJyB9fSA8L2ZkLXNoZWxsYmFyLXN1YnRpdGxlPlxuICAgIDxmZC1zaGVsbGJhci1hY3Rpb25zXG4gICAgICAgICpuZ0lmPVwidXNlciAmJiAodXNlck1lbnU/Lmxlbmd0aCB8fCAhc2V0dGluZ3M/LkhpZGVMYW5ndWFnZSlcIlxuICAgICAgICBbdXNlcl09XCJ1c2VyXCJcbiAgICAgICAgW3VzZXJNZW51XT1cInVzZXJNZW51XCJcbiAgICAgICAgI2xhbmdSZWZcbiAgICA+XG4gICAgICAgIDxmZC1zaGVsbGJhci1hY3Rpb25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYWN0aW9uc1wiXG4gICAgICAgICAgICBbZ2x5cGhdPVwiYWN0aW9uLkljb25cIlxuICAgICAgICAgICAgW2NhbGxiYWNrXT1cImFjdGlvbi5DYWxsYmFja1wiXG4gICAgICAgICAgICBbbGFiZWxdPVwiYWN0aW9uLkxhYmVsXCJcbiAgICAgICAgPlxuICAgICAgICA8L2ZkLXNoZWxsYmFyLWFjdGlvbj5cbiAgICAgICAgPGZkLXNoZWxsYmFyLWFjdGlvblxuICAgICAgICAgICAgKm5nSWY9XCJkZXZpY2VTaXplID09PSAncycgJiYgKHVzZXJMb2dnZWRJbiQgfCBhc3luYykgPT09IHRydWUgJiYgIXNldHRpbmdzPy5IaWRlTm90aWZpY2F0aW9uc1wiXG4gICAgICAgICAgICBbZ2x5cGhdPVwiJ2JlbGwnXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCInTm90aWZpY2F0aW9ucycgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAgICAgW25vdGlmaWNhdGlvbkNvdW50XT1cIihub3RpZmljYXRpb25zQ291bnQkIHwgYXN5bmMpPy51bnJlYWQgPz8gMFwiXG4gICAgICAgICAgICBbbm90aWZpY2F0aW9uTGFiZWxdPVwiJ05vdGlmaWNhdGlvbnMnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFtjYWxsYmFja109XCJvbkJlbGxOb3RpZmljYXRpb25cIlxuICAgICAgICA+XG4gICAgICAgIDwvZmQtc2hlbGxiYXItYWN0aW9uPlxuICAgICAgICA8ZmQtcG9wb3ZlclxuICAgICAgICAgICAgKm5nSWY9XCIhc2V0dGluZ3M/LkhpZGVOb3RpZmljYXRpb25zICYmIChub3RpZmljYXRpb25zQ291bnQkIHwgYXN5bmMpIGFzIG5vdGlmaWNhdGlvbkNvdW50XCJcbiAgICAgICAgICAgIFsoaXNPcGVuKV09XCJpc09wZW5Ob3RpZmljYXRvaW5cIlxuICAgICAgICAgICAgW3RyaWdnZXJzXT1cIltdXCJcbiAgICAgICAgICAgIFtmb2N1c1RyYXBwZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbbm9BcnJvd109XCJ0cnVlXCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICB0aXRsZT1cIk5vdGlmaWNhdGlvbiBQb3BvdmVyXCJcbiAgICAgICAgICAgIFtmb2N1c0F1dG9DYXB0dXJlXT1cInRydWVcIlxuICAgICAgICAgICAgW21vYmlsZV09XCJkZXZpY2VTaXplID09PSAncydcIlxuICAgICAgICAgICAgI3BvcG92ZXJDb21wb25lbnRcbiAgICAgICAgPlxuICAgICAgICAgICAgPGZkLXBvcG92ZXItY29udHJvbD5cbiAgICAgICAgICAgICAgICA8ZmQtc2hlbGxiYXItYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIFtnbHlwaF09XCInYmVsbCdcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ05vdGlmaWNhdGlvbidcIlxuICAgICAgICAgICAgICAgICAgICBbbm90aWZpY2F0aW9uQ291bnRdPVwibm90aWZpY2F0aW9uQ291bnQudW5yZWFkXCJcbiAgICAgICAgICAgICAgICAgICAgW25vdGlmaWNhdGlvbkxhYmVsXT1cIidOb3RpZmljYXRpb24gTGFiZWwnXCJcbiAgICAgICAgICAgICAgICAgICAgW2NhbGxiYWNrXT1cIm9uT3Blbk5vdGlmaWNhdGlvblwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvZmQtc2hlbGxiYXItYWN0aW9uPlxuICAgICAgICAgICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICA8ZmQtcG9wb3Zlci1ib2R5IHN0eWxlPVwibWluLXdpZHRoOiAzMjBweDsgb3ZlcmZsb3cteDogYXV0bzsgYm94LXNoYWRvdzogdmFyKC0tc2FwQ29udGVudF9TaGFkb3cwKVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub3RpZmljYXRpb25Hcm91cFRwbDsgY29udGV4dDogeyBub3RpZmljYXRpb25Db3VudDogbm90aWZpY2F0aW9uQ291bnQgfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9mZC1wb3BvdmVyLWJvZHk+XG4gICAgICAgIDwvZmQtcG9wb3Zlcj5cblxuICAgICAgICA8ZmQtc2hlbGxiYXItYWN0aW9uXG4gICAgICAgICAgICAqbmdJZj1cIiFzZXR0aW5ncz8uSGlkZUxhbmd1YWdlICYmIGRldmljZVNpemUgIT09ICdzJ1wiXG4gICAgICAgICAgICBbZ2x5cGhdPVwiJ3dvcmxkJ1wiXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ2xhbmd1YWdlJ1wiXG4gICAgICAgICAgICBbZmRNZW51VHJpZ2dlcl09XCJtZW51XCJcbiAgICAgICAgICAgIChjYWxsYmFjayk9XCIob25MYW5ndWFnZSlcIlxuICAgICAgICA+XG4gICAgICAgIDwvZmQtc2hlbGxiYXItYWN0aW9uPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNldHRpbmdzPy5IaWRlTGFuZ3VhZ2UgJiYgZGV2aWNlU2l6ZSA9PT0gJ3MnXCI+XG4gICAgICAgICAgICA8ZmQtc2hlbGxiYXItYWN0aW9uXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGN1bHR1cmUgb2YgY3VsdHVyZXMgfCBrZXl2YWx1ZVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cImN1bHR1cmUudmFsdWVcIlxuICAgICAgICAgICAgICAgIFtjYWxsYmFja109XCJvbkxhbmd1YWdlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImN1bHR1cmUtYWJicml2YXRpb25cIlxuICAgICAgICAgICAgICAgIFtnbHlwaF09XCJjdWx0dXJlLmtleVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ2ZsYWdzJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2ZkLXNoZWxsYmFyLWFjdGlvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGZkLXByb2R1Y3Qtc3dpdGNoICpuZ0lmPVwicHJvZHVjdFN3aXRjaGVyLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDxmZC1wcm9kdWN0LXN3aXRjaC1ib2R5IFtwcm9kdWN0c109XCJwcm9kdWN0U3dpdGNoZXJcIiBbZm9yY2VMaXN0TW9kZV09XCJkZXZpY2VTaXplID09PSAncydcIj5cbiAgICAgICAgICAgIDwvZmQtcHJvZHVjdC1zd2l0Y2gtYm9keT5cbiAgICAgICAgPC9mZC1wcm9kdWN0LXN3aXRjaD5cbiAgICAgICAgPCEtLSA8ZmQtY29tYm9ib3hcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGVybVwiXG4gICAgICAgICAgICBbZHJvcGRvd25WYWx1ZXNdPVwic2VhcmNoVGVybXNcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIignRW50ZXJTZWFyY2hDcml0ZXJpYScgfCBiYmJUcmFuc2xhdGUpICsgJyAuLi4nXCJcbiAgICAgICAgICAgIFtjb21wYWN0XT1cInRydWVcIlxuICAgICAgICA+XG4gICAgICAgIDwvZmQtY29tYm9ib3g+IC0tPlxuICAgIDwvZmQtc2hlbGxiYXItYWN0aW9ucz5cbjwvZmQtc2hlbGxiYXI+XG48bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gICAgPGJzdS1tYXNrPjwvYnN1LW1hc2s+XG48L25nLXRlbXBsYXRlPlxuXG48ZmQtbWVudSAjbWVudT5cbiAgICA8dWwgZmQtbGlzdD5cbiAgICAgICAgPGxpIGZkLWxpc3QtaXRlbSAqbmdGb3I9XCJsZXQgY3VsdHVyZSBvZiBjdWx0dXJlcyB8IGtleXZhbHVlXCI+XG4gICAgICAgICAgICA8YSBmZC1saXN0LWxpbmsgKGNsaWNrKT1cIm9uQ3VsdHVyZUNoYW5nZShjdWx0dXJlLnZhbHVlKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgd2lkdGg9XCIxNHB4XCIgaGVpZ2h0PVwiMTJweFwiIFtzcmNdPVwiJy9hc3NldHMvZmxhZ3MvJyArIGN1bHR1cmUua2V5ICsgJy5wbmcnXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdWx0dXJlLWFiYnJpdmF0aW9uXCIgW25nQ2xhc3NdPVwiY3VsdHVyZS5rZXlcIj4ge3sgY3VsdHVyZS5rZXkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICA8L2xpPlxuICAgIDwvdWw+XG48L2ZkLW1lbnU+XG48bmctdGVtcGxhdGUgI25vdGlmaWNhdGlvbkdyb3VwVHBsIGxldC1ub3RpZmljYXRpb25Db3VudD1cIm5vdGlmaWNhdGlvbkNvdW50XCI+XG4gICAgPGRpdlxuICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTsgaGVpZ2h0OiAxMDBweFwiXG4gICAgICAgICpuZ0lmPVwiIW5vdGlmY2F0aW9uTG9hZGVkICYmIChub3RpZmljYXRpb25Mb2FkaW5nJCB8IGFzeW5jKSA9PT0gdHJ1ZVwiXG4gICAgPlxuICAgICAgICA8YnN1LW1hc2sgc2l6ZT1cInNcIj48L2JzdS1tYXNrPlxuICAgIDwvZGl2PlxuICAgIDxidC1ub3RpZmljYXRpb24tZ3JvdXBcbiAgICAgICAgW25vdGlmaWNhdGlvbnNdPVwibm90aWZpY2F0aW9ucyQgfCBhc3luY1wiXG4gICAgICAgIFtub3RpZmljYXRpb25Db3VudF09XCJub3RpZmljYXRpb25Db3VudFwiXG4gICAgICAgIFtsb2FkaW5nXT1cIihub3RpZmljYXRpb25Mb2FkaW5nJCB8IGFzeW5jKSA9PT0gdHJ1ZVwiXG4gICAgICAgICh2aWV3ZWQpPVwib25Ob3RpZmljYXRpb25JdGVtVmlld2VkKCRldmVudClcIlxuICAgICAgICAocmVtb3ZlKT1cIm9uUmVtb3ZlTm90aWZpY2F0aW9ucygkZXZlbnQpXCJcbiAgICAgICAgKHNob3cpPVwicG9wb3ZlckNvbXBvbmVudC5jbG9zZSgpOyBvblNob3dOb3RpZmljYXRpb24oJGV2ZW50KVwiXG4gICAgICAgIChhY3Rpb25DbGljayk9XCJwb3BvdmVyQ29tcG9uZW50LmNsb3NlKCk7IG9uTm90aWZpY2F0aW9uQWN0aW9uKCRldmVudClcIlxuICAgICAgICAobG9hZE1vcmUpPVwib25Ob3RpZmljYXRpb25Mb2FkTW9yZSgpXCJcbiAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXG4gICAgPjwvYnQtbm90aWZpY2F0aW9uLWdyb3VwPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIGxldC1kaWFsb2cgbGV0LWRpYWxvZ0NvbmZpZz1cImRpYWxvZ0NvbmZpZ1wiICNub3RpZmljYXRpb25zRGlhbG9nPlxuICAgIDxmZC1kaWFsb2cgW2RpYWxvZ0NvbmZpZ109XCJkaWFsb2dDb25maWdcIiBbZGlhbG9nUmVmXT1cImRpYWxvZ1wiPlxuICAgICAgICA8ZmQtZGlhbG9nLWhlYWRlcj5cbiAgICAgICAgICAgIDxoMSBpZD1cImZkLWRpYWxvZy1oZWFkZXItMTBcIiBmZC10aXRsZT57eyAnTm90aWZpY2F0aW9uJyB8IGJiYlRyYW5zbGF0ZSB9fTwvaDE+XG4gICAgICAgICAgICA8YnV0dG9uIGZkLWRpYWxvZy1jbG9zZS1idXR0b24gKGNsaWNrKT1cImRpYWxvZy5kaXNtaXNzKClcIj48L2J1dHRvbj5cbiAgICAgICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxuICAgICAgICA8ZmQtZGlhbG9nLWJvZHkgY2xhc3M9XCJtb2JpbGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIm5vdGlmaWNhdGlvbkdyb3VwVHBsOyBjb250ZXh0OiB7IG5vdGlmaWNhdGlvbkNvdW50OiBub3RpZmljYXRpb25zQ291bnQkIHwgYXN5bmMgfVwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZmQtZGlhbG9nLWJvZHk+XG4gICAgPC9mZC1kaWFsb2c+XG48L25nLXRlbXBsYXRlPlxuIl19