@design-system-rte/angular 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/badge/badge.component.mjs +7 -3
- package/esm2022/lib/components/breadcrumbs/breadcrumb-item/breadcrumb-item.component.mjs +1 -1
- package/esm2022/lib/components/breadcrumbs/breadcrumbs.component.mjs +2 -2
- package/esm2022/lib/components/chip/chip.component.mjs +4 -3
- package/esm2022/lib/components/dropdown/dropdown-item/dropdown-item.component.mjs +4 -3
- package/esm2022/lib/components/dropdown/dropdown.directive.mjs +8 -3
- package/esm2022/lib/components/segmented-control/segmented-control.component.mjs +1 -1
- package/esm2022/lib/components/select/select-footer.directive.mjs +17 -0
- package/esm2022/lib/components/select/select-header.directive.mjs +17 -0
- package/esm2022/lib/components/select/select.component.mjs +177 -39
- package/esm2022/lib/components/side-nav/nav-item/nav-item.component.mjs +2 -2
- package/esm2022/lib/components/side-nav/nav-menu/nav-menu.component.mjs +2 -2
- package/esm2022/lib/components/split-button/split-button.component.mjs +2 -2
- package/esm2022/lib/components/tab/tab-item/tab-item.component.mjs +1 -1
- package/esm2022/lib/components/tab/tab.component.mjs +2 -2
- package/fesm2022/design-system-rte-angular.mjs +225 -53
- package/fesm2022/design-system-rte-angular.mjs.map +1 -1
- package/lib/components/assistive-text/assistive-text.component.d.ts +1 -1
- package/lib/components/badge/badge.component.d.ts +3 -1
- package/lib/components/chip/chip.component.d.ts +2 -1
- package/lib/components/dropdown/dropdown.directive.d.ts +10 -1
- package/lib/components/segmented-control/segmented-control.component.d.ts +1 -1
- package/lib/components/select/select-footer.directive.d.ts +7 -0
- package/lib/components/select/select-header.directive.d.ts +7 -0
- package/lib/components/select/select.component.d.ts +35 -16
- package/lib/components/text-input/base-text-input/base-text-input.component.d.ts +1 -1
- package/package.json +2 -2
|
@@ -233,10 +233,10 @@ export class TabComponent {
|
|
|
233
233
|
}
|
|
234
234
|
}
|
|
235
235
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
236
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.14", type: TabComponent, isStandalone: true, selector: "rte-tab", inputs: { alignment: { classPropertyName: "alignment", publicName: "alignment", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, selectedTabId: { classPropertyName: "selectedTabId", publicName: "selectedTabId", isSignal: true, isRequired: false, transformFunction: null }, compactSpacing: { classPropertyName: "compactSpacing", publicName: "compactSpacing", isSignal: true, isRequired: false, transformFunction: null }, overflowType: { classPropertyName: "overflowType", publicName: "overflowType", isSignal: true, isRequired: false, transformFunction: null }, inverted: { classPropertyName: "inverted", publicName: "inverted", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { change: "change" }, viewQueries: [{ propertyName: "tabItemRefs", predicate: ["tabItem"], descendants: true, isSignal: true }, { propertyName: "containerRef", first: true, predicate: ["tabList"], descendants: true, isSignal: true }, { propertyName: "hoverIndicatorRefs", predicate: ["hoverIndicator"], descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"rte-tab-container\" [attr.data-direction]=\"direction()\">\n <div class=\"rte-tab-border-vertical\" aria-hidden=\"true\" role=\"presentation\" [attr.data-direction]=\"direction()\"></div>\n <div\n [ngStyle]=\"{\n position: 'relative',\n display: 'flex',\n 'align-items': 'center',\n 'flex-direction': direction() === 'horizontal' ? 'row' : 'column',\n }\"\n >\n <rte-icon-button\n *ngIf=\"isScrollable() && !shouldDisplayDropdown()\"\n aria-label=\"Previous tabs\"\n variant=\"transparent\"\n [name]=\"direction() === 'horizontal' ? 'arrow-chevron-left' : 'arrow-chevron-up'\"\n [ngStyle]=\"{\n opacity: canScrollBackward() ? '1' : '0',\n 'pointer-events': canScrollBackward() ? 'auto' : 'none',\n }\"\n (clickEvent)=\"scrollBackward()\"\n />\n <div\n #tabList\n role=\"tablist\"\n aria-label=\"Sample Tabs\"\n class=\"rte-tab\"\n [attr.data-alignment]=\"shouldDisplayDropdown() ? 'start' : alignment()\"\n [attr.data-direction]=\"direction()\"\n [attr.data-overflow-type]=\"overflowType()\"\n >\n <span class=\"rte-tab-selected-indicator\" [ngStyle]=\"tabItemSelectedIndicatorStyle()\"></span>\n <div\n *ngIf=\"shouldDisplayDropdown() && options().length\"\n rteDropdown\n [rteDropdownOffset]=\"10\"\n (menuEvent)=\"onClickTabItem($event.id)\"\n >\n <button\n rteDropdownTrigger\n class=\"rte-tab-dropdown-button\"\n [attr.data-inverted]=\"inverted()\"\n [attr.data-overflow-type]=\"overflowType()\"\n >\n <rte-icon *ngIf=\"selectedTab()?.icon\" appearance=\"filled\" [name]=\"selectedTab()?.icon!\"></rte-icon>\n <span *ngIf=\"selectedTab()?.label\">{{ selectedTab()?.label }}</span>\n <rte-badge\n *ngIf=\"selectedTab()?.badgeCount && selectedTab()?.badgeContent === 'number'\"\n [badgeType]=\"selectedTab()?.badgeType!\"\n [badgeContent]=\"selectedTab()?.badgeContent!\"\n [count]=\"selectedTab()?.badgeCount\"\n [simpleBadge]=\"true\"\n ></rte-badge>\n <rte-icon name=\"arrow-chevron-down\" appearance=\"outlined\"></rte-icon>\n </button>\n <rte-dropdown-menu [items]=\"dropdownFilteredOptions()\" />\n </div>\n <ng-container *ngFor=\"let option of options(); let idx = index\">\n <rte-tab-item\n #tabItem\n [option]=\"option\"\n [direction]=\"direction()\"\n [compactSpacing]=\"compactSpacing()\"\n [isSelected]=\"isSelected(option.id)\"\n [inverted]=\"inverted()\"\n [attr.data-hidden]=\"shouldDisplayDropdown()\"\n [isHidden]=\"shouldDisplayDropdown()\"\n (keydown)=\"onKeydownTabItem($event)\"\n (click)=\"onClickTabItem(option.id)\"\n ></rte-tab-item>\n </ng-container>\n </div>\n <rte-icon-button\n *ngIf=\"isScrollable() && !shouldDisplayDropdown()\"\n aria-label=\"Next tabs\"\n variant=\"transparent\"\n [name]=\"direction() === 'horizontal' ? 'arrow-chevron-right' : 'arrow-chevron-down'\"\n [ngStyle]=\"{\n opacity: canScrollForward() ? '1' : '0',\n 'pointer-events': canScrollForward() ? 'auto' : 'none',\n }\"\n (clickEvent)=\"scrollForward()\"\n />\n </div>\n <div\n class=\"rte-tab-border-horizontal\"\n aria-hidden=\"true\"\n role=\"presentation\"\n [attr.data-direction]=\"direction()\"\n [attr.data-compact-spacing]=\"compactSpacing()\"\n [attr.data-scrollable]=\"isScrollable() && overflowType() === 'scrollable'\"\n ></div>\n</div>\n", styles: [".rte-tab-container{position:relative;display:flex;flex-direction:column}.rte-tab-container[data-direction=vertical]{flex-direction:row;height:100%}.rte-tab{position:relative;display:flex;height:100%;gap:24px;justify-content:flex-start;padding-bottom:2px;margin-bottom:-2px;margin-left:-2px;scrollbar-width:none;width:100%;padding-top:2px;padding-left:2px;align-items:center}.rte-tab[data-direction=horizontal]{overflow-x:scroll}.rte-tab[data-direction=horizontal][data-overflow-type=dropdown]{overflow:hidden;margin-left:0}.rte-tab[data-direction=vertical]{flex-direction:column;border-bottom:none;gap:4px;height:100%;padding-right:2px;margin-left:-2px;width:max-content;align-items:start;margin-bottom:0}.rte-tab[data-direction=vertical] .rte-tab-selected-indicator{width:2px;transition:top .2s ease,height .2s ease}.rte-tab[data-alignment=center]{justify-content:center}.rte-tab .rte-tab-selected-indicator{position:absolute;bottom:0;height:2px;background:var(--background-brand-selected-default);transition:left .2s ease,width .2s ease;pointer-events:none;z-index:1}.rte-tab .rte-tab-separator{width:24px;flex-shrink:0}.rte-tab-border-horizontal{background-color:var(--background-neutral-regular-default);position:relative;height:2px}.rte-tab-border-horizontal[data-compact-spacing=true][data-scrollable=true]{bottom:5px}.rte-tab-border-horizontal[data-direction=vertical]{display:none}.rte-tab-border-vertical{background-color:var(--background-neutral-regular-default);position:relative;width:2px}.rte-tab-border-vertical[data-direction=horizontal]{display:none}.rte-tab-dropdown-button{font-feature-settings:\"liga\" off,\"clig\" off;font-style:normal;font-family:Arial;font-weight:700;font-size:14px;line-height:20px;letter-spacing:0px;color:var(--content-secondary);width:max-content;display:flex;align-items:center;gap:12px;background-color:transparent;border:none;cursor:pointer;padding:0;margin:12px}.rte-tab-dropdown-button:focus-visible{outline:2px solid var(--border-brand-focused);outline-offset:12px;z-index:1}.rte-tab-dropdown-button[data-inverted=true]{color:var(--content-primary-inverse)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: TabItemComponent, selector: "rte-tab-item", inputs: ["direction", "option", "compactSpacing", "isSelected", "handleKeydown", "inverted", "isHidden"], outputs: ["click"] }, { kind: "component", type: IconButtonComponent, selector: "rte-icon-button", inputs: ["disabled", "name", "size", "variant", "type", "appearance", "compactSpacing", "ariaLabel", "ariaLabelledBy", "badgeCount", "badgeContent", "badgeType", "badgeIcon", "customStyle"], outputs: ["clickEvent"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "directive", type: i2.DropdownDirective, selector: "[rteDropdown]", inputs: ["rteDropdownId", "rteDropdownPosition", "rteDropdownAlignment", "rteDropdownIsOpen", "rteDropdownOffset", "rteDropdownAutofocus", "rteDropdownAutoOpen", "rteDropdownWidth"], outputs: ["menuEvent", "clickedOutside", "closedDropdown"] }, { kind: "directive", type: i3.DropdownTriggerDirective, selector: "[rteDropdownTrigger]", inputs: ["rteDropdownTriggerActivateWithArrowDown"], outputs: ["dropdownKeyDown", "dropdownTriggered", "dropdownTriggerFocus", "dropdownTriggerClearContent", "dropdownTriggerOpenDropdown", "dropdownTriggerCloseDropdown"] }, { kind: "component", type: i4.DropdownMenuComponent, selector: "rte-dropdown-menu", inputs: ["items", "menuId", "isOpen", "width", "headerTemplate", "footerTemplate"], outputs: ["itemEvent", "closingMenu"] }, { kind: "component", type: IconComponent, selector: "rte-icon", inputs: ["name", "size", "color", "classes", "appearance"] }, { kind: "component", type: BadgeComponent, selector: "rte-badge", inputs: ["badgeType", "badgeSize", "badgeContent", "count", "icon", "simpleBadge"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
236
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.14", type: TabComponent, isStandalone: true, selector: "rte-tab", inputs: { alignment: { classPropertyName: "alignment", publicName: "alignment", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, selectedTabId: { classPropertyName: "selectedTabId", publicName: "selectedTabId", isSignal: true, isRequired: false, transformFunction: null }, compactSpacing: { classPropertyName: "compactSpacing", publicName: "compactSpacing", isSignal: true, isRequired: false, transformFunction: null }, overflowType: { classPropertyName: "overflowType", publicName: "overflowType", isSignal: true, isRequired: false, transformFunction: null }, inverted: { classPropertyName: "inverted", publicName: "inverted", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { change: "change" }, viewQueries: [{ propertyName: "tabItemRefs", predicate: ["tabItem"], descendants: true, isSignal: true }, { propertyName: "containerRef", first: true, predicate: ["tabList"], descendants: true, isSignal: true }, { propertyName: "hoverIndicatorRefs", predicate: ["hoverIndicator"], descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"rte-tab-container\" [attr.data-direction]=\"direction()\">\n <div class=\"rte-tab-border-vertical\" aria-hidden=\"true\" role=\"presentation\" [attr.data-direction]=\"direction()\"></div>\n <div\n [ngStyle]=\"{\n position: 'relative',\n display: 'flex',\n 'align-items': 'center',\n 'flex-direction': direction() === 'horizontal' ? 'row' : 'column',\n }\"\n >\n <rte-icon-button\n *ngIf=\"isScrollable() && !shouldDisplayDropdown()\"\n aria-label=\"Previous tabs\"\n variant=\"transparent\"\n [name]=\"direction() === 'horizontal' ? 'arrow-chevron-left' : 'arrow-chevron-up'\"\n [ngStyle]=\"{\n opacity: canScrollBackward() ? '1' : '0',\n 'pointer-events': canScrollBackward() ? 'auto' : 'none',\n }\"\n (clickEvent)=\"scrollBackward()\"\n />\n <div\n #tabList\n role=\"tablist\"\n aria-label=\"Sample Tabs\"\n class=\"rte-tab\"\n [attr.data-alignment]=\"shouldDisplayDropdown() ? 'start' : alignment()\"\n [attr.data-direction]=\"direction()\"\n [attr.data-overflow-type]=\"overflowType()\"\n >\n <span class=\"rte-tab-selected-indicator\" [ngStyle]=\"tabItemSelectedIndicatorStyle()\"></span>\n <div\n *ngIf=\"shouldDisplayDropdown() && options().length\"\n rteDropdown\n [rteDropdownOffset]=\"10\"\n (menuEvent)=\"onClickTabItem($event.id)\"\n >\n <button\n rteDropdownTrigger\n class=\"rte-tab-dropdown-button\"\n [attr.data-inverted]=\"inverted()\"\n [attr.data-overflow-type]=\"overflowType()\"\n >\n <rte-icon *ngIf=\"selectedTab()?.icon\" appearance=\"filled\" [name]=\"selectedTab()?.icon!\"></rte-icon>\n <span *ngIf=\"selectedTab()?.label\">{{ selectedTab()?.label }}</span>\n <rte-badge\n *ngIf=\"selectedTab()?.badgeCount && selectedTab()?.badgeContent === 'number'\"\n [badgeType]=\"selectedTab()?.badgeType!\"\n [badgeContent]=\"selectedTab()?.badgeContent!\"\n [count]=\"selectedTab()?.badgeCount\"\n [simpleBadge]=\"true\"\n ></rte-badge>\n <rte-icon name=\"arrow-chevron-down\" appearance=\"outlined\"></rte-icon>\n </button>\n <rte-dropdown-menu [items]=\"dropdownFilteredOptions()\" />\n </div>\n <ng-container *ngFor=\"let option of options(); let idx = index\">\n <rte-tab-item\n #tabItem\n [option]=\"option\"\n [direction]=\"direction()\"\n [compactSpacing]=\"compactSpacing()\"\n [isSelected]=\"isSelected(option.id)\"\n [inverted]=\"inverted()\"\n [attr.data-hidden]=\"shouldDisplayDropdown()\"\n [isHidden]=\"shouldDisplayDropdown()\"\n (keydown)=\"onKeydownTabItem($event)\"\n (click)=\"onClickTabItem(option.id)\"\n ></rte-tab-item>\n </ng-container>\n </div>\n <rte-icon-button\n *ngIf=\"isScrollable() && !shouldDisplayDropdown()\"\n aria-label=\"Next tabs\"\n variant=\"transparent\"\n [name]=\"direction() === 'horizontal' ? 'arrow-chevron-right' : 'arrow-chevron-down'\"\n [ngStyle]=\"{\n opacity: canScrollForward() ? '1' : '0',\n 'pointer-events': canScrollForward() ? 'auto' : 'none',\n }\"\n (clickEvent)=\"scrollForward()\"\n />\n </div>\n <div\n class=\"rte-tab-border-horizontal\"\n aria-hidden=\"true\"\n role=\"presentation\"\n [attr.data-direction]=\"direction()\"\n [attr.data-compact-spacing]=\"compactSpacing()\"\n [attr.data-scrollable]=\"isScrollable() && overflowType() === 'scrollable'\"\n ></div>\n</div>\n", styles: [".rte-tab-container{position:relative;display:flex;flex-direction:column}.rte-tab-container[data-direction=vertical]{flex-direction:row;height:100%}.rte-tab{position:relative;display:flex;height:100%;gap:24px;justify-content:flex-start;padding-bottom:2px;margin-bottom:-2px;margin-left:-2px;scrollbar-width:none;width:100%;padding-top:2px;padding-left:2px;align-items:center}.rte-tab[data-direction=horizontal]{overflow-x:scroll}.rte-tab[data-direction=horizontal][data-overflow-type=dropdown]{overflow:hidden;margin-left:0}.rte-tab[data-direction=vertical]{flex-direction:column;border-bottom:none;gap:4px;height:100%;padding-right:2px;margin-left:-2px;width:max-content;align-items:start;margin-bottom:0}.rte-tab[data-direction=vertical] .rte-tab-selected-indicator{width:2px;transition:top .2s ease,height .2s ease}.rte-tab[data-alignment=center]{justify-content:center}.rte-tab .rte-tab-selected-indicator{position:absolute;bottom:0;height:2px;background:var(--background-brand-selected-default);transition:left .2s ease,width .2s ease;pointer-events:none;z-index:1}.rte-tab .rte-tab-separator{width:24px;flex-shrink:0}.rte-tab-border-horizontal{background-color:var(--background-neutral-regular-default);position:relative;height:2px}.rte-tab-border-horizontal[data-compact-spacing=true][data-scrollable=true]{bottom:5px}.rte-tab-border-horizontal[data-direction=vertical]{display:none}.rte-tab-border-vertical{background-color:var(--background-neutral-regular-default);position:relative;width:2px}.rte-tab-border-vertical[data-direction=horizontal]{display:none}.rte-tab-dropdown-button{font-feature-settings:\"liga\" off,\"clig\" off;font-style:normal;font-family:Arial;font-weight:700;font-size:14px;line-height:20px;letter-spacing:0px;color:var(--content-secondary);width:max-content;display:flex;align-items:center;gap:12px;background-color:transparent;border:none;cursor:pointer;padding:0;margin:12px}.rte-tab-dropdown-button:focus-visible{outline:2px solid var(--border-brand-focused);outline-offset:12px;z-index:1}.rte-tab-dropdown-button[data-inverted=true]{color:var(--content-primary-inverse)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: TabItemComponent, selector: "rte-tab-item", inputs: ["direction", "option", "compactSpacing", "isSelected", "handleKeydown", "inverted", "isHidden"], outputs: ["click"] }, { kind: "component", type: IconButtonComponent, selector: "rte-icon-button", inputs: ["disabled", "name", "size", "variant", "type", "appearance", "compactSpacing", "ariaLabel", "ariaLabelledBy", "badgeCount", "badgeContent", "badgeType", "badgeIcon", "customStyle"], outputs: ["clickEvent"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "directive", type: i2.DropdownDirective, selector: "[rteDropdown]", inputs: ["rteDropdownId", "rteDropdownPosition", "rteDropdownAlignment", "rteDropdownIsOpen", "rteDropdownOffset", "rteDropdownAutofocus", "rteDropdownAutoOpen", "rteDropdownWidth", "rteCloseOnItemClick"], outputs: ["menuEvent", "clickedOutside", "closedDropdown", "menuChangeEvent"] }, { kind: "directive", type: i3.DropdownTriggerDirective, selector: "[rteDropdownTrigger]", inputs: ["rteDropdownTriggerActivateWithArrowDown"], outputs: ["dropdownKeyDown", "dropdownTriggered", "dropdownTriggerFocus", "dropdownTriggerClearContent", "dropdownTriggerOpenDropdown", "dropdownTriggerCloseDropdown"] }, { kind: "component", type: i4.DropdownMenuComponent, selector: "rte-dropdown-menu", inputs: ["items", "menuId", "isOpen", "width", "headerTemplate", "footerTemplate"], outputs: ["itemEvent", "closingMenu"] }, { kind: "component", type: IconComponent, selector: "rte-icon", inputs: ["name", "size", "color", "classes", "appearance"] }, { kind: "component", type: BadgeComponent, selector: "rte-badge", inputs: ["badgeType", "badgeSize", "badgeContent", "count", "icon", "simpleBadge", "withPlusSign"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
237
237
|
}
|
|
238
238
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TabComponent, decorators: [{
|
|
239
239
|
type: Component,
|
|
240
240
|
args: [{ selector: "rte-tab", imports: [CommonModule, TabItemComponent, IconButtonComponent, DropdownModule, IconComponent, BadgeComponent], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"rte-tab-container\" [attr.data-direction]=\"direction()\">\n <div class=\"rte-tab-border-vertical\" aria-hidden=\"true\" role=\"presentation\" [attr.data-direction]=\"direction()\"></div>\n <div\n [ngStyle]=\"{\n position: 'relative',\n display: 'flex',\n 'align-items': 'center',\n 'flex-direction': direction() === 'horizontal' ? 'row' : 'column',\n }\"\n >\n <rte-icon-button\n *ngIf=\"isScrollable() && !shouldDisplayDropdown()\"\n aria-label=\"Previous tabs\"\n variant=\"transparent\"\n [name]=\"direction() === 'horizontal' ? 'arrow-chevron-left' : 'arrow-chevron-up'\"\n [ngStyle]=\"{\n opacity: canScrollBackward() ? '1' : '0',\n 'pointer-events': canScrollBackward() ? 'auto' : 'none',\n }\"\n (clickEvent)=\"scrollBackward()\"\n />\n <div\n #tabList\n role=\"tablist\"\n aria-label=\"Sample Tabs\"\n class=\"rte-tab\"\n [attr.data-alignment]=\"shouldDisplayDropdown() ? 'start' : alignment()\"\n [attr.data-direction]=\"direction()\"\n [attr.data-overflow-type]=\"overflowType()\"\n >\n <span class=\"rte-tab-selected-indicator\" [ngStyle]=\"tabItemSelectedIndicatorStyle()\"></span>\n <div\n *ngIf=\"shouldDisplayDropdown() && options().length\"\n rteDropdown\n [rteDropdownOffset]=\"10\"\n (menuEvent)=\"onClickTabItem($event.id)\"\n >\n <button\n rteDropdownTrigger\n class=\"rte-tab-dropdown-button\"\n [attr.data-inverted]=\"inverted()\"\n [attr.data-overflow-type]=\"overflowType()\"\n >\n <rte-icon *ngIf=\"selectedTab()?.icon\" appearance=\"filled\" [name]=\"selectedTab()?.icon!\"></rte-icon>\n <span *ngIf=\"selectedTab()?.label\">{{ selectedTab()?.label }}</span>\n <rte-badge\n *ngIf=\"selectedTab()?.badgeCount && selectedTab()?.badgeContent === 'number'\"\n [badgeType]=\"selectedTab()?.badgeType!\"\n [badgeContent]=\"selectedTab()?.badgeContent!\"\n [count]=\"selectedTab()?.badgeCount\"\n [simpleBadge]=\"true\"\n ></rte-badge>\n <rte-icon name=\"arrow-chevron-down\" appearance=\"outlined\"></rte-icon>\n </button>\n <rte-dropdown-menu [items]=\"dropdownFilteredOptions()\" />\n </div>\n <ng-container *ngFor=\"let option of options(); let idx = index\">\n <rte-tab-item\n #tabItem\n [option]=\"option\"\n [direction]=\"direction()\"\n [compactSpacing]=\"compactSpacing()\"\n [isSelected]=\"isSelected(option.id)\"\n [inverted]=\"inverted()\"\n [attr.data-hidden]=\"shouldDisplayDropdown()\"\n [isHidden]=\"shouldDisplayDropdown()\"\n (keydown)=\"onKeydownTabItem($event)\"\n (click)=\"onClickTabItem(option.id)\"\n ></rte-tab-item>\n </ng-container>\n </div>\n <rte-icon-button\n *ngIf=\"isScrollable() && !shouldDisplayDropdown()\"\n aria-label=\"Next tabs\"\n variant=\"transparent\"\n [name]=\"direction() === 'horizontal' ? 'arrow-chevron-right' : 'arrow-chevron-down'\"\n [ngStyle]=\"{\n opacity: canScrollForward() ? '1' : '0',\n 'pointer-events': canScrollForward() ? 'auto' : 'none',\n }\"\n (clickEvent)=\"scrollForward()\"\n />\n </div>\n <div\n class=\"rte-tab-border-horizontal\"\n aria-hidden=\"true\"\n role=\"presentation\"\n [attr.data-direction]=\"direction()\"\n [attr.data-compact-spacing]=\"compactSpacing()\"\n [attr.data-scrollable]=\"isScrollable() && overflowType() === 'scrollable'\"\n ></div>\n</div>\n", styles: [".rte-tab-container{position:relative;display:flex;flex-direction:column}.rte-tab-container[data-direction=vertical]{flex-direction:row;height:100%}.rte-tab{position:relative;display:flex;height:100%;gap:24px;justify-content:flex-start;padding-bottom:2px;margin-bottom:-2px;margin-left:-2px;scrollbar-width:none;width:100%;padding-top:2px;padding-left:2px;align-items:center}.rte-tab[data-direction=horizontal]{overflow-x:scroll}.rte-tab[data-direction=horizontal][data-overflow-type=dropdown]{overflow:hidden;margin-left:0}.rte-tab[data-direction=vertical]{flex-direction:column;border-bottom:none;gap:4px;height:100%;padding-right:2px;margin-left:-2px;width:max-content;align-items:start;margin-bottom:0}.rte-tab[data-direction=vertical] .rte-tab-selected-indicator{width:2px;transition:top .2s ease,height .2s ease}.rte-tab[data-alignment=center]{justify-content:center}.rte-tab .rte-tab-selected-indicator{position:absolute;bottom:0;height:2px;background:var(--background-brand-selected-default);transition:left .2s ease,width .2s ease;pointer-events:none;z-index:1}.rte-tab .rte-tab-separator{width:24px;flex-shrink:0}.rte-tab-border-horizontal{background-color:var(--background-neutral-regular-default);position:relative;height:2px}.rte-tab-border-horizontal[data-compact-spacing=true][data-scrollable=true]{bottom:5px}.rte-tab-border-horizontal[data-direction=vertical]{display:none}.rte-tab-border-vertical{background-color:var(--background-neutral-regular-default);position:relative;width:2px}.rte-tab-border-vertical[data-direction=horizontal]{display:none}.rte-tab-dropdown-button{font-feature-settings:\"liga\" off,\"clig\" off;font-style:normal;font-family:Arial;font-weight:700;font-size:14px;line-height:20px;letter-spacing:0px;color:var(--content-secondary);width:max-content;display:flex;align-items:center;gap:12px;background-color:transparent;border:none;cursor:pointer;padding:0;margin:12px}.rte-tab-dropdown-button:focus-visible{outline:2px solid var(--border-brand-focused);outline-offset:12px;z-index:1}.rte-tab-dropdown-button[data-inverted=true]{color:var(--content-primary-inverse)}\n"] }]
|
|
241
241
|
}] });
|
|
242
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLXJ0ZS1saWIvc3JjL2xpYi9jb21wb25lbnRzL3RhYi90YWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHMtcnRlLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvdGFiL3RhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sWUFBWSxFQUdaLE1BQU0sRUFHTixTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUNMLGNBQWMsRUFDZCxjQUFjLEVBQ2QsZUFBZSxFQUNmLFlBQVksR0FDYixNQUFNLCtEQUErRCxDQUFDO0FBRXZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUUzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7O0FBVWpFLE1BQU0sT0FBTyxZQUFZO0lBUnpCO1FBU1csY0FBUyxHQUFHLEtBQUssQ0FBZSxPQUFPLENBQUMsQ0FBQztRQUN6QyxjQUFTLEdBQUcsS0FBSyxDQUFZLFlBQVksQ0FBQyxDQUFDO1FBQzNDLFlBQU8sR0FBRyxLQUFLLENBQXNCLEVBQUUsQ0FBQyxDQUFDO1FB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QkFBc0IsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLGdCQUFnQixDQUFDLENBQUM7UUFDckUsQ0FBQztJQUNILENBQUM7SUFDTywwQkFBMEI7UUFDaEMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsYUFBYSxDQUFDO1FBQ2xFLElBQUksc0JBQXNCLEVBQUUsQ0FBQztZQUMzQixNQUFNLG1CQUFtQixHQUN2QixzQkFBc0IsQ0FBQyxZQUFZLEdBQUcsc0JBQXNCLENBQUMsWUFBWSxHQUFHLHNCQUFzQixDQUFDLFNBQVM7Z0JBQzVHLENBQUMsQ0FBQztZQUNKLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLG1CQUFtQixDQUFDLENBQUM7UUFDM0UsQ0FBQztJQUNILENBQUM7K0dBMVFVLFlBQVk7bUdBQVosWUFBWSx5M0NDMUN6Qix1bkhBNEZBLHNuRUR4RFksWUFBWSxxVkFBRSxnQkFBZ0IsdUxBQUUsbUJBQW1CLG1SQUFFLGNBQWMsMjJCQUFFLGFBQWEsaUhBQUUsY0FBYzs7NEZBTWpHLFlBQVk7a0JBUnhCLFNBQVM7K0JBQ0UsU0FBUyxXQUNWLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsY0FBYyxDQUFDLGNBQ2pHLElBQUksbUJBR0MsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGlucHV0LFxuICBjb21wdXRlZCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIG91dHB1dCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgT25DaGFuZ2VzLFxuICB2aWV3Q2hpbGQsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gXCJAZGVzaWduLXN5c3RlbS1ydGUvY29yZS9jb21wb25lbnRzL2NvbW1vbi9jb21tb24tdHlwZXNcIjtcbmltcG9ydCB7IFRhYkFsaWdubWVudCwgVGFiSXRlbVByb3BzLCBUYWJQcm9wcyB9IGZyb20gXCJAZGVzaWduLXN5c3RlbS1ydGUvY29yZS9jb21wb25lbnRzL3RhYi90YWIuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBzY3JvbGxUb1NlbGVjdGVkVGFiIH0gZnJvbSBcIkBkZXNpZ24tc3lzdGVtLXJ0ZS9jb3JlL2NvbXBvbmVudHMvdGFiL3RhYi51dGlsc1wiO1xuaW1wb3J0IHtcbiAgQVJST1dfRE9XTl9LRVksXG4gIEFSUk9XX0xFRlRfS0VZLFxuICBBUlJPV19SSUdIVF9LRVksXG4gIEFSUk9XX1VQX0tFWSxcbn0gZnJvbSBcIkBkZXNpZ24tc3lzdGVtLXJ0ZS9jb3JlL2NvbnN0YW50cy9rZXlib2FyZC9rZXlib2FyZC5jb25zdGFudHNcIjtcblxuaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQgfSBmcm9tIFwiLi4vYmFkZ2UvYmFkZ2UuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBEcm9wZG93bk1vZHVsZSB9IGZyb20gXCIuLi9kcm9wZG93blwiO1xuaW1wb3J0IHsgRHJvcGRvd25JdGVtQ29uZmlnIH0gZnJvbSBcIi4uL2Ryb3Bkb3duL2Ryb3Bkb3duLnR5cGVzXCI7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSBcIi4uL2ljb24vaWNvbi5jb21wb25lbnRcIjtcbmltcG9ydCB7IEljb25CdXR0b25Db21wb25lbnQgfSBmcm9tIFwiLi4vaWNvbi1idXR0b24vaWNvbi1idXR0b24uY29tcG9uZW50XCI7XG5cbmltcG9ydCB7IFRhYkl0ZW1Db21wb25lbnQgfSBmcm9tIFwiLi90YWItaXRlbS90YWItaXRlbS5jb21wb25lbnRcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcInJ0ZS10YWJcIixcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVGFiSXRlbUNvbXBvbmVudCwgSWNvbkJ1dHRvbkNvbXBvbmVudCwgRHJvcGRvd25Nb2R1bGUsIEljb25Db21wb25lbnQsIEJhZGdlQ29tcG9uZW50XSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGVVcmw6IFwiLi90YWIuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmw6IFwiLi90YWIuY29tcG9uZW50LnNjc3NcIixcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFRhYkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcmVhZG9ubHkgYWxpZ25tZW50ID0gaW5wdXQ8VGFiQWxpZ25tZW50PihcInN0YXJ0XCIpO1xuICByZWFkb25seSBkaXJlY3Rpb24gPSBpbnB1dDxEaXJlY3Rpb24+KFwiaG9yaXpvbnRhbFwiKTtcbiAgcmVhZG9ubHkgb3B0aW9ucyA9IGlucHV0PFRhYlByb3BzW1wib3B0aW9uc1wiXT4oW10pO1xuICByZWFkb25seSBzZWxlY3RlZFRhYklkID0gaW5wdXQ8VGFiUHJvcHNbXCJzZWxlY3RlZFRhYklkXCJdPigpO1xuICByZWFkb25seSBjb21wYWN0U3BhY2luZyA9IGlucHV0PFRhYlByb3BzW1wiY29tcGFjdFNwYWNpbmdcIl0+KGZhbHNlKTtcbiAgcmVhZG9ubHkgb3ZlcmZsb3dUeXBlID0gaW5wdXQ8VGFiUHJvcHNbXCJvdmVyZmxvd1R5cGVcIl0+KFwic2Nyb2xsYWJsZVwiKTtcbiAgcmVhZG9ubHkgaW52ZXJ0ZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgc2xpZGVyTGVmdCA9IHNpZ25hbCgwKTtcbiAgcmVhZG9ubHkgc2xpZGVyV2lkdGggPSBzaWduYWwoMCk7XG4gIHJlYWRvbmx5IHNsaWRlclRvcCA9IHNpZ25hbCgwKTtcbiAgcmVhZG9ubHkgc2xpZGVySGVpZ2h0ID0gc2lnbmFsKDApO1xuXG4gIHJlYWRvbmx5IHRhYkl0ZW1SZWZzID0gdmlld0NoaWxkcmVuPFRhYkl0ZW1Db21wb25lbnQ+KFwidGFiSXRlbVwiKTtcbiAgcmVhZG9ubHkgY29udGFpbmVyUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PihcInRhYkxpc3RcIik7XG4gIHJlYWRvbmx5IGhvdmVySW5kaWNhdG9yUmVmcyA9IHZpZXdDaGlsZHJlbjxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj4oXCJob3ZlckluZGljYXRvclwiKTtcblxuICByZWFkb25seSBzZWxlY3RlZFRhYlJlZiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBpZHggPSB0aGlzLm9wdGlvbnMoKS5maW5kSW5kZXgoKG9wdCkgPT4gb3B0LmlkID09PSB0aGlzLnNlbGVjdGVkVGFiSWQoKSk7XG4gICAgY29uc3QgdGFiSXRlbSA9IHRoaXMudGFiSXRlbVJlZnMoKVtpZHhdO1xuICAgIHJldHVybiB0YWJJdGVtO1xuICB9KTtcblxuICByZWFkb25seSBob3ZlckluZGljYXRvclN0eWxlID0gc2lnbmFsPHtcbiAgICB3aWR0aD86IG51bWJlcjtcbiAgICBsZWZ0PzogbnVtYmVyO1xuICAgIHRvcD86IG51bWJlcjtcbiAgICBoZWlnaHQ/OiBudW1iZXI7XG4gICAgb3BhY2l0eT86IG51bWJlcjtcbiAgfSB8IG51bGw+KG51bGwpO1xuXG4gIHJlYWRvbmx5IGNoYW5nZSA9IG91dHB1dDxzdHJpbmc+KCk7XG5cbiAgcmVhZG9ubHkgaXNTY3JvbGxhYmxlID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpc092ZXJmbG93aW5nTGVmdCA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNPdmVyZmxvd2luZ1JpZ2h0ID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpc092ZXJmbG93aW5nVG9wID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpc092ZXJmbG93aW5nQm90dG9tID0gc2lnbmFsKGZhbHNlKTtcblxuICByZWFkb25seSBjYW5TY3JvbGxCYWNrd2FyZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5pc092ZXJmbG93aW5nTGVmdCgpIHx8IHRoaXMuaXNPdmVyZmxvd2luZ1RvcCgpO1xuICB9KTtcblxuICByZWFkb25seSBjYW5TY3JvbGxGb3J3YXJkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmlzT3ZlcmZsb3dpbmdSaWdodCgpIHx8IHRoaXMuaXNPdmVyZmxvd2luZ0JvdHRvbSgpO1xuICB9KTtcblxuICByZWFkb25seSBpc0hvcml6b250YWwgPSBjb21wdXRlZChcbiAgICAoKSA9PiB0aGlzLmRpcmVjdGlvbigpID09PSBcImhvcml6b250YWxcIiAmJiAodGhpcy5pc092ZXJmbG93aW5nUmlnaHQoKSB8fCB0aGlzLmlzT3ZlcmZsb3dpbmdMZWZ0KCkpLFxuICApO1xuXG4gIHJlYWRvbmx5IHNob3VsZERpc3BsYXlEcm9wZG93biA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3ZlcmZsb3dUeXBlKCkgPT09IFwiZHJvcGRvd25cIiAmJiB0aGlzLmlzSG9yaXpvbnRhbCgpKTtcblxuICByZWFkb25seSBzZWxlY3RlZFRhYiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zKCkuZmluZCgob3B0aW9uKSA9PiBvcHRpb24uaWQgPT09IHRoaXMuc2VsZWN0ZWRUYWJJZCgpKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGRyb3Bkb3duRmlsdGVyZWRPcHRpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMoKS5maWx0ZXIoKG9wdGlvbikgPT4gb3B0aW9uLmlkICE9PSB0aGlzLnNlbGVjdGVkVGFiSWQoKSkgYXMgRHJvcGRvd25JdGVtQ29uZmlnW107XG4gIH0pO1xuXG4gIGRpc3BsYXlCYWRnZSA9IChvcHRpb246IFRhYkl0ZW1Qcm9wcyk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiAoXG4gICAgICAhIW9wdGlvbi5zaG93QmFkZ2UgfHxcbiAgICAgIChvcHRpb24uYmFkZ2VDb3VudCAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi5iYWRnZUNvdW50ID4gMCAmJiBvcHRpb24uYmFkZ2VDb250ZW50ID09PSBcIm51bWJlclwiKSB8fFxuICAgICAgKG9wdGlvbi5iYWRnZUNvbnRlbnQgPT09IFwiaWNvblwiICYmICEhb3B0aW9uLmJhZGdlSWNvbilcbiAgICApO1xuICB9O1xuXG4gIGlzU2VsZWN0ZWQoaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVGFiSWQoKSA9PT0gaWQ7XG4gIH1cblxuICByZWFkb25seSB0YWJJdGVtU2VsZWN0ZWRJbmRpY2F0b3JTdHlsZSA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgbGVmdDogYCR7dGhpcy5zaG91bGREaXNwbGF5RHJvcGRvd24oKSA/IDAgOiB0aGlzLnNsaWRlckxlZnQoKX1weGAsXG4gICAgdG9wOiBgJHt0aGlzLnNsaWRlclRvcCgpfXB4YCxcbiAgICB3aWR0aDogYCR7dGhpcy5zbGlkZXJXaWR0aCgpICsgKHRoaXMuc2hvdWxkRGlzcGxheURyb3Bkb3duKCkgPyAzMiA6IDApfXB4YCxcbiAgICBoZWlnaHQ6IGAke3RoaXMuc2xpZGVySGVpZ2h0KCl9cHhgLFxuICB9KSk7XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRUYWJJdGVtSW5kaWNhdG9yKCk7XG4gICAgdGhpcy5jb21wdXRlU2Nyb2xsYWJsZVNpZ25hbHMoKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB0aGlzLnVwZGF0ZVNlbGVjdGVkVGFiSXRlbUluZGljYXRvci5iaW5kKHRoaXMpKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB0aGlzLmNvbXB1dGVTY3JvbGxhYmxlU2lnbmFscy5iaW5kKHRoaXMpKTtcbiAgICBpZiAodGhpcy5jb250YWluZXJSZWYoKSkge1xuICAgICAgdGhpcy5jb250YWluZXJSZWYoKT8ubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHRoaXMuY29tcHV0ZVNjcm9sbGFibGVTaWduYWxzLmJpbmQodGhpcykpO1xuICAgIH1cbiAgICB0aGlzLmhvdmVySW5kaWNhdG9yUmVmcygpLmZvckVhY2goKGhvdmVySW5kaWNhdG9yKSA9PiB7XG4gICAgICBob3ZlckluZGljYXRvci5uYXRpdmVFbGVtZW50LnN0eWxlLm9wYWNpdHkgPSBcIjBcIjtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMudXBkYXRlU2VsZWN0ZWRUYWJJdGVtSW5kaWNhdG9yLmJpbmQodGhpcykpO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMuY29tcHV0ZVNjcm9sbGFibGVTaWduYWxzLmJpbmQodGhpcykpO1xuICAgIGlmICh0aGlzLmNvbnRhaW5lclJlZigpKSB7XG4gICAgICB0aGlzLmNvbnRhaW5lclJlZigpPy5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgdGhpcy5jb21wdXRlU2Nyb2xsYWJsZVNpZ25hbHMuYmluZCh0aGlzKSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzW1wic2VsZWN0ZWRUYWJJZFwiXSkge1xuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFRhYkl0ZW1JbmRpY2F0b3IoKTtcbiAgICB9XG4gIH1cblxuICBvbktleWRvd25UYWJJdGVtID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgY29uc3QgaXNWZXJ0aWNhbCA9IHRoaXMuZGlyZWN0aW9uKCkgPT09IFwidmVydGljYWxcIjtcblxuICAgIGNvbnN0IGlzRG93bktleVByZXNzZWQgPSBpc1ZlcnRpY2FsICYmIGV2ZW50LmtleSA9PT0gQVJST1dfRE9XTl9LRVk7XG4gICAgY29uc3QgaXNVcEtleVByZXNzZWQgPSBpc1ZlcnRpY2FsICYmIGV2ZW50LmtleSA9PT0gQVJST1dfVVBfS0VZO1xuICAgIGNvbnN0IGlzUmlnaHRLZXlQcmVzc2VkID0gIWlzVmVydGljYWwgJiYgZXZlbnQua2V5ID09PSBBUlJPV19SSUdIVF9LRVk7XG4gICAgY29uc3QgaXNMZWZ0S2V5UHJlc3NlZCA9ICFpc1ZlcnRpY2FsICYmIGV2ZW50LmtleSA9PT0gQVJST1dfTEVGVF9LRVk7XG5cbiAgICBjb25zdCBpc0Fycm93TmV4dCA9IGlzRG93bktleVByZXNzZWQgfHwgaXNSaWdodEtleVByZXNzZWQ7XG4gICAgY29uc3QgaXNBcnJvd1ByZXYgPSBpc1VwS2V5UHJlc3NlZCB8fCBpc0xlZnRLZXlQcmVzc2VkO1xuXG4gICAgaWYgKGlzQXJyb3dOZXh0IHx8IGlzQXJyb3dQcmV2KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5mb2N1c0l0ZW0oaXNBcnJvd05leHQgPyBcIm5leHRcIiA6IFwicHJldmlvdXNcIik7XG4gICAgfVxuICB9O1xuXG4gIG9uQ2xpY2tUYWJJdGVtID0gKGlkOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoaWQgIT09IHRoaXMuc2VsZWN0ZWRUYWJJZCgpKSB7XG4gICAgICB0aGlzLmNoYW5nZS5lbWl0KGlkKTtcbiAgICAgIGlmICghdGhpcy5zaG91bGREaXNwbGF5RHJvcGRvd24oKSkge1xuICAgICAgICBjb25zdCBuZXdUYWIgPSB0aGlzLmdldFRhYkl0ZW0oaWQpPy50YWJJdGVtUmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChuZXdUYWIpIHtcbiAgICAgICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lclJlZigpPy5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgIHNjcm9sbFRvU2VsZWN0ZWRUYWIobmV3VGFiLCBjb250YWluZXIsIHRoaXMuZGlyZWN0aW9uKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBzY3JvbGxCYWNrd2FyZCgpIHtcbiAgICBpZiAodGhpcy5jb250YWluZXJSZWYoKT8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgY29uc3Qgc2Nyb2xsT2JqZWN0ID0gdGhpcy5kaXJlY3Rpb24oKSA9PT0gXCJob3Jpem9udGFsXCIgPyB7IGxlZnQ6IC0zMDAgfSA6IHsgdG9wOiAtMzAwIH07XG4gICAgICB0aGlzLmNvbnRhaW5lclJlZigpPy5uYXRpdmVFbGVtZW50LnNjcm9sbEJ5KHsgLi4uc2Nyb2xsT2JqZWN0LCBiZWhhdmlvcjogXCJzbW9vdGhcIiB9KTtcbiAgICB9XG4gIH1cblxuICBzY3JvbGxGb3J3YXJkKCkge1xuICAgIGlmICh0aGlzLmNvbnRhaW5lclJlZigpICYmIHRoaXMuY29udGFpbmVyUmVmKCk/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IHNjcm9sbE9iamVjdCA9IHRoaXMuZGlyZWN0aW9uKCkgPT09IFwiaG9yaXpvbnRhbFwiID8geyBsZWZ0OiAzMDAgfSA6IHsgdG9wOiAzMDAgfTtcbiAgICAgIHRoaXMuY29udGFpbmVyUmVmKCk/Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsQnkoeyAuLi5zY3JvbGxPYmplY3QsIGJlaGF2aW9yOiBcInNtb290aFwiIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGFiSXRlbSA9IChpZDogc3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMudGFiSXRlbVJlZnMoKS5maW5kKCh0YWIpID0+IHRhYi5vcHRpb24oKT8uaWQgPT09IGlkKTtcbiAgfTtcblxuICBwcml2YXRlIGZvY3VzSXRlbSA9IChkaXJlY3Rpb246IFwibmV4dFwiIHwgXCJwcmV2aW91c1wiKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy50YWJJdGVtUmVmcygpLmZpbmRJbmRleCgodGFiKSA9PiB0YWIgPT09IHRoaXMuc2VsZWN0ZWRUYWJSZWYoKSk7XG4gICAgY29uc3QgbWF4SXRlcmF0aW9ucyA9IHRoaXMudGFiSXRlbVJlZnMoKS5sZW5ndGg7XG4gICAgbGV0IG5ld0luZGV4ID0gdGhpcy5jb21wdXRlTmV4dEl0ZW1JbmRleChjdXJyZW50SW5kZXgsIG1heEl0ZXJhdGlvbnMsIGRpcmVjdGlvbik7XG4gICAgbGV0IGNvdW50ZXIgPSAwO1xuICAgIHdoaWxlIChcbiAgICAgIHRoaXMudGFiSXRlbVJlZnMoKVtuZXdJbmRleF0udGFiSXRlbVJlZigpPy5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZShcImRhdGEtZGlzYWJsZWRcIikgPT09IFwidHJ1ZVwiICYmXG4gICAgICBjb3VudGVyIDwgbWF4SXRlcmF0aW9uc1xuICAgICkge1xuICAgICAgbmV3SW5kZXggPSB0aGlzLmNvbXB1dGVOZXh0SXRlbUluZGV4KG5ld0luZGV4LCBtYXhJdGVyYXRpb25zLCBkaXJlY3Rpb24pO1xuICAgICAgY291bnRlcisrO1xuICAgIH1cbiAgICB0aGlzLnRhYkl0ZW1SZWZzKClbbmV3SW5kZXhdLnRhYkl0ZW1SZWYoKT8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIHRoaXMudGFiSXRlbVJlZnMoKVtuZXdJbmRleF0udGFiSXRlbVJlZigpPy5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBjb21wdXRlTmV4dEl0ZW1JbmRleChjdXJyZW50SW5kZXg6IG51bWJlciwgdG90YWxJdGVtczogbnVtYmVyLCBkaXJlY3Rpb246IFwibmV4dFwiIHwgXCJwcmV2aW91c1wiKSB7XG4gICAgcmV0dXJuIGRpcmVjdGlvbiA9PT0gXCJuZXh0XCIgPyAoY3VycmVudEluZGV4ICsgMSkgJSB0b3RhbEl0ZW1zIDogKGN1cnJlbnRJbmRleCAtIDEgKyB0b3RhbEl0ZW1zKSAlIHRvdGFsSXRlbXM7XG4gIH1cblxuICBwcml2YXRlIGNvbXB1dGVJbmRpY2F0b3JTdHlsZSh0YWJJdGVtOiBIVE1MRWxlbWVudCkge1xuICAgIGlmICh0aGlzLmRpcmVjdGlvbigpID09PSBcImhvcml6b250YWxcIikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGg6IHRhYkl0ZW0ub2Zmc2V0V2lkdGgsXG4gICAgICAgIGxlZnQ6IHRhYkl0ZW0ub2Zmc2V0TGVmdCxcbiAgICAgICAgdG9wOiB0YWJJdGVtLm9mZnNldFRvcCArIHRhYkl0ZW0ub2Zmc2V0SGVpZ2h0LFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGVmdDogMCxcbiAgICAgICAgdG9wOiB0YWJJdGVtLm9mZnNldFRvcCxcbiAgICAgICAgaGVpZ2h0OiB0YWJJdGVtLm9mZnNldEhlaWdodCxcbiAgICAgICAgd2lkdGg6IDIsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2VsZWN0ZWRUYWJJdGVtSW5kaWNhdG9yKCkge1xuICAgIGNvbnN0IGlkeCA9IHRoaXMub3B0aW9ucygpLmZpbmRJbmRleCgob3B0KSA9PiBvcHQuaWQgPT09IHRoaXMuc2VsZWN0ZWRUYWJJZCgpKTtcbiAgICBjb25zdCB0YWJJdGVtID0gdGhpcy50YWJJdGVtUmVmcygpW2lkeF07XG4gICAgaWYgKHRhYkl0ZW0/LnRhYkl0ZW1SZWYpIHtcbiAgICAgIGlmICh0YWJJdGVtLm9wdGlvbigpPy5kaXNhYmxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCB0YWJJdGVtUmVmID0gdGFiSXRlbS50YWJJdGVtUmVmPy4oKTtcbiAgICAgIGlmICh0YWJJdGVtUmVmICYmIHRhYkl0ZW1SZWYubmF0aXZlRWxlbWVudCkge1xuICAgICAgICBjb25zdCB0YWJJdGVtRWxlbWVudCA9IHRhYkl0ZW1SZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgaW5kaWNhdG9yU3R5bGUgPSB0aGlzLmNvbXB1dGVJbmRpY2F0b3JTdHlsZSh0YWJJdGVtRWxlbWVudCk7XG4gICAgICAgIHRoaXMuc2xpZGVySGVpZ2h0LnNldChpbmRpY2F0b3JTdHlsZS5oZWlnaHQgPz8gMik7XG4gICAgICAgIHRoaXMuc2xpZGVyVG9wLnNldChpbmRpY2F0b3JTdHlsZS50b3ApO1xuICAgICAgICB0aGlzLnNsaWRlcldpZHRoLnNldChpbmRpY2F0b3JTdHlsZS53aWR0aCA/PyAyKTtcbiAgICAgICAgdGhpcy5zbGlkZXJMZWZ0LnNldChpbmRpY2F0b3JTdHlsZS5sZWZ0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbXB1dGVTY3JvbGxhYmxlU2lnbmFscyA9ICgpID0+IHtcbiAgICB0aGlzLmNvbXB1dGVJc1Njcm9sbGFibGUoKTtcbiAgICB0aGlzLmNvbXB1dGVJc092ZXJmbG93aW5nTGVmdCgpO1xuICAgIHRoaXMuY29tcHV0ZUlzT3ZlcmZsb3dpbmdSaWdodCgpO1xuICAgIHRoaXMuY29tcHV0ZUlzT3ZlcmZsb3dpbmdUb3AoKTtcbiAgICB0aGlzLmNvbXB1dGVJc092ZXJmbG93aW5nQm90dG9tKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBjb21wdXRlSXNTY3JvbGxhYmxlKCkge1xuICAgIGlmICh0aGlzLmNvbnRhaW5lclJlZigpPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICBjb25zdCBjb250YWluZXJOYXRpdmVFbGVtZW50ID0gdGhpcy5jb250YWluZXJSZWYoKT8ubmF0aXZlRWxlbWVudDtcbiAgICAgIGlmIChjb250YWluZXJOYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuaXNTY3JvbGxhYmxlLnNldChcbiAgICAgICAgICBjb250YWluZXJOYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIDwgY29udGFpbmVyTmF0aXZlRWxlbWVudC5zY3JvbGxXaWR0aCB8fFxuICAgICAgICAgICAgY29udGFpbmVyTmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgPCBjb250YWluZXJOYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21wdXRlSXNPdmVyZmxvd2luZ0xlZnQoKSB7XG4gICAgY29uc3QgY29udGFpbmVyTmF0aXZlRWxlbWVudCA9IHRoaXMuY29udGFpbmVyUmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKGNvbnRhaW5lck5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IGlzT3ZlckZsb3dpbmdMZWZ0ID0gY29udGFpbmVyTmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID4gMDtcbiAgICAgIHRoaXMuaXNPdmVyZmxvd2luZ0xlZnQuc2V0KHRoaXMuaXNTY3JvbGxhYmxlKCkgJiYgaXNPdmVyRmxvd2luZ0xlZnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29tcHV0ZUlzT3ZlcmZsb3dpbmdSaWdodCgpIHtcbiAgICBjb25zdCBjb250YWluZXJOYXRpdmVFbGVtZW50ID0gdGhpcy5jb250YWluZXJSZWYoKT8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoY29udGFpbmVyTmF0aXZlRWxlbWVudCkge1xuICAgICAgY29uc3QgaXNPdmVyZmxvd2luZ1JpZ2h0ID1cbiAgICAgICAgY29udGFpbmVyTmF0aXZlRWxlbWVudC5zY3JvbGxXaWR0aCAtIGNvbnRhaW5lck5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGggLSBjb250YWluZXJOYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPiAwO1xuICAgICAgdGhpcy5pc092ZXJmbG93aW5nUmlnaHQuc2V0KHRoaXMuaXNTY3JvbGxhYmxlKCkgJiYgaXNPdmVyZmxvd2luZ1JpZ2h0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbXB1dGVJc092ZXJmbG93aW5nVG9wKCkge1xuICAgIGNvbnN0IGNvbnRhaW5lck5hdGl2ZUVsZW1lbnQgPSB0aGlzLmNvbnRhaW5lclJlZigpPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmIChjb250YWluZXJOYXRpdmVFbGVtZW50KSB7XG4gICAgICBjb25zdCBpc092ZXJGbG93aW5nVG9wID0gY29udGFpbmVyTmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPiAwO1xuICAgICAgdGhpcy5pc092ZXJmbG93aW5nVG9wLnNldCh0aGlzLmlzU2Nyb2xsYWJsZSgpICYmIGlzT3ZlckZsb3dpbmdUb3ApO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIGNvbXB1dGVJc092ZXJmbG93aW5nQm90dG9tKCkge1xuICAgIGNvbnN0IGNvbnRhaW5lck5hdGl2ZUVsZW1lbnQgPSB0aGlzLmNvbnRhaW5lclJlZigpPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmIChjb250YWluZXJOYXRpdmVFbGVtZW50KSB7XG4gICAgICBjb25zdCBpc092ZXJmbG93aW5nQm90dG9tID1cbiAgICAgICAgY29udGFpbmVyTmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgLSBjb250YWluZXJOYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCAtIGNvbnRhaW5lck5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID5cbiAgICAgICAgMDtcbiAgICAgIHRoaXMuaXNPdmVyZmxvd2luZ0JvdHRvbS5zZXQodGhpcy5pc1Njcm9sbGFibGUoKSAmJiBpc092ZXJmbG93aW5nQm90dG9tKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJydGUtdGFiLWNvbnRhaW5lclwiIFthdHRyLmRhdGEtZGlyZWN0aW9uXT1cImRpcmVjdGlvbigpXCI+XG4gIDxkaXYgY2xhc3M9XCJydGUtdGFiLWJvcmRlci12ZXJ0aWNhbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHJvbGU9XCJwcmVzZW50YXRpb25cIiBbYXR0ci5kYXRhLWRpcmVjdGlvbl09XCJkaXJlY3Rpb24oKVwiPjwvZGl2PlxuICA8ZGl2XG4gICAgW25nU3R5bGVdPVwie1xuICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAnYWxpZ24taXRlbXMnOiAnY2VudGVyJyxcbiAgICAgICdmbGV4LWRpcmVjdGlvbic6IGRpcmVjdGlvbigpID09PSAnaG9yaXpvbnRhbCcgPyAncm93JyA6ICdjb2x1bW4nLFxuICAgIH1cIlxuICA+XG4gICAgPHJ0ZS1pY29uLWJ1dHRvblxuICAgICAgKm5nSWY9XCJpc1Njcm9sbGFibGUoKSAmJiAhc2hvdWxkRGlzcGxheURyb3Bkb3duKClcIlxuICAgICAgYXJpYS1sYWJlbD1cIlByZXZpb3VzIHRhYnNcIlxuICAgICAgdmFyaWFudD1cInRyYW5zcGFyZW50XCJcbiAgICAgIFtuYW1lXT1cImRpcmVjdGlvbigpID09PSAnaG9yaXpvbnRhbCcgPyAnYXJyb3ctY2hldnJvbi1sZWZ0JyA6ICdhcnJvdy1jaGV2cm9uLXVwJ1wiXG4gICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgIG9wYWNpdHk6IGNhblNjcm9sbEJhY2t3YXJkKCkgPyAnMScgOiAnMCcsXG4gICAgICAgICdwb2ludGVyLWV2ZW50cyc6IGNhblNjcm9sbEJhY2t3YXJkKCkgPyAnYXV0bycgOiAnbm9uZScsXG4gICAgICB9XCJcbiAgICAgIChjbGlja0V2ZW50KT1cInNjcm9sbEJhY2t3YXJkKClcIlxuICAgIC8+XG4gICAgPGRpdlxuICAgICAgI3RhYkxpc3RcbiAgICAgIHJvbGU9XCJ0YWJsaXN0XCJcbiAgICAgIGFyaWEtbGFiZWw9XCJTYW1wbGUgVGFic1wiXG4gICAgICBjbGFzcz1cInJ0ZS10YWJcIlxuICAgICAgW2F0dHIuZGF0YS1hbGlnbm1lbnRdPVwic2hvdWxkRGlzcGxheURyb3Bkb3duKCkgPyAnc3RhcnQnIDogYWxpZ25tZW50KClcIlxuICAgICAgW2F0dHIuZGF0YS1kaXJlY3Rpb25dPVwiZGlyZWN0aW9uKClcIlxuICAgICAgW2F0dHIuZGF0YS1vdmVyZmxvdy10eXBlXT1cIm92ZXJmbG93VHlwZSgpXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cInJ0ZS10YWItc2VsZWN0ZWQtaW5kaWNhdG9yXCIgW25nU3R5bGVdPVwidGFiSXRlbVNlbGVjdGVkSW5kaWNhdG9yU3R5bGUoKVwiPjwvc3Bhbj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJzaG91bGREaXNwbGF5RHJvcGRvd24oKSAmJiBvcHRpb25zKCkubGVuZ3RoXCJcbiAgICAgICAgcnRlRHJvcGRvd25cbiAgICAgICAgW3J0ZURyb3Bkb3duT2Zmc2V0XT1cIjEwXCJcbiAgICAgICAgKG1lbnVFdmVudCk9XCJvbkNsaWNrVGFiSXRlbSgkZXZlbnQuaWQpXCJcbiAgICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHJ0ZURyb3Bkb3duVHJpZ2dlclxuICAgICAgICAgIGNsYXNzPVwicnRlLXRhYi1kcm9wZG93bi1idXR0b25cIlxuICAgICAgICAgIFthdHRyLmRhdGEtaW52ZXJ0ZWRdPVwiaW52ZXJ0ZWQoKVwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1vdmVyZmxvdy10eXBlXT1cIm92ZXJmbG93VHlwZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxydGUtaWNvbiAqbmdJZj1cInNlbGVjdGVkVGFiKCk/Lmljb25cIiBhcHBlYXJhbmNlPVwiZmlsbGVkXCIgW25hbWVdPVwic2VsZWN0ZWRUYWIoKT8uaWNvbiFcIj48L3J0ZS1pY29uPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRUYWIoKT8ubGFiZWxcIj57eyBzZWxlY3RlZFRhYigpPy5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICA8cnRlLWJhZGdlXG4gICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkVGFiKCk/LmJhZGdlQ291bnQgJiYgc2VsZWN0ZWRUYWIoKT8uYmFkZ2VDb250ZW50ID09PSAnbnVtYmVyJ1wiXG4gICAgICAgICAgICBbYmFkZ2VUeXBlXT1cInNlbGVjdGVkVGFiKCk/LmJhZGdlVHlwZSFcIlxuICAgICAgICAgICAgW2JhZGdlQ29udGVudF09XCJzZWxlY3RlZFRhYigpPy5iYWRnZUNvbnRlbnQhXCJcbiAgICAgICAgICAgIFtjb3VudF09XCJzZWxlY3RlZFRhYigpPy5iYWRnZUNvdW50XCJcbiAgICAgICAgICAgIFtzaW1wbGVCYWRnZV09XCJ0cnVlXCJcbiAgICAgICAgICA+PC9ydGUtYmFkZ2U+XG4gICAgICAgICAgPHJ0ZS1pY29uIG5hbWU9XCJhcnJvdy1jaGV2cm9uLWRvd25cIiBhcHBlYXJhbmNlPVwib3V0bGluZWRcIj48L3J0ZS1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPHJ0ZS1kcm9wZG93bi1tZW51IFtpdGVtc109XCJkcm9wZG93bkZpbHRlcmVkT3B0aW9ucygpXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnMoKTsgbGV0IGlkeCA9IGluZGV4XCI+XG4gICAgICAgIDxydGUtdGFiLWl0ZW1cbiAgICAgICAgICAjdGFiSXRlbVxuICAgICAgICAgIFtvcHRpb25dPVwib3B0aW9uXCJcbiAgICAgICAgICBbZGlyZWN0aW9uXT1cImRpcmVjdGlvbigpXCJcbiAgICAgICAgICBbY29tcGFjdFNwYWNpbmddPVwiY29tcGFjdFNwYWNpbmcoKVwiXG4gICAgICAgICAgW2lzU2VsZWN0ZWRdPVwiaXNTZWxlY3RlZChvcHRpb24uaWQpXCJcbiAgICAgICAgICBbaW52ZXJ0ZWRdPVwiaW52ZXJ0ZWQoKVwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1oaWRkZW5dPVwic2hvdWxkRGlzcGxheURyb3Bkb3duKClcIlxuICAgICAgICAgIFtpc0hpZGRlbl09XCJzaG91bGREaXNwbGF5RHJvcGRvd24oKVwiXG4gICAgICAgICAgKGtleWRvd24pPVwib25LZXlkb3duVGFiSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAoY2xpY2spPVwib25DbGlja1RhYkl0ZW0ob3B0aW9uLmlkKVwiXG4gICAgICAgID48L3J0ZS10YWItaXRlbT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxydGUtaWNvbi1idXR0b25cbiAgICAgICpuZ0lmPVwiaXNTY3JvbGxhYmxlKCkgJiYgIXNob3VsZERpc3BsYXlEcm9wZG93bigpXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJOZXh0IHRhYnNcIlxuICAgICAgdmFyaWFudD1cInRyYW5zcGFyZW50XCJcbiAgICAgIFtuYW1lXT1cImRpcmVjdGlvbigpID09PSAnaG9yaXpvbnRhbCcgPyAnYXJyb3ctY2hldnJvbi1yaWdodCcgOiAnYXJyb3ctY2hldnJvbi1kb3duJ1wiXG4gICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgIG9wYWNpdHk6IGNhblNjcm9sbEZvcndhcmQoKSA/ICcxJyA6ICcwJyxcbiAgICAgICAgJ3BvaW50ZXItZXZlbnRzJzogY2FuU2Nyb2xsRm9yd2FyZCgpID8gJ2F1dG8nIDogJ25vbmUnLFxuICAgICAgfVwiXG4gICAgICAoY2xpY2tFdmVudCk9XCJzY3JvbGxGb3J3YXJkKClcIlxuICAgIC8+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJydGUtdGFiLWJvcmRlci1ob3Jpem9udGFsXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgIFthdHRyLmRhdGEtZGlyZWN0aW9uXT1cImRpcmVjdGlvbigpXCJcbiAgICBbYXR0ci5kYXRhLWNvbXBhY3Qtc3BhY2luZ109XCJjb21wYWN0U3BhY2luZygpXCJcbiAgICBbYXR0ci5kYXRhLXNjcm9sbGFibGVdPVwiaXNTY3JvbGxhYmxlKCkgJiYgb3ZlcmZsb3dUeXBlKCkgPT09ICdzY3JvbGxhYmxlJ1wiXG4gID48L2Rpdj5cbjwvZGl2PlxuIl19
|
|
242
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLXJ0ZS1saWIvc3JjL2xpYi9jb21wb25lbnRzL3RhYi90YWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHMtcnRlLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvdGFiL3RhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sWUFBWSxFQUdaLE1BQU0sRUFHTixTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUNMLGNBQWMsRUFDZCxjQUFjLEVBQ2QsZUFBZSxFQUNmLFlBQVksR0FDYixNQUFNLCtEQUErRCxDQUFDO0FBRXZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUUzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7O0FBVWpFLE1BQU0sT0FBTyxZQUFZO0lBUnpCO1FBU1csY0FBUyxHQUFHLEtBQUssQ0FBZSxPQUFPLENBQUMsQ0FBQztRQUN6QyxjQUFTLEdBQUcsS0FBSyxDQUFZLFlBQVksQ0FBQyxDQUFDO1FBQzNDLFlBQU8sR0FBRyxLQUFLLENBQXNCLEVBQUUsQ0FBQyxDQUFDO1FB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QkFBc0IsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLGdCQUFnQixDQUFDLENBQUM7UUFDckUsQ0FBQztJQUNILENBQUM7SUFDTywwQkFBMEI7UUFDaEMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsYUFBYSxDQUFDO1FBQ2xFLElBQUksc0JBQXNCLEVBQUUsQ0FBQztZQUMzQixNQUFNLG1CQUFtQixHQUN2QixzQkFBc0IsQ0FBQyxZQUFZLEdBQUcsc0JBQXNCLENBQUMsWUFBWSxHQUFHLHNCQUFzQixDQUFDLFNBQVM7Z0JBQzVHLENBQUMsQ0FBQztZQUNKLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLG1CQUFtQixDQUFDLENBQUM7UUFDM0UsQ0FBQztJQUNILENBQUM7K0dBMVFVLFlBQVk7bUdBQVosWUFBWSx5M0NDMUN6Qix1bkhBNEZBLHNuRUR4RFksWUFBWSxxVkFBRSxnQkFBZ0IsdUxBQUUsbUJBQW1CLG1SQUFFLGNBQWMscTVCQUFFLGFBQWEsaUhBQUUsY0FBYzs7NEZBTWpHLFlBQVk7a0JBUnhCLFNBQVM7K0JBQ0UsU0FBUyxXQUNWLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsY0FBYyxDQUFDLGNBQ2pHLElBQUksbUJBR0MsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGlucHV0LFxuICBjb21wdXRlZCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIG91dHB1dCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgT25DaGFuZ2VzLFxuICB2aWV3Q2hpbGQsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gXCJAZGVzaWduLXN5c3RlbS1ydGUvY29yZS9jb21wb25lbnRzL2NvbW1vbi9jb21tb24tdHlwZXNcIjtcbmltcG9ydCB7IFRhYkFsaWdubWVudCwgVGFiSXRlbVByb3BzLCBUYWJQcm9wcyB9IGZyb20gXCJAZGVzaWduLXN5c3RlbS1ydGUvY29yZS9jb21wb25lbnRzL3RhYi90YWIuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBzY3JvbGxUb1NlbGVjdGVkVGFiIH0gZnJvbSBcIkBkZXNpZ24tc3lzdGVtLXJ0ZS9jb3JlL2NvbXBvbmVudHMvdGFiL3RhYi51dGlsc1wiO1xuaW1wb3J0IHtcbiAgQVJST1dfRE9XTl9LRVksXG4gIEFSUk9XX0xFRlRfS0VZLFxuICBBUlJPV19SSUdIVF9LRVksXG4gIEFSUk9XX1VQX0tFWSxcbn0gZnJvbSBcIkBkZXNpZ24tc3lzdGVtLXJ0ZS9jb3JlL2NvbnN0YW50cy9rZXlib2FyZC9rZXlib2FyZC5jb25zdGFudHNcIjtcblxuaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQgfSBmcm9tIFwiLi4vYmFkZ2UvYmFkZ2UuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBEcm9wZG93bk1vZHVsZSB9IGZyb20gXCIuLi9kcm9wZG93blwiO1xuaW1wb3J0IHsgRHJvcGRvd25JdGVtQ29uZmlnIH0gZnJvbSBcIi4uL2Ryb3Bkb3duL2Ryb3Bkb3duLnR5cGVzXCI7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSBcIi4uL2ljb24vaWNvbi5jb21wb25lbnRcIjtcbmltcG9ydCB7IEljb25CdXR0b25Db21wb25lbnQgfSBmcm9tIFwiLi4vaWNvbi1idXR0b24vaWNvbi1idXR0b24uY29tcG9uZW50XCI7XG5cbmltcG9ydCB7IFRhYkl0ZW1Db21wb25lbnQgfSBmcm9tIFwiLi90YWItaXRlbS90YWItaXRlbS5jb21wb25lbnRcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcInJ0ZS10YWJcIixcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVGFiSXRlbUNvbXBvbmVudCwgSWNvbkJ1dHRvbkNvbXBvbmVudCwgRHJvcGRvd25Nb2R1bGUsIEljb25Db21wb25lbnQsIEJhZGdlQ29tcG9uZW50XSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGVVcmw6IFwiLi90YWIuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmw6IFwiLi90YWIuY29tcG9uZW50LnNjc3NcIixcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFRhYkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcmVhZG9ubHkgYWxpZ25tZW50ID0gaW5wdXQ8VGFiQWxpZ25tZW50PihcInN0YXJ0XCIpO1xuICByZWFkb25seSBkaXJlY3Rpb24gPSBpbnB1dDxEaXJlY3Rpb24+KFwiaG9yaXpvbnRhbFwiKTtcbiAgcmVhZG9ubHkgb3B0aW9ucyA9IGlucHV0PFRhYlByb3BzW1wib3B0aW9uc1wiXT4oW10pO1xuICByZWFkb25seSBzZWxlY3RlZFRhYklkID0gaW5wdXQ8VGFiUHJvcHNbXCJzZWxlY3RlZFRhYklkXCJdPigpO1xuICByZWFkb25seSBjb21wYWN0U3BhY2luZyA9IGlucHV0PFRhYlByb3BzW1wiY29tcGFjdFNwYWNpbmdcIl0+KGZhbHNlKTtcbiAgcmVhZG9ubHkgb3ZlcmZsb3dUeXBlID0gaW5wdXQ8VGFiUHJvcHNbXCJvdmVyZmxvd1R5cGVcIl0+KFwic2Nyb2xsYWJsZVwiKTtcbiAgcmVhZG9ubHkgaW52ZXJ0ZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgc2xpZGVyTGVmdCA9IHNpZ25hbCgwKTtcbiAgcmVhZG9ubHkgc2xpZGVyV2lkdGggPSBzaWduYWwoMCk7XG4gIHJlYWRvbmx5IHNsaWRlclRvcCA9IHNpZ25hbCgwKTtcbiAgcmVhZG9ubHkgc2xpZGVySGVpZ2h0ID0gc2lnbmFsKDApO1xuXG4gIHJlYWRvbmx5IHRhYkl0ZW1SZWZzID0gdmlld0NoaWxkcmVuPFRhYkl0ZW1Db21wb25lbnQ+KFwidGFiSXRlbVwiKTtcbiAgcmVhZG9ubHkgY29udGFpbmVyUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PihcInRhYkxpc3RcIik7XG4gIHJlYWRvbmx5IGhvdmVySW5kaWNhdG9yUmVmcyA9IHZpZXdDaGlsZHJlbjxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj4oXCJob3ZlckluZGljYXRvclwiKTtcblxuICByZWFkb25seSBzZWxlY3RlZFRhYlJlZiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBpZHggPSB0aGlzLm9wdGlvbnMoKS5maW5kSW5kZXgoKG9wdCkgPT4gb3B0LmlkID09PSB0aGlzLnNlbGVjdGVkVGFiSWQoKSk7XG4gICAgY29uc3QgdGFiSXRlbSA9IHRoaXMudGFiSXRlbVJlZnMoKVtpZHhdO1xuICAgIHJldHVybiB0YWJJdGVtO1xuICB9KTtcblxuICByZWFkb25seSBob3ZlckluZGljYXRvclN0eWxlID0gc2lnbmFsPHtcbiAgICB3aWR0aD86IG51bWJlcjtcbiAgICBsZWZ0PzogbnVtYmVyO1xuICAgIHRvcD86IG51bWJlcjtcbiAgICBoZWlnaHQ/OiBudW1iZXI7XG4gICAgb3BhY2l0eT86IG51bWJlcjtcbiAgfSB8IG51bGw+KG51bGwpO1xuXG4gIHJlYWRvbmx5IGNoYW5nZSA9IG91dHB1dDxzdHJpbmc+KCk7XG5cbiAgcmVhZG9ubHkgaXNTY3JvbGxhYmxlID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpc092ZXJmbG93aW5nTGVmdCA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNPdmVyZmxvd2luZ1JpZ2h0ID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpc092ZXJmbG93aW5nVG9wID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpc092ZXJmbG93aW5nQm90dG9tID0gc2lnbmFsKGZhbHNlKTtcblxuICByZWFkb25seSBjYW5TY3JvbGxCYWNrd2FyZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5pc092ZXJmbG93aW5nTGVmdCgpIHx8IHRoaXMuaXNPdmVyZmxvd2luZ1RvcCgpO1xuICB9KTtcblxuICByZWFkb25seSBjYW5TY3JvbGxGb3J3YXJkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmlzT3ZlcmZsb3dpbmdSaWdodCgpIHx8IHRoaXMuaXNPdmVyZmxvd2luZ0JvdHRvbSgpO1xuICB9KTtcblxuICByZWFkb25seSBpc0hvcml6b250YWwgPSBjb21wdXRlZChcbiAgICAoKSA9PiB0aGlzLmRpcmVjdGlvbigpID09PSBcImhvcml6b250YWxcIiAmJiAodGhpcy5pc092ZXJmbG93aW5nUmlnaHQoKSB8fCB0aGlzLmlzT3ZlcmZsb3dpbmdMZWZ0KCkpLFxuICApO1xuXG4gIHJlYWRvbmx5IHNob3VsZERpc3BsYXlEcm9wZG93biA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3ZlcmZsb3dUeXBlKCkgPT09IFwiZHJvcGRvd25cIiAmJiB0aGlzLmlzSG9yaXpvbnRhbCgpKTtcblxuICByZWFkb25seSBzZWxlY3RlZFRhYiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zKCkuZmluZCgob3B0aW9uKSA9PiBvcHRpb24uaWQgPT09IHRoaXMuc2VsZWN0ZWRUYWJJZCgpKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGRyb3Bkb3duRmlsdGVyZWRPcHRpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMoKS5maWx0ZXIoKG9wdGlvbikgPT4gb3B0aW9uLmlkICE9PSB0aGlzLnNlbGVjdGVkVGFiSWQoKSkgYXMgRHJvcGRvd25JdGVtQ29uZmlnW107XG4gIH0pO1xuXG4gIGRpc3BsYXlCYWRnZSA9IChvcHRpb246IFRhYkl0ZW1Qcm9wcyk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiAoXG4gICAgICAhIW9wdGlvbi5zaG93QmFkZ2UgfHxcbiAgICAgIChvcHRpb24uYmFkZ2VDb3VudCAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi5iYWRnZUNvdW50ID4gMCAmJiBvcHRpb24uYmFkZ2VDb250ZW50ID09PSBcIm51bWJlclwiKSB8fFxuICAgICAgKG9wdGlvbi5iYWRnZUNvbnRlbnQgPT09IFwiaWNvblwiICYmICEhb3B0aW9uLmJhZGdlSWNvbilcbiAgICApO1xuICB9O1xuXG4gIGlzU2VsZWN0ZWQoaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVGFiSWQoKSA9PT0gaWQ7XG4gIH1cblxuICByZWFkb25seSB0YWJJdGVtU2VsZWN0ZWRJbmRpY2F0b3JTdHlsZSA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgbGVmdDogYCR7dGhpcy5zaG91bGREaXNwbGF5RHJvcGRvd24oKSA/IDAgOiB0aGlzLnNsaWRlckxlZnQoKX1weGAsXG4gICAgdG9wOiBgJHt0aGlzLnNsaWRlclRvcCgpfXB4YCxcbiAgICB3aWR0aDogYCR7dGhpcy5zbGlkZXJXaWR0aCgpICsgKHRoaXMuc2hvdWxkRGlzcGxheURyb3Bkb3duKCkgPyAzMiA6IDApfXB4YCxcbiAgICBoZWlnaHQ6IGAke3RoaXMuc2xpZGVySGVpZ2h0KCl9cHhgLFxuICB9KSk7XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRUYWJJdGVtSW5kaWNhdG9yKCk7XG4gICAgdGhpcy5jb21wdXRlU2Nyb2xsYWJsZVNpZ25hbHMoKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB0aGlzLnVwZGF0ZVNlbGVjdGVkVGFiSXRlbUluZGljYXRvci5iaW5kKHRoaXMpKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB0aGlzLmNvbXB1dGVTY3JvbGxhYmxlU2lnbmFscy5iaW5kKHRoaXMpKTtcbiAgICBpZiAodGhpcy5jb250YWluZXJSZWYoKSkge1xuICAgICAgdGhpcy5jb250YWluZXJSZWYoKT8ubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHRoaXMuY29tcHV0ZVNjcm9sbGFibGVTaWduYWxzLmJpbmQodGhpcykpO1xuICAgIH1cbiAgICB0aGlzLmhvdmVySW5kaWNhdG9yUmVmcygpLmZvckVhY2goKGhvdmVySW5kaWNhdG9yKSA9PiB7XG4gICAgICBob3ZlckluZGljYXRvci5uYXRpdmVFbGVtZW50LnN0eWxlLm9wYWNpdHkgPSBcIjBcIjtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMudXBkYXRlU2VsZWN0ZWRUYWJJdGVtSW5kaWNhdG9yLmJpbmQodGhpcykpO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMuY29tcHV0ZVNjcm9sbGFibGVTaWduYWxzLmJpbmQodGhpcykpO1xuICAgIGlmICh0aGlzLmNvbnRhaW5lclJlZigpKSB7XG4gICAgICB0aGlzLmNvbnRhaW5lclJlZigpPy5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgdGhpcy5jb21wdXRlU2Nyb2xsYWJsZVNpZ25hbHMuYmluZCh0aGlzKSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzW1wic2VsZWN0ZWRUYWJJZFwiXSkge1xuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFRhYkl0ZW1JbmRpY2F0b3IoKTtcbiAgICB9XG4gIH1cblxuICBvbktleWRvd25UYWJJdGVtID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgY29uc3QgaXNWZXJ0aWNhbCA9IHRoaXMuZGlyZWN0aW9uKCkgPT09IFwidmVydGljYWxcIjtcblxuICAgIGNvbnN0IGlzRG93bktleVByZXNzZWQgPSBpc1ZlcnRpY2FsICYmIGV2ZW50LmtleSA9PT0gQVJST1dfRE9XTl9LRVk7XG4gICAgY29uc3QgaXNVcEtleVByZXNzZWQgPSBpc1ZlcnRpY2FsICYmIGV2ZW50LmtleSA9PT0gQVJST1dfVVBfS0VZO1xuICAgIGNvbnN0IGlzUmlnaHRLZXlQcmVzc2VkID0gIWlzVmVydGljYWwgJiYgZXZlbnQua2V5ID09PSBBUlJPV19SSUdIVF9LRVk7XG4gICAgY29uc3QgaXNMZWZ0S2V5UHJlc3NlZCA9ICFpc1ZlcnRpY2FsICYmIGV2ZW50LmtleSA9PT0gQVJST1dfTEVGVF9LRVk7XG5cbiAgICBjb25zdCBpc0Fycm93TmV4dCA9IGlzRG93bktleVByZXNzZWQgfHwgaXNSaWdodEtleVByZXNzZWQ7XG4gICAgY29uc3QgaXNBcnJvd1ByZXYgPSBpc1VwS2V5UHJlc3NlZCB8fCBpc0xlZnRLZXlQcmVzc2VkO1xuXG4gICAgaWYgKGlzQXJyb3dOZXh0IHx8IGlzQXJyb3dQcmV2KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5mb2N1c0l0ZW0oaXNBcnJvd05leHQgPyBcIm5leHRcIiA6IFwicHJldmlvdXNcIik7XG4gICAgfVxuICB9O1xuXG4gIG9uQ2xpY2tUYWJJdGVtID0gKGlkOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoaWQgIT09IHRoaXMuc2VsZWN0ZWRUYWJJZCgpKSB7XG4gICAgICB0aGlzLmNoYW5nZS5lbWl0KGlkKTtcbiAgICAgIGlmICghdGhpcy5zaG91bGREaXNwbGF5RHJvcGRvd24oKSkge1xuICAgICAgICBjb25zdCBuZXdUYWIgPSB0aGlzLmdldFRhYkl0ZW0oaWQpPy50YWJJdGVtUmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChuZXdUYWIpIHtcbiAgICAgICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lclJlZigpPy5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgIHNjcm9sbFRvU2VsZWN0ZWRUYWIobmV3VGFiLCBjb250YWluZXIsIHRoaXMuZGlyZWN0aW9uKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBzY3JvbGxCYWNrd2FyZCgpIHtcbiAgICBpZiAodGhpcy5jb250YWluZXJSZWYoKT8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgY29uc3Qgc2Nyb2xsT2JqZWN0ID0gdGhpcy5kaXJlY3Rpb24oKSA9PT0gXCJob3Jpem9udGFsXCIgPyB7IGxlZnQ6IC0zMDAgfSA6IHsgdG9wOiAtMzAwIH07XG4gICAgICB0aGlzLmNvbnRhaW5lclJlZigpPy5uYXRpdmVFbGVtZW50LnNjcm9sbEJ5KHsgLi4uc2Nyb2xsT2JqZWN0LCBiZWhhdmlvcjogXCJzbW9vdGhcIiB9KTtcbiAgICB9XG4gIH1cblxuICBzY3JvbGxGb3J3YXJkKCkge1xuICAgIGlmICh0aGlzLmNvbnRhaW5lclJlZigpICYmIHRoaXMuY29udGFpbmVyUmVmKCk/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IHNjcm9sbE9iamVjdCA9IHRoaXMuZGlyZWN0aW9uKCkgPT09IFwiaG9yaXpvbnRhbFwiID8geyBsZWZ0OiAzMDAgfSA6IHsgdG9wOiAzMDAgfTtcbiAgICAgIHRoaXMuY29udGFpbmVyUmVmKCk/Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsQnkoeyAuLi5zY3JvbGxPYmplY3QsIGJlaGF2aW9yOiBcInNtb290aFwiIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGFiSXRlbSA9IChpZDogc3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMudGFiSXRlbVJlZnMoKS5maW5kKCh0YWIpID0+IHRhYi5vcHRpb24oKT8uaWQgPT09IGlkKTtcbiAgfTtcblxuICBwcml2YXRlIGZvY3VzSXRlbSA9IChkaXJlY3Rpb246IFwibmV4dFwiIHwgXCJwcmV2aW91c1wiKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy50YWJJdGVtUmVmcygpLmZpbmRJbmRleCgodGFiKSA9PiB0YWIgPT09IHRoaXMuc2VsZWN0ZWRUYWJSZWYoKSk7XG4gICAgY29uc3QgbWF4SXRlcmF0aW9ucyA9IHRoaXMudGFiSXRlbVJlZnMoKS5sZW5ndGg7XG4gICAgbGV0IG5ld0luZGV4ID0gdGhpcy5jb21wdXRlTmV4dEl0ZW1JbmRleChjdXJyZW50SW5kZXgsIG1heEl0ZXJhdGlvbnMsIGRpcmVjdGlvbik7XG4gICAgbGV0IGNvdW50ZXIgPSAwO1xuICAgIHdoaWxlIChcbiAgICAgIHRoaXMudGFiSXRlbVJlZnMoKVtuZXdJbmRleF0udGFiSXRlbVJlZigpPy5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZShcImRhdGEtZGlzYWJsZWRcIikgPT09IFwidHJ1ZVwiICYmXG4gICAgICBjb3VudGVyIDwgbWF4SXRlcmF0aW9uc1xuICAgICkge1xuICAgICAgbmV3SW5kZXggPSB0aGlzLmNvbXB1dGVOZXh0SXRlbUluZGV4KG5ld0luZGV4LCBtYXhJdGVyYXRpb25zLCBkaXJlY3Rpb24pO1xuICAgICAgY291bnRlcisrO1xuICAgIH1cbiAgICB0aGlzLnRhYkl0ZW1SZWZzKClbbmV3SW5kZXhdLnRhYkl0ZW1SZWYoKT8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIHRoaXMudGFiSXRlbVJlZnMoKVtuZXdJbmRleF0udGFiSXRlbVJlZigpPy5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBjb21wdXRlTmV4dEl0ZW1JbmRleChjdXJyZW50SW5kZXg6IG51bWJlciwgdG90YWxJdGVtczogbnVtYmVyLCBkaXJlY3Rpb246IFwibmV4dFwiIHwgXCJwcmV2aW91c1wiKSB7XG4gICAgcmV0dXJuIGRpcmVjdGlvbiA9PT0gXCJuZXh0XCIgPyAoY3VycmVudEluZGV4ICsgMSkgJSB0b3RhbEl0ZW1zIDogKGN1cnJlbnRJbmRleCAtIDEgKyB0b3RhbEl0ZW1zKSAlIHRvdGFsSXRlbXM7XG4gIH1cblxuICBwcml2YXRlIGNvbXB1dGVJbmRpY2F0b3JTdHlsZSh0YWJJdGVtOiBIVE1MRWxlbWVudCkge1xuICAgIGlmICh0aGlzLmRpcmVjdGlvbigpID09PSBcImhvcml6b250YWxcIikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGg6IHRhYkl0ZW0ub2Zmc2V0V2lkdGgsXG4gICAgICAgIGxlZnQ6IHRhYkl0ZW0ub2Zmc2V0TGVmdCxcbiAgICAgICAgdG9wOiB0YWJJdGVtLm9mZnNldFRvcCArIHRhYkl0ZW0ub2Zmc2V0SGVpZ2h0LFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGVmdDogMCxcbiAgICAgICAgdG9wOiB0YWJJdGVtLm9mZnNldFRvcCxcbiAgICAgICAgaGVpZ2h0OiB0YWJJdGVtLm9mZnNldEhlaWdodCxcbiAgICAgICAgd2lkdGg6IDIsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2VsZWN0ZWRUYWJJdGVtSW5kaWNhdG9yKCkge1xuICAgIGNvbnN0IGlkeCA9IHRoaXMub3B0aW9ucygpLmZpbmRJbmRleCgob3B0KSA9PiBvcHQuaWQgPT09IHRoaXMuc2VsZWN0ZWRUYWJJZCgpKTtcbiAgICBjb25zdCB0YWJJdGVtID0gdGhpcy50YWJJdGVtUmVmcygpW2lkeF07XG4gICAgaWYgKHRhYkl0ZW0/LnRhYkl0ZW1SZWYpIHtcbiAgICAgIGlmICh0YWJJdGVtLm9wdGlvbigpPy5kaXNhYmxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCB0YWJJdGVtUmVmID0gdGFiSXRlbS50YWJJdGVtUmVmPy4oKTtcbiAgICAgIGlmICh0YWJJdGVtUmVmICYmIHRhYkl0ZW1SZWYubmF0aXZlRWxlbWVudCkge1xuICAgICAgICBjb25zdCB0YWJJdGVtRWxlbWVudCA9IHRhYkl0ZW1SZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgaW5kaWNhdG9yU3R5bGUgPSB0aGlzLmNvbXB1dGVJbmRpY2F0b3JTdHlsZSh0YWJJdGVtRWxlbWVudCk7XG4gICAgICAgIHRoaXMuc2xpZGVySGVpZ2h0LnNldChpbmRpY2F0b3JTdHlsZS5oZWlnaHQgPz8gMik7XG4gICAgICAgIHRoaXMuc2xpZGVyVG9wLnNldChpbmRpY2F0b3JTdHlsZS50b3ApO1xuICAgICAgICB0aGlzLnNsaWRlcldpZHRoLnNldChpbmRpY2F0b3JTdHlsZS53aWR0aCA/PyAyKTtcbiAgICAgICAgdGhpcy5zbGlkZXJMZWZ0LnNldChpbmRpY2F0b3JTdHlsZS5sZWZ0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbXB1dGVTY3JvbGxhYmxlU2lnbmFscyA9ICgpID0+IHtcbiAgICB0aGlzLmNvbXB1dGVJc1Njcm9sbGFibGUoKTtcbiAgICB0aGlzLmNvbXB1dGVJc092ZXJmbG93aW5nTGVmdCgpO1xuICAgIHRoaXMuY29tcHV0ZUlzT3ZlcmZsb3dpbmdSaWdodCgpO1xuICAgIHRoaXMuY29tcHV0ZUlzT3ZlcmZsb3dpbmdUb3AoKTtcbiAgICB0aGlzLmNvbXB1dGVJc092ZXJmbG93aW5nQm90dG9tKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBjb21wdXRlSXNTY3JvbGxhYmxlKCkge1xuICAgIGlmICh0aGlzLmNvbnRhaW5lclJlZigpPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICBjb25zdCBjb250YWluZXJOYXRpdmVFbGVtZW50ID0gdGhpcy5jb250YWluZXJSZWYoKT8ubmF0aXZlRWxlbWVudDtcbiAgICAgIGlmIChjb250YWluZXJOYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuaXNTY3JvbGxhYmxlLnNldChcbiAgICAgICAgICBjb250YWluZXJOYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIDwgY29udGFpbmVyTmF0aXZlRWxlbWVudC5zY3JvbGxXaWR0aCB8fFxuICAgICAgICAgICAgY29udGFpbmVyTmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgPCBjb250YWluZXJOYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21wdXRlSXNPdmVyZmxvd2luZ0xlZnQoKSB7XG4gICAgY29uc3QgY29udGFpbmVyTmF0aXZlRWxlbWVudCA9IHRoaXMuY29udGFpbmVyUmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKGNvbnRhaW5lck5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IGlzT3ZlckZsb3dpbmdMZWZ0ID0gY29udGFpbmVyTmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID4gMDtcbiAgICAgIHRoaXMuaXNPdmVyZmxvd2luZ0xlZnQuc2V0KHRoaXMuaXNTY3JvbGxhYmxlKCkgJiYgaXNPdmVyRmxvd2luZ0xlZnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29tcHV0ZUlzT3ZlcmZsb3dpbmdSaWdodCgpIHtcbiAgICBjb25zdCBjb250YWluZXJOYXRpdmVFbGVtZW50ID0gdGhpcy5jb250YWluZXJSZWYoKT8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoY29udGFpbmVyTmF0aXZlRWxlbWVudCkge1xuICAgICAgY29uc3QgaXNPdmVyZmxvd2luZ1JpZ2h0ID1cbiAgICAgICAgY29udGFpbmVyTmF0aXZlRWxlbWVudC5zY3JvbGxXaWR0aCAtIGNvbnRhaW5lck5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGggLSBjb250YWluZXJOYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPiAwO1xuICAgICAgdGhpcy5pc092ZXJmbG93aW5nUmlnaHQuc2V0KHRoaXMuaXNTY3JvbGxhYmxlKCkgJiYgaXNPdmVyZmxvd2luZ1JpZ2h0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbXB1dGVJc092ZXJmbG93aW5nVG9wKCkge1xuICAgIGNvbnN0IGNvbnRhaW5lck5hdGl2ZUVsZW1lbnQgPSB0aGlzLmNvbnRhaW5lclJlZigpPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmIChjb250YWluZXJOYXRpdmVFbGVtZW50KSB7XG4gICAgICBjb25zdCBpc092ZXJGbG93aW5nVG9wID0gY29udGFpbmVyTmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPiAwO1xuICAgICAgdGhpcy5pc092ZXJmbG93aW5nVG9wLnNldCh0aGlzLmlzU2Nyb2xsYWJsZSgpICYmIGlzT3ZlckZsb3dpbmdUb3ApO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIGNvbXB1dGVJc092ZXJmbG93aW5nQm90dG9tKCkge1xuICAgIGNvbnN0IGNvbnRhaW5lck5hdGl2ZUVsZW1lbnQgPSB0aGlzLmNvbnRhaW5lclJlZigpPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmIChjb250YWluZXJOYXRpdmVFbGVtZW50KSB7XG4gICAgICBjb25zdCBpc092ZXJmbG93aW5nQm90dG9tID1cbiAgICAgICAgY29udGFpbmVyTmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgLSBjb250YWluZXJOYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCAtIGNvbnRhaW5lck5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID5cbiAgICAgICAgMDtcbiAgICAgIHRoaXMuaXNPdmVyZmxvd2luZ0JvdHRvbS5zZXQodGhpcy5pc1Njcm9sbGFibGUoKSAmJiBpc092ZXJmbG93aW5nQm90dG9tKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJydGUtdGFiLWNvbnRhaW5lclwiIFthdHRyLmRhdGEtZGlyZWN0aW9uXT1cImRpcmVjdGlvbigpXCI+XG4gIDxkaXYgY2xhc3M9XCJydGUtdGFiLWJvcmRlci12ZXJ0aWNhbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHJvbGU9XCJwcmVzZW50YXRpb25cIiBbYXR0ci5kYXRhLWRpcmVjdGlvbl09XCJkaXJlY3Rpb24oKVwiPjwvZGl2PlxuICA8ZGl2XG4gICAgW25nU3R5bGVdPVwie1xuICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAnYWxpZ24taXRlbXMnOiAnY2VudGVyJyxcbiAgICAgICdmbGV4LWRpcmVjdGlvbic6IGRpcmVjdGlvbigpID09PSAnaG9yaXpvbnRhbCcgPyAncm93JyA6ICdjb2x1bW4nLFxuICAgIH1cIlxuICA+XG4gICAgPHJ0ZS1pY29uLWJ1dHRvblxuICAgICAgKm5nSWY9XCJpc1Njcm9sbGFibGUoKSAmJiAhc2hvdWxkRGlzcGxheURyb3Bkb3duKClcIlxuICAgICAgYXJpYS1sYWJlbD1cIlByZXZpb3VzIHRhYnNcIlxuICAgICAgdmFyaWFudD1cInRyYW5zcGFyZW50XCJcbiAgICAgIFtuYW1lXT1cImRpcmVjdGlvbigpID09PSAnaG9yaXpvbnRhbCcgPyAnYXJyb3ctY2hldnJvbi1sZWZ0JyA6ICdhcnJvdy1jaGV2cm9uLXVwJ1wiXG4gICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgIG9wYWNpdHk6IGNhblNjcm9sbEJhY2t3YXJkKCkgPyAnMScgOiAnMCcsXG4gICAgICAgICdwb2ludGVyLWV2ZW50cyc6IGNhblNjcm9sbEJhY2t3YXJkKCkgPyAnYXV0bycgOiAnbm9uZScsXG4gICAgICB9XCJcbiAgICAgIChjbGlja0V2ZW50KT1cInNjcm9sbEJhY2t3YXJkKClcIlxuICAgIC8+XG4gICAgPGRpdlxuICAgICAgI3RhYkxpc3RcbiAgICAgIHJvbGU9XCJ0YWJsaXN0XCJcbiAgICAgIGFyaWEtbGFiZWw9XCJTYW1wbGUgVGFic1wiXG4gICAgICBjbGFzcz1cInJ0ZS10YWJcIlxuICAgICAgW2F0dHIuZGF0YS1hbGlnbm1lbnRdPVwic2hvdWxkRGlzcGxheURyb3Bkb3duKCkgPyAnc3RhcnQnIDogYWxpZ25tZW50KClcIlxuICAgICAgW2F0dHIuZGF0YS1kaXJlY3Rpb25dPVwiZGlyZWN0aW9uKClcIlxuICAgICAgW2F0dHIuZGF0YS1vdmVyZmxvdy10eXBlXT1cIm92ZXJmbG93VHlwZSgpXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cInJ0ZS10YWItc2VsZWN0ZWQtaW5kaWNhdG9yXCIgW25nU3R5bGVdPVwidGFiSXRlbVNlbGVjdGVkSW5kaWNhdG9yU3R5bGUoKVwiPjwvc3Bhbj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJzaG91bGREaXNwbGF5RHJvcGRvd24oKSAmJiBvcHRpb25zKCkubGVuZ3RoXCJcbiAgICAgICAgcnRlRHJvcGRvd25cbiAgICAgICAgW3J0ZURyb3Bkb3duT2Zmc2V0XT1cIjEwXCJcbiAgICAgICAgKG1lbnVFdmVudCk9XCJvbkNsaWNrVGFiSXRlbSgkZXZlbnQuaWQpXCJcbiAgICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHJ0ZURyb3Bkb3duVHJpZ2dlclxuICAgICAgICAgIGNsYXNzPVwicnRlLXRhYi1kcm9wZG93bi1idXR0b25cIlxuICAgICAgICAgIFthdHRyLmRhdGEtaW52ZXJ0ZWRdPVwiaW52ZXJ0ZWQoKVwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1vdmVyZmxvdy10eXBlXT1cIm92ZXJmbG93VHlwZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxydGUtaWNvbiAqbmdJZj1cInNlbGVjdGVkVGFiKCk/Lmljb25cIiBhcHBlYXJhbmNlPVwiZmlsbGVkXCIgW25hbWVdPVwic2VsZWN0ZWRUYWIoKT8uaWNvbiFcIj48L3J0ZS1pY29uPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRUYWIoKT8ubGFiZWxcIj57eyBzZWxlY3RlZFRhYigpPy5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICA8cnRlLWJhZGdlXG4gICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkVGFiKCk/LmJhZGdlQ291bnQgJiYgc2VsZWN0ZWRUYWIoKT8uYmFkZ2VDb250ZW50ID09PSAnbnVtYmVyJ1wiXG4gICAgICAgICAgICBbYmFkZ2VUeXBlXT1cInNlbGVjdGVkVGFiKCk/LmJhZGdlVHlwZSFcIlxuICAgICAgICAgICAgW2JhZGdlQ29udGVudF09XCJzZWxlY3RlZFRhYigpPy5iYWRnZUNvbnRlbnQhXCJcbiAgICAgICAgICAgIFtjb3VudF09XCJzZWxlY3RlZFRhYigpPy5iYWRnZUNvdW50XCJcbiAgICAgICAgICAgIFtzaW1wbGVCYWRnZV09XCJ0cnVlXCJcbiAgICAgICAgICA+PC9ydGUtYmFkZ2U+XG4gICAgICAgICAgPHJ0ZS1pY29uIG5hbWU9XCJhcnJvdy1jaGV2cm9uLWRvd25cIiBhcHBlYXJhbmNlPVwib3V0bGluZWRcIj48L3J0ZS1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPHJ0ZS1kcm9wZG93bi1tZW51IFtpdGVtc109XCJkcm9wZG93bkZpbHRlcmVkT3B0aW9ucygpXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnMoKTsgbGV0IGlkeCA9IGluZGV4XCI+XG4gICAgICAgIDxydGUtdGFiLWl0ZW1cbiAgICAgICAgICAjdGFiSXRlbVxuICAgICAgICAgIFtvcHRpb25dPVwib3B0aW9uXCJcbiAgICAgICAgICBbZGlyZWN0aW9uXT1cImRpcmVjdGlvbigpXCJcbiAgICAgICAgICBbY29tcGFjdFNwYWNpbmddPVwiY29tcGFjdFNwYWNpbmcoKVwiXG4gICAgICAgICAgW2lzU2VsZWN0ZWRdPVwiaXNTZWxlY3RlZChvcHRpb24uaWQpXCJcbiAgICAgICAgICBbaW52ZXJ0ZWRdPVwiaW52ZXJ0ZWQoKVwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1oaWRkZW5dPVwic2hvdWxkRGlzcGxheURyb3Bkb3duKClcIlxuICAgICAgICAgIFtpc0hpZGRlbl09XCJzaG91bGREaXNwbGF5RHJvcGRvd24oKVwiXG4gICAgICAgICAgKGtleWRvd24pPVwib25LZXlkb3duVGFiSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAoY2xpY2spPVwib25DbGlja1RhYkl0ZW0ob3B0aW9uLmlkKVwiXG4gICAgICAgID48L3J0ZS10YWItaXRlbT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxydGUtaWNvbi1idXR0b25cbiAgICAgICpuZ0lmPVwiaXNTY3JvbGxhYmxlKCkgJiYgIXNob3VsZERpc3BsYXlEcm9wZG93bigpXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJOZXh0IHRhYnNcIlxuICAgICAgdmFyaWFudD1cInRyYW5zcGFyZW50XCJcbiAgICAgIFtuYW1lXT1cImRpcmVjdGlvbigpID09PSAnaG9yaXpvbnRhbCcgPyAnYXJyb3ctY2hldnJvbi1yaWdodCcgOiAnYXJyb3ctY2hldnJvbi1kb3duJ1wiXG4gICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgIG9wYWNpdHk6IGNhblNjcm9sbEZvcndhcmQoKSA/ICcxJyA6ICcwJyxcbiAgICAgICAgJ3BvaW50ZXItZXZlbnRzJzogY2FuU2Nyb2xsRm9yd2FyZCgpID8gJ2F1dG8nIDogJ25vbmUnLFxuICAgICAgfVwiXG4gICAgICAoY2xpY2tFdmVudCk9XCJzY3JvbGxGb3J3YXJkKClcIlxuICAgIC8+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJydGUtdGFiLWJvcmRlci1ob3Jpem9udGFsXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgIFthdHRyLmRhdGEtZGlyZWN0aW9uXT1cImRpcmVjdGlvbigpXCJcbiAgICBbYXR0ci5kYXRhLWNvbXBhY3Qtc3BhY2luZ109XCJjb21wYWN0U3BhY2luZygpXCJcbiAgICBbYXR0ci5kYXRhLXNjcm9sbGFibGVdPVwiaXNTY3JvbGxhYmxlKCkgJiYgb3ZlcmZsb3dUeXBlKCkgPT09ICdzY3JvbGxhYmxlJ1wiXG4gID48L2Rpdj5cbjwvZGl2PlxuIl19
|