@agorapulse/ui-components 18.1.4 → 18.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/action-dropdown/action-dropdown.component.d.ts +2 -3
- package/agorapulse-ui-components-18.1.6.tgz +0 -0
- package/esm2022/action-dropdown/action-dropdown.component.mjs +5 -6
- package/esm2022/nav-selector/nav-selector-leaf/nav-selector-leaf.component.mjs +3 -3
- package/esm2022/popmenu/popmenu.directive.mjs +5 -1
- package/fesm2022/agorapulse-ui-components-action-dropdown.mjs +4 -5
- package/fesm2022/agorapulse-ui-components-action-dropdown.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-nav-selector.mjs +2 -2
- package/fesm2022/agorapulse-ui-components-nav-selector.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-popmenu.mjs +4 -0
- package/fesm2022/agorapulse-ui-components-popmenu.mjs.map +1 -1
- package/package.json +1 -1
- package/popmenu/popmenu.directive.d.ts +4 -0
- package/agorapulse-ui-components-18.1.4.tgz +0 -0
|
@@ -28,8 +28,8 @@ export interface ActionDropdownItem {
|
|
|
28
28
|
endSymbolTooltipText?: string;
|
|
29
29
|
/** Whether the item is disabled and non-interactive */
|
|
30
30
|
disabled?: boolean;
|
|
31
|
-
/** Whether to
|
|
32
|
-
|
|
31
|
+
/** Whether to add a divider before this item */
|
|
32
|
+
dividerEnabled?: boolean;
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
35
|
* A dropdown component that displays a list of actionable items with support for icons,
|
|
@@ -64,7 +64,6 @@ export declare class ActionDropdownComponent {
|
|
|
64
64
|
private portal;
|
|
65
65
|
protected readonly isOpen: import("@angular/core").WritableSignal<boolean>;
|
|
66
66
|
protected readonly focusedIndex: import("@angular/core").WritableSignal<number>;
|
|
67
|
-
protected readonly itemsWithoutDividers: import("@angular/core").Signal<ActionDropdownItem[]>;
|
|
68
67
|
constructor();
|
|
69
68
|
/** Opens the dropdown menu at the specified trigger element or component's element */
|
|
70
69
|
open(triggerElement?: HTMLElement): void;
|
|
Binary file
|
|
@@ -4,7 +4,7 @@ import { apFeatureLock, apInfo, SymbolComponent, withSymbols } from '@agorapulse
|
|
|
4
4
|
import { Overlay, OverlayPositionBuilder } from '@angular/cdk/overlay';
|
|
5
5
|
import { TemplatePortal } from '@angular/cdk/portal';
|
|
6
6
|
import { CommonModule } from '@angular/common';
|
|
7
|
-
import { ChangeDetectionStrategy, Component,
|
|
7
|
+
import { ChangeDetectionStrategy, Component, contentChild, effect, ElementRef, inject, input, output, signal, viewChild, ViewContainerRef, } from '@angular/core';
|
|
8
8
|
import { take } from 'rxjs/operators';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
/**
|
|
@@ -40,7 +40,6 @@ export class ActionDropdownComponent {
|
|
|
40
40
|
portal = null;
|
|
41
41
|
isOpen = signal(false);
|
|
42
42
|
focusedIndex = signal(-1);
|
|
43
|
-
itemsWithoutDividers = computed(() => this.items().filter(item => !item.divider));
|
|
44
43
|
constructor() {
|
|
45
44
|
// Set up keyboard navigation when dropdown opens
|
|
46
45
|
effect(() => {
|
|
@@ -120,7 +119,7 @@ export class ActionDropdownComponent {
|
|
|
120
119
|
}
|
|
121
120
|
/** Handles keyboard navigation within the dropdown menu */
|
|
122
121
|
onKeyDown(event) {
|
|
123
|
-
const items = this.
|
|
122
|
+
const items = this.items();
|
|
124
123
|
const currentIndex = this.focusedIndex();
|
|
125
124
|
let nextIndex;
|
|
126
125
|
let prevIndex;
|
|
@@ -261,10 +260,10 @@ export class ActionDropdownComponent {
|
|
|
261
260
|
});
|
|
262
261
|
}
|
|
263
262
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ActionDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
264
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: ActionDropdownComponent, isStandalone: true, selector: "ap-action-dropdown", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, largeModeEnabled: { classPropertyName: "largeModeEnabled", publicName: "largeModeEnabled", isSignal: true, isRequired: false, transformFunction: null }, showBackdrop: { classPropertyName: "showBackdrop", publicName: "showBackdrop", isSignal: true, isRequired: false, transformFunction: null }, customWidth: { classPropertyName: "customWidth", publicName: "customWidth", isSignal: true, isRequired: false, transformFunction: null }, defaultPosition: { classPropertyName: "defaultPosition", publicName: "defaultPosition", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClick: "itemClick", opened: "opened", closed: "closed" }, providers: [withSymbols(apInfo, apFeatureLock)], queries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true, isSignal: true }], viewQueries: [{ propertyName: "actionDropdownTemplate", first: true, predicate: ["actionDropdownTemplate"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-template #actionDropdownTemplate>\n <!-- Action dropdown -->\n <div\n class=\"ap-action-dropdown__content\"\n role=\"menu\"\n tabindex=\"-1\"\n [attr.aria-label]=\"'Action dropdown'\"\n [class.ap-action-dropdown__content--default]=\"!largeModeEnabled() && !customWidth()\"\n [class.ap-action-dropdown__content--large]=\"largeModeEnabled()\"\n [style.width]=\"customWidth() ? customWidth() + 'px' : undefined\"\n (keydown)=\"onKeyDown($event)\">\n <!-- Action dropdown items -->\n @for (item of items(); track item.label) {\n <!-- Divider -->\n @if (item.divider) {\n <div\n class=\"ap-action-dropdown__divider\"\n role=\"separator\"></div>\n } @else {\n <!-- Action dropdown item -->\n <button\n type=\"button\"\n role=\"menuitem\"\n class=\"ap-action-dropdown__item\"\n [class.ap-action-dropdown__item--has-description]=\"item.description\"\n [class.ap-action-dropdown__item--disabled]=\"item.disabled\"\n [class.ap-action-dropdown__item--focused]=\"focusedIndex() === $index\"\n [class.ap-action-dropdown__item--red-mode]=\"item.redModeEnabled\"\n [class.ap-action-dropdown__item--feature-lock]=\"item.featureLockEnabled\"\n [attr.aria-disabled]=\"item.disabled\"\n [disabled]=\"item.disabled\"\n [apTooltip]=\"item.itemTooltipText\"\n (click)=\"onItemClick(item)\">\n <!-- Start icon -->\n @if (item.startSymbolId) {\n <ap-symbol\n class=\"ap-action-dropdown__item-start-icon\"\n size=\"sm\"\n [color]=\"item.startSymbolColor ? item.startSymbolColor : item.redModeEnabled ? 'red' : 'basic-grey'\"\n [symbolId]=\"item.startSymbolId\"\n [apTooltip]=\"item.startSymbolTooltipText\" />\n }\n <!-- Label -->\n <div class=\"ap-action-dropdown__item-text-container\">\n <div class=\"ap-action-dropdown__item-label-container\">\n <div\n class=\"ap-action-dropdown__item-label\"\n [class.ap-action-dropdown__item-label--bold]=\"item.description\">\n {{ item.label }}\n </div>\n <!-- Badge -->\n @if (item.badgeLabel) {\n <ap-badge color=\"blue\">\n {{ item.badgeLabel }}\n </ap-badge>\n }\n </div>\n <!-- Description -->\n <div class=\"ap-action-dropdown__item-description\">{{ item.description }}</div>\n </div>\n <!-- End icon -->\n @if (item.endSymbolId) {\n <ap-symbol\n class=\"ap-action-dropdown__item-end-icon\"\n size=\"sm\"\n color=\"#858FA1\"\n [symbolId]=\"item.endSymbolId\"\n [apTooltip]=\"item.endSymbolTooltipText\" />\n }\n <!-- Feature lock icon -->\n @if (item.featureLockEnabled) {\n <ap-symbol\n class=\"ap-action-dropdown__item-end-icon\"\n size=\"sm\"\n color=\"purple\"\n symbolId=\"feature-lock\" />\n }\n </button>\n }\n }\n </div>\n</ng-template>\n", styles: [".ap-action-dropdown__content{background-color:var(--comp-action-dropdown-background-color);border:1px solid var(--comp-action-dropdown-border-color);border-radius:var(--comp-action-dropdown-border-radius);box-shadow:var(--comp-action-dropdown-box-shadow);padding:var(--comp-action-dropdown-padding);outline:none;overflow:hidden;z-index:1000}.ap-action-dropdown__content.ap-action-dropdown__content--default{width:250px}.ap-action-dropdown__content.ap-action-dropdown__content--large{width:340px}.ap-action-dropdown__content:focus{outline:2px solid var(--comp-action-dropdown-item-background-color-focused);outline-offset:2px}.ap-action-dropdown__item{display:flex;align-items:center;width:100%;height:40px;padding:var(--comp-action-dropdown-item-padding);border:none;background:transparent;color:var(--comp-action-dropdown-item-text-color);cursor:pointer;font-family:Averta;font-size:var(--comp-action-dropdown-item-text-size);line-height:var(--comp-action-dropdown-item-text-line-height);text-align:left;transition:background-color .2s ease,color .2s ease}.ap-action-dropdown__item:hover{background-color:var(--comp-action-dropdown-item-background-color-hover)}.ap-action-dropdown__item:focus{outline:none;background-color:var(--comp-action-dropdown-item-background-color-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--has-description{height:auto;min-height:50px}.ap-action-dropdown__item.ap-action-dropdown__item--focused{background-color:var(--comp-action-dropdown-item-background-color-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--disabled{cursor:not-allowed;opacity:.4}.ap-action-dropdown__item.ap-action-dropdown__item--red-mode{color:var(--comp-action-dropdown-item-text-color-red-mode)}.ap-action-dropdown__item.ap-action-dropdown__item--red-mode:hover{background-color:var(--comp-action-dropdown-item-background-color-red-mode-hover)}.ap-action-dropdown__item.ap-action-dropdown__item--red-mode:focus{background-color:var(--comp-action-dropdown-item-background-color-red-mode-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--red-mode.ap-action-dropdown__item--focused{background-color:var(--comp-action-dropdown-item-background-color-red-mode-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--feature-lock:hover{background-color:var(--comp-action-dropdown-item-background-color-feature-lock-hover)}.ap-action-dropdown__item.ap-action-dropdown__item--feature-lock:focus{background-color:var(--comp-action-dropdown-item-background-color-feature-lock-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--feature-lock.ap-action-dropdown__item--focused{background-color:var(--comp-action-dropdown-item-background-color-feature-lock-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--disabled:hover{background-color:transparent}.ap-action-dropdown__item .ap-action-dropdown__item-start-icon{margin-right:var(--comp-action-dropdown-item-icon-spacing)}.ap-action-dropdown__item .ap-action-dropdown__item-end-icon{margin-left:var(--comp-action-dropdown-item-icon-spacing)}.ap-action-dropdown__item .ap-action-dropdown__item-text-container{display:flex;flex-direction:column;flex:1;min-width:0}.ap-action-dropdown__item .ap-action-dropdown__item-text-container .ap-action-dropdown__item-label-container{display:flex;align-items:center;gap:var(--comp-action-dropdown-item-label-spacing);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ap-action-dropdown__item .ap-action-dropdown__item-text-container .ap-action-dropdown__item-label-container .ap-action-dropdown__item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ap-action-dropdown__item .ap-action-dropdown__item-text-container .ap-action-dropdown__item-label-container .ap-action-dropdown__item-label.ap-action-dropdown__item-label--bold{font-weight:var(--ref-font-weight-bold)}.ap-action-dropdown__item .ap-action-dropdown__item-text-container .ap-action-dropdown__item-description{color:var(--comp-action-dropdown-item-description-color);font-size:var(--comp-action-dropdown-item-description-size);line-height:var(--comp-action-dropdown-item-description-line-height)}.ap-action-dropdown__divider{height:1px;background-color:var(--comp-action-dropdown-divider-color);margin:var(--comp-action-dropdown-divider-margin)}\n"], dependencies: [{ kind: "component", type: BadgeComponent, selector: "ap-badge", inputs: ["color"] }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: SymbolComponent, selector: "ap-symbol", inputs: ["symbolId", "color", "size"], outputs: ["sizeChange"] }, { kind: "directive", type: TooltipDirective, selector: "[apTooltip]", inputs: ["apTooltip", "apTooltipPosition", "apTooltipShowDelay", "apTooltipHideDelay", "apTooltipDuration", "apTooltipDisabled", "apTooltipTruncatedTextOnly", "apTooltipTemplateContext", "apTooltipVirtualScrollElement"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
263
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: ActionDropdownComponent, isStandalone: true, selector: "ap-action-dropdown", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, largeModeEnabled: { classPropertyName: "largeModeEnabled", publicName: "largeModeEnabled", isSignal: true, isRequired: false, transformFunction: null }, showBackdrop: { classPropertyName: "showBackdrop", publicName: "showBackdrop", isSignal: true, isRequired: false, transformFunction: null }, customWidth: { classPropertyName: "customWidth", publicName: "customWidth", isSignal: true, isRequired: false, transformFunction: null }, defaultPosition: { classPropertyName: "defaultPosition", publicName: "defaultPosition", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClick: "itemClick", opened: "opened", closed: "closed" }, providers: [withSymbols(apInfo, apFeatureLock)], queries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true, isSignal: true }], viewQueries: [{ propertyName: "actionDropdownTemplate", first: true, predicate: ["actionDropdownTemplate"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-template #actionDropdownTemplate>\n <!-- Action dropdown -->\n <div\n class=\"ap-action-dropdown__content\"\n role=\"menu\"\n tabindex=\"-1\"\n [attr.aria-label]=\"'Action dropdown'\"\n [class.ap-action-dropdown__content--default]=\"!largeModeEnabled() && !customWidth()\"\n [class.ap-action-dropdown__content--large]=\"largeModeEnabled()\"\n [style.width]=\"customWidth() ? customWidth() + 'px' : undefined\"\n (keydown)=\"onKeyDown($event)\">\n <!-- Action dropdown items -->\n @for (item of items(); track item.label) {\n <!-- Divider -->\n @if (item.dividerEnabled) {\n <div\n class=\"ap-action-dropdown__divider\"\n role=\"separator\"></div>\n }\n <!-- Action dropdown item -->\n <button\n type=\"button\"\n role=\"menuitem\"\n class=\"ap-action-dropdown__item\"\n [class.ap-action-dropdown__item--has-description]=\"item.description\"\n [class.ap-action-dropdown__item--disabled]=\"item.disabled\"\n [class.ap-action-dropdown__item--focused]=\"focusedIndex() === $index\"\n [class.ap-action-dropdown__item--red-mode]=\"item.redModeEnabled\"\n [class.ap-action-dropdown__item--feature-lock]=\"item.featureLockEnabled\"\n [attr.aria-disabled]=\"item.disabled\"\n [disabled]=\"item.disabled\"\n [apTooltip]=\"item.itemTooltipText\"\n (click)=\"onItemClick(item)\">\n <!-- Start icon -->\n @if (item.startSymbolId) {\n <ap-symbol\n class=\"ap-action-dropdown__item-start-icon\"\n size=\"sm\"\n [color]=\"item.startSymbolColor ? item.startSymbolColor : item.redModeEnabled ? 'red' : 'basic-grey'\"\n [symbolId]=\"item.startSymbolId\"\n [apTooltip]=\"item.startSymbolTooltipText\" />\n }\n <!-- Label -->\n <div class=\"ap-action-dropdown__item-text-container\">\n <div class=\"ap-action-dropdown__item-label-container\">\n <div\n class=\"ap-action-dropdown__item-label\"\n [class.ap-action-dropdown__item-label--bold]=\"item.description\">\n {{ item.label }}\n </div>\n <!-- Badge -->\n @if (item.badgeLabel) {\n <ap-badge color=\"blue\">\n {{ item.badgeLabel }}\n </ap-badge>\n }\n </div>\n <!-- Description -->\n <div class=\"ap-action-dropdown__item-description\">{{ item.description }}</div>\n </div>\n <!-- End icon -->\n @if (item.endSymbolId) {\n <ap-symbol\n class=\"ap-action-dropdown__item-end-icon\"\n size=\"sm\"\n color=\"#858FA1\"\n [symbolId]=\"item.endSymbolId\"\n [apTooltip]=\"item.endSymbolTooltipText\" />\n }\n <!-- Feature lock icon -->\n @if (item.featureLockEnabled) {\n <ap-symbol\n class=\"ap-action-dropdown__item-end-icon\"\n size=\"sm\"\n color=\"purple\"\n symbolId=\"feature-lock\" />\n }\n </button>\n }\n </div>\n</ng-template>\n", styles: [":host{display:none}.ap-action-dropdown__content{background-color:var(--comp-action-dropdown-background-color);border:1px solid var(--comp-action-dropdown-border-color);border-radius:var(--comp-action-dropdown-border-radius);box-shadow:var(--comp-action-dropdown-box-shadow);padding:var(--comp-action-dropdown-padding);outline:none;overflow:hidden;z-index:1000}.ap-action-dropdown__content.ap-action-dropdown__content--default{width:250px}.ap-action-dropdown__content.ap-action-dropdown__content--large{width:340px}.ap-action-dropdown__content:focus{outline:2px solid var(--comp-action-dropdown-item-background-color-focused);outline-offset:2px}.ap-action-dropdown__item{display:flex;align-items:center;width:100%;height:40px;padding:var(--comp-action-dropdown-item-padding);border:none;background:transparent;color:var(--comp-action-dropdown-item-text-color);cursor:pointer;font-family:Averta;font-size:var(--comp-action-dropdown-item-text-size);line-height:var(--comp-action-dropdown-item-text-line-height);text-align:left;transition:background-color .2s ease,color .2s ease}.ap-action-dropdown__item:hover{background-color:var(--comp-action-dropdown-item-background-color-hover)}.ap-action-dropdown__item:focus{outline:none;background-color:var(--comp-action-dropdown-item-background-color-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--has-description{height:auto;min-height:50px}.ap-action-dropdown__item.ap-action-dropdown__item--focused{background-color:var(--comp-action-dropdown-item-background-color-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--disabled{cursor:not-allowed;opacity:.4}.ap-action-dropdown__item.ap-action-dropdown__item--red-mode{color:var(--comp-action-dropdown-item-text-color-red-mode)}.ap-action-dropdown__item.ap-action-dropdown__item--red-mode:hover{background-color:var(--comp-action-dropdown-item-background-color-red-mode-hover)}.ap-action-dropdown__item.ap-action-dropdown__item--red-mode:focus{background-color:var(--comp-action-dropdown-item-background-color-red-mode-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--red-mode.ap-action-dropdown__item--focused{background-color:var(--comp-action-dropdown-item-background-color-red-mode-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--feature-lock:hover{background-color:var(--comp-action-dropdown-item-background-color-feature-lock-hover)}.ap-action-dropdown__item.ap-action-dropdown__item--feature-lock:focus{background-color:var(--comp-action-dropdown-item-background-color-feature-lock-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--feature-lock.ap-action-dropdown__item--focused{background-color:var(--comp-action-dropdown-item-background-color-feature-lock-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--disabled:hover{background-color:transparent}.ap-action-dropdown__item .ap-action-dropdown__item-start-icon{margin-right:var(--comp-action-dropdown-item-icon-spacing)}.ap-action-dropdown__item .ap-action-dropdown__item-end-icon{margin-left:var(--comp-action-dropdown-item-icon-spacing)}.ap-action-dropdown__item .ap-action-dropdown__item-text-container{display:flex;flex-direction:column;flex:1;min-width:0}.ap-action-dropdown__item .ap-action-dropdown__item-text-container .ap-action-dropdown__item-label-container{display:flex;align-items:center;gap:var(--comp-action-dropdown-item-label-spacing);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ap-action-dropdown__item .ap-action-dropdown__item-text-container .ap-action-dropdown__item-label-container .ap-action-dropdown__item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ap-action-dropdown__item .ap-action-dropdown__item-text-container .ap-action-dropdown__item-label-container .ap-action-dropdown__item-label.ap-action-dropdown__item-label--bold{font-weight:var(--ref-font-weight-bold)}.ap-action-dropdown__item .ap-action-dropdown__item-text-container .ap-action-dropdown__item-description{color:var(--comp-action-dropdown-item-description-color);font-size:var(--comp-action-dropdown-item-description-size);line-height:var(--comp-action-dropdown-item-description-line-height)}.ap-action-dropdown__divider{height:1px;background-color:var(--comp-action-dropdown-divider-color);margin:var(--comp-action-dropdown-divider-margin)}\n"], dependencies: [{ kind: "component", type: BadgeComponent, selector: "ap-badge", inputs: ["color"] }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: SymbolComponent, selector: "ap-symbol", inputs: ["symbolId", "color", "size"], outputs: ["sizeChange"] }, { kind: "directive", type: TooltipDirective, selector: "[apTooltip]", inputs: ["apTooltip", "apTooltipPosition", "apTooltipShowDelay", "apTooltipHideDelay", "apTooltipDuration", "apTooltipDisabled", "apTooltipTruncatedTextOnly", "apTooltipTemplateContext", "apTooltipVirtualScrollElement"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
265
264
|
}
|
|
266
265
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ActionDropdownComponent, decorators: [{
|
|
267
266
|
type: Component,
|
|
268
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ap-action-dropdown', standalone: true, imports: [BadgeComponent, CommonModule, SymbolComponent, TooltipDirective], providers: [withSymbols(apInfo, apFeatureLock)], template: "<ng-template #actionDropdownTemplate>\n <!-- Action dropdown -->\n <div\n class=\"ap-action-dropdown__content\"\n role=\"menu\"\n tabindex=\"-1\"\n [attr.aria-label]=\"'Action dropdown'\"\n [class.ap-action-dropdown__content--default]=\"!largeModeEnabled() && !customWidth()\"\n [class.ap-action-dropdown__content--large]=\"largeModeEnabled()\"\n [style.width]=\"customWidth() ? customWidth() + 'px' : undefined\"\n (keydown)=\"onKeyDown($event)\">\n <!-- Action dropdown items -->\n @for (item of items(); track item.label) {\n <!-- Divider -->\n @if (item.
|
|
267
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ap-action-dropdown', standalone: true, imports: [BadgeComponent, CommonModule, SymbolComponent, TooltipDirective], providers: [withSymbols(apInfo, apFeatureLock)], template: "<ng-template #actionDropdownTemplate>\n <!-- Action dropdown -->\n <div\n class=\"ap-action-dropdown__content\"\n role=\"menu\"\n tabindex=\"-1\"\n [attr.aria-label]=\"'Action dropdown'\"\n [class.ap-action-dropdown__content--default]=\"!largeModeEnabled() && !customWidth()\"\n [class.ap-action-dropdown__content--large]=\"largeModeEnabled()\"\n [style.width]=\"customWidth() ? customWidth() + 'px' : undefined\"\n (keydown)=\"onKeyDown($event)\">\n <!-- Action dropdown items -->\n @for (item of items(); track item.label) {\n <!-- Divider -->\n @if (item.dividerEnabled) {\n <div\n class=\"ap-action-dropdown__divider\"\n role=\"separator\"></div>\n }\n <!-- Action dropdown item -->\n <button\n type=\"button\"\n role=\"menuitem\"\n class=\"ap-action-dropdown__item\"\n [class.ap-action-dropdown__item--has-description]=\"item.description\"\n [class.ap-action-dropdown__item--disabled]=\"item.disabled\"\n [class.ap-action-dropdown__item--focused]=\"focusedIndex() === $index\"\n [class.ap-action-dropdown__item--red-mode]=\"item.redModeEnabled\"\n [class.ap-action-dropdown__item--feature-lock]=\"item.featureLockEnabled\"\n [attr.aria-disabled]=\"item.disabled\"\n [disabled]=\"item.disabled\"\n [apTooltip]=\"item.itemTooltipText\"\n (click)=\"onItemClick(item)\">\n <!-- Start icon -->\n @if (item.startSymbolId) {\n <ap-symbol\n class=\"ap-action-dropdown__item-start-icon\"\n size=\"sm\"\n [color]=\"item.startSymbolColor ? item.startSymbolColor : item.redModeEnabled ? 'red' : 'basic-grey'\"\n [symbolId]=\"item.startSymbolId\"\n [apTooltip]=\"item.startSymbolTooltipText\" />\n }\n <!-- Label -->\n <div class=\"ap-action-dropdown__item-text-container\">\n <div class=\"ap-action-dropdown__item-label-container\">\n <div\n class=\"ap-action-dropdown__item-label\"\n [class.ap-action-dropdown__item-label--bold]=\"item.description\">\n {{ item.label }}\n </div>\n <!-- Badge -->\n @if (item.badgeLabel) {\n <ap-badge color=\"blue\">\n {{ item.badgeLabel }}\n </ap-badge>\n }\n </div>\n <!-- Description -->\n <div class=\"ap-action-dropdown__item-description\">{{ item.description }}</div>\n </div>\n <!-- End icon -->\n @if (item.endSymbolId) {\n <ap-symbol\n class=\"ap-action-dropdown__item-end-icon\"\n size=\"sm\"\n color=\"#858FA1\"\n [symbolId]=\"item.endSymbolId\"\n [apTooltip]=\"item.endSymbolTooltipText\" />\n }\n <!-- Feature lock icon -->\n @if (item.featureLockEnabled) {\n <ap-symbol\n class=\"ap-action-dropdown__item-end-icon\"\n size=\"sm\"\n color=\"purple\"\n symbolId=\"feature-lock\" />\n }\n </button>\n }\n </div>\n</ng-template>\n", styles: [":host{display:none}.ap-action-dropdown__content{background-color:var(--comp-action-dropdown-background-color);border:1px solid var(--comp-action-dropdown-border-color);border-radius:var(--comp-action-dropdown-border-radius);box-shadow:var(--comp-action-dropdown-box-shadow);padding:var(--comp-action-dropdown-padding);outline:none;overflow:hidden;z-index:1000}.ap-action-dropdown__content.ap-action-dropdown__content--default{width:250px}.ap-action-dropdown__content.ap-action-dropdown__content--large{width:340px}.ap-action-dropdown__content:focus{outline:2px solid var(--comp-action-dropdown-item-background-color-focused);outline-offset:2px}.ap-action-dropdown__item{display:flex;align-items:center;width:100%;height:40px;padding:var(--comp-action-dropdown-item-padding);border:none;background:transparent;color:var(--comp-action-dropdown-item-text-color);cursor:pointer;font-family:Averta;font-size:var(--comp-action-dropdown-item-text-size);line-height:var(--comp-action-dropdown-item-text-line-height);text-align:left;transition:background-color .2s ease,color .2s ease}.ap-action-dropdown__item:hover{background-color:var(--comp-action-dropdown-item-background-color-hover)}.ap-action-dropdown__item:focus{outline:none;background-color:var(--comp-action-dropdown-item-background-color-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--has-description{height:auto;min-height:50px}.ap-action-dropdown__item.ap-action-dropdown__item--focused{background-color:var(--comp-action-dropdown-item-background-color-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--disabled{cursor:not-allowed;opacity:.4}.ap-action-dropdown__item.ap-action-dropdown__item--red-mode{color:var(--comp-action-dropdown-item-text-color-red-mode)}.ap-action-dropdown__item.ap-action-dropdown__item--red-mode:hover{background-color:var(--comp-action-dropdown-item-background-color-red-mode-hover)}.ap-action-dropdown__item.ap-action-dropdown__item--red-mode:focus{background-color:var(--comp-action-dropdown-item-background-color-red-mode-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--red-mode.ap-action-dropdown__item--focused{background-color:var(--comp-action-dropdown-item-background-color-red-mode-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--feature-lock:hover{background-color:var(--comp-action-dropdown-item-background-color-feature-lock-hover)}.ap-action-dropdown__item.ap-action-dropdown__item--feature-lock:focus{background-color:var(--comp-action-dropdown-item-background-color-feature-lock-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--feature-lock.ap-action-dropdown__item--focused{background-color:var(--comp-action-dropdown-item-background-color-feature-lock-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--disabled:hover{background-color:transparent}.ap-action-dropdown__item .ap-action-dropdown__item-start-icon{margin-right:var(--comp-action-dropdown-item-icon-spacing)}.ap-action-dropdown__item .ap-action-dropdown__item-end-icon{margin-left:var(--comp-action-dropdown-item-icon-spacing)}.ap-action-dropdown__item .ap-action-dropdown__item-text-container{display:flex;flex-direction:column;flex:1;min-width:0}.ap-action-dropdown__item .ap-action-dropdown__item-text-container .ap-action-dropdown__item-label-container{display:flex;align-items:center;gap:var(--comp-action-dropdown-item-label-spacing);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ap-action-dropdown__item .ap-action-dropdown__item-text-container .ap-action-dropdown__item-label-container .ap-action-dropdown__item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ap-action-dropdown__item .ap-action-dropdown__item-text-container .ap-action-dropdown__item-label-container .ap-action-dropdown__item-label.ap-action-dropdown__item-label--bold{font-weight:var(--ref-font-weight-bold)}.ap-action-dropdown__item .ap-action-dropdown__item-text-container .ap-action-dropdown__item-description{color:var(--comp-action-dropdown-item-description-color);font-size:var(--comp-action-dropdown-item-description-size);line-height:var(--comp-action-dropdown-item-description-line-height)}.ap-action-dropdown__divider{height:1px;background-color:var(--comp-action-dropdown-divider-color);margin:var(--comp-action-dropdown-divider-margin)}\n"] }]
|
|
269
268
|
}], ctorParameters: () => [] });
|
|
270
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9hY3Rpb24tZHJvcGRvd24vc3JjL2FjdGlvbi1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvYWN0aW9uLWRyb3Bkb3duL3NyYy9hY3Rpb24tZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBb0IsYUFBYSxFQUFFLE1BQU0sRUFBZSxlQUFlLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0gsT0FBTyxFQUF3RCxPQUFPLEVBQUUsc0JBQXNCLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUN6SSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixZQUFZLEVBQ1osTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBRU4sU0FBUyxFQUNULGdCQUFnQixHQUNuQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBaUN0Qzs7O0dBR0c7QUFVSCxNQUFNLE9BQU8sdUJBQXVCO0lBQ2YsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFCLGVBQWUs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QztRQUVELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFdEQsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtZQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzt1R0ExUlEsdUJBQXVCOzJGQUF2Qix1QkFBdUIscTlCQUZyQixDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUMsNFJDakVuRCwwaElBa0ZBLDJ1SURsQmMsY0FBYyx1RUFBRSxZQUFZLCtCQUFFLGVBQWUsc0hBQUUsZ0JBQWdCOzsyRkFHaEUsdUJBQXVCO2tCQVRuQyxTQUFTO3NDQUNXLHVCQUF1QixDQUFDLE1BQU0sWUFDckMsb0JBQW9CLGNBR2xCLElBQUksV0FDUCxDQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixDQUFDLGFBQy9ELENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9iYWRnZSc7XG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy90b29sdGlwJztcbmltcG9ydCB7IGFnb3JhcHVsc2VTeW1ib2wsIGFwRmVhdHVyZUxvY2ssIGFwSW5mbywgU3ltYm9sQ29sb3IsIFN5bWJvbENvbXBvbmVudCwgd2l0aFN5bWJvbHMgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1zeW1ib2wnO1xuaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24sIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSwgT3ZlcmxheSwgT3ZlcmxheVBvc2l0aW9uQnVpbGRlciwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgY29tcHV0ZWQsXG4gICAgY29udGVudENoaWxkLFxuICAgIGVmZmVjdCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGluamVjdCxcbiAgICBpbnB1dCxcbiAgICBvdXRwdXQsXG4gICAgc2lnbmFsLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIHZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uRHJvcGRvd25JdGVtIHtcbiAgICAvKiogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBpdGVtICovXG4gICAgbmFtZT86IHN0cmluZztcbiAgICAvKiogRGlzcGxheSB0ZXh0IGZvciB0aGUgaXRlbSAqL1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIC8qKiBTZWNvbmRhcnkgdGV4dCBkaXNwbGF5ZWQgYmVsb3cgdGhlIGxhYmVsICovXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgLyoqIFRleHQgZGlzcGxheWVkIGluIGEgYmFkZ2UgbmV4dCB0byB0aGUgaXRlbSAqL1xuICAgIGJhZGdlTGFiZWw/OiBzdHJpbmc7XG4gICAgLyoqIFdoZXRoZXIgdG8gc2hvdyBhIGZlYXR1cmUgbG9jayBpY29uICovXG4gICAgZmVhdHVyZUxvY2tFbmFibGVkPzogYm9vbGVhbjtcbiAgICAvKiogV2hldGhlciB0byBhcHBseSByZWQgc3R5bGluZyBmb3IgZGVzdHJ1Y3RpdmUgYWN0aW9ucyAqL1xuICAgIHJlZE1vZGVFbmFibGVkPzogYm9vbGVhbjtcbiAgICAvKiogVG9vbHRpcCB0ZXh0IGRpc3BsYXllZCB3aGVuIGhvdmVyaW5nIG92ZXIgdGhlIGl0ZW0gKi9cbiAgICBpdGVtVG9vbHRpcFRleHQ/OiBzdHJpbmc7XG4gICAgLyoqIEljb24gc3ltYm9sIGlkZW50aWZpZXIgZGlzcGxheWVkIGF0IHRoZSBzdGFydCBvZiB0aGUgaXRlbSAqL1xuICAgIHN0YXJ0U3ltYm9sSWQ/OiBhZ29yYXB1bHNlU3ltYm9sO1xuICAgIC8qKiBDb2xvciB0aGVtZSBmb3IgdGhlIHN0YXJ0IHN5bWJvbCAqL1xuICAgIHN0YXJ0U3ltYm9sQ29sb3I/OiBTeW1ib2xDb2xvcjtcbiAgICAvKiogVG9vbHRpcCB0ZXh0IGZvciB0aGUgc3RhcnQgc3ltYm9sICovXG4gICAgc3RhcnRTeW1ib2xUb29sdGlwVGV4dD86IHN0cmluZztcbiAgICAvKiogSWNvbiBzeW1ib2wgaWRlbnRpZmllciBkaXNwbGF5ZWQgYXQgdGhlIGVuZCBvZiB0aGUgaXRlbSAqL1xuICAgIGVuZFN5bWJvbElkPzogYWdvcmFwdWxzZVN5bWJvbDtcbiAgICAvKiogVG9vbHRpcCB0ZXh0IGZvciB0aGUgZW5kIHN5bWJvbCAqL1xuICAgIGVuZFN5bWJvbFRvb2x0aXBUZXh0Pzogc3RyaW5nO1xuICAgIC8qKiBXaGV0aGVyIHRoZSBpdGVtIGlzIGRpc2FibGVkIGFuZCBub24taW50ZXJhY3RpdmUgKi9cbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgLyoqIFdoZXRoZXIgdG8gcmVuZGVyIHRoaXMgaXRlbSBhcyBhIHZpc3VhbCBkaXZpZGVyICovXG4gICAgZGl2aWRlcj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQSBkcm9wZG93biBjb21wb25lbnQgdGhhdCBkaXNwbGF5cyBhIGxpc3Qgb2YgYWN0aW9uYWJsZSBpdGVtcyB3aXRoIHN1cHBvcnQgZm9yIGljb25zLFxuICogYmFkZ2VzLCB0b29sdGlwcywgYW5kIGtleWJvYXJkIG5hdmlnYXRpb24uXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHNlbGVjdG9yOiAnYXAtYWN0aW9uLWRyb3Bkb3duJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYWN0aW9uLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9hY3Rpb24tZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtCYWRnZUNvbXBvbmVudCwgQ29tbW9uTW9kdWxlLCBTeW1ib2xDb21wb25lbnQsIFRvb2x0aXBEaXJlY3RpdmVdLFxuICAgIHByb3ZpZGVyczogW3dpdGhTeW1ib2xzKGFwSW5mbywgYXBGZWF0dXJlTG9jayldLFxufSlcbmV4cG9ydCBjbGFzcyBBY3Rpb25Ecm9wZG93bkNvbXBvbmVudCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvc2l0aW9uQnVpbGRlciA9IGluamVjdChPdmVybGF5UG9zaXRpb25CdWlsZGVyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cbiAgICBhY3Rpb25Ecm9wZG93blRlbXBsYXRlID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PignYWN0aW9uRHJvcGRvd25UZW1wbGF0ZScpO1xuICAgIHRyaWdnZXIgPSBjb250ZW50Q2hpbGQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCd0cmlnZ2VyJyk7XG5cbiAgICAvKiogQXJyYXkgb2YgaXRlbXMgdG8gZGlzcGxheSBpbiB0aGUgZHJvcGRvd24gbWVudSAqL1xuICAgIGl0ZW1zID0gaW5wdXQ8QWN0aW9uRHJvcGRvd25JdGVtW10+KFtdKTtcbiAgICAvKiogV2hldGhlciB0aGUgZHJvcGRvd24gaXMgZGlzYWJsZWQgYW5kIGNhbm5vdCBiZSBvcGVuZWQgKi9cbiAgICBkaXNhYmxlZCA9IGlucHV0KGZhbHNlKTtcbiAgICAvKiogV2hldGhlciB0byBlbmFibGUgbGFyZ2UgbW9kZSBzdHlsaW5nIGZvciB0aGUgZHJvcGRvd24gKi9cbiAgICBsYXJnZU1vZGVFbmFibGVkID0gaW5wdXQoZmFsc2UpO1xuICAgIC8qKiBXaGV0aGVyIHRvIHNob3cgYSBiYWNrZHJvcCB0aGF0IGNsb3NlcyB0aGUgZHJvcGRvd24gd2hlbiBjbGlja2VkICovXG4gICAgc2hvd0JhY2tkcm9wID0gaW5wdXQodHJ1ZSk7XG4gICAgLyoqIEN1c3RvbSB3aWR0aCBmb3IgdGhlIGRyb3Bkb3duIG1lbnUgaW4gcGl4ZWxzICovXG4gICAgY3VzdG9tV2lkdGggPSBpbnB1dDxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgICAvKiogRGVmYXVsdCBwb3NpdGlvbiBmb3IgdGhlIGRyb3Bkb3duIHJlbGF0aXZlIHRvIHRoZSB0cmlnZ2VyIGVsZW1lbnQgKi9cbiAgICBkZWZhdWx0UG9zaXRpb24gPSBpbnB1dDwncmlnaHQnIHwgJ2xlZnQnPigncmlnaHQnKTtcblxuICAgIC8qKiBFbWl0cyB3aGVuIGEgZHJvcGRvd24gaXRlbSBpcyBjbGlja2VkICovXG4gICAgaXRlbUNsaWNrID0gb3V0cHV0PEFjdGlvbkRyb3Bkb3duSXRlbT4oKTtcbiAgICAvKiogRW1pdHMgd2hlbiB0aGUgZHJvcGRvd24gbWVudSBpcyBvcGVuZWQgKi9cbiAgICBvcGVuZWQgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgICAvKiogRW1pdHMgd2hlbiB0aGUgZHJvcGRvd24gbWVudSBpcyBjbG9zZWQgKi9cbiAgICBjbG9zZWQgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICAgIHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgcG9ydGFsOiBUZW1wbGF0ZVBvcnRhbDx1bmtub3duPiB8IG51bGwgPSBudWxsO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZvY3VzZWRJbmRleCA9IHNpZ25hbCgtMSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGl0ZW1zV2l0aG91dERpdmlkZXJzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pdGVtcygpLmZpbHRlcihpdGVtID0+ICFpdGVtLmRpdmlkZXIpKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAvLyBTZXQgdXAga2V5Ym9hcmQgbmF2aWdhdGlvbiB3aGVuIGRyb3Bkb3duIG9wZW5zXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0dXBLZXlib2FyZE5hdmlnYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIE9wZW5zIHRoZSBkcm9wZG93biBtZW51IGF0IHRoZSBzcGVjaWZpZWQgdHJpZ2dlciBlbGVtZW50IG9yIGNvbXBvbmVudCdzIGVsZW1lbnQgKi9cbiAgICBvcGVuKHRyaWdnZXJFbGVtZW50PzogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWN0aW9uRHJvcGRvd25UZW1wbGF0ZSA9IHRoaXMuYWN0aW9uRHJvcGRvd25UZW1wbGF0ZSgpO1xuXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKCkgfHwgdGhpcy5pc09wZW4oKSB8fCAhYWN0aW9uRHJvcGRvd25UZW1wbGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gdHJpZ2dlckVsZW1lbnQgfHwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLmNyZWF0ZVBvc2l0aW9uU3RyYXRlZ3kodGFyZ2V0KTtcblxuICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogdGhpcy5zaG93QmFja2Ryb3AoKSxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICcnLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogJycsXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbChhY3Rpb25Ecm9wZG93blRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHRoaXMucG9ydGFsKTtcblxuICAgICAgICB0aGlzLmlzT3Blbi5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZm9jdXNlZEluZGV4LnNldCgtMSk7XG4gICAgICAgIHRoaXMub3BlbmVkLmVtaXQoKTtcblxuICAgICAgICB0aGlzLm92ZXJsYXlSZWZcbiAgICAgICAgICAgIC5iYWNrZHJvcENsaWNrKClcbiAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm92ZXJsYXlSZWZcbiAgICAgICAgICAgIC5rZXlkb3duRXZlbnRzKClcbiAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQ2xvc2VzIHRoZSBkcm9wZG93biBtZW51IGFuZCBjbGVhbnMgdXAgb3ZlcmxheSByZXNvdXJjZXMgKi9cbiAgICBjbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzT3BlbigpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucG9ydGFsID0gbnVsbDtcbiAgICAgICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5mb2N1c2VkSW5kZXguc2V0KC0xKTtcbiAgICAgICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuICAgIH1cblxuICAgIC8qKiBUb2dnbGVzIHRoZSBkcm9wZG93biBtZW51IG9wZW4gb3IgY2xvc2VkIHN0YXRlICovXG4gICAgdG9nZ2xlKHRyaWdnZXJFbGVtZW50PzogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub3Blbih0cmlnZ2VyRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogSGFuZGxlcyBpdGVtIGNsaWNrIGV2ZW50cywgZW1pdHRpbmcgdGhlIHNlbGVjdGVkIGl0ZW0gYW5kIGNsb3NpbmcgdGhlIGRyb3Bkb3duICovXG4gICAgb25JdGVtQ2xpY2soaXRlbTogQWN0aW9uRHJvcGRvd25JdGVtKTogdm9pZCB7XG4gICAgICAgIGlmIChpdGVtLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLml0ZW1DbGljay5lbWl0KGl0ZW0pO1xuXG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKiogSGFuZGxlcyBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgZHJvcGRvd24gbWVudSAqL1xuICAgIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuaXRlbXNXaXRob3V0RGl2aWRlcnMoKTtcbiAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5mb2N1c2VkSW5kZXgoKTtcbiAgICAgICAgbGV0IG5leHRJbmRleDogbnVtYmVyO1xuICAgICAgICBsZXQgcHJldkluZGV4OiBudW1iZXI7XG5cbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBuZXh0SW5kZXggPSBjdXJyZW50SW5kZXggPCBpdGVtcy5sZW5ndGggLSAxID8gY3VycmVudEluZGV4ICsgMSA6IDA7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkSW5kZXguc2V0KG5leHRJbmRleCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgcHJldkluZGV4ID0gY3VycmVudEluZGV4ID4gMCA/IGN1cnJlbnRJbmRleCAtIDEgOiBpdGVtcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNlZEluZGV4LnNldChwcmV2SW5kZXgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgICBjYXNlICcgJzpcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50SW5kZXggPj0gMCAmJiBjdXJyZW50SW5kZXggPCBpdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkl0ZW1DbGljayhpdGVtc1tjdXJyZW50SW5kZXhdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ1RhYic6XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU2hpZnQrVGFiIC0gbW92ZSB0byBwcmV2aW91cyBpdGVtXG4gICAgICAgICAgICAgICAgICAgIHByZXZJbmRleCA9IGN1cnJlbnRJbmRleCA+IDAgPyBjdXJyZW50SW5kZXggLSAxIDogaXRlbXMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkSW5kZXguc2V0KHByZXZJbmRleCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVGFiIC0gbW92ZSB0byBuZXh0IGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgbmV4dEluZGV4ID0gY3VycmVudEluZGV4IDwgaXRlbXMubGVuZ3RoIC0gMSA/IGN1cnJlbnRJbmRleCArIDEgOiAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzZWRJbmRleC5zZXQobmV4dEluZGV4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQ3JlYXRlcyBwb3NpdGlvbmluZyBzdHJhdGVneSBmb3IgdGhlIG92ZXJsYXkgYmFzZWQgb24gdHJpZ2dlciBlbGVtZW50IGFuZCBkZWZhdWx0IHBvc2l0aW9uICovXG4gICAgcHJpdmF0ZSBjcmVhdGVQb3NpdGlvblN0cmF0ZWd5KHRhcmdldDogSFRNTEVsZW1lbnQpOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgICAgICBjb25zdCBkZWZhdWx0UG9zaXRpb24gPSB0aGlzLmRlZmF1bHRQb3NpdGlvbigpO1xuICAgICAgICBjb25zdCBnYXAgPSA0O1xuXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uczogQ29ubmVjdGVkUG9zaXRpb25bXSA9XG4gICAgICAgICAgICBkZWZhdWx0UG9zaXRpb24gPT09ICdyaWdodCdcbiAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20tcmlnaHQgKGRlZmF1bHQpIC0gbGVmdCBib3JkZXIgYWxpZ25zIHdpdGggbGVmdCBzaWRlIG9mIHRyaWdnZXJcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiBnYXAsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20tbGVmdCAoaWYgbm90IGVub3VnaCBzcGFjZSBvbiByaWdodCkgLSByaWdodCBib3JkZXIgYWxpZ25zIHdpdGggcmlnaHQgc2lkZSBvZiB0cmlnZ2VyXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiBnYXAsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AtcmlnaHQgKGlmIG5vdCBlbm91Z2ggc3BhY2UgYmVsb3cpIC0gbGVmdCBib3JkZXIgYWxpZ25zIHdpdGggbGVmdCBzaWRlIG9mIHRyaWdnZXJcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAtZ2FwLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8gVG9wLWxlZnQgKGlmIG5vdCBlbm91Z2ggc3BhY2UgYmVsb3cgYW5kIG9uIHJpZ2h0KSAtIHJpZ2h0IGJvcmRlciBhbGlnbnMgd2l0aCByaWdodCBzaWRlIG9mIHRyaWdnZXJcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFg6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IC1nYXAsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20tbGVmdCAoZGVmYXVsdCkgLSByaWdodCBib3JkZXIgYWxpZ25zIHdpdGggcmlnaHQgc2lkZSBvZiB0cmlnZ2VyXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiBnYXAsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20tcmlnaHQgKGlmIG5vdCBlbm91Z2ggc3BhY2Ugb24gbGVmdCkgLSBsZWZ0IGJvcmRlciBhbGlnbnMgd2l0aCBsZWZ0IHNpZGUgb2YgdHJpZ2dlclxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFg6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IGdhcCxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIC8vIFRvcC1sZWZ0IChpZiBub3QgZW5vdWdoIHNwYWNlIGJlbG93KSAtIHJpZ2h0IGJvcmRlciBhbGlnbnMgd2l0aCByaWdodCBzaWRlIG9mIHRyaWdnZXJcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFg6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IC1nYXAsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AtcmlnaHQgKGlmIG5vdCBlbm91Z2ggc3BhY2UgYmVsb3cgYW5kIG9uIGxlZnQpIC0gbGVmdCBib3JkZXIgYWxpZ25zIHdpdGggbGVmdCBzaWRlIG9mIHRyaWdnZXJcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAtZ2FwLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnBvc2l0aW9uQnVpbGRlclxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGFyZ2V0KVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMocG9zaXRpb25zKVxuICAgICAgICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnModHJ1ZSlcbiAgICAgICAgICAgIC53aXRoUHVzaCh0cnVlKVxuICAgICAgICAgICAgLndpdGhHcm93QWZ0ZXJPcGVuKHRydWUpXG4gICAgICAgICAgICAud2l0aFZpZXdwb3J0TWFyZ2luKDgpO1xuICAgIH1cblxuICAgIC8qKiBTZXRzIHVwIGtleWJvYXJkIGV2ZW50IGhhbmRsaW5nIGZvciB0aGUgb3BlbmVkIGRyb3Bkb3duICovXG4gICAgcHJpdmF0ZSBzZXR1cEtleWJvYXJkTmF2aWdhdGlvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGtleWRvd25FdmVudHMgPSB0aGlzLm92ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpO1xuXG4gICAgICAgIGtleWRvd25FdmVudHMuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vbktleURvd24oZXZlbnQpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI2FjdGlvbkRyb3Bkb3duVGVtcGxhdGU+XG4gICAgPCEtLSBBY3Rpb24gZHJvcGRvd24gLS0+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImFwLWFjdGlvbi1kcm9wZG93bl9fY29udGVudFwiXG4gICAgICAgIHJvbGU9XCJtZW51XCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FjdGlvbiBkcm9wZG93bidcIlxuICAgICAgICBbY2xhc3MuYXAtYWN0aW9uLWRyb3Bkb3duX19jb250ZW50LS1kZWZhdWx0XT1cIiFsYXJnZU1vZGVFbmFibGVkKCkgJiYgIWN1c3RvbVdpZHRoKClcIlxuICAgICAgICBbY2xhc3MuYXAtYWN0aW9uLWRyb3Bkb3duX19jb250ZW50LS1sYXJnZV09XCJsYXJnZU1vZGVFbmFibGVkKClcIlxuICAgICAgICBbc3R5bGUud2lkdGhdPVwiY3VzdG9tV2lkdGgoKSA/IGN1c3RvbVdpZHRoKCkgKyAncHgnIDogdW5kZWZpbmVkXCJcbiAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIj5cbiAgICAgICAgPCEtLSBBY3Rpb24gZHJvcGRvd24gaXRlbXMgLS0+XG4gICAgICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXMoKTsgdHJhY2sgaXRlbS5sYWJlbCkge1xuICAgICAgICAgICAgPCEtLSBEaXZpZGVyIC0tPlxuICAgICAgICAgICAgQGlmIChpdGVtLmRpdmlkZXIpIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXAtYWN0aW9uLWRyb3Bkb3duX19kaXZpZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cInNlcGFyYXRvclwiPjwvZGl2PlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPCEtLSBBY3Rpb24gZHJvcGRvd24gaXRlbSAtLT5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwibWVudWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFwLWFjdGlvbi1kcm9wZG93bl9faXRlbVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hcC1hY3Rpb24tZHJvcGRvd25fX2l0ZW0tLWhhcy1kZXNjcmlwdGlvbl09XCJpdGVtLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFwLWFjdGlvbi1kcm9wZG93bl9faXRlbS0tZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hcC1hY3Rpb24tZHJvcGRvd25fX2l0ZW0tLWZvY3VzZWRdPVwiZm9jdXNlZEluZGV4KCkgPT09ICRpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hcC1hY3Rpb24tZHJvcGRvd25fX2l0ZW0tLXJlZC1tb2RlXT1cIml0ZW0ucmVkTW9kZUVuYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXAtYWN0aW9uLWRyb3Bkb3duX19pdGVtLS1mZWF0dXJlLWxvY2tdPVwiaXRlbS5mZWF0dXJlTG9ja0VuYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFthcFRvb2x0aXBdPVwiaXRlbS5pdGVtVG9vbHRpcFRleHRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTdGFydCBpY29uIC0tPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uc3RhcnRTeW1ib2xJZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFwLXN5bWJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXAtYWN0aW9uLWRyb3Bkb3duX19pdGVtLXN0YXJ0LWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cIml0ZW0uc3RhcnRTeW1ib2xDb2xvciA/IGl0ZW0uc3RhcnRTeW1ib2xDb2xvciA6IGl0ZW0ucmVkTW9kZUVuYWJsZWQgPyAncmVkJyA6ICdiYXNpYy1ncmV5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N5bWJvbElkXT1cIml0ZW0uc3RhcnRTeW1ib2xJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwVG9vbHRpcF09XCJpdGVtLnN0YXJ0U3ltYm9sVG9vbHRpcFRleHRcIiAvPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gTGFiZWwgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcC1hY3Rpb24tZHJvcGRvd25fX2l0ZW0tdGV4dC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcC1hY3Rpb24tZHJvcGRvd25fX2l0ZW0tbGFiZWwtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFwLWFjdGlvbi1kcm9wZG93bl9faXRlbS1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hcC1hY3Rpb24tZHJvcGRvd25fX2l0ZW0tbGFiZWwtLWJvbGRdPVwiaXRlbS5kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBCYWRnZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uYmFkZ2VMYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtYmFkZ2UgY29sb3I9XCJibHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmJhZGdlTGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcC1iYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRGVzY3JpcHRpb24gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXAtYWN0aW9uLWRyb3Bkb3duX19pdGVtLWRlc2NyaXB0aW9uXCI+e3sgaXRlbS5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBFbmQgaWNvbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLmVuZFN5bWJvbElkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXAtc3ltYm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhcC1hY3Rpb24tZHJvcGRvd25fX2l0ZW0tZW5kLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCIjODU4RkExXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3ltYm9sSWRdPVwiaXRlbS5lbmRTeW1ib2xJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwVG9vbHRpcF09XCJpdGVtLmVuZFN5bWJvbFRvb2x0aXBUZXh0XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8IS0tIEZlYXR1cmUgbG9jayBpY29uIC0tPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uZmVhdHVyZUxvY2tFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXAtc3ltYm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhcC1hY3Rpb24tZHJvcGRvd25fX2l0ZW0tZW5kLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwdXJwbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbElkPVwiZmVhdHVyZS1sb2NrXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
269
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9hY3Rpb24tZHJvcGRvd24vc3JjL2FjdGlvbi1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvYWN0aW9uLWRyb3Bkb3duL3NyYy9hY3Rpb24tZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBb0IsYUFBYSxFQUFFLE1BQU0sRUFBZSxlQUFlLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0gsT0FBTyxFQUF3RCxPQUFPLEVBQUUsc0JBQXNCLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUN6SSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFFTixTQUFTLEVBQ1QsZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFpQ3RDOzs7R0FHRztBQVVILE1BQU0sT0FBTyx1QkFBdUI7SUFDZixVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUIsZUFBZSxHQUFHLE1BQU0s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UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO3VHQXpSUSx1QkFBdUI7MkZBQXZCLHVCQUF1QixxOUJBRnJCLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQyw0UkNoRW5ELDh4SEFpRkEsOHZJRGxCYyxjQUFjLHVFQUFFLFlBQVksK0JBQUUsZUFBZSxzSEFBRSxnQkFBZ0I7OzJGQUdoRSx1QkFBdUI7a0JBVG5DLFNBQVM7c0NBQ1csdUJBQXVCLENBQUMsTUFBTSxZQUNyQyxvQkFBb0IsY0FHbEIsSUFBSSxXQUNQLENBQUMsY0FBYyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsYUFDL0QsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL2JhZGdlJztcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL3Rvb2x0aXAnO1xuaW1wb3J0IHsgYWdvcmFwdWxzZVN5bWJvbCwgYXBGZWF0dXJlTG9jaywgYXBJbmZvLCBTeW1ib2xDb2xvciwgU3ltYm9sQ29tcG9uZW50LCB3aXRoU3ltYm9scyB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLXN5bWJvbCc7XG5pbXBvcnQgeyBDb25uZWN0ZWRQb3NpdGlvbiwgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LCBPdmVybGF5LCBPdmVybGF5UG9zaXRpb25CdWlsZGVyLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBjb250ZW50Q2hpbGQsXG4gICAgZWZmZWN0LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIG91dHB1dCxcbiAgICBzaWduYWwsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgdmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25Ecm9wZG93bkl0ZW0ge1xuICAgIC8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGl0ZW0gKi9cbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIC8qKiBEaXNwbGF5IHRleHQgZm9yIHRoZSBpdGVtICovXG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgLyoqIFNlY29uZGFyeSB0ZXh0IGRpc3BsYXllZCBiZWxvdyB0aGUgbGFiZWwgKi9cbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICAvKiogVGV4dCBkaXNwbGF5ZWQgaW4gYSBiYWRnZSBuZXh0IHRvIHRoZSBpdGVtICovXG4gICAgYmFkZ2VMYWJlbD86IHN0cmluZztcbiAgICAvKiogV2hldGhlciB0byBzaG93IGEgZmVhdHVyZSBsb2NrIGljb24gKi9cbiAgICBmZWF0dXJlTG9ja0VuYWJsZWQ/OiBib29sZWFuO1xuICAgIC8qKiBXaGV0aGVyIHRvIGFwcGx5IHJlZCBzdHlsaW5nIGZvciBkZXN0cnVjdGl2ZSBhY3Rpb25zICovXG4gICAgcmVkTW9kZUVuYWJsZWQ/OiBib29sZWFuO1xuICAgIC8qKiBUb29sdGlwIHRleHQgZGlzcGxheWVkIHdoZW4gaG92ZXJpbmcgb3ZlciB0aGUgaXRlbSAqL1xuICAgIGl0ZW1Ub29sdGlwVGV4dD86IHN0cmluZztcbiAgICAvKiogSWNvbiBzeW1ib2wgaWRlbnRpZmllciBkaXNwbGF5ZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBpdGVtICovXG4gICAgc3RhcnRTeW1ib2xJZD86IGFnb3JhcHVsc2VTeW1ib2w7XG4gICAgLyoqIENvbG9yIHRoZW1lIGZvciB0aGUgc3RhcnQgc3ltYm9sICovXG4gICAgc3RhcnRTeW1ib2xDb2xvcj86IFN5bWJvbENvbG9yO1xuICAgIC8qKiBUb29sdGlwIHRleHQgZm9yIHRoZSBzdGFydCBzeW1ib2wgKi9cbiAgICBzdGFydFN5bWJvbFRvb2x0aXBUZXh0Pzogc3RyaW5nO1xuICAgIC8qKiBJY29uIHN5bWJvbCBpZGVudGlmaWVyIGRpc3BsYXllZCBhdCB0aGUgZW5kIG9mIHRoZSBpdGVtICovXG4gICAgZW5kU3ltYm9sSWQ/OiBhZ29yYXB1bHNlU3ltYm9sO1xuICAgIC8qKiBUb29sdGlwIHRleHQgZm9yIHRoZSBlbmQgc3ltYm9sICovXG4gICAgZW5kU3ltYm9sVG9vbHRpcFRleHQ/OiBzdHJpbmc7XG4gICAgLyoqIFdoZXRoZXIgdGhlIGl0ZW0gaXMgZGlzYWJsZWQgYW5kIG5vbi1pbnRlcmFjdGl2ZSAqL1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICAvKiogV2hldGhlciB0byBhZGQgYSBkaXZpZGVyIGJlZm9yZSB0aGlzIGl0ZW0gKi9cbiAgICBkaXZpZGVyRW5hYmxlZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQSBkcm9wZG93biBjb21wb25lbnQgdGhhdCBkaXNwbGF5cyBhIGxpc3Qgb2YgYWN0aW9uYWJsZSBpdGVtcyB3aXRoIHN1cHBvcnQgZm9yIGljb25zLFxuICogYmFkZ2VzLCB0b29sdGlwcywgYW5kIGtleWJvYXJkIG5hdmlnYXRpb24uXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHNlbGVjdG9yOiAnYXAtYWN0aW9uLWRyb3Bkb3duJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYWN0aW9uLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9hY3Rpb24tZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtCYWRnZUNvbXBvbmVudCwgQ29tbW9uTW9kdWxlLCBTeW1ib2xDb21wb25lbnQsIFRvb2x0aXBEaXJlY3RpdmVdLFxuICAgIHByb3ZpZGVyczogW3dpdGhTeW1ib2xzKGFwSW5mbywgYXBGZWF0dXJlTG9jayldLFxufSlcbmV4cG9ydCBjbGFzcyBBY3Rpb25Ecm9wZG93bkNvbXBvbmVudCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvc2l0aW9uQnVpbGRlciA9IGluamVjdChPdmVybGF5UG9zaXRpb25CdWlsZGVyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cbiAgICBhY3Rpb25Ecm9wZG93blRlbXBsYXRlID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PignYWN0aW9uRHJvcGRvd25UZW1wbGF0ZScpO1xuICAgIHRyaWdnZXIgPSBjb250ZW50Q2hpbGQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCd0cmlnZ2VyJyk7XG5cbiAgICAvKiogQXJyYXkgb2YgaXRlbXMgdG8gZGlzcGxheSBpbiB0aGUgZHJvcGRvd24gbWVudSAqL1xuICAgIGl0ZW1zID0gaW5wdXQ8QWN0aW9uRHJvcGRvd25JdGVtW10+KFtdKTtcbiAgICAvKiogV2hldGhlciB0aGUgZHJvcGRvd24gaXMgZGlzYWJsZWQgYW5kIGNhbm5vdCBiZSBvcGVuZWQgKi9cbiAgICBkaXNhYmxlZCA9IGlucHV0KGZhbHNlKTtcbiAgICAvKiogV2hldGhlciB0byBlbmFibGUgbGFyZ2UgbW9kZSBzdHlsaW5nIGZvciB0aGUgZHJvcGRvd24gKi9cbiAgICBsYXJnZU1vZGVFbmFibGVkID0gaW5wdXQoZmFsc2UpO1xuICAgIC8qKiBXaGV0aGVyIHRvIHNob3cgYSBiYWNrZHJvcCB0aGF0IGNsb3NlcyB0aGUgZHJvcGRvd24gd2hlbiBjbGlja2VkICovXG4gICAgc2hvd0JhY2tkcm9wID0gaW5wdXQodHJ1ZSk7XG4gICAgLyoqIEN1c3RvbSB3aWR0aCBmb3IgdGhlIGRyb3Bkb3duIG1lbnUgaW4gcGl4ZWxzICovXG4gICAgY3VzdG9tV2lkdGggPSBpbnB1dDxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgICAvKiogRGVmYXVsdCBwb3NpdGlvbiBmb3IgdGhlIGRyb3Bkb3duIHJlbGF0aXZlIHRvIHRoZSB0cmlnZ2VyIGVsZW1lbnQgKi9cbiAgICBkZWZhdWx0UG9zaXRpb24gPSBpbnB1dDwncmlnaHQnIHwgJ2xlZnQnPigncmlnaHQnKTtcblxuICAgIC8qKiBFbWl0cyB3aGVuIGEgZHJvcGRvd24gaXRlbSBpcyBjbGlja2VkICovXG4gICAgaXRlbUNsaWNrID0gb3V0cHV0PEFjdGlvbkRyb3Bkb3duSXRlbT4oKTtcbiAgICAvKiogRW1pdHMgd2hlbiB0aGUgZHJvcGRvd24gbWVudSBpcyBvcGVuZWQgKi9cbiAgICBvcGVuZWQgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgICAvKiogRW1pdHMgd2hlbiB0aGUgZHJvcGRvd24gbWVudSBpcyBjbG9zZWQgKi9cbiAgICBjbG9zZWQgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICAgIHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgcG9ydGFsOiBUZW1wbGF0ZVBvcnRhbDx1bmtub3duPiB8IG51bGwgPSBudWxsO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZvY3VzZWRJbmRleCA9IHNpZ25hbCgtMSk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgLy8gU2V0IHVwIGtleWJvYXJkIG5hdmlnYXRpb24gd2hlbiBkcm9wZG93biBvcGVuc1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldHVwS2V5Ym9hcmROYXZpZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBPcGVucyB0aGUgZHJvcGRvd24gbWVudSBhdCB0aGUgc3BlY2lmaWVkIHRyaWdnZXIgZWxlbWVudCBvciBjb21wb25lbnQncyBlbGVtZW50ICovXG4gICAgb3Blbih0cmlnZ2VyRWxlbWVudD86IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFjdGlvbkRyb3Bkb3duVGVtcGxhdGUgPSB0aGlzLmFjdGlvbkRyb3Bkb3duVGVtcGxhdGUoKTtcblxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCgpIHx8IHRoaXMuaXNPcGVuKCkgfHwgIWFjdGlvbkRyb3Bkb3duVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRhcmdldCA9IHRyaWdnZXJFbGVtZW50IHx8IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5jcmVhdGVQb3NpdGlvblN0cmF0ZWd5KHRhcmdldCk7XG5cbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IHRoaXMuc2hvd0JhY2tkcm9wKCksXG4gICAgICAgICAgICBiYWNrZHJvcENsYXNzOiAnJyxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICcnLFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5wb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwoYWN0aW9uRHJvcGRvd25UZW1wbGF0ZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaCh0aGlzLnBvcnRhbCk7XG5cbiAgICAgICAgdGhpcy5pc09wZW4uc2V0KHRydWUpO1xuICAgICAgICB0aGlzLmZvY3VzZWRJbmRleC5zZXQoLTEpO1xuICAgICAgICB0aGlzLm9wZW5lZC5lbWl0KCk7XG5cbiAgICAgICAgdGhpcy5vdmVybGF5UmVmXG4gICAgICAgICAgICAuYmFja2Ryb3BDbGljaygpXG4gICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5vdmVybGF5UmVmXG4gICAgICAgICAgICAua2V5ZG93bkV2ZW50cygpXG4gICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIENsb3NlcyB0aGUgZHJvcGRvd24gbWVudSBhbmQgY2xlYW5zIHVwIG92ZXJsYXkgcmVzb3VyY2VzICovXG4gICAgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc09wZW4oKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZiA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBvcnRhbCA9IG51bGw7XG4gICAgICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuZm9jdXNlZEluZGV4LnNldCgtMSk7XG4gICAgICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcbiAgICB9XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgZHJvcGRvd24gbWVudSBvcGVuIG9yIGNsb3NlZCBzdGF0ZSAqL1xuICAgIHRvZ2dsZSh0cmlnZ2VyRWxlbWVudD86IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzT3BlbigpKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9wZW4odHJpZ2dlckVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEhhbmRsZXMgaXRlbSBjbGljayBldmVudHMsIGVtaXR0aW5nIHRoZSBzZWxlY3RlZCBpdGVtIGFuZCBjbG9zaW5nIHRoZSBkcm9wZG93biAqL1xuICAgIG9uSXRlbUNsaWNrKGl0ZW06IEFjdGlvbkRyb3Bkb3duSXRlbSk6IHZvaWQge1xuICAgICAgICBpZiAoaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pdGVtQ2xpY2suZW1pdChpdGVtKTtcblxuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgLyoqIEhhbmRsZXMga2V5Ym9hcmQgbmF2aWdhdGlvbiB3aXRoaW4gdGhlIGRyb3Bkb3duIG1lbnUgKi9cbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zKCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuZm9jdXNlZEluZGV4KCk7XG4gICAgICAgIGxldCBuZXh0SW5kZXg6IG51bWJlcjtcbiAgICAgICAgbGV0IHByZXZJbmRleDogbnVtYmVyO1xuXG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgbmV4dEluZGV4ID0gY3VycmVudEluZGV4IDwgaXRlbXMubGVuZ3RoIC0gMSA/IGN1cnJlbnRJbmRleCArIDEgOiAwO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNlZEluZGV4LnNldChuZXh0SW5kZXgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHByZXZJbmRleCA9IGN1cnJlbnRJbmRleCA+IDAgPyBjdXJyZW50SW5kZXggLSAxIDogaXRlbXMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzZWRJbmRleC5zZXQocHJldkluZGV4KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgY2FzZSAnICc6XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudEluZGV4ID49IDAgJiYgY3VycmVudEluZGV4IDwgaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25JdGVtQ2xpY2soaXRlbXNbY3VycmVudEluZGV4XSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdUYWInOlxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNoaWZ0K1RhYiAtIG1vdmUgdG8gcHJldmlvdXMgaXRlbVxuICAgICAgICAgICAgICAgICAgICBwcmV2SW5kZXggPSBjdXJyZW50SW5kZXggPiAwID8gY3VycmVudEluZGV4IC0gMSA6IGl0ZW1zLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNlZEluZGV4LnNldChwcmV2SW5kZXgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRhYiAtIG1vdmUgdG8gbmV4dCBpdGVtXG4gICAgICAgICAgICAgICAgICAgIG5leHRJbmRleCA9IGN1cnJlbnRJbmRleCA8IGl0ZW1zLmxlbmd0aCAtIDEgPyBjdXJyZW50SW5kZXggKyAxIDogMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkSW5kZXguc2V0KG5leHRJbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIENyZWF0ZXMgcG9zaXRpb25pbmcgc3RyYXRlZ3kgZm9yIHRoZSBvdmVybGF5IGJhc2VkIG9uIHRyaWdnZXIgZWxlbWVudCBhbmQgZGVmYXVsdCBwb3NpdGlvbiAqL1xuICAgIHByaXZhdGUgY3JlYXRlUG9zaXRpb25TdHJhdGVneSh0YXJnZXQ6IEhUTUxFbGVtZW50KTogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5IHtcbiAgICAgICAgY29uc3QgZGVmYXVsdFBvc2l0aW9uID0gdGhpcy5kZWZhdWx0UG9zaXRpb24oKTtcbiAgICAgICAgY29uc3QgZ2FwID0gNDtcblxuICAgICAgICBjb25zdCBwb3NpdGlvbnM6IENvbm5lY3RlZFBvc2l0aW9uW10gPVxuICAgICAgICAgICAgZGVmYXVsdFBvc2l0aW9uID09PSAncmlnaHQnXG4gICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICAgICAgLy8gQm90dG9tLXJpZ2h0IChkZWZhdWx0KSAtIGxlZnQgYm9yZGVyIGFsaWducyB3aXRoIGxlZnQgc2lkZSBvZiB0cmlnZ2VyXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogZ2FwLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8gQm90dG9tLWxlZnQgKGlmIG5vdCBlbm91Z2ggc3BhY2Ugb24gcmlnaHQpIC0gcmlnaHQgYm9yZGVyIGFsaWducyB3aXRoIHJpZ2h0IHNpZGUgb2YgdHJpZ2dlclxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogZ2FwLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8gVG9wLXJpZ2h0IChpZiBub3QgZW5vdWdoIHNwYWNlIGJlbG93KSAtIGxlZnQgYm9yZGVyIGFsaWducyB3aXRoIGxlZnQgc2lkZSBvZiB0cmlnZ2VyXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogLWdhcCxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIC8vIFRvcC1sZWZ0IChpZiBub3QgZW5vdWdoIHNwYWNlIGJlbG93IGFuZCBvbiByaWdodCkgLSByaWdodCBib3JkZXIgYWxpZ25zIHdpdGggcmlnaHQgc2lkZSBvZiB0cmlnZ2VyXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAtZ2FwLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgLy8gQm90dG9tLWxlZnQgKGRlZmF1bHQpIC0gcmlnaHQgYm9yZGVyIGFsaWducyB3aXRoIHJpZ2h0IHNpZGUgb2YgdHJpZ2dlclxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogZ2FwLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8gQm90dG9tLXJpZ2h0IChpZiBub3QgZW5vdWdoIHNwYWNlIG9uIGxlZnQpIC0gbGVmdCBib3JkZXIgYWxpZ25zIHdpdGggbGVmdCBzaWRlIG9mIHRyaWdnZXJcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiBnYXAsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AtbGVmdCAoaWYgbm90IGVub3VnaCBzcGFjZSBiZWxvdykgLSByaWdodCBib3JkZXIgYWxpZ25zIHdpdGggcmlnaHQgc2lkZSBvZiB0cmlnZ2VyXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAtZ2FwLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8gVG9wLXJpZ2h0IChpZiBub3QgZW5vdWdoIHNwYWNlIGJlbG93IGFuZCBvbiBsZWZ0KSAtIGxlZnQgYm9yZGVyIGFsaWducyB3aXRoIGxlZnQgc2lkZSBvZiB0cmlnZ2VyXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogLWdhcCxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgXTtcblxuICAgICAgICByZXR1cm4gdGhpcy5wb3NpdGlvbkJ1aWxkZXJcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRhcmdldClcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25zKHBvc2l0aW9ucylcbiAgICAgICAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKHRydWUpXG4gICAgICAgICAgICAud2l0aFB1c2godHJ1ZSlcbiAgICAgICAgICAgIC53aXRoR3Jvd0FmdGVyT3Blbih0cnVlKVxuICAgICAgICAgICAgLndpdGhWaWV3cG9ydE1hcmdpbig4KTtcbiAgICB9XG5cbiAgICAvKiogU2V0cyB1cCBrZXlib2FyZCBldmVudCBoYW5kbGluZyBmb3IgdGhlIG9wZW5lZCBkcm9wZG93biAqL1xuICAgIHByaXZhdGUgc2V0dXBLZXlib2FyZE5hdmlnYXRpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBrZXlkb3duRXZlbnRzID0gdGhpcy5vdmVybGF5UmVmLmtleWRvd25FdmVudHMoKTtcblxuICAgICAgICBrZXlkb3duRXZlbnRzLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25LZXlEb3duKGV2ZW50KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNhY3Rpb25Ecm9wZG93blRlbXBsYXRlPlxuICAgIDwhLS0gQWN0aW9uIGRyb3Bkb3duIC0tPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJhcC1hY3Rpb24tZHJvcGRvd25fX2NvbnRlbnRcIlxuICAgICAgICByb2xlPVwibWVudVwiXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBY3Rpb24gZHJvcGRvd24nXCJcbiAgICAgICAgW2NsYXNzLmFwLWFjdGlvbi1kcm9wZG93bl9fY29udGVudC0tZGVmYXVsdF09XCIhbGFyZ2VNb2RlRW5hYmxlZCgpICYmICFjdXN0b21XaWR0aCgpXCJcbiAgICAgICAgW2NsYXNzLmFwLWFjdGlvbi1kcm9wZG93bl9fY29udGVudC0tbGFyZ2VdPVwibGFyZ2VNb2RlRW5hYmxlZCgpXCJcbiAgICAgICAgW3N0eWxlLndpZHRoXT1cImN1c3RvbVdpZHRoKCkgPyBjdXN0b21XaWR0aCgpICsgJ3B4JyA6IHVuZGVmaW5lZFwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCI+XG4gICAgICAgIDwhLS0gQWN0aW9uIGRyb3Bkb3duIGl0ZW1zIC0tPlxuICAgICAgICBAZm9yIChpdGVtIG9mIGl0ZW1zKCk7IHRyYWNrIGl0ZW0ubGFiZWwpIHtcbiAgICAgICAgICAgIDwhLS0gRGl2aWRlciAtLT5cbiAgICAgICAgICAgIEBpZiAoaXRlbS5kaXZpZGVyRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhcC1hY3Rpb24tZHJvcGRvd25fX2RpdmlkZXJcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwic2VwYXJhdG9yXCI+PC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8IS0tIEFjdGlvbiBkcm9wZG93biBpdGVtIC0tPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJtZW51aXRlbVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhcC1hY3Rpb24tZHJvcGRvd25fX2l0ZW1cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5hcC1hY3Rpb24tZHJvcGRvd25fX2l0ZW0tLWhhcy1kZXNjcmlwdGlvbl09XCJpdGVtLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYXAtYWN0aW9uLWRyb3Bkb3duX19pdGVtLS1kaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYXAtYWN0aW9uLWRyb3Bkb3duX19pdGVtLS1mb2N1c2VkXT1cImZvY3VzZWRJbmRleCgpID09PSAkaW5kZXhcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5hcC1hY3Rpb24tZHJvcGRvd25fX2l0ZW0tLXJlZC1tb2RlXT1cIml0ZW0ucmVkTW9kZUVuYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5hcC1hY3Rpb24tZHJvcGRvd25fX2l0ZW0tLWZlYXR1cmUtbG9ja109XCJpdGVtLmZlYXR1cmVMb2NrRW5hYmxlZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2FwVG9vbHRpcF09XCJpdGVtLml0ZW1Ub29sdGlwVGV4dFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBTdGFydCBpY29uIC0tPlxuICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5zdGFydFN5bWJvbElkKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcC1zeW1ib2xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXAtYWN0aW9uLWRyb3Bkb3duX19pdGVtLXN0YXJ0LWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJpdGVtLnN0YXJ0U3ltYm9sQ29sb3IgPyBpdGVtLnN0YXJ0U3ltYm9sQ29sb3IgOiBpdGVtLnJlZE1vZGVFbmFibGVkID8gJ3JlZCcgOiAnYmFzaWMtZ3JleSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N5bWJvbElkXT1cIml0ZW0uc3RhcnRTeW1ib2xJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXBUb29sdGlwXT1cIml0ZW0uc3RhcnRTeW1ib2xUb29sdGlwVGV4dFwiIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwhLS0gTGFiZWwgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwLWFjdGlvbi1kcm9wZG93bl9faXRlbS10ZXh0LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXAtYWN0aW9uLWRyb3Bkb3duX19pdGVtLWxhYmVsLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXAtYWN0aW9uLWRyb3Bkb3duX19pdGVtLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXAtYWN0aW9uLWRyb3Bkb3duX19pdGVtLWxhYmVsLS1ib2xkXT1cIml0ZW0uZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQmFkZ2UgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uYmFkZ2VMYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcC1iYWRnZSBjb2xvcj1cImJsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5iYWRnZUxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcC1iYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gRGVzY3JpcHRpb24gLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcC1hY3Rpb24tZHJvcGRvd25fX2l0ZW0tZGVzY3JpcHRpb25cIj57eyBpdGVtLmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPCEtLSBFbmQgaWNvbiAtLT5cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uZW5kU3ltYm9sSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwLXN5bWJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhcC1hY3Rpb24tZHJvcGRvd25fX2l0ZW0tZW5kLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiIzg1OEZBMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3ltYm9sSWRdPVwiaXRlbS5lbmRTeW1ib2xJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXBUb29sdGlwXT1cIml0ZW0uZW5kU3ltYm9sVG9vbHRpcFRleHRcIiAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8IS0tIEZlYXR1cmUgbG9jayBpY29uIC0tPlxuICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5mZWF0dXJlTG9ja0VuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwLXN5bWJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhcC1hY3Rpb24tZHJvcGRvd25fX2l0ZW0tZW5kLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHVycGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbElkPVwiZmVhdHVyZS1sb2NrXCIgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|