aril 1.1.97 → 1.2.1
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/boot/base/index.d.ts +1 -0
- package/boot/base/src/create-base-app-config.d.ts +12 -0
- package/boot/config/api/index.d.ts +1 -0
- package/boot/config/api/src/api.service.d.ts +2 -2
- package/boot/config/api/src/interfaces.d.ts +1 -19
- package/boot/config/plugins/src/interfaces.d.ts +0 -37
- package/esm2022/boot/base/aril-boot-base.mjs +5 -0
- package/esm2022/boot/base/index.mjs +2 -0
- package/esm2022/boot/base/src/create-base-app-config.mjs +30 -0
- package/esm2022/boot/config/api/index.mjs +1 -1
- package/esm2022/boot/config/api/src/api.service.mjs +5 -4
- package/esm2022/boot/config/api/src/interfaces.mjs +2 -21
- package/esm2022/boot/config/apps/src/apps.service.mjs +2 -2
- package/esm2022/boot/config/plugins/src/interfaces.mjs +1 -60
- package/esm2022/boot/config/plugins/src/plugins.service.mjs +8 -22
- package/esm2022/boot/host/src/bootstrap.mjs +8 -23
- package/esm2022/boot/mfe/src/app.component.mjs +6 -6
- package/esm2022/boot/mfe/src/bootstrap.mjs +13 -33
- package/esm2022/boot/pages/aril-boot-pages.mjs +5 -0
- package/esm2022/boot/pages/index.mjs +3 -0
- package/esm2022/{util/custom_pages → boot/pages}/src/forbidden.component.mjs +1 -1
- package/esm2022/{util/custom_pages → boot/pages}/src/notFound.component.mjs +1 -1
- package/esm2022/keycloak/src/auth.interceptor.mjs +14 -78
- package/esm2022/provider/src/prodiveHost.mjs +4 -8
- package/esm2022/provider/src/provideHostKeycloak.mjs +10 -2
- package/esm2022/theme/layout/app/site-map/site-map-sidebar.component.mjs +1 -1
- package/esm2022/ui/chip/src/chip.component.mjs +11 -6
- package/esm2022/ui/form/src/form.component.mjs +22 -4
- package/esm2022/ui-business/assetPicker/src/asset-picker.component.mjs +14 -2
- package/esm2022/util/pipes/src/translate-json/translate-json.pipe.mjs +3 -4
- package/fesm2022/{aril-app.component-FxPod9bE.mjs → aril-app.component-wxP3y8dg.mjs} +8 -11
- package/fesm2022/aril-app.component-wxP3y8dg.mjs.map +1 -0
- package/fesm2022/aril-boot-base.mjs +37 -0
- package/fesm2022/aril-boot-base.mjs.map +1 -0
- package/fesm2022/aril-boot-config-api.mjs +3 -22
- package/fesm2022/aril-boot-config-api.mjs.map +1 -1
- package/fesm2022/aril-boot-config-apps.mjs +1 -1
- package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
- package/fesm2022/aril-boot-config-plugins.mjs +7 -80
- package/fesm2022/aril-boot-config-plugins.mjs.map +1 -1
- package/fesm2022/aril-boot-host.mjs +7 -22
- package/fesm2022/aril-boot-host.mjs.map +1 -1
- package/fesm2022/{aril-boot-mfe-app.component-dZp2aSTk.mjs → aril-boot-mfe-app.component-7IjAmjz0.mjs} +8 -11
- package/fesm2022/aril-boot-mfe-app.component-7IjAmjz0.mjs.map +1 -0
- package/fesm2022/{aril-boot-mfe-aril-boot-mfe-mm6nhyRL.mjs → aril-boot-mfe-aril-boot-mfe-KXDpUyv7.mjs} +15 -71
- package/fesm2022/aril-boot-mfe-aril-boot-mfe-KXDpUyv7.mjs.map +1 -0
- package/fesm2022/aril-boot-mfe.mjs +2 -6
- package/fesm2022/aril-boot-mfe.mjs.map +1 -1
- package/fesm2022/{aril-util-custom_pages.mjs → aril-boot-pages.mjs} +1 -1
- package/fesm2022/aril-boot-pages.mjs.map +1 -0
- package/fesm2022/aril-keycloak.mjs +13 -77
- package/fesm2022/aril-keycloak.mjs.map +1 -1
- package/fesm2022/aril-provider.mjs +12 -8
- package/fesm2022/aril-provider.mjs.map +1 -1
- package/fesm2022/aril-theme-layout.mjs.map +1 -1
- package/fesm2022/aril-ui-business-assetPicker.mjs +13 -1
- package/fesm2022/aril-ui-business-assetPicker.mjs.map +1 -1
- package/fesm2022/aril-ui-chip.mjs +10 -5
- package/fesm2022/aril-ui-chip.mjs.map +1 -1
- package/fesm2022/aril-ui-form.mjs +20 -3
- package/fesm2022/aril-ui-form.mjs.map +1 -1
- package/fesm2022/aril-util-pipes.mjs +2 -3
- package/fesm2022/aril-util-pipes.mjs.map +1 -1
- package/fesm2022/aril.mjs +14 -81
- package/fesm2022/aril.mjs.map +1 -1
- package/package.json +113 -113
- package/provider/src/prodiveHost.d.ts +2 -2
- package/theme/layout/app/site-map/site-map-sidebar.component.ts +1 -1
- package/theme/styles/layout/_fonts.scss +1 -13
- package/ui/form/src/form.component.d.ts +4 -1
- package/boot/mfe/src/loadStyles.d.ts +0 -3
- package/esm2022/boot/mfe/src/loadStyles.mjs +0 -38
- package/esm2022/util/custom_pages/aril-util-custom_pages.mjs +0 -5
- package/esm2022/util/custom_pages/index.mjs +0 -3
- package/esm2022/util/loaders/aril-util-loaders.mjs +0 -5
- package/esm2022/util/loaders/index.mjs +0 -2
- package/esm2022/util/loaders/style/style.loader.service.mjs +0 -61
- package/fesm2022/aril-app.component-FxPod9bE.mjs.map +0 -1
- package/fesm2022/aril-boot-mfe-app.component-dZp2aSTk.mjs.map +0 -1
- package/fesm2022/aril-boot-mfe-aril-boot-mfe-mm6nhyRL.mjs.map +0 -1
- package/fesm2022/aril-util-custom_pages.mjs.map +0 -1
- package/fesm2022/aril-util-loaders.mjs +0 -68
- package/fesm2022/aril-util-loaders.mjs.map +0 -1
- package/theme/fonts/Inter/Inter_18pt-Black.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-BlackItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-Bold.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-BoldItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-ExtraBold.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-ExtraBoldItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-ExtraLight.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-ExtraLightItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-Italic.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-Light.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-LightItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-Medium.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-MediumItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-Regular.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-SemiBold.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-SemiBoldItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-Thin.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-ThinItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-Black.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-BlackItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-Bold.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-BoldItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-ExtraBold.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-ExtraBoldItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-ExtraLight.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-ExtraLightItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-Italic.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-Light.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-LightItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-Medium.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-MediumItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-Regular.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-SemiBold.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-SemiBoldItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-Thin.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-ThinItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-Black.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-BlackItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-Bold.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-BoldItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-ExtraBold.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-ExtraBoldItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-ExtraLight.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-ExtraLightItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-Italic.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-Light.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-LightItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-Medium.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-MediumItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-Regular.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-SemiBold.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-SemiBoldItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-Thin.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-ThinItalic.ttf +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-Black.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-Black.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-BlackItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-BlackItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-BoldItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-BoldItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-ExtraBold.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-ExtraBold.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-ExtraBoldItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-ExtraBoldItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-ExtraLight.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-ExtraLight.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-ExtraLightItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-ExtraLightItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-Italic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-Italic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-Light.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-Light.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-LightItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-LightItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-MediumItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-MediumItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-SemiBoldItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-SemiBoldItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-Thin.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-Thin.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-ThinItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-ThinItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-Black.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-Black.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-BlackItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-BlackItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-Bold.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-Bold.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-BoldItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-BoldItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-ExtraBold.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-ExtraBold.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-ExtraBoldItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-ExtraBoldItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-ExtraLight.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-ExtraLight.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-ExtraLightItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-ExtraLightItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-Italic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-Italic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-LightItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-LightItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-Medium.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-Medium.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-MediumItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-MediumItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-Regular.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-Regular.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-SemiBold.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-SemiBold.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-SemiBoldItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-SemiBoldItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-Thin.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-Thin.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-ThinItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-ThinItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Black.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Black.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-BlackItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-BlackItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Bold.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Bold.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-BoldItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-BoldItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-ExtraBoldItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-ExtraBoldItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-ExtraLightItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-ExtraLightItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Italic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Italic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Light.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Light.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-LightItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-LightItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Medium.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Medium.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-MediumItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-MediumItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Regular.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Regular.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-SemiBold.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-SemiBold.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Thin.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Thin.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-ThinItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-ThinItalic.woff2 +0 -0
- package/util/loaders/index.d.ts +0 -1
- package/util/loaders/style/style.loader.service.d.ts +0 -13
- /package/{util/custom_pages → boot/pages}/index.d.ts +0 -0
- /package/{util/custom_pages → boot/pages}/src/forbidden.component.d.ts +0 -0
- /package/{util/custom_pages → boot/pages}/src/notFound.component.d.ts +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Component, NgZone, inject } from '@angular/core';
|
|
2
2
|
import { ModuleFederationToolsModule, connectRouter } from '@angular-architects/module-federation-tools';
|
|
3
3
|
import { LanguageCode, TR_TRANSLATIONS } from 'aril/boot/config/translate';
|
|
4
|
-
import {
|
|
4
|
+
import { MFELayoutComponent } from 'aril/theme/layout';
|
|
5
5
|
import { appName, menuItems } from './bootstrap';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "@angular/router";
|
|
@@ -45,9 +45,9 @@ export class AppComponent {
|
|
|
45
45
|
@if (isHostMode()) {
|
|
46
46
|
<mfe-layout></mfe-layout>
|
|
47
47
|
} @else {
|
|
48
|
-
|
|
48
|
+
Bu uygulama yalnızca host app içinden açılabilir
|
|
49
49
|
}
|
|
50
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: ModuleFederationToolsModule }, { kind: "component", type:
|
|
50
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: ModuleFederationToolsModule }, { kind: "component", type: MFELayoutComponent, selector: "mfe-layout" }] }); }
|
|
51
51
|
}
|
|
52
52
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppComponent, decorators: [{
|
|
53
53
|
type: Component,
|
|
@@ -57,10 +57,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
57
57
|
@if (isHostMode()) {
|
|
58
58
|
<mfe-layout></mfe-layout>
|
|
59
59
|
} @else {
|
|
60
|
-
|
|
60
|
+
Bu uygulama yalnızca host app içinden açılabilir
|
|
61
61
|
}
|
|
62
62
|
`,
|
|
63
|
-
imports: [ModuleFederationToolsModule,
|
|
63
|
+
imports: [ModuleFederationToolsModule, MFELayoutComponent]
|
|
64
64
|
}]
|
|
65
65
|
}], ctorParameters: () => [{ type: i1.Router }, { type: i2.TranslocoService }, { type: i3.AppMenuService }, { type: i4.PrimeNGConfig }, { type: i5.MfeBridge }] });
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9tZmUvc3JjL2FwcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSzFELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxhQUFhLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUl6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNFLE9BQU8sRUFBa0Isa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7OztBQWFqRCxNQUFNLE9BQU8sWUFBWTtJQUN4QixZQUNrQixNQUFjLEVBQ2QsZ0JBQWtDLEVBQ2xDLGNBQThCLEVBQzlCLGFBQTRCLEVBQzVCLFNBQW9CO1FBSnBCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBRXJDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoRSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUVELGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWpDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxNQUFNLElBQUksR0FBa0IsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQWtCLElBQUksWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUU3RixJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzVGLENBQUM7SUFDRixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ2IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQWtCO1FBQzNCLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQ3JDLE9BQU87UUFDUixDQUFDO1FBRUQsSUFBSSxJQUFJLEtBQUssWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDRixDQUFDOzhHQXZDVyxZQUFZO2tHQUFaLFlBQVksd0VBVGQ7Ozs7OztFQU1ULDJEQUNTLDJCQUEyQiwrQkFBRSxrQkFBa0I7OzJGQUU3QyxZQUFZO2tCQVh4QixTQUFTO21CQUFDO29CQUNWLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7OztFQU1UO29CQUNELE9BQU8sRUFBRSxDQUFDLDJCQUEyQixFQUFFLGtCQUFrQixDQUFDO2lCQUMxRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgTmdab25lLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IFByaW1lTkdDb25maWcgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcblxyXG5pbXBvcnQgeyBNb2R1bGVGZWRlcmF0aW9uVG9vbHNNb2R1bGUsIGNvbm5lY3RSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci1hcmNoaXRlY3RzL21vZHVsZS1mZWRlcmF0aW9uLXRvb2xzJztcclxuaW1wb3J0IHsgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuXHJcbmltcG9ydCB7IE1mZUJyaWRnZSB9IGZyb20gJ2FyaWwvYm9vdC9icmlkZ2UnO1xyXG5pbXBvcnQgeyBMYW5ndWFnZUNvZGUsIFRSX1RSQU5TTEFUSU9OUyB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvdHJhbnNsYXRlJztcclxuaW1wb3J0IHsgQXBwTWVudVNlcnZpY2UsIE1GRUxheW91dENvbXBvbmVudCB9IGZyb20gJ2FyaWwvdGhlbWUvbGF5b3V0JztcclxuXHJcbmltcG9ydCB7IGFwcE5hbWUsIG1lbnVJdGVtcyB9IGZyb20gJy4vYm9vdHN0cmFwJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0dGVtcGxhdGU6IGBcclxuXHRcdEBpZiAoaXNIb3N0TW9kZSgpKSB7XHJcblx0XHRcdDxtZmUtbGF5b3V0PjwvbWZlLWxheW91dD5cclxuXHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRCdSB1eWd1bGFtYSB5YWxuxLF6Y2EgaG9zdCBhcHAgacOnaW5kZW4gYcOnxLFsYWJpbGlyXHJcblx0XHR9XHJcblx0YCxcclxuXHRpbXBvcnRzOiBbTW9kdWxlRmVkZXJhdGlvblRvb2xzTW9kdWxlLCBNRkVMYXlvdXRDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcHBDb21wb25lbnQge1xyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgYXBwTWVudVNlcnZpY2U6IEFwcE1lbnVTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSBwcmltZU5nQ29uZmlnOiBQcmltZU5HQ29uZmlnLFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSBicmlkZ2VTdmM6IE1mZUJyaWRnZVxyXG5cdCkge1xyXG5cdFx0aWYgKCF0aGlzLmJyaWRnZVN2Yy5pc0hvc3RNb2RlKCkgJiYgIXRoaXMuYnJpZGdlU3ZjLmhvc3ROZ1pvbmUpIHtcclxuXHRcdFx0dGhpcy5icmlkZ2VTdmMuaG9zdE5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbm5lY3RSb3V0ZXIodGhpcy5yb3V0ZXIsIHRydWUpO1xyXG5cclxuXHRcdHRoaXMuYnJpZGdlU3ZjLmFjdGl2ZU1GLnNldChhcHBOYW1lKTtcclxuXHRcdGNvbnN0IGxhbmc6IExhbmd1YWdlQ29kZSA9IChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZycpIGFzIExhbmd1YWdlQ29kZSkgPz8gTGFuZ3VhZ2VDb2RlLlRSO1xyXG5cclxuXHRcdHRoaXMudHJhbnNsb2NvU2VydmljZS5zZXRBY3RpdmVMYW5nKGxhbmcpO1xyXG5cclxuXHRcdHRoaXMuc2V0TG9jYWxlKGxhbmcpO1xyXG5cclxuXHRcdGlmICghdGhpcy5icmlkZ2VTdmMuaXNIb3N0TW9kZSgpKSB7XHJcblx0XHRcdHRoaXMuYXBwTWVudVNlcnZpY2UubWVudUNvbmZpZy5zZXQoeyBpdGVtczogc3RydWN0dXJlZENsb25lKG1lbnVJdGVtcyksIHByZWZpeDogYXBwTmFtZSB9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGdldCBpc0hvc3RNb2RlKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuYnJpZGdlU3ZjLmlzSG9zdE1vZGU7XHJcblx0fVxyXG5cclxuXHRzZXRMb2NhbGUobGFuZzogTGFuZ3VhZ2VDb2RlKSB7XHJcblx0XHRpZiAoIWxhbmc/Lmxlbmd0aCkge1xyXG5cdFx0XHRjb25zb2xlLndhcm4oJ05vIGxhbmd1YWdlIHNlbGVjdGVkJyk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAobGFuZyA9PT0gTGFuZ3VhZ2VDb2RlLlRSKSB7XHJcblx0XHRcdHRoaXMucHJpbWVOZ0NvbmZpZy5zZXRUcmFuc2xhdGlvbihUUl9UUkFOU0xBVElPTlMpO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iXX0=
|
|
@@ -1,23 +1,18 @@
|
|
|
1
|
-
import { HttpClient
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
2
|
import { APP_INITIALIZER, importProvidersFrom } from '@angular/core';
|
|
3
3
|
import { createCustomElement } from '@angular/elements';
|
|
4
4
|
import { createApplication } from '@angular/platform-browser';
|
|
5
|
-
import { provideAnimations } from '@angular/platform-browser/animations';
|
|
6
5
|
import { RouteReuseStrategy, provideRouter, withComponentInputBinding, withHashLocation, withRouterConfig, withViewTransitions } from '@angular/router';
|
|
7
|
-
import {
|
|
8
|
-
import { KeycloakAngularModule, KeycloakBearerInterceptor, KeycloakService } from 'keycloak-angular';
|
|
6
|
+
import { KeycloakService } from 'keycloak-angular';
|
|
9
7
|
import { MonacoEditorModule, NGX_MONACO_EDITOR_CONFIG } from 'ngx-monaco-editor-v2';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
8
|
+
import { createBaseAppConfig } from 'aril/boot/base';
|
|
9
|
+
import { bridge } from 'aril/boot/bridge';
|
|
10
|
+
import { setApiConfigOnMFEMode } from 'aril/boot/config/api';
|
|
12
11
|
import { ArilReuseStrategy } from 'aril/boot/config/apps';
|
|
13
12
|
import { getNgZone, loadPlugins } from 'aril/boot/config/plugins';
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import { authInterceptor, keycloakAuthInterceptor } from 'aril/keycloak';
|
|
17
|
-
import { provideHost, provideLocaleId } from 'aril/provider';
|
|
18
|
-
import { StyleLoaderService } from 'aril/util/loaders';
|
|
13
|
+
import { i18nFolderName } from 'aril/i18n';
|
|
14
|
+
import { provideHost } from 'aril/provider';
|
|
19
15
|
import { appComponentLoader } from './appComponentLoader';
|
|
20
|
-
import { loadStyles } from './loadStyles';
|
|
21
16
|
import { monacoConfig } from './monaco.config';
|
|
22
17
|
export var appName;
|
|
23
18
|
export var menuItems = [];
|
|
@@ -28,23 +23,18 @@ export const boot = (_appName, _routes, _menuItems) => {
|
|
|
28
23
|
menuItems = _menuItems;
|
|
29
24
|
const appBootConfig = {
|
|
30
25
|
providers: [
|
|
31
|
-
|
|
32
|
-
provideMfeBridge(),
|
|
26
|
+
createBaseAppConfig({ i18nFolder: _appName }),
|
|
33
27
|
provideHost(appName),
|
|
34
|
-
provideLocaleId(),
|
|
35
|
-
KeycloakBearerInterceptor,
|
|
36
|
-
provideHttpClient(withInterceptors([acceptLanguageInterceptor, authInterceptor, keycloakAuthInterceptor])),
|
|
37
28
|
provideRouter(_routes, withComponentInputBinding(), withHashLocation(), withViewTransitions(), withRouterConfig({ onSameUrlNavigation: 'reload' })),
|
|
38
29
|
{ provide: RouteReuseStrategy, useClass: ArilReuseStrategy },
|
|
39
|
-
importProvidersFrom(i18nModule, KeycloakAngularModule),
|
|
40
30
|
getNgZone(),
|
|
41
|
-
MessageService,
|
|
42
|
-
ConfirmationService,
|
|
43
31
|
{
|
|
44
32
|
provide: APP_INITIALIZER,
|
|
45
33
|
useFactory: (httpClient, keycloak, folderName) => {
|
|
46
|
-
|
|
47
|
-
|
|
34
|
+
if (!bridge.isHostMode()) {
|
|
35
|
+
return () => Promise.resolve();
|
|
36
|
+
}
|
|
37
|
+
const runApiInit = setApiConfigOnMFEMode(httpClient, keycloak, folderName);
|
|
48
38
|
const runLoadPlugins = loadPlugins();
|
|
49
39
|
return async () => {
|
|
50
40
|
await runApiInit();
|
|
@@ -54,16 +44,6 @@ export const boot = (_appName, _routes, _menuItems) => {
|
|
|
54
44
|
multi: true,
|
|
55
45
|
deps: [HttpClient, KeycloakService, i18nFolderName]
|
|
56
46
|
},
|
|
57
|
-
{
|
|
58
|
-
provide: APP_INITIALIZER,
|
|
59
|
-
useFactory: loadStyles,
|
|
60
|
-
multi: true,
|
|
61
|
-
deps: [StyleLoaderService, i18nFolderName]
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
provide: i18nFolderName,
|
|
65
|
-
useValue: _appName
|
|
66
|
-
},
|
|
67
47
|
importProvidersFrom(MonacoEditorModule.forRoot()),
|
|
68
48
|
{ provide: NGX_MONACO_EDITOR_CONFIG, useValue: monacoConfig }
|
|
69
49
|
]
|
|
@@ -75,4 +55,4 @@ export const boot = (_appName, _routes, _menuItems) => {
|
|
|
75
55
|
});
|
|
76
56
|
});
|
|
77
57
|
};
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9ib290L21mZS9zcmMvYm9vdHN0cmFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFxQixtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQ04sa0JBQWtCLEVBRWxCLGFBQWEsRUFDYix5QkFBeUIsRUFDekIsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFcEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBUSxpQkFBaUIsRUFBa0IsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsTUFBTSxDQUFDLElBQUksT0FBYSxDQUFDO0FBQ3pCLE1BQU0sQ0FBQyxJQUFJLFNBQVMsR0FBcUIsRUFBRSxDQUFDO0FBRTVDLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLFFBQWMsRUFBRSxPQUFlLEVBQUUsVUFBNEIsRUFBRSxFQUFFO0lBQ3JGLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQyxPQUFPLFFBQVEsRUFBRSxDQUFDO1FBQUUsT0FBTztJQUVsRCxPQUFPLEdBQUcsUUFBUSxDQUFDO0lBQ25CLFNBQVMsR0FBRyxVQUFVLENBQUM7SUFFdkIsTUFBTSxhQUFhLEdBQXNCO1FBQ3hDLFNBQVMsRUFBRTtZQUNWLG1CQUFtQixDQUFDLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDO1lBQzdDLFdBQVcsQ0FBQyxPQUFPLENBQUM7WUFDcEIsYUFBYSxDQUNaLE9BQU8sRUFDUCx5QkFBeUIsRUFBRSxFQUMzQixnQkFBZ0IsRUFBRSxFQUNsQixtQkFBbUIsRUFBRSxFQUNyQixnQkFBZ0IsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxDQUFDLENBQ25EO1lBQ0QsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQzVELFNBQVMsRUFBRTtZQUNYO2dCQUNDLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixVQUFVLEVBQUUsQ0FBQyxVQUFzQixFQUFFLFFBQXlCLEVBQUUsVUFBaUMsRUFBRSxFQUFFO29CQUNwRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7d0JBQzFCLE9BQU8sR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNoQyxDQUFDO29CQUNELE1BQU0sVUFBVSxHQUFHLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBNkIsQ0FBQyxDQUFDO29CQUM5RixNQUFNLGNBQWMsR0FBRyxXQUFXLEVBQUUsQ0FBQztvQkFDckMsT0FBTyxLQUFLLElBQUksRUFBRTt3QkFDakIsTUFBTSxVQUFVLEVBQUUsQ0FBQzt3QkFDbkIsY0FBYyxFQUFFLENBQUM7b0JBQ2xCLENBQUMsQ0FBQztnQkFDSCxDQUFDO2dCQUNELEtBQUssRUFBRSxJQUFJO2dCQUNYLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRSxlQUFlLEVBQUUsY0FBYyxDQUFDO2FBQ25EO1lBQ0QsbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakQsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRTtTQUM3RDtLQUNELENBQUM7SUFFRixpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUNoRCxrQkFBa0IsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQzFDLE1BQU0sR0FBRyxHQUFHLG1CQUFtQixDQUFDLFlBQVksRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUM3RSxjQUFjLENBQUMsTUFBTSxDQUFDLE9BQU8sT0FBTyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiwgQXBwbGljYXRpb25Db25maWcsIGltcG9ydFByb3ZpZGVyc0Zyb20gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY3JlYXRlQ3VzdG9tRWxlbWVudCB9IGZyb20gJ0Bhbmd1bGFyL2VsZW1lbnRzJztcclxuaW1wb3J0IHsgY3JlYXRlQXBwbGljYXRpb24gfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHtcclxuXHRSb3V0ZVJldXNlU3RyYXRlZ3ksXHJcblx0Um91dGVzLFxyXG5cdHByb3ZpZGVSb3V0ZXIsXHJcblx0d2l0aENvbXBvbmVudElucHV0QmluZGluZyxcclxuXHR3aXRoSGFzaExvY2F0aW9uLFxyXG5cdHdpdGhSb3V0ZXJDb25maWcsXHJcblx0d2l0aFZpZXdUcmFuc2l0aW9uc1xyXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBLZXljbG9ha1NlcnZpY2UgfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcclxuaW1wb3J0IHsgTW9uYWNvRWRpdG9yTW9kdWxlLCBOR1hfTU9OQUNPX0VESVRPUl9DT05GSUcgfSBmcm9tICduZ3gtbW9uYWNvLWVkaXRvci12Mic7XHJcblxyXG5pbXBvcnQgeyBjcmVhdGVCYXNlQXBwQ29uZmlnIH0gZnJvbSAnYXJpbC9ib290L2Jhc2UnO1xyXG5pbXBvcnQgeyBicmlkZ2UgfSBmcm9tICdhcmlsL2Jvb3QvYnJpZGdlJztcclxuaW1wb3J0IHsgc2V0QXBpQ29uZmlnT25NRkVNb2RlIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcGknO1xyXG5pbXBvcnQgeyBBcHBzLCBBcmlsUmV1c2VTdHJhdGVneSwgUGx1Z2luTWVudUl0ZW0gfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xyXG5pbXBvcnQgeyBnZXROZ1pvbmUsIGxvYWRQbHVnaW5zIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9wbHVnaW5zJztcclxuaW1wb3J0IHsgaTE4bkZvbGRlck5hbWUgfSBmcm9tICdhcmlsL2kxOG4nO1xyXG5pbXBvcnQgeyBwcm92aWRlSG9zdCB9IGZyb20gJ2FyaWwvcHJvdmlkZXInO1xyXG5cclxuaW1wb3J0IHsgYXBwQ29tcG9uZW50TG9hZGVyIH0gZnJvbSAnLi9hcHBDb21wb25lbnRMb2FkZXInO1xyXG5pbXBvcnQgeyBtb25hY29Db25maWcgfSBmcm9tICcuL21vbmFjby5jb25maWcnO1xyXG5cclxuZXhwb3J0IHZhciBhcHBOYW1lOiBBcHBzO1xyXG5leHBvcnQgdmFyIG1lbnVJdGVtczogUGx1Z2luTWVudUl0ZW1bXSA9IFtdO1xyXG5cclxuZXhwb3J0IGNvbnN0IGJvb3QgPSAoX2FwcE5hbWU6IEFwcHMsIF9yb3V0ZXM6IFJvdXRlcywgX21lbnVJdGVtczogUGx1Z2luTWVudUl0ZW1bXSkgPT4ge1xyXG5cdGlmIChjdXN0b21FbGVtZW50cy5nZXQoYGFwcC0ke19hcHBOYW1lfWApKSByZXR1cm47XHJcblxyXG5cdGFwcE5hbWUgPSBfYXBwTmFtZTtcclxuXHRtZW51SXRlbXMgPSBfbWVudUl0ZW1zO1xyXG5cclxuXHRjb25zdCBhcHBCb290Q29uZmlnOiBBcHBsaWNhdGlvbkNvbmZpZyA9IHtcclxuXHRcdHByb3ZpZGVyczogW1xyXG5cdFx0XHRjcmVhdGVCYXNlQXBwQ29uZmlnKHsgaTE4bkZvbGRlcjogX2FwcE5hbWUgfSksXHJcblx0XHRcdHByb3ZpZGVIb3N0KGFwcE5hbWUpLFxyXG5cdFx0XHRwcm92aWRlUm91dGVyKFxyXG5cdFx0XHRcdF9yb3V0ZXMsXHJcblx0XHRcdFx0d2l0aENvbXBvbmVudElucHV0QmluZGluZygpLFxyXG5cdFx0XHRcdHdpdGhIYXNoTG9jYXRpb24oKSxcclxuXHRcdFx0XHR3aXRoVmlld1RyYW5zaXRpb25zKCksXHJcblx0XHRcdFx0d2l0aFJvdXRlckNvbmZpZyh7IG9uU2FtZVVybE5hdmlnYXRpb246ICdyZWxvYWQnIH0pXHJcblx0XHRcdCksXHJcblx0XHRcdHsgcHJvdmlkZTogUm91dGVSZXVzZVN0cmF0ZWd5LCB1c2VDbGFzczogQXJpbFJldXNlU3RyYXRlZ3kgfSxcclxuXHRcdFx0Z2V0Tmdab25lKCksXHJcblx0XHRcdHtcclxuXHRcdFx0XHRwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXHJcblx0XHRcdFx0dXNlRmFjdG9yeTogKGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIGtleWNsb2FrOiBLZXljbG9ha1NlcnZpY2UsIGZvbGRlck5hbWU6IHR5cGVvZiBpMThuRm9sZGVyTmFtZSkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKCFicmlkZ2UuaXNIb3N0TW9kZSgpKSB7XHJcblx0XHRcdFx0XHRcdHJldHVybiAoKSA9PiBQcm9taXNlLnJlc29sdmUoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGNvbnN0IHJ1bkFwaUluaXQgPSBzZXRBcGlDb25maWdPbk1GRU1vZGUoaHR0cENsaWVudCwga2V5Y2xvYWssIGZvbGRlck5hbWUgYXMgdW5rbm93biBhcyBBcHBzKTtcclxuXHRcdFx0XHRcdGNvbnN0IHJ1bkxvYWRQbHVnaW5zID0gbG9hZFBsdWdpbnMoKTtcclxuXHRcdFx0XHRcdHJldHVybiBhc3luYyAoKSA9PiB7XHJcblx0XHRcdFx0XHRcdGF3YWl0IHJ1bkFwaUluaXQoKTtcclxuXHRcdFx0XHRcdFx0cnVuTG9hZFBsdWdpbnMoKTtcclxuXHRcdFx0XHRcdH07XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRtdWx0aTogdHJ1ZSxcclxuXHRcdFx0XHRkZXBzOiBbSHR0cENsaWVudCwgS2V5Y2xvYWtTZXJ2aWNlLCBpMThuRm9sZGVyTmFtZV1cclxuXHRcdFx0fSxcclxuXHRcdFx0aW1wb3J0UHJvdmlkZXJzRnJvbShNb25hY29FZGl0b3JNb2R1bGUuZm9yUm9vdCgpKSxcclxuXHRcdFx0eyBwcm92aWRlOiBOR1hfTU9OQUNPX0VESVRPUl9DT05GSUcsIHVzZVZhbHVlOiBtb25hY29Db25maWcgfVxyXG5cdFx0XVxyXG5cdH07XHJcblxyXG5cdGNyZWF0ZUFwcGxpY2F0aW9uKGFwcEJvb3RDb25maWcpLnRoZW4oKGFwcFJlZikgPT4ge1xyXG5cdFx0YXBwQ29tcG9uZW50TG9hZGVyKCkudGhlbigoQXBwQ29tcG9uZW50KSA9PiB7XHJcblx0XHRcdGNvbnN0IGFwcCA9IGNyZWF0ZUN1c3RvbUVsZW1lbnQoQXBwQ29tcG9uZW50LCB7IGluamVjdG9yOiBhcHBSZWYuaW5qZWN0b3IgfSk7XHJcblx0XHRcdGN1c3RvbUVsZW1lbnRzLmRlZmluZShgYXBwLSR7YXBwTmFtZX1gLCBhcHApO1xyXG5cdFx0fSk7XHJcblx0fSk7XHJcbn07XHJcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJpbC1ib290LXBhZ2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9ib290L3BhZ2VzL2FyaWwtYm9vdC1wYWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './src/notFound.component';
|
|
2
|
+
export * from './src/forbidden.component';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2Jvb3QvcGFnZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcmMvbm90Rm91bmQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvZm9yYmlkZGVuLmNvbXBvbmVudCc7XHJcbiJdfQ==
|
|
@@ -68,4 +68,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
68
68
|
`
|
|
69
69
|
}]
|
|
70
70
|
}] });
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yYmlkZGVuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9wYWdlcy9zcmMvZm9yYmlkZGVuLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztBQWdDcEQsTUFBTSxPQUFPLGtCQUFrQjs4R0FBbEIsa0JBQWtCO2tHQUFsQixrQkFBa0Isd0VBM0JwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXlCVCwyREExQlMsWUFBWSw2WEFBRSxZQUFZLCtRQUFFLGVBQWU7OzJGQTRCekMsa0JBQWtCO2tCQTlCOUIsU0FBUzttQkFBQztvQkFDVixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxlQUFlLENBQUM7b0JBQ3RELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXlCVDtpQkFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvTW9kdWxlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRpbXBvcnRzOiBbQnV0dG9uTW9kdWxlLCBSb3V0ZXJNb2R1bGUsIFRyYW5zbG9jb01vZHVsZV0sXHJcblx0dGVtcGxhdGU6IGBcclxuXHRcdDxuZy1jb250YWluZXIgKnRyYW5zbG9jbz1cImxldCB0XCI+XHJcblx0XHRcdDxzdmdcclxuXHRcdFx0XHR2aWV3Qm94PVwiMCAwIDk2MCA1NDBcIlxyXG5cdFx0XHRcdHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG5cdFx0XHRcdHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiXHJcblx0XHRcdFx0dmVyc2lvbj1cIjEuMVwiXHJcblx0XHRcdFx0Y2xhc3M9XCJtaW4taC1zY3JlZW4gbWluLXctc2NyZWVuIGZpeGVkIGxlZnQtMFwiXHJcblx0XHRcdFx0c3R5bGU9XCJib3R0b206LTEwcmVtXCJcclxuXHRcdFx0XHRwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiPlxyXG5cdFx0XHRcdDxyZWN0IHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjk2MFwiIGhlaWdodD1cIjU0MFwiIGZpbGw9XCJ2YXIoLS1zdXJmYWNlLWdyb3VuZClcIj48L3JlY3Q+XHJcblx0XHRcdFx0PHBhdGhcclxuXHRcdFx0XHRcdGQ9XCJNMCAzMzFMMjYuNyAzMjFDNTMuMyAzMTEgMTA2LjcgMjkxIDE2MCAyOTFDMjEzLjMgMjkxIDI2Ni43IDMxMSAzMjAgMzI5LjVDMzczLjMgMzQ4IDQyNi43IDM2NSA0ODAgMzczLjJDNTMzLjMgMzgxLjMgNTg2LjcgMzgwLjcgNjQwIDM3My44QzY5My4zIDM2NyA3NDYuNyAzNTQgODAwIDM0MS4yQzg1My4zIDMyOC4zIDkwNi43IDMxNS43IDkzMy4zIDMwOS4zTDk2MCAzMDNMOTYwIDU0MUw5MzMuMyA1NDFDOTA2LjcgNTQxIDg1My4zIDU0MSA4MDAgNTQxQzc0Ni43IDU0MSA2OTMuMyA1NDEgNjQwIDU0MUM1ODYuNyA1NDEgNTMzLjMgNTQxIDQ4MCA1NDFDNDI2LjcgNTQxIDM3My4zIDU0MSAzMjAgNTQxQzI2Ni43IDU0MSAyMTMuMyA1NDEgMTYwIDU0MUMxMDYuNyA1NDEgNTMuMyA1NDEgMjYuNyA1NDFMMCA1NDFaXCJcclxuXHRcdFx0XHRcdGZpbGw9XCJ2YXIoLS1wcmltYXJ5LWNvbG9yKVwiXHJcblx0XHRcdFx0XHRzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuXHRcdFx0XHRcdHN0cm9rZS1saW5lam9pbj1cIm1pdGVyXCI+PC9wYXRoPlxyXG5cdFx0XHQ8L3N2Zz5cclxuXHRcdFx0PGRpdiBjbGFzcz1cInB4LTUgbWluLWgtc2NyZWVuIGZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiei0xIHRleHQtY2VudGVyXCI+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGV4dC05MDAgZm9udC1ib2xkIHRleHQtOHhsIG1iLTRcIj57eyB0KCdmb3JiaWRkZW4udGl0bGUnKSB9fTwvZGl2PlxyXG5cdFx0XHRcdFx0PHAgY2xhc3M9XCJsaW5lLWhlaWdodC0zIG10LTAgbWItNSB0ZXh0LTcwMCB0ZXh0LXhsIGZvbnQtbWVkaXVtXCI+e3sgdCgnZm9yYmlkZGVuLm1lc3NhZ2UnKSB9fTwvcD5cclxuXHRcdFx0XHRcdDxwLWJ1dHRvbiByb3V0ZXJMaW5rPVwiL1wiIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1kYXJrIGZvbnQtbWVkaXVtIHAtYnV0dG9uLXJhaXNlZFwiPnt7IHQoJ2ZvcmJpZGRlbi5nb0hvbWUnKSB9fTwvcC1idXR0b24+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9uZy1jb250YWluZXI+XHJcblx0YFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9yYmlkZGVuQ29tcG9uZW50IHt9XHJcbiJdfQ==
|
|
@@ -62,4 +62,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
62
62
|
`
|
|
63
63
|
}]
|
|
64
64
|
}] });
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90Rm91bmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9ib290L3BhZ2VzL3NyYy9ub3RGb3VuZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBOEI5QyxNQUFNLE9BQU8saUJBQWlCOzhHQUFqQixpQkFBaUI7a0dBQWpCLGlCQUFpQix3RUF6Qm5COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXVCVCwyREF4QlMsWUFBWSw2WEFBRSxZQUFZOzsyRkEwQnhCLGlCQUFpQjtrQkE1QjdCLFNBQVM7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUM7b0JBQ3JDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF1QlQ7aUJBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0aW1wb3J0czogW0J1dHRvbk1vZHVsZSwgUm91dGVyTW9kdWxlXSxcclxuXHR0ZW1wbGF0ZTogYFxyXG5cdFx0PHN2Z1xyXG5cdFx0XHR2aWV3Qm94PVwiMCAwIDk2MCA1NDBcIlxyXG5cdFx0XHR4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuXHRcdFx0eG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCJcclxuXHRcdFx0dmVyc2lvbj1cIjEuMVwiXHJcblx0XHRcdGNsYXNzPVwibWluLWgtc2NyZWVuIG1pbi13LXNjcmVlbiBmaXhlZCBsZWZ0LTBcIlxyXG5cdFx0XHRzdHlsZT1cImJvdHRvbTotMTByZW1cIlxyXG5cdFx0XHRwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiPlxyXG5cdFx0XHQ8cmVjdCB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCI5NjBcIiBoZWlnaHQ9XCI1NDBcIiBmaWxsPVwidmFyKC0tc3VyZmFjZS1ncm91bmQpXCI+PC9yZWN0PlxyXG5cdFx0XHQ8cGF0aFxyXG5cdFx0XHRcdGQ9XCJNMCAzMzFMMjYuNyAzMjFDNTMuMyAzMTEgMTA2LjcgMjkxIDE2MCAyOTFDMjEzLjMgMjkxIDI2Ni43IDMxMSAzMjAgMzI5LjVDMzczLjMgMzQ4IDQyNi43IDM2NSA0ODAgMzczLjJDNTMzLjMgMzgxLjMgNTg2LjcgMzgwLjcgNjQwIDM3My44QzY5My4zIDM2NyA3NDYuNyAzNTQgODAwIDM0MS4yQzg1My4zIDMyOC4zIDkwNi43IDMxNS43IDkzMy4zIDMwOS4zTDk2MCAzMDNMOTYwIDU0MUw5MzMuMyA1NDFDOTA2LjcgNTQxIDg1My4zIDU0MSA4MDAgNTQxQzc0Ni43IDU0MSA2OTMuMyA1NDEgNjQwIDU0MUM1ODYuNyA1NDEgNTMzLjMgNTQxIDQ4MCA1NDFDNDI2LjcgNTQxIDM3My4zIDU0MSAzMjAgNTQxQzI2Ni43IDU0MSAyMTMuMyA1NDEgMTYwIDU0MUMxMDYuNyA1NDEgNTMuMyA1NDEgMjYuNyA1NDFMMCA1NDFaXCJcclxuXHRcdFx0XHRmaWxsPVwidmFyKC0tcHJpbWFyeS1jb2xvcilcIlxyXG5cdFx0XHRcdHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG5cdFx0XHRcdHN0cm9rZS1saW5lam9pbj1cIm1pdGVyXCI+PC9wYXRoPlxyXG5cdFx0PC9zdmc+XHJcblx0XHQ8ZGl2IGNsYXNzPVwicHgtNSBtaW4taC1zY3JlZW4gZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiei0xIHRleHQtY2VudGVyXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtOTAwIGZvbnQtYm9sZCB0ZXh0LTh4bCBtYi00XCI+T29wcyE8L2Rpdj5cclxuXHRcdFx0XHQ8cCBjbGFzcz1cImxpbmUtaGVpZ2h0LTMgbXQtMCBtYi01IHRleHQtNzAwIHRleHQteGwgZm9udC1tZWRpdW1cIj5TYXlmYSBCdWx1bmFtYWTEsTwvcD5cclxuXHRcdFx0XHQ8cC1idXR0b24gcm91dGVyTGluaz1cIi9cIiBzdHlsZUNsYXNzPVwicC1idXR0b24tZGFyayBmb250LW1lZGl1bSBwLWJ1dHRvbi1yYWlzZWRcIj5BbmFzYXlmYXlhIEdpdDwvcC1idXR0b24+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0YFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTm90Rm91bmRDb21wb25lbnQge31cclxuIl19
|
|
@@ -2,91 +2,27 @@ import { inject } from '@angular/core';
|
|
|
2
2
|
import { KeycloakBearerInterceptor } from 'keycloak-angular';
|
|
3
3
|
import { bridge } from 'aril/boot/bridge';
|
|
4
4
|
import { Apps } from 'aril/boot/config/apps';
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
case Apps.YEAP:
|
|
10
|
-
appName = Apps.YEAP;
|
|
11
|
-
break;
|
|
12
|
-
case Apps.LENA:
|
|
13
|
-
appName = Apps.LENA;
|
|
14
|
-
break;
|
|
15
|
-
case Apps.THOR:
|
|
16
|
-
appName = Apps.THOR;
|
|
17
|
-
break;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
switch (mf) {
|
|
22
|
-
case Apps.HES:
|
|
23
|
-
case Apps.CTS:
|
|
24
|
-
case Apps.SIS:
|
|
25
|
-
appName = Apps.LENA;
|
|
26
|
-
break;
|
|
27
|
-
case Apps.CRM:
|
|
28
|
-
case Apps.BILLING:
|
|
29
|
-
case Apps.PAYMENT:
|
|
30
|
-
case Apps.WDM:
|
|
31
|
-
case Apps.MDM:
|
|
32
|
-
case Apps.DMS:
|
|
33
|
-
case Apps.MNG:
|
|
34
|
-
appName = Apps.THOR;
|
|
35
|
-
break;
|
|
36
|
-
case Apps.MW:
|
|
37
|
-
appName = Apps.YEAP;
|
|
38
|
-
break;
|
|
39
|
-
default:
|
|
40
|
-
appName = Apps.YEAP;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
return appName;
|
|
44
|
-
};
|
|
45
|
-
const getAppHeader = (appName) => {
|
|
46
|
-
let appHeader = {};
|
|
47
|
-
switch (appName) {
|
|
48
|
-
case Apps.YEAP:
|
|
49
|
-
appHeader = {
|
|
50
|
-
'x-yeap-application': 'yeap',
|
|
51
|
-
'x-application': 'yeap',
|
|
52
|
-
'x-module': 'yeap-fe'
|
|
53
|
-
};
|
|
54
|
-
break;
|
|
55
|
-
case Apps.LENA:
|
|
56
|
-
appHeader = {
|
|
57
|
-
'x-yeap-application': 'lena',
|
|
58
|
-
'x-application': 'lena',
|
|
59
|
-
'x-module': 'lena-fe'
|
|
60
|
-
};
|
|
61
|
-
break;
|
|
62
|
-
case Apps.THOR:
|
|
63
|
-
appHeader = {
|
|
64
|
-
'x-yeap-application': 'thor',
|
|
65
|
-
'x-application': 'thor',
|
|
66
|
-
'x-module': 'thor-fe'
|
|
67
|
-
};
|
|
68
|
-
break;
|
|
69
|
-
}
|
|
70
|
-
return appHeader;
|
|
71
|
-
};
|
|
72
|
-
const getCsrfToken = () => {
|
|
73
|
-
return document.cookie
|
|
74
|
-
.split('; ')
|
|
75
|
-
.find((row) => row.startsWith('csrf_token='))
|
|
76
|
-
?.split('=')[1];
|
|
5
|
+
const HOST_APP_HEADERS = {
|
|
6
|
+
[Apps.THOR]: { 'x-yeap-application': 'thor', 'x-application': 'thor', 'x-module': 'thor-fe' },
|
|
7
|
+
[Apps.LENA]: { 'x-yeap-application': 'lena', 'x-application': 'lena', 'x-module': 'lena-fe' },
|
|
8
|
+
[Apps.YEAP]: { 'x-yeap-application': 'yeap', 'x-application': 'yeap', 'x-module': 'yeap-fe' }
|
|
77
9
|
};
|
|
10
|
+
const isHostApp = (value) => value === Apps.THOR || value === Apps.LENA || value === Apps.YEAP;
|
|
11
|
+
const getCsrfToken = () => document.cookie
|
|
12
|
+
.split('; ')
|
|
13
|
+
.find((row) => row.startsWith('csrf_token='))
|
|
14
|
+
?.split('=')[1];
|
|
78
15
|
export const authInterceptor = (req, next) => {
|
|
79
|
-
const
|
|
80
|
-
const
|
|
16
|
+
const activeHost = bridge.activeHost();
|
|
17
|
+
const headers = isHostApp(activeHost) ? HOST_APP_HEADERS[activeHost] : {};
|
|
81
18
|
const csrfToken = getCsrfToken();
|
|
82
|
-
// if (isDevMode()) return next(req);
|
|
83
19
|
const authReq = req.clone({
|
|
84
20
|
setHeaders: {
|
|
85
|
-
csrf_token: csrfToken
|
|
86
|
-
...
|
|
21
|
+
csrf_token: csrfToken ?? '',
|
|
22
|
+
...headers
|
|
87
23
|
}
|
|
88
24
|
});
|
|
89
25
|
return next(authReq);
|
|
90
26
|
};
|
|
91
27
|
export const keycloakAuthInterceptor = (req, next) => inject(KeycloakBearerInterceptor).intercept(req, { handle: next });
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwva2V5Y2xvYWsvc3JjL2F1dGguaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSTdDLE1BQU0sZ0JBQWdCLEdBQXNEO0lBQzNFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRTtJQUM3RixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUU7SUFDN0YsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFO0NBQzdGLENBQUM7QUFFRixNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQWdDLEVBQW9CLEVBQUUsQ0FDeEUsS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUM7QUFFbkUsTUFBTSxZQUFZLEdBQUcsR0FBdUIsRUFBRSxDQUM3QyxRQUFRLENBQUMsTUFBTTtLQUNiLEtBQUssQ0FBQyxJQUFJLENBQUM7S0FDWCxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0MsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFbEIsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFzQixDQUFDLEdBQXlCLEVBQUUsSUFBbUIsRUFBRSxFQUFFO0lBQ3BHLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN2QyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDMUUsTUFBTSxTQUFTLEdBQUcsWUFBWSxFQUFFLENBQUM7SUFFakMsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztRQUN6QixVQUFVLEVBQUU7WUFDWCxVQUFVLEVBQUUsU0FBUyxJQUFJLEVBQUU7WUFDM0IsR0FBRyxPQUFPO1NBQ1Y7S0FDRCxDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBc0IsQ0FBQyxHQUF5QixFQUFFLElBQW1CLEVBQUUsRUFBRSxDQUM1RyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGFuZGxlckZuLCBIdHRwSW50ZXJjZXB0b3JGbiwgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgS2V5Y2xvYWtCZWFyZXJJbnRlcmNlcHRvciB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5cclxuaW1wb3J0IHsgYnJpZGdlIH0gZnJvbSAnYXJpbC9ib290L2JyaWRnZSc7XHJcbmltcG9ydCB7IEFwcHMgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xyXG5cclxudHlwZSBIb3N0QXBwID0gQXBwcy5USE9SIHwgQXBwcy5ZRUFQIHwgQXBwcy5MRU5BO1xyXG5cclxuY29uc3QgSE9TVF9BUFBfSEVBREVSUzogUmVjb3JkPEhvc3RBcHAsIFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+PiA9IHtcclxuXHRbQXBwcy5USE9SXTogeyAneC15ZWFwLWFwcGxpY2F0aW9uJzogJ3Rob3InLCAneC1hcHBsaWNhdGlvbic6ICd0aG9yJywgJ3gtbW9kdWxlJzogJ3Rob3ItZmUnIH0sXHJcblx0W0FwcHMuTEVOQV06IHsgJ3gteWVhcC1hcHBsaWNhdGlvbic6ICdsZW5hJywgJ3gtYXBwbGljYXRpb24nOiAnbGVuYScsICd4LW1vZHVsZSc6ICdsZW5hLWZlJyB9LFxyXG5cdFtBcHBzLllFQVBdOiB7ICd4LXllYXAtYXBwbGljYXRpb24nOiAneWVhcCcsICd4LWFwcGxpY2F0aW9uJzogJ3llYXAnLCAneC1tb2R1bGUnOiAneWVhcC1mZScgfVxyXG59O1xyXG5cclxuY29uc3QgaXNIb3N0QXBwID0gKHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogdmFsdWUgaXMgSG9zdEFwcCA9PlxyXG5cdHZhbHVlID09PSBBcHBzLlRIT1IgfHwgdmFsdWUgPT09IEFwcHMuTEVOQSB8fCB2YWx1ZSA9PT0gQXBwcy5ZRUFQO1xyXG5cclxuY29uc3QgZ2V0Q3NyZlRva2VuID0gKCk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PlxyXG5cdGRvY3VtZW50LmNvb2tpZVxyXG5cdFx0LnNwbGl0KCc7ICcpXHJcblx0XHQuZmluZCgocm93KSA9PiByb3cuc3RhcnRzV2l0aCgnY3NyZl90b2tlbj0nKSlcclxuXHRcdD8uc3BsaXQoJz0nKVsxXTtcclxuXHJcbmV4cG9ydCBjb25zdCBhdXRoSW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKHJlcTogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIG5leHQ6IEh0dHBIYW5kbGVyRm4pID0+IHtcclxuXHRjb25zdCBhY3RpdmVIb3N0ID0gYnJpZGdlLmFjdGl2ZUhvc3QoKTtcclxuXHRjb25zdCBoZWFkZXJzID0gaXNIb3N0QXBwKGFjdGl2ZUhvc3QpID8gSE9TVF9BUFBfSEVBREVSU1thY3RpdmVIb3N0XSA6IHt9O1xyXG5cdGNvbnN0IGNzcmZUb2tlbiA9IGdldENzcmZUb2tlbigpO1xyXG5cclxuXHRjb25zdCBhdXRoUmVxID0gcmVxLmNsb25lKHtcclxuXHRcdHNldEhlYWRlcnM6IHtcclxuXHRcdFx0Y3NyZl90b2tlbjogY3NyZlRva2VuID8/ICcnLFxyXG5cdFx0XHQuLi5oZWFkZXJzXHJcblx0XHR9XHJcblx0fSk7XHJcblxyXG5cdHJldHVybiBuZXh0KGF1dGhSZXEpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGtleWNsb2FrQXV0aEludGVyY2VwdG9yOiBIdHRwSW50ZXJjZXB0b3JGbiA9IChyZXE6IEh0dHBSZXF1ZXN0PHVua25vd24+LCBuZXh0OiBIdHRwSGFuZGxlckZuKSA9PlxyXG5cdGluamVjdChLZXljbG9ha0JlYXJlckludGVyY2VwdG9yKS5pbnRlcmNlcHQocmVxLCB7IGhhbmRsZTogbmV4dCB9KTtcclxuIl19
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import { bridge } from 'aril/boot/bridge';
|
|
2
2
|
import { provideHostKeycloak } from './provideHostKeycloak';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
return providers;
|
|
9
|
-
};
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZGl2ZUhvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3Byb3ZpZGVyL3NyYy9wcm9kaXZlSG9zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHMUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFNUQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBUyxFQUFZLEVBQUU7SUFDbEQsTUFBTSxTQUFTLEdBQTJDLEVBQUUsQ0FBQztJQUU3RCxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN2QixTQUFTLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ2xCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50UHJvdmlkZXJzLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgYnJpZGdlIH0gZnJvbSAnYXJpbC9ib290L2JyaWRnZSc7XHJcbmltcG9ydCB7IEFwcHMgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xyXG5cclxuaW1wb3J0IHsgcHJvdmlkZUhvc3RLZXljbG9hayB9IGZyb20gJy4vcHJvdmlkZUhvc3RLZXljbG9hayc7XHJcblxyXG5leHBvcnQgY29uc3QgcHJvdmlkZUhvc3QgPSAoYXBwOiBBcHBzKTogUHJvdmlkZXIgPT4ge1xyXG5cdGNvbnN0IHByb3ZpZGVyczogQXJyYXk8UHJvdmlkZXIgfCBFbnZpcm9ubWVudFByb3ZpZGVycz4gPSBbXTtcclxuXHJcblx0aWYgKGJyaWRnZS5ob3N0Tmdab25lKSB7XHJcblx0XHRwcm92aWRlcnMucHVzaChwcm92aWRlSG9zdEtleWNsb2FrKGFwcCkpO1xyXG5cdH1cclxuXHJcblx0cmV0dXJuIHByb3ZpZGVycztcclxufTtcclxuIl19
|
|
3
|
+
// Host altında çağrıldığında shared keycloak ekler; MFE standalone'da
|
|
4
|
+
// (bridge.hostNgZone null) bu path zaten boot olmuyor, güvenli fallback.
|
|
5
|
+
export const provideHost = (app) => bridge.hostNgZone ? [provideHostKeycloak(app)] : [];
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZGl2ZUhvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3Byb3ZpZGVyL3NyYy9wcm9kaXZlSG9zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHMUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFNUQsc0VBQXNFO0FBQ3RFLHlFQUF5RTtBQUN6RSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFTLEVBQTBDLEVBQUUsQ0FDaEYsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpcm9ubWVudFByb3ZpZGVycywgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IGJyaWRnZSB9IGZyb20gJ2FyaWwvYm9vdC9icmlkZ2UnO1xyXG5pbXBvcnQgeyBBcHBzIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcHBzJztcclxuXHJcbmltcG9ydCB7IHByb3ZpZGVIb3N0S2V5Y2xvYWsgfSBmcm9tICcuL3Byb3ZpZGVIb3N0S2V5Y2xvYWsnO1xyXG5cclxuLy8gSG9zdCBhbHTEsW5kYSDDp2HEn3LEsWxkxLHEn8SxbmRhIHNoYXJlZCBrZXljbG9hayBla2xlcjsgTUZFIHN0YW5kYWxvbmUnZGFcclxuLy8gKGJyaWRnZS5ob3N0Tmdab25lIG51bGwpIGJ1IHBhdGggemF0ZW4gYm9vdCBvbG11eW9yLCBnw7x2ZW5saSBmYWxsYmFjay5cclxuZXhwb3J0IGNvbnN0IHByb3ZpZGVIb3N0ID0gKGFwcDogQXBwcyk6IEFycmF5PFByb3ZpZGVyIHwgRW52aXJvbm1lbnRQcm92aWRlcnM+ID0+XHJcblx0YnJpZGdlLmhvc3ROZ1pvbmUgPyBbcHJvdmlkZUhvc3RLZXljbG9hayhhcHApXSA6IFtdO1xyXG4iXX0=
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { APP_INITIALIZER } from '@angular/core';
|
|
2
2
|
import { KeycloakService } from 'keycloak-angular';
|
|
3
|
+
// Covers host bootstrap + Keycloak login redirect + token exchange + slow network buffer.
|
|
4
|
+
const HOST_KEYCLOAK_INIT_TIMEOUT_MS = 30000;
|
|
3
5
|
export const provideHostKeycloak = (app) => {
|
|
4
6
|
return [
|
|
5
7
|
KeycloakService,
|
|
@@ -12,17 +14,23 @@ export const provideHostKeycloak = (app) => {
|
|
|
12
14
|
];
|
|
13
15
|
};
|
|
14
16
|
export const hostKeycloakInitializer = (keycloakService, app) => () => new Promise((resolve, reject) => {
|
|
17
|
+
let timeoutHandle;
|
|
15
18
|
const eventListener = (event) => {
|
|
19
|
+
removeEventListener(`${app}:init-keycloak`, eventListener);
|
|
20
|
+
clearTimeout(timeoutHandle);
|
|
16
21
|
try {
|
|
17
22
|
Object.assign(keycloakService, event.detail);
|
|
18
|
-
removeEventListener(`${app}:init-keycloak`, eventListener);
|
|
19
23
|
resolve();
|
|
20
24
|
}
|
|
21
25
|
catch (error) {
|
|
22
26
|
reject(error);
|
|
23
27
|
}
|
|
24
28
|
};
|
|
29
|
+
timeoutHandle = setTimeout(() => {
|
|
30
|
+
removeEventListener(`${app}:init-keycloak`, eventListener);
|
|
31
|
+
reject(new Error(`Host keycloak init for "${app}" did not complete within ${HOST_KEYCLOAK_INIT_TIMEOUT_MS}ms — host may not be mounted or the module-ready bridge is broken`));
|
|
32
|
+
}, HOST_KEYCLOAK_INIT_TIMEOUT_MS);
|
|
25
33
|
addEventListener(`${app}:init-keycloak`, eventListener);
|
|
26
34
|
dispatchEvent(new CustomEvent('module-ready', { detail: app }));
|
|
27
35
|
});
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZUhvc3RLZXljbG9hay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvcHJvdmlkZXIvc3JjL3Byb3ZpZGVIb3N0S2V5Y2xvYWsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUUxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJbkQsMEZBQTBGO0FBQzFGLE1BQU0sNkJBQTZCLEdBQUcsS0FBTSxDQUFDO0FBRTdDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsR0FBUyxFQUFZLEVBQUU7SUFDMUQsT0FBTztRQUNOLGVBQWU7UUFDZjtZQUNDLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLFVBQVUsRUFBRSxDQUFDLFFBQXlCLEVBQUUsRUFBRSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUM7WUFDakYsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDO1lBQ3ZCLEtBQUssRUFBRSxJQUFJO1NBQ1g7S0FDRCxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxlQUFnQyxFQUFFLEdBQVMsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQzVGLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO0lBQ3JDLElBQUksYUFBNEMsQ0FBQztJQUVqRCxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFO1FBQ3RDLG1CQUFtQixDQUFDLEdBQUcsR0FBRyxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUMzRCxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDO1lBQ0osTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUcsS0FBcUIsQ0FBQyxNQUF5QixDQUFDLENBQUM7WUFDakYsT0FBTyxFQUFFLENBQUM7UUFDWCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNoQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDZixDQUFDO0lBQ0YsQ0FBQyxDQUFDO0lBRUYsYUFBYSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDL0IsbUJBQW1CLENBQUMsR0FBRyxHQUFHLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzNELE1BQU0sQ0FDTCxJQUFJLEtBQUssQ0FDUiwyQkFBMkIsR0FBRyw2QkFBNkIsNkJBQTZCLG1FQUFtRSxDQUMzSixDQUNELENBQUM7SUFDSCxDQUFDLEVBQUUsNkJBQTZCLENBQUMsQ0FBQztJQUVsQyxnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFFeEQsYUFBYSxDQUFDLElBQUksV0FBVyxDQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDakUsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUFBfSU5JVElBTElaRVIsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBLZXljbG9ha1NlcnZpY2UgfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcclxuXHJcbmltcG9ydCB7IEFwcHMgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xyXG5cclxuLy8gQ292ZXJzIGhvc3QgYm9vdHN0cmFwICsgS2V5Y2xvYWsgbG9naW4gcmVkaXJlY3QgKyB0b2tlbiBleGNoYW5nZSArIHNsb3cgbmV0d29yayBidWZmZXIuXHJcbmNvbnN0IEhPU1RfS0VZQ0xPQUtfSU5JVF9USU1FT1VUX01TID0gMzBfMDAwO1xyXG5cclxuZXhwb3J0IGNvbnN0IHByb3ZpZGVIb3N0S2V5Y2xvYWsgPSAoYXBwOiBBcHBzKTogUHJvdmlkZXIgPT4ge1xyXG5cdHJldHVybiBbXHJcblx0XHRLZXljbG9ha1NlcnZpY2UsXHJcblx0XHR7XHJcblx0XHRcdHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcclxuXHRcdFx0dXNlRmFjdG9yeTogKGtleWNsb2FrOiBLZXljbG9ha1NlcnZpY2UpID0+IGhvc3RLZXljbG9ha0luaXRpYWxpemVyKGtleWNsb2FrLCBhcHApLFxyXG5cdFx0XHRkZXBzOiBbS2V5Y2xvYWtTZXJ2aWNlXSxcclxuXHRcdFx0bXVsdGk6IHRydWVcclxuXHRcdH1cclxuXHRdO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGhvc3RLZXljbG9ha0luaXRpYWxpemVyID0gKGtleWNsb2FrU2VydmljZTogS2V5Y2xvYWtTZXJ2aWNlLCBhcHA6IEFwcHMpID0+ICgpID0+XHJcblx0bmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0bGV0IHRpbWVvdXRIYW5kbGU6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xyXG5cclxuXHRcdGNvbnN0IGV2ZW50TGlzdGVuZXIgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XHJcblx0XHRcdHJlbW92ZUV2ZW50TGlzdGVuZXIoYCR7YXBwfTppbml0LWtleWNsb2FrYCwgZXZlbnRMaXN0ZW5lcik7XHJcblx0XHRcdGNsZWFyVGltZW91dCh0aW1lb3V0SGFuZGxlKTtcclxuXHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRPYmplY3QuYXNzaWduKGtleWNsb2FrU2VydmljZSwgKGV2ZW50IGFzIEN1c3RvbUV2ZW50KS5kZXRhaWwgYXMgS2V5Y2xvYWtTZXJ2aWNlKTtcclxuXHRcdFx0XHRyZXNvbHZlKCk7XHJcblx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XHJcblx0XHRcdFx0cmVqZWN0KGVycm9yKTtcclxuXHRcdFx0fVxyXG5cdFx0fTtcclxuXHJcblx0XHR0aW1lb3V0SGFuZGxlID0gc2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdHJlbW92ZUV2ZW50TGlzdGVuZXIoYCR7YXBwfTppbml0LWtleWNsb2FrYCwgZXZlbnRMaXN0ZW5lcik7XHJcblx0XHRcdHJlamVjdChcclxuXHRcdFx0XHRuZXcgRXJyb3IoXHJcblx0XHRcdFx0XHRgSG9zdCBrZXljbG9hayBpbml0IGZvciBcIiR7YXBwfVwiIGRpZCBub3QgY29tcGxldGUgd2l0aGluICR7SE9TVF9LRVlDTE9BS19JTklUX1RJTUVPVVRfTVN9bXMg4oCUIGhvc3QgbWF5IG5vdCBiZSBtb3VudGVkIG9yIHRoZSBtb2R1bGUtcmVhZHkgYnJpZGdlIGlzIGJyb2tlbmBcclxuXHRcdFx0XHQpXHJcblx0XHRcdCk7XHJcblx0XHR9LCBIT1NUX0tFWUNMT0FLX0lOSVRfVElNRU9VVF9NUyk7XHJcblxyXG5cdFx0YWRkRXZlbnRMaXN0ZW5lcihgJHthcHB9OmluaXQta2V5Y2xvYWtgLCBldmVudExpc3RlbmVyKTtcclxuXHJcblx0XHRkaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbW9kdWxlLXJlYWR5JywgeyBkZXRhaWw6IGFwcCB9KSk7XHJcblx0fSk7XHJcbiJdfQ==
|
|
@@ -164,4 +164,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
164
164
|
FontAwesomeModule
|
|
165
165
|
], template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-sitemap-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'siteMap'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between gap-2 w-full\">\r\n\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t<i class=\"pi pi-sitemap text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('siteMap') }}</span>\r\n\t\t\t\t<span class=\"total-pages\">{{ totalPages() }} {{ t('pages') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"sitemap-content\">\r\n\t\t<div class=\"search-section grid p-fluid m-0\">\r\n\t\t\t<aril-text\r\n\t\t\t\t[placeholder]=\"t('searchPages')\"\r\n\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t(ngModelChange)=\"onSearchChange()\"\r\n\t\t\t\tclass=\"col-10 m-0\">\r\n\t\t\t</aril-text>\r\n\t\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"col-2 flex align-items-center m-0 p-0\">\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesDown\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--primary-color)\"\r\n\t\t\t\t\t\tclass=\"col-1 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('expandAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"expandAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesUp\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\r\n\t\t\t\t\t\tclass=\"col-1 ml-3 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('collapseAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"collapseAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\r\n\t\t<!-- Site Map Tree -->\r\n\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"sitemap-tree\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"tree-container\">\r\n\t\t\t\t\t\t@for (node of filteredNodes(); track trackByKey($index, node)) {\r\n\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-sitemap empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('noSearchResults') : t('noPages') }}\r\n\t\t\t\t\t</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('tryDifferentKeywords') : '' }}\r\n\t\t\t\t\t</p>\r\n\t\t\t\t\t@if (searchTerm()) {\r\n\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t[label]=\"t('clearSearch')\"\r\n\t\t\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t(clickEvent)=\"searchTerm.set(''); onSearchChange()\">\r\n\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<!-- Recursive Tree Node Template -->\r\n\t\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\r\n\t\t\t<div class=\"tree-node\" [style.margin-left.px]=\"level * 20\">\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\t(click)=\"!node.routerLink ? toggleNode(node) : (visible = false)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ node.label | translateJson }}</span>\r\n\r\n\t\t\t\t\t\t@if (node.routerLink) {\r\n\t\t\t\t\t\t\t<i class=\"external-icon pi pi-external-link\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<!-- Recursive Children -->\r\n\t\t\t\t@if (node.children && node.expanded) {\r\n\t\t\t\t\t@for (child of node.children; track trackByKey($index, child)) {\r\n\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t</div>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-sitemap-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem .5rem}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header .total-pages{background:#fff3;color:#ffffffe6;padding:.25rem .5rem;border-radius:12px;font-size:.75rem;font-weight:500}.sitemap-content{display:flex;flex-direction:column;height:100%;background:var(--surface-ground)}.search-section{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.sitemap-tree{flex:1;overflow:hidden}.tree-container{padding:.5rem 0}.tree-node .node-item{display:flex;align-items:center;padding:.5rem 1rem;border-radius:6px;margin:.1rem .5rem;cursor:pointer;transition:all .2s ease;border:1px solid transparent}.tree-node .node-item:hover{background:var(--surface-hover);border-color:var(--surface-border)}.tree-node .node-item.is-page:hover{background:var(--primary-50);border-color:var(--primary-200)}.tree-node .node-item.is-page:hover .external-icon{opacity:1}.tree-node .node-item.has-children{font-weight:500}.tree-node .node-content{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0}.tree-node .toggle-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:transparent;border:none;border-radius:4px;color:var(--text-color-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.tree-node .toggle-btn:hover{background:var(--surface-hover);color:var(--primary-color)}.tree-node .toggle-btn i{font-size:.7rem}.tree-node .node-icon{color:var(--primary-color);font-size:.9rem;flex-shrink:0}.tree-node .node-label{flex:1;font-size:.9rem;color:var(--text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-node .external-icon{color:var(--text-color-secondary);font-size:.7rem;opacity:.6;transition:opacity .2s ease;flex-shrink:0}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}:host ::ng-deep .p-scrollpanel-bar-y{background:var(--primary-200);width:4px;border-radius:2px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:var(--primary-300)}\n"] }]
|
|
166
166
|
}], ctorParameters: () => [{ type: i1.LayoutService }, { type: i2.TranslocoService }] });
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvc2l0ZS1tYXAvc2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvc2l0ZS1tYXAvc2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFFdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7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LFNBQVM7aUNBQ0csSUFBSSxZQUNOLHNCQUFzQixXQUN2Qjt3QkFDUixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGlCQUFpQjtxQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgU2Nyb2xsUGFuZWxNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Njcm9sbHBhbmVsJztcclxuaW1wb3J0IHsgU2lkZWJhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc2lkZWJhcic7XHJcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvTW9kdWxlLCBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5cclxuaW1wb3J0IHsgYnJpZGdlIH0gZnJvbSAnYXJpbC9ib290L2JyaWRnZSc7XHJcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvYnV0dG9uJztcclxuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvdGV4dCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUpzb25QaXBlIH0gZnJvbSAnYXJpbC91dGlsL3BpcGVzJztcclxuXHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2FwcC5sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvbnRBd2Vzb21lTW9kdWxlIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xyXG5pbXBvcnQgeyBzb2xpZEljb25zIH0gZnJvbSAnYXJpbC91dGlsL2xpYic7XHJcblxyXG5pbnRlcmZhY2UgTWVudU5vZGUge1xyXG5cdGtleTogc3RyaW5nO1xyXG5cdGxhYmVsOiBzdHJpbmcgfCBvYmplY3Q7XHJcblx0aWNvbj86IHN0cmluZztcclxuXHRyb3V0ZXJMaW5rPzogc3RyaW5nO1xyXG5cdGNoaWxkcmVuPzogTWVudU5vZGVbXTtcclxuXHRleHBhbmRlZD86IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0c2VsZWN0b3I6ICdhcHAtc2l0ZS1tYXAtc2lkZWJhcicsXHJcblx0aW1wb3J0czogW1xyXG5cdFx0Q29tbW9uTW9kdWxlLFxyXG5cdFx0Rm9ybXNNb2R1bGUsXHJcblx0XHRSb3V0ZXJNb2R1bGUsXHJcblx0XHRTaWRlYmFyTW9kdWxlLFxyXG5cdFx0U2Nyb2xsUGFuZWxNb2R1bGUsXHJcblx0XHRUb29sdGlwTW9kdWxlLFxyXG5cdFx0QnV0dG9uQ29tcG9uZW50LFxyXG5cdFx0VGV4dENvbXBvbmVudCxcclxuXHRcdFRyYW5zbG9jb01vZHVsZSxcclxuXHRcdFRyYW5zbGF0ZUpzb25QaXBlLFxyXG5cdFx0Rm9udEF3ZXNvbWVNb2R1bGVcclxuXHRdLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9zaXRlLW1hcC1zaWRlYmFyLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9zaXRlLW1hcC1zaWRlYmFyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNpdGVNYXBTaWRlYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHRzaXRlTWFwTm9kZXMgPSBzaWduYWw8TWVudU5vZGVbXT4oW10pO1xyXG5cdGZpbHRlcmVkTm9kZXMgPSBzaWduYWw8TWVudU5vZGVbXT4oW10pO1xyXG5cdHNlYXJjaFRlcm0gPSBzaWduYWw8c3RyaW5nPignJyk7XHJcblx0dG90YWxQYWdlcyA9IHNpZ25hbDxudW1iZXI+KDApO1xyXG4gIHNvbGlkSWNvbnMgPSBzb2xpZEljb25zO1xyXG5cdFxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHVibGljIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHRyYW5zbG9jb1NlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2VcclxuXHQpIHt9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5sb2FkU2l0ZU1hcCgpO1xyXG5cdH1cclxuXHJcblx0Z2V0IHZpc2libGUoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLnNpdGVNYXBTaWRlYmFyVmlzaWJsZTtcclxuXHR9XHJcblxyXG5cdHNldCB2aXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc2l0ZU1hcFNpZGViYXJWaXNpYmxlID0gdmFsdWU7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGxvYWRTaXRlTWFwKCk6IHZvaWQge1xyXG5cdFx0Y29uc3QgbWVudUl0ZW1zID0gYnJpZGdlLmhvc3RNZW51SXRlbXMoKTtcclxuXHRcdGNvbnN0IG5vZGVzID0gdGhpcy5idWlsZFNpdGVNYXBOb2RlcyhtZW51SXRlbXMpO1xyXG5cdFx0Y29uc3QgdG90YWxDb3VudCA9IHRoaXMuY291bnRUb3RhbFBhZ2VzKG5vZGVzKTtcclxuXHJcblx0XHR0aGlzLnNpdGVNYXBOb2Rlcy5zZXQobm9kZXMpO1xyXG5cdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldChub2Rlcyk7XHJcblx0XHR0aGlzLnRvdGFsUGFnZXMuc2V0KHRvdGFsQ291bnQpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBidWlsZFNpdGVNYXBOb2RlcyhpdGVtczogYW55W10sIHBhcmVudEtleSA9ICcnKTogTWVudU5vZGVbXSB7XHJcblx0XHRyZXR1cm4gaXRlbXNcclxuXHRcdFx0LmZpbHRlcigoaXRlbSkgPT4ge1xyXG5cdFx0XHRcdC8vIEtlZXAgdGhlIGhvbWUgcGFnZSByb3V0ZSAoXCIvXCIpIGFuZCBhbnkgbm9uLWVtcHR5IHJvdXRlc1xyXG5cdFx0XHRcdHJldHVybiAhaXRlbS5yb3V0ZXJMaW5rIHx8IGl0ZW0ucm91dGVyTGluayA9PT0gJy8nIHx8IGl0ZW0ucm91dGVyTGluay50cmltKCkgIT09ICcnO1xyXG5cdFx0XHR9KVxyXG5cdFx0XHQubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IGtleSA9IHBhcmVudEtleSA/IGAke3BhcmVudEtleX0tJHtpbmRleH1gIDogYCR7aW5kZXh9YDtcclxuXHJcblx0XHRcdFx0bGV0IGxhYmVsOiBzdHJpbmcgfCBvYmplY3Q7XHJcblx0XHRcdFx0aWYgKGl0ZW0ucm91dGVyTGluayA9PT0gJy8nKSB7XHJcblx0XHRcdFx0XHRsYWJlbCA9IHsgdHI6ICdBbmFzYXlmYScsIGVuOiAnSG9tZScgfTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0bGFiZWwgPSBpdGVtLmxhYmVsIHx8IHsgdHI6ICdCaWxpbm1leWVuJywgZW46ICdVbmtub3duJyB9O1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0Y29uc3Qgbm9kZTogTWVudU5vZGUgPSB7XHJcblx0XHRcdFx0XHRrZXksXHJcblx0XHRcdFx0XHRsYWJlbCxcclxuXHRcdFx0XHRcdGljb246IGl0ZW0uaWNvbixcclxuXHRcdFx0XHRcdHJvdXRlckxpbms6IGl0ZW0ucm91dGVyTGluayxcclxuXHRcdFx0XHRcdGV4cGFuZGVkOiBmYWxzZVxyXG5cdFx0XHRcdH07XHJcblxyXG5cdFx0XHRcdGlmIChpdGVtLml0ZW1zICYmIGl0ZW0uaXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0bm9kZS5jaGlsZHJlbiA9IHRoaXMuYnVpbGRTaXRlTWFwTm9kZXMoaXRlbS5pdGVtcywga2V5KTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdHJldHVybiBub2RlO1xyXG5cdFx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgY291bnRUb3RhbFBhZ2VzKG5vZGVzOiBNZW51Tm9kZVtdKTogbnVtYmVyIHtcclxuXHRcdGxldCBjb3VudCA9IDA7XHJcblx0XHRmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcclxuXHRcdFx0aWYgKG5vZGUucm91dGVyTGluaykge1xyXG5cdFx0XHRcdGNvdW50Kys7XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKG5vZGUuY2hpbGRyZW4pIHtcclxuXHRcdFx0XHRjb3VudCArPSB0aGlzLmNvdW50VG90YWxQYWdlcyhub2RlLmNoaWxkcmVuKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGNvdW50O1xyXG5cdH1cclxuXHJcblx0b25TZWFyY2hDaGFuZ2UoKTogdm9pZCB7XHJcblx0XHRjb25zdCBzZWFyY2hUZXJtID0gdGhpcy5zZWFyY2hUZXJtKCk/LnRvTG93ZXJDYXNlKCk/LnRyaW0oKTtcclxuXHRcdGlmICghc2VhcmNoVGVybSkge1xyXG5cdFx0XHR0aGlzLmZpbHRlcmVkTm9kZXMuc2V0KHRoaXMuc2l0ZU1hcE5vZGVzKCkpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Y29uc3QgZmlsdGVyZWQgPSB0aGlzLmZpbHRlck5vZGVzKHRoaXMuc2l0ZU1hcE5vZGVzKCksIHNlYXJjaFRlcm0pO1xyXG5cdFx0XHR0aGlzLmZpbHRlcmVkTm9kZXMuc2V0KGZpbHRlcmVkKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZmlsdGVyTm9kZXMobm9kZXM6IE1lbnVOb2RlW10sIHNlYXJjaFRlcm06IHN0cmluZyk6IE1lbnVOb2RlW10ge1xyXG5cdFx0Y29uc3QgZmlsdGVyZWQ6IE1lbnVOb2RlW10gPSBbXTtcclxuXHRcdGNvbnN0IGN1cnJlbnRMYW5nID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKTtcclxuXHJcblx0XHRmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcclxuXHRcdFx0Ly8gQ29udmVydCBsYWJlbCB0byBzdHJpbmcgZm9yIHNlYXJjaCBiYXNlZCBvbiBhY3RpdmUgbGFuZ3VhZ2VcclxuXHRcdFx0Y29uc3QgbGFiZWxUZXh0ID1cclxuXHRcdFx0XHR0eXBlb2Ygbm9kZS5sYWJlbCA9PT0gJ3N0cmluZycgP1xyXG5cdFx0XHRcdFx0bm9kZS5sYWJlbFxyXG5cdFx0XHRcdDpcdChub2RlLmxhYmVsIGFzIGFueSk/LltjdXJyZW50TGFuZ10gfHwgKG5vZGUubGFiZWwgYXMgYW55KT8udHIgfHwgKG5vZGUubGFiZWwgYXMgYW55KT8uZW4gfHwgJyc7XHJcblxyXG5cdFx0XHRjb25zdCBtYXRjaGVzID0gbGFiZWxUZXh0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSk7XHJcblx0XHRcdGxldCBmaWx0ZXJlZENoaWxkcmVuOiBNZW51Tm9kZVtdID0gW107XHJcblxyXG5cdFx0XHRpZiAobm9kZS5jaGlsZHJlbikge1xyXG5cdFx0XHRcdGZpbHRlcmVkQ2hpbGRyZW4gPSB0aGlzLmZpbHRlck5vZGVzKG5vZGUuY2hpbGRyZW4sIHNlYXJjaFRlcm0pO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAobWF0Y2hlcyB8fCBmaWx0ZXJlZENoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRmaWx0ZXJlZC5wdXNoKHtcclxuXHRcdFx0XHRcdC4uLm5vZGUsXHJcblx0XHRcdFx0XHRjaGlsZHJlbjogZmlsdGVyZWRDaGlsZHJlbi5sZW5ndGggPiAwID8gZmlsdGVyZWRDaGlsZHJlbiA6IG5vZGUuY2hpbGRyZW4sXHJcblx0XHRcdFx0XHRleHBhbmRlZDogZmlsdGVyZWRDaGlsZHJlbi5sZW5ndGggPiAwXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gZmlsdGVyZWQ7XHJcblx0fVxyXG5cclxuXHRleHBhbmRBbGwoKTogdm9pZCB7XHJcblx0XHRjb25zdCBleHBhbmRlZCA9IHRoaXMuZXhwYW5kTm9kZXModGhpcy5maWx0ZXJlZE5vZGVzKCksIHRydWUpO1xyXG5cdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldChbLi4uZXhwYW5kZWRdKTtcclxuXHR9XHJcblxyXG5cdGNvbGxhcHNlQWxsKCk6IHZvaWQge1xyXG5cdFx0Y29uc3QgY29sbGFwc2VkID0gdGhpcy5leHBhbmROb2Rlcyh0aGlzLmZpbHRlcmVkTm9kZXMoKSwgZmFsc2UpO1xyXG5cdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldChbLi4uY29sbGFwc2VkXSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGV4cGFuZE5vZGVzKG5vZGVzOiBNZW51Tm9kZVtdLCBleHBhbmRlZDogYm9vbGVhbik6IE1lbnVOb2RlW10ge1xyXG5cdFx0cmV0dXJuIG5vZGVzLm1hcCgobm9kZSkgPT4gKHtcclxuXHRcdFx0Li4ubm9kZSxcclxuXHRcdFx0ZXhwYW5kZWQsXHJcblx0XHRcdGNoaWxkcmVuOiBub2RlLmNoaWxkcmVuID8gdGhpcy5leHBhbmROb2Rlcyhub2RlLmNoaWxkcmVuLCBleHBhbmRlZCkgOiB1bmRlZmluZWRcclxuXHRcdH0pKTtcclxuXHR9XHJcblxyXG5cdHRvZ2dsZU5vZGUobm9kZTogTWVudU5vZGUpOiB2b2lkIHtcclxuXHRcdG5vZGUuZXhwYW5kZWQgPSAhbm9kZS5leHBhbmRlZDtcclxuXHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQoWy4uLnRoaXMuZmlsdGVyZWROb2RlcygpXSk7XHJcblx0fVxyXG5cclxuXHR0cmFja0J5S2V5KGluZGV4OiBudW1iZXIsIG5vZGU6IE1lbnVOb2RlKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBub2RlLmtleSB8fCBgJHtpbmRleH1gO1xyXG5cdH1cclxufVxyXG4iLCI8cC1zaWRlYmFyXHJcblx0Wyh2aXNpYmxlKV09XCJ2aXNpYmxlXCJcclxuXHRwb3NpdGlvbj1cInJpZ2h0XCJcclxuXHRbdHJhbnNpdGlvbk9wdGlvbnNdPVwiJy4zcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSdcIlxyXG5cdHN0eWxlQ2xhc3M9XCJsYXlvdXQtc2l0ZW1hcC1zaWRlYmFyIHctZnVsbCBzbTp3LTMwcmVtXCJcclxuXHQqdHJhbnNsb2NvPVwibGV0IHQ7IHJlYWQ6ICdzaXRlTWFwJ1wiPlxyXG5cdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBnYXAtMiB3LWZ1bGxcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcblx0XHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1zaXRlbWFwIHRleHQtcHJpbWFyeSB0ZXh0LXhsXCI+PC9pPlxyXG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtbGdcIj57eyB0KCdzaXRlTWFwJykgfX08L3NwYW4+XHJcblx0XHRcdFx0PHNwYW4gY2xhc3M9XCJ0b3RhbC1wYWdlc1wiPnt7IHRvdGFsUGFnZXMoKSB9fSB7eyB0KCdwYWdlcycpIH19PC9zcGFuPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcblxyXG5cdDxkaXYgY2xhc3M9XCJzaXRlbWFwLWNvbnRlbnRcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJzZWFyY2gtc2VjdGlvbiBncmlkIHAtZmx1aWQgbS0wXCI+XHJcblx0XHRcdDxhcmlsLXRleHRcclxuXHRcdFx0XHRbcGxhY2Vob2xkZXJdPVwidCgnc2VhcmNoUGFnZXMnKVwiXHJcblx0XHRcdFx0WyhuZ01vZGVsKV09XCJzZWFyY2hUZXJtXCJcclxuXHRcdFx0XHQobmdNb2RlbENoYW5nZSk9XCJvblNlYXJjaENoYW5nZSgpXCJcclxuXHRcdFx0XHRjbGFzcz1cImNvbC0xMCBtLTBcIj5cclxuXHRcdFx0PC9hcmlsLXRleHQ+XHJcblx0XHRcdEBpZiAoZmlsdGVyZWROb2RlcygpLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0PGRpdiBjbGFzcz1cImNvbC0yIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIG0tMCBwLTBcIj5cclxuXHRcdFx0XHRcdDxmYS1pY29uXHJcblx0XHRcdFx0XHRcdFtpY29uXT1cInNvbGlkSWNvbnMuZmFBbmdsZXNEb3duXCJcclxuXHRcdFx0XHRcdFx0c2l6ZT1cInhsXCJcclxuXHRcdFx0XHRcdFx0c3R5bGU9XCJjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcilcIlxyXG5cdFx0XHRcdFx0XHRjbGFzcz1cImNvbC0xIGN1cnNvci1wb2ludGVyXCJcclxuXHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cInQoJ2V4cGFuZEFsbCcpXCJcclxuXHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcclxuXHRcdFx0XHRcdFx0KGNsaWNrKT1cImV4cGFuZEFsbCgpXCI+XHJcblx0XHRcdFx0XHQ8L2ZhLWljb24+XHJcblx0XHRcdFx0XHQ8ZmEtaWNvblxyXG5cdFx0XHRcdFx0XHRbaWNvbl09XCJzb2xpZEljb25zLmZhQW5nbGVzVXBcIlxyXG5cdFx0XHRcdFx0XHRzaXplPVwieGxcIlxyXG5cdFx0XHRcdFx0XHRzdHlsZT1cImNvbG9yOiB2YXIoLS1yZWQtNTAwKVwiXHJcblx0XHRcdFx0XHRcdGNsYXNzPVwiY29sLTEgbWwtMyBjdXJzb3ItcG9pbnRlclwiXHJcblx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCJ0KCdjb2xsYXBzZUFsbCcpXCJcclxuXHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcclxuXHRcdFx0XHRcdFx0KGNsaWNrKT1cImNvbGxhcHNlQWxsKClcIj5cclxuXHRcdFx0XHRcdDwvZmEtaWNvbj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0fVxyXG5cdFx0PC9kaXY+XHJcblxyXG5cdFx0PCEtLSBTaXRlIE1hcCBUcmVlIC0tPlxyXG5cdFx0QGlmIChmaWx0ZXJlZE5vZGVzKCkubGVuZ3RoID4gMCkge1xyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwic2l0ZW1hcC10cmVlXCI+XHJcblx0XHRcdFx0PHAtc2Nyb2xsUGFuZWwgW3N0eWxlXT1cInsgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScgfVwiPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRyZWUtY29udGFpbmVyXCI+XHJcblx0XHRcdFx0XHRcdEBmb3IgKG5vZGUgb2YgZmlsdGVyZWROb2RlcygpOyB0cmFjayB0cmFja0J5S2V5KCRpbmRleCwgbm9kZSkpIHtcclxuXHRcdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHJlZU5vZGVUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG5vZGUsIGxldmVsOiAwIH1cIj48L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9wLXNjcm9sbFBhbmVsPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdH0gQGVsc2Uge1xyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGVcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZW1wdHktY29udGVudFwiPlxyXG5cdFx0XHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1zaXRlbWFwIGVtcHR5LWljb25cIj48L2k+XHJcblx0XHRcdFx0XHQ8aDMgY2xhc3M9XCJlbXB0eS10aXRsZVwiPlxyXG5cdFx0XHRcdFx0XHR7eyBzZWFyY2hUZXJtKCkgPyB0KCdub1NlYXJjaFJlc3VsdHMnKSA6IHQoJ25vUGFnZXMnKSB9fVxyXG5cdFx0XHRcdFx0PC9oMz5cclxuXHRcdFx0XHRcdDxwIGNsYXNzPVwiZW1wdHktbWVzc2FnZVwiPlxyXG5cdFx0XHRcdFx0XHR7eyBzZWFyY2hUZXJtKCkgPyB0KCd0cnlEaWZmZXJlbnRLZXl3b3JkcycpIDogJycgfX1cclxuXHRcdFx0XHRcdDwvcD5cclxuXHRcdFx0XHRcdEBpZiAoc2VhcmNoVGVybSgpKSB7XHJcblx0XHRcdFx0XHRcdDxhcmlsLWJ1dHRvblxyXG5cdFx0XHRcdFx0XHRcdFtsYWJlbF09XCJ0KCdjbGVhclNlYXJjaCcpXCJcclxuXHRcdFx0XHRcdFx0XHRpY29uPVwiVElNRVNcIlxyXG5cdFx0XHRcdFx0XHRcdGNvbG9yPVwic2Vjb25kYXJ5XCJcclxuXHRcdFx0XHRcdFx0XHRbb3V0bGluZWRdPVwidHJ1ZVwiXHJcblx0XHRcdFx0XHRcdFx0c2l6ZT1cInNtXCJcclxuXHRcdFx0XHRcdFx0XHQoY2xpY2tFdmVudCk9XCJzZWFyY2hUZXJtLnNldCgnJyk7IG9uU2VhcmNoQ2hhbmdlKClcIj5cclxuXHRcdFx0XHRcdFx0PC9hcmlsLWJ1dHRvbj5cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHR9XHJcblxyXG5cdFx0PCEtLSBSZWN1cnNpdmUgVHJlZSBOb2RlIFRlbXBsYXRlIC0tPlxyXG5cdFx0PG5nLXRlbXBsYXRlICN0cmVlTm9kZVRlbXBsYXRlIGxldC1ub2RlIGxldC1sZXZlbD1cImxldmVsXCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJ0cmVlLW5vZGVcIiBbc3R5bGUubWFyZ2luLWxlZnQucHhdPVwibGV2ZWwgKiAyMFwiPlxyXG5cdFx0XHRcdDxkaXZcclxuXHRcdFx0XHRcdGNsYXNzPVwibm9kZS1pdGVtXCJcclxuXHRcdFx0XHRcdFtjbGFzcy5oYXMtY2hpbGRyZW5dPVwibm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDBcIlxyXG5cdFx0XHRcdFx0W2NsYXNzLmlzLXBhZ2VdPVwibm9kZS5yb3V0ZXJMaW5rXCJcclxuXHRcdFx0XHRcdFtyb3V0ZXJMaW5rXT1cIm5vZGUucm91dGVyTGlua1wiXHJcblx0XHRcdFx0XHQoY2xpY2spPVwiIW5vZGUucm91dGVyTGluayA/IHRvZ2dsZU5vZGUobm9kZSkgOiAodmlzaWJsZSA9IGZhbHNlKVwiPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm5vZGUtY29udGVudFwiPlxyXG5cdFx0XHRcdFx0XHRAaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRvZ2dsZS1idG5cIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVOb2RlKG5vZGUpXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpXCIgW2NsYXNzLnBpLWNoZXZyb24tcmlnaHRdPVwiIW5vZGUuZXhwYW5kZWRcIiBbY2xhc3MucGktY2hldnJvbi1kb3duXT1cIm5vZGUuZXhwYW5kZWRcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdEBpZiAobm9kZS5pY29uKSB7XHJcblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJub2RlLWljb25cIiBbY2xhc3NdPVwibm9kZS5pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibm9kZS1sYWJlbFwiPnt7IG5vZGUubGFiZWwgfCB0cmFuc2xhdGVKc29uIH19PC9zcGFuPlxyXG5cclxuXHRcdFx0XHRcdFx0QGlmIChub2RlLnJvdXRlckxpbmspIHtcclxuXHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImV4dGVybmFsLWljb24gcGkgcGktZXh0ZXJuYWwtbGlua1wiPjwvaT5cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9kaXY+XHJcblxyXG5cdFx0XHRcdDwhLS0gUmVjdXJzaXZlIENoaWxkcmVuIC0tPlxyXG5cdFx0XHRcdEBpZiAobm9kZS5jaGlsZHJlbiAmJiBub2RlLmV4cGFuZGVkKSB7XHJcblx0XHRcdFx0XHRAZm9yIChjaGlsZCBvZiBub2RlLmNoaWxkcmVuOyB0cmFjayB0cmFja0J5S2V5KCRpbmRleCwgY2hpbGQpKSB7XHJcblx0XHRcdFx0XHRcdDxuZy1jb250YWluZXJcclxuXHRcdFx0XHRcdFx0XHQqbmdUZW1wbGF0ZU91dGxldD1cInRyZWVOb2RlVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjaGlsZCwgbGV2ZWw6IGxldmVsICsgMSB9XCI+PC9uZy1jb250YWluZXI+XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvbmctdGVtcGxhdGU+XHJcblx0PC9kaXY+XHJcbjwvcC1zaWRlYmFyPlxyXG4iXX0=
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvc2l0ZS1tYXAvc2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvc2l0ZS1tYXAvc2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFFdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7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LFNBQVM7aUNBQ0csSUFBSSxZQUNOLHNCQUFzQixXQUN2Qjt3QkFDUixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGlCQUFpQjtxQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgU2Nyb2xsUGFuZWxNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Njcm9sbHBhbmVsJztcclxuaW1wb3J0IHsgU2lkZWJhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc2lkZWJhcic7XHJcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvTW9kdWxlLCBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5cclxuaW1wb3J0IHsgYnJpZGdlIH0gZnJvbSAnYXJpbC9ib290L2JyaWRnZSc7XHJcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvYnV0dG9uJztcclxuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvdGV4dCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUpzb25QaXBlIH0gZnJvbSAnYXJpbC91dGlsL3BpcGVzJztcclxuXHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2FwcC5sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvbnRBd2Vzb21lTW9kdWxlIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xyXG5pbXBvcnQgeyBzb2xpZEljb25zIH0gZnJvbSAnYXJpbC91dGlsL2xpYic7XHJcblxyXG5pbnRlcmZhY2UgTWVudU5vZGUge1xyXG5cdGtleTogc3RyaW5nO1xyXG5cdGxhYmVsOiBzdHJpbmcgfCBvYmplY3Q7XHJcblx0aWNvbj86IHN0cmluZztcclxuXHRyb3V0ZXJMaW5rPzogc3RyaW5nO1xyXG5cdGNoaWxkcmVuPzogTWVudU5vZGVbXTtcclxuXHRleHBhbmRlZD86IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0c2VsZWN0b3I6ICdhcHAtc2l0ZS1tYXAtc2lkZWJhcicsXHJcblx0aW1wb3J0czogW1xyXG5cdFx0Q29tbW9uTW9kdWxlLFxyXG5cdFx0Rm9ybXNNb2R1bGUsXHJcblx0XHRSb3V0ZXJNb2R1bGUsXHJcblx0XHRTaWRlYmFyTW9kdWxlLFxyXG5cdFx0U2Nyb2xsUGFuZWxNb2R1bGUsXHJcblx0XHRUb29sdGlwTW9kdWxlLFxyXG5cdFx0QnV0dG9uQ29tcG9uZW50LFxyXG5cdFx0VGV4dENvbXBvbmVudCxcclxuXHRcdFRyYW5zbG9jb01vZHVsZSxcclxuXHRcdFRyYW5zbGF0ZUpzb25QaXBlLFxyXG5cdFx0Rm9udEF3ZXNvbWVNb2R1bGVcclxuXHRdLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9zaXRlLW1hcC1zaWRlYmFyLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9zaXRlLW1hcC1zaWRlYmFyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNpdGVNYXBTaWRlYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHRzaXRlTWFwTm9kZXMgPSBzaWduYWw8TWVudU5vZGVbXT4oW10pO1xyXG5cdGZpbHRlcmVkTm9kZXMgPSBzaWduYWw8TWVudU5vZGVbXT4oW10pO1xyXG5cdHNlYXJjaFRlcm0gPSBzaWduYWw8c3RyaW5nPignJyk7XHJcblx0dG90YWxQYWdlcyA9IHNpZ25hbDxudW1iZXI+KDApO1xyXG4gIHNvbGlkSWNvbnMgPSBzb2xpZEljb25zO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHB1YmxpYyBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlXHJcblx0KSB7fVxyXG5cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdHRoaXMubG9hZFNpdGVNYXAoKTtcclxuXHR9XHJcblxyXG5cdGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5zaXRlTWFwU2lkZWJhclZpc2libGU7XHJcblx0fVxyXG5cclxuXHRzZXQgdmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLnNpdGVNYXBTaWRlYmFyVmlzaWJsZSA9IHZhbHVlO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBsb2FkU2l0ZU1hcCgpOiB2b2lkIHtcclxuXHRcdGNvbnN0IG1lbnVJdGVtcyA9IGJyaWRnZS5ob3N0TWVudUl0ZW1zKCk7XHJcblx0XHRjb25zdCBub2RlcyA9IHRoaXMuYnVpbGRTaXRlTWFwTm9kZXMobWVudUl0ZW1zKTtcclxuXHRcdGNvbnN0IHRvdGFsQ291bnQgPSB0aGlzLmNvdW50VG90YWxQYWdlcyhub2Rlcyk7XHJcblxyXG5cdFx0dGhpcy5zaXRlTWFwTm9kZXMuc2V0KG5vZGVzKTtcclxuXHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQobm9kZXMpO1xyXG5cdFx0dGhpcy50b3RhbFBhZ2VzLnNldCh0b3RhbENvdW50KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYnVpbGRTaXRlTWFwTm9kZXMoaXRlbXM6IGFueVtdLCBwYXJlbnRLZXkgPSAnJyk6IE1lbnVOb2RlW10ge1xyXG5cdFx0cmV0dXJuIGl0ZW1zXHJcblx0XHRcdC5maWx0ZXIoKGl0ZW0pID0+IHtcclxuXHRcdFx0XHQvLyBLZWVwIHRoZSBob21lIHBhZ2Ugcm91dGUgKFwiL1wiKSBhbmQgYW55IG5vbi1lbXB0eSByb3V0ZXNcclxuXHRcdFx0XHRyZXR1cm4gIWl0ZW0ucm91dGVyTGluayB8fCBpdGVtLnJvdXRlckxpbmsgPT09ICcvJyB8fCBpdGVtLnJvdXRlckxpbmsudHJpbSgpICE9PSAnJztcclxuXHRcdFx0fSlcclxuXHRcdFx0Lm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRjb25zdCBrZXkgPSBwYXJlbnRLZXkgPyBgJHtwYXJlbnRLZXl9LSR7aW5kZXh9YCA6IGAke2luZGV4fWA7XHJcblxyXG5cdFx0XHRcdGxldCBsYWJlbDogc3RyaW5nIHwgb2JqZWN0O1xyXG5cdFx0XHRcdGlmIChpdGVtLnJvdXRlckxpbmsgPT09ICcvJykge1xyXG5cdFx0XHRcdFx0bGFiZWwgPSB7IHRyOiAnQW5hc2F5ZmEnLCBlbjogJ0hvbWUnIH07XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGxhYmVsID0gaXRlbS5sYWJlbCB8fCB7IHRyOiAnQmlsaW5tZXllbicsIGVuOiAnVW5rbm93bicgfTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdGNvbnN0IG5vZGU6IE1lbnVOb2RlID0ge1xyXG5cdFx0XHRcdFx0a2V5LFxyXG5cdFx0XHRcdFx0bGFiZWwsXHJcblx0XHRcdFx0XHRpY29uOiBpdGVtLmljb24sXHJcblx0XHRcdFx0XHRyb3V0ZXJMaW5rOiBpdGVtLnJvdXRlckxpbmssXHJcblx0XHRcdFx0XHRleHBhbmRlZDogZmFsc2VcclxuXHRcdFx0XHR9O1xyXG5cclxuXHRcdFx0XHRpZiAoaXRlbS5pdGVtcyAmJiBpdGVtLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdG5vZGUuY2hpbGRyZW4gPSB0aGlzLmJ1aWxkU2l0ZU1hcE5vZGVzKGl0ZW0uaXRlbXMsIGtleSk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRyZXR1cm4gbm9kZTtcclxuXHRcdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNvdW50VG90YWxQYWdlcyhub2RlczogTWVudU5vZGVbXSk6IG51bWJlciB7XHJcblx0XHRsZXQgY291bnQgPSAwO1xyXG5cdFx0Zm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XHJcblx0XHRcdGlmIChub2RlLnJvdXRlckxpbmspIHtcclxuXHRcdFx0XHRjb3VudCsrO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChub2RlLmNoaWxkcmVuKSB7XHJcblx0XHRcdFx0Y291bnQgKz0gdGhpcy5jb3VudFRvdGFsUGFnZXMobm9kZS5jaGlsZHJlbik7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBjb3VudDtcclxuXHR9XHJcblxyXG5cdG9uU2VhcmNoQ2hhbmdlKCk6IHZvaWQge1xyXG5cdFx0Y29uc3Qgc2VhcmNoVGVybSA9IHRoaXMuc2VhcmNoVGVybSgpPy50b0xvd2VyQ2FzZSgpPy50cmltKCk7XHJcblx0XHRpZiAoIXNlYXJjaFRlcm0pIHtcclxuXHRcdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldCh0aGlzLnNpdGVNYXBOb2RlcygpKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNvbnN0IGZpbHRlcmVkID0gdGhpcy5maWx0ZXJOb2Rlcyh0aGlzLnNpdGVNYXBOb2RlcygpLCBzZWFyY2hUZXJtKTtcclxuXHRcdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldChmaWx0ZXJlZCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGZpbHRlck5vZGVzKG5vZGVzOiBNZW51Tm9kZVtdLCBzZWFyY2hUZXJtOiBzdHJpbmcpOiBNZW51Tm9kZVtdIHtcclxuXHRcdGNvbnN0IGZpbHRlcmVkOiBNZW51Tm9kZVtdID0gW107XHJcblx0XHRjb25zdCBjdXJyZW50TGFuZyA9IHRoaXMudHJhbnNsb2NvU2VydmljZS5nZXRBY3RpdmVMYW5nKCk7XHJcblxyXG5cdFx0Zm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XHJcblx0XHRcdC8vIENvbnZlcnQgbGFiZWwgdG8gc3RyaW5nIGZvciBzZWFyY2ggYmFzZWQgb24gYWN0aXZlIGxhbmd1YWdlXHJcblx0XHRcdGNvbnN0IGxhYmVsVGV4dCA9XHJcblx0XHRcdFx0dHlwZW9mIG5vZGUubGFiZWwgPT09ICdzdHJpbmcnID9cclxuXHRcdFx0XHRcdG5vZGUubGFiZWxcclxuXHRcdFx0XHQ6XHQobm9kZS5sYWJlbCBhcyBhbnkpPy5bY3VycmVudExhbmddIHx8IChub2RlLmxhYmVsIGFzIGFueSk/LnRyIHx8IChub2RlLmxhYmVsIGFzIGFueSk/LmVuIHx8ICcnO1xyXG5cclxuXHRcdFx0Y29uc3QgbWF0Y2hlcyA9IGxhYmVsVGV4dC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0pO1xyXG5cdFx0XHRsZXQgZmlsdGVyZWRDaGlsZHJlbjogTWVudU5vZGVbXSA9IFtdO1xyXG5cclxuXHRcdFx0aWYgKG5vZGUuY2hpbGRyZW4pIHtcclxuXHRcdFx0XHRmaWx0ZXJlZENoaWxkcmVuID0gdGhpcy5maWx0ZXJOb2Rlcyhub2RlLmNoaWxkcmVuLCBzZWFyY2hUZXJtKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKG1hdGNoZXMgfHwgZmlsdGVyZWRDaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0ZmlsdGVyZWQucHVzaCh7XHJcblx0XHRcdFx0XHQuLi5ub2RlLFxyXG5cdFx0XHRcdFx0Y2hpbGRyZW46IGZpbHRlcmVkQ2hpbGRyZW4ubGVuZ3RoID4gMCA/IGZpbHRlcmVkQ2hpbGRyZW4gOiBub2RlLmNoaWxkcmVuLFxyXG5cdFx0XHRcdFx0ZXhwYW5kZWQ6IGZpbHRlcmVkQ2hpbGRyZW4ubGVuZ3RoID4gMFxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIGZpbHRlcmVkO1xyXG5cdH1cclxuXHJcblx0ZXhwYW5kQWxsKCk6IHZvaWQge1xyXG5cdFx0Y29uc3QgZXhwYW5kZWQgPSB0aGlzLmV4cGFuZE5vZGVzKHRoaXMuZmlsdGVyZWROb2RlcygpLCB0cnVlKTtcclxuXHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQoWy4uLmV4cGFuZGVkXSk7XHJcblx0fVxyXG5cclxuXHRjb2xsYXBzZUFsbCgpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGNvbGxhcHNlZCA9IHRoaXMuZXhwYW5kTm9kZXModGhpcy5maWx0ZXJlZE5vZGVzKCksIGZhbHNlKTtcclxuXHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQoWy4uLmNvbGxhcHNlZF0pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBleHBhbmROb2Rlcyhub2RlczogTWVudU5vZGVbXSwgZXhwYW5kZWQ6IGJvb2xlYW4pOiBNZW51Tm9kZVtdIHtcclxuXHRcdHJldHVybiBub2Rlcy5tYXAoKG5vZGUpID0+ICh7XHJcblx0XHRcdC4uLm5vZGUsXHJcblx0XHRcdGV4cGFuZGVkLFxyXG5cdFx0XHRjaGlsZHJlbjogbm9kZS5jaGlsZHJlbiA/IHRoaXMuZXhwYW5kTm9kZXMobm9kZS5jaGlsZHJlbiwgZXhwYW5kZWQpIDogdW5kZWZpbmVkXHJcblx0XHR9KSk7XHJcblx0fVxyXG5cclxuXHR0b2dnbGVOb2RlKG5vZGU6IE1lbnVOb2RlKTogdm9pZCB7XHJcblx0XHRub2RlLmV4cGFuZGVkID0gIW5vZGUuZXhwYW5kZWQ7XHJcblx0XHR0aGlzLmZpbHRlcmVkTm9kZXMuc2V0KFsuLi50aGlzLmZpbHRlcmVkTm9kZXMoKV0pO1xyXG5cdH1cclxuXHJcblx0dHJhY2tCeUtleShpbmRleDogbnVtYmVyLCBub2RlOiBNZW51Tm9kZSk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gbm9kZS5rZXkgfHwgYCR7aW5kZXh9YDtcclxuXHR9XHJcbn1cclxuIiwiPHAtc2lkZWJhclxyXG5cdFsodmlzaWJsZSldPVwidmlzaWJsZVwiXHJcblx0cG9zaXRpb249XCJyaWdodFwiXHJcblx0W3RyYW5zaXRpb25PcHRpb25zXT1cIicuM3MgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSknXCJcclxuXHRzdHlsZUNsYXNzPVwibGF5b3V0LXNpdGVtYXAtc2lkZWJhciB3LWZ1bGwgc206dy0zMHJlbVwiXHJcblx0KnRyYW5zbG9jbz1cImxldCB0OyByZWFkOiAnc2l0ZU1hcCdcIj5cclxuXHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gZ2FwLTIgdy1mdWxsXCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG5cdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktc2l0ZW1hcCB0ZXh0LXByaW1hcnkgdGV4dC14bFwiPjwvaT5cclxuXHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWxnXCI+e3sgdCgnc2l0ZU1hcCcpIH19PC9zcGFuPlxyXG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwidG90YWwtcGFnZXNcIj57eyB0b3RhbFBhZ2VzKCkgfX0ge3sgdCgncGFnZXMnKSB9fTwvc3Bhbj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG5cclxuXHQ8ZGl2IGNsYXNzPVwic2l0ZW1hcC1jb250ZW50XCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwic2VhcmNoLXNlY3Rpb24gZ3JpZCBwLWZsdWlkIG0tMFwiPlxyXG5cdFx0XHQ8YXJpbC10ZXh0XHJcblx0XHRcdFx0W3BsYWNlaG9sZGVyXT1cInQoJ3NlYXJjaFBhZ2VzJylcIlxyXG5cdFx0XHRcdFsobmdNb2RlbCldPVwic2VhcmNoVGVybVwiXHJcblx0XHRcdFx0KG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2hDaGFuZ2UoKVwiXHJcblx0XHRcdFx0Y2xhc3M9XCJjb2wtMTAgbS0wXCI+XHJcblx0XHRcdDwvYXJpbC10ZXh0PlxyXG5cdFx0XHRAaWYgKGZpbHRlcmVkTm9kZXMoKS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtMiBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtLTAgcC0wXCI+XHJcblx0XHRcdFx0XHQ8ZmEtaWNvblxyXG5cdFx0XHRcdFx0XHRbaWNvbl09XCJzb2xpZEljb25zLmZhQW5nbGVzRG93blwiXHJcblx0XHRcdFx0XHRcdHNpemU9XCJ4bFwiXHJcblx0XHRcdFx0XHRcdHN0eWxlPVwiY29sb3I6IHZhcigtLXByaW1hcnktY29sb3IpXCJcclxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJjb2wtMSBjdXJzb3ItcG9pbnRlclwiXHJcblx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCJ0KCdleHBhbmRBbGwnKVwiXHJcblx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcblx0XHRcdFx0XHRcdChjbGljayk9XCJleHBhbmRBbGwoKVwiPlxyXG5cdFx0XHRcdFx0PC9mYS1pY29uPlxyXG5cdFx0XHRcdFx0PGZhLWljb25cclxuXHRcdFx0XHRcdFx0W2ljb25dPVwic29saWRJY29ucy5mYUFuZ2xlc1VwXCJcclxuXHRcdFx0XHRcdFx0c2l6ZT1cInhsXCJcclxuXHRcdFx0XHRcdFx0c3R5bGU9XCJjb2xvcjogdmFyKC0tcmVkLTUwMClcIlxyXG5cdFx0XHRcdFx0XHRjbGFzcz1cImNvbC0xIG1sLTMgY3Vyc29yLXBvaW50ZXJcIlxyXG5cdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwidCgnY29sbGFwc2VBbGwnKVwiXHJcblx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXHJcblx0XHRcdFx0XHRcdChjbGljayk9XCJjb2xsYXBzZUFsbCgpXCI+XHJcblx0XHRcdFx0XHQ8L2ZhLWljb24+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdH1cclxuXHRcdDwvZGl2PlxyXG5cclxuXHRcdDwhLS0gU2l0ZSBNYXAgVHJlZSAtLT5cclxuXHRcdEBpZiAoZmlsdGVyZWROb2RlcygpLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0PGRpdiBjbGFzcz1cInNpdGVtYXAtdHJlZVwiPlxyXG5cdFx0XHRcdDxwLXNjcm9sbFBhbmVsIFtzdHlsZV09XCJ7IHdpZHRoOiAnMTAwJScsIGhlaWdodDogJzEwMCUnIH1cIj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0cmVlLWNvbnRhaW5lclwiPlxyXG5cdFx0XHRcdFx0XHRAZm9yIChub2RlIG9mIGZpbHRlcmVkTm9kZXMoKTsgdHJhY2sgdHJhY2tCeUtleSgkaW5kZXgsIG5vZGUpKSB7XHJcblx0XHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRyZWVOb2RlVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBub2RlLCBsZXZlbDogMCB9XCI+PC9uZy1jb250YWluZXI+XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvcC1zY3JvbGxQYW5lbD5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHR9IEBlbHNlIHtcclxuXHRcdFx0PGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImVtcHR5LWNvbnRlbnRcIj5cclxuXHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktc2l0ZW1hcCBlbXB0eS1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0PGgzIGNsYXNzPVwiZW1wdHktdGl0bGVcIj5cclxuXHRcdFx0XHRcdFx0e3sgc2VhcmNoVGVybSgpID8gdCgnbm9TZWFyY2hSZXN1bHRzJykgOiB0KCdub1BhZ2VzJykgfX1cclxuXHRcdFx0XHRcdDwvaDM+XHJcblx0XHRcdFx0XHQ8cCBjbGFzcz1cImVtcHR5LW1lc3NhZ2VcIj5cclxuXHRcdFx0XHRcdFx0e3sgc2VhcmNoVGVybSgpID8gdCgndHJ5RGlmZmVyZW50S2V5d29yZHMnKSA6ICcnIH19XHJcblx0XHRcdFx0XHQ8L3A+XHJcblx0XHRcdFx0XHRAaWYgKHNlYXJjaFRlcm0oKSkge1xyXG5cdFx0XHRcdFx0XHQ8YXJpbC1idXR0b25cclxuXHRcdFx0XHRcdFx0XHRbbGFiZWxdPVwidCgnY2xlYXJTZWFyY2gnKVwiXHJcblx0XHRcdFx0XHRcdFx0aWNvbj1cIlRJTUVTXCJcclxuXHRcdFx0XHRcdFx0XHRjb2xvcj1cInNlY29uZGFyeVwiXHJcblx0XHRcdFx0XHRcdFx0W291dGxpbmVkXT1cInRydWVcIlxyXG5cdFx0XHRcdFx0XHRcdHNpemU9XCJzbVwiXHJcblx0XHRcdFx0XHRcdFx0KGNsaWNrRXZlbnQpPVwic2VhcmNoVGVybS5zZXQoJycpOyBvblNlYXJjaENoYW5nZSgpXCI+XHJcblx0XHRcdFx0XHRcdDwvYXJpbC1idXR0b24+XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0fVxyXG5cclxuXHRcdDwhLS0gUmVjdXJzaXZlIFRyZWUgTm9kZSBUZW1wbGF0ZSAtLT5cclxuXHRcdDxuZy10ZW1wbGF0ZSAjdHJlZU5vZGVUZW1wbGF0ZSBsZXQtbm9kZSBsZXQtbGV2ZWw9XCJsZXZlbFwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwidHJlZS1ub2RlXCIgW3N0eWxlLm1hcmdpbi1sZWZ0LnB4XT1cImxldmVsICogMjBcIj5cclxuXHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRjbGFzcz1cIm5vZGUtaXRlbVwiXHJcblx0XHRcdFx0XHRbY2xhc3MuaGFzLWNoaWxkcmVuXT1cIm5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwXCJcclxuXHRcdFx0XHRcdFtjbGFzcy5pcy1wYWdlXT1cIm5vZGUucm91dGVyTGlua1wiXHJcblx0XHRcdFx0XHRbcm91dGVyTGlua109XCJub2RlLnJvdXRlckxpbmtcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cIiFub2RlLnJvdXRlckxpbmsgPyB0b2dnbGVOb2RlKG5vZGUpIDogKHZpc2libGUgPSBmYWxzZSlcIj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJub2RlLWNvbnRlbnRcIj5cclxuXHRcdFx0XHRcdFx0QGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0b2dnbGUtYnRuXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdG9nZ2xlTm9kZShub2RlKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJwaVwiIFtjbGFzcy5waS1jaGV2cm9uLXJpZ2h0XT1cIiFub2RlLmV4cGFuZGVkXCIgW2NsYXNzLnBpLWNoZXZyb24tZG93bl09XCJub2RlLmV4cGFuZGVkXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRAaWYgKG5vZGUuaWNvbikge1xyXG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwibm9kZS1pY29uXCIgW2NsYXNzXT1cIm5vZGUuaWNvblwiPjwvaT5cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm5vZGUtbGFiZWxcIj57eyBub2RlLmxhYmVsIHwgdHJhbnNsYXRlSnNvbiB9fTwvc3Bhbj5cclxuXHJcblx0XHRcdFx0XHRcdEBpZiAobm9kZS5yb3V0ZXJMaW5rKSB7XHJcblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJleHRlcm5hbC1pY29uIHBpIHBpLWV4dGVybmFsLWxpbmtcIj48L2k+XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cclxuXHRcdFx0XHQ8IS0tIFJlY3Vyc2l2ZSBDaGlsZHJlbiAtLT5cclxuXHRcdFx0XHRAaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5leHBhbmRlZCkge1xyXG5cdFx0XHRcdFx0QGZvciAoY2hpbGQgb2Ygbm9kZS5jaGlsZHJlbjsgdHJhY2sgdHJhY2tCeUtleSgkaW5kZXgsIGNoaWxkKSkge1xyXG5cdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyXHJcblx0XHRcdFx0XHRcdFx0Km5nVGVtcGxhdGVPdXRsZXQ9XCJ0cmVlTm9kZVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY2hpbGQsIGxldmVsOiBsZXZlbCArIDEgfVwiPjwvbmctY29udGFpbmVyPlxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdDwvZGl2PlxyXG48L3Atc2lkZWJhcj5cclxuIl19
|