@softheon/armature 17.26.2 → 17.26.3
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/armature.module.mjs +4 -8
- package/esm2022/lib/base-components/sof-context/sof-context.component.mjs +44 -3
- package/esm2022/lib/core/components/app-template/app-template.component.mjs +4 -6
- package/esm2022/lib/header/components/header/header.component.mjs +4 -8
- package/esm2022/lib/header/components/sof-header/sof-header.component.mjs +1 -1
- package/esm2022/lib/header/header-api.mjs +1 -2
- package/esm2022/lib/header/header.module.mjs +6 -11
- package/esm2022/lib/header/models/header.settings.mjs +1 -1
- package/esm2022/lib/navigation/models/nav.settings.mjs +1 -1
- package/esm2022/public-api.mjs +1 -2
- package/fesm2022/softheon-armature.mjs +90 -241
- package/fesm2022/softheon-armature.mjs.map +1 -1
- package/lib/armature.module.d.ts +1 -2
- package/lib/base-components/sof-context/sof-context.component.d.ts +20 -0
- package/lib/core/components/app-template/app-template.component.d.ts +1 -1
- package/lib/header/components/header/header.component.d.ts +1 -4
- package/lib/header/header-api.d.ts +0 -1
- package/lib/header/header.module.d.ts +1 -2
- package/lib/header/models/header.settings.d.ts +0 -3
- package/lib/navigation/models/nav.settings.d.ts +0 -2
- package/package.json +1 -1
- package/public-api.d.ts +0 -1
- package/ag-grid-components/package.json +0 -3
- package/esm2022/lib/header/models/header-external-links.mjs +0 -2
- package/esm2022/lib/navigation/components/b2b-nav/b2b-nav.component.mjs +0 -202
- package/lib/header/models/header-external-links.d.ts +0 -13
- package/lib/navigation/components/b2b-nav/b2b-nav.component.d.ts +0 -91
|
@@ -13,7 +13,6 @@ import * as i9 from "../../../alert-banner/components/alert-banner/alert-banner.
|
|
|
13
13
|
import * as i10 from "@angular/common";
|
|
14
14
|
import * as i11 from "@ngbracket/ngx-layout/flex";
|
|
15
15
|
import * as i12 from "@ngbracket/ngx-layout/extended";
|
|
16
|
-
import * as i13 from "../../../navigation/components/b2b-nav/b2b-nav.component";
|
|
17
16
|
/** The app template component */
|
|
18
17
|
export class AppTemplateComponent {
|
|
19
18
|
/** The log out text */
|
|
@@ -63,7 +62,7 @@ export class AppTemplateComponent {
|
|
|
63
62
|
this.config$ = this.configService.config$;
|
|
64
63
|
this.setDefaults();
|
|
65
64
|
this.configService.config$.subscribe(config => {
|
|
66
|
-
if (config
|
|
65
|
+
if (config.oAuthSettings.preserveRequestedRoute && this.oauthService.hasValidAccessToken()) {
|
|
67
66
|
routeToPreLoginRoute(this.router);
|
|
68
67
|
}
|
|
69
68
|
// object assign is used here so the header doesn't have to re render with the new object reference
|
|
@@ -155,7 +154,6 @@ export class AppTemplateComponent {
|
|
|
155
154
|
};
|
|
156
155
|
// navigation
|
|
157
156
|
this.navigationSettings = {
|
|
158
|
-
version: 'v1',
|
|
159
157
|
mainMenuText: 'MAIN MENU',
|
|
160
158
|
headerHeight: 64,
|
|
161
159
|
menuButtonSRText: 'Navigation Menu Button',
|
|
@@ -260,10 +258,10 @@ export class AppTemplateComponent {
|
|
|
260
258
|
Object.assign(this.navigationTheme, defaultNavTheme);
|
|
261
259
|
}
|
|
262
260
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: AppTemplateComponent, deps: [{ token: i1.BaseConfigService }, { token: i2.TranslateService }, { token: i3.FederatedModuleService }, { token: i4.Router }, { token: i5.OAuthService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
263
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
261
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.7", type: AppTemplateComponent, selector: "sof-ar-app-template", ngImport: i0, template: "<header *ngIf=\"!isFederatedModule\">\r\n <sof-ar-header [settings]=\"headerSettings\" [themeSettings]=\"headerThemeSettings\" [authSettings]=\"headerAuthSettings\"\r\n (setLanguage$)=\"applyLanguage()\" [currentLang]=\"currentLang\">\r\n <ng-container sof-ar-header-left>\r\n <ng-content select=\"[sof-ar-header-left]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-ar-header-center>\r\n <ng-content select=\"[sof-ar-header-center]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-ar-header-right>\r\n <ng-content select=\"[sof-ar-header-right]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-header-user-menu>\r\n <ng-content select=\"[sof-header-user-menu]\"></ng-content>\r\n </ng-container>\r\n </sof-ar-header>\r\n</header>\r\n<ng-content select=\"[sof-ar-template-content]\"> </ng-content>\r\n<ng-container *ngIf=\"isFederatedModule\">\r\n <router-outlet></router-outlet>\r\n</ng-container>\r\n<sof-ar-navigation *ngIf=\"!isFederatedModule\" [navigationData]=\"navigationNodes\" [settings]=\"navigationSettings\"\r\n [advancedSettings]=\"navigationAdvancedSettings\" [themeSettings]=\"navigationTheme\"\r\n [languageSettings]=\"languageSettings\" [currentLang]=\"currentLang\" (setLanguage$)=\"applyLanguage()\"\r\n [logOutText]=\"logOutText\">\r\n <ng-container sof-ar-nav-content>\r\n <sof-ar-alert-banner class=\"sof-ar-alert-banner-container\"></sof-ar-alert-banner>\r\n <div class=\"sof-ar-nav-container\" fxLayout=\"column\" fxLayout=\"start stretch\" style=\"height: 100%;\">\r\n <ng-content select=\"[sof-ar-nav-content-header]\"></ng-content>\r\n <div class=\"sof-ar-nav-content-container\" fxFlex=\"1 0 100%\">\r\n <main [ngStyle.lt-md]=\"{'max-width':navigationSettings?.maxContentWidthMobile+'%'}\"\r\n [ngStyle.gt-sm]=\"{'max-width':navigationSettings?.maxContentWidthDesktop+'%'}\" class=\"main-content\">\r\n <router-outlet></router-outlet>\r\n </main>\r\n </div>\r\n <div fxFlex=\"auto\" fxLayoutAlign=\"end end\">\r\n <sof-ar-footer style=\"width: 100%;\" [footerConfig]=\"{ showPreContent1: false, showPreContent2: false }\">\r\n <ng-container sof-ar-footer-content>\r\n <ng-content select=\"[sof-ar-footer-content]\"></ng-content>\r\n </ng-container>\r\n </sof-ar-footer>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container sof-ar-nav-mobile-footer>\r\n <ng-content select=\"[sof-ar-nav-mobile-footer]\"></ng-content>\r\n </ng-container>\r\n</sof-ar-navigation>\r\n", styles: [".nav-content-container{display:flex;flex-direction:column;height:100%}.sof-ar-nav-container{overflow:overlay}.sof-ar-nav-content-container{width:100%}.main-content{margin:auto}\n"], dependencies: [{ kind: "component", type: i6.ArmatureNavigationComponent, selector: "sof-ar-navigation", inputs: ["navigationData", "settings", "advancedSettings", "themeSettings", "languageSettings", "currentLang", "logOutText"], outputs: ["setLanguage$"] }, { kind: "component", type: i7.ArmatureHeaderComponent, selector: "sof-ar-header", inputs: ["settings", "themeSettings", "authSettings", "currentLang"], outputs: ["setLanguage$", "isLoggedInEE"] }, { kind: "component", type: i8.ArmatureFooterComponent, selector: "sof-ar-footer", inputs: ["footerConfig"] }, { kind: "component", type: i9.AlertBannerComponent, selector: "sof-ar-alert-banner", inputs: ["context"] }, { kind: "directive", type: i4.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i11.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i11.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i11.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i12.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }] }); }
|
|
264
262
|
}
|
|
265
263
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: AppTemplateComponent, decorators: [{
|
|
266
264
|
type: Component,
|
|
267
|
-
args: [{ selector: 'sof-ar-app-template', template: "<header *ngIf=\"!isFederatedModule\">\r\n <sof-ar-header [settings]=\"headerSettings\" [themeSettings]=\"headerThemeSettings\" [authSettings]=\"headerAuthSettings\"\r\n
|
|
265
|
+
args: [{ selector: 'sof-ar-app-template', template: "<header *ngIf=\"!isFederatedModule\">\r\n <sof-ar-header [settings]=\"headerSettings\" [themeSettings]=\"headerThemeSettings\" [authSettings]=\"headerAuthSettings\"\r\n (setLanguage$)=\"applyLanguage()\" [currentLang]=\"currentLang\">\r\n <ng-container sof-ar-header-left>\r\n <ng-content select=\"[sof-ar-header-left]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-ar-header-center>\r\n <ng-content select=\"[sof-ar-header-center]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-ar-header-right>\r\n <ng-content select=\"[sof-ar-header-right]\"></ng-content>\r\n </ng-container>\r\n <ng-container sof-header-user-menu>\r\n <ng-content select=\"[sof-header-user-menu]\"></ng-content>\r\n </ng-container>\r\n </sof-ar-header>\r\n</header>\r\n<ng-content select=\"[sof-ar-template-content]\"> </ng-content>\r\n<ng-container *ngIf=\"isFederatedModule\">\r\n <router-outlet></router-outlet>\r\n</ng-container>\r\n<sof-ar-navigation *ngIf=\"!isFederatedModule\" [navigationData]=\"navigationNodes\" [settings]=\"navigationSettings\"\r\n [advancedSettings]=\"navigationAdvancedSettings\" [themeSettings]=\"navigationTheme\"\r\n [languageSettings]=\"languageSettings\" [currentLang]=\"currentLang\" (setLanguage$)=\"applyLanguage()\"\r\n [logOutText]=\"logOutText\">\r\n <ng-container sof-ar-nav-content>\r\n <sof-ar-alert-banner class=\"sof-ar-alert-banner-container\"></sof-ar-alert-banner>\r\n <div class=\"sof-ar-nav-container\" fxLayout=\"column\" fxLayout=\"start stretch\" style=\"height: 100%;\">\r\n <ng-content select=\"[sof-ar-nav-content-header]\"></ng-content>\r\n <div class=\"sof-ar-nav-content-container\" fxFlex=\"1 0 100%\">\r\n <main [ngStyle.lt-md]=\"{'max-width':navigationSettings?.maxContentWidthMobile+'%'}\"\r\n [ngStyle.gt-sm]=\"{'max-width':navigationSettings?.maxContentWidthDesktop+'%'}\" class=\"main-content\">\r\n <router-outlet></router-outlet>\r\n </main>\r\n </div>\r\n <div fxFlex=\"auto\" fxLayoutAlign=\"end end\">\r\n <sof-ar-footer style=\"width: 100%;\" [footerConfig]=\"{ showPreContent1: false, showPreContent2: false }\">\r\n <ng-container sof-ar-footer-content>\r\n <ng-content select=\"[sof-ar-footer-content]\"></ng-content>\r\n </ng-container>\r\n </sof-ar-footer>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container sof-ar-nav-mobile-footer>\r\n <ng-content select=\"[sof-ar-nav-mobile-footer]\"></ng-content>\r\n </ng-container>\r\n</sof-ar-navigation>\r\n", styles: [".nav-content-container{display:flex;flex-direction:column;height:100%}.sof-ar-nav-container{overflow:overlay}.sof-ar-nav-content-container{width:100%}.main-content{margin:auto}\n"] }]
|
|
268
266
|
}], ctorParameters: () => [{ type: i1.BaseConfigService }, { type: i2.TranslateService }, { type: i3.FederatedModuleService }, { type: i4.Router }, { type: i5.OAuthService }] });
|
|
269
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL3NyYy9saWIvY29yZS9jb21wb25lbnRzL2FwcC10ZW1wbGF0ZS9hcHAtdGVtcGxhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9jb3JlL2NvbXBvbmVudHMvYXBwLXRlbXBsYXRlL2FwcC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBWWxELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFLaEYsaUNBQWlDO0FBTWpDLE1BQU0sT0FBTyxvQkFBb0I7SUFnQy9CLHVCQUF1QjtJQUN2QixJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDO0lBQzVDLENBQUM7SUFFRCxpQ0FBaUM7SUFDakMsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFLRDs7Ozs7OztPQU9HO0lBQ0gsWUFDbUIsYUFBZ0MsRUFDaEMsZ0JBQWtDLEVBQ2xDLHNCQUE4QyxFQUM5QyxNQUFjLEVBQ2QsWUFBMEI7UUFKMUIsa0JBQWEsR0FBYixhQUFhLENBQW1CO1FBQ2hDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsaUJBQVksR0FBWixZQUFZ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dkQsQ0FBQzs4R0FwUlUsb0JBQW9CO2tHQUFwQixvQkFBb0IsMkRDdkJqQywwcUlBOEVDOzsyRkR2RFksb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IE9BdXRoU2VydmljZSB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBIZWFkZXJBdXRoU2V0dGluZ3MgfSBmcm9tICcuLi8uLi8uLi9oZWFkZXIvbW9kZWxzL2hlYWRlci1hdXRoLnNldHRpbmdzJztcclxuaW1wb3J0IHsgSGVhZGVyTGFuZ3VhZ2VTZXR0aW5ncyB9IGZyb20gJy4uLy4uLy4uL2hlYWRlci9tb2RlbHMvaGVhZGVyLWxhbmd1YWdlLnNldHRpbmdzJztcclxuaW1wb3J0IHsgSGVhZGVyVGhlbWVTZXR0aW5ncyB9IGZyb20gJy4uLy4uLy4uL2hlYWRlci9tb2RlbHMvaGVhZGVyLXRoZW1lLnNldHRpbmdzJztcclxuaW1wb3J0IHsgSGVhZGVyU2V0dGluZ3MgfSBmcm9tICcuLi8uLi8uLi9oZWFkZXIvbW9kZWxzL2hlYWRlci5zZXR0aW5ncyc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25BZHZhbmNlZFNldHRpbmdzLCBOYXZpZ2F0aW9uU2V0dGluZ3MsIE5hdmlnYXRpb25UaGVtZVNldHRpbmdzLCBOYXZOb2RlIH0gZnJvbSAnLi4vLi4vLi4vbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWFwaSc7XHJcbmltcG9ydCB7IHJvdXRlVG9QcmVMb2dpblJvdXRlIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL3JvdXRlLXRvLXByZS1sb2dpbi1yb3V0ZSc7XHJcbmltcG9ydCB7IEJhc2VDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvYmFzZS1jb25maWcnO1xyXG5pbXBvcnQgeyBCYXNlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Jhc2UtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGZWRlcmF0ZWRNb2R1bGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmVkZXJhdGVkLW1vZHVsZS5zZXJ2aWNlJztcclxuXHJcbi8qKiBUaGUgYXBwIHRlbXBsYXRlIGNvbXBvbmVudCAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NvZi1hci1hcHAtdGVtcGxhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FwcC10ZW1wbGF0ZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcHBUZW1wbGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIC8qKiBUaGUgY29uZmlnIG9ic2VydmFibGUgKi9cclxuICBwdWJsaWMgY29uZmlnJDogT2JzZXJ2YWJsZTxCYXNlQ29uZmlnPjtcclxuXHJcbiAgLyoqIFRoZSBoZWFkZXIgc2V0dGluZ3MgKi9cclxuICBwdWJsaWMgaGVhZGVyU2V0dGluZ3M6IEhlYWRlclNldHRpbmdzID0ge307XHJcblxyXG4gIC8qKiBUaGUgaGVhZGVyIHRoZW1lIHNldHRpbmdzICovXHJcbiAgcHVibGljIGhlYWRlclRoZW1lU2V0dGluZ3M6IEhlYWRlclRoZW1lU2V0dGluZ3MgPSB7fTtcclxuXHJcbiAgLyoqIFRoZSBoZWFkZXIgYXV0aCBzZXR0aW5ncyAqL1xyXG4gIHB1YmxpYyBoZWFkZXJBdXRoU2V0dGluZ3M6IEhlYWRlckF1dGhTZXR0aW5ncyA9IHt9IGFzIGFueTtcclxuXHJcbiAgLyoqIHRoZSBuYXZpZ2F0aW9uIHRoZW1lIHNldHRpbmdzICovXHJcbiAgcHVibGljIG5hdmlnYXRpb25UaGVtZTogTmF2aWdhdGlvblRoZW1lU2V0dGluZ3MgPSB7fTtcclxuXHJcbiAgLyoqIFRoZSBuYXZpZ2F0aW9uIHNldHRpbmdzICovXHJcbiAgcHVibGljIG5hdmlnYXRpb25TZXR0aW5nczogTmF2aWdhdGlvblNldHRpbmdzID0ge307XHJcblxyXG4gIC8qKiBUaGUgbmF2aWdhdGlvbiBub2RlcyAqL1xyXG4gIHB1YmxpYyBuYXZpZ2F0aW9uTm9kZXM6IEFycmF5PE5hdk5vZGU+ID0gW107XHJcblxyXG4gIC8qKiBUaGUgbmF2aWdhdGlvbiBhZHZhbmNlZCBzZXR0aW5ncyAqL1xyXG4gIHB1YmxpYyBuYXZpZ2F0aW9uQWR2YW5jZWRTZXR0aW5nczogTmF2aWdhdGlvbkFkdmFuY2VkU2V0dGluZ3MgPSB7fTtcclxuXHJcbiAgLyoqIFRoZSBsYW5ndWFnZSBzZXR0aW5ncyAqL1xyXG4gIHB1YmxpYyBsYW5ndWFnZVNldHRpbmdzOiBIZWFkZXJMYW5ndWFnZVNldHRpbmdzID0ge307XHJcblxyXG4gIC8qKiBUaGUgY3VycmVudCBsYW5ndWFnZSAqL1xyXG4gIHB1YmxpYyBjdXJyZW50TGFuZzogc3RyaW5nO1xyXG5cclxuICAvKiogVGhlIGxvZyBvdXQgdGV4dCAqL1xyXG4gIHB1YmxpYyBnZXQgbG9nT3V0VGV4dCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuaGVhZGVyQXV0aFNldHRpbmdzLmxvZ091dFRleHQ7XHJcbiAgfVxyXG5cclxuICAvKiogZ2V0cyB0aGUgbm9uIHVzZWQgbGFuZ3VhZ2UgKi9cclxuICBwdWJsaWMgZ2V0IG90aGVyTGFuZ1RleHQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmxhbmd1YWdlU2V0dGluZ3M/Lmxhbmd1YWdlcz8uZmluZCh4ID0+IHggIT09IHRoaXMuY3VycmVudExhbmcpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFRydWUgd2hlbiB0aGUgYXBwbGljYXRpb24gaXMgcnVubmluZyBhcyBhIGZlZGVyYXRlZCBtb2R1bGUgKi9cclxuICBwdWJsaWMgaXNGZWRlcmF0ZWRNb2R1bGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyB0aGUgY29tcG9uZW50XHJcbiAgICogQHBhcmFtIGNvbmZpZ1NlcnZpY2UgVGhlIGNvbmZpZyBzZXJ2aWNlXHJcbiAgICogQHBhcmFtIHRyYW5zbGF0ZVNlcnZpY2UgVGhlIHRyYW5zbGF0ZSBzZXJ2aWNlXHJcbiAgICogQHBhcmFtIGZlZGVyYXRlZE1vZHVsZVNlcnZpY2UgVGhlIGZlZGVyYXRlZCBtb2R1bGUgc2VydmljZVxyXG4gICAqIEBwYXJhbSByb3V0ZXIgVGhlIHJvdXRlclxyXG4gICAqIEBwYXJhbSBvYXV0aFNlcnZpY2UgVGhlIE9BdXRoIHNlcnZpY2VcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQmFzZUNvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZlZGVyYXRlZE1vZHVsZVNlcnZpY2U6IEZlZGVyYXRlZE1vZHVsZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBvYXV0aFNlcnZpY2U6IE9BdXRoU2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgLyoqIExpZmUgY3ljbGUgaG9vayBmb3IgY29tcG9uZW50IGluaXRpYWxpemF0aW9uICovXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0ZlZGVyYXRlZE1vZHVsZSA9IHRoaXMuZmVkZXJhdGVkTW9kdWxlU2VydmljZS5pc0ZlZGVyYXRlZE1vZHVsZTtcclxuICAgIHRoaXMuY29uZmlnJCA9IHRoaXMuY29uZmlnU2VydmljZS5jb25maWckO1xyXG4gICAgdGhpcy5zZXREZWZhdWx0cygpO1xyXG4gICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyQuc3Vic2NyaWJlKGNvbmZpZyA9PiB7XHJcbiAgICAgIFxyXG4gICAgICBpZiAoY29uZmlnICYmIGNvbmZpZy5vQXV0aFNldHRpbmdzLnByZXNlcnZlUmVxdWVzdGVkUm91dGUgJiYgdGhpcy5vYXV0aFNlcnZpY2UuaGFzVmFsaWRBY2Nlc3NUb2tlbigpKSB7XHJcbiAgICAgICAgcm91dGVUb1ByZUxvZ2luUm91dGUodGhpcy5yb3V0ZXIpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIG9iamVjdCBhc3NpZ24gaXMgdXNlZCBoZXJlIHNvIHRoZSBoZWFkZXIgZG9lc24ndCBoYXZlIHRvIHJlIHJlbmRlciB3aXRoIHRoZSBuZXcgb2JqZWN0IHJlZmVyZW5jZVxyXG4gICAgICAvLyBoZWFkZXJcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmhlYWRlclNldHRpbmdzLCBjb25maWc/LmhlYWRlcj8uc2V0dGluZ3MpO1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuaGVhZGVyVGhlbWVTZXR0aW5ncywgY29uZmlnPy5oZWFkZXI/LnRoZW1lKTtcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmhlYWRlckF1dGhTZXR0aW5ncywgY29uZmlnPy5vQXV0aFNldHRpbmdzKTtcclxuXHJcbiAgICAgIC8vIG5hdmlnYXRpb25cclxuICAgICAgdGhpcy5uYXZpZ2F0aW9uTm9kZXMgPSBjb25maWc/Lm5hdmlnYXRpb24/Lm5vZGVzIHx8IHRoaXMuZ2V0RXhhbXBsZU5hdk5vZGVzKCk7XHJcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5uYXZpZ2F0aW9uU2V0dGluZ3MsIGNvbmZpZz8ubmF2aWdhdGlvbj8uc2V0dGluZ3MpO1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMubmF2aWdhdGlvbkFkdmFuY2VkU2V0dGluZ3MsIGNvbmZpZz8ubmF2aWdhdGlvbj8uYWR2YW5jZWQpO1xyXG4gICAgICB0aGlzLmFzc2lnbkRlZmF1bHROYXZUaGVtZShjb25maWcpO1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMubmF2aWdhdGlvblRoZW1lLCBjb25maWc/Lm5hdmlnYXRpb24/LnRoZW1lKTtcclxuXHJcbiAgICAgIC8vIHNldCBkZXBlbmRlbnQgdmFsdWVcclxuICAgICAgdGhpcy5oZWFkZXJTZXR0aW5ncy5hcm1hdHVyZU5hdmlnYXRpb24gPSAhdGhpcy5uYXZpZ2F0aW9uU2V0dGluZ3MuaGlkZU5hdmlnYXRpb247XHJcbiAgICAgIFxyXG4gICAgICBpZiAodGhpcy5uYXZpZ2F0aW9uU2V0dGluZ3MubWVudVN0eWxlID09PSAncHJvZ3Jlc3MnIHx8IHRoaXMubmF2aWdhdGlvblNldHRpbmdzLmhpZGVOYXZpZ2F0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5oZWFkZXJTZXR0aW5ncy5jcmVhdGVTcGFjZUZvck5hdlRvZ2dsZSA9IHRoaXMubmF2aWdhdGlvblNldHRpbmdzLmFsbG93TmF2VG9nZ2xlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFNldCBib3RoIG5hdmlnYXRpb24gdG9nZ2xlIHNldHRpbmdzIHRvIHRydWUgaWYgZWl0aGVyIGlzIHRydWVcclxuICAgICAgaWYgKHRoaXMuaGVhZGVyU2V0dGluZ3MuY3JlYXRlU3BhY2VGb3JOYXZUb2dnbGUgfHwgdGhpcy5uYXZpZ2F0aW9uU2V0dGluZ3MuYWxsb3dOYXZUb2dnbGUpIHtcclxuICAgICAgICB0aGlzLmhlYWRlclNldHRpbmdzLmNyZWF0ZVNwYWNlRm9yTmF2VG9nZ2xlID0gdGhpcy5uYXZpZ2F0aW9uU2V0dGluZ3MuYWxsb3dOYXZUb2dnbGUgPSB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNldExhbmd1YWdlT3B0aW9ucygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBsaWVzIHRoZSBsYW5ndWFnZSB0byB0aGUgdHJhbnNsYXRlIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gbGFuZyB0aGUgbGFuZ3VhZ2VcclxuICAgKi9cclxuICBwdWJsaWMgYXBwbHlMYW5ndWFnZShsYW5nPzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoIWxhbmcpIHtcclxuICAgICAgbGFuZyA9IHRoaXMub3RoZXJMYW5nVGV4dDtcclxuICAgIH1cclxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS51c2UobGFuZyk7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcgPSBsYW5nO1xyXG4gICAgdGhpcy5jdXJyZW50TGFuZyA9IGxhbmc7XHJcbiAgfVxyXG5cclxuICAvKiogU2V0IHRoZSBsYW5ndWFnZSBvcHRpb25zICovXHJcbiAgcHJpdmF0ZSBzZXRMYW5ndWFnZU9wdGlvbnMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5oZWFkZXJTZXR0aW5ncy5sYW5ndWFnZVNldHRpbmdzKSB7XHJcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5sYW5ndWFnZVNldHRpbmdzLCB0aGlzLmhlYWRlclNldHRpbmdzLmxhbmd1YWdlU2V0dGluZ3MpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubGFuZ3VhZ2VTZXR0aW5ncy5kZWZhdWx0TGFuZ3VhZ2UgPSB0aGlzLmxhbmd1YWdlU2V0dGluZ3MuZGVmYXVsdExhbmd1YWdlIHx8ICdlbic7XHJcbiAgICB0aGlzLmxhbmd1YWdlU2V0dGluZ3MuZGlzcGxheUxhbmd1YWdlT3B0aW9ucyA9IHRoaXMubGFuZ3VhZ2VTZXR0aW5ncy5kaXNwbGF5TGFuZ3VhZ2VPcHRpb25zIHx8IGZhbHNlO1xyXG4gICAgdGhpcy5sYW5ndWFnZVNldHRpbmdzLmxhbmd1YWdlcyA9IHRoaXMubGFuZ3VhZ2VTZXR0aW5ncy5sYW5ndWFnZXMgfHwgWydlbicsICdlcyddO1xyXG4gICAgdGhpcy5sYW5ndWFnZVNldHRpbmdzLmJ1dHRvblRleHQgPSB0aGlzLmxhbmd1YWdlU2V0dGluZ3MuYnV0dG9uVGV4dCB8fCAnTGFuZ3VhZ2VzJztcclxuXHJcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuYWRkTGFuZ3ModGhpcy5sYW5ndWFnZVNldHRpbmdzLmxhbmd1YWdlcyk7XHJcbiAgICB0aGlzLmN1cnJlbnRMYW5nID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nO1xyXG4gICAgdGhpcy5oZWFkZXJTZXR0aW5ncy5sYW5ndWFnZVNldHRpbmdzID0gdGhpcy5sYW5ndWFnZVNldHRpbmdzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREZWZhdWx0cygpOiB2b2lkIHtcclxuICAgIC8vIGhlYWRlclxyXG4gICAgdGhpcy5oZWFkZXJTZXR0aW5ncyA9IHtcclxuICAgICAgYXJtYXR1cmVOYXZpZ2F0aW9uOiB0cnVlLFxyXG4gICAgICBjcmVhdGVTcGFjZUZvck5hdlRvZ2dsZTogdHJ1ZSxcclxuICAgICAgZGlzcGxheUxvZ286IHRydWUsXHJcbiAgICAgIGxvZ29Vcmw6ICdodHRwczovL3NvZnRoZW9uY2Ruc3RvcmFnZS5ibG9iLmNvcmUud2luZG93cy5uZXQvaW1hZ2VzL3NvZnRoZW9uL2xvZ28uc3ZnJyxcclxuICAgICAgbG9nb0FsdFRleHQ6ICd0aGUgZXhhbXBsZSBwb3J0YWwgaGVhZGVyIGxvZ28nLFxyXG4gICAgICBkaXNwbGF5TG9nb1RleHQ6IGZhbHNlLFxyXG4gICAgICBkaXNwbGF5RHJvcERvd25NZW51OiBmYWxzZSxcclxuICAgICAgZHJvcERvd25BcmlhVGV4dDogJ3RoZSBoZWFkZXIgZHJvcCBkb3duIG1lbnUgYnV0dG9uIGljb24nLFxyXG4gICAgICBkcm9wRG93bk1lbnVTUlRleHQ6ICd0aGUgaGVhZGVyIGFjY291bnQgYnV0dG9uIGRyb3AgZG93biBvcHRpb25zJyxcclxuICAgICAgZGlzcGxheUF1dGhJbmZvOiB0cnVlLFxyXG4gICAgICBsYW5ndWFnZVNldHRpbmdzOiB7XHJcbiAgICAgICAgZGlzcGxheUxhbmd1YWdlT3B0aW9uczogdHJ1ZVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhpcy5oZWFkZXJUaGVtZVNldHRpbmdzID0ge1xyXG4gICAgICBoZWFkZXJDb2xvcjogJycsXHJcbiAgICAgIGhlYWRlckRyb3BTaGFkb3c6IHRydWUsXHJcbiAgICAgIGF1dGhvcml6YXRpb25CdXR0b25Db2xvcjogJ3JnYigxMSwgODEsIDE1NiknLFxyXG4gICAgICBhdXRob3JpemF0aW9uQnV0dG9uQmFja2dyb3VuZDogJ3JnYigxOTksIDIxOSwgMjQwKSdcclxuICAgIH07XHJcbiAgICB0aGlzLmhlYWRlckF1dGhTZXR0aW5ncyA9IHtcclxuICAgICAgY2xpZW50SWQ6ICcnLFxyXG4gICAgICBpc3N1ZXI6ICcnLFxyXG4gICAgICBzY29wZTogJ29wZW5pZCBwcm9maWxlJyxcclxuICAgICAgbG9nSW5UZXh0OiAnU0lHTiBJTicsXHJcbiAgICAgIGxvZ091dFRleHQ6ICdTSUdOIE9VVCcsXHJcbiAgICAgIHJlZGlyZWN0VXJpOiAnaHR0cDovL2xvY2FsaG9zdDo0MjAwLycsXHJcbiAgICAgIHNraXBJc3N1ZXJDaGVjazogdHJ1ZSxcclxuICAgICAgcG9zdExvZ091dFVybDogJ2h0dHA6Ly9sb2NhbGhvc3Q6NDIwMC8nLFxyXG4gICAgICBsb2dpblVybDogJycsXHJcbiAgICAgIHJldHVyblJvdXRlOiAnJyxcclxuICAgICAgdGltZW91dEZhY3RvcjogOSxcclxuICAgICAgbXlBY2NvdW50VGV4dDogJ015IEFjY291bnQnLFxyXG4gICAgICBhdXRoU2V0T25TdGFydHVwOiBmYWxzZSxcclxuICAgICAgcmVzcG9uc2VUeXBlOiAnY29kZSdcclxuICAgIH07XHJcblxyXG4gICAgLy8gbmF2aWdhdGlvblxyXG4gICAgdGhpcy5uYXZpZ2F0aW9uU2V0dGluZ3MgPSB7XHJcbiAgICAgIHZlcnNpb246ICd2MScsXHJcbiAgICAgIG1haW5NZW51VGV4dDogJ01BSU4gTUVOVScsXHJcbiAgICAgIGhlYWRlckhlaWdodDogNjQsXHJcbiAgICAgIG1lbnVCdXR0b25TUlRleHQ6ICdOYXZpZ2F0aW9uIE1lbnUgQnV0dG9uJyxcclxuICAgICAgbWF4Q29udGVudFdpZHRoRGVza3RvcDogMTAwLFxyXG4gICAgICBtYXhDb250ZW50V2lkdGhNb2JpbGU6IDEwMFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKiBHZXRzIHRoZSBleGFtcGxlIG5hdmlnYXRpb24gbm9kZXMgKi9cclxuICBwcml2YXRlIGdldEV4YW1wbGVOYXZOb2RlcygpOiBBcnJheTxOYXZOb2RlPiB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICB7XHJcbiAgICAgICAgdGV4dDogJ2RlbW8ubmF2XzEnLFxyXG4gICAgICAgIGZvbnRBd2Vzb21lSWNvbjogJ2ZhZCBmYS1ob21lJyxcclxuICAgICAgICByb3V0ZTogJy9vdmVydmlldycsXHJcbiAgICAgICAgc3ViTm9kZXM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0ZXh0OiAnZGVtby5uYXZfMicsXHJcbiAgICAgICAgZm9udEF3ZXNvbWVJY29uOiAnZmFkIGZhLWZpbGUtYWx0JyxcclxuICAgICAgICByb3V0ZTogJy9kb2N1bWVudHMnLFxyXG4gICAgICAgIHN1Yk5vZGVzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRleHQ6ICdkZW1vLm5hdl8yYScsXHJcbiAgICAgICAgICAgIHJvdXRlOiAnL2RvY3VtZW50cy9pbnZvaWNlJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGV4dDogJ2RlbW8ubmF2XzJiJyxcclxuICAgICAgICAgICAgcm91dGU6ICcvZG9jdW1lbnRzL25vdGljZSdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRleHQ6ICdkZW1vLm5hdl8yYycsXHJcbiAgICAgICAgICAgIHJvdXRlOiAnL3RheCdcclxuICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0ZXh0OiAnUEFZTUVOVFMnLFxyXG4gICAgICAgIGZvbnRBd2Vzb21lSWNvbjogJ2ZhZCBmYS1kb2xsYXItc2lnbicsXHJcbiAgICAgICAgc3ViTm9kZXM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGV4dDogJ01ha2UgYSBQYXltZW50JyxcclxuICAgICAgICAgICAgcm91dGU6ICcvcGF5bWVudCdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRleHQ6ICdBdXRvcGF5JyxcclxuICAgICAgICAgICAgcm91dGU6ICcvYXV0b3BheSdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRleHQ6ICdTY2hlZHVsZWQgUGF5bWVudHMnLFxyXG4gICAgICAgICAgICByb3V0ZTogJy9zY2hlZHVsZWQnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0ZXh0OiAnUGF5bWVudCBIaXN0b3J5JyxcclxuICAgICAgICAgICAgcm91dGU6ICcvaGlzdG9yeSdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRleHQ6ICdNeSBQYXltZW50IE1ldGhvZHMnLFxyXG4gICAgICAgICAgICByb3V0ZTogJy9wYXltZW50LW1ldGhvZHMnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGV4dDogJ1NFUlZJQ0UgUkVRVUVTVCcsXHJcbiAgICAgICAgZm9udEF3ZXNvbWVJY29uOiAnZmFkIGZhLWhhbmRzLWhlbHBpbmcnLFxyXG4gICAgICAgIHJvdXRlOiAnL3NlcnZpY2UtcmVxdWVzdHMnLFxyXG4gICAgICAgIHN1Yk5vZGVzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGV4dDogJ1BBUEVSTEVTUyBTRVRUSU5HUycsXHJcbiAgICAgICAgZm9udEF3ZXNvbWVJY29uOiAnZmFkIGZhLWxlYWYtaGVhcnQnLFxyXG4gICAgICAgIHJvdXRlOiAnL3BhcGVybGVzcycsXHJcbiAgICAgICAgc3ViTm9kZXM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0ZXh0OiAnRkFRcycsXHJcbiAgICAgICAgZm9udEF3ZXNvbWVJY29uOiAnZmFkIGZhLXF1ZXN0aW9uJyxcclxuICAgICAgICByb3V0ZTogJy9mYXFzJyxcclxuICAgICAgICBzdWJOb2RlczogW11cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRleHQ6ICdMYW5ndWFnZSBIZWxwJyxcclxuICAgICAgICBmb250QXdlc29tZUljb246ICdmYXIgZmEtbGFuZ3VhZ2UnLFxyXG4gICAgICAgIHJvdXRlOiAnL2xhbmd1YWdlLWhlbHAnLFxyXG4gICAgICAgIHN1Yk5vZGVzOiBbXVxyXG4gICAgICB9XTtcclxuICB9XHJcblxyXG4gIC8qKiBBc3NpZ25zIHRoZSBkZWZhdWx0IG5hdmlnYXRpb24gdGhlbWUgKi9cclxuICBwcml2YXRlIGFzc2lnbkRlZmF1bHROYXZUaGVtZShjb25maWc6IEJhc2VDb25maWcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRlZmF1bHROYXZUaGVtZSA9IHtcclxuICAgICAgYmdHcmFkaWVudENvbG9yMTogJyNmZmYnLFxyXG4gICAgICBiZ0dyYWRpZW50Q29sb3IyOiAnI2ZmZicsXHJcbiAgICAgIGJvcmRlclJpZ2h0Q29sb3I6ICd0cmFuc3BhcmVudCcsXHJcbiAgICAgIGNvbnRlbnRCZ0NvbG9yOiAnI2VjZWNlYycsXHJcbiAgICAgIGZvbnRDb2xvcjogJyMwMDAnLFxyXG4gICAgICBoaWdobGlnaHRHcmFkaWVudDE6ICdyZ2IoMTk5LCAyMTksIDI0MCknLFxyXG4gICAgICBoaWdobGlnaHRHcmFkaWVudDI6ICdyZ2IoMTEsIDgxLCAxNTYpJyxcclxuICAgICAgbGlzdEJvcmRlckNvbG9yOiAnI0NGRDhEQycsXHJcbiAgICAgIHN1YkhpZ2hsaWdodEJnQ29sb3I6ICdyZ2JhKDI1NSwyNTUsMjU1LCAuMjApJyxcclxuICAgICAgc3ViSGlnaGxpZ2h0Qm9yZGVyQ29sb3I6ICcjMDBBQ0MxJ1xyXG4gICAgfTtcclxuICAgIE9iamVjdC5hc3NpZ24odGhpcy5uYXZpZ2F0aW9uVGhlbWUsIGRlZmF1bHROYXZUaGVtZSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8aGVhZGVyICpuZ0lmPVwiIWlzRmVkZXJhdGVkTW9kdWxlXCI+XHJcbiAgPHNvZi1hci1oZWFkZXIgW3NldHRpbmdzXT1cImhlYWRlclNldHRpbmdzXCIgW3RoZW1lU2V0dGluZ3NdPVwiaGVhZGVyVGhlbWVTZXR0aW5nc1wiIFthdXRoU2V0dGluZ3NdPVwiaGVhZGVyQXV0aFNldHRpbmdzXCJcclxuICAgIChzZXRMYW5ndWFnZSQpPVwiYXBwbHlMYW5ndWFnZSgpXCIgW2N1cnJlbnRMYW5nXT1cImN1cnJlbnRMYW5nXCI+XHJcbiAgICA8bmctY29udGFpbmVyIHNvZi1hci1oZWFkZXItbGVmdD5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NvZi1hci1oZWFkZXItbGVmdF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgc29mLWFyLWhlYWRlci1jZW50ZXI+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzb2YtYXItaGVhZGVyLWNlbnRlcl1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgc29mLWFyLWhlYWRlci1yaWdodD5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NvZi1hci1oZWFkZXItcmlnaHRdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyIHNvZi1oZWFkZXItdXNlci1tZW51PlxyXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc29mLWhlYWRlci11c2VyLW1lbnVdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9zb2YtYXItaGVhZGVyPlxyXG48L2hlYWRlcj5cclxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NvZi1hci10ZW1wbGF0ZS1jb250ZW50XVwiPiA8L25nLWNvbnRlbnQ+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJpc0ZlZGVyYXRlZE1vZHVsZVwiPlxyXG4gIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cclxuPC9uZy1jb250YWluZXI+XHJcbkBpZihuYXZpZ2F0aW9uU2V0dGluZ3MudmVyc2lvbiA9PT0gJ3YyJyl7XHJcbjxzb2YtbmF2LWIyYiAqbmdJZj1cIiFpc0ZlZGVyYXRlZE1vZHVsZVwiIFtuYXZpZ2F0aW9uRGF0YV09XCJuYXZpZ2F0aW9uTm9kZXNcIiBbc2V0dGluZ3NdPVwibmF2aWdhdGlvblNldHRpbmdzXCJcclxuICBbYWR2YW5jZWRTZXR0aW5nc109XCJuYXZpZ2F0aW9uQWR2YW5jZWRTZXR0aW5nc1wiIFt0aGVtZVNldHRpbmdzXT1cIm5hdmlnYXRpb25UaGVtZVwiXHJcbiAgW2xhbmd1YWdlU2V0dGluZ3NdPVwibGFuZ3VhZ2VTZXR0aW5nc1wiIFtjdXJyZW50TGFuZ109XCJjdXJyZW50TGFuZ1wiIChzZXRMYW5ndWFnZSQpPVwiYXBwbHlMYW5ndWFnZSgpXCJcclxuICBbbG9nT3V0VGV4dF09XCJsb2dPdXRUZXh0XCI+XHJcbiAgPG5nLWNvbnRhaW5lciBzb2YtYXItbmF2LWNvbnRlbnQ+XHJcbiAgICA8c29mLWFyLWFsZXJ0LWJhbm5lciBjbGFzcz1cInNvZi1hci1hbGVydC1iYW5uZXItY29udGFpbmVyXCI+PC9zb2YtYXItYWxlcnQtYmFubmVyPlxyXG4gICAgPGRpdiBjbGFzcz1cInNvZi1hci1uYXYtY29udGFpbmVyXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dD1cInN0YXJ0IHN0cmV0Y2hcIiBzdHlsZT1cImhlaWdodDogMTAwJTtcIj5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NvZi1hci1uYXYtY29udGVudC1oZWFkZXJdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic29mLWFyLW5hdi1jb250ZW50LWNvbnRhaW5lclwiIGZ4RmxleD1cIjEgMCAxMDAlXCI+XHJcbiAgICAgICAgPG1haW4gW25nU3R5bGUubHQtbWRdPVwieydtYXgtd2lkdGgnOm5hdmlnYXRpb25TZXR0aW5ncz8ubWF4Q29udGVudFdpZHRoTW9iaWxlKyclJ31cIlxyXG4gICAgICAgICAgW25nU3R5bGUuZ3Qtc21dPVwieydtYXgtd2lkdGgnOm5hdmlnYXRpb25TZXR0aW5ncz8ubWF4Q29udGVudFdpZHRoRGVza3RvcCsnJSd9XCIgY2xhc3M9XCJtYWluLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cclxuICAgICAgICA8L21haW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGZ4RmxleD1cImF1dG9cIiBmeExheW91dEFsaWduPVwiZW5kIGVuZFwiPlxyXG4gICAgICAgIDxzb2YtYXItZm9vdGVyIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW2Zvb3RlckNvbmZpZ109XCJ7IHNob3dQcmVDb250ZW50MTogZmFsc2UsIHNob3dQcmVDb250ZW50MjogZmFsc2UgfVwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBzb2YtYXItZm9vdGVyLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzb2YtYXItZm9vdGVyLWNvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9zb2YtYXItZm9vdGVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgc29mLWFyLW5hdi1tb2JpbGUtZm9vdGVyPlxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NvZi1hci1uYXYtbW9iaWxlLWZvb3Rlcl1cIj48L25nLWNvbnRlbnQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvc29mLW5hdi1iMmI+XHJcbn1cclxuQGVsc2Uge1xyXG48c29mLWFyLW5hdmlnYXRpb24gKm5nSWY9XCIhaXNGZWRlcmF0ZWRNb2R1bGVcIiBbbmF2aWdhdGlvbkRhdGFdPVwibmF2aWdhdGlvbk5vZGVzXCIgW3NldHRpbmdzXT1cIm5hdmlnYXRpb25TZXR0aW5nc1wiXHJcbiAgW2FkdmFuY2VkU2V0dGluZ3NdPVwibmF2aWdhdGlvbkFkdmFuY2VkU2V0dGluZ3NcIiBbdGhlbWVTZXR0aW5nc109XCJuYXZpZ2F0aW9uVGhlbWVcIlxyXG4gIFtsYW5ndWFnZVNldHRpbmdzXT1cImxhbmd1YWdlU2V0dGluZ3NcIiBbY3VycmVudExhbmddPVwiY3VycmVudExhbmdcIiAoc2V0TGFuZ3VhZ2UkKT1cImFwcGx5TGFuZ3VhZ2UoKVwiXHJcbiAgW2xvZ091dFRleHRdPVwibG9nT3V0VGV4dFwiPlxyXG4gIDxuZy1jb250YWluZXIgc29mLWFyLW5hdi1jb250ZW50PlxyXG4gICAgPHNvZi1hci1hbGVydC1iYW5uZXIgY2xhc3M9XCJzb2YtYXItYWxlcnQtYmFubmVyLWNvbnRhaW5lclwiPjwvc29mLWFyLWFsZXJ0LWJhbm5lcj5cclxuICAgIDxkaXYgY2xhc3M9XCJzb2YtYXItbmF2LWNvbnRhaW5lclwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXQ9XCJzdGFydCBzdHJldGNoXCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzb2YtYXItbmF2LWNvbnRlbnQtaGVhZGVyXVwiPjwvbmctY29udGVudD5cclxuICAgICAgPGRpdiBjbGFzcz1cInNvZi1hci1uYXYtY29udGVudC1jb250YWluZXJcIiBmeEZsZXg9XCIxIDAgMTAwJVwiPlxyXG4gICAgICAgIDxtYWluIFtuZ1N0eWxlLmx0LW1kXT1cInsnbWF4LXdpZHRoJzpuYXZpZ2F0aW9uU2V0dGluZ3M/Lm1heENvbnRlbnRXaWR0aE1vYmlsZSsnJSd9XCJcclxuICAgICAgICAgIFtuZ1N0eWxlLmd0LXNtXT1cInsnbWF4LXdpZHRoJzpuYXZpZ2F0aW9uU2V0dGluZ3M/Lm1heENvbnRlbnRXaWR0aERlc2t0b3ArJyUnfVwiIGNsYXNzPVwibWFpbi1jb250ZW50XCI+XHJcbiAgICAgICAgICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XHJcbiAgICAgICAgPC9tYWluPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBmeEZsZXg9XCJhdXRvXCIgZnhMYXlvdXRBbGlnbj1cImVuZCBlbmRcIj5cclxuICAgICAgICA8c29mLWFyLWZvb3RlciBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIFtmb290ZXJDb25maWddPVwieyBzaG93UHJlQ29udGVudDE6IGZhbHNlLCBzaG93UHJlQ29udGVudDI6IGZhbHNlIH1cIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgc29mLWFyLWZvb3Rlci1jb250ZW50PlxyXG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc29mLWFyLWZvb3Rlci1jb250ZW50XVwiPjwvbmctY29udGVudD5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvc29mLWFyLWZvb3Rlcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctY29udGFpbmVyIHNvZi1hci1uYXYtbW9iaWxlLWZvb3Rlcj5cclxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzb2YtYXItbmF2LW1vYmlsZS1mb290ZXJdXCI+PC9uZy1jb250ZW50PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L3NvZi1hci1uYXZpZ2F0aW9uPlxyXG59Il19
|
|
267
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL3NyYy9saWIvY29yZS9jb21wb25lbnRzL2FwcC10ZW1wbGF0ZS9hcHAtdGVtcGxhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9jb3JlL2NvbXBvbmVudHMvYXBwLXRlbXBsYXRlL2FwcC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBWWxELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQUtoRixpQ0FBaUM7QUFNakMsTUFBTSxPQUFPLG9CQUFvQjtJQWdDL0IsdUJBQXVCO0lBQ3ZCLElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUM7SUFDNUMsQ0FBQztJQUVELGlDQUFpQztJQUNqQyxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUtEOzs7Ozs7O09BT0c7SUFDSCxZQUNtQixhQUFnQyxFQUNoQyxnQkFBa0MsRUFDbEMsc0JBQThDLEVBQzlDLE1BQWMsRUFDZCxZQUEwQjtRQUoxQixrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7UUFDaEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxpQkFBWSxHQUFaLFlBQVks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QUFvQiwyREN2QmpDLDJtRkFnREE7OzJGRHpCYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgT0F1dGhTZXJ2aWNlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IEhlYWRlckF1dGhTZXR0aW5ncyB9IGZyb20gJy4uLy4uLy4uL2hlYWRlci9tb2RlbHMvaGVhZGVyLWF1dGguc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBIZWFkZXJMYW5ndWFnZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vLi4vaGVhZGVyL21vZGVscy9oZWFkZXItbGFuZ3VhZ2Uuc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBIZWFkZXJUaGVtZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vLi4vaGVhZGVyL21vZGVscy9oZWFkZXItdGhlbWUuc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBIZWFkZXJTZXR0aW5ncyB9IGZyb20gJy4uLy4uLy4uL2hlYWRlci9tb2RlbHMvaGVhZGVyLnNldHRpbmdzJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkFkdmFuY2VkU2V0dGluZ3MsIE5hdmlnYXRpb25TZXR0aW5ncywgTmF2aWdhdGlvblRoZW1lU2V0dGluZ3MsIE5hdk5vZGUgfSBmcm9tICcuLi8uLi8uLi9uYXZpZ2F0aW9uL25hdmlnYXRpb24tYXBpJztcclxuaW1wb3J0IHsgcm91dGVUb1ByZUxvZ2luUm91dGUgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMvcm91dGUtdG8tcHJlLWxvZ2luLXJvdXRlJztcclxuaW1wb3J0IHsgQmFzZUNvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscy9iYXNlLWNvbmZpZyc7XHJcbmltcG9ydCB7IEJhc2VDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYmFzZS1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IEZlZGVyYXRlZE1vZHVsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mZWRlcmF0ZWQtbW9kdWxlLnNlcnZpY2UnO1xyXG5cclxuLyoqIFRoZSBhcHAgdGVtcGxhdGUgY29tcG9uZW50ICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc29mLWFyLWFwcC10ZW1wbGF0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FwcC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYXBwLXRlbXBsYXRlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcFRlbXBsYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgLyoqIFRoZSBjb25maWcgb2JzZXJ2YWJsZSAqL1xyXG4gIHB1YmxpYyBjb25maWckOiBPYnNlcnZhYmxlPEJhc2VDb25maWc+O1xyXG5cclxuICAvKiogVGhlIGhlYWRlciBzZXR0aW5ncyAqL1xyXG4gIHB1YmxpYyBoZWFkZXJTZXR0aW5nczogSGVhZGVyU2V0dGluZ3MgPSB7fTtcclxuXHJcbiAgLyoqIFRoZSBoZWFkZXIgdGhlbWUgc2V0dGluZ3MgKi9cclxuICBwdWJsaWMgaGVhZGVyVGhlbWVTZXR0aW5nczogSGVhZGVyVGhlbWVTZXR0aW5ncyA9IHt9O1xyXG5cclxuICAvKiogVGhlIGhlYWRlciBhdXRoIHNldHRpbmdzICovXHJcbiAgcHVibGljIGhlYWRlckF1dGhTZXR0aW5nczogSGVhZGVyQXV0aFNldHRpbmdzID0ge30gYXMgYW55O1xyXG5cclxuICAvKiogdGhlIG5hdmlnYXRpb24gdGhlbWUgc2V0dGluZ3MgKi9cclxuICBwdWJsaWMgbmF2aWdhdGlvblRoZW1lOiBOYXZpZ2F0aW9uVGhlbWVTZXR0aW5ncyA9IHt9O1xyXG5cclxuICAvKiogVGhlIG5hdmlnYXRpb24gc2V0dGluZ3MgKi9cclxuICBwdWJsaWMgbmF2aWdhdGlvblNldHRpbmdzOiBOYXZpZ2F0aW9uU2V0dGluZ3MgPSB7fTtcclxuXHJcbiAgLyoqIFRoZSBuYXZpZ2F0aW9uIG5vZGVzICovXHJcbiAgcHVibGljIG5hdmlnYXRpb25Ob2RlczogQXJyYXk8TmF2Tm9kZT4gPSBbXTtcclxuXHJcbiAgLyoqIFRoZSBuYXZpZ2F0aW9uIGFkdmFuY2VkIHNldHRpbmdzICovXHJcbiAgcHVibGljIG5hdmlnYXRpb25BZHZhbmNlZFNldHRpbmdzOiBOYXZpZ2F0aW9uQWR2YW5jZWRTZXR0aW5ncyA9IHt9O1xyXG5cclxuICAvKiogVGhlIGxhbmd1YWdlIHNldHRpbmdzICovXHJcbiAgcHVibGljIGxhbmd1YWdlU2V0dGluZ3M6IEhlYWRlckxhbmd1YWdlU2V0dGluZ3MgPSB7fTtcclxuXHJcbiAgLyoqIFRoZSBjdXJyZW50IGxhbmd1YWdlICovXHJcbiAgcHVibGljIGN1cnJlbnRMYW5nOiBzdHJpbmc7XHJcblxyXG4gIC8qKiBUaGUgbG9nIG91dCB0ZXh0ICovXHJcbiAgcHVibGljIGdldCBsb2dPdXRUZXh0KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5oZWFkZXJBdXRoU2V0dGluZ3MubG9nT3V0VGV4dDtcclxuICB9XHJcblxyXG4gIC8qKiBnZXRzIHRoZSBub24gdXNlZCBsYW5ndWFnZSAqL1xyXG4gIHB1YmxpYyBnZXQgb3RoZXJMYW5nVGV4dCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VTZXR0aW5ncz8ubGFuZ3VhZ2VzPy5maW5kKHggPT4geCAhPT0gdGhpcy5jdXJyZW50TGFuZyk7XHJcbiAgfVxyXG5cclxuICAvKiogVHJ1ZSB3aGVuIHRoZSBhcHBsaWNhdGlvbiBpcyBydW5uaW5nIGFzIGEgZmVkZXJhdGVkIG1vZHVsZSAqL1xyXG4gIHB1YmxpYyBpc0ZlZGVyYXRlZE1vZHVsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBDb25zdHJ1Y3RzIHRoZSBjb21wb25lbnRcclxuICAgKiBAcGFyYW0gY29uZmlnU2VydmljZSBUaGUgY29uZmlnIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gdHJhbnNsYXRlU2VydmljZSBUaGUgdHJhbnNsYXRlIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gZmVkZXJhdGVkTW9kdWxlU2VydmljZSBUaGUgZmVkZXJhdGVkIG1vZHVsZSBzZXJ2aWNlXHJcbiAgICogQHBhcmFtIHJvdXRlciBUaGUgcm91dGVyXHJcbiAgICogQHBhcmFtIG9hdXRoU2VydmljZSBUaGUgT0F1dGggc2VydmljZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWdTZXJ2aWNlOiBCYXNlQ29uZmlnU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmVkZXJhdGVkTW9kdWxlU2VydmljZTogRmVkZXJhdGVkTW9kdWxlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9hdXRoU2VydmljZTogT0F1dGhTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICAvKiogTGlmZSBjeWNsZSBob29rIGZvciBjb21wb25lbnQgaW5pdGlhbGl6YXRpb24gKi9cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzRmVkZXJhdGVkTW9kdWxlID0gdGhpcy5mZWRlcmF0ZWRNb2R1bGVTZXJ2aWNlLmlzRmVkZXJhdGVkTW9kdWxlO1xyXG4gICAgdGhpcy5jb25maWckID0gdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyQ7XHJcbiAgICB0aGlzLnNldERlZmF1bHRzKCk7XHJcbiAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnJC5zdWJzY3JpYmUoY29uZmlnID0+IHtcclxuICAgICAgaWYgKGNvbmZpZy5vQXV0aFNldHRpbmdzLnByZXNlcnZlUmVxdWVzdGVkUm91dGUgJiYgdGhpcy5vYXV0aFNlcnZpY2UuaGFzVmFsaWRBY2Nlc3NUb2tlbigpKSB7XHJcbiAgICAgICAgcm91dGVUb1ByZUxvZ2luUm91dGUodGhpcy5yb3V0ZXIpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIG9iamVjdCBhc3NpZ24gaXMgdXNlZCBoZXJlIHNvIHRoZSBoZWFkZXIgZG9lc24ndCBoYXZlIHRvIHJlIHJlbmRlciB3aXRoIHRoZSBuZXcgb2JqZWN0IHJlZmVyZW5jZVxyXG4gICAgICAvLyBoZWFkZXJcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmhlYWRlclNldHRpbmdzLCBjb25maWc/LmhlYWRlcj8uc2V0dGluZ3MpO1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuaGVhZGVyVGhlbWVTZXR0aW5ncywgY29uZmlnPy5oZWFkZXI/LnRoZW1lKTtcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmhlYWRlckF1dGhTZXR0aW5ncywgY29uZmlnPy5vQXV0aFNldHRpbmdzKTtcclxuXHJcbiAgICAgIC8vIG5hdmlnYXRpb25cclxuICAgICAgdGhpcy5uYXZpZ2F0aW9uTm9kZXMgPSBjb25maWc/Lm5hdmlnYXRpb24/Lm5vZGVzIHx8IHRoaXMuZ2V0RXhhbXBsZU5hdk5vZGVzKCk7XHJcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5uYXZpZ2F0aW9uU2V0dGluZ3MsIGNvbmZpZz8ubmF2aWdhdGlvbj8uc2V0dGluZ3MpO1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMubmF2aWdhdGlvbkFkdmFuY2VkU2V0dGluZ3MsIGNvbmZpZz8ubmF2aWdhdGlvbj8uYWR2YW5jZWQpO1xyXG4gICAgICB0aGlzLmFzc2lnbkRlZmF1bHROYXZUaGVtZShjb25maWcpO1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMubmF2aWdhdGlvblRoZW1lLCBjb25maWc/Lm5hdmlnYXRpb24/LnRoZW1lKTtcclxuXHJcbiAgICAgIC8vIHNldCBkZXBlbmRlbnQgdmFsdWVcclxuICAgICAgdGhpcy5oZWFkZXJTZXR0aW5ncy5hcm1hdHVyZU5hdmlnYXRpb24gPSAhdGhpcy5uYXZpZ2F0aW9uU2V0dGluZ3MuaGlkZU5hdmlnYXRpb247XHJcbiAgICAgIFxyXG4gICAgICBpZiAodGhpcy5uYXZpZ2F0aW9uU2V0dGluZ3MubWVudVN0eWxlID09PSAncHJvZ3Jlc3MnIHx8IHRoaXMubmF2aWdhdGlvblNldHRpbmdzLmhpZGVOYXZpZ2F0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5oZWFkZXJTZXR0aW5ncy5jcmVhdGVTcGFjZUZvck5hdlRvZ2dsZSA9IHRoaXMubmF2aWdhdGlvblNldHRpbmdzLmFsbG93TmF2VG9nZ2xlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFNldCBib3RoIG5hdmlnYXRpb24gdG9nZ2xlIHNldHRpbmdzIHRvIHRydWUgaWYgZWl0aGVyIGlzIHRydWVcclxuICAgICAgaWYgKHRoaXMuaGVhZGVyU2V0dGluZ3MuY3JlYXRlU3BhY2VGb3JOYXZUb2dnbGUgfHwgdGhpcy5uYXZpZ2F0aW9uU2V0dGluZ3MuYWxsb3dOYXZUb2dnbGUpIHtcclxuICAgICAgICB0aGlzLmhlYWRlclNldHRpbmdzLmNyZWF0ZVNwYWNlRm9yTmF2VG9nZ2xlID0gdGhpcy5uYXZpZ2F0aW9uU2V0dGluZ3MuYWxsb3dOYXZUb2dnbGUgPSB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNldExhbmd1YWdlT3B0aW9ucygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBsaWVzIHRoZSBsYW5ndWFnZSB0byB0aGUgdHJhbnNsYXRlIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gbGFuZyB0aGUgbGFuZ3VhZ2VcclxuICAgKi9cclxuICBwdWJsaWMgYXBwbHlMYW5ndWFnZShsYW5nPzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoIWxhbmcpIHtcclxuICAgICAgbGFuZyA9IHRoaXMub3RoZXJMYW5nVGV4dDtcclxuICAgIH1cclxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS51c2UobGFuZyk7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcgPSBsYW5nO1xyXG4gICAgdGhpcy5jdXJyZW50TGFuZyA9IGxhbmc7XHJcbiAgfVxyXG5cclxuICAvKiogU2V0IHRoZSBsYW5ndWFnZSBvcHRpb25zICovXHJcbiAgcHJpdmF0ZSBzZXRMYW5ndWFnZU9wdGlvbnMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5oZWFkZXJTZXR0aW5ncy5sYW5ndWFnZVNldHRpbmdzKSB7XHJcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5sYW5ndWFnZVNldHRpbmdzLCB0aGlzLmhlYWRlclNldHRpbmdzLmxhbmd1YWdlU2V0dGluZ3MpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubGFuZ3VhZ2VTZXR0aW5ncy5kZWZhdWx0TGFuZ3VhZ2UgPSB0aGlzLmxhbmd1YWdlU2V0dGluZ3MuZGVmYXVsdExhbmd1YWdlIHx8ICdlbic7XHJcbiAgICB0aGlzLmxhbmd1YWdlU2V0dGluZ3MuZGlzcGxheUxhbmd1YWdlT3B0aW9ucyA9IHRoaXMubGFuZ3VhZ2VTZXR0aW5ncy5kaXNwbGF5TGFuZ3VhZ2VPcHRpb25zIHx8IGZhbHNlO1xyXG4gICAgdGhpcy5sYW5ndWFnZVNldHRpbmdzLmxhbmd1YWdlcyA9IHRoaXMubGFuZ3VhZ2VTZXR0aW5ncy5sYW5ndWFnZXMgfHwgWydlbicsICdlcyddO1xyXG4gICAgdGhpcy5sYW5ndWFnZVNldHRpbmdzLmJ1dHRvblRleHQgPSB0aGlzLmxhbmd1YWdlU2V0dGluZ3MuYnV0dG9uVGV4dCB8fCAnTGFuZ3VhZ2VzJztcclxuXHJcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuYWRkTGFuZ3ModGhpcy5sYW5ndWFnZVNldHRpbmdzLmxhbmd1YWdlcyk7XHJcbiAgICB0aGlzLmN1cnJlbnRMYW5nID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nO1xyXG4gICAgdGhpcy5oZWFkZXJTZXR0aW5ncy5sYW5ndWFnZVNldHRpbmdzID0gdGhpcy5sYW5ndWFnZVNldHRpbmdzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREZWZhdWx0cygpOiB2b2lkIHtcclxuICAgIC8vIGhlYWRlclxyXG4gICAgdGhpcy5oZWFkZXJTZXR0aW5ncyA9IHtcclxuICAgICAgYXJtYXR1cmVOYXZpZ2F0aW9uOiB0cnVlLFxyXG4gICAgICBjcmVhdGVTcGFjZUZvck5hdlRvZ2dsZTogdHJ1ZSxcclxuICAgICAgZGlzcGxheUxvZ286IHRydWUsXHJcbiAgICAgIGxvZ29Vcmw6ICdodHRwczovL3NvZnRoZW9uY2Ruc3RvcmFnZS5ibG9iLmNvcmUud2luZG93cy5uZXQvaW1hZ2VzL3NvZnRoZW9uL2xvZ28uc3ZnJyxcclxuICAgICAgbG9nb0FsdFRleHQ6ICd0aGUgZXhhbXBsZSBwb3J0YWwgaGVhZGVyIGxvZ28nLFxyXG4gICAgICBkaXNwbGF5TG9nb1RleHQ6IGZhbHNlLFxyXG4gICAgICBkaXNwbGF5RHJvcERvd25NZW51OiBmYWxzZSxcclxuICAgICAgZHJvcERvd25BcmlhVGV4dDogJ3RoZSBoZWFkZXIgZHJvcCBkb3duIG1lbnUgYnV0dG9uIGljb24nLFxyXG4gICAgICBkcm9wRG93bk1lbnVTUlRleHQ6ICd0aGUgaGVhZGVyIGFjY291bnQgYnV0dG9uIGRyb3AgZG93biBvcHRpb25zJyxcclxuICAgICAgZGlzcGxheUF1dGhJbmZvOiB0cnVlLFxyXG4gICAgICBsYW5ndWFnZVNldHRpbmdzOiB7XHJcbiAgICAgICAgZGlzcGxheUxhbmd1YWdlT3B0aW9uczogdHJ1ZVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhpcy5oZWFkZXJUaGVtZVNldHRpbmdzID0ge1xyXG4gICAgICBoZWFkZXJDb2xvcjogJycsXHJcbiAgICAgIGhlYWRlckRyb3BTaGFkb3c6IHRydWUsXHJcbiAgICAgIGF1dGhvcml6YXRpb25CdXR0b25Db2xvcjogJ3JnYigxMSwgODEsIDE1NiknLFxyXG4gICAgICBhdXRob3JpemF0aW9uQnV0dG9uQmFja2dyb3VuZDogJ3JnYigxOTksIDIxOSwgMjQwKSdcclxuICAgIH07XHJcbiAgICB0aGlzLmhlYWRlckF1dGhTZXR0aW5ncyA9IHtcclxuICAgICAgY2xpZW50SWQ6ICcnLFxyXG4gICAgICBpc3N1ZXI6ICcnLFxyXG4gICAgICBzY29wZTogJ29wZW5pZCBwcm9maWxlJyxcclxuICAgICAgbG9nSW5UZXh0OiAnU0lHTiBJTicsXHJcbiAgICAgIGxvZ091dFRleHQ6ICdTSUdOIE9VVCcsXHJcbiAgICAgIHJlZGlyZWN0VXJpOiAnaHR0cDovL2xvY2FsaG9zdDo0MjAwLycsXHJcbiAgICAgIHNraXBJc3N1ZXJDaGVjazogdHJ1ZSxcclxuICAgICAgcG9zdExvZ091dFVybDogJ2h0dHA6Ly9sb2NhbGhvc3Q6NDIwMC8nLFxyXG4gICAgICBsb2dpblVybDogJycsXHJcbiAgICAgIHJldHVyblJvdXRlOiAnJyxcclxuICAgICAgdGltZW91dEZhY3RvcjogOSxcclxuICAgICAgbXlBY2NvdW50VGV4dDogJ015IEFjY291bnQnLFxyXG4gICAgICBhdXRoU2V0T25TdGFydHVwOiBmYWxzZSxcclxuICAgICAgcmVzcG9uc2VUeXBlOiAnY29kZSdcclxuICAgIH07XHJcblxyXG4gICAgLy8gbmF2aWdhdGlvblxyXG4gICAgdGhpcy5uYXZpZ2F0aW9uU2V0dGluZ3MgPSB7XHJcbiAgICAgIG1haW5NZW51VGV4dDogJ01BSU4gTUVOVScsXHJcbiAgICAgIGhlYWRlckhlaWdodDogNjQsXHJcbiAgICAgIG1lbnVCdXR0b25TUlRleHQ6ICdOYXZpZ2F0aW9uIE1lbnUgQnV0dG9uJyxcclxuICAgICAgbWF4Q29udGVudFdpZHRoRGVza3RvcDogMTAwLFxyXG4gICAgICBtYXhDb250ZW50V2lkdGhNb2JpbGU6IDEwMFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKiBHZXRzIHRoZSBleGFtcGxlIG5hdmlnYXRpb24gbm9kZXMgKi9cclxuICBwcml2YXRlIGdldEV4YW1wbGVOYXZOb2RlcygpOiBBcnJheTxOYXZOb2RlPiB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICB7XHJcbiAgICAgICAgdGV4dDogJ2RlbW8ubmF2XzEnLFxyXG4gICAgICAgIGZvbnRBd2Vzb21lSWNvbjogJ2ZhZCBmYS1ob21lJyxcclxuICAgICAgICByb3V0ZTogJy9vdmVydmlldycsXHJcbiAgICAgICAgc3ViTm9kZXM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0ZXh0OiAnZGVtby5uYXZfMicsXHJcbiAgICAgICAgZm9udEF3ZXNvbWVJY29uOiAnZmFkIGZhLWZpbGUtYWx0JyxcclxuICAgICAgICByb3V0ZTogJy9kb2N1bWVudHMnLFxyXG4gICAgICAgIHN1Yk5vZGVzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRleHQ6ICdkZW1vLm5hdl8yYScsXHJcbiAgICAgICAgICAgIHJvdXRlOiAnL2RvY3VtZW50cy9pbnZvaWNlJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGV4dDogJ2RlbW8ubmF2XzJiJyxcclxuICAgICAgICAgICAgcm91dGU6ICcvZG9jdW1lbnRzL25vdGljZSdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRleHQ6ICdkZW1vLm5hdl8yYycsXHJcbiAgICAgICAgICAgIHJvdXRlOiAnL3RheCdcclxuICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0ZXh0OiAnUEFZTUVOVFMnLFxyXG4gICAgICAgIGZvbnRBd2Vzb21lSWNvbjogJ2ZhZCBmYS1kb2xsYXItc2lnbicsXHJcbiAgICAgICAgc3ViTm9kZXM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGV4dDogJ01ha2UgYSBQYXltZW50JyxcclxuICAgICAgICAgICAgcm91dGU6ICcvcGF5bWVudCdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRleHQ6ICdBdXRvcGF5JyxcclxuICAgICAgICAgICAgcm91dGU6ICcvYXV0b3BheSdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRleHQ6ICdTY2hlZHVsZWQgUGF5bWVudHMnLFxyXG4gICAgICAgICAgICByb3V0ZTogJy9zY2hlZHVsZWQnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0ZXh0OiAnUGF5bWVudCBIaXN0b3J5JyxcclxuICAgICAgICAgICAgcm91dGU6ICcvaGlzdG9yeSdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRleHQ6ICdNeSBQYXltZW50IE1ldGhvZHMnLFxyXG4gICAgICAgICAgICByb3V0ZTogJy9wYXltZW50LW1ldGhvZHMnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGV4dDogJ1NFUlZJQ0UgUkVRVUVTVCcsXHJcbiAgICAgICAgZm9udEF3ZXNvbWVJY29uOiAnZmFkIGZhLWhhbmRzLWhlbHBpbmcnLFxyXG4gICAgICAgIHJvdXRlOiAnL3NlcnZpY2UtcmVxdWVzdHMnLFxyXG4gICAgICAgIHN1Yk5vZGVzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGV4dDogJ1BBUEVSTEVTUyBTRVRUSU5HUycsXHJcbiAgICAgICAgZm9udEF3ZXNvbWVJY29uOiAnZmFkIGZhLWxlYWYtaGVhcnQnLFxyXG4gICAgICAgIHJvdXRlOiAnL3BhcGVybGVzcycsXHJcbiAgICAgICAgc3ViTm9kZXM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0ZXh0OiAnRkFRcycsXHJcbiAgICAgICAgZm9udEF3ZXNvbWVJY29uOiAnZmFkIGZhLXF1ZXN0aW9uJyxcclxuICAgICAgICByb3V0ZTogJy9mYXFzJyxcclxuICAgICAgICBzdWJOb2RlczogW11cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRleHQ6ICdMYW5ndWFnZSBIZWxwJyxcclxuICAgICAgICBmb250QXdlc29tZUljb246ICdmYXIgZmEtbGFuZ3VhZ2UnLFxyXG4gICAgICAgIHJvdXRlOiAnL2xhbmd1YWdlLWhlbHAnLFxyXG4gICAgICAgIHN1Yk5vZGVzOiBbXVxyXG4gICAgICB9XTtcclxuICB9XHJcblxyXG4gIC8qKiBBc3NpZ25zIHRoZSBkZWZhdWx0IG5hdmlnYXRpb24gdGhlbWUgKi9cclxuICBwcml2YXRlIGFzc2lnbkRlZmF1bHROYXZUaGVtZShjb25maWc6IEJhc2VDb25maWcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRlZmF1bHROYXZUaGVtZSA9IHtcclxuICAgICAgYmdHcmFkaWVudENvbG9yMTogJyNmZmYnLFxyXG4gICAgICBiZ0dyYWRpZW50Q29sb3IyOiAnI2ZmZicsXHJcbiAgICAgIGJvcmRlclJpZ2h0Q29sb3I6ICd0cmFuc3BhcmVudCcsXHJcbiAgICAgIGNvbnRlbnRCZ0NvbG9yOiAnI2VjZWNlYycsXHJcbiAgICAgIGZvbnRDb2xvcjogJyMwMDAnLFxyXG4gICAgICBoaWdobGlnaHRHcmFkaWVudDE6ICdyZ2IoMTk5LCAyMTksIDI0MCknLFxyXG4gICAgICBoaWdobGlnaHRHcmFkaWVudDI6ICdyZ2IoMTEsIDgxLCAxNTYpJyxcclxuICAgICAgbGlzdEJvcmRlckNvbG9yOiAnI0NGRDhEQycsXHJcbiAgICAgIHN1YkhpZ2hsaWdodEJnQ29sb3I6ICdyZ2JhKDI1NSwyNTUsMjU1LCAuMjApJyxcclxuICAgICAgc3ViSGlnaGxpZ2h0Qm9yZGVyQ29sb3I6ICcjMDBBQ0MxJ1xyXG4gICAgfTtcclxuICAgIE9iamVjdC5hc3NpZ24odGhpcy5uYXZpZ2F0aW9uVGhlbWUsIGRlZmF1bHROYXZUaGVtZSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8aGVhZGVyICpuZ0lmPVwiIWlzRmVkZXJhdGVkTW9kdWxlXCI+XHJcbiAgPHNvZi1hci1oZWFkZXIgW3NldHRpbmdzXT1cImhlYWRlclNldHRpbmdzXCIgW3RoZW1lU2V0dGluZ3NdPVwiaGVhZGVyVGhlbWVTZXR0aW5nc1wiIFthdXRoU2V0dGluZ3NdPVwiaGVhZGVyQXV0aFNldHRpbmdzXCJcclxuICAgICAgICAgICAgICAgICAoc2V0TGFuZ3VhZ2UkKT1cImFwcGx5TGFuZ3VhZ2UoKVwiIFtjdXJyZW50TGFuZ109XCJjdXJyZW50TGFuZ1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciBzb2YtYXItaGVhZGVyLWxlZnQ+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzb2YtYXItaGVhZGVyLWxlZnRdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyIHNvZi1hci1oZWFkZXItY2VudGVyPlxyXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc29mLWFyLWhlYWRlci1jZW50ZXJdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyIHNvZi1hci1oZWFkZXItcmlnaHQ+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzb2YtYXItaGVhZGVyLXJpZ2h0XVwiPjwvbmctY29udGVudD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciBzb2YtaGVhZGVyLXVzZXItbWVudT5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NvZi1oZWFkZXItdXNlci1tZW51XVwiPjwvbmctY29udGVudD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvc29mLWFyLWhlYWRlcj5cclxuPC9oZWFkZXI+XHJcbjxuZy1jb250ZW50IHNlbGVjdD1cIltzb2YtYXItdGVtcGxhdGUtY29udGVudF1cIj4gPC9uZy1jb250ZW50PlxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiaXNGZWRlcmF0ZWRNb2R1bGVcIj5cclxuICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XHJcbjwvbmctY29udGFpbmVyPlxyXG48c29mLWFyLW5hdmlnYXRpb24gKm5nSWY9XCIhaXNGZWRlcmF0ZWRNb2R1bGVcIiBbbmF2aWdhdGlvbkRhdGFdPVwibmF2aWdhdGlvbk5vZGVzXCIgW3NldHRpbmdzXT1cIm5hdmlnYXRpb25TZXR0aW5nc1wiXHJcbiAgICAgICAgICAgICAgICAgICBbYWR2YW5jZWRTZXR0aW5nc109XCJuYXZpZ2F0aW9uQWR2YW5jZWRTZXR0aW5nc1wiIFt0aGVtZVNldHRpbmdzXT1cIm5hdmlnYXRpb25UaGVtZVwiXHJcbiAgICAgICAgICAgICAgICAgICBbbGFuZ3VhZ2VTZXR0aW5nc109XCJsYW5ndWFnZVNldHRpbmdzXCIgW2N1cnJlbnRMYW5nXT1cImN1cnJlbnRMYW5nXCIgKHNldExhbmd1YWdlJCk9XCJhcHBseUxhbmd1YWdlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgW2xvZ091dFRleHRdPVwibG9nT3V0VGV4dFwiPlxyXG4gIDxuZy1jb250YWluZXIgc29mLWFyLW5hdi1jb250ZW50PlxyXG4gICAgPHNvZi1hci1hbGVydC1iYW5uZXIgY2xhc3M9XCJzb2YtYXItYWxlcnQtYmFubmVyLWNvbnRhaW5lclwiPjwvc29mLWFyLWFsZXJ0LWJhbm5lcj5cclxuICAgIDxkaXYgY2xhc3M9XCJzb2YtYXItbmF2LWNvbnRhaW5lclwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXQ9XCJzdGFydCBzdHJldGNoXCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzb2YtYXItbmF2LWNvbnRlbnQtaGVhZGVyXVwiPjwvbmctY29udGVudD5cclxuICAgICAgPGRpdiBjbGFzcz1cInNvZi1hci1uYXYtY29udGVudC1jb250YWluZXJcIiBmeEZsZXg9XCIxIDAgMTAwJVwiPlxyXG4gICAgICAgIDxtYWluIFtuZ1N0eWxlLmx0LW1kXT1cInsnbWF4LXdpZHRoJzpuYXZpZ2F0aW9uU2V0dGluZ3M/Lm1heENvbnRlbnRXaWR0aE1vYmlsZSsnJSd9XCJcclxuICAgICAgICAgICAgICBbbmdTdHlsZS5ndC1zbV09XCJ7J21heC13aWR0aCc6bmF2aWdhdGlvblNldHRpbmdzPy5tYXhDb250ZW50V2lkdGhEZXNrdG9wKyclJ31cIiBjbGFzcz1cIm1haW4tY29udGVudFwiPlxyXG4gICAgICAgICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxyXG4gICAgICAgIDwvbWFpbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiYXV0b1wiIGZ4TGF5b3V0QWxpZ249XCJlbmQgZW5kXCI+XHJcbiAgICAgICAgPHNvZi1hci1mb290ZXIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiBbZm9vdGVyQ29uZmlnXT1cInsgc2hvd1ByZUNvbnRlbnQxOiBmYWxzZSwgc2hvd1ByZUNvbnRlbnQyOiBmYWxzZSB9XCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIHNvZi1hci1mb290ZXItY29udGVudD5cclxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NvZi1hci1mb290ZXItY29udGVudF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3NvZi1hci1mb290ZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciBzb2YtYXItbmF2LW1vYmlsZS1mb290ZXI+XHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc29mLWFyLW5hdi1tb2JpbGUtZm9vdGVyXVwiPjwvbmctY29udGVudD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9zb2YtYXItbmF2aWdhdGlvbj5cclxuIl19
|