@c8y/ngx-components 1019.22.0 → 1019.23.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/auth-configuration/auth-configuration.module.d.ts.map +1 -1
- package/auth-configuration/basic-settings/auth-configuration.service.d.ts +7 -1
- package/auth-configuration/basic-settings/auth-configuration.service.d.ts.map +1 -1
- package/auth-configuration/basic-settings/login-settings.component.d.ts +3 -0
- package/auth-configuration/basic-settings/login-settings.component.d.ts.map +1 -1
- package/auth-configuration/pattern-messages.data.d.ts +12 -0
- package/auth-configuration/pattern-messages.data.d.ts.map +1 -0
- package/esm2022/auth-configuration/auth-configuration.module.mjs +5 -2
- package/esm2022/auth-configuration/basic-settings/auth-configuration.service.mjs +24 -5
- package/esm2022/auth-configuration/basic-settings/login-settings.component.mjs +10 -3
- package/esm2022/auth-configuration/pattern-messages.data.mjs +13 -0
- package/esm2022/core/login/credentials.component.mjs +3 -3
- package/esm2022/sub-assets/sub-assets-grid.component.mjs +6 -3
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs +47 -7
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sub-assets.mjs +5 -2
- package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +2 -2
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/locales/de.po +15 -0
- package/locales/es.po +15 -0
- package/locales/fr.po +15 -0
- package/locales/locales.pot +18 -0
- package/locales/nl.po +15 -0
- package/locales/pl.po +15 -0
- package/locales/pt_BR.po +15 -0
- package/package.json +1 -1
- package/sub-assets/sub-assets-grid.component.d.ts +1 -0
- package/sub-assets/sub-assets-grid.component.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-configuration.module.d.ts","sourceRoot":"","sources":["../../auth-configuration/auth-configuration.module.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"auth-configuration.module.d.ts","sourceRoot":"","sources":["../../auth-configuration/auth-configuration.module.ts"],"names":[],"mappings":";;;AASA,qBAca,uBAAuB;yCAAvB,uBAAuB;0CAAvB,uBAAuB;0CAAvB,uBAAuB;CAAG"}
|
|
@@ -16,7 +16,7 @@ export declare class AuthConfigurationService {
|
|
|
16
16
|
private tenantOptionsWithDefaultValue;
|
|
17
17
|
constructor(tenantLoginOptionsService: TenantLoginOptionsService, tenantOptionsService: TenantOptionsService, systemOptionsService: SystemOptionsService, appState: AppStateService, tenantUiService: TenantUiService, tenantLoginOptionMapper: TenantLoginOptionMapper, tenantService: TenantService);
|
|
18
18
|
getAuthConfiguration$(): Observable<AuthConfiguration>;
|
|
19
|
-
save(newAuthConfiguration: AuthConfiguration, previousAuthConfiguration: AuthConfiguration): Promise<[IResult<ITenantLoginOption>, IResult<ITenantLoginOption>,
|
|
19
|
+
save(newAuthConfiguration: AuthConfiguration, previousAuthConfiguration: AuthConfiguration): Promise<[IResult<ITenantLoginOption>, IResult<ITenantLoginOption>, ...IResult<ITenantOption>[]]>;
|
|
20
20
|
private map;
|
|
21
21
|
private saveOrUpdateLoginOption;
|
|
22
22
|
private prepareBasicLoginOption;
|
|
@@ -36,6 +36,12 @@ export declare class AuthConfigurationService {
|
|
|
36
36
|
* This part will be removed after implementing new endpoint in MTM-50490.
|
|
37
37
|
*/
|
|
38
38
|
private fixTfaEnforcedSystemOption;
|
|
39
|
+
/**
|
|
40
|
+
* Returns a promise or null.
|
|
41
|
+
* This method is needed now, because simply changing TFA strategy tenant option does not trigger all the necessary backend logic to apply the change, therefore, we need to call tenant's `/tfa` endpoint, which applies the change for all users in the tenant.
|
|
42
|
+
* Within MTM-50490, we're going to simplify the process further by replacing multiple requests with one new endpoint that will handle saving of all authentication settings.
|
|
43
|
+
*/
|
|
44
|
+
private fixTfaStrategy;
|
|
39
45
|
private isSmsApplicationAvailable$;
|
|
40
46
|
private getOptionsObject;
|
|
41
47
|
private getDefaultLoginOption;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-configuration.service.d.ts","sourceRoot":"","sources":["../../../auth-configuration/basic-settings/auth-configuration.service.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,OAAO,EACP,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,yBAAyB,EAEzB,oBAAoB,EACpB,aAAa,
|
|
1
|
+
{"version":3,"file":"auth-configuration.service.d.ts","sourceRoot":"","sources":["../../../auth-configuration/basic-settings/auth-configuration.service.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,OAAO,EACP,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,yBAAyB,EAEzB,oBAAoB,EACpB,aAAa,EAGd,MAAM,aAAa,CAAC;AAErB,OAAO,EAAkB,UAAU,EAAM,MAAM,MAAM,CAAC;AAEtD,OAAO,EAAE,iBAAiB,EAAW,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;;AAEvE,qBACa,wBAAwB;IAwBjC,OAAO,CAAC,yBAAyB;IACjC,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,uBAAuB;IAC/B,OAAO,CAAC,aAAa;IA7BvB,OAAO,CAAC,6BAA6B,CAQnC;IAEF,OAAO,CAAC,6BAA6B,CAUnC;gBAGQ,yBAAyB,EAAE,yBAAyB,EACpD,oBAAoB,EAAE,oBAAoB,EAC1C,oBAAoB,EAAE,oBAAoB,EAC1C,QAAQ,EAAE,eAAe,EACzB,eAAe,EAAE,eAAe,EAChC,uBAAuB,EAAE,uBAAuB,EAChD,aAAa,EAAE,aAAa;IAGtC,qBAAqB,IAAI,UAAU,CAAC,iBAAiB,CAAC;IAWtD,IAAI,CAAC,oBAAoB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,iBAAiB;IA4B1F,OAAO,CAAC,GAAG;IAQX,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,uBAAuB;IAkB/B,OAAO,CAAC,+BAA+B;IAqBvC,OAAO,CAAC,+BAA+B;IAWvC,OAAO,CAAC,mCAAmC;IAO3C,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,oBAAoB;IAoB5B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,4BAA4B;IAUpC,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,iBAAiB;IAmBzB;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAYlC;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,0BAA0B;IAIlC,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,qBAAqB;yCAtRlB,wBAAwB;6CAAxB,wBAAwB;CA+RpC"}
|
|
@@ -7,6 +7,7 @@ export declare class LoginSettingsComponent {
|
|
|
7
7
|
private tenantUiService;
|
|
8
8
|
PREFERRED_LOGIN_MODE_POPOVER: "Main difference is the storage of the authentication information. With Basic Auth, it is saved in a session storage and with OAI-Secure in a HttpOnly cookie. OAI-Secure grant is recommended as the authentication information is not accessible via JavaScript. Single sign-on redirect allows a user to login with a single 3rd-party authorization server using the OAuth2 protocol.";
|
|
9
9
|
ENFORCED_BY_PLATFORM_POPOVER: "The setting is enforced on the platform level.";
|
|
10
|
+
IGNORE_CASE_SENSITIVITY_POPOVER: "If selected, the letter case of the username does not matter during login.";
|
|
10
11
|
authConfiguration: AuthConfiguration;
|
|
11
12
|
isOauth2: boolean;
|
|
12
13
|
tenantLoginOptionTypeEnum: typeof TenantLoginOptionType;
|
|
@@ -22,6 +23,8 @@ export declare class LoginSettingsComponent {
|
|
|
22
23
|
get systemPasswordEnforceStrength(): any;
|
|
23
24
|
get passwordEnforceStrength(): any;
|
|
24
25
|
set passwordEnforceStrength(value: any);
|
|
26
|
+
get tenantLoginIgnoreCase(): any;
|
|
27
|
+
set tenantLoginIgnoreCase(value: any);
|
|
25
28
|
static ɵfac: i0.ɵɵFactoryDeclaration<LoginSettingsComponent, never>;
|
|
26
29
|
static ɵcmp: i0.ɵɵComponentDeclaration<LoginSettingsComponent, "c8y-login-settings", never, { "authConfiguration": { "alias": "authConfiguration"; "required": false; }; }, {}, never, never, false, never>;
|
|
27
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login-settings.component.d.ts","sourceRoot":"","sources":["../../../auth-configuration/basic-settings/login-settings.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,aAAa,EAAE,MAAM,eAAe,CAAC;AAGhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;;AAEpD,qBAKa,sBAAsB;
|
|
1
|
+
{"version":3,"file":"login-settings.component.d.ts","sourceRoot":"","sources":["../../../auth-configuration/basic-settings/login-settings.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,aAAa,EAAE,MAAM,eAAe,CAAC;AAGhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;;AAEpD,qBAKa,sBAAsB;IAoBrB,OAAO,CAAC,eAAe;IAnBnC,4BAA4B,6XAE1B;IACF,4BAA4B,mDAA6D;IACzF,+BAA+B,+EAE7B;IAGF,iBAAiB,EAAE,iBAAiB,CAAC;IAErC,QAAQ,EAAE,OAAO,CAAC;IAClB,yBAAyB,+BAAyB;IAElD,OAAO,CAAC,iBAAiB,CAAc;IACvC,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,4BAA4B,CAAuB;IAC3D,OAAO,CAAC,4BAA4B,CAAsB;gBAEtC,eAAe,EAAE,eAAe;IAEpD,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAQzC,IAAI,2BAA2B,QAE9B;IAED,IAAI,qBAAqB,QAIxB;IAED,IAAI,qBAAqB,CAAC,KAAK,KAAA,EAI9B;IAED,IAAI,6BAA6B,QAIhC;IAED,IAAI,uBAAuB,QAM1B;IAED,IAAI,uBAAuB,CAAC,KAAK,KAAA,EAMhC;IAED,IAAI,qBAAqB,QAExB;IAED,IAAI,qBAAqB,CAAC,KAAK,KAAA,EAE9B;yCA1EU,sBAAsB;2CAAtB,sBAAsB;CA2ElC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const MESSAGES_AUTH_CONFIGURATION: {
|
|
2
|
+
readonly '^The tenant option: configuration/tenant.login.ignore-case cannot be enabled : Username or alias is duplicated when case sensitivity is ignored.$': {
|
|
3
|
+
readonly gettext: "Could not enable the \"Ignore case when logging in\" feature. Duplicate usernames or aliases were detected when ignoring case sensitivity. Resolve conflicting names and try again.";
|
|
4
|
+
};
|
|
5
|
+
readonly "^The tenant option: configuration/tenant.login.ignore-case cannot be managed : Feature 'Ignore case on username or alias login' is not available.$": {
|
|
6
|
+
readonly gettext: "The feature \"Ignore case when logging in\" is not available.";
|
|
7
|
+
};
|
|
8
|
+
readonly "^The tenant option: configuration/tenant.login.ignore-case cannot be managed : Only a tenant administrator can change the state of the 'Ignore case on username or alias login' feature.$": {
|
|
9
|
+
readonly gettext: "Only a tenant administrator can configure the \"Ignore case when logging in\" option.";
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=pattern-messages.data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern-messages.data.d.ts","sourceRoot":"","sources":["../../auth-configuration/pattern-messages.data.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,2BAA2B;;;;;;;;;;CAiB9B,CAAC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { NgModule } from '@angular/core';
|
|
2
2
|
import { BasicSettingsModule } from './basic-settings/basic-settings.module';
|
|
3
3
|
import { SsoConfigurationModule } from './sso-configuration/sso-configuration.module';
|
|
4
|
-
import { hookNavigator, hookRoute, hookTab } from '@c8y/ngx-components';
|
|
4
|
+
import { hookNavigator, hookPatternMessages, hookRoute, hookTab } from '@c8y/ngx-components';
|
|
5
5
|
import { AuthConfigurationTabsFactory } from './factories/tabs.factory';
|
|
6
6
|
import { AuthConfigurationNavigationFactory } from './factories/navigation.factory';
|
|
7
7
|
import { AuthConfigurationGuard } from './auth-configuration.guard';
|
|
8
|
+
import { MESSAGES_AUTH_CONFIGURATION } from './pattern-messages.data';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
export class AuthConfigurationModule {
|
|
10
11
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthConfigurationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
@@ -13,6 +14,7 @@ export class AuthConfigurationModule {
|
|
|
13
14
|
AuthConfigurationGuard,
|
|
14
15
|
hookTab(AuthConfigurationTabsFactory),
|
|
15
16
|
hookNavigator(AuthConfigurationNavigationFactory),
|
|
17
|
+
hookPatternMessages(MESSAGES_AUTH_CONFIGURATION),
|
|
16
18
|
hookRoute({
|
|
17
19
|
path: 'auth-configuration',
|
|
18
20
|
redirectTo: 'auth-configuration/basic_settings',
|
|
@@ -28,6 +30,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
28
30
|
AuthConfigurationGuard,
|
|
29
31
|
hookTab(AuthConfigurationTabsFactory),
|
|
30
32
|
hookNavigator(AuthConfigurationNavigationFactory),
|
|
33
|
+
hookPatternMessages(MESSAGES_AUTH_CONFIGURATION),
|
|
31
34
|
hookRoute({
|
|
32
35
|
path: 'auth-configuration',
|
|
33
36
|
redirectTo: 'auth-configuration/basic_settings',
|
|
@@ -36,4 +39,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
36
39
|
]
|
|
37
40
|
}]
|
|
38
41
|
}] });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jb25maWd1cmF0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2F1dGgtY29uZmlndXJhdGlvbi9hdXRoLWNvbmZpZ3VyYXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0YsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBZ0J0RSxNQUFNLE9BQU8sdUJBQXVCOytHQUF2Qix1QkFBdUI7Z0hBQXZCLHVCQUF1QixZQWJ4QixtQkFBbUIsRUFBRSxzQkFBc0I7Z0hBYTFDLHVCQUF1QixhQVp2QjtZQUNULHNCQUFzQjtZQUN0QixPQUFPLENBQUMsNEJBQTRCLENBQUM7WUFDckMsYUFBYSxDQUFDLGtDQUFrQyxDQUFDO1lBQ2pELG1CQUFtQixDQUFDLDJCQUEyQixDQUFDO1lBQ2hELFNBQVMsQ0FBQztnQkFDUixJQUFJLEVBQUUsb0JBQW9CO2dCQUMxQixVQUFVLEVBQUUsbUNBQW1DO2dCQUMvQyxTQUFTLEVBQUUsTUFBTTthQUNsQixDQUFDO1NBQ0gsWUFYUyxtQkFBbUIsRUFBRSxzQkFBc0I7OzRGQWExQyx1QkFBdUI7a0JBZG5DLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsc0JBQXNCLENBQUM7b0JBQ3RELFNBQVMsRUFBRTt3QkFDVCxzQkFBc0I7d0JBQ3RCLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQzt3QkFDckMsYUFBYSxDQUFDLGtDQUFrQyxDQUFDO3dCQUNqRCxtQkFBbUIsQ0FBQywyQkFBMkIsQ0FBQzt3QkFDaEQsU0FBUyxDQUFDOzRCQUNSLElBQUksRUFBRSxvQkFBb0I7NEJBQzFCLFVBQVUsRUFBRSxtQ0FBbUM7NEJBQy9DLFNBQVMsRUFBRSxNQUFNO3lCQUNsQixDQUFDO3FCQUNIO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2ljU2V0dGluZ3NNb2R1bGUgfSBmcm9tICcuL2Jhc2ljLXNldHRpbmdzL2Jhc2ljLXNldHRpbmdzLm1vZHVsZSc7XG5pbXBvcnQgeyBTc29Db25maWd1cmF0aW9uTW9kdWxlIH0gZnJvbSAnLi9zc28tY29uZmlndXJhdGlvbi9zc28tY29uZmlndXJhdGlvbi5tb2R1bGUnO1xuaW1wb3J0IHsgaG9va05hdmlnYXRvciwgaG9va1BhdHRlcm5NZXNzYWdlcywgaG9va1JvdXRlLCBob29rVGFiIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBdXRoQ29uZmlndXJhdGlvblRhYnNGYWN0b3J5IH0gZnJvbSAnLi9mYWN0b3JpZXMvdGFicy5mYWN0b3J5JztcbmltcG9ydCB7IEF1dGhDb25maWd1cmF0aW9uTmF2aWdhdGlvbkZhY3RvcnkgfSBmcm9tICcuL2ZhY3Rvcmllcy9uYXZpZ2F0aW9uLmZhY3RvcnknO1xuaW1wb3J0IHsgQXV0aENvbmZpZ3VyYXRpb25HdWFyZCB9IGZyb20gJy4vYXV0aC1jb25maWd1cmF0aW9uLmd1YXJkJztcbmltcG9ydCB7IE1FU1NBR0VTX0FVVEhfQ09ORklHVVJBVElPTiB9IGZyb20gJy4vcGF0dGVybi1tZXNzYWdlcy5kYXRhJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0Jhc2ljU2V0dGluZ3NNb2R1bGUsIFNzb0NvbmZpZ3VyYXRpb25Nb2R1bGVdLFxuICBwcm92aWRlcnM6IFtcbiAgICBBdXRoQ29uZmlndXJhdGlvbkd1YXJkLFxuICAgIGhvb2tUYWIoQXV0aENvbmZpZ3VyYXRpb25UYWJzRmFjdG9yeSksXG4gICAgaG9va05hdmlnYXRvcihBdXRoQ29uZmlndXJhdGlvbk5hdmlnYXRpb25GYWN0b3J5KSxcbiAgICBob29rUGF0dGVybk1lc3NhZ2VzKE1FU1NBR0VTX0FVVEhfQ09ORklHVVJBVElPTiksXG4gICAgaG9va1JvdXRlKHtcbiAgICAgIHBhdGg6ICdhdXRoLWNvbmZpZ3VyYXRpb24nLFxuICAgICAgcmVkaXJlY3RUbzogJ2F1dGgtY29uZmlndXJhdGlvbi9iYXNpY19zZXR0aW5ncycsXG4gICAgICBwYXRoTWF0Y2g6ICdmdWxsJ1xuICAgIH0pXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQXV0aENvbmZpZ3VyYXRpb25Nb2R1bGUge31cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import { GrantType, SystemOptionsService, TenantLoginOptionsService, TenantLoginOptionType, TenantOptionsService, TenantService, UserManagementSource } from '@c8y/client';
|
|
2
|
+
import { GrantType, SystemOptionsService, TenantLoginOptionsService, TenantLoginOptionType, TenantOptionsService, TenantService, TfaStrategy, UserManagementSource } from '@c8y/client';
|
|
3
3
|
import { catchError, map } from 'rxjs/operators';
|
|
4
4
|
import { forkJoin, from, of } from 'rxjs';
|
|
5
5
|
import { defaults } from 'lodash-es';
|
|
@@ -36,7 +36,8 @@ export class AuthConfigurationService {
|
|
|
36
36
|
new TypedOption('two-factor-authentication', 'pin.validity', 'number', 30),
|
|
37
37
|
new TypedOption('two-factor-authentication', 'enforced', 'boolean', false),
|
|
38
38
|
new TypedOption('two-factor-authentication', 'strategy', 'string', 'SMS'),
|
|
39
|
-
new TypedOption('oauth.internal', 'basic-token.lifespan.seconds', 'number', null)
|
|
39
|
+
new TypedOption('oauth.internal', 'basic-token.lifespan.seconds', 'number', null),
|
|
40
|
+
new TypedOption('configuration', 'tenant.login.ignore-case', 'boolean', false)
|
|
40
41
|
];
|
|
41
42
|
}
|
|
42
43
|
getAuthConfiguration$() {
|
|
@@ -51,13 +52,19 @@ export class AuthConfigurationService {
|
|
|
51
52
|
}
|
|
52
53
|
save(newAuthConfiguration, previousAuthConfiguration) {
|
|
53
54
|
const tenantOptions = this.prepareTenantOptions(newAuthConfiguration, previousAuthConfiguration);
|
|
54
|
-
const updateTenantOptions = tenantOptions.map(tenantOption =>
|
|
55
|
+
const updateTenantOptions = tenantOptions.map(tenantOption => {
|
|
56
|
+
const fixedOption = this.fixTfaStrategy(tenantOption);
|
|
57
|
+
if (fixedOption) {
|
|
58
|
+
return fixedOption;
|
|
59
|
+
}
|
|
60
|
+
return this.tenantOptionsService.create(tenantOption);
|
|
61
|
+
});
|
|
55
62
|
const basicLoginOption = this.prepareBasicLoginOption(newAuthConfiguration, previousAuthConfiguration);
|
|
56
63
|
const oauthInternalLoginOption = this.prepareOauthInternalLoginOption(newAuthConfiguration, previousAuthConfiguration);
|
|
57
64
|
return Promise.all([
|
|
58
65
|
this.saveOrUpdateLoginOption(basicLoginOption),
|
|
59
66
|
this.saveOrUpdateLoginOption(oauthInternalLoginOption),
|
|
60
|
-
updateTenantOptions
|
|
67
|
+
...updateTenantOptions
|
|
61
68
|
]);
|
|
62
69
|
}
|
|
63
70
|
map(loginOptions$) {
|
|
@@ -149,6 +156,18 @@ export class AuthConfigurationService {
|
|
|
149
156
|
}
|
|
150
157
|
return null;
|
|
151
158
|
}
|
|
159
|
+
/**
|
|
160
|
+
* Returns a promise or null.
|
|
161
|
+
* This method is needed now, because simply changing TFA strategy tenant option does not trigger all the necessary backend logic to apply the change, therefore, we need to call tenant's `/tfa` endpoint, which applies the change for all users in the tenant.
|
|
162
|
+
* Within MTM-50490, we're going to simplify the process further by replacing multiple requests with one new endpoint that will handle saving of all authentication settings.
|
|
163
|
+
*/
|
|
164
|
+
fixTfaStrategy(option) {
|
|
165
|
+
if (option.category === 'two-factor-authentication' && option.key === 'strategy') {
|
|
166
|
+
const strategy = option.value === 'SMS' ? TfaStrategy.SMS : TfaStrategy.TOTP;
|
|
167
|
+
return this.tenantService.updateTfaStrategy(this.tenantUiService.currentTenant, strategy);
|
|
168
|
+
}
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
152
171
|
isSmsApplicationAvailable$() {
|
|
153
172
|
return from(this.appState.isApplicationAvailable('sms-gateway'));
|
|
154
173
|
}
|
|
@@ -174,4 +193,4 @@ export class AuthConfigurationService {
|
|
|
174
193
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthConfigurationService, decorators: [{
|
|
175
194
|
type: Injectable
|
|
176
195
|
}], ctorParameters: function () { return [{ type: i1.TenantLoginOptionsService }, { type: i1.TenantOptionsService }, { type: i1.SystemOptionsService }, { type: i2.AppStateService }, { type: i2.TenantUiService }, { type: i3.TenantLoginOptionMapper }, { type: i1.TenantService }]; } });
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jb25maWd1cmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9hdXRoLWNvbmZpZ3VyYXRpb24vYmFzaWMtc2V0dGluZ3MvYXV0aC1jb25maWd1cmF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsU0FBUyxFQUlULG9CQUFvQixFQUNwQix5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixhQUFhLEVBQ2Isb0JBQW9CLEVBQ3JCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFckMsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7O0FBR3ZFLE1BQU0sT0FBTyx3QkFBd0I7SUFzQm5DLFlBQ1UseUJBQW9ELEVBQ3BELG9CQUEwQyxFQUMxQyxvQkFBMEMsRUFDMUMsUUFBeUIsRUFDekIsZUFBZ0MsRUFDaEMsdUJBQWdELEVBQ2hELGFBQTRCO1FBTjVCLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMkI7UUFDcEQseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ2hELGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBNUI5QixrQ0FBNkIsR0FBa0I7WUFDckQsSUFBSSxXQUFXLENBQUMsVUFBVSxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUM7WUFDN0QsSUFBSSxXQUFXLENBQUMsVUFBVSxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUM7WUFDakUsSUFBSSxXQUFXLENBQUMsMkJBQTJCLEVBQUUsK0JBQStCLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQztZQUMvRixJQUFJLFdBQVcsQ0FBQywyQkFBMkIsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQztZQUN6RSw0RkFBNEY7WUFDNUYsSUFBSSxXQUFXLENBQUMsMkJBQTJCLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUM7WUFDMUUsSUFBSSxXQUFXLENBQUMsMkJBQTJCLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztTQUM3RSxDQUFDO1FBRU0sa0NBQTZCLEdBQWtCO1lBQ3JELElBQUksV0FBVyxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzFELElBQUksV0FBVyxDQUFDLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDO1lBQ2xFLElBQUksV0FBVyxDQUFDLDJCQUEyQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDO1lBQ3pFLElBQUksV0FBVyxDQUFDLDJCQUEyQixFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUM7WUFDL0UsSUFBSSxXQUFXLENBQUMsMkJBQTJCLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDMUUsSUFBSSxXQUFXLENBQUMsMkJBQTJCLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUM7WUFDMUUsSUFBSSxXQUFXLENBQUMsMkJBQTJCLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUM7WUFDekUsSUFBSSxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsOEJBQThCLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQztTQUNsRixDQUFDO0lBVUMsQ0FBQztJQUVKLHFCQUFxQjtRQUNuQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM5QyxPQUFPLFFBQVEsQ0FBQztZQUNkLFlBQVksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztZQUNyQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3ZDLGFBQWEsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDdkMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixFQUFFO1lBQ3RELHdCQUF3QixFQUFFLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxhQUFhLENBQUM7U0FDM0UsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksQ0FBQyxvQkFBdUMsRUFBRSx5QkFBNEM7UUFDeEYsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUM3QyxvQkFBb0IsRUFDcEIseUJBQXlCLENBQzFCLENBQUM7UUFDRixNQUFNLG1CQUFtQixHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FDM0QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FDL0MsQ0FBQztRQUNGLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUNuRCxvQkFBb0IsRUFDcEIseUJBQXlCLENBQzFCLENBQUM7UUFDRixNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQywrQkFBK0IsQ0FDbkUsb0JBQW9CLEVBQ3BCLHlCQUF5QixDQUMxQixDQUFDO1FBRUYsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ2pCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxnQkFBZ0IsQ0FBQztZQUM5QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsd0JBQXdCLENBQUM7WUFDdEQsbUJBQW1CO1NBQ3BCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxHQUFHLENBQUMsYUFBK0M7UUFDekQsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUN2QixHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FDakIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FDakYsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLHVCQUF1QixDQUM3QixXQUErQjtRQUUvQixPQUFPLFdBQVcsQ0FBQyxFQUFFO1lBQ25CLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztZQUNwRCxDQUFDLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU8sdUJBQXVCLENBQzdCLG9CQUF1QyxFQUN2Qyx5QkFBNEM7UUFFNUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsK0JBQStCLENBQzNELHlCQUF5QixFQUN6QixxQkFBcUIsQ0FBQyxLQUFLLENBQzVCLENBQUM7UUFDRixnQkFBZ0IsQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQzNELG9CQUFvQixFQUNwQixxQkFBcUIsQ0FBQyxLQUFLLENBQzVCLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQ3pDLGdCQUFnQixFQUNoQixJQUFJLENBQUMsbUNBQW1DLENBQUMsb0JBQW9CLEVBQUUscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQzVGLENBQUM7SUFDSixDQUFDO0lBRU8sK0JBQStCLENBQ3JDLG9CQUF1QyxFQUN2Qyx5QkFBNEM7UUFFNUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLENBQUMsK0JBQStCLENBQ25FLHlCQUF5QixFQUN6QixxQkFBcUIsQ0FBQyxlQUFlLENBQ3RDLENBQUM7UUFDRix3QkFBd0IsQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQ25FLG9CQUFvQixFQUNwQixxQkFBcUIsQ0FBQyxlQUFlLENBQ3RDLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQ3pDLHdCQUF3QixFQUN4QixJQUFJLENBQUMsbUNBQW1DLENBQ3RDLG9CQUFvQixFQUNwQixxQkFBcUIsQ0FBQyxlQUFlLENBQ3RDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTywrQkFBK0IsQ0FDckMseUJBQTRDLEVBQzVDLGVBQXNDO1FBRXRDLE9BQU8sUUFBUSxDQUNiLEVBQUUsRUFDRixJQUFJLENBQUMsbUNBQW1DLENBQUMseUJBQXlCLEVBQUUsZUFBZSxDQUFDLEVBQ3BGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsQ0FDNUMsQ0FBQztJQUNKLENBQUM7SUFFTyxtQ0FBbUMsQ0FDekMsaUJBQW9DLEVBQ3BDLGVBQXNDO1FBRXRDLE9BQU8saUJBQWlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVPLGtCQUFrQixDQUN4QixpQkFBb0MsRUFDcEMsZUFBc0M7UUFFdEMsT0FBTyxpQkFBaUIsQ0FBQyx3QkFBd0IsS0FBSyxlQUFlLENBQUM7SUFDeEUsQ0FBQztJQUVPLG9CQUFvQixDQUMxQixvQkFBdUMsRUFDdkMseUJBQTRDO1FBRTVDLE1BQU0sUUFBUSxHQUFHLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLENBQ3pDLE9BQU8sQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRSxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsRUFBRSxDQUNoQyxRQUFRLENBQUMsb0JBQW9CLEVBQUUsWUFBWSxDQUFDO1lBQzVDLFFBQVEsQ0FBQyx5QkFBeUIsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUVwRCxPQUFPLElBQUksQ0FBQyw2QkFBNkI7YUFDdEMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLG9CQUFvQixFQUFFLFlBQVksQ0FBQyxLQUFLLElBQUksQ0FBQzthQUM3RSxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDaEQsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNwQixRQUFRLEVBQUUsWUFBWSxDQUFDLFFBQVE7WUFDL0IsR0FBRyxFQUFFLFlBQVksQ0FBQyxHQUFHO1lBQ3JCLEtBQUssRUFBRSxRQUFRLENBQUMsb0JBQW9CLEVBQUUsWUFBWSxDQUFDLENBQUMsUUFBUSxFQUFFO1NBQy9ELENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixPQUFPLFFBQVEsQ0FBQztZQUNkLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDO1lBQ2pELElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDO1lBQ2hELElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsZUFBZSxDQUFDO1NBQzNELENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVPLGNBQWMsQ0FDcEIscUJBQTRDO1FBRTVDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDNUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUNwQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQ2QscUJBQXFCLEtBQUsscUJBQXFCLENBQUMsTUFBTTtZQUNwRCxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ3ZELENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQ2IsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLDRCQUE0QixDQUNsQyxhQUErQztRQUUvQyxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQ3ZCLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUNqQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3pFLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLE9BQU8sUUFBUSxDQUNiLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFtQixFQUFFLEVBQUUsQ0FDN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ2pELEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNSLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZCLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FDN0IsQ0FDRixDQUNGLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixPQUFPLFFBQVEsQ0FDYixJQUFJLENBQUMsNkJBQTZCLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBbUIsRUFBRSxFQUFFO1lBQzdELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1RCxJQUFJLFdBQVcsRUFBRTtnQkFDZixPQUFPLFdBQVcsQ0FBQzthQUNwQjtZQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3hELEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDUixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkIsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUM3QixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLDBCQUEwQixDQUFDLE1BQW1CO1FBQ3BELElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSywyQkFBMkIsSUFBSSxNQUFNLENBQUMsR0FBRyxLQUFLLFVBQVUsRUFBRTtZQUNoRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNyRixHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQ2hCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUM1RCxPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDLENBQUMsQ0FDSCxDQUFDO1NBQ0g7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTywwQkFBMEI7UUFDaEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxPQUFzQjtRQUM3QyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDOUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN0RSxhQUFhLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDL0QsT0FBTyxhQUFhLENBQUM7UUFDdkIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVPLHFCQUFxQixDQUFDLHFCQUE0QztRQUN4RSxPQUFPO1lBQ0wsb0JBQW9CLEVBQUUsb0JBQW9CLENBQUMsUUFBUTtZQUNuRCxTQUFTLEVBQUUsU0FBUyxDQUFDLFFBQVE7WUFDN0IsWUFBWSxFQUFFLFlBQVk7WUFDMUIsa0JBQWtCLEVBQUUsS0FBSztZQUN6QixJQUFJLEVBQUUscUJBQXFCO1NBQzVCLENBQUM7SUFDSixDQUFDOytHQTVRVSx3QkFBd0I7bUhBQXhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEdyYW50VHlwZSxcbiAgSVJlc3VsdCxcbiAgSVRlbmFudExvZ2luT3B0aW9uLFxuICBJVGVuYW50T3B0aW9uLFxuICBTeXN0ZW1PcHRpb25zU2VydmljZSxcbiAgVGVuYW50TG9naW5PcHRpb25zU2VydmljZSxcbiAgVGVuYW50TG9naW5PcHRpb25UeXBlLFxuICBUZW5hbnRPcHRpb25zU2VydmljZSxcbiAgVGVuYW50U2VydmljZSxcbiAgVXNlck1hbmFnZW1lbnRTb3VyY2Vcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIGZyb20sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWZhdWx0cyB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBdXRoQ29uZmlndXJhdGlvbiwgT3B0aW9ucyB9IGZyb20gJy4vYXV0aC1jb25maWd1cmF0aW9uLm1vZGVsJztcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSwgVGVuYW50VWlTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUeXBlZE9wdGlvbiB9IGZyb20gJy4vdHlwZWQtb3B0aW9uJztcbmltcG9ydCB7IFRlbmFudExvZ2luT3B0aW9uIH0gZnJvbSAnLi9iYXNpYy1zZXR0aW5ncy5tb2RlbCc7XG5pbXBvcnQgeyBUZW5hbnRMb2dpbk9wdGlvbk1hcHBlciB9IGZyb20gJy4vdGVuYW50LWxvZ2luLW9wdGlvbi5tYXBwZXInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aENvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzeXN0ZW1PcHRpb25zV2l0aERlZmF1bHRWYWx1ZTogVHlwZWRPcHRpb25bXSA9IFtcbiAgICBuZXcgVHlwZWRPcHRpb24oJ3Bhc3N3b3JkJywgJ2xpbWl0LnZhbGlkaXR5JywgJ251bWJlcicsIG51bGwpLFxuICAgIG5ldyBUeXBlZE9wdGlvbigncGFzc3dvcmQnLCAnZW5mb3JjZS5zdHJlbmd0aCcsICdib29sZWFuJywgZmFsc2UpLFxuICAgIG5ldyBUeXBlZE9wdGlvbigndHdvLWZhY3Rvci1hdXRoZW50aWNhdGlvbicsICd0ZW5hbnQtc2NvcGUtc2V0dGluZ3MuZW5hYmxlZCcsICdib29sZWFuJywgZmFsc2UpLFxuICAgIG5ldyBUeXBlZE9wdGlvbigndHdvLWZhY3Rvci1hdXRoZW50aWNhdGlvbicsICdlbmFibGVkJywgJ2Jvb2xlYW4nLCBmYWxzZSksXG4gICAgLy8gbm90ZTogdGhpcyBkZWZpbml0aW9uIGlzIGluY29uc2lzdGVudCB3aXRoIGJhY2tlbmQgYW5kIGlzIG92ZXJyaWRkZW4gaW4gZ2V0U3lzdGVtT3B0aW9ucyRcbiAgICBuZXcgVHlwZWRPcHRpb24oJ3R3by1mYWN0b3ItYXV0aGVudGljYXRpb24nLCAnZW5mb3JjZWQnLCAnYm9vbGVhbicsIGZhbHNlKSxcbiAgICBuZXcgVHlwZWRPcHRpb24oJ3R3by1mYWN0b3ItYXV0aGVudGljYXRpb24nLCAnZW5mb3JjZWQuZ3JvdXAnLCAnc3RyaW5nJywgJycpXG4gIF07XG5cbiAgcHJpdmF0ZSB0ZW5hbnRPcHRpb25zV2l0aERlZmF1bHRWYWx1ZTogVHlwZWRPcHRpb25bXSA9IFtcbiAgICBuZXcgVHlwZWRPcHRpb24oJ3Bhc3N3b3JkJywgJ2xpbWl0LnZhbGlkaXR5JywgJ251bWJlcicsIDApLFxuICAgIG5ldyBUeXBlZE9wdGlvbigncGFzc3dvcmQnLCAnc3RyZW5ndGgudmFsaWRpdHknLCAnYm9vbGVhbicsIGZhbHNlKSxcbiAgICBuZXcgVHlwZWRPcHRpb24oJ3R3by1mYWN0b3ItYXV0aGVudGljYXRpb24nLCAnZW5hYmxlZCcsICdib29sZWFuJywgZmFsc2UpLFxuICAgIG5ldyBUeXBlZE9wdGlvbigndHdvLWZhY3Rvci1hdXRoZW50aWNhdGlvbicsICd0b2tlbi52YWxpZGl0eScsICdudW1iZXInLCA0MzIwMCksIC8vIDMwIGRheXNcbiAgICBuZXcgVHlwZWRPcHRpb24oJ3R3by1mYWN0b3ItYXV0aGVudGljYXRpb24nLCAncGluLnZhbGlkaXR5JywgJ251bWJlcicsIDMwKSxcbiAgICBuZXcgVHlwZWRPcHRpb24oJ3R3by1mYWN0b3ItYXV0aGVudGljYXRpb24nLCAnZW5mb3JjZWQnLCAnYm9vbGVhbicsIGZhbHNlKSxcbiAgICBuZXcgVHlwZWRPcHRpb24oJ3R3by1mYWN0b3ItYXV0aGVudGljYXRpb24nLCAnc3RyYXRlZ3knLCAnc3RyaW5nJywgJ1NNUycpLFxuICAgIG5ldyBUeXBlZE9wdGlvbignb2F1dGguaW50ZXJuYWwnLCAnYmFzaWMtdG9rZW4ubGlmZXNwYW4uc2Vjb25kcycsICdudW1iZXInLCBudWxsKVxuICBdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGVuYW50TG9naW5PcHRpb25zU2VydmljZTogVGVuYW50TG9naW5PcHRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHRlbmFudE9wdGlvbnNTZXJ2aWNlOiBUZW5hbnRPcHRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHN5c3RlbU9wdGlvbnNTZXJ2aWNlOiBTeXN0ZW1PcHRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGFwcFN0YXRlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0ZW5hbnRVaVNlcnZpY2U6IFRlbmFudFVpU2VydmljZSxcbiAgICBwcml2YXRlIHRlbmFudExvZ2luT3B0aW9uTWFwcGVyOiBUZW5hbnRMb2dpbk9wdGlvbk1hcHBlcixcbiAgICBwcml2YXRlIHRlbmFudFNlcnZpY2U6IFRlbmFudFNlcnZpY2VcbiAgKSB7fVxuXG4gIGdldEF1dGhDb25maWd1cmF0aW9uJCgpOiBPYnNlcnZhYmxlPEF1dGhDb25maWd1cmF0aW9uPiB7XG4gICAgY29uc3QgbG9naW5PcHRpb25zJCA9IHRoaXMuZ2V0TG9naW5PcHRpb25zJCgpO1xuICAgIHJldHVybiBmb3JrSm9pbih7XG4gICAgICBsb2dpbk9wdGlvbnM6IHRoaXMubWFwKGxvZ2luT3B0aW9ucyQpLFxuICAgICAgdGVuYW50T3B0aW9uczogdGhpcy5nZXRUZW5hbnRPcHRpb25zJCgpLFxuICAgICAgc3lzdGVtT3B0aW9uczogdGhpcy5nZXRTeXN0ZW1PcHRpb25zJCgpLFxuICAgICAgc21zR2F0ZXdheUF2YWlsYWJsZTogdGhpcy5pc1Ntc0FwcGxpY2F0aW9uQXZhaWxhYmxlJCgpLFxuICAgICAgcHJlZmVycmVkTG9naW5PcHRpb25UeXBlOiB0aGlzLmdldFByZWZlcnJlZExvZ2luT3B0aW9uVHlwZSQobG9naW5PcHRpb25zJClcbiAgICB9KTtcbiAgfVxuXG4gIHNhdmUobmV3QXV0aENvbmZpZ3VyYXRpb246IEF1dGhDb25maWd1cmF0aW9uLCBwcmV2aW91c0F1dGhDb25maWd1cmF0aW9uOiBBdXRoQ29uZmlndXJhdGlvbikge1xuICAgIGNvbnN0IHRlbmFudE9wdGlvbnMgPSB0aGlzLnByZXBhcmVUZW5hbnRPcHRpb25zKFxuICAgICAgbmV3QXV0aENvbmZpZ3VyYXRpb24sXG4gICAgICBwcmV2aW91c0F1dGhDb25maWd1cmF0aW9uXG4gICAgKTtcbiAgICBjb25zdCB1cGRhdGVUZW5hbnRPcHRpb25zID0gdGVuYW50T3B0aW9ucy5tYXAodGVuYW50T3B0aW9uID0+XG4gICAgICB0aGlzLnRlbmFudE9wdGlvbnNTZXJ2aWNlLmNyZWF0ZSh0ZW5hbnRPcHRpb24pXG4gICAgKTtcbiAgICBjb25zdCBiYXNpY0xvZ2luT3B0aW9uID0gdGhpcy5wcmVwYXJlQmFzaWNMb2dpbk9wdGlvbihcbiAgICAgIG5ld0F1dGhDb25maWd1cmF0aW9uLFxuICAgICAgcHJldmlvdXNBdXRoQ29uZmlndXJhdGlvblxuICAgICk7XG4gICAgY29uc3Qgb2F1dGhJbnRlcm5hbExvZ2luT3B0aW9uID0gdGhpcy5wcmVwYXJlT2F1dGhJbnRlcm5hbExvZ2luT3B0aW9uKFxuICAgICAgbmV3QXV0aENvbmZpZ3VyYXRpb24sXG4gICAgICBwcmV2aW91c0F1dGhDb25maWd1cmF0aW9uXG4gICAgKTtcblxuICAgIHJldHVybiBQcm9taXNlLmFsbChbXG4gICAgICB0aGlzLnNhdmVPclVwZGF0ZUxvZ2luT3B0aW9uKGJhc2ljTG9naW5PcHRpb24pLFxuICAgICAgdGhpcy5zYXZlT3JVcGRhdGVMb2dpbk9wdGlvbihvYXV0aEludGVybmFsTG9naW5PcHRpb24pLFxuICAgICAgdXBkYXRlVGVuYW50T3B0aW9uc1xuICAgIF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXAobG9naW5PcHRpb25zJDogT2JzZXJ2YWJsZTxJVGVuYW50TG9naW5PcHRpb25bXT4pOiBPYnNlcnZhYmxlPFRlbmFudExvZ2luT3B0aW9uW10+IHtcbiAgICByZXR1cm4gbG9naW5PcHRpb25zJC5waXBlKFxuICAgICAgbWFwKGxvZ2luT3B0aW9ucyA9PlxuICAgICAgICBsb2dpbk9wdGlvbnMubWFwKGxvZ2luT3B0aW9uID0+IHRoaXMudGVuYW50TG9naW5PcHRpb25NYXBwZXIubWFwVG8obG9naW5PcHRpb24pKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNhdmVPclVwZGF0ZUxvZ2luT3B0aW9uKFxuICAgIGxvZ2luT3B0aW9uOiBJVGVuYW50TG9naW5PcHRpb25cbiAgKTogUHJvbWlzZTxJUmVzdWx0PElUZW5hbnRMb2dpbk9wdGlvbj4+IHtcbiAgICByZXR1cm4gbG9naW5PcHRpb24uaWRcbiAgICAgID8gdGhpcy50ZW5hbnRMb2dpbk9wdGlvbnNTZXJ2aWNlLnVwZGF0ZShsb2dpbk9wdGlvbilcbiAgICAgIDogdGhpcy50ZW5hbnRMb2dpbk9wdGlvbnNTZXJ2aWNlLmNyZWF0ZShsb2dpbk9wdGlvbik7XG4gIH1cblxuICBwcml2YXRlIHByZXBhcmVCYXNpY0xvZ2luT3B0aW9uKFxuICAgIG5ld0F1dGhDb25maWd1cmF0aW9uOiBBdXRoQ29uZmlndXJhdGlvbixcbiAgICBwcmV2aW91c0F1dGhDb25maWd1cmF0aW9uOiBBdXRoQ29uZmlndXJhdGlvblxuICApOiBJVGVuYW50TG9naW5PcHRpb24ge1xuICAgIGNvbnN0IGJhc2ljTG9naW5PcHRpb24gPSB0aGlzLm9yaWdpbmFsTG9naW5PcHRpb25XaXRoRGVmYXVsdHMoXG4gICAgICBwcmV2aW91c0F1dGhDb25maWd1cmF0aW9uLFxuICAgICAgVGVuYW50TG9naW5PcHRpb25UeXBlLkJBU0lDXG4gICAgKTtcbiAgICBiYXNpY0xvZ2luT3B0aW9uLnZpc2libGVPbkxvZ2luUGFnZSA9IHRoaXMudmlzaWJsZU9uTG9naW5QYWdlKFxuICAgICAgbmV3QXV0aENvbmZpZ3VyYXRpb24sXG4gICAgICBUZW5hbnRMb2dpbk9wdGlvblR5cGUuQkFTSUNcbiAgICApO1xuICAgIHJldHVybiB0aGlzLnRlbmFudExvZ2luT3B0aW9uTWFwcGVyLm1hcEZyb20oXG4gICAgICBiYXNpY0xvZ2luT3B0aW9uLFxuICAgICAgdGhpcy5nZXRMb2dpbk9wdGlvbkZyb21BdXRoQ29uZmlndXJhdGlvbihuZXdBdXRoQ29uZmlndXJhdGlvbiwgVGVuYW50TG9naW5PcHRpb25UeXBlLkJBU0lDKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHByZXBhcmVPYXV0aEludGVybmFsTG9naW5PcHRpb24oXG4gICAgbmV3QXV0aENvbmZpZ3VyYXRpb246IEF1dGhDb25maWd1cmF0aW9uLFxuICAgIHByZXZpb3VzQXV0aENvbmZpZ3VyYXRpb246IEF1dGhDb25maWd1cmF0aW9uXG4gICk6IElUZW5hbnRMb2dpbk9wdGlvbiB7XG4gICAgY29uc3Qgb2F1dGhJbnRlcm5hbExvZ2luT3B0aW9uID0gdGhpcy5vcmlnaW5hbExvZ2luT3B0aW9uV2l0aERlZmF1bHRzKFxuICAgICAgcHJldmlvdXNBdXRoQ29uZmlndXJhdGlvbixcbiAgICAgIFRlbmFudExvZ2luT3B0aW9uVHlwZS5PQVVUSDJfSU5URVJOQUxcbiAgICApO1xuICAgIG9hdXRoSW50ZXJuYWxMb2dpbk9wdGlvbi52aXNpYmxlT25Mb2dpblBhZ2UgPSB0aGlzLnZpc2libGVPbkxvZ2luUGFnZShcbiAgICAgIG5ld0F1dGhDb25maWd1cmF0aW9uLFxuICAgICAgVGVuYW50TG9naW5PcHRpb25UeXBlLk9BVVRIMl9JTlRFUk5BTFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMudGVuYW50TG9naW5PcHRpb25NYXBwZXIubWFwRnJvbShcbiAgICAgIG9hdXRoSW50ZXJuYWxMb2dpbk9wdGlvbixcbiAgICAgIHRoaXMuZ2V0TG9naW5PcHRpb25Gcm9tQXV0aENvbmZpZ3VyYXRpb24oXG4gICAgICAgIG5ld0F1dGhDb25maWd1cmF0aW9uLFxuICAgICAgICBUZW5hbnRMb2dpbk9wdGlvblR5cGUuT0FVVEgyX0lOVEVSTkFMXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb3JpZ2luYWxMb2dpbk9wdGlvbldpdGhEZWZhdWx0cyhcbiAgICBwcmV2aW91c0F1dGhDb25maWd1cmF0aW9uOiBBdXRoQ29uZmlndXJhdGlvbixcbiAgICBsb2dpbk9wdGlvblR5cGU6IFRlbmFudExvZ2luT3B0aW9uVHlwZVxuICApOiBUZW5hbnRMb2dpbk9wdGlvbiB7XG4gICAgcmV0dXJuIGRlZmF1bHRzKFxuICAgICAge30sXG4gICAgICB0aGlzLmdldExvZ2luT3B0aW9uRnJvbUF1dGhDb25maWd1cmF0aW9uKHByZXZpb3VzQXV0aENvbmZpZ3VyYXRpb24sIGxvZ2luT3B0aW9uVHlwZSksXG4gICAgICB0aGlzLmdldERlZmF1bHRMb2dpbk9wdGlvbihsb2dpbk9wdGlvblR5cGUpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9naW5PcHRpb25Gcm9tQXV0aENvbmZpZ3VyYXRpb24oXG4gICAgYXV0aENvbmZpZ3VyYXRpb246IEF1dGhDb25maWd1cmF0aW9uLFxuICAgIGxvZ2luT3B0aW9uVHlwZTogVGVuYW50TG9naW5PcHRpb25UeXBlXG4gICkge1xuICAgIHJldHVybiBhdXRoQ29uZmlndXJhdGlvbi5sb2dpbk9wdGlvbnMuZmluZChsb2dpbk9wdGlvbiA9PiBsb2dpbk9wdGlvbi50eXBlID09PSBsb2dpbk9wdGlvblR5cGUpO1xuICB9XG5cbiAgcHJpdmF0ZSB2aXNpYmxlT25Mb2dpblBhZ2UoXG4gICAgYXV0aENvbmZpZ3VyYXRpb246IEF1dGhDb25maWd1cmF0aW9uLFxuICAgIGxvZ2luT3B0aW9uVHlwZTogVGVuYW50TG9naW5PcHRpb25UeXBlXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhdXRoQ29uZmlndXJhdGlvbi5wcmVmZXJyZWRMb2dpbk9wdGlvblR5cGUgPT09IGxvZ2luT3B0aW9uVHlwZTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlcGFyZVRlbmFudE9wdGlvbnMoXG4gICAgbmV3QXV0aENvbmZpZ3VyYXRpb246IEF1dGhDb25maWd1cmF0aW9uLFxuICAgIHByZXZpb3VzQXV0aENvbmZpZ3VyYXRpb246IEF1dGhDb25maWd1cmF0aW9uXG4gICk6IElUZW5hbnRPcHRpb25bXSB7XG4gICAgY29uc3QgZ2V0VmFsdWUgPSAoYXV0aENmZywgdGVuYW50T3B0aW9uKSA9PlxuICAgICAgYXV0aENmZy50ZW5hbnRPcHRpb25zW3RlbmFudE9wdGlvbi5jYXRlZ29yeV1bdGVuYW50T3B0aW9uLmtleV07XG4gICAgY29uc3QgaGFzQ2hhbmdlZCA9IHRlbmFudE9wdGlvbiA9PlxuICAgICAgZ2V0VmFsdWUobmV3QXV0aENvbmZpZ3VyYXRpb24sIHRlbmFudE9wdGlvbikgIT09XG4gICAgICBnZXRWYWx1ZShwcmV2aW91c0F1dGhDb25maWd1cmF0aW9uLCB0ZW5hbnRPcHRpb24pO1xuXG4gICAgcmV0dXJuIHRoaXMudGVuYW50T3B0aW9uc1dpdGhEZWZhdWx0VmFsdWVcbiAgICAgIC5maWx0ZXIodGVuYW50T3B0aW9uID0+IGdldFZhbHVlKG5ld0F1dGhDb25maWd1cmF0aW9uLCB0ZW5hbnRPcHRpb24pICE9PSBudWxsKVxuICAgICAgLmZpbHRlcih0ZW5hbnRPcHRpb24gPT4gaGFzQ2hhbmdlZCh0ZW5hbnRPcHRpb24pKVxuICAgICAgLm1hcCh0ZW5hbnRPcHRpb24gPT4gKHtcbiAgICAgICAgY2F0ZWdvcnk6IHRlbmFudE9wdGlvbi5jYXRlZ29yeSxcbiAgICAgICAga2V5OiB0ZW5hbnRPcHRpb24ua2V5LFxuICAgICAgICB2YWx1ZTogZ2V0VmFsdWUobmV3QXV0aENvbmZpZ3VyYXRpb24sIHRlbmFudE9wdGlvbikudG9TdHJpbmcoKVxuICAgICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2dpbk9wdGlvbnMkKCk6IE9ic2VydmFibGU8SVRlbmFudExvZ2luT3B0aW9uW10+IHtcbiAgICByZXR1cm4gZm9ya0pvaW4oW1xuICAgICAgdGhpcy5nZXRMb2dpbk9wdGlvbihUZW5hbnRMb2dpbk9wdGlvblR5cGUuT0FVVEgyKSxcbiAgICAgIHRoaXMuZ2V0TG9naW5PcHRpb24oVGVuYW50TG9naW5PcHRpb25UeXBlLkJBU0lDKSxcbiAgICAgIHRoaXMuZ2V0TG9naW5PcHRpb24oVGVuYW50TG9naW5PcHRpb25UeXBlLk9BVVRIMl9JTlRFUk5BTClcbiAgICBdKS5waXBlKG1hcChsb2dpbk9wdGlvbnMgPT4gbG9naW5PcHRpb25zLmZpbHRlcihsb2dpbk9wdGlvbiA9PiAhIWxvZ2luT3B0aW9uKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2dpbk9wdGlvbihcbiAgICB0ZW5hbnRMb2dpbk9wdGlvblR5cGU6IFRlbmFudExvZ2luT3B0aW9uVHlwZVxuICApOiBPYnNlcnZhYmxlPElUZW5hbnRMb2dpbk9wdGlvbj4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMudGVuYW50TG9naW5PcHRpb25zU2VydmljZS5kZXRhaWwodGVuYW50TG9naW5PcHRpb25UeXBlKSkucGlwZShcbiAgICAgIG1hcChyZXMgPT4gcmVzLmRhdGEpLFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PlxuICAgICAgICB0ZW5hbnRMb2dpbk9wdGlvblR5cGUgIT09IFRlbmFudExvZ2luT3B0aW9uVHlwZS5PQVVUSDJcbiAgICAgICAgICA/IG9mKHRoaXMuZ2V0RGVmYXVsdExvZ2luT3B0aW9uKHRlbmFudExvZ2luT3B0aW9uVHlwZSkpXG4gICAgICAgICAgOiBvZihudWxsKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFByZWZlcnJlZExvZ2luT3B0aW9uVHlwZSQoXG4gICAgbG9naW5PcHRpb25zJDogT2JzZXJ2YWJsZTxJVGVuYW50TG9naW5PcHRpb25bXT5cbiAgKTogT2JzZXJ2YWJsZTxUZW5hbnRMb2dpbk9wdGlvblR5cGU+IHtcbiAgICByZXR1cm4gbG9naW5PcHRpb25zJC5waXBlKFxuICAgICAgbWFwKGxvZ2luT3B0aW9ucyA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRlbmFudFVpU2VydmljZS5nZXRQcmVmZXJyZWRMb2dpbk9wdGlvbihsb2dpbk9wdGlvbnMpLnR5cGU7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFRlbmFudE9wdGlvbnMkKCk6IE9ic2VydmFibGU8T3B0aW9ucz4ge1xuICAgIHJldHVybiBmb3JrSm9pbihcbiAgICAgIHRoaXMudGVuYW50T3B0aW9uc1dpdGhEZWZhdWx0VmFsdWUubWFwKChvcHRpb246IFR5cGVkT3B0aW9uKSA9PlxuICAgICAgICBmcm9tKHRoaXMudGVuYW50T3B0aW9uc1NlcnZpY2UuZGV0YWlsKG9wdGlvbikpLnBpcGUoXG4gICAgICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgICAgICBvcHRpb24uYXBwbHkocmVzLmRhdGEpO1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKG9wdGlvbikpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApLnBpcGUobWFwKG9wdGlvbnMgPT4gdGhpcy5nZXRPcHRpb25zT2JqZWN0KG9wdGlvbnMpKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFN5c3RlbU9wdGlvbnMkKCk6IE9ic2VydmFibGU8T3B0aW9ucz4ge1xuICAgIHJldHVybiBmb3JrSm9pbihcbiAgICAgIHRoaXMuc3lzdGVtT3B0aW9uc1dpdGhEZWZhdWx0VmFsdWUubWFwKChvcHRpb246IFR5cGVkT3B0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpeGVkT3B0aW9uID0gdGhpcy5maXhUZmFFbmZvcmNlZFN5c3RlbU9wdGlvbihvcHRpb24pO1xuICAgICAgICBpZiAoZml4ZWRPcHRpb24pIHtcbiAgICAgICAgICByZXR1cm4gZml4ZWRPcHRpb247XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZnJvbSh0aGlzLnN5c3RlbU9wdGlvbnNTZXJ2aWNlLmRldGFpbChvcHRpb24pKS5waXBlKFxuICAgICAgICAgIG1hcChyZXMgPT4ge1xuICAgICAgICAgICAgb3B0aW9uLmFwcGx5KHJlcy5kYXRhKTtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihvcHRpb24pKVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApLnBpcGUobWFwKG9wdGlvbnMgPT4gdGhpcy5nZXRPcHRpb25zT2JqZWN0KG9wdGlvbnMpKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHdpdGggZml4ZWQgYHR3by1mYWN0b3ItYXV0aGVudGljYXRpb24uZW5mb3JjZWRgIHN5c3RlbSBvcHRpb24gb3IgbnVsbC5cbiAgICogVGhpcyBtZXRob2QgZml4ZXMgcHJvYmxlbSB3aXRoIGluY29uc2lzdGVudCB2YWx1ZS4gU3lzdGVtIG9wdGlvbiBgdHdvLWZhY3Rvci1hdXRoZW50aWNhdGlvbi5lbmZvcmNlZGAgaXMgbGlzdCBvZiB0ZW5hbnRzIHdoZW4gVUkgdXNpbmcgYm9vbGVhbiB2YWx1ZS5cbiAgICogVGhpcyBwYXJ0IHdpbGwgYmUgcmVtb3ZlZCBhZnRlciBpbXBsZW1lbnRpbmcgbmV3IGVuZHBvaW50IGluIE1UTS01MDQ5MC5cbiAgICovXG4gIHByaXZhdGUgZml4VGZhRW5mb3JjZWRTeXN0ZW1PcHRpb24ob3B0aW9uOiBUeXBlZE9wdGlvbik6IE9ic2VydmFibGU8VHlwZWRPcHRpb24+IHtcbiAgICBpZiAob3B0aW9uLmNhdGVnb3J5ID09PSAndHdvLWZhY3Rvci1hdXRoZW50aWNhdGlvbicgJiYgb3B0aW9uLmtleSA9PT0gJ2VuZm9yY2VkJykge1xuICAgICAgcmV0dXJuIGZyb20odGhpcy50ZW5hbnRTZXJ2aWNlLmdldFRmYVNldHRpbmdzKHRoaXMudGVuYW50VWlTZXJ2aWNlLmN1cnJlbnRUZW5hbnQpKS5waXBlKFxuICAgICAgICBtYXAodGZhU2V0dGluZ3MgPT4ge1xuICAgICAgICAgIG9wdGlvbi52YWx1ZSA9IHRmYVNldHRpbmdzLmVuZm9yY2VkT25TeXN0ZW1MZXZlbC50b1N0cmluZygpO1xuICAgICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgaXNTbXNBcHBsaWNhdGlvbkF2YWlsYWJsZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5hcHBTdGF0ZS5pc0FwcGxpY2F0aW9uQXZhaWxhYmxlKCdzbXMtZ2F0ZXdheScpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3B0aW9uc09iamVjdChvcHRpb25zOiBUeXBlZE9wdGlvbltdKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMucmVkdWNlKChvcHRpb25zT2JqZWN0LCBvcHRpb24pID0+IHtcbiAgICAgIG9wdGlvbnNPYmplY3Rbb3B0aW9uLmNhdGVnb3J5XSA9IG9wdGlvbnNPYmplY3Rbb3B0aW9uLmNhdGVnb3J5XSB8fCB7fTtcbiAgICAgIG9wdGlvbnNPYmplY3Rbb3B0aW9uLmNhdGVnb3J5XVtvcHRpb24ua2V5XSA9IG9wdGlvbi5nZXRWYWx1ZSgpO1xuICAgICAgcmV0dXJuIG9wdGlvbnNPYmplY3Q7XG4gICAgfSwge30pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0TG9naW5PcHRpb24odGVuYW50TG9naW5PcHRpb25UeXBlOiBUZW5hbnRMb2dpbk9wdGlvblR5cGUpOiBJVGVuYW50TG9naW5PcHRpb24ge1xuICAgIHJldHVybiB7XG4gICAgICB1c2VyTWFuYWdlbWVudFNvdXJjZTogVXNlck1hbmFnZW1lbnRTb3VyY2UuSU5URVJOQUwsXG4gICAgICBncmFudFR5cGU6IEdyYW50VHlwZS5QQVNTV09SRCxcbiAgICAgIHByb3ZpZGVyTmFtZTogJ0N1bXVsb2NpdHknLFxuICAgICAgdmlzaWJsZU9uTG9naW5QYWdlOiBmYWxzZSxcbiAgICAgIHR5cGU6IHRlbmFudExvZ2luT3B0aW9uVHlwZVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jb25maWd1cmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9hdXRoLWNvbmZpZ3VyYXRpb24vYmFzaWMtc2V0dGluZ3MvYXV0aC1jb25maWd1cmF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsU0FBUyxFQUlULG9CQUFvQixFQUNwQix5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixhQUFhLEVBQ2IsV0FBVyxFQUNYLG9CQUFvQixFQUNyQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXJDLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7OztBQUd2RSxNQUFNLE9BQU8sd0JBQXdCO0lBdUJuQyxZQUNVLHlCQUFvRCxFQUNwRCxvQkFBMEMsRUFDMUMsb0JBQTBDLEVBQzFDLFFBQXlCLEVBQ3pCLGVBQWdDLEVBQ2hDLHVCQUFnRCxFQUNoRCxhQUE0QjtRQU41Qiw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ3BELHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixvQkFBZSxH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YSxDQUFDO1FBQ3ZCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxxQkFBNEM7UUFDeEUsT0FBTztZQUNMLG9CQUFvQixFQUFFLG9CQUFvQixDQUFDLFFBQVE7WUFDbkQsU0FBUyxFQUFFLFNBQVMsQ0FBQyxRQUFRO1lBQzdCLFlBQVksRUFBRSxZQUFZO1lBQzFCLGtCQUFrQixFQUFFLEtBQUs7WUFDekIsSUFBSSxFQUFFLHFCQUFxQjtTQUM1QixDQUFDO0lBQ0osQ0FBQzsrR0E5UlUsd0JBQXdCO21IQUF4Qix3QkFBd0I7OzRGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBHcmFudFR5cGUsXG4gIElSZXN1bHQsXG4gIElUZW5hbnRMb2dpbk9wdGlvbixcbiAgSVRlbmFudE9wdGlvbixcbiAgU3lzdGVtT3B0aW9uc1NlcnZpY2UsXG4gIFRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2UsXG4gIFRlbmFudExvZ2luT3B0aW9uVHlwZSxcbiAgVGVuYW50T3B0aW9uc1NlcnZpY2UsXG4gIFRlbmFudFNlcnZpY2UsXG4gIFRmYVN0cmF0ZWd5LFxuICBVc2VyTWFuYWdlbWVudFNvdXJjZVxufSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgZnJvbSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlZmF1bHRzIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEF1dGhDb25maWd1cmF0aW9uLCBPcHRpb25zIH0gZnJvbSAnLi9hdXRoLWNvbmZpZ3VyYXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlLCBUZW5hbnRVaVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFR5cGVkT3B0aW9uIH0gZnJvbSAnLi90eXBlZC1vcHRpb24nO1xuaW1wb3J0IHsgVGVuYW50TG9naW5PcHRpb24gfSBmcm9tICcuL2Jhc2ljLXNldHRpbmdzLm1vZGVsJztcbmltcG9ydCB7IFRlbmFudExvZ2luT3B0aW9uTWFwcGVyIH0gZnJvbSAnLi90ZW5hbnQtbG9naW4tb3B0aW9uLm1hcHBlcic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBdXRoQ29uZmlndXJhdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIHN5c3RlbU9wdGlvbnNXaXRoRGVmYXVsdFZhbHVlOiBUeXBlZE9wdGlvbltdID0gW1xuICAgIG5ldyBUeXBlZE9wdGlvbigncGFzc3dvcmQnLCAnbGltaXQudmFsaWRpdHknLCAnbnVtYmVyJywgbnVsbCksXG4gICAgbmV3IFR5cGVkT3B0aW9uKCdwYXNzd29yZCcsICdlbmZvcmNlLnN0cmVuZ3RoJywgJ2Jvb2xlYW4nLCBmYWxzZSksXG4gICAgbmV3IFR5cGVkT3B0aW9uKCd0d28tZmFjdG9yLWF1dGhlbnRpY2F0aW9uJywgJ3RlbmFudC1zY29wZS1zZXR0aW5ncy5lbmFibGVkJywgJ2Jvb2xlYW4nLCBmYWxzZSksXG4gICAgbmV3IFR5cGVkT3B0aW9uKCd0d28tZmFjdG9yLWF1dGhlbnRpY2F0aW9uJywgJ2VuYWJsZWQnLCAnYm9vbGVhbicsIGZhbHNlKSxcbiAgICAvLyBub3RlOiB0aGlzIGRlZmluaXRpb24gaXMgaW5jb25zaXN0ZW50IHdpdGggYmFja2VuZCBhbmQgaXMgb3ZlcnJpZGRlbiBpbiBnZXRTeXN0ZW1PcHRpb25zJFxuICAgIG5ldyBUeXBlZE9wdGlvbigndHdvLWZhY3Rvci1hdXRoZW50aWNhdGlvbicsICdlbmZvcmNlZCcsICdib29sZWFuJywgZmFsc2UpLFxuICAgIG5ldyBUeXBlZE9wdGlvbigndHdvLWZhY3Rvci1hdXRoZW50aWNhdGlvbicsICdlbmZvcmNlZC5ncm91cCcsICdzdHJpbmcnLCAnJylcbiAgXTtcblxuICBwcml2YXRlIHRlbmFudE9wdGlvbnNXaXRoRGVmYXVsdFZhbHVlOiBUeXBlZE9wdGlvbltdID0gW1xuICAgIG5ldyBUeXBlZE9wdGlvbigncGFzc3dvcmQnLCAnbGltaXQudmFsaWRpdHknLCAnbnVtYmVyJywgMCksXG4gICAgbmV3IFR5cGVkT3B0aW9uKCdwYXNzd29yZCcsICdzdHJlbmd0aC52YWxpZGl0eScsICdib29sZWFuJywgZmFsc2UpLFxuICAgIG5ldyBUeXBlZE9wdGlvbigndHdvLWZhY3Rvci1hdXRoZW50aWNhdGlvbicsICdlbmFibGVkJywgJ2Jvb2xlYW4nLCBmYWxzZSksXG4gICAgbmV3IFR5cGVkT3B0aW9uKCd0d28tZmFjdG9yLWF1dGhlbnRpY2F0aW9uJywgJ3Rva2VuLnZhbGlkaXR5JywgJ251bWJlcicsIDQzMjAwKSwgLy8gMzAgZGF5c1xuICAgIG5ldyBUeXBlZE9wdGlvbigndHdvLWZhY3Rvci1hdXRoZW50aWNhdGlvbicsICdwaW4udmFsaWRpdHknLCAnbnVtYmVyJywgMzApLFxuICAgIG5ldyBUeXBlZE9wdGlvbigndHdvLWZhY3Rvci1hdXRoZW50aWNhdGlvbicsICdlbmZvcmNlZCcsICdib29sZWFuJywgZmFsc2UpLFxuICAgIG5ldyBUeXBlZE9wdGlvbigndHdvLWZhY3Rvci1hdXRoZW50aWNhdGlvbicsICdzdHJhdGVneScsICdzdHJpbmcnLCAnU01TJyksXG4gICAgbmV3IFR5cGVkT3B0aW9uKCdvYXV0aC5pbnRlcm5hbCcsICdiYXNpYy10b2tlbi5saWZlc3Bhbi5zZWNvbmRzJywgJ251bWJlcicsIG51bGwpLFxuICAgIG5ldyBUeXBlZE9wdGlvbignY29uZmlndXJhdGlvbicsICd0ZW5hbnQubG9naW4uaWdub3JlLWNhc2UnLCAnYm9vbGVhbicsIGZhbHNlKVxuICBdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGVuYW50TG9naW5PcHRpb25zU2VydmljZTogVGVuYW50TG9naW5PcHRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHRlbmFudE9wdGlvbnNTZXJ2aWNlOiBUZW5hbnRPcHRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHN5c3RlbU9wdGlvbnNTZXJ2aWNlOiBTeXN0ZW1PcHRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGFwcFN0YXRlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0ZW5hbnRVaVNlcnZpY2U6IFRlbmFudFVpU2VydmljZSxcbiAgICBwcml2YXRlIHRlbmFudExvZ2luT3B0aW9uTWFwcGVyOiBUZW5hbnRMb2dpbk9wdGlvbk1hcHBlcixcbiAgICBwcml2YXRlIHRlbmFudFNlcnZpY2U6IFRlbmFudFNlcnZpY2VcbiAgKSB7fVxuXG4gIGdldEF1dGhDb25maWd1cmF0aW9uJCgpOiBPYnNlcnZhYmxlPEF1dGhDb25maWd1cmF0aW9uPiB7XG4gICAgY29uc3QgbG9naW5PcHRpb25zJCA9IHRoaXMuZ2V0TG9naW5PcHRpb25zJCgpO1xuICAgIHJldHVybiBmb3JrSm9pbih7XG4gICAgICBsb2dpbk9wdGlvbnM6IHRoaXMubWFwKGxvZ2luT3B0aW9ucyQpLFxuICAgICAgdGVuYW50T3B0aW9uczogdGhpcy5nZXRUZW5hbnRPcHRpb25zJCgpLFxuICAgICAgc3lzdGVtT3B0aW9uczogdGhpcy5nZXRTeXN0ZW1PcHRpb25zJCgpLFxuICAgICAgc21zR2F0ZXdheUF2YWlsYWJsZTogdGhpcy5pc1Ntc0FwcGxpY2F0aW9uQXZhaWxhYmxlJCgpLFxuICAgICAgcHJlZmVycmVkTG9naW5PcHRpb25UeXBlOiB0aGlzLmdldFByZWZlcnJlZExvZ2luT3B0aW9uVHlwZSQobG9naW5PcHRpb25zJClcbiAgICB9KTtcbiAgfVxuXG4gIHNhdmUobmV3QXV0aENvbmZpZ3VyYXRpb246IEF1dGhDb25maWd1cmF0aW9uLCBwcmV2aW91c0F1dGhDb25maWd1cmF0aW9uOiBBdXRoQ29uZmlndXJhdGlvbikge1xuICAgIGNvbnN0IHRlbmFudE9wdGlvbnMgPSB0aGlzLnByZXBhcmVUZW5hbnRPcHRpb25zKFxuICAgICAgbmV3QXV0aENvbmZpZ3VyYXRpb24sXG4gICAgICBwcmV2aW91c0F1dGhDb25maWd1cmF0aW9uXG4gICAgKTtcbiAgICBjb25zdCB1cGRhdGVUZW5hbnRPcHRpb25zID0gdGVuYW50T3B0aW9ucy5tYXAodGVuYW50T3B0aW9uID0+IHtcbiAgICAgIGNvbnN0IGZpeGVkT3B0aW9uID0gdGhpcy5maXhUZmFTdHJhdGVneSh0ZW5hbnRPcHRpb24pO1xuICAgICAgaWYgKGZpeGVkT3B0aW9uKSB7XG4gICAgICAgIHJldHVybiBmaXhlZE9wdGlvbjtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnRlbmFudE9wdGlvbnNTZXJ2aWNlLmNyZWF0ZSh0ZW5hbnRPcHRpb24pO1xuICAgIH0pO1xuICAgIGNvbnN0IGJhc2ljTG9naW5PcHRpb24gPSB0aGlzLnByZXBhcmVCYXNpY0xvZ2luT3B0aW9uKFxuICAgICAgbmV3QXV0aENvbmZpZ3VyYXRpb24sXG4gICAgICBwcmV2aW91c0F1dGhDb25maWd1cmF0aW9uXG4gICAgKTtcbiAgICBjb25zdCBvYXV0aEludGVybmFsTG9naW5PcHRpb24gPSB0aGlzLnByZXBhcmVPYXV0aEludGVybmFsTG9naW5PcHRpb24oXG4gICAgICBuZXdBdXRoQ29uZmlndXJhdGlvbixcbiAgICAgIHByZXZpb3VzQXV0aENvbmZpZ3VyYXRpb25cbiAgICApO1xuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFtcbiAgICAgIHRoaXMuc2F2ZU9yVXBkYXRlTG9naW5PcHRpb24oYmFzaWNMb2dpbk9wdGlvbiksXG4gICAgICB0aGlzLnNhdmVPclVwZGF0ZUxvZ2luT3B0aW9uKG9hdXRoSW50ZXJuYWxMb2dpbk9wdGlvbiksXG4gICAgICAuLi51cGRhdGVUZW5hbnRPcHRpb25zXG4gICAgXSk7XG4gIH1cblxuICBwcml2YXRlIG1hcChsb2dpbk9wdGlvbnMkOiBPYnNlcnZhYmxlPElUZW5hbnRMb2dpbk9wdGlvbltdPik6IE9ic2VydmFibGU8VGVuYW50TG9naW5PcHRpb25bXT4ge1xuICAgIHJldHVybiBsb2dpbk9wdGlvbnMkLnBpcGUoXG4gICAgICBtYXAobG9naW5PcHRpb25zID0+XG4gICAgICAgIGxvZ2luT3B0aW9ucy5tYXAobG9naW5PcHRpb24gPT4gdGhpcy50ZW5hbnRMb2dpbk9wdGlvbk1hcHBlci5tYXBUbyhsb2dpbk9wdGlvbikpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2F2ZU9yVXBkYXRlTG9naW5PcHRpb24oXG4gICAgbG9naW5PcHRpb246IElUZW5hbnRMb2dpbk9wdGlvblxuICApOiBQcm9taXNlPElSZXN1bHQ8SVRlbmFudExvZ2luT3B0aW9uPj4ge1xuICAgIHJldHVybiBsb2dpbk9wdGlvbi5pZFxuICAgICAgPyB0aGlzLnRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2UudXBkYXRlKGxvZ2luT3B0aW9uKVxuICAgICAgOiB0aGlzLnRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2UuY3JlYXRlKGxvZ2luT3B0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlcGFyZUJhc2ljTG9naW5PcHRpb24oXG4gICAgbmV3QXV0aENvbmZpZ3VyYXRpb246IEF1dGhDb25maWd1cmF0aW9uLFxuICAgIHByZXZpb3VzQXV0aENvbmZpZ3VyYXRpb246IEF1dGhDb25maWd1cmF0aW9uXG4gICk6IElUZW5hbnRMb2dpbk9wdGlvbiB7XG4gICAgY29uc3QgYmFzaWNMb2dpbk9wdGlvbiA9IHRoaXMub3JpZ2luYWxMb2dpbk9wdGlvbldpdGhEZWZhdWx0cyhcbiAgICAgIHByZXZpb3VzQXV0aENvbmZpZ3VyYXRpb24sXG4gICAgICBUZW5hbnRMb2dpbk9wdGlvblR5cGUuQkFTSUNcbiAgICApO1xuICAgIGJhc2ljTG9naW5PcHRpb24udmlzaWJsZU9uTG9naW5QYWdlID0gdGhpcy52aXNpYmxlT25Mb2dpblBhZ2UoXG4gICAgICBuZXdBdXRoQ29uZmlndXJhdGlvbixcbiAgICAgIFRlbmFudExvZ2luT3B0aW9uVHlwZS5CQVNJQ1xuICAgICk7XG4gICAgcmV0dXJuIHRoaXMudGVuYW50TG9naW5PcHRpb25NYXBwZXIubWFwRnJvbShcbiAgICAgIGJhc2ljTG9naW5PcHRpb24sXG4gICAgICB0aGlzLmdldExvZ2luT3B0aW9uRnJvbUF1dGhDb25maWd1cmF0aW9uKG5ld0F1dGhDb25maWd1cmF0aW9uLCBUZW5hbnRMb2dpbk9wdGlvblR5cGUuQkFTSUMpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlcGFyZU9hdXRoSW50ZXJuYWxMb2dpbk9wdGlvbihcbiAgICBuZXdBdXRoQ29uZmlndXJhdGlvbjogQXV0aENvbmZpZ3VyYXRpb24sXG4gICAgcHJldmlvdXNBdXRoQ29uZmlndXJhdGlvbjogQXV0aENvbmZpZ3VyYXRpb25cbiAgKTogSVRlbmFudExvZ2luT3B0aW9uIHtcbiAgICBjb25zdCBvYXV0aEludGVybmFsTG9naW5PcHRpb24gPSB0aGlzLm9yaWdpbmFsTG9naW5PcHRpb25XaXRoRGVmYXVsdHMoXG4gICAgICBwcmV2aW91c0F1dGhDb25maWd1cmF0aW9uLFxuICAgICAgVGVuYW50TG9naW5PcHRpb25UeXBlLk9BVVRIMl9JTlRFUk5BTFxuICAgICk7XG4gICAgb2F1dGhJbnRlcm5hbExvZ2luT3B0aW9uLnZpc2libGVPbkxvZ2luUGFnZSA9IHRoaXMudmlzaWJsZU9uTG9naW5QYWdlKFxuICAgICAgbmV3QXV0aENvbmZpZ3VyYXRpb24sXG4gICAgICBUZW5hbnRMb2dpbk9wdGlvblR5cGUuT0FVVEgyX0lOVEVSTkFMXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy50ZW5hbnRMb2dpbk9wdGlvbk1hcHBlci5tYXBGcm9tKFxuICAgICAgb2F1dGhJbnRlcm5hbExvZ2luT3B0aW9uLFxuICAgICAgdGhpcy5nZXRMb2dpbk9wdGlvbkZyb21BdXRoQ29uZmlndXJhdGlvbihcbiAgICAgICAgbmV3QXV0aENvbmZpZ3VyYXRpb24sXG4gICAgICAgIFRlbmFudExvZ2luT3B0aW9uVHlwZS5PQVVUSDJfSU5URVJOQUxcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvcmlnaW5hbExvZ2luT3B0aW9uV2l0aERlZmF1bHRzKFxuICAgIHByZXZpb3VzQXV0aENvbmZpZ3VyYXRpb246IEF1dGhDb25maWd1cmF0aW9uLFxuICAgIGxvZ2luT3B0aW9uVHlwZTogVGVuYW50TG9naW5PcHRpb25UeXBlXG4gICk6IFRlbmFudExvZ2luT3B0aW9uIHtcbiAgICByZXR1cm4gZGVmYXVsdHMoXG4gICAgICB7fSxcbiAgICAgIHRoaXMuZ2V0TG9naW5PcHRpb25Gcm9tQXV0aENvbmZpZ3VyYXRpb24ocHJldmlvdXNBdXRoQ29uZmlndXJhdGlvbiwgbG9naW5PcHRpb25UeXBlKSxcbiAgICAgIHRoaXMuZ2V0RGVmYXVsdExvZ2luT3B0aW9uKGxvZ2luT3B0aW9uVHlwZSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2dpbk9wdGlvbkZyb21BdXRoQ29uZmlndXJhdGlvbihcbiAgICBhdXRoQ29uZmlndXJhdGlvbjogQXV0aENvbmZpZ3VyYXRpb24sXG4gICAgbG9naW5PcHRpb25UeXBlOiBUZW5hbnRMb2dpbk9wdGlvblR5cGVcbiAgKSB7XG4gICAgcmV0dXJuIGF1dGhDb25maWd1cmF0aW9uLmxvZ2luT3B0aW9ucy5maW5kKGxvZ2luT3B0aW9uID0+IGxvZ2luT3B0aW9uLnR5cGUgPT09IGxvZ2luT3B0aW9uVHlwZSk7XG4gIH1cblxuICBwcml2YXRlIHZpc2libGVPbkxvZ2luUGFnZShcbiAgICBhdXRoQ29uZmlndXJhdGlvbjogQXV0aENvbmZpZ3VyYXRpb24sXG4gICAgbG9naW5PcHRpb25UeXBlOiBUZW5hbnRMb2dpbk9wdGlvblR5cGVcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGF1dGhDb25maWd1cmF0aW9uLnByZWZlcnJlZExvZ2luT3B0aW9uVHlwZSA9PT0gbG9naW5PcHRpb25UeXBlO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVwYXJlVGVuYW50T3B0aW9ucyhcbiAgICBuZXdBdXRoQ29uZmlndXJhdGlvbjogQXV0aENvbmZpZ3VyYXRpb24sXG4gICAgcHJldmlvdXNBdXRoQ29uZmlndXJhdGlvbjogQXV0aENvbmZpZ3VyYXRpb25cbiAgKTogSVRlbmFudE9wdGlvbltdIHtcbiAgICBjb25zdCBnZXRWYWx1ZSA9IChhdXRoQ2ZnLCB0ZW5hbnRPcHRpb24pID0+XG4gICAgICBhdXRoQ2ZnLnRlbmFudE9wdGlvbnNbdGVuYW50T3B0aW9uLmNhdGVnb3J5XVt0ZW5hbnRPcHRpb24ua2V5XTtcbiAgICBjb25zdCBoYXNDaGFuZ2VkID0gdGVuYW50T3B0aW9uID0+XG4gICAgICBnZXRWYWx1ZShuZXdBdXRoQ29uZmlndXJhdGlvbiwgdGVuYW50T3B0aW9uKSAhPT1cbiAgICAgIGdldFZhbHVlKHByZXZpb3VzQXV0aENvbmZpZ3VyYXRpb24sIHRlbmFudE9wdGlvbik7XG5cbiAgICByZXR1cm4gdGhpcy50ZW5hbnRPcHRpb25zV2l0aERlZmF1bHRWYWx1ZVxuICAgICAgLmZpbHRlcih0ZW5hbnRPcHRpb24gPT4gZ2V0VmFsdWUobmV3QXV0aENvbmZpZ3VyYXRpb24sIHRlbmFudE9wdGlvbikgIT09IG51bGwpXG4gICAgICAuZmlsdGVyKHRlbmFudE9wdGlvbiA9PiBoYXNDaGFuZ2VkKHRlbmFudE9wdGlvbikpXG4gICAgICAubWFwKHRlbmFudE9wdGlvbiA9PiAoe1xuICAgICAgICBjYXRlZ29yeTogdGVuYW50T3B0aW9uLmNhdGVnb3J5LFxuICAgICAgICBrZXk6IHRlbmFudE9wdGlvbi5rZXksXG4gICAgICAgIHZhbHVlOiBnZXRWYWx1ZShuZXdBdXRoQ29uZmlndXJhdGlvbiwgdGVuYW50T3B0aW9uKS50b1N0cmluZygpXG4gICAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGdldExvZ2luT3B0aW9ucyQoKTogT2JzZXJ2YWJsZTxJVGVuYW50TG9naW5PcHRpb25bXT4ge1xuICAgIHJldHVybiBmb3JrSm9pbihbXG4gICAgICB0aGlzLmdldExvZ2luT3B0aW9uKFRlbmFudExvZ2luT3B0aW9uVHlwZS5PQVVUSDIpLFxuICAgICAgdGhpcy5nZXRMb2dpbk9wdGlvbihUZW5hbnRMb2dpbk9wdGlvblR5cGUuQkFTSUMpLFxuICAgICAgdGhpcy5nZXRMb2dpbk9wdGlvbihUZW5hbnRMb2dpbk9wdGlvblR5cGUuT0FVVEgyX0lOVEVSTkFMKVxuICAgIF0pLnBpcGUobWFwKGxvZ2luT3B0aW9ucyA9PiBsb2dpbk9wdGlvbnMuZmlsdGVyKGxvZ2luT3B0aW9uID0+ICEhbG9naW5PcHRpb24pKSk7XG4gIH1cblxuICBwcml2YXRlIGdldExvZ2luT3B0aW9uKFxuICAgIHRlbmFudExvZ2luT3B0aW9uVHlwZTogVGVuYW50TG9naW5PcHRpb25UeXBlXG4gICk6IE9ic2VydmFibGU8SVRlbmFudExvZ2luT3B0aW9uPiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy50ZW5hbnRMb2dpbk9wdGlvbnNTZXJ2aWNlLmRldGFpbCh0ZW5hbnRMb2dpbk9wdGlvblR5cGUpKS5waXBlKFxuICAgICAgbWFwKHJlcyA9PiByZXMuZGF0YSksXG4gICAgICBjYXRjaEVycm9yKCgpID0+XG4gICAgICAgIHRlbmFudExvZ2luT3B0aW9uVHlwZSAhPT0gVGVuYW50TG9naW5PcHRpb25UeXBlLk9BVVRIMlxuICAgICAgICAgID8gb2YodGhpcy5nZXREZWZhdWx0TG9naW5PcHRpb24odGVuYW50TG9naW5PcHRpb25UeXBlKSlcbiAgICAgICAgICA6IG9mKG51bGwpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UHJlZmVycmVkTG9naW5PcHRpb25UeXBlJChcbiAgICBsb2dpbk9wdGlvbnMkOiBPYnNlcnZhYmxlPElUZW5hbnRMb2dpbk9wdGlvbltdPlxuICApOiBPYnNlcnZhYmxlPFRlbmFudExvZ2luT3B0aW9uVHlwZT4ge1xuICAgIHJldHVybiBsb2dpbk9wdGlvbnMkLnBpcGUoXG4gICAgICBtYXAobG9naW5PcHRpb25zID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGVuYW50VWlTZXJ2aWNlLmdldFByZWZlcnJlZExvZ2luT3B0aW9uKGxvZ2luT3B0aW9ucykudHlwZTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGVuYW50T3B0aW9ucyQoKTogT2JzZXJ2YWJsZTxPcHRpb25zPiB7XG4gICAgcmV0dXJuIGZvcmtKb2luKFxuICAgICAgdGhpcy50ZW5hbnRPcHRpb25zV2l0aERlZmF1bHRWYWx1ZS5tYXAoKG9wdGlvbjogVHlwZWRPcHRpb24pID0+XG4gICAgICAgIGZyb20odGhpcy50ZW5hbnRPcHRpb25zU2VydmljZS5kZXRhaWwob3B0aW9uKSkucGlwZShcbiAgICAgICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgICAgIG9wdGlvbi5hcHBseShyZXMuZGF0YSk7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2Yob3B0aW9uKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICkucGlwZShtYXAob3B0aW9ucyA9PiB0aGlzLmdldE9wdGlvbnNPYmplY3Qob3B0aW9ucykpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3lzdGVtT3B0aW9ucyQoKTogT2JzZXJ2YWJsZTxPcHRpb25zPiB7XG4gICAgcmV0dXJuIGZvcmtKb2luKFxuICAgICAgdGhpcy5zeXN0ZW1PcHRpb25zV2l0aERlZmF1bHRWYWx1ZS5tYXAoKG9wdGlvbjogVHlwZWRPcHRpb24pID0+IHtcbiAgICAgICAgY29uc3QgZml4ZWRPcHRpb24gPSB0aGlzLmZpeFRmYUVuZm9yY2VkU3lzdGVtT3B0aW9uKG9wdGlvbik7XG4gICAgICAgIGlmIChmaXhlZE9wdGlvbikge1xuICAgICAgICAgIHJldHVybiBmaXhlZE9wdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmcm9tKHRoaXMuc3lzdGVtT3B0aW9uc1NlcnZpY2UuZGV0YWlsKG9wdGlvbikpLnBpcGUoXG4gICAgICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgICAgICBvcHRpb24uYXBwbHkocmVzLmRhdGEpO1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKG9wdGlvbikpXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICkucGlwZShtYXAob3B0aW9ucyA9PiB0aGlzLmdldE9wdGlvbnNPYmplY3Qob3B0aW9ucykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIG9ic2VydmFibGUgd2l0aCBmaXhlZCBgdHdvLWZhY3Rvci1hdXRoZW50aWNhdGlvbi5lbmZvcmNlZGAgc3lzdGVtIG9wdGlvbiBvciBudWxsLlxuICAgKiBUaGlzIG1ldGhvZCBmaXhlcyBwcm9ibGVtIHdpdGggaW5jb25zaXN0ZW50IHZhbHVlLiBTeXN0ZW0gb3B0aW9uIGB0d28tZmFjdG9yLWF1dGhlbnRpY2F0aW9uLmVuZm9yY2VkYCBpcyBsaXN0IG9mIHRlbmFudHMgd2hlbiBVSSB1c2luZyBib29sZWFuIHZhbHVlLlxuICAgKiBUaGlzIHBhcnQgd2lsbCBiZSByZW1vdmVkIGFmdGVyIGltcGxlbWVudGluZyBuZXcgZW5kcG9pbnQgaW4gTVRNLTUwNDkwLlxuICAgKi9cbiAgcHJpdmF0ZSBmaXhUZmFFbmZvcmNlZFN5c3RlbU9wdGlvbihvcHRpb246IFR5cGVkT3B0aW9uKTogT2JzZXJ2YWJsZTxUeXBlZE9wdGlvbj4ge1xuICAgIGlmIChvcHRpb24uY2F0ZWdvcnkgPT09ICd0d28tZmFjdG9yLWF1dGhlbnRpY2F0aW9uJyAmJiBvcHRpb24ua2V5ID09PSAnZW5mb3JjZWQnKSB7XG4gICAgICByZXR1cm4gZnJvbSh0aGlzLnRlbmFudFNlcnZpY2UuZ2V0VGZhU2V0dGluZ3ModGhpcy50ZW5hbnRVaVNlcnZpY2UuY3VycmVudFRlbmFudCkpLnBpcGUoXG4gICAgICAgIG1hcCh0ZmFTZXR0aW5ncyA9PiB7XG4gICAgICAgICAgb3B0aW9uLnZhbHVlID0gdGZhU2V0dGluZ3MuZW5mb3JjZWRPblN5c3RlbUxldmVsLnRvU3RyaW5nKCk7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBwcm9taXNlIG9yIG51bGwuXG4gICAqIFRoaXMgbWV0aG9kIGlzIG5lZWRlZCBub3csIGJlY2F1c2Ugc2ltcGx5IGNoYW5naW5nIFRGQSBzdHJhdGVneSB0ZW5hbnQgb3B0aW9uIGRvZXMgbm90IHRyaWdnZXIgYWxsIHRoZSBuZWNlc3NhcnkgYmFja2VuZCBsb2dpYyB0byBhcHBseSB0aGUgY2hhbmdlLCB0aGVyZWZvcmUsIHdlIG5lZWQgdG8gY2FsbCB0ZW5hbnQncyBgL3RmYWAgZW5kcG9pbnQsIHdoaWNoIGFwcGxpZXMgdGhlIGNoYW5nZSBmb3IgYWxsIHVzZXJzIGluIHRoZSB0ZW5hbnQuXG4gICAqIFdpdGhpbiBNVE0tNTA0OTAsIHdlJ3JlIGdvaW5nIHRvIHNpbXBsaWZ5IHRoZSBwcm9jZXNzIGZ1cnRoZXIgYnkgcmVwbGFjaW5nIG11bHRpcGxlIHJlcXVlc3RzIHdpdGggb25lIG5ldyBlbmRwb2ludCB0aGF0IHdpbGwgaGFuZGxlIHNhdmluZyBvZiBhbGwgYXV0aGVudGljYXRpb24gc2V0dGluZ3MuXG4gICAqL1xuICBwcml2YXRlIGZpeFRmYVN0cmF0ZWd5KG9wdGlvbjogSVRlbmFudE9wdGlvbik6IFByb21pc2U8SVJlc3VsdDxudWxsPj4ge1xuICAgIGlmIChvcHRpb24uY2F0ZWdvcnkgPT09ICd0d28tZmFjdG9yLWF1dGhlbnRpY2F0aW9uJyAmJiBvcHRpb24ua2V5ID09PSAnc3RyYXRlZ3knKSB7XG4gICAgICBjb25zdCBzdHJhdGVneTogVGZhU3RyYXRlZ3kgPSBvcHRpb24udmFsdWUgPT09ICdTTVMnID8gVGZhU3RyYXRlZ3kuU01TIDogVGZhU3RyYXRlZ3kuVE9UUDtcbiAgICAgIHJldHVybiB0aGlzLnRlbmFudFNlcnZpY2UudXBkYXRlVGZhU3RyYXRlZ3kodGhpcy50ZW5hbnRVaVNlcnZpY2UuY3VycmVudFRlbmFudCwgc3RyYXRlZ3kpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgaXNTbXNBcHBsaWNhdGlvbkF2YWlsYWJsZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5hcHBTdGF0ZS5pc0FwcGxpY2F0aW9uQXZhaWxhYmxlKCdzbXMtZ2F0ZXdheScpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3B0aW9uc09iamVjdChvcHRpb25zOiBUeXBlZE9wdGlvbltdKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMucmVkdWNlKChvcHRpb25zT2JqZWN0LCBvcHRpb24pID0+IHtcbiAgICAgIG9wdGlvbnNPYmplY3Rbb3B0aW9uLmNhdGVnb3J5XSA9IG9wdGlvbnNPYmplY3Rbb3B0aW9uLmNhdGVnb3J5XSB8fCB7fTtcbiAgICAgIG9wdGlvbnNPYmplY3Rbb3B0aW9uLmNhdGVnb3J5XVtvcHRpb24ua2V5XSA9IG9wdGlvbi5nZXRWYWx1ZSgpO1xuICAgICAgcmV0dXJuIG9wdGlvbnNPYmplY3Q7XG4gICAgfSwge30pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0TG9naW5PcHRpb24odGVuYW50TG9naW5PcHRpb25UeXBlOiBUZW5hbnRMb2dpbk9wdGlvblR5cGUpOiBJVGVuYW50TG9naW5PcHRpb24ge1xuICAgIHJldHVybiB7XG4gICAgICB1c2VyTWFuYWdlbWVudFNvdXJjZTogVXNlck1hbmFnZW1lbnRTb3VyY2UuSU5URVJOQUwsXG4gICAgICBncmFudFR5cGU6IEdyYW50VHlwZS5QQVNTV09SRCxcbiAgICAgIHByb3ZpZGVyTmFtZTogJ0N1bXVsb2NpdHknLFxuICAgICAgdmlzaWJsZU9uTG9naW5QYWdlOiBmYWxzZSxcbiAgICAgIHR5cGU6IHRlbmFudExvZ2luT3B0aW9uVHlwZVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -13,6 +13,7 @@ export class LoginSettingsComponent {
|
|
|
13
13
|
this.tenantUiService = tenantUiService;
|
|
14
14
|
this.PREFERRED_LOGIN_MODE_POPOVER = gettext('Main difference is the storage of the authentication information. With Basic Auth, it is saved in a session storage and with OAI-Secure in a HttpOnly cookie. OAI-Secure grant is recommended as the authentication information is not accessible via JavaScript. Single sign-on redirect allows a user to login with a single 3rd-party authorization server using the OAuth2 protocol.');
|
|
15
15
|
this.ENFORCED_BY_PLATFORM_POPOVER = gettext('The setting is enforced on the platform level.');
|
|
16
|
+
this.IGNORE_CASE_SENSITIVITY_POPOVER = gettext('If selected, the letter case of the username does not matter during login.');
|
|
16
17
|
this.tenantLoginOptionTypeEnum = TenantLoginOptionType;
|
|
17
18
|
this.PASSWORD_CATEGORY = 'password';
|
|
18
19
|
this.LIMIT_VALIDITY_KEY = 'limit.validity';
|
|
@@ -50,13 +51,19 @@ export class LoginSettingsComponent {
|
|
|
50
51
|
this.authConfiguration.tenantOptions[this.PASSWORD_CATEGORY][this.TENANT_STRENGTH_VALIDITY_KEY] = value;
|
|
51
52
|
}
|
|
52
53
|
}
|
|
54
|
+
get tenantLoginIgnoreCase() {
|
|
55
|
+
return this.authConfiguration.tenantOptions['configuration']['tenant.login.ignore-case'];
|
|
56
|
+
}
|
|
57
|
+
set tenantLoginIgnoreCase(value) {
|
|
58
|
+
this.authConfiguration.tenantOptions['configuration']['tenant.login.ignore-case'] = value;
|
|
59
|
+
}
|
|
53
60
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LoginSettingsComponent, deps: [{ token: i1.TenantUiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
54
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LoginSettingsComponent, selector: "c8y-login-settings", inputs: { authConfiguration: "authConfiguration" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"card-block separator-top overflow-auto\" *ngIf=\"authConfiguration\">\n <div class=\"col-sm-2\">\n <div class=\"h4 text-normal text-right text-left-xs\">{{ 'Login settings' | translate }}</div>\n </div>\n\n <div class=\"col-sm-9\">\n <div class=\"row m-b-8\">\n <c8y-form-group class=\"col-sm-6\">\n <label>\n {{ 'Preferred login mode' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ PREFERRED_LOGIN_MODE_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n [attr.aria-label]=\"'Auth type' | translate\"\n class=\"form-control\"\n id=\"preferredLoginOptionType\"\n name=\"preferredLoginOptionType\"\n [(ngModel)]=\"authConfiguration.preferredLoginOptionType\"\n >\n <option value=\"{{ tenantLoginOptionTypeEnum.BASIC }}\" translate>Basic Auth</option>\n <option value=\"{{ tenantLoginOptionTypeEnum.OAUTH2_INTERNAL }}\" translate>\n OAI-Secure\n </option>\n <option value=\"{{ tenantLoginOptionTypeEnum.OAUTH2 }}\" [disabled]=\"!isOauth2\" translate>\n Single sign-on redirect\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Password validity limit' | translate }}\">\n {{ 'Password validity limit' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ ENFORCED_BY_PLATFORM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n *ngIf=\"systemPasswordLimitValidity\"\n ></button>\n </label>\n <div class=\"input-group\">\n <input\n type=\"number\"\n name=\"passwordLimitValidity\"\n class=\"form-control text-right\"\n [(ngModel)]=\"passwordLimitValidity\"\n min=\"0\"\n max=\"999999\"\n step=\"1\"\n required\n [disabled]=\"systemPasswordLimitValidity\"\n />\n <span class=\"input-group-addon\" translate>days</span>\n </div>\n <p class=\"help-block\">\n {{ 'Default: 0 (unlimited validity)' | translate }}\n </p>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Password strength' | translate }}\">\n {{ 'Password strength' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ ENFORCED_BY_PLATFORM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n *ngIf=\"systemPasswordEnforceStrength\"\n ></button>\n </label>\n <div>\n <label\n title=\"{{ 'Enforce that all passwords are strong' | translate }}\"\n class=\"c8y-switch\"\n >\n <input\n type=\"checkbox\"\n name=\"passwordEnforceStrength\"\n data-cy=\"c8y-form-group--password-enforce-toggle-btn\"\n [(ngModel)]=\"passwordEnforceStrength\"\n [disabled]=\"systemPasswordEnforceStrength\"\n />\n <span></span>\n <span>{{ 'Enforce strong passwords (green)' | translate }}</span>\n </label>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: i1.MaxValidationDirective, selector: "[max]", inputs: ["max"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
61
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LoginSettingsComponent, selector: "c8y-login-settings", inputs: { authConfiguration: "authConfiguration" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"card-block separator-top overflow-auto\" *ngIf=\"authConfiguration\">\n <div class=\"col-sm-2\">\n <div class=\"h4 text-normal text-right text-left-xs\">{{ 'Login settings' | translate }}</div>\n </div>\n\n <div class=\"col-sm-9\">\n <div class=\"row m-b-8\">\n <c8y-form-group class=\"col-sm-6\">\n <label>\n {{ 'Preferred login mode' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ PREFERRED_LOGIN_MODE_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n [attr.aria-label]=\"'Auth type' | translate\"\n class=\"form-control\"\n id=\"preferredLoginOptionType\"\n name=\"preferredLoginOptionType\"\n [(ngModel)]=\"authConfiguration.preferredLoginOptionType\"\n >\n <option value=\"{{ tenantLoginOptionTypeEnum.BASIC }}\" translate>Basic Auth</option>\n <option value=\"{{ tenantLoginOptionTypeEnum.OAUTH2_INTERNAL }}\" translate>\n OAI-Secure\n </option>\n <option value=\"{{ tenantLoginOptionTypeEnum.OAUTH2 }}\" [disabled]=\"!isOauth2\" translate>\n Single sign-on redirect\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Password validity limit' | translate }}\">\n {{ 'Password validity limit' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ ENFORCED_BY_PLATFORM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n *ngIf=\"systemPasswordLimitValidity\"\n ></button>\n </label>\n <div class=\"input-group\">\n <input\n type=\"number\"\n name=\"passwordLimitValidity\"\n class=\"form-control text-right\"\n [(ngModel)]=\"passwordLimitValidity\"\n min=\"0\"\n max=\"999999\"\n step=\"1\"\n required\n [disabled]=\"systemPasswordLimitValidity\"\n />\n <span class=\"input-group-addon\" translate>days</span>\n </div>\n <p class=\"help-block\">\n {{ 'Default: 0 (unlimited validity)' | translate }}\n </p>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Password strength' | translate }}\">\n {{ 'Password strength' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ ENFORCED_BY_PLATFORM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n *ngIf=\"systemPasswordEnforceStrength\"\n ></button>\n </label>\n <div>\n <label\n title=\"{{ 'Enforce that all passwords are strong' | translate }}\"\n class=\"c8y-switch\"\n >\n <input\n type=\"checkbox\"\n name=\"passwordEnforceStrength\"\n data-cy=\"c8y-form-group--password-enforce-toggle-btn\"\n [(ngModel)]=\"passwordEnforceStrength\"\n [disabled]=\"systemPasswordEnforceStrength\"\n />\n <span></span>\n <span>{{ 'Enforce strong passwords (green)' | translate }}</span>\n </label>\n </div>\n </c8y-form-group>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n title=\"{{ 'Ignore case when logging in' | translate }}\"\n class=\"c8y-switch\"\n >\n <input\n type=\"checkbox\"\n name=\"tenantLoginIgnoreCase\"\n [(ngModel)]=\"tenantLoginIgnoreCase\"\n />\n <span></span>\n <span>{{ 'Ignore case when logging in' | translate }}</span>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ IGNORE_CASE_SENSITIVITY_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n </c8y-form-group>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: i1.MaxValidationDirective, selector: "[max]", inputs: ["max"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
55
62
|
}
|
|
56
63
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LoginSettingsComponent, decorators: [{
|
|
57
64
|
type: Component,
|
|
58
|
-
args: [{ selector: 'c8y-login-settings', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class=\"card-block separator-top overflow-auto\" *ngIf=\"authConfiguration\">\n <div class=\"col-sm-2\">\n <div class=\"h4 text-normal text-right text-left-xs\">{{ 'Login settings' | translate }}</div>\n </div>\n\n <div class=\"col-sm-9\">\n <div class=\"row m-b-8\">\n <c8y-form-group class=\"col-sm-6\">\n <label>\n {{ 'Preferred login mode' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ PREFERRED_LOGIN_MODE_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n [attr.aria-label]=\"'Auth type' | translate\"\n class=\"form-control\"\n id=\"preferredLoginOptionType\"\n name=\"preferredLoginOptionType\"\n [(ngModel)]=\"authConfiguration.preferredLoginOptionType\"\n >\n <option value=\"{{ tenantLoginOptionTypeEnum.BASIC }}\" translate>Basic Auth</option>\n <option value=\"{{ tenantLoginOptionTypeEnum.OAUTH2_INTERNAL }}\" translate>\n OAI-Secure\n </option>\n <option value=\"{{ tenantLoginOptionTypeEnum.OAUTH2 }}\" [disabled]=\"!isOauth2\" translate>\n Single sign-on redirect\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Password validity limit' | translate }}\">\n {{ 'Password validity limit' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ ENFORCED_BY_PLATFORM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n *ngIf=\"systemPasswordLimitValidity\"\n ></button>\n </label>\n <div class=\"input-group\">\n <input\n type=\"number\"\n name=\"passwordLimitValidity\"\n class=\"form-control text-right\"\n [(ngModel)]=\"passwordLimitValidity\"\n min=\"0\"\n max=\"999999\"\n step=\"1\"\n required\n [disabled]=\"systemPasswordLimitValidity\"\n />\n <span class=\"input-group-addon\" translate>days</span>\n </div>\n <p class=\"help-block\">\n {{ 'Default: 0 (unlimited validity)' | translate }}\n </p>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Password strength' | translate }}\">\n {{ 'Password strength' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ ENFORCED_BY_PLATFORM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n *ngIf=\"systemPasswordEnforceStrength\"\n ></button>\n </label>\n <div>\n <label\n title=\"{{ 'Enforce that all passwords are strong' | translate }}\"\n class=\"c8y-switch\"\n >\n <input\n type=\"checkbox\"\n name=\"passwordEnforceStrength\"\n data-cy=\"c8y-form-group--password-enforce-toggle-btn\"\n [(ngModel)]=\"passwordEnforceStrength\"\n [disabled]=\"systemPasswordEnforceStrength\"\n />\n <span></span>\n <span>{{ 'Enforce strong passwords (green)' | translate }}</span>\n </label>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
65
|
+
args: [{ selector: 'c8y-login-settings', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class=\"card-block separator-top overflow-auto\" *ngIf=\"authConfiguration\">\n <div class=\"col-sm-2\">\n <div class=\"h4 text-normal text-right text-left-xs\">{{ 'Login settings' | translate }}</div>\n </div>\n\n <div class=\"col-sm-9\">\n <div class=\"row m-b-8\">\n <c8y-form-group class=\"col-sm-6\">\n <label>\n {{ 'Preferred login mode' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ PREFERRED_LOGIN_MODE_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n [attr.aria-label]=\"'Auth type' | translate\"\n class=\"form-control\"\n id=\"preferredLoginOptionType\"\n name=\"preferredLoginOptionType\"\n [(ngModel)]=\"authConfiguration.preferredLoginOptionType\"\n >\n <option value=\"{{ tenantLoginOptionTypeEnum.BASIC }}\" translate>Basic Auth</option>\n <option value=\"{{ tenantLoginOptionTypeEnum.OAUTH2_INTERNAL }}\" translate>\n OAI-Secure\n </option>\n <option value=\"{{ tenantLoginOptionTypeEnum.OAUTH2 }}\" [disabled]=\"!isOauth2\" translate>\n Single sign-on redirect\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Password validity limit' | translate }}\">\n {{ 'Password validity limit' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ ENFORCED_BY_PLATFORM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n *ngIf=\"systemPasswordLimitValidity\"\n ></button>\n </label>\n <div class=\"input-group\">\n <input\n type=\"number\"\n name=\"passwordLimitValidity\"\n class=\"form-control text-right\"\n [(ngModel)]=\"passwordLimitValidity\"\n min=\"0\"\n max=\"999999\"\n step=\"1\"\n required\n [disabled]=\"systemPasswordLimitValidity\"\n />\n <span class=\"input-group-addon\" translate>days</span>\n </div>\n <p class=\"help-block\">\n {{ 'Default: 0 (unlimited validity)' | translate }}\n </p>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Password strength' | translate }}\">\n {{ 'Password strength' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ ENFORCED_BY_PLATFORM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n *ngIf=\"systemPasswordEnforceStrength\"\n ></button>\n </label>\n <div>\n <label\n title=\"{{ 'Enforce that all passwords are strong' | translate }}\"\n class=\"c8y-switch\"\n >\n <input\n type=\"checkbox\"\n name=\"passwordEnforceStrength\"\n data-cy=\"c8y-form-group--password-enforce-toggle-btn\"\n [(ngModel)]=\"passwordEnforceStrength\"\n [disabled]=\"systemPasswordEnforceStrength\"\n />\n <span></span>\n <span>{{ 'Enforce strong passwords (green)' | translate }}</span>\n </label>\n </div>\n </c8y-form-group>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n title=\"{{ 'Ignore case when logging in' | translate }}\"\n class=\"c8y-switch\"\n >\n <input\n type=\"checkbox\"\n name=\"tenantLoginIgnoreCase\"\n [(ngModel)]=\"tenantLoginIgnoreCase\"\n />\n <span></span>\n <span>{{ 'Ignore case when logging in' | translate }}</span>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ IGNORE_CASE_SENSITIVITY_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n </c8y-form-group>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
59
66
|
}], ctorParameters: function () { return [{ type: i1.TenantUiService }]; }, propDecorators: { authConfiguration: [{
|
|
60
67
|
type: Input
|
|
61
68
|
}] } });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tc2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXV0aC1jb25maWd1cmF0aW9uL2Jhc2ljLXNldHRpbmdzL2xvZ2luLXNldHRpbmdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2F1dGgtY29uZmlndXJhdGlvbi9iYXNpYy1zZXR0aW5ncy9sb2dpbi1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7QUFPcEQsTUFBTSxPQUFPLHNCQUFzQjtJQWlCakMsWUFBb0IsZUFBZ0M7UUFBaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBaEJwRCxpQ0FBNEIsR0FBRyxPQUFPLENBQ3BDLDBYQUEwWCxDQUMzWCxDQUFDO1FBQ0YsaUNBQTRCLEdBQUcsT0FBTyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7UUFNekYsOEJBQXlCLEdBQUcscUJBQXFCLENBQUM7UUFFMUMsc0JBQWlCLEdBQUcsVUFBVSxDQUFDO1FBQy9CLHVCQUFrQixHQUFHLGdCQUFnQixDQUFDO1FBQ3RDLGlDQUE0QixHQUFHLG1CQUFtQixDQUFDO1FBQ25ELGlDQUE0QixHQUFHLGtCQUFrQixDQUFDO0lBRUgsQ0FBQztJQUV4RCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsaUJBQWlCLElBQUksT0FBTyxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRTtZQUN2RSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ3hFLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUM5QixDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRUQsSUFBSSwyQkFBMkI7UUFDN0IsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxJQUFJLHFCQUFxQjtRQUN2QixPQUFPLElBQUksQ0FBQywyQkFBMkIsS0FBSyxJQUFJO1lBQzlDLENBQUMsQ0FBQyxJQUFJLENBQUMsMkJBQTJCO1lBQ2xDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFRCxJQUFJLHFCQUFxQixDQUFDLEtBQUs7UUFDN0IsSUFBSSxJQUFJLENBQUMsMkJBQTJCLEtBQUssSUFBSSxFQUFFO1lBQzdDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsS0FBSyxDQUFDO1NBQy9GO0lBQ0gsQ0FBQztJQUVELElBQUksNkJBQTZCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FDakUsSUFBSSxDQUFDLDRCQUE0QixDQUNsQyxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksdUJBQXVCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLDZCQUE2QjtZQUN2QyxDQUFDLENBQUMsSUFBSSxDQUFDLDZCQUE2QjtZQUNwQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FDMUQsSUFBSSxDQUFDLDRCQUE0QixDQUNsQyxDQUFDO0lBQ1IsQ0FBQztJQUVELElBQUksdUJBQXVCLENBQUMsS0FBSztRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFO1lBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQzFELElBQUksQ0FBQyw0QkFBNEIsQ0FDbEMsR0FBRyxLQUFLLENBQUM7U0FDWDtJQUNILENBQUM7K0dBL0RVLHNCQUFzQjttR0FBdEIsc0JBQXNCLG1JQ1puQywwaElBNEdBLGs4RkRsR2lCLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDOzs0RkFFeEQsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLG9CQUFvQixpQkFFZixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQztzR0FTbkUsaUJBQWlCO3NCQURoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQXV0aENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2F1dGgtY29uZmlndXJhdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBUZW5hbnRVaVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRlbmFudExvZ2luT3B0aW9uVHlwZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWxvZ2luLXNldHRpbmdzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvZ2luLXNldHRpbmdzLmNvbXBvbmVudC5odG1sJyxcbiAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IE5nRm9ybSB9XVxufSlcbmV4cG9ydCBjbGFzcyBMb2dpblNldHRpbmdzQ29tcG9uZW50IHtcbiAgUFJFRkVSUkVEX0xPR0lOX01PREVfUE9QT1ZFUiA9IGdldHRleHQoXG4gICAgJ01haW4gZGlmZmVyZW5jZSBpcyB0aGUgc3RvcmFnZSBvZiB0aGUgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24uIFdpdGggQmFzaWMgQXV0aCwgaXQgaXMgc2F2ZWQgaW4gYSBzZXNzaW9uIHN0b3JhZ2UgYW5kIHdpdGggT0FJLVNlY3VyZSBpbiBhIEh0dHBPbmx5IGNvb2tpZS4gT0FJLVNlY3VyZSBncmFudCBpcyByZWNvbW1lbmRlZCBhcyB0aGUgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24gaXMgbm90IGFjY2Vzc2libGUgdmlhIEphdmFTY3JpcHQuIFNpbmdsZSBzaWduLW9uIHJlZGlyZWN0IGFsbG93cyBhIHVzZXIgdG8gbG9naW4gd2l0aCBhIHNpbmdsZSAzcmQtcGFydHkgYXV0aG9yaXphdGlvbiBzZXJ2ZXIgdXNpbmcgdGhlIE9BdXRoMiBwcm90b2NvbC4nXG4gICk7XG4gIEVORk9SQ0VEX0JZX1BMQVRGT1JNX1BPUE9WRVIgPSBnZXR0ZXh0KCdUaGUgc2V0dGluZyBpcyBlbmZvcmNlZCBvbiB0aGUgcGxhdGZvcm0gbGV2ZWwuJyk7XG5cbiAgQElucHV0KClcbiAgYXV0aENvbmZpZ3VyYXRpb246IEF1dGhDb25maWd1cmF0aW9uO1xuXG4gIGlzT2F1dGgyOiBib29sZWFuO1xuICB0ZW5hbnRMb2dpbk9wdGlvblR5cGVFbnVtID0gVGVuYW50TG9naW5PcHRpb25UeXBlO1xuXG4gIHByaXZhdGUgUEFTU1dPUkRfQ0FURUdPUlkgPSAncGFzc3dvcmQnO1xuICBwcml2YXRlIExJTUlUX1ZBTElESVRZX0tFWSA9ICdsaW1pdC52YWxpZGl0eSc7XG4gIHByaXZhdGUgVEVOQU5UX1NUUkVOR1RIX1ZBTElESVRZX0tFWSA9ICdzdHJlbmd0aC52YWxpZGl0eSc7XG4gIHByaXZhdGUgU1lTVEVNX1NUUkVOR1RIX1ZBTElESVRZX0tFWSA9ICdlbmZvcmNlLnN0cmVuZ3RoJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRlbmFudFVpU2VydmljZTogVGVuYW50VWlTZXJ2aWNlKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5hdXRoQ29uZmlndXJhdGlvbiAmJiBjaGFuZ2VzLmF1dGhDb25maWd1cmF0aW9uLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5pc09hdXRoMiA9ICEhY2hhbmdlcy5hdXRoQ29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWUubG9naW5PcHRpb25zLmZpbmQoXG4gICAgICAgIHRoaXMudGVuYW50VWlTZXJ2aWNlLmlzT2F1dGgyXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzeXN0ZW1QYXNzd29yZExpbWl0VmFsaWRpdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aENvbmZpZ3VyYXRpb24uc3lzdGVtT3B0aW9uc1t0aGlzLlBBU1NXT1JEX0NBVEVHT1JZXVt0aGlzLkxJTUlUX1ZBTElESVRZX0tFWV07XG4gIH1cblxuICBnZXQgcGFzc3dvcmRMaW1pdFZhbGlkaXR5KCkge1xuICAgIHJldHVybiB0aGlzLnN5c3RlbVBhc3N3b3JkTGltaXRWYWxpZGl0eSAhPT0gbnVsbFxuICAgICAgPyB0aGlzLnN5c3RlbVBhc3N3b3JkTGltaXRWYWxpZGl0eVxuICAgICAgOiB0aGlzLmF1dGhDb25maWd1cmF0aW9uLnRlbmFudE9wdGlvbnNbdGhpcy5QQVNTV09SRF9DQVRFR09SWV1bdGhpcy5MSU1JVF9WQUxJRElUWV9LRVldO1xuICB9XG5cbiAgc2V0IHBhc3N3b3JkTGltaXRWYWxpZGl0eSh2YWx1ZSkge1xuICAgIGlmICh0aGlzLnN5c3RlbVBhc3N3b3JkTGltaXRWYWxpZGl0eSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5hdXRoQ29uZmlndXJhdGlvbi50ZW5hbnRPcHRpb25zW3RoaXMuUEFTU1dPUkRfQ0FURUdPUlldW3RoaXMuTElNSVRfVkFMSURJVFlfS0VZXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzeXN0ZW1QYXNzd29yZEVuZm9yY2VTdHJlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5hdXRoQ29uZmlndXJhdGlvbi5zeXN0ZW1PcHRpb25zW3RoaXMuUEFTU1dPUkRfQ0FURUdPUlldW1xuICAgICAgdGhpcy5TWVNURU1fU1RSRU5HVEhfVkFMSURJVFlfS0VZXG4gICAgXTtcbiAgfVxuXG4gIGdldCBwYXNzd29yZEVuZm9yY2VTdHJlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5zeXN0ZW1QYXNzd29yZEVuZm9yY2VTdHJlbmd0aFxuICAgICAgPyB0aGlzLnN5c3RlbVBhc3N3b3JkRW5mb3JjZVN0cmVuZ3RoXG4gICAgICA6IHRoaXMuYXV0aENvbmZpZ3VyYXRpb24udGVuYW50T3B0aW9uc1t0aGlzLlBBU1NXT1JEX0NBVEVHT1JZXVtcbiAgICAgICAgICB0aGlzLlRFTkFOVF9TVFJFTkdUSF9WQUxJRElUWV9LRVlcbiAgICAgICAgXTtcbiAgfVxuXG4gIHNldCBwYXNzd29yZEVuZm9yY2VTdHJlbmd0aCh2YWx1ZSkge1xuICAgIGlmICghdGhpcy5zeXN0ZW1QYXNzd29yZEVuZm9yY2VTdHJlbmd0aCkge1xuICAgICAgdGhpcy5hdXRoQ29uZmlndXJhdGlvbi50ZW5hbnRPcHRpb25zW3RoaXMuUEFTU1dPUkRfQ0FURUdPUlldW1xuICAgICAgICB0aGlzLlRFTkFOVF9TVFJFTkdUSF9WQUxJRElUWV9LRVlcbiAgICAgIF0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIHNlcGFyYXRvci10b3Agb3ZlcmZsb3ctYXV0b1wiICpuZ0lmPVwiYXV0aENvbmZpZ3VyYXRpb25cIj5cbiAgPGRpdiBjbGFzcz1cImNvbC1zbS0yXCI+XG4gICAgPGRpdiBjbGFzcz1cImg0IHRleHQtbm9ybWFsIHRleHQtcmlnaHQgdGV4dC1sZWZ0LXhzXCI+e3sgJ0xvZ2luIHNldHRpbmdzJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiY29sLXNtLTlcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IG0tYi04XCI+XG4gICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICA8bGFiZWw+XG4gICAgICAgICAge3sgJ1ByZWZlcnJlZCBsb2dpbiBtb2RlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgcG9wb3Zlcj1cInt7IFBSRUZFUlJFRF9MT0dJTl9NT0RFX1BPUE9WRVIgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjOHktc2VsZWN0LXdyYXBwZXJcIj5cbiAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBdXRoIHR5cGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIGlkPVwicHJlZmVycmVkTG9naW5PcHRpb25UeXBlXCJcbiAgICAgICAgICAgIG5hbWU9XCJwcmVmZXJyZWRMb2dpbk9wdGlvblR5cGVcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJhdXRoQ29uZmlndXJhdGlvbi5wcmVmZXJyZWRMb2dpbk9wdGlvblR5cGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ7eyB0ZW5hbnRMb2dpbk9wdGlvblR5cGVFbnVtLkJBU0lDIH19XCIgdHJhbnNsYXRlPkJhc2ljIEF1dGg8L29wdGlvbj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ7eyB0ZW5hbnRMb2dpbk9wdGlvblR5cGVFbnVtLk9BVVRIMl9JTlRFUk5BTCB9fVwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICAgICAgT0FJLVNlY3VyZVxuICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwie3sgdGVuYW50TG9naW5PcHRpb25UeXBlRW51bS5PQVVUSDIgfX1cIiBbZGlzYWJsZWRdPVwiIWlzT2F1dGgyXCIgdHJhbnNsYXRlPlxuICAgICAgICAgICAgICBTaW5nbGUgc2lnbi1vbiByZWRpcmVjdFxuICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgIDxsYWJlbCB0aXRsZT1cInt7ICdQYXNzd29yZCB2YWxpZGl0eSBsaW1pdCcgfCB0cmFuc2xhdGUgfX1cIj5cbiAgICAgICAgICAgIHt7ICdQYXNzd29yZCB2YWxpZGl0eSBsaW1pdCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBwb3BvdmVyPVwie3sgRU5GT1JDRURfQllfUExBVEZPUk1fUE9QT1ZFUiB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgICAqbmdJZj1cInN5c3RlbVBhc3N3b3JkTGltaXRWYWxpZGl0eVwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgbmFtZT1cInBhc3N3b3JkTGltaXRWYWxpZGl0eVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIHRleHQtcmlnaHRcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBhc3N3b3JkTGltaXRWYWxpZGl0eVwiXG4gICAgICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgICAgICBtYXg9XCI5OTk5OTlcIlxuICAgICAgICAgICAgICBzdGVwPVwiMVwiXG4gICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzeXN0ZW1QYXNzd29yZExpbWl0VmFsaWRpdHlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb25cIiB0cmFuc2xhdGU+ZGF5czwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8cCBjbGFzcz1cImhlbHAtYmxvY2tcIj5cbiAgICAgICAgICAgIHt7ICdEZWZhdWx0OiAwICh1bmxpbWl0ZWQgdmFsaWRpdHkpJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XG4gICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICA8bGFiZWwgdGl0bGU9XCJ7eyAnUGFzc3dvcmQgc3RyZW5ndGgnIHwgdHJhbnNsYXRlIH19XCI+XG4gICAgICAgICAgICB7eyAnUGFzc3dvcmQgc3RyZW5ndGgnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgcG9wb3Zlcj1cInt7IEVORk9SQ0VEX0JZX1BMQVRGT1JNX1BPUE9WRVIgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzeXN0ZW1QYXNzd29yZEVuZm9yY2VTdHJlbmd0aFwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0VuZm9yY2UgdGhhdCBhbGwgcGFzc3dvcmRzIGFyZSBzdHJvbmcnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjOHktc3dpdGNoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBuYW1lPVwicGFzc3dvcmRFbmZvcmNlU3RyZW5ndGhcIlxuICAgICAgICAgICAgICAgIGRhdGEtY3k9XCJjOHktZm9ybS1ncm91cC0tcGFzc3dvcmQtZW5mb3JjZS10b2dnbGUtYnRuXCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBhc3N3b3JkRW5mb3JjZVN0cmVuZ3RoXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic3lzdGVtUGFzc3dvcmRFbmZvcmNlU3RyZW5ndGhcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuPnt7ICdFbmZvcmNlIHN0cm9uZyBwYXNzd29yZHMgKGdyZWVuKScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tc2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXV0aC1jb25maWd1cmF0aW9uL2Jhc2ljLXNldHRpbmdzL2xvZ2luLXNldHRpbmdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2F1dGgtY29uZmlndXJhdGlvbi9iYXNpYy1zZXR0aW5ncy9sb2dpbi1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7QUFPcEQsTUFBTSxPQUFPLHNCQUFzQjtJQW9CakMsWUFBb0IsZUFBZ0M7UUFBaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBbkJwRCxpQ0FBNEIsR0FBRyxPQUFPLENBQ3BDLDBYQUEwWCxDQUMzWCxDQUFDO1FBQ0YsaUNBQTRCLEdBQUcsT0FBTyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7UUFDekYsb0NBQStCLEdBQUcsT0FBTyxDQUN2Qyw0RUFBNEUsQ0FDN0UsQ0FBQztRQU1GLDhCQUF5QixHQUFHLHFCQUFxQixDQUFDO1FBRTFDLHNCQUFpQixHQUFHLFVBQVUsQ0FBQztRQUMvQix1QkFBa0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUN0QyxpQ0FBNEIsR0FBRyxtQkFBbUIsQ0FBQztRQUNuRCxpQ0FBNEIsR0FBRyxrQkFBa0IsQ0FBQztJQUVILENBQUM7SUFFeEQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLGlCQUFpQixJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUU7WUFDdkUsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUN4RSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FDOUIsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELElBQUksMkJBQTJCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQsSUFBSSxxQkFBcUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsMkJBQTJCLEtBQUssSUFBSTtZQUM5QyxDQUFDLENBQUMsSUFBSSxDQUFDLDJCQUEyQjtZQUNsQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRUQsSUFBSSxxQkFBcUIsQ0FBQyxLQUFLO1FBQzdCLElBQUksSUFBSSxDQUFDLDJCQUEyQixLQUFLLElBQUksRUFBRTtZQUM3QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEtBQUssQ0FBQztTQUMvRjtJQUNILENBQUM7SUFFRCxJQUFJLDZCQUE2QjtRQUMvQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQ2pFLElBQUksQ0FBQyw0QkFBNEIsQ0FDbEMsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLHVCQUF1QjtRQUN6QixPQUFPLElBQUksQ0FBQyw2QkFBNkI7WUFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyw2QkFBNkI7WUFDcEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQzFELElBQUksQ0FBQyw0QkFBNEIsQ0FDbEMsQ0FBQztJQUNSLENBQUM7SUFFRCxJQUFJLHVCQUF1QixDQUFDLEtBQUs7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsRUFBRTtZQUN2QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUMxRCxJQUFJLENBQUMsNEJBQTRCLENBQ2xDLEdBQUcsS0FBSyxDQUFDO1NBQ1g7SUFDSCxDQUFDO0lBRUQsSUFBSSxxQkFBcUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVELElBQUkscUJBQXFCLENBQUMsS0FBSztRQUM3QixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQzVGLENBQUM7K0dBMUVVLHNCQUFzQjttR0FBdEIsc0JBQXNCLG1JQ1puQyxrN0pBdUlBLGs4RkQ3SGlCLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDOzs0RkFFeEQsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLG9CQUFvQixpQkFFZixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQztzR0FZbkUsaUJBQWlCO3NCQURoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQXV0aENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2F1dGgtY29uZmlndXJhdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBUZW5hbnRVaVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRlbmFudExvZ2luT3B0aW9uVHlwZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWxvZ2luLXNldHRpbmdzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvZ2luLXNldHRpbmdzLmNvbXBvbmVudC5odG1sJyxcbiAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IE5nRm9ybSB9XVxufSlcbmV4cG9ydCBjbGFzcyBMb2dpblNldHRpbmdzQ29tcG9uZW50IHtcbiAgUFJFRkVSUkVEX0xPR0lOX01PREVfUE9QT1ZFUiA9IGdldHRleHQoXG4gICAgJ01haW4gZGlmZmVyZW5jZSBpcyB0aGUgc3RvcmFnZSBvZiB0aGUgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24uIFdpdGggQmFzaWMgQXV0aCwgaXQgaXMgc2F2ZWQgaW4gYSBzZXNzaW9uIHN0b3JhZ2UgYW5kIHdpdGggT0FJLVNlY3VyZSBpbiBhIEh0dHBPbmx5IGNvb2tpZS4gT0FJLVNlY3VyZSBncmFudCBpcyByZWNvbW1lbmRlZCBhcyB0aGUgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24gaXMgbm90IGFjY2Vzc2libGUgdmlhIEphdmFTY3JpcHQuIFNpbmdsZSBzaWduLW9uIHJlZGlyZWN0IGFsbG93cyBhIHVzZXIgdG8gbG9naW4gd2l0aCBhIHNpbmdsZSAzcmQtcGFydHkgYXV0aG9yaXphdGlvbiBzZXJ2ZXIgdXNpbmcgdGhlIE9BdXRoMiBwcm90b2NvbC4nXG4gICk7XG4gIEVORk9SQ0VEX0JZX1BMQVRGT1JNX1BPUE9WRVIgPSBnZXR0ZXh0KCdUaGUgc2V0dGluZyBpcyBlbmZvcmNlZCBvbiB0aGUgcGxhdGZvcm0gbGV2ZWwuJyk7XG4gIElHTk9SRV9DQVNFX1NFTlNJVElWSVRZX1BPUE9WRVIgPSBnZXR0ZXh0KFxuICAgICdJZiBzZWxlY3RlZCwgdGhlIGxldHRlciBjYXNlIG9mIHRoZSB1c2VybmFtZSBkb2VzIG5vdCBtYXR0ZXIgZHVyaW5nIGxvZ2luLidcbiAgKTtcblxuICBASW5wdXQoKVxuICBhdXRoQ29uZmlndXJhdGlvbjogQXV0aENvbmZpZ3VyYXRpb247XG5cbiAgaXNPYXV0aDI6IGJvb2xlYW47XG4gIHRlbmFudExvZ2luT3B0aW9uVHlwZUVudW0gPSBUZW5hbnRMb2dpbk9wdGlvblR5cGU7XG5cbiAgcHJpdmF0ZSBQQVNTV09SRF9DQVRFR09SWSA9ICdwYXNzd29yZCc7XG4gIHByaXZhdGUgTElNSVRfVkFMSURJVFlfS0VZID0gJ2xpbWl0LnZhbGlkaXR5JztcbiAgcHJpdmF0ZSBURU5BTlRfU1RSRU5HVEhfVkFMSURJVFlfS0VZID0gJ3N0cmVuZ3RoLnZhbGlkaXR5JztcbiAgcHJpdmF0ZSBTWVNURU1fU1RSRU5HVEhfVkFMSURJVFlfS0VZID0gJ2VuZm9yY2Uuc3RyZW5ndGgnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGVuYW50VWlTZXJ2aWNlOiBUZW5hbnRVaVNlcnZpY2UpIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmF1dGhDb25maWd1cmF0aW9uICYmIGNoYW5nZXMuYXV0aENvbmZpZ3VyYXRpb24uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLmlzT2F1dGgyID0gISFjaGFuZ2VzLmF1dGhDb25maWd1cmF0aW9uLmN1cnJlbnRWYWx1ZS5sb2dpbk9wdGlvbnMuZmluZChcbiAgICAgICAgdGhpcy50ZW5hbnRVaVNlcnZpY2UuaXNPYXV0aDJcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHN5c3RlbVBhc3N3b3JkTGltaXRWYWxpZGl0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5hdXRoQ29uZmlndXJhdGlvbi5zeXN0ZW1PcHRpb25zW3RoaXMuUEFTU1dPUkRfQ0FURUdPUlldW3RoaXMuTElNSVRfVkFMSURJVFlfS0VZXTtcbiAgfVxuXG4gIGdldCBwYXNzd29yZExpbWl0VmFsaWRpdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3lzdGVtUGFzc3dvcmRMaW1pdFZhbGlkaXR5ICE9PSBudWxsXG4gICAgICA/IHRoaXMuc3lzdGVtUGFzc3dvcmRMaW1pdFZhbGlkaXR5XG4gICAgICA6IHRoaXMuYXV0aENvbmZpZ3VyYXRpb24udGVuYW50T3B0aW9uc1t0aGlzLlBBU1NXT1JEX0NBVEVHT1JZXVt0aGlzLkxJTUlUX1ZBTElESVRZX0tFWV07XG4gIH1cblxuICBzZXQgcGFzc3dvcmRMaW1pdFZhbGlkaXR5KHZhbHVlKSB7XG4gICAgaWYgKHRoaXMuc3lzdGVtUGFzc3dvcmRMaW1pdFZhbGlkaXR5ID09PSBudWxsKSB7XG4gICAgICB0aGlzLmF1dGhDb25maWd1cmF0aW9uLnRlbmFudE9wdGlvbnNbdGhpcy5QQVNTV09SRF9DQVRFR09SWV1bdGhpcy5MSU1JVF9WQUxJRElUWV9LRVldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHN5c3RlbVBhc3N3b3JkRW5mb3JjZVN0cmVuZ3RoKCkge1xuICAgIHJldHVybiB0aGlzLmF1dGhDb25maWd1cmF0aW9uLnN5c3RlbU9wdGlvbnNbdGhpcy5QQVNTV09SRF9DQVRFR09SWV1bXG4gICAgICB0aGlzLlNZU1RFTV9TVFJFTkdUSF9WQUxJRElUWV9LRVlcbiAgICBdO1xuICB9XG5cbiAgZ2V0IHBhc3N3b3JkRW5mb3JjZVN0cmVuZ3RoKCkge1xuICAgIHJldHVybiB0aGlzLnN5c3RlbVBhc3N3b3JkRW5mb3JjZVN0cmVuZ3RoXG4gICAgICA/IHRoaXMuc3lzdGVtUGFzc3dvcmRFbmZvcmNlU3RyZW5ndGhcbiAgICAgIDogdGhpcy5hdXRoQ29uZmlndXJhdGlvbi50ZW5hbnRPcHRpb25zW3RoaXMuUEFTU1dPUkRfQ0FURUdPUlldW1xuICAgICAgICAgIHRoaXMuVEVOQU5UX1NUUkVOR1RIX1ZBTElESVRZX0tFWVxuICAgICAgICBdO1xuICB9XG5cbiAgc2V0IHBhc3N3b3JkRW5mb3JjZVN0cmVuZ3RoKHZhbHVlKSB7XG4gICAgaWYgKCF0aGlzLnN5c3RlbVBhc3N3b3JkRW5mb3JjZVN0cmVuZ3RoKSB7XG4gICAgICB0aGlzLmF1dGhDb25maWd1cmF0aW9uLnRlbmFudE9wdGlvbnNbdGhpcy5QQVNTV09SRF9DQVRFR09SWV1bXG4gICAgICAgIHRoaXMuVEVOQU5UX1NUUkVOR1RIX1ZBTElESVRZX0tFWVxuICAgICAgXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldCB0ZW5hbnRMb2dpbklnbm9yZUNhc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aENvbmZpZ3VyYXRpb24udGVuYW50T3B0aW9uc1snY29uZmlndXJhdGlvbiddWyd0ZW5hbnQubG9naW4uaWdub3JlLWNhc2UnXTtcbiAgfVxuXG4gIHNldCB0ZW5hbnRMb2dpbklnbm9yZUNhc2UodmFsdWUpIHtcbiAgICB0aGlzLmF1dGhDb25maWd1cmF0aW9uLnRlbmFudE9wdGlvbnNbJ2NvbmZpZ3VyYXRpb24nXVsndGVuYW50LmxvZ2luLmlnbm9yZS1jYXNlJ10gPSB2YWx1ZTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgc2VwYXJhdG9yLXRvcCBvdmVyZmxvdy1hdXRvXCIgKm5nSWY9XCJhdXRoQ29uZmlndXJhdGlvblwiPlxuICA8ZGl2IGNsYXNzPVwiY29sLXNtLTJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaDQgdGV4dC1ub3JtYWwgdGV4dC1yaWdodCB0ZXh0LWxlZnQteHNcIj57eyAnTG9naW4gc2V0dGluZ3MnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJjb2wtc20tOVwiPlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgbS1iLThcIj5cbiAgICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cImNvbC1zbS02XCI+XG4gICAgICAgIDxsYWJlbD5cbiAgICAgICAgICB7eyAnUHJlZmVycmVkIGxvZ2luIG1vZGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBwb3BvdmVyPVwie3sgUFJFRkVSUkVEX0xPR0lOX01PREVfUE9QT1ZFUiB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1zZWxlY3Qtd3JhcHBlclwiPlxuICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0F1dGggdHlwZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgaWQ9XCJwcmVmZXJyZWRMb2dpbk9wdGlvblR5cGVcIlxuICAgICAgICAgICAgbmFtZT1cInByZWZlcnJlZExvZ2luT3B0aW9uVHlwZVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImF1dGhDb25maWd1cmF0aW9uLnByZWZlcnJlZExvZ2luT3B0aW9uVHlwZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInt7IHRlbmFudExvZ2luT3B0aW9uVHlwZUVudW0uQkFTSUMgfX1cIiB0cmFuc2xhdGU+QmFzaWMgQXV0aDwvb3B0aW9uPlxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInt7IHRlbmFudExvZ2luT3B0aW9uVHlwZUVudW0uT0FVVEgyX0lOVEVSTkFMIH19XCIgdHJhbnNsYXRlPlxuICAgICAgICAgICAgICBPQUktU2VjdXJlXG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ7eyB0ZW5hbnRMb2dpbk9wdGlvblR5cGVFbnVtLk9BVVRIMiB9fVwiIFtkaXNhYmxlZF09XCIhaXNPYXV0aDJcIiB0cmFuc2xhdGU+XG4gICAgICAgICAgICAgIFNpbmdsZSBzaWduLW9uIHJlZGlyZWN0XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgPGxhYmVsIHRpdGxlPVwie3sgJ1Bhc3N3b3JkIHZhbGlkaXR5IGxpbWl0JyB8IHRyYW5zbGF0ZSB9fVwiPlxuICAgICAgICAgICAge3sgJ1Bhc3N3b3JkIHZhbGlkaXR5IGxpbWl0JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1oZWxwIGJ0bi1oZWxwLS1zbVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHBvcG92ZXI9XCJ7eyBFTkZPUkNFRF9CWV9QTEFURk9STV9QT1BPVkVSIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwic3lzdGVtUGFzc3dvcmRMaW1pdFZhbGlkaXR5XCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBuYW1lPVwicGFzc3dvcmRMaW1pdFZhbGlkaXR5XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdGV4dC1yaWdodFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicGFzc3dvcmRMaW1pdFZhbGlkaXR5XCJcbiAgICAgICAgICAgICAgbWluPVwiMFwiXG4gICAgICAgICAgICAgIG1heD1cIjk5OTk5OVwiXG4gICAgICAgICAgICAgIHN0ZXA9XCIxXCJcbiAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInN5c3RlbVBhc3N3b3JkTGltaXRWYWxpZGl0eVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1hZGRvblwiIHRyYW5zbGF0ZT5kYXlzPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxwIGNsYXNzPVwiaGVscC1ibG9ja1wiPlxuICAgICAgICAgICAge3sgJ0RlZmF1bHQ6IDAgKHVubGltaXRlZCB2YWxpZGl0eSknIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgIDxsYWJlbCB0aXRsZT1cInt7ICdQYXNzd29yZCBzdHJlbmd0aCcgfCB0cmFuc2xhdGUgfX1cIj5cbiAgICAgICAgICAgIHt7ICdQYXNzd29yZCBzdHJlbmd0aCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBwb3BvdmVyPVwie3sgRU5GT1JDRURfQllfUExBVEZPUk1fUE9QT1ZFUiB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgICAqbmdJZj1cInN5c3RlbVBhc3N3b3JkRW5mb3JjZVN0cmVuZ3RoXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnRW5mb3JjZSB0aGF0IGFsbCBwYXNzd29yZHMgYXJlIHN0cm9uZycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICBjbGFzcz1cImM4eS1zd2l0Y2hcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJwYXNzd29yZEVuZm9yY2VTdHJlbmd0aFwiXG4gICAgICAgICAgICAgICAgZGF0YS1jeT1cImM4eS1mb3JtLWdyb3VwLS1wYXNzd29yZC1lbmZvcmNlLXRvZ2dsZS1idG5cIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicGFzc3dvcmRFbmZvcmNlU3RyZW5ndGhcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzeXN0ZW1QYXNzd29yZEVuZm9yY2VTdHJlbmd0aFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgJ0VuZm9yY2Ugc3Ryb25nIHBhc3N3b3JkcyAoZ3JlZW4pJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnSWdub3JlIGNhc2Ugd2hlbiBsb2dnaW5nIGluJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBjbGFzcz1cImM4eS1zd2l0Y2hcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBuYW1lPVwidGVuYW50TG9naW5JZ25vcmVDYXNlXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0ZW5hbnRMb2dpbklnbm9yZUNhc2VcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPnt7ICdJZ25vcmUgY2FzZSB3aGVuIGxvZ2dpbmcgaW4nIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1oZWxwIGJ0bi1oZWxwLS1zbVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHBvcG92ZXI9XCJ7eyBJR05PUkVfQ0FTRV9TRU5TSVRJVklUWV9QT1BPVkVSIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { gettext } from '@c8y/ngx-components';
|
|
2
|
+
export const MESSAGES_AUTH_CONFIGURATION = {
|
|
3
|
+
'^The tenant option: configuration/tenant.login.ignore-case cannot be enabled : Username or alias is duplicated when case sensitivity is ignored.$': {
|
|
4
|
+
gettext: gettext('Could not enable the "Ignore case when logging in" feature. Duplicate usernames or aliases were detected when ignoring case sensitivity. Resolve conflicting names and try again.')
|
|
5
|
+
},
|
|
6
|
+
"^The tenant option: configuration/tenant.login.ignore-case cannot be managed : Feature 'Ignore case on username or alias login' is not available.$": {
|
|
7
|
+
gettext: gettext('The feature "Ignore case when logging in" is not available.')
|
|
8
|
+
},
|
|
9
|
+
"^The tenant option: configuration/tenant.login.ignore-case cannot be managed : Only a tenant administrator can change the state of the 'Ignore case on username or alias login' feature.$": {
|
|
10
|
+
gettext: gettext('Only a tenant administrator can configure the "Ignore case when logging in" option.')
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0dGVybi1tZXNzYWdlcy5kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYXV0aC1jb25maWd1cmF0aW9uL3BhdHRlcm4tbWVzc2FnZXMuZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFOUMsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUc7SUFDekMsbUpBQW1KLEVBQ2pKO1FBQ0UsT0FBTyxFQUFFLE9BQU8sQ0FDZCxtTEFBbUwsQ0FDcEw7S0FDRjtJQUNILG9KQUFvSixFQUNsSjtRQUNFLE9BQU8sRUFBRSxPQUFPLENBQUMsNkRBQTZELENBQUM7S0FDaEY7SUFDSCwyTEFBMkwsRUFDekw7UUFDRSxPQUFPLEVBQUUsT0FBTyxDQUNkLHFGQUFxRixDQUN0RjtLQUNGO0NBQ0ssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcblxuZXhwb3J0IGNvbnN0IE1FU1NBR0VTX0FVVEhfQ09ORklHVVJBVElPTiA9IHtcbiAgJ15UaGUgdGVuYW50IG9wdGlvbjogY29uZmlndXJhdGlvbi90ZW5hbnQubG9naW4uaWdub3JlLWNhc2UgY2Fubm90IGJlIGVuYWJsZWQgOiBVc2VybmFtZSBvciBhbGlhcyBpcyBkdXBsaWNhdGVkIHdoZW4gY2FzZSBzZW5zaXRpdml0eSBpcyBpZ25vcmVkLiQnOlxuICAgIHtcbiAgICAgIGdldHRleHQ6IGdldHRleHQoXG4gICAgICAgICdDb3VsZCBub3QgZW5hYmxlIHRoZSBcIklnbm9yZSBjYXNlIHdoZW4gbG9nZ2luZyBpblwiIGZlYXR1cmUuIER1cGxpY2F0ZSB1c2VybmFtZXMgb3IgYWxpYXNlcyB3ZXJlIGRldGVjdGVkIHdoZW4gaWdub3JpbmcgY2FzZSBzZW5zaXRpdml0eS4gUmVzb2x2ZSBjb25mbGljdGluZyBuYW1lcyBhbmQgdHJ5IGFnYWluLidcbiAgICAgIClcbiAgICB9LFxuICBcIl5UaGUgdGVuYW50IG9wdGlvbjogY29uZmlndXJhdGlvbi90ZW5hbnQubG9naW4uaWdub3JlLWNhc2UgY2Fubm90IGJlIG1hbmFnZWQgOiBGZWF0dXJlICdJZ25vcmUgY2FzZSBvbiB1c2VybmFtZSBvciBhbGlhcyBsb2dpbicgaXMgbm90IGF2YWlsYWJsZS4kXCI6XG4gICAge1xuICAgICAgZ2V0dGV4dDogZ2V0dGV4dCgnVGhlIGZlYXR1cmUgXCJJZ25vcmUgY2FzZSB3aGVuIGxvZ2dpbmcgaW5cIiBpcyBub3QgYXZhaWxhYmxlLicpXG4gICAgfSxcbiAgXCJeVGhlIHRlbmFudCBvcHRpb246IGNvbmZpZ3VyYXRpb24vdGVuYW50LmxvZ2luLmlnbm9yZS1jYXNlIGNhbm5vdCBiZSBtYW5hZ2VkIDogT25seSBhIHRlbmFudCBhZG1pbmlzdHJhdG9yIGNhbiBjaGFuZ2UgdGhlIHN0YXRlIG9mIHRoZSAnSWdub3JlIGNhc2Ugb24gdXNlcm5hbWUgb3IgYWxpYXMgbG9naW4nIGZlYXR1cmUuJFwiOlxuICAgIHtcbiAgICAgIGdldHRleHQ6IGdldHRleHQoXG4gICAgICAgICdPbmx5IGEgdGVuYW50IGFkbWluaXN0cmF0b3IgY2FuIGNvbmZpZ3VyZSB0aGUgXCJJZ25vcmUgY2FzZSB3aGVuIGxvZ2dpbmcgaW5cIiBvcHRpb24uJ1xuICAgICAgKVxuICAgIH1cbn0gYXMgY29uc3Q7XG4iXX0=
|