@softheon/armature 17.1.0 → 17.2.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/assets/styles/sof-styles.scss +4 -0
- package/esm2022/lib/alert-banner/alert-banner.module.mjs +2 -2
- package/esm2022/lib/alert-banner/components/alert-banner/alert-banner.component.mjs +2 -2
- package/esm2022/lib/armature.module.mjs +5 -2
- package/esm2022/lib/base-components/base-component.module.mjs +2 -2
- package/esm2022/lib/base-components/sof-alert/sof-alert.component.mjs +2 -2
- package/esm2022/lib/base-components/sof-badge/sof-badge.component.mjs +15 -4
- package/esm2022/lib/base-components/sof-banner/sof-banner.component.mjs +1 -1
- package/esm2022/lib/base-components/sof-button-toggle-group/sof-button-toggle-group.component.mjs +1 -1
- package/esm2022/lib/base-components/sof-confirm-address/sof-confirm-address.component.mjs +1 -1
- package/esm2022/lib/base-components/sof-image-checkbox/sof-image-checkbox.component.mjs +2 -2
- package/esm2022/lib/base-components/sof-modal/sof-modal.component.mjs +1 -1
- package/esm2022/lib/base-components/sof-progress-bar/sof-progress-bar.component.mjs +2 -2
- package/esm2022/lib/base-components/sof-radio-card/sof-radio-card.component.mjs +1 -1
- package/esm2022/lib/base-components/sof-simple-alert/sof-simple-alert.component.mjs +2 -2
- package/esm2022/lib/core/components/app-template/app-template.component.mjs +21 -13
- package/esm2022/lib/core/initializer/initializer.service.mjs +34 -18
- package/esm2022/lib/core/models/base-config.mjs +1 -1
- package/esm2022/lib/core/models/constants.mjs +5 -1
- package/esm2022/lib/core/models/federated-module-config.mjs +2 -0
- package/esm2022/lib/core/services/federated-module.service.mjs +60 -0
- package/esm2022/lib/error/components/error-common/error-common.component.mjs +1 -1
- package/esm2022/lib/error/error.module.mjs +2 -2
- package/esm2022/lib/faq/components/faq/faq.component.mjs +2 -2
- package/esm2022/lib/faq/faq.module.mjs +2 -2
- package/esm2022/lib/feedback-tool/components/feedback-tool/feedback-tool.component.mjs +2 -2
- package/esm2022/lib/feedback-tool/feedback-tool.module.mjs +2 -2
- package/esm2022/lib/footer/components/footer/footer.component.mjs +1 -1
- package/esm2022/lib/footer/components/site-map/site-map.component.mjs +1 -1
- package/esm2022/lib/footer/footer.module.mjs +2 -2
- package/esm2022/lib/forms/components/sof-address/sof-address.component.mjs +1 -1
- package/esm2022/lib/forms/forms.module.mjs +2 -2
- package/esm2022/lib/header/components/header/header.component.mjs +2 -2
- package/esm2022/lib/header/components/mobile-header-menu/mobile-header-menu.component.mjs +1 -1
- package/esm2022/lib/header/header.module.mjs +2 -2
- package/esm2022/lib/navigation/components/navigation/navigation.component.mjs +5 -5
- package/esm2022/lib/navigation/navigation.module.mjs +2 -2
- package/esm2022/public-api.mjs +2 -2
- package/fesm2022/softheon-armature.mjs +135 -40
- package/fesm2022/softheon-armature.mjs.map +1 -1
- package/lib/alert-banner/alert-banner.module.d.ts +1 -1
- package/lib/armature.module.d.ts +1 -1
- package/lib/base-components/base-component.module.d.ts +1 -1
- package/lib/base-components/sof-badge/sof-badge.component.d.ts +5 -1
- package/lib/core/components/app-template/app-template.component.d.ts +7 -1
- package/lib/core/initializer/initializer.service.d.ts +14 -6
- package/lib/core/models/base-config.d.ts +5 -0
- package/lib/core/models/constants.d.ts +4 -0
- package/lib/core/models/federated-module-config.d.ts +3 -0
- package/lib/core/services/federated-module.service.d.ts +23 -0
- package/lib/error/error.module.d.ts +1 -1
- package/lib/faq/faq.module.d.ts +1 -1
- package/lib/feedback-tool/feedback-tool.module.d.ts +1 -1
- package/lib/footer/footer.module.d.ts +1 -1
- package/lib/forms/forms.module.d.ts +1 -1
- package/lib/header/header.module.d.ts +1 -1
- package/lib/navigation/navigation.module.d.ts +1 -1
- package/package.json +2 -2
- package/public-api.d.ts +1 -1
|
@@ -2,15 +2,18 @@ import { Component } from '@angular/core';
|
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "../../services/base-config.service";
|
|
4
4
|
import * as i2 from "@ngx-translate/core";
|
|
5
|
-
import * as i3 from "
|
|
6
|
-
import * as i4 from "../../../
|
|
7
|
-
import * as i5 from "../../../
|
|
8
|
-
import * as i6 from "../../../
|
|
9
|
-
import * as i7 from "
|
|
10
|
-
import * as i8 from "@angular/
|
|
11
|
-
import * as i9 from "@angular/
|
|
5
|
+
import * as i3 from "../../services/federated-module.service";
|
|
6
|
+
import * as i4 from "../../../navigation/components/navigation/navigation.component";
|
|
7
|
+
import * as i5 from "../../../header/components/header/header.component";
|
|
8
|
+
import * as i6 from "../../../footer/components/footer/footer.component";
|
|
9
|
+
import * as i7 from "../../../alert-banner/components/alert-banner/alert-banner.component";
|
|
10
|
+
import * as i8 from "@angular/router";
|
|
11
|
+
import * as i9 from "@angular/common";
|
|
12
|
+
import * as i10 from "@ngbracket/ngx-layout/flex";
|
|
13
|
+
import * as i11 from "@ngbracket/ngx-layout/extended";
|
|
12
14
|
/** The app template component */
|
|
13
15
|
export class AppTemplateComponent {
|
|
16
|
+
/** The log out text */
|
|
14
17
|
get logOutText() {
|
|
15
18
|
return this.headerAuthSettings.logOutText;
|
|
16
19
|
}
|
|
@@ -22,10 +25,12 @@ export class AppTemplateComponent {
|
|
|
22
25
|
* Constructs the component
|
|
23
26
|
* @param configService The config service
|
|
24
27
|
* @param translateService The translate service
|
|
28
|
+
* @param federatedModuleService The federated module service
|
|
25
29
|
*/
|
|
26
|
-
constructor(configService, translateService) {
|
|
30
|
+
constructor(configService, translateService, federatedModuleService) {
|
|
27
31
|
this.configService = configService;
|
|
28
32
|
this.translateService = translateService;
|
|
33
|
+
this.federatedModuleService = federatedModuleService;
|
|
29
34
|
/** The header settings */
|
|
30
35
|
this.headerSettings = {};
|
|
31
36
|
/** The header theme settings */
|
|
@@ -42,9 +47,12 @@ export class AppTemplateComponent {
|
|
|
42
47
|
this.navigationAdvancedSettings = {};
|
|
43
48
|
/** The language settings */
|
|
44
49
|
this.languageSettings = {};
|
|
50
|
+
/** True when the application is running as a federated module */
|
|
51
|
+
this.isFederatedModule = false;
|
|
45
52
|
}
|
|
46
53
|
/** Life cycle hook for component initialization */
|
|
47
54
|
ngOnInit() {
|
|
55
|
+
this.isFederatedModule = this.federatedModuleService.isFederatedModule;
|
|
48
56
|
this.config$ = this.configService.config$;
|
|
49
57
|
this.setDefaults();
|
|
50
58
|
this.configService.config$.subscribe(config => {
|
|
@@ -240,11 +248,11 @@ export class AppTemplateComponent {
|
|
|
240
248
|
};
|
|
241
249
|
Object.assign(this.navigationTheme, defaultNavTheme);
|
|
242
250
|
}
|
|
243
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppTemplateComponent, deps: [{ token: i1.BaseConfigService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
244
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: AppTemplateComponent, selector: "sof-ar-app-template", ngImport: i0, template: "<header>\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<sof-ar-navigation [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:
|
|
251
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppTemplateComponent, deps: [{ token: i1.BaseConfigService }, { token: i2.TranslateService }, { token: i3.FederatedModuleService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
252
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", 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: i4.ArmatureNavigationComponent, selector: "sof-ar-navigation", inputs: ["navigationData", "settings", "advancedSettings", "themeSettings", "languageSettings", "currentLang", "logOutText"], outputs: ["setLanguage$"] }, { kind: "component", type: i5.ArmatureHeaderComponent, selector: "sof-ar-header", inputs: ["settings", "themeSettings", "authSettings", "currentLang"], outputs: ["setLanguage$", "isLoggedInEE"] }, { kind: "component", type: i6.ArmatureFooterComponent, selector: "sof-ar-footer", inputs: ["footerConfig"] }, { kind: "component", type: i7.AlertBannerComponent, selector: "sof-ar-alert-banner", inputs: ["context"] }, { kind: "directive", type: i8.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.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: i10.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: i10.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: i11.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"] }] }); }
|
|
245
253
|
}
|
|
246
254
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppTemplateComponent, decorators: [{
|
|
247
255
|
type: Component,
|
|
248
|
-
args: [{ selector: 'sof-ar-app-template', template: "<header>\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<sof-ar-navigation [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"] }]
|
|
249
|
-
}], ctorParameters: () => [{ type: i1.BaseConfigService }, { type: i2.TranslateService }] });
|
|
250
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL3NyYy9saWIvY29yZS9jb21wb25lbnRzL2FwcC10ZW1wbGF0ZS9hcHAtdGVtcGxhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9jb3JlL2NvbXBvbmVudHMvYXBwLXRlbXBsYXRlL2FwcC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7OztBQWFsRCxpQ0FBaUM7QUFNakMsTUFBTSxPQUFPLG9CQUFvQjtJQWdDL0IsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsaUNBQWlDO0lBQ2pDLElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFlBQ21CLGFBQWdDLEVBQ2hDLGdCQUFrQztRQURsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7UUFDaEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQTNDckQsMEJBQTBCO1FBQ25CLG1CQUFjLEdBQW1CLEVBQUUsQ0FBQztRQUUzQyxnQ0FBZ0M7UUFDekIsd0JBQW1CLEdBQXdCLEVBQUUsQ0FBQztRQUVyRCwrQkFBK0I7UUFDeEIsdUJBQWtCLEdBQXVCLEVBQVMsQ0FBQztRQUUxRCxvQ0FBb0M7UUFDN0Isb0JBQWUsR0FBNEIsRUFBRSxDQUFDO1FBRXJELDhCQUE4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QUNyQixlQUFlLEVBQUUsaUJBQWlCO2dCQUNsQyxLQUFLLEVBQUUsZ0JBQWdCO2dCQUN2QixRQUFRLEVBQUUsRUFBRTthQUNiO1NBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCwyQ0FBMkM7SUFDbkMscUJBQXFCLENBQUMsTUFBa0I7UUFDOUMsTUFBTSxlQUFlLEdBQUc7WUFDdEIsZ0JBQWdCLEVBQUUsTUFBTTtZQUN4QixnQkFBZ0IsRUFBRSxNQUFNO1lBQ3hCLGdCQUFnQixFQUFFLGFBQWE7WUFDL0IsY0FBYyxFQUFFLFNBQVM7WUFDekIsU0FBUyxFQUFFLE1BQU07WUFDakIsa0JBQWtCLEVBQUUsb0JBQW9CO1lBQ3hDLGtCQUFrQixFQUFFLGtCQUFrQjtZQUN0QyxlQUFlLEVBQUUsU0FBUztZQUMxQixtQkFBbUIsRUFBRSx3QkFBd0I7WUFDN0MsdUJBQXVCLEVBQUUsU0FBUztTQUNuQyxDQUFDO1FBQ0YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7OEdBcFFVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLDJEQ25CakMsMjhFQTZDQTs7MkZEMUJhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBIZWFkZXJBdXRoU2V0dGluZ3MgfSBmcm9tICcuLi8uLi8uLi9oZWFkZXIvbW9kZWxzL2hlYWRlci1hdXRoLnNldHRpbmdzJztcclxuaW1wb3J0IHsgSGVhZGVyTGFuZ3VhZ2VTZXR0aW5ncyB9IGZyb20gJy4uLy4uLy4uL2hlYWRlci9tb2RlbHMvaGVhZGVyLWxhbmd1YWdlLnNldHRpbmdzJztcclxuaW1wb3J0IHsgSGVhZGVyVGhlbWVTZXR0aW5ncyB9IGZyb20gJy4uLy4uLy4uL2hlYWRlci9tb2RlbHMvaGVhZGVyLXRoZW1lLnNldHRpbmdzJztcclxuaW1wb3J0IHsgSGVhZGVyU2V0dGluZ3MgfSBmcm9tICcuLi8uLi8uLi9oZWFkZXIvbW9kZWxzL2hlYWRlci5zZXR0aW5ncyc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25BZHZhbmNlZFNldHRpbmdzLCBOYXZpZ2F0aW9uU2V0dGluZ3MsIE5hdmlnYXRpb25UaGVtZVNldHRpbmdzLCBOYXZOb2RlIH0gZnJvbSAnLi4vLi4vLi4vbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWFwaSc7XHJcbmltcG9ydCB7IEJhc2VDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvYmFzZS1jb25maWcnO1xyXG5pbXBvcnQgeyBCYXNlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Jhc2UtY29uZmlnLnNlcnZpY2UnO1xyXG5cclxuLyoqIFRoZSBhcHAgdGVtcGxhdGUgY29tcG9uZW50ICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc29mLWFyLWFwcC10ZW1wbGF0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FwcC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYXBwLXRlbXBsYXRlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcFRlbXBsYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgLyoqIFRoZSBjb25maWcgb2JzZXJ2YWJsZSAqL1xyXG4gIHB1YmxpYyBjb25maWckOiBPYnNlcnZhYmxlPEJhc2VDb25maWc+O1xyXG5cclxuICAvKiogVGhlIGhlYWRlciBzZXR0aW5ncyAqL1xyXG4gIHB1YmxpYyBoZWFkZXJTZXR0aW5nczogSGVhZGVyU2V0dGluZ3MgPSB7fTtcclxuXHJcbiAgLyoqIFRoZSBoZWFkZXIgdGhlbWUgc2V0dGluZ3MgKi9cclxuICBwdWJsaWMgaGVhZGVyVGhlbWVTZXR0aW5nczogSGVhZGVyVGhlbWVTZXR0aW5ncyA9IHt9O1xyXG5cclxuICAvKiogVGhlIGhlYWRlciBhdXRoIHNldHRpbmdzICovXHJcbiAgcHVibGljIGhlYWRlckF1dGhTZXR0aW5nczogSGVhZGVyQXV0aFNldHRpbmdzID0ge30gYXMgYW55O1xyXG5cclxuICAvKiogdGhlIG5hdmlnYXRpb24gdGhlbWUgc2V0dGluZ3MgKi9cclxuICBwdWJsaWMgbmF2aWdhdGlvblRoZW1lOiBOYXZpZ2F0aW9uVGhlbWVTZXR0aW5ncyA9IHt9O1xyXG5cclxuICAvKiogVGhlIG5hdmlnYXRpb24gc2V0dGluZ3MgKi9cclxuICBwdWJsaWMgbmF2aWdhdGlvblNldHRpbmdzOiBOYXZpZ2F0aW9uU2V0dGluZ3MgPSB7fTtcclxuXHJcbiAgLyoqIFRoZSBuYXZpZ2F0aW9uIG5vZGVzICovXHJcbiAgcHVibGljIG5hdmlnYXRpb25Ob2RlczogQXJyYXk8TmF2Tm9kZT4gPSBbXTtcclxuXHJcbiAgLyoqIFRoZSBuYXZpZ2F0aW9uIGFkdmFuY2VkIHNldHRpbmdzICovXHJcbiAgcHVibGljIG5hdmlnYXRpb25BZHZhbmNlZFNldHRpbmdzOiBOYXZpZ2F0aW9uQWR2YW5jZWRTZXR0aW5ncyA9IHt9O1xyXG5cclxuICAvKiogVGhlIGxhbmd1YWdlIHNldHRpbmdzICovXHJcbiAgcHVibGljIGxhbmd1YWdlU2V0dGluZ3M6IEhlYWRlckxhbmd1YWdlU2V0dGluZ3MgPSB7fTtcclxuXHJcbiAgLyoqIFRoZSBjdXJyZW50IGxhbmd1YWdlICovXHJcbiAgcHVibGljIGN1cnJlbnRMYW5nOiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyBnZXQgbG9nT3V0VGV4dCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuaGVhZGVyQXV0aFNldHRpbmdzLmxvZ091dFRleHQ7XHJcbiAgfVxyXG5cclxuICAvKiogZ2V0cyB0aGUgbm9uIHVzZWQgbGFuZ3VhZ2UgKi9cclxuICBwdWJsaWMgZ2V0IG90aGVyTGFuZ1RleHQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmxhbmd1YWdlU2V0dGluZ3M/Lmxhbmd1YWdlcz8uZmluZCh4ID0+IHggIT09IHRoaXMuY3VycmVudExhbmcpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyB0aGUgY29tcG9uZW50XHJcbiAgICogQHBhcmFtIGNvbmZpZ1NlcnZpY2UgVGhlIGNvbmZpZyBzZXJ2aWNlXHJcbiAgICogQHBhcmFtIHRyYW5zbGF0ZVNlcnZpY2UgVGhlIHRyYW5zbGF0ZSBzZXJ2aWNlXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IEJhc2VDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICAvKiogTGlmZSBjeWNsZSBob29rIGZvciBjb21wb25lbnQgaW5pdGlhbGl6YXRpb24gKi9cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbmZpZyQgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnJDtcclxuICAgIHRoaXMuc2V0RGVmYXVsdHMoKTtcclxuICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWckLnN1YnNjcmliZShjb25maWcgPT4ge1xyXG4gICAgICAvLyBvYmplY3QgYXNzaWduIGlzIHVzZWQgaGVyZSBzbyB0aGUgaGVhZGVyIGRvZXNuJ3QgaGF2ZSB0byByZSByZW5kZXIgd2l0aCB0aGUgbmV3IG9iamVjdCByZWZlcmVuY2VcclxuICAgICAgLy8gaGVhZGVyXHJcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5oZWFkZXJTZXR0aW5ncywgY29uZmlnPy5oZWFkZXI/LnNldHRpbmdzKTtcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmhlYWRlclRoZW1lU2V0dGluZ3MsIGNvbmZpZz8uaGVhZGVyPy50aGVtZSk7XHJcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5oZWFkZXJBdXRoU2V0dGluZ3MsIGNvbmZpZz8ub0F1dGhTZXR0aW5ncyk7XHJcblxyXG4gICAgICAvLyBuYXZpZ2F0aW9uXHJcbiAgICAgIHRoaXMubmF2aWdhdGlvbk5vZGVzID0gY29uZmlnPy5uYXZpZ2F0aW9uPy5ub2RlcyB8fCB0aGlzLmdldEV4YW1wbGVOYXZOb2RlcygpO1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMubmF2aWdhdGlvblNldHRpbmdzLCBjb25maWc/Lm5hdmlnYXRpb24/LnNldHRpbmdzKTtcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm5hdmlnYXRpb25BZHZhbmNlZFNldHRpbmdzLCBjb25maWc/Lm5hdmlnYXRpb24/LmFkdmFuY2VkKTtcclxuICAgICAgdGhpcy5hc3NpZ25EZWZhdWx0TmF2VGhlbWUoY29uZmlnKTtcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm5hdmlnYXRpb25UaGVtZSwgY29uZmlnPy5uYXZpZ2F0aW9uPy50aGVtZSk7XHJcblxyXG4gICAgICAvLyBzZXQgZGVwZW5kZW50IHZhbHVlXHJcbiAgICAgIHRoaXMuaGVhZGVyU2V0dGluZ3MuYXJtYXR1cmVOYXZpZ2F0aW9uID0gIXRoaXMubmF2aWdhdGlvblNldHRpbmdzLmhpZGVOYXZpZ2F0aW9uO1xyXG4gICAgICBcclxuICAgICAgaWYgKHRoaXMubmF2aWdhdGlvblNldHRpbmdzLm1lbnVTdHlsZSA9PT0gJ3Byb2dyZXNzJyB8fCB0aGlzLm5hdmlnYXRpb25TZXR0aW5ncy5oaWRlTmF2aWdhdGlvbikge1xyXG4gICAgICAgIHRoaXMuaGVhZGVyU2V0dGluZ3MuY3JlYXRlU3BhY2VGb3JOYXZUb2dnbGUgPSB0aGlzLm5hdmlnYXRpb25TZXR0aW5ncy5hbGxvd05hdlRvZ2dsZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBTZXQgYm90aCBuYXZpZ2F0aW9uIHRvZ2dsZSBzZXR0aW5ncyB0byB0cnVlIGlmIGVpdGhlciBpcyB0cnVlXHJcbiAgICAgIGlmICh0aGlzLmhlYWRlclNldHRpbmdzLmNyZWF0ZVNwYWNlRm9yTmF2VG9nZ2xlIHx8IHRoaXMubmF2aWdhdGlvblNldHRpbmdzLmFsbG93TmF2VG9nZ2xlKSB7XHJcbiAgICAgICAgdGhpcy5oZWFkZXJTZXR0aW5ncy5jcmVhdGVTcGFjZUZvck5hdlRvZ2dsZSA9IHRoaXMubmF2aWdhdGlvblNldHRpbmdzLmFsbG93TmF2VG9nZ2xlID0gdHJ1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zZXRMYW5ndWFnZU9wdGlvbnMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQXBwbGllcyB0aGUgbGFuZ3VhZ2UgdG8gdGhlIHRyYW5zbGF0ZSBzZXJ2aWNlXHJcbiAgICogQHBhcmFtIGxhbmcgdGhlIGxhbmd1YWdlXHJcbiAgICovXHJcbiAgcHVibGljIGFwcGx5TGFuZ3VhZ2UobGFuZz86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKCFsYW5nKSB7XHJcbiAgICAgIGxhbmcgPSB0aGlzLm90aGVyTGFuZ1RleHQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudXNlKGxhbmcpO1xyXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nID0gbGFuZztcclxuICAgIHRoaXMuY3VycmVudExhbmcgPSBsYW5nO1xyXG4gIH1cclxuXHJcbiAgLyoqIFNldCB0aGUgbGFuZ3VhZ2Ugb3B0aW9ucyAqL1xyXG4gIHByaXZhdGUgc2V0TGFuZ3VhZ2VPcHRpb25zKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaGVhZGVyU2V0dGluZ3MubGFuZ3VhZ2VTZXR0aW5ncykge1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMubGFuZ3VhZ2VTZXR0aW5ncywgdGhpcy5oZWFkZXJTZXR0aW5ncy5sYW5ndWFnZVNldHRpbmdzKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxhbmd1YWdlU2V0dGluZ3MuZGVmYXVsdExhbmd1YWdlID0gdGhpcy5sYW5ndWFnZVNldHRpbmdzLmRlZmF1bHRMYW5ndWFnZSB8fCAnZW4nO1xyXG4gICAgdGhpcy5sYW5ndWFnZVNldHRpbmdzLmRpc3BsYXlMYW5ndWFnZU9wdGlvbnMgPSB0aGlzLmxhbmd1YWdlU2V0dGluZ3MuZGlzcGxheUxhbmd1YWdlT3B0aW9ucyB8fCBmYWxzZTtcclxuICAgIHRoaXMubGFuZ3VhZ2VTZXR0aW5ncy5sYW5ndWFnZXMgPSB0aGlzLmxhbmd1YWdlU2V0dGluZ3MubGFuZ3VhZ2VzIHx8IFsnZW4nLCAnZXMnXTtcclxuICAgIHRoaXMubGFuZ3VhZ2VTZXR0aW5ncy5idXR0b25UZXh0ID0gdGhpcy5sYW5ndWFnZVNldHRpbmdzLmJ1dHRvblRleHQgfHwgJ0xhbmd1YWdlcyc7XHJcblxyXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmFkZExhbmdzKHRoaXMubGFuZ3VhZ2VTZXR0aW5ncy5sYW5ndWFnZXMpO1xyXG4gICAgdGhpcy5jdXJyZW50TGFuZyA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZztcclxuICAgIHRoaXMuaGVhZGVyU2V0dGluZ3MubGFuZ3VhZ2VTZXR0aW5ncyA9IHRoaXMubGFuZ3VhZ2VTZXR0aW5ncztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RGVmYXVsdHMoKTogdm9pZCB7XHJcbiAgICAvLyBoZWFkZXJcclxuICAgIHRoaXMuaGVhZGVyU2V0dGluZ3MgPSB7XHJcbiAgICAgIGFybWF0dXJlTmF2aWdhdGlvbjogdHJ1ZSxcclxuICAgICAgY3JlYXRlU3BhY2VGb3JOYXZUb2dnbGU6IHRydWUsXHJcbiAgICAgIGRpc3BsYXlMb2dvOiB0cnVlLFxyXG4gICAgICBsb2dvVXJsOiAnaHR0cHM6Ly9zb2Z0aGVvbmNkbnN0b3JhZ2UuYmxvYi5jb3JlLndpbmRvd3MubmV0L2ltYWdlcy9zb2Z0aGVvbi9sb2dvLnN2ZycsXHJcbiAgICAgIGxvZ29BbHRUZXh0OiAndGhlIGV4YW1wbGUgcG9ydGFsIGhlYWRlciBsb2dvJyxcclxuICAgICAgZGlzcGxheUxvZ29UZXh0OiBmYWxzZSxcclxuICAgICAgZGlzcGxheURyb3BEb3duTWVudTogZmFsc2UsXHJcbiAgICAgIGRyb3BEb3duQXJpYVRleHQ6ICd0aGUgaGVhZGVyIGRyb3AgZG93biBtZW51IGJ1dHRvbiBpY29uJyxcclxuICAgICAgZHJvcERvd25NZW51U1JUZXh0OiAndGhlIGhlYWRlciBhY2NvdW50IGJ1dHRvbiBkcm9wIGRvd24gb3B0aW9ucycsXHJcbiAgICAgIGRpc3BsYXlBdXRoSW5mbzogdHJ1ZSxcclxuICAgICAgbGFuZ3VhZ2VTZXR0aW5nczoge1xyXG4gICAgICAgIGRpc3BsYXlMYW5ndWFnZU9wdGlvbnM6IHRydWVcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRoaXMuaGVhZGVyVGhlbWVTZXR0aW5ncyA9IHtcclxuICAgICAgaGVhZGVyQ29sb3I6ICcnLFxyXG4gICAgICBoZWFkZXJEcm9wU2hhZG93OiB0cnVlLFxyXG4gICAgICBhdXRob3JpemF0aW9uQnV0dG9uQ29sb3I6ICdyZ2IoMTEsIDgxLCAxNTYpJyxcclxuICAgICAgYXV0aG9yaXphdGlvbkJ1dHRvbkJhY2tncm91bmQ6ICdyZ2IoMTk5LCAyMTksIDI0MCknXHJcbiAgICB9O1xyXG4gICAgdGhpcy5oZWFkZXJBdXRoU2V0dGluZ3MgPSB7XHJcbiAgICAgIGNsaWVudElkOiAnJyxcclxuICAgICAgaXNzdWVyOiAnJyxcclxuICAgICAgc2NvcGU6ICdvcGVuaWQgcHJvZmlsZScsXHJcbiAgICAgIGxvZ0luVGV4dDogJ1NJR04gSU4nLFxyXG4gICAgICBsb2dPdXRUZXh0OiAnU0lHTiBPVVQnLFxyXG4gICAgICByZWRpcmVjdFVyaTogJ2h0dHA6Ly9sb2NhbGhvc3Q6NDIwMC8nLFxyXG4gICAgICBza2lwSXNzdWVyQ2hlY2s6IHRydWUsXHJcbiAgICAgIHBvc3RMb2dPdXRVcmw6ICdodHRwOi8vbG9jYWxob3N0OjQyMDAvJyxcclxuICAgICAgbG9naW5Vcmw6ICcnLFxyXG4gICAgICByZXR1cm5Sb3V0ZTogJycsXHJcbiAgICAgIHRpbWVvdXRGYWN0b3I6IDksXHJcbiAgICAgIG15QWNjb3VudFRleHQ6ICdNeSBBY2NvdW50JyxcclxuICAgICAgYXV0aFNldE9uU3RhcnR1cDogZmFsc2UsXHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2NvZGUnXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIG5hdmlnYXRpb25cclxuICAgIHRoaXMubmF2aWdhdGlvblNldHRpbmdzID0ge1xyXG4gICAgICBtYWluTWVudVRleHQ6ICdNQUlOIE1FTlUnLFxyXG4gICAgICBoZWFkZXJIZWlnaHQ6IDY0LFxyXG4gICAgICBtZW51QnV0dG9uU1JUZXh0OiAnTmF2aWdhdGlvbiBNZW51IEJ1dHRvbicsXHJcbiAgICAgIG1heENvbnRlbnRXaWR0aERlc2t0b3A6IDEwMCxcclxuICAgICAgbWF4Q29udGVudFdpZHRoTW9iaWxlOiAxMDBcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKiogR2V0cyB0aGUgZXhhbXBsZSBuYXZpZ2F0aW9uIG5vZGVzICovXHJcbiAgcHJpdmF0ZSBnZXRFeGFtcGxlTmF2Tm9kZXMoKTogQXJyYXk8TmF2Tm9kZT4ge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAge1xyXG4gICAgICAgIHRleHQ6ICdkZW1vLm5hdl8xJyxcclxuICAgICAgICBmb250QXdlc29tZUljb246ICdmYWQgZmEtaG9tZScsXHJcbiAgICAgICAgcm91dGU6ICcvb3ZlcnZpZXcnLFxyXG4gICAgICAgIHN1Yk5vZGVzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGV4dDogJ2RlbW8ubmF2XzInLFxyXG4gICAgICAgIGZvbnRBd2Vzb21lSWNvbjogJ2ZhZCBmYS1maWxlLWFsdCcsXHJcbiAgICAgICAgcm91dGU6ICcvZG9jdW1lbnRzJyxcclxuICAgICAgICBzdWJOb2RlczogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0ZXh0OiAnZGVtby5uYXZfMmEnLFxyXG4gICAgICAgICAgICByb3V0ZTogJy9kb2N1bWVudHMvaW52b2ljZSdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRleHQ6ICdkZW1vLm5hdl8yYicsXHJcbiAgICAgICAgICAgIHJvdXRlOiAnL2RvY3VtZW50cy9ub3RpY2UnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0ZXh0OiAnZGVtby5uYXZfMmMnLFxyXG4gICAgICAgICAgICByb3V0ZTogJy90YXgnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGV4dDogJ1BBWU1FTlRTJyxcclxuICAgICAgICBmb250QXdlc29tZUljb246ICdmYWQgZmEtZG9sbGFyLXNpZ24nLFxyXG4gICAgICAgIHN1Yk5vZGVzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRleHQ6ICdNYWtlIGEgUGF5bWVudCcsXHJcbiAgICAgICAgICAgIHJvdXRlOiAnL3BheW1lbnQnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0ZXh0OiAnQXV0b3BheScsXHJcbiAgICAgICAgICAgIHJvdXRlOiAnL2F1dG9wYXknXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0ZXh0OiAnU2NoZWR1bGVkIFBheW1lbnRzJyxcclxuICAgICAgICAgICAgcm91dGU6ICcvc2NoZWR1bGVkJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGV4dDogJ1BheW1lbnQgSGlzdG9yeScsXHJcbiAgICAgICAgICAgIHJvdXRlOiAnL2hpc3RvcnknXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0ZXh0OiAnTXkgUGF5bWVudCBNZXRob2RzJyxcclxuICAgICAgICAgICAgcm91dGU6ICcvcGF5bWVudC1tZXRob2RzJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRleHQ6ICdTRVJWSUNFIFJFUVVFU1QnLFxyXG4gICAgICAgIGZvbnRBd2Vzb21lSWNvbjogJ2ZhZCBmYS1oYW5kcy1oZWxwaW5nJyxcclxuICAgICAgICByb3V0ZTogJy9zZXJ2aWNlLXJlcXVlc3RzJyxcclxuICAgICAgICBzdWJOb2RlczogW11cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRleHQ6ICdQQVBFUkxFU1MgU0VUVElOR1MnLFxyXG4gICAgICAgIGZvbnRBd2Vzb21lSWNvbjogJ2ZhZCBmYS1sZWFmLWhlYXJ0JyxcclxuICAgICAgICByb3V0ZTogJy9wYXBlcmxlc3MnLFxyXG4gICAgICAgIHN1Yk5vZGVzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGV4dDogJ0ZBUXMnLFxyXG4gICAgICAgIGZvbnRBd2Vzb21lSWNvbjogJ2ZhZCBmYS1xdWVzdGlvbicsXHJcbiAgICAgICAgcm91dGU6ICcvZmFxcycsXHJcbiAgICAgICAgc3ViTm9kZXM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0ZXh0OiAnTGFuZ3VhZ2UgSGVscCcsXHJcbiAgICAgICAgZm9udEF3ZXNvbWVJY29uOiAnZmFyIGZhLWxhbmd1YWdlJyxcclxuICAgICAgICByb3V0ZTogJy9sYW5ndWFnZS1oZWxwJyxcclxuICAgICAgICBzdWJOb2RlczogW11cclxuICAgICAgfV07XHJcbiAgfVxyXG5cclxuICAvKiogQXNzaWducyB0aGUgZGVmYXVsdCBuYXZpZ2F0aW9uIHRoZW1lICovXHJcbiAgcHJpdmF0ZSBhc3NpZ25EZWZhdWx0TmF2VGhlbWUoY29uZmlnOiBCYXNlQ29uZmlnKTogdm9pZCB7XHJcbiAgICBjb25zdCBkZWZhdWx0TmF2VGhlbWUgPSB7XHJcbiAgICAgIGJnR3JhZGllbnRDb2xvcjE6ICcjZmZmJyxcclxuICAgICAgYmdHcmFkaWVudENvbG9yMjogJyNmZmYnLFxyXG4gICAgICBib3JkZXJSaWdodENvbG9yOiAndHJhbnNwYXJlbnQnLFxyXG4gICAgICBjb250ZW50QmdDb2xvcjogJyNlY2VjZWMnLFxyXG4gICAgICBmb250Q29sb3I6ICcjMDAwJyxcclxuICAgICAgaGlnaGxpZ2h0R3JhZGllbnQxOiAncmdiKDE5OSwgMjE5LCAyNDApJyxcclxuICAgICAgaGlnaGxpZ2h0R3JhZGllbnQyOiAncmdiKDExLCA4MSwgMTU2KScsXHJcbiAgICAgIGxpc3RCb3JkZXJDb2xvcjogJyNDRkQ4REMnLFxyXG4gICAgICBzdWJIaWdobGlnaHRCZ0NvbG9yOiAncmdiYSgyNTUsMjU1LDI1NSwgLjIwKScsXHJcbiAgICAgIHN1YkhpZ2hsaWdodEJvcmRlckNvbG9yOiAnIzAwQUNDMSdcclxuICAgIH07XHJcbiAgICBPYmplY3QuYXNzaWduKHRoaXMubmF2aWdhdGlvblRoZW1lLCBkZWZhdWx0TmF2VGhlbWUpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGhlYWRlcj5cclxuICA8c29mLWFyLWhlYWRlciBbc2V0dGluZ3NdPVwiaGVhZGVyU2V0dGluZ3NcIiBbdGhlbWVTZXR0aW5nc109XCJoZWFkZXJUaGVtZVNldHRpbmdzXCIgW2F1dGhTZXR0aW5nc109XCJoZWFkZXJBdXRoU2V0dGluZ3NcIlxyXG4gICAgICAgICAgICAgICAgIChzZXRMYW5ndWFnZSQpPVwiYXBwbHlMYW5ndWFnZSgpXCIgW2N1cnJlbnRMYW5nXT1cImN1cnJlbnRMYW5nXCI+XHJcbiAgICA8bmctY29udGFpbmVyIHNvZi1hci1oZWFkZXItbGVmdD5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NvZi1hci1oZWFkZXItbGVmdF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgc29mLWFyLWhlYWRlci1jZW50ZXI+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzb2YtYXItaGVhZGVyLWNlbnRlcl1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgc29mLWFyLWhlYWRlci1yaWdodD5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NvZi1hci1oZWFkZXItcmlnaHRdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyIHNvZi1oZWFkZXItdXNlci1tZW51PlxyXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc29mLWhlYWRlci11c2VyLW1lbnVdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9zb2YtYXItaGVhZGVyPlxyXG48L2hlYWRlcj5cclxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NvZi1hci10ZW1wbGF0ZS1jb250ZW50XVwiPiA8L25nLWNvbnRlbnQ+XHJcbjxzb2YtYXItbmF2aWdhdGlvbiBbbmF2aWdhdGlvbkRhdGFdPVwibmF2aWdhdGlvbk5vZGVzXCIgW3NldHRpbmdzXT1cIm5hdmlnYXRpb25TZXR0aW5nc1wiXHJcbiAgICAgICAgICAgICAgICAgICBbYWR2YW5jZWRTZXR0aW5nc109XCJuYXZpZ2F0aW9uQWR2YW5jZWRTZXR0aW5nc1wiIFt0aGVtZVNldHRpbmdzXT1cIm5hdmlnYXRpb25UaGVtZVwiXHJcbiAgICAgICAgICAgICAgICAgICBbbGFuZ3VhZ2VTZXR0aW5nc109XCJsYW5ndWFnZVNldHRpbmdzXCIgW2N1cnJlbnRMYW5nXT1cImN1cnJlbnRMYW5nXCIgKHNldExhbmd1YWdlJCk9XCJhcHBseUxhbmd1YWdlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgW2xvZ091dFRleHRdPVwibG9nT3V0VGV4dFwiPlxyXG4gIDxuZy1jb250YWluZXIgc29mLWFyLW5hdi1jb250ZW50PlxyXG4gICAgPHNvZi1hci1hbGVydC1iYW5uZXIgY2xhc3M9XCJzb2YtYXItYWxlcnQtYmFubmVyLWNvbnRhaW5lclwiPjwvc29mLWFyLWFsZXJ0LWJhbm5lcj5cclxuICAgIDxkaXYgY2xhc3M9XCJzb2YtYXItbmF2LWNvbnRhaW5lclwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXQ9XCJzdGFydCBzdHJldGNoXCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzb2YtYXItbmF2LWNvbnRlbnQtaGVhZGVyXVwiPjwvbmctY29udGVudD5cclxuICAgICAgPGRpdiBjbGFzcz1cInNvZi1hci1uYXYtY29udGVudC1jb250YWluZXJcIiBmeEZsZXg9XCIxIDAgMTAwJVwiPlxyXG4gICAgICAgIDxtYWluIFtuZ1N0eWxlLmx0LW1kXT1cInsnbWF4LXdpZHRoJzpuYXZpZ2F0aW9uU2V0dGluZ3M/Lm1heENvbnRlbnRXaWR0aE1vYmlsZSsnJSd9XCJcclxuICAgICAgICAgICAgICBbbmdTdHlsZS5ndC1zbV09XCJ7J21heC13aWR0aCc6bmF2aWdhdGlvblNldHRpbmdzPy5tYXhDb250ZW50V2lkdGhEZXNrdG9wKyclJ31cIiBjbGFzcz1cIm1haW4tY29udGVudFwiPlxyXG4gICAgICAgICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxyXG4gICAgICAgIDwvbWFpbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiYXV0b1wiIGZ4TGF5b3V0QWxpZ249XCJlbmQgZW5kXCI+XHJcbiAgICAgICAgPHNvZi1hci1mb290ZXIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiBbZm9vdGVyQ29uZmlnXT1cInsgc2hvd1ByZUNvbnRlbnQxOiBmYWxzZSwgc2hvd1ByZUNvbnRlbnQyOiBmYWxzZSB9XCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIHNvZi1hci1mb290ZXItY29udGVudD5cclxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NvZi1hci1mb290ZXItY29udGVudF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3NvZi1hci1mb290ZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciBzb2YtYXItbmF2LW1vYmlsZS1mb290ZXI+XHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc29mLWFyLW5hdi1tb2JpbGUtZm9vdGVyXVwiPjwvbmctY29udGVudD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9zb2YtYXItbmF2aWdhdGlvbj5cclxuIl19
|
|
256
|
+
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"] }]
|
|
257
|
+
}], ctorParameters: () => [{ type: i1.BaseConfigService }, { type: i2.TranslateService }, { type: i3.FederatedModuleService }] });
|
|
258
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL3NyYy9saWIvY29yZS9jb21wb25lbnRzL2FwcC10ZW1wbGF0ZS9hcHAtdGVtcGxhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9jb3JlL2NvbXBvbmVudHMvYXBwLXRlbXBsYXRlL2FwcC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7O0FBY2xELGlDQUFpQztBQU1qQyxNQUFNLE9BQU8sb0JBQW9CO0lBZ0MvQix1QkFBdUI7SUFDdkIsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsaUNBQWlDO0lBQ2pDLElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBS0Q7Ozs7O09BS0c7SUFDSCxZQUNtQixhQUFnQyxFQUNoQyxnQkFBa0MsRUFDbEMsc0JBQThDO1FBRjlDLGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFqRGpFLDBCQUEwQjtRQUNuQixtQkFBYyxHQUFtQixFQUFFLENBQUM7UUFFM0MsZ0NBQWdDO1FBQ3pCLHdCQUFtQixHQUF3QixFQUFFLENBQUM7UUFFckQsK0JBQStCO1FBQ3hCLHVCQUFrQixHQUF1QixF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LEVBQUUsWUFBWTtnQkFDbkIsUUFBUSxFQUFFLEVBQUU7YUFDYjtZQUNEO2dCQUNFLElBQUksRUFBRSxNQUFNO2dCQUNaLGVBQWUsRUFBRSxpQkFBaUI7Z0JBQ2xDLEtBQUssRUFBRSxPQUFPO2dCQUNkLFFBQVEsRUFBRSxFQUFFO2FBQ2I7WUFDRDtnQkFDRSxJQUFJLEVBQUUsZUFBZTtnQkFDckIsZUFBZSxFQUFFLGlCQUFpQjtnQkFDbEMsS0FBSyxFQUFFLGdCQUFnQjtnQkFDdkIsUUFBUSxFQUFFLEVBQUU7YUFDYjtTQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsMkNBQTJDO0lBQ25DLHFCQUFxQixDQUFDLE1BQWtCO1FBQzlDLE1BQU0sZUFBZSxHQUFHO1lBQ3RCLGdCQUFnQixFQUFFLE1BQU07WUFDeEIsZ0JBQWdCLEVBQUUsTUFBTTtZQUN4QixnQkFBZ0IsRUFBRSxhQUFhO1lBQy9CLGNBQWMsRUFBRSxTQUFTO1lBQ3pCLFNBQVMsRUFBRSxNQUFNO1lBQ2pCLGtCQUFrQixFQUFFLG9CQUFvQjtZQUN4QyxrQkFBa0IsRUFBRSxrQkFBa0I7WUFDdEMsZUFBZSxFQUFFLFNBQVM7WUFDMUIsbUJBQW1CLEVBQUUsd0JBQXdCO1lBQzdDLHVCQUF1QixFQUFFLFNBQVM7U0FDbkMsQ0FBQztRQUNGLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUN2RCxDQUFDOzhHQTNRVSxvQkFBb0I7a0dBQXBCLG9CQUFvQiwyRENwQmpDLDJtRkFnREE7OzJGRDVCYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgSGVhZGVyQXV0aFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vLi4vaGVhZGVyL21vZGVscy9oZWFkZXItYXV0aC5zZXR0aW5ncyc7XHJcbmltcG9ydCB7IEhlYWRlckxhbmd1YWdlU2V0dGluZ3MgfSBmcm9tICcuLi8uLi8uLi9oZWFkZXIvbW9kZWxzL2hlYWRlci1sYW5ndWFnZS5zZXR0aW5ncyc7XHJcbmltcG9ydCB7IEhlYWRlclRoZW1lU2V0dGluZ3MgfSBmcm9tICcuLi8uLi8uLi9oZWFkZXIvbW9kZWxzL2hlYWRlci10aGVtZS5zZXR0aW5ncyc7XHJcbmltcG9ydCB7IEhlYWRlclNldHRpbmdzIH0gZnJvbSAnLi4vLi4vLi4vaGVhZGVyL21vZGVscy9oZWFkZXIuc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uQWR2YW5jZWRTZXR0aW5ncywgTmF2aWdhdGlvblNldHRpbmdzLCBOYXZpZ2F0aW9uVGhlbWVTZXR0aW5ncywgTmF2Tm9kZSB9IGZyb20gJy4uLy4uLy4uL25hdmlnYXRpb24vbmF2aWdhdGlvbi1hcGknO1xyXG5pbXBvcnQgeyBCYXNlQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Jhc2UtY29uZmlnJztcclxuaW1wb3J0IHsgQmFzZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9iYXNlLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmVkZXJhdGVkTW9kdWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZlZGVyYXRlZC1tb2R1bGUuc2VydmljZSc7XHJcblxyXG4vKiogVGhlIGFwcCB0ZW1wbGF0ZSBjb21wb25lbnQgKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzb2YtYXItYXBwLXRlbXBsYXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXBwLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hcHAtdGVtcGxhdGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwVGVtcGxhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAvKiogVGhlIGNvbmZpZyBvYnNlcnZhYmxlICovXHJcbiAgcHVibGljIGNvbmZpZyQ6IE9ic2VydmFibGU8QmFzZUNvbmZpZz47XHJcblxyXG4gIC8qKiBUaGUgaGVhZGVyIHNldHRpbmdzICovXHJcbiAgcHVibGljIGhlYWRlclNldHRpbmdzOiBIZWFkZXJTZXR0aW5ncyA9IHt9O1xyXG5cclxuICAvKiogVGhlIGhlYWRlciB0aGVtZSBzZXR0aW5ncyAqL1xyXG4gIHB1YmxpYyBoZWFkZXJUaGVtZVNldHRpbmdzOiBIZWFkZXJUaGVtZVNldHRpbmdzID0ge307XHJcblxyXG4gIC8qKiBUaGUgaGVhZGVyIGF1dGggc2V0dGluZ3MgKi9cclxuICBwdWJsaWMgaGVhZGVyQXV0aFNldHRpbmdzOiBIZWFkZXJBdXRoU2V0dGluZ3MgPSB7fSBhcyBhbnk7XHJcblxyXG4gIC8qKiB0aGUgbmF2aWdhdGlvbiB0aGVtZSBzZXR0aW5ncyAqL1xyXG4gIHB1YmxpYyBuYXZpZ2F0aW9uVGhlbWU6IE5hdmlnYXRpb25UaGVtZVNldHRpbmdzID0ge307XHJcblxyXG4gIC8qKiBUaGUgbmF2aWdhdGlvbiBzZXR0aW5ncyAqL1xyXG4gIHB1YmxpYyBuYXZpZ2F0aW9uU2V0dGluZ3M6IE5hdmlnYXRpb25TZXR0aW5ncyA9IHt9O1xyXG5cclxuICAvKiogVGhlIG5hdmlnYXRpb24gbm9kZXMgKi9cclxuICBwdWJsaWMgbmF2aWdhdGlvbk5vZGVzOiBBcnJheTxOYXZOb2RlPiA9IFtdO1xyXG5cclxuICAvKiogVGhlIG5hdmlnYXRpb24gYWR2YW5jZWQgc2V0dGluZ3MgKi9cclxuICBwdWJsaWMgbmF2aWdhdGlvbkFkdmFuY2VkU2V0dGluZ3M6IE5hdmlnYXRpb25BZHZhbmNlZFNldHRpbmdzID0ge307XHJcblxyXG4gIC8qKiBUaGUgbGFuZ3VhZ2Ugc2V0dGluZ3MgKi9cclxuICBwdWJsaWMgbGFuZ3VhZ2VTZXR0aW5nczogSGVhZGVyTGFuZ3VhZ2VTZXR0aW5ncyA9IHt9O1xyXG5cclxuICAvKiogVGhlIGN1cnJlbnQgbGFuZ3VhZ2UgKi9cclxuICBwdWJsaWMgY3VycmVudExhbmc6IHN0cmluZztcclxuXHJcbiAgLyoqIFRoZSBsb2cgb3V0IHRleHQgKi9cclxuICBwdWJsaWMgZ2V0IGxvZ091dFRleHQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmhlYWRlckF1dGhTZXR0aW5ncy5sb2dPdXRUZXh0O1xyXG4gIH1cclxuXHJcbiAgLyoqIGdldHMgdGhlIG5vbiB1c2VkIGxhbmd1YWdlICovXHJcbiAgcHVibGljIGdldCBvdGhlckxhbmdUZXh0KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5sYW5ndWFnZVNldHRpbmdzPy5sYW5ndWFnZXM/LmZpbmQoeCA9PiB4ICE9PSB0aGlzLmN1cnJlbnRMYW5nKTtcclxuICB9XHJcblxyXG4gIC8qKiBUcnVlIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGlzIHJ1bm5pbmcgYXMgYSBmZWRlcmF0ZWQgbW9kdWxlICovXHJcbiAgcHVibGljIGlzRmVkZXJhdGVkTW9kdWxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdHMgdGhlIGNvbXBvbmVudFxyXG4gICAqIEBwYXJhbSBjb25maWdTZXJ2aWNlIFRoZSBjb25maWcgc2VydmljZVxyXG4gICAqIEBwYXJhbSB0cmFuc2xhdGVTZXJ2aWNlIFRoZSB0cmFuc2xhdGUgc2VydmljZVxyXG4gICAqIEBwYXJhbSBmZWRlcmF0ZWRNb2R1bGVTZXJ2aWNlIFRoZSBmZWRlcmF0ZWQgbW9kdWxlIHNlcnZpY2VcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQmFzZUNvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZlZGVyYXRlZE1vZHVsZVNlcnZpY2U6IEZlZGVyYXRlZE1vZHVsZVNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIC8qKiBMaWZlIGN5Y2xlIGhvb2sgZm9yIGNvbXBvbmVudCBpbml0aWFsaXphdGlvbiAqL1xyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNGZWRlcmF0ZWRNb2R1bGUgPSB0aGlzLmZlZGVyYXRlZE1vZHVsZVNlcnZpY2UuaXNGZWRlcmF0ZWRNb2R1bGU7XHJcbiAgICB0aGlzLmNvbmZpZyQgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnJDtcclxuICAgIHRoaXMuc2V0RGVmYXVsdHMoKTtcclxuICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWckLnN1YnNjcmliZShjb25maWcgPT4ge1xyXG4gICAgICAvLyBvYmplY3QgYXNzaWduIGlzIHVzZWQgaGVyZSBzbyB0aGUgaGVhZGVyIGRvZXNuJ3QgaGF2ZSB0byByZSByZW5kZXIgd2l0aCB0aGUgbmV3IG9iamVjdCByZWZlcmVuY2VcclxuICAgICAgLy8gaGVhZGVyXHJcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5oZWFkZXJTZXR0aW5ncywgY29uZmlnPy5oZWFkZXI/LnNldHRpbmdzKTtcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmhlYWRlclRoZW1lU2V0dGluZ3MsIGNvbmZpZz8uaGVhZGVyPy50aGVtZSk7XHJcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5oZWFkZXJBdXRoU2V0dGluZ3MsIGNvbmZpZz8ub0F1dGhTZXR0aW5ncyk7XHJcblxyXG4gICAgICAvLyBuYXZpZ2F0aW9uXHJcbiAgICAgIHRoaXMubmF2aWdhdGlvbk5vZGVzID0gY29uZmlnPy5uYXZpZ2F0aW9uPy5ub2RlcyB8fCB0aGlzLmdldEV4YW1wbGVOYXZOb2RlcygpO1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMubmF2aWdhdGlvblNldHRpbmdzLCBjb25maWc/Lm5hdmlnYXRpb24/LnNldHRpbmdzKTtcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm5hdmlnYXRpb25BZHZhbmNlZFNldHRpbmdzLCBjb25maWc/Lm5hdmlnYXRpb24/LmFkdmFuY2VkKTtcclxuICAgICAgdGhpcy5hc3NpZ25EZWZhdWx0TmF2VGhlbWUoY29uZmlnKTtcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm5hdmlnYXRpb25UaGVtZSwgY29uZmlnPy5uYXZpZ2F0aW9uPy50aGVtZSk7XHJcblxyXG4gICAgICAvLyBzZXQgZGVwZW5kZW50IHZhbHVlXHJcbiAgICAgIHRoaXMuaGVhZGVyU2V0dGluZ3MuYXJtYXR1cmVOYXZpZ2F0aW9uID0gIXRoaXMubmF2aWdhdGlvblNldHRpbmdzLmhpZGVOYXZpZ2F0aW9uO1xyXG4gICAgICBcclxuICAgICAgaWYgKHRoaXMubmF2aWdhdGlvblNldHRpbmdzLm1lbnVTdHlsZSA9PT0gJ3Byb2dyZXNzJyB8fCB0aGlzLm5hdmlnYXRpb25TZXR0aW5ncy5oaWRlTmF2aWdhdGlvbikge1xyXG4gICAgICAgIHRoaXMuaGVhZGVyU2V0dGluZ3MuY3JlYXRlU3BhY2VGb3JOYXZUb2dnbGUgPSB0aGlzLm5hdmlnYXRpb25TZXR0aW5ncy5hbGxvd05hdlRvZ2dsZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBTZXQgYm90aCBuYXZpZ2F0aW9uIHRvZ2dsZSBzZXR0aW5ncyB0byB0cnVlIGlmIGVpdGhlciBpcyB0cnVlXHJcbiAgICAgIGlmICh0aGlzLmhlYWRlclNldHRpbmdzLmNyZWF0ZVNwYWNlRm9yTmF2VG9nZ2xlIHx8IHRoaXMubmF2aWdhdGlvblNldHRpbmdzLmFsbG93TmF2VG9nZ2xlKSB7XHJcbiAgICAgICAgdGhpcy5oZWFkZXJTZXR0aW5ncy5jcmVhdGVTcGFjZUZvck5hdlRvZ2dsZSA9IHRoaXMubmF2aWdhdGlvblNldHRpbmdzLmFsbG93TmF2VG9nZ2xlID0gdHJ1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zZXRMYW5ndWFnZU9wdGlvbnMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQXBwbGllcyB0aGUgbGFuZ3VhZ2UgdG8gdGhlIHRyYW5zbGF0ZSBzZXJ2aWNlXHJcbiAgICogQHBhcmFtIGxhbmcgdGhlIGxhbmd1YWdlXHJcbiAgICovXHJcbiAgcHVibGljIGFwcGx5TGFuZ3VhZ2UobGFuZz86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKCFsYW5nKSB7XHJcbiAgICAgIGxhbmcgPSB0aGlzLm90aGVyTGFuZ1RleHQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudXNlKGxhbmcpO1xyXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nID0gbGFuZztcclxuICAgIHRoaXMuY3VycmVudExhbmcgPSBsYW5nO1xyXG4gIH1cclxuXHJcbiAgLyoqIFNldCB0aGUgbGFuZ3VhZ2Ugb3B0aW9ucyAqL1xyXG4gIHByaXZhdGUgc2V0TGFuZ3VhZ2VPcHRpb25zKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaGVhZGVyU2V0dGluZ3MubGFuZ3VhZ2VTZXR0aW5ncykge1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMubGFuZ3VhZ2VTZXR0aW5ncywgdGhpcy5oZWFkZXJTZXR0aW5ncy5sYW5ndWFnZVNldHRpbmdzKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxhbmd1YWdlU2V0dGluZ3MuZGVmYXVsdExhbmd1YWdlID0gdGhpcy5sYW5ndWFnZVNldHRpbmdzLmRlZmF1bHRMYW5ndWFnZSB8fCAnZW4nO1xyXG4gICAgdGhpcy5sYW5ndWFnZVNldHRpbmdzLmRpc3BsYXlMYW5ndWFnZU9wdGlvbnMgPSB0aGlzLmxhbmd1YWdlU2V0dGluZ3MuZGlzcGxheUxhbmd1YWdlT3B0aW9ucyB8fCBmYWxzZTtcclxuICAgIHRoaXMubGFuZ3VhZ2VTZXR0aW5ncy5sYW5ndWFnZXMgPSB0aGlzLmxhbmd1YWdlU2V0dGluZ3MubGFuZ3VhZ2VzIHx8IFsnZW4nLCAnZXMnXTtcclxuICAgIHRoaXMubGFuZ3VhZ2VTZXR0aW5ncy5idXR0b25UZXh0ID0gdGhpcy5sYW5ndWFnZVNldHRpbmdzLmJ1dHRvblRleHQgfHwgJ0xhbmd1YWdlcyc7XHJcblxyXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmFkZExhbmdzKHRoaXMubGFuZ3VhZ2VTZXR0aW5ncy5sYW5ndWFnZXMpO1xyXG4gICAgdGhpcy5jdXJyZW50TGFuZyA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZztcclxuICAgIHRoaXMuaGVhZGVyU2V0dGluZ3MubGFuZ3VhZ2VTZXR0aW5ncyA9IHRoaXMubGFuZ3VhZ2VTZXR0aW5ncztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RGVmYXVsdHMoKTogdm9pZCB7XHJcbiAgICAvLyBoZWFkZXJcclxuICAgIHRoaXMuaGVhZGVyU2V0dGluZ3MgPSB7XHJcbiAgICAgIGFybWF0dXJlTmF2aWdhdGlvbjogdHJ1ZSxcclxuICAgICAgY3JlYXRlU3BhY2VGb3JOYXZUb2dnbGU6IHRydWUsXHJcbiAgICAgIGRpc3BsYXlMb2dvOiB0cnVlLFxyXG4gICAgICBsb2dvVXJsOiAnaHR0cHM6Ly9zb2Z0aGVvbmNkbnN0b3JhZ2UuYmxvYi5jb3JlLndpbmRvd3MubmV0L2ltYWdlcy9zb2Z0aGVvbi9sb2dvLnN2ZycsXHJcbiAgICAgIGxvZ29BbHRUZXh0OiAndGhlIGV4YW1wbGUgcG9ydGFsIGhlYWRlciBsb2dvJyxcclxuICAgICAgZGlzcGxheUxvZ29UZXh0OiBmYWxzZSxcclxuICAgICAgZGlzcGxheURyb3BEb3duTWVudTogZmFsc2UsXHJcbiAgICAgIGRyb3BEb3duQXJpYVRleHQ6ICd0aGUgaGVhZGVyIGRyb3AgZG93biBtZW51IGJ1dHRvbiBpY29uJyxcclxuICAgICAgZHJvcERvd25NZW51U1JUZXh0OiAndGhlIGhlYWRlciBhY2NvdW50IGJ1dHRvbiBkcm9wIGRvd24gb3B0aW9ucycsXHJcbiAgICAgIGRpc3BsYXlBdXRoSW5mbzogdHJ1ZSxcclxuICAgICAgbGFuZ3VhZ2VTZXR0aW5nczoge1xyXG4gICAgICAgIGRpc3BsYXlMYW5ndWFnZU9wdGlvbnM6IHRydWVcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRoaXMuaGVhZGVyVGhlbWVTZXR0aW5ncyA9IHtcclxuICAgICAgaGVhZGVyQ29sb3I6ICcnLFxyXG4gICAgICBoZWFkZXJEcm9wU2hhZG93OiB0cnVlLFxyXG4gICAgICBhdXRob3JpemF0aW9uQnV0dG9uQ29sb3I6ICdyZ2IoMTEsIDgxLCAxNTYpJyxcclxuICAgICAgYXV0aG9yaXphdGlvbkJ1dHRvbkJhY2tncm91bmQ6ICdyZ2IoMTk5LCAyMTksIDI0MCknXHJcbiAgICB9O1xyXG4gICAgdGhpcy5oZWFkZXJBdXRoU2V0dGluZ3MgPSB7XHJcbiAgICAgIGNsaWVudElkOiAnJyxcclxuICAgICAgaXNzdWVyOiAnJyxcclxuICAgICAgc2NvcGU6ICdvcGVuaWQgcHJvZmlsZScsXHJcbiAgICAgIGxvZ0luVGV4dDogJ1NJR04gSU4nLFxyXG4gICAgICBsb2dPdXRUZXh0OiAnU0lHTiBPVVQnLFxyXG4gICAgICByZWRpcmVjdFVyaTogJ2h0dHA6Ly9sb2NhbGhvc3Q6NDIwMC8nLFxyXG4gICAgICBza2lwSXNzdWVyQ2hlY2s6IHRydWUsXHJcbiAgICAgIHBvc3RMb2dPdXRVcmw6ICdodHRwOi8vbG9jYWxob3N0OjQyMDAvJyxcclxuICAgICAgbG9naW5Vcmw6ICcnLFxyXG4gICAgICByZXR1cm5Sb3V0ZTogJycsXHJcbiAgICAgIHRpbWVvdXRGYWN0b3I6IDksXHJcbiAgICAgIG15QWNjb3VudFRleHQ6ICdNeSBBY2NvdW50JyxcclxuICAgICAgYXV0aFNldE9uU3RhcnR1cDogZmFsc2UsXHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2NvZGUnXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIG5hdmlnYXRpb25cclxuICAgIHRoaXMubmF2aWdhdGlvblNldHRpbmdzID0ge1xyXG4gICAgICBtYWluTWVudVRleHQ6ICdNQUlOIE1FTlUnLFxyXG4gICAgICBoZWFkZXJIZWlnaHQ6IDY0LFxyXG4gICAgICBtZW51QnV0dG9uU1JUZXh0OiAnTmF2aWdhdGlvbiBNZW51IEJ1dHRvbicsXHJcbiAgICAgIG1heENvbnRlbnRXaWR0aERlc2t0b3A6IDEwMCxcclxuICAgICAgbWF4Q29udGVudFdpZHRoTW9iaWxlOiAxMDBcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKiogR2V0cyB0aGUgZXhhbXBsZSBuYXZpZ2F0aW9uIG5vZGVzICovXHJcbiAgcHJpdmF0ZSBnZXRFeGFtcGxlTmF2Tm9kZXMoKTogQXJyYXk8TmF2Tm9kZT4ge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAge1xyXG4gICAgICAgIHRleHQ6ICdkZW1vLm5hdl8xJyxcclxuICAgICAgICBmb250QXdlc29tZUljb246ICdmYWQgZmEtaG9tZScsXHJcbiAgICAgICAgcm91dGU6ICcvb3ZlcnZpZXcnLFxyXG4gICAgICAgIHN1Yk5vZGVzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGV4dDogJ2RlbW8ubmF2XzInLFxyXG4gICAgICAgIGZvbnRBd2Vzb21lSWNvbjogJ2ZhZCBmYS1maWxlLWFsdCcsXHJcbiAgICAgICAgcm91dGU6ICcvZG9jdW1lbnRzJyxcclxuICAgICAgICBzdWJOb2RlczogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0ZXh0OiAnZGVtby5uYXZfMmEnLFxyXG4gICAgICAgICAgICByb3V0ZTogJy9kb2N1bWVudHMvaW52b2ljZSdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRleHQ6ICdkZW1vLm5hdl8yYicsXHJcbiAgICAgICAgICAgIHJvdXRlOiAnL2RvY3VtZW50cy9ub3RpY2UnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0ZXh0OiAnZGVtby5uYXZfMmMnLFxyXG4gICAgICAgICAgICByb3V0ZTogJy90YXgnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGV4dDogJ1BBWU1FTlRTJyxcclxuICAgICAgICBmb250QXdlc29tZUljb246ICdmYWQgZmEtZG9sbGFyLXNpZ24nLFxyXG4gICAgICAgIHN1Yk5vZGVzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRleHQ6ICdNYWtlIGEgUGF5bWVudCcsXHJcbiAgICAgICAgICAgIHJvdXRlOiAnL3BheW1lbnQnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0ZXh0OiAnQXV0b3BheScsXHJcbiAgICAgICAgICAgIHJvdXRlOiAnL2F1dG9wYXknXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0ZXh0OiAnU2NoZWR1bGVkIFBheW1lbnRzJyxcclxuICAgICAgICAgICAgcm91dGU6ICcvc2NoZWR1bGVkJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGV4dDogJ1BheW1lbnQgSGlzdG9yeScsXHJcbiAgICAgICAgICAgIHJvdXRlOiAnL2hpc3RvcnknXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0ZXh0OiAnTXkgUGF5bWVudCBNZXRob2RzJyxcclxuICAgICAgICAgICAgcm91dGU6ICcvcGF5bWVudC1tZXRob2RzJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRleHQ6ICdTRVJWSUNFIFJFUVVFU1QnLFxyXG4gICAgICAgIGZvbnRBd2Vzb21lSWNvbjogJ2ZhZCBmYS1oYW5kcy1oZWxwaW5nJyxcclxuICAgICAgICByb3V0ZTogJy9zZXJ2aWNlLXJlcXVlc3RzJyxcclxuICAgICAgICBzdWJOb2RlczogW11cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRleHQ6ICdQQVBFUkxFU1MgU0VUVElOR1MnLFxyXG4gICAgICAgIGZvbnRBd2Vzb21lSWNvbjogJ2ZhZCBmYS1sZWFmLWhlYXJ0JyxcclxuICAgICAgICByb3V0ZTogJy9wYXBlcmxlc3MnLFxyXG4gICAgICAgIHN1Yk5vZGVzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGV4dDogJ0ZBUXMnLFxyXG4gICAgICAgIGZvbnRBd2Vzb21lSWNvbjogJ2ZhZCBmYS1xdWVzdGlvbicsXHJcbiAgICAgICAgcm91dGU6ICcvZmFxcycsXHJcbiAgICAgICAgc3ViTm9kZXM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0ZXh0OiAnTGFuZ3VhZ2UgSGVscCcsXHJcbiAgICAgICAgZm9udEF3ZXNvbWVJY29uOiAnZmFyIGZhLWxhbmd1YWdlJyxcclxuICAgICAgICByb3V0ZTogJy9sYW5ndWFnZS1oZWxwJyxcclxuICAgICAgICBzdWJOb2RlczogW11cclxuICAgICAgfV07XHJcbiAgfVxyXG5cclxuICAvKiogQXNzaWducyB0aGUgZGVmYXVsdCBuYXZpZ2F0aW9uIHRoZW1lICovXHJcbiAgcHJpdmF0ZSBhc3NpZ25EZWZhdWx0TmF2VGhlbWUoY29uZmlnOiBCYXNlQ29uZmlnKTogdm9pZCB7XHJcbiAgICBjb25zdCBkZWZhdWx0TmF2VGhlbWUgPSB7XHJcbiAgICAgIGJnR3JhZGllbnRDb2xvcjE6ICcjZmZmJyxcclxuICAgICAgYmdHcmFkaWVudENvbG9yMjogJyNmZmYnLFxyXG4gICAgICBib3JkZXJSaWdodENvbG9yOiAndHJhbnNwYXJlbnQnLFxyXG4gICAgICBjb250ZW50QmdDb2xvcjogJyNlY2VjZWMnLFxyXG4gICAgICBmb250Q29sb3I6ICcjMDAwJyxcclxuICAgICAgaGlnaGxpZ2h0R3JhZGllbnQxOiAncmdiKDE5OSwgMjE5LCAyNDApJyxcclxuICAgICAgaGlnaGxpZ2h0R3JhZGllbnQyOiAncmdiKDExLCA4MSwgMTU2KScsXHJcbiAgICAgIGxpc3RCb3JkZXJDb2xvcjogJyNDRkQ4REMnLFxyXG4gICAgICBzdWJIaWdobGlnaHRCZ0NvbG9yOiAncmdiYSgyNTUsMjU1LDI1NSwgLjIwKScsXHJcbiAgICAgIHN1YkhpZ2hsaWdodEJvcmRlckNvbG9yOiAnIzAwQUNDMSdcclxuICAgIH07XHJcbiAgICBPYmplY3QuYXNzaWduKHRoaXMubmF2aWdhdGlvblRoZW1lLCBkZWZhdWx0TmF2VGhlbWUpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGhlYWRlciAqbmdJZj1cIiFpc0ZlZGVyYXRlZE1vZHVsZVwiPlxyXG4gIDxzb2YtYXItaGVhZGVyIFtzZXR0aW5nc109XCJoZWFkZXJTZXR0aW5nc1wiIFt0aGVtZVNldHRpbmdzXT1cImhlYWRlclRoZW1lU2V0dGluZ3NcIiBbYXV0aFNldHRpbmdzXT1cImhlYWRlckF1dGhTZXR0aW5nc1wiXHJcbiAgICAgICAgICAgICAgICAgKHNldExhbmd1YWdlJCk9XCJhcHBseUxhbmd1YWdlKClcIiBbY3VycmVudExhbmddPVwiY3VycmVudExhbmdcIj5cclxuICAgIDxuZy1jb250YWluZXIgc29mLWFyLWhlYWRlci1sZWZ0PlxyXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc29mLWFyLWhlYWRlci1sZWZ0XVwiPjwvbmctY29udGVudD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciBzb2YtYXItaGVhZGVyLWNlbnRlcj5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NvZi1hci1oZWFkZXItY2VudGVyXVwiPjwvbmctY29udGVudD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciBzb2YtYXItaGVhZGVyLXJpZ2h0PlxyXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc29mLWFyLWhlYWRlci1yaWdodF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgc29mLWhlYWRlci11c2VyLW1lbnU+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzb2YtaGVhZGVyLXVzZXItbWVudV1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L3NvZi1hci1oZWFkZXI+XHJcbjwvaGVhZGVyPlxyXG48bmctY29udGVudCBzZWxlY3Q9XCJbc29mLWFyLXRlbXBsYXRlLWNvbnRlbnRdXCI+IDwvbmctY29udGVudD5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRmVkZXJhdGVkTW9kdWxlXCI+XHJcbiAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxyXG48L25nLWNvbnRhaW5lcj5cclxuPHNvZi1hci1uYXZpZ2F0aW9uICpuZ0lmPVwiIWlzRmVkZXJhdGVkTW9kdWxlXCIgW25hdmlnYXRpb25EYXRhXT1cIm5hdmlnYXRpb25Ob2Rlc1wiIFtzZXR0aW5nc109XCJuYXZpZ2F0aW9uU2V0dGluZ3NcIlxyXG4gICAgICAgICAgICAgICAgICAgW2FkdmFuY2VkU2V0dGluZ3NdPVwibmF2aWdhdGlvbkFkdmFuY2VkU2V0dGluZ3NcIiBbdGhlbWVTZXR0aW5nc109XCJuYXZpZ2F0aW9uVGhlbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgW2xhbmd1YWdlU2V0dGluZ3NdPVwibGFuZ3VhZ2VTZXR0aW5nc1wiIFtjdXJyZW50TGFuZ109XCJjdXJyZW50TGFuZ1wiIChzZXRMYW5ndWFnZSQpPVwiYXBwbHlMYW5ndWFnZSgpXCJcclxuICAgICAgICAgICAgICAgICAgIFtsb2dPdXRUZXh0XT1cImxvZ091dFRleHRcIj5cclxuICA8bmctY29udGFpbmVyIHNvZi1hci1uYXYtY29udGVudD5cclxuICAgIDxzb2YtYXItYWxlcnQtYmFubmVyIGNsYXNzPVwic29mLWFyLWFsZXJ0LWJhbm5lci1jb250YWluZXJcIj48L3NvZi1hci1hbGVydC1iYW5uZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic29mLWFyLW5hdi1jb250YWluZXJcIiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0PVwic3RhcnQgc3RyZXRjaFwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlO1wiPlxyXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc29mLWFyLW5hdi1jb250ZW50LWhlYWRlcl1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzb2YtYXItbmF2LWNvbnRlbnQtY29udGFpbmVyXCIgZnhGbGV4PVwiMSAwIDEwMCVcIj5cclxuICAgICAgICA8bWFpbiBbbmdTdHlsZS5sdC1tZF09XCJ7J21heC13aWR0aCc6bmF2aWdhdGlvblNldHRpbmdzPy5tYXhDb250ZW50V2lkdGhNb2JpbGUrJyUnfVwiXHJcbiAgICAgICAgICAgICAgW25nU3R5bGUuZ3Qtc21dPVwieydtYXgtd2lkdGgnOm5hdmlnYXRpb25TZXR0aW5ncz8ubWF4Q29udGVudFdpZHRoRGVza3RvcCsnJSd9XCIgY2xhc3M9XCJtYWluLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cclxuICAgICAgICA8L21haW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGZ4RmxleD1cImF1dG9cIiBmeExheW91dEFsaWduPVwiZW5kIGVuZFwiPlxyXG4gICAgICAgIDxzb2YtYXItZm9vdGVyIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW2Zvb3RlckNvbmZpZ109XCJ7IHNob3dQcmVDb250ZW50MTogZmFsc2UsIHNob3dQcmVDb250ZW50MjogZmFsc2UgfVwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBzb2YtYXItZm9vdGVyLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzb2YtYXItZm9vdGVyLWNvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9zb2YtYXItZm9vdGVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgc29mLWFyLW5hdi1tb2JpbGUtZm9vdGVyPlxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NvZi1hci1uYXYtbW9iaWxlLWZvb3Rlcl1cIj48L25nLWNvbnRlbnQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvc29mLWFyLW5hdmlnYXRpb24+XHJcbiJdfQ==
|
|
@@ -3,7 +3,7 @@ import { AuthConfig } from 'angular-oauth2-oidc';
|
|
|
3
3
|
import { JwksValidationHandler } from 'angular-oauth2-oidc-jwks';
|
|
4
4
|
import * as _ from 'lodash';
|
|
5
5
|
import { BehaviorSubject, lastValueFrom, throwError } from 'rxjs';
|
|
6
|
-
import { languageStorageKey, preSignInRouteStorageKey, WINDOW } from '../models/constants';
|
|
6
|
+
import { federatedModuleConfigStorageKey, languageStorageKey, preSignInRouteStorageKey, WINDOW } from '../models/constants';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
import * as i1 from "@angular/common/http";
|
|
9
9
|
import * as i2 from "@ngx-translate/core";
|
|
@@ -12,7 +12,8 @@ import * as i4 from "../services/base-config.service";
|
|
|
12
12
|
import * as i5 from "angular-oauth2-oidc";
|
|
13
13
|
import * as i6 from "@angular/router";
|
|
14
14
|
import * as i7 from "@angular/common";
|
|
15
|
-
import * as i8 from "../services/
|
|
15
|
+
import * as i8 from "../services/federated-module.service";
|
|
16
|
+
import * as i9 from "../services/custom-auth-config.service";
|
|
16
17
|
/**
|
|
17
18
|
* The startup service is used to call methods that should be run when initially loading the application
|
|
18
19
|
*/
|
|
@@ -23,16 +24,18 @@ export class Initializer {
|
|
|
23
24
|
}
|
|
24
25
|
/**
|
|
25
26
|
* Constructs the startup service. Include any services that should be used during startup
|
|
26
|
-
* @param http The
|
|
27
|
+
* @param http The http client
|
|
27
28
|
* @param translateService The translate service
|
|
28
29
|
* @param themeService The theme service
|
|
29
|
-
* @param configService The
|
|
30
|
-
* @param oAuthService The
|
|
30
|
+
* @param configService The config service
|
|
31
|
+
* @param oAuthService The oauth service
|
|
31
32
|
* @param router The router
|
|
32
33
|
* @param location The location
|
|
33
|
-
* @param
|
|
34
|
+
* @param federatedModuleService The federated module service
|
|
35
|
+
* @param customAuthConfigService The custom auth config service
|
|
36
|
+
* @param _window The window injection
|
|
34
37
|
*/
|
|
35
|
-
constructor(http, translateService, themeService, configService, oAuthService, router, location, customAuthConfigService, _window) {
|
|
38
|
+
constructor(http, translateService, themeService, configService, oAuthService, router, location, federatedModuleService, customAuthConfigService, _window) {
|
|
36
39
|
this.http = http;
|
|
37
40
|
this.translateService = translateService;
|
|
38
41
|
this.themeService = themeService;
|
|
@@ -40,6 +43,7 @@ export class Initializer {
|
|
|
40
43
|
this.oAuthService = oAuthService;
|
|
41
44
|
this.router = router;
|
|
42
45
|
this.location = location;
|
|
46
|
+
this.federatedModuleService = federatedModuleService;
|
|
43
47
|
this.customAuthConfigService = customAuthConfigService;
|
|
44
48
|
this._window = _window;
|
|
45
49
|
/** The configuration behavior subject */
|
|
@@ -73,14 +77,15 @@ export class Initializer {
|
|
|
73
77
|
// At the end, if all works and loads as expected, resolve the promise and set startup success to true.
|
|
74
78
|
// If an issue is encountered, you can call reject() to hit the catch() code below.
|
|
75
79
|
// First, load the configurations
|
|
80
|
+
const assetPartial = !this.federatedModuleService.isFederatedModule ? './assets' : `./assets/federation/${this.federatedModuleService.federatedModuleId}/assets`;
|
|
76
81
|
let [baseConfig, overrideConfig, baseLang, overrideLang, theme] = [JSON, JSON, JSON, JSON, JSON];
|
|
77
82
|
try {
|
|
78
83
|
[baseConfig, overrideConfig, baseLang, overrideLang, theme] = await Promise.all([
|
|
79
|
-
this.http.get(
|
|
80
|
-
this.http.get(
|
|
81
|
-
this.http.get(
|
|
82
|
-
this.http.get(
|
|
83
|
-
this.http.get(
|
|
84
|
+
this.http.get(`${assetPartial}/baseline/appsettings.json`).toPromise(),
|
|
85
|
+
this.http.get(`${assetPartial}/configurations/appsettings.json`).toPromise(),
|
|
86
|
+
this.http.get(`${assetPartial}/i18n/${this.translateService.currentLang}.json`).toPromise(),
|
|
87
|
+
this.http.get(`${assetPartial}/configurations/${this.translateService.currentLang}.json`).toPromise(),
|
|
88
|
+
this.http.get(`${assetPartial}/configurations/theme.json`).toPromise()
|
|
84
89
|
]);
|
|
85
90
|
this.configService.config = _.mergeWith(baseConfig, overrideConfig, this.mergeCustomizer);
|
|
86
91
|
const mergedLanguage = _.mergeWith(baseLang, overrideLang, this.mergeCustomizer);
|
|
@@ -95,9 +100,9 @@ export class Initializer {
|
|
|
95
100
|
if (subdomain && this.configService.config.subdomain) {
|
|
96
101
|
try {
|
|
97
102
|
let [subdomainConfigs, subdomainLanguage, subdomainTheme] = await Promise.all([
|
|
98
|
-
lastValueFrom(this.http.get(
|
|
99
|
-
lastValueFrom(this.http.get(
|
|
100
|
-
lastValueFrom(this.http.get(
|
|
103
|
+
lastValueFrom(this.http.get(`${assetPartial}/configurations/${subdomain}.${this.translateService.currentLang}.json`)),
|
|
104
|
+
lastValueFrom(this.http.get(`${assetPartial}/configurations/${subdomain}.appsettings.json`)),
|
|
105
|
+
lastValueFrom(this.http.get(`${assetPartial}/configurations/${subdomain}.theme.json`))
|
|
101
106
|
]);
|
|
102
107
|
this.configService.config = _.mergeWith(this.configService.config, subdomainConfigs, this.mergeCustomizer);
|
|
103
108
|
this.translateService.setTranslation(this.translateService.currentLang, _.mergeWith(mergedLanguage, subdomainLanguage, this.mergeCustomizer));
|
|
@@ -124,6 +129,7 @@ export class Initializer {
|
|
|
124
129
|
else {
|
|
125
130
|
configurePartial(theme);
|
|
126
131
|
}
|
|
132
|
+
this.trySetUpFederatedModules();
|
|
127
133
|
}
|
|
128
134
|
catch (error) {
|
|
129
135
|
// Catch any errors during the get configurations API call
|
|
@@ -267,7 +273,17 @@ export class Initializer {
|
|
|
267
273
|
return domain.split('.')[0];
|
|
268
274
|
}
|
|
269
275
|
}
|
|
270
|
-
|
|
276
|
+
/**
|
|
277
|
+
* Tries to set up the federated modules when configured
|
|
278
|
+
*/
|
|
279
|
+
trySetUpFederatedModules() {
|
|
280
|
+
if (this.federatedModuleService.isFederatedModule || !this.configService.config.federatedModules || !Object.keys(this.configService.config.federatedModules).length) {
|
|
281
|
+
return false;
|
|
282
|
+
}
|
|
283
|
+
this.window.sessionStorage.setItem(federatedModuleConfigStorageKey, JSON.stringify(this.configService.config.federatedModules));
|
|
284
|
+
return true;
|
|
285
|
+
}
|
|
286
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: Initializer, deps: [{ token: i1.HttpClient }, { token: i2.TranslateService }, { token: i3.ThemeService }, { token: i4.BaseConfigService }, { token: i5.OAuthService }, { token: i6.Router }, { token: i7.Location }, { token: i8.FederatedModuleService }, { token: i9.CustomAuthConfigService, optional: true }, { token: WINDOW, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
271
287
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: Initializer, providedIn: 'root' }); }
|
|
272
288
|
}
|
|
273
289
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: Initializer, decorators: [{
|
|
@@ -275,7 +291,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
275
291
|
args: [{
|
|
276
292
|
providedIn: 'root'
|
|
277
293
|
}]
|
|
278
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.TranslateService }, { type: i3.ThemeService }, { type: i4.BaseConfigService }, { type: i5.OAuthService }, { type: i6.Router }, { type: i7.Location }, { type: i8.CustomAuthConfigService, decorators: [{
|
|
294
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.TranslateService }, { type: i3.ThemeService }, { type: i4.BaseConfigService }, { type: i5.OAuthService }, { type: i6.Router }, { type: i7.Location }, { type: i8.FederatedModuleService }, { type: i9.CustomAuthConfigService, decorators: [{
|
|
279
295
|
type: Optional
|
|
280
296
|
}] }, { type: undefined, decorators: [{
|
|
281
297
|
type: Optional
|
|
@@ -283,4 +299,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
283
299
|
type: Inject,
|
|
284
300
|
args: [WINDOW]
|
|
285
301
|
}] }] });
|
|
286
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbGl6ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL3NyYy9saWIvY29yZS9pbml0aWFsaXplci9pbml0aWFsaXplci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc3RCxPQUFPLEVBQUUsVUFBVSxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc5RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7QUFPM0Y7O0dBRUc7QUFNSCxNQUFNLE9BQU8sV0FBVztJQWlCdEIsOEJBQThCO0lBQzlCLElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDO0lBQ3BDLENBQUM7SUFLRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsWUFDbUIsSUFBZ0IsRUFDaEIsZ0JBQWtDLEVBQ2xDLFlBQTBCLEVBQzFCLGFBQWdDLEVBQ2hDLFlBQTBCLEVBQzFCLE1BQWMsRUFDZCxRQUFrQixFQUNOLHVCQUFnRCxFQUN4QyxPQUFZO1FBUmhDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7UUFDaEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsV0FB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QUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsZ0JBQWdCLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsWUFBWSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLFlBQVksRUFBRTtZQUM1SSxPQUFPLEVBQUUsQ0FBQztTQUNYO2FBQU07WUFDTCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDOzhHQTNSVSxXQUFXLDBRQTZDQSxNQUFNO2tIQTdDakIsV0FBVyxjQUhSLE1BQU07OzJGQUdULFdBQVc7a0JBTHZCLFVBQVU7bUJBQ1Q7b0JBQ0UsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkE4Q0UsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBBdXRoQ29uZmlnLCBPQXV0aFNlcnZpY2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcclxuaW1wb3J0IHsgSndrc1ZhbGlkYXRpb25IYW5kbGVyIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYy1qd2tzJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGxhc3RWYWx1ZUZyb20sIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uL3RoZW1pbmcvc2VydmljZXMvdGhlbWUuc2VydmljZSc7XHJcbmltcG9ydCB7IGxhbmd1YWdlU3RvcmFnZUtleSwgcHJlU2lnbkluUm91dGVTdG9yYWdlS2V5LCBXSU5ET1cgfSBmcm9tICcuLi9tb2RlbHMvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgT2lkY0F1dGhTZXR0aW5ncyB9IGZyb20gJy4uL21vZGVscy9vaWRjLWF1dGgtc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBCYXNlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Jhc2UtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDdXN0b21BdXRoQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2N1c3RvbS1hdXRoLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuLyoqXHJcbiAqIFRoZSBzdGFydHVwIHNlcnZpY2UgaXMgdXNlZCB0byBjYWxsIG1ldGhvZHMgdGhhdCBzaG91bGQgYmUgcnVuIHdoZW4gaW5pdGlhbGx5IGxvYWRpbmcgdGhlIGFwcGxpY2F0aW9uXHJcbiAqL1xyXG5ASW5qZWN0YWJsZShcclxuICB7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxuICB9XHJcbilcclxuZXhwb3J0IGNsYXNzIEluaXRpYWxpemVyIHtcclxuXHJcbiAgLyoqIFRoZSBjb25maWd1cmF0aW9uIGJlaGF2aW9yIHN1YmplY3QgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IGlzSW5pdGlhbGl6ZWRCczogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIC8qKiBUaGUgYnJvd3NlciB3aW5kb3cgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvdzogV2luZG93O1xyXG5cclxuICAvKiogVGhlIGV4YW1wbGUgdGhlIHN1YmRvbWFpbiBzdWJzdHJpbmcgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IGV4YW1wbGVTdWJkb21haW46IHN0cmluZyA9ICdleGFtcGxlJztcclxuXHJcbiAgLyoqIFRoZSB3d3cgc3Vic3RyaW5nIGZvciBzdWJkb21haW4gcm91dGUgZmluZGluZyAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgd3d3U3Vic3RyaW5nOiBzdHJpbmcgPSAnd3d3JztcclxuXHJcbiAgLyoqIFRoZSBsdmggc3Vic3RyaW5nIGZvciBzdWJkb21haW4gcm91dGUgZmluZGluZyAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbHZoU3Vic3RyaW5nOiBzdHJpbmcgPSAnbHZoJ1xyXG5cclxuICAvKiogR2V0cyB0aGUgY29uZmlndXJhdGlvbnMgKi9cclxuICBwdWJsaWMgZ2V0IGlzSW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0luaXRpYWxpemVkQnMudmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKiogVGhlIGNvbmZpZ3VyYXRpb24gb2JzZXJ2YWJsZSAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBpc0luaXRpYWxpemVkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyB0aGUgc3RhcnR1cCBzZXJ2aWNlLiBJbmNsdWRlIGFueSBzZXJ2aWNlcyB0aGF0IHNob3VsZCBiZSB1c2VkIGR1cmluZyBzdGFydHVwXHJcbiAgICogQHBhcmFtIGh0dHAgVGhlIEhUVFAgQ2xpZW50XHJcbiAgICogQHBhcmFtIHRyYW5zbGF0ZVNlcnZpY2UgVGhlIHRyYW5zbGF0ZSBzZXJ2aWNlXHJcbiAgICogQHBhcmFtIHRoZW1lU2VydmljZSBUaGUgdGhlbWUgc2VydmljZVxyXG4gICAqIEBwYXJhbSBjb25maWdTZXJ2aWNlIFRoZSBjb25maWd1cmF0aW9uIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gb0F1dGhTZXJ2aWNlIFRoZSBvaWRjIGF1dGhvcml6YXRpb24gc2VydmljZVxyXG4gICAqIEBwYXJhbSByb3V0ZXIgVGhlIHJvdXRlclxyXG4gICAqIEBwYXJhbSBsb2NhdGlvbiBUaGUgbG9jYXRpb25cclxuICAgKiBAcGFyYW0gY3VzdG9tQXV0aENvbmZpZ1NlcnZpY2UgVGhlIHNlcnZpY2UgdGhhdCB3aWxsIGNvbmZpZ3VyZSB0aGUgYXV0aCBjb25maWdcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGhlbWVTZXJ2aWNlOiBUaGVtZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IEJhc2VDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBvQXV0aFNlcnZpY2U6IE9BdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uOiBMb2NhdGlvbixcclxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgY3VzdG9tQXV0aENvbmZpZ1NlcnZpY2U6IEN1c3RvbUF1dGhDb25maWdTZXJ2aWNlLFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChXSU5ET1cpIHJlYWRvbmx5IF93aW5kb3c6IGFueVxyXG4gICkge1xyXG4gICAgdGhpcy5pc0luaXRpYWxpemVkJCA9IHRoaXMuaXNJbml0aWFsaXplZEJzLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgdGhpcy53aW5kb3cgPSBfd2luZG93IHx8IHdpbmRvdztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWRzIGFsbCBkYXRhIHRoYXQgaXMgbmVlZGVkIHVwb24gaW5pdGlhbCBsb2FkaW5nIG9mIHRoZSB3ZWJzaXRlXHJcbiAgICovXHJcbiAgcHVibGljIGFzeW5jIGluaXRpYWxpemUoKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIC8vIHJlYWRzIHRoZSBsYW5ndWFnZSBmcm9tIGxvY2FsIHN0b3JhZ2Ugc2V0IGluIHRoZSBwYXJlbnQgYXBwXHJcbiAgICAvLyBsYW5ndWFnZSBsb2FkaW5nXHJcblxyXG4gICAgLy8gU2V0IGxhbmd1YWdlcyBmb3IgdHJhbnNsYXRpb24gc2VydmljZVxyXG4gICAgY29uc3QgbGFuZyA9IHRoaXMud2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKGxhbmd1YWdlU3RvcmFnZUtleSkgfHwgdGhpcy53aW5kb3cuc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShsYW5ndWFnZVN0b3JhZ2VLZXkpIHx8ICdlbic7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2V0RGVmYXVsdExhbmcobGFuZyk7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudXNlKGxhbmcpO1xyXG5cclxuICAgIC8vIEFkYXB0ZWQgZnJvbSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDE2MzY4ODBcclxuICAgIC8vIEFkYXB0ZWQgZnJvbSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDE3MzYyOTNcclxuXHJcbiAgICAvLyBBIGNhbGxiYWNrIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgcHJvbWlzZS4gVGhpcyBjYWxsYmFjayBpcyBwYXNzZWQgdHdvIGFyZ3VtZW50czpcclxuICAgIC8vIGEgcmVzb2x2ZSBjYWxsYmFjayB1c2VkIHJlc29sdmUgdGhlIHByb21pc2Ugd2l0aCBhIHZhbHVlIG9yIHRoZSByZXN1bHQgb2YgYW5vdGhlciBwcm9taXNlLFxyXG4gICAgLy8gYW5kIGEgcmVqZWN0IGNhbGxiYWNrIHVzZWQgdG8gcmVqZWN0IHRoZSBwcm9taXNlIHdpdGggYSBwcm92aWRlZCByZWFzb24gb3IgZXJyb3IuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAvLyBHbyB0aHJvdWdoIGFsbCBzZXJ2aWNlcyBhbmQgY29tcGxldGUgYW55IEFQSSBjYWxscyBuZWNlc3NhcnkuXHJcbiAgICAgIC8vIEF0IHRoZSBlbmQsIGlmIGFsbCB3b3JrcyBhbmQgbG9hZHMgYXMgZXhwZWN0ZWQsIHJlc29sdmUgdGhlIHByb21pc2UgYW5kIHNldCBzdGFydHVwIHN1Y2Nlc3MgdG8gdHJ1ZS5cclxuICAgICAgLy8gSWYgYW4gaXNzdWUgaXMgZW5jb3VudGVyZWQsIHlvdSBjYW4gY2FsbCByZWplY3QoKSB0byBoaXQgdGhlIGNhdGNoKCkgY29kZSBiZWxvdy5cclxuXHJcbiAgICAgIC8vIEZpcnN0LCBsb2FkIHRoZSBjb25maWd1cmF0aW9uc1xyXG4gICAgICBsZXQgW2Jhc2VDb25maWcsIG92ZXJyaWRlQ29uZmlnLCBiYXNlTGFuZywgb3ZlcnJpZGVMYW5nLCB0aGVtZV0gPSBbSlNPTiwgSlNPTiwgSlNPTiwgSlNPTiwgSlNPTl07XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgW2Jhc2VDb25maWcsIG92ZXJyaWRlQ29uZmlnLCBiYXNlTGFuZywgb3ZlcnJpZGVMYW5nLCB0aGVtZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbXHJcbiAgICAgICAgICB0aGlzLmh0dHAuZ2V0PEpTT04+KCcuL2Fzc2V0cy9iYXNlbGluZS9hcHBzZXR0aW5ncy5qc29uJykudG9Qcm9taXNlKCksXHJcbiAgICAgICAgICB0aGlzLmh0dHAuZ2V0PEpTT04+KCcuL2Fzc2V0cy9jb25maWd1cmF0aW9ucy9hcHBzZXR0aW5ncy5qc29uJykudG9Qcm9taXNlKCksXHJcbiAgICAgICAgICB0aGlzLmh0dHAuZ2V0PEpTT04+KGAuL2Fzc2V0cy9pMThuLyR7dGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nfS5qc29uYCkudG9Qcm9taXNlKCksXHJcbiAgICAgICAgICB0aGlzLmh0dHAuZ2V0PEpTT04+KGAuL2Fzc2V0cy9jb25maWd1cmF0aW9ucy8ke3RoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZ30uanNvbmApLnRvUHJvbWlzZSgpLFxyXG4gICAgICAgICAgdGhpcy5odHRwLmdldDxKU09OPignLi9hc3NldHMvY29uZmlndXJhdGlvbnMvdGhlbWUuanNvbicpLnRvUHJvbWlzZSgpXHJcbiAgICAgICAgXSk7XHJcbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyA9IF8ubWVyZ2VXaXRoKGJhc2VDb25maWcsIG92ZXJyaWRlQ29uZmlnLCB0aGlzLm1lcmdlQ3VzdG9taXplcik7XHJcbiAgICAgICAgY29uc3QgbWVyZ2VkTGFuZ3VhZ2UgPSBfLm1lcmdlV2l0aChiYXNlTGFuZywgb3ZlcnJpZGVMYW5nLCB0aGlzLm1lcmdlQ3VzdG9taXplcik7XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnNldFRyYW5zbGF0aW9uKHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZywgbWVyZ2VkTGFuZ3VhZ2UpO1xyXG5cclxuICAgICAgICBjb25zdCBjb25maWd1cmVQYXJ0aWFsID0gKHQpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGNvbmZpZ1NuYXBTaG90ID0gdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZztcclxuICAgICAgICAgIGNvbmZpZ1NuYXBTaG90LnRoZW1lID0gdCBhcyBhbnk7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnID0gY29uZmlnU25hcFNob3Q7XHJcbiAgICAgICAgICB0aGlzLnRoZW1lU2VydmljZS5pbml0UGFsZXR0ZSh0IGFzIGFueSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHN1YmRvbWFpbiA9IHRoaXMuZ2V0U3ViZG9tYWluKCk7XHJcbiAgICAgICAgaWYgKHN1YmRvbWFpbiAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLnN1YmRvbWFpbikge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbGV0IFtzdWJkb21haW5Db25maWdzLCBzdWJkb21haW5MYW5ndWFnZSwgc3ViZG9tYWluVGhlbWVdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xyXG4gICAgICAgICAgICAgIGxhc3RWYWx1ZUZyb20odGhpcy5odHRwLmdldDxKU09OPihgLi9hc3NldHMvY29uZmlndXJhdGlvbnMvJHtzdWJkb21haW59LiR7dGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nfS5qc29uYCkpLFxyXG4gICAgICAgICAgICAgIGxhc3RWYWx1ZUZyb20odGhpcy5odHRwLmdldDxKU09OPihgLi9hc3NldHMvY29uZmlndXJhdGlvbnMvJHtzdWJkb21haW59LmFwcHNldHRpbmdzLmpzb25gKSksXHJcbiAgICAgICAgICAgICAgbGFzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PEpTT04+KGAuL2Fzc2V0cy9jb25maWd1cmF0aW9ucy8ke3N1YmRvbWFpbn0udGhlbWUuanNvbmApKVxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyA9IF8ubWVyZ2VXaXRoKHRoaXMuY29uZmlnU2VydmljZS5jb25maWcsIHN1YmRvbWFpbkNvbmZpZ3MsIHRoaXMubWVyZ2VDdXN0b21pemVyKTtcclxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnNldFRyYW5zbGF0aW9uKHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZywgXy5tZXJnZVdpdGgobWVyZ2VkTGFuZ3VhZ2UsIHN1YmRvbWFpbkxhbmd1YWdlLCB0aGlzLm1lcmdlQ3VzdG9taXplcikpO1xyXG4gICAgICAgICAgICBjb25zdCBtZXJnZWRUaGVtZSA9IF8ubWVyZ2VXaXRoKHRoZW1lLCBzdWJkb21haW5UaGVtZSwgdGhpcy5tZXJnZUN1c3RvbWl6ZXIpO1xyXG4gICAgICAgICAgICBjb25maWd1cmVQYXJ0aWFsKG1lcmdlZFRoZW1lKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLnN1YmRvbWFpbiAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLnN1YmRvbWFpbi5zdWJkb21haW5zLmxlbmd0aCAmJiAhdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5zdWJkb21haW4uc3ViZG9tYWlucy5pbmNsdWRlcyhzdWJkb21haW4pKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIuZGlzcG9zZSgpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gYEludmFsaWQgc3ViZG9tYWluOiAke3N1YmRvbWFpbn1gO1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5zdWJkb21haW4/LnJlcXVpcmVDb25maWd1cmVkU3ViZG9tYWluICYmIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcuc3ViZG9tYWluPy5zdWJkb21haW5zLmluY2x1ZGVzKHN1YmRvbWFpbikpIHtcclxuICAgICAgICAgICAgICB0aGlzLnJvdXRlci5kaXNwb3NlKCk7XHJcbiAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBgQ29uZmlndXJlZCBzdWJkb21haW46ICR7c3ViZG9tYWlufSBkb2VzIG5vdCBoYXZlIGFueSBzdWJkb21haW4gc3BlY2lmaWMgY29uZmlndXJhdGlvbnNgO1xyXG4gICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25maWd1cmVQYXJ0aWFsKHRoZW1lKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25maWd1cmVQYXJ0aWFsKHRoZW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgLy8gQ2F0Y2ggYW55IGVycm9ycyBkdXJpbmcgdGhlIGdldCBjb25maWd1cmF0aW9ucyBBUEkgY2FsbFxyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIExvYWRpbmcgQ29uZmlndXJhdGlvbnMgb3IgTGFuZ3VhZ2VzJyk7XHJcbiAgICAgICAgLy8gUmVqZWN0IHRoZSBwcm9taXNlXHJcbiAgICAgICAgcmVqZWN0KCdlcnJvcicpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvci5lcnJvciB8fCAnU2VydmVyIGVycm9yJyk7XHJcbiAgICAgIH1cclxuICAgICAgdHJ5IHtcclxuICAgICAgICBpZiAodGhpcy5jdXN0b21BdXRoQ29uZmlnU2VydmljZSkge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5jdXN0b21BdXRoQ29uZmlnU2VydmljZS5jb25maWd1cmVBdXRoU2V0dGluZ3MoKS50aGVuKGF1dGhDb25maWcgPT4ge1xyXG4gICAgICAgICAgICBpZiAoYXV0aENvbmZpZykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnU2VydmljZS5jb25maWcub0F1dGhTZXR0aW5ncztcclxuXHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9naW4oY29uZmlnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3Qgb0F1dGggPSBhd2FpdCB0aGlzLnNldFVwT0F1dGgoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBOYXZpZ2F0ZSB0byB0aGUgcmVxdWVzdGVkIHJvdXRlXHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLm9BdXRoU2V0dGluZ3M/LnByZXNlcnZlUm91dGUpIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMub0F1dGhTZXJ2aWNlLnN0YXRlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5pc0luaXRpYWxpemVkQnMubmV4dCh0cnVlKTtcclxuICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAvLyBDYXRjaCB0aGUgZXJyb3JcclxuICAgICAgY29uc29sZS5lcnJvcignVGhlcmUgd2FzIGFuIGVycm9yIGxvYWRpbmcgdGhlIHN0YXJ0dXAgY29uZmlndXJhdGlvbnMuJyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbmZpZ3VyZSBpbXBsaWNpdCBmbG93XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhc3luYyBzZXRVcE9BdXRoKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnU2VydmljZS5jb25maWc/Lm9BdXRoU2V0dGluZ3M/Lmlzc3Vlcikge1xyXG4gICAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLm9BdXRoU2V0dGluZ3M7XHJcbiAgICAgIGNvbnN0IGF1dGhDb25maWcgPSBuZXcgQXV0aENvbmZpZyh7XHJcbiAgICAgICAgY2xpZW50SWQ6IGNvbmZpZy5jbGllbnRJZCxcclxuICAgICAgICByZWRpcmVjdFVyaTogY29uZmlnLnJlZGlyZWN0VXJpLFxyXG4gICAgICAgIGlzc3VlcjogY29uZmlnLmlzc3VlcixcclxuICAgICAgICBzY29wZTogY29uZmlnLnNjb3BlLFxyXG4gICAgICAgIHNraXBJc3N1ZXJDaGVjazogY29uZmlnLnNraXBJc3N1ZXJDaGVjayAhPSB1bmRlZmluZWQgPyBjb25maWcuc2tpcElzc3VlckNoZWNrIDogdHJ1ZSxcclxuICAgICAgICB0aW1lb3V0RmFjdG9yOiBjb25maWcudGltZW91dEZhY3RvciB8fCAwLjc1LFxyXG4gICAgICAgIHBvc3RMb2dvdXRSZWRpcmVjdFVyaTogY29uZmlnLnBvc3RMb2dvdXRSZWRpcmVjdFVyaSxcclxuICAgICAgICBsb2dpblVybDogY29uZmlnLmxvZ2luVXJsLFxyXG4gICAgICAgIHN0cmljdERpc2NvdmVyeURvY3VtZW50VmFsaWRhdGlvbjogZmFsc2UsXHJcbiAgICAgICAgcmVzcG9uc2VUeXBlOiBjb25maWcucmVzcG9uc2VUeXBlIHx8ICdjb2RlJ1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5vQXV0aFNlcnZpY2UuY29uZmlndXJlKGF1dGhDb25maWcpO1xyXG4gICAgICB0aGlzLm9BdXRoU2VydmljZS5za2lwSXNzdWVyQ2hlY2sgPSB0cnVlO1xyXG4gICAgICB0aGlzLm9BdXRoU2VydmljZS5yZXNwb25zZVR5cGUgPSBjb25maWcucmVzcG9uc2VUeXBlIHx8ICdjb2RlJztcclxuICAgICAgdGhpcy5vQXV0aFNlcnZpY2Uuc3RyaWN0RGlzY292ZXJ5RG9jdW1lbnRWYWxpZGF0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMub0F1dGhTZXJ2aWNlLnRva2VuVmFsaWRhdGlvbkhhbmRsZXIgPSBuZXcgSndrc1ZhbGlkYXRpb25IYW5kbGVyKCk7XHJcbiAgICAgIHRoaXMub0F1dGhTZXJ2aWNlLnRpbWVvdXRGYWN0b3IgPSAwLjc1O1xyXG4gICAgICB0aGlzLm9BdXRoU2VydmljZS5zZXR1cEF1dG9tYXRpY1NpbGVudFJlZnJlc2goe30sICdhY2Nlc3NfdG9rZW4nKTtcclxuXHJcbiAgICAgIC8vIHNldCBpbml0aWFsaXplZCBvbiBzdGFydCB1cCB0byB0cnVlXHJcbiAgICAgIGNvbmZpZy5hdXRoU2V0T25TdGFydHVwID0gdHJ1ZTtcclxuICAgICAgY29uc3QgcGFyZW50Q29uZmlnID0gdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZztcclxuICAgICAgcGFyZW50Q29uZmlnLm9BdXRoU2V0dGluZ3MgPSBjb25maWc7XHJcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcgPSBwYXJlbnRDb25maWc7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5sb2dpbihjb25maWcpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgTG9naW5cclxuICAgKiBAcGFyYW0gY29uZmlnIFRoZSBPaWRjIEF1dGggU2V0dGluZ3NcclxuICAgKi9cclxuICBwcml2YXRlIGFzeW5jIGxvZ2luKGNvbmZpZzogT2lkY0F1dGhTZXR0aW5ncyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgY29uc3QgaXNWYWxpZCA9IHRoaXMudmFsaWRhdGVFeGlzdGluZ1Rva2VuQWdhaW5zdENvbmZpZ3MoKTtcclxuICAgIGNvbnN0IHByZXNlcnZlZFJvdXRlID0gdGhpcy53aW5kb3cuc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShwcmVTaWduSW5Sb3V0ZVN0b3JhZ2VLZXkpO1xyXG4gICAgaWYgKCFwcmVzZXJ2ZWRSb3V0ZSkge1xyXG4gICAgICB0aGlzLndpbmRvdy5zZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHByZVNpZ25JblJvdXRlU3RvcmFnZUtleSwgdGhpcy5sb2NhdGlvbi5wYXRoKCkpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNvbmZpZy5yZXF1aXJlTG9naW5PblN0YXJ0dXAgfHwgIWlzVmFsaWQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMub0F1dGhTZXJ2aWNlLmxvYWREaXNjb3ZlcnlEb2N1bWVudEFuZExvZ2luKHtzdGF0ZTogdGhpcy5sb2NhdGlvbi5wYXRoKCl9KVxyXG4gICAgICAgIC8vIGhhbmRsZXMgdGhlIGNhc2UgZm9yIGV4cGlyZWQgYWNjZXNzIHRva2VuIG9yIGludmFsaWQgbm9uY2Ugb3IgcGVvcGxlIGJvb2ttYXJraW5nIHRoZSBpZHMgbG9naW4gcGFnZVxyXG4gICAgICAgIC5jYXRjaChhc3luYyAocmVzKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9BdXRoU2VydmljZS5pbml0TG9naW5GbG93KHRoaXMubG9jYXRpb24ucGF0aCgpKTtcclxuXHJcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm9BdXRoU2VydmljZS5sb2FkRGlzY292ZXJ5RG9jdW1lbnRBbmRUcnlMb2dpbigpXHJcbiAgICAgICAgLy8gaGFuZGxlcyB0aGUgY2FzZSBmb3IgZXhwaXJlZCBhY2Nlc3MgdG9rZW4gb3IgaW52YWxpZCBub25jZSBvciBwZW9wbGUgYm9va21hcmtpbmcgdGhlIGlkcyBsb2dpbiBwYWdlXHJcbiAgICAgICAgLmNhdGNoKGFzeW5jIChyZXMpID0+IHtcclxuICAgICAgICAgIHRoaXMub0F1dGhTZXJ2aWNlLmluaXRMb2dpbkZsb3coKTtcclxuXHJcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWVyZ2VzIHRoZSB0d28gY29uZmlnIG9iamVjdHMgaWdub3JpbmcgdGhlIGFycmF5IHR5cGVcclxuICAgKiBAcGFyYW0gb2JqVmFsdWUgVGhlIGRlZmF1bHQgY29uZmlnIHZhbHVlXHJcbiAgICogQHBhcmFtIHNyY1ZhbHVlIFRoZSB0YXJnZXQgc3dpdGNoYm9hcmQgY29uZmlnIHZhbHVlXHJcbiAgICogQHJldHVybnMgVGhlIG1lcmdlIG9mIHRoZSB0d28gY29uZmlncyBwcm92aWRlZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgbWVyZ2VDdXN0b21pemVyKG9ialZhbHVlOiBhbnksIHNyY1ZhbHVlOiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKF8uaXNBcnJheShvYmpWYWx1ZSkgJiYgc3JjVmFsdWUpIHtcclxuICAgICAgcmV0dXJuIHNyY1ZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdGVzIHRoZSBleGlzdGluZyB0b2tlbiBhZ2FpbnN0IHRoZSBjb25maWd1cmF0aW9uc1xyXG4gICAqIEByZXR1cm5zIHRydWUgd2hlbiB0b2tlbiBpcyB2YWxpZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdmFsaWRhdGVFeGlzdGluZ1Rva2VuQWdhaW5zdENvbmZpZ3MoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5vQXV0aFNldHRpbmdzLmRpc2FibGVTdGFydHVwVG9rZW5WYWxpZGF0aW9uKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLndpbmRvdy5zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdhY2Nlc3NfdG9rZW4nKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGNvbnN0IGdyYW50ZWRTY29wZXM6IEFycmF5PHN0cmluZz4gPSAgdGhpcy5vQXV0aFNlcnZpY2UuZ2V0R3JhbnRlZFNjb3BlcygpIGFzIEFycmF5PHN0cmluZz47XHJcbiAgICBjb25zdCBjb25maWd1cmVkU2NvcGVzID0gdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5vQXV0aFNldHRpbmdzLnNjb3BlLnNwbGl0KCcgJyk7XHJcbiAgICBjb25zdCBkaWZmcyA9IGdyYW50ZWRTY29wZXMuZmlsdGVyKHggPT4gIWNvbmZpZ3VyZWRTY29wZXMuaW5jbHVkZXMoeCkpXHJcbiAgICAgIC5jb25jYXQoY29uZmlndXJlZFNjb3Blcy5maWx0ZXIoeCA9PiAhZ3JhbnRlZFNjb3Blcy5pbmNsdWRlcyh4KSkpO1xyXG4gICAgaWYgKGRpZmZzLmxlbmd0aCB8fCB0aGlzLm9BdXRoU2VydmljZS5nZXRJZGVudGl0eUNsYWltcygpWydhdWQnXSAhPT0gdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5vQXV0aFNldHRpbmdzLmNsaWVudElkKSB7XHJcbiAgICAgIHRoaXMud2luZG93LnNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ2FjY2Vzc190b2tlbicpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKiBHZXR0aW5nIHRoZSBzdWJkb21haW4gZnJvbSB1cmwgKi9cclxuICBwcml2YXRlIGdldFN1YmRvbWFpbigpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZG9tYWluID0gdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XHJcbiAgICBpZiAoZG9tYWluLmluZGV4T2YoJy4nKSA8IDAgfHxcclxuICAgICAgZG9tYWluLnNwbGl0KCcuJylbMF0gPT09IHRoaXMuZXhhbXBsZVN1YmRvbWFpbiB8fCBkb21haW4uc3BsaXQoJy4nKVswXSA9PT0gdGhpcy5sdmhTdWJzdHJpbmcgfHwgZG9tYWluLnNwbGl0KCcuJylbMF0gPT09IHRoaXMud3d3U3Vic3RyaW5nKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBkb21haW4uc3BsaXQoJy4nKVswXTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
302
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbGl6ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL3NyYy9saWIvY29yZS9pbml0aWFsaXplci9pbml0aWFsaXplci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc3RCxPQUFPLEVBQUUsVUFBVSxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc5RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsa0JBQWtCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7O0FBUTVIOztHQUVHO0FBTUgsTUFBTSxPQUFPLFdBQVc7SUFpQnRCLDhCQUE4QjtJQUM5QixJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztJQUNwQyxDQUFDO0lBS0Q7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0gsWUFDbUIsSUFBZ0IsRUFDaEIsZ0JBQWtDLEVBQ2xDLFlBQTBCLEVBQzFCLGFBQWdDLEVBQ2hDLFlBQTBCLEVBQzFCLE1BQWMsRUFDZCxRQUFrQixFQUNsQixzQkFBOEMsRUFDbEMsdUJBQWdELEVBQ3hDLE9BQVk7UUFUaEMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQUNoQyxp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QyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDaEksT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzhHQTNTVSxXQUFXLGdUQWdEQSxNQUFNO2tIQWhEakIsV0FBVyxjQUhSLE1BQU07OzJGQUdULFdBQVc7a0JBTHZCLFVBQVU7bUJBQ1Q7b0JBQ0UsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFpREUsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBBdXRoQ29uZmlnLCBPQXV0aFNlcnZpY2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcclxuaW1wb3J0IHsgSndrc1ZhbGlkYXRpb25IYW5kbGVyIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYy1qd2tzJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGxhc3RWYWx1ZUZyb20sIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uL3RoZW1pbmcvc2VydmljZXMvdGhlbWUuc2VydmljZSc7XHJcbmltcG9ydCB7IGZlZGVyYXRlZE1vZHVsZUNvbmZpZ1N0b3JhZ2VLZXksIGxhbmd1YWdlU3RvcmFnZUtleSwgcHJlU2lnbkluUm91dGVTdG9yYWdlS2V5LCBXSU5ET1cgfSBmcm9tICcuLi9tb2RlbHMvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgT2lkY0F1dGhTZXR0aW5ncyB9IGZyb20gJy4uL21vZGVscy9vaWRjLWF1dGgtc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBCYXNlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Jhc2UtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDdXN0b21BdXRoQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2N1c3RvbS1hdXRoLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGZWRlcmF0ZWRNb2R1bGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmVkZXJhdGVkLW1vZHVsZS5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBUaGUgc3RhcnR1cCBzZXJ2aWNlIGlzIHVzZWQgdG8gY2FsbCBtZXRob2RzIHRoYXQgc2hvdWxkIGJlIHJ1biB3aGVuIGluaXRpYWxseSBsb2FkaW5nIHRoZSBhcHBsaWNhdGlvblxyXG4gKi9cclxuQEluamVjdGFibGUoXHJcbiAge1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbiAgfVxyXG4pXHJcbmV4cG9ydCBjbGFzcyBJbml0aWFsaXplciB7XHJcblxyXG4gIC8qKiBUaGUgY29uZmlndXJhdGlvbiBiZWhhdmlvciBzdWJqZWN0ICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBpc0luaXRpYWxpemVkQnM6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICAvKiogVGhlIGJyb3dzZXIgd2luZG93ICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSB3aW5kb3c6IFdpbmRvdztcclxuXHJcbiAgLyoqIFRoZSBleGFtcGxlIHRoZSBzdWJkb21haW4gc3Vic3RyaW5nICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBleGFtcGxlU3ViZG9tYWluOiBzdHJpbmcgPSAnZXhhbXBsZSc7XHJcblxyXG4gIC8qKiBUaGUgd3d3IHN1YnN0cmluZyBmb3Igc3ViZG9tYWluIHJvdXRlIGZpbmRpbmcgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IHd3d1N1YnN0cmluZzogc3RyaW5nID0gJ3d3dyc7XHJcblxyXG4gIC8qKiBUaGUgbHZoIHN1YnN0cmluZyBmb3Igc3ViZG9tYWluIHJvdXRlIGZpbmRpbmcgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IGx2aFN1YnN0cmluZzogc3RyaW5nID0gJ2x2aCdcclxuXHJcbiAgLyoqIEdldHMgdGhlIGNvbmZpZ3VyYXRpb25zICovXHJcbiAgcHVibGljIGdldCBpc0luaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNJbml0aWFsaXplZEJzLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLyoqIFRoZSBjb25maWd1cmF0aW9uIG9ic2VydmFibGUgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgaXNJbml0aWFsaXplZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdHMgdGhlIHN0YXJ0dXAgc2VydmljZS4gSW5jbHVkZSBhbnkgc2VydmljZXMgdGhhdCBzaG91bGQgYmUgdXNlZCBkdXJpbmcgc3RhcnR1cFxyXG4gICAqIEBwYXJhbSBodHRwIFRoZSBodHRwIGNsaWVudFxyXG4gICAqIEBwYXJhbSB0cmFuc2xhdGVTZXJ2aWNlIFRoZSB0cmFuc2xhdGUgc2VydmljZVxyXG4gICAqIEBwYXJhbSB0aGVtZVNlcnZpY2UgVGhlIHRoZW1lIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gY29uZmlnU2VydmljZSBUaGUgY29uZmlnIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gb0F1dGhTZXJ2aWNlIFRoZSBvYXV0aCBzZXJ2aWNlXHJcbiAgICogQHBhcmFtIHJvdXRlciBUaGUgcm91dGVyXHJcbiAgICogQHBhcmFtIGxvY2F0aW9uIFRoZSBsb2NhdGlvblxyXG4gICAqIEBwYXJhbSBmZWRlcmF0ZWRNb2R1bGVTZXJ2aWNlIFRoZSBmZWRlcmF0ZWQgbW9kdWxlIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gY3VzdG9tQXV0aENvbmZpZ1NlcnZpY2UgVGhlIGN1c3RvbSBhdXRoIGNvbmZpZyBzZXJ2aWNlXHJcbiAgICogQHBhcmFtIF93aW5kb3cgVGhlIHdpbmRvdyBpbmplY3Rpb25cclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGhlbWVTZXJ2aWNlOiBUaGVtZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IEJhc2VDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBvQXV0aFNlcnZpY2U6IE9BdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uOiBMb2NhdGlvbixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmVkZXJhdGVkTW9kdWxlU2VydmljZTogRmVkZXJhdGVkTW9kdWxlU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgY3VzdG9tQXV0aENvbmZpZ1NlcnZpY2U6IEN1c3RvbUF1dGhDb25maWdTZXJ2aWNlLFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChXSU5ET1cpIHJlYWRvbmx5IF93aW5kb3c6IGFueVxyXG4gICkge1xyXG4gICAgdGhpcy5pc0luaXRpYWxpemVkJCA9IHRoaXMuaXNJbml0aWFsaXplZEJzLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgdGhpcy53aW5kb3cgPSBfd2luZG93IHx8IHdpbmRvdztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWRzIGFsbCBkYXRhIHRoYXQgaXMgbmVlZGVkIHVwb24gaW5pdGlhbCBsb2FkaW5nIG9mIHRoZSB3ZWJzaXRlXHJcbiAgICovXHJcbiAgcHVibGljIGFzeW5jIGluaXRpYWxpemUoKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIC8vIHJlYWRzIHRoZSBsYW5ndWFnZSBmcm9tIGxvY2FsIHN0b3JhZ2Ugc2V0IGluIHRoZSBwYXJlbnQgYXBwXHJcbiAgICAvLyBsYW5ndWFnZSBsb2FkaW5nXHJcblxyXG4gICAgLy8gU2V0IGxhbmd1YWdlcyBmb3IgdHJhbnNsYXRpb24gc2VydmljZVxyXG4gICAgY29uc3QgbGFuZyA9IHRoaXMud2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKGxhbmd1YWdlU3RvcmFnZUtleSkgfHwgdGhpcy53aW5kb3cuc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShsYW5ndWFnZVN0b3JhZ2VLZXkpIHx8ICdlbic7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2V0RGVmYXVsdExhbmcobGFuZyk7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudXNlKGxhbmcpO1xyXG5cclxuICAgIC8vIEFkYXB0ZWQgZnJvbSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDE2MzY4ODBcclxuICAgIC8vIEFkYXB0ZWQgZnJvbSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDE3MzYyOTNcclxuXHJcbiAgICAvLyBBIGNhbGxiYWNrIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgcHJvbWlzZS4gVGhpcyBjYWxsYmFjayBpcyBwYXNzZWQgdHdvIGFyZ3VtZW50czpcclxuICAgIC8vIGEgcmVzb2x2ZSBjYWxsYmFjayB1c2VkIHJlc29sdmUgdGhlIHByb21pc2Ugd2l0aCBhIHZhbHVlIG9yIHRoZSByZXN1bHQgb2YgYW5vdGhlciBwcm9taXNlLFxyXG4gICAgLy8gYW5kIGEgcmVqZWN0IGNhbGxiYWNrIHVzZWQgdG8gcmVqZWN0IHRoZSBwcm9taXNlIHdpdGggYSBwcm92aWRlZCByZWFzb24gb3IgZXJyb3IuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAvLyBHbyB0aHJvdWdoIGFsbCBzZXJ2aWNlcyBhbmQgY29tcGxldGUgYW55IEFQSSBjYWxscyBuZWNlc3NhcnkuXHJcbiAgICAgIC8vIEF0IHRoZSBlbmQsIGlmIGFsbCB3b3JrcyBhbmQgbG9hZHMgYXMgZXhwZWN0ZWQsIHJlc29sdmUgdGhlIHByb21pc2UgYW5kIHNldCBzdGFydHVwIHN1Y2Nlc3MgdG8gdHJ1ZS5cclxuICAgICAgLy8gSWYgYW4gaXNzdWUgaXMgZW5jb3VudGVyZWQsIHlvdSBjYW4gY2FsbCByZWplY3QoKSB0byBoaXQgdGhlIGNhdGNoKCkgY29kZSBiZWxvdy5cclxuXHJcbiAgICAgIC8vIEZpcnN0LCBsb2FkIHRoZSBjb25maWd1cmF0aW9uc1xyXG4gICAgICBjb25zdCBhc3NldFBhcnRpYWwgPSAhdGhpcy5mZWRlcmF0ZWRNb2R1bGVTZXJ2aWNlLmlzRmVkZXJhdGVkTW9kdWxlID8gJy4vYXNzZXRzJyA6IGAuL2Fzc2V0cy9mZWRlcmF0aW9uLyR7dGhpcy5mZWRlcmF0ZWRNb2R1bGVTZXJ2aWNlLmZlZGVyYXRlZE1vZHVsZUlkfS9hc3NldHNgO1xyXG4gICAgICBsZXQgW2Jhc2VDb25maWcsIG92ZXJyaWRlQ29uZmlnLCBiYXNlTGFuZywgb3ZlcnJpZGVMYW5nLCB0aGVtZV0gPSBbSlNPTiwgSlNPTiwgSlNPTiwgSlNPTiwgSlNPTl07XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgW2Jhc2VDb25maWcsIG92ZXJyaWRlQ29uZmlnLCBiYXNlTGFuZywgb3ZlcnJpZGVMYW5nLCB0aGVtZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbXHJcbiAgICAgICAgICB0aGlzLmh0dHAuZ2V0PEpTT04+KGAke2Fzc2V0UGFydGlhbH0vYmFzZWxpbmUvYXBwc2V0dGluZ3MuanNvbmApLnRvUHJvbWlzZSgpLFxyXG4gICAgICAgICAgdGhpcy5odHRwLmdldDxKU09OPihgJHthc3NldFBhcnRpYWx9L2NvbmZpZ3VyYXRpb25zL2FwcHNldHRpbmdzLmpzb25gKS50b1Byb21pc2UoKSxcclxuICAgICAgICAgIHRoaXMuaHR0cC5nZXQ8SlNPTj4oYCR7YXNzZXRQYXJ0aWFsfS9pMThuLyR7dGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nfS5qc29uYCkudG9Qcm9taXNlKCksXHJcbiAgICAgICAgICB0aGlzLmh0dHAuZ2V0PEpTT04+KGAke2Fzc2V0UGFydGlhbH0vY29uZmlndXJhdGlvbnMvJHt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmd9Lmpzb25gKS50b1Byb21pc2UoKSxcclxuICAgICAgICAgIHRoaXMuaHR0cC5nZXQ8SlNPTj4oYCR7YXNzZXRQYXJ0aWFsfS9jb25maWd1cmF0aW9ucy90aGVtZS5qc29uYCkudG9Qcm9taXNlKClcclxuICAgICAgICBdKTtcclxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnID0gXy5tZXJnZVdpdGgoYmFzZUNvbmZpZywgb3ZlcnJpZGVDb25maWcsIHRoaXMubWVyZ2VDdXN0b21pemVyKTtcclxuICAgICAgICBjb25zdCBtZXJnZWRMYW5ndWFnZSA9IF8ubWVyZ2VXaXRoKGJhc2VMYW5nLCBvdmVycmlkZUxhbmcsIHRoaXMubWVyZ2VDdXN0b21pemVyKTtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2V0VHJhbnNsYXRpb24odGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nLCBtZXJnZWRMYW5ndWFnZSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyZVBhcnRpYWwgPSAodCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgY29uZmlnU25hcFNob3QgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnO1xyXG4gICAgICAgICAgY29uZmlnU25hcFNob3QudGhlbWUgPSB0IGFzIGFueTtcclxuICAgICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcgPSBjb25maWdTbmFwU2hvdDtcclxuICAgICAgICAgIHRoaXMudGhlbWVTZXJ2aWNlLmluaXRQYWxldHRlKHQgYXMgYW55KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc3ViZG9tYWluID0gdGhpcy5nZXRTdWJkb21haW4oKTtcclxuICAgICAgICBpZiAoc3ViZG9tYWluICYmIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcuc3ViZG9tYWluKSB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBsZXQgW3N1YmRvbWFpbkNvbmZpZ3MsIHN1YmRvbWFpbkxhbmd1YWdlLCBzdWJkb21haW5UaGVtZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbXHJcbiAgICAgICAgICAgICAgbGFzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PEpTT04+KGAke2Fzc2V0UGFydGlhbH0vY29uZmlndXJhdGlvbnMvJHtzdWJkb21haW59LiR7dGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nfS5qc29uYCkpLFxyXG4gICAgICAgICAgICAgIGxhc3RWYWx1ZUZyb20odGhpcy5odHRwLmdldDxKU09OPihgJHthc3NldFBhcnRpYWx9L2NvbmZpZ3VyYXRpb25zLyR7c3ViZG9tYWlufS5hcHBzZXR0aW5ncy5qc29uYCkpLFxyXG4gICAgICAgICAgICAgIGxhc3RWYWx1ZUZyb20odGhpcy5odHRwLmdldDxKU09OPihgJHthc3NldFBhcnRpYWx9L2NvbmZpZ3VyYXRpb25zLyR7c3ViZG9tYWlufS50aGVtZS5qc29uYCkpXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnID0gXy5tZXJnZVdpdGgodGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZywgc3ViZG9tYWluQ29uZmlncywgdGhpcy5tZXJnZUN1c3RvbWl6ZXIpO1xyXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2V0VHJhbnNsYXRpb24odGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nLCBfLm1lcmdlV2l0aChtZXJnZWRMYW5ndWFnZSwgc3ViZG9tYWluTGFuZ3VhZ2UsIHRoaXMubWVyZ2VDdXN0b21pemVyKSk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZFRoZW1lID0gXy5tZXJnZVdpdGgodGhlbWUsIHN1YmRvbWFpblRoZW1lLCB0aGlzLm1lcmdlQ3VzdG9taXplcik7XHJcbiAgICAgICAgICAgIGNvbmZpZ3VyZVBhcnRpYWwobWVyZ2VkVGhlbWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnU2VydmljZS5jb25maWcuc3ViZG9tYWluICYmIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcuc3ViZG9tYWluLnN1YmRvbWFpbnMubGVuZ3RoICYmICF0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLnN1YmRvbWFpbi5zdWJkb21haW5zLmluY2x1ZGVzKHN1YmRvbWFpbikpIHtcclxuICAgICAgICAgICAgICB0aGlzLnJvdXRlci5kaXNwb3NlKCk7XHJcbiAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBgSW52YWxpZCBzdWJkb21haW46ICR7c3ViZG9tYWlufWA7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLnN1YmRvbWFpbj8ucmVxdWlyZUNvbmZpZ3VyZWRTdWJkb21haW4gJiYgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5zdWJkb21haW4/LnN1YmRvbWFpbnMuaW5jbHVkZXMoc3ViZG9tYWluKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLmRpc3Bvc2UoKTtcclxuICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IGBDb25maWd1cmVkIHN1YmRvbWFpbjogJHtzdWJkb21haW59IGRvZXMgbm90IGhhdmUgYW55IHN1YmRvbWFpbiBzcGVjaWZpYyBjb25maWd1cmF0aW9uc2A7XHJcbiAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcclxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbmZpZ3VyZVBhcnRpYWwodGhlbWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbmZpZ3VyZVBhcnRpYWwodGhlbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRyeVNldFVwRmVkZXJhdGVkTW9kdWxlcygpO1xyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIC8vIENhdGNoIGFueSBlcnJvcnMgZHVyaW5nIHRoZSBnZXQgY29uZmlndXJhdGlvbnMgQVBJIGNhbGxcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBMb2FkaW5nIENvbmZpZ3VyYXRpb25zIG9yIExhbmd1YWdlcycpO1xyXG4gICAgICAgIC8vIFJlamVjdCB0aGUgcHJvbWlzZVxyXG4gICAgICAgIHJlamVjdCgnZXJyb3InKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IuZXJyb3IgfHwgJ1NlcnZlciBlcnJvcicpO1xyXG4gICAgICB9XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tQXV0aENvbmZpZ1NlcnZpY2UpIHtcclxuICAgICAgICAgIGF3YWl0IHRoaXMuY3VzdG9tQXV0aENvbmZpZ1NlcnZpY2UuY29uZmlndXJlQXV0aFNldHRpbmdzKCkudGhlbihhdXRoQ29uZmlnID0+IHtcclxuICAgICAgICAgICAgaWYgKGF1dGhDb25maWcpIHtcclxuICAgICAgICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLm9BdXRoU2V0dGluZ3M7XHJcblxyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvZ2luKGNvbmZpZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IG9BdXRoID0gYXdhaXQgdGhpcy5zZXRVcE9BdXRoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIHJlamVjdChlcnJvcik7XHJcblxyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gTmF2aWdhdGUgdG8gdGhlIHJlcXVlc3RlZCByb3V0ZVxyXG4gICAgICBpZiAodGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5vQXV0aFNldHRpbmdzPy5wcmVzZXJ2ZVJvdXRlKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLm9BdXRoU2VydmljZS5zdGF0ZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuaXNJbml0aWFsaXplZEJzLm5leHQodHJ1ZSk7XHJcbiAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgICAgLy8gQ2F0Y2ggdGhlIGVycm9yXHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZXJlIHdhcyBhbiBlcnJvciBsb2FkaW5nIHRoZSBzdGFydHVwIGNvbmZpZ3VyYXRpb25zLicpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb25maWd1cmUgaW1wbGljaXQgZmxvd1xyXG4gICAqL1xyXG4gIHByaXZhdGUgYXN5bmMgc2V0VXBPQXV0aCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnPy5vQXV0aFNldHRpbmdzPy5pc3N1ZXIpIHtcclxuICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5vQXV0aFNldHRpbmdzO1xyXG4gICAgICBjb25zdCBhdXRoQ29uZmlnID0gbmV3IEF1dGhDb25maWcoe1xyXG4gICAgICAgIGNsaWVudElkOiBjb25maWcuY2xpZW50SWQsXHJcbiAgICAgICAgcmVkaXJlY3RVcmk6IGNvbmZpZy5yZWRpcmVjdFVyaSxcclxuICAgICAgICBpc3N1ZXI6IGNvbmZpZy5pc3N1ZXIsXHJcbiAgICAgICAgc2NvcGU6IGNvbmZpZy5zY29wZSxcclxuICAgICAgICBza2lwSXNzdWVyQ2hlY2s6IGNvbmZpZy5za2lwSXNzdWVyQ2hlY2sgIT0gdW5kZWZpbmVkID8gY29uZmlnLnNraXBJc3N1ZXJDaGVjayA6IHRydWUsXHJcbiAgICAgICAgdGltZW91dEZhY3RvcjogY29uZmlnLnRpbWVvdXRGYWN0b3IgfHwgMC43NSxcclxuICAgICAgICBwb3N0TG9nb3V0UmVkaXJlY3RVcmk6IGNvbmZpZy5wb3N0TG9nb3V0UmVkaXJlY3RVcmksXHJcbiAgICAgICAgbG9naW5Vcmw6IGNvbmZpZy5sb2dpblVybCxcclxuICAgICAgICBzdHJpY3REaXNjb3ZlcnlEb2N1bWVudFZhbGlkYXRpb246IGZhbHNlLFxyXG4gICAgICAgIHJlc3BvbnNlVHlwZTogY29uZmlnLnJlc3BvbnNlVHlwZSB8fCAnY29kZSdcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMub0F1dGhTZXJ2aWNlLmNvbmZpZ3VyZShhdXRoQ29uZmlnKTtcclxuICAgICAgdGhpcy5vQXV0aFNlcnZpY2Uuc2tpcElzc3VlckNoZWNrID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vQXV0aFNlcnZpY2UucmVzcG9uc2VUeXBlID0gY29uZmlnLnJlc3BvbnNlVHlwZSB8fCAnY29kZSc7XHJcbiAgICAgIHRoaXMub0F1dGhTZXJ2aWNlLnN0cmljdERpc2NvdmVyeURvY3VtZW50VmFsaWRhdGlvbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm9BdXRoU2VydmljZS50b2tlblZhbGlkYXRpb25IYW5kbGVyID0gbmV3IEp3a3NWYWxpZGF0aW9uSGFuZGxlcigpO1xyXG4gICAgICB0aGlzLm9BdXRoU2VydmljZS50aW1lb3V0RmFjdG9yID0gMC43NTtcclxuICAgICAgdGhpcy5vQXV0aFNlcnZpY2Uuc2V0dXBBdXRvbWF0aWNTaWxlbnRSZWZyZXNoKHt9LCAnYWNjZXNzX3Rva2VuJyk7XHJcblxyXG4gICAgICAvLyBzZXQgaW5pdGlhbGl6ZWQgb24gc3RhcnQgdXAgdG8gdHJ1ZVxyXG4gICAgICBjb25maWcuYXV0aFNldE9uU3RhcnR1cCA9IHRydWU7XHJcbiAgICAgIGNvbnN0IHBhcmVudENvbmZpZyA9IHRoaXMuY29uZmlnU2VydmljZS5jb25maWc7XHJcbiAgICAgIHBhcmVudENvbmZpZy5vQXV0aFNldHRpbmdzID0gY29uZmlnO1xyXG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnID0gcGFyZW50Q29uZmlnO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMubG9naW4oY29uZmlnKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIExvZ2luXHJcbiAgICogQHBhcmFtIGNvbmZpZyBUaGUgT2lkYyBBdXRoIFNldHRpbmdzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhc3luYyBsb2dpbihjb25maWc6IE9pZGNBdXRoU2V0dGluZ3MpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGNvbnN0IGlzVmFsaWQgPSB0aGlzLnZhbGlkYXRlRXhpc3RpbmdUb2tlbkFnYWluc3RDb25maWdzKCk7XHJcbiAgICBjb25zdCBwcmVzZXJ2ZWRSb3V0ZSA9IHRoaXMud2luZG93LnNlc3Npb25TdG9yYWdlLmdldEl0ZW0ocHJlU2lnbkluUm91dGVTdG9yYWdlS2V5KTtcclxuICAgIGlmICghcHJlc2VydmVkUm91dGUpIHtcclxuICAgICAgdGhpcy53aW5kb3cuc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShwcmVTaWduSW5Sb3V0ZVN0b3JhZ2VLZXksIHRoaXMubG9jYXRpb24ucGF0aCgpKTtcclxuICAgIH1cclxuICAgIGlmIChjb25maWcucmVxdWlyZUxvZ2luT25TdGFydHVwIHx8ICFpc1ZhbGlkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm9BdXRoU2VydmljZS5sb2FkRGlzY292ZXJ5RG9jdW1lbnRBbmRMb2dpbih7c3RhdGU6IHRoaXMubG9jYXRpb24ucGF0aCgpfSlcclxuICAgICAgICAvLyBoYW5kbGVzIHRoZSBjYXNlIGZvciBleHBpcmVkIGFjY2VzcyB0b2tlbiBvciBpbnZhbGlkIG5vbmNlIG9yIHBlb3BsZSBib29rbWFya2luZyB0aGUgaWRzIGxvZ2luIHBhZ2VcclxuICAgICAgICAuY2F0Y2goYXN5bmMgKHJlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vQXV0aFNlcnZpY2UuaW5pdExvZ2luRmxvdyh0aGlzLmxvY2F0aW9uLnBhdGgoKSk7XHJcblxyXG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5vQXV0aFNlcnZpY2UubG9hZERpc2NvdmVyeURvY3VtZW50QW5kVHJ5TG9naW4oKVxyXG4gICAgICAgIC8vIGhhbmRsZXMgdGhlIGNhc2UgZm9yIGV4cGlyZWQgYWNjZXNzIHRva2VuIG9yIGludmFsaWQgbm9uY2Ugb3IgcGVvcGxlIGJvb2ttYXJraW5nIHRoZSBpZHMgbG9naW4gcGFnZVxyXG4gICAgICAgIC5jYXRjaChhc3luYyAocmVzKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9BdXRoU2VydmljZS5pbml0TG9naW5GbG93KCk7XHJcblxyXG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1lcmdlcyB0aGUgdHdvIGNvbmZpZyBvYmplY3RzIGlnbm9yaW5nIHRoZSBhcnJheSB0eXBlXHJcbiAgICogQHBhcmFtIG9ialZhbHVlIFRoZSBkZWZhdWx0IGNvbmZpZyB2YWx1ZVxyXG4gICAqIEBwYXJhbSBzcmNWYWx1ZSBUaGUgdGFyZ2V0IHN3aXRjaGJvYXJkIGNvbmZpZyB2YWx1ZVxyXG4gICAqIEByZXR1cm5zIFRoZSBtZXJnZSBvZiB0aGUgdHdvIGNvbmZpZ3MgcHJvdmlkZWRcclxuICAgKi9cclxuICBwcml2YXRlIG1lcmdlQ3VzdG9taXplcihvYmpWYWx1ZTogYW55LCBzcmNWYWx1ZTogYW55KTogYW55IHtcclxuICAgIGlmIChfLmlzQXJyYXkob2JqVmFsdWUpICYmIHNyY1ZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBzcmNWYWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRlcyB0aGUgZXhpc3RpbmcgdG9rZW4gYWdhaW5zdCB0aGUgY29uZmlndXJhdGlvbnNcclxuICAgKiBAcmV0dXJucyB0cnVlIHdoZW4gdG9rZW4gaXMgdmFsaWRcclxuICAgKi9cclxuICBwcml2YXRlIHZhbGlkYXRlRXhpc3RpbmdUb2tlbkFnYWluc3RDb25maWdzKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnU2VydmljZS5jb25maWcub0F1dGhTZXR0aW5ncy5kaXNhYmxlU3RhcnR1cFRva2VuVmFsaWRhdGlvbikge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy53aW5kb3cuc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnYWNjZXNzX3Rva2VuJykpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBjb25zdCBncmFudGVkU2NvcGVzOiBBcnJheTxzdHJpbmc+ID0gIHRoaXMub0F1dGhTZXJ2aWNlLmdldEdyYW50ZWRTY29wZXMoKSBhcyBBcnJheTxzdHJpbmc+O1xyXG4gICAgY29uc3QgY29uZmlndXJlZFNjb3BlcyA9IHRoaXMuY29uZmlnU2VydmljZS5jb25maWcub0F1dGhTZXR0aW5ncy5zY29wZS5zcGxpdCgnICcpO1xyXG4gICAgY29uc3QgZGlmZnMgPSBncmFudGVkU2NvcGVzLmZpbHRlcih4ID0+ICFjb25maWd1cmVkU2NvcGVzLmluY2x1ZGVzKHgpKVxyXG4gICAgICAuY29uY2F0KGNvbmZpZ3VyZWRTY29wZXMuZmlsdGVyKHggPT4gIWdyYW50ZWRTY29wZXMuaW5jbHVkZXMoeCkpKTtcclxuICAgIGlmIChkaWZmcy5sZW5ndGggfHwgdGhpcy5vQXV0aFNlcnZpY2UuZ2V0SWRlbnRpdHlDbGFpbXMoKVsnYXVkJ10gIT09IHRoaXMuY29uZmlnU2VydmljZS5jb25maWcub0F1dGhTZXR0aW5ncy5jbGllbnRJZCkge1xyXG4gICAgICB0aGlzLndpbmRvdy5zZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdhY2Nlc3NfdG9rZW4nKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKiogR2V0dGluZyB0aGUgc3ViZG9tYWluIGZyb20gdXJsICovXHJcbiAgcHJpdmF0ZSBnZXRTdWJkb21haW4oKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGRvbWFpbiA9IHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO1xyXG4gICAgaWYgKGRvbWFpbi5pbmRleE9mKCcuJykgPCAwIHx8XHJcbiAgICAgIGRvbWFpbi5zcGxpdCgnLicpWzBdID09PSB0aGlzLmV4YW1wbGVTdWJkb21haW4gfHwgZG9tYWluLnNwbGl0KCcuJylbMF0gPT09IHRoaXMubHZoU3Vic3RyaW5nIHx8IGRvbWFpbi5zcGxpdCgnLicpWzBdID09PSB0aGlzLnd3d1N1YnN0cmluZykge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZG9tYWluLnNwbGl0KCcuJylbMF07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmllcyB0byBzZXQgdXAgdGhlIGZlZGVyYXRlZCBtb2R1bGVzIHdoZW4gY29uZmlndXJlZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdHJ5U2V0VXBGZWRlcmF0ZWRNb2R1bGVzKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuZmVkZXJhdGVkTW9kdWxlU2VydmljZS5pc0ZlZGVyYXRlZE1vZHVsZSB8fCAhdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5mZWRlcmF0ZWRNb2R1bGVzIHx8ICFPYmplY3Qua2V5cyh0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLmZlZGVyYXRlZE1vZHVsZXMpLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLndpbmRvdy5zZXNzaW9uU3RvcmFnZS5zZXRJdGVtKGZlZGVyYXRlZE1vZHVsZUNvbmZpZ1N0b3JhZ2VLZXksIEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnU2VydmljZS5jb25maWcuZmVkZXJhdGVkTW9kdWxlcykpO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcm1hdHVyZS9zcmMvbGliL2NvcmUvbW9kZWxzL2Jhc2UtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaGVtZVBhbGV0dGVNb2RlbCB9IGZyb20gJy4uL2NsaWVudC1nZW5lcmF0ZWQvbW9kZWwvdGhlbWVQYWxldHRlTW9kZWwnO1xyXG5pbXBvcnQgeyBGZWRlcmF0ZWRNb2R1bGVDb25maWcgfSBmcm9tICcuL2ZlZGVyYXRlZC1tb2R1bGUtY29uZmlnJztcclxuaW1wb3J0IHsgSGVhZGVyQ29uZmlnIH0gZnJvbSAnLi9oZWFkZXItY29uZmlnJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkNvbmZpZyB9IGZyb20gJy4vbmF2aWdhdGlvbi1jb25maWcnO1xyXG5pbXBvcnQgeyBPaWRjQXV0aFNldHRpbmdzIH0gZnJvbSAnLi9vaWRjLWF1dGgtc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBTdWJkb21haW5Db25maWcgfSBmcm9tICcuL3N1YmRvbWFpbi1jb25maWcnO1xyXG5cclxuLyoqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUNvbmZpZyB7XHJcbiAgICAvKiogVGhlIG9pZGMgc2V0dGluZ3MgKi9cclxuICAgIG9BdXRoU2V0dGluZ3M6IE9pZGNBdXRoU2V0dGluZ3M7XHJcblxyXG4gICAgLyoqIFRoZSBoZWFkZXIgY29uZmlndXJhdGlvbnMgKi9cclxuICAgIGhlYWRlcjogSGVhZGVyQ29uZmlnO1xyXG5cclxuICAgIC8qKiBUaGUgdGhlbWUgcGFsZXR0ZSAqL1xyXG4gICAgdGhlbWU6IFRoZW1lUGFsZXR0ZU1vZGVsO1xyXG5cclxuICAgIC8qKiBUaGUgbmF2aWdhdGlvbiBjb25maWcgKi9cclxuICAgIG5hdmlnYXRpb246IE5hdmlnYXRpb25Db25maWc7XHJcblxyXG4gICAgLyoqIFRoZSBzdWIgZG9tYWluIGNvbmZpZ3VyYXRpb25zICovXHJcbiAgICBzdWJkb21haW4/OiBTdWJkb21haW5Db25maWc7XHJcblxyXG4gICAgLyoqIFRoZSBmZWRlcmF0ZWQgbW9kdWxlIGNvbmZpZ3VyYXRpb24gZGljdGlvbmFyeSAqL1xyXG4gICAgZmVkZXJhdGVkTW9kdWxlcz86IHtba2V5OiBzdHJpbmddIDogRmVkZXJhdGVkTW9kdWxlQ29uZmlnfVxyXG59XHJcbiJdfQ==
|
|
@@ -10,4 +10,8 @@ export const USER_ENTITY_SERVICE_CONFIG = new InjectionToken('UserEntityServiceC
|
|
|
10
10
|
export const preSignInRouteStorageKey = 'preSignInRoute';
|
|
11
11
|
/** The language storage key */
|
|
12
12
|
export const languageStorageKey = 'language';
|
|
13
|
-
|
|
13
|
+
/** The federated module configuration storage key */
|
|
14
|
+
export const federatedModuleConfigStorageKey = 'sofAr-federatedModule-config';
|
|
15
|
+
/** The federated module id of the application, this should be set when the application is allowed to run as a federated module */
|
|
16
|
+
export const FEDERATED_MODULE_ID = new InjectionToken('FederatedModuleId');
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9jb3JlL21vZGVscy9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUsvQyxtQkFBbUI7QUFDbkIsMEJBQTBCO0FBQzFCLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBa0MsSUFBSSxjQUFjLENBQWdCLGVBQWUsQ0FBQyxDQUFDO0FBRWhILDJCQUEyQjtBQUMzQixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQTJCLElBQUksY0FBYyxDQUFTLFFBQVEsQ0FBQyxDQUFDO0FBRW5GLHNDQUFzQztBQUN0QyxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBNEMsSUFBSSxjQUFjLENBQTBCLHlCQUF5QixDQUFDLENBQUM7QUFFMUosd0NBQXdDO0FBQ3hDLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFXLGdCQUFnQixDQUFDO0FBRWpFLCtCQUErQjtBQUMvQixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBVyxVQUFVLENBQUM7QUFFckQscURBQXFEO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFXLDhCQUE4QixDQUFDO0FBRXRGLGtJQUFrSTtBQUNsSSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBMkIsSUFBSSxjQUFjLENBQVMsbUJBQW1CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBTZXNzaW9uQ29uZmlnIH0gZnJvbSAnLi9zZXNzaW9uLWNvbmZpZyc7XHJcbmltcG9ydCB7IFVzZXJFbnRpdHlTZXJ2aWNlQ29uZmlnIH0gZnJvbSAnLi91c2VyLWVudGl0eS1zZXJ2aWNlLWNvbmZpZyc7XHJcblxyXG4vLyBJbmplY3Rpb24gdG9rZW5zXHJcbi8qKiBUaGUgc2Vzc2lvbiBjb25maWdzICovXHJcbmV4cG9ydCBjb25zdCBTRVNTSU9OX0NPTkZJRzogSW5qZWN0aW9uVG9rZW48U2Vzc2lvbkNvbmZpZz4gPSBuZXcgSW5qZWN0aW9uVG9rZW48U2Vzc2lvbkNvbmZpZz4oJ1Nlc3Npb25Db25maWcnKTtcclxuXHJcbi8qKiBUaGUgd2luZG93IGludGVyZmFjZSAqL1xyXG5leHBvcnQgY29uc3QgV0lORE9XOiBJbmplY3Rpb25Ub2tlbjxXaW5kb3c+ID0gbmV3IEluamVjdGlvblRva2VuPFdpbmRvdz4oJ1dpbmRvdycpO1xyXG5cclxuLyoqIFRoZSB1c2VyIGVudGl0eSBzZXJ2aWNlIGNvbmZpZ3MgKi9cclxuZXhwb3J0IGNvbnN0IFVTRVJfRU5USVRZX1NFUlZJQ0VfQ09ORklHOiBJbmplY3Rpb25Ub2tlbjxVc2VyRW50aXR5U2VydmljZUNvbmZpZz4gPSBuZXcgSW5qZWN0aW9uVG9rZW48VXNlckVudGl0eVNlcnZpY2VDb25maWc+KCdVc2VyRW50aXR5U2VydmljZUNvbmZpZycpO1xyXG5cclxuLyoqIFRoZSBwcmUgc2lnbiBpbiByb3V0ZSBzdG9yYWdlIGtleSAqL1xyXG5leHBvcnQgY29uc3QgcHJlU2lnbkluUm91dGVTdG9yYWdlS2V5OiBzdHJpbmcgPSAncHJlU2lnbkluUm91dGUnO1xyXG5cclxuLyoqIFRoZSBsYW5ndWFnZSBzdG9yYWdlIGtleSAqL1xyXG5leHBvcnQgY29uc3QgbGFuZ3VhZ2VTdG9yYWdlS2V5OiBzdHJpbmcgPSAnbGFuZ3VhZ2UnO1xyXG5cclxuLyoqIFRoZSBmZWRlcmF0ZWQgbW9kdWxlIGNvbmZpZ3VyYXRpb24gc3RvcmFnZSBrZXkgKi9cclxuZXhwb3J0IGNvbnN0IGZlZGVyYXRlZE1vZHVsZUNvbmZpZ1N0b3JhZ2VLZXk6IHN0cmluZyA9ICdzb2ZBci1mZWRlcmF0ZWRNb2R1bGUtY29uZmlnJztcclxuXHJcbi8qKiBUaGUgZmVkZXJhdGVkIG1vZHVsZSBpZCBvZiB0aGUgYXBwbGljYXRpb24sIHRoaXMgc2hvdWxkIGJlIHNldCB3aGVuIHRoZSBhcHBsaWNhdGlvbiBpcyBhbGxvd2VkIHRvIHJ1biBhcyBhIGZlZGVyYXRlZCBtb2R1bGUgKi9cclxuZXhwb3J0IGNvbnN0IEZFREVSQVRFRF9NT0RVTEVfSUQ6IEluamVjdGlvblRva2VuPHN0cmluZz4gPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignRmVkZXJhdGVkTW9kdWxlSWQnKTtcclxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVkZXJhdGVkLW1vZHVsZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcm1hdHVyZS9zcmMvbGliL2NvcmUvbW9kZWxzL2ZlZGVyYXRlZC1tb2R1bGUtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEZlZGVyYXRlZE1vZHVsZUNvbmZpZyB7XHJcbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nO1xyXG59Il19
|